Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
职
职业病数据推送
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
王浪
职业病数据推送
Commits
d40c801a
Commit
d40c801a
authored
Apr 11, 2023
by
helei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
795de3af
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
369 additions
and
88 deletions
+369
-88
pom.xml
pom.xml
+5
-1
src/main/java/com/example/data_push/config/ZybConfig.java
src/main/java/com/example/data_push/config/ZybConfig.java
+0
-46
src/main/java/com/example/data_push/controller/PushDataController.java
.../com/example/data_push/controller/PushDataController.java
+1
-1
src/main/java/com/example/data_push/dto/DataDto.java
src/main/java/com/example/data_push/dto/DataDto.java
+4
-2
src/main/java/com/example/data_push/service/PushDataService.java
...n/java/com/example/data_push/service/PushDataService.java
+1
-1
src/main/java/com/example/data_push/service/impl/PushDataServiceImpl.java
...m/example/data_push/service/impl/PushDataServiceImpl.java
+11
-22
src/main/java/com/example/data_push/util/HttpClientProxy.java
...main/java/com/example/data_push/util/HttpClientProxy.java
+49
-0
src/main/java/com/example/data_push/util/HttpUtils.java
src/main/java/com/example/data_push/util/HttpUtils.java
+71
-0
src/main/java/com/example/data_push/util/HttpclientUtils.java
...main/java/com/example/data_push/util/HttpclientUtils.java
+93
-0
src/main/java/com/example/data_push/util/ProxyUtils.java
src/main/java/com/example/data_push/util/ProxyUtils.java
+131
-0
src/main/resources/application.yml
src/main/resources/application.yml
+3
-15
No files found.
pom.xml
View file @
d40c801a
...
...
@@ -78,7 +78,11 @@
<version>
2.2
</version>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.5.12
</version>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
...
...
src/main/java/com/example/data_push/config/ZybConfig.java
deleted
100644 → 0
View file @
795de3af
package
com.example.data_push.config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* @Author hl
* @Date 2022-10-31 09:33
* 省平台参数
*/
@Component
@ConfigurationProperties
(
prefix
=
"zyb"
)
@Data
public
class
ZybConfig
{
/**
* 机构编码
*/
private
String
userId
;
/**
* 机构名称
*/
private
String
name
;
/**
* 机构密码
*/
private
String
password
;
/**
* 私钥
*/
private
String
privateKey
;
/**
* 申报地址
*/
private
String
url
;
/**
* 填报人/报告人
*/
private
String
person
;
/**
* 填报人电话/报告电话
*/
private
String
phone
;
private
String
aa
=
"2233"
;
}
src/main/java/com/example/data_push/controller/PushDataController.java
View file @
d40c801a
...
...
@@ -27,7 +27,7 @@ public class PushDataController {
@ApiOperation
(
value
=
"数据推送"
,
response
=
R
.
class
)
@PostMapping
(
value
=
"/push"
)
public
R
pushData
(
@Validated
DataDto
dto
){
public
R
pushData
(
@Validated
DataDto
dto
)
throws
Exception
{
return
pushDataService
.
pushData
(
dto
);
}
...
...
src/main/java/com/example/data_push/dto/DataDto.java
View file @
d40c801a
...
...
@@ -16,6 +16,8 @@ public class DataDto implements Serializable {
@ApiModelProperty
(
value
=
"用户原始数据"
)
private
String
dataJson
;
/**
* 正式申报地址
*/
private
String
zsUrl
;
}
src/main/java/com/example/data_push/service/PushDataService.java
View file @
d40c801a
...
...
@@ -15,7 +15,7 @@ public interface PushDataService {
* @param dto
* @return
*/
R
pushData
(
DataDto
dto
);
R
pushData
(
DataDto
dto
)
throws
Exception
;
...
...
src/main/java/com/example/data_push/service/impl/PushDataServiceImpl.java
View file @
d40c801a
package
com.example.data_push.service.impl
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.api.R
;
import
com.example.data_push.config.ZybConfig
;
import
com.example.data_push.dto.DataDto
;
import
com.example.data_push.service.PushDataService
;
import
com.example.data_push.util.JsonToXml2
;
import
com.example.data_push.vo.ZybVo
;
import
com.example.data_push.util.HttpclientUtils
;
import
com.google.gson.Gson
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringEscapeUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
...
...
@@ -27,15 +21,10 @@ import java.text.MessageFormat;
@Service
public
class
PushDataServiceImpl
implements
PushDataService
{
@Autowired
private
ZybConfig
zybConfig
;
@Override
public
R
pushData
(
DataDto
dto
){
if
(
StringUtils
.
isEmpty
(
dto
.
getDataJson
())){
public
R
pushData
(
DataDto
dto
)
throws
Exception
{
log
.
info
(
"入参数据:"
+
new
Gson
().
toJson
(
dto
));
if
(
StringUtils
.
isEmpty
(
dto
.
getDataJson
()))
{
return
R
.
failed
(
"无法获取到推送数据"
);
}
//转义处理
...
...
@@ -51,12 +40,15 @@ public class PushDataServiceImpl implements PushDataService {
"</soapenv:Body>"
+
"</soapenv:Envelope>"
;
String
format
=
MessageFormat
.
format
(
soapui
,
dto
.
getDataJson
());
log
.
info
(
"获取原始数据成功,原始数据为:"
+
format
);
String
result
=
HttpUtil
.
post
(
zybConfig
.
getUrl
(),
format
);
log
.
info
(
"获取原始数据成功,原始数据为:"
+
format
);
// Proxy proxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("59.175.177.218", 8443));
// String result = HttpUtil.createPost(dto.getZsUrl()).body(format).setProxy(proxy).execute().body();
// String result = HttpUtil.post(dto.getZsUrl(), format);
String
result
=
HttpclientUtils
.
getResultByProxy
(
dto
.
getZsUrl
(),
format
,
"59.175.177.218"
,
8443
);
log
.
info
(
"调用省直平台成功,转义前:"
+
result
);
result
=
StringEscapeUtils
.
unescapeXml
(
result
);
log
.
info
(
"转义后:"
+
result
);
if
(!
result
.
contains
(
"<data>"
)){
if
(!
result
.
contains
(
"<data>"
))
{
return
R
.
failed
(
"调用省直平台推送失败"
);
}
String
substring
=
result
.
substring
(
result
.
indexOf
(
"<data>"
),
result
.
indexOf
(
"</data>"
)
+
7
);
...
...
@@ -65,7 +57,4 @@ public class PushDataServiceImpl implements PushDataService {
}
}
src/main/java/com/example/data_push/util/HttpClientProxy.java
0 → 100644
View file @
d40c801a
package
com.example.data_push.util
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpHost
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.conn.params.ConnRoutePNames
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
org.apache.http.params.CoreConnectionPNames
;
import
org.apache.http.util.EntityUtils
;
public
class
HttpClientProxy
{
/**
* java使用代理发送http请求
* @return
*/
public
static
String
httpPost
(
String
ip
,
Integer
port
,
String
url
)
{
String
content
=
null
;
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
new
DefaultHttpClient
();
/** 设置代理IP **/
HttpHost
proxy
=
new
HttpHost
(
ip
,
port
);
httpclient
.
getParams
().
setParameter
(
ConnRoutePNames
.
DEFAULT_PROXY
,
proxy
);
HttpPost
httpget
=
new
HttpPost
(
url
);
httpget
.
getParams
().
setParameter
(
CoreConnectionPNames
.
SO_TIMEOUT
,
1000
*
30
);
//设置请求超时时间
httpget
.
setHeader
(
"Proxy-Authorization"
,
"Basic eXVsb3JlOll1bG9yZVByb3h5MjAxMzo="
);
httpget
.
setHeader
(
"User-Agent"
,
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1"
);
httpget
.
setHeader
(
"Accept"
,
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
);
HttpResponse
responses
=
httpclient
.
execute
(
httpget
);
HttpEntity
entity
=
responses
.
getEntity
();
content
=
EntityUtils
.
toString
(
entity
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
httpclient
.
getConnectionManager
().
shutdown
();
//关闭连接
}
return
content
;
}
}
\ No newline at end of file
src/main/java/com/example/data_push/util/HttpUtils.java
0 → 100644
View file @
d40c801a
package
com.example.data_push.util
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Http Post Get 工具
*/
public
class
HttpUtils
{
public
static
String
doPost
(
String
url
,
String
data
)
throws
Exception
{
CloseableHttpClient
httpClient
=
HttpClients
.
custom
().
build
();
HttpPost
httpPost
=
new
HttpPost
(
url
);
if
(!
StringUtils
.
isEmpty
(
data
))
{
StringEntity
entity
=
new
StringEntity
(
data
);
httpPost
.
setEntity
(
entity
);
}
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
return
EntityUtils
.
toString
(
response
.
getEntity
());
}
public
static
String
doPost2
(
String
url
)
throws
Exception
{
CloseableHttpClient
httpClient
=
HttpClients
.
custom
().
build
();
HttpPost
httpPost
=
new
HttpPost
(
url
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
return
EntityUtils
.
toString
(
response
.
getEntity
());
}
public
static
String
doGet
(
String
url
)
throws
Exception
{
CloseableHttpClient
httpClient
=
HttpClients
.
custom
().
build
();
HttpGet
httpGet
=
new
HttpGet
(
url
);
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpGet
);
return
EntityUtils
.
toString
(
response
.
getEntity
());
}
public
static
String
getClientIp
(
HttpServletRequest
request
)
{
if
(
request
==
null
)
{
return
"127.0.0.1"
;
}
String
ip
=
request
.
getHeader
(
"X-Requested-For"
);
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"X-Forwarded-For"
);
}
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"Proxy-Client-IP"
);
}
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"WL-Proxy-Client-IP"
);
}
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"HTTP_CLIENT_IP"
);
}
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getHeader
(
"HTTP_X_FORWARDED_FOR"
);
}
if
(
StringUtils
.
isEmpty
(
ip
)
||
"unknown"
.
equalsIgnoreCase
(
ip
))
{
ip
=
request
.
getRemoteAddr
();
}
return
ip
;
}
}
\ No newline at end of file
src/main/java/com/example/data_push/util/HttpclientUtils.java
0 → 100644
View file @
d40c801a
package
com.example.data_push.util
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpHost
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.ssl.SSLContextBuilder
;
import
javax.net.ssl.SSLContext
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.charset.StandardCharsets
;
public
class
HttpclientUtils
{
private
static
final
String
CONTENT_TYPE
=
"application/x-www-form-urlencoded"
;
public
static
String
getResultByProxy
(
String
url
,
String
request
,
String
proxyHost
,
int
proxyPort
)
throws
Exception
{
String
response
=
null
;
HttpPost
httpPost
=
null
;
try
{
HttpClient
httpClient
=
getHttpClient
(
url
);
//设置请求配置类 重点就是在这里添加setProxy 设置代理
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setSocketTimeout
(
15000
).
setConnectTimeout
(
15000
)
.
setConnectionRequestTimeout
(
15000
).
setProxy
(
new
HttpHost
(
proxyHost
,
proxyPort
)).
build
();
httpPost
=
new
HttpPost
(
url
);
httpPost
.
setConfig
(
requestConfig
);
httpPost
.
addHeader
(
"Content-Type"
,
CONTENT_TYPE
);
httpPost
.
setEntity
(
new
StringEntity
(
request
,
"utf-8"
));
response
=
getHttpClientResponse
(
httpPost
,
httpClient
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
null
!=
httpPost
)
{
httpPost
.
releaseConnection
();
}
}
return
response
;
}
private
static
String
getHttpClientResponse
(
HttpPost
httpPost
,
HttpClient
httpClient
)
throws
Exception
{
String
result
=
null
;
HttpResponse
httpResponse
=
httpClient
.
execute
(
httpPost
);
HttpEntity
entity
=
httpResponse
.
getEntity
();
if
(
null
!=
entity
)
{
try
(
InputStream
inputStream
=
entity
.
getContent
())
{
byte
[]
bytes
=
read
(
inputStream
,
1024
);
result
=
new
String
(
bytes
,
StandardCharsets
.
UTF_8
);
}
}
return
result
;
}
private
static
HttpClient
getHttpClient
(
String
url
)
throws
Exception
{
HttpClient
httpClient
;
String
lowerURL
=
url
.
toLowerCase
();
if
(
lowerURL
.
startsWith
(
"https"
))
{
httpClient
=
createSSLClientDefault
();
}
else
{
httpClient
=
HttpClients
.
createDefault
();
}
return
httpClient
;
}
private
static
CloseableHttpClient
createSSLClientDefault
()
throws
Exception
{
SSLContext
sslContext
=
new
SSLContextBuilder
().
loadTrustMaterial
(
null
,
(
chain
,
authType
)
->
true
).
build
();
SSLConnectionSocketFactory
sslsf
=
new
SSLConnectionSocketFactory
(
sslContext
,
(
s
,
sslSession
)
->
true
);
return
HttpClients
.
custom
().
setSSLSocketFactory
(
sslsf
).
build
();
}
public
static
byte
[]
read
(
InputStream
inputStream
,
int
bufferSize
)
throws
IOException
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
byte
[]
buffer
=
new
byte
[
bufferSize
];
for
(
int
num
=
inputStream
.
read
(
buffer
);
num
!=
-
1
;
num
=
inputStream
.
read
(
buffer
))
{
baos
.
write
(
buffer
,
0
,
num
);
}
baos
.
flush
();
return
baos
.
toByteArray
();
}
}
src/main/java/com/example/data_push/util/ProxyUtils.java
0 → 100644
View file @
d40c801a
package
com.example.data_push.util
;
import
javax.net.ssl.*
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.HttpURLConnection
;
import
java.net.InetSocketAddress
;
import
java.net.Proxy
;
import
java.net.URL
;
import
java.nio.charset.StandardCharsets
;
import
java.security.SecureRandom
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
public
class
ProxyUtils
{
public
static
final
String
CONTENT_TYPE
=
"application/x-www-form-urlencoded"
;
public
static
String
getResultByHttpConnectionProxy
(
String
url
,
String
content
,
String
proxyHost
,
int
proxyPort
)
{
String
result
=
""
;
OutputStream
outputStream
=
null
;
InputStream
inputStream
=
null
;
try
{
//设置proxy
Proxy
proxy
=
new
Proxy
(
Proxy
.
Type
.
HTTP
,
new
InetSocketAddress
(
proxyHost
,
proxyPort
));
URL
proxyUrl
=
new
URL
(
url
);
//判断是哪种类型的请求
if
(
url
.
startsWith
(
"https"
))
{
HttpsURLConnection
httpsURLConnection
=
(
HttpsURLConnection
)
proxyUrl
.
openConnection
(
proxy
);
httpsURLConnection
.
setRequestProperty
(
"Content-Type"
,
CONTENT_TYPE
);
//允许写入
httpsURLConnection
.
setDoInput
(
true
);
//允许写出
httpsURLConnection
.
setDoOutput
(
true
);
//请求方法的类型 POST/GET
httpsURLConnection
.
setRequestMethod
(
"POST"
);
//是否使用缓存
httpsURLConnection
.
setUseCaches
(
false
);
//读取超时
httpsURLConnection
.
setReadTimeout
(
15000
);
//连接超时
httpsURLConnection
.
setConnectTimeout
(
15000
);
//设置SSL
httpsURLConnection
.
setSSLSocketFactory
(
getSsf
());
//设置主机验证程序
httpsURLConnection
.
setHostnameVerifier
((
s
,
sslSession
)
->
true
);
outputStream
=
httpsURLConnection
.
getOutputStream
();
outputStream
.
write
(
content
.
getBytes
(
StandardCharsets
.
UTF_8
));
outputStream
.
flush
();
inputStream
=
httpsURLConnection
.
getInputStream
();
}
else
{
HttpURLConnection
httpURLConnection
=
(
HttpURLConnection
)
proxyUrl
.
openConnection
(
proxy
);
httpURLConnection
.
setRequestProperty
(
"Content-Type"
,
CONTENT_TYPE
);
httpURLConnection
.
setDoOutput
(
true
);
httpURLConnection
.
setDoInput
(
true
);
httpURLConnection
.
setRequestMethod
(
"POST"
);
httpURLConnection
.
setUseCaches
(
false
);
httpURLConnection
.
setConnectTimeout
(
15000
);
httpURLConnection
.
setReadTimeout
(
15000
);
outputStream
=
httpURLConnection
.
getOutputStream
();
outputStream
.
write
(
content
.
getBytes
(
"UTF-8"
));
outputStream
.
flush
();
inputStream
=
httpURLConnection
.
getInputStream
();
}
byte
[]
bytes
=
read
(
inputStream
,
1024
);
result
=
(
new
String
(
bytes
,
"UTF-8"
)).
trim
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
outputStream
!=
null
)
{
outputStream
.
close
();
}
if
(
inputStream
!=
null
)
{
inputStream
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
result
;
}
public
static
byte
[]
read
(
InputStream
inputStream
,
int
bufferSize
)
throws
IOException
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
byte
[]
buffer
=
new
byte
[
bufferSize
];
for
(
int
num
=
inputStream
.
read
(
buffer
);
num
!=
-
1
;
num
=
inputStream
.
read
(
buffer
))
{
baos
.
write
(
buffer
,
0
,
num
);
}
baos
.
flush
();
return
baos
.
toByteArray
();
}
private
static
SSLSocketFactory
getSsf
()
{
SSLContext
ctx
=
null
;
try
{
ctx
=
SSLContext
.
getInstance
(
"TLS"
);
ctx
.
init
(
new
KeyManager
[
0
],
new
TrustManager
[]{
new
ProxyUtils
.
DefaultTrustManager
()},
new
SecureRandom
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
assert
ctx
!=
null
;
return
ctx
.
getSocketFactory
();
}
private
static
final
class
DefaultTrustManager
implements
X509TrustManager
{
@Override
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
@Override
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
@Override
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
null
;
}
}
}
src/main/resources/application.yml
View file @
d40c801a
...
...
@@ -4,18 +4,6 @@ server:
swagger
:
enable
:
true
zyb
:
#申报地址
url
:
http://47.99.104.188:8083/ws_data/ws/TJ?wsdl
#机构编码
userId
:
420502015
#机构名称
name
:
宜昌市疾病预防控制中心
#机构密码
password
:
ycjk420502015#zyb
#填报人/报告人
person
:
徐兵
#填报人电话/报告电话
phone
:
15971628128
#私钥
privateKey
:
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCzvxunu6Ijjzi6w5SvF+l4pfFR/wkO9tK7Mc25BkoIBcBrQAragOJ5DPZnq5Z+Bwm4yMTwWtlQTR/m9jG/t0yKWv5D715kuvJsZxk5ymkYU6PJ8E0WXp9Xkb3rsNaLCpwPQcQb3Hfvqtdbk7J56jjIMTGVNDYpQvvEQsZuoE64QKmsDV+FEcSAl8NBdZ2tblyafk7zn26HyEfuOJ8TXSdQ1HwQQAUP+ko0WSzTVDi4VkBbTlTzY74S4JughXIsSSWTXlRnsb/MHAFmA/7FEjMkLARPYUB1QBUZ0/lSy315B6HG3hBmT+W7nQMfz1jnHkbA6B3FFGmBV4Qtd7FjvVHZAgMBAAECggEBAJ8KEisoTv8No1FE6hK+oppYoZw+f0JZS/3LxE3Y7boJdMawpKnO7hPTT1ZNMVwTWBvCsNZGXA+8HeUaoswSIEwu1NlBO5D/BK67zkse+DxJDRwJXfvT/0LZNmULU9k0qv6o3x8TxJ8v11s05O8QOeuP82IkD2QU23U87BxIBT7qpCfRXw/Zh9pBAEYCsRK1kfpci7TaP9KMh5BkED5PGkny7/RAuYaQGSNyM8eskmIOURAMrMxjiBGRL/LN7GK/edB9DacjTQxFMil6aCi++jQxiP8FCP8rTd789rEEADxAo/Q8izd9cnzWhXepqqf0/dlVmvaHFMsxvGeSyC6RHu0CgYEA3Z3PcvQZ7IEN1Bb8ghjJCu7mlJkTNdCYjs9NlRkqaG7045nhdvhHkdyvjCUfC07Ru5y7zGUu4UuRqXjqK3992uE3E5rklxERFc2sWRhW5osA9xSrxkJ0Wmcm09KcoXH2VN9IIPDIvxyPs64E71B0jm8dqGCvsgST5S+MsIvN/SsCgYEAz6JNc49+0pdOcndF1YZtZfqEkmgwiothott9BjJW6K1FMYEgDBANqnpEwfkRUNwwRCwVDX9gM0gHcRsyeQOHDM0CUGNEJ4J3VQsp+BEwfWYIa9lStJC7c6muBIJWvLL+NcEJu66wBwYAEa0sXuOFf2BN/cTEl1ZzSFmzUzwr0wsCgYEArWcAXdLPwfUMq+m8c9MO44YgVx8bH91ysTNVYhdJzmMbLEdIWj1USrYhiYe2LbPjeWfercRyFQh7Fd6tY5GjGTNlU+q7d9R7yNKgSyo3PLaA79N1wHBY+C+D+vPtaIlyE+CNYHDmslqXuiCsbdBHEvewfgIBF0prqkU1USJi7/cCgYEAwpWOFCCEcANQh0Fz9rm2SH3QRAzUgOJCrAcaUfZXMFNBpzUlvWhGBl/zk/1A1xCjQyA00qNummCEaOFeGb7Oj5aI9qEwu/4uq0p9GHezg7FdbwUJ1yJUKf74kE090DXGusWfw33ghZR/+BDcpkh/UXIFZS9ENbfU7hbyUazwPSUCgYA2cuIVgWX4c3wkqgrZfFq7xhfMU7sPqqkPwao1hYpyACiF1LmL39FB+hFP68ZRYPVC1qWDdmSnxk/nXbEwvMormDtqxFWVttjxPDqnr3uQjbsuK3t9GFHmdrQB7kUzp0O7LJX6+4FxPTgd9MYcRJhXhHQ3JA02IiMqK7991fvnTA==
\ No newline at end of file
Djava
:
net
:
preferIPy4Stack
:
true
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment