2018-07-24 11:39:14

by Jianhong Yin

[permalink] [raw]
Subject: [PATCH 19/24 v2] pynfs: python3 support plan: fix import fail on python3

From: "Jianhong.Yin" <[email protected]>

Signed-off-by: Jianhong Yin <[email protected]>
---
nfs4.0/servertests/environment.py | 2 +-
nfs4.0/servertests/st_access.py | 2 +-
nfs4.0/servertests/st_acl.py | 2 +-
nfs4.0/servertests/st_close.py | 2 +-
nfs4.0/servertests/st_commit.py | 2 +-
nfs4.0/servertests/st_compound.py | 5 +++--
nfs4.0/servertests/st_create.py | 2 +-
nfs4.0/servertests/st_delegation.py | 2 +-
nfs4.0/servertests/st_fslocations.py | 2 +-
nfs4.0/servertests/st_getattr.py | 2 +-
nfs4.0/servertests/st_getfh.py | 2 +-
nfs4.0/servertests/st_gss.py | 4 ++--
nfs4.0/servertests/st_link.py | 2 +-
nfs4.0/servertests/st_lock.py | 2 +-
nfs4.0/servertests/st_lockt.py | 2 +-
nfs4.0/servertests/st_locku.py | 2 +-
nfs4.0/servertests/st_lookup.py | 4 ++--
nfs4.0/servertests/st_lookupp.py | 2 +-
nfs4.0/servertests/st_nverify.py | 2 +-
nfs4.0/servertests/st_open.py | 2 +-
nfs4.0/servertests/st_openconfirm.py | 2 +-
nfs4.0/servertests/st_opendowngrade.py | 2 +-
nfs4.0/servertests/st_putfh.py | 2 +-
nfs4.0/servertests/st_putpubfh.py | 2 +-
nfs4.0/servertests/st_putrootfh.py | 2 +-
nfs4.0/servertests/st_read.py | 4 ++--
nfs4.0/servertests/st_readdir.py | 2 +-
nfs4.0/servertests/st_readlink.py | 2 +-
nfs4.0/servertests/st_reboot.py | 2 +-
nfs4.0/servertests/st_releaselockowner.py | 2 +-
nfs4.0/servertests/st_remove.py | 2 +-
nfs4.0/servertests/st_rename.py | 2 +-
nfs4.0/servertests/st_renew.py | 2 +-
nfs4.0/servertests/st_replay.py | 2 +-
nfs4.0/servertests/st_restorefh.py | 2 +-
nfs4.0/servertests/st_savefh.py | 2 +-
nfs4.0/servertests/st_secinfo.py | 2 +-
nfs4.0/servertests/st_setattr.py | 2 +-
nfs4.0/servertests/st_setclientid.py | 2 +-
nfs4.0/servertests/st_setclientidconfirm.py | 2 +-
nfs4.0/servertests/st_spoof.py | 2 +-
nfs4.0/servertests/st_verify.py | 2 +-
nfs4.0/servertests/st_write.py | 4 ++--
nfs4.0/testserver.py | 2 +-
nfs4.1/client41tests/ct_reboot.py | 2 +-
nfs4.1/client41tests/environment.py | 2 +-
nfs4.1/dataserver.py | 2 +-
nfs4.1/nfs3client.py | 2 +-
nfs4.1/nfs4client.py | 2 +-
nfs4.1/nfs4lib.py | 2 +-
nfs4.1/nfs4proxy.py | 2 +-
nfs4.1/nfs4server.py | 2 +-
nfs4.1/nfs4state.py | 2 +-
nfs4.1/server41tests/environment.py | 2 +-
nfs4.1/server41tests/st_block.py | 2 +-
nfs4.1/server41tests/st_compound.py | 2 +-
nfs4.1/server41tests/st_create_session.py | 2 +-
nfs4.1/server41tests/st_current_stateid.py | 4 ++--
nfs4.1/server41tests/st_debug.py | 2 +-
nfs4.1/server41tests/st_delegation.py | 2 +-
nfs4.1/server41tests/st_destroy_clientid.py | 2 +-
nfs4.1/server41tests/st_destroy_session.py | 4 ++--
nfs4.1/server41tests/st_exchange_id.py | 2 +-
nfs4.1/server41tests/st_flex.py | 2 +-
nfs4.1/server41tests/st_getdevicelist.py | 2 +-
nfs4.1/server41tests/st_lookup.py | 4 ++--
nfs4.1/server41tests/st_lookupp.py | 2 +-
nfs4.1/server41tests/st_open.py | 4 ++--
nfs4.1/server41tests/st_putfh.py | 2 +-
nfs4.1/server41tests/st_reboot.py | 2 +-
nfs4.1/server41tests/st_reclaim_complete.py | 2 +-
nfs4.1/server41tests/st_rename.py | 2 +-
nfs4.1/server41tests/st_secinfo.py | 2 +-
nfs4.1/server41tests/st_secinfo_no_name.py | 2 +-
nfs4.1/server41tests/st_sequence.py | 2 +-
nfs4.1/server41tests/st_sparse.py | 2 +-
nfs4.1/server41tests/st_trunking.py | 2 +-
nfs4.1/server41tests/st_verify.py | 2 +-
nfs4.1/testclient.py | 2 +-
nfs4.1/testserver.py | 2 +-
rpc/rpc.py | 3 ++-
81 files changed, 92 insertions(+), 90 deletions(-)

diff --git a/nfs4.0/servertests/environment.py b/nfs4.0/servertests/environment.py
index a5cfe60..4d85837 100644
--- a/nfs4.0/servertests/environment.py
+++ b/nfs4.0/servertests/environment.py
@@ -14,7 +14,7 @@ from nfs4lib import NFS4Client, get_attrbitnum_dict
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import fsid4, nfsace4, fs_locations4, fs_location4, \
specdata4, nfstime4, settime4, stateid4
-import rpc
+import rpc.rpc as rpc
import sys
import os
import nfs_ops
diff --git a/nfs4.0/servertests/st_access.py b/nfs4.0/servertests/st_access.py
index 58c42bc..0a16986 100644
--- a/nfs4.0/servertests/st_access.py
+++ b/nfs4.0/servertests/st_access.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_acl.py b/nfs4.0/servertests/st_acl.py
index 88667d2..3194ebc 100644
--- a/nfs4.0/servertests/st_acl.py
+++ b/nfs4.0/servertests/st_acl.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
from xdrdef.nfs4_type import nfsace4
from nfs4lib import list2bitmap

diff --git a/nfs4.0/servertests/st_close.py b/nfs4.0/servertests/st_close.py
index 89ccbba..e0166f6 100644
--- a/nfs4.0/servertests/st_close.py
+++ b/nfs4.0/servertests/st_close.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, makeStaleId
+from .environment import check, makeStaleId


def testCloseCreate(t, env):
diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
index eecf2c8..9345424 100644
--- a/nfs4.0/servertests/st_commit.py
+++ b/nfs4.0/servertests/st_commit.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check

_text = "Random data to write"

diff --git a/nfs4.0/servertests/st_compound.py b/nfs4.0/servertests/st_compound.py
index 59a279d..5225f61 100644
--- a/nfs4.0/servertests/st_compound.py
+++ b/nfs4.0/servertests/st_compound.py
@@ -1,8 +1,9 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import nfs_argop4
from xdrdef.nfs4_pack import NFS4Packer
-from environment import check, get_invalid_utf8strings
-from rpc import RPCError
+from .environment import check, get_invalid_utf8strings
+from rpc.rpc import RPCError
+
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_create.py b/nfs4.0/servertests/st_create.py
index c7256e5..a43003b 100644
--- a/nfs4.0/servertests/st_create.py
+++ b/nfs4.0/servertests/st_create.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import createtype4, specdata4
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_delegation.py b/nfs4.0/servertests/st_delegation.py
index 937d95f..0247151 100644
--- a/nfs4.0/servertests/st_delegation.py
+++ b/nfs4.0/servertests/st_delegation.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import nfs_client_id4, clientaddr4, cb_client4
-from environment import check
+from .environment import check
import os
import threading
import time
diff --git a/nfs4.0/servertests/st_fslocations.py b/nfs4.0/servertests/st_fslocations.py
index 442d5a2..0387843 100644
--- a/nfs4.0/servertests/st_fslocations.py
+++ b/nfs4.0/servertests/st_fslocations.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from nfs4lib import list2bitmap
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_getattr.py b/nfs4.0/servertests/st_getattr.py
index 65a5701..292fcd2 100644
--- a/nfs4.0/servertests/st_getattr.py
+++ b/nfs4.0/servertests/st_getattr.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
from nfs4lib import get_attr_name
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.0/servertests/st_getfh.py b/nfs4.0/servertests/st_getfh.py
index 6fd22e7..4abe320 100644
--- a/nfs4.0/servertests/st_getfh.py
+++ b/nfs4.0/servertests/st_getfh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_gss.py b/nfs4.0/servertests/st_gss.py
index 414883e..e10e849 100644
--- a/nfs4.0/servertests/st_gss.py
+++ b/nfs4.0/servertests/st_gss.py
@@ -1,7 +1,7 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
from socket import timeout
-import rpc
+import rpc.rpc as rpc
import rpc.rpcsec.gss_const as gss
from rpc.rpcsec.gss_type import rpc_gss_cred_t
import nfs_ops
diff --git a/nfs4.0/servertests/st_link.py b/nfs4.0/servertests/st_link.py
index feddf1e..0ef5009 100644
--- a/nfs4.0/servertests/st_link.py
+++ b/nfs4.0/servertests/st_link.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_lock.py b/nfs4.0/servertests/st_lock.py
index 060236a..b815a54 100644
--- a/nfs4.0/servertests/st_lock.py
+++ b/nfs4.0/servertests/st_lock.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import stateid4
-from environment import check, get_invalid_clientid, makeStaleId, makeBadIDganesha
+from .environment import check, get_invalid_clientid, makeStaleId, makeBadIDganesha
import time
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.0/servertests/st_lockt.py b/nfs4.0/servertests/st_lockt.py
index 7f8c5e1..ee0b825 100644
--- a/nfs4.0/servertests/st_lockt.py
+++ b/nfs4.0/servertests/st_lockt.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_clientid
+from .environment import check, get_invalid_clientid

def testUnlockedFile(t, env):
"""LOCKT on a regular unlocked file
diff --git a/nfs4.0/servertests/st_locku.py b/nfs4.0/servertests/st_locku.py
index 74b464a..3524a61 100644
--- a/nfs4.0/servertests/st_locku.py
+++ b/nfs4.0/servertests/st_locku.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import stateid4
-from environment import check, makeStaleId
+from .environment import check, makeStaleId

def testFile(t, env):
"""LOCKU a regular file
diff --git a/nfs4.0/servertests/st_lookup.py b/nfs4.0/servertests/st_lookup.py
index eed7100..9bfaffe 100644
--- a/nfs4.0/servertests/st_lookup.py
+++ b/nfs4.0/servertests/st_lookup.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
-import rpc
+from .environment import check, get_invalid_utf8strings
+import rpc.rpc as rpc
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_lookupp.py b/nfs4.0/servertests/st_lookupp.py
index 13c1553..7c38600 100644
--- a/nfs4.0/servertests/st_lookupp.py
+++ b/nfs4.0/servertests/st_lookupp.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_nverify.py b/nfs4.0/servertests/st_nverify.py
index 4185970..e2a8130 100644
--- a/nfs4.0/servertests/st_nverify.py
+++ b/nfs4.0/servertests/st_nverify.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_clientid, makeStaleId
+from .environment import check, get_invalid_clientid, makeStaleId
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_open.py b/nfs4.0/servertests/st_open.py
index b4af81c..9f5d1aa 100644
--- a/nfs4.0/servertests/st_open.py
+++ b/nfs4.0/servertests/st_open.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, checkdict, get_invalid_utf8strings
+from .environment import check, checkdict, get_invalid_utf8strings
from nfs4lib import get_bitnumattr_dict

# Any test that uses create_confirm should depend on this test
diff --git a/nfs4.0/servertests/st_openconfirm.py b/nfs4.0/servertests/st_openconfirm.py
index 3b5b98f..631855a 100644
--- a/nfs4.0/servertests/st_openconfirm.py
+++ b/nfs4.0/servertests/st_openconfirm.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import stateid4
-from environment import check, makeStaleId
+from .environment import check, makeStaleId
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_opendowngrade.py b/nfs4.0/servertests/st_opendowngrade.py
index 213b2dd..2180223 100644
--- a/nfs4.0/servertests/st_opendowngrade.py
+++ b/nfs4.0/servertests/st_opendowngrade.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, makeStaleId
+from .environment import check, makeStaleId

def testRegularOpen(t, env):
"""OPENDOWNGRADE on regular file
diff --git a/nfs4.0/servertests/st_putfh.py b/nfs4.0/servertests/st_putfh.py
index ba9ce27..6560f2e 100644
--- a/nfs4.0/servertests/st_putfh.py
+++ b/nfs4.0/servertests/st_putfh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_putpubfh.py b/nfs4.0/servertests/st_putpubfh.py
index 0149b9d..1514fde 100644
--- a/nfs4.0/servertests/st_putpubfh.py
+++ b/nfs4.0/servertests/st_putpubfh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_putrootfh.py b/nfs4.0/servertests/st_putrootfh.py
index dd47f58..b13c694 100644
--- a/nfs4.0/servertests/st_putrootfh.py
+++ b/nfs4.0/servertests/st_putrootfh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_read.py b/nfs4.0/servertests/st_read.py
index 15f8795..1eb996c 100644
--- a/nfs4.0/servertests/st_read.py
+++ b/nfs4.0/servertests/st_read.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
-from environment import check, makeBadID, makeBadIDganesha, makeStaleId
-import rpc
+from .environment import check, makeBadID, makeBadIDganesha, makeStaleId
+import rpc.rpc as rpc

def _compare(t, res, expect, eof=True):
def shorten(str):
diff --git a/nfs4.0/servertests/st_readdir.py b/nfs4.0/servertests/st_readdir.py
index 798b2d0..b9a8a4d 100644
--- a/nfs4.0/servertests/st_readdir.py
+++ b/nfs4.0/servertests/st_readdir.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from nfs4lib import get_attr_name
-from environment import check
+from .environment import check

def _compare(t, entries, expect, attrlist=[]):
names = [e.name for e in entries]
diff --git a/nfs4.0/servertests/st_readlink.py b/nfs4.0/servertests/st_readlink.py
index 8b905d0..d8e3ea1 100644
--- a/nfs4.0/servertests/st_readlink.py
+++ b/nfs4.0/servertests/st_readlink.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_reboot.py b/nfs4.0/servertests/st_reboot.py
index 16cb008..2a03e60 100644
--- a/nfs4.0/servertests/st_reboot.py
+++ b/nfs4.0/servertests/st_reboot.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import os
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.0/servertests/st_releaselockowner.py b/nfs4.0/servertests/st_releaselockowner.py
index 17dfe1a..8021ddf 100644
--- a/nfs4.0/servertests/st_releaselockowner.py
+++ b/nfs4.0/servertests/st_releaselockowner.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import lock_owner4
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_remove.py b/nfs4.0/servertests/st_remove.py
index 5f531f4..a9c397f 100644
--- a/nfs4.0/servertests/st_remove.py
+++ b/nfs4.0/servertests/st_remove.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_rename.py b/nfs4.0/servertests/st_rename.py
index 8f41763..3a7fa1e 100644
--- a/nfs4.0/servertests/st_rename.py
+++ b/nfs4.0/servertests/st_rename.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_renew.py b/nfs4.0/servertests/st_renew.py
index 3a9f774..679363c 100644
--- a/nfs4.0/servertests/st_renew.py
+++ b/nfs4.0/servertests/st_renew.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_replay.py b/nfs4.0/servertests/st_replay.py
index 81b8332..3eba563 100644
--- a/nfs4.0/servertests/st_replay.py
+++ b/nfs4.0/servertests/st_replay.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
from xdrdef.nfs4_type import *
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.0/servertests/st_restorefh.py b/nfs4.0/servertests/st_restorefh.py
index 839079f..e5db09a 100644
--- a/nfs4.0/servertests/st_restorefh.py
+++ b/nfs4.0/servertests/st_restorefh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_savefh.py b/nfs4.0/servertests/st_savefh.py
index eef810c..c574718 100644
--- a/nfs4.0/servertests/st_savefh.py
+++ b/nfs4.0/servertests/st_savefh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_secinfo.py b/nfs4.0/servertests/st_secinfo.py
index eb874b1..6c828bf 100644
--- a/nfs4.0/servertests/st_secinfo.py
+++ b/nfs4.0/servertests/st_secinfo.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_setattr.py b/nfs4.0/servertests/st_setattr.py
index aa7123b..edf8caa 100644
--- a/nfs4.0/servertests/st_setattr.py
+++ b/nfs4.0/servertests/st_setattr.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_utf8strings
+from .environment import check, get_invalid_utf8strings
from nfs4lib import bitmap2list, dict2fattr
from xdrdef.nfs4_type import nfstime4, settime4
import nfs_ops
diff --git a/nfs4.0/servertests/st_setclientid.py b/nfs4.0/servertests/st_setclientid.py
index 7f42d2d..6ad91f8 100644
--- a/nfs4.0/servertests/st_setclientid.py
+++ b/nfs4.0/servertests/st_setclientid.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import os
import struct, time
import nfs_ops
diff --git a/nfs4.0/servertests/st_setclientidconfirm.py b/nfs4.0/servertests/st_setclientidconfirm.py
index 51f7981..4ecf635 100644
--- a/nfs4.0/servertests/st_setclientidconfirm.py
+++ b/nfs4.0/servertests/st_setclientidconfirm.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check
import os
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.0/servertests/st_spoof.py b/nfs4.0/servertests/st_spoof.py
index 777985e..68778d4 100644
--- a/nfs4.0/servertests/st_spoof.py
+++ b/nfs4.0/servertests/st_spoof.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check
+from .environment import check

def testSpoofUser(t, env):
"""SPOOF test, try to spoof user
diff --git a/nfs4.0/servertests/st_verify.py b/nfs4.0/servertests/st_verify.py
index 219d0a0..16d7c0c 100644
--- a/nfs4.0/servertests/st_verify.py
+++ b/nfs4.0/servertests/st_verify.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, get_invalid_clientid, makeStaleId
+from .environment import check, get_invalid_clientid, makeStaleId
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/servertests/st_write.py b/nfs4.0/servertests/st_write.py
index 5b48153..70ff49e 100644
--- a/nfs4.0/servertests/st_write.py
+++ b/nfs4.0/servertests/st_write.py
@@ -1,8 +1,8 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
-from environment import check, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
+from .environment import check, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
import struct
-import rpc
+import rpc.rpc as rpc
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.0/testserver.py b/nfs4.0/testserver.py
index 581dc3e..ebce58d 100755
--- a/nfs4.0/testserver.py
+++ b/nfs4.0/testserver.py
@@ -40,7 +40,7 @@ import testmod
from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
import servertests.environment as environment
import socket
-import rpc
+import rpc.rpc as rpc
import pickle

VERSION="0.2" # How/when update this?
diff --git a/nfs4.1/client41tests/ct_reboot.py b/nfs4.1/client41tests/ct_reboot.py
index 3bd241b..efbd74e 100644
--- a/nfs4.1/client41tests/ct_reboot.py
+++ b/nfs4.1/client41tests/ct_reboot.py
@@ -1,5 +1,5 @@
import os
-from environment import fail
+from .environment import fail

