mas-server 4.0.0-beta.0 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +408 -8
- package/dist/getApp/apiHandler.d.ts +22 -1
- package/dist/getApp/apiHandler.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/type.d.ts +39 -6
- package/dist/type.d.ts.map +1 -1
- package/dist/utils/typeFromValidFormat.d.ts +13 -1
- package/dist/utils/typeFromValidFormat.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,8 +1,408 @@
|
|
|
1
|
-
# mas-server
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
JWT
|
|
1
|
+
# mas-server
|
|
2
|
+
|
|
3
|
+
一行代码,实现约定式路由,自带常用业务功能,开箱即用,让你的express飞起来
|
|
4
|
+
|
|
5
|
+
## ✨ 特性
|
|
6
|
+
|
|
7
|
+
- 🚀 **约定式路由** - 自动扫描 API 文件,根据文件路径生成路由
|
|
8
|
+
- 🔒 **权限管理** - 基于 JWT Token 的权限验证系统
|
|
9
|
+
- 📝 **类型安全** - 通过 `requestFormat` 和 `responseFormat` 实现类型推导和运行时校验
|
|
10
|
+
- 📊 **日志管理** - 支持访问日志(控制台和文件),可记录请求/响应体
|
|
11
|
+
- 🎯 **统一响应格式** - 提供 `res.reply()` 等便捷方法
|
|
12
|
+
- 🌐 **CORS 支持** - 可配置的跨域支持
|
|
13
|
+
- 📁 **静态文件服务** - 支持静态文件目录
|
|
14
|
+
- 📖 **API 文档** - 自动生成 API 文档(通过 `/debug/docs` 访问)
|
|
15
|
+
|
|
16
|
+
## 📦 安装
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install mas-server
|
|
20
|
+
# 或
|
|
21
|
+
bun add mas-server
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 🚀 快速开始
|
|
25
|
+
|
|
26
|
+
### 1. 编写 API
|
|
27
|
+
|
|
28
|
+
创建 `src/apis/user/login.ts`:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import type { MasConfig, MasHandler } from 'mas-server';
|
|
32
|
+
|
|
33
|
+
export const config: MasConfig = {
|
|
34
|
+
requestFormat: { username: String, password: String },
|
|
35
|
+
responseFormat: { token: String },
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const handler: MasHandler<typeof config> = async (req, res) => {
|
|
39
|
+
res.reply({ token: 'xxx' });
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. 启动服务
|
|
44
|
+
|
|
45
|
+
创建 `main.ts`:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { getApp } from 'mas-server';
|
|
49
|
+
import { fileURLToPath } from 'url';
|
|
50
|
+
import path from 'path';
|
|
51
|
+
|
|
52
|
+
(await getApp(path.dirname(fileURLToPath(import.meta.url)))).listen(8087);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
运行:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
bun run main.ts
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
就这么简单!访问 `http://localhost:8087/api/user/login` 即可。
|
|
62
|
+
|
|
63
|
+
## 📚 核心功能
|
|
64
|
+
|
|
65
|
+
### 约定式路由
|
|
66
|
+
|
|
67
|
+
框架会自动扫描 `src/apis` 或 `apis` 目录下的 `.ts`/`.js` 文件,根据文件路径生成路由:
|
|
68
|
+
|
|
69
|
+
- `src/apis/index.ts` → `/api/`
|
|
70
|
+
- `src/apis/user/index.ts` → `/api/user`
|
|
71
|
+
- `src/apis/user/login.ts` → `/api/user/login`
|
|
72
|
+
- `src/apis/user/profile.ts` → `/api/user/profile`
|
|
73
|
+
|
|
74
|
+
所有路由都会自动添加 `/api` 前缀。
|
|
75
|
+
|
|
76
|
+
### 类型安全
|
|
77
|
+
|
|
78
|
+
通过 `requestFormat` 和 `responseFormat` 定义请求和响应的数据结构,框架会:
|
|
79
|
+
|
|
80
|
+
1. **类型推导** - 自动推导 `req.body` 和 `res.reply()` 的类型
|
|
81
|
+
2. **运行时校验** - 自动校验请求参数格式,不符合格式的请求会返回 400 错误
|
|
82
|
+
|
|
83
|
+
#### 支持的类型
|
|
84
|
+
|
|
85
|
+
- **基础类型**:`String`、`Number`、`Boolean`、`Object`
|
|
86
|
+
- **可选字段**:
|
|
87
|
+
- `_String` - 可选字符串(`'?'`)
|
|
88
|
+
- `_Number` - 可选数字(`-1`)
|
|
89
|
+
- **数组**:`[String]`、`[Number]`、`[{...}]`
|
|
90
|
+
- **嵌套对象**:`{ key: String, nested: { ... } }`
|
|
91
|
+
|
|
92
|
+
#### 示例
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
const requestFormat = {
|
|
96
|
+
name: String, // 必填字符串
|
|
97
|
+
age: _Number, // 可选数字
|
|
98
|
+
email: _String, // 可选字符串
|
|
99
|
+
tags: [String], // 字符串数组
|
|
100
|
+
address: {
|
|
101
|
+
// 嵌套对象
|
|
102
|
+
city: String,
|
|
103
|
+
zipCode: _String,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const config: MasConfig<typeof requestFormat> = {
|
|
108
|
+
requestFormat,
|
|
109
|
+
strict: false, // strict=true 时不允许多余字段
|
|
110
|
+
};
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Token 验证
|
|
114
|
+
|
|
115
|
+
框架提供了完整的 JWT Token 系统:
|
|
116
|
+
|
|
117
|
+
#### 创建 Token
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
import { createToken } from 'mas-server';
|
|
121
|
+
|
|
122
|
+
const token = createToken(
|
|
123
|
+
{
|
|
124
|
+
data: { userId: 123, username: 'admin' },
|
|
125
|
+
time: 3600, // 过期时间(秒),0 表示永不过期
|
|
126
|
+
permission: ['admin', 'user'], // 权限列表
|
|
127
|
+
},
|
|
128
|
+
'your-secret-key'
|
|
129
|
+
);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### 验证 Token
|
|
133
|
+
|
|
134
|
+
在接口配置中启用 token 验证:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
export const config: MasConfig = {
|
|
138
|
+
token: true, // 启用 token 验证
|
|
139
|
+
permission: ['admin'], // 需要的权限(只要有一个即可)
|
|
140
|
+
};
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Token 可以通过以下方式传递:
|
|
144
|
+
|
|
145
|
+
- Header: `token: xxx`
|
|
146
|
+
- Query: `?token=xxx`
|
|
147
|
+
- Body: `{ token: 'xxx' }`
|
|
148
|
+
|
|
149
|
+
#### 在接口中获取 Token 数据
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
export const handler: MasHandler = async (req, res) => {
|
|
153
|
+
const tokenData = (req as any).tokenData;
|
|
154
|
+
// tokenData.data 包含创建 token 时传入的 data
|
|
155
|
+
// tokenData._permission 包含权限列表
|
|
156
|
+
// tokenData._masTime 包含过期时间戳
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 统一响应格式
|
|
161
|
+
|
|
162
|
+
框架提供了 `res.reply()` 方法,统一返回格式:
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// 成功响应
|
|
166
|
+
res.reply(data, 1, 200, '操作成功');
|
|
167
|
+
|
|
168
|
+
// 失败响应
|
|
169
|
+
res.reply(null, 0, 400, '参数错误');
|
|
170
|
+
|
|
171
|
+
// 简化写法(自动判断 status)
|
|
172
|
+
res.reply(data); // data 存在时 status=1,否则 status=0
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
响应格式:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"status": 1,
|
|
180
|
+
"code": 200,
|
|
181
|
+
"msg": "操作成功",
|
|
182
|
+
"data": { ... }
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 日志管理
|
|
187
|
+
|
|
188
|
+
框架支持两种日志:
|
|
189
|
+
|
|
190
|
+
1. **控制台日志** - 开发时使用,实时打印访问日志
|
|
191
|
+
2. **文件日志** - 生产环境使用,按天滚动,单文件最大 50MB
|
|
192
|
+
|
|
193
|
+
#### 配置示例
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
const app = await getApp(__dirname, {
|
|
197
|
+
logs: {
|
|
198
|
+
open: true, // 是否开启文件日志
|
|
199
|
+
debug: true, // 是否开启控制台日志
|
|
200
|
+
logPath: './logs', // 日志文件目录
|
|
201
|
+
logRequestBody: true, // 是否记录请求体
|
|
202
|
+
logResponseBody: true, // 是否记录响应体
|
|
203
|
+
maxBodyLength: 2000, // body 最大记录长度
|
|
204
|
+
redactKeys: ['password', 'token'], // 需要打码的字段
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### CORS 配置
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
const app = await getApp(__dirname, {
|
|
213
|
+
openCors: true,
|
|
214
|
+
corsUrl: [
|
|
215
|
+
'http://localhost:3000',
|
|
216
|
+
'https://example.com',
|
|
217
|
+
'*.example.com', // 支持通配符
|
|
218
|
+
],
|
|
219
|
+
});
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 静态文件服务
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
const app = await getApp(__dirname, {
|
|
226
|
+
staticPath: './public', // 静态文件目录
|
|
227
|
+
staticUrl: '/public', // 访问路径前缀
|
|
228
|
+
});
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
访问:`http://localhost:8087/public/file.txt`
|
|
232
|
+
|
|
233
|
+
### API 文档
|
|
234
|
+
|
|
235
|
+
框架会自动生成 API 文档,访问 `/debug/docs` 即可查看所有接口的配置和文档信息。
|
|
236
|
+
|
|
237
|
+
可以通过配置关闭:
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
const app = await getApp(__dirname, {
|
|
241
|
+
exposeApiDocs: false, // 关闭 API 文档
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 接口配置选项
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
export const config: MasConfig = {
|
|
249
|
+
name: '接口名称', // 接口名称(用于文档)
|
|
250
|
+
methods: 'post', // HTTP 方法:'get' | 'post' | 'all'
|
|
251
|
+
contentType: 'application/json', // Content-Type 校验
|
|
252
|
+
strict: false, // 严格模式(不允许多余字段)
|
|
253
|
+
header: { // Header 参数校验
|
|
254
|
+
'X-Custom-Header': String,
|
|
255
|
+
},
|
|
256
|
+
requestFormat: { ... }, // 请求体格式
|
|
257
|
+
responseFormat: { ... }, // 响应体格式
|
|
258
|
+
token: true, // 是否需要 token
|
|
259
|
+
permission: ['admin'], // 需要的权限
|
|
260
|
+
};
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 兜底接口
|
|
264
|
+
|
|
265
|
+
可以配置一个默认接口,当所有路由都不匹配时调用:
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
const app = await getApp(__dirname, {
|
|
269
|
+
defalutApiPath: path.join(__dirname, 'src/apis/fallback.ts'),
|
|
270
|
+
});
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
如果不配置,404 请求会返回:
|
|
274
|
+
|
|
275
|
+
```json
|
|
276
|
+
{
|
|
277
|
+
"status": 0,
|
|
278
|
+
"code": 404,
|
|
279
|
+
"msg": "Not Found",
|
|
280
|
+
"data": null
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## 🔧 完整配置选项
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
interface MasAppConfig {
|
|
288
|
+
// 日志配置
|
|
289
|
+
logs: {
|
|
290
|
+
open: boolean; // 是否记录日志
|
|
291
|
+
debug: boolean; // 是否打印访问日志
|
|
292
|
+
logPath?: string; // 日志路径,默认 logs/
|
|
293
|
+
logRequestBody?: boolean; // 是否记录请求体,默认 true
|
|
294
|
+
logResponseBody?: boolean; // 是否记录响应体,默认 true
|
|
295
|
+
maxBodyLength?: number; // body 最大记录长度,默认 2000
|
|
296
|
+
redactKeys?: string[]; // 需要打码的字段名,默认 []
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// Token 配置
|
|
300
|
+
token: {
|
|
301
|
+
open: boolean; // 是否使用 token
|
|
302
|
+
pwd: string; // token 密钥
|
|
303
|
+
headerParams: string; // 参数名,默认 'token'
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// 路径配置
|
|
307
|
+
apisPath?: string; // 接口路径,默认 src/apis 或 apis/
|
|
308
|
+
defalutApiPath?: string; // 兜底接口文件路径
|
|
309
|
+
|
|
310
|
+
// 其他配置
|
|
311
|
+
projectName?: string; // 项目名称,默认 'mas-app'
|
|
312
|
+
openCors?: boolean; // 是否允许跨域,默认 false
|
|
313
|
+
corsUrl?: string[]; // 跨域允许的地址
|
|
314
|
+
staticPath?: string; // 静态文件目录路径,默认 public/
|
|
315
|
+
staticUrl?: string; // 静态资源访问路径前缀,默认 /public
|
|
316
|
+
exposeApiDocs?: boolean; // 是否暴露接口文档,默认 true
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## 📖 更多示例
|
|
321
|
+
|
|
322
|
+
### 带 Header 校验的接口
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
const header = {
|
|
326
|
+
'X-API-Key': String,
|
|
327
|
+
'X-Version': Number,
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
export const config: MasConfig<
|
|
331
|
+
typeof requestFormat,
|
|
332
|
+
typeof responseFormat,
|
|
333
|
+
typeof header
|
|
334
|
+
> = {
|
|
335
|
+
header,
|
|
336
|
+
// ...
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
export const handler: MasHandler<typeof config> = async (req, res) => {
|
|
340
|
+
// Header 已自动校验,可以直接使用
|
|
341
|
+
const apiKey = req.headers['x-api-key'];
|
|
342
|
+
// ...
|
|
343
|
+
};
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### API 文档示例
|
|
347
|
+
|
|
348
|
+
创建 `src/apisDoc/user/login.ts`:
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
import type { ApisDoc } from 'mas-server';
|
|
352
|
+
|
|
353
|
+
export default {
|
|
354
|
+
header: {
|
|
355
|
+
example: { token: 'xxx' },
|
|
356
|
+
desc: [{ name: 'token', desc: '用户 token' }],
|
|
357
|
+
},
|
|
358
|
+
request: {
|
|
359
|
+
example: {
|
|
360
|
+
username: 'admin',
|
|
361
|
+
password: '123456',
|
|
362
|
+
},
|
|
363
|
+
desc: [
|
|
364
|
+
{ name: 'username', desc: '用户名' },
|
|
365
|
+
{ name: 'password', desc: '密码' },
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
response: {
|
|
369
|
+
example: {
|
|
370
|
+
token: 'xxx',
|
|
371
|
+
userId: 123,
|
|
372
|
+
},
|
|
373
|
+
desc: [
|
|
374
|
+
{ name: 'token', desc: '登录 token' },
|
|
375
|
+
{ name: 'userId', desc: '用户 ID' },
|
|
376
|
+
],
|
|
377
|
+
},
|
|
378
|
+
} satisfies ApisDoc;
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
在接口文件中引入:
|
|
382
|
+
|
|
383
|
+
```typescript
|
|
384
|
+
import doc from '../apisDoc/user/login';
|
|
385
|
+
|
|
386
|
+
export const doc = doc;
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## 🛠️ 开发
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# 构建
|
|
393
|
+
bun run build
|
|
394
|
+
|
|
395
|
+
# 开发模式(监听文件变化)
|
|
396
|
+
bun run testServer
|
|
397
|
+
|
|
398
|
+
# 调试
|
|
399
|
+
bun run debug
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
## 📄 License
|
|
403
|
+
|
|
404
|
+
MIT
|
|
405
|
+
|
|
406
|
+
## 🤝 贡献
|
|
407
|
+
|
|
408
|
+
欢迎提交 Issue 和 Pull Request!
|
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
import type { MasAppConfig, MasConfig, MasHandler } from '../type';
|
|
1
|
+
import type { GetRequestFormat, MasAppConfig, MasConfig, MasHandler } from '../type';
|
|
2
2
|
import express from 'express';
|
|
3
3
|
export type LoadedApiModule = {
|
|
4
4
|
config?: MasConfig;
|
|
5
5
|
handler?: MasHandler<any>;
|
|
6
6
|
doc?: any;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* 将 `req.query` 规范化为可用于 `validType` 的纯对象:
|
|
10
|
+
* - 仅接受 string/string[]
|
|
11
|
+
* - 其它类型(object/number/boolean 等)直接判定为非法
|
|
12
|
+
*
|
|
13
|
+
* @param query - express req.query
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeGetQuery(query: unknown): {
|
|
16
|
+
ok: true;
|
|
17
|
+
value: Record<string, string>;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* 判断 GET 请求的 requestFormat 是否满足约束:
|
|
23
|
+
* - 必须是扁平对象:`Record<string, String | '?'>`
|
|
24
|
+
* - 不允许数组/嵌套对象/Number/Boolean/Object/-1
|
|
25
|
+
*
|
|
26
|
+
* @param format - requestFormat
|
|
27
|
+
*/
|
|
28
|
+
export declare function isGetOnlyStringFormat(format: unknown): format is GetRequestFormat;
|
|
8
29
|
/**
|
|
9
30
|
* 根据已加载的 API 模块创建路由处理器,并在调用前做:
|
|
10
31
|
* - method 校验
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHandler.d.ts","sourceRoot":"","sources":["../../src/getApp/apiHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"apiHandler.d.ts","sourceRoot":"","sources":["../../src/getApp/apiHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,UAAU,EACX,MAAM,SAAS,CAAC;AACjB,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AA0BF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAU7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,gBAAgB,CAO5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,cAAc,CA2HxB"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var c2=Object.create;var{getPrototypeOf:h2,defineProperty:M1,getOwnPropertyNames:r2}=Object;var t2=Object.prototype.hasOwnProperty;var e2=(n,r,t)=>{t=n!=null?c2(h2(n)):{};let h=r||!n||!n.__esModule?M1(t,"default",{value:n,enumerable:!0}):t;for(let c of r2(n))if(!t2.call(h,c))M1(h,c,{get:()=>n[c],enumerable:!0});return h};var s2=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Y1=s2((U2,z1)=>{var R=R||function(n){var r=Object.create||function(s){return t.prototype=s,s=new t,t.prototype=null,s};function t(){}var h={},c=h.lib={},i=c.Base={extend:function(s){var l=r(this);return s&&l.mixIn(s),l.hasOwnProperty("init")&&this.init!==l.init||(l.init=function(){l.$super.init.apply(this,arguments)}),(l.init.prototype=l).$super=this,l},create:function(){var s=this.extend();return s.init.apply(s,arguments),s},init:function(){},mixIn:function(s){for(var l in s)s.hasOwnProperty(l)&&(this[l]=s[l]);s.hasOwnProperty("toString")&&(this.toString=s.toString)},clone:function(){return this.init.prototype.extend(this)}},B=c.WordArray=i.extend({init:function(s,l){s=this.words=s||[],this.sigBytes=l!=null?l:4*s.length},toString:function(s){return(s||_).stringify(this)},concat:function(s){var l=this.words,u=s.words,y=this.sigBytes,g=s.sigBytes;if(this.clamp(),y%4)for(var f=0;f<g;f++){var A=u[f>>>2]>>>24-f%4*8&255;l[y+f>>>2]|=A<<24-(y+f)%4*8}else for(f=0;f<g;f+=4)l[y+f>>>2]=u[f>>>2];return this.sigBytes+=g,this},clamp:function(){var s=this.words,l=this.sigBytes;s[l>>>2]&=4294967295<<32-l%4*8,s.length=n.ceil(l/4)},clone:function(){var s=i.clone.call(this);return s.words=this.words.slice(0),s},random:function(s){for(var l=[],u=0;u<s;u+=4){var y=function(f){var A=987654321,z=4294967295;return function(){var M=((A=36969*(65535&A)+(A>>16)&z)<<16)+(f=18000*(65535&f)+(f>>16)&z)&z;return(M/4294967296+0.5)*(0.5<n.random()?1:-1)}}(4294967296*(g||n.random())),g=987654071*y();l.push(4294967296*y()|0)}return new B.init(l,s)}}),e=h.enc={},_=e.Hex={stringify:function(s){for(var{words:l,sigBytes:u}=s,y=[],g=0;g<u;g++){var f=l[g>>>2]>>>24-g%4*8&255;y.push((f>>>4).toString(16)),y.push((15&f).toString(16))}return y.join("")},parse:function(s){for(var l=s.length,u=[],y=0;y<l;y+=2)u[y>>>3]|=parseInt(s.substr(y,2),16)<<24-y%8*4;return new B.init(u,l/2)}},o=e.Latin1={stringify:function(s){for(var{words:l,sigBytes:u}=s,y=[],g=0;g<u;g++){var f=l[g>>>2]>>>24-g%4*8&255;y.push(String.fromCharCode(f))}return y.join("")},parse:function(s){for(var l=s.length,u=[],y=0;y<l;y++)u[y>>>2]|=(255&s.charCodeAt(y))<<24-y%4*8;return new B.init(u,l)}},v=e.Utf8={stringify:function(s){try{return decodeURIComponent(escape(o.stringify(s)))}catch(l){throw Error("Malformed UTF-8 data")}},parse:function(s){return o.parse(unescape(encodeURIComponent(s)))}},w=c.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new B.init,this._nDataBytes=0},_append:function(s){typeof s=="string"&&(s=v.parse(s)),this._data.concat(s),this._nDataBytes+=s.sigBytes},_process:function(z){var l=this._data,u=l.words,y=l.sigBytes,g=this.blockSize,f=y/(4*g),A=(f=z?n.ceil(f):n.max((0|f)-this._minBufferSize,0))*g,z=n.min(4*A,y);if(A){for(var M=0;M<A;M+=g)this._doProcessBlock(u,M);var C=u.splice(0,A);l.sigBytes-=z}return new B.init(C,z)},clone:function(){var s=i.clone.call(this);return s._data=this._data.clone(),s},_minBufferSize:0}),d=(c.Hasher=w.extend({cfg:i.extend(),init:function(s){this.cfg=this.cfg.extend(s),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(s){return this._append(s),this._process(),this},finalize:function(s){return s&&this._append(s),this._doFinalize()},blockSize:16,_createHelper:function(s){return function(l,u){return new s.init(u).finalize(l)}},_createHmacHelper:function(s){return function(l,u){return new d.HMAC.init(s,u).finalize(l)}}}),h.algo={});return h}(Math);(function(){var n=R.lib.WordArray;R.enc.Base64={stringify:function(r){for(var{words:t,sigBytes:h}=r,c=this._map,i=(r.clamp(),[]),B=0;B<h;B+=3)for(var e=(t[B>>>2]>>>24-B%4*8&255)<<16|(t[B+1>>>2]>>>24-(B+1)%4*8&255)<<8|t[B+2>>>2]>>>24-(B+2)%4*8&255,_=0;_<4&&B+0.75*_<h;_++)i.push(c.charAt(e>>>6*(3-_)&63));var o=c.charAt(64);if(o)for(;i.length%4;)i.push(o);return i.join("")},parse:function(r){var t=r.length,h=this._map;if(!(c=this._reverseMap))for(var c=this._reverseMap=[],i=0;i<h.length;i++)c[h.charCodeAt(i)]=i;for(var B,e,_=h.charAt(64),o=(_&&(_=r.indexOf(_))!==-1&&(t=_),r),v=t,w=c,d=[],s=0,l=0;l<v;l++)l%4&&(B=w[o.charCodeAt(l-1)]<<l%4*2,e=w[o.charCodeAt(l)]>>>6-l%4*2,d[s>>>2]|=(B|e)<<24-s%4*8,s++);return n.create(d,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(),function(n){for(var r=R,c=r.lib,t=c.WordArray,h=c.Hasher,c=r.algo,i=[],B=0;B<64;B++)i[B]=4294967296*n.abs(n.sin(B+1))|0;c=c.MD5=h.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(w,d){for(var s=0;s<16;s++){var l=d+s,u=w[l];w[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var y=this._hash.words,g=w[d+0],f=w[d+1],A=w[d+2],z=w[d+3],M=w[d+4],C=w[d+5],b=w[d+6],E=w[d+7],D=w[d+8],L=w[d+9],Z=w[d+10],K=w[d+11],I=w[d+12],W=w[d+13],X=w[d+14],N=w[d+15],k=e(y[0],p=y[1],S=y[2],H=y[3],g,7,i[0]),H=e(H,k,p,S,f,12,i[1]),S=e(S,H,k,p,A,17,i[2]),p=e(p,S,H,k,z,22,i[3]);k=e(k,p,S,H,M,7,i[4]),H=e(H,k,p,S,C,12,i[5]),S=e(S,H,k,p,b,17,i[6]),p=e(p,S,H,k,E,22,i[7]),k=e(k,p,S,H,D,7,i[8]),H=e(H,k,p,S,L,12,i[9]),S=e(S,H,k,p,Z,17,i[10]),p=e(p,S,H,k,K,22,i[11]),k=e(k,p,S,H,I,7,i[12]),H=e(H,k,p,S,W,12,i[13]),S=e(S,H,k,p,X,17,i[14]),k=_(k,p=e(p,S,H,k,N,22,i[15]),S,H,f,5,i[16]),H=_(H,k,p,S,b,9,i[17]),S=_(S,H,k,p,K,14,i[18]),p=_(p,S,H,k,g,20,i[19]),k=_(k,p,S,H,C,5,i[20]),H=_(H,k,p,S,Z,9,i[21]),S=_(S,H,k,p,N,14,i[22]),p=_(p,S,H,k,M,20,i[23]),k=_(k,p,S,H,L,5,i[24]),H=_(H,k,p,S,X,9,i[25]),S=_(S,H,k,p,z,14,i[26]),p=_(p,S,H,k,D,20,i[27]),k=_(k,p,S,H,W,5,i[28]),H=_(H,k,p,S,A,9,i[29]),S=_(S,H,k,p,E,14,i[30]),k=o(k,p=_(p,S,H,k,I,20,i[31]),S,H,C,4,i[32]),H=o(H,k,p,S,D,11,i[33]),S=o(S,H,k,p,K,16,i[34]),p=o(p,S,H,k,X,23,i[35]),k=o(k,p,S,H,f,4,i[36]),H=o(H,k,p,S,M,11,i[37]),S=o(S,H,k,p,E,16,i[38]),p=o(p,S,H,k,Z,23,i[39]),k=o(k,p,S,H,W,4,i[40]),H=o(H,k,p,S,g,11,i[41]),S=o(S,H,k,p,z,16,i[42]),p=o(p,S,H,k,b,23,i[43]),k=o(k,p,S,H,L,4,i[44]),H=o(H,k,p,S,I,11,i[45]),S=o(S,H,k,p,N,16,i[46]),k=v(k,p=o(p,S,H,k,A,23,i[47]),S,H,g,6,i[48]),H=v(H,k,p,S,E,10,i[49]),S=v(S,H,k,p,X,15,i[50]),p=v(p,S,H,k,C,21,i[51]),k=v(k,p,S,H,I,6,i[52]),H=v(H,k,p,S,z,10,i[53]),S=v(S,H,k,p,Z,15,i[54]),p=v(p,S,H,k,f,21,i[55]),k=v(k,p,S,H,D,6,i[56]),H=v(H,k,p,S,N,10,i[57]),S=v(S,H,k,p,b,15,i[58]),p=v(p,S,H,k,W,21,i[59]),k=v(k,p,S,H,M,6,i[60]),H=v(H,k,p,S,K,10,i[61]),S=v(S,H,k,p,A,15,i[62]),p=v(p,S,H,k,L,21,i[63]),y[0]=y[0]+k|0,y[1]=y[1]+p|0,y[2]=y[2]+S|0,y[3]=y[3]+H|0},_doFinalize:function(){for(var w=this._data,d=w.words,s=8*this._nDataBytes,l=8*w.sigBytes,u=(d[l>>>5]|=128<<24-l%32,n.floor(s/4294967296)),u=(d[15+(64+l>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),d[14+(64+l>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),w.sigBytes=4*(d.length+1),this._process(),this._hash),y=u.words,g=0;g<4;g++){var f=y[g];y[g]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return u},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});function e(w,d,s,l,u,y,g){return w=w+(d&s|~d&l)+u+g,(w<<y|w>>>32-y)+d}function _(w,d,s,l,u,y,g){return w=w+(d&l|s&~l)+u+g,(w<<y|w>>>32-y)+d}function o(w,d,s,l,u,y,g){return w=w+(d^s^l)+u+g,(w<<y|w>>>32-y)+d}function v(w,d,s,l,u,y,g){return w=w+(s^(d|~l))+u+g,(w<<y|w>>>32-y)+d}r.MD5=h._createHelper(c),r.HmacMD5=h._createHmacHelper(c)}(Math),function(){var n=R,c=n.lib,r=c.WordArray,t=c.Hasher,c=n.algo,h=[],c=c.SHA1=t.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(i,B){for(var e=this._hash.words,_=e[0],o=e[1],v=e[2],w=e[3],d=e[4],s=0;s<80;s++){h[s]=s<16?0|i[B+s]:(l=h[s-3]^h[s-8]^h[s-14]^h[s-16])<<1|l>>>31;var l=(_<<5|_>>>27)+d+h[s];l+=s<20?1518500249+(o&v|~o&w):s<40?1859775393+(o^v^w):s<60?(o&v|o&w|v&w)-1894007588:(o^v^w)-899497514,d=w,w=v,v=o<<30|o>>>2,o=_,_=l}e[0]=e[0]+_|0,e[1]=e[1]+o|0,e[2]=e[2]+v|0,e[3]=e[3]+w|0,e[4]=e[4]+d|0},_doFinalize:function(){var i=this._data,B=i.words,e=8*this._nDataBytes,_=8*i.sigBytes;return B[_>>>5]|=128<<24-_%32,B[14+(64+_>>>9<<4)]=Math.floor(e/4294967296),B[15+(64+_>>>9<<4)]=e,i.sigBytes=4*B.length,this._process(),this._hash},clone:function(){var i=t.clone.call(this);return i._hash=this._hash.clone(),i}});n.SHA1=t._createHelper(c),n.HmacSHA1=t._createHmacHelper(c)}(),function(n){var r=R,v=r.lib,t=v.WordArray,h=v.Hasher,v=r.algo,c=[],i=[];function B(w){return 4294967296*(w-(0|w))|0}for(var e=2,_=0;_<64;)!function(w){for(var d=n.sqrt(w),s=2;s<=d;s++)if(!(w%s))return;return 1}(e)||(_<8&&(c[_]=B(n.pow(e,0.5))),i[_]=B(n.pow(e,0.3333333333333333)),_++),e++;var o=[],v=v.SHA256=h.extend({_doReset:function(){this._hash=new t.init(c.slice(0))},_doProcessBlock:function(w,d){for(var s=this._hash.words,l=s[0],u=s[1],y=s[2],g=s[3],f=s[4],A=s[5],z=s[6],M=s[7],C=0;C<64;C++){o[C]=C<16?0|w[d+C]:(((b=o[C-15])<<25|b>>>7)^(b<<14|b>>>18)^b>>>3)+o[C-7]+(((b=o[C-2])<<15|b>>>17)^(b<<13|b>>>19)^b>>>10)+o[C-16];var b=l&u^l&y^u&y,E=M+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&A^~f&z)+i[C]+o[C],M=z,z=A,A=f,f=g+E|0,g=y,y=u,u=l,l=E+(((l<<30|l>>>2)^(l<<19|l>>>13)^(l<<10|l>>>22))+b)|0}s[0]=s[0]+l|0,s[1]=s[1]+u|0,s[2]=s[2]+y|0,s[3]=s[3]+g|0,s[4]=s[4]+f|0,s[5]=s[5]+A|0,s[6]=s[6]+z|0,s[7]=s[7]+M|0},_doFinalize:function(){var w=this._data,d=w.words,s=8*this._nDataBytes,l=8*w.sigBytes;return d[l>>>5]|=128<<24-l%32,d[14+(64+l>>>9<<4)]=n.floor(s/4294967296),d[15+(64+l>>>9<<4)]=s,w.sigBytes=4*d.length,this._process(),this._hash},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});r.SHA256=h._createHelper(v),r.HmacSHA256=h._createHmacHelper(v)}(Math),function(){var n=R.lib.WordArray,r=R.enc;r.Utf16=r.Utf16BE={stringify:function(h){for(var{words:c,sigBytes:i}=h,B=[],e=0;e<i;e+=2){var _=c[e>>>2]>>>16-e%4*8&65535;B.push(String.fromCharCode(_))}return B.join("")},parse:function(h){for(var c=h.length,i=[],B=0;B<c;B++)i[B>>>1]|=h.charCodeAt(B)<<16-B%2*16;return n.create(i,2*c)}};function t(h){return h<<8&4278255360|h>>>8&16711935}r.Utf16LE={stringify:function(h){for(var{words:c,sigBytes:i}=h,B=[],e=0;e<i;e+=2){var _=t(c[e>>>2]>>>16-e%4*8&65535);B.push(String.fromCharCode(_))}return B.join("")},parse:function(h){for(var c=h.length,i=[],B=0;B<c;B++)i[B>>>1]|=t(h.charCodeAt(B)<<16-B%2*16);return n.create(i,2*c)}}}(),function(){var n,r;typeof ArrayBuffer=="function"&&(n=R.lib.WordArray,r=n.init,(n.init=function(t){if((t=(t=t instanceof ArrayBuffer?new Uint8Array(t):t)instanceof Int8Array||typeof Uint8ClampedArray<"u"&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t)instanceof Uint8Array){for(var h=t.byteLength,c=[],i=0;i<h;i++)c[i>>>2]|=t[i]<<24-i%4*8;r.call(this,c,h)}else r.apply(this,arguments)}).prototype=n)}(),function(){var n=R,o=n.lib,r=o.WordArray,t=o.Hasher,o=n.algo,h=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),i=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),B=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),e=r.create([0,1518500249,1859775393,2400959708,2840853838]),_=r.create([1352829926,1548603684,1836072691,2053994217,0]),o=o.RIPEMD160=t.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(s,l){for(var u=0;u<16;u++){var y=l+u,g=s[y];s[y]=16711935&(g<<8|g>>>24)|4278255360&(g<<24|g>>>8)}for(var f,A,z,M,C,b,E=this._hash.words,D=e.words,L=_.words,Z=h.words,K=c.words,I=i.words,W=B.words,X=f=E[0],N=A=E[1],k=z=E[2],H=M=E[3],S=C=E[4],u=0;u<80;u+=1)b=(b=d(b=(b=f+s[l+Z[u]]|0)+(u<16?(A^z^M)+D[0]:u<32?v(A,z,M)+D[1]:u<48?((A|~z)^M)+D[2]:u<64?w(A,z,M)+D[3]:(A^(z|~M))+D[4])|0,I[u]))+C|0,f=C,C=M,M=d(z,10),z=A,A=b,b=(b=d(b=(b=X+s[l+K[u]]|0)+(u<16?(N^(k|~H))+L[0]:u<32?w(N,k,H)+L[1]:u<48?((N|~k)^H)+L[2]:u<64?v(N,k,H)+L[3]:(N^k^H)+L[4])|0,W[u]))+S|0,X=S,S=H,H=d(k,10),k=N,N=b;b=E[1]+z+H|0,E[1]=E[2]+M+S|0,E[2]=E[3]+C+X|0,E[3]=E[4]+f+N|0,E[4]=E[0]+A+k|0,E[0]=b},_doFinalize:function(){for(var s=this._data,l=s.words,u=8*this._nDataBytes,y=8*s.sigBytes,y=(l[y>>>5]|=128<<24-y%32,l[14+(64+y>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),s.sigBytes=4*(l.length+1),this._process(),this._hash),g=y.words,f=0;f<5;f++){var A=g[f];g[f]=16711935&(A<<8|A>>>24)|4278255360&(A<<24|A>>>8)}return y},clone:function(){var s=t.clone.call(this);return s._hash=this._hash.clone(),s}});function v(s,l,u){return s&l|~s&u}function w(s,l,u){return s&u|l&~u}function d(s,l){return s<<l|s>>>32-l}n.RIPEMD160=t._createHelper(o),n.HmacRIPEMD160=t._createHmacHelper(o)}(Math),function(){var n=R.lib.Base,r=R.enc.Utf8;R.algo.HMAC=n.extend({init:function(t,h){t=this._hasher=new t.init,typeof h=="string"&&(h=r.parse(h));for(var c=t.blockSize,i=4*c,t=((h=h.sigBytes>i?t.finalize(h):h).clamp(),this._oKey=h.clone()),h=this._iKey=h.clone(),B=t.words,e=h.words,_=0;_<c;_++)B[_]^=1549556828,e[_]^=909522486;t.sigBytes=h.sigBytes=i,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(c){var h=this._hasher,c=h.finalize(c);return h.reset(),h.finalize(this._oKey.clone().concat(c))}})}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.algo,c=h.SHA1,i=h.HMAC,B=h.PBKDF2=r.extend({cfg:r.extend({keySize:4,hasher:c,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,_){for(var o=this.cfg,v=i.create(o.hasher,e),w=t.create(),d=t.create([1]),s=w.words,l=d.words,u=o.keySize,y=o.iterations;s.length<u;){for(var g=v.update(_).finalize(d),f=(v.reset(),g.words),A=f.length,z=g,M=1;M<y;M++){z=v.finalize(z),v.reset();for(var C=z.words,b=0;b<A;b++)f[b]^=C[b]}w.concat(g),l[0]++}return w.sigBytes=4*u,w}});n.PBKDF2=function(e,_,o){return B.create(o).compute(e,_)}}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.algo,c=h.MD5,i=h.EvpKDF=r.extend({cfg:r.extend({keySize:4,hasher:c,iterations:1}),init:function(B){this.cfg=this.cfg.extend(B)},compute:function(B,e){for(var _=this.cfg,o=_.hasher.create(),v=t.create(),w=v.words,d=_.keySize,s=_.iterations;w.length<d;){l&&o.update(l);var l=o.update(B).finalize(e);o.reset();for(var u=1;u<s;u++)l=o.finalize(l),o.reset();v.concat(l)}return v.sigBytes=4*d,v}});n.EvpKDF=function(B,e,_){return i.create(_).compute(B,e)}}(),function(){var n=R,r=n.lib.WordArray,h=n.algo,t=h.SHA256,h=h.SHA224=t.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var c=t._doFinalize.call(this);return c.sigBytes-=4,c}});n.SHA224=t._createHelper(h),n.HmacSHA224=t._createHmacHelper(h)}(),function(){var n=R,h=n.lib,r=h.Base,t=h.WordArray,h=n.x64={};h.Word=r.extend({init:function(c,i){this.high=c,this.low=i}}),h.WordArray=r.extend({init:function(c,i){c=this.words=c||[],this.sigBytes=i!=null?i:8*c.length},toX32:function(){for(var c=this.words,i=c.length,B=[],e=0;e<i;e++){var _=c[e];B.push(_.high),B.push(_.low)}return t.create(B,this.sigBytes)},clone:function(){for(var c=r.clone.call(this),i=c.words=this.words.slice(0),B=i.length,e=0;e<B;e++)i[e]=i[e].clone();return c}})}(),function(n){for(var r=R,i=r.lib,t=i.WordArray,h=i.Hasher,c=r.x64.Word,i=r.algo,B=[],e=[],_=[],o=1,v=0,w=0;w<24;w++){B[o+5*v]=(w+1)*(w+2)/2%64;var d=(2*o+3*v)%5;o=v%5,v=d}for(o=0;o<5;o++)for(v=0;v<5;v++)e[o+5*v]=v+(2*o+3*v)%5*5;for(var s=1,l=0;l<24;l++){for(var u,y=0,g=0,f=0;f<7;f++)1&s&&((u=(1<<f)-1)<32?g^=1<<u:y^=1<<u-32),128&s?s=s<<1^113:s<<=1;_[l]=c.create(y,g)}for(var A=[],z=0;z<25;z++)A[z]=c.create();i=i.SHA3=h.extend({cfg:h.cfg.extend({outputLength:512}),_doReset:function(){for(var M=this._state=[],C=0;C<25;C++)M[C]=new c.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(M,C){for(var b=this._state,E=this.blockSize/2,D=0;D<E;D++){var Z=M[C+2*D],L=M[C+2*D+1],Z=16711935&(Z<<8|Z>>>24)|4278255360&(Z<<24|Z>>>8);($=b[D]).high^=16711935&(L<<8|L>>>24)|4278255360&(L<<24|L>>>8),$.low^=Z}for(var K=0;K<24;K++){for(var I=0;I<5;I++){for(var W=0,X=0,N=0;N<5;N++)W^=($=b[I+5*N]).high,X^=$.low;var k=A[I];k.high=W,k.low=X}for(I=0;I<5;I++)for(var H=A[(I+4)%5],p=A[(I+1)%5],S=p.high,p=p.low,W=H.high^(S<<1|p>>>31),X=H.low^(p<<1|S>>>31),N=0;N<5;N++)($=b[I+5*N]).high^=W,$.low^=X;for(var Y=1;Y<25;Y++){var Q=($=b[Y]).high,J=$.low,U=B[Y],Q=(X=U<32?(W=Q<<U|J>>>32-U,J<<U|Q>>>32-U):(W=J<<U-32|Q>>>64-U,Q<<U-32|J>>>64-U),A[e[Y]]);Q.high=W,Q.low=X}var G=A[0],O=b[0];G.high=O.high,G.low=O.low;for(I=0;I<5;I++)for(N=0;N<5;N++){var $=b[Y=I+5*N],j=A[Y],x=A[(I+1)%5+5*N],c1=A[(I+2)%5+5*N];$.high=j.high^~x.high&c1.high,$.low=j.low^~x.low&c1.low}$=b[0],G=_[K],$.high^=G.high,$.low^=G.low}},_doFinalize:function(){for(var M=this._data,C=M.words,D=(this._nDataBytes,8*M.sigBytes),b=32*this.blockSize,E=(C[D>>>5]|=1<<24-D%32,C[(n.ceil((1+D)/b)*b>>>5)-1]|=128,M.sigBytes=4*C.length,this._process(),this._state),D=this.cfg.outputLength/8,L=D/8,Z=[],K=0;K<L;K++){var I=E[K],W=I.high,I=I.low,W=16711935&(W<<8|W>>>24)|4278255360&(W<<24|W>>>8);Z.push(16711935&(I<<8|I>>>24)|4278255360&(I<<24|I>>>8)),Z.push(W)}return new t.init(Z,D)},clone:function(){for(var M=h.clone.call(this),C=M._state=this._state.slice(0),b=0;b<25;b++)C[b]=C[b].clone();return M}}),r.SHA3=h._createHelper(i),r.HmacSHA3=h._createHmacHelper(i)}(Math),function(){var n=R,r=n.lib.Hasher,c=n.x64,t=c.Word,h=c.WordArray,c=n.algo;function i(){return t.create.apply(t,arguments)}for(var B=[i(1116352408,3609767458),i(1899447441,602891725),i(3049323471,3964484399),i(3921009573,2173295548),i(961987163,4081628472),i(1508970993,3053834265),i(2453635748,2937671579),i(2870763221,3664609560),i(3624381080,2734883394),i(310598401,1164996542),i(607225278,1323610764),i(1426881987,3590304994),i(1925078388,4068182383),i(2162078206,991336113),i(2614888103,633803317),i(3248222580,3479774868),i(3835390401,2666613458),i(4022224774,944711139),i(264347078,2341262773),i(604807628,2007800933),i(770255983,1495990901),i(1249150122,1856431235),i(1555081692,3175218132),i(1996064986,2198950837),i(2554220882,3999719339),i(2821834349,766784016),i(2952996808,2566594879),i(3210313671,3203337956),i(3336571891,1034457026),i(3584528711,2466948901),i(113926993,3758326383),i(338241895,168717936),i(666307205,1188179964),i(773529912,1546045734),i(1294757372,1522805485),i(1396182291,2643833823),i(1695183700,2343527390),i(1986661051,1014477480),i(2177026350,1206759142),i(2456956037,344077627),i(2730485921,1290863460),i(2820302411,3158454273),i(3259730800,3505952657),i(3345764771,106217008),i(3516065817,3606008344),i(3600352804,1432725776),i(4094571909,1467031594),i(275423344,851169720),i(430227734,3100823752),i(506948616,1363258195),i(659060556,3750685593),i(883997877,3785050280),i(958139571,3318307427),i(1322822218,3812723403),i(1537002063,2003034995),i(1747873779,3602036899),i(1955562222,1575990012),i(2024104815,1125592928),i(2227730452,2716904306),i(2361852424,442776044),i(2428436474,593698344),i(2756734187,3733110249),i(3204031479,2999351573),i(3329325298,3815920427),i(3391569614,3928383900),i(3515267271,566280711),i(3940187606,3454069534),i(4118630271,4000239992),i(116418474,1914138554),i(174292421,2731055270),i(289380356,3203993006),i(460393269,320620315),i(685471733,587496836),i(852142971,1086792851),i(1017036298,365543100),i(1126000580,2618297676),i(1288033470,3409855158),i(1501505948,4234509866),i(1607167915,987167468),i(1816402316,1246189591)],e=[],_=0;_<80;_++)e[_]=i();c=c.SHA512=r.extend({_doReset:function(){this._hash=new h.init([new t.init(1779033703,4089235720),new t.init(3144134277,2227873595),new t.init(1013904242,4271175723),new t.init(2773480762,1595750129),new t.init(1359893119,2917565137),new t.init(2600822924,725511199),new t.init(528734635,4215389547),new t.init(1541459225,327033209)])},_doProcessBlock:function(o,v){for(var f=this._hash.words,w=f[0],d=f[1],s=f[2],l=f[3],u=f[4],y=f[5],g=f[6],f=f[7],A=w.high,z=w.low,M=d.high,C=d.low,b=s.high,E=s.low,D=l.high,L=l.low,Z=u.high,K=u.low,I=y.high,W=y.low,X=g.high,N=g.low,k=f.high,H=f.low,P=A,S=z,_1=M,n1=C,s1=b,m=E,H1=D,e1=L,V=Z,p=K,B1=I,t1=W,y1=X,r1=N,S1=k,h1=H,Y=0;Y<80;Y++)var J,U,x=e[Y],Q=(Y<16?(U=x.high=0|o[v+2*Y],J=x.low=0|o[v+2*Y+1]):(O=(j=e[Y-15]).high,j=j.low,G=(Q=e[Y-2]).high,Q=Q.low,U=(U=(U=((O>>>1|j<<31)^(O>>>8|j<<24)^O>>>7)+($=e[Y-7]).high+((J=(j=(j>>>1|O<<31)^(j>>>8|O<<24)^(j>>>7|O<<25))+$.low)>>>0<j>>>0?1:0))+((G>>>19|Q<<13)^(G<<3|Q>>>29)^G>>>6)+((J=J+(O=(Q>>>19|G<<13)^(Q<<3|G>>>29)^(Q>>>6|G<<26)))>>>0<O>>>0?1:0))+($=e[Y-16]).high+((J=J+(j=$.low))>>>0<j>>>0?1:0),x.high=U,x.low=J),V&B1^~V&y1),G=p&t1^~p&r1,O=P&_1^P&s1^_1&s1,$=(S>>>28|P<<4)^(S<<30|P>>>2)^(S<<25|P>>>7),j=B[Y],x=j.high,c1=j.low,T=h1+((p>>>14|V<<18)^(p>>>18|V<<14)^(p<<23|V>>>9)),g1=S1+((V>>>14|p<<18)^(V>>>18|p<<14)^(V<<23|p>>>9))+(T>>>0<h1>>>0?1:0),C1=$+(S&n1^S&m^n1&m),S1=y1,h1=r1,y1=B1,r1=t1,B1=V,t1=p,V=H1+(g1=g1+Q+((T=T+G)>>>0<G>>>0?1:0)+x+((T=T+c1)>>>0<c1>>>0?1:0)+U+((T=T+J)>>>0<J>>>0?1:0))+((p=e1+T|0)>>>0<e1>>>0?1:0)|0,H1=s1,e1=m,s1=_1,m=n1,_1=P,n1=S,P=g1+(((P>>>28|S<<4)^(P<<30|S>>>2)^(P<<25|S>>>7))+O+(C1>>>0<$>>>0?1:0))+((S=T+C1|0)>>>0<T>>>0?1:0)|0;z=w.low=z+S,w.high=A+P+(z>>>0<S>>>0?1:0),C=d.low=C+n1,d.high=M+_1+(C>>>0<n1>>>0?1:0),E=s.low=E+m,s.high=b+s1+(E>>>0<m>>>0?1:0),L=l.low=L+e1,l.high=D+H1+(L>>>0<e1>>>0?1:0),K=u.low=K+p,u.high=Z+V+(K>>>0<p>>>0?1:0),W=y.low=W+t1,y.high=I+B1+(W>>>0<t1>>>0?1:0),N=g.low=N+r1,g.high=X+y1+(N>>>0<r1>>>0?1:0),H=f.low=H+h1,f.high=k+S1+(H>>>0<h1>>>0?1:0)},_doFinalize:function(){var o=this._data,v=o.words,w=8*this._nDataBytes,d=8*o.sigBytes;return v[d>>>5]|=128<<24-d%32,v[30+(128+d>>>10<<5)]=Math.floor(w/4294967296),v[31+(128+d>>>10<<5)]=w,o.sigBytes=4*v.length,this._process(),this._hash.toX32()},clone:function(){var o=r.clone.call(this);return o._hash=this._hash.clone(),o},blockSize:32}),n.SHA512=r._createHelper(c),n.HmacSHA512=r._createHmacHelper(c)}(),function(){var n=R,c=n.x64,r=c.Word,t=c.WordArray,c=n.algo,h=c.SHA512,c=c.SHA384=h.extend({_doReset:function(){this._hash=new t.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var i=h._doFinalize.call(this);return i.sigBytes-=16,i}});n.SHA384=h._createHelper(c),n.HmacSHA384=h._createHmacHelper(c)}(),R.lib.Cipher||function(){var n=R,r=n.lib,t=r.Base,h=r.WordArray,c=r.BufferedBlockAlgorithm,s=n.enc,i=(s.Utf8,s.Base64),B=n.algo.EvpKDF,e=r.Cipher=c.extend({cfg:t.extend(),createEncryptor:function(u,y){return this.create(this._ENC_XFORM_MODE,u,y)},createDecryptor:function(u,y){return this.create(this._DEC_XFORM_MODE,u,y)},init:function(u,y,g){this.cfg=this.cfg.extend(g),this._xformMode=u,this._key=y,this.reset()},reset:function(){c.reset.call(this),this._doReset()},process:function(u){return this._append(u),this._process()},finalize:function(u){return u&&this._append(u),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(u){return{encrypt:function(y,g,f){return _(g).encrypt(u,y,g,f)},decrypt:function(y,g,f){return _(g).decrypt(u,y,g,f)}}}});function _(u){return typeof u=="string"?l:d}r.StreamCipher=e.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var s=n.mode={},w=r.BlockCipherMode=t.extend({createEncryptor:function(u,y){return this.Encryptor.create(u,y)},createDecryptor:function(u,y){return this.Decryptor.create(u,y)},init:function(u,y){this._cipher=u,this._iv=y}}),w=s.CBC=((s=w.extend()).Encryptor=s.extend({processBlock:function(u,y){var g=this._cipher,f=g.blockSize;o.call(this,u,y,f),g.encryptBlock(u,y),this._prevBlock=u.slice(y,y+f)}}),s.Decryptor=s.extend({processBlock:function(u,y){var g=this._cipher,f=g.blockSize,A=u.slice(y,y+f);g.decryptBlock(u,y),o.call(this,u,y,f),this._prevBlock=A}}),s);function o(u,y,g){var f,A=this._iv;A?(f=A,this._iv=void 0):f=this._prevBlock;for(var z=0;z<g;z++)u[y+z]^=f[z]}var s=(n.pad={}).Pkcs7={pad:function(u,y){for(var y=4*y,g=y-u.sigBytes%y,f=g<<24|g<<16|g<<8|g,A=[],z=0;z<g;z+=4)A.push(f);y=h.create(A,g),u.concat(y)},unpad:function(u){var y=255&u.words[u.sigBytes-1>>>2];u.sigBytes-=y}},v=(r.BlockCipher=e.extend({cfg:e.cfg.extend({mode:w,padding:s}),reset:function(){e.reset.call(this);var u,g=this.cfg,y=g.iv,g=g.mode;this._xformMode==this._ENC_XFORM_MODE?u=g.createEncryptor:(u=g.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==u?this._mode.init(this,y&&y.words):(this._mode=u.call(g,this,y&&y.words),this._mode.__creator=u)},_doProcessBlock:function(u,y){this._mode.processBlock(u,y)},_doFinalize:function(){var u,y=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(y.pad(this._data,this.blockSize),u=this._process(!0)):(u=this._process(!0),y.unpad(u)),u},blockSize:4}),r.CipherParams=t.extend({init:function(u){this.mixIn(u)},toString:function(u){return(u||this.formatter).stringify(this)}})),w=(n.format={}).OpenSSL={stringify:function(g){var{ciphertext:y,salt:g}=g;return(g?h.create([1398893684,1701076831]).concat(g).concat(y):y).toString(i)},parse:function(g){var y,g=i.parse(g),f=g.words;return f[0]==1398893684&&f[1]==1701076831&&(y=h.create(f.slice(2,4)),f.splice(0,4),g.sigBytes-=16),v.create({ciphertext:g,salt:y})}},d=r.SerializableCipher=t.extend({cfg:t.extend({format:w}),encrypt:function(u,A,g,f){f=this.cfg.extend(f);var z=u.createEncryptor(g,f),A=z.finalize(A),z=z.cfg;return v.create({ciphertext:A,key:g,iv:z.iv,algorithm:u,mode:z.mode,padding:z.padding,blockSize:u.blockSize,formatter:f.format})},decrypt:function(u,y,g,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),u.createDecryptor(g,f).finalize(y.ciphertext)},_parse:function(u,y){return typeof u=="string"?y.parse(u,this):u}}),s=(n.kdf={}).OpenSSL={execute:function(u,y,g,f){return f=f||h.random(8),u=B.create({keySize:y+g}).compute(u,f),g=h.create(u.words.slice(y),4*g),u.sigBytes=4*y,v.create({key:u,iv:g,salt:f})}},l=r.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:s}),encrypt:function(u,y,g,f){return g=(f=this.cfg.extend(f)).kdf.execute(g,u.keySize,u.ivSize),f.iv=g.iv,u=d.encrypt.call(this,u,y,g.key,f),u.mixIn(g),u},decrypt:function(u,y,g,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),g=f.kdf.execute(g,u.keySize,u.ivSize,y.salt),f.iv=g.iv,d.decrypt.call(this,u,y,g.key,f)}})}(),R.mode.CFB=function(){var n=R.lib.BlockCipherMode.extend();function r(t,h,c,i){var B,e=this._iv;e?(B=e.slice(0),this._iv=void 0):B=this._prevBlock,i.encryptBlock(B,0);for(var _=0;_<c;_++)t[h+_]^=B[_]}return n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize;r.call(this,t,h,i,c),this._prevBlock=t.slice(h,h+i)}}),n.Decryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=t.slice(h,h+i);r.call(this,t,h,i,c),this._prevBlock=B}}),n}(),R.mode.ECB=function(){var n=R.lib.BlockCipherMode.extend();return n.Encryptor=n.extend({processBlock:function(r,t){this._cipher.encryptBlock(r,t)}}),n.Decryptor=n.extend({processBlock:function(r,t){this._cipher.decryptBlock(r,t)}}),n}(),R.pad.AnsiX923={pad:function(n,t){var h=n.sigBytes,t=4*t,t=t-h%t,h=h+t-1;n.clamp(),n.words[h>>>2]|=t<<24-h%4*8,n.sigBytes+=t},unpad:function(n){var r=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=r}},R.pad.Iso10126={pad:function(n,r){r*=4,r-=n.sigBytes%r,n.concat(R.lib.WordArray.random(r-1)).concat(R.lib.WordArray.create([r<<24],1))},unpad:function(n){var r=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=r}},R.pad.Iso97971={pad:function(n,r){n.concat(R.lib.WordArray.create([2147483648],1)),R.pad.ZeroPadding.pad(n,r)},unpad:function(n){R.pad.ZeroPadding.unpad(n),n.sigBytes--}},R.mode.OFB=function(){var n=R.lib.BlockCipherMode.extend(),r=n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=this._iv,e=this._keystream;B&&(e=this._keystream=B.slice(0),this._iv=void 0),c.encryptBlock(e,0);for(var _=0;_<i;_++)t[h+_]^=e[_]}});return n.Decryptor=r,n}(),R.pad.NoPadding={pad:function(){},unpad:function(){}},function(){var n=R.lib.CipherParams,r=R.enc.Hex;R.format.Hex={stringify:function(t){return t.ciphertext.toString(r)},parse:function(t){return t=r.parse(t),n.create({ciphertext:t})}}}(),function(){for(var n=R,r=n.lib.BlockCipher,C=n.algo,t=[],h=[],c=[],i=[],B=[],e=[],_=[],o=[],v=[],w=[],d=[],s=0;s<256;s++)d[s]=s<128?s<<1:s<<1^283;for(var l=0,u=0,s=0;s<256;s++){var y=u^u<<1^u<<2^u<<3^u<<4,g=d[h[t[l]=y=y>>>8^255&y^99]=l],f=d[g],A=d[f],z=257*d[y]^16843008*y;c[l]=z<<24|z>>>8,i[l]=z<<16|z>>>16,B[l]=z<<8|z>>>24,e[l]=z,_[y]=(z=16843009*A^65537*f^257*g^16843008*l)<<24|z>>>8,o[y]=z<<16|z>>>16,v[y]=z<<8|z>>>24,w[y]=z,l?(l=g^d[d[d[A^g]]],u^=d[d[u]]):l=u=1}var M=[0,1,2,4,8,16,32,64,128,27,54],C=C.AES=r.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var b=this._keyPriorReset=this._key,E=b.words,D=b.sigBytes/4,L=4*(1+(this._nRounds=6+D)),Z=this._keySchedule=[],K=0;K<L;K++)K<D?Z[K]=E[K]:(X=Z[K-1],K%D?6<D&&K%D==4&&(X=t[X>>>24]<<24|t[X>>>16&255]<<16|t[X>>>8&255]<<8|t[255&X]):(X=t[(X=X<<8|X>>>24)>>>24]<<24|t[X>>>16&255]<<16|t[X>>>8&255]<<8|t[255&X],X^=M[K/D|0]<<24),Z[K]=Z[K-D]^X);for(var I=this._invKeySchedule=[],W=0;W<L;W++){var X,K=L-W;X=W%4?Z[K]:Z[K-4],I[W]=W<4||K<=4?X:_[t[X>>>24]]^o[t[X>>>16&255]]^v[t[X>>>8&255]]^w[t[255&X]]}}},encryptBlock:function(b,E){this._doCryptBlock(b,E,this._keySchedule,c,i,B,e,t)},decryptBlock:function(b,E){var D=b[E+1],D=(b[E+1]=b[E+3],b[E+3]=D,this._doCryptBlock(b,E,this._invKeySchedule,_,o,v,w,h),b[E+1]);b[E+1]=b[E+3],b[E+3]=D},_doCryptBlock:function(b,E,D,L,Z,K,I,W){for(var X=this._nRounds,J=b[E]^D[0],U=b[E+1]^D[1],Q=b[E+2]^D[2],G=b[E+3]^D[3],N=4,k=1;k<X;k++)var H=L[J>>>24]^Z[U>>>16&255]^K[Q>>>8&255]^I[255&G]^D[N++],S=L[U>>>24]^Z[Q>>>16&255]^K[G>>>8&255]^I[255&J]^D[N++],p=L[Q>>>24]^Z[G>>>16&255]^K[J>>>8&255]^I[255&U]^D[N++],Y=L[G>>>24]^Z[J>>>16&255]^K[U>>>8&255]^I[255&Q]^D[N++],J=H,U=S,Q=p,G=Y;H=(W[J>>>24]<<24|W[U>>>16&255]<<16|W[Q>>>8&255]<<8|W[255&G])^D[N++],S=(W[U>>>24]<<24|W[Q>>>16&255]<<16|W[G>>>8&255]<<8|W[255&J])^D[N++],p=(W[Q>>>24]<<24|W[G>>>16&255]<<16|W[J>>>8&255]<<8|W[255&U])^D[N++],Y=(W[G>>>24]<<24|W[J>>>16&255]<<16|W[U>>>8&255]<<8|W[255&Q])^D[N++],b[E]=H,b[E+1]=S,b[E+2]=p,b[E+3]=Y},keySize:8});n.AES=r._createHelper(C)}(),function(){var n=R,t=n.lib,r=t.WordArray,t=t.BlockCipher,h=n.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],i=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],B=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],e=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],_=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],o=h.DES=t.extend({_doReset:function(){for(var d=this._key.words,s=[],l=0;l<56;l++){var u=c[l]-1;s[l]=d[u>>>5]>>>31-u%32&1}for(var y=this._subKeys=[],g=0;g<16;g++){for(var f=y[g]=[],A=B[g],l=0;l<24;l++)f[l/6|0]|=s[(i[l]-1+A)%28]<<31-l%6,f[4+(l/6|0)]|=s[28+(i[l+24]-1+A)%28]<<31-l%6;f[0]=f[0]<<1|f[0]>>>31;for(l=1;l<7;l++)f[l]=f[l]>>>4*(l-1)+3;f[7]=f[7]<<5|f[7]>>>27}for(var z=this._invSubKeys=[],l=0;l<16;l++)z[l]=y[15-l]},encryptBlock:function(d,s){this._doCryptBlock(d,s,this._subKeys)},decryptBlock:function(d,s){this._doCryptBlock(d,s,this._invSubKeys)},_doCryptBlock:function(d,s,l){this._lBlock=d[s],this._rBlock=d[s+1],v.call(this,4,252645135),v.call(this,16,65535),w.call(this,2,858993459),w.call(this,8,16711935),v.call(this,1,1431655765);for(var u=0;u<16;u++){for(var y=l[u],g=this._lBlock,f=this._rBlock,A=0,z=0;z<8;z++)A|=e[z][((f^y[z])&_[z])>>>0];this._lBlock=f,this._rBlock=g^A}var M=this._lBlock;this._lBlock=this._rBlock,this._rBlock=M,v.call(this,1,1431655765),w.call(this,8,16711935),w.call(this,2,858993459),v.call(this,16,65535),v.call(this,4,252645135),d[s]=this._lBlock,d[s+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function v(d,s){s=(this._lBlock>>>d^this._rBlock)&s,this._rBlock^=s,this._lBlock^=s<<d}function w(d,s){s=(this._rBlock>>>d^this._lBlock)&s,this._lBlock^=s,this._rBlock^=s<<d}n.DES=t._createHelper(o),h=h.TripleDES=t.extend({_doReset:function(){var d=this._key.words;this._des1=o.createEncryptor(r.create(d.slice(0,2))),this._des2=o.createEncryptor(r.create(d.slice(2,4))),this._des3=o.createEncryptor(r.create(d.slice(4,6)))},encryptBlock:function(d,s){this._des1.encryptBlock(d,s),this._des2.decryptBlock(d,s),this._des3.encryptBlock(d,s)},decryptBlock:function(d,s){this._des3.decryptBlock(d,s),this._des2.encryptBlock(d,s),this._des1.decryptBlock(d,s)},keySize:6,ivSize:2,blockSize:2}),n.TripleDES=t._createHelper(h)}(),function(){var n=R,r=n.lib.StreamCipher,t=n.algo,h=t.RC4=r.extend({_doReset:function(){for(var i=this._key,B=i.words,e=i.sigBytes,_=this._S=[],o=0;o<256;o++)_[o]=o;for(var o=0,v=0;o<256;o++){var w=o%e,w=B[w>>>2]>>>24-w%4*8&255,v=(v+_[o]+w)%256,w=_[o];_[o]=_[v],_[v]=w}this._i=this._j=0},_doProcessBlock:function(i,B){i[B]^=c.call(this)},keySize:8,ivSize:0});function c(){for(var i=this._S,B=this._i,e=this._j,_=0,o=0;o<4;o++){var e=(e+i[B=(B+1)%256])%256,v=i[B];i[B]=i[e],i[e]=v,_|=i[(i[B]+i[e])%256]<<24-8*o}return this._i=B,this._j=e,_}n.RC4=r._createHelper(h),t=t.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var i=this.cfg.drop;0<i;i--)c.call(this)}}),n.RC4Drop=r._createHelper(t)}(),R.mode.CTRGladman=function(){var n=R.lib.BlockCipherMode.extend();function r(h){var c,i,B;return(h>>24&255)==255?(i=h>>8&255,B=255&h,(c=h>>16&255)===255?(c=0,i===255?(i=0,B===255?B=0:++B):++i):++c,h=0,h=(h+=c<<16)+(i<<8)+B):h+=16777216,h}var t=n.Encryptor=n.extend({processBlock:function(h,c){var i=this._cipher,B=i.blockSize,e=this._iv,_=this._counter,o=(e&&(_=this._counter=e.slice(0),this._iv=void 0),((e=_)[0]=r(e[0]))===0&&(e[1]=r(e[1])),_.slice(0));i.encryptBlock(o,0);for(var v=0;v<B;v++)h[c+v]^=o[v]}});return n.Decryptor=t,n}(),function(){var n=R,r=n.lib.StreamCipher,i=n.algo,t=[],h=[],c=[],i=i.Rabbit=r.extend({_doReset:function(){for(var e=this._key.words,_=this.cfg.iv,o=0;o<4;o++)e[o]=16711935&(e[o]<<8|e[o]>>>24)|4278255360&(e[o]<<24|e[o]>>>8);for(var v=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],w=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],o=this._b=0;o<4;o++)B.call(this);for(o=0;o<8;o++)w[o]^=v[o+4&7];if(_){var _=_.words,d=_[0],_=_[1],d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),_=16711935&(_<<8|_>>>24)|4278255360&(_<<24|_>>>8),s=d>>>16|4294901760&_,l=_<<16|65535&d;w[0]^=d,w[1]^=s,w[2]^=_,w[3]^=l,w[4]^=d,w[5]^=s,w[6]^=_,w[7]^=l;for(o=0;o<4;o++)B.call(this)}},_doProcessBlock:function(e,_){var o=this._X;B.call(this),t[0]=o[0]^o[5]>>>16^o[3]<<16,t[1]=o[2]^o[7]>>>16^o[5]<<16,t[2]=o[4]^o[1]>>>16^o[7]<<16,t[3]=o[6]^o[3]>>>16^o[1]<<16;for(var v=0;v<4;v++)t[v]=16711935&(t[v]<<8|t[v]>>>24)|4278255360&(t[v]<<24|t[v]>>>8),e[_+v]^=t[v]},blockSize:4,ivSize:2});function B(){for(var e=this._X,_=this._C,o=0;o<8;o++)h[o]=_[o];_[0]=_[0]+1295307597+this._b|0,_[1]=_[1]+3545052371+(_[0]>>>0<h[0]>>>0?1:0)|0,_[2]=_[2]+886263092+(_[1]>>>0<h[1]>>>0?1:0)|0,_[3]=_[3]+1295307597+(_[2]>>>0<h[2]>>>0?1:0)|0,_[4]=_[4]+3545052371+(_[3]>>>0<h[3]>>>0?1:0)|0,_[5]=_[5]+886263092+(_[4]>>>0<h[4]>>>0?1:0)|0,_[6]=_[6]+1295307597+(_[5]>>>0<h[5]>>>0?1:0)|0,_[7]=_[7]+3545052371+(_[6]>>>0<h[6]>>>0?1:0)|0,this._b=_[7]>>>0<h[7]>>>0?1:0;for(o=0;o<8;o++){var v=e[o]+_[o],w=65535&v,d=v>>>16;c[o]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}e[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,e[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,e[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,e[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,e[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,e[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,e[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,e[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.Rabbit=r._createHelper(i)}(),R.mode.CTR=function(){var n=R.lib.BlockCipherMode.extend(),r=n.Encryptor=n.extend({processBlock:function(t,h){var c=this._cipher,i=c.blockSize,B=this._iv,e=this._counter,_=(B&&(e=this._counter=B.slice(0),this._iv=void 0),e.slice(0));c.encryptBlock(_,0),e[i-1]=e[i-1]+1|0;for(var o=0;o<i;o++)t[h+o]^=_[o]}});return n.Decryptor=r,n}(),function(){var n=R,r=n.lib.StreamCipher,i=n.algo,t=[],h=[],c=[],i=i.RabbitLegacy=r.extend({_doReset:function(){for(var e=this._key.words,_=this.cfg.iv,o=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],v=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],w=this._b=0;w<4;w++)B.call(this);for(w=0;w<8;w++)v[w]^=o[w+4&7];if(_){var e=_.words,_=e[0],e=e[1],_=16711935&(_<<8|_>>>24)|4278255360&(_<<24|_>>>8),e=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8),d=_>>>16|4294901760&e,s=e<<16|65535&_;v[0]^=_,v[1]^=d,v[2]^=e,v[3]^=s,v[4]^=_,v[5]^=d,v[6]^=e,v[7]^=s;for(w=0;w<4;w++)B.call(this)}},_doProcessBlock:function(e,_){var o=this._X;B.call(this),t[0]=o[0]^o[5]>>>16^o[3]<<16,t[1]=o[2]^o[7]>>>16^o[5]<<16,t[2]=o[4]^o[1]>>>16^o[7]<<16,t[3]=o[6]^o[3]>>>16^o[1]<<16;for(var v=0;v<4;v++)t[v]=16711935&(t[v]<<8|t[v]>>>24)|4278255360&(t[v]<<24|t[v]>>>8),e[_+v]^=t[v]},blockSize:4,ivSize:2});function B(){for(var e=this._X,_=this._C,o=0;o<8;o++)h[o]=_[o];_[0]=_[0]+1295307597+this._b|0,_[1]=_[1]+3545052371+(_[0]>>>0<h[0]>>>0?1:0)|0,_[2]=_[2]+886263092+(_[1]>>>0<h[1]>>>0?1:0)|0,_[3]=_[3]+1295307597+(_[2]>>>0<h[2]>>>0?1:0)|0,_[4]=_[4]+3545052371+(_[3]>>>0<h[3]>>>0?1:0)|0,_[5]=_[5]+886263092+(_[4]>>>0<h[4]>>>0?1:0)|0,_[6]=_[6]+1295307597+(_[5]>>>0<h[5]>>>0?1:0)|0,_[7]=_[7]+3545052371+(_[6]>>>0<h[6]>>>0?1:0)|0,this._b=_[7]>>>0<h[7]>>>0?1:0;for(o=0;o<8;o++){var v=e[o]+_[o],w=65535&v,d=v>>>16;c[o]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}e[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,e[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,e[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,e[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,e[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,e[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,e[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,e[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.RabbitLegacy=r._createHelper(i)}(),R.pad.ZeroPadding={pad:function(n,r){r*=4,n.clamp(),n.sigBytes+=r-(n.sigBytes%r||r)},unpad:function(n){for(var r=n.words,t=n.sigBytes-1;!(r[t>>>2]>>>24-t%4*8&255);)t--;n.sigBytes=t+1}};var d2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function G1(n){if(typeof n!="string")return!1;try{return JSON.parse(n),!0}catch(r){return!1}}var J1=(n,r)=>parseInt(Math.random()*(r-n+1)+n),k1=(n)=>{let r="";for(let t=0;t<n;t++)r+=d2[J1(0,64)];return r},F={encode(n){return n=R.enc.Utf8.parse(n),R.enc.Base64.stringify(n)},decode(n){return(n=R.enc.Base64.parse(n)).toString(R.enc.Utf8)}};function v2(n,r){try{var t=k1(8),h=k1(8),c=(r=R.enc.Utf8.parse(r),R.enc.Utf8.parse(t+h)),i=R.enc.Utf8.parse(n);return t+R.AES.encrypt(i,r,{iv:c,mode:R.mode.CBC,padding:R.pad.Pkcs7}).ciphertext.toString()+h}catch(B){}}function f2(n,r){try{var t=n.slice(0,8),h=n.slice(n.length-8,n.length),c=(n=n.slice(8,n.length-8),r=R.enc.Utf8.parse(r),R.enc.Utf8.parse(t+h)),i=R.enc.Hex.parse(n),B=R.enc.Base64.stringify(i);return R.AES.decrypt(B,r,{iv:c,mode:R.mode.CBC,padding:R.pad.Pkcs7}).toString(R.enc.Utf8).toString()}catch(e){}}var g2=function(n,r,t=0){for(n instanceof Object&&(n=JSON.stringify(n));r.length<16;)r+="0";return n=F.encode(v2(n,r)),t&&(n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n)),n},S2=function(n,r,t=0){try{for(;r.length<16;)r+="0";return n=F.decode(n),t&&(n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n)),(n=G1(n=f2(n,r))?JSON.parse(n):n)!=""&&n}catch(h){return!1}};try{z1&&(z1.exports={encode:g2,decode:S2,isJSON:G1,randomInt:J1,randomStr:k1})}catch(n){}});import f1 from"express";import n2 from"node:fs";import W1 from"node:path";import{pathToFileURL as i2}from"node:url";var _2=(n,r,t)=>{let h=r;h.return=async(c,i=1,B=200,e="")=>{if(c===null||c===void 0)i=0;if(c instanceof Promise)c=await c;r.status(B).send({msg:e,status:i?1:0,data:c===null||c===void 0?null:c})},h.reply=async(c,i,B=200,e="")=>{let _=i??(c?1:0);return await h.return(c,_,B,e)},h.success=async(c,i="成功")=>{return await h.return(c,1,200,i)},h.fail=async(c,i="系统错误,请联系管理员")=>{return await h.return(c,0,200,i)},t()},X1=_2;import o2 from"node:fs";import I1 from"node:path";var o1={logs:{open:!0,debug:!0},token:{open:!0,pwd:"8087",headerParams:"token"},projectName:"mas-app",openCors:!1,corsUrl:[]};function N1(n,r){if(!r)return{...n};return{...n,...r,logs:{...n?.logs,...r?.logs},token:{...n?.token,...r?.token}}}function K1(n){let r=[{apisPath:I1.join(n,"src/apis"),defalutApiPath:""},{apisPath:I1.join(n,"apis"),defalutApiPath:""}];for(let t of r)if(o2.existsSync(t.apisPath))return t;return r[0]}import l1 from"node:fs";import p1 from"node:path";function Z1(n){if(!l1.existsSync(n))return[];if(!l1.statSync(n).isDirectory())return[];let t=[],h=[n];while(h.length){let c=h.pop(),i=l1.readdirSync(c,{withFileTypes:!0});for(let B of i){let e=p1.join(c,B.name);if(B.isDirectory()){h.push(e);continue}if(!B.isFile())continue;if(B.name.endsWith(".d.ts"))continue;if(B.name.endsWith(".ts")||B.name.endsWith(".js"))t.push(e)}}return t}function L1(n,r){let c=p1.relative(n,r).replace(/\.(ts|js)$/,"").split(p1.sep).join("/");if(c==="index")return"/";if(c.endsWith("/index"))return`/${c.slice(0,-6)}`;return`/${c}`}function a(n){return Object.prototype.toString.call(n).slice(8,-1).toLowerCase()}function Q1(n){return n==="?"||n===-1}function U1(n,r){if(n===null||n===void 0)return!0;if(r==="?")return a(n)==="string";return a(n)==="number"}function u2(n){return Array.isArray(n)&&n.length>0&&(n[0]==="?"||n[0]===-1)}function y2(n,r){if(n===null||n===void 0)return!0;if(!Array.isArray(n))return!1;if(n.length===0)return!1;for(let t of n)if(r==="?"){if(a(t)!=="string")return!1}else if(a(t)!=="number")return!1;return!0}function B2(n,r){return a(n)===r.name.toLowerCase()}function l2(n,r,t){if(a(n)!=="object"||n===null)return!1;let h=n;if(t){for(let c of Object.keys(h))if(!(c in r))return!1}for(let c of Object.keys(r)){let i=h[c],B=r[c];if(!B)return!1;if(u2(B)){let e=B[0];if(!y2(i,e))return!1;continue}if(Q1(B)){if(!U1(i,B))return!1;continue}if(i===null||i===void 0)return!1;if(!i1(i,B,t))return!1}return!0}function w2(n,r,t){if(!Array.isArray(n))return!1;if(n.length===0)return!1;let h=r[0];if(!h)throw Error("非法的校验格式:数组格式不能为空(示例:[String] / [{...}])");for(let c of n)if(!i1(c,h,t))return!1;return!0}function i1(n,r,t=!1){if(Q1(r))return U1(n,r);if(n===null||n===void 0)return!1;let h=a(r);if(h==="function")return B2(n,r);if(Array.isArray(r))return w2(n,r,t);if(h==="object")return l2(n,r,t);return!1}var w1=e2(Y1(),1),$1=()=>new Date().getTime();function j1(n,r="8087",t=0){return w1.decode(n,r,t)}function O1(n,r="8087",t=0){return w1.encode(n,r,t)}var b1=({token:n,permission:r=[]},t="8087")=>{if(!n)return{msg:"没有传入token数据",errorCode:0,status:0,token:n};let h=j1(n,t);if(!h)return{msg:"token数据错误",errorCode:1,status:0,token:n};if(r.length!=0){let c=h._permission;if(!c)return{msg:"权限错误",errorCode:2,status:0,token:n};if(c?.filter((i)=>r.includes(i)).length==0)return{msg:"权限错误",errorCode:2,status:0,token:n}}if(h._masTime!==0){if($1()>h._masTime)return{msg:"token过期",errorCode:3,status:0,token:n}}return{...h,status:1}};function H2({data:n=null,time:r=0,permission:t=[]}={},h="8087"){let c={};return c.data=n,t.length!=0&&(c._permission=t),r!==0&&(c._masTime=r*1000+$1()),O1(c,h)}function A1(n,r,t){return async(h,c,i)=>{try{let{config:B,handler:e}=r;if(!e)return c.reply?.(null,0,500,`API 模块缺少导出 handler:${n}`);let _=B?.methods??"all";if(_!=="all"&&h.method.toLowerCase()!==_)return c.reply?.(null,0,405,"Method Not Allowed");if(B?.contentType){if(h.method.toUpperCase()!=="GET"&&h.headers["content-length"]!==void 0){let v=h.headers["content-type"]??"";if(!String(v).includes(B.contentType))return c.reply?.(null,0,400,"Content-Type 不匹配")}}if(B?.header)for(let[o,v]of Object.entries(B.header)){let w=h.headers[o.toLowerCase()],d;if(Array.isArray(w))d=w[0];else d=w;if(d===void 0||d===null)return c.reply?.(null,0,400,`缺少 Header:${o}`);let s=d;if(v===Number)s=Number(d);if(v===Boolean)s=d==="true"||d==="1"||d==="yes";if(!i1(s,v,!1))return c.reply?.(null,0,400,`Header 类型错误:${o}`)}if(t.token.open&&B?.token){let o=t.token.headerParams,v=h.headers[o.toLowerCase()]??h.query?.[o]??h.body?.[o],w=b1({token:v,permission:B.permission??[]},t.token.pwd);if(w.status===0)return c.reply?.(null,0,401,w.msg);h.tokenData=w}if(B?.requestFormat){if(!i1(h.body,B.requestFormat,!!B.strict))return c.reply?.(null,0,400,"请求参数格式错误")}return await e(h,c)}catch(B){return i(B)}}}function q(n){if(!n)return n;if(n==="?")return"String?";if(n===-1)return"Number?";if(typeof n==="function")return n.name??"Function";if(Array.isArray(n)){if(n[0]==="?")return["String"];if(n[0]===-1)return["Number"];return[q(n[0])]}if(typeof n==="object"){let r={};for(let[t,h]of Object.entries(n))r[t]=q(h);return r}return n}function u1(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function d1(n){if(!n)return null;if(n==="?")return"string";if(n===-1)return 0;if(typeof n==="function"){let r=n.name;if(r==="String")return"string";if(r==="Number")return 0;if(r==="Boolean")return!0;if(r==="Object")return{};return null}if(Array.isArray(n)){if(n[0]==="?")return["string"];if(n[0]===-1)return[0];return[d1(n[0])]}if(u1(n)){let r={};for(let[t,h]of Object.entries(n))r[t]=d1(h);return r}return null}function F1(n,r=""){if(!n)return[];if(n==="?"||n===-1)return[{name:r||"value",desc:"",type:q(n)}];if(typeof n==="function")return[{name:r||"value",desc:"",type:q(n)}];if(Array.isArray(n))return[{name:r||"value",desc:"",type:q(n)}];if(u1(n)){let t=[];for(let[h,c]of Object.entries(n)){let i=r?`${r}.${h}`:h;t.push(...F1(c,i))}return t}return[]}function p2(n,r){if(!n)return;if(!r)return;let t=r.split(".").filter(Boolean),h=n;for(let c of t){if(!h)return;if(Array.isArray(h))return h;if(typeof h==="function")return h;if(!u1(h))return;h=h[c]}return h}function R1(n,r){if(!n&&!r)return;let t=n?.example??(u1(r)?d1(r):null),h=u1(t)?t:{value:d1(r)},c=Array.isArray(n?.desc)?n.desc:[],B=(c.length>0?c:F1(r)).map((e)=>{if(e.type)return e;let o=p2(r,e.name);if(o)return{...e,type:q(o)};return{...e,type:"String"}});return{example:h,desc:B}}function V1(n){if(!n)return n;return{...n,header:n.header?q(n.header):n.header,requestFormat:n.requestFormat?q(n.requestFormat):n.requestFormat,responseFormat:n.responseFormat?q(n.responseFormat):n.responseFormat}}function P1(n,r){return{header:R1(r?.header,n?.header),request:R1(r?.request,n?.requestFormat),response:R1(r?.response,n?.responseFormat)}}import k2 from"node:fs";import z2 from"moment";import v1 from"morgan";import{createStream as b2}from"rotating-file-stream";function A2(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function E1(n,r){if(!n)return n;if(Array.isArray(n))return n.map((h)=>E1(h,r));if(!A2(n))return n;let t={};for(let[h,c]of Object.entries(n))if(r.includes(h))t[h]="[REDACTED]";else t[h]=E1(c,r);return t}function T1(n,r,t){try{if(n===void 0)return"-";if(n===null)return"null";let h=E1(n,t),c;if(typeof h==="string")c=h;else{let i=JSON.stringify(h);c=i===void 0?"-":i}if(c.length>r)c=`${c.slice(0,r)}...(truncated)`;return c}catch{return"[Unserializable]"}}function x1(n,r){if(!r.logRequestBody&&!r.logResponseBody)return;let t=n;if(t.__masBodyCaptureAttached)return;t.__masBodyCaptureAttached=!0,n.use((h,c,i)=>{if(r.logRequestBody)c.locals.__masReqBody=h.body;if(!r.logResponseBody)return i();let B=c,e=B.send?.bind(B),_=B.json?.bind(B);if(typeof e==="function")B.send=(o)=>{return c.locals.__masResBody=o,e(o)};if(typeof _==="function")B.json=(o)=>{return c.locals.__masResBody=o,_(o)};i()})}function q1(n,r){v1.token("date",()=>z2().utcOffset(8).format("YYYY-MM-DD HH:mm:ss")),v1.token("req-body",(c,i)=>{if(!n.logRequestBody)return"-";return T1(i.locals?.__masReqBody,n.maxBodyLength,n.redactKeys)}),v1.token("res-body",(c,i)=>{if(!n.logResponseBody)return"-";return T1(i.locals?.__masResBody,n.maxBodyLength,n.redactKeys)});let t=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" req=:req-body res=:res-body',h=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"';return v1(n.logRequestBody||n.logResponseBody?t:h,{stream:r})}function a1(n,r={}){let t={logRequestBody:r.logRequestBody??!0,logResponseBody:r.logResponseBody??!0,maxBodyLength:r.maxBodyLength??2000,redactKeys:r.redactKeys??[]};x1(n,t),n.use(q1(t,{write:(h)=>process.stdout.write(h)}))}function D1(n,r,t={}){k2.mkdirSync(r,{recursive:!0});let h={logRequestBody:t.logRequestBody??!0,logResponseBody:t.logResponseBody??!0,maxBodyLength:t.maxBodyLength??2000,redactKeys:t.redactKeys??[]};x1(n,h);let c=b2("access.log",{size:"50M",interval:"1d",path:r});n.use(q1(h,c))}function R2(n,r){if(!n)return!1;if(!r||r.length===0)return!0;return r.some((t)=>{if(t===n)return!0;if(t.includes("*")){let h=t.replace(/\*/g,".*").replace(/\./g,"\\.");return new RegExp(`^${h}$`).test(n)}return!1})}function m1(n,r){let t={allowHeader:[]};n.use((h,c,i)=>{let B=h.headers.origin,e=h.headers["access-control-request-headers"];if(e){let _=e.split(",").map((o)=>o.trim()).filter(Boolean);t.allowHeader=[...new Set([...t.allowHeader,..._])]}if(B&&R2(B,r))c.setHeader("Access-Control-Allow-Origin",B);else if(B&&r&&r.length>0);else if(!r||r.length===0){if(B)c.setHeader("Access-Control-Allow-Origin",B)}if(c.setHeader("Access-Control-Allow-Headers",t.allowHeader.length>0?t.allowHeader.join(", "):"*"),c.setHeader("Access-Control-Allow-Methods","PUT, POST, GET, DELETE, OPTIONS, PATCH"),c.setHeader("Access-Control-Allow-Credentials","true"),h.method==="OPTIONS")return c.status(204).send();i()})}async function E2(n,r,t){let h=f1();t&&t(h);let c=K1(n);o1.logs.logPath=W1.join(n,"logs"),o1.apisPath=c.apisPath,o1.defalutApiPath=c.defalutApiPath;let i=N1(o1,r);if(i.openCors)m1(h,i.corsUrl);h.use(f1.json({limit:"10mb"})),h.use(f1.urlencoded({extended:!0}));let B=i.staticPath??"public",e=i.staticUrl??"/public",_=W1.isAbsolute(B)?B:W1.join(n,B);if(n2.existsSync(_))h.use(e,f1.static(_));if(h.use(X1),i.logs.debug)a1(h,{logRequestBody:i.logs.logRequestBody,logResponseBody:i.logs.logResponseBody,maxBodyLength:i.logs.maxBodyLength,redactKeys:i.logs.redactKeys});if(i.logs.open&&i.logs.logPath)D1(h,i.logs.logPath,{logRequestBody:i.logs.logRequestBody,logResponseBody:i.logs.logResponseBody,maxBodyLength:i.logs.maxBodyLength,redactKeys:i.logs.redactKeys});let o=i.apisPath,v=Z1(o),w=i.defalutApiPath,d=[];for(let s of v){let l=L1(o,s),u=`/api${l}`,y=await import(i2(s).href);if(typeof y.handler!=="function")throw Error(`API 模块缺少导出 handler:${s}`);d.push({path:l,apiPath:u,file:s,mod:y}),h.all(u,A1(s,y,i))}if(i.exposeApiDocs!==!1)h.get("/debug/docs",async(s,l)=>{let u=[];for(let y of d){let g=y.mod.config,f=y.mod.doc;u.push({path:y.apiPath,file:y.file,config:V1(g),doc:P1(g,f)})}l.reply?.(u)});if(w&&n2.existsSync(w)){let s=await import(i2(w).href);if(typeof s.handler!=="function")throw Error(`兜底 API 模块缺少导出 handler:${w}`);h.use(A1(w,s,i))}else h.use((s,l)=>{l.reply?.(null,0,404,"Not Found")});return h.use((s,l,u,y)=>{let g=s?.message?String(s.message):"系统错误,请联系管理员";if(typeof u?.reply==="function")return u.reply(null,0,500,g);return u.status(500).send({status:0,msg:g,data:null})}),h}var D2="?",W2=-1;export{b1 as validToken,E2 as getApp,O1 as encode,j1 as decode,H2 as createToken,D2 as _String,W2 as _Number};
|
|
1
|
+
var i2=Object.create;var{getPrototypeOf:h2,defineProperty:M1,getOwnPropertyNames:t2}=Object;var r2=Object.prototype.hasOwnProperty;var s2=(n,t,r)=>{r=n!=null?i2(h2(n)):{};let h=t||!n||!n.__esModule?M1(r,"default",{value:n,enumerable:!0}):r;for(let i of t2(n))if(!r2.call(h,i))M1(h,i,{get:()=>n[i],enumerable:!0});return h};var e2=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var $1=e2((j2,z1)=>{var R=R||function(n){var t=Object.create||function(e){return r.prototype=e,e=new r,r.prototype=null,e};function r(){}var h={},i=h.lib={},c=i.Base={extend:function(e){var l=t(this);return e&&l.mixIn(e),l.hasOwnProperty("init")&&this.init!==l.init||(l.init=function(){l.$super.init.apply(this,arguments)}),(l.init.prototype=l).$super=this,l},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var l in e)e.hasOwnProperty(l)&&(this[l]=e[l]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},B=i.WordArray=c.extend({init:function(e,l){e=this.words=e||[],this.sigBytes=l!=null?l:4*e.length},toString:function(e){return(e||o).stringify(this)},concat:function(e){var l=this.words,u=e.words,y=this.sigBytes,S=e.sigBytes;if(this.clamp(),y%4)for(var f=0;f<S;f++){var A=u[f>>>2]>>>24-f%4*8&255;l[y+f>>>2]|=A<<24-(y+f)%4*8}else for(f=0;f<S;f+=4)l[y+f>>>2]=u[f>>>2];return this.sigBytes+=S,this},clamp:function(){var e=this.words,l=this.sigBytes;e[l>>>2]&=4294967295<<32-l%4*8,e.length=n.ceil(l/4)},clone:function(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var l=[],u=0;u<e;u+=4){var y=function(f){var A=987654321,z=4294967295;return function(){var M=((A=36969*(65535&A)+(A>>16)&z)<<16)+(f=18000*(65535&f)+(f>>16)&z)&z;return(M/4294967296+0.5)*(0.5<n.random()?1:-1)}}(4294967296*(S||n.random())),S=987654071*y();l.push(4294967296*y()|0)}return new B.init(l,e)}}),s=h.enc={},o=s.Hex={stringify:function(e){for(var{words:l,sigBytes:u}=e,y=[],S=0;S<u;S++){var f=l[S>>>2]>>>24-S%4*8&255;y.push((f>>>4).toString(16)),y.push((15&f).toString(16))}return y.join("")},parse:function(e){for(var l=e.length,u=[],y=0;y<l;y+=2)u[y>>>3]|=parseInt(e.substr(y,2),16)<<24-y%8*4;return new B.init(u,l/2)}},_=s.Latin1={stringify:function(e){for(var{words:l,sigBytes:u}=e,y=[],S=0;S<u;S++){var f=l[S>>>2]>>>24-S%4*8&255;y.push(String.fromCharCode(f))}return y.join("")},parse:function(e){for(var l=e.length,u=[],y=0;y<l;y++)u[y>>>2]|=(255&e.charCodeAt(y))<<24-y%4*8;return new B.init(u,l)}},v=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(_.stringify(e)))}catch(l){throw Error("Malformed UTF-8 data")}},parse:function(e){return _.parse(unescape(encodeURIComponent(e)))}},w=i.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new B.init,this._nDataBytes=0},_append:function(e){typeof e=="string"&&(e=v.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(z){var l=this._data,u=l.words,y=l.sigBytes,S=this.blockSize,f=y/(4*S),A=(f=z?n.ceil(f):n.max((0|f)-this._minBufferSize,0))*S,z=n.min(4*A,y);if(A){for(var M=0;M<A;M+=S)this._doProcessBlock(u,M);var C=u.splice(0,A);l.sigBytes-=z}return new B.init(C,z)},clone:function(){var e=c.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),d=(i.Hasher=w.extend({cfg:c.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(l,u){return new e.init(u).finalize(l)}},_createHmacHelper:function(e){return function(l,u){return new d.HMAC.init(e,u).finalize(l)}}}),h.algo={});return h}(Math);(function(){var n=R.lib.WordArray;R.enc.Base64={stringify:function(t){for(var{words:r,sigBytes:h}=t,i=this._map,c=(t.clamp(),[]),B=0;B<h;B+=3)for(var s=(r[B>>>2]>>>24-B%4*8&255)<<16|(r[B+1>>>2]>>>24-(B+1)%4*8&255)<<8|r[B+2>>>2]>>>24-(B+2)%4*8&255,o=0;o<4&&B+0.75*o<h;o++)c.push(i.charAt(s>>>6*(3-o)&63));var _=i.charAt(64);if(_)for(;c.length%4;)c.push(_);return c.join("")},parse:function(t){var r=t.length,h=this._map;if(!(i=this._reverseMap))for(var i=this._reverseMap=[],c=0;c<h.length;c++)i[h.charCodeAt(c)]=c;for(var B,s,o=h.charAt(64),_=(o&&(o=t.indexOf(o))!==-1&&(r=o),t),v=r,w=i,d=[],e=0,l=0;l<v;l++)l%4&&(B=w[_.charCodeAt(l-1)]<<l%4*2,s=w[_.charCodeAt(l)]>>>6-l%4*2,d[e>>>2]|=(B|s)<<24-e%4*8,e++);return n.create(d,e)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(),function(n){for(var t=R,i=t.lib,r=i.WordArray,h=i.Hasher,i=t.algo,c=[],B=0;B<64;B++)c[B]=4294967296*n.abs(n.sin(B+1))|0;i=i.MD5=h.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(w,d){for(var e=0;e<16;e++){var l=d+e,u=w[l];w[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}var y=this._hash.words,S=w[d+0],f=w[d+1],A=w[d+2],z=w[d+3],M=w[d+4],C=w[d+5],b=w[d+6],D=w[d+7],E=w[d+8],L=w[d+9],Z=w[d+10],K=w[d+11],I=w[d+12],W=w[d+13],X=w[d+14],N=w[d+15],p=s(y[0],k=y[1],g=y[2],H=y[3],S,7,c[0]),H=s(H,p,k,g,f,12,c[1]),g=s(g,H,p,k,A,17,c[2]),k=s(k,g,H,p,z,22,c[3]);p=s(p,k,g,H,M,7,c[4]),H=s(H,p,k,g,C,12,c[5]),g=s(g,H,p,k,b,17,c[6]),k=s(k,g,H,p,D,22,c[7]),p=s(p,k,g,H,E,7,c[8]),H=s(H,p,k,g,L,12,c[9]),g=s(g,H,p,k,Z,17,c[10]),k=s(k,g,H,p,K,22,c[11]),p=s(p,k,g,H,I,7,c[12]),H=s(H,p,k,g,W,12,c[13]),g=s(g,H,p,k,X,17,c[14]),p=o(p,k=s(k,g,H,p,N,22,c[15]),g,H,f,5,c[16]),H=o(H,p,k,g,b,9,c[17]),g=o(g,H,p,k,K,14,c[18]),k=o(k,g,H,p,S,20,c[19]),p=o(p,k,g,H,C,5,c[20]),H=o(H,p,k,g,Z,9,c[21]),g=o(g,H,p,k,N,14,c[22]),k=o(k,g,H,p,M,20,c[23]),p=o(p,k,g,H,L,5,c[24]),H=o(H,p,k,g,X,9,c[25]),g=o(g,H,p,k,z,14,c[26]),k=o(k,g,H,p,E,20,c[27]),p=o(p,k,g,H,W,5,c[28]),H=o(H,p,k,g,A,9,c[29]),g=o(g,H,p,k,D,14,c[30]),p=_(p,k=o(k,g,H,p,I,20,c[31]),g,H,C,4,c[32]),H=_(H,p,k,g,E,11,c[33]),g=_(g,H,p,k,K,16,c[34]),k=_(k,g,H,p,X,23,c[35]),p=_(p,k,g,H,f,4,c[36]),H=_(H,p,k,g,M,11,c[37]),g=_(g,H,p,k,D,16,c[38]),k=_(k,g,H,p,Z,23,c[39]),p=_(p,k,g,H,W,4,c[40]),H=_(H,p,k,g,S,11,c[41]),g=_(g,H,p,k,z,16,c[42]),k=_(k,g,H,p,b,23,c[43]),p=_(p,k,g,H,L,4,c[44]),H=_(H,p,k,g,I,11,c[45]),g=_(g,H,p,k,N,16,c[46]),p=v(p,k=_(k,g,H,p,A,23,c[47]),g,H,S,6,c[48]),H=v(H,p,k,g,D,10,c[49]),g=v(g,H,p,k,X,15,c[50]),k=v(k,g,H,p,C,21,c[51]),p=v(p,k,g,H,I,6,c[52]),H=v(H,p,k,g,z,10,c[53]),g=v(g,H,p,k,Z,15,c[54]),k=v(k,g,H,p,f,21,c[55]),p=v(p,k,g,H,E,6,c[56]),H=v(H,p,k,g,N,10,c[57]),g=v(g,H,p,k,b,15,c[58]),k=v(k,g,H,p,W,21,c[59]),p=v(p,k,g,H,M,6,c[60]),H=v(H,p,k,g,K,10,c[61]),g=v(g,H,p,k,A,15,c[62]),k=v(k,g,H,p,L,21,c[63]),y[0]=y[0]+p|0,y[1]=y[1]+k|0,y[2]=y[2]+g|0,y[3]=y[3]+H|0},_doFinalize:function(){for(var w=this._data,d=w.words,e=8*this._nDataBytes,l=8*w.sigBytes,u=(d[l>>>5]|=128<<24-l%32,n.floor(e/4294967296)),u=(d[15+(64+l>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),d[14+(64+l>>>9<<4)]=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8),w.sigBytes=4*(d.length+1),this._process(),this._hash),y=u.words,S=0;S<4;S++){var f=y[S];y[S]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return u},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});function s(w,d,e,l,u,y,S){return w=w+(d&e|~d&l)+u+S,(w<<y|w>>>32-y)+d}function o(w,d,e,l,u,y,S){return w=w+(d&l|e&~l)+u+S,(w<<y|w>>>32-y)+d}function _(w,d,e,l,u,y,S){return w=w+(d^e^l)+u+S,(w<<y|w>>>32-y)+d}function v(w,d,e,l,u,y,S){return w=w+(e^(d|~l))+u+S,(w<<y|w>>>32-y)+d}t.MD5=h._createHelper(i),t.HmacMD5=h._createHmacHelper(i)}(Math),function(){var n=R,i=n.lib,t=i.WordArray,r=i.Hasher,i=n.algo,h=[],i=i.SHA1=r.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,B){for(var s=this._hash.words,o=s[0],_=s[1],v=s[2],w=s[3],d=s[4],e=0;e<80;e++){h[e]=e<16?0|c[B+e]:(l=h[e-3]^h[e-8]^h[e-14]^h[e-16])<<1|l>>>31;var l=(o<<5|o>>>27)+d+h[e];l+=e<20?1518500249+(_&v|~_&w):e<40?1859775393+(_^v^w):e<60?(_&v|_&w|v&w)-1894007588:(_^v^w)-899497514,d=w,w=v,v=_<<30|_>>>2,_=o,o=l}s[0]=s[0]+o|0,s[1]=s[1]+_|0,s[2]=s[2]+v|0,s[3]=s[3]+w|0,s[4]=s[4]+d|0},_doFinalize:function(){var c=this._data,B=c.words,s=8*this._nDataBytes,o=8*c.sigBytes;return B[o>>>5]|=128<<24-o%32,B[14+(64+o>>>9<<4)]=Math.floor(s/4294967296),B[15+(64+o>>>9<<4)]=s,c.sigBytes=4*B.length,this._process(),this._hash},clone:function(){var c=r.clone.call(this);return c._hash=this._hash.clone(),c}});n.SHA1=r._createHelper(i),n.HmacSHA1=r._createHmacHelper(i)}(),function(n){var t=R,v=t.lib,r=v.WordArray,h=v.Hasher,v=t.algo,i=[],c=[];function B(w){return 4294967296*(w-(0|w))|0}for(var s=2,o=0;o<64;)!function(w){for(var d=n.sqrt(w),e=2;e<=d;e++)if(!(w%e))return;return 1}(s)||(o<8&&(i[o]=B(n.pow(s,0.5))),c[o]=B(n.pow(s,0.3333333333333333)),o++),s++;var _=[],v=v.SHA256=h.extend({_doReset:function(){this._hash=new r.init(i.slice(0))},_doProcessBlock:function(w,d){for(var e=this._hash.words,l=e[0],u=e[1],y=e[2],S=e[3],f=e[4],A=e[5],z=e[6],M=e[7],C=0;C<64;C++){_[C]=C<16?0|w[d+C]:(((b=_[C-15])<<25|b>>>7)^(b<<14|b>>>18)^b>>>3)+_[C-7]+(((b=_[C-2])<<15|b>>>17)^(b<<13|b>>>19)^b>>>10)+_[C-16];var b=l&u^l&y^u&y,D=M+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&A^~f&z)+c[C]+_[C],M=z,z=A,A=f,f=S+D|0,S=y,y=u,u=l,l=D+(((l<<30|l>>>2)^(l<<19|l>>>13)^(l<<10|l>>>22))+b)|0}e[0]=e[0]+l|0,e[1]=e[1]+u|0,e[2]=e[2]+y|0,e[3]=e[3]+S|0,e[4]=e[4]+f|0,e[5]=e[5]+A|0,e[6]=e[6]+z|0,e[7]=e[7]+M|0},_doFinalize:function(){var w=this._data,d=w.words,e=8*this._nDataBytes,l=8*w.sigBytes;return d[l>>>5]|=128<<24-l%32,d[14+(64+l>>>9<<4)]=n.floor(e/4294967296),d[15+(64+l>>>9<<4)]=e,w.sigBytes=4*d.length,this._process(),this._hash},clone:function(){var w=h.clone.call(this);return w._hash=this._hash.clone(),w}});t.SHA256=h._createHelper(v),t.HmacSHA256=h._createHmacHelper(v)}(Math),function(){var n=R.lib.WordArray,t=R.enc;t.Utf16=t.Utf16BE={stringify:function(h){for(var{words:i,sigBytes:c}=h,B=[],s=0;s<c;s+=2){var o=i[s>>>2]>>>16-s%4*8&65535;B.push(String.fromCharCode(o))}return B.join("")},parse:function(h){for(var i=h.length,c=[],B=0;B<i;B++)c[B>>>1]|=h.charCodeAt(B)<<16-B%2*16;return n.create(c,2*i)}};function r(h){return h<<8&4278255360|h>>>8&16711935}t.Utf16LE={stringify:function(h){for(var{words:i,sigBytes:c}=h,B=[],s=0;s<c;s+=2){var o=r(i[s>>>2]>>>16-s%4*8&65535);B.push(String.fromCharCode(o))}return B.join("")},parse:function(h){for(var i=h.length,c=[],B=0;B<i;B++)c[B>>>1]|=r(h.charCodeAt(B)<<16-B%2*16);return n.create(c,2*i)}}}(),function(){var n,t;typeof ArrayBuffer=="function"&&(n=R.lib.WordArray,t=n.init,(n.init=function(r){if((r=(r=r instanceof ArrayBuffer?new Uint8Array(r):r)instanceof Int8Array||typeof Uint8ClampedArray<"u"&&r instanceof Uint8ClampedArray||r instanceof Int16Array||r instanceof Uint16Array||r instanceof Int32Array||r instanceof Uint32Array||r instanceof Float32Array||r instanceof Float64Array?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r)instanceof Uint8Array){for(var h=r.byteLength,i=[],c=0;c<h;c++)i[c>>>2]|=r[c]<<24-c%4*8;t.call(this,i,h)}else t.apply(this,arguments)}).prototype=n)}(),function(){var n=R,_=n.lib,t=_.WordArray,r=_.Hasher,_=n.algo,h=t.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),i=t.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),c=t.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),B=t.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),s=t.create([0,1518500249,1859775393,2400959708,2840853838]),o=t.create([1352829926,1548603684,1836072691,2053994217,0]),_=_.RIPEMD160=r.extend({_doReset:function(){this._hash=t.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,l){for(var u=0;u<16;u++){var y=l+u,S=e[y];e[y]=16711935&(S<<8|S>>>24)|4278255360&(S<<24|S>>>8)}for(var f,A,z,M,C,b,D=this._hash.words,E=s.words,L=o.words,Z=h.words,K=i.words,I=c.words,W=B.words,X=f=D[0],N=A=D[1],p=z=D[2],H=M=D[3],g=C=D[4],u=0;u<80;u+=1)b=(b=d(b=(b=f+e[l+Z[u]]|0)+(u<16?(A^z^M)+E[0]:u<32?v(A,z,M)+E[1]:u<48?((A|~z)^M)+E[2]:u<64?w(A,z,M)+E[3]:(A^(z|~M))+E[4])|0,I[u]))+C|0,f=C,C=M,M=d(z,10),z=A,A=b,b=(b=d(b=(b=X+e[l+K[u]]|0)+(u<16?(N^(p|~H))+L[0]:u<32?w(N,p,H)+L[1]:u<48?((N|~p)^H)+L[2]:u<64?v(N,p,H)+L[3]:(N^p^H)+L[4])|0,W[u]))+g|0,X=g,g=H,H=d(p,10),p=N,N=b;b=D[1]+z+H|0,D[1]=D[2]+M+g|0,D[2]=D[3]+C+X|0,D[3]=D[4]+f+N|0,D[4]=D[0]+A+p|0,D[0]=b},_doFinalize:function(){for(var e=this._data,l=e.words,u=8*this._nDataBytes,y=8*e.sigBytes,y=(l[y>>>5]|=128<<24-y%32,l[14+(64+y>>>9<<4)]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8),e.sigBytes=4*(l.length+1),this._process(),this._hash),S=y.words,f=0;f<5;f++){var A=S[f];S[f]=16711935&(A<<8|A>>>24)|4278255360&(A<<24|A>>>8)}return y},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});function v(e,l,u){return e&l|~e&u}function w(e,l,u){return e&u|l&~u}function d(e,l){return e<<l|e>>>32-l}n.RIPEMD160=r._createHelper(_),n.HmacRIPEMD160=r._createHmacHelper(_)}(Math),function(){var n=R.lib.Base,t=R.enc.Utf8;R.algo.HMAC=n.extend({init:function(r,h){r=this._hasher=new r.init,typeof h=="string"&&(h=t.parse(h));for(var i=r.blockSize,c=4*i,r=((h=h.sigBytes>c?r.finalize(h):h).clamp(),this._oKey=h.clone()),h=this._iKey=h.clone(),B=r.words,s=h.words,o=0;o<i;o++)B[o]^=1549556828,s[o]^=909522486;r.sigBytes=h.sigBytes=c,this.reset()},reset:function(){var r=this._hasher;r.reset(),r.update(this._iKey)},update:function(r){return this._hasher.update(r),this},finalize:function(i){var h=this._hasher,i=h.finalize(i);return h.reset(),h.finalize(this._oKey.clone().concat(i))}})}(),function(){var n=R,h=n.lib,t=h.Base,r=h.WordArray,h=n.algo,i=h.SHA1,c=h.HMAC,B=h.PBKDF2=t.extend({cfg:t.extend({keySize:4,hasher:i,iterations:1}),init:function(s){this.cfg=this.cfg.extend(s)},compute:function(s,o){for(var _=this.cfg,v=c.create(_.hasher,s),w=r.create(),d=r.create([1]),e=w.words,l=d.words,u=_.keySize,y=_.iterations;e.length<u;){for(var S=v.update(o).finalize(d),f=(v.reset(),S.words),A=f.length,z=S,M=1;M<y;M++){z=v.finalize(z),v.reset();for(var C=z.words,b=0;b<A;b++)f[b]^=C[b]}w.concat(S),l[0]++}return w.sigBytes=4*u,w}});n.PBKDF2=function(s,o,_){return B.create(_).compute(s,o)}}(),function(){var n=R,h=n.lib,t=h.Base,r=h.WordArray,h=n.algo,i=h.MD5,c=h.EvpKDF=t.extend({cfg:t.extend({keySize:4,hasher:i,iterations:1}),init:function(B){this.cfg=this.cfg.extend(B)},compute:function(B,s){for(var o=this.cfg,_=o.hasher.create(),v=r.create(),w=v.words,d=o.keySize,e=o.iterations;w.length<d;){l&&_.update(l);var l=_.update(B).finalize(s);_.reset();for(var u=1;u<e;u++)l=_.finalize(l),_.reset();v.concat(l)}return v.sigBytes=4*d,v}});n.EvpKDF=function(B,s,o){return c.create(o).compute(B,s)}}(),function(){var n=R,t=n.lib.WordArray,h=n.algo,r=h.SHA256,h=h.SHA224=r.extend({_doReset:function(){this._hash=new t.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var i=r._doFinalize.call(this);return i.sigBytes-=4,i}});n.SHA224=r._createHelper(h),n.HmacSHA224=r._createHmacHelper(h)}(),function(){var n=R,h=n.lib,t=h.Base,r=h.WordArray,h=n.x64={};h.Word=t.extend({init:function(i,c){this.high=i,this.low=c}}),h.WordArray=t.extend({init:function(i,c){i=this.words=i||[],this.sigBytes=c!=null?c:8*i.length},toX32:function(){for(var i=this.words,c=i.length,B=[],s=0;s<c;s++){var o=i[s];B.push(o.high),B.push(o.low)}return r.create(B,this.sigBytes)},clone:function(){for(var i=t.clone.call(this),c=i.words=this.words.slice(0),B=c.length,s=0;s<B;s++)c[s]=c[s].clone();return i}})}(),function(n){for(var t=R,c=t.lib,r=c.WordArray,h=c.Hasher,i=t.x64.Word,c=t.algo,B=[],s=[],o=[],_=1,v=0,w=0;w<24;w++){B[_+5*v]=(w+1)*(w+2)/2%64;var d=(2*_+3*v)%5;_=v%5,v=d}for(_=0;_<5;_++)for(v=0;v<5;v++)s[_+5*v]=v+(2*_+3*v)%5*5;for(var e=1,l=0;l<24;l++){for(var u,y=0,S=0,f=0;f<7;f++)1&e&&((u=(1<<f)-1)<32?S^=1<<u:y^=1<<u-32),128&e?e=e<<1^113:e<<=1;o[l]=i.create(y,S)}for(var A=[],z=0;z<25;z++)A[z]=i.create();c=c.SHA3=h.extend({cfg:h.cfg.extend({outputLength:512}),_doReset:function(){for(var M=this._state=[],C=0;C<25;C++)M[C]=new i.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(M,C){for(var b=this._state,D=this.blockSize/2,E=0;E<D;E++){var Z=M[C+2*E],L=M[C+2*E+1],Z=16711935&(Z<<8|Z>>>24)|4278255360&(Z<<24|Z>>>8);(j=b[E]).high^=16711935&(L<<8|L>>>24)|4278255360&(L<<24|L>>>8),j.low^=Z}for(var K=0;K<24;K++){for(var I=0;I<5;I++){for(var W=0,X=0,N=0;N<5;N++)W^=(j=b[I+5*N]).high,X^=j.low;var p=A[I];p.high=W,p.low=X}for(I=0;I<5;I++)for(var H=A[(I+4)%5],k=A[(I+1)%5],g=k.high,k=k.low,W=H.high^(g<<1|k>>>31),X=H.low^(k<<1|g>>>31),N=0;N<5;N++)(j=b[I+5*N]).high^=W,j.low^=X;for(var $=1;$<25;$++){var U=(j=b[$]).high,Q=j.low,J=B[$],U=(X=J<32?(W=U<<J|Q>>>32-J,Q<<J|U>>>32-J):(W=Q<<J-32|U>>>64-J,U<<J-32|Q>>>64-J),A[s[$]]);U.high=W,U.low=X}var Y=A[0],O=b[0];Y.high=O.high,Y.low=O.low;for(I=0;I<5;I++)for(N=0;N<5;N++){var j=b[$=I+5*N],G=A[$],x=A[(I+1)%5+5*N],i1=A[(I+2)%5+5*N];j.high=G.high^~x.high&i1.high,j.low=G.low^~x.low&i1.low}j=b[0],Y=o[K],j.high^=Y.high,j.low^=Y.low}},_doFinalize:function(){for(var M=this._data,C=M.words,E=(this._nDataBytes,8*M.sigBytes),b=32*this.blockSize,D=(C[E>>>5]|=1<<24-E%32,C[(n.ceil((1+E)/b)*b>>>5)-1]|=128,M.sigBytes=4*C.length,this._process(),this._state),E=this.cfg.outputLength/8,L=E/8,Z=[],K=0;K<L;K++){var I=D[K],W=I.high,I=I.low,W=16711935&(W<<8|W>>>24)|4278255360&(W<<24|W>>>8);Z.push(16711935&(I<<8|I>>>24)|4278255360&(I<<24|I>>>8)),Z.push(W)}return new r.init(Z,E)},clone:function(){for(var M=h.clone.call(this),C=M._state=this._state.slice(0),b=0;b<25;b++)C[b]=C[b].clone();return M}}),t.SHA3=h._createHelper(c),t.HmacSHA3=h._createHmacHelper(c)}(Math),function(){var n=R,t=n.lib.Hasher,i=n.x64,r=i.Word,h=i.WordArray,i=n.algo;function c(){return r.create.apply(r,arguments)}for(var B=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],s=[],o=0;o<80;o++)s[o]=c();i=i.SHA512=t.extend({_doReset:function(){this._hash=new h.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(_,v){for(var f=this._hash.words,w=f[0],d=f[1],e=f[2],l=f[3],u=f[4],y=f[5],S=f[6],f=f[7],A=w.high,z=w.low,M=d.high,C=d.low,b=e.high,D=e.low,E=l.high,L=l.low,Z=u.high,K=u.low,I=y.high,W=y.low,X=S.high,N=S.low,p=f.high,H=f.low,V=A,g=z,_1=M,c1=C,e1=b,n1=D,H1=E,s1=L,P=Z,k=K,y1=I,r1=W,B1=X,t1=N,g1=p,h1=H,$=0;$<80;$++)var Q,J,x=s[$],U=($<16?(J=x.high=0|_[v+2*$],Q=x.low=0|_[v+2*$+1]):(O=(G=s[$-15]).high,G=G.low,Y=(U=s[$-2]).high,U=U.low,J=(J=(J=((O>>>1|G<<31)^(O>>>8|G<<24)^O>>>7)+(j=s[$-7]).high+((Q=(G=(G>>>1|O<<31)^(G>>>8|O<<24)^(G>>>7|O<<25))+j.low)>>>0<G>>>0?1:0))+((Y>>>19|U<<13)^(Y<<3|U>>>29)^Y>>>6)+((Q=Q+(O=(U>>>19|Y<<13)^(U<<3|Y>>>29)^(U>>>6|Y<<26)))>>>0<O>>>0?1:0))+(j=s[$-16]).high+((Q=Q+(G=j.low))>>>0<G>>>0?1:0),x.high=J,x.low=Q),P&y1^~P&B1),Y=k&r1^~k&t1,O=V&_1^V&e1^_1&e1,j=(g>>>28|V<<4)^(g<<30|V>>>2)^(g<<25|V>>>7),G=B[$],x=G.high,i1=G.low,T=h1+((k>>>14|P<<18)^(k>>>18|P<<14)^(k<<23|P>>>9)),S1=g1+((P>>>14|k<<18)^(P>>>18|k<<14)^(P<<23|k>>>9))+(T>>>0<h1>>>0?1:0),C1=j+(g&c1^g&n1^c1&n1),g1=B1,h1=t1,B1=y1,t1=r1,y1=P,r1=k,P=H1+(S1=S1+U+((T=T+Y)>>>0<Y>>>0?1:0)+x+((T=T+i1)>>>0<i1>>>0?1:0)+J+((T=T+Q)>>>0<Q>>>0?1:0))+((k=s1+T|0)>>>0<s1>>>0?1:0)|0,H1=e1,s1=n1,e1=_1,n1=c1,_1=V,c1=g,V=S1+(((V>>>28|g<<4)^(V<<30|g>>>2)^(V<<25|g>>>7))+O+(C1>>>0<j>>>0?1:0))+((g=T+C1|0)>>>0<T>>>0?1:0)|0;z=w.low=z+g,w.high=A+V+(z>>>0<g>>>0?1:0),C=d.low=C+c1,d.high=M+_1+(C>>>0<c1>>>0?1:0),D=e.low=D+n1,e.high=b+e1+(D>>>0<n1>>>0?1:0),L=l.low=L+s1,l.high=E+H1+(L>>>0<s1>>>0?1:0),K=u.low=K+k,u.high=Z+P+(K>>>0<k>>>0?1:0),W=y.low=W+r1,y.high=I+y1+(W>>>0<r1>>>0?1:0),N=S.low=N+t1,S.high=X+B1+(N>>>0<t1>>>0?1:0),H=f.low=H+h1,f.high=p+g1+(H>>>0<h1>>>0?1:0)},_doFinalize:function(){var _=this._data,v=_.words,w=8*this._nDataBytes,d=8*_.sigBytes;return v[d>>>5]|=128<<24-d%32,v[30+(128+d>>>10<<5)]=Math.floor(w/4294967296),v[31+(128+d>>>10<<5)]=w,_.sigBytes=4*v.length,this._process(),this._hash.toX32()},clone:function(){var _=t.clone.call(this);return _._hash=this._hash.clone(),_},blockSize:32}),n.SHA512=t._createHelper(i),n.HmacSHA512=t._createHmacHelper(i)}(),function(){var n=R,i=n.x64,t=i.Word,r=i.WordArray,i=n.algo,h=i.SHA512,i=i.SHA384=h.extend({_doReset:function(){this._hash=new r.init([new t.init(3418070365,3238371032),new t.init(1654270250,914150663),new t.init(2438529370,812702999),new t.init(355462360,4144912697),new t.init(1731405415,4290775857),new t.init(2394180231,1750603025),new t.init(3675008525,1694076839),new t.init(1203062813,3204075428)])},_doFinalize:function(){var c=h._doFinalize.call(this);return c.sigBytes-=16,c}});n.SHA384=h._createHelper(i),n.HmacSHA384=h._createHmacHelper(i)}(),R.lib.Cipher||function(){var n=R,t=n.lib,r=t.Base,h=t.WordArray,i=t.BufferedBlockAlgorithm,e=n.enc,c=(e.Utf8,e.Base64),B=n.algo.EvpKDF,s=t.Cipher=i.extend({cfg:r.extend(),createEncryptor:function(u,y){return this.create(this._ENC_XFORM_MODE,u,y)},createDecryptor:function(u,y){return this.create(this._DEC_XFORM_MODE,u,y)},init:function(u,y,S){this.cfg=this.cfg.extend(S),this._xformMode=u,this._key=y,this.reset()},reset:function(){i.reset.call(this),this._doReset()},process:function(u){return this._append(u),this._process()},finalize:function(u){return u&&this._append(u),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(u){return{encrypt:function(y,S,f){return o(S).encrypt(u,y,S,f)},decrypt:function(y,S,f){return o(S).decrypt(u,y,S,f)}}}});function o(u){return typeof u=="string"?l:d}t.StreamCipher=s.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var e=n.mode={},w=t.BlockCipherMode=r.extend({createEncryptor:function(u,y){return this.Encryptor.create(u,y)},createDecryptor:function(u,y){return this.Decryptor.create(u,y)},init:function(u,y){this._cipher=u,this._iv=y}}),w=e.CBC=((e=w.extend()).Encryptor=e.extend({processBlock:function(u,y){var S=this._cipher,f=S.blockSize;_.call(this,u,y,f),S.encryptBlock(u,y),this._prevBlock=u.slice(y,y+f)}}),e.Decryptor=e.extend({processBlock:function(u,y){var S=this._cipher,f=S.blockSize,A=u.slice(y,y+f);S.decryptBlock(u,y),_.call(this,u,y,f),this._prevBlock=A}}),e);function _(u,y,S){var f,A=this._iv;A?(f=A,this._iv=void 0):f=this._prevBlock;for(var z=0;z<S;z++)u[y+z]^=f[z]}var e=(n.pad={}).Pkcs7={pad:function(u,y){for(var y=4*y,S=y-u.sigBytes%y,f=S<<24|S<<16|S<<8|S,A=[],z=0;z<S;z+=4)A.push(f);y=h.create(A,S),u.concat(y)},unpad:function(u){var y=255&u.words[u.sigBytes-1>>>2];u.sigBytes-=y}},v=(t.BlockCipher=s.extend({cfg:s.cfg.extend({mode:w,padding:e}),reset:function(){s.reset.call(this);var u,S=this.cfg,y=S.iv,S=S.mode;this._xformMode==this._ENC_XFORM_MODE?u=S.createEncryptor:(u=S.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==u?this._mode.init(this,y&&y.words):(this._mode=u.call(S,this,y&&y.words),this._mode.__creator=u)},_doProcessBlock:function(u,y){this._mode.processBlock(u,y)},_doFinalize:function(){var u,y=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(y.pad(this._data,this.blockSize),u=this._process(!0)):(u=this._process(!0),y.unpad(u)),u},blockSize:4}),t.CipherParams=r.extend({init:function(u){this.mixIn(u)},toString:function(u){return(u||this.formatter).stringify(this)}})),w=(n.format={}).OpenSSL={stringify:function(S){var{ciphertext:y,salt:S}=S;return(S?h.create([1398893684,1701076831]).concat(S).concat(y):y).toString(c)},parse:function(S){var y,S=c.parse(S),f=S.words;return f[0]==1398893684&&f[1]==1701076831&&(y=h.create(f.slice(2,4)),f.splice(0,4),S.sigBytes-=16),v.create({ciphertext:S,salt:y})}},d=t.SerializableCipher=r.extend({cfg:r.extend({format:w}),encrypt:function(u,A,S,f){f=this.cfg.extend(f);var z=u.createEncryptor(S,f),A=z.finalize(A),z=z.cfg;return v.create({ciphertext:A,key:S,iv:z.iv,algorithm:u,mode:z.mode,padding:z.padding,blockSize:u.blockSize,formatter:f.format})},decrypt:function(u,y,S,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),u.createDecryptor(S,f).finalize(y.ciphertext)},_parse:function(u,y){return typeof u=="string"?y.parse(u,this):u}}),e=(n.kdf={}).OpenSSL={execute:function(u,y,S,f){return f=f||h.random(8),u=B.create({keySize:y+S}).compute(u,f),S=h.create(u.words.slice(y),4*S),u.sigBytes=4*y,v.create({key:u,iv:S,salt:f})}},l=t.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:e}),encrypt:function(u,y,S,f){return S=(f=this.cfg.extend(f)).kdf.execute(S,u.keySize,u.ivSize),f.iv=S.iv,u=d.encrypt.call(this,u,y,S.key,f),u.mixIn(S),u},decrypt:function(u,y,S,f){return f=this.cfg.extend(f),y=this._parse(y,f.format),S=f.kdf.execute(S,u.keySize,u.ivSize,y.salt),f.iv=S.iv,d.decrypt.call(this,u,y,S.key,f)}})}(),R.mode.CFB=function(){var n=R.lib.BlockCipherMode.extend();function t(r,h,i,c){var B,s=this._iv;s?(B=s.slice(0),this._iv=void 0):B=this._prevBlock,c.encryptBlock(B,0);for(var o=0;o<i;o++)r[h+o]^=B[o]}return n.Encryptor=n.extend({processBlock:function(r,h){var i=this._cipher,c=i.blockSize;t.call(this,r,h,c,i),this._prevBlock=r.slice(h,h+c)}}),n.Decryptor=n.extend({processBlock:function(r,h){var i=this._cipher,c=i.blockSize,B=r.slice(h,h+c);t.call(this,r,h,c,i),this._prevBlock=B}}),n}(),R.mode.ECB=function(){var n=R.lib.BlockCipherMode.extend();return n.Encryptor=n.extend({processBlock:function(t,r){this._cipher.encryptBlock(t,r)}}),n.Decryptor=n.extend({processBlock:function(t,r){this._cipher.decryptBlock(t,r)}}),n}(),R.pad.AnsiX923={pad:function(n,r){var h=n.sigBytes,r=4*r,r=r-h%r,h=h+r-1;n.clamp(),n.words[h>>>2]|=r<<24-h%4*8,n.sigBytes+=r},unpad:function(n){var t=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=t}},R.pad.Iso10126={pad:function(n,t){t*=4,t-=n.sigBytes%t,n.concat(R.lib.WordArray.random(t-1)).concat(R.lib.WordArray.create([t<<24],1))},unpad:function(n){var t=255&n.words[n.sigBytes-1>>>2];n.sigBytes-=t}},R.pad.Iso97971={pad:function(n,t){n.concat(R.lib.WordArray.create([2147483648],1)),R.pad.ZeroPadding.pad(n,t)},unpad:function(n){R.pad.ZeroPadding.unpad(n),n.sigBytes--}},R.mode.OFB=function(){var n=R.lib.BlockCipherMode.extend(),t=n.Encryptor=n.extend({processBlock:function(r,h){var i=this._cipher,c=i.blockSize,B=this._iv,s=this._keystream;B&&(s=this._keystream=B.slice(0),this._iv=void 0),i.encryptBlock(s,0);for(var o=0;o<c;o++)r[h+o]^=s[o]}});return n.Decryptor=t,n}(),R.pad.NoPadding={pad:function(){},unpad:function(){}},function(){var n=R.lib.CipherParams,t=R.enc.Hex;R.format.Hex={stringify:function(r){return r.ciphertext.toString(t)},parse:function(r){return r=t.parse(r),n.create({ciphertext:r})}}}(),function(){for(var n=R,t=n.lib.BlockCipher,C=n.algo,r=[],h=[],i=[],c=[],B=[],s=[],o=[],_=[],v=[],w=[],d=[],e=0;e<256;e++)d[e]=e<128?e<<1:e<<1^283;for(var l=0,u=0,e=0;e<256;e++){var y=u^u<<1^u<<2^u<<3^u<<4,S=d[h[r[l]=y=y>>>8^255&y^99]=l],f=d[S],A=d[f],z=257*d[y]^16843008*y;i[l]=z<<24|z>>>8,c[l]=z<<16|z>>>16,B[l]=z<<8|z>>>24,s[l]=z,o[y]=(z=16843009*A^65537*f^257*S^16843008*l)<<24|z>>>8,_[y]=z<<16|z>>>16,v[y]=z<<8|z>>>24,w[y]=z,l?(l=S^d[d[d[A^S]]],u^=d[d[u]]):l=u=1}var M=[0,1,2,4,8,16,32,64,128,27,54],C=C.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var b=this._keyPriorReset=this._key,D=b.words,E=b.sigBytes/4,L=4*(1+(this._nRounds=6+E)),Z=this._keySchedule=[],K=0;K<L;K++)K<E?Z[K]=D[K]:(X=Z[K-1],K%E?6<E&&K%E==4&&(X=r[X>>>24]<<24|r[X>>>16&255]<<16|r[X>>>8&255]<<8|r[255&X]):(X=r[(X=X<<8|X>>>24)>>>24]<<24|r[X>>>16&255]<<16|r[X>>>8&255]<<8|r[255&X],X^=M[K/E|0]<<24),Z[K]=Z[K-E]^X);for(var I=this._invKeySchedule=[],W=0;W<L;W++){var X,K=L-W;X=W%4?Z[K]:Z[K-4],I[W]=W<4||K<=4?X:o[r[X>>>24]]^_[r[X>>>16&255]]^v[r[X>>>8&255]]^w[r[255&X]]}}},encryptBlock:function(b,D){this._doCryptBlock(b,D,this._keySchedule,i,c,B,s,r)},decryptBlock:function(b,D){var E=b[D+1],E=(b[D+1]=b[D+3],b[D+3]=E,this._doCryptBlock(b,D,this._invKeySchedule,o,_,v,w,h),b[D+1]);b[D+1]=b[D+3],b[D+3]=E},_doCryptBlock:function(b,D,E,L,Z,K,I,W){for(var X=this._nRounds,Q=b[D]^E[0],J=b[D+1]^E[1],U=b[D+2]^E[2],Y=b[D+3]^E[3],N=4,p=1;p<X;p++)var H=L[Q>>>24]^Z[J>>>16&255]^K[U>>>8&255]^I[255&Y]^E[N++],g=L[J>>>24]^Z[U>>>16&255]^K[Y>>>8&255]^I[255&Q]^E[N++],k=L[U>>>24]^Z[Y>>>16&255]^K[Q>>>8&255]^I[255&J]^E[N++],$=L[Y>>>24]^Z[Q>>>16&255]^K[J>>>8&255]^I[255&U]^E[N++],Q=H,J=g,U=k,Y=$;H=(W[Q>>>24]<<24|W[J>>>16&255]<<16|W[U>>>8&255]<<8|W[255&Y])^E[N++],g=(W[J>>>24]<<24|W[U>>>16&255]<<16|W[Y>>>8&255]<<8|W[255&Q])^E[N++],k=(W[U>>>24]<<24|W[Y>>>16&255]<<16|W[Q>>>8&255]<<8|W[255&J])^E[N++],$=(W[Y>>>24]<<24|W[Q>>>16&255]<<16|W[J>>>8&255]<<8|W[255&U])^E[N++],b[D]=H,b[D+1]=g,b[D+2]=k,b[D+3]=$},keySize:8});n.AES=t._createHelper(C)}(),function(){var n=R,r=n.lib,t=r.WordArray,r=r.BlockCipher,h=n.algo,i=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],c=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],B=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],s=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],o=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],_=h.DES=r.extend({_doReset:function(){for(var d=this._key.words,e=[],l=0;l<56;l++){var u=i[l]-1;e[l]=d[u>>>5]>>>31-u%32&1}for(var y=this._subKeys=[],S=0;S<16;S++){for(var f=y[S]=[],A=B[S],l=0;l<24;l++)f[l/6|0]|=e[(c[l]-1+A)%28]<<31-l%6,f[4+(l/6|0)]|=e[28+(c[l+24]-1+A)%28]<<31-l%6;f[0]=f[0]<<1|f[0]>>>31;for(l=1;l<7;l++)f[l]=f[l]>>>4*(l-1)+3;f[7]=f[7]<<5|f[7]>>>27}for(var z=this._invSubKeys=[],l=0;l<16;l++)z[l]=y[15-l]},encryptBlock:function(d,e){this._doCryptBlock(d,e,this._subKeys)},decryptBlock:function(d,e){this._doCryptBlock(d,e,this._invSubKeys)},_doCryptBlock:function(d,e,l){this._lBlock=d[e],this._rBlock=d[e+1],v.call(this,4,252645135),v.call(this,16,65535),w.call(this,2,858993459),w.call(this,8,16711935),v.call(this,1,1431655765);for(var u=0;u<16;u++){for(var y=l[u],S=this._lBlock,f=this._rBlock,A=0,z=0;z<8;z++)A|=s[z][((f^y[z])&o[z])>>>0];this._lBlock=f,this._rBlock=S^A}var M=this._lBlock;this._lBlock=this._rBlock,this._rBlock=M,v.call(this,1,1431655765),w.call(this,8,16711935),w.call(this,2,858993459),v.call(this,16,65535),v.call(this,4,252645135),d[e]=this._lBlock,d[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function v(d,e){e=(this._lBlock>>>d^this._rBlock)&e,this._rBlock^=e,this._lBlock^=e<<d}function w(d,e){e=(this._rBlock>>>d^this._lBlock)&e,this._lBlock^=e,this._rBlock^=e<<d}n.DES=r._createHelper(_),h=h.TripleDES=r.extend({_doReset:function(){var d=this._key.words;this._des1=_.createEncryptor(t.create(d.slice(0,2))),this._des2=_.createEncryptor(t.create(d.slice(2,4))),this._des3=_.createEncryptor(t.create(d.slice(4,6)))},encryptBlock:function(d,e){this._des1.encryptBlock(d,e),this._des2.decryptBlock(d,e),this._des3.encryptBlock(d,e)},decryptBlock:function(d,e){this._des3.decryptBlock(d,e),this._des2.encryptBlock(d,e),this._des1.decryptBlock(d,e)},keySize:6,ivSize:2,blockSize:2}),n.TripleDES=r._createHelper(h)}(),function(){var n=R,t=n.lib.StreamCipher,r=n.algo,h=r.RC4=t.extend({_doReset:function(){for(var c=this._key,B=c.words,s=c.sigBytes,o=this._S=[],_=0;_<256;_++)o[_]=_;for(var _=0,v=0;_<256;_++){var w=_%s,w=B[w>>>2]>>>24-w%4*8&255,v=(v+o[_]+w)%256,w=o[_];o[_]=o[v],o[v]=w}this._i=this._j=0},_doProcessBlock:function(c,B){c[B]^=i.call(this)},keySize:8,ivSize:0});function i(){for(var c=this._S,B=this._i,s=this._j,o=0,_=0;_<4;_++){var s=(s+c[B=(B+1)%256])%256,v=c[B];c[B]=c[s],c[s]=v,o|=c[(c[B]+c[s])%256]<<24-8*_}return this._i=B,this._j=s,o}n.RC4=t._createHelper(h),r=r.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var c=this.cfg.drop;0<c;c--)i.call(this)}}),n.RC4Drop=t._createHelper(r)}(),R.mode.CTRGladman=function(){var n=R.lib.BlockCipherMode.extend();function t(h){var i,c,B;return(h>>24&255)==255?(c=h>>8&255,B=255&h,(i=h>>16&255)===255?(i=0,c===255?(c=0,B===255?B=0:++B):++c):++i,h=0,h=(h+=i<<16)+(c<<8)+B):h+=16777216,h}var r=n.Encryptor=n.extend({processBlock:function(h,i){var c=this._cipher,B=c.blockSize,s=this._iv,o=this._counter,_=(s&&(o=this._counter=s.slice(0),this._iv=void 0),((s=o)[0]=t(s[0]))===0&&(s[1]=t(s[1])),o.slice(0));c.encryptBlock(_,0);for(var v=0;v<B;v++)h[i+v]^=_[v]}});return n.Decryptor=r,n}(),function(){var n=R,t=n.lib.StreamCipher,c=n.algo,r=[],h=[],i=[],c=c.Rabbit=t.extend({_doReset:function(){for(var s=this._key.words,o=this.cfg.iv,_=0;_<4;_++)s[_]=16711935&(s[_]<<8|s[_]>>>24)|4278255360&(s[_]<<24|s[_]>>>8);for(var v=this._X=[s[0],s[3]<<16|s[2]>>>16,s[1],s[0]<<16|s[3]>>>16,s[2],s[1]<<16|s[0]>>>16,s[3],s[2]<<16|s[1]>>>16],w=this._C=[s[2]<<16|s[2]>>>16,4294901760&s[0]|65535&s[1],s[3]<<16|s[3]>>>16,4294901760&s[1]|65535&s[2],s[0]<<16|s[0]>>>16,4294901760&s[2]|65535&s[3],s[1]<<16|s[1]>>>16,4294901760&s[3]|65535&s[0]],_=this._b=0;_<4;_++)B.call(this);for(_=0;_<8;_++)w[_]^=v[_+4&7];if(o){var o=o.words,d=o[0],o=o[1],d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),e=d>>>16|4294901760&o,l=o<<16|65535&d;w[0]^=d,w[1]^=e,w[2]^=o,w[3]^=l,w[4]^=d,w[5]^=e,w[6]^=o,w[7]^=l;for(_=0;_<4;_++)B.call(this)}},_doProcessBlock:function(s,o){var _=this._X;B.call(this),r[0]=_[0]^_[5]>>>16^_[3]<<16,r[1]=_[2]^_[7]>>>16^_[5]<<16,r[2]=_[4]^_[1]>>>16^_[7]<<16,r[3]=_[6]^_[3]>>>16^_[1]<<16;for(var v=0;v<4;v++)r[v]=16711935&(r[v]<<8|r[v]>>>24)|4278255360&(r[v]<<24|r[v]>>>8),s[o+v]^=r[v]},blockSize:4,ivSize:2});function B(){for(var s=this._X,o=this._C,_=0;_<8;_++)h[_]=o[_];o[0]=o[0]+1295307597+this._b|0,o[1]=o[1]+3545052371+(o[0]>>>0<h[0]>>>0?1:0)|0,o[2]=o[2]+886263092+(o[1]>>>0<h[1]>>>0?1:0)|0,o[3]=o[3]+1295307597+(o[2]>>>0<h[2]>>>0?1:0)|0,o[4]=o[4]+3545052371+(o[3]>>>0<h[3]>>>0?1:0)|0,o[5]=o[5]+886263092+(o[4]>>>0<h[4]>>>0?1:0)|0,o[6]=o[6]+1295307597+(o[5]>>>0<h[5]>>>0?1:0)|0,o[7]=o[7]+3545052371+(o[6]>>>0<h[6]>>>0?1:0)|0,this._b=o[7]>>>0<h[7]>>>0?1:0;for(_=0;_<8;_++){var v=s[_]+o[_],w=65535&v,d=v>>>16;i[_]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}s[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,s[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,s[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,s[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,s[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,s[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,s[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,s[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}n.Rabbit=t._createHelper(c)}(),R.mode.CTR=function(){var n=R.lib.BlockCipherMode.extend(),t=n.Encryptor=n.extend({processBlock:function(r,h){var i=this._cipher,c=i.blockSize,B=this._iv,s=this._counter,o=(B&&(s=this._counter=B.slice(0),this._iv=void 0),s.slice(0));i.encryptBlock(o,0),s[c-1]=s[c-1]+1|0;for(var _=0;_<c;_++)r[h+_]^=o[_]}});return n.Decryptor=t,n}(),function(){var n=R,t=n.lib.StreamCipher,c=n.algo,r=[],h=[],i=[],c=c.RabbitLegacy=t.extend({_doReset:function(){for(var s=this._key.words,o=this.cfg.iv,_=this._X=[s[0],s[3]<<16|s[2]>>>16,s[1],s[0]<<16|s[3]>>>16,s[2],s[1]<<16|s[0]>>>16,s[3],s[2]<<16|s[1]>>>16],v=this._C=[s[2]<<16|s[2]>>>16,4294901760&s[0]|65535&s[1],s[3]<<16|s[3]>>>16,4294901760&s[1]|65535&s[2],s[0]<<16|s[0]>>>16,4294901760&s[2]|65535&s[3],s[1]<<16|s[1]>>>16,4294901760&s[3]|65535&s[0]],w=this._b=0;w<4;w++)B.call(this);for(w=0;w<8;w++)v[w]^=_[w+4&7];if(o){var s=o.words,o=s[0],s=s[1],o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),d=o>>>16|4294901760&s,e=s<<16|65535&o;v[0]^=o,v[1]^=d,v[2]^=s,v[3]^=e,v[4]^=o,v[5]^=d,v[6]^=s,v[7]^=e;for(w=0;w<4;w++)B.call(this)}},_doProcessBlock:function(s,o){var _=this._X;B.call(this),r[0]=_[0]^_[5]>>>16^_[3]<<16,r[1]=_[2]^_[7]>>>16^_[5]<<16,r[2]=_[4]^_[1]>>>16^_[7]<<16,r[3]=_[6]^_[3]>>>16^_[1]<<16;for(var v=0;v<4;v++)r[v]=16711935&(r[v]<<8|r[v]>>>24)|4278255360&(r[v]<<24|r[v]>>>8),s[o+v]^=r[v]},blockSize:4,ivSize:2});function B(){for(var s=this._X,o=this._C,_=0;_<8;_++)h[_]=o[_];o[0]=o[0]+1295307597+this._b|0,o[1]=o[1]+3545052371+(o[0]>>>0<h[0]>>>0?1:0)|0,o[2]=o[2]+886263092+(o[1]>>>0<h[1]>>>0?1:0)|0,o[3]=o[3]+1295307597+(o[2]>>>0<h[2]>>>0?1:0)|0,o[4]=o[4]+3545052371+(o[3]>>>0<h[3]>>>0?1:0)|0,o[5]=o[5]+886263092+(o[4]>>>0<h[4]>>>0?1:0)|0,o[6]=o[6]+1295307597+(o[5]>>>0<h[5]>>>0?1:0)|0,o[7]=o[7]+3545052371+(o[6]>>>0<h[6]>>>0?1:0)|0,this._b=o[7]>>>0<h[7]>>>0?1:0;for(_=0;_<8;_++){var v=s[_]+o[_],w=65535&v,d=v>>>16;i[_]=((w*w>>>17)+w*d>>>15)+d*d^((4294901760&v)*v|0)+((65535&v)*v|0)}s[0]=i[0]+(i[7]<<16|i[7]>>>16)+(i[6]<<16|i[6]>>>16)|0,s[1]=i[1]+(i[0]<<8|i[0]>>>24)+i[7]|0,s[2]=i[2]+(i[1]<<16|i[1]>>>16)+(i[0]<<16|i[0]>>>16)|0,s[3]=i[3]+(i[2]<<8|i[2]>>>24)+i[1]|0,s[4]=i[4]+(i[3]<<16|i[3]>>>16)+(i[2]<<16|i[2]>>>16)|0,s[5]=i[5]+(i[4]<<8|i[4]>>>24)+i[3]|0,s[6]=i[6]+(i[5]<<16|i[5]>>>16)+(i[4]<<16|i[4]>>>16)|0,s[7]=i[7]+(i[6]<<8|i[6]>>>24)+i[5]|0}n.RabbitLegacy=t._createHelper(c)}(),R.pad.ZeroPadding={pad:function(n,t){t*=4,n.clamp(),n.sigBytes+=t-(n.sigBytes%t||t)},unpad:function(n){for(var t=n.words,r=n.sigBytes-1;!(t[r>>>2]>>>24-r%4*8&255);)r--;n.sigBytes=r+1}};var d2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Y1(n){if(typeof n!="string")return!1;try{return JSON.parse(n),!0}catch(t){return!1}}var Q1=(n,t)=>parseInt(Math.random()*(t-n+1)+n),p1=(n)=>{let t="";for(let r=0;r<n;r++)t+=d2[Q1(0,64)];return t},F={encode(n){return n=R.enc.Utf8.parse(n),R.enc.Base64.stringify(n)},decode(n){return(n=R.enc.Base64.parse(n)).toString(R.enc.Utf8)}};function v2(n,t){try{var r=p1(8),h=p1(8),i=(t=R.enc.Utf8.parse(t),R.enc.Utf8.parse(r+h)),c=R.enc.Utf8.parse(n);return r+R.AES.encrypt(c,t,{iv:i,mode:R.mode.CBC,padding:R.pad.Pkcs7}).ciphertext.toString()+h}catch(B){}}function f2(n,t){try{var r=n.slice(0,8),h=n.slice(n.length-8,n.length),i=(n=n.slice(8,n.length-8),t=R.enc.Utf8.parse(t),R.enc.Utf8.parse(r+h)),c=R.enc.Hex.parse(n),B=R.enc.Base64.stringify(c);return R.AES.decrypt(B,t,{iv:i,mode:R.mode.CBC,padding:R.pad.Pkcs7}).toString(R.enc.Utf8).toString()}catch(s){}}var S2=function(n,t,r=0){for(n instanceof Object&&(n=JSON.stringify(n));t.length<16;)t+="0";return n=F.encode(v2(n,t)),r&&(n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n),n=F.encode(n)),n},g2=function(n,t,r=0){try{for(;t.length<16;)t+="0";return n=F.decode(n),r&&(n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n),n=F.decode(n)),(n=Y1(n=f2(n,t))?JSON.parse(n):n)!=""&&n}catch(h){return!1}};try{z1&&(z1.exports={encode:S2,decode:g2,isJSON:Y1,randomInt:Q1,randomStr:p1})}catch(n){}});import f1 from"express";import n2 from"node:fs";import W1 from"node:path";import{pathToFileURL as c2}from"node:url";var _2=(n,t,r)=>{let h=t;h.return=async(i,c=1,B=200,s="")=>{if(i===null||i===void 0)c=0;if(i instanceof Promise)i=await i;t.status(B).send({msg:s,status:c?1:0,data:i===null||i===void 0?null:i})},h.reply=async(i,c,B=200,s="")=>{let o=c??(i?1:0);return await h.return(i,o,B,s)},h.success=async(i,c="成功")=>{return await h.return(i,1,200,c)},h.fail=async(i,c="系统错误,请联系管理员")=>{return await h.return(i,0,200,c)},r()},X1=_2;import o2 from"node:fs";import I1 from"node:path";var o1={logs:{open:!0,debug:!0},token:{open:!0,pwd:"8087",headerParams:"token"},projectName:"mas-app",openCors:!1,corsUrl:[]};function N1(n,t){if(!t)return{...n};return{...n,...t,logs:{...n?.logs,...t?.logs},token:{...n?.token,...t?.token}}}function K1(n){let t=[{apisPath:I1.join(n,"src/apis"),defalutApiPath:""},{apisPath:I1.join(n,"apis"),defalutApiPath:""}];for(let r of t)if(o2.existsSync(r.apisPath))return r;return t[0]}import l1 from"node:fs";import k1 from"node:path";function Z1(n){if(!l1.existsSync(n))return[];if(!l1.statSync(n).isDirectory())return[];let r=[],h=[n];while(h.length){let i=h.pop(),c=l1.readdirSync(i,{withFileTypes:!0});for(let B of c){let s=k1.join(i,B.name);if(B.isDirectory()){h.push(s);continue}if(!B.isFile())continue;if(B.name.endsWith(".d.ts"))continue;if(B.name.endsWith(".ts")||B.name.endsWith(".js"))r.push(s)}}return r}function L1(n,t){let i=k1.relative(n,t).replace(/\.(ts|js)$/,"").split(k1.sep).join("/");if(i==="index")return"/";if(i.endsWith("/index"))return`/${i.slice(0,-6)}`;return`/${i}`}function a(n){return Object.prototype.toString.call(n).slice(8,-1).toLowerCase()}function U1(n){return n==="?"||n===-1}function J1(n,t){if(n===null||n===void 0)return!0;if(t==="?")return a(n)==="string";return a(n)==="number"}function u2(n){return Array.isArray(n)&&n.length>0&&(n[0]==="?"||n[0]===-1)}function B2(n,t){if(n===null||n===void 0)return!0;if(!Array.isArray(n))return!1;if(n.length===0)return!1;for(let r of n)if(t==="?"){if(a(r)!=="string")return!1}else if(a(r)!=="number")return!1;return!0}function y2(n,t){return a(n)===t.name.toLowerCase()}function l2(n,t,r){if(a(n)!=="object"||n===null)return!1;let h=n;if(r){for(let i of Object.keys(h))if(!(i in t))return!1}for(let i of Object.keys(t)){let c=h[i],B=t[i];if(!B)return!1;if(u2(B)){let s=B[0];if(!B2(c,s))return!1;continue}if(U1(B)){if(!J1(c,B))return!1;continue}if(c===null||c===void 0)return!1;if(!m(c,B,r))return!1}return!0}function w2(n,t,r){if(!Array.isArray(n))return!1;if(n.length===0)return!1;let h=t[0];if(!h)throw Error("非法的校验格式:数组格式不能为空(示例:[String] / [{...}])");for(let i of n)if(!m(i,h,r))return!1;return!0}function m(n,t,r=!1){if(U1(t))return J1(n,t);if(n===null||n===void 0)return!1;let h=a(t);if(h==="function")return y2(n,t);if(Array.isArray(t))return w2(n,t,r);if(h==="object")return l2(n,t,r);return!1}var w1=s2($1(),1),j1=()=>new Date().getTime();function G1(n,t="8087",r=0){return w1.decode(n,t,r)}function O1(n,t="8087",r=0){return w1.encode(n,t,r)}var b1=({token:n,permission:t=[]},r="8087")=>{if(!n)return{msg:"没有传入token数据",errorCode:0,status:0,token:n};let h=G1(n,r);if(!h)return{msg:"token数据错误",errorCode:1,status:0,token:n};if(t.length!=0){let i=h._permission;if(!i)return{msg:"权限错误",errorCode:2,status:0,token:n};if(i?.filter((c)=>t.includes(c)).length==0)return{msg:"权限错误",errorCode:2,status:0,token:n}}if(h._masTime!==0){if(j1()>h._masTime)return{msg:"token过期",errorCode:3,status:0,token:n}}return{...h,status:1}};function H2({data:n=null,time:t=0,permission:r=[]}={},h="8087"){let i={};return i.data=n,r.length!=0&&(i._permission=r),t!==0&&(i._masTime=t*1000+j1()),O1(i,h)}function k2(n){return String(n.method).toUpperCase()==="GET"}function p2(n){return typeof n==="string"}function z2(n){if(!n||typeof n!=="object"||Array.isArray(n))return{ok:!1};let t={};for(let[r,h]of Object.entries(n)){if(h===void 0||h===null)continue;if(!p2(h))return{ok:!1};t[r]=h}return{ok:!0,value:t}}function b2(n){if(!n||typeof n!=="object"||Array.isArray(n))return!1;for(let t of Object.values(n))if(!(t===String||t==="?"))return!1;return!0}function A1(n,t,r){return async(h,i,c)=>{try{let{config:B,handler:s}=t;if(!s)return i.reply?.(null,0,500,`API 模块缺少导出 handler:${n}`);let o=B?.methods??"all";if(o!=="all"&&h.method.toLowerCase()!==o)return i.reply?.(null,0,405,"Method Not Allowed");if(B?.contentType){if(h.method.toUpperCase()!=="GET"&&h.headers["content-length"]!==void 0){let v=h.headers["content-type"]??"";if(!String(v).includes(B.contentType))return i.reply?.(null,0,400,"Content-Type 不匹配")}}if(B?.header)for(let[_,v]of Object.entries(B.header)){let w=h.headers[_.toLowerCase()],d;if(Array.isArray(w))d=w[0];else d=w;if(d===void 0||d===null)return i.reply?.(null,0,400,`缺少 Header:${_}`);let e=d;if(v===Number)e=Number(d);if(v===Boolean)e=d==="true"||d==="1"||d==="yes";if(!m(e,v,!1))return i.reply?.(null,0,400,`Header 类型错误:${_}`)}if(r.token.open&&B?.token){let _=r.token.headerParams,v=h.headers[_.toLowerCase()]??h.query?.[_]??h.body?.[_],w=b1({token:v,permission:B.permission??[]},r.token.pwd);if(w.status===0)return i.reply?.(null,0,401,w.msg);h.tokenData=w}if(B?.requestFormat){if(k2(h)){if(!b2(B.requestFormat))return i.reply?.(null,0,500,"接口配置错误:GET 的 requestFormat 仅支持扁平的 String/_String(不支持 Number/数组/嵌套对象)");let _=z2(h.query);if(!_.ok)return i.reply?.(null,0,400,"GET 请求参数仅支持 string 类型(不支持数组/对象/嵌套结构)");if(!m(_.value,B.requestFormat,!!B.strict))return i.reply?.(null,0,400,"请求参数格式错误")}else if(!m(h.body,B.requestFormat,!!B.strict))return i.reply?.(null,0,400,"请求参数格式错误")}return await s(h,i)}catch(B){return c(B)}}}function q(n){if(!n)return n;if(n==="?")return"String?";if(n===-1)return"Number?";if(typeof n==="function")return n.name??"Function";if(Array.isArray(n)){if(n[0]==="?")return["String"];if(n[0]===-1)return["Number"];return[q(n[0])]}if(typeof n==="object"){let t={};for(let[r,h]of Object.entries(n))t[r]=q(h);return t}return n}function u1(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function d1(n){if(!n)return null;if(n==="?")return"string";if(n===-1)return 0;if(typeof n==="function"){let t=n.name;if(t==="String")return"string";if(t==="Number")return 0;if(t==="Boolean")return!0;if(t==="Object")return{};return null}if(Array.isArray(n)){if(n[0]==="?")return["string"];if(n[0]===-1)return[0];return[d1(n[0])]}if(u1(n)){let t={};for(let[r,h]of Object.entries(n))t[r]=d1(h);return t}return null}function F1(n,t=""){if(!n)return[];if(n==="?"||n===-1)return[{name:t||"value",desc:"",type:q(n)}];if(typeof n==="function")return[{name:t||"value",desc:"",type:q(n)}];if(Array.isArray(n))return[{name:t||"value",desc:"",type:q(n)}];if(u1(n)){let r=[];for(let[h,i]of Object.entries(n)){let c=t?`${t}.${h}`:h;r.push(...F1(i,c))}return r}return[]}function A2(n,t){if(!n)return;if(!t)return;let r=t.split(".").filter(Boolean),h=n;for(let i of r){if(!h)return;if(Array.isArray(h))return h;if(typeof h==="function")return h;if(!u1(h))return;h=h[i]}return h}function R1(n,t){if(!n&&!t)return;let r=n?.example??(u1(t)?d1(t):null),h=u1(r)?r:{value:d1(t)},i=Array.isArray(n?.desc)?n.desc:[],B=(i.length>0?i:F1(t)).map((s)=>{if(s.type)return s;let _=A2(t,s.name);if(_)return{...s,type:q(_)};return{...s,type:"String"}});return{example:h,desc:B}}function P1(n){if(!n)return n;return{...n,header:n.header?q(n.header):n.header,requestFormat:n.requestFormat?q(n.requestFormat):n.requestFormat,responseFormat:n.responseFormat?q(n.responseFormat):n.responseFormat}}function V1(n,t){return{header:R1(t?.header,n?.header),request:R1(t?.request,n?.requestFormat),response:R1(t?.response,n?.responseFormat)}}import R2 from"node:fs";import D2 from"moment";import v1 from"morgan";import{createStream as E2}from"rotating-file-stream";function W2(n){return typeof n==="object"&&n!==null&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function D1(n,t){if(!n)return n;if(Array.isArray(n))return n.map((h)=>D1(h,t));if(!W2(n))return n;let r={};for(let[h,i]of Object.entries(n))if(t.includes(h))r[h]="[REDACTED]";else r[h]=D1(i,t);return r}function T1(n,t,r){try{if(n===void 0)return"-";if(n===null)return"null";let h=D1(n,r),i;if(typeof h==="string")i=h;else{let c=JSON.stringify(h);i=c===void 0?"-":c}if(i.length>t)i=`${i.slice(0,t)}...(truncated)`;return i}catch{return"[Unserializable]"}}function x1(n,t){if(!t.logRequestBody&&!t.logResponseBody)return;let r=n;if(r.__masBodyCaptureAttached)return;r.__masBodyCaptureAttached=!0,n.use((h,i,c)=>{if(t.logRequestBody)i.locals.__masReqBody=h.body;if(!t.logResponseBody)return c();let B=i,s=B.send?.bind(B),o=B.json?.bind(B);if(typeof s==="function")B.send=(_)=>{return i.locals.__masResBody=_,s(_)};if(typeof o==="function")B.json=(_)=>{return i.locals.__masResBody=_,o(_)};c()})}function q1(n,t){v1.token("date",()=>D2().utcOffset(8).format("YYYY-MM-DD HH:mm:ss")),v1.token("req-body",(i,c)=>{if(!n.logRequestBody)return"-";return T1(c.locals?.__masReqBody,n.maxBodyLength,n.redactKeys)}),v1.token("res-body",(i,c)=>{if(!n.logResponseBody)return"-";return T1(c.locals?.__masResBody,n.maxBodyLength,n.redactKeys)});let r=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" req=:req-body res=:res-body',h=':remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"';return v1(n.logRequestBody||n.logResponseBody?r:h,{stream:t})}function a1(n,t={}){let r={logRequestBody:t.logRequestBody??!0,logResponseBody:t.logResponseBody??!0,maxBodyLength:t.maxBodyLength??2000,redactKeys:t.redactKeys??[]};x1(n,r),n.use(q1(r,{write:(h)=>process.stdout.write(h)}))}function E1(n,t,r={}){R2.mkdirSync(t,{recursive:!0});let h={logRequestBody:r.logRequestBody??!0,logResponseBody:r.logResponseBody??!0,maxBodyLength:r.maxBodyLength??2000,redactKeys:r.redactKeys??[]};x1(n,h);let i=E2("access.log",{size:"50M",interval:"1d",path:t});n.use(q1(h,i))}function C2(n,t){if(!n)return!1;if(!t||t.length===0)return!0;return t.some((r)=>{if(r===n)return!0;if(r.includes("*")){let h=r.replace(/\*/g,".*").replace(/\./g,"\\.");return new RegExp(`^${h}$`).test(n)}return!1})}function m1(n,t){let r={allowHeader:[]};n.use((h,i,c)=>{let B=h.headers.origin,s=h.headers["access-control-request-headers"];if(s){let o=s.split(",").map((_)=>_.trim()).filter(Boolean);r.allowHeader=[...new Set([...r.allowHeader,...o])]}if(B&&C2(B,t))i.setHeader("Access-Control-Allow-Origin",B);else if(B&&t&&t.length>0);else if(!t||t.length===0){if(B)i.setHeader("Access-Control-Allow-Origin",B)}if(i.setHeader("Access-Control-Allow-Headers",r.allowHeader.length>0?r.allowHeader.join(", "):"*"),i.setHeader("Access-Control-Allow-Methods","PUT, POST, GET, DELETE, OPTIONS, PATCH"),i.setHeader("Access-Control-Allow-Credentials","true"),h.method==="OPTIONS")return i.status(204).send();c()})}async function M2(n,t,r){let h=f1();r&&r(h);let i=K1(n);o1.logs.logPath=W1.join(n,"logs"),o1.apisPath=i.apisPath,o1.defalutApiPath=i.defalutApiPath;let c=N1(o1,t);if(c.openCors)m1(h,c.corsUrl);h.use(f1.json({limit:"10mb"})),h.use(f1.urlencoded({extended:!0}));let B=c.staticPath??"public",s=c.staticUrl??"/public",o=W1.isAbsolute(B)?B:W1.join(n,B);if(n2.existsSync(o))h.use(s,f1.static(o));if(h.use(X1),c.logs.debug)a1(h,{logRequestBody:c.logs.logRequestBody,logResponseBody:c.logs.logResponseBody,maxBodyLength:c.logs.maxBodyLength,redactKeys:c.logs.redactKeys});if(c.logs.open&&c.logs.logPath)E1(h,c.logs.logPath,{logRequestBody:c.logs.logRequestBody,logResponseBody:c.logs.logResponseBody,maxBodyLength:c.logs.maxBodyLength,redactKeys:c.logs.redactKeys});let _=c.apisPath,v=Z1(_),w=c.defalutApiPath,d=[];for(let e of v){let l=L1(_,e),u=`/api${l}`,y=await import(c2(e).href);if(typeof y.handler!=="function")throw Error(`API 模块缺少导出 handler:${e}`);d.push({path:l,apiPath:u,file:e,mod:y}),h.all(u,A1(e,y,c))}if(c.exposeApiDocs!==!1)h.get("/debug/docs",async(e,l)=>{let u=[];for(let y of d){let S=y.mod.config,f=y.mod.doc;u.push({path:y.apiPath,file:y.file,config:P1(S),doc:V1(S,f)})}l.reply?.(u)});if(w&&n2.existsSync(w)){let e=await import(c2(w).href);if(typeof e.handler!=="function")throw Error(`兜底 API 模块缺少导出 handler:${w}`);h.use(A1(w,e,c))}else h.use((e,l)=>{l.reply?.(null,0,404,"Not Found")});return h.use((e,l,u,y)=>{let S=e?.message?String(e.message):"系统错误,请联系管理员";if(typeof u?.reply==="function")return u.reply(null,0,500,S);return u.status(500).send({status:0,msg:S,data:null})}),h}var X2="?",I2=-1;export{b1 as validToken,M2 as getApp,O1 as encode,G1 as decode,H2 as createToken,X2 as _String,I2 as _Number};
|
package/dist/type.d.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import type { Request, Response } from 'express';
|
|
2
|
-
import type { TypeFromValidFormat, ValidFormat } from './utils/typeFromValidFormat';
|
|
2
|
+
import type { TypeFromValidFormat, TypeFromValidFormatForQuery, ValidFormat } from './utils/typeFromValidFormat';
|
|
3
3
|
/**
|
|
4
4
|
* 请求类型
|
|
5
5
|
*/
|
|
6
|
-
export type MasReq<TRequestFormat = any> = Request<any, any, TypeFromValidFormat<TRequestFormat
|
|
6
|
+
export type MasReq<TRequestFormat = any, TMethod extends HttpMethod = HttpMethod> = Request<any, any, TMethod extends 'get' ? any : TypeFromValidFormat<TRequestFormat>, TMethod extends 'get' ? TypeFromValidFormatForQuery<TRequestFormat> : any>;
|
|
7
7
|
/**
|
|
8
8
|
* MAS 接口配置的最小结构(仅用于类型推导)。
|
|
9
9
|
*/
|
|
10
10
|
export type MasConfigLike = {
|
|
11
11
|
requestFormat?: any;
|
|
12
12
|
responseFormat?: any;
|
|
13
|
+
methods?: HttpMethod;
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* HTTP 方法类型。
|
|
16
17
|
*/
|
|
17
18
|
export type HttpMethod = 'get' | 'post' | 'all';
|
|
19
|
+
/**
|
|
20
|
+
* GET 请求的 requestFormat 约束:
|
|
21
|
+
* - query 只允许 string,因此这里只允许 `String`(必填)或 `_String`(可选)
|
|
22
|
+
* - 明确不允许 Number / Boolean / Object / -1 / 数组 / 嵌套对象
|
|
23
|
+
*/
|
|
24
|
+
export type GetRequestFormat = Record<string, StringConstructor | '?'>;
|
|
18
25
|
/**
|
|
19
26
|
* MAS 接口的完整配置类型。
|
|
20
27
|
*/
|
|
@@ -23,13 +30,13 @@ export type MasConfig<TRequestFormat extends ValidFormat | undefined = ValidForm
|
|
|
23
30
|
name?: string;
|
|
24
31
|
/** 是否严格模式(strict=true 时对象不允许出现多余字段) */
|
|
25
32
|
strict?: boolean;
|
|
26
|
-
/** HTTP
|
|
27
|
-
methods?: HttpMethod
|
|
33
|
+
/** HTTP 方法(非 GET) */
|
|
34
|
+
methods?: Exclude<HttpMethod, 'get'>;
|
|
28
35
|
/** Content-Type */
|
|
29
36
|
contentType?: string;
|
|
30
37
|
/** Header 参数格式(key 为参数名,value 为类型描述符) */
|
|
31
38
|
header?: THeader;
|
|
32
|
-
/**
|
|
39
|
+
/** 请求体格式(非 GET:校验/断言 req.body) */
|
|
33
40
|
requestFormat?: TRequestFormat;
|
|
34
41
|
/** 响应体格式 */
|
|
35
42
|
responseFormat?: TResponseFormat;
|
|
@@ -37,11 +44,37 @@ export type MasConfig<TRequestFormat extends ValidFormat | undefined = ValidForm
|
|
|
37
44
|
token?: boolean;
|
|
38
45
|
/** 权限列表 */
|
|
39
46
|
permission?: string[];
|
|
47
|
+
} | {
|
|
48
|
+
/** 接口名称 */
|
|
49
|
+
name?: string;
|
|
50
|
+
/** 是否严格模式(strict=true 时对象不允许出现多余字段) */
|
|
51
|
+
strict?: boolean;
|
|
52
|
+
/** HTTP 方法(GET) */
|
|
53
|
+
methods: 'get';
|
|
54
|
+
/** Content-Type */
|
|
55
|
+
contentType?: string;
|
|
56
|
+
/** Header 参数格式(key 为参数名,value 为类型描述符) */
|
|
57
|
+
header?: THeader;
|
|
58
|
+
/**
|
|
59
|
+
* GET:入参来自 req.query,只允许 string,因此 requestFormat 必须是扁平的 string 描述
|
|
60
|
+
* (写 Number/数组/嵌套对象 会直接 TS 报错)
|
|
61
|
+
*/
|
|
62
|
+
requestFormat?: TRequestFormat extends GetRequestFormat ? TRequestFormat : GetRequestFormat;
|
|
63
|
+
/** 响应体格式 */
|
|
64
|
+
responseFormat?: TResponseFormat;
|
|
65
|
+
/** 是否需要 token 验证 */
|
|
66
|
+
token?: boolean;
|
|
67
|
+
/** 权限列表 */
|
|
68
|
+
permission?: string[];
|
|
40
69
|
};
|
|
41
70
|
/** 从配置中提取 requestFormat */
|
|
42
71
|
type ReqFormatOf<TConfig> = TConfig extends {
|
|
43
72
|
requestFormat?: infer TRequestFormat;
|
|
44
73
|
} ? NonNullable<TRequestFormat> : any;
|
|
74
|
+
/** 从配置中提取 methods */
|
|
75
|
+
type MethodOf<TConfig> = TConfig extends {
|
|
76
|
+
methods?: infer TMethods;
|
|
77
|
+
} ? NonNullable<TMethods> extends HttpMethod ? NonNullable<TMethods> : HttpMethod : HttpMethod;
|
|
45
78
|
/** 从配置中提取 responseFormat */
|
|
46
79
|
type ResFormatOf<TConfig> = TConfig extends {
|
|
47
80
|
responseFormat?: infer TResponseFormat;
|
|
@@ -52,7 +85,7 @@ type ResFormatOf<TConfig> = TConfig extends {
|
|
|
52
85
|
* 用法示例:
|
|
53
86
|
* `export default (async (req, res) => { ... }) satisfies MasHandler<typeof config>;`
|
|
54
87
|
*/
|
|
55
|
-
export type MasHandler<TConfig extends MasConfigLike = MasConfigLike> = (req: MasReq<ReqFormatOf<TConfig>>, res: MasRes<ResFormatOf<TConfig>>) => any;
|
|
88
|
+
export type MasHandler<TConfig extends MasConfigLike = MasConfigLike> = (req: MasReq<ReqFormatOf<TConfig>, MethodOf<TConfig>>, res: MasRes<ResFormatOf<TConfig>>) => any;
|
|
56
89
|
/**
|
|
57
90
|
* 响应类型
|
|
58
91
|
*/
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC;;GAEG;AACH,MAAM,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export type OptionalDescriptor = '?' | -1;
|
|
|
24
24
|
/**
|
|
25
25
|
* 运行时校验格式(requestFormat)的 TypeScript 结构。
|
|
26
26
|
*
|
|
27
|
-
* 注意:这里是“类型层”定义,用于推导
|
|
27
|
+
* 注意:这里是“类型层”定义,用于推导 **req.body 或 req.query** 的类型;运行时仍由 `validType` 校验。
|
|
28
28
|
*/
|
|
29
29
|
export type ValidFormat = BasicTypeDescriptor | OptionalDescriptor | {
|
|
30
30
|
[key: string]: ValidFormat;
|
|
@@ -65,5 +65,17 @@ export type TypeFromValidFormat<T> = T extends BasicTypeDescriptor ? PrimitiveFr
|
|
|
65
65
|
} & {
|
|
66
66
|
[K in OptionalKeys<T>]?: TypeFromValidFormat<T[K]>;
|
|
67
67
|
} : unknown;
|
|
68
|
+
/**
|
|
69
|
+
* 面向 GET `req.query` 的推导版本:
|
|
70
|
+
* - GET 约束 query 仅允许 string(以及 string[]),因此 Number/Boolean/Object/-1 会推导为 never
|
|
71
|
+
* - 这能让“GET 写了 Number requestFormat”在 TS 层直接报错
|
|
72
|
+
*/
|
|
73
|
+
type QueryPrimitiveFromDescriptor<T> = T extends StringConstructor ? string : T extends NumberConstructor | BooleanConstructor | ObjectConstructor ? never : never;
|
|
74
|
+
type QueryPrimitiveFromOptionalDescriptor<T> = T extends '?' ? string : T extends -1 ? never : never;
|
|
75
|
+
export type TypeFromValidFormatForQuery<T> = T extends BasicTypeDescriptor ? QueryPrimitiveFromDescriptor<T> : T extends OptionalDescriptor ? QueryPrimitiveFromOptionalDescriptor<T> : T extends readonly (infer _U)[] ? never : T extends object ? {
|
|
76
|
+
[K in RequiredKeys<T>]: TypeFromValidFormatForQuery<T[K]>;
|
|
77
|
+
} & {
|
|
78
|
+
[K in OptionalKeys<T>]?: TypeFromValidFormatForQuery<T[K]>;
|
|
79
|
+
} : unknown;
|
|
68
80
|
export {};
|
|
69
81
|
//# sourceMappingURL=typeFromValidFormat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeFromValidFormat.d.ts","sourceRoot":"","sources":["../../src/utils/typeFromValidFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uBAAuB;AACvB,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,kBAAkB,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,GAC9B,WAAW,EAAE,CAAC;AAElB,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAG,GAAY,CAAC;AACpC,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAG,CAAC,CAAU,CAAC;AAEnC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GACzD,MAAM,GACN,CAAC,SAAS,iBAAiB,GACzB,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,OAAO,GACP,CAAC,SAAS,iBAAiB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC;AAEhB;;GAEG;AACH,KAAK,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACnD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,MAAM,GACN,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACnC;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC7C,CAAC,GAED,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,CAAC,GACD,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GAC9D,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,+BAA+B,CAAC,CAAC,CAAC,GAClC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5B,mBAAmB,CAAC,CAAC,CAAC,EAAE,GACxB,CAAC,SAAS,MAAM,GAEd,AADA,8BAA8B;AAC9B;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,GACD,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"typeFromValidFormat.d.ts","sourceRoot":"","sources":["../../src/utils/typeFromValidFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uBAAuB;AACvB,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,mBAAmB,GACnB,kBAAkB,GAClB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,GAC9B,WAAW,EAAE,CAAC;AAElB,kDAAkD;AAClD,eAAO,MAAM,OAAO,EAAG,GAAY,CAAC;AACpC,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAG,CAAC,CAAU,CAAC;AAEnC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GACzD,MAAM,GACN,CAAC,SAAS,iBAAiB,GACzB,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,OAAO,GACP,CAAC,SAAS,iBAAiB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC;AAEhB;;GAEG;AACH,KAAK,+BAA+B,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACnD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,MAAM,GACN,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACnC;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC7C,CAAC,GAED,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,CAAC,GACD,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GAC9D,uBAAuB,CAAC,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,+BAA+B,CAAC,CAAC,CAAC,GAClC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5B,mBAAmB,CAAC,CAAC,CAAC,EAAE,GACxB,CAAC,SAAS,MAAM,GAEd,AADA,8BAA8B;AAC9B;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KACrD,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,GACD,OAAO,CAAC;AAElB;;;;GAIG;AACH,KAAK,4BAA4B,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GAC9D,MAAM,GACN,CAAC,SAAS,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAClE,KAAK,GACL,KAAK,CAAC;AAEZ,KAAK,oCAAoC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GACxD,MAAM,GACN,CAAC,SAAS,CAAC,CAAC,GACV,KAAK,GACL,KAAK,CAAC;AAEZ,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,GACtE,4BAA4B,CAAC,CAAC,CAAC,GAC/B,CAAC,SAAS,kBAAkB,GAC1B,oCAAoC,CAAC,CAAC,CAAC,GACvC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAE7B,KAAK,GACL,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAC7D,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,GACD,OAAO,CAAC"}
|