国产一区二区三区香蕉-2020国产成人精品视频-欧美日韩亚洲三区-www.91桃色-最美情侣中文第5季免费观看-久草毛片-国产成人精品av-男女猛烈拍拍拍无挡视频-中文字幕看片-色视频欧美一区二区三区-久久久久久久久久影院-一级a爱片久久毛片-精品久久久久久无码中文字幕一区-欧美色图网站-无码色偷偷亚洲国内自拍-国产一区在线免费观看

COMP2017代寫、代做Python/Java程序

時(shí)間:2024-05-11  來(lái)源:  作者: 我要糾錯(cuò)



COMP2017 9017 Assignment 3
Due: 23:59 19 May 2024
This assignment is worth 20% of your final assessment
Assignment 3 - ByteTide - 20%
You are tasked with constructing a P2P File-Transfer program that will allow sending, receiving and
detection of anomalous data chunks. The activity that your program will participate in will handle the
following activities:
• Loading a configuration
• Loading package files and parsing their format
• Checking the integrity of the file matching to the configuration file’s path
• Managing many files that are completed and incomplete
• Complies with a network protocol to communicate with peers
• Informing a client program of the latest information of your peer and the files it manages
• Finalise and check that downloaded files match expected outcome
• Elegantly handle shutdown and disconnections from peers.
To reiterate, the program’s aim is to manage files, check integrity of chunks and files, share files
and chunks, handle peer connections and requests. Unlike other file-transfer programs, there are no
tracker or relay systems in place. A Peer is another program complying with this specification. It will
need to implement the configuration, integrity checking, network protocol and object management.
It is advisable that while reading this document that you also refer to the glossary if you do not
understand certain terms outlined in this document.
We strongly recommend reading this entire document at least twice. You are encouraged to ask
questions on Ed after you have first searched, and checked for updates of this document. If the
question has not been asked before, make sure your question post is of "Question" post type and is
under "Assignment" category → "A3" subcategory. Please follow the staff directions for using the
question template. As with any assignment, make sure that your work is your own1
, and that you do
not share your code or solutions with other students.
It is important that you continually back up your assignment files onto your own machine, flash
drives, external hard drives and cloud storage providers (as private). You are encouraged to submit
your assignment regularly while you are in the process of completing it.
1Not GPT-3/4’s, ChatGPT’s or copilot’s, etc.
1
COMP2017 9017
1 Part 1 - ByteTide Package Loader & Merkle Tree
To get started, you will need to be able to parse a .bpkg file and load it. To assist you with writing
your code and complying with the test program, you are advised to complete the pkgchk.c file in
the src directory.
1.1 The Package and its File Format (.bpkg)
In this program, a file is composed of several anomalous data chunks. The chunks are organised in
a specific way such that when they are combined, the entire contents of the file can be constructed
and presented to the user. A package defines the necessary information and resources required to
construct the contents of a file. Packages represent a unique file given by an identifier string ident.
The package file format is a text format that will need to be parsed by your program. The package file
format has the following fields. Please refer to the hash and chunk parts of the glossary. To also
clarify, the package file, can be modelled as a binary tree, the term h, refers to the height of the tree
in this instance.
• ident, hexadecimal string (1024 characters max), the identifier is used within the network to
identify the same packages.
• filename, string (256 characters max), This is used to help save and locate the file to update
when data is sent to it.
• size, uint32_t, specifies the size in bytes
• nhashes, uint32_t, specifies the number of hashes that are pre-computed from the original
file. There must be only 2ˆ(h-1)-1 hashes which will correspond to the hashes of all non-leaf
node
• hashes, string[2ˆ(h-1) - 1] (64 characters for each string), these correspond to the number
hashes in the previous nhashes field.
• nchunks, uint32_t, specifies the number of chunks. The number of chunks must be a 2ˆ(h-1)
value.
• chunks, struct[2ˆ(h-1)], each chunk have the fields: hash, offset and size.
– hash refers to a string (64 characters), corresponding to the datablock hash value
– offset, uint32_t, is the offset within the file
– size, uint32_t, is the size of the chunk in bytes
The format below gives an outline to the structure of a .bpkg file. Refer to the resources folder
in the scaffold for a real example.
Systems Programming Page 2 of 18
COMP2017 9017
ident: <identifier>
filename: <filename>
size: <size in bytes>
nhashes: <number of hashes that are non-leaf nodes>
hashes:
"hash value"
...
nchunks: <number of chunks, these are all leaf nodes>
chunks:
"hash value",offset,size
...
1.2 Package Loading
The focus of this task is to load the .bpkg file and also store the details into a merkle tree. Please
refer to Section 1.3 for information on a merkle tree.
• Read and load .bpkg files that comply with the format outlined in Section 1.1
• Once the .bpkg has been loaded successfully, it is advisable that your program also knows if
the file exists or not and has functionality to construct a file of the size outlined in the file.
Refer to pkgchk.c:bpkg_file_check function.
• Implement a merkle tree. Use the data from a .bpkg to construct a merkle-tree Refer to
pkgchk.c:bpkg_get_all_hashes and
pkgchk.c:bpkg_get_all_chunk_hashes_from_hash functions, as you should be able
to satisfy these operations after implementing a merkle tree without any IO on the data file.
• Computing the merkle tree hashes, ensuring that combined hashes match the parents hashes
when computed and finding minimum completed hashes. Refer to
pkgchk.c:bpkg_get_completed_chunks and
pkgchk.c:bpkg_get_min_completed_hashes functions. You will need to perform validation on the chunks and discover portions of the file.
The above verifies chunks against package files and the data’s integrity.
1.3 What is a merkle tree?
Binary Tree A merkle tree is a variation on a binary tree. A binary tree is tree data structure,
where a node is compose of the following.
• It holds a value/data
• Usually implemented to hold a key as well (Key-Value/Map Data Structure)
• Connected to two other nodes that are referred to as children. These are referred to as left
and right nodes.
A common structure within C for a binary tree node is as follows.
Systems Programming Page 3 of 18
COMP2017 9017
struct bt_node {
void* key;
void* value;
struct bt_node* left;
struct bt_node* right;
};
The above node, holds a key that will allow it to be searchable with the rule that it must be
unique. It also holds a value, which can be assigned to arbitrary data.
Please Note: When building a tree with a key field that allows you to perform a search an efficient
tree search, you will need to ensure that your tree is using an appropriate function for the job. Hint,
if your tree is going to be multi-purpose, consider giving your tree a function pointer to compare the
key.
To navigate and/or traverse a tree, you’d be advised to traverse it in in-order traversal. Please make
sure refer to your tree traversals. Please refer to the following documents to revise on tree-traversals:
• Tree-Traversal - Wikipedia
• Visualgo - BST
Qualities of a merkle tree A merkle tree must is typically a perfect or full and complete
binary tree but it can also be represented as a just a complete binary tree (Refer to Errata,
Variations and Notes).
• Given a depth of d, the total number of nodes in your tree will be 2ˆd - 1
• All levels are full (necessary for a perfect binary tree).
• A merkle tree will have 2ˆ(d-1) nodes at depth d, these will refer to your chunks.
• A merkle tree will have 2ˆ(d-1) -1 non-leaf-nodes.
• All leaves have the same depth (no skewing)
All nodes in a merkle tree have a hash value. Hashes of a leaf node corresponds to a hash value of a
data chunk. This value is derived from computing hash value of the data chunk itself.
All other non-leaf nodes derive their hash value by hashing their children’s hash values together.
Lets break down the above diagram.
• L1-L4 are data blocks, these refer to chunks in a file.
• Your leaf nodes 0-0 to 1-1 use a hash function to compute the hash of those data blocks.
Given this part already, we have enough information to validate individual blocks.
Pseudocode Example: self.hash = Hash(DataBlock[i])
• Your non-leaf nodes 0, 1 and root, compute their hashes by combining the hash of their children into a long string and compute the hash of that (Refer: Errata, Variations and
Notes)
Pseudocode Example: self.hash = Hash(left.hash + right.hash)
Systems Programming Page 4 of 18
COMP2017 9017
Figure 1: Merkle Tree - Wikipedia
The following is in relation to the .bpkg file and your merkle tree’s construction. You will have
an expected hash value stored by your nodes and a computed hash value that you can use to 1)
compute the hash on datablocks if it is a leaf node, or 2) compute the hash from the concatenation of
left and right node hashes if it is a non-leaf node.
The following is an expansion of the operations. We are going through an example of computing the
hash of root node of a tree with 7 nodes (similar to the diagram):
Expansion Pseudocode, with steps:
We need to compute the hash of the left and right child
1. Hash(root) = Hash(
Hash(root.left) + Hash(root.right)
)
Since left and right child are not leaf nodes, we need to do it again
2. Hash(root) = Hash(
Hash(
Hash(root.left.left) + Hash(root.left.right)
)
+
Hash(
Hash(root.right.left) + Hash(root.right.right)
)
)
Systems Programming Page 5 of 18
COMP2017 9017
We have found the leaf nodes
Compute the hash of the data blocks, the size is the chunk size as
outlined in the .bpkg
3. Hash(root) = Hash(
Hash(
Hash(DataBlock[0]) + Hash(DataBlock[1])
)
+
Hash(
Hash(DataBlock[2]) + Hash(DataBlock[3])
)
)
We concatenate the leaf children hashes that is assigned to their
`computed` field
4. Hash(root) = Hash(
Hash(
root.left.left.computed + root.left.right.computed
)
+
Hash(
root.right.left.computed + root.right.right.computed
)
)
Once again, concatenate the children hashes and compute the hash
of that
5. Hash(root) = Hash(
root.left.computed + root.right.computed
)
To help you get started, you can use the following struct as well as some helpful scaffold data.
struct merkle_tree_node {
void* key;
void* value;
struct merkle_tree_node* left;
struct merkle_tree_node* right;
int is_leaf;
char expected_hash[64]; //Refer to SHA256 Hexadecimal size
char computed_hash[64];
};
struct merkle_tree {
struct merkle_tree_node* root;
size_t n_nodes;
};
Feel free to add and modify the struct above.
Systems Programming Page 6 of 18
COMP2017 9017
Do note You can construct a merkle tree that isn’t a perfect binary tree. However, this may make
management of your data more difficult. Refer to Errata, Variations and Notes.
Do note Please make sure when you compute the hash, you use the hexadecimal representation.
This is very important for non-leaf nodes that are computing the hash from an ordered concatenation
of their children (left + right) hashes.
1.4 Errata, Variations and Notes
• Implementations: It isn’t necessary for a merkle tree to be a full or complete binary tree. You
could potentially have a merkle tree with more than 2 children Or not all leaf nodes are on the
same level
However, we have made this assumption to help simplify the data structure.
• Same-chunks, different positions: As through experimenting, you may have found that if you
have chunks that contain the same data, in this case. Your implementation will need to either
assume this will not happen or contain necessary data to differentiate it.
– Please refer to REQ packet, specifically offset part to help resolve searches.
– You can have a bit-field key alongside this similar to the diagram in the previous sections.
• More data than needed: For the most part, the file has been provided with more data than
required to help with implementing this data structure but also ensure that other parts aren’t
restricted if it is in an incomplete state.
• Using hexadecimal hash or byte-hash: The staff implementation uses the hexadecimal hash and
while computing with the byte-hash is not-incorrect, it will yield different results to the test
cases. Please make sure you comply with this.
1.5 Checklist
• Parse valid .bpkg files, ensure you can read each field of them.
• Construct a merkle tree from the bpkg files after parsing.
• Implement all the functions pkgchk.c.
• Run and compile make pkgchk.o and that will be able to compile pkgchk.c (Required
for test cases)
• You are free to modify the Makefile to refer to your c files you will use in your build targets.
• Run and compile make pkgchecker, and compile against pkgmain.c to test your program locally.
Systems Programming Page 7 of 18
COMP2017 9017
2 Part 2 - Configuration, Networking and Program
You are now tasked with writing a program that will facilitate P2P file-transfer. Your program will
need to complete the following tasks:
• Load a basic configuration file, your program will need to maintain the directory path it will
store
• Implement and comply with the protocol to communicate with other peers within the network
itself.
• Implement the commands for your program, these will include connecting. Your program will
need to connect, disconnect and retrieve peer information. Handle package loading and removing, retrieval of chunks from other peers.
This part deviates a little from part 1 as it is not completely necessary to build a merkle tree to get
started on this part, let alone complete it. However It is necessary to be able to load a .bpkg file,
retrieve the ident, filename, size, nchunks and chunks themselves for this part.
The scaffold has provided the following files for the next sections for you to implement.
• src/peer.c, - Write peer management code here
• src/package.c - Write your package management logic here
• src/config.c - Write your configuration logic here
• src/btide.c, Contains the main function, starting point of the program.
You are still free to change and alter the contents of the src folder how you see fit, however, your
Makefile still needs to build the required targets.
Make sure your program is able to be build with make btide, this should produce an executable.
2.1 Configuration File
Your program will need to parse and load a configuration file that will be used to setup folder that it
will either need to create or, if it exists, load existing packages from and refer to an existing file.
Your configuration file will be passed to your program via command line arguments.
./btide config.cfg
The program’s configuration file will use the following information:
• directory, string, path local to the system that store .bpkg files and the files that are
mapped in there. If the directory does not exist, the program should attempt to create it. If the
program is unable to create the directory or it is a file, the program should exit with exit code 3.
Systems Programming Page 8 of 18
COMP2017 9017
• max_peers, int, this field is the number of peers the program can be connected to. It is a
value between [1, 2048]
If the max_peers value is set to an invalid number, your program should exit, with exit with
exit code 4.
• port, uint16_t, this field specifies the port the client will be listening on. Acceptable port
range (1024, 65535].
If the port value is set to an invalid number, your program should exit, with exit with exit code
5.
Example of the configuration file:
directory:downloads
max_peers:128
port:9000
Each field has an action if the constraints of that field are not met as above. If any fields are missing,
the configuration should be rejected.
2.2 Network Protocol and Implementation Details
The section below will outline how your program will communicate to other programs on a network.
It is advisable that your program also holds data related to peers and packages.
Network Protocol Your program can act as both a server and client to participants among the
network. You will need to be able to form a listening socket to accept incoming connections but also
have the ability to form new connections.
The network protocol will use ‘TCP/IP’ data packets to form connections. Your program should use
the following packet structure below.
union btide_payload {
uint8_t data[PAYLOAD_MAX];
};
struct btide_packet {
uint16_t msg_code;
uint16_t error;
union btide_payload pl;
};
Below are the only msg_code values that can be set
PKT_MSG_ACK 0x0c
PKT_MSG_ACP 0x02
Systems Programming Page 9 of 18
COMP2017 9017
PKT_MSG_DSN 0x03
PKT_MSG_REQ 0x06
PKT_MSG_RES 0x07
PKT_MSG_PNG 0xFF
PKT_MSG_POG 0x00
Your program can send and receive the following packet types and their byte code value. All packets
should be 4096 bytes, and their payload data (if not empty) should follow the order as specified below
as the testing system expect data in this format. Padding is not required between different payload
parameters.
• ACP (0x02), when a peer connects to your program, you will need to acknowledge that you
have accepted the connection so it can confirm it can add it to its own peer list. If your program
connects to peer, you should wait for an ACP message back before you add the peer to your
own peer list. If the peer does not respond, your program can kill the connection.
• ACK (0x0c), when your program receives an ACP packet after a connect, you will send a
message back with an ACK. This is to simply acknowledge that you have received the message.
• DSN (0x03), when a peer wants to disconnect from another peer, it will send a message to the
peer, telling that it will be disconnecting. The peer that originated the message will close off its
socket and end the connection.
Your program should detect when a shutdown has occurred by a peer that may not sent DSN.
Please check man recv and man send for detecting these cases.
• REQ (0x06), This packet is sent to a peer to request data for a particular chunk. The request packet will send the <identifier> (1024 bytes), <chunk hash> (64 bytes) and
<offset> (4 bytes, uint32_t) to another peer in the expectation that the peer will send
<data len> of data back.
The order in the packet is as follows: file_offset, data_len, chunk_hash and
identifier.
<data len>
If the peer sends you a REQ packet but you do not have the expected file or chunk available,
you will need to inform the requester of an error in the RES packet.
• RES (0x07), This packet is sent to an originator of a REQ packet, it will contain:
<identifier> (1024 bytes), <chunk hash> (64 bytes), <offset>
(4 bytes, uint32_t), <data len> (2 bytes, uint16_t) and most importantly <data>
(max 2998 bytes).
The order in the packet is as follows: file_offset, data, data_len, chunk_hash and
identifier.
The response packet will send data from the chunk to the requester, since the file <data len>
component may not match the <req len> component of a REQ request packet, the peer will
need to send multiple RES packets to satisfy the length of data requested. This is normal as part
of the REQ-RES flow.
<offset> refers to the offset of the chunk that <data> will be written to.
Systems Programming Page 10 of 18
COMP2017 9017
If the peer does not have the data available, a error byte fields should be set to a number > 0.
This will notify the requester that the current peer does not have the data requested.
If it is determined, after a REQ-RES conversation has finished, that the chunk sent is invalid, the
chunk should be silently ignored.
• PNG (0xFF), This packet is sent out with the intent to check if a peer is still alive. Nominally,
this is usually sent out periodically, however in this implementation we will send it out when
PEERS command is called.
No error handling is necessary for this particular packet.
• POG (0x00), This is a pong message that will be sent to the originator of the PNG(0xFF)
message.
The SIGPIPE signal could be raised, in particular with multi-threaded solutions (commonly connection per thread solutions) that may not know the connection has been terminated. Make sure your
program handles this signal and also detects errors with your sockets as they arise.
All packets are fixed 4096 byte packets. This results in simple packet handling code within your
program.
2.3 Building a CLI
To finish and to test your program, you will need to build a command line interface. There are
a handful of commands that need to be implemented which also imply a certain amount of book
keeping.
Commands Your program must be able to utilise the following commands. The commands are
provided via standard input. Your program will stay alive until QUIT command is inputted.
All commands will have maximum of 5520 characters which can fit the command, identifier and path
if ever required.
Do note, it is intended that the commands are case sensitive. You can assume command arguments
are delimited by exactly one space 2
and should have no leading and trailing characters.
• CONNECT <ip:port>
This command will attempt to connect to a peer within the network itself. Your program will need to
construct a socket and attempt to connect to another peer on the network. man 2 socket for more
information. Please refer to ACP and ACK packets in the network protocol section.
If the connect command succeeds, your program must output:
Connection established with peer.
If the connect command fails, your program must output:
Unable to connect to request peer
2
except for ADDPACKAGE in which the file name may contain spaces
Systems Programming Page 11 of 18
COMP2017 9017
If the ip and port given, have already been connected to and the connection is alive, your program
must output: Already connected to peer
If a the ip or port has not been specified, your program should output
Missing address and port argument.
• DISCONNECT <ip:port>
This command will disconnect from a peer and remove it from a peer list. Please refer to the DSN
packet in the network protocol section.
If the peer is connected and in your program’s peer list, your program must disconnect with the peer
and output Disconnected from peer.
If the peer does not exist in your program’s peer list, your program must output: Unknown peer,
not connected
If a the ip or port has not been specified, your program should output Missing address and
port argument.
• ADDPACKAGE <file>
This command will add a package to manage.
If a the file has not been specified, your program should output Missing file argument.
If the file does not exist or you do not have permission to use it, Your program must output:
Cannot open file
If the file is not a valid bpkg file, your program must output Unable to parse bpkg file.
• REMPACKAGE <ident, 20 char matching>
where ident is identifier or partial identifier.
This command will remove a package that is being maintained by the program.
If a the ident has not been specified, your program should output
Missing identifier argument, please specify whole 1024 character
or at least 20 characters.
If the ident is not managed by your program, your program should output:
Identifier provided does not match managed packages
On success, the program will output Package has been removed
• PACKAGES
Your program should report on the status of the packages loaded. Your program will have need to
maintain a list of packages that have been added in working memory.
If your program is not managing any packages, your program will output
No packages managed.
If your program is managing 1 or more packages, your program will output in the following format:
Systems Programming Page 12 of 18
COMP2017 9017
[1..N]. <32 char identifier>, <filename> : (INCOMPLETE | COMPLETED)
Example:
1. 0c4d036a2161aa6525743d44725e6212, song5.mp3 : INCOMPLETE
2. 13d608773eb8842426fddb8131d5c184, song6.ogg : COMPLETED
...
• PEERS
Lists all connected peers. This will also trigger a PNG packet to be sent to all peers you are connected
to on the network.
If your program is not connected to any peers, it will output: Not connected to any peers
If your program is connected to 1 or more peers, your program will output in the following format:
Connected to:
[1..N]. <ip>:<port>
Example:
Connected to:
1. 192.168.1.1:9001
2. 192.168.2.120:1723
...
• FETCH <ip:port> <identifier> <hash> (<offset>)
Requests chunks related to the hash given. Please refer to REQ and RES packets in the network
protocol section. If an offset is specified, it will use this additional info to narrow down a hash at a
particular offset of the file. The offset will need to match the start of that chunk and must be a number
greater than or equal to 0.
If the number of arguments provided does not match 3, program will output:
Missing arguments from command
If the ip and port is missing from the peer list, your program will output: Unable to request
chunk, peer not in list
If the identifier is missing from the package list, your program will output: Unable to request
chunk, package is not managed
If the hash does not exist in the package, your program will output
Unable to request chunk, chunk hash does not belong to package
If the arguments specified are correct, a REQ packet will be sent to the peer.
• QUIT
The program quits, no error should be outputted from this command.
Any erroneous commands will require the program to output Invalid Input.
Systems Programming Page 13 of 18
COMP2017 9017
2.4 Checklist
• Implement all the packet types in the Network Protocol Section
• Implement a data structure to add, remove and retrieve peer information.
• Implement a data structure to add, remove and retrieve package information that your peer is
managing.
• Implement the commands for your client program.
• Ensure that your packets are compatible between clients, test your program in class or with
friends at uni.
• Implement a tests for merkle tree based on A3 tests and any new tests you have derived since.
• Implement a tests for networking based on A3 tests and any new tests you have derived since.
2.5 Implementation Help
This section here is to help give you hints to implement your networking application.
• A simple networking technique is to use thread-per-connection. This means that, when a connection is accepted, it is split off into another thread.
However, you will need to identify and manage when a connection has been terminated and
detect when a thread has finished.
• When managing peers, use a dynamic array or refer to the max_peers property. However, you will need to keep track of the number of peers that are currently connected
• The struct packet given provides a good hint as to where to add specific packet data information.
Consider why a union would be best suited there. In additional, it makes it easy to just use only
a single type to handle packets that are sent to your program.
• Handling packets is similar to handling commands via standard input. As long as you got the
message, you just need to make the decisions based on the type of packet.
2.6 Resources
You have been supplied additional resources to help with your assessment. These resources will
include command line tools and utility functions that you will need to use during the development of
your program. Use them to help with testing different components and constructing files test cases.
• SHA256 Implementation (crypt/sha256.c/.h), used for hashing data for the merkle tree,
Also comes with sha256 utility program.
• Package Make (./pkgmake --help), used for constructing a package file.
• Packet Validator (./pktval --help), used for checking basics of packets sent across the
network.
• Getting started with networking (./getting_started/), folder with basic networking example code.
Systems Programming Page 14 of 18
COMP2017 9017
• Example Packages (/packages/), a folder with a variety of example packages and files to
test and inspect. You are encouraged to use xxd to inspect the files or even break up the files
to verify different parts.
• split command (./split --help), use this command to break apart a file and run it
against the sha256 program included with the assessment.
3 Assumptions
This assessment makes a few reasonable assumptions around how packets and data will be encoded
without explicitly outlining it in each section. It is also reasonable to make it clear how communication is to be afforded if between all peers.
For sake of simplicity, file and network binary data is sent or saved as little endian. For singular bytes
this does not have any serious bearings however, for integers this is significant to outline as the order
of bytes may be different between a BE and LE system with this software.
4 High performance Merkle tree
For the high mark, you would have a working implementation for all parts. If you cannot pass most
test cases, this section will not be graded.
You are to optimise your merkle tree implementation to improve one of the following areas of your
choosing:
• minimising the time required for the I/O bound problem of large volumes of data to load and
hash using multiple threads
• minimising the time required for the CPU bound problem of calculating all hashes of the merkle
tree using multiple threads for insertions
• building a merkle tree from a .bpkg file in parallel
For this mark, you will need:
• a benchmark method that can be executed by the grader,
• testing data (ideally procedurally generated from the benchmark),
• a report of 500-1000 words describing which of the above optimisations you are aiming for,
and where you applied these in the code.
Ideally, you achieve a speedup proportional to the number of threads and/or size of input. A graph of
this behaviour would complement your report.
Systems Programming Page 15 of 18
COMP2017 9017
5 Marking and notes
This assignment will be subjected to manual marking and auto marking. The assessment has been
broken up into 3 parts, with one external part that you are able to access.
• Part 1 - Automatic tests 8%
• Part 1 - Own merkle tree tests - Manual 2%
• Part 2 - Automatic tests 6%
• Part 2 - Own networking tests - Manual 1%
• Code Style & Comments - Manual 1%
• You are required to construct a README.md documentation to describe the organisation of
your software, where test data is located and how they are run (300 - 1500 words) - Manual 1%
• Part 1 & 4 - Performance benchmark and reporting - Manual 1%
Deductions apply when:
• There exists a significant mismatch between A3tests and submitted tests. Only in the case where
the number of tests described in the A3tests report are far greater than what is being tested in
this final submission. For example, if there are 50 tests described in A3tests and only 10 are
implemented in the final, this would be a problem and deductions would apply.
Up to 5/20 A3 marks may be deducted.
• Final git repository is UNCLEAN.
Up to 2/20 A3 marks will be deducted when the final git repository is unclean.
Essentially, you are submitting a git repository to EdStem. Make sure the final git repository
(e.g., all git commits of this repository) submitted contains ONLY source files, header files,
test files, documentation in text files. Ask on EdStem if you need to commit other files. Suggestions: (1) Execute git status frequently, before each git add and git commit.
(2) Never git add . or git add -A. (3) Include a proper .gitignore file. (4) Read
previous guides and discussions on EdStem.
• Memory errors and memory leaks occur.
1/20 A3 marks will be deducted for EACH occurrence of memory errors or memory leaks.
This deduction will be capped at 5/20 A3 marks. Memory errors and leaks are determined by
Valgrind.
Can be detected with Valgrind and ASAN. Guides are available on EdStem. Ask on EdStem
if you cannot find the guides or need help.
• Dynamic memory and shared memory are not utilised in implementations. E.g., When ONLY
file IO is utilised, while mmap and heap memory are not used.
20/20 A3 marks may be deducted.
• VLAs (Variable-length array) are used. Add -Wall -Wvla to compilation arguments.
1/20 A3 marks will be deducted for EACH VLA occurrence (VLA definition). This deduction
will be capped at 5/20 A3 marks.
• There exists non-English comments, or notes, presented in any part of the submission.
1/20 A3 marks will be deducted for EACH line. This deduction will be capped at 5/20 A3
marks.
• There exists the use any external libraries, other than those in glibc.
20/20 A3 marks may be deducted. Ask on EdStem before using any external libraries.
Other restricted functions may come at a later date.
Systems Programming Page 16 of 18
COMP2017 9017
Academic Declaration
By submitting this assignment you declare the following: I declare that I have read and understood
the University of Sydney Student Plagiarism: Coursework Policy and Procedure, and except where
specifically acknowledged, the work contained in this assignment/project is my own work, and has
not been copied from other sources or been previously submitted for award or assessment.
I understand that failure to comply with the Student Plagiarism: Coursework Policy and Procedure
can lead to severe penalties as outlined under Chapter 8 of the University of Sydney By-Law 1999
(as amended). These penalties may be imposed in cases where any significant portion of my submitted work has been copied without proper acknowledgement from other sources, including published
works, the Internet, existing programs, the work of other students, or work previously submitted for
other awards or assessments.
I realise that I may be asked to identify those portions of the work contributed by me and required to
demonstrate my knowledge of the relevant material by answering oral questions or by undertaking
supplementary work, either written or in the laboratory, in order to arrive at the final assessment
mark.
I acknowledge that the School of Computer Science, in assessing this assignment, may reproduce
it entirely, may provide a copy to another member of faculty, and/or communicate a copy of this
assignment to a plagiarism checking service or in-house computer program, and that a copy of the
assignment may be maintained by the service or the School of Computer Science for the purpose of
future plagiarism checking.
Systems Programming Page 17 of 18
COMP2017 9017
Changes
• 2024-04-29
– Minor typographical errors
– DISCONNECT contained notion of not removing peer from peer list
– Added optional offset parameter to FETCH command to help with specificity.
Systems Programming Page 18 of 18