def testReboot(t, env):
"""Test reboot
diff --git a/nfs4.1/client41tests/environment.py b/nfs4.1/client41tests/environment.py
index 933264c..09d07c2 100644
--- a/nfs4.1/client41tests/environment.py
+++ b/nfs4.1/client41tests/environment.py
@@ -12,7 +12,7 @@ import time
import testmod
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
-import rpc
+import rpc.rpc as rpc
import nfs4client
import os
import nfs4lib
diff --git a/nfs4.1/dataserver.py b/nfs4.1/dataserver.py
index af0e35a..f76ca5a 100644
--- a/nfs4.1/dataserver.py
+++ b/nfs4.1/dataserver.py
@@ -1,4 +1,4 @@
-import rpc
+import rpc.rpc as rpc
import nfs4lib
import xdrdef.nfs4_type as type4
from xdrdef.nfs4_pack import NFS4Packer
diff --git a/nfs4.1/nfs3client.py b/nfs4.1/nfs3client.py
index 176765c..f98f691 100644
--- a/nfs4.1/nfs3client.py
+++ b/nfs4.1/nfs3client.py
@@ -1,5 +1,5 @@
import use_local # HACK so don't have to rebuild constantly
-import rpc
+import rpc.rpc as rpc
import nfs4lib
#from nfs4lib import NFS4Error, NFS4Replay, inc_u32
from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
diff --git a/nfs4.1/nfs4client.py b/nfs4.1/nfs4client.py
index 0588d7b..e8c649b 100644
--- a/nfs4.1/nfs4client.py
+++ b/nfs4.1/nfs4client.py
@@ -1,5 +1,5 @@
import use_local # HACK so don't have to rebuild constantly
-import rpc
+import rpc.rpc as rpc
import nfs4lib
from nfs4lib import NFS4Error, NFS4Replay, inc_u32
from xdrdef.nfs4_type import *
diff --git a/nfs4.1/nfs4lib.py b/nfs4.1/nfs4lib.py
index 20eae0f..d46706a 100644
--- a/nfs4.1/nfs4lib.py
+++ b/nfs4.1/nfs4lib.py
@@ -1,5 +1,5 @@
from __future__ import with_statement
-import rpc
+import rpc.rpc as rpc
import xdrdef.nfs4_const
from xdrdef.nfs4_pack import NFS4Packer, NFS4Unpacker
import xdrdef.nfs4_type
diff --git a/nfs4.1/nfs4proxy.py b/nfs4.1/nfs4proxy.py
index efb6744..dc8fdd4 100755
--- a/nfs4.1/nfs4proxy.py
+++ b/nfs4.1/nfs4proxy.py
@@ -3,7 +3,7 @@ from __future__ import with_statement
import use_local # HACK so don't have to rebuild constantly
import nfs4lib
from nfs4lib import inc_u32, NFS4Error, NFS4Replay
-import rpc
+import rpc.rpc as rpc
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
diff --git a/nfs4.1/nfs4server.py b/nfs4.1/nfs4server.py
index cd78082..767319d 100755
--- a/nfs4.1/nfs4server.py
+++ b/nfs4.1/nfs4server.py
@@ -3,7 +3,7 @@ from __future__ import with_statement
import use_local # HACK so don't have to rebuild constantly
import nfs4lib
from nfs4lib import inc_u32, NFS4Error, NFS4Replay
-import rpc
+import rpc.rpc as rpc
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
diff --git a/nfs4.1/nfs4state.py b/nfs4.1/nfs4state.py
index 95f84df..f2cad04 100644
--- a/nfs4.1/nfs4state.py
+++ b/nfs4.1/nfs4state.py
@@ -9,7 +9,7 @@ from nfs4lib import NFS4Error
from xdrdef.nfs4_type import *
from xdrdef.nfs4_const import *
import nfs_ops
-import rpc
+import rpc.rpc as rpc
import logging

log = logging.getLogger("nfs.server.state")
diff --git a/nfs4.1/server41tests/environment.py b/nfs4.1/server41tests/environment.py
index 360089e..9e1201f 100644
--- a/nfs4.1/server41tests/environment.py
+++ b/nfs4.1/server41tests/environment.py
@@ -12,7 +12,7 @@ import time
import testmod
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
-import rpc
+import rpc.rpc as rpc
import nfs4client
import sys
import os
diff --git a/nfs4.1/server41tests/st_block.py b/nfs4.1/server41tests/st_block.py
index 2041de3..3cfc1c6 100644
--- a/nfs4.1/server41tests/st_block.py
+++ b/nfs4.1/server41tests/st_block.py
@@ -2,7 +2,7 @@ from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, fail, create_file
+from .environment import check, fail, create_file
from block import Packer as BlockPacker, Unpacker as BlockUnpacker, \
PNFS_BLOCK_READWRITE_DATA, pnfs_block_layoutupdate4, \
pnfs_block_extent4
diff --git a/nfs4.1/server41tests/st_compound.py b/nfs4.1/server41tests/st_compound.py
index 3915dd8..ded5465 100644
--- a/nfs4.1/server41tests/st_compound.py
+++ b/nfs4.1/server41tests/st_compound.py
@@ -1,7 +1,7 @@
from xdrdef.nfs4_const import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, fail, get_invalid_utf8strings
+from .environment import check, fail, get_invalid_utf8strings
from xdrdef.nfs4_type import *
from rpc import RPCAcceptError, GARBAGE_ARGS, RPCTimeout
from nfs4lib import NFS4Error, hash_oids, encrypt_oids, FancyNFS4Packer
diff --git a/nfs4.1/server41tests/st_create_session.py b/nfs4.1/server41tests/st_create_session.py
index 5018ec6..a638990 100644
--- a/nfs4.1/server41tests/st_create_session.py
+++ b/nfs4.1/server41tests/st_create_session.py
@@ -1,7 +1,7 @@
from xdrdef.nfs4_const import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, fail, create_file, open_file
+from .environment import check, fail, create_file, open_file
from xdrdef.nfs4_type import *
import random
import nfs4lib
diff --git a/nfs4.1/server41tests/st_current_stateid.py b/nfs4.1/server41tests/st_current_stateid.py
index 819dfb1..58f6e9b 100644
--- a/nfs4.1/server41tests/st_current_stateid.py
+++ b/nfs4.1/server41tests/st_current_stateid.py
@@ -1,8 +1,8 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *

-from environment import check, fail, create_file, open_file, close_file
-from environment import open_create_file_op, use_obj
+from .environment import check, fail, create_file, open_file, close_file
+from .environment import open_create_file_op, use_obj
from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
from xdrdef.nfs4_type import creatverfattr, fattr4, stateid4, locker4, lock_owner4
from xdrdef.nfs4_type import open_to_lock_owner4
diff --git a/nfs4.1/server41tests/st_debug.py b/nfs4.1/server41tests/st_debug.py
index 345fc77..3e3087d 100644
--- a/nfs4.1/server41tests/st_debug.py
+++ b/nfs4.1/server41tests/st_debug.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, create_file, close_file
+from .environment import check, fail, create_file, close_file
from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py
index cbabb85..4f05bf1 100644
--- a/nfs4.1/server41tests/st_delegation.py
+++ b/nfs4.1/server41tests/st_delegation.py
@@ -2,7 +2,7 @@ from st_create_session import create_session
from st_open import open_claim4
from xdrdef.nfs4_const import *

-from environment import check, fail, create_file, open_file, close_file
+from .environment import check, fail, create_file, open_file, close_file
from xdrdef.nfs4_type import *
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.1/server41tests/st_destroy_clientid.py b/nfs4.1/server41tests/st_destroy_clientid.py
index 25cc12a..50081b1 100644
--- a/nfs4.1/server41tests/st_destroy_clientid.py
+++ b/nfs4.1/server41tests/st_destroy_clientid.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail
+from .environment import check, fail
import nfs_ops
op = nfs_ops.NFS4ops()
import nfs4lib
diff --git a/nfs4.1/server41tests/st_destroy_session.py b/nfs4.1/server41tests/st_destroy_session.py
index c776617..c80c845 100644
--- a/nfs4.1/server41tests/st_destroy_session.py
+++ b/nfs4.1/server41tests/st_destroy_session.py
@@ -1,11 +1,11 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, create_file, open_file
+from .environment import check, fail, create_file, open_file
from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
import nfs_ops
op = nfs_ops.NFS4ops()
import threading
-import rpc
+import rpc.rpc as rpc

def testDestroy(t, env):
"""
diff --git a/nfs4.1/server41tests/st_exchange_id.py b/nfs4.1/server41tests/st_exchange_id.py
index 9becec6..5a29634 100644
--- a/nfs4.1/server41tests/st_exchange_id.py
+++ b/nfs4.1/server41tests/st_exchange_id.py
@@ -2,7 +2,7 @@ from xdrdef.nfs4_const import *
import nfs_ops
op = nfs_ops.NFS4ops()
import time
-from environment import check, fail
+from .environment import check, fail
from xdrdef.nfs4_type import *
from rpc import RPCAcceptError, GARBAGE_ARGS, RPCTimeout
from nfs4lib import NFS4Error, hash_oids, encrypt_oids
diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
index 35be489..335b2c8 100644
--- a/nfs4.1/server41tests/st_flex.py
+++ b/nfs4.1/server41tests/st_flex.py
@@ -3,7 +3,7 @@ from xdrdef.nfs4_type import *
from xdrdef.nfs4_pack import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, fail, create_file, close_file, open_create_file_op
+from .environment import check, fail, create_file, close_file, open_create_file_op
from xdrdef.nfs4_pack import NFS4Packer as FlexPacker, \
NFS4Unpacker as FlexUnpacker
from nfs4lib import FancyNFS4Packer, get_nfstime
diff --git a/nfs4.1/server41tests/st_getdevicelist.py b/nfs4.1/server41tests/st_getdevicelist.py
index edf5fe4..aff510e 100644
--- a/nfs4.1/server41tests/st_getdevicelist.py
+++ b/nfs4.1/server41tests/st_getdevicelist.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
-from environment import check, fail, use_obj, open_file, create_file, get_blocksize
+from .environment import check, fail, use_obj, open_file, create_file, get_blocksize
import nfs_ops
op = nfs_ops.NFS4ops()
from block import Packer as BlockPacker, Unpacker as BlockUnpacker, \
diff --git a/nfs4.1/server41tests/st_lookup.py b/nfs4.1/server41tests/st_lookup.py
index 3899425..c46e7d2 100644
--- a/nfs4.1/server41tests/st_lookup.py
+++ b/nfs4.1/server41tests/st_lookup.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, fail
+from .environment import check, fail
import nfs_ops
op = nfs_ops.NFS4ops()

@@ -64,7 +64,7 @@ def testLongName(t, env):

##############################################################
if 0:
- from environment import check, get_invalid_utf8strings
+ from .environment import check, get_invalid_utf8strings

