|
package com.electric.chargingpile.activity;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import androidx.appcompat.app.AlertDialog;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.electric.chargingpile.R;
import com.electric.chargingpile.application.MainApplication;
import com.electric.chargingpile.manager.ProfileManager;
import com.electric.chargingpile.util.ActivityManagerApplication;
import com.electric.chargingpile.util.BarColorUtil;
import com.electric.chargingpile.util.DES3;
import com.electric.chargingpile.util.ImageTools;
import com.electric.chargingpile.util.JsonUtils;
import com.electric.chargingpile.util.LoadingDialog;
import com.electric.chargingpile.util.OkHttpUtil;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.umeng.analytics.MobclickAgent;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.URLEncoder;
import java.security.MessageDigest;
import okhttp3.Call;
import pub.devrel.easypermissions.EasyPermissions;
public class UserCenterMoreActivity extends Activity implements View.OnClickListener {
private static final String TAG = "UserCenterMoreActivity";
private RelativeLayout rl_recommend, rl_feedback, rl_about, rl_message, rl_update, rl_alter_password;
private ImageView iv_back, iv_message, iv_fen;
private String now_version, app_version;
private TextView tv_exit;
private String now_versionCode, now_versionName;
private android.view.animation.Animation animation;
private ImageView point, iv_message_f;
private Socket socket;
private String Token = "";
static String token = "";
public static long cha;
LoadingDialog dialog;
Dialog et_dialog;
private Handler handler = new Handler() {
// 主线程通过这个方法处理消息
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
// case 1:
// try {
// now_version = msg.obj.toString();
//
// Log.e("version_now", now_version);
// if (!app_version.equals(now_version)){
// dialogup();
// }else{
// Toast.makeText(UserCenterMoreActivity.this,"当前为最新版本"+now_version,Toast.LENGTH_SHORT).show();
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// break;
case 2:
dialog.cancel();
Log.e(TAG, "handleMessage: " + msg.obj.toString());
String rtnCode1 = JsonUtils.getKeyResult(msg.obj.toString(), "rtnCode");
if (rtnCode1.equals("0")) {
String data = JsonUtils.getKeyResult(msg.obj.toString(), "data");
String version = JsonUtils.getKeyResult(data, "version");
Log.e("!!!", data);
try {
com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(version);
com.alibaba.fastjson.JSONObject version1 = jsonArray.getJSONObject(0);
String android = JsonUtils.getKeyResult(version1.toJSONString(), "android");
System.out.println(android);
now_versionCode = JsonUtils.getKeyResult(android, "versionCode");
now_versionName = JsonUtils.getKeyResult(android, "versionName");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("versionCode " + now_versionCode);
System.out.println("versionName " + now_versionName);
int new_versionCode = 0;
if (now_versionCode != null) {
new_versionCode = Integer.parseInt(now_versionCode);
}
//
if (new_versionCode - getVersionCode(getApplication()) > 0) {
dialogup();
} else {
Toast.makeText(UserCenterMoreActivity.this, "当前为最新版本" + now_versionName, Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(UserCenterMoreActivity.this, "数据请求超时", Toast.LENGTH_SHORT).show();
}
// dialogup();
break;
case 11:
try {
JSONObject object = new JSONObject(msg.obj.toString());
String rtnCode = object.getString("rtnCode");
String rtnMsg = object.getString("rtnMsg");
Log.e("rtnMsg", rtnMsg);
} catch (JSONException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_center_more);
BarColorUtil.initStatusBarColor(UserCenterMoreActivity.this);
dialog = new LoadingDialog(this);
dialog.setCanceledOnTouchOutside(false);
initView();
}
private void initView() {
iv_message_f = (ImageView) findViewById(R.id.iv_message);
point = (ImageView) findViewById(R.id.tv_one);
animation = AnimationUtils.loadAnimation(UserCenterMoreActivity.this, R.anim.nn);
rl_recommend = (RelativeLayout) findViewById(R.id.rl_recommend);
rl_recommend.setOnClickListener(this);
rl_feedback = (RelativeLayout) findViewById(R.id.rl_feedback);
rl_feedback.setOnClickListener(this);
rl_about = (RelativeLayout) findViewById(R.id.rl_about);
rl_about.setOnClickListener(this);
findViewById(R.id.rl_alter_password).setOnClickListener(this);
// iv_fen = (ImageView) findViewById(R.id.imageView11);
tv_exit = (TextView) findViewById(R.id.tv_exit);
tv_exit.setOnClickListener(this);
if (!MainApplication.isLogin()) {
tv_exit.setVisibility(View.GONE);
}
rl_update = (RelativeLayout) findViewById(R.id.rl_update);
rl_update.setOnClickListener(this);
iv_back = (ImageView) findViewById(R.id.iv_back);
iv_back.setOnClickListener(this);
//
}
private void showDialog() {
//自定义dialog
LayoutInflater inflater = LayoutInflater.from(UserCenterMoreActivity.this);
View view = inflater.inflate(R.layout.dialog_alter_password, null);
// 对话框
et_dialog = new Dialog(UserCenterMoreActivity.this);
et_dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
et_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
et_dialog.setCanceledOnTouchOutside(true);
et_dialog.show();
// 设置宽度为屏幕的宽度
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = et_dialog.getWindow().getAttributes();
lp.width = (int) (display.getWidth()); // 设置宽度
et_dialog.getWindow().setAttributes(lp);
et_dialog.getWindow().setContentView(view);
TextView tv_sure = (TextView) view.findViewById(R.id.tv_sure);// 确认
TextView tv_cancel = (TextView) view.findViewById(R.id.tv_cancel);// 取消
final EditText et_alter_info = (EditText) view.findViewById(R.id.et_alter_info);// 电话
et_alter_info.setFocusable(true);
tv_sure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(et_alter_info.getText().toString())) {
Toast.makeText(getApplicationContext(), "请填写原密码", Toast.LENGTH_SHORT).show();
} else {
validatePassword(et_alter_info.getText().toString());
}
}
});
tv_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et_dialog.cancel();
}
});
}
private void validatePassword(final String password) {
dialog.show();
long appTime1 = System.currentTimeMillis() / 1000;
long updatetime = appTime1 - MainMapActivity.cha - 6;
String token = "";
try {
token = URLEncoder.encode(DES3.encode(String.valueOf(updatetime)));
} catch (Exception e) {
e.printStackTrace();
}
try {
String url = MainApplication.url + "/zhannew/basic/web/index.php/tpmember/test?" +
"password=" + URLEncoder.encode(password) + "&phone=" + MainApplication.userPhone + "&token=" + token;
Log.d("url===", url);
OkHttpUtils.get().url(url).build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
}
@Override
public void onResponse(String response) {
dialog.cancel();
String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
// Toast.makeText(getApplicationContext(),rtnCode,Toast.LENGTH_SHORT).show();
if (rtnCode.equals("00")) {
et_dialog.cancel();
ActivityManagerApplication.addDestoryActivity(UserCenterMoreActivity.this, "UserCenterMoreActivity");
Intent intent = new Intent(getApplicationContext(), AlterPasswordActivity.class);
intent.putExtra("old_password", password);
startActivity(intent);
} else if (rtnCode.equals("04")) {
Toast.makeText(getApplicationContext(), "密码错误,请重新输入,如果忘记密码,可以在登录页面中点击忘记密码更改", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "验证超时", Toast.LENGTH_SHORT).show();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private void showInputMethod() {
//自动弹出键盘
InputMethodManager inputManager = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
//强制隐藏Android输入法窗口
// inputManager.hideSoftInputFromWindow(edit.getWindowToken(),0);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rl_alter_password:
if (!MainApplication.isLogin()) {
Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplication(), LoginActivity.class));
} else {
showDialog();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showInputMethod();
}
}, 100);
}
break;
case R.id.rl_recommend:
if (MainApplication.isLogin()) {
startActivity(new Intent(this, UserInfoActivity.class));
} else {
Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplication(), LoginActivity.class));
}
break;
case R.id.rl_feedback:
Intent intentt = new Intent(getApplication(), MyWebViewActivity.class);
intentt.putExtra("url", "http://evcharge.cc/cdz/newcharge-help.html");
startActivity(intentt);
break;
case R.id.rl_about:
startActivity(new Intent(getApplication(), AboutActivity.class));
break;
case R.id.rl_update:
// getVersion();
getVersionCode(getApplication());
eteinit("{\"fun\":\"timer\"}");
dialog.show();
// appVersion();
// Animation animation = AnimationUtils.loadAnimation(getApplication(), R.anim.gradually);
// iv_fen.startAnimation(animation);
break;
case R.id.iv_back:
finish();
break;
case R.id.tv_exit:
AlertDialog.Builder builder = new AlertDialog.Builder(UserCenterMoreActivity.this);
builder.setTitle("提示");
builder.setMessage("确认退出当前的账号?");
builder.setCancelable(false);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// MobclickAgent.onProfileSignOff();
try {
sendLoginStatus();
} catch (Exception e) {
e.printStackTrace();
}
deleteUserInfo();
SharedPreferences sharedPreferences = getSharedPreferences("userInfo",
Activity.MODE_PRIVATE);
sharedPreferences.edit().clear();
tv_exit.setVisibility(View.GONE);
finish();
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
// new com.electric.chargingpile.view.AlertDialog(UserCenterMoreActivity.this).builder()
// .setMsg("确定要退出?")
// .setPositiveButton("确定", new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// MobclickAgent.onProfileSignOff();
// try {
// sendLoginStatus();
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// deleteUserInfo();
// SharedPreferences sharedPreferences = getSharedPreferences("userInfo",
// Activity.MODE_PRIVATE);
// sharedPreferences.edit().clear();
//
// tv_exit.setVisibility(View.GONE);
// finish();
// }
// }).setNegativeButton("取消", new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
// }
// }).show();
break;
}
}
private void deleteUserInfo() {
//保存用户id
MainApplication.userId = "";
ProfileManager.getInstance().setUserid(getApplicationContext(), "");
//保存用户昵称
MainApplication.userNickname = "";
ProfileManager.getInstance().setNickname(getApplicationContext(), "");
//保存用户手机号
MainApplication.userPhone = "";
ProfileManager.getInstance().setUsername(getApplicationContext(), "");
//保存用户头像
MainApplication.userIcon = "";
ProfileManager.getInstance().setUsericon(getApplicationContext(), "");
//保存用户车型
MainApplication.userCar = "";
ProfileManager.getInstance().setUsercar(getApplicationContext(), "");
//保存用户密码
MainApplication.userPassword = "";
ProfileManager.getInstance().setKeyUserpassword(getApplicationContext(), "");
if (isPermissionOK()) {
if (ImageTools.findPhotoFromSDCard(MainApplication.storePath, "user_icon")) {
ImageTools.deletePhotoAtPathAndName(MainApplication.storePath, "user_icon");
}
}
}
private boolean isPermissionOK() {
return EasyPermissions.hasPermissions(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
);
}
//发送用户退出状态接口
private void sendLoginStatus() throws Exception {
long appTime1 = System.currentTimeMillis() / 1000;
Log.i("appTime(long)---", appTime1 + "");
long updatetime = appTime1 - MainMapActivity.cha - 3;
Log.i("updatetime(long)---", updatetime + "");
Log.i("cha---", MainMapActivity.cha + "");
String token = String.valueOf(updatetime);
String encode_token = DES3.encode(token);
String replace = URLEncoder.encode(encode_token, "UTF-8");
String url = MainApplication.url + "/zhannew/basic/web/index.php/tpmember/logout?phone="
+ MainApplication.userPhone + "&password=" + URLEncoder.encode(MainApplication.userPassword, "UTF-8") + "&token=" + replace
+ "&imei=" + "android_" + MainApplication.imei + "®istration_id=" + MainApplication.getInstance().getPushID();
Log.i("token解密:", DES3.decode(encode_token));
OkHttpUtils.get()
.url(url)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
}
@Override
public void onResponse(String response) {
Log.e("exitLogin===", response);
}
});
}
public void eteinit(final String params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 创建Socket
// socket = new Socket("192.168.1.110",54321);
socket = new Socket("cdz.evcharge.cc", 9503); // IP:10.14.114.127,端口54321
// 向服务器发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println(params);
// out.println("{\"fun\":\"getcity\"}");
// 接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// Message message = handle.obtainMessage();
// message.obj = line;
// message.arg1 = 1;
// handle.sendMessage(message);
String msg = br.readLine();
Log.d("dddddss", msg);
// System.out.print("www:"+qqq);
// Log.d("qqq",key);
// if (msg != null) {
// Message mes = new Message();
// mes.obj = msg;
// mes.what = 2;
// hand.sendMessage(mes);
// }
// Message message = handler.obtainMessage();
// message.obj = line;
// message.arg1 = 17;
// handler.sendMessage(message);
token = msg;
int time = (int) (System.currentTimeMillis() / 1000);
// cha = String.valueOf(time - Integer.parseInt(msg));
cha = time - Integer.parseInt(msg);
Token = getMD5(String.valueOf((System.currentTimeMillis() / 1000 - cha) / 10) + "qwerty");
Log.d("11111", "{\"fun\":\"init\",\"timer\":" + "\"" + Token + "\"" + "}");
ete2("{\"fun\":\"init\",\"timer\":" + "\"" + Token + "\"" + "}");
// 关闭流
// out.close();
// br.close();
// // 关闭Socket
// socket.close();
} catch (Exception e) {
}
}
}).start();
}
public void ete2(final String params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 创建Socket
// socket = new Socket("192.168.1.110",54321);
socket = new Socket("cdz.evcharge.cc", 9503); // IP:10.14.114.127,端口54321
// 向服务器发送消息
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
out.println(params);
// out.println("{\"fun\":\"getcity\"}");
// 接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// Message message = handle.obtainMessage();
// message.obj = line;
// message.arg1 = 1;
// handle.sendMessage(message);
String msg = br.readLine();
if (msg != null) {
Message mes = new Message();
mes.obj = msg;
mes.what = 2;
handler.sendMessage(mes);
}
Log.d("dddddmm", msg);
System.out.print("qwert:" + msg);
Toast.makeText(getApplication(), msg, Toast.LENGTH_SHORT).show();
// String data = JsonUtils.getKeyResult(msg, "data");
// String version = JsonUtils.getKeyResult(data, "version");
//
// com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(version);
// com.alibaba.fastjson.JSONObject version1=jsonArray.getJSONObject(0);
// String android = JsonUtils.getKeyResult(version1.toJSONString(), "android");
// System.out.println(android);
//
// String versionCode = JsonUtils.getKeyResult(android, "versionCode");
// String versionName = JsonUtils.getKeyResult(android, "versionName");
//
// System.out.println("versionCode " + versionCode);
// System.out.println("versionName " + versionName);
// out.close();
// br.close();
// // 关闭Socket
// socket.close();
} catch (Exception e) {
}
}
}).start();
}
private void shareGetPoints() {
new Thread(new Runnable() {
@Override
public void run() {
try {
String replace = "";
long appTime1 = System.currentTimeMillis() / 1000;
Log.i("appTime(long)---", appTime1 + "");
long updatetime = appTime1 - MainMapActivity.cha - 1;
String token = String.valueOf(updatetime);
try {
replace = URLEncoder.encode(DES3.encode(token));
} catch (Exception e) {
e.printStackTrace();
}
//String url = mParentContext.getString(R.string.ip_url) + "/resource/book?userId=" + userid;
String url = MainApplication.url + "/zhannew/basic/web/index.php/zhanshareinfo/add?user_id=" + MainApplication.userId + "&token=" + replace;
submit(url);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private void submit(String sms) {
Log.e("url", sms);
Request request = new Request.Builder().url(sms).build();
Response response = null;
try {
if (request == null) {
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
return;
}
response = OkHttpUtil.execute(request);
if (response.code() == 200) {
String json = "";
try {
json = response.body().string();
Message msg = new Message();
msg.obj = json;
msg.what = 11;
handler.sendMessage(msg);
Log.e("url", json);
// Log.i("token解密:", DES3.decode(encode_token));
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
}
}
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
}
}
public void getVersion() {
try {
PackageManager manager = getApplication().getPackageManager();
PackageInfo info = manager.getPackageInfo(getApplication().getPackageName(), 0);
app_version = info.versionName;
// return this.getString(R.string.version_name) + version;
Log.e("version", app_version);
} catch (Exception e) {
e.printStackTrace();
// return this.getString(R.string.can_not_find_version_name);
}
}
private void appVersion() {
new Thread(new Runnable() {
@Override
public void run() {
try {
String url = null;
url = MainApplication.url + "/zhannew/basic/web/index.php/zhanlist/getversion2";
getVersion(url);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public static int getVersionCode(Context context)//获取版本号(内部识别号)
{
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
Log.e("versionCode", pi.versionCode + "");
return pi.versionCode;
} catch (PackageManager.NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
private void dialogup() {
// if (!app_version.equals(now_version)){
new com.electric.chargingpile.view.AlertDialog(UserCenterMoreActivity.this).builder()
.setTitle("温馨提示")
.setMsg("老板,这小子又发" + now_versionName + "版本了,要不要更新下?")
.setPositiveButton("要,马上要", new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse("http://cdz.evcharge.cc/app/app.apk");
intent.setData(content_url);
startActivity(intent);
}
}).setNegativeButton("先退下", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}).show();
}
// }
private void getVersion(String sms) {
Log.e("url", sms);
Request request = new Request.Builder().url(sms).build();
Response response = null;
try {
if (request == null) {
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
return;
}
response = OkHttpUtil.execute(request);
if (response.code() == 200) {
String json = "";
try {
json = response.body().string();
Message msg = new Message();
msg.obj = json;
msg.what = 1;
handler.sendMessage(msg);
Log.e("url", json);
// Log.i("token解密:", DES3.decode(encode_token));
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
}
}
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
}
}
@Override
protected void onResume() {
super.onResume();
if (MainApplication.isLogin()) {
getFeedBackNum();
}
MobclickAgent.onResume(this);
}
public static String getMD5(String content) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(content.getBytes());
return getHashString(digest);
} catch (Exception e) {
}
return null;
}
private static String getHashString(MessageDigest digest) {
StringBuilder builder = new StringBuilder();
for (byte b : digest.digest()) {
builder.append(Integer.toHexString((b >> 4) & 0xf));
builder.append(Integer.toHexString(b & 0xf));
}
return builder.toString().toLowerCase();
}
private void getFeedBackNum() {
String url = MainApplication.url + "/zhannew/basic/web/index.php/advice/unread?user_id=" + MainApplication.userId;
OkHttpUtils.get().url(url).build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
}
@Override
public void onResponse(String response) {
Log.e(TAG, "onResponse: response=" + response);
String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
if (rtnCode.equals("01")) {
String data = JsonUtils.getKeyResult(response, "data");
if (data.equals("0")) {
iv_message_f.setVisibility(View.GONE);
} else {
iv_message_f.setVisibility(View.VISIBLE);
}
}
}
});
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}
|