請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp

















 

標(biāo)簽:

掃一掃在手機(jī)打開當(dāng)前頁(yè)
  • 上一篇:COM4511代做、代寫Python設(shè)計(jì)編程
  • 下一篇:代做MATH1033、代寫c/c++,Java程序語(yǔ)言
  • 無(wú)相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
    昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗(yàn)證碼平臺(tái) 幣安官網(wǎng)下載 歐冠直播 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    主站蜘蛛池模板: 欧美三级韩国三级日本三斤 | 国产黄色三级 | 美女性高潮视频 | 日韩欧美国产高清91 | 麻豆精品一区二区三区 | 色网站在线观看 | 亚洲天堂国产精品 | 国产精品大片 | 国产精品蜜臀 | 中文字幕成人在线观看 | 亚洲操片 | 97国产在线 | 宅男噜噜666在线观看 | 日韩av在线看 | 黄色激情视频网站 | 91精品国产一区二区三密臀 | 在线日韩免费 | 黄色片小视频 | 六月色播 | 五月婷影院 | 99国产精品99久久久久久粉嫩 | 国产成人免费视频网站高清观看视频 | 国产高清小视频 | 北条麻妃久久 | av在线免费在线观看 | 激情综合小说 | 亚洲欧美另类一区 | 青青草成人网 | 波多野结衣福利视频 | 日韩精品在线免费视频 | 国语对白一区二区 | 波多野结衣在线视频免费观看 | 黄色激情视频网站 | 国产最爽的乱淫视频国语对白 | 国产一区影院 | 日韩在线视频精品 | 九九热这里有精品 | 亚洲国产精品免费视频 | 99久久久国产精品 | 91精品一区二区三区综合在线爱 | 粉嫩av| 国产在线一级片 | 亚洲 欧美 视频 | 神马久久网 | 一级做a爰片久久毛片16 | 久久久这里有精品 | 欧美在线日韩 | 欧美在线网站 | 在线播放日韩av | 三级影片在线免费观看 | 大黄毛片 | 国产精品午夜未成人免费观看 | 91免费视频大全 | 欧美成人aa| 亚洲wwwxxx| 午夜一区在线观看 | 亚洲国产欧美国产综合一区 | 蜜桃精品视频 | 五月在线| 97夜夜澡人人爽人人喊91洗澡 | 国产精品久久久久久久久久久不卡 | 黄色片网站在线免费观看 | 亚洲偷怕| 国产青青操| 亚洲国产欧美在线 | 亚洲精品456在线播放dvd | 亚洲免费精品视频在线观看 | 久久久久综合 | 最新日韩视频 | 日韩精品一区二区三区视频 | 天天爽天天插 | 欧美日韩亚洲在线 | 97潮色 | 夜夜爽av | 婷婷色av | 欧美成人精精品一区二区频 | 中文天堂在线一区 | 非洲一级黄色片 | 日本一级网站 | 亚洲爽片| 99热这里只有精品1 成人午夜精品视频 | 国产一区二区三区毛片 | 一级片在线| 国产无限资源 | 激情宗合| 久久av在线 | 在线色综合 | 中文毛片无遮挡高潮免费 | 国产精品久久久久久久妇 | 午夜淫片| 欧美日韩在线视频播放 | 黑人操亚洲人 | 美梦视频大全在线观看高清 | 亚洲精品视频久久久 | 亚洲射射射 | 国产成人福利 | 国产精品久久久久久久久免费看 | 337p粉嫩大胆噜噜噜的背景 | 狠狠干夜夜操 | 九九免费在线视频 | 丁香婷婷九月 | 最近av在线 | 欧美精品亚洲精品 | 国产欧美日韩成人 | x88av在线| 91精品小视频 | 亚洲精品国产福利 | 欧美精品福利视频 | 国产在线不卡av | av中文字幕在线看 | 欧美日韩国内 | 亚州无限乱码一二三四麻豆 | 99资源网 | 午夜精品视频一区二区三区在线看 | 亚洲一区二区在线观看视频 | 中文字幕五码 | 欧美激情精品久久久久久变态 | 亚洲永久在线观看 | 欧美高清视频在线观看 | xxx国产精品视频 | a√天堂中文字幕在线 | www.爱色av | 免费日批视频 | 国产精品免费一区二区三区都可以 | 亚洲成人久久精品 | 亚洲精品一区二区18 | 国产高潮在线 | 国产精品情侣 | 午夜免费在线 | 国产一av | 天天干天天干天天干 | 精精国产xxxx在线观看主放器 | 亚洲免费av在线 | 免费性爱视频 | 性欧美另丰满69xxxxx | 69视频在线免费观看 | 亚洲无线看 | 国产黄a三级三级三级看三级男男 | 日韩高清一区二区 | 欧美日韩性 | 我们好看的2018视频在线观看 | 中文字幕日韩有码 | 欧美亚洲 | 亚洲看逼 | 国内性爱视频 | 久久精品视 | 免看一级a毛片一片成人不卡 | 白丝av| 欧美激情一区二区三区p站 自拍av在线 | 九一国产视频 | 欧美wwwwww | 成人看的毛片 | 奇米四色影视 | 成人亚洲视频 | 精品欧美一区二区久久久 | 免费黄色高清视频 | 欧美内谢 | 中文字幕永久免费视频 | 夫妻淫语绿帽对白 | 亚洲午夜小视频 | 久久久久久久久久久久一区二区 | 最近日韩中文字幕中文 | 国产新婚夫妇白天做个爱 | 日韩乱淫| 在线观看超碰 | 亚洲精品久久久一区二区三区 | 午夜看片网站 | 亚洲看看 | 怡红院毛片 | 亚欧洲精品在线视频免费观看 | 日韩一区二区精品 | 中出中文字幕 | 午夜激情毛片 | 日本黄视频在线观看 | 女同另类之国产女同 | 国产91专区| 欧美日韩一级二级三级 | 成人免费播放视频 | 天堂资源在线观看 | 亚洲午夜小视频 | 成人爽爽爽 | 殴美一区二区 | 国产福利99| 亚洲三级黄 | 一区二区三区手机在线观看 | 国产精品亚洲欧美在线播放 | 国产福利视频在线观看 | 午夜在线视频免费 | 999免费视频| 婷婷网址 | 亚州av在线| 一级作爱视频 | 99在线观看| 国产精品成人自拍 | 国产成人精品视频 | 亚av| 狠狠地日 | www视频在线观看 | 色综合图片区 | 午夜精品视频在线观看 | 看av网址 | 婷婷五月色综合 | 字幕网在线观看 | 男女在线免费观看 | 日韩人成 | 欧美大片aaa | 国产精品国产三级国产aⅴ无密码 | 国产精品综合一区二区 | av中文字幕亚洲 | 91丨九色| 精品在线免费观看视频 | 久久精品国产99 | 国产污污视频 | 黄av在线| 国产又白又嫩又爽又黄 | 男人午夜视频 | 亚洲大片在线观看 | 麻豆一区二区 | 亚洲在线免费观看 | 超碰人人做 | 欧美日韩福利视频 | 中文字幕在线观 | 视频一区二区国产 | 日韩欧美一区二区在线 | 久久国产精品精品国产色婷婷 | 天天草天天操 | 亚洲伦片免费看 | 中文在线天堂网 | 超碰免费91 | 日日夜夜狠狠干 | 国产精品婷婷午夜在线观看 | 欧美成人精品网站 | 岛国av网址 | 国产又粗又猛又黄 | 操丝袜少妇 | 黑人一级片 | 国产色多传媒网站 | 欧美精品久久久久久久多人混战 | 成年人av在线播放 | 久久99精品久久久久久噜噜 | 亚洲精品久久久久久久蜜桃 | 白浆在线播放 | 国产免费a | 在线看片不卡 | 69福利区| 高清一区二区三区视频 | 国产精华7777777 | 天天射天天干天天 | 亚洲午夜久久久久 | 日韩成人免费av | 亚洲乱码精品久久久久.. | 91射射| 97在线观看视频 | 免费三片在线观看网站v888 | 九九热国产精品视频 | 欧美在线a | 伊人艹| 亚洲区自拍 | 亚洲精品热 | 久久午夜激情 | 天天草夜夜草 | www.av.cn| 有码一区二区三区 | 天堂在线资源网 | 91亚洲精华国产精华精华液 | 伊人超碰 | 精品视频一区二区 | 成人羞羞国产免费动态 | 日韩在线亚洲 | 日本在线视频不卡 | 午夜激情视频在线观看 | 国产精品2区 | 女人性做爰100部免费 | 中文字幕亚洲无线码在线一区 | 伊人久久亚洲综合 | 亚洲欧美日韩国产精品一区午夜 | 一线毛片| 老司机精品导航 | 国产女人在线视频 | 欧美黑人xxx | 免费在线观看亚洲 | 日韩精品在线观看网站 | 一级黄色爱爱视频 | 国产一级片免费视频 | 成人黄色免费 | 中文字幕日本在线观看 | 天堂中文资源在线 | 天天摸天天射 | 国产一区欧美二区 | 国产精品怡红院 | 四虎免费在线观看 | 18日本xxxxxxxxx95| 精品欧美一区二区久久久 | 重口味av| 星空大象mv高清在线观看免费 | 国产色在线,com | 3p在线播放| 亚洲一区二区三区黄色 | 91一级片| 香蕉视频黄色在线观看 | 欧美一级片免费在线观看 | 色狠狠综合网 | av免费观看一区二区 | 免费黄网站在线 | 久草福利资源在线观看 | 欧美国产激情 | 香蕉视频首页 | 91在线看视频| 911美女片黄在线观看游戏 | 欧美视频福利 | 人人干av | 久久成人精品视频 | 成人爱爱网站 | h视频在线观看网站 | 手机看片91 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 成年人在线视频网站 | 亚洲精品视频一区二区三区 | 99精品在线视频播放 | 国产极品网站 | 国产a级黄色片 | 婷婷综合网站 | 性国产1819sex性高清 | 久久青青视频 | 欧美色图五月天 | 手机在线看片1024 | 亚洲人免费视频 | 亚洲一区欧美日韩 | 污污小视频 | 成人免费午夜 | 国产片网站 | 久一区二区三区 | 久久天天躁狠狠躁夜夜av | 日本久久黄色 | 97超碰在| 日韩手机在线视频 | 在线色网 | a视频免费在线观看 | www.免费av| 久久av偷拍| 国偷自产av一区二区三区 | 葵司一区二区 | 尤物一区二区 | 春色伊人 | 波多野结衣中文字幕一区二区三区 | 色先锋影院 | 国产亚洲精品久久777777 | 奇米影视在线视频 | 青娱乐超碰在线 | 色哟哟在线| 午夜无毒不卡 | 椎名空在线观看 | 欧美天堂一区 | 在线观看免费中文字幕 | 樱空桃在线观看 | www.97色| 久久精品波多野结衣 | 日本综合久久 | 超碰98 | 国产极品视频 | 午夜免费观看视频 | 久草精品在线 | 日韩欧美成人网 | 一级日韩毛片 | 成人免费在线视频观看 | 日韩美女啪啪 | 91网视频 | 日日骚网| 精品91视频 | 久久久久久久一区 | 99精品国产一区二区三区 | 精品免费在线观看 | 黄色草逼视频 | 亚洲国产一区二区三区 | 欧美激情第二页 | 久久久久国产精品午夜一区 | 亚欧美色图 | 小宵虎南在线观看 | aaa午夜| 91亚洲一区二区三区 | 成人视屏在线观看 | 中文字幕av二区 | 亚洲成人看片 | 色婷婷综合久久 | 丰满少妇乱子伦精品看片 | 国产高清网站 | 国产美女精品 | av懂色| 久久久久久久久久一级 | 欧美大片黄色 | 男人天堂五月天 | 在线观看中文字幕 | 国产免费一区二区三区 | 国产特黄aaa大片免费观看 | 亚洲欧美强伦一区二区 | 国产视频在线一区二区 | 久久99精品久久久久久水蜜桃 | 亚洲一区中文字幕永久在线 | 萌白酱一区二区 | 激情777| 草碰在线视频 | 色综合天天 | 黑人一区二区三区 | 最好看的2019中文大全在线观看 | 一级成人黄色片 | 欧美黄色短视频 | 免费av大全 | 在线超碰91| 日韩黄色片在线观看 | 超碰在线中文字幕 | av噜噜噜 | 亚州国产 | 一级片网址 | 国产在线观看你懂的 | 少妇一级淫片aaaaaaa | 最近2019中文字幕大全第二页 | 精品欧美一区二区三区免费观看 | 天堂网成人| 国产成人综合网 | www.在线视频| 国产在线一 | 激情国产在线 | 日韩精品自拍偷拍 | 人人爱人人草 | 国产露脸国语对白在线 | 天美视频在线观看 | 东京av男人的天堂 | 亚洲欧洲视频在线观看 | 久久岛国搬运工 | 色屁屁草草影院ccyycom | 亚洲精品久久区二区三区蜜桃臀 | 日本中文字幕一区 | 日韩欧美精品中文字幕 | 国产亚洲欧美精品永久 | 在线看片你懂的 | 黄色一级片视频 | 成人福利网站在线观看 | 欧美成人黄色片 | 亚洲福利视频一区 | 国产精品国产三级国产在线观看 | 午夜婷婷在线播放 | 亚洲视频中文 | 久草免费在线色站 | 有码一区| 国产精品亚州 | 成人毛片在线观看 | 国产香蕉视频在线播放 | 伊人手机在线视频 | 亚洲第一视频网 | 国产激情久久久 | www.日批 | 67194午夜 | 黄色免费观看高清 | 国产精品一区二区人人爽 | 国产一在线| 蜜桃视频一区二区 | 日韩欧美毛片 | 在线天堂6| 视频一区国产精品 | 亚洲成年人 | 亚洲精品一区二区国产精华液 | av中文字幕免费 | av国产成人 | 亚洲欧美日韩高清 | 亚洲欧美精品 | 2019天天干 | 欧美午夜性春猛交 | 都市激情久久 | 国产成人毛毛毛片 | 日韩av在线网 | 中文字幕第三页 | 久久久久久久久久国产精品 | 在线成人精品视频 | 亚洲乱码国产乱码精品精不卡 | 这里只有精品在线播放 | 欧美精品乱码视频一二专区 | 亚洲欧美在线一区 | 国产午夜精品久久久久久免费视 | 国产亚洲精品久久久久久青梅 | 日韩一级大片 | 亚洲精品99 | 99精品久久久久久中文字幕 | 国产视频手机在线 | 日韩123区 | 最新色网站 | 国产国语性生话播放 | 国产女主播视频一区二区三区 | 91最新国产 | 激情中文字幕 | www.黄色小说.com | 亚洲综合在线观看视频 | 中文字幕成人动漫 | 在线观看亚洲 | 日婷婷| 日韩在线欧美在线 | 国产成人在线播放 | 亚洲一在线 | 国产伦精品一区二区三区免费迷 | 秋葵视频污 | 免费毛片在线 | 超碰97免费在线 | 国产xxxxx| 欧洲av一区二区 | www.激情.com | 成人中文字幕+乱码+中文字幕 | 午夜国产在线观看 | 日本三级小视频 | 亚洲乱码国产乱码精品精98 | 秋霞黄色网| 狠狠干综合 | 亚洲永久精品视频 | 夜夜艹 | 操人视频网站 | 青草伊人久久 | av五月| 亚洲天堂区 | 日韩精品――色哟哟 | 最新国产在线 | 91九色在线视频 | 欧美激情免费在线观看 | 国产福利在线免费观看 | 99久久精品国产毛片 | 美女毛片视频 | 久久精品久久精品久久 | 国产精品久久久久久一区二区 | 亚洲乱码在线观看 | 久操精品视频 | 美女av免费 | 青草久久久 | 亚洲成人欧美成人 | 日韩欧美高清 | 香蕉国产精品 | 在线免费av片 | 午夜影院在线免费观看 | 九九成人 | 91日日| 午夜成年人视频 | 亚洲国产成人91精品 | bbbbbxxxxx性欧美 | 一本色道久久99精品综合蜜臀 | 日日日干干干 | 亚洲成人福利视频 | 成人黄色av网站 | 六月丁香激情 | 亚洲一区二区三区中文字幕 | 韩日免费视频 | 日韩欧美高清在线观看 | 欧美日韩一二三区 | 国产乱码一区二区 | 蜜桃av噜噜一区二区三区小说 | 色视频在线观看 | 黄色小视频免费在线观看 | 欧美丰满一区二区免费视频 | 91av在线播放| 天天干狠狠| 在线国产视频 | 国产美女极度色诱视频www | 成人av色| 九九热精品在线观看 | 中文av资源| 欧美日韩精品在线 | 精品www久久久久久奶水 | 国产日韩欧美自拍 | 午夜男人天堂 | 亚欧在线观看 | 91极品美女 | 国产女人高潮时对白 | 在线看一级片 | 九九视频这里只有精品 | 日本久久综合网 | 爱爱视频天天干 | 黄色特级大片 | 亚洲黄色成人网 | 青青艹在线观看 | 免费视频网站在线观看入口 | 99riav国产在线观看 | 国产视频在线观看一区 | 欧美黑人一区二区三区 | 亚州av在线 | 久久久国产精品一区二区三区 | 男人插女人视频网站 | 欧美久久影院 | 大乳女喂男人吃奶视频 | 久久黄色一级片 | 中文字幕亚洲在线 | 91网在线| 亲女禁h啪啪宫交 | 精品国产精品三级精品av网址 | 亚洲人成在线播放 | 在线观看a视频 | 色黄网站在线观看 | 91免费精品视频 | 国产 欧美 精品 | 国产精品久久久av | 日本黄色小网站 | www精品国产 | 色婷婷亚洲综合 | 国产日韩在线观看视频 | 日韩高清一级 | 日韩成人一区二区 | 国产激情毛片 | 一本毛片| 九一在线观看免费高清视频 | 欧美日本韩国一区二区三区 | 伊人蕉久 | 国产一区亚洲 | 一个色av | 手机看片日韩 | 丰满少妇一区 | 日韩精品一区二区三 | 国产精品日日摸天天碰 | 欧美黑人精品一区二区不卡 | 中文字幕一二三四区 | 国产成人精品影视 | 九九热视频在线播放 | 亚洲aaaaaa特级 | 色婷婷狠狠 | 超碰人人人| 夜夜操操 | 欧美三级视频在线观看 | 好骚综合av | 国产精品v | 人成网站在线观看 | 国产精品久久精品 | 福利网址在线 | 麻豆啪啪 | 久久婷婷国产 | 亚洲免费观看视频 | 九九视频在线观看 | 国产污污网站 | 乱精品一区字幕二区 | 亚洲日本精品视频 | 国产91免费 | 毛片毛片女人毛片毛片 | 国产精品视频免费在线观看 | 一本一道久久a久久 | 人人草在线视频 | 日本99热 | 成人污在线 | 亚洲v | 亚洲天天看 | 影音先锋国产精品 | 色婷婷激情av | 性生活视频播放 | 国产老女人乱淫免费 | 欧美三级韩国三级日本三斤在线观看 | 国产黄a三级三级看三级 | 亚洲精品一线二线三线 | 伊人色综合久久天天 | www.日韩一区 | 性色浪潮av | 先锋影音一区二区三区 | 玖玖在线观看 | 午夜亚洲视频 | 95视频在线观看 | 国语对白真实视频播放 | 欧美精品久久久久久久久老牛影院 | 一卡二卡三卡在线观看 | 色婷婷伊人 | 国产在线精品成人欧美 | 最近中文字幕免费观看 | 国产超碰人人爽人人做人人爱 | 亚洲激情欧美激情 | 久久精品视频2 | 国产精品久久久久久久一区探花 | 韩国三级中文字幕hd久久精品 | 成人亚洲玉足脚交系列 | 91久久天天躁狠狠躁夜夜 | 亚洲国产情侣 | 在线观看黄色大片 | 成人黄色免费网站 | 中文字幕av网站 | a天堂视频在线 | 国产一级在线观看 | 中文字幕在线观看你懂的 | 欧美高清视频 | 成人免费视频一区二区 | 96精品视频 | 波多野吉衣一区二区三区 | 国产精品第2页 | 久久久激情视频 | 国产综合精品 | 国产伊人精品 | 欧美日韩小视频 | 黄色av网站在线观看 | 日韩免费不卡视频 | 公车激情云雨小说 | 天天操夜夜干 | 天天干干 | 狠狠躁天天躁夜夜添人人 | 久艹视频在线 | 在线二区 | 黄色激情视频网站 | 免费在线观看高清影视网站 | 国产成人一区 | 纯爱无遮挡h肉动漫在线播放 | 五月天婷婷在线观看 | 中文字幕免费在线 | 亚洲自拍一区在线观看 | 超碰在线伊人 | 国产成人黄色av | av在线不卡观看 | 久久久夜夜 | 日本黄色不卡 | 亚洲爽爽网 | 日本视频中文字幕 | 天天操天天看 | 久久与婷婷| 日韩欧美视频一区二区三区 | 女同一区二区三区 | 亚洲第一精品网站 | 激情视频在线观看网址 | 精品少妇视频 | 久操五月天 | 国产精品99久久久久久人免费 | 99午夜视频 | 久久精品婷婷 | 色av免费 | 在线欧美成人 | 女人天堂网| 毛片a级片| 中文字幕观看视频 | 最新91视频 | 午夜精品久久久久久久99 | 亚洲黄色录像 | 国产在线观看免费av | 日韩精品久久久久久 | 妖精视频一区二区三区 | 欧美一区二 | 久久久www | 一区二区三区精品视频在线观看 | 五月天一区二区 | 91精品国产综合久久婷婷香蕉 | 国产一区两区 | 玖玖久久 | 欧美一级淫片 | 国产精品色 | 日韩乱论 | 色图一区| 欧美大黑bbbbbbbbb在线 | 中文字幕在线观看网址 | 少妇精品久久久久久久久久 | 春色av| 天堂视频在线观看免费 | av中字在线观看 | wwwxxxxx日本 | 污视频网站在线 | 精品视频一二三区 | www.xxx国产| 成人a免费看 | 精产国产伦理一二三区 | 中文字幕av片 | 一本色道久久综合亚洲精品小说 | 91蜜桃视频在线观看 | 成年网站在线 | 97在线超碰| 亚洲毛片一区二区三区 | 精品一区91 | 伊人称影院| 欧美h在线观看 | 伊人网色 | 秋霞二区| 鸥美毛片| 亚洲丝袜色图 | 天天曰夜夜操 | 天天干天天做 | 久久精品视频播放 | 亚洲小视频在线观看 | 国产精品国色综合久久 | 一级免费在线观看 | 五月婷婷六月天 | 凹凸69堂国产成人精品 | 欧美日韩成人在线视频 | 激情婷婷网 | 欧美亚一区二区三区 | 色婷婷激情五月 | 天天干夜夜 | 天天干天天操天天 | 国产精品xxx在线观看 | 黄色片免费在线播放 | 午夜国产免费 | 久久久一区二区三区 | 国产一区二区激情 | 色视频免费看 | 肉色欧美久久久久久久免费看 | 欧美91成人网 | 玖玖在线资源 | 日韩一级高清 | 91麻豆精品国产91久久久久久久久 | 人人插人人| 免费在线视频一区二区 | 一级特黄欧美 | 天天躁夜夜躁狠狠躁 | 亚洲一区二区三区久久久 | 久久精品这里只有精品 | 国产精品视频一区二区三区四区国 | 九九久久国产精品 | 午夜神器在线观看 | 日本久久一区 | 91丨九色丨丰满人妖 | 午夜寂寞影视 | 国产大片在线观看 | 国产午夜精品一区二区 | 欧美日韩免费在线观看 | 最近2019中文字幕大全视频10 | 亚洲痴女| 国产超碰在线 | 亚洲草草网 | 国产毛片一区 | 一道本综合久久 | 伊伊成人网 | 午夜精品久久久久久久99 | 国产18p | 婷婷精品 | 久久久久久久久久成人 | 亚洲色综合 | 人人人超碰 | 久久美女免费视频 | 天天操天天操天天 | 国产九九精品 | 刺激性视频黄页 | 中文字幕少妇在线三级hd | 中文字幕在线免费 | 青娱乐极品在线 | 在线欧美| 99re热视频| 亚洲丁香色| 国产福利小视频 | 精品综合| 爱爱福利社 | 亚洲在线观看视频 | 国产精品视频一二三 | 成人国产a | 九九热视频免费观看 | 亚洲天堂网在线视频 | 日韩在线播放一区 | 成人小视频在线播放 | 国产毛片毛片毛片毛片毛片毛片 | 日韩精品在线播放 | 99热国内精品 | 天美视频在线观看 | 外国黄色网址 | 97少妇| 黄色三级三级三级 | 成人春色激情网 | 手机在线不卡av | 国产日韩欧美综合在线 | 特一级黄色片 | 在线亚洲天堂 | 在线视频1卡二卡三卡 | 欧美激情精品久久久久久 | 老汉色老汉首页av亚洲 | 波多野吉衣一区二区三区 | 中文字幕男人天堂 | 少妇毛片一区二区三区 | 黄色大片日本 | 亚洲乱码国产乱码精品精在线网站 | 91视频美女 | 精品自拍偷拍 | av字幕在线观看 | 国产91对白在线观看九色 | 国产精品特级毛片一区二区三区 | 大陆av在线 | www.日本色 | 黄色片不卡 | 9191在线视频 | 毛片综合 | 日韩美一区二区三区 | 黄色大毛片 | 天天舔天天射 | 欧美成在线视频 | 午夜色网 | 我和我的太阳泰剧在线观看泰剧 | 成人精品av | 亚洲第一黄色片 | 性感美女一区二区三区 | 国产精品h| 亚洲国产成人aⅴ毛片大全密桃 | 中文字幕一二区 | 午夜在线不卡 | 免费看国产片在线观看 | 国产三级视频在线播放 | 亚洲视频欧美 | 农村黄色片 | 男女一进一出视频 | 在线天堂视频 | 午夜影院 | 国内久久久 | 男女www| 91精品免费看 | 日韩性网 | 国产色播av在线 | 色婷婷视频在线 | 亚洲精选在线观看 | 精品免费一区二区 | 国产乱码精品一区二区三区五月婷 | 麻豆av一区二区 | 全部免费毛片在线播放一个 | 日韩第九页 | 精品视频一区二区三区 | 国产日韩一区二区三区 | 欧美七区| 中文字幕在线一 | 高清乱码毛片入口 | 98国产精品综合一区二区三区 | 日韩在线欧美 | 性欧美大战久久久久久久83 | 亚洲系列在线观看 | 在线黄色免费 | 欧美日韩在线综合 | 免费公开在线视频 | 日本精品视频一区二区三区 | 福利视频在线免费观看 | 国户精品久久久久久久久久久不卡 | 亚洲精品国产一区黑色丝袜 | 久久精品在线视频 | 夜夜躁日日躁狠狠久久av | 精品国产不卡 | 最新国产精品视频 | 91中文字幕在线观看 | 黄色在线观看视频 | 操操操干干干 | 国产精品久久久久久一区二区三区 | 蜜臀久久99精品久久一区二区 | 红桃视频91 | 奇米影视888 | 精精国产xxxx在线观看主放器 | 色偷偷综合网 | 午夜精品一区二区三区在线 | 秋霞网一区二区 | 天天精品| 久伊人| 中文字幕亚洲成人 | 狠狠操在线 | 久久r精品| 国内精品久久久久久久久久久 | 亚洲欧洲国产综合 | 国产tv在线观看 | 国产福利在线视频 | 麻豆福利在线 | 亚洲 欧美 另类 综合 偷拍 | 色婷婷狠狠干 | 九九精品99久久久香蕉 | 婷婷色综合网 | 日韩综合色 | 亚洲少妇精品 | 国产av无毛| 国语对白做受按摩的注意事项 | 久久伊人成人网 | 五月天在线观看 | 福利在线视频导航 | 国产欧美视频一区二区三区 | 精品久久综合1区2区3区激情 | 日韩最新在线 | 国产免费高清av | 日韩精品久久 | 欧美老肥婆性猛交视频 | 国产手机视频在线 | 免费在线日本 | 91久久色| 国产精品福利久久久 | 久久精品www人人爽人人 | 亚洲一区二区久久 | 天天爽一爽 | 一区二区免费高清视频 | 奇米影视狠狠干 | 久久久久久久久久一区二区三区 | 青青在线视频 | 日日摸日日碰 | 91桃色视频 | 久艹在线视频 | 国产大片在线观看 | 中文字幕第2页 | 成年人小视频在线观看 | 国产chinasex麻豆videos | 欧美午夜在线观看 | √天堂 | 殴美一级片 | 天堂网2020 | 91麻豆网站| 成人天堂av | 五月丁香啪啪 | 日本精品影院 | 国产浪潮av| 亚洲一区免费观看 | 国产探花一区 | 天天射av | 日韩视频一区二区 | 久久肉| 婷婷色av| av国语 | 婷婷丁香花五月天 | 亚洲国产精品系列 | 成年人精品 | 国产成人一区二区三区视频 | 日本做爰高潮又黄又爽 | 9p69.com| 久久精品动漫 | 天天射影院 |