def testDir(t, env):
"""LOOKUP testtree dir
diff --git a/nfs4.1/server41tests/st_lookupp.py b/nfs4.1/server41tests/st_lookupp.py
index 4c863a4..c91e39e 100644
--- a/nfs4.1/server41tests/st_lookupp.py
+++ b/nfs4.1/server41tests/st_lookupp.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, fail, use_obj
+from .environment import check, fail, use_obj
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py
index 473732d..ceca656 100644
--- a/nfs4.1/server41tests/st_open.py
+++ b/nfs4.1/server41tests/st_open.py
@@ -1,8 +1,8 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *

-from environment import check, fail, create_file, open_file, close_file
-from environment import open_create_file_op
+from .environment import check, fail, create_file, open_file, close_file
+from .environment import open_create_file_op
from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
from xdrdef.nfs4_type import creatverfattr, fattr4, stateid4, locker4, lock_owner4
from xdrdef.nfs4_type import open_to_lock_owner4
diff --git a/nfs4.1/server41tests/st_putfh.py b/nfs4.1/server41tests/st_putfh.py
index e1d6320..f8bfa71 100644
--- a/nfs4.1/server41tests/st_putfh.py
+++ b/nfs4.1/server41tests/st_putfh.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, fail, use_obj, create_confirm, close_file
+from .environment import check, fail, use_obj, create_confirm, close_file
import nfs_ops
op = nfs_ops.NFS4ops()

diff --git a/nfs4.1/server41tests/st_reboot.py b/nfs4.1/server41tests/st_reboot.py
index b19c343..b852ded 100644
--- a/nfs4.1/server41tests/st_reboot.py
+++ b/nfs4.1/server41tests/st_reboot.py
@@ -1,6 +1,6 @@
from xdrdef.nfs4_const import *
from xdrdef.nfs4_type import *
-from environment import check, fail, create_file, open_file, create_confirm
+from .environment import check, fail, create_file, open_file, create_confirm
import sys
import os
import nfs4lib
diff --git a/nfs4.1/server41tests/st_reclaim_complete.py b/nfs4.1/server41tests/st_reclaim_complete.py
index 642ada2..ee51843 100644
--- a/nfs4.1/server41tests/st_reclaim_complete.py
+++ b/nfs4.1/server41tests/st_reclaim_complete.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, open_file, create_file, create_confirm
+from .environment import check, fail, open_file, create_file, create_confirm
import nfs_ops
op = nfs_ops.NFS4ops()
import nfs4lib
diff --git a/nfs4.1/server41tests/st_rename.py b/nfs4.1/server41tests/st_rename.py
index c7c2c20..3042909 100644
--- a/nfs4.1/server41tests/st_rename.py
+++ b/nfs4.1/server41tests/st_rename.py
@@ -1,5 +1,5 @@
from xdrdef.nfs4_const import *
-from environment import check, fail, maketree, rename_obj, get_invalid_utf8strings, create_obj, create_confirm, link, use_obj, create_file
+from .environment import check, fail, maketree, rename_obj, get_invalid_utf8strings, create_obj, create_confirm, link, use_obj, create_file
import nfs_ops
op = nfs_ops.NFS4ops()
from xdrdef.nfs4_type import *
diff --git a/nfs4.1/server41tests/st_secinfo.py b/nfs4.1/server41tests/st_secinfo.py
index 008dc1e..d7f9557 100644
--- a/nfs4.1/server41tests/st_secinfo.py
+++ b/nfs4.1/server41tests/st_secinfo.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, use_obj, bad_sessionid, create_file
+from .environment import check, fail, use_obj, bad_sessionid, create_file
from xdrdef.nfs4_type import channel_attrs4
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.1/server41tests/st_secinfo_no_name.py b/nfs4.1/server41tests/st_secinfo_no_name.py
index 9cd6bd3..a044940 100644
--- a/nfs4.1/server41tests/st_secinfo_no_name.py
+++ b/nfs4.1/server41tests/st_secinfo_no_name.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, bad_sessionid, create_file
+from .environment import check, fail, bad_sessionid, create_file
from xdrdef.nfs4_type import channel_attrs4
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.1/server41tests/st_sequence.py b/nfs4.1/server41tests/st_sequence.py
index 25e5113..208160f 100644
--- a/nfs4.1/server41tests/st_sequence.py
+++ b/nfs4.1/server41tests/st_sequence.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, bad_sessionid, create_file
+from .environment import check, fail, bad_sessionid, create_file
from xdrdef.nfs4_type import channel_attrs4
import nfs_ops
op = nfs_ops.NFS4ops()
diff --git a/nfs4.1/server41tests/st_sparse.py b/nfs4.1/server41tests/st_sparse.py
index 6adf3d6..06be19e 100644
--- a/nfs4.1/server41tests/st_sparse.py
+++ b/nfs4.1/server41tests/st_sparse.py
@@ -1,6 +1,6 @@
from st_create_session import create_session
from xdrdef.nfs4_const import *
-from environment import check, fail, create_file
+from .environment import check, fail, create_file
import nfs_ops
op = nfs_ops.NFS4ops()
import nfs4lib
diff --git a/nfs4.1/server41tests/st_trunking.py b/nfs4.1/server41tests/st_trunking.py
index 684423d..72afa1f 100644
--- a/nfs4.1/server41tests/st_trunking.py
+++ b/nfs4.1/server41tests/st_trunking.py
@@ -1,7 +1,7 @@
from xdrdef.nfs4_const import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, fail
+from .environment import check, fail
from xdrdef.nfs4_type import *
import random
import nfs4lib
diff --git a/nfs4.1/server41tests/st_verify.py b/nfs4.1/server41tests/st_verify.py
index 7fb8a47..64d6156 100644
--- a/nfs4.1/server41tests/st_verify.py
+++ b/nfs4.1/server41tests/st_verify.py
@@ -1,7 +1,7 @@
from xdrdef.nfs4_const import *
import nfs_ops
op = nfs_ops.NFS4ops()
-from environment import check, get_invalid_clientid, makeStaleId, \
+from .environment import check, get_invalid_clientid, makeStaleId, \
do_getattrdict, use_obj

def _try_mand(t, env, path):
diff --git a/nfs4.1/testclient.py b/nfs4.1/testclient.py
index 3665253..5d21eaa 100755
--- a/nfs4.1/testclient.py
+++ b/nfs4.1/testclient.py
@@ -33,7 +33,7 @@ import testmod
from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
import client41tests.environment as environment
import socket
-import rpc
+import rpc.rpc as rpc
import pickle

def parse_useparams(str):
diff --git a/nfs4.1/testserver.py b/nfs4.1/testserver.py
index 7818a5d..2becc13 100755
--- a/nfs4.1/testserver.py
+++ b/nfs4.1/testserver.py
@@ -37,7 +37,7 @@ import testmod
from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
import server41tests.environment as environment
import socket
-import rpc
+import rpc.rpc as rpc
import pickle

VERSION="0.2" # How/when update this?
diff --git a/rpc/rpc.py b/rpc/rpc.py
index af2b325..0c4a20a 100644
--- a/rpc/rpc.py
+++ b/rpc/rpc.py
@@ -1,4 +1,5 @@
from __future__ import with_statement
+from __future__ import absolute_import

import socket, select
import struct
@@ -7,7 +8,7 @@ import logging
from collections import deque as Deque
from errno import EINPROGRESS, EWOULDBLOCK

-import rpc_pack
+import rpc.rpc_pack as rpc_pack
from rpc_const import *
from rpc_type import *

--
2.17.1



2018-08-24 00:33:59

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH 19/24 v2] pynfs: python3 support plan: fix import fail on python3

Thanks for the patches, and apologies for the delay handling them. I've
applied all 24 (including the v2 version of this patch), and pushed out
to my public git repo.

Does this complete the python3 work, or is there more to do?

--b.

On Tue, Jul 24, 2018 at 06:33:15PM +0800, [email protected] wrote:
> From: "Jianhong.Yin" <[email protected]>
>
> Signed-off-by: Jianhong Yin <[email protected]>
> ---
> nfs4.0/servertests/environment.py | 2 +-
> nfs4.0/servertests/st_access.py | 2 +-
> nfs4.0/servertests/st_acl.py | 2 +-
> nfs4.0/servertests/st_close.py | 2 +-
> nfs4.0/servertests/st_commit.py | 2 +-
> nfs4.0/servertests/st_compound.py | 5 +++--
> nfs4.0/servertests/st_create.py | 2 +-
> nfs4.0/servertests/st_delegation.py | 2 +-
> nfs4.0/servertests/st_fslocations.py | 2 +-
> nfs4.0/servertests/st_getattr.py | 2 +-
> nfs4.0/servertests/st_getfh.py | 2 +-
> nfs4.0/servertests/st_gss.py | 4 ++--
> nfs4.0/servertests/st_link.py | 2 +-
> nfs4.0/servertests/st_lock.py | 2 +-
> nfs4.0/servertests/st_lockt.py | 2 +-
> nfs4.0/servertests/st_locku.py | 2 +-
> nfs4.0/servertests/st_lookup.py | 4 ++--
> nfs4.0/servertests/st_lookupp.py | 2 +-
> nfs4.0/servertests/st_nverify.py | 2 +-
> nfs4.0/servertests/st_open.py | 2 +-
> nfs4.0/servertests/st_openconfirm.py | 2 +-
> nfs4.0/servertests/st_opendowngrade.py | 2 +-
> nfs4.0/servertests/st_putfh.py | 2 +-
> nfs4.0/servertests/st_putpubfh.py | 2 +-
> nfs4.0/servertests/st_putrootfh.py | 2 +-
> nfs4.0/servertests/st_read.py | 4 ++--
> nfs4.0/servertests/st_readdir.py | 2 +-
> nfs4.0/servertests/st_readlink.py | 2 +-
> nfs4.0/servertests/st_reboot.py | 2 +-
> nfs4.0/servertests/st_releaselockowner.py | 2 +-
> nfs4.0/servertests/st_remove.py | 2 +-
> nfs4.0/servertests/st_rename.py | 2 +-
> nfs4.0/servertests/st_renew.py | 2 +-
> nfs4.0/servertests/st_replay.py | 2 +-
> nfs4.0/servertests/st_restorefh.py | 2 +-
> nfs4.0/servertests/st_savefh.py | 2 +-
> nfs4.0/servertests/st_secinfo.py | 2 +-
> nfs4.0/servertests/st_setattr.py | 2 +-
> nfs4.0/servertests/st_setclientid.py | 2 +-
> nfs4.0/servertests/st_setclientidconfirm.py | 2 +-
> nfs4.0/servertests/st_spoof.py | 2 +-
> nfs4.0/servertests/st_verify.py | 2 +-
> nfs4.0/servertests/st_write.py | 4 ++--
> nfs4.0/testserver.py | 2 +-
> nfs4.1/client41tests/ct_reboot.py | 2 +-
> nfs4.1/client41tests/environment.py | 2 +-
> nfs4.1/dataserver.py | 2 +-
> nfs4.1/nfs3client.py | 2 +-
> nfs4.1/nfs4client.py | 2 +-
> nfs4.1/nfs4lib.py | 2 +-
> nfs4.1/nfs4proxy.py | 2 +-
> nfs4.1/nfs4server.py | 2 +-
> nfs4.1/nfs4state.py | 2 +-
> nfs4.1/server41tests/environment.py | 2 +-
> nfs4.1/server41tests/st_block.py | 2 +-
> nfs4.1/server41tests/st_compound.py | 2 +-
> nfs4.1/server41tests/st_create_session.py | 2 +-
> nfs4.1/server41tests/st_current_stateid.py | 4 ++--
> nfs4.1/server41tests/st_debug.py | 2 +-
> nfs4.1/server41tests/st_delegation.py | 2 +-
> nfs4.1/server41tests/st_destroy_clientid.py | 2 +-
> nfs4.1/server41tests/st_destroy_session.py | 4 ++--
> nfs4.1/server41tests/st_exchange_id.py | 2 +-
> nfs4.1/server41tests/st_flex.py | 2 +-
> nfs4.1/server41tests/st_getdevicelist.py | 2 +-
> nfs4.1/server41tests/st_lookup.py | 4 ++--
> nfs4.1/server41tests/st_lookupp.py | 2 +-
> nfs4.1/server41tests/st_open.py | 4 ++--
> nfs4.1/server41tests/st_putfh.py | 2 +-
> nfs4.1/server41tests/st_reboot.py | 2 +-
> nfs4.1/server41tests/st_reclaim_complete.py | 2 +-
> nfs4.1/server41tests/st_rename.py | 2 +-
> nfs4.1/server41tests/st_secinfo.py | 2 +-
> nfs4.1/server41tests/st_secinfo_no_name.py | 2 +-
> nfs4.1/server41tests/st_sequence.py | 2 +-
> nfs4.1/server41tests/st_sparse.py | 2 +-
> nfs4.1/server41tests/st_trunking.py | 2 +-
> nfs4.1/server41tests/st_verify.py | 2 +-
> nfs4.1/testclient.py | 2 +-
> nfs4.1/testserver.py | 2 +-
> rpc/rpc.py | 3 ++-
> 81 files changed, 92 insertions(+), 90 deletions(-)
>
> diff --git a/nfs4.0/servertests/environment.py b/nfs4.0/servertests/environment.py
> index a5cfe60..4d85837 100644
> --- a/nfs4.0/servertests/environment.py
> +++ b/nfs4.0/servertests/environment.py
> @@ -14,7 +14,7 @@ from nfs4lib import NFS4Client, get_attrbitnum_dict
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import fsid4, nfsace4, fs_locations4, fs_location4, \
> specdata4, nfstime4, settime4, stateid4
> -import rpc
> +import rpc.rpc as rpc
> import sys
> import os
> import nfs_ops
> diff --git a/nfs4.0/servertests/st_access.py b/nfs4.0/servertests/st_access.py
> index 58c42bc..0a16986 100644
> --- a/nfs4.0/servertests/st_access.py
> +++ b/nfs4.0/servertests/st_access.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_acl.py b/nfs4.0/servertests/st_acl.py
> index 88667d2..3194ebc 100644
> --- a/nfs4.0/servertests/st_acl.py
> +++ b/nfs4.0/servertests/st_acl.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> from xdrdef.nfs4_type import nfsace4
> from nfs4lib import list2bitmap
>
> diff --git a/nfs4.0/servertests/st_close.py b/nfs4.0/servertests/st_close.py
> index 89ccbba..e0166f6 100644
> --- a/nfs4.0/servertests/st_close.py
> +++ b/nfs4.0/servertests/st_close.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, makeStaleId
> +from .environment import check, makeStaleId
>
>
> def testCloseCreate(t, env):
> diff --git a/nfs4.0/servertests/st_commit.py b/nfs4.0/servertests/st_commit.py
> index eecf2c8..9345424 100644
> --- a/nfs4.0/servertests/st_commit.py
> +++ b/nfs4.0/servertests/st_commit.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
>
> _text = "Random data to write"
>
> diff --git a/nfs4.0/servertests/st_compound.py b/nfs4.0/servertests/st_compound.py
> index 59a279d..5225f61 100644
> --- a/nfs4.0/servertests/st_compound.py
> +++ b/nfs4.0/servertests/st_compound.py
> @@ -1,8 +1,9 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import nfs_argop4
> from xdrdef.nfs4_pack import NFS4Packer
> -from environment import check, get_invalid_utf8strings
> -from rpc import RPCError
> +from .environment import check, get_invalid_utf8strings
> +from rpc.rpc import RPCError
> +
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_create.py b/nfs4.0/servertests/st_create.py
> index c7256e5..a43003b 100644
> --- a/nfs4.0/servertests/st_create.py
> +++ b/nfs4.0/servertests/st_create.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import createtype4, specdata4
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_delegation.py b/nfs4.0/servertests/st_delegation.py
> index 937d95f..0247151 100644
> --- a/nfs4.0/servertests/st_delegation.py
> +++ b/nfs4.0/servertests/st_delegation.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import nfs_client_id4, clientaddr4, cb_client4
> -from environment import check
> +from .environment import check
> import os
> import threading
> import time
> diff --git a/nfs4.0/servertests/st_fslocations.py b/nfs4.0/servertests/st_fslocations.py
> index 442d5a2..0387843 100644
> --- a/nfs4.0/servertests/st_fslocations.py
> +++ b/nfs4.0/servertests/st_fslocations.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from nfs4lib import list2bitmap
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_getattr.py b/nfs4.0/servertests/st_getattr.py
> index 65a5701..292fcd2 100644
> --- a/nfs4.0/servertests/st_getattr.py
> +++ b/nfs4.0/servertests/st_getattr.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> from nfs4lib import get_attr_name
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.0/servertests/st_getfh.py b/nfs4.0/servertests/st_getfh.py
> index 6fd22e7..4abe320 100644
> --- a/nfs4.0/servertests/st_getfh.py
> +++ b/nfs4.0/servertests/st_getfh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_gss.py b/nfs4.0/servertests/st_gss.py
> index 414883e..e10e849 100644
> --- a/nfs4.0/servertests/st_gss.py
> +++ b/nfs4.0/servertests/st_gss.py
> @@ -1,7 +1,7 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> from socket import timeout
> -import rpc
> +import rpc.rpc as rpc
> import rpc.rpcsec.gss_const as gss
> from rpc.rpcsec.gss_type import rpc_gss_cred_t
> import nfs_ops
> diff --git a/nfs4.0/servertests/st_link.py b/nfs4.0/servertests/st_link.py
> index feddf1e..0ef5009 100644
> --- a/nfs4.0/servertests/st_link.py
> +++ b/nfs4.0/servertests/st_link.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_lock.py b/nfs4.0/servertests/st_lock.py
> index 060236a..b815a54 100644
> --- a/nfs4.0/servertests/st_lock.py
> +++ b/nfs4.0/servertests/st_lock.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import stateid4
> -from environment import check, get_invalid_clientid, makeStaleId, makeBadIDganesha
> +from .environment import check, get_invalid_clientid, makeStaleId, makeBadIDganesha
> import time
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.0/servertests/st_lockt.py b/nfs4.0/servertests/st_lockt.py
> index 7f8c5e1..ee0b825 100644
> --- a/nfs4.0/servertests/st_lockt.py
> +++ b/nfs4.0/servertests/st_lockt.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_clientid
> +from .environment import check, get_invalid_clientid
>
> def testUnlockedFile(t, env):
> """LOCKT on a regular unlocked file
> diff --git a/nfs4.0/servertests/st_locku.py b/nfs4.0/servertests/st_locku.py
> index 74b464a..3524a61 100644
> --- a/nfs4.0/servertests/st_locku.py
> +++ b/nfs4.0/servertests/st_locku.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import stateid4
> -from environment import check, makeStaleId
> +from .environment import check, makeStaleId
>
> def testFile(t, env):
> """LOCKU a regular file
> diff --git a/nfs4.0/servertests/st_lookup.py b/nfs4.0/servertests/st_lookup.py
> index eed7100..9bfaffe 100644
> --- a/nfs4.0/servertests/st_lookup.py
> +++ b/nfs4.0/servertests/st_lookup.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> -import rpc
> +from .environment import check, get_invalid_utf8strings
> +import rpc.rpc as rpc
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_lookupp.py b/nfs4.0/servertests/st_lookupp.py
> index 13c1553..7c38600 100644
> --- a/nfs4.0/servertests/st_lookupp.py
> +++ b/nfs4.0/servertests/st_lookupp.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_nverify.py b/nfs4.0/servertests/st_nverify.py
> index 4185970..e2a8130 100644
> --- a/nfs4.0/servertests/st_nverify.py
> +++ b/nfs4.0/servertests/st_nverify.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_clientid, makeStaleId
> +from .environment import check, get_invalid_clientid, makeStaleId
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_open.py b/nfs4.0/servertests/st_open.py
> index b4af81c..9f5d1aa 100644
> --- a/nfs4.0/servertests/st_open.py
> +++ b/nfs4.0/servertests/st_open.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, checkdict, get_invalid_utf8strings
> +from .environment import check, checkdict, get_invalid_utf8strings
> from nfs4lib import get_bitnumattr_dict
>
> # Any test that uses create_confirm should depend on this test
> diff --git a/nfs4.0/servertests/st_openconfirm.py b/nfs4.0/servertests/st_openconfirm.py
> index 3b5b98f..631855a 100644
> --- a/nfs4.0/servertests/st_openconfirm.py
> +++ b/nfs4.0/servertests/st_openconfirm.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import stateid4
> -from environment import check, makeStaleId
> +from .environment import check, makeStaleId
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_opendowngrade.py b/nfs4.0/servertests/st_opendowngrade.py
> index 213b2dd..2180223 100644
> --- a/nfs4.0/servertests/st_opendowngrade.py
> +++ b/nfs4.0/servertests/st_opendowngrade.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, makeStaleId
> +from .environment import check, makeStaleId
>
> def testRegularOpen(t, env):
> """OPENDOWNGRADE on regular file
> diff --git a/nfs4.0/servertests/st_putfh.py b/nfs4.0/servertests/st_putfh.py
> index ba9ce27..6560f2e 100644
> --- a/nfs4.0/servertests/st_putfh.py
> +++ b/nfs4.0/servertests/st_putfh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_putpubfh.py b/nfs4.0/servertests/st_putpubfh.py
> index 0149b9d..1514fde 100644
> --- a/nfs4.0/servertests/st_putpubfh.py
> +++ b/nfs4.0/servertests/st_putpubfh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_putrootfh.py b/nfs4.0/servertests/st_putrootfh.py
> index dd47f58..b13c694 100644
> --- a/nfs4.0/servertests/st_putrootfh.py
> +++ b/nfs4.0/servertests/st_putrootfh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_read.py b/nfs4.0/servertests/st_read.py
> index 15f8795..1eb996c 100644
> --- a/nfs4.0/servertests/st_read.py
> +++ b/nfs4.0/servertests/st_read.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> -from environment import check, makeBadID, makeBadIDganesha, makeStaleId
> -import rpc
> +from .environment import check, makeBadID, makeBadIDganesha, makeStaleId
> +import rpc.rpc as rpc
>
> def _compare(t, res, expect, eof=True):
> def shorten(str):
> diff --git a/nfs4.0/servertests/st_readdir.py b/nfs4.0/servertests/st_readdir.py
> index 798b2d0..b9a8a4d 100644
> --- a/nfs4.0/servertests/st_readdir.py
> +++ b/nfs4.0/servertests/st_readdir.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from nfs4lib import get_attr_name
> -from environment import check
> +from .environment import check
>
> def _compare(t, entries, expect, attrlist=[]):
> names = [e.name for e in entries]
> diff --git a/nfs4.0/servertests/st_readlink.py b/nfs4.0/servertests/st_readlink.py
> index 8b905d0..d8e3ea1 100644
> --- a/nfs4.0/servertests/st_readlink.py
> +++ b/nfs4.0/servertests/st_readlink.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_reboot.py b/nfs4.0/servertests/st_reboot.py
> index 16cb008..2a03e60 100644
> --- a/nfs4.0/servertests/st_reboot.py
> +++ b/nfs4.0/servertests/st_reboot.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import os
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.0/servertests/st_releaselockowner.py b/nfs4.0/servertests/st_releaselockowner.py
> index 17dfe1a..8021ddf 100644
> --- a/nfs4.0/servertests/st_releaselockowner.py
> +++ b/nfs4.0/servertests/st_releaselockowner.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import lock_owner4
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_remove.py b/nfs4.0/servertests/st_remove.py
> index 5f531f4..a9c397f 100644
> --- a/nfs4.0/servertests/st_remove.py
> +++ b/nfs4.0/servertests/st_remove.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_rename.py b/nfs4.0/servertests/st_rename.py
> index 8f41763..3a7fa1e 100644
> --- a/nfs4.0/servertests/st_rename.py
> +++ b/nfs4.0/servertests/st_rename.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_renew.py b/nfs4.0/servertests/st_renew.py
> index 3a9f774..679363c 100644
> --- a/nfs4.0/servertests/st_renew.py
> +++ b/nfs4.0/servertests/st_renew.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_replay.py b/nfs4.0/servertests/st_replay.py
> index 81b8332..3eba563 100644
> --- a/nfs4.0/servertests/st_replay.py
> +++ b/nfs4.0/servertests/st_replay.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> from xdrdef.nfs4_type import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.0/servertests/st_restorefh.py b/nfs4.0/servertests/st_restorefh.py
> index 839079f..e5db09a 100644
> --- a/nfs4.0/servertests/st_restorefh.py
> +++ b/nfs4.0/servertests/st_restorefh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_savefh.py b/nfs4.0/servertests/st_savefh.py
> index eef810c..c574718 100644
> --- a/nfs4.0/servertests/st_savefh.py
> +++ b/nfs4.0/servertests/st_savefh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_secinfo.py b/nfs4.0/servertests/st_secinfo.py
> index eb874b1..6c828bf 100644
> --- a/nfs4.0/servertests/st_secinfo.py
> +++ b/nfs4.0/servertests/st_secinfo.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_setattr.py b/nfs4.0/servertests/st_setattr.py
> index aa7123b..edf8caa 100644
> --- a/nfs4.0/servertests/st_setattr.py
> +++ b/nfs4.0/servertests/st_setattr.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_utf8strings
> +from .environment import check, get_invalid_utf8strings
> from nfs4lib import bitmap2list, dict2fattr
> from xdrdef.nfs4_type import nfstime4, settime4
> import nfs_ops
> diff --git a/nfs4.0/servertests/st_setclientid.py b/nfs4.0/servertests/st_setclientid.py
> index 7f42d2d..6ad91f8 100644
> --- a/nfs4.0/servertests/st_setclientid.py
> +++ b/nfs4.0/servertests/st_setclientid.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import os
> import struct, time
> import nfs_ops
> diff --git a/nfs4.0/servertests/st_setclientidconfirm.py b/nfs4.0/servertests/st_setclientidconfirm.py
> index 51f7981..4ecf635 100644
> --- a/nfs4.0/servertests/st_setclientidconfirm.py
> +++ b/nfs4.0/servertests/st_setclientidconfirm.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
> import os
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.0/servertests/st_spoof.py b/nfs4.0/servertests/st_spoof.py
> index 777985e..68778d4 100644
> --- a/nfs4.0/servertests/st_spoof.py
> +++ b/nfs4.0/servertests/st_spoof.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check
> +from .environment import check
>
> def testSpoofUser(t, env):
> """SPOOF test, try to spoof user
> diff --git a/nfs4.0/servertests/st_verify.py b/nfs4.0/servertests/st_verify.py
> index 219d0a0..16d7c0c 100644
> --- a/nfs4.0/servertests/st_verify.py
> +++ b/nfs4.0/servertests/st_verify.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, get_invalid_clientid, makeStaleId
> +from .environment import check, get_invalid_clientid, makeStaleId
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/servertests/st_write.py b/nfs4.0/servertests/st_write.py
> index 5b48153..70ff49e 100644
> --- a/nfs4.0/servertests/st_write.py
> +++ b/nfs4.0/servertests/st_write.py
> @@ -1,8 +1,8 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> -from environment import check, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
> +from .environment import check, compareTimes, makeBadID, makeBadIDganesha, makeStaleId
> import struct
> -import rpc
> +import rpc.rpc as rpc
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.0/testserver.py b/nfs4.0/testserver.py
> index 581dc3e..ebce58d 100755
> --- a/nfs4.0/testserver.py
> +++ b/nfs4.0/testserver.py
> @@ -40,7 +40,7 @@ import testmod
> from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
> import servertests.environment as environment
> import socket
> -import rpc
> +import rpc.rpc as rpc
> import pickle
>
> VERSION="0.2" # How/when update this?
> diff --git a/nfs4.1/client41tests/ct_reboot.py b/nfs4.1/client41tests/ct_reboot.py
> index 3bd241b..efbd74e 100644
> --- a/nfs4.1/client41tests/ct_reboot.py
> +++ b/nfs4.1/client41tests/ct_reboot.py
> @@ -1,5 +1,5 @@
> import os
> -from environment import fail
> +from .environment import fail
>
> def testReboot(t, env):
> """Test reboot
> diff --git a/nfs4.1/client41tests/environment.py b/nfs4.1/client41tests/environment.py
> index 933264c..09d07c2 100644
> --- a/nfs4.1/client41tests/environment.py
> +++ b/nfs4.1/client41tests/environment.py
> @@ -12,7 +12,7 @@ import time
> import testmod
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> -import rpc
> +import rpc.rpc as rpc
> import nfs4client
> import os
> import nfs4lib
> diff --git a/nfs4.1/dataserver.py b/nfs4.1/dataserver.py
> index af0e35a..f76ca5a 100644
> --- a/nfs4.1/dataserver.py
> +++ b/nfs4.1/dataserver.py
> @@ -1,4 +1,4 @@
> -import rpc
> +import rpc.rpc as rpc
> import nfs4lib
> import xdrdef.nfs4_type as type4
> from xdrdef.nfs4_pack import NFS4Packer
> diff --git a/nfs4.1/nfs3client.py b/nfs4.1/nfs3client.py
> index 176765c..f98f691 100644
> --- a/nfs4.1/nfs3client.py
> +++ b/nfs4.1/nfs3client.py
> @@ -1,5 +1,5 @@
> import use_local # HACK so don't have to rebuild constantly
> -import rpc
> +import rpc.rpc as rpc
> import nfs4lib
> #from nfs4lib import NFS4Error, NFS4Replay, inc_u32
> from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
> diff --git a/nfs4.1/nfs4client.py b/nfs4.1/nfs4client.py
> index 0588d7b..e8c649b 100644
> --- a/nfs4.1/nfs4client.py
> +++ b/nfs4.1/nfs4client.py
> @@ -1,5 +1,5 @@
> import use_local # HACK so don't have to rebuild constantly
> -import rpc
> +import rpc.rpc as rpc
> import nfs4lib
> from nfs4lib import NFS4Error, NFS4Replay, inc_u32
> from xdrdef.nfs4_type import *
> diff --git a/nfs4.1/nfs4lib.py b/nfs4.1/nfs4lib.py
> index 20eae0f..d46706a 100644
> --- a/nfs4.1/nfs4lib.py
> +++ b/nfs4.1/nfs4lib.py
> @@ -1,5 +1,5 @@
> from __future__ import with_statement
> -import rpc
> +import rpc.rpc as rpc
> import xdrdef.nfs4_const
> from xdrdef.nfs4_pack import NFS4Packer, NFS4Unpacker
> import xdrdef.nfs4_type
> diff --git a/nfs4.1/nfs4proxy.py b/nfs4.1/nfs4proxy.py
> index efb6744..dc8fdd4 100755
> --- a/nfs4.1/nfs4proxy.py
> +++ b/nfs4.1/nfs4proxy.py
> @@ -3,7 +3,7 @@ from __future__ import with_statement
> import use_local # HACK so don't have to rebuild constantly
> import nfs4lib
> from nfs4lib import inc_u32, NFS4Error, NFS4Replay
> -import rpc
> +import rpc.rpc as rpc
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
> diff --git a/nfs4.1/nfs4server.py b/nfs4.1/nfs4server.py
> index cd78082..767319d 100755
> --- a/nfs4.1/nfs4server.py
> +++ b/nfs4.1/nfs4server.py
> @@ -3,7 +3,7 @@ from __future__ import with_statement
> import use_local # HACK so don't have to rebuild constantly
> import nfs4lib
> from nfs4lib import inc_u32, NFS4Error, NFS4Replay
> -import rpc
> +import rpc.rpc as rpc
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> from xdrdef.sctrl_pack import SCTRLPacker, SCTRLUnpacker
> diff --git a/nfs4.1/nfs4state.py b/nfs4.1/nfs4state.py
> index 95f84df..f2cad04 100644
> --- a/nfs4.1/nfs4state.py
> +++ b/nfs4.1/nfs4state.py
> @@ -9,7 +9,7 @@ from nfs4lib import NFS4Error
> from xdrdef.nfs4_type import *
> from xdrdef.nfs4_const import *
> import nfs_ops
> -import rpc
> +import rpc.rpc as rpc
> import logging
>
> log = logging.getLogger("nfs.server.state")
> diff --git a/nfs4.1/server41tests/environment.py b/nfs4.1/server41tests/environment.py
> index 360089e..9e1201f 100644
> --- a/nfs4.1/server41tests/environment.py
> +++ b/nfs4.1/server41tests/environment.py
> @@ -12,7 +12,7 @@ import time
> import testmod
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> -import rpc
> +import rpc.rpc as rpc
> import nfs4client
> import sys
> import os
> diff --git a/nfs4.1/server41tests/st_block.py b/nfs4.1/server41tests/st_block.py
> index 2041de3..3cfc1c6 100644
> --- a/nfs4.1/server41tests/st_block.py
> +++ b/nfs4.1/server41tests/st_block.py
> @@ -2,7 +2,7 @@ from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, fail, create_file
> +from .environment import check, fail, create_file
> from block import Packer as BlockPacker, Unpacker as BlockUnpacker, \
> PNFS_BLOCK_READWRITE_DATA, pnfs_block_layoutupdate4, \
> pnfs_block_extent4
> diff --git a/nfs4.1/server41tests/st_compound.py b/nfs4.1/server41tests/st_compound.py
> index 3915dd8..ded5465 100644
> --- a/nfs4.1/server41tests/st_compound.py
> +++ b/nfs4.1/server41tests/st_compound.py
> @@ -1,7 +1,7 @@
> from xdrdef.nfs4_const import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, fail, get_invalid_utf8strings
> +from .environment import check, fail, get_invalid_utf8strings
> from xdrdef.nfs4_type import *
> from rpc import RPCAcceptError, GARBAGE_ARGS, RPCTimeout
> from nfs4lib import NFS4Error, hash_oids, encrypt_oids, FancyNFS4Packer
> diff --git a/nfs4.1/server41tests/st_create_session.py b/nfs4.1/server41tests/st_create_session.py
> index 5018ec6..a638990 100644
> --- a/nfs4.1/server41tests/st_create_session.py
> +++ b/nfs4.1/server41tests/st_create_session.py
> @@ -1,7 +1,7 @@
> from xdrdef.nfs4_const import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, fail, create_file, open_file
> +from .environment import check, fail, create_file, open_file
> from xdrdef.nfs4_type import *
> import random
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_current_stateid.py b/nfs4.1/server41tests/st_current_stateid.py
> index 819dfb1..58f6e9b 100644
> --- a/nfs4.1/server41tests/st_current_stateid.py
> +++ b/nfs4.1/server41tests/st_current_stateid.py
> @@ -1,8 +1,8 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
>
> -from environment import check, fail, create_file, open_file, close_file
> -from environment import open_create_file_op, use_obj
> +from .environment import check, fail, create_file, open_file, close_file
> +from .environment import open_create_file_op, use_obj
> from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
> from xdrdef.nfs4_type import creatverfattr, fattr4, stateid4, locker4, lock_owner4
> from xdrdef.nfs4_type import open_to_lock_owner4
> diff --git a/nfs4.1/server41tests/st_debug.py b/nfs4.1/server41tests/st_debug.py
> index 345fc77..3e3087d 100644
> --- a/nfs4.1/server41tests/st_debug.py
> +++ b/nfs4.1/server41tests/st_debug.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, create_file, close_file
> +from .environment import check, fail, create_file, close_file
> from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.1/server41tests/st_delegation.py b/nfs4.1/server41tests/st_delegation.py
> index cbabb85..4f05bf1 100644
> --- a/nfs4.1/server41tests/st_delegation.py
> +++ b/nfs4.1/server41tests/st_delegation.py
> @@ -2,7 +2,7 @@ from st_create_session import create_session
> from st_open import open_claim4
> from xdrdef.nfs4_const import *
>
> -from environment import check, fail, create_file, open_file, close_file
> +from .environment import check, fail, create_file, open_file, close_file
> from xdrdef.nfs4_type import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.1/server41tests/st_destroy_clientid.py b/nfs4.1/server41tests/st_destroy_clientid.py
> index 25cc12a..50081b1 100644
> --- a/nfs4.1/server41tests/st_destroy_clientid.py
> +++ b/nfs4.1/server41tests/st_destroy_clientid.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail
> +from .environment import check, fail
> import nfs_ops
> op = nfs_ops.NFS4ops()
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_destroy_session.py b/nfs4.1/server41tests/st_destroy_session.py
> index c776617..c80c845 100644
> --- a/nfs4.1/server41tests/st_destroy_session.py
> +++ b/nfs4.1/server41tests/st_destroy_session.py
> @@ -1,11 +1,11 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, create_file, open_file
> +from .environment import check, fail, create_file, open_file
> from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
> import nfs_ops
> op = nfs_ops.NFS4ops()
> import threading
> -import rpc
> +import rpc.rpc as rpc
>
> def testDestroy(t, env):
> """
> diff --git a/nfs4.1/server41tests/st_exchange_id.py b/nfs4.1/server41tests/st_exchange_id.py
> index 9becec6..5a29634 100644
> --- a/nfs4.1/server41tests/st_exchange_id.py
> +++ b/nfs4.1/server41tests/st_exchange_id.py
> @@ -2,7 +2,7 @@ from xdrdef.nfs4_const import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> import time
> -from environment import check, fail
> +from .environment import check, fail
> from xdrdef.nfs4_type import *
> from rpc import RPCAcceptError, GARBAGE_ARGS, RPCTimeout
> from nfs4lib import NFS4Error, hash_oids, encrypt_oids
> diff --git a/nfs4.1/server41tests/st_flex.py b/nfs4.1/server41tests/st_flex.py
> index 35be489..335b2c8 100644
> --- a/nfs4.1/server41tests/st_flex.py
> +++ b/nfs4.1/server41tests/st_flex.py
> @@ -3,7 +3,7 @@ from xdrdef.nfs4_type import *
> from xdrdef.nfs4_pack import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, fail, create_file, close_file, open_create_file_op
> +from .environment import check, fail, create_file, close_file, open_create_file_op
> from xdrdef.nfs4_pack import NFS4Packer as FlexPacker, \
> NFS4Unpacker as FlexUnpacker
> from nfs4lib import FancyNFS4Packer, get_nfstime
> diff --git a/nfs4.1/server41tests/st_getdevicelist.py b/nfs4.1/server41tests/st_getdevicelist.py
> index edf5fe4..aff510e 100644
> --- a/nfs4.1/server41tests/st_getdevicelist.py
> +++ b/nfs4.1/server41tests/st_getdevicelist.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> -from environment import check, fail, use_obj, open_file, create_file, get_blocksize
> +from .environment import check, fail, use_obj, open_file, create_file, get_blocksize
> import nfs_ops
> op = nfs_ops.NFS4ops()
> from block import Packer as BlockPacker, Unpacker as BlockUnpacker, \
> diff --git a/nfs4.1/server41tests/st_lookup.py b/nfs4.1/server41tests/st_lookup.py
> index 3899425..c46e7d2 100644
> --- a/nfs4.1/server41tests/st_lookup.py
> +++ b/nfs4.1/server41tests/st_lookup.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, fail
> +from .environment import check, fail
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> @@ -64,7 +64,7 @@ def testLongName(t, env):
>
> ##############################################################
> if 0:
> - from environment import check, get_invalid_utf8strings
> + from .environment import check, get_invalid_utf8strings
>
> def testDir(t, env):
> """LOOKUP testtree dir
> diff --git a/nfs4.1/server41tests/st_lookupp.py b/nfs4.1/server41tests/st_lookupp.py
> index 4c863a4..c91e39e 100644
> --- a/nfs4.1/server41tests/st_lookupp.py
> +++ b/nfs4.1/server41tests/st_lookupp.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, fail, use_obj
> +from .environment import check, fail, use_obj
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.1/server41tests/st_open.py b/nfs4.1/server41tests/st_open.py
> index 473732d..ceca656 100644
> --- a/nfs4.1/server41tests/st_open.py
> +++ b/nfs4.1/server41tests/st_open.py
> @@ -1,8 +1,8 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
>
> -from environment import check, fail, create_file, open_file, close_file
> -from environment import open_create_file_op
> +from .environment import check, fail, create_file, open_file, close_file
> +from .environment import open_create_file_op
> from xdrdef.nfs4_type import open_owner4, openflag4, createhow4, open_claim4
> from xdrdef.nfs4_type import creatverfattr, fattr4, stateid4, locker4, lock_owner4
> from xdrdef.nfs4_type import open_to_lock_owner4
> diff --git a/nfs4.1/server41tests/st_putfh.py b/nfs4.1/server41tests/st_putfh.py
> index e1d6320..f8bfa71 100644
> --- a/nfs4.1/server41tests/st_putfh.py
> +++ b/nfs4.1/server41tests/st_putfh.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, fail, use_obj, create_confirm, close_file
> +from .environment import check, fail, use_obj, create_confirm, close_file
> import nfs_ops
> op = nfs_ops.NFS4ops()
>
> diff --git a/nfs4.1/server41tests/st_reboot.py b/nfs4.1/server41tests/st_reboot.py
> index b19c343..b852ded 100644
> --- a/nfs4.1/server41tests/st_reboot.py
> +++ b/nfs4.1/server41tests/st_reboot.py
> @@ -1,6 +1,6 @@
> from xdrdef.nfs4_const import *
> from xdrdef.nfs4_type import *
> -from environment import check, fail, create_file, open_file, create_confirm
> +from .environment import check, fail, create_file, open_file, create_confirm
> import sys
> import os
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_reclaim_complete.py b/nfs4.1/server41tests/st_reclaim_complete.py
> index 642ada2..ee51843 100644
> --- a/nfs4.1/server41tests/st_reclaim_complete.py
> +++ b/nfs4.1/server41tests/st_reclaim_complete.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, open_file, create_file, create_confirm
> +from .environment import check, fail, open_file, create_file, create_confirm
> import nfs_ops
> op = nfs_ops.NFS4ops()
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_rename.py b/nfs4.1/server41tests/st_rename.py
> index c7c2c20..3042909 100644
> --- a/nfs4.1/server41tests/st_rename.py
> +++ b/nfs4.1/server41tests/st_rename.py
> @@ -1,5 +1,5 @@
> from xdrdef.nfs4_const import *
> -from environment import check, fail, maketree, rename_obj, get_invalid_utf8strings, create_obj, create_confirm, link, use_obj, create_file
> +from .environment import check, fail, maketree, rename_obj, get_invalid_utf8strings, create_obj, create_confirm, link, use_obj, create_file
> import nfs_ops
> op = nfs_ops.NFS4ops()
> from xdrdef.nfs4_type import *
> diff --git a/nfs4.1/server41tests/st_secinfo.py b/nfs4.1/server41tests/st_secinfo.py
> index 008dc1e..d7f9557 100644
> --- a/nfs4.1/server41tests/st_secinfo.py
> +++ b/nfs4.1/server41tests/st_secinfo.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, use_obj, bad_sessionid, create_file
> +from .environment import check, fail, use_obj, bad_sessionid, create_file
> from xdrdef.nfs4_type import channel_attrs4
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.1/server41tests/st_secinfo_no_name.py b/nfs4.1/server41tests/st_secinfo_no_name.py
> index 9cd6bd3..a044940 100644
> --- a/nfs4.1/server41tests/st_secinfo_no_name.py
> +++ b/nfs4.1/server41tests/st_secinfo_no_name.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, bad_sessionid, create_file
> +from .environment import check, fail, bad_sessionid, create_file
> from xdrdef.nfs4_type import channel_attrs4
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.1/server41tests/st_sequence.py b/nfs4.1/server41tests/st_sequence.py
> index 25e5113..208160f 100644
> --- a/nfs4.1/server41tests/st_sequence.py
> +++ b/nfs4.1/server41tests/st_sequence.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, bad_sessionid, create_file
> +from .environment import check, fail, bad_sessionid, create_file
> from xdrdef.nfs4_type import channel_attrs4
> import nfs_ops
> op = nfs_ops.NFS4ops()
> diff --git a/nfs4.1/server41tests/st_sparse.py b/nfs4.1/server41tests/st_sparse.py
> index 6adf3d6..06be19e 100644
> --- a/nfs4.1/server41tests/st_sparse.py
> +++ b/nfs4.1/server41tests/st_sparse.py
> @@ -1,6 +1,6 @@
> from st_create_session import create_session
> from xdrdef.nfs4_const import *
> -from environment import check, fail, create_file
> +from .environment import check, fail, create_file
> import nfs_ops
> op = nfs_ops.NFS4ops()
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_trunking.py b/nfs4.1/server41tests/st_trunking.py
> index 684423d..72afa1f 100644
> --- a/nfs4.1/server41tests/st_trunking.py
> +++ b/nfs4.1/server41tests/st_trunking.py
> @@ -1,7 +1,7 @@
> from xdrdef.nfs4_const import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, fail
> +from .environment import check, fail
> from xdrdef.nfs4_type import *
> import random
> import nfs4lib
> diff --git a/nfs4.1/server41tests/st_verify.py b/nfs4.1/server41tests/st_verify.py
> index 7fb8a47..64d6156 100644
> --- a/nfs4.1/server41tests/st_verify.py
> +++ b/nfs4.1/server41tests/st_verify.py
> @@ -1,7 +1,7 @@
> from xdrdef.nfs4_const import *
> import nfs_ops
> op = nfs_ops.NFS4ops()
> -from environment import check, get_invalid_clientid, makeStaleId, \
> +from .environment import check, get_invalid_clientid, makeStaleId, \
> do_getattrdict, use_obj
>
> def _try_mand(t, env, path):
> diff --git a/nfs4.1/testclient.py b/nfs4.1/testclient.py
> index 3665253..5d21eaa 100755
> --- a/nfs4.1/testclient.py
> +++ b/nfs4.1/testclient.py
> @@ -33,7 +33,7 @@ import testmod
> from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
> import client41tests.environment as environment
> import socket
> -import rpc
> +import rpc.rpc as rpc
> import pickle
>
> def parse_useparams(str):
> diff --git a/nfs4.1/testserver.py b/nfs4.1/testserver.py
> index 7818a5d..2becc13 100755
> --- a/nfs4.1/testserver.py
> +++ b/nfs4.1/testserver.py
> @@ -37,7 +37,7 @@ import testmod
> from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
> import server41tests.environment as environment
> import socket
> -import rpc
> +import rpc.rpc as rpc
> import pickle
>
> VERSION="0.2" # How/when update this?
> diff --git a/rpc/rpc.py b/rpc/rpc.py
> index af2b325..0c4a20a 100644
> --- a/rpc/rpc.py
> +++ b/rpc/rpc.py
> @@ -1,4 +1,5 @@
> from __future__ import with_statement
> +from __future__ import absolute_import
>
> import socket, select
> import struct
> @@ -7,7 +8,7 @@ import logging
> from collections import deque as Deque
> from errno import EINPROGRESS, EWOULDBLOCK
>
> -import rpc_pack
> +import rpc.rpc_pack as rpc_pack
> from rpc_const import *
> from rpc_type import *
>
> --
> 2.17.1
>

