Delete Trellis
Browse files- Trellis/.gitattributes +0 -35
- Trellis/README.md +0 -9
- Trellis/ckpts/slat_dec_gs_swin8_B_64l8gs32_fp16.json +0 -31
- Trellis/ckpts/slat_dec_gs_swin8_B_64l8gs32_fp16.safetensors +0 -3
- Trellis/ckpts/slat_dec_mesh_swin8_B_64l8m256c_fp16.json +0 -17
- Trellis/ckpts/slat_dec_mesh_swin8_B_64l8m256c_fp16.safetensors +0 -3
- Trellis/ckpts/slat_dec_rf_swin8_B_64l8r16_fp16.json +0 -18
- Trellis/ckpts/slat_dec_rf_swin8_B_64l8r16_fp16.safetensors +0 -3
- Trellis/ckpts/slat_enc_swin8_B_64l8_fp16.json +0 -15
- Trellis/ckpts/slat_enc_swin8_B_64l8_fp16.safetensors +0 -3
- Trellis/ckpts/slat_flow_img_dit_L_64l8p2_fp16.json +0 -19
- Trellis/ckpts/slat_flow_img_dit_L_64l8p2_fp16.safetensors +0 -3
- Trellis/ckpts/ss_dec_conv3d_16l8_fp16.json +0 -12
- Trellis/ckpts/ss_dec_conv3d_16l8_fp16.safetensors +0 -3
- Trellis/ckpts/ss_enc_conv3d_16l8_fp16.json +0 -12
- Trellis/ckpts/ss_enc_conv3d_16l8_fp16.safetensors +0 -3
- Trellis/ckpts/ss_flow_img_dit_L_16l8_fp16.json +0 -17
- Trellis/ckpts/ss_flow_img_dit_L_16l8_fp16.safetensors +0 -3
- Trellis/ckpts/ss_flow_normal_dit_L_16l8_fp16.json +0 -17
- Trellis/ckpts/ss_flow_normal_dit_L_16l8_fp16.safetensors +0 -3
- Trellis/pipeline.json +0 -59
Trellis/.gitattributes
DELETED
|
@@ -1,35 +0,0 @@
|
|
| 1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
-
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/README.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
| 1 |
-
---
|
| 2 |
-
library_name: Hi3dGen_Color
|
| 3 |
-
pipeline_tag: image-to-3d
|
| 4 |
-
license: mit
|
| 5 |
-
language:
|
| 6 |
-
- en
|
| 7 |
-
---
|
| 8 |
-
|
| 9 |
-
An improved normal conditioned version of TRELLIS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_gs_swin8_B_64l8gs32_fp16.json
DELETED
|
@@ -1,31 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SLatGaussianDecoder",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 64,
|
| 5 |
-
"model_channels": 768,
|
| 6 |
-
"latent_channels": 8,
|
| 7 |
-
"num_blocks": 12,
|
| 8 |
-
"num_heads": 12,
|
| 9 |
-
"mlp_ratio": 4,
|
| 10 |
-
"attn_mode": "swin",
|
| 11 |
-
"window_size": 8,
|
| 12 |
-
"use_fp16": true,
|
| 13 |
-
"representation_config": {
|
| 14 |
-
"lr": {
|
| 15 |
-
"_xyz": 1.0,
|
| 16 |
-
"_features_dc": 1.0,
|
| 17 |
-
"_opacity": 1.0,
|
| 18 |
-
"_scaling": 1.0,
|
| 19 |
-
"_rotation": 0.1
|
| 20 |
-
},
|
| 21 |
-
"perturb_offset": true,
|
| 22 |
-
"voxel_size": 1.5,
|
| 23 |
-
"num_gaussians": 32,
|
| 24 |
-
"2d_filter_kernel_size": 0.1,
|
| 25 |
-
"3d_filter_kernel_size": 9e-4,
|
| 26 |
-
"scaling_bias": 4e-3,
|
| 27 |
-
"opacity_bias": 0.1,
|
| 28 |
-
"scaling_activation": "softplus"
|
| 29 |
-
}
|
| 30 |
-
}
|
| 31 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_gs_swin8_B_64l8gs32_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:38c84bcef5ce0af1f48b1b5558dabc7575a13346043c41a7e0610f1fa619a161
|
| 3 |
-
size 171450952
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_mesh_swin8_B_64l8m256c_fp16.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SLatMeshDecoder",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 64,
|
| 5 |
-
"model_channels": 768,
|
| 6 |
-
"latent_channels": 8,
|
| 7 |
-
"num_blocks": 12,
|
| 8 |
-
"num_heads": 12,
|
| 9 |
-
"mlp_ratio": 4,
|
| 10 |
-
"attn_mode": "swin",
|
| 11 |
-
"window_size": 8,
|
| 12 |
-
"use_fp16": true,
|
| 13 |
-
"representation_config": {
|
| 14 |
-
"use_color": true
|
| 15 |
-
}
|
| 16 |
-
}
|
| 17 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_mesh_swin8_B_64l8m256c_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:3e87aba94b5786407eb06d0502c1ed0885a0027a3f2b8537bfe15b0a92c01859
|
| 3 |
-
size 181903412
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_rf_swin8_B_64l8r16_fp16.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SLatRadianceFieldDecoder",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 64,
|
| 5 |
-
"model_channels": 768,
|
| 6 |
-
"latent_channels": 8,
|
| 7 |
-
"num_blocks": 12,
|
| 8 |
-
"num_heads": 12,
|
| 9 |
-
"mlp_ratio": 4,
|
| 10 |
-
"attn_mode": "swin",
|
| 11 |
-
"window_size": 8,
|
| 12 |
-
"use_fp16": true,
|
| 13 |
-
"representation_config": {
|
| 14 |
-
"rank": 16,
|
| 15 |
-
"dim": 8
|
| 16 |
-
}
|
| 17 |
-
}
|
| 18 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_dec_rf_swin8_B_64l8r16_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:737da6578d01948016b7c39786113af0d64a46f7922f6b8b5e698b84643be514
|
| 3 |
-
size 171450488
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_enc_swin8_B_64l8_fp16.json
DELETED
|
@@ -1,15 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SLatEncoder",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 64,
|
| 5 |
-
"in_channels": 1024,
|
| 6 |
-
"model_channels": 768,
|
| 7 |
-
"latent_channels": 8,
|
| 8 |
-
"num_blocks": 12,
|
| 9 |
-
"num_heads": 12,
|
| 10 |
-
"mlp_ratio": 4,
|
| 11 |
-
"attn_mode": "swin",
|
| 12 |
-
"window_size": 8,
|
| 13 |
-
"use_fp16": true
|
| 14 |
-
}
|
| 15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_enc_swin8_B_64l8_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:21dceac6bee917ab6458ff52c9757ba89a779d03031c7bd17f9e7f0103bfd436
|
| 3 |
-
size 173242816
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_flow_img_dit_L_64l8p2_fp16.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SLatFlowModel",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 64,
|
| 5 |
-
"in_channels": 8,
|
| 6 |
-
"out_channels": 8,
|
| 7 |
-
"model_channels": 1024,
|
| 8 |
-
"cond_channels": 1024,
|
| 9 |
-
"num_blocks": 24,
|
| 10 |
-
"num_heads": 16,
|
| 11 |
-
"mlp_ratio": 4,
|
| 12 |
-
"patch_size": 2,
|
| 13 |
-
"num_io_res_blocks": 2,
|
| 14 |
-
"io_block_channels": [128],
|
| 15 |
-
"pe_mode": "ape",
|
| 16 |
-
"qk_rms_norm": true,
|
| 17 |
-
"use_fp16": true
|
| 18 |
-
}
|
| 19 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/slat_flow_img_dit_L_64l8p2_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:693fb2a58ad497bd222007301eeec49d14d60f8c12d2f2f00c221fa747b4c66c
|
| 3 |
-
size 1203755136
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_dec_conv3d_16l8_fp16.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
{
|
| 3 |
-
"name": "SparseStructureDecoder",
|
| 4 |
-
"args": {
|
| 5 |
-
"out_channels": 1,
|
| 6 |
-
"latent_channels": 8,
|
| 7 |
-
"num_res_blocks": 2,
|
| 8 |
-
"num_res_blocks_middle": 2,
|
| 9 |
-
"channels": [512, 128, 32],
|
| 10 |
-
"use_fp16": true
|
| 11 |
-
}
|
| 12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_dec_conv3d_16l8_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:1c76d4a40519aa2d711cc263a8404105231ac26db31d946bed48b84fee79009a
|
| 3 |
-
size 147591972
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_enc_conv3d_16l8_fp16.json
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
{
|
| 3 |
-
"name": "SparseStructureEncoder",
|
| 4 |
-
"args": {
|
| 5 |
-
"in_channels": 1,
|
| 6 |
-
"latent_channels": 8,
|
| 7 |
-
"num_res_blocks": 2,
|
| 8 |
-
"num_res_blocks_middle": 2,
|
| 9 |
-
"channels": [32, 128, 512],
|
| 10 |
-
"use_fp16": true
|
| 11 |
-
}
|
| 12 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_enc_conv3d_16l8_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:107874eeaa0feb82f51b19db5da7db534fb7e7f19e5a122b9ff1bc2e258bfc6d
|
| 3 |
-
size 119068016
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_flow_img_dit_L_16l8_fp16.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SparseStructureFlowModel",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 16,
|
| 5 |
-
"in_channels": 8,
|
| 6 |
-
"out_channels": 8,
|
| 7 |
-
"model_channels": 1024,
|
| 8 |
-
"cond_channels": 1024,
|
| 9 |
-
"num_blocks": 24,
|
| 10 |
-
"num_heads": 16,
|
| 11 |
-
"mlp_ratio": 4,
|
| 12 |
-
"patch_size": 1,
|
| 13 |
-
"pe_mode": "ape",
|
| 14 |
-
"qk_rms_norm": true,
|
| 15 |
-
"use_fp16": true
|
| 16 |
-
}
|
| 17 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_flow_img_dit_L_16l8_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:96dc6bfd4136fd950af564dd16b4ae533c9ba6af8f26c670646b2a9f2789b1db
|
| 3 |
-
size 1130770840
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_flow_normal_dit_L_16l8_fp16.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "SparseStructureFlowModel",
|
| 3 |
-
"args": {
|
| 4 |
-
"resolution": 16,
|
| 5 |
-
"in_channels": 8,
|
| 6 |
-
"out_channels": 8,
|
| 7 |
-
"model_channels": 1024,
|
| 8 |
-
"cond_channels": 1024,
|
| 9 |
-
"num_blocks": 24,
|
| 10 |
-
"num_heads": 16,
|
| 11 |
-
"mlp_ratio": 4,
|
| 12 |
-
"patch_size": 1,
|
| 13 |
-
"pe_mode": "ape",
|
| 14 |
-
"qk_rms_norm": true,
|
| 15 |
-
"use_fp16": true
|
| 16 |
-
}
|
| 17 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/ckpts/ss_flow_normal_dit_L_16l8_fp16.safetensors
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:b5f9f3aafead23fe5ee49ca01e57fcc0c3e0345635c05a0d83b39a7e5ccaf281
|
| 3 |
-
size 1119525912
|
|
|
|
|
|
|
|
|
|
|
|
Trellis/pipeline.json
DELETED
|
@@ -1,59 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "TrellisImageTo3DPipeline",
|
| 3 |
-
"args": {
|
| 4 |
-
"models": {
|
| 5 |
-
"sparse_structure_decoder": "ckpts/ss_dec_conv3d_16l8_fp16",
|
| 6 |
-
"sparse_structure_flow_model": "ckpts/ss_flow_normal_dit_L_16l8_fp16",
|
| 7 |
-
"slat_decoder_gs": "ckpts/slat_dec_gs_swin8_B_64l8gs32_fp16",
|
| 8 |
-
"slat_decoder_mesh": "ckpts/slat_dec_mesh_swin8_B_64l8m256c_fp16",
|
| 9 |
-
"slat_flow_model": "ckpts/slat_flow_img_dit_L_64l8p2_fp16"
|
| 10 |
-
},
|
| 11 |
-
"sparse_structure_sampler": {
|
| 12 |
-
"name": "FlowEulerGuidanceIntervalSampler",
|
| 13 |
-
"args": {
|
| 14 |
-
"sigma_min": 1e-5
|
| 15 |
-
},
|
| 16 |
-
"params": {
|
| 17 |
-
"steps": 25,
|
| 18 |
-
"cfg_strength": 5.0,
|
| 19 |
-
"cfg_interval": [0.5, 1.0],
|
| 20 |
-
"rescale_t": 3.0
|
| 21 |
-
}
|
| 22 |
-
},
|
| 23 |
-
"slat_sampler": {
|
| 24 |
-
"name": "FlowEulerGuidanceIntervalSampler",
|
| 25 |
-
"args": {
|
| 26 |
-
"sigma_min": 1e-5
|
| 27 |
-
},
|
| 28 |
-
"params": {
|
| 29 |
-
"steps": 25,
|
| 30 |
-
"cfg_strength": 5.0,
|
| 31 |
-
"cfg_interval": [0.5, 1.0],
|
| 32 |
-
"rescale_t": 3.0
|
| 33 |
-
}
|
| 34 |
-
},
|
| 35 |
-
"slat_normalization": {
|
| 36 |
-
"mean": [
|
| 37 |
-
-2.1687545776367188,
|
| 38 |
-
-0.004347046371549368,
|
| 39 |
-
-0.13352349400520325,
|
| 40 |
-
-0.08418072760105133,
|
| 41 |
-
-0.5271206498146057,
|
| 42 |
-
0.7238689064979553,
|
| 43 |
-
-1.1414450407028198,
|
| 44 |
-
1.2039363384246826
|
| 45 |
-
],
|
| 46 |
-
"std": [
|
| 47 |
-
2.377650737762451,
|
| 48 |
-
2.386378288269043,
|
| 49 |
-
2.124418020248413,
|
| 50 |
-
2.1748552322387695,
|
| 51 |
-
2.663944721221924,
|
| 52 |
-
2.371192216873169,
|
| 53 |
-
2.6217446327209473,
|
| 54 |
-
2.684523105621338
|
| 55 |
-
]
|
| 56 |
-
},
|
| 57 |
-
"image_cond_model": "dinov2_vitl14_reg"
|
| 58 |
-
}
|
| 59 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|