reproto 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl
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.
- .git/COMMIT_EDITMSG +29 -1
- .git/index +0 -0
- .git/logs/HEAD +4 -0
- .git/logs/refs/heads/iyue +4 -0
- .git/logs/refs/remotes/gitlab/iyue +4 -0
- .git/logs/refs/remotes/origin/iyue +4 -0
- .git/objects/00/81a7e1ec3251cc192ed2b73d5be897593fb872 +0 -0
- .git/objects/00/885cebf557ff261574deb93cb96449d06db01c +0 -0
- .git/objects/02/33f5b60263e5dc6d041c0b223a0724eb650faa +0 -0
- .git/objects/03/3fab23ccc74b707a31f6f37dc5df42c100aac0 +0 -0
- .git/objects/07/557fbd1d149ce51af8e98e8ca8590757a89dfa +0 -0
- .git/objects/07/b71df33935c14ddf99e3480c04eca4685028bc +0 -0
- .git/objects/0b/e20ea749c6ae1075ae98f9426e00b0a4a235af +0 -0
- .git/objects/12/f9cc4ad0b4f0af4f7bae379f281b2cebe7cc7f +0 -0
- .git/objects/13/5f50fea51c72f977f48d06a7584aba0f61e260 +0 -0
- .git/objects/1b/97584ebada3e93d7a2cfa4a1aae0b79c414d20 +0 -0
- .git/objects/1b/f0c1ad9586578e8332d061f7648dcb041ec063 +0 -0
- .git/objects/1e/46816d16e7c9db7575f1964403c3daa105be5c +0 -0
- .git/objects/24/d78e796570a8572a03bc1dd26608a7cfb506f8 +2 -0
- .git/objects/27/24208ca2442e8ab9b453d0eb230fa41243b270 +0 -0
- .git/objects/2a/fe93d8bcbeab9e136d8b6766604c32b3610314 +0 -0
- .git/objects/2d/2b812ca27c477f9e1b2c2706a5eb795ffcf8eb +0 -0
- .git/objects/2d/8a0da260a710010ae62be134ac1cea6ceecfd1 +0 -0
- .git/objects/2d/e8ecbb5ab5de1a032bef3f4606ce5fa7c6c4e8 +0 -0
- .git/objects/30/9347e5681d80bd3c7949882e27090dd9070d16 +0 -0
- .git/objects/33/633c9df669ff8cf38638717937a54990814268 +0 -0
- .git/objects/39/993e3600bf4ab82aa361b738ee97a108787450 +0 -0
- .git/objects/3b/ab663710fd6b43d9372313fced9043c4cb07dd +0 -0
- .git/objects/3e/b3f1273caf6814dfa69325ccbd9fd1340cf20a +0 -0
- .git/objects/3f/b8830f516342a0ae1cb7c34b65016827cb9570 +4 -0
- .git/objects/41/f40c22247de377be99e30784229f3f128508a2 +0 -0
- .git/objects/45/fbc774dedb61c7c205ea732f59a8dca8d13555 +3 -0
- .git/objects/48/cb11e75518a53be14146018214110986fade67 +0 -0
- .git/objects/4f/c6dc41f9c0a1a8e0eedd3ba49c43d78d0dbaba +0 -0
- .git/objects/59/4c23f158ccbd0a4288f9ea046d06160195afbf +0 -0
- .git/objects/5b/d4d87753b79e9157817f0c2e6964a731052854 +0 -0
- .git/objects/60/5cb6fd6a9f8894ad4d43a9b8e4785c1b3b0e17 +1 -0
- .git/objects/60/f61a0ea50091eac8d344c86597375cbdfc2785 +0 -0
- .git/objects/63/ddda2a403efaab3f4c6597b3a73a7b1147adb5 +0 -0
- .git/objects/65/0189fe083bd711e45d463b229a72be619abad2 +0 -0
- .git/objects/66/663db35bfec8ef5f1a5b1c840fde1bb62a0eb8 +0 -0
- .git/objects/66/6c5c5fc30435228116fa08c9d821bebaaa8926 +0 -0
- .git/objects/7c/ef0adfb28fd774bc78061c6f088e1ef9b050f6 +0 -0
- .git/objects/7d/dc129188a10c68ab756ef2cacb292c76920403 +0 -0
- .git/objects/80/17038e0f7818a44a742f77c86f4f88ed768fcd +0 -0
- .git/objects/87/c7db6c91c17a2df84b56d30bd24a0f6b9dbdd9 +0 -0
- .git/objects/8a/0ed0ed8886fbc823e8d2258fa6d18699e94e25 +0 -0
- .git/objects/8d/d857b3d0ab3f5cd2e9173d532ef86e30df8eda +0 -0
- .git/objects/92/984cf67b2c25d435468a8218daa26ba0466054 +0 -0
- .git/objects/93/140b54b1fb9116ee214afee8abf2c72a232487 +0 -0
- .git/objects/93/68f2c32f83054ab072b7c9686d8baa0bad7f12 +4 -0
- .git/objects/9a/5ad062be9f6e001f4237a598a08981aba731e6 +0 -0
- .git/objects/9e/23448ac58f907d9d123c32bdccedbb3d6741b5 +0 -0
- .git/objects/a0/d192999af7e2cbfa6a9ccd04d720a04e5a06d5 +0 -0
- .git/objects/a1/655e0cb323c300562f97dcc67d5a446908c8ec +0 -0
- .git/objects/a5/38cc82cef7c49500d3522220f0f60a9ebc1ae6 +0 -0
- .git/objects/a9/41063a7ce89c353fa24378ec7c3f12f08f9df8 +0 -0
- .git/objects/a9/cc7923c34a4c97c5711d6309672f41d46c612a +0 -0
- .git/objects/ac/5c983d949d8c928bb022badf801e45e75e785e +0 -0
- .git/objects/af/c9cc15629847447063e86a82b8b56abb4fc08f +0 -0
- .git/objects/b0/82ca2c1b5a03edff25da3c2b2b573d049877e9 +0 -0
- .git/objects/b1/db1c131cf32916028342c0037ce8eb57a8eb26 +0 -0
- .git/objects/b2/8334b94392b8af397a05ed702690fa6c9ab1ca +0 -0
- .git/objects/b8/7c89dcfce9e244ff5ef6a4bd394de12e8c8092 +0 -0
- .git/objects/bc/e98bdb71c8681acb460195fdcbbe5d36290976 +0 -0
- .git/objects/c1/87d5e047eca86cfd8d444be2987aaa3f62c4d6 +0 -0
- .git/objects/c4/c2da96b0bb8db2acb0e6615cf340c7e51af26b +0 -0
- .git/objects/c5/13a96e7584636b20b12280c029750d5bc3da1e +0 -0
- .git/objects/c7/c34283697bd3cce07db53953eda25ee7cc371e +0 -0
- .git/objects/c9/d60d922a04b87587cd67b0abf9fe5a7b7b76cd +0 -0
- .git/objects/d2/69b1676dbf32f76a7c405d0b4ea6a70ac3a626 +0 -0
- .git/objects/d3/5a918b1d9125ad35d60e08b181323df3246f1a +0 -0
- .git/objects/d8/eaf86669fbfd10497570c1784db1ed2696b588 +0 -0
- .git/objects/d9/3bd435c8c7ad4efb83dff04d5450fabb9e3faf +0 -0
- .git/objects/d9/90e6d553577d37ebce8b28b3015ecbde038b42 +0 -0
- .git/objects/da/13cc15bcd8ee39c81f36dee7f179a569ecab0b +0 -0
- .git/objects/e3/27755808d88c7ae5c06c229cf18bd0519646df +0 -0
- .git/objects/e4/4c1d8a90207ac082d8ab7ff0db66708e2ebc31 +0 -0
- .git/objects/e5/83e7c40be934d16a1fa2e973487b395d930f42 +0 -0
- .git/objects/ed/1ae867d5e63195845afc58d88c38ecbdea97df +0 -0
- .git/objects/ef/f44e5099da27f7fb1ef14bb34902ccf4250b89 +0 -0
- .git/objects/f5/1be495b96272fa2e47f30071aed35ac1f0dd2c +0 -0
- .git/objects/f8/ed595d25bd9d500e765a792c513878f7ddb1f7 +0 -0
- .git/objects/fd/0bc07dc3c95e6168ab6d367d9eca139ac1e539 +0 -0
- .git/refs/heads/iyue +1 -1
- .git/refs/remotes/gitlab/iyue +1 -1
- .git/refs/remotes/origin/iyue +1 -1
- .gitignore +2 -1
- README.md +104 -190
- core/__init__.py +23 -0
- core/info_decoder.py +520 -10
- core/reconstructor.py +159 -21
- generation/__init__.py +17 -0
- generation/proto_generator.py +62 -16
- include/google/protobuf/any.proto +162 -0
- include/google/protobuf/api.proto +207 -0
- include/google/protobuf/compiler/plugin.proto +180 -0
- include/google/protobuf/cpp_features.proto +67 -0
- include/google/protobuf/descriptor.proto +1417 -0
- include/google/protobuf/duration.proto +115 -0
- include/google/protobuf/empty.proto +51 -0
- include/google/protobuf/field_mask.proto +245 -0
- include/google/protobuf/go_features.proto +80 -0
- include/google/protobuf/java_features.proto +130 -0
- include/google/protobuf/source_context.proto +48 -0
- include/google/protobuf/struct.proto +95 -0
- include/google/protobuf/timestamp.proto +144 -0
- include/google/protobuf/type.proto +193 -0
- include/google/protobuf/wrappers.proto +157 -0
- main.py +53 -56
- models/__init__.py +31 -24
- parsing/__init__.py +22 -0
- parsing/enum_parser.py +10 -2
- parsing/java_parser.py +302 -13
- pyproject.toml +1 -1
- reproto-0.1.3.dist-info/METADATA +209 -0
- {reproto-0.1.1.dist-info → reproto-0.1.3.dist-info}/RECORD +125 -31
- utils/__init__.py +40 -0
- utils/builtin_proto.py +269 -0
- utils/file_cache.py +8 -1
- utils/report_utils.py +71 -0
- utils/type_index.py +8 -1
- utils/type_utils.py +39 -6
- core/bytecode_parser.py +0 -274
- reproto-0.1.1.dist-info/METADATA +0 -295
- {reproto-0.1.1.dist-info → reproto-0.1.3.dist-info}/WHEEL +0 -0
- {reproto-0.1.1.dist-info → reproto-0.1.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,209 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: reproto
|
3
|
+
Version: 0.1.3
|
4
|
+
Summary: 一个强大的逆向工程工具, 能够从任何使用Google Protobuf Lite的Android应用中自动重构出完整的.proto文件结构.
|
5
|
+
License: Proprietary
|
6
|
+
Keywords: protobuf,reverse-engineering,android,jadx,proto
|
7
|
+
Author: iyue
|
8
|
+
Author-email: ys1231@126.com
|
9
|
+
Requires-Python: >=3.12,<4.0
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
11
|
+
Classifier: Intended Audience :: Developers
|
12
|
+
Classifier: License :: Other/Proprietary License
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
16
|
+
Classifier: Topic :: Software Development :: Code Generators
|
17
|
+
Classifier: Topic :: Software Development :: Disassemblers
|
18
|
+
Requires-Dist: loguru (>=0.7.3)
|
19
|
+
Project-URL: Homepage, https://github.com/ys1231/reproto
|
20
|
+
Project-URL: Repository, https://github.com/ys1231/reproto.git
|
21
|
+
Description-Content-Type: text/markdown
|
22
|
+
|
23
|
+
# Protobuf Reconstructor
|
24
|
+
|
25
|
+
🔧 **从JADX反编译的Java源码自动重构Protobuf .proto文件**
|
26
|
+
|
27
|
+
一个强大的逆向工程工具,能够从任何使用Google Protobuf Lite的Android应用中自动重构出完整的.proto文件结构。
|
28
|
+
|
29
|
+
## ✨ 特性
|
30
|
+
|
31
|
+
- 🎯 **精准解析**: 基于Google Protobuf Lite字节码的逆向工程
|
32
|
+
- 🔄 **递归依赖**: 自动发现和处理所有依赖的消息和枚举类型
|
33
|
+
- 📦 **完整支持**: 支持oneof、repeated、map、枚举等所有Protobuf特性
|
34
|
+
- 🌐 **通用性**: 适用于任何Android应用,无需硬编码映射
|
35
|
+
- 🧠 **智能推断**: 从Java源码直接读取类型信息,确保高准确性
|
36
|
+
- 📝 **标准输出**: 严格遵循Google Proto Style Guide
|
37
|
+
|
38
|
+
## 🛠️ 安装
|
39
|
+
|
40
|
+
### 方式一:拉取代码
|
41
|
+
```bash
|
42
|
+
# 克隆项目
|
43
|
+
git clone <repository_url>
|
44
|
+
cd reproto
|
45
|
+
|
46
|
+
# 安装依赖
|
47
|
+
pip install -r requirements.txt
|
48
|
+
```
|
49
|
+
|
50
|
+
### 方式二:pip安装
|
51
|
+
```bash
|
52
|
+
# 从本地构建安装
|
53
|
+
pip install .
|
54
|
+
|
55
|
+
# 在线安装
|
56
|
+
pip install reproto
|
57
|
+
```
|
58
|
+
|
59
|
+
## 📖 使用
|
60
|
+
|
61
|
+
### 命令行使用
|
62
|
+
```bash
|
63
|
+
# 基本用法 python main.py or 命令 reproto
|
64
|
+
reproto <java_sources_dir> <root_class> <output_dir> [--verbose]
|
65
|
+
|
66
|
+
# 示例:重构普通类
|
67
|
+
reproto ./out_jadx/sources com.example.messaging.v1.models.MessageData ./protos_generated
|
68
|
+
|
69
|
+
# 示例:重构内部类(注意:包含$的类名需要用单引号包裹)
|
70
|
+
reproto ./out_jadx/sources 'com.example.account.v1.Models$Onboarded' ./output
|
71
|
+
|
72
|
+
# 详细输出
|
73
|
+
reproto ./out_jadx/sources com.example.Model ./output --verbose
|
74
|
+
```
|
75
|
+
|
76
|
+
### 代码使用
|
77
|
+
```python
|
78
|
+
# 作为包使用
|
79
|
+
from core import ProtoReconstructor
|
80
|
+
from utils.logger import setup_logger
|
81
|
+
from pathlib import Path
|
82
|
+
|
83
|
+
# 初始化
|
84
|
+
setup_logger("./logs")
|
85
|
+
sources_dir = Path("./out_jadx/sources")
|
86
|
+
output_dir = Path("./protos_generated")
|
87
|
+
|
88
|
+
# 创建重构器并执行
|
89
|
+
reconstructor = ProtoReconstructor(sources_dir, output_dir)
|
90
|
+
results = reconstructor.reconstruct_from_root("com.example.Model")
|
91
|
+
|
92
|
+
# 查看结果
|
93
|
+
for class_name, definition in results.items():
|
94
|
+
print(f"生成: {class_name} -> {definition.proto_filename}")
|
95
|
+
```
|
96
|
+
|
97
|
+
### 参数说明
|
98
|
+
- `java_sources_dir`: JADX反编译的Java源码目录路径
|
99
|
+
- `root_class`: 要重构的根类完整类名
|
100
|
+
- `output_dir`: 生成的proto文件输出目录路径
|
101
|
+
- `--verbose`: 显示详细处理信息
|
102
|
+
|
103
|
+
## ⚠️ 注意事项
|
104
|
+
|
105
|
+
### 重要提醒
|
106
|
+
- **内部类命名**: 包含`$`符号的类名(如内部类)必须用**单引号包裹**
|
107
|
+
```bash
|
108
|
+
# ✅ 正确
|
109
|
+
reproto ./sources 'com.example.Outer$Inner' ./output
|
110
|
+
|
111
|
+
# ❌ 错误
|
112
|
+
reproto ./sources com.example.Outer$Inner ./output
|
113
|
+
```
|
114
|
+
|
115
|
+
### 使用建议
|
116
|
+
1. **JADX反编译**: 先使用JADX反编译APK文件
|
117
|
+
```bash
|
118
|
+
jadx -d out_jadx app.apk
|
119
|
+
```
|
120
|
+
|
121
|
+
2. **类名查找**: 在JADX GUI中找到目标Protobuf类的完整类名
|
122
|
+
|
123
|
+
3. **输出目录**: 确保输出目录有写入权限
|
124
|
+
|
125
|
+
4. **日志查看**: 使用`--verbose`参数查看详细处理过程
|
126
|
+
|
127
|
+
## 📊 输出示例
|
128
|
+
|
129
|
+
### 输入:Java源码
|
130
|
+
```java
|
131
|
+
public final class SearchResult extends GeneratedMessageLite {
|
132
|
+
private MapFieldLite<String, Contact> contacts_;
|
133
|
+
private Internal.ProtobufList<String> phoneNumbers_;
|
134
|
+
|
135
|
+
public static final int CONTACTS_FIELD_NUMBER = 1;
|
136
|
+
public static final int PHONE_NUMBERS_FIELD_NUMBER = 2;
|
137
|
+
}
|
138
|
+
```
|
139
|
+
|
140
|
+
### 输出:Proto文件
|
141
|
+
```protobuf
|
142
|
+
syntax = "proto3";
|
143
|
+
|
144
|
+
package com.example.search.v1.models;
|
145
|
+
|
146
|
+
option java_package = "com.example.search.v1.models";
|
147
|
+
option java_multiple_files = true;
|
148
|
+
|
149
|
+
message SearchResult {
|
150
|
+
map<string, Contact> contacts = 1;
|
151
|
+
repeated string phone_numbers = 2;
|
152
|
+
}
|
153
|
+
```
|
154
|
+
|
155
|
+
## 🛠️ 支持的特性
|
156
|
+
|
157
|
+
### Protobuf类型支持
|
158
|
+
- ✅ 基础类型:`string`, `int32`, `int64`, `bool`, `float`, `double`
|
159
|
+
- ✅ 消息类型:嵌套消息和引用消息
|
160
|
+
- ✅ 枚举类型:完整的枚举值解析
|
161
|
+
- ✅ 重复字段:`repeated` 类型
|
162
|
+
- ✅ 映射字段:`map<key, value>` 类型
|
163
|
+
- ✅ Oneof字段:互斥字段组
|
164
|
+
- ✅ Google Well-Known Types
|
165
|
+
|
166
|
+
### 特殊Java类型
|
167
|
+
- `MapFieldLite<K, V>` → `map<K, V>`
|
168
|
+
- `Internal.ProtobufList<T>` → `repeated T`
|
169
|
+
- `Internal.IntList` → `repeated enum` (枚举列表)
|
170
|
+
|
171
|
+
## 📁 项目结构
|
172
|
+
|
173
|
+
```
|
174
|
+
reproto/
|
175
|
+
├── main.py # 主程序入口
|
176
|
+
├── core/ # 核心组件
|
177
|
+
│ ├── reconstructor.py # 主协调器
|
178
|
+
│ └── info_decoder.py # 字节码解码器
|
179
|
+
├── parsing/ # 解析模块
|
180
|
+
│ ├── java_parser.py # Java文件解析器
|
181
|
+
│ └── enum_parser.py # 枚举解析器
|
182
|
+
├── generation/ # 生成模块
|
183
|
+
│ └── proto_generator.py # Proto文件生成器
|
184
|
+
├── models/ # 数据模型
|
185
|
+
│ └── message_definition.py # 消息和枚举定义
|
186
|
+
├── utils/ # 工具函数
|
187
|
+
│ ├── logger.py # 日志系统
|
188
|
+
│ ├── file_cache.py # 文件缓存系统
|
189
|
+
│ ├── type_utils.py # 类型处理工具
|
190
|
+
│ └── report_utils.py # 结果统计工具
|
191
|
+
└── include/ # Google Protobuf标准文件
|
192
|
+
└── google/protobuf/ # Well-Known Types
|
193
|
+
```
|
194
|
+
|
195
|
+
## 🔧 开发
|
196
|
+
|
197
|
+
```bash
|
198
|
+
# 使用Poetry管理依赖
|
199
|
+
poetry install
|
200
|
+
poetry shell
|
201
|
+
|
202
|
+
# 运行测试
|
203
|
+
reproto ../out_jadx/sources com.example.TestClass ../test_output --verbose
|
204
|
+
```
|
205
|
+
|
206
|
+
---
|
207
|
+
|
208
|
+
**🚀 立即开始重构你的Protobuf文件!**
|
209
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
.git/COMMIT_EDITMSG,sha256=
|
1
|
+
.git/COMMIT_EDITMSG,sha256=EwGSPDXcG7NYrPVVf9yXMFd9roBbDcpRt9JIhQTqlhw,982
|
2
2
|
.git/FETCH_HEAD,sha256=1W_vttZCTHf9DXnCOhWjilD3kVx9WT2Xu85YBetV3ok,191
|
3
3
|
.git/HEAD,sha256=ly8yuQLWQE8njkYAapHLPJ1xVg6_fMgQjCoHqKvFIdw,21
|
4
4
|
.git/config,sha256=9ZAySfDWBdI-K9eOXyrEQOhiX68AiaP0Z4CLzH07H10,399
|
@@ -17,52 +17,88 @@
|
|
17
17
|
.git/hooks/push-to-checkout.sample,sha256=pT0HQXmLKHxt16-mSu5HPzBeZdP0lGO7nXQI7DsSv18,2783
|
18
18
|
.git/hooks/sendemail-validate.sample,sha256=ROv8kj3FRmvACWAvDs8Ge5xlRZq_6IaN3Em3jmztepI,2308
|
19
19
|
.git/hooks/update.sample,sha256=jV8vqD4QPPCLV-qmdSHfkZT0XL28s32lKtWGCXoU0QY,3650
|
20
|
-
.git/index,sha256=
|
20
|
+
.git/index,sha256=duwg4sdUR_alJ5nxmVjRRMxG428rf-bBytr9LNrO1_0,4051
|
21
21
|
.git/info/exclude,sha256=ZnH-g7egfIky7okWTR8nk7IxgFjri5jcXAbuClo7DsE,240
|
22
|
-
.git/logs/HEAD,sha256=
|
23
|
-
.git/logs/refs/heads/iyue,sha256=
|
24
|
-
.git/logs/refs/remotes/gitlab/iyue,sha256=
|
22
|
+
.git/logs/HEAD,sha256=xSZx97kdcyJM7yzEX-YE16uicQjg_g7zN92fe7pgDXw,3237
|
23
|
+
.git/logs/refs/heads/iyue,sha256=xSZx97kdcyJM7yzEX-YE16uicQjg_g7zN92fe7pgDXw,3237
|
24
|
+
.git/logs/refs/remotes/gitlab/iyue,sha256=Iic8I88_Gr5u6r4Y_zbsnmidUOKFz43p3HdDu5Lo74k,2312
|
25
25
|
.git/logs/refs/remotes/origin/HEAD,sha256=4vCPTgC0N80jhmkFXNUlYvHtGllYJkQTGZEn6LlqZgs,163
|
26
|
-
.git/logs/refs/remotes/origin/iyue,sha256=
|
26
|
+
.git/logs/refs/remotes/origin/iyue,sha256=GbAv5EUPHJKfS6YHcslLUSKoV6gFzBx2jv5HHppCxfM,2312
|
27
|
+
.git/objects/00/81a7e1ec3251cc192ed2b73d5be897593fb872,sha256=qvjEp_xD7FT8C2qIxFzoHETfgdG_Ilj-ZKMURK0woik,2268
|
28
|
+
.git/objects/00/885cebf557ff261574deb93cb96449d06db01c,sha256=AFzclJZweg-CmVNt99YI3Ho9dqghj1vsZrPI4Jy9mkI,288
|
29
|
+
.git/objects/02/33f5b60263e5dc6d041c0b223a0724eb650faa,sha256=M92vMZ87NltwEsn7mZuk87PtBP687n4-ET0qrPtk7Tg,507
|
30
|
+
.git/objects/03/3fab23ccc74b707a31f6f37dc5df42c100aac0,sha256=QeXQ9x_0kJVZzjaA6G8MSPxwkIdZxg3bQpOt3gPmUio,3536
|
31
|
+
.git/objects/07/557fbd1d149ce51af8e98e8ca8590757a89dfa,sha256=JWG_MmB15Ez0qpSsbn7QUORFRbzUVxt7KpR7tlikJsQ,2257
|
32
|
+
.git/objects/07/b71df33935c14ddf99e3480c04eca4685028bc,sha256=jk2YdZfFLF0_L6dtC5g3NXzhkuPzW8x5n5F2pD-Ih4s,1032
|
27
33
|
.git/objects/09/a92517fe9eeb33d2fd7c979e01d163665f7abc,sha256=wyFL5jJ16f0xCpL1MB5EiJvs2opieE0hMEmyDpUV3ps,9356
|
34
|
+
.git/objects/0b/e20ea749c6ae1075ae98f9426e00b0a4a235af,sha256=oRIrMdIqLj8tPUctDVp0A3INeadtii7UAn40HVOJQDY,19177
|
28
35
|
.git/objects/0c/7b11b535a18f311aedadbe91e14fc9fe6b50d9,sha256=1nmf96foQAXQrObKn9gOPugLMlpj7soMif1MBARmKd8,427
|
36
|
+
.git/objects/12/f9cc4ad0b4f0af4f7bae379f281b2cebe7cc7f,sha256=eA2WMZnt5zYXRw6O8u_slLMZxbwvOoOR9EAX8I2iDM0,168
|
37
|
+
.git/objects/13/5f50fea51c72f977f48d06a7584aba0f61e260,sha256=ecYtHQ_j-MSBN5YdAbHdDdfuJB4WJudHggEe9zUA0FY,1239
|
29
38
|
.git/objects/14/d323d58fb90c209a730c17e23fd82a6c735fc1,sha256=rTCuhPM5LYusLIMDv7CLC557SlRFvvbBzgr4jwrjMVg,426
|
30
39
|
.git/objects/15/eb3f02479e633439ec83c143e703f8448043a1,sha256=duJXtvq_NNhYKG7WdejXgoMlyHIaCUG5jv9SJpU_orc,14711
|
31
40
|
.git/objects/18/89a4fb55eb3abdc528ce87f0cea039278c06fd,sha256=Uz8TPtDNnPWR5pfsIx7tMDCDFBdWLIkaPcnYPIJ12oM,2880
|
32
41
|
.git/objects/1a/4435c23bdf5543e3270aa69361c9c68f205efb,sha256=iNhiztqM2EYiQYjGpjBWg9h0l6YNbQHYafclGl1DB5I,96
|
42
|
+
.git/objects/1b/97584ebada3e93d7a2cfa4a1aae0b79c414d20,sha256=iW2wr9kcCBpIXh_0s-7WifsBkzO4TLRB2X78Sw-2dqE,166
|
43
|
+
.git/objects/1b/f0c1ad9586578e8332d061f7648dcb041ec063,sha256=9xYaVwWrVnbs7fSO_yO6YTbAQ3aMkJXp97uQ6tX99cE,1767
|
44
|
+
.git/objects/1e/46816d16e7c9db7575f1964403c3daa105be5c,sha256=Wqo7uWsh11BefjHvh2CEqowaA6zmNR-TcvNJv6WYjr4,459
|
33
45
|
.git/objects/20/cf56ec106bcd66420dd000279f983571b918b6,sha256=0dwZwG7CpR7yYYNvgYDxHLPj2P7eRLK7fTW_En419pk,166
|
34
46
|
.git/objects/21/55b64d52922c88527c102d62f23e5c2abbae79,sha256=6LLW2HrSfqqVwvO59yc-EcUp6MHw6zfHwu8TB775dII,13853
|
35
47
|
.git/objects/23/bfbca38e177bcbb423dd782c35b19d127a5ab0,sha256=hYW2b3t3bVGNh4pqyyA7DMlyF4LfNZco5NwedWMwwuI,3700
|
48
|
+
.git/objects/24/d78e796570a8572a03bc1dd26608a7cfb506f8,sha256=V9cd-XeITtK7Mq7ecpJpWGpi23_5Ny-qnsY4jRHWdDQ,606
|
36
49
|
.git/objects/26/1f67f3b731b32f6d77de9dd7be2d61e2a14ace,sha256=mcasCBpCulVy2N-X_d2hg8567PdhZRof4ea5nYoelJM,96
|
50
|
+
.git/objects/27/24208ca2442e8ab9b453d0eb230fa41243b270,sha256=3nPNI4PWt3CdzVHzOVuTD522nSv9SS1T2U1kPBBt40I,50
|
37
51
|
.git/objects/29/4708b82b343e04e7a6685f5cd1287f3d17f7a9,sha256=YE3F4zucGeMHEw7bTEvQc0uJEUUCfEgw-mZTWupuNhA,96
|
52
|
+
.git/objects/2a/fe93d8bcbeab9e136d8b6766604c32b3610314,sha256=rG2er-EGko6WdUiYq106KxXwc-kQDXj8FAqt931D3nw,459
|
38
53
|
.git/objects/2b/64656ce2df6259c822733b03f26eb828fe9269,sha256=62hS2mVKecw3uXd8yGs7djzHNeouyhbP6KhR1gGYosg,166
|
39
54
|
.git/objects/2c/fcddd7eebeb4eee0562dc384a79366bc7b04bb,sha256=FHxE2giqoo-1IB9Q8i_XQUypGvQbRlRnTK0sbsNDcJE,96
|
55
|
+
.git/objects/2d/2b812ca27c477f9e1b2c2706a5eb795ffcf8eb,sha256=hATm5xxgdr9nhfzRX98_KBaPYdY9BbWNuTmJO7__Oxk,5518
|
56
|
+
.git/objects/2d/8a0da260a710010ae62be134ac1cea6ceecfd1,sha256=4F5UqKkv_Lg1gt2nwo6_WklFZxldCeEGbmwpSOSVvrs,122
|
40
57
|
.git/objects/2d/a515dbb88d31400d5b84d41caf270e9309232d,sha256=cP9jUGnu5pVr9ks-YJZSEjsgb7GKD2XEr8XvQosqs2s,122
|
58
|
+
.git/objects/2d/e8ecbb5ab5de1a032bef3f4606ce5fa7c6c4e8,sha256=TB1KNq7_JLKvNuYVyzJDi0sD8jvM3mmFqy4exWpiQxs,780
|
41
59
|
.git/objects/2e/2c1c42f5ac5d665cc672d3792078b756d9ab0e,sha256=5LG3jHGORJeswNw0lz5dc6QSsxztyMstbRDADhZDnZY,166
|
60
|
+
.git/objects/30/9347e5681d80bd3c7949882e27090dd9070d16,sha256=8MrOQUbawLupyywR0LMr9ldryJuFnShbWE11kaI9Qsw,97
|
42
61
|
.git/objects/33/181441ab38eded005db356da89b54c7d29f452,sha256=iIM6a2aGs_TGZjxHKnkYYyZj_hA77nAF7r2lMOtN1VA,2021
|
43
62
|
.git/objects/33/52dfa8f5d9eb46cc98ea7ccecf02e4d9df95f7,sha256=KNAvQNdSalt8CxCZVVb8e6KBC4zqVtusT5MriFLPbIQ,4409
|
63
|
+
.git/objects/33/633c9df669ff8cf38638717937a54990814268,sha256=T-g8iQIgxPSszRTJtvY9SLL6b6PPTLFwI99ZRIxuODY,252
|
44
64
|
.git/objects/34/192f0df5f5b694c881d086019eda349608d222,sha256=zcWIY4oDFz6n17MRjbwFrN1o-HEY0--gqK96dohmZfE,4901
|
45
65
|
.git/objects/35/8bace20b731ff1bbb256d2a0158dfc84720978,sha256=hEPGT0bRzT1GlXErWRWJ7ogflTWj3SutlHRKCBH1TII,426
|
46
66
|
.git/objects/38/907894973091f8e9b224a13fe596e1cb309cf5,sha256=XBdeTonV9fezxtk3kzI6DmEPb3WftSPaIWT30MKKw1E,802
|
67
|
+
.git/objects/39/993e3600bf4ab82aa361b738ee97a108787450,sha256=-hGYJt8FRCO90QesR_7HwxAo5gqkNWXOyOlKyVuctxc,17191
|
68
|
+
.git/objects/3b/ab663710fd6b43d9372313fced9043c4cb07dd,sha256=C2MsAjEcFMNDimrinw_yA4EvTmYGRkHkoTHOCv4dhf8,5608
|
47
69
|
.git/objects/3c/6f0120229cc2cd8123efbeb7f186eb0a485f29,sha256=iyh7Xt-m7vou3slm58k8xSl3Cn2yYXTuv5WziSWHrW0,802
|
48
70
|
.git/objects/3c/c3ca375694d43e35cdc88d4a5d067e510df427,sha256=A79FHqMtws8sYqMG9CmHWbEPaxF8htYc_E2wVuMi2u4,6570
|
49
71
|
.git/objects/3d/3cc6aab4eefed46c77dda27503bebcce88962c,sha256=6NOdtY3stGMa7_trzPhvb2T21Ng0WqFIJhkPhsW-ACU,420
|
72
|
+
.git/objects/3e/b3f1273caf6814dfa69325ccbd9fd1340cf20a,sha256=kBQ8krCCjNFnKOXS4OPkX60C7wQdUWtNJB1zs-LrPVc,2656
|
50
73
|
.git/objects/3e/d953d5ed2c66722045f5e39d068696a0853b4f,sha256=GelU4l-EVo8Y5rXSksIEnewIasEr9N54pTJcgrY3VVk,166
|
74
|
+
.git/objects/3f/b8830f516342a0ae1cb7c34b65016827cb9570,sha256=j36c6Wtp0Lp9HVP1xvV-2c25opLFzd3kzuxRHirgb9Y,803
|
51
75
|
.git/objects/40/84f4567d983a977c49598b7d886e46b13ff50b,sha256=R3w6EvxpJRcVuJvbCslrGDK07kcOjECGGosj5tO-JBo,426
|
76
|
+
.git/objects/41/f40c22247de377be99e30784229f3f128508a2,sha256=3k-QVtbIvbMHt2cHrPJ0oh4TckwD6Pux6_v5J-EJhvY,2189
|
52
77
|
.git/objects/44/4af3a0d68ba81976f67c7b638c9b0db4640709,sha256=s__MvPzT4Ndsip8kgkfMh-Y0oZ28tv2kVqaz_ExQKvU,166
|
78
|
+
.git/objects/45/fbc774dedb61c7c205ea732f59a8dca8d13555,sha256=4AN9Jlc9SttC8DK9ADUjw9wTEYnASrz4HubQCpVgXVc,417
|
53
79
|
.git/objects/48/369b05749e384be9be58e5f943f3a0040d0f37,sha256=KP9dXx-XniZuIEXESlrL_MWWi55zGiFr7xtmp3oD67o,8551
|
80
|
+
.git/objects/48/cb11e75518a53be14146018214110986fade67,sha256=08B_QIXJL2_dGh_r-GmudDgLAmT-Bia0eRYyIbOKvFw,2562
|
54
81
|
.git/objects/4b/43f5f577e1cdc35f8e06d178d8f5c892034061,sha256=eawBjiWutNeKjIzvNonVMMKUVsz_-jn3Uew_NsKQJ-I,1150
|
55
82
|
.git/objects/4b/442fccf86631bf5196ee5b48ab8d58228ab59c,sha256=5LFRUcM6cV7lW29hge4-op6hYtbn5SZ6Ouz_4tW6k8w,4842
|
56
83
|
.git/objects/4c/16984be6ef7b24d01604821e9728cb579acd69,sha256=sy5h3rBsk0JcPlpA7L0WhJESaYjNZnTvrB1F1CRPSJQ,167
|
57
84
|
.git/objects/4d/6d457bfabc4af842e5ddc2d56eb059d5dfdc9d,sha256=HLQ8aGvln8ZuhdINhhbr_aTt2BttkJOY8k6LhciAMLE,672
|
85
|
+
.git/objects/4f/c6dc41f9c0a1a8e0eedd3ba49c43d78d0dbaba,sha256=VpE09gk2-91HvTU-HX-eYwdTUVgUxwQn5YtroMt08Uo,1675
|
58
86
|
.git/objects/55/6723fdd4f525eed41c52fa80defca3f0c81c47,sha256=vwGNz5lxU_wrrRWVPU64TccYo4Vo4uUGC3-GwVIs1xs,4520
|
59
87
|
.git/objects/56/79064a3138031d3a92d60aa629b82009fd0d1d,sha256=4pQvc0ulzTZ9RQEVr5yy37dV-uhP1VU58UyKcCugHHw,426
|
60
88
|
.git/objects/58/0d8f872aa869e42ba608f64888b1349f8b3ff4,sha256=sag83Y6gsy8I31WmM2lVeBM-AYKgo5su3H97fuDOj14,13984
|
89
|
+
.git/objects/59/4c23f158ccbd0a4288f9ea046d06160195afbf,sha256=exJLnFGpuGY_PAAr3VIy6Ez0fLQ4DdDTL8wMqImKh8Y,1160
|
61
90
|
.git/objects/5a/11f9d70791e06a0570e01d3dcbbae39cde55db,sha256=wjd8hb5D03icknLFsPqMas6xAFfG30_Wg-PJJH03ezg,13722
|
91
|
+
.git/objects/5b/d4d87753b79e9157817f0c2e6964a731052854,sha256=PK8JbTxqE1VLYE1hCBt6rPI6nSmJKnVnVYbpo42DftU,57
|
62
92
|
.git/objects/5c/715dcb05e32db7a7a3b030f07524bdd8a56849,sha256=wLXhy_1PP8n3Gd6NsvY1eFlK1pjkIjW35im_BD-0yMU,426
|
63
93
|
.git/objects/5d/e2e9d536c2c0b78e8f9b3b61daa531a55332dc,sha256=Wiyz9xFF5A95FEnxZULmV9TSJf0-erTb_qIhLFIvmag,6558
|
64
94
|
.git/objects/5e/9daac72a48ce60688ab2eeddcc3d9152329e20,sha256=7sVW8qTIBHufxZ3WCnNwmX33RpciuLTPritqr84UmKk,426
|
95
|
+
.git/objects/60/5cb6fd6a9f8894ad4d43a9b8e4785c1b3b0e17,sha256=zmGY1G58wmmZq2KD_Bu3Sy4-9iKKFiYMK52xOHbYfA0,343
|
96
|
+
.git/objects/60/f61a0ea50091eac8d344c86597375cbdfc2785,sha256=q08wTKfTUrWaDDDEIiQMxG0rfLK5LyogjwXQTQ88QQI,1986
|
97
|
+
.git/objects/63/ddda2a403efaab3f4c6597b3a73a7b1147adb5,sha256=r4ZyBKnna37wrE8JwnYWK84WB1OVsnXGU3N8vGnP5mg,18987
|
98
|
+
.git/objects/65/0189fe083bd711e45d463b229a72be619abad2,sha256=A_rjGnyEfF5LPXsd1JWYWya49pffPhLzU4Gkg7p9Fcs,506
|
65
99
|
.git/objects/65/a4f0ada7519f8b1e6a7c7e287541b8effde9fd,sha256=jSGkVjAMcm2nrF6w_0U7lmzoBgwIJaf4P8POOlABxEQ,188
|
100
|
+
.git/objects/66/663db35bfec8ef5f1a5b1c840fde1bb62a0eb8,sha256=5xcSNodjk8EYRqTQHZIX7-0mG35aBsCzOkiqK2sIzRc,252
|
101
|
+
.git/objects/66/6c5c5fc30435228116fa08c9d821bebaaa8926,sha256=dym8X8VQl5GHh61t4umiy4z0oA_ATiKybPr4jIRjJk4,1165
|
66
102
|
.git/objects/66/7291e131d4769e7d028346a0cc7a0c05d500e5,sha256=3D6kzCQW7DkYuwARYA74Tlfzeaiaob9ux4YE6hYohas,4026
|
67
103
|
.git/objects/67/f27f77274917580e687fd00ca18da0660215c1,sha256=dxM9_T9v3VBrSXF3dbH6zsmbGQJn43-_DnHiDYs8108,15542
|
68
104
|
.git/objects/67/f54a4a3ede6749acc7c718ad97a86634215b5e,sha256=n0_tiP-u_DP9uhXCryaz98mNJYcUX8RYiS48FvxIxCA,744
|
@@ -71,83 +107,141 @@
|
|
71
107
|
.git/objects/76/311aa8e59d780763e0d66787067cc5d9613a67,sha256=J9Xy8ESXbWUbC_4sA0KumGVKm09tzlqA8C5oJ63a_b4,2167
|
72
108
|
.git/objects/78/3e7e252c20e73e33615c703174766036546ff6,sha256=cQ-PXyvzEYjb2Lr24anO9aGui5IxBxZCYXL6zZRc0xc,810
|
73
109
|
.git/objects/7c/00eec7ae9ef5f94fc337e5c8f9793a2a48810d,sha256=Ju-Yuy5EARcIThU4vkHrZuHQWu3MjXSZYGtBDTWR18c,96
|
110
|
+
.git/objects/7c/ef0adfb28fd774bc78061c6f088e1ef9b050f6,sha256=d9SniNMBerFoLZP7nlahqG6nPtrR6YVMjSSiJm5RRXs,2887
|
111
|
+
.git/objects/7d/dc129188a10c68ab756ef2cacb292c76920403,sha256=7jgXb9blUSWiQVPh8rpVxhpRQg9RyQS3zUSC1n7oGbY,17336
|
74
112
|
.git/objects/7e/5935774ee7a85f2523427c9100f9c578ac172f,sha256=ywEI3w5JgIOgFDJ6cxc6NJnLfEr2Cjynke78KmwJhSE,165
|
113
|
+
.git/objects/80/17038e0f7818a44a742f77c86f4f88ed768fcd,sha256=ZCTiAwFMKB3R7tU1zMGM-WZNU3Fy_DeAM2r-ukPIwdQ,284
|
114
|
+
.git/objects/87/c7db6c91c17a2df84b56d30bd24a0f6b9dbdd9,sha256=073he9D2S-4EPQh6cBs0Xm2dEOxPTwZrGstzcSkJGCE,3897
|
115
|
+
.git/objects/8a/0ed0ed8886fbc823e8d2258fa6d18699e94e25,sha256=VpidpA9wUduTJVrffzMKo4KL6HAhkBBxZEaNdGX9Ejw,122
|
75
116
|
.git/objects/8c/809c42c7ae13007fd885ee7bcffae7acf2c520,sha256=HYoU3_cZUGur3rWrgRvzHRAv0JfrXgc34R8UeGbC5Bc,14180
|
76
117
|
.git/objects/8d/44142ae2d6dbb59d4ebed8587bccd051e5766b,sha256=l1G5ZzQBQW8Lxd3WvGLRcY6quM6dBL4zdNT5ovjv3Dc,802
|
77
118
|
.git/objects/8d/4a5767bef0c342f1660526f9671c0944922c40,sha256=kP0nfEnyNmuEJ4wLQabhPPx60OIa5Dxqn7R9Ni89CqY,1900
|
119
|
+
.git/objects/8d/d857b3d0ab3f5cd2e9173d532ef86e30df8eda,sha256=dTFdFA8EPaLpDuJ4X-hfXjbwiAfKBY-EvFJ77H2mRxY,18883
|
120
|
+
.git/objects/92/984cf67b2c25d435468a8218daa26ba0466054,sha256=EyDEXseNoUivqR25-icLPWkaKt2pimwOucf7u4TyAIw,130
|
78
121
|
.git/objects/92/c6018b4fb8e3b6c2f3f3054a56f2bfaca27470,sha256=Oox2busLjPpkXw6To9NfgDMXHuknlICbhyhyTWUT1lU,96
|
122
|
+
.git/objects/93/140b54b1fb9116ee214afee8abf2c72a232487,sha256=7VYYZiscg3mWnC4xmuQViLHakgctCXCTAonqA_76BAw,283
|
123
|
+
.git/objects/93/68f2c32f83054ab072b7c9686d8baa0bad7f12,sha256=GEtc_eOpbXXtFY1zj1dOlStEULevK-Lxr8O7PhjbvOg,431
|
79
124
|
.git/objects/94/ce01b61b90d1fb21d2d339fbeb22e821b6f413,sha256=oSSA97T7TGnstzHDjUrdwzwZO4d1qIUyjo6lz_EbNbM,122
|
80
125
|
.git/objects/95/295a15779ebefd563ec777c3d3cced7e8d0209,sha256=IIN8_K0K-3LAkUI4Ra3DS8yUsfpsqteSDGhgvRpSfZ4,426
|
81
126
|
.git/objects/97/56fe0931216a7c40cbf250e1ab8a6dfd589f13,sha256=Su7Q-bXO0K9QKEGC249NVuUS62xmQs5TgWfEmdbauaI,97
|
82
127
|
.git/objects/97/71dd4958faa94d3db229c129f6af35b508905a,sha256=Tc_ZkUqvJ4rk0QG5Bvwkp4DkMM9DlsmjdMIyDaO1S2k,756
|
128
|
+
.git/objects/9a/5ad062be9f6e001f4237a598a08981aba731e6,sha256=K1HnCs6nMYhqr8xsnBRqv6rRibDz4wPp8CoMT00hGOc,381
|
83
129
|
.git/objects/9a/e313cdf64cd82416c1238eb493e6396f799f12,sha256=9bPRhebwMVqtGqJUxfVq-TEUxceuOdSvicWe1H8F7Ks,876
|
130
|
+
.git/objects/9e/23448ac58f907d9d123c32bdccedbb3d6741b5,sha256=iqH9u5FAMzeSJ8QgFQnE1D2jPxIWx7b66Vd0RrqetvI,96
|
84
131
|
.git/objects/9e/9978522bc8ca79133d7c11ef8ca3fe3c7eed0a,sha256=FkHx7Pp6DCZ5e4bRo2RjRU875YBgl9tEw7Z_9Rii8cE,13109
|
85
132
|
.git/objects/9f/b57064e0c53ed80af8507acaab718a1e80184e,sha256=DGx0Ie-bppvghrmiV5w7mn24c6YlvHvYLIQsm-_jzsQ,635
|
133
|
+
.git/objects/a0/d192999af7e2cbfa6a9ccd04d720a04e5a06d5,sha256=Zd6l-w5TxqsdgCZqkDz_pr9BWPJGb5bmbDrFlMl2Qx8,882
|
86
134
|
.git/objects/a0/d630c3f6024b196d4ee933ab13a32905efdaaa,sha256=nNyB1T2FVU2vm3f-aAjEl-vBLbxYsKHibRIPhqCX9jQ,426
|
135
|
+
.git/objects/a1/655e0cb323c300562f97dcc67d5a446908c8ec,sha256=_b3Xk8IbERvYune9G8gOgOxFqc2o33xxzzAB_bZNIWM,806
|
87
136
|
.git/objects/a3/cedc28e563a1845a7860161b39b0fe58d5f0d3,sha256=Vee0H8dhSj4ERNDSAnRU6vebs0tbY1-lgYr1Nz5X7bc,122
|
137
|
+
.git/objects/a5/38cc82cef7c49500d3522220f0f60a9ebc1ae6,sha256=hgFU3fWeozpZCBrngHHTeUYH3C6lqKBSSz15-OuI_jM,9716
|
88
138
|
.git/objects/a5/b7e4e1b63bfb65288f6553687aaabcfb4d51b1,sha256=9tl9xb48EdvQk9GIg6mEzXSwqUgD6yEVZx-sVxaQVKw,1064
|
139
|
+
.git/objects/a9/41063a7ce89c353fa24378ec7c3f12f08f9df8,sha256=j-hYLtVwUhhYEY4BLe7J6m51GlpKdbZWUgKJwsEUt1M,389
|
140
|
+
.git/objects/a9/cc7923c34a4c97c5711d6309672f41d46c612a,sha256=NvxVg0v7oBl27tQ8feThD45Gw97gZ6ZbbqVUZbp3CYQ,1041
|
141
|
+
.git/objects/ac/5c983d949d8c928bb022badf801e45e75e785e,sha256=eji1dZ5VSnUSuD_KuyL2kD5ZqVTmxl6QzKh37HhFhPI,1068
|
89
142
|
.git/objects/ae/046e08176523e8a98dc7294436319f724db13c,sha256=9hdXV7BKRhfFTOz3FSuoYwGrcjvk2uTPo3CD1czuKcU,803
|
143
|
+
.git/objects/af/c9cc15629847447063e86a82b8b56abb4fc08f,sha256=dzjzk6kncEmUtMbBEhkOuThFWDb4-2AyaFmKHpGU_RI,3155
|
90
144
|
.git/objects/b0/7a43f0462bf25a8b1f4c0ca60c1b533dae1dde,sha256=JWzlC7nXy3RXBUxEcge1_ciMw6q3C5phffVck9MVlJk,404
|
145
|
+
.git/objects/b0/82ca2c1b5a03edff25da3c2b2b573d049877e9,sha256=Tn8y8C287Wd8ZZsQ4FgduAQMlD-ANm8l0i6XeA0J9mc,476
|
146
|
+
.git/objects/b1/db1c131cf32916028342c0037ce8eb57a8eb26,sha256=bgcHj-13lalI3KZLo4PS1xneLz-E1oSxp1qIfCiqSH0,17243
|
147
|
+
.git/objects/b2/8334b94392b8af397a05ed702690fa6c9ab1ca,sha256=QnXhDj4XDoGwytea6h_RgeaoWX3jXffxX6S7DcMzRZo,3461
|
91
148
|
.git/objects/b3/28dc445ee33220db9359370fc0089a77174101,sha256=cipG_34_tKM5VPfYW2wRCmBYOqlmTBIUjakeph9sfl4,3652
|
92
149
|
.git/objects/b3/d2b3037bede44e7e4d18dc99419f8c712c9c62,sha256=OIWo7wvTTKYZkYkxcZrOtnvfqgGlPezaE6sglITaF_Y,1156
|
150
|
+
.git/objects/b8/7c89dcfce9e244ff5ef6a4bd394de12e8c8092,sha256=kE2ed_VMlop9lFeD9xXhrmql0ybRkMT6SbgWSP-0f7I,1249
|
151
|
+
.git/objects/bc/e98bdb71c8681acb460195fdcbbe5d36290976,sha256=o-hyZsAo9YH-jq5u10qF9Ub07ttduIWahRk7XC15Huo,96
|
152
|
+
.git/objects/c1/87d5e047eca86cfd8d444be2987aaa3f62c4d6,sha256=NL3ke3EzpuAgSXzGAaSX6IyTxnnTtbx-_4PRxUYVnRM,122
|
93
153
|
.git/objects/c3/93db4841dbbb8acf54e9af12b6705c9f5ecde9,sha256=g36XyKIObniMsMBcIzsoG7f82SzOgn_Bdx-V9Rezjbg,3864
|
94
154
|
.git/objects/c3/c8594874dd9ff9c21662fd06cac9b5baadbba0,sha256=5YUWDZ-BMZvyOJksaoiKeZC0N-eRcOJemLb_jNUHcC4,14309
|
155
|
+
.git/objects/c4/c2da96b0bb8db2acb0e6615cf340c7e51af26b,sha256=CiygqPJlDIOMLlTCLtqGjX1-0nLuibvSqApdkzgx_Dk,130
|
156
|
+
.git/objects/c5/13a96e7584636b20b12280c029750d5bc3da1e,sha256=VLZ8PjQLeTsUdf5hJgRYEVffMMDcVPaND5S6p_G0QQ4,507
|
157
|
+
.git/objects/c7/c34283697bd3cce07db53953eda25ee7cc371e,sha256=Dml4LNMu14Kq4DUCqcD7PhPdwxCnnVe77BqS9bZYJr8,170
|
95
158
|
.git/objects/c8/2a656fe6b5d479b327cdf5fe3bf60db987a2a2,sha256=YNf8mWKTqJHeBDQCTfOU8b0ZDDSfbAb1fBGGDsySrHk,426
|
96
159
|
.git/objects/c8/cb3bb9552dcf6a368a1418996c4b925db2d8ab,sha256=3AlcdjxamfHKOBmAuectuKNLwOYa1BovnOmVElfwPb4,13097
|
97
160
|
.git/objects/c9/a6ca8f8efee4a5632e9a655ced29f1b708f35e,sha256=IOmxZbePi1cWHt2HzdDNtWy0SYR2XvigDkGK2fyNbWU,4957
|
98
161
|
.git/objects/c9/cdef9ab627b874ffe6455a47583a75bf16496d,sha256=7y908SUa7dmWJyNXDKS_tOdrcfmI6OjZc7zvtL38M5Y,428
|
162
|
+
.git/objects/c9/d60d922a04b87587cd67b0abf9fe5a7b7b76cd,sha256=__y7gpz4_Vp-4bf0WIBORv-fmu9OFyi42u7lE5mbpbU,2868
|
99
163
|
.git/objects/cd/2d6c229438c6b1c694b9392a85888d89ef49c1,sha256=IW9iGk3Eb-i_Ht64HQcltVp27ziQHz5IP6k5p57YFtY,122
|
100
164
|
.git/objects/d0/9c84ad2142a187bf26a1714b7041b62e404c8f,sha256=twhhaZbfU_mgu5LIlt9ZeGjp_PT_gri_9H231H5nrNc,2172
|
165
|
+
.git/objects/d2/69b1676dbf32f76a7c405d0b4ea6a70ac3a626,sha256=m7rrmOVyAvhOIaRUmhbOzSTY5WKs47KUo7wFsM4XR90,2368
|
166
|
+
.git/objects/d3/5a918b1d9125ad35d60e08b181323df3246f1a,sha256=XiS705YKH6IJsELw5ZgbSeLdKH2qw96denj85BNEJJY,284
|
167
|
+
.git/objects/d8/eaf86669fbfd10497570c1784db1ed2696b588,sha256=YLEdJmuYNQDi1sYzQr0H1gFdExgTKIsY_Ugosmnzf3Q,314
|
168
|
+
.git/objects/d9/3bd435c8c7ad4efb83dff04d5450fabb9e3faf,sha256=Dfce7XnTEPSLCJamlY36SeWUBiScdITejT2zhr9xwbg,2816
|
101
169
|
.git/objects/d9/6d7456245232b3e159dcf691f11e51224c557a,sha256=3w45hxiT2rn6ljSdgo36fHMMWZt30r5C1FPvbnjq9tc,597
|
170
|
+
.git/objects/d9/90e6d553577d37ebce8b28b3015ecbde038b42,sha256=KAWFa4xuE56xukGPMlcOjxQ6xh1FlSrTYvgGyMypTX0,96
|
171
|
+
.git/objects/da/13cc15bcd8ee39c81f36dee7f179a569ecab0b,sha256=j1qdeViwHsSkT6l8xwFVDZ82wa2y638a6LsvVrUQnho,2154
|
102
172
|
.git/objects/db/beedb30613f79ae3ff67df1428cf8ade223711,sha256=tTGayiwSvdy-uBiXQKRhNnToZ_dc1BmeXZ2mltuRfxY,3812
|
103
173
|
.git/objects/df/f8f64cee2b97df7d86f73207c5e690f98f0208,sha256=eRT2hUSKxaIPfQVnE9NaRGxbAvBVCSreSOGzVGtd7As,213
|
104
174
|
.git/objects/e2/b7433fbfbfac5bc800a962be2f4adbed145b42,sha256=eqX17kz7wSegBgSYS8q4oMPsZVvNWoDbpCRw7oI5PmE,15527
|
175
|
+
.git/objects/e3/27755808d88c7ae5c06c229cf18bd0519646df,sha256=GQJi0cnGbjOZLiK8-PyTZlVupBaT6g-ar2N-RJp0NN4,9619
|
105
176
|
.git/objects/e4/1e5aa2bc3074c2014d01ab1f603f69c327a83f,sha256=5daI7Vb9ehvOwoqgaBAKilm6Z6YdA4Rk4MFjJChbWpA,379
|
177
|
+
.git/objects/e4/4c1d8a90207ac082d8ab7ff0db66708e2ebc31,sha256=YJmX3vsaaoauuSFWAJqD3wriTdWueanhd_r5zroQqY8,232
|
178
|
+
.git/objects/e5/83e7c40be934d16a1fa2e973487b395d930f42,sha256=BLXKgjdPyjn2Y-x-OQfbdg5JXCq3Nrnvwh5PfGMpmxQ,1848
|
106
179
|
.git/objects/e8/1433b6ad92206cdadbee1f474b4f99383314cb,sha256=mRMdmx6wCs6b-63QL72Iutm2AUVCOIYs7J5XbAsLluc,426
|
107
180
|
.git/objects/e8/2f42ea26b8bf4f0bc92c0648ac8f190f14226d,sha256=xtbEwloZnqXdNdViAevzyprosfPQ1P--xAu6URGlaYI,155
|
108
181
|
.git/objects/e9/a15996cb55ac72aeb6611d26e8d22246589943,sha256=sTn6X3xMp3_WYpj1CmP2hDqviX86aJHTCzzi_ZTpBKw,4643
|
109
182
|
.git/objects/eb/528f06c622d54e411e9e05b3a200b4ac624a90,sha256=i9b0c6j5KYuoPAR_-5923QJwBZM2_aq2Y-CElPjRT0M,4596
|
183
|
+
.git/objects/ed/1ae867d5e63195845afc58d88c38ecbdea97df,sha256=Qo5oowjv4LCkhCgdr9UwcDCzcOQdkWxWuY-gL9zD78k,48
|
110
184
|
.git/objects/ed/fb5bbf938de738d1f658f80e23c675bb8b3fae,sha256=MOYiuXKTxnd9YcqU3-HUVUq2g9fPU1-AKZOQ-3xsWCk,4237
|
111
185
|
.git/objects/ef/4844af55f7f64b8dd24b81b5a8322a8c80208e,sha256=hO8yllVMOtIE4HeOvwKSqQUByH6lvaA4L-RYrSU4vlg,167
|
186
|
+
.git/objects/ef/f44e5099da27f7fb1ef14bb34902ccf4250b89,sha256=-QgSwHLJXN1UHaeMpGc8blhSm0nm_4GuSCdC-h_IM0o,2816
|
112
187
|
.git/objects/f2/2bfffda9fb6a7f37bed04b7c40c9466ef09454,sha256=goQNyEV3NqzS28mMXuus1SWzwb8yXnvEPef14Ugzh5Q,750
|
113
188
|
.git/objects/f5/18c69a6e1bf3052b79da01502b2837ea58f0f4,sha256=r98SFbCvw7yeAYTjzkw-2VMhOVbpm79FLZQiC5A1-pw,123
|
189
|
+
.git/objects/f5/1be495b96272fa2e47f30071aed35ac1f0dd2c,sha256=xjweeKCHsLUlfdROM1YxycVfwVexy-_1VhEA8Ki4Rfc,5050
|
114
190
|
.git/objects/f7/25a430eb3364460ba854dbc8809edc21dc6c70,sha256=LdyMmAWGLWbn5G5fC7eAPi4NFOboKcJ6iJJdxENSUCk,2505
|
191
|
+
.git/objects/f8/ed595d25bd9d500e765a792c513878f7ddb1f7,sha256=yI_zqHGWaq_FUbEiqDWJcqrceTz2TNfSGcOjk7UeZ3c,97
|
115
192
|
.git/objects/fa/fc981b0d80d8d0323c04365785f66996ed5211,sha256=t9N37kVA7j_i4nz0dDMHOQpvziBu5MUpDlG06Hdj77c,4395
|
116
193
|
.git/objects/fc/e15b9dbffd9f37b1f2d46944ee2d0394df6565,sha256=81qdzKkVZ5C_1oej2Mm0q2RLifilVFolIs95mrUfpg4,163
|
194
|
+
.git/objects/fd/0bc07dc3c95e6168ab6d367d9eca139ac1e539,sha256=29lnkRe3MYSLwu997QipK5TLUYzZuOKhQmO3usm17H0,3002
|
117
195
|
.git/objects/fd/267d9de63212db235135fa6834f62572224fc6,sha256=vzhjdZvcXQ8Fgja_XwvbBkuLuRhzSYf_3mckDyZEoso,426
|
118
196
|
.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.idx,sha256=KRv1SBEe9bYL9d5V301LwPOBqFs3tMnB0dl4PriMMIw,2416
|
119
197
|
.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.pack,sha256=R4oMXhr-NcPAUBXStCbAaUvGUDW_SBECmPIbiB9Gy48,42003
|
120
198
|
.git/objects/pack/pack-289f7bb06603881c49190e6036de6390223baf77.rev,sha256=22_3sqyTNB5IbwAK5oCqNz0UxDDqoZ5jcF7p_44Lalo,244
|
121
199
|
.git/packed-refs,sha256=4H0m4wd6q98wZkBk7WfvVeTBuuxQdTE65XxsswYP-oQ,112
|
122
|
-
.git/refs/heads/iyue,sha256=
|
123
|
-
.git/refs/remotes/gitlab/iyue,sha256=
|
200
|
+
.git/refs/heads/iyue,sha256=UKeAS3b7ttvVhUvr-gyA4_GMYKp_xV5sAPccBx2q1kw,41
|
201
|
+
.git/refs/remotes/gitlab/iyue,sha256=UKeAS3b7ttvVhUvr-gyA4_GMYKp_xV5sAPccBx2q1kw,41
|
124
202
|
.git/refs/remotes/origin/HEAD,sha256=G8pFPTbCqnJ2IkCzz9J-STqOXWU6TrlXfpt1wx5bUWE,30
|
125
|
-
.git/refs/remotes/origin/iyue,sha256=
|
126
|
-
.gitignore,sha256=
|
203
|
+
.git/refs/remotes/origin/iyue,sha256=UKeAS3b7ttvVhUvr-gyA4_GMYKp_xV5sAPccBx2q1kw,41
|
204
|
+
.gitignore,sha256=HHs2RDf54i9UJ3Z-pqWWCy8wyQLN7FCvz8Zm-RGN65s,2091
|
127
205
|
.python-version,sha256=NxOs_9lT1XG8y-FjlRru-YinX5RcBJt_ulPwgDESZ_o,7
|
128
206
|
ARCHITECTURE.md,sha256=HiUhP4wGzy4lD01MpHjOgAhuAUwpNsEac3tZaE65kos,12047
|
129
|
-
README.md,sha256=
|
130
|
-
core/__init__.py,sha256=
|
131
|
-
core/
|
132
|
-
core/
|
133
|
-
|
134
|
-
generation/
|
135
|
-
|
136
|
-
|
137
|
-
|
207
|
+
README.md,sha256=CNBsu4ulQZ5JiU2aqlU3FsLof6DmpKfMtbhhjdGfp60,5399
|
208
|
+
core/__init__.py,sha256=PetkS7P_cuz8h9SSQmEJEQKUaaWf6geQnLKRq9uQzjY,688
|
209
|
+
core/info_decoder.py,sha256=WgvTTiVr2_bTtH7ip0Pf0C5OKNn-qeSELYOT10r04Aw,73764
|
210
|
+
core/reconstructor.py,sha256=LdSH6Z90xR3XdfOP27t-JMbbKU1RKKKwgL6K3WboMm4,62820
|
211
|
+
generation/__init__.py,sha256=fqZNYz3HzZb0TeF9KMiQ-Q0BdWuzKkSJ8hEXF4kzHuQ,427
|
212
|
+
generation/proto_generator.py,sha256=QTh2-b4rbY3sQZQFBAunL3rCiumvxzOHEvQ4tCEqSkM,22254
|
213
|
+
include/google/protobuf/any.proto,sha256=vPXebORjsaOP92t3lVqn5YC07BKvNKknsdRcnvsPr2Y,6154
|
214
|
+
include/google/protobuf/api.proto,sha256=naqFihxSn0f51O0bwt8Nq2FUrUL5nPA1Gz2p1Nr_jrA,7729
|
215
|
+
include/google/protobuf/compiler/plugin.proto,sha256=fjnlljCh8BGNcVv9D-NIHBYN4hRP9ZUsXj7SCizk-oI,8556
|
216
|
+
include/google/protobuf/cpp_features.proto,sha256=wM9-hphZYrcNfiAeZGrRCXBxfyLI3TOK-0F95Dd0_5U,2185
|
217
|
+
include/google/protobuf/descriptor.proto,sha256=QovXz8dMTlPcqwbTcICqWJRSwvkzYLy6zNXR14pQ6LE,57489
|
218
|
+
include/google/protobuf/duration.proto,sha256=o_cwH_KVbsLjDCJB7OBxl-SobHUjSNVgciSBnUkhyf4,4892
|
219
|
+
include/google/protobuf/empty.proto,sha256=7O89VMyeB5ZzuYFsZ7rHcPfzv22totRZa6adcdqpceY,2363
|
220
|
+
include/google/protobuf/field_mask.proto,sha256=F7DzQsw6Ji4xfVaITz9XWvv6xRKtBXk0nMdFDkHyaJE,8185
|
221
|
+
include/google/protobuf/go_features.proto,sha256=LszrrwacFcejrI113S_c0PEwe_mUlp_NbRt9Y6WrVIU,2521
|
222
|
+
include/google/protobuf/java_features.proto,sha256=pkYTdwIlZ4HcTT8IpOCnjJMjcAknQH4ltsYNsv9j-kc,4835
|
223
|
+
include/google/protobuf/source_context.proto,sha256=N9NAHeia8dFJb8lJkkpfIBG9L6376w2hyqJ3FZqWd20,2341
|
224
|
+
include/google/protobuf/struct.proto,sha256=G_B7qLmiTjoDkN3aw60NtBxjKH0lJ4iwI5giC5q8kA8,3778
|
225
|
+
include/google/protobuf/timestamp.proto,sha256=FAUsYELB3S0LUCRfKBLqq26vgtsLbozkg-rlJ_c7bug,6449
|
226
|
+
include/google/protobuf/type.proto,sha256=4jDg5K64fJXp8casv8DHE9s_iAlPFJsVRxelHQIPdQs,6367
|
227
|
+
include/google/protobuf/wrappers.proto,sha256=aHjcdTTPmAXu5WNFzcOLXpyjneziRnEMZjxwB6Z_70k,5392
|
228
|
+
main.py,sha256=EnjOjWcpCoK6JrblcLXPvkS-RiXwbkBjs8gL7QP8jG4,5933
|
229
|
+
models/__init__.py,sha256=KVthXPEPwpKg45LaaX5EIHu6UMY8eLXMnx4rfJB84Xs,825
|
138
230
|
models/message_definition.py,sha256=AszUZnNPSBn9SMXne5ORDBiGZz1W2pcYmU8ftGC3Mks,4873
|
139
|
-
parsing/__init__.py,sha256=
|
140
|
-
parsing/enum_parser.py,sha256=
|
141
|
-
parsing/java_parser.py,sha256=
|
142
|
-
pyproject.toml,sha256=
|
231
|
+
parsing/__init__.py,sha256=WBrRACzmxAN4_k7uUo3KSeywvlTJYp5iVSOnU2gNoF8,596
|
232
|
+
parsing/enum_parser.py,sha256=Yf59cDLTwIbPRQsuj0tgYUmmtpjY02llmSZ3XlsCqUk,6492
|
233
|
+
parsing/java_parser.py,sha256=PZ5gs2aJqcX8sRlC29QIOsrbI-OCRtaHsxkMyvYnkCA,33774
|
234
|
+
pyproject.toml,sha256=WSHU6modzAkZB__A3-T2NdhK1Kcyfn371uLL2TeIgR4,1378
|
143
235
|
requirements.txt,sha256=cQGj3IS6Kj88jbwj_jeKkokMnG-fEezWve91mfW4CJs,96
|
144
|
-
utils/__init__.py,sha256=
|
145
|
-
utils/
|
236
|
+
utils/__init__.py,sha256=QTPe5H6T5qiqVRlhI7UJzIJrnerHvsGN38xEa-8V5is,1369
|
237
|
+
utils/builtin_proto.py,sha256=PiRdcJGKr02d8NbbedS14mjl6khtTbUzmlpso4q-NHA,9339
|
238
|
+
utils/file_cache.py,sha256=m6-fAQsSBVn8-BodjPsmA2C_OqWjnt6mjUyGhT1pFno,5433
|
146
239
|
utils/file_utils.py,sha256=N1Ei7hmyeOkIyZJFEXyNbtTrfeVF2hP-U8evXAVW2MA,4085
|
147
240
|
utils/logger.py,sha256=473DfzFVXzdGpiRTJGY6bBd-V5G80_P07gQqcvDChpQ,2447
|
148
|
-
utils/
|
149
|
-
utils/
|
150
|
-
|
151
|
-
reproto-0.1.
|
152
|
-
reproto-0.1.
|
153
|
-
reproto-0.1.
|
241
|
+
utils/report_utils.py,sha256=ftXU27nscrKUPMVWRnjLwckrt4NVBkKAc4zGmgNHwbc,2873
|
242
|
+
utils/type_index.py,sha256=ni9hhR321unTQ9kfgsTum59VEh9nJMlUG0ca3V4rSHk,12354
|
243
|
+
utils/type_utils.py,sha256=H32JSIvq1TmZkAZZesEs4VQVc1VXQuJlSLTINTBVkK4,15947
|
244
|
+
reproto-0.1.3.dist-info/METADATA,sha256=ph3duIhum8nQPtVURrh9SSx8sA0WuET5qi1Zl3pGplg,6348
|
245
|
+
reproto-0.1.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
246
|
+
reproto-0.1.3.dist-info/entry_points.txt,sha256=6Oro9lK_2DXDgHiB3andNuIE78wxfooqacqp8yY1C-g,37
|
247
|
+
reproto-0.1.3.dist-info/RECORD,,
|
utils/__init__.py
CHANGED
@@ -1,3 +1,43 @@
|
|
1
|
+
"""
|
2
|
+
工具模块
|
3
|
+
|
4
|
+
包含各种辅助工具和实用程序:
|
5
|
+
- 日志系统:统一的日志管理
|
6
|
+
- 文件缓存:优化文件I/O性能
|
7
|
+
- 类型工具:类型转换和命名规范处理
|
8
|
+
- 内置Proto:Google Protobuf标准类型支持
|
9
|
+
- 报告工具:重构结果统计和展示
|
10
|
+
"""
|
11
|
+
|
12
|
+
# 智能导入:同时支持相对导入(包环境)和绝对导入(开发环境)
|
13
|
+
try:
|
14
|
+
# 相对导入(包环境)
|
15
|
+
from .logger import setup_logger, get_logger
|
16
|
+
from .file_cache import get_file_cache
|
17
|
+
from .type_utils import type_mapper, naming_converter, field_name_processor
|
18
|
+
from .builtin_proto import get_builtin_manager
|
19
|
+
from .type_index import get_type_index
|
20
|
+
from .report_utils import print_results_summary
|
21
|
+
except ImportError:
|
22
|
+
# 绝对导入(开发环境)
|
23
|
+
from utils.logger import setup_logger, get_logger
|
24
|
+
from utils.file_cache import get_file_cache
|
25
|
+
from utils.type_utils import type_mapper, naming_converter, field_name_processor
|
26
|
+
from utils.builtin_proto import get_builtin_manager
|
27
|
+
from utils.type_index import get_type_index
|
28
|
+
from utils.report_utils import print_results_summary
|
29
|
+
|
30
|
+
__all__ = [
|
31
|
+
'setup_logger',
|
32
|
+
'get_logger',
|
33
|
+
'get_file_cache',
|
34
|
+
'type_mapper',
|
35
|
+
'naming_converter',
|
36
|
+
'field_name_processor',
|
37
|
+
'get_builtin_manager',
|
38
|
+
'get_type_index',
|
39
|
+
'print_results_summary'
|
40
|
+
]
|
1
41
|
|
2
42
|
|
3
43
|
|