加强版的带进度条的传文件和加表情的聊天室 -2
1
package networking;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
import java.awt.*;
4
import java.io.*;
5
import java.net.*;
6
import java.util.*;
7
import javax.swing.*;
8
import javax.swing.text.*;
9![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
/**
11
* client thread that will listent the responses from the server,and update the
12
* information to the gui class
13
*
14
* @author
15
* @version 1.0
16
*/
17
public class ClientThreadHandler implements Runnable
18
{
19
/**
20
* Attributes
21
*/
22
private Socket socket;
23
private ObjectInputStream ois;
24
private ClientGUI clientGUI;
25
private ClientLogin clientLogin;
26
27
/**
28
* Constructor
29
*/
30
public ClientThreadHandler(Socket socket, ObjectInputStream ois,
31
ClientGUI clientGUI, ClientLogin clientLogin)
32
{
33
this.socket = socket;
34
this.ois = ois;
35
this.clientGUI = clientGUI;
36
this.clientLogin = clientLogin;
37
}
38
39
/*
40
* (non-Javadoc)
41
*
42
* @see java.lang.Runnable#run()
43
*/
44
@SuppressWarnings("unchecked")
45
public void run()
46
{
47
while(true)
48
{
49
try
50
{
51
try
52
{
53
DataFrame df = (DataFrame)ois.readObject();
54
if(df.getType().equals("Error"))
55
{
56
String error = (String)df.getObject();
57
if(error.equals("Name already exists"))// name exists
58
{
59
JOptionPane.showMessageDialog(clientLogin
60
.getContentPane(), error, "No Title",
61
JOptionPane.ERROR_MESSAGE);
62
// clientGUI.setVisible(true);
63
clientGUI.dispose();
64
break;
65
}
66
else if(error.equals("IP and port already exist"))// ip
67
// and
68
// port
69
// exist
70
{
71
JOptionPane.showMessageDialog(clientLogin
72
.getContentPane(), error, "No Title",
73
JOptionPane.ERROR_MESSAGE);
74
// clientGUI.setVisible(true);
75
clientGUI.dispose();
76
break;
77
}
78
}
79
else
80
// ok to login
81
{
82
clientLogin.setVisible(false);
83
clientGUI.setVisible(true);
84
}
85
if(df.getType().equals("Message"))// message from the
86
// server
87
{
88
clientGUI.setText((String)df.getObject());
89
}
90
else if(df.getType().startsWith("UserList"))// userlist from
91
// the server
92
{
93
ArrayList<Chatter> al = (ArrayList<Chatter>)df
94
.getObject();
95
clientGUI.setChatters(al);
96
Vector<String> vector = new Vector<String>();
97
vector.addElement("All");// always add "All" option
98
// for the user
99
for(int i = 0; i < al.size(); i++)
100
{
101
vector.addElement(al.get(i).getName() + "-("
102
+ al.get(i).getRoom() + ")");
103
}
104
clientGUI.setChatterList(vector);
105
}
106
else if(df.getType().equals("SendFileError"))
107
{
108
RequestFrame rf = (RequestFrame)df.getObject();
109
Map sendingFiles = clientGUI.getSendingFiles();
110
FileSender fs = (FileSender)sendingFiles.get(rf
111
.getSenderKey());
112
fs.setOkToSend(false);
113
fs.getJoeyLabel().setProcessing(false);
114
fs.getJoeyLabel().setText("Send file error,canceled");
115
fs.getJoeyButton().setVisible(false);
116
sendingFiles.remove(rf.getSenderKey());
117
}
118
else if(df.getType().equals("SendFileSectionError"))
119
{
120
FileFrame ff = (FileFrame)df.getObject();
121
Map sendingFiles = clientGUI.getSendingFiles();
122
FileSender fs = (FileSender)sendingFiles.get(ff
123
.getSenderKey());
124
fs.setOkToSend(false);
125
fs.getJoeyLabel().setProcessing(false);
126
fs.getJoeyLabel().setText("Send file error,canceled");
127
fs.getJoeyButton().setVisible(false);
128
sendingFiles.remove(ff.getSenderKey());
129
}
130
else if(df.getType().equals("ReceiveFileRequest"))
131
{
132
RequestFrame rf = (RequestFrame)df.getObject();
133
Document doc = clientGUI.getJTextPane().getDocument();
134
Style style = clientGUI.getJTextPane().getStyle("JoeyLabel");
135
JoeyLabel joeyLabel = new JoeyLabel();
136
joeyLabel.setText("<html>Receive file '"
137
+ rf.getFileName() + "' from " + rf.getSender()
138
+ "</html>");
139
StyleConstants.setComponent(style, joeyLabel);
140
try
141
{
142
doc.insertString(doc.getLength(), "\n", clientGUI
143
.getJTextPane().getStyle("JoeyLabel"));
144
}
145
catch(BadLocationException ble)
146
{
147
}
148
style = clientGUI.getJTextPane().getStyle("JoeyButton");
149
JoeyButton joeyButton1 = new JoeyButton();
150
joeyButton1.setText("Accept");
151
joeyButton1.setMargin(new Insets(0, 0, 0, 0));
152
StyleConstants.setComponent(style, joeyButton1);
153
try
154
{
155
doc.insertString(doc.getLength(), "\n", clientGUI
156
.getJTextPane().getStyle("JoeyButton"));
157
}
158
catch(BadLocationException ble)
159
{
160
}
161
JoeyButton joeyButton2 = new JoeyButton();
162
joeyButton2.setText("Cancel");
163
joeyButton2.setMargin(new Insets(0, 0, 0, 0));
164
StyleConstants.setComponent(style, joeyButton2);
165
try
166
{
167
doc.insertString(doc.getLength(), "\n", clientGUI
168
.getJTextPane().getStyle("JoeyButton"));
169
}
170
catch(BadLocationException ble)
171
{
172
}
173
FileReceiver fr = new FileReceiver(clientGUI, clientGUI
174
.getClient(), rf,
175
clientGUI.getReceivingFiles(), joeyLabel,
176
joeyButton1, joeyButton2, rf.getFileSize(), rf
177
.getTotalSections(), rf
178
.getPackageSize(), rf.getSenderKey(),
179
rf.getSender(), rf.getReceiver(),rf.getFileName());
180
fr.register();
181
NotifyFrame nf = new NotifyFrame(rf.getSender(), rf
182
.getReceiver(), rf.getSenderKey(), fr.getKey());
183
clientGUI.getClient().send("IGotTheRequest", nf);
184
}
185
else if(df.getType().equals("ReceiveFileAcknowledgement"))
186
{
187
AcknowledgementFrame af = (AcknowledgementFrame)df
188
.getObject();
189
Map sendingFiles = clientGUI.getSendingFiles();
190
FileSender fs = (FileSender)sendingFiles.get(af
191
.getSenderKey());
192
//fs.getJoeyButton().setVisible(false);
193
if(fs != null)
194
{
195
fs.setOkToSend(true);
196
Thread thread = new Thread(
197
new FileSendThreadHandler(fs, af
198
.getReceiverKey()));
199
thread.setPriority(1);
200
thread.start();
201
}
202
}
203
else if(df.getType().equals("ReceiveFileSection"))
204
{
205
FileFrame ff = (FileFrame)df.getObject();
206
Map receivingFiles = clientGUI.getReceivingFiles();
207
FileReceiver fr = (FileReceiver)receivingFiles.get(ff
208
.getReceiverKey());
209
if(fr != null)
210
{
211
fr.receive(ff);
212
}
213
}
214
else if(df.getType().equals("SheGotTheRequest"))
215
{
216
NotifyFrame nf = (NotifyFrame)df.getObject();
217
Map sendingFiles = clientGUI.getSendingFiles();
218
FileSender fs = (FileSender)sendingFiles.get(nf
219
.getSenderKey());
220
if(fs != null)
221
{
222
fs.setReceiverKey(nf.getReceiverKey());
223
}
224
}
225
else if(df.getType().equals(
226
"ReceiveCancelFileSendFromSender"))
227
{
228
CancelFrame cf = (CancelFrame)df.getObject();
229
Map receivingFiles = clientGUI.getReceivingFiles();
230
FileReceiver fr = (FileReceiver)receivingFiles.get(cf
231
.getReceiverKey());
232
if(fr != null)
233
{
234
fr.stop();
235
}
236
}
237
else if(df.getType().equals(
238
"ReceiveCancelFileSendFromReceiver"))
239
{
240
CancelFrame cf = (CancelFrame)df.getObject();
241
Map sendingFiles = clientGUI.getSendingFiles();
242
FileSender fs = (FileSender)sendingFiles.get(cf
243
.getSenderKey());
244
if(fs != null)
245
{
246
fs.stop();
247
}
248
}
249
}
250
catch(Exception e)
251
{
252
socket.close();
253
System.exit(0);
254
}
255
}
256
catch(IOException e)
257
{
258
}
259
}
260
}
261
}
262![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
1
package networking;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
import java.io.*;
4
import java.net.*;
5
import java.util.*;
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
/**
8
* coordinator class that works as a coordinator,which will notice the users
9
* when a new user login or logout,or a user wants to send a message,etc
10
*
11
* @author
12
* @version 1.0
13
*/
14
public class Coordinator
15
{
16
/**
17
* Attributes
18
*/
19
private ArrayList<Caller> callers;
20
private MessageCenter mc;
21
public static Coordinator coordinator;
22
/**
23
* Private class that will work as observable
24
* @author
25
* @version 1.0
26
*/
27
private class MessageCenter extends Observable
28
{
29
public void setChanged()
30
{
31
super.setChanged();
32
}
33
}
34
35
/**
36
* method that will return all the sockets connected
37
*
38
* @return ArrayList<Socket>
39
*/
40
public ArrayList<Socket> getSockets()
41
{
42
ArrayList<Socket> sockets = new ArrayList<Socket>();
43
synchronized(callers)// add a lock,to make sure that when one thread
44
// is dealing with the list,other threads which
45
// want to change the list must wait
46
{
47
for(int i = 0; i < callers.size(); i++)
48
{
49
sockets.add(callers.get(i).getSocket());
50
}
51
}
52
return sockets;
53
}
54
55
/**
56
* Constructor
57
*/
58
private Coordinator()
59
{
60
callers = new ArrayList<Caller>();
61
mc = new MessageCenter();
62
}
63
64
/**
65
* Singleton pattern that will only hold one instance of this class
66
*
67
* @return Coordinator
68
*/
69
public static Coordinator getCoordinator()
70
{
71
if(coordinator == null)
72
{
73
coordinator = new Coordinator();
74
}
75
return coordinator;
76
}
77
/**
78
* Method that will send private information,like sending file request
79
* @param object
80
* @param correctInformation
81
* @param errorInformation
82
* @param receiver
83
* @param sender
84
*/
85
public void sendPrivateInformation(Object object,String correctInformation,String errorInformation,Chatter receiver,
86
Chatter sender)
87
{
88
if(receiver == null)// no such a receiver in the user list
89
{
90
synchronized(callers)// lock to protect the data integrity
91
{
92
for(Caller caller: callers)
93
{
94
if(caller.getSocket().getInetAddress().toString().equals(
95
sender.getIP()))// ip is the same
96
{
97
if(caller.getSocket().getPort() == sender.getPort())// port
98
// is
99
// the
100
// same
101
{
102
try
103
{
104
try
105
{
106
ObjectOutputStream oos = caller
107
.getObjectOutputStream();
108
oos.reset();
109
oos.writeObject(new DataFrame(
110
errorInformation,
111
object));// send error message
112
oos.flush();
113
}
114
catch(InterruptedIOException iioe)
115
{
116
synchronized(this)
117
{
118
Chatter chatter = Secretary
119
.getSecretary().findChatter(
120
caller.getSocket());
121
Secretary.getSecretary().deleteRecord(
122
caller.getSocket());
123
this.notifyOffline(caller, chatter
124
.getRoom());
125
}
126
caller.getSocket().close();
127
}
128
catch(IOException e)
129
{
130
synchronized(this)
131
{
132
Chatter chatter = Secretary
133
.getSecretary().findChatter(
134
caller.getSocket());
135
Secretary.getSecretary().deleteRecord(
136
caller.getSocket());
137
this.notifyOffline(caller, chatter
138
.getRoom());
139
}
140
caller.getSocket().close();
141
}
142
}
143
catch(IOException e)
144
{
145
}
146
}
147
}
148
}
149
}
150
}
151
else
152
// the receiver exists
153
{
154
synchronized(callers)// lock to protect the data integrity
155
{
156
for(Caller caller: callers)
157
{
158
if(caller.getSocket().getInetAddress().toString().equals(
159
receiver.getIP()))
160
{
161
if(caller.getSocket().getPort() == receiver.getPort())
162
{
163
try
164
{
165
try
166
{
167
ObjectOutputStream oos = caller
168
.getObjectOutputStream();
169
oos.reset();
170
oos.writeObject(new DataFrame(
171
correctInformation, object));//send correct message
172
oos.flush();
173
}
174
catch(InterruptedIOException iioe)// time is
175
// up
176
{
177
synchronized(this)
178
{
179
Chatter chatter = Secretary
180
.getSecretary().findChatter(
181
caller.getSocket());
182
Secretary.getSecretary().deleteRecord(
183
caller.getSocket());
184
this.notifyOffline(caller, chatter
185
.getRoom());
186
}
187
caller.getSocket().close();
188
}
189
catch(IOException e)// disconnected
190
{
191
synchronized(this)
192
{
193
Chatter chatter = Secretary
194
.getSecretary().findChatter(
195
caller.getSocket());
196
Secretary.getSecretary().deleteRecord(
197
caller.getSocket());
198
this.notifyOffline(caller, chatter
199
.getRoom());
200
}
201
caller.getSocket().close();
202
}
203
}
204
catch(IOException e)
205
{
206
}
207
}
208
}
209
}
210
}
211
}
212
}
213
/**
214
* method that will send a private message from the sender to the receiver
215
*
216
* @param message
217
* @param receiver
218
* @param sender
219
*/
220
public void sendPrivateMessage(String message, Chatter receiver,
221
Chatter sender)
222
{
223
if(message == null)
224
{
225
return;
226
}
227
if(receiver == null)// no such a receiver in the user list
228
{
229
synchronized(callers)// lock to protect the data integrity
230
{
231
for(Caller caller: callers)
232
{
233
if(caller.getSocket().getInetAddress().toString().equals(
234
sender.getIP()))// ip is the same
235
{
236
if(caller.getSocket().getPort() == sender.getPort())// port
237
// is
238
// the
239
// same
240
{
241
try
242
{
243
try
244
{
245
ObjectOutputStream oos = caller
246
.getObjectOutputStream();
247
oos.reset();
248
oos.writeObject(new DataFrame("Error",
249
"No such name"));// send error
250
// message back
251
// to the sender
252
oos.flush();
253
}
254
catch(InterruptedIOException iioe)
255
{
256
synchronized(this)
257
{
258
Chatter chatter = Secretary
259
.getSecretary().findChatter(
260
caller.getSocket());
261
Secretary.getSecretary().deleteRecord(
262
caller.getSocket());
263
this.notifyOffline(caller, chatter
264
.getRoom());
265
}
266
caller.getSocket().close();
267
}
268
catch(IOException e)
269
{
270
synchronized(this)
271
{
272
Chatter chatter = Secretary
273
.getSecretary().findChatter(
274
caller.getSocket());
275
Secretary.getSecretary().deleteRecord(
276
caller.getSocket());
277
this.notifyOffline(caller, chatter
278
.getRoom());
279
}
280
caller.getSocket().close();
281
}
282
}
283
catch(IOException e)
284
{
285
}
286
}
287
}
288
}
289
}
290
}
291
else
292
// the receiver exists
293
{
294
synchronized(callers)// lock to protect the data integrity
295
{
296
for(Caller caller: callers)
297
{
298
if(caller.getSocket().getInetAddress().toString().equals(
299
receiver.getIP()))
300
{
301
if(caller.getSocket().getPort() == receiver.getPort())
302
{
303
try
304
{
305
try
306
{
307
ObjectOutputStream oos = caller
308
.getObjectOutputStream();
309
oos.reset();
310
oos.writeObject(new DataFrame("Message",
311
"From " + sender.getName() + " To "
312
+ receiver.getName()
313
+ ":\n" + message));// send
314
// the
315
// private
316
// message
317
oos.flush();
318
}
319
catch(InterruptedIOException iioe)// time is
320
// up
321
{
322
synchronized(this)
323
{
324
Chatter chatter = Secretary
325
.getSecretary().findChatter(
326
caller.getSocket());
327
Secretary.getSecretary().deleteRecord(
328
caller.getSocket());
329
this.notifyOffline(caller, chatter
330
.getRoom());
331
}
332
caller.getSocket().close();
333
}
334
catch(IOException e)// disconnected
335
{
336
synchronized(this)
337
{
338
Chatter chatter = Secretary
339
.getSecretary().findChatter(
340
caller.getSocket());
341
Secretary.getSecretary().deleteRecord(
342
caller.getSocket());
343
this.notifyOffline(caller, chatter
344
.getRoom());
345
}
346
caller.getSocket().close();
347
}
348
}
349
catch(IOException e)
350
{
351
}
352
}
353
}
354
}
355
}
356
synchronized(callers)// lock to protect the data integrity
357
{
358
for(Caller caller: callers)
359
{
360
if(caller.getSocket().getInetAddress().toString().equals(
361
sender.getIP()))// ip is the same
362
{
363
if(caller.getSocket().getPort() == sender.getPort())// port
364
// is
365
// the
366
// same
367
{
368
try
369
{
370
try
371
{
372
ObjectOutputStream oos = caller
373
.getObjectOutputStream();
374
oos.reset();
375
oos.writeObject(new DataFrame("Message",
376
"From " + sender.getName() + " To "
377
+ receiver.getName()
378
+ ":\n" + message));// send
379
// the
380
// private
381
// message
382
oos.flush();
383
}
384
catch(InterruptedIOException iioe)
385
{
386
synchronized(this)
387
{
388
Chatter chatter = Secretary
389
.getSecretary().findChatter(
390
caller.getSocket());
391
Secretary.getSecretary().deleteRecord(
392
caller.getSocket());
393
this.notifyOffline(caller, chatter
394
.getRoom());
395
}
396
caller.getSocket().close();
397
}
398
catch(IOException e)
399
{
400
synchronized(this)
401
{
402
Chatter chatter = Secretary
403
.getSecretary().findChatter(
404
caller.getSocket());
405
Secretary.getSecretary().deleteRecord(
406
caller.getSocket());
407
this.notifyOffline(caller, chatter
408
.getRoom());
409
}
410
caller.getSocket().close();
411
}
412
}
413
catch(IOException e)
414
{
415
}
416
}
417
}
418
}
419
}
420
}
421
}
422
/**
423
* method that will send the public message to all the people in that room
424
*
425
* @param chatter
426
* @param message
427
*/
428
public void sendPublicMessage(Chatter chatter, String message)
429
{
430
if(message == null)
431
{
432
return;
433
}
434
ArrayList<Caller> disconnects = new ArrayList<Caller>();
435
synchronized(callers)// lock to protect the data integrity
436
{
437
for(Caller caller: callers)
438
{
439
Chatter targetChatter = Secretary.getSecretary().findChatter(
440
caller.getSocket());
441
if(targetChatter.getRoom().equals(chatter.getRoom()))
442
{
443
try
444
{
445
ObjectOutputStream oos = caller.getObjectOutputStream();
446
oos.reset();
447
oos.writeObject(new DataFrame("Message", "From "
448
+ chatter.getName() + " To " + "all" + ":\n"
449
+ message));// send the public message
450
oos.flush();
451
}
452
catch(InterruptedIOException iioe)
453
{
454
disconnects.add(caller);
455
}
456
catch(IOException e)
457
{
458
disconnects.add(caller);
459
}
460
}
461
}
462
}
463
for(Caller caller: disconnects)
464
{
465
try
466
{
467
synchronized(this)
468
{
469
Chatter targetChatter = Secretary.getSecretary()
470
.findChatter(caller.getSocket());
471
Secretary.getSecretary().deleteRecord(caller.getSocket());
472
this.notifyOffline(caller, targetChatter.getRoom());// notify
473
// the
474
// users
475
// that
476
// this
477
// user has left
478
}
479
caller.getSocket().close();
480
}
481
catch(IOException e)
482
{
483
}
484
}
485
}
486
487
/**
488
* method that will notify all the people in the user's previous room that
489
* the user has left,and it will notify all the people in the user's next
490
* room that the user has joined,and it will also notify the people in the
491
* hall that the user has changed his room
492
*
493
* @param previousRoom
494
* @param nextRoom
495
*/
496
public void updateRooms(String previousRoom, String nextRoom)
497
{
498
synchronized(this.mc)
499
{
500
this.mc.setChanged();
501
this.mc.notifyObservers(previousRoom);
502
this.mc.setChanged();
503
this.mc.notifyObservers(nextRoom);
504
}
505
}
506
507
/**
508
* method that will find the chatter through the socket
509
*
510
* @param socket
511
* @return Caller
512
*/
513
public Caller findCaller(Socket socket)
514
{
515
synchronized(callers)
516
{
517
for(Caller caller: callers)
518
{
519
if(caller.getSocket().getInetAddress().equals(
520
socket.getInetAddress())
521
&& caller.getSocket().getPort() == socket.getPort())
522
{
523
return caller;
524
}
525
}
526
}
527
return null;
528
}
529
530
/**
531
* method that will notify all the people in the hall that a new user has
532
* joined
533
*
534
* @param caller
535
*/
536
public void notifyOnline(Caller caller)
537
{
538
if(caller != null)
539
{
540
synchronized(this)
541
{
542
synchronized(this.callers)
543
{
544
this.callers.add(caller);
545
}
546
synchronized(this.mc)
547
{
548
this.mc.addObserver(caller);
549
this.mc.setChanged();
550
this.mc.notifyObservers("Hall");
551
}
552
}
553
}
554
}
555
556
/**
557
* method that will notify the people in the user's room that he has
558
* left,and it will also notify all the people in the hall that the user has
559
* left
560
*
561
* @param caller
562
* @param room
563
*/
564
public void notifyOffline(Caller caller, String room)
565
{
566
if(caller != null)
567
{
568
synchronized(this)
569
{
570
synchronized(this.callers)
571
{
572
this.callers.remove(caller);
573
}
574
synchronized(this.mc)
575
{
576
this.mc.deleteObserver(caller);
577
this.mc.setChanged();
578
this.mc.notifyObservers(room);
579
}
580
}
581
}
582
}
583
584
/**
585
* method that will return the count of all the callers(connected endpoint)
586
*
587
* @return total callers
588
*/
589
public int count()
590
{
591
synchronized(this.callers)
592
{
593
return this.callers.size();
594
}
595
}
596
}
597![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
264
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
266
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
268
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
270
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
272
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
276
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
280
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
282
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
283
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
284
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
285
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
286
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
287
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
288
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
289
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
290
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
291
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
294
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
296
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
298
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
301
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
302
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
303
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
304
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
305
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
306
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
307
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
308
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
319
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
320
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
321
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
322
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
323
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
324
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
326
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
328
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
330
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
331
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
332
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
334
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
336
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
338
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
340
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
341
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
342
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
343
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
344
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
345
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
346
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
348
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
349
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
350
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
351
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
352
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
353
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
354
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
355
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
356
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
358
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
360
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
362
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
363
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
364
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
366
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
368
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
370
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
372
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
376
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
378
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
382
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
383
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
384
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
386
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
388
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
390
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
394
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
396
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
398
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
400
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
401
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
402
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
406
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
408
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
410
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
412
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
413
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
414
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
415
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
416
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
417
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
418
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
419
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
420
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
421
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
422
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
423
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
424
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
426
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
428
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
429
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
430
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
431
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
432
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
434
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
435
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
436
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
437
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
438
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
439
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
441
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
442
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
443
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
444
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
445
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
446
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
447
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
448
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
449
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
451
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
452
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
453
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
454
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
455
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
456
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
457
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
458
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
459
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
460
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
461
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
462
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
463
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
464
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
465
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
466
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
467
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
468
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
469
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
470
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
471
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
472
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
473
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
474
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
475
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
476
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
477
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
478
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
479
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
480
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
481
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
482
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
483
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
484
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
485
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
486
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
487
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
488
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
489
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
490
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
491
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
492
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
493
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
494
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
495
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
496
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
497
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
498
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
499
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
500
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
501
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
502
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
503
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
504
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
505
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
506
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
507
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
508
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
509
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
510
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
511
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
512
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
513
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
514
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
515
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
516
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
517
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
518
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
519
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
520
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
521
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
522
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
523
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
524
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
525
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
526
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
527
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
528
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
529
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
530
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
531
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
532
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
533
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
534
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
535
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
536
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
537
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
538
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
539
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
540
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
541
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
542
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
543
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
544
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
545
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
546
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
547
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
548
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
549
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
550
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
551
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
552
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
553
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
554
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
555
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
556
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
557
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
558
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
559
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
560
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
561
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
562
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
563
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
564
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
565
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
566
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
567
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
568
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
569
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
570
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
571
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
572
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
573
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
574
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
575
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
576
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
577
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
578
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
579
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
580
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
581
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
582
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
583
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
584
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
585
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
586
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
587
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
588
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
589
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
590
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
591
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
592
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
593
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
594
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
595
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
596
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
597
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
1
package networking;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
import java.io.*;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
/**
6
* class that will be used to transport through the network
7
*
8
* @author
9
* @version 1.0
10
*/
11
public class DataFrame implements Serializable
12
{
13
/**
14
* Attributes
15
*/
16
private static final long serialVersionUID = 1L;
17
private String type;
18
private Object object;
19
20
/**
21
* Constructor
22
*/
23
public DataFrame(String type, Object object)
24
{
25
this.type = type;
26
this.object = object;
27
}
28
29
/**
30
* getter
31
*
32
* @return Objecct
33
*/
34
public Object getObject()
35
{
36
return this.object;
37
}
38
39
/**
40
* getter
41
*
42
* @return String
43
*/
44
public String getType()
45
{
46
return this.type;
47
}
48
}
49![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
1
package networking;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
import java.awt.*;
4
import javax.swing.*;
5
import javax.swing.text.*;
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
/**
8
* Class that will allow the users to choose emotion pictures
9
* @author
10
* @version 1.0
11
*/
12
public class EmotionButtons extends JFrame
13
{
14
/**
15
* Attributes
16
*/
17
private static final long serialVersionUID = 1L;
18
private JPanel jContentPane = null;
19
private JDesktopPane jDesktopPane = null;
20
private JButton jButton = null;
21
private JButton jButton1 = null;
22
private JButton jButton2 = null;
23
private JButton jButton3 = null;
24
private JButton jButton4 = null;
25
private JButton jButton5 = null;
26
private ClientGUI clientGUI = null;
27
28
/**
29
* This is the default constructor
30
*/
31
public EmotionButtons(ClientGUI clientGUI)
32
{
33
this.clientGUI = clientGUI;
34
initialize();
35
}
36
37
/**
38
* This method initializes this
39
*
40
* @return void
41
*/
42
private void initialize()
43
{
44
this.setSize(757, 424);
45
this.setContentPane(getJContentPane());
46
this.setTitle("JFrame");
47
}
48
49
/**
50
* This method initializes jContentPane
51
*
52
* @return javax.swing.JPanel
53
*/
54
private JPanel getJContentPane()
55
{
56
if(jContentPane == null)
57
{
58
jContentPane = new JPanel();
59
jContentPane.setLayout(new BorderLayout());
60
jContentPane.add(getJDesktopPane(), BorderLayout.CENTER);
61
}
62
return jContentPane;
63
}
64
65
/**
66
* This method initializes jDesktopPane
67
*
68
* @return javax.swing.JDesktopPane
69
*/
70
private JDesktopPane getJDesktopPane()
71
{
72
if(jDesktopPane == null)
73
{
74
jDesktopPane = new JDesktopPane();
75
jDesktopPane.add(getJButton(), null);
76
jDesktopPane.add(getJButton1(), null);
77
jDesktopPane.add(getJButton2(), null);
78
jDesktopPane.add(getJButton3(), null);
79
jDesktopPane.add(getJButton4(), null);
80
jDesktopPane.add(getJButton5(), null);
81
}
82
return jDesktopPane;
83
}
84
85
/**
86
* This method initializes jButton
87
*
88
* @return javax.swing.JButton
89
*/
90
private JButton getJButton()
91
{
92
if(jButton == null)
93
{
94
jButton = new JButton();
95
jButton.setBounds(new Rectangle(457, 80, 290, 307));
96
jButton.setBorder(null);
97
jButton.setIcon(new ImageIcon("../res/wodao.gif"));
98
jButton.addActionListener(new java.awt.event.ActionListener()
99
{
100
public void actionPerformed(java.awt.event.ActionEvent e)
101
{
102
Document doc = clientGUI.getJContentTextArea()
103
.getDocument();
104
try
105
{
106
doc.insertString(doc.getLength(), "[em01]", clientGUI
107
.getJContentTextArea().getStyle("[em01]"));
108
EmotionButtons.this.dispose();
109
}
110
catch(BadLocationException ble)
111
{
112
}
113
}
114
});
115
}
116
return jButton;
117
}
118
119
/**
120
* This method initializes jButton1
121
*
122
* @return javax.swing.JButton
123
*/
124
private JButton getJButton1()
125
{
126
if(jButton1 == null)
127
{
128
jButton1 = new JButton();
129
jButton1.setBounds(new Rectangle(6, 4, 280, 249));
130
jButton1.setBorder(null);
131
jButton1.setIcon(new ImageIcon("../res/daqiang.gif"));
132
jButton1.addActionListener(new java.awt.event.ActionListener()
133
{
134
public void actionPerformed(java.awt.event.ActionEvent e)
135
{
136
Document doc = clientGUI.getJContentTextArea()
137
.getDocument();
138
try
139
{
140
doc.insertString(doc.getLength(), "[em02]", clientGUI
141
.getJContentTextArea().getStyle("[em02]"));
142
EmotionButtons.this.dispose();
143
}
144
catch(BadLocationException ble)
145
{
146
}
147
}
148
});
149
}
150
return jButton1;
151
}
152
153
/**
154
* This method initializes jButton2
155
*
156
* @return javax.swing.JButton
157
*/
158
private JButton getJButton2()
159
{
160
if(jButton2 == null)
161
{
162
jButton2 = new JButton();
163
jButton2.setBounds(new Rectangle(313, 11, 100, 100));
164
jButton2.setBorder(null);
165
jButton2.setIcon(new ImageIcon("../res/zhaobian.jpg"));
166
jButton2.addActionListener(new java.awt.event.ActionListener()
167
{
168
public void actionPerformed(java.awt.event.ActionEvent e)
169
{
170
Document doc = clientGUI.getJContentTextArea()
171
.getDocument();
172
try
173
{
174
doc.insertString(doc.getLength(), "[em03]", clientGUI
175
.getJContentTextArea().getStyle("[em03]"));
176
EmotionButtons.this.dispose();
177
}
178
catch(BadLocationException ble)
179
{
180
}
181
}
182
});
183
}
184
return jButton2;
185
}
186
187
/**
188
* This method initializes jButton3
189
*
190
* @return javax.swing.JButton
191
*/
192
private JButton getJButton3()
193
{
194
if(jButton3 == null)
195
{
196
jButton3 = new JButton();
197
jButton3.setBounds(new Rectangle(312, 257, 100, 120));
198
jButton3.setBorder(null);
199
jButton3.setIcon(new ImageIcon("../res/shi.gif"));
200
jButton3.addActionListener(new java.awt.event.ActionListener()
201
{
202
public void actionPerformed(java.awt.event.ActionEvent e)
203
{
204
Document doc = clientGUI.getJContentTextArea()
205
.getDocument();
206
try
207
{
208
doc.insertString(doc.getLength(), "[em04]", clientGUI
209
.getJContentTextArea().getStyle("[em04]"));
210
EmotionButtons.this.dispose();
211
}
212
catch(BadLocationException ble)
213
{
214
}
215
}
216
});
217
}
218
return jButton3;
219
}
220
221
/**
222
* This method initializes jButton4
223
*
224
* @return javax.swing.JButton
225
*/
226
private JButton getJButton4()
227
{
228
if(jButton4 == null)
229
{
230
jButton4 = new JButton();
231
jButton4.setBounds(new Rectangle(152, 285, 105, 92));
232
jButton4.setBorder(null);
233
jButton4.setIcon(new ImageIcon("../res/buhuiba.jpg"));
234
jButton4.addActionListener(new java.awt.event.ActionListener()
235
{
236
public void actionPerformed(java.awt.event.ActionEvent e)
237
{
238
Document doc = clientGUI.getJContentTextArea()
239
.getDocument();
240
try
241
{
242
doc.insertString(doc.getLength(), "[em05]", clientGUI
243
.getJContentTextArea().getStyle("[em05]"));
244
EmotionButtons.this.dispose();
245
}
246
catch(BadLocationException ble)
247
{
248
}
249
}
250
});
251
}
252
return jButton4;
253
}
254
255
/**
256
* This method initializes jButton5
257
*
258
* @return javax.swing.JButton
259
*/
260
private JButton getJButton5()
261
{
262
if(jButton5 == null)
263
{
264
jButton5 = new JButton();
265
jButton5.setBounds(new Rectangle(302, 127, 128, 128));
266
jButton5.setBorder(null);
267
jButton5.setIcon(new ImageIcon("../res/buyaofanwo.gif"));
268
jButton5.addActionListener(new java.awt.event.ActionListener()
269
{
270
public void actionPerformed(java.awt.event.ActionEvent e)
271
{
272
Document doc = clientGUI.getJContentTextArea()
273
.getDocument();
274
try
275
{
276
doc.insertString(doc.getLength(), "[em06]", clientGUI
277
.getJContentTextArea().getStyle("[em06]"));
278
EmotionButtons.this.dispose();
279
}
280
catch(BadLocationException ble)
281
{
282
}
283
}
284
});
285
}
286
return jButton5;
287
}
288
}
289![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
264
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
266
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
268
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
270
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
272
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
276
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
280
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
282
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
283
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
284
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
285
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
286
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
288
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
289
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)