2018-08-24 06:49:43

by Jianhong.Yin

[permalink] [raw]
Subject: Re:Re: [PATCH 19/24 v2] pynfs: python3 support plan: fix import fail on python3

CkF0IDIwMTgtMDgtMjQgMDU6MDI6MjgsICJKLiBCcnVjZSBGaWVsZHMiIDxiZmllbGRzQHJlZGhh
dC5jb20+IHdyb3RlOgo+VGhhbmtzIGZvciB0aGUgcGF0Y2hlcywgYW5kIGFwb2xvZ2llcyBmb3Ig
dGhlIGRlbGF5IGhhbmRsaW5nIHRoZW0uICBJJ3ZlCj5hcHBsaWVkIGFsbCAyNCAoaW5jbHVkaW5n
IHRoZSB2MiB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gpLCBhbmQgcHVzaGVkIG91dAo+dG8gbXkgcHVi
bGljIGdpdCByZXBvLgo+Cj5Eb2VzIHRoaXMgY29tcGxldGUgdGhlIHB5dGhvbjMgd29yaywgb3Ig
aXMgdGhlcmUgbW9yZSB0byBkbz8KTm8sIHNlZSAgW1BBVENIIDI0LzI0XSBweW5mczogcHl0aG9u
MyBzdXBwb3J0IHBsYW46IGZpeCBhY2Nlc3MgY2xhc3MgdmFyIGluIGxpc3QgY29tcHJlaGVuc2lv
bgogICAgU3RhdHVzOgogICAgJycnCiAgICBhbGwgcGF0Y2hlcyB3b3JrcyBmaW5lIG9uIHB5dGhv
bi0yLjcKICAgIGFuZCBidWlsZCBzdWNjZXNzIG9uIHB5dGhvbi0zLjYKICAgIGJ1dCBiZWNhdXNl
IHhkcmxpYiBpc3N1ZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTk1NDQKICAgIHB5bmZz
IGhhcyBub3QgYmVlbiBhYmxlIHRvIHJ1biBvbiBweXRob24tMy42IG5vdwogICAgJycnCgpUb2Rv
IGxpc3Q6CiAgaW52ZXN0aWdhdGUgcHl0aG9uIHhkcmxpYiBpc3N1ZSBvbiBweXRob24zIDogaHR0
cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU5NTQ0CiAgaW52ZXN0aWdhdGUgd2h5IChweXRob24t
cGx5ID4zLjQpIGNhbid0IHdvcmsgd2l0aCBweW5mcyAob24gYm90aCBweXRob24yIGFuZCBweXRo
b24zKQoKVGhhbmtzIEouIEJydWNlCgo+Cj4tLWIuCj4KPk9uIFR1ZSwgSnVsIDI0LCAyMDE4IGF0
IDA2OjMzOjE1UE0gKzA4MDAsIGppeWluQHJlZGhhdC5jb20gd3JvdGU6Cj4+IEZyb206ICJKaWFu
aG9uZy5ZaW4iIDx5aW4tamlhbmhvbmdAMTYzLmNvbT4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEpp
YW5ob25nIFlpbiA8eWluLWppYW5ob25nQDE2My5jb20+Cj4+IC0tLQo+PiAgbmZzNC4wL3NlcnZl
cnRlc3RzL2Vudmlyb25tZW50LnB5ICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0
ZXN0cy9zdF9hY2Nlc3MucHkgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVz
dHMvc3RfYWNsLnB5ICAgICAgICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3Rz
L3N0X2Nsb3NlLnB5ICAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9z
dF9jb21taXQucHkgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3Rf
Y29tcG91bmQucHkgICAgICAgICAgIHwgNSArKystLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0
X2NyZWF0ZS5weSAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9k
ZWxlZ2F0aW9uLnB5ICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfZnNs
b2NhdGlvbnMucHkgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2dldGF0
dHIucHkgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9nZXRmaC5w
eSAgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfZ3NzLnB5ICAg
ICAgICAgICAgICAgIHwgNCArKy0tCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfbGluay5weSAg
ICAgICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvY2sucHkgICAg
ICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9sb2NrdC5weSAgICAg
ICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfbG9ja3UucHkgICAgICAg
ICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cC5weSAgICAgICAg
ICAgICB8IDQgKystLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cHAucHkgICAgICAg
ICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9udmVyaWZ5LnB5ICAgICAgICAg
ICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3Rfb3Blbi5weSAgICAgICAgICAgICAg
IHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29wZW5jb25maXJtLnB5ICAgICAgICB8
IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9vcGVuZG93bmdyYWRlLnB5ICAgICAgfCAy
ICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfcHV0ZmgucHkgICAgICAgICAgICAgIHwgMiAr
LQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3B1dHB1YmZoLnB5ICAgICAgICAgICB8IDIgKy0K
Pj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9wdXRyb290ZmgucHkgICAgICAgICAgfCAyICstCj4+
ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZC5weSAgICAgICAgICAgICAgIHwgNCArKy0tCj4+
ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZGRpci5weSAgICAgICAgICAgIHwgMiArLQo+PiAg
bmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlYWRsaW5rLnB5ICAgICAgICAgICB8IDIgKy0KPj4gIG5m
czQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZWJvb3QucHkgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0
LjAvc2VydmVydGVzdHMvc3RfcmVsZWFzZWxvY2tvd25lci5weSAgIHwgMiArLQo+PiAgbmZzNC4w
L3NlcnZlcnRlc3RzL3N0X3JlbW92ZS5weSAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9z
ZXJ2ZXJ0ZXN0cy9zdF9yZW5hbWUucHkgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2Vy
dmVydGVzdHMvc3RfcmVuZXcucHkgICAgICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZl
cnRlc3RzL3N0X3JlcGxheS5weSAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0
ZXN0cy9zdF9yZXN0b3JlZmgucHkgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVz
dHMvc3Rfc2F2ZWZoLnB5ICAgICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3Rz
L3N0X3NlY2luZm8ucHkgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9z
dF9zZXRhdHRyLnB5ICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3Rf
c2V0Y2xpZW50aWQucHkgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3Nl
dGNsaWVudGlkY29uZmlybS5weSB8IDIgKy0KPj4gIG5mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zcG9v
Zi5weSAgICAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjAvc2VydmVydGVzdHMvc3RfdmVyaWZ5
LnB5ICAgICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3dyaXRlLnB5
ICAgICAgICAgICAgICB8IDQgKystLQo+PiAgbmZzNC4wL3Rlc3RzZXJ2ZXIucHkgICAgICAgICAg
ICAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9jbGllbnQ0MXRlc3RzL2N0X3JlYm9vdC5w
eSAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjEvY2xpZW50NDF0ZXN0cy9lbnZpcm9ubWVudC5w
eSAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4xL2RhdGFzZXJ2ZXIucHkgICAgICAgICAgICAgICAg
ICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9uZnMzY2xpZW50LnB5ICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyICstCj4+ICBuZnM0LjEvbmZzNGNsaWVudC5weSAgICAgICAgICAgICAgICAgICAg
ICAgIHwgMiArLQo+PiAgbmZzNC4xL25mczRsaWIucHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IDIgKy0KPj4gIG5mczQuMS9uZnM0cHJveHkucHkgICAgICAgICAgICAgICAgICAgICAgICAg
fCAyICstCj4+ICBuZnM0LjEvbmZzNHNlcnZlci5weSAgICAgICAgICAgICAgICAgICAgICAgIHwg
MiArLQo+PiAgbmZzNC4xL25mczRzdGF0ZS5weSAgICAgICAgICAgICAgICAgICAgICAgICB8IDIg
Ky0KPj4gIG5mczQuMS9zZXJ2ZXI0MXRlc3RzL2Vudmlyb25tZW50LnB5ICAgICAgICAgfCAyICst
Cj4+ICBuZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9ibG9jay5weSAgICAgICAgICAgIHwgMiArLQo+
PiAgbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfY29tcG91bmQucHkgICAgICAgICB8IDIgKy0KPj4g
IG5mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2NyZWF0ZV9zZXNzaW9uLnB5ICAgfCAyICstCj4+ICBu
ZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9jdXJyZW50X3N0YXRlaWQucHkgIHwgNCArKy0tCj4+ICBu
ZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9kZWJ1Zy5weSAgICAgICAgICAgIHwgMiArLQo+PiAgbmZz
NC4xL3NlcnZlcjQxdGVzdHMvc3RfZGVsZWdhdGlvbi5weSAgICAgICB8IDIgKy0KPj4gIG5mczQu
MS9zZXJ2ZXI0MXRlc3RzL3N0X2Rlc3Ryb3lfY2xpZW50aWQucHkgfCAyICstCj4+ICBuZnM0LjEv
c2VydmVyNDF0ZXN0cy9zdF9kZXN0cm95X3Nlc3Npb24ucHkgIHwgNCArKy0tCj4+ICBuZnM0LjEv
c2VydmVyNDF0ZXN0cy9zdF9leGNoYW5nZV9pZC5weSAgICAgIHwgMiArLQo+PiAgbmZzNC4xL3Nl
cnZlcjQxdGVzdHMvc3RfZmxleC5weSAgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X2dldGRldmljZWxpc3QucHkgICAgfCAyICstCj4+ICBuZnM0LjEvc2VydmVy
NDF0ZXN0cy9zdF9sb29rdXAucHkgICAgICAgICAgIHwgNCArKy0tCj4+ICBuZnM0LjEvc2VydmVy
NDF0ZXN0cy9zdF9sb29rdXBwLnB5ICAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4xL3NlcnZlcjQx
dGVzdHMvc3Rfb3Blbi5weSAgICAgICAgICAgICB8IDQgKystLQo+PiAgbmZzNC4xL3NlcnZlcjQx
dGVzdHMvc3RfcHV0ZmgucHkgICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9zZXJ2ZXI0MXRl
c3RzL3N0X3JlYm9vdC5weSAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjEvc2VydmVyNDF0ZXN0
cy9zdF9yZWNsYWltX2NvbXBsZXRlLnB5IHwgMiArLQo+PiAgbmZzNC4xL3NlcnZlcjQxdGVzdHMv
c3RfcmVuYW1lLnB5ICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0
X3NlY2luZm8ucHkgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9z
ZWNpbmZvX25vX25hbWUucHkgIHwgMiArLQo+PiAgbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3Rfc2Vx
dWVuY2UucHkgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3NwYXJz
ZS5weSAgICAgICAgICAgfCAyICstCj4+ICBuZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF90cnVua2lu
Zy5weSAgICAgICAgIHwgMiArLQo+PiAgbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfdmVyaWZ5LnB5
ICAgICAgICAgICB8IDIgKy0KPj4gIG5mczQuMS90ZXN0Y2xpZW50LnB5ICAgICAgICAgICAgICAg
ICAgICAgICAgfCAyICstCj4+ICBuZnM0LjEvdGVzdHNlcnZlci5weSAgICAgICAgICAgICAgICAg
ICAgICAgIHwgMiArLQo+PiAgcnBjL3JwYy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDMgKystCj4+ICA4MSBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspLCA5MCBk
ZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvZW52aXJv
bm1lbnQucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvZW52aXJvbm1lbnQucHkKPj4gaW5kZXggYTVj
ZmU2MC4uNGQ4NTgzNyAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL2Vudmlyb25t
ZW50LnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9lbnZpcm9ubWVudC5weQo+PiBAQCAt
MTQsNyArMTQsNyBAQCBmcm9tIG5mczRsaWIgaW1wb3J0IE5GUzRDbGllbnQsIGdldF9hdHRyYml0
bnVtX2RpY3QKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20geGRy
ZGVmLm5mczRfdHlwZSBpbXBvcnQgZnNpZDQsIG5mc2FjZTQsIGZzX2xvY2F0aW9uczQsIGZzX2xv
Y2F0aW9uNCwgXAo+PiAgICAgICBzcGVjZGF0YTQsIG5mc3RpbWU0LCBzZXR0aW1lNCwgc3RhdGVp
ZDQKPj4gLWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgaW1wb3J0IHN5
cwo+PiAgaW1wb3J0IG9zCj4+ICBpbXBvcnQgbmZzX29wcwo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4w
L3NlcnZlcnRlc3RzL3N0X2FjY2Vzcy5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9hY2Nlc3Mu
cHkKPj4gaW5kZXggNThjNDJiYy4uMGExNjk4NiAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZl
cnRlc3RzL3N0X2FjY2Vzcy5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfYWNjZXNz
LnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQg
Kgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmlyb25tZW50
IGltcG9ydCBjaGVjawo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3Bz
KCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2FjbC5weSBiL25m
czQuMC9zZXJ2ZXJ0ZXN0cy9zdF9hY2wucHkKPj4gaW5kZXggODg2NjdkMi4uMzE5NGViYyAxMDA2
NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2FjbC5weQo+PiArKysgYi9uZnM0LjAv
c2VydmVydGVzdHMvc3RfYWNsLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYu
bmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4g
K2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBl
IGltcG9ydCBuZnNhY2U0Cj4+ICBmcm9tIG5mczRsaWIgaW1wb3J0IGxpc3QyYml0bWFwCj4+ICAK
Pj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9jbG9zZS5weSBiL25mczQuMC9z
ZXJ2ZXJ0ZXN0cy9zdF9jbG9zZS5weQo+PiBpbmRleCA4OWNjYmJhLi5lMDE2NmY2IDEwMDY0NAo+
PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfY2xvc2UucHkKPj4gKysrIGIvbmZzNC4wL3Nl
cnZlcnRlc3RzL3N0X2Nsb3NlLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYu
bmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIG1h
a2VTdGFsZUlkCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIG1ha2VTdGFsZUlk
Cj4+ICAKPj4gIAo+PiAgZGVmIHRlc3RDbG9zZUNyZWF0ZSh0LCBlbnYpOgo+PiBkaWZmIC0tZ2l0
IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2NvbW1pdC5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9z
dF9jb21taXQucHkKPj4gaW5kZXggZWVjZjJjOC4uOTM0NTQyNCAxMDA2NDQKPj4gLS0tIGEvbmZz
NC4wL3NlcnZlcnRlc3RzL3N0X2NvbW1pdC5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMv
c3RfY29tbWl0LnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25z
dCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVu
dmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAgCj4+ICBfdGV4dCA9ICJSYW5kb20gZGF0YSB0byB3
cml0ZSIKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2NvbXBvdW5k
LnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2NvbXBvdW5kLnB5Cj4+IGluZGV4IDU5YTI3OWQu
LjUyMjVmNjEgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9jb21wb3VuZC5w
eQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfY29tcG91bmQucHkKPj4gQEAgLTEsOCAr
MSw5IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+ICBmcm9tIHhkcmRl
Zi5uZnM0X3R5cGUgaW1wb3J0IG5mc19hcmdvcDQKPj4gIGZyb20geGRyZGVmLm5mczRfcGFjayBp
bXBvcnQgTkZTNFBhY2tlcgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGdldF9p
bnZhbGlkX3V0ZjhzdHJpbmdzCj4+IC1mcm9tIHJwYyBpbXBvcnQgUlBDRXJyb3IKPj4gK2Zyb20g
LmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0cmluZ3MKPj4gK2Zy
b20gcnBjLnJwYyBpbXBvcnQgUlBDRXJyb3IKPj4gKwo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9w
ID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRl
c3RzL3N0X2NyZWF0ZS5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9jcmVhdGUucHkKPj4gaW5k
ZXggYzcyNTZlNS4uYTQzMDAzYiAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0
X2NyZWF0ZS5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfY3JlYXRlLnB5Cj4+IEBA
IC0xLDYgKzEsNiBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgZnJv
bSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCBjcmVhdGV0eXBlNCwgc3BlY2RhdGE0Cj4+IC1mcm9t
IGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNo
ZWNrCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgCj4+
IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfZGVsZWdhdGlvbi5weSBiL25mczQu
MC9zZXJ2ZXJ0ZXN0cy9zdF9kZWxlZ2F0aW9uLnB5Cj4+IGluZGV4IDkzN2Q5NWYuLjAyNDcxNTEg
MTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9kZWxlZ2F0aW9uLnB5Cj4+ICsr
KyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9kZWxlZ2F0aW9uLnB5Cj4+IEBAIC0xLDYgKzEsNiBA
QAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgZnJvbSB4ZHJkZWYubmZz
NF90eXBlIGltcG9ydCBuZnNfY2xpZW50X2lkNCwgY2xpZW50YWRkcjQsIGNiX2NsaWVudDQKPj4g
LWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBv
cnQgY2hlY2sKPj4gIGltcG9ydCBvcwo+PiAgaW1wb3J0IHRocmVhZGluZwo+PiAgaW1wb3J0IHRp
bWUKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9mc2xvY2F0aW9ucy5weSBi
L25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9mc2xvY2F0aW9ucy5weQo+PiBpbmRleCA0NDJkNWEyLi4w
Mzg3ODQzIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfZnNsb2NhdGlvbnMu
cHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2ZzbG9jYXRpb25zLnB5Cj4+IEBAIC0x
LDYgKzEsNiBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgZnJvbSBu
ZnM0bGliIGltcG9ydCBsaXN0MmJpdG1hcAo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hl
Y2sKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAgaW1wb3J0IG5mc19vcHMK
Pj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3Nl
cnZlcnRlc3RzL3N0X2dldGF0dHIucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfZ2V0YXR0ci5w
eQo+PiBpbmRleCA2NWE1NzAxLi4yOTJmY2QyIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVy
dGVzdHMvc3RfZ2V0YXR0ci5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfZ2V0YXR0
ci5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0
ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICtmcm9tIC5lbnZpcm9ubWVu
dCBpbXBvcnQgY2hlY2sKPj4gIGZyb20gbmZzNGxpYiBpbXBvcnQgZ2V0X2F0dHJfbmFtZQo+PiAg
aW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gZGlmZiAtLWdpdCBh
L25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9nZXRmaC5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9n
ZXRmaC5weQo+PiBpbmRleCA2ZmQyMmU3Li40YWJlMzIwIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAv
c2VydmVydGVzdHMvc3RfZ2V0ZmgucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2dl
dGZoLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBv
cnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmlyb25t
ZW50IGltcG9ydCBjaGVjawo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0
b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2dzcy5weSBi
L25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9nc3MucHkKPj4gaW5kZXggNDE0ODgzZS4uZTEwZTg0OSAx
MDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2dzcy5weQo+PiArKysgYi9uZnM0
LjAvc2VydmVydGVzdHMvc3RfZ3NzLnB5Cj4+IEBAIC0xLDcgKzEsNyBAQAo+PiAgZnJvbSB4ZHJk
ZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sK
Pj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAgZnJvbSBzb2NrZXQgaW1wb3J0
IHRpbWVvdXQKPj4gLWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgaW1w
b3J0IHJwYy5ycGNzZWMuZ3NzX2NvbnN0IGFzIGdzcwo+PiAgZnJvbSBycGMucnBjc2VjLmdzc190
eXBlIGltcG9ydCBycGNfZ3NzX2NyZWRfdAo+PiAgaW1wb3J0IG5mc19vcHMKPj4gZGlmZiAtLWdp
dCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9saW5rLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0
X2xpbmsucHkKPj4gaW5kZXggZmVkZGYxZS4uMGVmNTAwOSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4w
L3NlcnZlcnRlc3RzL3N0X2xpbmsucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xp
bmsucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9y
dCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0
cmluZ3MKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfdXRm
OHN0cmluZ3MKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+
ICAKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9sb2NrLnB5IGIvbmZzNC4w
L3NlcnZlcnRlc3RzL3N0X2xvY2sucHkKPj4gaW5kZXggMDYwMjM2YS4uYjgxNWE1NCAxMDA2NDQK
Pj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvY2sucHkKPj4gKysrIGIvbmZzNC4wL3Nl
cnZlcnRlc3RzL3N0X2xvY2sucHkKPj4gQEAgLTEsNiArMSw2IEBACj4+ICBmcm9tIHhkcmRlZi5u
ZnM0X2NvbnN0IGltcG9ydCAqCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0IHN0YXRl
aWQ0Cj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfY2xpZW50
aWQsIG1ha2VTdGFsZUlkLCBtYWtlQmFkSURnYW5lc2hhCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBp
bXBvcnQgY2hlY2ssIGdldF9pbnZhbGlkX2NsaWVudGlkLCBtYWtlU3RhbGVJZCwgbWFrZUJhZElE
Z2FuZXNoYQo+PiAgaW1wb3J0IHRpbWUKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19v
cHMuTkZTNG9wcygpCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfbG9ja3Qu
cHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfbG9ja3QucHkKPj4gaW5kZXggN2Y4YzVlMS4uZWUw
YjgyNSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvY2t0LnB5Cj4+ICsr
KyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9sb2NrdC5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4g
IGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1w
b3J0IGNoZWNrLCBnZXRfaW52YWxpZF9jbGllbnRpZAo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1w
b3J0IGNoZWNrLCBnZXRfaW52YWxpZF9jbGllbnRpZAo+PiAgCj4+ICBkZWYgdGVzdFVubG9ja2Vk
RmlsZSh0LCBlbnYpOgo+PiAgICAgICIiIkxPQ0tUIG9uIGEgcmVndWxhciB1bmxvY2tlZCBmaWxl
Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfbG9ja3UucHkgYi9uZnM0LjAv
c2VydmVydGVzdHMvc3RfbG9ja3UucHkKPj4gaW5kZXggNzRiNDY0YS4uMzUyNGE2MSAxMDA2NDQK
Pj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvY2t1LnB5Cj4+ICsrKyBiL25mczQuMC9z
ZXJ2ZXJ0ZXN0cy9zdF9sb2NrdS5weQo+PiBAQCAtMSw2ICsxLDYgQEAKPj4gIGZyb20geGRyZGVm
Lm5mczRfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20geGRyZGVmLm5mczRfdHlwZSBpbXBvcnQgc3Rh
dGVpZDQKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBtYWtlU3RhbGVJZAo+PiAr
ZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBtYWtlU3RhbGVJZAo+PiAgCj4+ICBkZWYg
dGVzdEZpbGUodCwgZW52KToKPj4gICAgICAiIiJMT0NLVSBhIHJlZ3VsYXIgZmlsZQo+PiBkaWZm
IC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cC5weSBiL25mczQuMC9zZXJ2ZXJ0
ZXN0cy9zdF9sb29rdXAucHkKPj4gaW5kZXggZWVkNzEwMC4uOWJmYWZmZSAxMDA2NDQKPj4gLS0t
IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cC5weQo+PiArKysgYi9uZnM0LjAvc2VydmVy
dGVzdHMvc3RfbG9va3VwLnB5Cj4+IEBAIC0xLDYgKzEsNiBAQAo+PiAgZnJvbSB4ZHJkZWYubmZz
NF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGdldF9p
bnZhbGlkX3V0ZjhzdHJpbmdzCj4+IC1pbXBvcnQgcnBjCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBp
bXBvcnQgY2hlY2ssIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdzCj4+ICtpbXBvcnQgcnBjLnJwYyBh
cyBycGMKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAK
Pj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9sb29rdXBwLnB5IGIvbmZzNC4w
L3NlcnZlcnRlc3RzL3N0X2xvb2t1cHAucHkKPj4gaW5kZXggMTNjMTU1My4uN2MzODYwMCAxMDA2
NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cHAucHkKPj4gKysrIGIvbmZz
NC4wL3NlcnZlcnRlc3RzL3N0X2xvb2t1cHAucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9t
IHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBj
aGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0cmluZ3MKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9y
dCBjaGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0cmluZ3MKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBv
cCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0
ZXN0cy9zdF9udmVyaWZ5LnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X252ZXJpZnkucHkKPj4g
aW5kZXggNDE4NTk3MC4uZTJhODEzMCAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3Rz
L3N0X252ZXJpZnkucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X252ZXJpZnkucHkK
Pj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+
IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfY2xpZW50aWQsIG1h
a2VTdGFsZUlkCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGdldF9pbnZhbGlk
X2NsaWVudGlkLCBtYWtlU3RhbGVJZAo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29w
cy5ORlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29w
ZW4ucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rfb3Blbi5weQo+PiBpbmRleCBiNGFmODFjLi45
ZjVkMWFhIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3Rfb3Blbi5weQo+PiAr
KysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rfb3Blbi5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4g
IGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1w
b3J0IGNoZWNrLCBjaGVja2RpY3QsIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdzCj4+ICtmcm9tIC5l
bnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGNoZWNrZGljdCwgZ2V0X2ludmFsaWRfdXRmOHN0cmlu
Z3MKPj4gIGZyb20gbmZzNGxpYiBpbXBvcnQgZ2V0X2JpdG51bWF0dHJfZGljdAo+PiAgCj4+ICAj
IEFueSB0ZXN0IHRoYXQgdXNlcyBjcmVhdGVfY29uZmlybSBzaG91bGQgZGVwZW5kIG9uIHRoaXMg
dGVzdAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29wZW5jb25maXJtLnB5
IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29wZW5jb25maXJtLnB5Cj4+IGluZGV4IDNiNWI5OGYu
LjYzMTg1NWEgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9vcGVuY29uZmly
bS5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rfb3BlbmNvbmZpcm0ucHkKPj4gQEAg
LTEsNiArMSw2IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+ICBmcm9t
IHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0IHN0YXRlaWQ0Cj4+IC1mcm9tIGVudmlyb25tZW50IGlt
cG9ydCBjaGVjaywgbWFrZVN0YWxlSWQKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVj
aywgbWFrZVN0YWxlSWQKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9w
cygpCj4+ICAKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9vcGVuZG93bmdy
YWRlLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29wZW5kb3duZ3JhZGUucHkKPj4gaW5kZXgg
MjEzYjJkZC4uMjE4MDIyMyAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29w
ZW5kb3duZ3JhZGUucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X29wZW5kb3duZ3Jh
ZGUucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9y
dCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgbWFrZVN0YWxlSWQKPj4gK2Zy
b20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgbWFrZVN0YWxlSWQKPj4gIAo+PiAgZGVmIHRl
c3RSZWd1bGFyT3Blbih0LCBlbnYpOgo+PiAgICAgICIiIk9QRU5ET1dOR1JBREUgb24gcmVndWxh
ciBmaWxlCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcHV0ZmgucHkgYi9u
ZnM0LjAvc2VydmVydGVzdHMvc3RfcHV0ZmgucHkKPj4gaW5kZXggYmE5Y2UyNy4uNjU2MGYyZSAx
MDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3B1dGZoLnB5Cj4+ICsrKyBiL25m
czQuMC9zZXJ2ZXJ0ZXN0cy9zdF9wdXRmaC5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20g
eGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNo
ZWNrCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gIGltcG9ydCBuZnNfb3Bz
Cj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9z
ZXJ2ZXJ0ZXN0cy9zdF9wdXRwdWJmaC5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9wdXRwdWJm
aC5weQo+PiBpbmRleCAwMTQ5YjlkLi4xNTE0ZmRlIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2Vy
dmVydGVzdHMvc3RfcHV0cHViZmgucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3B1
dHB1YmZoLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBp
bXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmly
b25tZW50IGltcG9ydCBjaGVjawo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5O
RlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3B1dHJv
b3RmaC5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9wdXRyb290ZmgucHkKPj4gaW5kZXggZGQ0
N2Y1OC4uYjEzYzY5NCAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3B1dHJv
b3RmaC5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfcHV0cm9vdGZoLnB5Cj4+IEBA
IC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJv
bSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBj
aGVjawo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gIAo+
PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlYWQucHkgYi9uZnM0LjAvc2Vy
dmVydGVzdHMvc3RfcmVhZC5weQo+PiBpbmRleCAxNWY4Nzk1Li4xZWI5OTZjIDEwMDY0NAo+PiAt
LS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZC5weQo+PiArKysgYi9uZnM0LjAvc2VydmVy
dGVzdHMvc3RfcmVhZC5weQo+PiBAQCAtMSw2ICsxLDYgQEAKPj4gIGZyb20geGRyZGVmLm5mczRf
Y29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBtYWtlQmFk
SUQsIG1ha2VCYWRJRGdhbmVzaGEsIG1ha2VTdGFsZUlkCj4+IC1pbXBvcnQgcnBjCj4+ICtmcm9t
IC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIG1ha2VCYWRJRCwgbWFrZUJhZElEZ2FuZXNoYSwg
bWFrZVN0YWxlSWQKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgCj4+ICBkZWYgX2NvbXBh
cmUodCwgcmVzLCBleHBlY3QsIGVvZj1UcnVlKToKPj4gICAgICBkZWYgc2hvcnRlbihzdHIpOgo+
PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlYWRkaXIucHkgYi9uZnM0LjAv
c2VydmVydGVzdHMvc3RfcmVhZGRpci5weQo+PiBpbmRleCA3OThiMmQwLi5iOWE4YTRkIDEwMDY0
NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZGRpci5weQo+PiArKysgYi9uZnM0
LjAvc2VydmVydGVzdHMvc3RfcmVhZGRpci5weQo+PiBAQCAtMSw2ICsxLDYgQEAKPj4gIGZyb20g
eGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20gbmZzNGxpYiBpbXBvcnQgZ2V0X2F0
dHJfbmFtZQo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmly
b25tZW50IGltcG9ydCBjaGVjawo+PiAgCj4+ICBkZWYgX2NvbXBhcmUodCwgZW50cmllcywgZXhw
ZWN0LCBhdHRybGlzdD1bXSk6Cj4+ICAgICAgbmFtZXMgPSBbZS5uYW1lIGZvciBlIGluIGVudHJp
ZXNdCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZGxpbmsucHkgYi9u
ZnM0LjAvc2VydmVydGVzdHMvc3RfcmVhZGxpbmsucHkKPj4gaW5kZXggOGI5MDVkMC4uZDhlM2Vh
MSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlYWRsaW5rLnB5Cj4+ICsr
KyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZWFkbGluay5weQo+PiBAQCAtMSw1ICsxLDUgQEAK
Pj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQg
aW1wb3J0IGNoZWNrCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gIGltcG9y
dCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAtLWdpdCBh
L25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZWJvb3QucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rf
cmVib290LnB5Cj4+IGluZGV4IDE2Y2IwMDguLjJhMDNlNjAgMTAwNjQ0Cj4+IC0tLSBhL25mczQu
MC9zZXJ2ZXJ0ZXN0cy9zdF9yZWJvb3QucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0
X3JlYm9vdC5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3Qg
aW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICtmcm9tIC5lbnZp
cm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gIGltcG9ydCBvcwo+PiAgaW1wb3J0IG5mc19vcHMKPj4g
IG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0
cy9zdF9yZWxlYXNlbG9ja293bmVyLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlbGVhc2Vs
b2Nrb3duZXIucHkKPj4gaW5kZXggMTdkZmUxYS4uODAyMWRkZiAxMDA2NDQKPj4gLS0tIGEvbmZz
NC4wL3NlcnZlcnRlc3RzL3N0X3JlbGVhc2Vsb2Nrb3duZXIucHkKPj4gKysrIGIvbmZzNC4wL3Nl
cnZlcnRlc3RzL3N0X3JlbGVhc2Vsb2Nrb3duZXIucHkKPj4gQEAgLTEsNiArMSw2IEBACj4+ICBm
cm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUg
aW1wb3J0IGxvY2tfb3duZXI0Cj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAr
ZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAgb3Ag
PSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVz
dHMvc3RfcmVtb3ZlLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlbW92ZS5weQo+PiBpbmRl
eCA1ZjUzMWY0Li5hOWMzOTdmIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3Rf
cmVtb3ZlLnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZW1vdmUucHkKPj4gQEAg
LTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9t
IGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0cmluZ3MKPj4gK2Zy
b20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFsaWRfdXRmOHN0cmluZ3MKPj4g
IGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAt
LWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZW5hbWUucHkgYi9uZnM0LjAvc2VydmVydGVz
dHMvc3RfcmVuYW1lLnB5Cj4+IGluZGV4IDhmNDE3NjMuLjNhN2ZhMWUgMTAwNjQ0Cj4+IC0tLSBh
L25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZW5hbWUucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRl
c3RzL3N0X3JlbmFtZS5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20geGRyZGVmLm5mczRf
Y29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBnZXRfaW52
YWxpZF91dGY4c3RyaW5ncwo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBnZXRf
aW52YWxpZF91dGY4c3RyaW5ncwo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5O
RlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlbmV3
LnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3JlbmV3LnB5Cj4+IGluZGV4IDNhOWY3NzQuLjY3
OTM2M2MgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9yZW5ldy5weQo+PiAr
KysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVuZXcucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+
ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGlt
cG9ydCBjaGVjawo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICBpbXBvcnQg
bmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgCj4+IGRpZmYgLS1naXQgYS9u
ZnM0LjAvc2VydmVydGVzdHMvc3RfcmVwbGF5LnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3Jl
cGxheS5weQo+PiBpbmRleCA4MWI4MzMyLi4zZWJhNTYzIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAv
c2VydmVydGVzdHMvc3RfcmVwbGF5LnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9y
ZXBsYXkucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGlt
cG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiArZnJvbSAuZW52aXJv
bm1lbnQgaW1wb3J0IGNoZWNrCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0ICoKPj4g
IGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+IGRpZmYgLS1naXQg
YS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVzdG9yZWZoLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3Rz
L3N0X3Jlc3RvcmVmaC5weQo+PiBpbmRleCA4MzkwNzlmLi5lNWRiMDlhIDEwMDY0NAo+PiAtLS0g
YS9uZnM0LjAvc2VydmVydGVzdHMvc3RfcmVzdG9yZWZoLnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2
ZXJ0ZXN0cy9zdF9yZXN0b3JlZmgucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRl
Zi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+
PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAg
b3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVy
dGVzdHMvc3Rfc2F2ZWZoLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3NhdmVmaC5weQo+PiBp
bmRleCBlZWY4MTBjLi5jNTc0NzE4IDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMv
c3Rfc2F2ZWZoLnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zYXZlZmgucHkKPj4g
QEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1m
cm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0
IGNoZWNrCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAg
Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3Rfc2VjaW5mby5weSBiL25mczQu
MC9zZXJ2ZXJ0ZXN0cy9zdF9zZWNpbmZvLnB5Cj4+IGluZGV4IGViODc0YjEuLjZjODI4YmYgMTAw
NjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZWNpbmZvLnB5Cj4+ICsrKyBiL25m
czQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZWNpbmZvLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJv
bSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQg
Y2hlY2ssIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdzCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBv
cnQgY2hlY2ssIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdzCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAg
b3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVy
dGVzdHMvc3Rfc2V0YXR0ci5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZXRhdHRyLnB5Cj4+
IGluZGV4IGFhNzEyM2IuLmVkZjhjYWEgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0ZXN0
cy9zdF9zZXRhdHRyLnB5Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZXRhdHRyLnB5
Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+
PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdz
Cj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGdldF9pbnZhbGlkX3V0ZjhzdHJp
bmdzCj4+ICBmcm9tIG5mczRsaWIgaW1wb3J0IGJpdG1hcDJsaXN0LCBkaWN0MmZhdHRyCj4+ICBm
cm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0IG5mc3RpbWU0LCBzZXR0aW1lNAo+PiAgaW1wb3J0
IG5mc19vcHMKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZXRjbGllbnRp
ZC5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZXRjbGllbnRpZC5weQo+PiBpbmRleCA3ZjQy
ZDJkLi42YWQ5MWY4IDEwMDY0NAo+PiAtLS0gYS9uZnM0LjAvc2VydmVydGVzdHMvc3Rfc2V0Y2xp
ZW50aWQucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3NldGNsaWVudGlkLnB5Cj4+
IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAt
ZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9y
dCBjaGVjawo+PiAgaW1wb3J0IG9zCj4+ICBpbXBvcnQgc3RydWN0LCB0aW1lCj4+ICBpbXBvcnQg
bmZzX29wcwo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3NldGNsaWVudGlk
Y29uZmlybS5weSBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF9zZXRjbGllbnRpZGNvbmZpcm0ucHkK
Pj4gaW5kZXggNTFmNzk4MS4uNGVjZjYzNSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRl
c3RzL3N0X3NldGNsaWVudGlkY29uZmlybS5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMv
c3Rfc2V0Y2xpZW50aWRjb25maXJtLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSB4ZHJk
ZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2sK
Pj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiAgaW1wb3J0IG9zCj4+ICBpbXBv
cnQgbmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiBkaWZmIC0tZ2l0IGEvbmZz
NC4wL3NlcnZlcnRlc3RzL3N0X3Nwb29mLnB5IGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3Nwb29m
LnB5Cj4+IGluZGV4IDc3Nzk4NWUuLjY4Nzc4ZDQgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2
ZXJ0ZXN0cy9zdF9zcG9vZi5weQo+PiArKysgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rfc3Bvb2Yu
cHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAq
Cj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjawo+PiArZnJvbSAuZW52aXJvbm1lbnQg
aW1wb3J0IGNoZWNrCj4+ICAKPj4gIGRlZiB0ZXN0U3Bvb2ZVc2VyKHQsIGVudik6Cj4+ICAgICAg
IiIiU1BPT0YgdGVzdCwgdHJ5IHRvIHNwb29mIHVzZXIKPj4gZGlmZiAtLWdpdCBhL25mczQuMC9z
ZXJ2ZXJ0ZXN0cy9zdF92ZXJpZnkucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3RfdmVyaWZ5LnB5
Cj4+IGluZGV4IDIxOWQwYTAuLjE2ZDdjMGMgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMC9zZXJ2ZXJ0
ZXN0cy9zdF92ZXJpZnkucHkKPj4gKysrIGIvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3ZlcmlmeS5w
eQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoK
Pj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBnZXRfaW52YWxpZF9jbGllbnRpZCwg
bWFrZVN0YWxlSWQKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2ludmFs
aWRfY2xpZW50aWQsIG1ha2VTdGFsZUlkCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAgb3AgPSBuZnNf
b3BzLk5GUzRvcHMoKQo+PiAgCj4+IGRpZmYgLS1naXQgYS9uZnM0LjAvc2VydmVydGVzdHMvc3Rf
d3JpdGUucHkgYi9uZnM0LjAvc2VydmVydGVzdHMvc3Rfd3JpdGUucHkKPj4gaW5kZXggNWI0ODE1
My4uNzBmZjQ5ZSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4wL3NlcnZlcnRlc3RzL3N0X3dyaXRlLnB5
Cj4+ICsrKyBiL25mczQuMC9zZXJ2ZXJ0ZXN0cy9zdF93cml0ZS5weQo+PiBAQCAtMSw4ICsxLDgg
QEAKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20geGRyZGVmLm5m
czRfdHlwZSBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGNvbXBh
cmVUaW1lcywgbWFrZUJhZElELCBtYWtlQmFkSURnYW5lc2hhLCBtYWtlU3RhbGVJZAo+PiArZnJv
bSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBjb21wYXJlVGltZXMsIG1ha2VCYWRJRCwgbWFr
ZUJhZElEZ2FuZXNoYSwgbWFrZVN0YWxlSWQKPj4gIGltcG9ydCBzdHJ1Y3QKPj4gLWltcG9ydCBy
cGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0g
bmZzX29wcy5ORlM0b3BzKCkKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4wL3Rlc3RzZXJ2ZXIu
cHkgYi9uZnM0LjAvdGVzdHNlcnZlci5weQo+PiBpbmRleCA1ODFkYzNlLi5lYmNlNThkIDEwMDc1
NQo+PiAtLS0gYS9uZnM0LjAvdGVzdHNlcnZlci5weQo+PiArKysgYi9uZnM0LjAvdGVzdHNlcnZl
ci5weQo+PiBAQCAtNDAsNyArNDAsNyBAQCBpbXBvcnQgdGVzdG1vZAo+PiAgZnJvbSBvcHRwYXJz
ZSBpbXBvcnQgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91cCwgSW5kZW50ZWRIZWxwRm9ybWF0dGVy
Cj4+ICBpbXBvcnQgc2VydmVydGVzdHMuZW52aXJvbm1lbnQgYXMgZW52aXJvbm1lbnQKPj4gIGlt
cG9ydCBzb2NrZXQKPj4gLWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAg
aW1wb3J0IHBpY2tsZQo+PiAgCj4+ICBWRVJTSU9OPSIwLjIiICMgSG93L3doZW4gdXBkYXRlIHRo
aXM/Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvY2xpZW50NDF0ZXN0cy9jdF9yZWJvb3QucHkgYi9u
ZnM0LjEvY2xpZW50NDF0ZXN0cy9jdF9yZWJvb3QucHkKPj4gaW5kZXggM2JkMjQxYi4uZWZiZDc0
ZSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4xL2NsaWVudDQxdGVzdHMvY3RfcmVib290LnB5Cj4+ICsr
KyBiL25mczQuMS9jbGllbnQ0MXRlc3RzL2N0X3JlYm9vdC5weQo+PiBAQCAtMSw1ICsxLDUgQEAK
Pj4gIGltcG9ydCBvcwo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgZmFpbAo+PiArZnJvbSAu
ZW52aXJvbm1lbnQgaW1wb3J0IGZhaWwKPj4gIAo+PiAgZGVmIHRlc3RSZWJvb3QodCwgZW52KToK
Pj4gICAgICAiIiJUZXN0IHJlYm9vdAo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL2NsaWVudDQxdGVz
dHMvZW52aXJvbm1lbnQucHkgYi9uZnM0LjEvY2xpZW50NDF0ZXN0cy9lbnZpcm9ubWVudC5weQo+
PiBpbmRleCA5MzMyNjRjLi4wOWQwN2MyIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvY2xpZW50NDF0
ZXN0cy9lbnZpcm9ubWVudC5weQo+PiArKysgYi9uZnM0LjEvY2xpZW50NDF0ZXN0cy9lbnZpcm9u
bWVudC5weQo+PiBAQCAtMTIsNyArMTIsNyBAQCBpbXBvcnQgdGltZQo+PiAgaW1wb3J0IHRlc3Rt
b2QKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20geGRyZGVmLm5m
czRfdHlwZSBpbXBvcnQgKgo+PiAtaW1wb3J0IHJwYwo+PiAraW1wb3J0IHJwYy5ycGMgYXMgcnBj
Cj4+ICBpbXBvcnQgbmZzNGNsaWVudAo+PiAgaW1wb3J0IG9zCj4+ICBpbXBvcnQgbmZzNGxpYgo+
PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL2RhdGFzZXJ2ZXIucHkgYi9uZnM0LjEvZGF0YXNlcnZlci5w
eQo+PiBpbmRleCBhZjBlMzVhLi5mNzZjYTVhIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvZGF0YXNl
cnZlci5weQo+PiArKysgYi9uZnM0LjEvZGF0YXNlcnZlci5weQo+PiBAQCAtMSw0ICsxLDQgQEAK
Pj4gLWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgaW1wb3J0IG5mczRs
aWIKPj4gIGltcG9ydCB4ZHJkZWYubmZzNF90eXBlIGFzIHR5cGU0Cj4+ICBmcm9tIHhkcmRlZi5u
ZnM0X3BhY2sgaW1wb3J0IE5GUzRQYWNrZXIKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9uZnMzY2xp
ZW50LnB5IGIvbmZzNC4xL25mczNjbGllbnQucHkKPj4gaW5kZXggMTc2NzY1Yy4uZjk4ZjY5MSAx
MDA2NDQKPj4gLS0tIGEvbmZzNC4xL25mczNjbGllbnQucHkKPj4gKysrIGIvbmZzNC4xL25mczNj
bGllbnQucHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBpbXBvcnQgdXNlX2xvY2FsICMgSEFDSyBz
byBkb24ndCBoYXZlIHRvIHJlYnVpbGQgY29uc3RhbnRseQo+PiAtaW1wb3J0IHJwYwo+PiAraW1w
b3J0IHJwYy5ycGMgYXMgcnBjCj4+ICBpbXBvcnQgbmZzNGxpYgo+PiAgI2Zyb20gbmZzNGxpYiBp
bXBvcnQgTkZTNEVycm9yLCBORlM0UmVwbGF5LCBpbmNfdTMyCj4+ICBmcm9tIHhkcmRlZi5zY3Ry
bF9wYWNrIGltcG9ydCBTQ1RSTFBhY2tlciwgU0NUUkxVbnBhY2tlcgo+PiBkaWZmIC0tZ2l0IGEv
bmZzNC4xL25mczRjbGllbnQucHkgYi9uZnM0LjEvbmZzNGNsaWVudC5weQo+PiBpbmRleCAwNTg4
ZDdiLi5lOGM2NDliIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvbmZzNGNsaWVudC5weQo+PiArKysg
Yi9uZnM0LjEvbmZzNGNsaWVudC5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGltcG9ydCB1c2Vf
bG9jYWwgIyBIQUNLIHNvIGRvbid0IGhhdmUgdG8gcmVidWlsZCBjb25zdGFudGx5Cj4+IC1pbXBv
cnQgcnBjCj4+ICtpbXBvcnQgcnBjLnJwYyBhcyBycGMKPj4gIGltcG9ydCBuZnM0bGliCj4+ICBm
cm9tIG5mczRsaWIgaW1wb3J0IE5GUzRFcnJvciwgTkZTNFJlcGxheSwgaW5jX3UzMgo+PiAgZnJv
bSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvbmZzNGxp
Yi5weSBiL25mczQuMS9uZnM0bGliLnB5Cj4+IGluZGV4IDIwZWFlMGYuLmQ0NjcwNmEgMTAwNjQ0
Cj4+IC0tLSBhL25mczQuMS9uZnM0bGliLnB5Cj4+ICsrKyBiL25mczQuMS9uZnM0bGliLnB5Cj4+
IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAo+PiAtaW1wb3J0IHJwYwo+PiAraW1wb3J0IHJwYy5ycGMgYXMgcnBjCj4+ICBpbXBvcnQgeGRy
ZGVmLm5mczRfY29uc3QKPj4gIGZyb20geGRyZGVmLm5mczRfcGFjayBpbXBvcnQgTkZTNFBhY2tl
ciwgTkZTNFVucGFja2VyCj4+ICBpbXBvcnQgeGRyZGVmLm5mczRfdHlwZQo+PiBkaWZmIC0tZ2l0
IGEvbmZzNC4xL25mczRwcm94eS5weSBiL25mczQuMS9uZnM0cHJveHkucHkKPj4gaW5kZXggZWZi
Njc0NC4uZGM4ZmRkNCAxMDA3NTUKPj4gLS0tIGEvbmZzNC4xL25mczRwcm94eS5weQo+PiArKysg
Yi9uZnM0LjEvbmZzNHByb3h5LnB5Cj4+IEBAIC0zLDcgKzMsNyBAQCBmcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Cj4+ICBpbXBvcnQgdXNlX2xvY2FsICMgSEFDSyBzbyBkb24n
dCBoYXZlIHRvIHJlYnVpbGQgY29uc3RhbnRseQo+PiAgaW1wb3J0IG5mczRsaWIKPj4gIGZyb20g
bmZzNGxpYiBpbXBvcnQgaW5jX3UzMiwgTkZTNEVycm9yLCBORlM0UmVwbGF5Cj4+IC1pbXBvcnQg
cnBjCj4+ICtpbXBvcnQgcnBjLnJwYyBhcyBycGMKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3Qg
aW1wb3J0ICoKPj4gIGZyb20geGRyZGVmLm5mczRfdHlwZSBpbXBvcnQgKgo+PiAgZnJvbSB4ZHJk
ZWYuc2N0cmxfcGFjayBpbXBvcnQgU0NUUkxQYWNrZXIsIFNDVFJMVW5wYWNrZXIKPj4gZGlmZiAt
LWdpdCBhL25mczQuMS9uZnM0c2VydmVyLnB5IGIvbmZzNC4xL25mczRzZXJ2ZXIucHkKPj4gaW5k
ZXggY2Q3ODA4Mi4uNzY3MzE5ZCAxMDA3NTUKPj4gLS0tIGEvbmZzNC4xL25mczRzZXJ2ZXIucHkK
Pj4gKysrIGIvbmZzNC4xL25mczRzZXJ2ZXIucHkKPj4gQEAgLTMsNyArMyw3IEBAIGZyb20gX19m
dXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKPj4gIGltcG9ydCB1c2VfbG9jYWwgIyBIQUNL
IHNvIGRvbid0IGhhdmUgdG8gcmVidWlsZCBjb25zdGFudGx5Cj4+ICBpbXBvcnQgbmZzNGxpYgo+
PiAgZnJvbSBuZnM0bGliIGltcG9ydCBpbmNfdTMyLCBORlM0RXJyb3IsIE5GUzRSZXBsYXkKPj4g
LWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgZnJvbSB4ZHJkZWYubmZz
NF9jb25zdCBpbXBvcnQgKgo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+ICBm
cm9tIHhkcmRlZi5zY3RybF9wYWNrIGltcG9ydCBTQ1RSTFBhY2tlciwgU0NUUkxVbnBhY2tlcgo+
PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL25mczRzdGF0ZS5weSBiL25mczQuMS9uZnM0c3RhdGUucHkK
Pj4gaW5kZXggOTVmODRkZi4uZjJjYWQwNCAxMDA2NDQKPj4gLS0tIGEvbmZzNC4xL25mczRzdGF0
ZS5weQo+PiArKysgYi9uZnM0LjEvbmZzNHN0YXRlLnB5Cj4+IEBAIC05LDcgKzksNyBAQCBmcm9t
IG5mczRsaWIgaW1wb3J0IE5GUzRFcnJvcgo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9y
dCAqCj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+ICBpbXBvcnQgbmZzX29w
cwo+PiAtaW1wb3J0IHJwYwo+PiAraW1wb3J0IHJwYy5ycGMgYXMgcnBjCj4+ICBpbXBvcnQgbG9n
Z2luZwo+PiAgCj4+ICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigibmZzLnNlcnZlci5zdGF0ZSIp
Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9lbnZpcm9ubWVudC5weSBiL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL2Vudmlyb25tZW50LnB5Cj4+IGluZGV4IDM2MDA4OWUuLjllMTIw
MWYgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL2Vudmlyb25tZW50LnB5Cj4+
ICsrKyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL2Vudmlyb25tZW50LnB5Cj4+IEBAIC0xMiw3ICsx
Miw3IEBAIGltcG9ydCB0aW1lCj4+ICBpbXBvcnQgdGVzdG1vZAo+PiAgZnJvbSB4ZHJkZWYubmZz
NF9jb25zdCBpbXBvcnQgKgo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+IC1p
bXBvcnQgcnBjCj4+ICtpbXBvcnQgcnBjLnJwYyBhcyBycGMKPj4gIGltcG9ydCBuZnM0Y2xpZW50
Cj4+ICBpbXBvcnQgc3lzCj4+ICBpbXBvcnQgb3MKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X2Jsb2NrLnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfYmxvY2sucHkK
Pj4gaW5kZXggMjA0MWRlMy4uM2NmYzFjNiAxMDA2NDQKPj4gLS0tIGEvbmZzNC4xL3NlcnZlcjQx
dGVzdHMvc3RfYmxvY2sucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfYmxvY2su
cHkKPj4gQEAgLTIsNyArMiw3IEBAIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4g
IGZyb20geGRyZGVmLm5mczRfdHlwZSBpbXBvcnQgKgo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9w
ID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBm
YWlsLCBjcmVhdGVfZmlsZQo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWls
LCBjcmVhdGVfZmlsZQo+PiAgZnJvbSBibG9jayBpbXBvcnQgUGFja2VyIGFzIEJsb2NrUGFja2Vy
LCBVbnBhY2tlciBhcyBCbG9ja1VucGFja2VyLCBcCj4+ICAgICAgUE5GU19CTE9DS19SRUFEV1JJ
VEVfREFUQSwgcG5mc19ibG9ja19sYXlvdXR1cGRhdGU0LCBcCj4+ICAgICAgcG5mc19ibG9ja19l
eHRlbnQ0Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9jb21wb3VuZC5w
eSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2NvbXBvdW5kLnB5Cj4+IGluZGV4IDM5MTVkZDgu
LmRlZDU0NjUgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2NvbXBvdW5k
LnB5Cj4+ICsrKyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2NvbXBvdW5kLnB5Cj4+IEBAIC0x
LDcgKzEsNyBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgaW1wb3J0
IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gLWZyb20gZW52aXJvbm1lbnQg
aW1wb3J0IGNoZWNrLCBmYWlsLCBnZXRfaW52YWxpZF91dGY4c3RyaW5ncwo+PiArZnJvbSAuZW52
aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCBnZXRfaW52YWxpZF91dGY4c3RyaW5ncwo+PiAg
ZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+ICBmcm9tIHJwYyBpbXBvcnQgUlBDQWNj
ZXB0RXJyb3IsIEdBUkJBR0VfQVJHUywgUlBDVGltZW91dAo+PiAgZnJvbSBuZnM0bGliIGltcG9y
dCBORlM0RXJyb3IsIGhhc2hfb2lkcywgZW5jcnlwdF9vaWRzLCBGYW5jeU5GUzRQYWNrZXIKPj4g
ZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2NyZWF0ZV9zZXNzaW9uLnB5IGIv
bmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfY3JlYXRlX3Nlc3Npb24ucHkKPj4gaW5kZXggNTAxOGVj
Ni4uYTYzODk5MCAxMDA2NDQKPj4gLS0tIGEvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfY3JlYXRl
X3Nlc3Npb24ucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfY3JlYXRlX3Nlc3Np
b24ucHkKPj4gQEAgLTEsNyArMSw3IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9y
dCAqCj4+ICBpbXBvcnQgbmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAtZnJv
bSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZhaWwsIGNyZWF0ZV9maWxlLCBvcGVuX2ZpbGUK
Pj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3JlYXRlX2ZpbGUsIG9w
ZW5fZmlsZQo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+ICBpbXBvcnQgcmFu
ZG9tCj4+ICBpbXBvcnQgbmZzNGxpYgo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL3NlcnZlcjQxdGVz
dHMvc3RfY3VycmVudF9zdGF0ZWlkLnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfY3VycmVu
dF9zdGF0ZWlkLnB5Cj4+IGluZGV4IDgxOWRmYjEuLjU4ZjZlOWIgMTAwNjQ0Cj4+IC0tLSBhL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2N1cnJlbnRfc3RhdGVpZC5weQo+PiArKysgYi9uZnM0LjEv
c2VydmVyNDF0ZXN0cy9zdF9jdXJyZW50X3N0YXRlaWQucHkKPj4gQEAgLTEsOCArMSw4IEBACj4+
ICBmcm9tIHN0X2NyZWF0ZV9zZXNzaW9uIGltcG9ydCBjcmVhdGVfc2Vzc2lvbgo+PiAgZnJvbSB4
ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9y
dCBjaGVjaywgZmFpbCwgY3JlYXRlX2ZpbGUsIG9wZW5fZmlsZSwgY2xvc2VfZmlsZQo+PiAtZnJv
bSBlbnZpcm9ubWVudCBpbXBvcnQgb3Blbl9jcmVhdGVfZmlsZV9vcCwgdXNlX29iago+PiArZnJv
bSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCBjcmVhdGVfZmlsZSwgb3Blbl9maWxl
LCBjbG9zZV9maWxlCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgb3Blbl9jcmVhdGVfZmls
ZV9vcCwgdXNlX29iago+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCBvcGVuX293bmVy
NCwgb3BlbmZsYWc0LCBjcmVhdGVob3c0LCBvcGVuX2NsYWltNAo+PiAgZnJvbSB4ZHJkZWYubmZz
NF90eXBlIGltcG9ydCBjcmVhdHZlcmZhdHRyLCBmYXR0cjQsIHN0YXRlaWQ0LCBsb2NrZXI0LCBs
b2NrX293bmVyNAo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCBvcGVuX3RvX2xvY2tf
b3duZXI0Cj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9kZWJ1Zy5weSBi
L25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2RlYnVnLnB5Cj4+IGluZGV4IDM0NWZjNzcuLjNlMzA4
N2QgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2RlYnVnLnB5Cj4+ICsr
KyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2RlYnVnLnB5Cj4+IEBAIC0xLDYgKzEsNiBAQAo+
PiAgZnJvbSBzdF9jcmVhdGVfc2Vzc2lvbiBpbXBvcnQgY3JlYXRlX3Nlc3Npb24KPj4gIGZyb20g
eGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNo
ZWNrLCBmYWlsLCBjcmVhdGVfZmlsZSwgY2xvc2VfZmlsZQo+PiArZnJvbSAuZW52aXJvbm1lbnQg
aW1wb3J0IGNoZWNrLCBmYWlsLCBjcmVhdGVfZmlsZSwgY2xvc2VfZmlsZQo+PiAgZnJvbSB4ZHJk
ZWYubmZzNF90eXBlIGltcG9ydCBvcGVuX293bmVyNCwgb3BlbmZsYWc0LCBjcmVhdGVob3c0LCBv
cGVuX2NsYWltNAo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkK
Pj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2RlbGVnYXRpb24ucHkgYi9u
ZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9kZWxlZ2F0aW9uLnB5Cj4+IGluZGV4IGNiYWJiODUuLjRm
MDViZjEgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2RlbGVnYXRpb24u
cHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfZGVsZWdhdGlvbi5weQo+PiBAQCAt
Miw3ICsyLDcgQEAgZnJvbSBzdF9jcmVhdGVfc2Vzc2lvbiBpbXBvcnQgY3JlYXRlX3Nlc3Npb24K
Pj4gIGZyb20gc3Rfb3BlbiBpbXBvcnQgb3Blbl9jbGFpbTQKPj4gIGZyb20geGRyZGVmLm5mczRf
Y29uc3QgaW1wb3J0ICoKPj4gIAo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZh
aWwsIGNyZWF0ZV9maWxlLCBvcGVuX2ZpbGUsIGNsb3NlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25t
ZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3JlYXRlX2ZpbGUsIG9wZW5fZmlsZSwgY2xvc2VfZmls
ZQo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+ICBpbXBvcnQgbmZzX29wcwo+
PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL3NlcnZlcjQx
dGVzdHMvc3RfZGVzdHJveV9jbGllbnRpZC5weSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2Rl
c3Ryb3lfY2xpZW50aWQucHkKPj4gaW5kZXggMjVjYzEyYS4uNTAwODFiMSAxMDA2NDQKPj4gLS0t
IGEvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfZGVzdHJveV9jbGllbnRpZC5weQo+PiArKysgYi9u
ZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9kZXN0cm95X2NsaWVudGlkLnB5Cj4+IEBAIC0xLDYgKzEs
NiBAQAo+PiAgZnJvbSBzdF9jcmVhdGVfc2Vzc2lvbiBpbXBvcnQgY3JlYXRlX3Nlc3Npb24KPj4g
IGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1w
b3J0IGNoZWNrLCBmYWlsCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZhaWwK
Pj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICBpbXBvcnQg
bmZzNGxpYgo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfZGVzdHJveV9z
ZXNzaW9uLnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfZGVzdHJveV9zZXNzaW9uLnB5Cj4+
IGluZGV4IGM3NzY2MTcuLmM4MGM4NDUgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRl
c3RzL3N0X2Rlc3Ryb3lfc2Vzc2lvbi5weQo+PiArKysgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9z
dF9kZXN0cm95X3Nlc3Npb24ucHkKPj4gQEAgLTEsMTEgKzEsMTEgQEAKPj4gIGZyb20gc3RfY3Jl
YXRlX3Nlc3Npb24gaW1wb3J0IGNyZWF0ZV9zZXNzaW9uCj4+ICBmcm9tIHhkcmRlZi5uZnM0X2Nv
bnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3Jl
YXRlX2ZpbGUsIG9wZW5fZmlsZQo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBm
YWlsLCBjcmVhdGVfZmlsZSwgb3Blbl9maWxlCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1w
b3J0IG9wZW5fb3duZXI0LCBvcGVuZmxhZzQsIGNyZWF0ZWhvdzQsIG9wZW5fY2xhaW00Cj4+ICBp
bXBvcnQgbmZzX29wcwo+PiAgb3AgPSBuZnNfb3BzLk5GUzRvcHMoKQo+PiAgaW1wb3J0IHRocmVh
ZGluZwo+PiAtaW1wb3J0IHJwYwo+PiAraW1wb3J0IHJwYy5ycGMgYXMgcnBjCj4+ICAKPj4gIGRl
ZiB0ZXN0RGVzdHJveSh0LCBlbnYpOgo+PiAgICAgICIiIgo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4x
L3NlcnZlcjQxdGVzdHMvc3RfZXhjaGFuZ2VfaWQucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9z
dF9leGNoYW5nZV9pZC5weQo+PiBpbmRleCA5YmVjZWM2Li41YTI5NjM0IDEwMDY0NAo+PiAtLS0g
YS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9leGNoYW5nZV9pZC5weQo+PiArKysgYi9uZnM0LjEv
c2VydmVyNDF0ZXN0cy9zdF9leGNoYW5nZV9pZC5weQo+PiBAQCAtMiw3ICsyLDcgQEAgZnJvbSB4
ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZz
X29wcy5ORlM0b3BzKCkKPj4gIGltcG9ydCB0aW1lCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9y
dCBjaGVjaywgZmFpbAo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsCj4+
ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0ICoKPj4gIGZyb20gcnBjIGltcG9ydCBSUENB
Y2NlcHRFcnJvciwgR0FSQkFHRV9BUkdTLCBSUENUaW1lb3V0Cj4+ICBmcm9tIG5mczRsaWIgaW1w
b3J0IE5GUzRFcnJvciwgaGFzaF9vaWRzLCBlbmNyeXB0X29pZHMKPj4gZGlmZiAtLWdpdCBhL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2ZsZXgucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9m
bGV4LnB5Cj4+IGluZGV4IDM1YmU0ODkuLjMzNWIyYzggMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9z
ZXJ2ZXI0MXRlc3RzL3N0X2ZsZXgucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3Rf
ZmxleC5weQo+PiBAQCAtMyw3ICszLDcgQEAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAq
Cj4+ICBmcm9tIHhkcmRlZi5uZnM0X3BhY2sgaW1wb3J0ICoKPj4gIGltcG9ydCBuZnNfb3BzCj4+
ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVj
aywgZmFpbCwgY3JlYXRlX2ZpbGUsIGNsb3NlX2ZpbGUsIG9wZW5fY3JlYXRlX2ZpbGVfb3AKPj4g
K2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3JlYXRlX2ZpbGUsIGNsb3Nl
X2ZpbGUsIG9wZW5fY3JlYXRlX2ZpbGVfb3AKPj4gIGZyb20geGRyZGVmLm5mczRfcGFjayBpbXBv
cnQgTkZTNFBhY2tlciBhcyBGbGV4UGFja2VyLCBcCj4+ICAJTkZTNFVucGFja2VyIGFzIEZsZXhV
bnBhY2tlcgo+PiAgZnJvbSBuZnM0bGliIGltcG9ydCBGYW5jeU5GUzRQYWNrZXIsIGdldF9uZnN0
aW1lCj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9nZXRkZXZpY2VsaXN0
LnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfZ2V0ZGV2aWNlbGlzdC5weQo+PiBpbmRleCBl
ZGY1ZmU0Li5hZmY1MTBlIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9n
ZXRkZXZpY2VsaXN0LnB5Cj4+ICsrKyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2dldGRldmlj
ZWxpc3QucHkKPj4gQEAgLTEsNiArMSw2IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGlt
cG9ydCAqCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJv
bm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCB1c2Vfb2JqLCBvcGVuX2ZpbGUsIGNyZWF0ZV9maWxl
LCBnZXRfYmxvY2tzaXplCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZhaWws
IHVzZV9vYmosIG9wZW5fZmlsZSwgY3JlYXRlX2ZpbGUsIGdldF9ibG9ja3NpemUKPj4gIGltcG9y
dCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICBmcm9tIGJsb2NrIGltcG9y
dCBQYWNrZXIgYXMgQmxvY2tQYWNrZXIsIFVucGFja2VyIGFzIEJsb2NrVW5wYWNrZXIsIFwKPj4g
ZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X2xvb2t1cC5weSBiL25mczQuMS9z
ZXJ2ZXI0MXRlc3RzL3N0X2xvb2t1cC5weQo+PiBpbmRleCAzODk5NDI1Li5jNDZlN2QyIDEwMDY0
NAo+PiAtLS0gYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9sb29rdXAucHkKPj4gKysrIGIvbmZz
NC4xL3NlcnZlcjQxdGVzdHMvc3RfbG9va3VwLnB5Cj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAgZnJv
bSB4ZHJkZWYubmZzNF9jb25zdCBpbXBvcnQgKgo+PiAtZnJvbSBlbnZpcm9ubWVudCBpbXBvcnQg
Y2hlY2ssIGZhaWwKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbAo+PiAg
aW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkKPj4gIAo+PiBAQCAtNjQs
NyArNjQsNyBAQCBkZWYgdGVzdExvbmdOYW1lKHQsIGVudik6Cj4+ICAKPj4gICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4+ICBp
ZiAwOgo+PiAtICAgIGZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBnZXRfaW52YWxpZF91
dGY4c3RyaW5ncwo+PiArICAgIGZyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0X2lu
dmFsaWRfdXRmOHN0cmluZ3MKPj4gIAo+PiAgICAgIGRlZiB0ZXN0RGlyKHQsIGVudik6Cj4+ICAg
ICAgICAgICIiIkxPT0tVUCB0ZXN0dHJlZSBkaXIKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X2xvb2t1cHAucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9sb29rdXBw
LnB5Cj4+IGluZGV4IDRjODYzYTQuLmM5MWUzOWUgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X2xvb2t1cHAucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3Rf
bG9va3VwcC5weQo+PiBAQCAtMSw1ICsxLDUgQEAKPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3Qg
aW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCB1c2Vfb2Jq
Cj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZhaWwsIHVzZV9vYmoKPj4gIGlt
cG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAtLWdp
dCBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X29wZW4ucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0
cy9zdF9vcGVuLnB5Cj4+IGluZGV4IDQ3MzczMmQuLmNlY2E2NTYgMTAwNjQ0Cj4+IC0tLSBhL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X29wZW4ucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVz
dHMvc3Rfb3Blbi5weQo+PiBAQCAtMSw4ICsxLDggQEAKPj4gIGZyb20gc3RfY3JlYXRlX3Nlc3Np
b24gaW1wb3J0IGNyZWF0ZV9zZXNzaW9uCj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9y
dCAqCj4+ICAKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCBjcmVhdGVf
ZmlsZSwgb3Blbl9maWxlLCBjbG9zZV9maWxlCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBv
cGVuX2NyZWF0ZV9maWxlX29wCj4+ICtmcm9tIC5lbnZpcm9ubWVudCBpbXBvcnQgY2hlY2ssIGZh
aWwsIGNyZWF0ZV9maWxlLCBvcGVuX2ZpbGUsIGNsb3NlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25t
ZW50IGltcG9ydCBvcGVuX2NyZWF0ZV9maWxlX29wCj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUg
aW1wb3J0IG9wZW5fb3duZXI0LCBvcGVuZmxhZzQsIGNyZWF0ZWhvdzQsIG9wZW5fY2xhaW00Cj4+
ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0IGNyZWF0dmVyZmF0dHIsIGZhdHRyNCwgc3Rh
dGVpZDQsIGxvY2tlcjQsIGxvY2tfb3duZXI0Cj4+ICBmcm9tIHhkcmRlZi5uZnM0X3R5cGUgaW1w
b3J0IG9wZW5fdG9fbG9ja19vd25lcjQKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRl
c3RzL3N0X3B1dGZoLnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfcHV0ZmgucHkKPj4gaW5k
ZXggZTFkNjMyMC4uZjhiZmE3MSAxMDA2NDQKPj4gLS0tIGEvbmZzNC4xL3NlcnZlcjQxdGVzdHMv
c3RfcHV0ZmgucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfcHV0ZmgucHkKPj4g
QEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1m
cm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgdXNlX29iaiwgY3JlYXRlX2NvbmZp
cm0sIGNsb3NlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwg
dXNlX29iaiwgY3JlYXRlX2NvbmZpcm0sIGNsb3NlX2ZpbGUKPj4gIGltcG9ydCBuZnNfb3BzCj4+
ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICAKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X3JlYm9vdC5weSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3JlYm9vdC5w
eQo+PiBpbmRleCBiMTljMzQzLi5iODUyZGVkIDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvc2VydmVy
NDF0ZXN0cy9zdF9yZWJvb3QucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfcmVi
b290LnB5Cj4+IEBAIC0xLDYgKzEsNiBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25zdCBpbXBv
cnQgKgo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25t
ZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3JlYXRlX2ZpbGUsIG9wZW5fZmlsZSwgY3JlYXRlX2Nv
bmZpcm0KPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgY3JlYXRlX2Zp
bGUsIG9wZW5fZmlsZSwgY3JlYXRlX2NvbmZpcm0KPj4gIGltcG9ydCBzeXMKPj4gIGltcG9ydCBv
cwo+PiAgaW1wb3J0IG5mczRsaWIKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRlc3Rz
L3N0X3JlY2xhaW1fY29tcGxldGUucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9yZWNsYWlt
X2NvbXBsZXRlLnB5Cj4+IGluZGV4IDY0MmFkYTIuLmVlNTE4NDMgMTAwNjQ0Cj4+IC0tLSBhL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3JlY2xhaW1fY29tcGxldGUucHkKPj4gKysrIGIvbmZzNC4x
L3NlcnZlcjQxdGVzdHMvc3RfcmVjbGFpbV9jb21wbGV0ZS5weQo+PiBAQCAtMSw2ICsxLDYgQEAK
Pj4gIGZyb20gc3RfY3JlYXRlX3Nlc3Npb24gaW1wb3J0IGNyZWF0ZV9zZXNzaW9uCj4+ICBmcm9t
IHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBj
aGVjaywgZmFpbCwgb3Blbl9maWxlLCBjcmVhdGVfZmlsZSwgY3JlYXRlX2NvbmZpcm0KPj4gK2Zy
b20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgb3Blbl9maWxlLCBjcmVhdGVfZmls
ZSwgY3JlYXRlX2NvbmZpcm0KPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZT
NG9wcygpCj4+ICBpbXBvcnQgbmZzNGxpYgo+PiBkaWZmIC0tZ2l0IGEvbmZzNC4xL3NlcnZlcjQx
dGVzdHMvc3RfcmVuYW1lLnB5IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3RfcmVuYW1lLnB5Cj4+
IGluZGV4IGM3YzJjMjAuLjMwNDI5MDkgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0MXRl
c3RzL3N0X3JlbmFtZS5weQo+PiArKysgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9yZW5hbWUu
cHkKPj4gQEAgLTEsNSArMSw1IEBACj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAq
Cj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgbWFrZXRyZWUsIHJlbmFt
ZV9vYmosIGdldF9pbnZhbGlkX3V0ZjhzdHJpbmdzLCBjcmVhdGVfb2JqLCBjcmVhdGVfY29uZmly
bSwgbGluaywgdXNlX29iaiwgY3JlYXRlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9y
dCBjaGVjaywgZmFpbCwgbWFrZXRyZWUsIHJlbmFtZV9vYmosIGdldF9pbnZhbGlkX3V0ZjhzdHJp
bmdzLCBjcmVhdGVfb2JqLCBjcmVhdGVfY29uZmlybSwgbGluaywgdXNlX29iaiwgY3JlYXRlX2Zp
bGUKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+ICBmcm9t
IHhkcmRlZi5uZnM0X3R5cGUgaW1wb3J0ICoKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0
MXRlc3RzL3N0X3NlY2luZm8ucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9zZWNpbmZvLnB5
Cj4+IGluZGV4IDAwOGRjMWUuLmQ3Zjk1NTcgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0
MXRlc3RzL3N0X3NlY2luZm8ucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3Rfc2Vj
aW5mby5weQo+PiBAQCAtMSw2ICsxLDYgQEAKPj4gIGZyb20gc3RfY3JlYXRlX3Nlc3Npb24gaW1w
b3J0IGNyZWF0ZV9zZXNzaW9uCj4+ICBmcm9tIHhkcmRlZi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+
IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFpbCwgdXNlX29iaiwgYmFkX3Nlc3Np
b25pZCwgY3JlYXRlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZmFp
bCwgdXNlX29iaiwgYmFkX3Nlc3Npb25pZCwgY3JlYXRlX2ZpbGUKPj4gIGZyb20geGRyZGVmLm5m
czRfdHlwZSBpbXBvcnQgY2hhbm5lbF9hdHRyczQKPj4gIGltcG9ydCBuZnNfb3BzCj4+ICBvcCA9
IG5mc19vcHMuTkZTNG9wcygpCj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9z
dF9zZWNpbmZvX25vX25hbWUucHkgYi9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9zZWNpbmZvX25v
X25hbWUucHkKPj4gaW5kZXggOWNkNmJkMy4uYTA0NDk0MCAxMDA2NDQKPj4gLS0tIGEvbmZzNC4x
L3NlcnZlcjQxdGVzdHMvc3Rfc2VjaW5mb19ub19uYW1lLnB5Cj4+ICsrKyBiL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X3NlY2luZm9fbm9fbmFtZS5weQo+PiBAQCAtMSw2ICsxLDYgQEAKPj4gIGZy
b20gc3RfY3JlYXRlX3Nlc3Npb24gaW1wb3J0IGNyZWF0ZV9zZXNzaW9uCj4+ICBmcm9tIHhkcmRl
Zi5uZnM0X2NvbnN0IGltcG9ydCAqCj4+IC1mcm9tIGVudmlyb25tZW50IGltcG9ydCBjaGVjaywg
ZmFpbCwgYmFkX3Nlc3Npb25pZCwgY3JlYXRlX2ZpbGUKPj4gK2Zyb20gLmVudmlyb25tZW50IGlt
cG9ydCBjaGVjaywgZmFpbCwgYmFkX3Nlc3Npb25pZCwgY3JlYXRlX2ZpbGUKPj4gIGZyb20geGRy
ZGVmLm5mczRfdHlwZSBpbXBvcnQgY2hhbm5lbF9hdHRyczQKPj4gIGltcG9ydCBuZnNfb3BzCj4+
ICBvcCA9IG5mc19vcHMuTkZTNG9wcygpCj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVyNDF0
ZXN0cy9zdF9zZXF1ZW5jZS5weSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3NlcXVlbmNlLnB5
Cj4+IGluZGV4IDI1ZTUxMTMuLjIwODE2MGYgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2ZXI0
MXRlc3RzL3N0X3NlcXVlbmNlLnB5Cj4+ICsrKyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3Nl
cXVlbmNlLnB5Cj4+IEBAIC0xLDYgKzEsNiBAQAo+PiAgZnJvbSBzdF9jcmVhdGVfc2Vzc2lvbiBp
bXBvcnQgY3JlYXRlX3Nlc3Npb24KPj4gIGZyb20geGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoK
Pj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCBiYWRfc2Vzc2lvbmlkLCBj
cmVhdGVfZmlsZQo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsLCBiYWRf
c2Vzc2lvbmlkLCBjcmVhdGVfZmlsZQo+PiAgZnJvbSB4ZHJkZWYubmZzNF90eXBlIGltcG9ydCBj
aGFubmVsX2F0dHJzNAo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3Bz
KCkKPj4gZGlmZiAtLWdpdCBhL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3NwYXJzZS5weSBiL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3NwYXJzZS5weQo+PiBpbmRleCA2YWRmM2Q2Li4wNmJlMTll
IDEwMDY0NAo+PiAtLS0gYS9uZnM0LjEvc2VydmVyNDF0ZXN0cy9zdF9zcGFyc2UucHkKPj4gKysr
IGIvbmZzNC4xL3NlcnZlcjQxdGVzdHMvc3Rfc3BhcnNlLnB5Cj4+IEBAIC0xLDYgKzEsNiBAQAo+
PiAgZnJvbSBzdF9jcmVhdGVfc2Vzc2lvbiBpbXBvcnQgY3JlYXRlX3Nlc3Npb24KPj4gIGZyb20g
eGRyZGVmLm5mczRfY29uc3QgaW1wb3J0ICoKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNo
ZWNrLCBmYWlsLCBjcmVhdGVfZmlsZQo+PiArZnJvbSAuZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNr
LCBmYWlsLCBjcmVhdGVfZmlsZQo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5O
RlM0b3BzKCkKPj4gIGltcG9ydCBuZnM0bGliCj4+IGRpZmYgLS1naXQgYS9uZnM0LjEvc2VydmVy
NDF0ZXN0cy9zdF90cnVua2luZy5weSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3RydW5raW5n
LnB5Cj4+IGluZGV4IDY4NDQyM2QuLjcyYWZhMWYgMTAwNjQ0Cj4+IC0tLSBhL25mczQuMS9zZXJ2
ZXI0MXRlc3RzL3N0X3RydW5raW5nLnB5Cj4+ICsrKyBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0
X3RydW5raW5nLnB5Cj4+IEBAIC0xLDcgKzEsNyBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9jb25z
dCBpbXBvcnQgKgo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3BzKCkK
Pj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBmYWlsCj4+ICtmcm9tIC5lbnZpcm9u
bWVudCBpbXBvcnQgY2hlY2ssIGZhaWwKPj4gIGZyb20geGRyZGVmLm5mczRfdHlwZSBpbXBvcnQg
Kgo+PiAgaW1wb3J0IHJhbmRvbQo+PiAgaW1wb3J0IG5mczRsaWIKPj4gZGlmZiAtLWdpdCBhL25m
czQuMS9zZXJ2ZXI0MXRlc3RzL3N0X3ZlcmlmeS5weSBiL25mczQuMS9zZXJ2ZXI0MXRlc3RzL3N0
X3ZlcmlmeS5weQo+PiBpbmRleCA3ZmI4YTQ3Li42NGQ2MTU2IDEwMDY0NAo+PiAtLS0gYS9uZnM0
LjEvc2VydmVyNDF0ZXN0cy9zdF92ZXJpZnkucHkKPj4gKysrIGIvbmZzNC4xL3NlcnZlcjQxdGVz
dHMvc3RfdmVyaWZ5LnB5Cj4+IEBAIC0xLDcgKzEsNyBAQAo+PiAgZnJvbSB4ZHJkZWYubmZzNF9j
b25zdCBpbXBvcnQgKgo+PiAgaW1wb3J0IG5mc19vcHMKPj4gIG9wID0gbmZzX29wcy5ORlM0b3Bz
KCkKPj4gLWZyb20gZW52aXJvbm1lbnQgaW1wb3J0IGNoZWNrLCBnZXRfaW52YWxpZF9jbGllbnRp
ZCwgbWFrZVN0YWxlSWQsIFwKPj4gK2Zyb20gLmVudmlyb25tZW50IGltcG9ydCBjaGVjaywgZ2V0
X2ludmFsaWRfY2xpZW50aWQsIG1ha2VTdGFsZUlkLCBcCj4+ICAgICAgZG9fZ2V0YXR0cmRpY3Qs
IHVzZV9vYmoKPj4gIAo+PiAgZGVmIF90cnlfbWFuZCh0LCBlbnYsIHBhdGgpOgo+PiBkaWZmIC0t
Z2l0IGEvbmZzNC4xL3Rlc3RjbGllbnQucHkgYi9uZnM0LjEvdGVzdGNsaWVudC5weQo+PiBpbmRl
eCAzNjY1MjUzLi41ZDIxZWFhIDEwMDc1NQo+PiAtLS0gYS9uZnM0LjEvdGVzdGNsaWVudC5weQo+
PiArKysgYi9uZnM0LjEvdGVzdGNsaWVudC5weQo+PiBAQCAtMzMsNyArMzMsNyBAQCBpbXBvcnQg
dGVzdG1vZAo+PiAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91
cCwgSW5kZW50ZWRIZWxwRm9ybWF0dGVyCj4+ICBpbXBvcnQgY2xpZW50NDF0ZXN0cy5lbnZpcm9u
bWVudCBhcyBlbnZpcm9ubWVudAo+PiAgaW1wb3J0IHNvY2tldAo+PiAtaW1wb3J0IHJwYwo+PiAr
aW1wb3J0IHJwYy5ycGMgYXMgcnBjCj4+ICBpbXBvcnQgcGlja2xlCj4+ICAKPj4gIGRlZiBwYXJz
ZV91c2VwYXJhbXMoc3RyKToKPj4gZGlmZiAtLWdpdCBhL25mczQuMS90ZXN0c2VydmVyLnB5IGIv
bmZzNC4xL3Rlc3RzZXJ2ZXIucHkKPj4gaW5kZXggNzgxOGE1ZC4uMmJlY2MxMyAxMDA3NTUKPj4g
LS0tIGEvbmZzNC4xL3Rlc3RzZXJ2ZXIucHkKPj4gKysrIGIvbmZzNC4xL3Rlc3RzZXJ2ZXIucHkK
Pj4gQEAgLTM3LDcgKzM3LDcgQEAgaW1wb3J0IHRlc3Rtb2QKPj4gIGZyb20gb3B0cGFyc2UgaW1w
b3J0IE9wdGlvblBhcnNlciwgT3B0aW9uR3JvdXAsIEluZGVudGVkSGVscEZvcm1hdHRlcgo+PiAg
aW1wb3J0IHNlcnZlcjQxdGVzdHMuZW52aXJvbm1lbnQgYXMgZW52aXJvbm1lbnQKPj4gIGltcG9y
dCBzb2NrZXQKPj4gLWltcG9ydCBycGMKPj4gK2ltcG9ydCBycGMucnBjIGFzIHJwYwo+PiAgaW1w
b3J0IHBpY2tsZQo+PiAgCj4+ICBWRVJTSU9OPSIwLjIiICMgSG93L3doZW4gdXBkYXRlIHRoaXM/
Cj4+IGRpZmYgLS1naXQgYS9ycGMvcnBjLnB5IGIvcnBjL3JwYy5weQo+PiBpbmRleCBhZjJiMzI1
Li4wYzRhMjBhIDEwMDY0NAo+PiAtLS0gYS9ycGMvcnBjLnB5Cj4+ICsrKyBiL3JwYy9ycGMucHkK
Pj4gQEAgLTEsNCArMSw1IEBACj4+ICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVt
ZW50Cj4+ICtmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAo+PiAgCj4+ICBp
bXBvcnQgc29ja2V0LCBzZWxlY3QKPj4gIGltcG9ydCBzdHJ1Y3QKPj4gQEAgLTcsNyArOCw3IEBA
IGltcG9ydCBsb2dnaW5nCj4+ICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZSBhcyBEZXF1
ZQo+PiAgZnJvbSBlcnJubyBpbXBvcnQgRUlOUFJPR1JFU1MsIEVXT1VMREJMT0NLCj4+ICAKPj4g
LWltcG9ydCBycGNfcGFjawo+PiAraW1wb3J0IHJwYy5ycGNfcGFjayBhcyBycGNfcGFjawo+PiAg
ZnJvbSBycGNfY29uc3QgaW1wb3J0ICoKPj4gIGZyb20gcnBjX3R5cGUgaW1wb3J0ICoKPj4gIAo+
PiAtLSAKPj4gMi4xNy4xCj4+IAo=

2018-08-24 19:12:24

by J. Bruce Fields

[permalink] [raw]
Subject: Re: Re: [PATCH 19/24 v2] pynfs: python3 support plan: fix import fail on python3

On Fri, Aug 24, 2018 at 11:01:18AM +0800, 尹剑虹 wrote:
> No, see [PATCH 24/24] pynfs: python3 support plan: fix access class var in list comprehension
> Status:
> '''
> all patches works fine on python-2.7
> and build success on python-3.6
> but because xdrlib issue https://bugs.python.org/issue9544
> pynfs has not been able to run on python-3.6 now
> '''
>
> Todo list:
> investigate python xdrlib issue on python3 : https://bugs.python.org/issue9544
> investigate why (python-ply >3.4) can't work with pynfs (on both python2 and python3)

OK, thanks for the explanation.

--b.