)
+
+[//]: # ()
+[//]: # (#### KITTI odemetry evaluation (Translational RMS drift (t_rel, ↓) / Rotational RMS drift (r_rel, ↓)))
+
+[//]: # (| | Modality | seq 00 | seq 02 | seq 05 | seq 06 | seq 08 | seq 09 | seq 10 |)
+
+[//]: # (|:----------:|:--------:|:----------:|:----------:|:---------:|:----------:|:----------:|:---------:|:---------:|)
+
+[//]: # (| ORB-SLAM2 | Mono | 11.43/0.58 | 10.34/0.26 | 9.04/0.26 | 14.56/0.26 | 11.46/0.28 | 9.3/0.26 | 2.57/0.32 |)
+
+[//]: # (| Droid-SLAM | Mono | 33.9/0.29 | 34.88/0.27 | 23.4/0.27 | 17.2/0.26 | 39.6/0.31 | 21.7/0.23 | 7/0.25 |)
+
+[//]: # (| Droid+Ours | Mono | 1.44/0.37 | 2.64/0.29 | 1.44/0.25 | 0.6/0.2 | 2.2/0.3 | 1.63/0.22 | 2.73/0.23 |)
+
+[//]: # (| ORB-SLAM2 | Stereo | 0.88/0.31 | 0.77/0.28 | 0.62/0.26 | 0.89/0.27 | 1.03/0.31 | 0.86/0.25 | 0.62/0.29 |)
+
+[//]: # ()
+[//]: # (Metric3D makes the mono-SLAM scale-aware, like stereo systems.)
+
+[//]: # ()
+[//]: # (#### KITTI sequence videos - Youtube)
+
+[//]: # ([2011_09_30_drive_0028](https://youtu.be/gcTB4MgVCLQ) /)
+
+[//]: # ([2011_09_30_drive_0033](https://youtu.be/He581fmoPP4) /)
+
+[//]: # ([2011_09_30_drive_0034](https://youtu.be/I3PkukQ3_F8))
+
+[//]: # ()
+[//]: # (#### Estimated pose)
+
+[//]: # ([2011_09_30_drive_0033](https://drive.google.com/file/d/1SMXWzLYrEdmBe6uYMR9ShtDXeFDewChv/view?usp=drive_link) / )
+
+[//]: # ([2011_09_30_drive_0034](https://drive.google.com/file/d/1ONU4GxpvTlgW0TjReF1R2i-WFxbbjQPG/view?usp=drive_link) /)
+
+[//]: # ([2011_10_03_drive_0042](https://drive.google.com/file/d/19fweg6p1Q6TjJD2KlD7EMA_aV4FIeQUD/view?usp=drive_link))
+
+[//]: # ()
+[//]: # (#### Pointcloud files)
+
+[//]: # ([2011_09_30_drive_0033](https://drive.google.com/file/d/1K0o8DpUmLf-f_rue0OX1VaHlldpHBAfw/view?usp=drive_link) /)
+
+[//]: # ([2011_09_30_drive_0034](https://drive.google.com/file/d/1bvZ6JwMRyvi07H7Z2VD_0NX1Im8qraZo/view?usp=drive_link) /)
+
+[//]: # ([2011_10_03_drive_0042](https://drive.google.com/file/d/1Vw59F8nN5ApWdLeGKXvYgyS9SNKHKy4x/view?usp=drive_link))
+
+## 🔨 Installation
+### One-line Installation
+For the ViT models, use the following environment:
+```bash
+pip install -r requirements_v2.txt
+```
+
+For ConvNeXt-L, it is
+```bash
+pip install -r requirements_v1.txt
+```
+
+### dataset annotation components
+With off-the-shelf depth datasets, we need to generate json annotaions in compatible with this dataset, which is organized by:
+```
+dict(
+ 'files':list(
+ dict(
+ 'rgb': 'data/kitti_demo/rgb/xxx.png',
+ 'depth': 'data/kitti_demo/depth/xxx.png',
+ 'depth_scale': 1000.0 # the depth scale of gt depth img.
+ 'cam_in': [fx, fy, cx, cy],
+ ),
+
+ dict(
+ ...
+ ),
+
+ ...
+ )
+)
+```
+To generate such annotations, please refer to the "Inference" section.
+
+### configs
+In ```mono/configs``` we provide different config setups.
+
+Intrinsics of the canonical camera is set bellow:
+```
+ canonical_space = dict(
+ img_size=(512, 960),
+ focal_length=1000.0,
+ ),
+```
+where cx and cy is set to be half of the image size.
+
+Inference settings are defined as
+```
+ depth_range=(0, 1),
+ depth_normalize=(0.3, 150),
+ crop_size = (512, 1088),
+```
+where the images will be first resized as the ```crop_size``` and then fed into the model.
+
+## ✈️ Training
+Please refer to [training/README.md](./training/README.md).
+Now we provide complete json files for KITTI fine-tuning.
+
+## ✈️ Inference
+### News: Improved ONNX support with dynamic shapes (Feature owned by [@xenova](https://github.com/xenova). Appreciate for this outstanding contribution 🚩🚩🚩)
+
+Now the onnx supports are availble for all three models with varying shapes. Refer to [issue117](https://github.com/YvanYin/Metric3D/issues/117) for more details.
+
+### Improved ONNX Checkpoints Available now
+| | Encoder | Decoder | Link |
+|:----:|:-------------------:|:-----------------:|:-------------------------------------------------------------------------------------------------:|
+| v2-S-ONNX | DINO2reg-ViT-Small | RAFT-4iter | [Download 🤗](https://huggingface.co/onnx-community/metric3d-vit-small) |
+| v2-L-ONNX | DINO2reg-ViT-Large | RAFT-8iter | [Download 🤗](https://huggingface.co/onnx-community/metric3d-vit-large) |
+| v2-g-ONNX | DINO2reg-ViT-giant2 | RAFT-8iter | [Download 🤗](https://huggingface.co/onnx-community/metric3d-vit-giant2) |
+
+One additional [reminder](https://github.com/YvanYin/Metric3D/issues/143#issue-2444506808) for using these onnx models is reported by @norbertlink.
+
+### News: Pytorch Hub is supported
+Now you can use Metric3D via Pytorch Hub with just few lines of code:
+```python
+import torch
+model = torch.hub.load('yvanyin/metric3d', 'metric3d_vit_small', pretrain=True)
+pred_depth, confidence, output_dict = model.inference({'input': rgb})
+pred_normal = output_dict['prediction_normal'][:, :3, :, :] # only available for Metric3Dv2 i.e., ViT models
+normal_confidence = output_dict['prediction_normal'][:, 3, :, :] # see https://arxiv.org/abs/2109.09881 for details
+```
+Supported models: `metric3d_convnext_tiny`, `metric3d_convnext_large`, `metric3d_vit_small`, `metric3d_vit_large`, `metric3d_vit_giant2`.
+
+We also provided a minimal working example in [hubconf.py](https://github.com/YvanYin/Metric3D/blob/main/hubconf.py#L145), which hopefully makes everything clearer.
+
+### News: ONNX Exportation and Inference are supported
+
+We also provided a flexible working example in [metric3d_onnx_export.py](./onnx/metric3d_onnx_export.py) to export the Pytorch Hub model to ONNX format. We could test with the following commands:
+
+```bash
+# Export the model to ONNX model
+python3 onnx/metric_3d_onnx_export.py metric3d_vit_small # metric3d_vit_large/metric3d_convnext_large
+
+# Test the inference of the ONNX model
+python3 onnx/test_onnx.py metric3d_vit_small.onnx
+```
+
+[ros2_vision_inference](https://github.com/Owen-Liuyuxuan/ros2_vision_inference) provides a Python example, showcasing a pipeline from image to point clouds and integrated into ROS2 systems.
+
+### Download Checkpoint
+| | Encoder | Decoder | Link |
+|:----:|:-------------------:|:-----------------:|:-------------------------------------------------------------------------------------------------:|
+| v1-T | ConvNeXt-Tiny | Hourglass-Decoder | [Download 🤗](https://huggingface.co/JUGGHM/Metric3D/blob/main/convtiny_hourglass_v1.pth) |
+| v1-L | ConvNeXt-Large | Hourglass-Decoder | [Download](https://drive.google.com/file/d/1KVINiBkVpJylx_6z1lAC7CQ4kmn-RJRN/view?usp=drive_link) |
+| v2-S | DINO2reg-ViT-Small | RAFT-4iter | [Download](https://drive.google.com/file/d/1YfmvXwpWmhLg3jSxnhT7LvY0yawlXcr_/view?usp=drive_link) |
+| v2-L | DINO2reg-ViT-Large | RAFT-8iter | [Download](https://drive.google.com/file/d/1eT2gG-kwsVzNy5nJrbm4KC-9DbNKyLnr/view?usp=drive_link) |
+| v2-g | DINO2reg-ViT-giant2 | RAFT-8iter | [Download 🤗](https://huggingface.co/JUGGHM/Metric3D/blob/main/metric_depth_vit_giant2_800k.pth) |
+
+### Dataset Mode
+1. put the trained ckpt file ```model.pth``` in ```weight/```.
+2. generate data annotation by following the code ```data/gene_annos_kitti_demo.py```, which includes 'rgb', (optional) 'intrinsic', (optional) 'depth', (optional) 'depth_scale'.
+3. change the 'test_data_path' in ```test_*.sh``` to the ```*.json``` path.
+4. run ```source test_kitti.sh``` or ```source test_nyu.sh```.
+
+### In-the-Wild Mode
+1. put the trained ckpt file ```model.pth``` in ```weight/```.
+2. change the 'test_data_path' in ```test.sh``` to the image folder path.
+3. run ```source test_vit.sh``` for transformers and ```source test.sh``` for convnets.
+As no intrinsics are provided, we provided by default 9 settings of focal length.
+
+### Metric3D and Droid-Slam
+If you are interested in combining metric3D and monocular visual slam system to achieve the metric slam, you can refer to this [repo](https://github.com/Jianxff/droid_metric).
+
+## ❓ Q & A
+### Q1: Why depth maps look good but pointclouds are distorted?
+Because the focal length is not properly set! Please find a proper focal length by modifying codes [here](mono/utils/do_test.py#309) yourself.
+
+### Q2: Why the point clouds are too slow to be generated?
+Because the images are too large! Use smaller ones instead.
+
+### Q3: Why predicted depth maps are not satisfactory?
+First be sure all black padding regions at image boundaries are cropped out. Then please try again.
+Besides, metric 3D is not almighty. Some objects (chandeliers, drones...) / camera views (aerial view, bev...) do not occur frequently in the training datasets. We will going deeper into this and release more powerful solutions.
+
+## 📧 Citation
+If you use this toolbox in your research or wish to refer to the baseline results published here, please use the following BibTeX entries:
+```
+@misc{Metric3D,
+ author = {Yin, Wei and Hu, Mu},
+ title = {OpenMetric3D: An Open Toolbox for Monocular Depth Estimation},
+ howpublished = {\url{https://github.com/YvanYin/Metric3D}},
+ year = {2024}
+}
+```
+
+Also please cite our papers if this help your research.
+```
+@article{hu2024metric3dv2,
+ title={Metric3d v2: A versatile monocular geometric foundation model for zero-shot metric depth and surface normal estimation},
+ author={Hu, Mu and Yin, Wei and Zhang, Chi and Cai, Zhipeng and Long, Xiaoxiao and Chen, Hao and Wang, Kaixuan and Yu, Gang and Shen, Chunhua and Shen, Shaojie},
+ journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
+ year={2024},
+ publisher={IEEE}
+}
+```
+```
+@article{yin2023metric,
+ title={Metric3D: Towards Zero-shot Metric 3D Prediction from A Single Image},
+ author={Wei Yin, Chi Zhang, Hao Chen, Zhipeng Cai, Gang Yu, Kaixuan Wang, Xiaozhi Chen, Chunhua Shen},
+ booktitle={ICCV},
+ year={2023}
+}
+```
+
+## License and Contact
+
+The *Metric 3D* code is under a 2-clause BSD License. For further commercial inquiries, please contact Dr. Wei Yin [yvanwy@outlook.com] and Mr. Mu Hu [mhuam@connect.ust.hk].
diff --git a/finetune/Metric3D/data/gene_annos_kitti_demo.py b/finetune/Metric3D/data/gene_annos_kitti_demo.py
new file mode 100644
index 0000000000000000000000000000000000000000..9edf1b4910c28593056dc03020d02674a70b522b
--- /dev/null
+++ b/finetune/Metric3D/data/gene_annos_kitti_demo.py
@@ -0,0 +1,32 @@
+if __name__=='__main__':
+ import os
+ import os.path as osp
+ import numpy as np
+ import cv2
+ import json
+
+ code_root = '/mnt/nas/share/home/xugk/MetricDepth_test/'
+
+ data_root = osp.join(code_root, 'data/kitti_demo')
+ split_root = code_root
+
+ files = []
+ rgb_root = osp.join(data_root, 'rgb')
+ depth_root = osp.join(data_root, 'depth')
+ for rgb_file in os.listdir(rgb_root):
+ rgb_path = osp.join(rgb_root, rgb_file).split(split_root)[-1]
+ depth_path = rgb_path.replace('/rgb/', '/depth/')
+ cam_in = [707.0493, 707.0493, 604.0814, 180.5066]
+ depth_scale = 256.
+
+ meta_data = {}
+ meta_data['cam_in'] = cam_in
+ meta_data['rgb'] = rgb_path
+ meta_data['depth'] = depth_path
+ meta_data['depth_scale'] = depth_scale
+ files.append(meta_data)
+ files_dict = dict(files=files)
+
+ with open(osp.join(code_root, 'data/kitti_demo/test_annotations.json'), 'w') as f:
+ json.dump(files_dict, f)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/data/gene_annos_nyu_demo.py b/finetune/Metric3D/data/gene_annos_nyu_demo.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4c1a4e815ed882d4d513c407d3c0b718d5ec6d7
--- /dev/null
+++ b/finetune/Metric3D/data/gene_annos_nyu_demo.py
@@ -0,0 +1,31 @@
+if __name__=='__main__':
+ import os
+ import os.path as osp
+ import numpy as np
+ import cv2
+ import json
+
+ code_root = '/mnt/nas/share/home/xugk/MetricDepth_test/'
+
+ data_root = osp.join(code_root, 'data/nyu_demo')
+ split_root = code_root
+
+ files = []
+ rgb_root = osp.join(data_root, 'rgb')
+ depth_root = osp.join(data_root, 'depth')
+ for rgb_file in os.listdir(rgb_root):
+ rgb_path = osp.join(rgb_root, rgb_file).split(split_root)[-1]
+ depth_path = rgb_path.replace('.jpg', '.png').replace('/rgb_', '/sync_depth_').replace('/rgb/', '/depth/')
+ cam_in = [518.8579, 519.46961, 325.58245, 253.73617]
+ depth_scale = 1000.
+
+ meta_data = {}
+ meta_data['cam_in'] = cam_in
+ meta_data['rgb'] = rgb_path
+ meta_data['depth'] = depth_path
+ meta_data['depth_scale'] = depth_scale
+ files.append(meta_data)
+ files_dict = dict(files=files)
+
+ with open(osp.join(code_root, 'data/nyu_demo/test_annotations.json'), 'w') as f:
+ json.dump(files_dict, f)
\ No newline at end of file
diff --git a/finetune/Metric3D/data/kitti_demo/depth/0000000005.png b/finetune/Metric3D/data/kitti_demo/depth/0000000005.png
new file mode 100644
index 0000000000000000000000000000000000000000..37c81e35db5b9d57680b26d1e3dfb14fcea68be3
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/depth/0000000005.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb0d83fc93bcf235384c690ae405e0b24b3bfc6a05e1220a4c902bed3b5ba113
+size 191967
diff --git a/finetune/Metric3D/data/kitti_demo/depth/0000000050.png b/finetune/Metric3D/data/kitti_demo/depth/0000000050.png
new file mode 100644
index 0000000000000000000000000000000000000000..395eba26aeb29fc7729df1e221adaaee183696a2
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/depth/0000000050.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3eef554b3b312829e7d1e76a1acd13e7261024eb3c4d6e176328be377ff9216e
+size 200646
diff --git a/finetune/Metric3D/data/kitti_demo/depth/0000000100.png b/finetune/Metric3D/data/kitti_demo/depth/0000000100.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c06323540561465cd66bf91d871789fdc8291c7
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/depth/0000000100.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b7e9c85e2b4f8131019fe93e0c1cf36f5058b30d040998a8199c4bb2d97e9b1
+size 181743
diff --git a/finetune/Metric3D/data/kitti_demo/rgb/0000000005.png b/finetune/Metric3D/data/kitti_demo/rgb/0000000005.png
new file mode 100644
index 0000000000000000000000000000000000000000..89592167d59e65cb87478890a1d870e7e23fcdc7
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/rgb/0000000005.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9754dcadc8b3ace31a368500af3e382e2c0763242a7b054d424650cec67646a
+size 872928
diff --git a/finetune/Metric3D/data/kitti_demo/rgb/0000000050.png b/finetune/Metric3D/data/kitti_demo/rgb/0000000050.png
new file mode 100644
index 0000000000000000000000000000000000000000..19b8fc027b2de753c089b728c6162d25b3e59e0e
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/rgb/0000000050.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19e4f8f377521c8e28aca9addf2b695f9e374e5f44ee38d58970d12a21fbc4bf
+size 873924
diff --git a/finetune/Metric3D/data/kitti_demo/rgb/0000000100.png b/finetune/Metric3D/data/kitti_demo/rgb/0000000100.png
new file mode 100644
index 0000000000000000000000000000000000000000..475f4e4be43091dbc3669f8c5b2a22ecd6c961e9
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/rgb/0000000100.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f216c6fa51fb640c6cfb8a16cc91f60b20b1d2775def3d86c52c2bba1388365
+size 916166
diff --git a/finetune/Metric3D/data/kitti_demo/test_annotations.json b/finetune/Metric3D/data/kitti_demo/test_annotations.json
new file mode 100644
index 0000000000000000000000000000000000000000..0153ec662a98b6c921eddbdb87132013d69111c9
--- /dev/null
+++ b/finetune/Metric3D/data/kitti_demo/test_annotations.json
@@ -0,0 +1 @@
+{"files": [{"cam_in": [707.0493, 707.0493, 604.0814, 180.5066], "rgb": "data/kitti_demo/rgb/0000000050.png", "depth": "data/kitti_demo/depth/0000000050.png", "depth_scale": 256.0}, {"cam_in": [707.0493, 707.0493, 604.0814, 180.5066], "rgb": "data/kitti_demo/rgb/0000000100.png", "depth": "data/kitti_demo/depth/0000000100.png", "depth_scale": 256.0}, {"cam_in": [707.0493, 707.0493, 604.0814, 180.5066], "rgb": "data/kitti_demo/rgb/0000000005.png", "depth": "data/kitti_demo/depth/0000000005.png", "depth_scale": 256.0}]}
\ No newline at end of file
diff --git a/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00000.png b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00000.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1157d8388bfed3bbb0b1b2eb3e05e124d87f9c7
--- /dev/null
+++ b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00000.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:043e9c8bee7af97afff01e451da3f5e9cd1591995f415944dd0dc91036a35b5a
+size 166196
diff --git a/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00050.png b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00050.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b7d8857e55727b382f64f9958325b1762e067aa
--- /dev/null
+++ b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00050.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53c764e869f61cf4240586395bc7374dcc02e65b8442801b53b74ffa563d30fe
+size 182376
diff --git a/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00100.png b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00100.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b7e7e77298ad11bbd6c157f145aca06637f07e6
--- /dev/null
+++ b/finetune/Metric3D/data/nyu_demo/depth/sync_depth_00100.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc0c16d56bfdcc958f37fa28bcf39b110a14c317bfe3c221b3c3bc6d73dec67d
+size 141576
diff --git a/finetune/Metric3D/data/nyu_demo/rgb/rgb_00000.jpg b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00000.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..af64697bccaf1d017d105e8eb407a1ff95b1ae4e
Binary files /dev/null and b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00000.jpg differ
diff --git a/finetune/Metric3D/data/nyu_demo/rgb/rgb_00050.jpg b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00050.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0712c42a51187f5e1d34e74f4d98f1489ba9251f
Binary files /dev/null and b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00050.jpg differ
diff --git a/finetune/Metric3D/data/nyu_demo/rgb/rgb_00100.jpg b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00100.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f5388677b4c9d2ad5e083b0753ae14193c7aaf48
Binary files /dev/null and b/finetune/Metric3D/data/nyu_demo/rgb/rgb_00100.jpg differ
diff --git a/finetune/Metric3D/data/nyu_demo/test_annotations.json b/finetune/Metric3D/data/nyu_demo/test_annotations.json
new file mode 100644
index 0000000000000000000000000000000000000000..806fe4635d30b0f810ae5df568365e76551dc7c9
--- /dev/null
+++ b/finetune/Metric3D/data/nyu_demo/test_annotations.json
@@ -0,0 +1 @@
+{"files": [{"cam_in": [518.8579, 519.46961, 325.58245, 253.73617], "rgb": "data/nyu_demo/rgb/rgb_00000.jpg", "depth": "data/nyu_demo/depth/sync_depth_00000.png", "depth_scale": 1000.0}, {"cam_in": [518.8579, 519.46961, 325.58245, 253.73617], "rgb": "data/nyu_demo/rgb/rgb_00050.jpg", "depth": "data/nyu_demo/depth/sync_depth_00050.png", "depth_scale": 1000.0}, {"cam_in": [518.8579, 519.46961, 325.58245, 253.73617], "rgb": "data/nyu_demo/rgb/rgb_00100.jpg", "depth": "data/nyu_demo/depth/sync_depth_00100.png", "depth_scale": 1000.0}]}
\ No newline at end of file
diff --git a/finetune/Metric3D/data/wild_demo/david-kohler-VFRTXGw1VjU-unsplash.jpg b/finetune/Metric3D/data/wild_demo/david-kohler-VFRTXGw1VjU-unsplash.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f23a79705026ad8989f6a0e747a71eb965dc83b1
--- /dev/null
+++ b/finetune/Metric3D/data/wild_demo/david-kohler-VFRTXGw1VjU-unsplash.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78a2041d375f24e00cabbb88a6b0199230c4d07777a3722b4a04828babbf30f0
+size 127317
diff --git a/finetune/Metric3D/data/wild_demo/jonathan-borba-CnthDZXCdoY-unsplash.jpg b/finetune/Metric3D/data/wild_demo/jonathan-borba-CnthDZXCdoY-unsplash.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f8bf0bac05eb512a01145f0980db6ac282877ec3
--- /dev/null
+++ b/finetune/Metric3D/data/wild_demo/jonathan-borba-CnthDZXCdoY-unsplash.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdb629d9a64804955adeab654b0b9a28298b73603d9eb2ae75c88dc3d106a412
+size 179608
diff --git a/finetune/Metric3D/data/wild_demo/randy-fath-G1yhU1Ej-9A-unsplash.jpg b/finetune/Metric3D/data/wild_demo/randy-fath-G1yhU1Ej-9A-unsplash.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a2d078087a52e0d1484e9f3df4f8054692e8a3bf
--- /dev/null
+++ b/finetune/Metric3D/data/wild_demo/randy-fath-G1yhU1Ej-9A-unsplash.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95501e0df0690f6ba0423da026cf33b86952774e1727c5ef4e03ae3b4333c90f
+size 100340
diff --git a/finetune/Metric3D/data_info/__init__.py b/finetune/Metric3D/data_info/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec8374be5bc1a77bc72386ebf46cb50154217684
--- /dev/null
+++ b/finetune/Metric3D/data_info/__init__.py
@@ -0,0 +1,2 @@
+from .public_datasets import *
+from .pretrained_weight import *
\ No newline at end of file
diff --git a/finetune/Metric3D/data_info/pretrained_weight.py b/finetune/Metric3D/data_info/pretrained_weight.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e7226f02c486942e715f8f8b7d0287809bd451c
--- /dev/null
+++ b/finetune/Metric3D/data_info/pretrained_weight.py
@@ -0,0 +1,16 @@
+
+mldb_info={}
+
+mldb_info['checkpoint']={
+ 'mldb_root': '/mnt/nas/share/home/xugk/ckpt', # NOTE: modify it to the pretrained ckpt root
+
+ # pretrained weight for convnext
+ 'convnext_tiny': 'convnext/convnext_tiny_22k_1k_384.pth',
+ 'convnext_small': 'convnext/convnext_small_22k_1k_384.pth',
+ 'convnext_base': 'convnext/convnext_base_22k_1k_384.pth',
+ 'convnext_large': 'convnext/convnext_large_22k_1k_384.pth',
+ 'vit_large': 'vit/dinov2_vitl14_pretrain.pth',
+ 'vit_small_reg': 'vit/dinov2_vits14_reg4_pretrain.pth',
+ 'vit_large_reg': 'vit/dinov2_vitl14_reg4_pretrain.pth',
+ 'vit_giant2_reg': 'vit/dinov2_vitg14_reg4_pretrain.pth',
+}
\ No newline at end of file
diff --git a/finetune/Metric3D/data_info/public_datasets.py b/finetune/Metric3D/data_info/public_datasets.py
new file mode 100644
index 0000000000000000000000000000000000000000..d6b67618fff864bfc42cbf5609e17ad2e041b05d
--- /dev/null
+++ b/finetune/Metric3D/data_info/public_datasets.py
@@ -0,0 +1,7 @@
+mldb_info = {}
+
+mldb_info['NYU']={
+ 'mldb_root': '/mnt/nas/share/home/xugk/data/',
+ 'data_root': 'nyu',
+ 'test_annotations_path': 'nyu/test_annotation.json',
+}
diff --git a/finetune/Metric3D/hubconf.py b/finetune/Metric3D/hubconf.py
new file mode 100644
index 0000000000000000000000000000000000000000..a775f2cf135a62f4f9bb4f9578033a8d1180da5c
--- /dev/null
+++ b/finetune/Metric3D/hubconf.py
@@ -0,0 +1,224 @@
+dependencies = ['torch', 'torchvision']
+
+import os
+import torch
+try:
+ from mmcv.utils import Config, DictAction
+except:
+ from mmengine import Config, DictAction
+
+from mono.model.monodepth_model import get_configured_monodepth_model
+metric3d_dir = os.path.dirname(__file__)
+
+MODEL_TYPE = {
+ 'ConvNeXt-Tiny': {
+ 'cfg_file': f'{metric3d_dir}/mono/configs/HourglassDecoder/convtiny.0.3_150.py',
+ 'ckpt_file': 'https://huggingface.co/JUGGHM/Metric3D/resolve/main/convtiny_hourglass_v1.pth',
+ },
+ 'ConvNeXt-Large': {
+ 'cfg_file': f'{metric3d_dir}/mono/configs/HourglassDecoder/convlarge.0.3_150.py',
+ 'ckpt_file': 'https://huggingface.co/JUGGHM/Metric3D/resolve/main/convlarge_hourglass_0.3_150_step750k_v1.1.pth',
+ },
+ 'ViT-Small': {
+ 'cfg_file': f'{metric3d_dir}/mono/configs/HourglassDecoder/vit.raft5.small.py',
+ 'ckpt_file': 'https://huggingface.co/JUGGHM/Metric3D/resolve/main/metric_depth_vit_small_800k.pth',
+ },
+ 'ViT-Large': {
+ 'cfg_file': f'{metric3d_dir}/mono/configs/HourglassDecoder/vit.raft5.large.py',
+ 'ckpt_file': 'https://huggingface.co/JUGGHM/Metric3D/resolve/main/metric_depth_vit_large_800k.pth',
+ },
+ 'ViT-giant2': {
+ 'cfg_file': f'{metric3d_dir}/mono/configs/HourglassDecoder/vit.raft5.giant2.py',
+ 'ckpt_file': 'https://huggingface.co/JUGGHM/Metric3D/resolve/main/metric_depth_vit_giant2_800k.pth',
+ },
+}
+
+
+
+def metric3d_convnext_tiny(pretrain=False, **kwargs):
+ '''
+ Return a Metric3D model with ConvNeXt-Large backbone and Hourglass-Decoder head.
+ For usage examples, refer to: https://github.com/YvanYin/Metric3D/blob/main/hubconf.py
+ Args:
+ pretrain (bool): whether to load pretrained weights.
+ Returns:
+ model (nn.Module): a Metric3D model.
+ '''
+ cfg_file = MODEL_TYPE['ConvNeXt-Tiny']['cfg_file']
+ ckpt_file = MODEL_TYPE['ConvNeXt-Tiny']['ckpt_file']
+
+ cfg = Config.fromfile(cfg_file)
+ model = get_configured_monodepth_model(cfg)
+ if pretrain:
+ model.load_state_dict(
+ torch.hub.load_state_dict_from_url(ckpt_file)['model_state_dict'],
+ strict=False,
+ )
+ return model
+
+def metric3d_convnext_large(pretrain=False, **kwargs):
+ '''
+ Return a Metric3D model with ConvNeXt-Large backbone and Hourglass-Decoder head.
+ For usage examples, refer to: https://github.com/YvanYin/Metric3D/blob/main/hubconf.py
+ Args:
+ pretrain (bool): whether to load pretrained weights.
+ Returns:
+ model (nn.Module): a Metric3D model.
+ '''
+ cfg_file = MODEL_TYPE['ConvNeXt-Large']['cfg_file']
+ ckpt_file = MODEL_TYPE['ConvNeXt-Large']['ckpt_file']
+
+ cfg = Config.fromfile(cfg_file)
+ model = get_configured_monodepth_model(cfg)
+ if pretrain:
+ model.load_state_dict(
+ torch.hub.load_state_dict_from_url(ckpt_file)['model_state_dict'],
+ strict=False,
+ )
+ return model
+
+def metric3d_vit_small(pretrain=False, **kwargs):
+ '''
+ Return a Metric3D model with ViT-Small backbone and RAFT-4iter head.
+ For usage examples, refer to: https://github.com/YvanYin/Metric3D/blob/main/hubconf.py
+ Args:
+ pretrain (bool): whether to load pretrained weights.
+ Returns:
+ model (nn.Module): a Metric3D model.
+ '''
+ cfg_file = MODEL_TYPE['ViT-Small']['cfg_file']
+ ckpt_file = MODEL_TYPE['ViT-Small']['ckpt_file']
+
+ cfg = Config.fromfile(cfg_file)
+ model = get_configured_monodepth_model(cfg)
+ if pretrain:
+ model.load_state_dict(
+ torch.hub.load_state_dict_from_url(ckpt_file)['model_state_dict'],
+ strict=False,
+ )
+ return model
+
+def metric3d_vit_large(pretrain=False, **kwargs):
+ '''
+ Return a Metric3D model with ViT-Large backbone and RAFT-8iter head.
+ For usage examples, refer to: https://github.com/YvanYin/Metric3D/blob/main/hubconf.py
+ Args:
+ pretrain (bool): whether to load pretrained weights.
+ Returns:
+ model (nn.Module): a Metric3D model.
+ '''
+ cfg_file = MODEL_TYPE['ViT-Large']['cfg_file']
+ ckpt_file = MODEL_TYPE['ViT-Large']['ckpt_file']
+
+ cfg = Config.fromfile(cfg_file)
+ model = get_configured_monodepth_model(cfg)
+ if pretrain:
+ model.load_state_dict(
+ torch.hub.load_state_dict_from_url(ckpt_file)['model_state_dict'],
+ strict=False,
+ )
+ return model
+
+def metric3d_vit_giant2(pretrain=False, **kwargs):
+ '''
+ Return a Metric3D model with ViT-Giant2 backbone and RAFT-8iter head.
+ For usage examples, refer to: https://github.com/YvanYin/Metric3D/blob/main/hubconf.py
+ Args:
+ pretrain (bool): whether to load pretrained weights.
+ Returns:
+ model (nn.Module): a Metric3D model.
+ '''
+ cfg_file = MODEL_TYPE['ViT-giant2']['cfg_file']
+ ckpt_file = MODEL_TYPE['ViT-giant2']['ckpt_file']
+
+ cfg = Config.fromfile(cfg_file)
+ model = get_configured_monodepth_model(cfg)
+ if pretrain:
+ model.load_state_dict(
+ torch.hub.load_state_dict_from_url(ckpt_file)['model_state_dict'],
+ strict=False,
+ )
+ return model
+
+
+
+if __name__ == '__main__':
+ import cv2
+ import numpy as np
+ #### prepare data
+ rgb_file = 'data/kitti_demo/rgb/0000000050.png'
+ depth_file = 'data/kitti_demo/depth/0000000050.png'
+ intrinsic = [707.0493, 707.0493, 604.0814, 180.5066]
+ gt_depth_scale = 256.0
+ rgb_origin = cv2.imread(rgb_file)[:, :, ::-1]
+
+ #### ajust input size to fit pretrained model
+ # keep ratio resize
+ input_size = (616, 1064) # for vit model
+ # input_size = (544, 1216) # for convnext model
+ h, w = rgb_origin.shape[:2]
+ scale = min(input_size[0] / h, input_size[1] / w)
+ rgb = cv2.resize(rgb_origin, (int(w * scale), int(h * scale)), interpolation=cv2.INTER_LINEAR)
+ # remember to scale intrinsic, hold depth
+ intrinsic = [intrinsic[0] * scale, intrinsic[1] * scale, intrinsic[2] * scale, intrinsic[3] * scale]
+ # padding to input_size
+ padding = [123.675, 116.28, 103.53]
+ h, w = rgb.shape[:2]
+ pad_h = input_size[0] - h
+ pad_w = input_size[1] - w
+ pad_h_half = pad_h // 2
+ pad_w_half = pad_w // 2
+ rgb = cv2.copyMakeBorder(rgb, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=padding)
+ pad_info = [pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+
+ #### normalize
+ mean = torch.tensor([123.675, 116.28, 103.53]).float()[:, None, None]
+ std = torch.tensor([58.395, 57.12, 57.375]).float()[:, None, None]
+ rgb = torch.from_numpy(rgb.transpose((2, 0, 1))).float()
+ rgb = torch.div((rgb - mean), std)
+ rgb = rgb[None, :, :, :].cuda()
+
+ ###################### canonical camera space ######################
+ # inference
+ model = torch.hub.load('yvanyin/metric3d', 'metric3d_vit_small', pretrain=True)
+ model.cuda().eval()
+ with torch.no_grad():
+ pred_depth, confidence, output_dict = model.inference({'input': rgb})
+
+ # un pad
+ pred_depth = pred_depth.squeeze()
+ pred_depth = pred_depth[pad_info[0] : pred_depth.shape[0] - pad_info[1], pad_info[2] : pred_depth.shape[1] - pad_info[3]]
+
+ # upsample to original size
+ pred_depth = torch.nn.functional.interpolate(pred_depth[None, None, :, :], rgb_origin.shape[:2], mode='bilinear').squeeze()
+ ###################### canonical camera space ######################
+
+ #### de-canonical transform
+ canonical_to_real_scale = intrinsic[0] / 1000.0 # 1000.0 is the focal length of canonical camera
+ pred_depth = pred_depth * canonical_to_real_scale # now the depth is metric
+ pred_depth = torch.clamp(pred_depth, 0, 300)
+
+ #### you can now do anything with the metric depth
+ # such as evaluate predicted depth
+ if depth_file is not None:
+ gt_depth = cv2.imread(depth_file, -1)
+ gt_depth = gt_depth / gt_depth_scale
+ gt_depth = torch.from_numpy(gt_depth).float().cuda()
+ assert gt_depth.shape == pred_depth.shape
+
+ mask = (gt_depth > 1e-8)
+ abs_rel_err = (torch.abs(pred_depth[mask] - gt_depth[mask]) / gt_depth[mask]).mean()
+ print('abs_rel_err:', abs_rel_err.item())
+
+ #### normal are also available
+ if 'prediction_normal' in output_dict: # only available for Metric3Dv2, i.e. vit model
+ pred_normal = output_dict['prediction_normal'][:, :3, :, :]
+ normal_confidence = output_dict['prediction_normal'][:, 3, :, :] # see https://arxiv.org/abs/2109.09881 for details
+ # un pad and resize to some size if needed
+ pred_normal = pred_normal.squeeze()
+ pred_normal = pred_normal[:, pad_info[0] : pred_normal.shape[1] - pad_info[1], pad_info[2] : pred_normal.shape[2] - pad_info[3]]
+ # you can now do anything with the normal
+ # such as visualize pred_normal
+ pred_normal_vis = pred_normal.cpu().numpy().transpose((1, 2, 0))
+ pred_normal_vis = (pred_normal_vis + 1) / 2
+ cv2.imwrite('normal_vis.png', (pred_normal_vis * 255).astype(np.uint8))
\ No newline at end of file
diff --git a/finetune/Metric3D/media/gifs/demo_1.gif b/finetune/Metric3D/media/gifs/demo_1.gif
new file mode 100644
index 0000000000000000000000000000000000000000..778f5293416d638c6918206e8b450a6ec5f1ec2c
--- /dev/null
+++ b/finetune/Metric3D/media/gifs/demo_1.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f07ee050ca8b76991966f45bb74eae6e61e6b11eeb9466b524c6ab5164711d36
+size 10693260
diff --git a/finetune/Metric3D/media/gifs/demo_12.gif b/finetune/Metric3D/media/gifs/demo_12.gif
new file mode 100644
index 0000000000000000000000000000000000000000..dbed9296e787d0c91844b83c2e51a5357395b1d9
--- /dev/null
+++ b/finetune/Metric3D/media/gifs/demo_12.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1886d6dff7714d015e6b7c004d88d3014057b1cefe1dc5544fa9bedb81383bc
+size 9414756
diff --git a/finetune/Metric3D/media/gifs/demo_2.gif b/finetune/Metric3D/media/gifs/demo_2.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f1e0c7476553812836ef197804776c47062985d6
--- /dev/null
+++ b/finetune/Metric3D/media/gifs/demo_2.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d11e3f9a11374166fc363a3fed17928957de546a548eccc4c7efa4d9317cf4c5
+size 9023151
diff --git a/finetune/Metric3D/media/gifs/demo_22.gif b/finetune/Metric3D/media/gifs/demo_22.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6a093b3ec4deac3034bfd229e9bcfdbb0240cd25
--- /dev/null
+++ b/finetune/Metric3D/media/gifs/demo_22.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c56b0785a5991126d02b349f8801980f31b2ef7b661cad07be4888ff42dc29d0
+size 6390996
diff --git a/finetune/Metric3D/media/screenshots/challenge.PNG b/finetune/Metric3D/media/screenshots/challenge.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..38cc1bdb28953e2ae00f592cd19256f8b6ec7a4d
--- /dev/null
+++ b/finetune/Metric3D/media/screenshots/challenge.PNG
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cde4895922d3bd0b4ced1ef80352c2ad154e6225efc403335dff15d42c6974b2
+size 138542
diff --git a/finetune/Metric3D/media/screenshots/depth_normal.jpg b/finetune/Metric3D/media/screenshots/depth_normal.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cafb2a798a484686b73fd81dc3b17d8a65b2a891
--- /dev/null
+++ b/finetune/Metric3D/media/screenshots/depth_normal.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b79635e71ff5409592302067bc7b6347db3447f99f62bd6393b674b2556cbac6
+size 2994133
diff --git a/finetune/Metric3D/media/screenshots/metrology.jpg b/finetune/Metric3D/media/screenshots/metrology.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fd72eaf2406ed9a9ed2c71e5ab877193f9eacc4a
--- /dev/null
+++ b/finetune/Metric3D/media/screenshots/metrology.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09e1fb9d08df85528e10a30b147b939f704c712b7e4b823cb54325f4f3cdd8c4
+size 1244515
diff --git a/finetune/Metric3D/media/screenshots/page2.png b/finetune/Metric3D/media/screenshots/page2.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d77ac08d1488d1e1f39d232247b15f35fc26ff3
--- /dev/null
+++ b/finetune/Metric3D/media/screenshots/page2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c46a332e0f9f868c767f65f70c0fa11ec4f7da2dfe69d47046dff5c37964c171
+size 4347474
diff --git a/finetune/Metric3D/media/screenshots/pipeline.png b/finetune/Metric3D/media/screenshots/pipeline.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec566b347f5628fa4bd53cdd38d5549902f68eee
--- /dev/null
+++ b/finetune/Metric3D/media/screenshots/pipeline.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19a7b36e83761aae0ecd27e1215e31fded8c9ef3d308734e690456921703f662
+size 398892
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/convlarge.0.3_150.py b/finetune/Metric3D/mono/configs/HourglassDecoder/convlarge.0.3_150.py
new file mode 100644
index 0000000000000000000000000000000000000000..37b91c80284d6db3df3017ec636f18198e42dc08
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/convlarge.0.3_150.py
@@ -0,0 +1,25 @@
+_base_=[
+ '../_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+model = dict(
+ backbone=dict(
+ pretrained=False,
+ )
+)
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(512, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.3, 150),
+ crop_size = (544, 1216),
+)
+
+batchsize_per_gpu = 2
+thread_per_gpu = 4
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/convtiny.0.3_150.py b/finetune/Metric3D/mono/configs/HourglassDecoder/convtiny.0.3_150.py
new file mode 100644
index 0000000000000000000000000000000000000000..87ae44b2b45b584910319928f0e670190353a3b2
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/convtiny.0.3_150.py
@@ -0,0 +1,25 @@
+_base_=[
+ '../_base_/models/encoder_decoder/convnext_tiny.hourglassdecoder.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+model = dict(
+ backbone=dict(
+ pretrained=False,
+ )
+)
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(512, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.3, 150),
+ crop_size = (544, 1216),
+)
+
+batchsize_per_gpu = 2
+thread_per_gpu = 4
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/test_kitti_convlarge.0.3_150.py b/finetune/Metric3D/mono/configs/HourglassDecoder/test_kitti_convlarge.0.3_150.py
new file mode 100644
index 0000000000000000000000000000000000000000..cdd9156b7f2f0921fb01b1adaf9a2a7447332d6e
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/test_kitti_convlarge.0.3_150.py
@@ -0,0 +1,25 @@
+_base_=[
+ '../_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+model = dict(
+ backbone=dict(
+ pretrained=False,
+ )
+)
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(512, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.3, 150),
+ crop_size = (512, 1088),
+)
+
+batchsize_per_gpu = 2
+thread_per_gpu = 4
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/test_nyu_convlarge.0.3_150.py b/finetune/Metric3D/mono/configs/HourglassDecoder/test_nyu_convlarge.0.3_150.py
new file mode 100644
index 0000000000000000000000000000000000000000..6601f5cdfad07c5fad8b89fbf959e67039126dfa
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/test_nyu_convlarge.0.3_150.py
@@ -0,0 +1,25 @@
+_base_=[
+ '../_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+model = dict(
+ backbone=dict(
+ pretrained=False,
+ )
+)
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(512, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.3, 150),
+ crop_size = (480, 1216),
+)
+
+batchsize_per_gpu = 2
+thread_per_gpu = 4
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.giant2.py b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.giant2.py
new file mode 100644
index 0000000000000000000000000000000000000000..caf9eb2a8175ff7ec4a294194e582c3fea6b0cd7
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.giant2.py
@@ -0,0 +1,33 @@
+_base_=[
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+
+max_value = 200
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, max_value),
+ crop_size = (616, 1064), # %28 = 0
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064)
+)
+
+batchsize_per_gpu = 1
+thread_per_gpu = 1
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.large.py b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.large.py
new file mode 100644
index 0000000000000000000000000000000000000000..4febdcb2867513008496f394ce8dc513230fb480
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.large.py
@@ -0,0 +1,33 @@
+_base_=[
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+
+max_value = 200
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, max_value),
+ crop_size = (616, 1064), # %28 = 0
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064)
+)
+
+batchsize_per_gpu = 1
+thread_per_gpu = 1
diff --git a/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.small.py b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.small.py
new file mode 100644
index 0000000000000000000000000000000000000000..25eb68cc151f090c7654b7ebbcaf9dfc6a478570
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/HourglassDecoder/vit.raft5.small.py
@@ -0,0 +1,33 @@
+_base_=[
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/default_runtime.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+
+max_value = 200
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, max_value),
+ crop_size = (616, 1064), # %28 = 0
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064)
+)
+
+batchsize_per_gpu = 1
+thread_per_gpu = 1
diff --git a/finetune/Metric3D/mono/configs/__init__.py b/finetune/Metric3D/mono/configs/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/__init__.py
@@ -0,0 +1 @@
+
diff --git a/finetune/Metric3D/mono/configs/_base_/_data_base_.py b/finetune/Metric3D/mono/configs/_base_/_data_base_.py
new file mode 100644
index 0000000000000000000000000000000000000000..35f3844f24191b6b9452e136ea3205b7622466d7
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/_data_base_.py
@@ -0,0 +1,13 @@
+# canonical camera setting and basic data setting
+# we set it same as the E300 camera (crop version)
+#
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1196.0,
+ ),
+ depth_range=(0.9, 150),
+ depth_normalize=(0.006, 1.001),
+ crop_size = (512, 960),
+ clip_depth_range=(0.9, 150),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/datasets/_data_base_.py b/finetune/Metric3D/mono/configs/_base_/datasets/_data_base_.py
new file mode 100644
index 0000000000000000000000000000000000000000..b554444e9b75b4519b862e726890dcf7859be0ec
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/datasets/_data_base_.py
@@ -0,0 +1,12 @@
+# canonical camera setting and basic data setting
+#
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1196.0,
+ ),
+ depth_range=(0.9, 150),
+ depth_normalize=(0.006, 1.001),
+ crop_size = (512, 960),
+ clip_depth_range=(0.9, 150),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/default_runtime.py b/finetune/Metric3D/mono/configs/_base_/default_runtime.py
new file mode 100644
index 0000000000000000000000000000000000000000..a690b491bf50aad5c2fd7e9ac387609123a4594a
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/default_runtime.py
@@ -0,0 +1,4 @@
+
+load_from = None
+cudnn_benchmark = True
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3','rmse_log', 'log10', 'sq_rel']
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_large.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_large.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a22f7e1b53ca154bfae1672e6ee3b52028039b9
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_large.py
@@ -0,0 +1,16 @@
+#_base_ = ['./_model_base_.py',]
+
+#'https://download.openmmlab.com/mmclassification/v0/convnext/downstream/convnext-large_3rdparty_in21k_20220301-e6e0ea0a.pth'
+model = dict(
+ #type='EncoderDecoderAuxi',
+ backbone=dict(
+ type='convnext_large',
+ pretrained=True,
+ in_22k=True,
+ out_indices=[0, 1, 2, 3],
+ drop_path_rate=0.4,
+ layer_scale_init_value=1.0,
+ checkpoint='data/pretrained_weight_repo/convnext/convnext_large_22k_1k_384.pth',
+ prefix='backbones.',
+ out_channels=[192, 384, 768, 1536]),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_tiny.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_tiny.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3068c178a1e9eace4e6bacabb83abadc25a460b
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/convnext_tiny.py
@@ -0,0 +1,16 @@
+#_base_ = ['./_model_base_.py',]
+
+#'https://download.openmmlab.com/mmclassification/v0/convnext/downstream/convnext-large_3rdparty_in21k_20220301-e6e0ea0a.pth'
+model = dict(
+ #type='EncoderDecoderAuxi',
+ backbone=dict(
+ type='convnext_tiny',
+ pretrained=True,
+ in_22k=True,
+ out_indices=[0, 1, 2, 3],
+ drop_path_rate=0.4,
+ layer_scale_init_value=1.0,
+ checkpoint='',
+ prefix='backbones.',
+ out_channels=[96, 192, 384, 768]),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c1ebc96ceaa32ad9310d3b84d55d252be843c46
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_giant2_reg',
+ prefix='backbones.',
+ out_channels=[1536, 1536, 1536, 1536],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large.py
new file mode 100644
index 0000000000000000000000000000000000000000..843178ed6e61d74070b971f01148f87fdf2a62cf
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_large',
+ prefix='backbones.',
+ out_channels=[1024, 1024, 1024, 1024],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large_reg.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..25e96747d459d42df299f8a6a1e14044a0e56164
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_large_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_large_reg',
+ prefix='backbones.',
+ out_channels=[1024, 1024, 1024, 1024],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_small_reg.py b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_small_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c8bd97dccb9cdee7517250f40e01bb3124144e6
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/backbones/dino_vit_small_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_small_reg',
+ prefix='backbones.',
+ out_channels=[384, 384, 384, 384],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..f262288c49e7ffccb6174b09b0daf80ff79dd684
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_large.hourglassdecoder.py
@@ -0,0 +1,10 @@
+# model settings
+_base_ = ['../backbones/convnext_large.py',]
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='HourglassDecoder',
+ in_channels=[192, 384, 768, 1536],
+ decoder_channel=[128, 128, 256, 512],
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_tiny.hourglassdecoder.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_tiny.hourglassdecoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..c94065133698d296eb422f5fd9717321174e7137
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/convnext_tiny.hourglassdecoder.py
@@ -0,0 +1,10 @@
+# model settings
+_base_ = ['../backbones/convnext_tiny.py',]
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='HourglassDecoder',
+ in_channels=[96, 192, 384, 768],
+ decoder_channel=[64, 64, 128, 256],
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..73702d298c05979bcdf013e9c30ec56f4e36665b
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_giant2_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[1536, 1536, 1536, 1536],
+ use_cls_token=True,
+ feature_channels = [384, 768, 1536, 1536], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [192, 384, 768, 1536, 1536], # [4/7, 2/7, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[192, 192, 192, 192], # [x_4, x_8, x_16, x_32] [192, 384, 768, 1536]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large.dpt_raft.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..bd69efefab2c03de435996c6b7b65ff941db1e5d
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large.dpt_raft.py
@@ -0,0 +1,20 @@
+# model settings
+_base_ = ['../backbones/dino_vit_large.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[1024, 1024, 1024, 1024],
+ use_cls_token=True,
+ feature_channels = [256, 512, 1024, 1024], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [128, 256, 512, 1024, 1024], # [4/7, 2/7, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[128, 128, 128, 128], # [x_4, x_8, x_16, x_32] [192, 384, 768, 1536]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=12,
+ slow_fast_gru=True,
+ corr_radius=4,
+ corr_levels=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..26ab6dc090e9cdb840d84fab10587becb536dbb8
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_large_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[1024, 1024, 1024, 1024],
+ use_cls_token=True,
+ feature_channels = [256, 512, 1024, 1024], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [128, 256, 512, 1024, 1024], # [4/7, 2/7, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[128, 128, 128, 128], # [x_4, x_8, x_16, x_32] [192, 384, 768, 1536]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..19466c191e9f2a83903e55ca4fc0827d9a11bcb9
--- /dev/null
+++ b/finetune/Metric3D/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_small_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[384, 384, 384, 384],
+ use_cls_token=True,
+ feature_channels = [96, 192, 384, 768], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [48, 96, 192, 384, 384], # [-, 1/4, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[48, 48, 48, 48], # [x_4, x_8, x_16, x_32] [1/4, 1/7, 1/14, -]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/mono/model/__init__.py b/finetune/Metric3D/mono/model/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e1ea3d3e3b880e28ef880083b3c79e3b00cd119
--- /dev/null
+++ b/finetune/Metric3D/mono/model/__init__.py
@@ -0,0 +1,5 @@
+from .monodepth_model import DepthModel
+# from .__base_model__ import BaseDepthModel
+
+
+__all__ = ['DepthModel', 'BaseDepthModel']
diff --git a/finetune/Metric3D/mono/model/backbones/ConvNeXt.py b/finetune/Metric3D/mono/model/backbones/ConvNeXt.py
new file mode 100644
index 0000000000000000000000000000000000000000..f1c4be0e6463ae2b0dda6d20fc273a300afa5ebf
--- /dev/null
+++ b/finetune/Metric3D/mono/model/backbones/ConvNeXt.py
@@ -0,0 +1,271 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from timm.models.layers import trunc_normal_, DropPath
+from timm.models.registry import register_model
+
+class Block(nn.Module):
+ r""" ConvNeXt Block. There are two equivalent implementations:
+ (1) DwConv -> LayerNorm (channels_first) -> 1x1 Conv -> GELU -> 1x1 Conv; all in (N, C, H, W)
+ (2) DwConv -> Permute to (N, H, W, C); LayerNorm (channels_last) -> Linear -> GELU -> Linear; Permute back
+ We use (2) as we find it slightly faster in PyTorch
+
+ Args:
+ dim (int): Number of input channels.
+ drop_path (float): Stochastic depth rate. Default: 0.0
+ layer_scale_init_value (float): Init value for Layer Scale. Default: 1e-6.
+ """
+ def __init__(self, dim, drop_path=0., layer_scale_init_value=1e-6):
+ super().__init__()
+ self.dwconv = nn.Conv2d(dim, dim, kernel_size=7, padding=3, groups=dim) # depthwise conv
+ self.norm = LayerNorm(dim, eps=1e-6)
+ self.pwconv1 = nn.Linear(dim, 4 * dim) # pointwise/1x1 convs, implemented with linear layers
+ self.act = nn.GELU()
+ self.pwconv2 = nn.Linear(4 * dim, dim)
+ self.gamma = nn.Parameter(layer_scale_init_value * torch.ones((dim)),
+ requires_grad=True) if layer_scale_init_value > 0 else None
+ self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
+
+ def forward(self, x):
+ input = x
+ x = self.dwconv(x)
+ x = x.permute(0, 2, 3, 1) # (N, C, H, W) -> (N, H, W, C)
+ x = self.norm(x)
+ x = self.pwconv1(x)
+ x = self.act(x)
+ x = self.pwconv2(x)
+ if self.gamma is not None:
+ x = self.gamma * x
+ x = x.permute(0, 3, 1, 2) # (N, H, W, C) -> (N, C, H, W)
+
+ x = input + self.drop_path(x)
+ return x
+
+class ConvNeXt(nn.Module):
+ r""" ConvNeXt
+ A PyTorch impl of : `A ConvNet for the 2020s` -
+ https://arxiv.org/pdf/2201.03545.pdf
+ Args:
+ in_chans (int): Number of input image channels. Default: 3
+ num_classes (int): Number of classes for classification head. Default: 1000
+ depths (tuple(int)): Number of blocks at each stage. Default: [3, 3, 9, 3]
+ dims (int): Feature dimension at each stage. Default: [96, 192, 384, 768]
+ drop_path_rate (float): Stochastic depth rate. Default: 0.
+ layer_scale_init_value (float): Init value for Layer Scale. Default: 1e-6.
+ head_init_scale (float): Init scaling value for classifier weights and biases. Default: 1.
+ """
+ def __init__(self, in_chans=3, num_classes=1000,
+ depths=[3, 3, 9, 3], dims=[96, 192, 384, 768], drop_path_rate=0.,
+ layer_scale_init_value=1e-6, head_init_scale=1.,
+ **kwargs,):
+ super().__init__()
+
+ self.downsample_layers = nn.ModuleList() # stem and 3 intermediate downsampling conv layers
+ stem = nn.Sequential(
+ nn.Conv2d(in_chans, dims[0], kernel_size=4, stride=4),
+ LayerNorm(dims[0], eps=1e-6, data_format="channels_first")
+ )
+ self.downsample_layers.append(stem)
+ for i in range(3):
+ downsample_layer = nn.Sequential(
+ LayerNorm(dims[i], eps=1e-6, data_format="channels_first"),
+ nn.Conv2d(dims[i], dims[i+1], kernel_size=2, stride=2),
+ )
+ self.downsample_layers.append(downsample_layer)
+
+ self.stages = nn.ModuleList() # 4 feature resolution stages, each consisting of multiple residual blocks
+ dp_rates=[x.item() for x in torch.linspace(0, drop_path_rate, sum(depths))]
+ cur = 0
+ for i in range(4):
+ stage = nn.Sequential(
+ *[Block(dim=dims[i], drop_path=dp_rates[cur + j],
+ layer_scale_init_value=layer_scale_init_value) for j in range(depths[i])]
+ )
+ self.stages.append(stage)
+ cur += depths[i]
+
+ #self.norm = nn.LayerNorm(dims[-1], eps=1e-6) # final norm layer
+ #self.head = nn.Linear(dims[-1], num_classes)
+
+ self.apply(self._init_weights)
+ #self.head.weight.data.mul_(head_init_scale)
+ #self.head.bias.data.mul_(head_init_scale)
+
+ def _init_weights(self, m):
+ if isinstance(m, (nn.Conv2d, nn.Linear)):
+ trunc_normal_(m.weight, std=.02)
+ nn.init.constant_(m.bias, 0)
+
+ def forward_features(self, x):
+ features = []
+ for i in range(4):
+ x = self.downsample_layers[i](x)
+ x = self.stages[i](x)
+ features.append(x)
+ return features # global average pooling, (N, C, H, W) -> (N, C)
+
+ def forward(self, x):
+ #x = self.forward_features(x)
+ #x = self.head(x)
+ features = self.forward_features(x)
+ return features
+
+class LayerNorm(nn.Module):
+ r""" LayerNorm that supports two data formats: channels_last (default) or channels_first.
+ The ordering of the dimensions in the inputs. channels_last corresponds to inputs with
+ shape (batch_size, height, width, channels) while channels_first corresponds to inputs
+ with shape (batch_size, channels, height, width).
+ """
+ def __init__(self, normalized_shape, eps=1e-6, data_format="channels_last"):
+ super().__init__()
+ self.weight = nn.Parameter(torch.ones(normalized_shape))
+ self.bias = nn.Parameter(torch.zeros(normalized_shape))
+ self.eps = eps
+ self.data_format = data_format
+ if self.data_format not in ["channels_last", "channels_first"]:
+ raise NotImplementedError
+ self.normalized_shape = (normalized_shape, )
+
+ def forward(self, x):
+ if self.data_format == "channels_last":
+ return F.layer_norm(x, self.normalized_shape, self.weight, self.bias, self.eps)
+ elif self.data_format == "channels_first":
+ u = x.mean(1, keepdim=True)
+ s = (x - u).pow(2).mean(1, keepdim=True)
+ x = (x - u) / torch.sqrt(s + self.eps)
+ x = self.weight[:, None, None] * x + self.bias[:, None, None]
+ return x
+
+
+model_urls = {
+ "convnext_tiny_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pth",
+ "convnext_small_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224_ema.pth",
+ "convnext_base_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224_ema.pth",
+ "convnext_large_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_large_1k_224_ema.pth",
+ "convnext_tiny_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_tiny_22k_224.pth",
+ "convnext_small_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_small_22k_224.pth",
+ "convnext_base_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_224.pth",
+ "convnext_large_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth",
+ "convnext_xlarge_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_224.pth",
+}
+
+def convnext_tiny(pretrained=True,in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 9, 3], dims=[96, 192, 384, 768], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_tiny_22k'] if in_22k else model_urls['convnext_tiny_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu", check_hash=True)
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d params, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are :', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_small(pretrained=True,in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[96, 192, 384, 768], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_small_22k'] if in_22k else model_urls['convnext_small_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d params, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are :', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_base(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[128, 256, 512, 1024], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_base_22k'] if in_22k else model_urls['convnext_base_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d params, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are :', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_large(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[192, 384, 768, 1536], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_large_22k'] if in_22k else model_urls['convnext_large_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d params, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are :', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_xlarge(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[256, 512, 1024, 2048], **kwargs)
+ if pretrained:
+ assert in_22k, "only ImageNet-22K pre-trained ConvNeXt-XL is available; please set in_22k=True"
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_xlarge_22k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d params, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are :', unmatched_pretrained_dict.keys())
+ return model
+
+if __name__ == '__main__':
+ import torch
+ model = convnext_base(True, in_22k=False).cuda()
+
+ rgb = torch.rand((2, 3, 256, 256)).cuda()
+ out = model(rgb)
+ print(len(out))
+ for i, ft in enumerate(out):
+ print(i, ft.shape)
diff --git a/finetune/Metric3D/mono/model/backbones/ViT_DINO.py b/finetune/Metric3D/mono/model/backbones/ViT_DINO.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ba2d39360674924303e6e0354dfb02742ea25c9
--- /dev/null
+++ b/finetune/Metric3D/mono/model/backbones/ViT_DINO.py
@@ -0,0 +1,1504 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+# All rights reserved.
+#
+# This source code is licensed under the license found in the
+# LICENSE file in the root directory of this source tree.
+
+# References:
+# https://github.com/facebookresearch/dino/blob/main/vision_transformer.py
+# https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py
+
+from functools import partial
+import math
+import logging
+from typing import Sequence, Tuple, Union, Callable, Optional, Dict, Any, List
+
+import torch
+import torch.nn as nn
+from torch import Tensor
+import torch.utils.checkpoint
+from torch.nn.init import trunc_normal_
+
+#from dinov2.layers import Mlp, PatchEmbed, SwiGLUFFNFused, MemEffAttention, NestedTensorBlock as Block
+
+logger = logging.getLogger("dinov2")
+
+class ConvBlock(nn.Module):
+ def __init__(self, channels):
+ super(ConvBlock, self).__init__()
+
+ self.act = nn.ReLU(inplace=True)
+ self.conv1 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm1 = nn.BatchNorm2d(channels)
+ self.conv2 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm2 = nn.BatchNorm2d(channels)
+
+ def forward(self, x):
+
+ out = self.norm1(x)
+ out = self.act(out)
+ out = self.conv1(out)
+ out = self.norm2(out)
+ out = self.act(out)
+ out = self.conv2(out)
+ return x + out
+
+def make_2tuple(x):
+ if isinstance(x, tuple):
+ assert len(x) == 2
+ return x
+
+ assert isinstance(x, int)
+ return (x, x)
+
+def drop_path(x, drop_prob: float = 0.0, training: bool = False):
+ if drop_prob == 0.0 or not training:
+ return x
+ keep_prob = 1 - drop_prob
+ shape = (x.shape[0],) + (1,) * (x.ndim - 1) # work with diff dim tensors, not just 2D ConvNets
+ random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
+ if keep_prob > 0.0:
+ random_tensor.div_(keep_prob)
+ output = x * random_tensor
+ return output
+
+class DropPath(nn.Module):
+ """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""
+
+ def __init__(self, drop_prob=None):
+ super(DropPath, self).__init__()
+ self.drop_prob = drop_prob
+
+ def forward(self, x):
+ return drop_path(x, self.drop_prob, self.training)
+
+class LayerScale(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ init_values: Union[float, Tensor] = 1e-5,
+ inplace: bool = False,
+ ) -> None:
+ super().__init__()
+ self.inplace = inplace
+ self.gamma = nn.Parameter(init_values * torch.ones(dim))
+
+ def forward(self, x: Tensor) -> Tensor:
+ return x.mul_(self.gamma) if self.inplace else x * self.gamma
+
+
+class PatchEmbed(nn.Module):
+ """
+ 2D image to patch embedding: (B,C,H,W) -> (B,N,D)
+
+ Args:
+ img_size: Image size.
+ patch_size: Patch token size.
+ in_chans: Number of input image channels.
+ embed_dim: Number of linear projection output channels.
+ norm_layer: Normalization layer.
+ """
+
+ def __init__(
+ self,
+ img_size: Union[int, Tuple[int, int]] = 224,
+ patch_size: Union[int, Tuple[int, int]] = 16,
+ in_chans: int = 3,
+ embed_dim: int = 768,
+ norm_layer: Optional[Callable] = None,
+ flatten_embedding: bool = True,
+ ) -> None:
+ super().__init__()
+
+ image_HW = make_2tuple(img_size)
+ patch_HW = make_2tuple(patch_size)
+ patch_grid_size = (
+ image_HW[0] // patch_HW[0],
+ image_HW[1] // patch_HW[1],
+ )
+
+ self.img_size = image_HW
+ self.patch_size = patch_HW
+ self.patches_resolution = patch_grid_size
+ self.num_patches = patch_grid_size[0] * patch_grid_size[1]
+
+ self.in_chans = in_chans
+ self.embed_dim = embed_dim
+
+ self.flatten_embedding = flatten_embedding
+
+ self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_HW, stride=patch_HW)
+ self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()
+
+ def forward(self, x: Tensor) -> Tensor:
+ _, _, H, W = x.shape
+ patch_H, patch_W = self.patch_size
+
+ assert H % patch_H == 0, f"Input image height {H} is not a multiple of patch height {patch_H}"
+ assert W % patch_W == 0, f"Input image width {W} is not a multiple of patch width: {patch_W}"
+
+ x = self.proj(x) # B C H W
+ H, W = x.size(2), x.size(3)
+ x = x.flatten(2).transpose(1, 2) # B HW C
+ x = self.norm(x)
+ if not self.flatten_embedding:
+ x = x.reshape(-1, H, W, self.embed_dim) # B H W C
+ return x
+
+ def flops(self) -> float:
+ Ho, Wo = self.patches_resolution
+ flops = Ho * Wo * self.embed_dim * self.in_chans * (self.patch_size[0] * self.patch_size[1])
+ if self.norm is not None:
+ flops += Ho * Wo * self.embed_dim
+ return flops
+
+class Mlp(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.fc1 = nn.Linear(in_features, hidden_features, bias=bias)
+ self.act = act_layer()
+ self.fc2 = nn.Linear(hidden_features, out_features, bias=bias)
+ self.drop = nn.Dropout(drop)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x = self.fc1(x)
+ x = self.act(x)
+ x = self.drop(x)
+ x = self.fc2(x)
+ x = self.drop(x)
+ return x
+
+
+class SwiGLUFFN(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.w12 = nn.Linear(in_features, 2 * hidden_features, bias=bias)
+ self.w3 = nn.Linear(hidden_features, out_features, bias=bias)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x12 = self.w12(x)
+ x1, x2 = x12.chunk(2, dim=-1)
+ hidden = F.silu(x1) * x2
+ return self.w3(hidden)
+
+
+try:
+ from xformers.ops import SwiGLU
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ SwiGLU = SwiGLUFFN
+ XFORMERS_AVAILABLE = False
+
+class SwiGLUFFNFused(SwiGLU):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
+ super().__init__(
+ in_features=in_features,
+ hidden_features=hidden_features,
+ out_features=out_features,
+ bias=bias,
+ )
+
+
+try:
+ from xformers.ops import memory_efficient_attention, unbind, fmha
+ from xformers.components.attention import ScaledDotProduct
+ from xformers.components import MultiHeadDispatch
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+
+class Attention(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int = 8,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ attn_drop: float = 0.0,
+ proj_drop: float = 0.0,
+ window_size: int = 0,
+ ) -> None:
+ super().__init__()
+ self.num_heads = num_heads
+ head_dim = dim // num_heads
+ self.scale = head_dim**-0.5
+
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
+ self.attn_drop = nn.Dropout(attn_drop)
+ self.proj = nn.Linear(dim, dim, bias=proj_bias)
+ self.proj_drop = nn.Dropout(proj_drop)
+
+ #if not self.training:
+ #
+ # self.attn = ScaledDotProduct()
+ #self.attn = MultiHeadDispatch(dim_model=EMB, residual_dropout=DROPOUT, num_heads=HEADS, attention=attn)
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
+
+ q, k, v = qkv[0] * self.scale, qkv[1], qkv[2]
+ attn = q @ k.transpose(-2, -1)
+
+ if attn_bias is not None:
+ attn = attn + attn_bias[:, :, :N]
+
+ attn = attn.softmax(dim=-1)
+ attn = self.attn_drop(attn)
+
+ x = (attn @ v).transpose(1, 2).reshape(B, N, C)
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+
+class MemEffAttention(Attention):
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ if not XFORMERS_AVAILABLE:
+ #if True:
+ assert attn_bias is None, "xFormers is required for nested tensors usage"
+ return super().forward(x, attn_bias)
+
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads)
+
+ q, k, v = unbind(qkv, 2)
+ if attn_bias is not None:
+ x = memory_efficient_attention(q, k, v, attn_bias=attn_bias[:, :, :N])
+ else:
+ x = memory_efficient_attention(q, k, v)
+ x = x.reshape([B, N, C])
+
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+try:
+ from xformers.ops import fmha
+ from xformers.ops import scaled_index_add, index_select_cat
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+class Block(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int,
+ mlp_ratio: float = 4.0,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ ffn_bias: bool = True,
+ drop: float = 0.0,
+ attn_drop: float = 0.0,
+ init_values = None,
+ drop_path: float = 0.0,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ norm_layer: Callable[..., nn.Module] = nn.LayerNorm,
+ attn_class: Callable[..., nn.Module] = Attention,
+ ffn_layer: Callable[..., nn.Module] = Mlp,
+ ) -> None:
+ super().__init__()
+ # print(f"biases: qkv: {qkv_bias}, proj: {proj_bias}, ffn: {ffn_bias}")
+ self.norm1 = norm_layer(dim)
+ self.attn = attn_class(
+ dim,
+ num_heads=num_heads,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ attn_drop=attn_drop,
+ proj_drop=drop,
+ )
+ self.ls1 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path1 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.norm2 = norm_layer(dim)
+ mlp_hidden_dim = int(dim * mlp_ratio)
+ self.mlp = ffn_layer(
+ in_features=dim,
+ hidden_features=mlp_hidden_dim,
+ act_layer=act_layer,
+ drop=drop,
+ bias=ffn_bias,
+ )
+ self.ls2 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path2 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.sample_drop_ratio = drop_path
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ def attn_residual_func(x: Tensor, attn_bias) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias))
+
+ def ffn_residual_func(x: Tensor) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ if self.training and self.sample_drop_ratio > 0.1:
+ # the overhead is compensated only for a drop path rate larger than 0.1
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ attn_bias=attn_bias
+ )
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ )
+ elif self.training and self.sample_drop_ratio > 0.0:
+ x = x + self.drop_path1(attn_residual_func(x, attn_bias))
+ x = x + self.drop_path1(ffn_residual_func(x)) # FIXME: drop_path2
+ else:
+ x = x + attn_residual_func(x, attn_bias)
+ x = x + ffn_residual_func(x)
+ return x
+
+
+def drop_add_residual_stochastic_depth(
+ x: Tensor,
+ residual_func: Callable[[Tensor], Tensor],
+ sample_drop_ratio: float = 0.0, attn_bias=None
+) -> Tensor:
+ # 1) extract subset using permutation
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ x_subset = x[brange]
+
+ # 2) apply residual_func to get residual
+ residual = residual_func(x_subset, attn_bias)
+
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+
+ residual_scale_factor = b / sample_subset_size
+
+ # 3) add the residual
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ return x_plus_residual.view_as(x)
+
+
+def get_branges_scales(x, sample_drop_ratio=0.0):
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ residual_scale_factor = b / sample_subset_size
+ return brange, residual_scale_factor
+
+
+def add_residual(x, brange, residual, residual_scale_factor, scaling_vector=None):
+ if scaling_vector is None:
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ else:
+ x_plus_residual = scaled_index_add(
+ x, brange, residual.to(dtype=x.dtype), scaling=scaling_vector, alpha=residual_scale_factor
+ )
+ return x_plus_residual
+
+
+attn_bias_cache: Dict[Tuple, Any] = {}
+
+
+def get_attn_bias_and_cat(x_list, branges=None):
+ """
+ this will perform the index select, cat the tensors, and provide the attn_bias from cache
+ """
+ batch_sizes = [b.shape[0] for b in branges] if branges is not None else [x.shape[0] for x in x_list]
+ all_shapes = tuple((b, x.shape[1]) for b, x in zip(batch_sizes, x_list))
+ if all_shapes not in attn_bias_cache.keys():
+ seqlens = []
+ for b, x in zip(batch_sizes, x_list):
+ for _ in range(b):
+ seqlens.append(x.shape[1])
+ attn_bias = fmha.BlockDiagonalMask.from_seqlens(seqlens)
+ attn_bias._batch_sizes = batch_sizes
+ attn_bias_cache[all_shapes] = attn_bias
+
+ if branges is not None:
+ cat_tensors = index_select_cat([x.flatten(1) for x in x_list], branges).view(1, -1, x_list[0].shape[-1])
+ else:
+ tensors_bs1 = tuple(x.reshape([1, -1, *x.shape[2:]]) for x in x_list)
+ cat_tensors = torch.cat(tensors_bs1, dim=1)
+
+ return attn_bias_cache[all_shapes], cat_tensors
+
+
+def drop_add_residual_stochastic_depth_list(
+ x_list: List[Tensor],
+ residual_func: Callable[[Tensor, Any], Tensor],
+ sample_drop_ratio: float = 0.0,
+ scaling_vector=None,
+) -> Tensor:
+ # 1) generate random set of indices for dropping samples in the batch
+ branges_scales = [get_branges_scales(x, sample_drop_ratio=sample_drop_ratio) for x in x_list]
+ branges = [s[0] for s in branges_scales]
+ residual_scale_factors = [s[1] for s in branges_scales]
+
+ # 2) get attention bias and index+concat the tensors
+ attn_bias, x_cat = get_attn_bias_and_cat(x_list, branges)
+
+ # 3) apply residual_func to get residual, and split the result
+ residual_list = attn_bias.split(residual_func(x_cat, attn_bias=attn_bias)) # type: ignore
+
+ outputs = []
+ for x, brange, residual, residual_scale_factor in zip(x_list, branges, residual_list, residual_scale_factors):
+ outputs.append(add_residual(x, brange, residual, residual_scale_factor, scaling_vector).view_as(x))
+ return outputs
+
+
+class NestedTensorBlock(Block):
+ def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
+ """
+ x_list contains a list of tensors to nest together and run
+ """
+ assert isinstance(self.attn, MemEffAttention)
+
+ if self.training and self.sample_drop_ratio > 0.0:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.attn(self.norm1(x), attn_bias=attn_bias)
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.mlp(self.norm2(x))
+
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls1.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls2.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ return x_list
+ else:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias=attn_bias))
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ attn_bias, x = get_attn_bias_and_cat(x_list)
+ x = x + attn_residual_func(x, attn_bias=attn_bias)
+ x = x + ffn_residual_func(x)
+ return attn_bias.split(x)
+
+ def forward(self, x_or_x_list, attn_bias=None):
+ if isinstance(x_or_x_list, Tensor):
+ return super().forward(x_or_x_list, attn_bias)
+ elif isinstance(x_or_x_list, list):
+ assert XFORMERS_AVAILABLE, "Please install xFormers for nested tensors usage"
+ return self.forward_nested(x_or_x_list)
+ else:
+ raise AssertionError
+
+
+def named_apply(fn: Callable, module: nn.Module, name="", depth_first=True, include_root=False) -> nn.Module:
+ if not depth_first and include_root:
+ fn(module=module, name=name)
+ for child_name, child_module in module.named_children():
+ child_name = ".".join((name, child_name)) if name else child_name
+ named_apply(fn=fn, module=child_module, name=child_name, depth_first=depth_first, include_root=True)
+ if depth_first and include_root:
+ fn(module=module, name=name)
+ return module
+
+
+class BlockChunk(nn.ModuleList):
+ def forward(self, x, others=None):
+ for b in self:
+ if others == None:
+ x = b(x)
+ else:
+ x = b(x, others)
+ return x
+
+
+class DinoVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=224,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ #init_values=None, # for layerscale: None or 0 => no layerscale
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=NestedTensorBlock,
+ ffn_layer="mlp",
+ block_chunks=1,
+ window_size=37,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+ self.window_size = window_size
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
+ num_patches = self.patch_embed.num_patches
+
+ self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.init_weights()
+
+ def init_weights(self):
+ trunc_normal_(self.pos_embed, std=0.02)
+ nn.init.normal_(self.cls_token, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ npatch = x.shape[1] - 1
+ N = self.pos_embed.shape[1] - 1
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ class_pos_embed = pos_embed[:, 0]
+ patch_pos_embed = pos_embed[:, 1:]
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + 0.1, h0 + 0.1
+
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(math.sqrt(N)), int(math.sqrt(N)), dim).permute(0, 3, 1, 2),
+ scale_factor=(w0 / math.sqrt(N), h0 / math.sqrt(N)),
+ mode="bicubic",
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2] and int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def prepare_tokens_with_masks(self, x, masks=None):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ x = x + self.interpolate_pos_encoding(x, w, h)
+
+ return x
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_patchtokens": x_norm[:, 1:],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ x = self.prepare_tokens_with_masks(x, masks)
+
+ features = []
+ for blk in self.blocks:
+ x = blk(x)
+ # for idx in range(len(self.blocks[0])):
+ # x = self.blocks[0][idx](x)
+ # if (idx + 1) % (len(self.blocks[0]) // 4) == 0:
+ # features.append(x)
+
+ #return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ x_norm = self.norm(x)
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_patchtokens": x_norm[:, 1:],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+class PosConv(nn.Module):
+ # PEG from https://arxiv.org/abs/2102.10882
+ def __init__(self, in_chans, embed_dim=768, stride=1):
+ super(PosConv, self).__init__()
+ self.proj = nn.Sequential(
+ nn.Conv2d(in_chans, embed_dim, 37, stride, 18, bias=True, groups=embed_dim),
+ )
+ self.stride = stride
+
+ def forward(self, x, size):
+ B, N, C = x.shape
+ cnn_feat_token = x.transpose(1, 2).view(B, C, *size)
+ x = self.proj(cnn_feat_token)
+ if self.stride == 1:
+ x += cnn_feat_token
+ x = x.flatten(2).transpose(1, 2)
+ return x
+
+ #def no_weight_decay(self):
+ #return ['proj.%d.weight' % i for i in range(4)]
+
+class DinoWindowVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=224,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ #init_values=None, # for layerscale: None or 0 => no layerscale
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=NestedTensorBlock,
+ ffn_layer="mlp",
+ block_chunks=1,
+ window_size=7,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
+ num_patches = self.patch_embed.num_patches
+
+ #self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ #self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches, embed_dim))
+
+ self.pos_conv = PosConv(self.embed_dim, self.embed_dim)
+
+ self.window_size = window_size
+ #self.conv_block = nn.ModuleList([ConvBlock(embed_dim) for i in range(4)])
+ #self.conv_block = nn.ModuleList([nn.Identity() for i in range(4)])
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.nh = -1
+ self.nw = -1
+ try:
+ H = cfg.data_basic['crop_size'][0]
+ W = cfg.data_basic['crop_size'][1]
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ self.nh = (H + pad_h) // self.patch_size
+ self.nw = (W + pad_w) // self.patch_size
+ self.prepare_attn_bias((self.nh, self.nw))
+ except:
+ pass
+ self.init_weights()
+
+ self.total_step = 10000 # For PE -> GPE transfer
+ self.start_step = 2000
+ self.current_step = 20000
+
+ def init_weights(self):
+ #trunc_normal_(self.pos_embed, std=0.02)
+ #nn.init.normal_(self.cls_token, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+ for i in range(4):
+ try:
+ nn.init.constant_(self.conv_block[i].conv2.weight, 0.0)
+ except:
+ pass
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ #npatch = x.shape[1] - 1
+ #N = self.pos_embed.shape[1] - 1
+ npatch = x.shape[1]
+ N = self.pos_embed.shape[1]
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ #class_pos_embed = pos_embed[:, 0]
+ #patch_pos_embed = pos_embed[:, 1:]
+ patch_pos_embed = pos_embed
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + 0.1, h0 + 0.1
+
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(math.sqrt(N)), int(math.sqrt(N)), dim).permute(0, 3, 1, 2),
+ scale_factor=(w0 / math.sqrt(N), h0 / math.sqrt(N)),
+ mode="bicubic",
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2] and int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return patch_pos_embed.to(previous_dtype)
+ #return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def window_partition(self, x: torch.Tensor, window_size: int, hw: Tuple[int, int], conv_feature=False) -> Tuple[torch.Tensor, Tuple[int, int]]:
+ """
+ Partition into non-overlapping windows with padding if needed.
+ Args:
+ x (tensor): input tokens with [B, H, W, C].
+ window_size (int): window size.
+
+ Returns:
+ windows: windows after partition with [B * num_windows, window_size, window_size, C].
+ (Hp, Wp): padded height and width before partition
+ """
+ if conv_feature == False:
+ B, N, C = x.shape
+ H, W = hw[0], hw[1]
+
+ x = x.view(B, H // window_size, window_size, W // window_size, window_size, C)
+
+ windows = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(-1, window_size * window_size, C)
+ else:
+ B, C, H, W = x.shape
+
+ x = x.view(B, C, H // window_size, window_size, W // window_size, window_size)
+
+ windows = x.permute(0, 2, 4, 3, 5, 1).contiguous().view(-1, window_size * window_size, C)
+
+ #y = torch.cat((x_cls, windows), dim=1)
+ return windows #, (Hp, Wp)
+
+
+ def window_unpartition(self,
+ windows: torch.Tensor, window_size: int, hw: Tuple[int, int], conv_feature=False
+ ) -> torch.Tensor:
+ """
+ Window unpartition into original sequences and removing padding.
+ Args:
+ windows (tensor): input tokens with [B * num_windows, window_size, window_size, C].
+ window_size (int): window size.
+ pad_hw (Tuple): padded height and width (Hp, Wp).
+ hw (Tuple): original height and width (H, W) before padding.
+
+ Returns:
+ x: unpartitioned sequences with [B, H, W, C].
+ """
+ H, W = hw
+
+ B = windows.shape[0] // (H * W // window_size // window_size)
+ x = windows.view(B, H // window_size, W // window_size, window_size, window_size, -1)
+
+ if conv_feature == False:
+ x = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(B, Hp * Wp, -1)
+ else:
+ C = windows.shape[-1]
+ x = x.permute(0, 5, 1, 3, 2, 4).contiguous().view(B, C, H, W)
+
+ # if Hp > H or Wp > W:
+ # x = x[:, :H, :W, :].contiguous()
+ return x
+
+ def prepare_tokens_with_masks(self, x, masks=None, step=-1):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ #x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ if step == -1:
+ step = self.current_step
+ else:
+ self.current_step = step
+
+ if step < self.start_step:
+ coef = 0.0
+ elif step < self.total_step:
+ coef = (step - self.start_step) / (self.total_step - self.start_step)
+ else:
+ coef = 1.0
+
+ x = x + (1 - coef) * self.interpolate_pos_encoding(x, w, h) + coef * self.pos_conv(x, (self.nh, self.nw))
+
+ return x
+
+ def prepare_attn_bias(self, shape):
+ window_size = self.window_size
+ if window_size <= 0:
+ return
+
+ import xformers.components.attention.attention_patterns as AP
+
+ nh, nw = shape
+ radius = (window_size-1)//2
+ mask_ori = AP.local_2d_pattern(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+
+ pad = (8 - (nh * nw) % 8)
+ if pad == 8:
+ pad = 0
+ mask_pad = nn.functional.pad(mask_ori, (0, pad)).contiguous()
+ if pad > 0:
+ mask = mask_pad[:, :-pad].view(nh, nw, nh, nw)
+ else:
+ mask = mask_pad[:, :].view(nh, nw, nh, nw)
+
+ # angle
+ mask[:radius+1, :radius+1, :window_size, :window_size] = True
+ mask[:radius+1, -radius-1:, :window_size, -window_size:] = True
+ mask[-radius-1:, :radius+1, -window_size:, :window_size] = True
+ mask[-radius-1:, -radius-1:, -window_size:, -window_size:] = True
+
+ # edge
+ mask[radius+1:-radius-1, :radius+1, :, :] = mask[radius+1:-radius-1, radius:radius+1, :, :]
+ mask[radius+1:-radius-1, -radius-1:, :, :] = mask[radius+1:-radius-1, -radius-1:-radius, :, :]
+ mask[:radius+1, radius+1:-radius-1, :, :] = mask[radius:radius+1, radius+1:-radius-1, :, :]
+ mask[-radius-1:, radius+1:-radius-1, :, :] = mask[-radius-1:-radius, radius+1:-radius-1, :, :]
+
+ mask = mask.view(nh*nw, nh*nw)
+ bias_pad = torch.log(mask_pad)
+ #bias = bias_pad[:, :-pad]
+ self.register_buffer('attn_bias', bias_pad)
+
+ return bias_pad
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_patchtokens": x_norm[:, 1:],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None, **kwargs):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ nh = (H+pad_h)//self.patch_size
+ nw = (W+pad_w)//self.patch_size
+
+ if self.window_size > 0:
+ if nh == self.nh and nw == self.nw:
+ attn_bias = self.attn_bias
+ else:
+ attn_bias = self.prepare_attn_bias(((H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size))
+ self.nh = nh
+ self.nw = nw
+ attn_bias = attn_bias.unsqueeze(0).repeat(B * self.num_heads, 1, 1)
+ else:
+ attn_bias = None
+
+ x = self.prepare_tokens_with_masks(x, masks)
+ #x = self.patch_embed(x)
+
+ features = []
+ #x = self.window_partition(x, self.window_size, (H // self.patch_size, W // self.patch_size))
+ for blk in self.blocks:
+ x = blk(x, attn_bias)
+ #x = self.window_unpartition(x, self.window_size, (H // self.patch_size, W // self.patch_size))
+
+ # for idx in range(len(self.blocks[0])):
+ # x = self.blocks[0][idx](x, attn_bias)
+
+ # if (idx + 1) % (len(self.blocks[0]) // 4) == 0:
+ # x = self.window_unpartition(x, self.window_size, (H // self.patch_size, W // self.patch_size), conv_feature=True)
+ # x = self.conv_block[idx // (len(self.blocks[0]) // 4)](x)
+ # if idx + 1 != len(self.blocks[0]):
+ # x = self.window_partition(x, self.window_size, (H // self.patch_size, W // self.patch_size), conv_feature=True)
+ # else:
+ # b, c, h, w = x.size()
+ # x = x.permute(0, 2, 3, 1).contiguous().view(b, h, w, c)
+ #features.append(x)
+
+ #return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ x_norm = self.norm(x)
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_patchtokens": x_norm[:, 1:],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+
+
+def init_weights_vit_timm(module: nn.Module, name: str = ""):
+ """ViT weight initialization, original timm impl (for reproducibility)"""
+ if isinstance(module, nn.Linear):
+ trunc_normal_(module.weight, std=0.02)
+ if module.bias is not None:
+ nn.init.zeros_(module.bias)
+
+
+def vit_small(patch_size=14, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+
+def vit_base(patch_size=14, **kwargs):
+ model = DinoWindowVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+
+def vit_large(patch_size=14, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ img_size = 518,
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+
+ if checkpoint is not None:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ #del model.norm
+ del model.mask_token
+ return model
+
+ # model = DinoWindowVisionTransformer(
+ # img_size = 518,
+ # patch_size=patch_size,
+ # embed_dim=1024,
+ # depth=24,
+ # num_heads=16,
+ # mlp_ratio=4,
+ # block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ # window_size=37,
+ # **kwargs,
+ # )
+
+ # if checkpoint is not None:
+ # with open(checkpoint, "rb") as f:
+ # state_dict = torch.load(f)
+ # try:
+ # model.load_state_dict(state_dict, strict=True)
+ # except:
+ # new_state_dict = {}
+ # for key, value in state_dict.items():
+ # if 'blocks' in key:
+ # key_new = 'blocks.0' + key[len('blocks'):]
+ # else:
+ # key_new = key
+ # if 'pos_embed' in key:
+ # value = value[:, 1:, :]
+ # new_state_dict[key_new] = value
+
+ # model.load_state_dict(new_state_dict, strict=False)
+ # #del model.norm
+ # del model.mask_token
+ return model
+
+
+def vit_giant2(patch_size=16, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+if __name__ == '__main__':
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+
+ #rgb = torch.rand((2, 3, 518, 518)).cuda()
+
+ #cfg.data_basic['crop_size']['0']
+ #cfg.data_basic['crop_size']['1']
+ cfg = Config.fromfile('mu.hu/monodepth/mono/configs/HourglassDecoder/pub12.convlarge.0.3_150.py')
+
+ #rgb = torch.arange(0, 2*3*1036*1036, 1).cuda().float().view(2, 3, 1036, 1036)
+ rgb = torch.zeros(1, 3, 1400, 1680).cuda()
+ model = vit_large(checkpoint="pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth", kwarg=cfg).cuda()
+
+ #import timm
+ #model2 = timm.models.vision_transformer.vit_large_patch14_dinov2().cuda()
+ #timm.models.load_checkpoint(model2, '/cpfs02/shared/public/yvan/pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth', filter_fn=timm.models.vision_transformer.checkpoint_filter_fn)
+
+ out1 = model(rgb)
+ #out2 = model2(rgb)
+ temp = 0
+
+
+
+# import time
+# window_size = 37
+# def prepare_window_masks(shape):
+# if window_size <= 0:
+# return None
+# import xformers.components.attention.attention_patterns as AP
+
+# B, nh, nw, _, _ = shape
+# radius = (window_size-1)//2
+# #time0 = time.time()
+# d = AP.local_nd_distance(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+# #mask = AP.local_2d_pattern(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+# # mask = mask.view(nh, nw, nh, nw)
+# # #time1 = time.time() - time0
+
+# # # angle
+# # mask[:radius+1, :radius+1, :window_size, :window_size] = True
+# # mask[:radius+1, -radius-1:, :window_size, -window_size:] = True
+# # mask[-radius-1:, :radius+1, -window_size:, :window_size] = True
+# # mask[-radius-1:, -radius-1:, -window_size:, -window_size:] = True
+# # time2 = time.time() - time0 - time1
+
+# # # edge
+# # mask[radius+1:-radius-1, :radius+1, :, :] = mask[radius+1:-radius-1, radius:radius+1, :, :]
+# # mask[radius+1:-radius-1, -radius-1:, :, :] = mask[radius+1:-radius-1, -radius-1:-radius, :, :]
+# # mask[:radius+1, radius+1:-radius-1, :, :] = mask[radius:radius+1, radius+1:-radius-1, :, :]
+# # mask[-radius-1:, radius+1:-radius-1, :, :] = mask[-radius-1:-radius, radius+1:-radius-1, :, :]
+# # time3 = time.time() - time0 - time2
+# # print(time1, time2, time3)
+
+# # return mask.view(nw*nw, nh*nw).unsqueeze(0).repeat(B, 1)
+
+# shape = (1, 55, 55, None, None)
+# mask = prepare_window_masks(shape)
+# # temp = 1
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/model/backbones/ViT_DINO_reg.py b/finetune/Metric3D/mono/model/backbones/ViT_DINO_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..3fc9fd650d516a90ccaa2a2de805665495cb8e29
--- /dev/null
+++ b/finetune/Metric3D/mono/model/backbones/ViT_DINO_reg.py
@@ -0,0 +1,1318 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+# All rights reserved.
+#
+# This source code is licensed under the license found in the
+# LICENSE file in the root directory of this source tree.
+
+# References:
+# https://github.com/facebookresearch/dino/blob/main/vision_transformer.py
+# https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py
+
+from functools import partial
+import math
+import logging
+from typing import Sequence, Tuple, Union, Callable, Optional, Dict, Any, List
+
+import torch
+import torch.nn as nn
+from torch import Tensor
+import torch.utils.checkpoint
+from torch.nn.init import trunc_normal_
+import torch.nn.init
+import torch.nn.functional as F
+
+#from dinov2.layers import Mlp, PatchEmbed, SwiGLUFFNFused, MemEffAttention, NestedTensorBlock as Block
+
+logger = logging.getLogger("dinov2")
+
+# SSF finetuning originally by dongzelian
+def init_ssf_scale_shift(dim):
+ scale = nn.Parameter(torch.ones(dim))
+ shift = nn.Parameter(torch.zeros(dim))
+
+ nn.init.normal_(scale, mean=1, std=.02)
+ nn.init.normal_(shift, std=.02)
+
+ return scale, shift
+
+def ssf_ada(x, scale, shift):
+ assert scale.shape == shift.shape
+ if x.shape[-1] == scale.shape[0]:
+ return x * scale + shift
+ elif x.shape[1] == scale.shape[0]:
+ return x * scale.view(1, -1, 1, 1) + shift.view(1, -1, 1, 1)
+ else:
+ raise ValueError('the input tensor shape does not match the shape of the scale factor.')
+
+# LoRA finetuning originally by edwardjhu
+class LoRALayer():
+ def __init__(
+ self,
+ r: int,
+ lora_alpha: int,
+ lora_dropout: float,
+ merge_weights: bool,
+ ):
+ self.r = r
+ self.lora_alpha = lora_alpha
+ # Optional dropout
+ if lora_dropout > 0.:
+ self.lora_dropout = nn.Dropout(p=lora_dropout)
+ else:
+ self.lora_dropout = lambda x: x
+ # Mark the weight as unmerged
+ self.merged = False
+ self.merge_weights = merge_weights
+
+class LoRALinear(nn.Linear, LoRALayer):
+ # LoRA implemented in a dense layer
+ def __init__(
+ self,
+ in_features: int,
+ out_features: int,
+ r: int = 0,
+ lora_alpha: int = 1,
+ lora_dropout: float = 0.,
+ fan_in_fan_out: bool = False, # Set this to True if the layer to replace stores weight like (fan_in, fan_out)
+ merge_weights: bool = True,
+ **kwargs
+ ):
+ nn.Linear.__init__(self, in_features, out_features, **kwargs)
+ LoRALayer.__init__(self, r=r, lora_alpha=lora_alpha, lora_dropout=lora_dropout,
+ merge_weights=merge_weights)
+
+ self.fan_in_fan_out = fan_in_fan_out
+ # Actual trainable parameters
+ if r > 0:
+ self.lora_A = nn.Parameter(self.weight.new_zeros((r, in_features)))
+ self.lora_B = nn.Parameter(self.weight.new_zeros((out_features, r)))
+ self.scaling = self.lora_alpha / self.r
+ # Freezing the pre-trained weight matrix
+ self.weight.requires_grad = False
+ self.reset_parameters()
+ if fan_in_fan_out:
+ self.weight.data = self.weight.data.transpose(0, 1)
+
+ def reset_parameters(self):
+ #nn.Linear.reset_parameters(self)
+ if hasattr(self, 'lora_A'):
+ # initialize B the same way as the default for nn.Linear and A to zero
+ # this is different than what is described in the paper but should not affect performance
+ nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5))
+ nn.init.zeros_(self.lora_B)
+
+ # def train(self, mode: bool = True):
+ # def T(w):
+ # return w.transpose(0, 1) if self.fan_in_fan_out else w
+ # nn.Linear.train(self, mode)
+ # if mode:
+ # if self.merge_weights and self.merged:
+ # # Make sure that the weights are not merged
+ # if self.r > 0:
+ # self.weight.data -= T(self.lora_B @ self.lora_A) * self.scaling
+ # self.merged = False
+ # else:
+ # if self.merge_weights and not self.merged:
+ # # Merge the weights and mark it
+ # if self.r > 0:
+ # self.weight.data += T(self.lora_B @ self.lora_A) * self.scaling
+ # self.merged = True
+
+ def forward(self, x: torch.Tensor):
+ def T(w):
+ return w.transpose(0, 1) if self.fan_in_fan_out else w
+ if self.r > 0 and not self.merged:
+ result = F.linear(x, T(self.weight), bias=self.bias)
+ result += (self.lora_dropout(x) @ self.lora_A.transpose(0, 1) @ self.lora_B.transpose(0, 1)) * self.scaling
+ return result
+ else:
+ return F.linear(x, T(self.weight), bias=self.bias)
+
+
+
+def make_2tuple(x):
+ if isinstance(x, tuple):
+ assert len(x) == 2
+ return x
+
+ assert isinstance(x, int)
+ return (x, x)
+
+def drop_path(x, drop_prob: float = 0.0, training: bool = False):
+ if drop_prob == 0.0 or not training:
+ return x
+ keep_prob = 1 - drop_prob
+ shape = (x.shape[0],) + (1,) * (x.ndim - 1) # work with diff dim tensors, not just 2D ConvNets
+ random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
+ if keep_prob > 0.0:
+ random_tensor.div_(keep_prob)
+ output = x * random_tensor
+ return output
+
+class DropPath(nn.Module):
+ """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""
+
+ def __init__(self, drop_prob=None):
+ super(DropPath, self).__init__()
+ self.drop_prob = drop_prob
+
+ def forward(self, x):
+ return drop_path(x, self.drop_prob, self.training)
+
+class LayerScale(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ init_values: Union[float, Tensor] = 1e-5,
+ inplace: bool = False,
+ ) -> None:
+ super().__init__()
+ self.inplace = inplace
+ self.gamma = nn.Parameter(init_values * torch.ones(dim))
+
+ def forward(self, x: Tensor) -> Tensor:
+ return x.mul_(self.gamma) if self.inplace else x * self.gamma
+
+
+class PatchEmbed(nn.Module):
+ """
+ 2D image to patch embedding: (B,C,H,W) -> (B,N,D)
+
+ Args:
+ img_size: Image size.
+ patch_size: Patch token size.
+ in_chans: Number of input image channels.
+ embed_dim: Number of linear projection output channels.
+ norm_layer: Normalization layer.
+ """
+
+ def __init__(
+ self,
+ img_size: Union[int, Tuple[int, int]] = 224,
+ patch_size: Union[int, Tuple[int, int]] = 16,
+ in_chans: int = 3,
+ embed_dim: int = 768,
+ norm_layer: Optional[Callable] = None,
+ flatten_embedding: bool = True,
+ tuning_mode: Optional[str] = None
+ ) -> None:
+ super().__init__()
+
+ image_HW = make_2tuple(img_size)
+ patch_HW = make_2tuple(patch_size)
+ patch_grid_size = (
+ image_HW[0] // patch_HW[0],
+ image_HW[1] // patch_HW[1],
+ )
+
+ self.img_size = image_HW
+ self.patch_size = patch_HW
+ self.patches_resolution = patch_grid_size
+ self.num_patches = patch_grid_size[0] * patch_grid_size[1]
+
+ self.in_chans = in_chans
+ self.embed_dim = embed_dim
+
+ self.flatten_embedding = flatten_embedding
+
+ self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_HW, stride=patch_HW)
+ self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(embed_dim)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+
+ def forward(self, x: Tensor) -> Tensor:
+ _, _, H, W = x.shape
+ patch_H, patch_W = self.patch_size
+
+ assert H % patch_H == 0, f"Input image height {H} is not a multiple of patch height {patch_H}"
+ assert W % patch_W == 0, f"Input image width {W} is not a multiple of patch width: {patch_W}"
+
+ x = self.proj(x) # B C H W
+ H, W = x.size(2), x.size(3)
+ x = x.flatten(2).transpose(1, 2) # B HW C
+ x = self.norm(x)
+ if self.tuning_mode == 'ssf':
+ x = ssf_ada(x, self.ssf_scale_1, self.ssf_shift_1)
+ if not self.flatten_embedding:
+ x = x.reshape(-1, H, W, self.embed_dim) # B H W C
+ return x
+
+ def flops(self) -> float:
+ Ho, Wo = self.patches_resolution
+ flops = Ho * Wo * self.embed_dim * self.in_chans * (self.patch_size[0] * self.patch_size[1])
+ if self.norm is not None:
+ flops += Ho * Wo * self.embed_dim
+ return flops
+
+class Mlp(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ drop: float = 0.0,
+ bias: bool = True,
+ tuning_mode: Optional[int] = None
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.fc1 = nn.Linear(in_features, hidden_features, bias=bias)
+ self.act = act_layer()
+ self.fc2 = nn.Linear(hidden_features, out_features, bias=bias)
+ self.drop = nn.Dropout(drop)
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(hidden_features)
+ self.ssf_scale_2, self.ssf_shift_2 = init_ssf_scale_shift(out_features)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+
+ def forward(self, x: Tensor) -> Tensor:
+ x = self.fc1(x)
+ if self.tuning_mode == 'ssf':
+ x = ssf_ada(x, self.ssf_scale_1, self.ssf_shift_1)
+
+ x = self.act(x)
+ x = self.drop(x)
+ x = self.fc2(x)
+ if self.tuning_mode == 'ssf':
+ x = ssf_ada(x, self.ssf_scale_2, self.ssf_shift_2)
+
+ x = self.drop(x)
+ return x
+
+
+class SwiGLUFFN(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ tuning_mode: Optional[int] = None
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.w12 = nn.Linear(in_features, 2 * hidden_features, bias=bias)
+ self.w3 = nn.Linear(hidden_features, out_features, bias=bias)
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(2 * hidden_features)
+ self.ssf_scale_2, self.ssf_shift_2 = init_ssf_scale_shift(out_features)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+
+
+ def forward(self, x: Tensor) -> Tensor:
+ x12 = self.w12(x)
+ if self.tuning_mode == 'ssf':
+ x12 = ssf_ada(x12, self.ssf_scale_1, self.ssf_shift_1)
+
+ x1, x2 = x12.chunk(2, dim=-1)
+ hidden = F.silu(x1) * x2
+ out = self.w3(hidden)
+
+ if self.tuning_mode == 'ssf':
+ out = ssf_ada(out, self.ssf_scale_2, self.ssf_scale_2)
+
+ return out
+
+
+try:
+ from xformers.ops import SwiGLU
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ SwiGLU = SwiGLUFFN
+ XFORMERS_AVAILABLE = False
+
+class SwiGLUFFNFused(SwiGLU):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
+ super().__init__(
+ in_features=in_features,
+ hidden_features=hidden_features,
+ out_features=out_features,
+ bias=bias,
+ )
+
+
+try:
+ from xformers.ops import memory_efficient_attention, unbind, fmha
+ from xformers.components.attention import ScaledDotProduct
+ from xformers.components import MultiHeadDispatch
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+
+class Attention(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int = 8,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ attn_drop: float = 0.0,
+ proj_drop: float = 0.0,
+ window_size: int = 0,
+ tuning_mode: Optional[int] = None
+ ) -> None:
+ super().__init__()
+ self.num_heads = num_heads
+ head_dim = dim // num_heads
+ self.scale = head_dim**-0.5
+
+ if tuning_mode == 'lora':
+ self.tuning_mode = tuning_mode
+ self.qkv = LoRALinear(dim, dim * 3, bias=qkv_bias, r=8)
+ else:
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
+
+ self.attn_drop = nn.Dropout(attn_drop)
+
+ if tuning_mode == 'lora':
+ self.tuning_mode = tuning_mode
+ self.proj = LoRALinear(dim, dim, bias=proj_bias, r=8)
+ else:
+ self.proj = nn.Linear(dim, dim, bias=proj_bias)
+ self.proj_drop = nn.Dropout(proj_drop)
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(dim * 3)
+ self.ssf_scale_2, self.ssf_shift_2 = init_ssf_scale_shift(dim)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+
+ #if not self.training:
+ #
+ # self.attn = ScaledDotProduct()
+ #self.attn = MultiHeadDispatch(dim_model=EMB, residual_dropout=DROPOUT, num_heads=HEADS, attention=attn)
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ B, N, C = x.shape
+ if self.tuning_mode == 'ssf':
+ qkv = ssf_ada(self.qkv(x), self.ssf_scale_1, self.ssf_shift_1).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
+ else:
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
+
+ q, k, v = qkv[0] * self.scale, qkv[1], qkv[2]
+ attn = q @ k.transpose(-2, -1)
+
+ if attn_bias is not None:
+ attn = attn + attn_bias[:, :, :N]
+
+ attn = attn.softmax(dim=-1)
+ attn = self.attn_drop(attn)
+
+ x = (attn @ v).transpose(1, 2).reshape(B, N, C)
+ x = self.proj(x)
+
+ if self.tuning_mode == 'ssf':
+ x = ssf_ada(x, self.ssf_scale_2, self.ssf_shift_2)
+
+ x = self.proj_drop(x)
+ return x
+
+
+class MemEffAttention(Attention):
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ if not XFORMERS_AVAILABLE:
+ #if True:
+ assert attn_bias is None, "xFormers is required for nested tensors usage"
+ return super().forward(x, attn_bias)
+
+ B, N, C = x.shape
+ if self.tuning_mode == 'ssf':
+ qkv = ssf_ada(self.qkv(x), self.ssf_scale_1, self.ssf_shift_1).reshape(B, N, 3, self.num_heads, C // self.num_heads)
+ else:
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads)
+
+ q, k, v = unbind(qkv, 2)
+ if attn_bias is not None:
+ x = memory_efficient_attention(q, k, v, attn_bias=attn_bias[:, :, :N])
+ else:
+ x = memory_efficient_attention(q, k, v)
+ x = x.reshape([B, N, C])
+
+ x = self.proj(x)
+ if self.tuning_mode == 'ssf':
+ x = ssf_ada(x, self.ssf_scale_2, self.ssf_shift_2)
+
+ x = self.proj_drop(x)
+ return x
+
+try:
+ from xformers.ops import fmha
+ from xformers.ops import scaled_index_add, index_select_cat
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+class Block(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int,
+ mlp_ratio: float = 4.0,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ ffn_bias: bool = True,
+ drop: float = 0.0,
+ attn_drop: float = 0.0,
+ init_values = None,
+ drop_path: float = 0.0,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ norm_layer: Callable[..., nn.Module] = nn.LayerNorm,
+ attn_class: Callable[..., nn.Module] = Attention,
+ ffn_layer: Callable[..., nn.Module] = Mlp,
+ tuning_mode: Optional[int] = None
+ ) -> None:
+ super().__init__()
+ # print(f"biases: qkv: {qkv_bias}, proj: {proj_bias}, ffn: {ffn_bias}")
+ self.norm1 = norm_layer(dim)
+ self.attn = attn_class(
+ dim,
+ num_heads=num_heads,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ attn_drop=attn_drop,
+ proj_drop=drop,
+ tuning_mode=tuning_mode
+ )
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(dim)
+ self.ssf_scale_2, self.ssf_shift_2 = init_ssf_scale_shift(dim)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+
+ self.ls1 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path1 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.norm2 = norm_layer(dim)
+ mlp_hidden_dim = int(dim * mlp_ratio)
+ self.mlp = ffn_layer(
+ in_features=dim,
+ hidden_features=mlp_hidden_dim,
+ act_layer=act_layer,
+ drop=drop,
+ bias=ffn_bias,
+ )
+ self.ls2 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path2 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.sample_drop_ratio = drop_path
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ def attn_residual_func(x: Tensor, attn_bias) -> Tensor:
+ if self.tuning_mode == 'ssf':
+ return self.ls1(self.attn(ssf_ada(self.norm1(x), self.ssf_scale_1, self.ssf_shift_1), attn_bias))
+ else:
+ return self.ls1(self.attn(self.norm1(x), attn_bias))
+
+ def ffn_residual_func(x: Tensor) -> Tensor:
+ if self.tuning_mode == 'ssf':
+ return self.ls2(self.mlp(ssf_ada(self.norm2(x), self.ssf_scale_2, self.ssf_shift_2)))
+ else:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ if self.training and self.sample_drop_ratio > 0.1:
+ # the overhead is compensated only for a drop path rate larger than 0.1
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ attn_bias=attn_bias
+ )
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ )
+ elif self.training and self.sample_drop_ratio > 0.0:
+ x = x + self.drop_path1(attn_residual_func(x, attn_bias))
+ x = x + self.drop_path1(ffn_residual_func(x)) # FIXME: drop_path2
+ else:
+ x = x + attn_residual_func(x, attn_bias)
+ x = x + ffn_residual_func(x)
+ return x
+
+
+def drop_add_residual_stochastic_depth(
+ x: Tensor,
+ residual_func: Callable[[Tensor], Tensor],
+ sample_drop_ratio: float = 0.0, attn_bias=None
+) -> Tensor:
+ # 1) extract subset using permutation
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ x_subset = x[brange]
+
+ # 2) apply residual_func to get residual
+ residual = residual_func(x_subset, attn_bias)
+
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+
+ residual_scale_factor = b / sample_subset_size
+
+ # 3) add the residual
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ return x_plus_residual.view_as(x)
+
+
+def get_branges_scales(x, sample_drop_ratio=0.0):
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ residual_scale_factor = b / sample_subset_size
+ return brange, residual_scale_factor
+
+
+def add_residual(x, brange, residual, residual_scale_factor, scaling_vector=None):
+ if scaling_vector is None:
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ else:
+ x_plus_residual = scaled_index_add(
+ x, brange, residual.to(dtype=x.dtype), scaling=scaling_vector, alpha=residual_scale_factor
+ )
+ return x_plus_residual
+
+
+attn_bias_cache: Dict[Tuple, Any] = {}
+
+
+def get_attn_bias_and_cat(x_list, branges=None):
+ """
+ this will perform the index select, cat the tensors, and provide the attn_bias from cache
+ """
+ batch_sizes = [b.shape[0] for b in branges] if branges is not None else [x.shape[0] for x in x_list]
+ all_shapes = tuple((b, x.shape[1]) for b, x in zip(batch_sizes, x_list))
+ if all_shapes not in attn_bias_cache.keys():
+ seqlens = []
+ for b, x in zip(batch_sizes, x_list):
+ for _ in range(b):
+ seqlens.append(x.shape[1])
+ attn_bias = fmha.BlockDiagonalMask.from_seqlens(seqlens)
+ attn_bias._batch_sizes = batch_sizes
+ attn_bias_cache[all_shapes] = attn_bias
+
+ if branges is not None:
+ cat_tensors = index_select_cat([x.flatten(1) for x in x_list], branges).view(1, -1, x_list[0].shape[-1])
+ else:
+ tensors_bs1 = tuple(x.reshape([1, -1, *x.shape[2:]]) for x in x_list)
+ cat_tensors = torch.cat(tensors_bs1, dim=1)
+
+ return attn_bias_cache[all_shapes], cat_tensors
+
+
+def drop_add_residual_stochastic_depth_list(
+ x_list: List[Tensor],
+ residual_func: Callable[[Tensor, Any], Tensor],
+ sample_drop_ratio: float = 0.0,
+ scaling_vector=None,
+) -> Tensor:
+ # 1) generate random set of indices for dropping samples in the batch
+ branges_scales = [get_branges_scales(x, sample_drop_ratio=sample_drop_ratio) for x in x_list]
+ branges = [s[0] for s in branges_scales]
+ residual_scale_factors = [s[1] for s in branges_scales]
+
+ # 2) get attention bias and index+concat the tensors
+ attn_bias, x_cat = get_attn_bias_and_cat(x_list, branges)
+
+ # 3) apply residual_func to get residual, and split the result
+ residual_list = attn_bias.split(residual_func(x_cat, attn_bias=attn_bias)) # type: ignore
+
+ outputs = []
+ for x, brange, residual, residual_scale_factor in zip(x_list, branges, residual_list, residual_scale_factors):
+ outputs.append(add_residual(x, brange, residual, residual_scale_factor, scaling_vector).view_as(x))
+ return outputs
+
+
+class NestedTensorBlock(Block):
+ def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
+ """
+ x_list contains a list of tensors to nest together and run
+ """
+ assert isinstance(self.attn, MemEffAttention)
+
+ if self.training and self.sample_drop_ratio > 0.0:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.attn(self.norm1(x), attn_bias=attn_bias)
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.mlp(self.norm2(x))
+
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls1.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls2.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ return x_list
+ else:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias=attn_bias))
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ attn_bias, x = get_attn_bias_and_cat(x_list)
+ x = x + attn_residual_func(x, attn_bias=attn_bias)
+ x = x + ffn_residual_func(x)
+ return attn_bias.split(x)
+
+ def forward(self, x_or_x_list, attn_bias=None):
+ if isinstance(x_or_x_list, Tensor):
+ return super().forward(x_or_x_list, attn_bias)
+ elif isinstance(x_or_x_list, list):
+ assert XFORMERS_AVAILABLE, "Please install xFormers for nested tensors usage"
+ return self.forward_nested(x_or_x_list)
+ else:
+ raise AssertionError
+
+
+def named_apply(fn: Callable, module: nn.Module, name="", depth_first=True, include_root=False) -> nn.Module:
+ if not depth_first and include_root:
+ fn(module=module, name=name)
+ for child_name, child_module in module.named_children():
+ child_name = ".".join((name, child_name)) if name else child_name
+ named_apply(fn=fn, module=child_module, name=child_name, depth_first=depth_first, include_root=True)
+ if depth_first and include_root:
+ fn(module=module, name=name)
+ return module
+
+
+class BlockChunk(nn.ModuleList):
+ def forward(self, x, others=None):
+ for b in self:
+ if others == None:
+ x = b(x)
+ else:
+ x = b(x, others)
+ return x
+
+
+class DinoVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=518,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=Block,
+ ffn_layer="mlp",
+ block_chunks=1,
+ num_register_tokens=0,
+ interpolate_antialias=False,
+ interpolate_offset=0.1,
+ multi_output=False,
+ tuning_mode=None,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ num_register_tokens: (int) number of extra cls tokens (so-called "registers")
+ interpolate_antialias: (str) flag to apply anti-aliasing when interpolating positional embeddings
+ interpolate_offset: (float) work-around offset to apply when interpolating positional embeddings
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+ self.num_register_tokens = num_register_tokens
+ self.interpolate_antialias = interpolate_antialias
+ self.interpolate_offset = interpolate_offset
+
+ if tuning_mode != None:
+ self.tuning_mode = tuning_mode
+ if tuning_mode == 'ssf':
+ self.ssf_scale_1, self.ssf_shift_1 = init_ssf_scale_shift(embed_dim)
+ else:
+ pass
+ #raise NotImplementedError()
+ else:
+ self.tuning_mode = None
+ tuning_mode_list = [tuning_mode] * depth
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim, tuning_mode=tuning_mode)
+ num_patches = self.patch_embed.num_patches
+
+ self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+ self.multi_output = multi_output
+ assert num_register_tokens >= 0
+ self.register_tokens = (
+ nn.Parameter(torch.zeros(1, num_register_tokens, embed_dim)) if num_register_tokens else None
+ )
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ tuning_mode=tuning_mode_list[i]
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.init_weights()
+
+ def init_weights(self):
+ trunc_normal_(self.pos_embed, std=0.02)
+ nn.init.normal_(self.cls_token, std=1e-6)
+ if self.register_tokens is not None:
+ nn.init.normal_(self.register_tokens, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ npatch = x.shape[1] - 1
+ N = self.pos_embed.shape[1] - 1
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ class_pos_embed = pos_embed[:, 0]
+ patch_pos_embed = pos_embed[:, 1:]
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + self.interpolate_offset, h0 + self.interpolate_offset
+
+ sqrt_N = math.sqrt(N)
+ sx, sy = float(w0) / sqrt_N, float(h0) / sqrt_N
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(sqrt_N), int(sqrt_N), dim).permute(0, 3, 1, 2),
+ scale_factor=(sx, sy),
+ mode="bicubic",
+ antialias=self.interpolate_antialias,
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2]
+ assert int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def prepare_tokens_with_masks(self, x, masks=None):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ x = x + self.interpolate_pos_encoding(x, w, h)
+
+ if self.register_tokens is not None:
+ x = torch.cat(
+ (
+ x[:, :1],
+ self.register_tokens.expand(x.shape[0], -1, -1),
+ x[:, 1:],
+ ),
+ dim=1,
+ )
+
+ return x
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
+ "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ x = self.prepare_tokens_with_masks(x, masks)
+
+ #for blk in self.blocks:
+ #x = blk(x)
+
+ #x_norm = self.norm(x)
+ #if self.tuning_mode == 'ssf':
+ #x_norm = ssf_ada(x_norm, self.ssf_scale_1, self.ssf_shift_1)
+
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
+ # "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ # features = []
+ # features.append(x_norm)
+ # features.append(x_norm)
+ # features.append(x_norm)
+ # features.append(x_norm)
+ # return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W, self.num_register_tokens)]
+
+ if self.multi_output == False:
+ for blk in self.blocks:
+ x = blk(x)
+ x_norm = self.norm(x)
+ if self.tuning_mode == 'ssf':
+ x_norm = ssf_ada(x_norm, self.ssf_scale_1, self.ssf_shift_1)
+
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W, self.num_register_tokens)]
+ else:
+ features = []
+ for blk in self.blocks:
+ for idx, sub_blk in enumerate(blk):
+ x = sub_blk(x)
+ if (idx + 1) % (len(blk) // 4) == 0:
+ features.append(x)
+
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W, self.num_register_tokens)]
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+def init_weights_vit_timm(module: nn.Module, name: str = ""):
+ """ViT weight initialization, original timm impl (for reproducibility)"""
+ if isinstance(module, nn.Linear):
+ trunc_normal_(module.weight, std=0.02)
+ if module.bias is not None:
+ nn.init.zeros_(module.bias)
+
+
+def load_ckpt_dino(checkpoint, model):
+ if checkpoint is not None:
+ try:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ except:
+ print('NO pretrained imagenet ckpt available! Check your path!')
+ del model.mask_token
+ return
+
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ del model.mask_token
+ return
+ else:
+ return
+
+
+def vit_small(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_base(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+ return model
+
+
+def vit_large(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ if checkpoint is not None:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ del model.mask_token
+ return model
+
+
+def vit_giant2(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ ffn_layer='swiglu',
+ **kwargs,
+ )
+ return model
+
+
+
+def vit_small_reg(patch_size=14, num_register_tokens=4, checkpoint=None, tuning_mode=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ tuning_mode=tuning_mode,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_base_reg(patch_size=14, num_register_tokens=4, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_large_reg(patch_size=14, num_register_tokens=4, checkpoint=None, tuning_mode=None, **kwargs):
+ model = DinoVisionTransformer(
+ img_size = 518,
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ tuning_mode=tuning_mode,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_giant2_reg(patch_size=14, num_register_tokens=4, checkpoint=None, tuning_mode=None, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ ffn_layer='swiglu',
+ tuning_mode=tuning_mode,
+ multi_output=True,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+if __name__ == '__main__':
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+
+ #rgb = torch.rand((2, 3, 518, 518)).cuda()
+
+ #cfg.data_basic['crop_size']['0']
+ #cfg.data_basic['crop_size']['1']
+ cfg = Config.fromfile('/mu.hu/projects/monodepth_vit/mono/configs/RAFTDecoder/vit.raft5.large.kitti.py')
+
+ #rgb = torch.arange(0, 2*3*1036*1036, 1).cuda().float().view(2, 3, 1036, 1036)
+ rgb = torch.zeros(1, 3, 616, 1064).cuda()
+ cfg['tuning_mode'] = 'ssf'
+ #model = vit_large_reg(checkpoint="/cpfs02/shared/public/groups/local_map/yvan/pretrained_weight_repo/vit/dinov2_vitl14_reg4_pretrain.pth", kwarg=cfg).cuda()
+ model = vit_large_reg(tuning_mode='ssf').cuda()
+
+ #import timm
+ #model2 = timm.models.vision_transformer.vit_large_patch14_dinov2().cuda()
+ #timm.models.load_checkpoint(model2, '/cpfs02/shared/public/yvan/pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth', filter_fn=timm.models.vision_transformer.checkpoint_filter_fn)
+
+ out1 = model(rgb)
+ #out2 = model2(rgb)
+ temp = 0
+
+
diff --git a/finetune/Metric3D/mono/model/backbones/__init__.py b/finetune/Metric3D/mono/model/backbones/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..36204128dbb323426b0aa19e52674cbdc3a0f860
--- /dev/null
+++ b/finetune/Metric3D/mono/model/backbones/__init__.py
@@ -0,0 +1,11 @@
+from .ConvNeXt import convnext_xlarge
+from .ConvNeXt import convnext_small
+from .ConvNeXt import convnext_base
+from .ConvNeXt import convnext_large
+from .ConvNeXt import convnext_tiny
+from .ViT_DINO import vit_large
+from .ViT_DINO_reg import vit_small_reg, vit_large_reg, vit_giant2_reg
+
+__all__ = [
+ 'convnext_xlarge', 'convnext_small', 'convnext_base', 'convnext_large', 'convnext_tiny', 'vit_small_reg', 'vit_large_reg', 'vit_giant2_reg'
+]
diff --git a/finetune/Metric3D/mono/model/decode_heads/HourGlassDecoder.py b/finetune/Metric3D/mono/model/decode_heads/HourGlassDecoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..e084382601e21e6ce5144abbd6a65f563905b659
--- /dev/null
+++ b/finetune/Metric3D/mono/model/decode_heads/HourGlassDecoder.py
@@ -0,0 +1,274 @@
+import torch
+import torch.nn as nn
+import numpy as np
+import math
+import torch.nn.functional as F
+
+def compute_depth_expectation(prob, depth_values):
+ depth_values = depth_values.view(*depth_values.shape, 1, 1)
+ depth = torch.sum(prob * depth_values, 1)
+ return depth
+
+class ConvBlock(nn.Module):
+ def __init__(self, in_channels, out_channels, kernel_size=3):
+ super(ConvBlock, self).__init__()
+
+ if kernel_size == 3:
+ self.conv = nn.Sequential(
+ nn.ReflectionPad2d(1),
+ nn.Conv2d(in_channels, out_channels, 3, padding=0, stride=1),
+ )
+ elif kernel_size == 1:
+ self.conv = nn.Conv2d(int(in_channels), int(out_channels), 1, padding=0, stride=1)
+
+ self.nonlin = nn.ELU(inplace=True)
+
+ def forward(self, x):
+ out = self.conv(x)
+ out = self.nonlin(out)
+ return out
+
+
+class ConvBlock_double(nn.Module):
+ def __init__(self, in_channels, out_channels, kernel_size=3):
+ super(ConvBlock_double, self).__init__()
+
+ if kernel_size == 3:
+ self.conv = nn.Sequential(
+ nn.ReflectionPad2d(1),
+ nn.Conv2d(in_channels, out_channels, 3, padding=0, stride=1),
+ )
+ elif kernel_size == 1:
+ self.conv = nn.Conv2d(int(in_channels), int(out_channels), 1, padding=0, stride=1)
+
+ self.nonlin = nn.ELU(inplace=True)
+ self.conv_2 = nn.Conv2d(out_channels, out_channels, 1, padding=0, stride=1)
+ self.nonlin_2 =nn.ELU(inplace=True)
+
+ def forward(self, x):
+ out = self.conv(x)
+ out = self.nonlin(out)
+ out = self.conv_2(out)
+ out = self.nonlin_2(out)
+ return out
+
+class DecoderFeature(nn.Module):
+ def __init__(self, feat_channels, num_ch_dec=[64, 64, 128, 256]):
+ super(DecoderFeature, self).__init__()
+ self.num_ch_dec = num_ch_dec
+ self.feat_channels = feat_channels
+
+ self.upconv_3_0 = ConvBlock(self.feat_channels[3], self.num_ch_dec[3], kernel_size=1)
+ self.upconv_3_1 = ConvBlock_double(
+ self.feat_channels[2] + self.num_ch_dec[3],
+ self.num_ch_dec[3],
+ kernel_size=1)
+
+ self.upconv_2_0 = ConvBlock(self.num_ch_dec[3], self.num_ch_dec[2], kernel_size=3)
+ self.upconv_2_1 = ConvBlock_double(
+ self.feat_channels[1] + self.num_ch_dec[2],
+ self.num_ch_dec[2],
+ kernel_size=3)
+
+ self.upconv_1_0 = ConvBlock(self.num_ch_dec[2], self.num_ch_dec[1], kernel_size=3)
+ self.upconv_1_1 = ConvBlock_double(
+ self.feat_channels[0] + self.num_ch_dec[1],
+ self.num_ch_dec[1],
+ kernel_size=3)
+ self.upsample = nn.Upsample(scale_factor=2, mode='nearest')
+
+ def forward(self, ref_feature):
+ x = ref_feature[3]
+
+ x = self.upconv_3_0(x)
+ x = torch.cat((self.upsample(x), ref_feature[2]), 1)
+ x = self.upconv_3_1(x)
+
+ x = self.upconv_2_0(x)
+ x = torch.cat((self.upsample(x), ref_feature[1]), 1)
+ x = self.upconv_2_1(x)
+
+ x = self.upconv_1_0(x)
+ x = torch.cat((self.upsample(x), ref_feature[0]), 1)
+ x = self.upconv_1_1(x)
+ return x
+
+
+class UNet(nn.Module):
+ def __init__(self, inp_ch=32, output_chal=1, down_sample_times=3, channel_mode='v0'):
+ super(UNet, self).__init__()
+ basic_block = ConvBnReLU
+ num_depth = 128
+
+ self.conv0 = basic_block(inp_ch, num_depth)
+ if channel_mode == 'v0':
+ channels = [num_depth, num_depth//2, num_depth//4, num_depth//8, num_depth // 8]
+ elif channel_mode == 'v1':
+ channels = [num_depth, num_depth, num_depth, num_depth, num_depth, num_depth]
+ self.down_sample_times = down_sample_times
+ for i in range(down_sample_times):
+ setattr(
+ self, 'conv_%d' % i,
+ nn.Sequential(
+ basic_block(channels[i], channels[i+1], stride=2),
+ basic_block(channels[i+1], channels[i+1])
+ )
+ )
+ for i in range(down_sample_times-1,-1,-1):
+ setattr(self, 'deconv_%d' % i,
+ nn.Sequential(
+ nn.ConvTranspose2d(
+ channels[i+1],
+ channels[i],
+ kernel_size=3,
+ padding=1,
+ output_padding=1,
+ stride=2,
+ bias=False),
+ nn.BatchNorm2d(channels[i]),
+ nn.ReLU(inplace=True)
+ )
+ )
+ self.prob = nn.Conv2d(num_depth, output_chal, 1, stride=1, padding=0)
+
+ def forward(self, x):
+ features = {}
+ conv0 = self.conv0(x)
+ x = conv0
+ features[0] = conv0
+ for i in range(self.down_sample_times):
+ x = getattr(self, 'conv_%d' % i)(x)
+ features[i+1] = x
+ for i in range(self.down_sample_times-1,-1,-1):
+ x = features[i] + getattr(self, 'deconv_%d' % i)(x)
+ x = self.prob(x)
+ return x
+
+class ConvBnReLU(nn.Module):
+ def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, pad=1):
+ super(ConvBnReLU, self).__init__()
+ self.conv = nn.Conv2d(
+ in_channels,
+ out_channels,
+ kernel_size,
+ stride=stride,
+ padding=pad,
+ bias=False
+ )
+ self.bn = nn.BatchNorm2d(out_channels)
+
+ def forward(self, x):
+ return F.relu(self.bn(self.conv(x)), inplace=True)
+
+
+class HourglassDecoder(nn.Module):
+ def __init__(self, cfg):
+ super(HourglassDecoder, self).__init__()
+ self.inchannels = cfg.model.decode_head.in_channels # [256, 512, 1024, 2048]
+ self.decoder_channels = cfg.model.decode_head.decoder_channel # [64, 64, 128, 256]
+ self.min_val = cfg.data_basic.depth_normalize[0]
+ self.max_val = cfg.data_basic.depth_normalize[1]
+
+ self.num_ch_dec = self.decoder_channels # [64, 64, 128, 256]
+ self.num_depth_regressor_anchor = 512
+ self.feat_channels = self.inchannels
+ unet_in_channel = self.num_ch_dec[1]
+ unet_out_channel = 256
+
+ self.decoder_mono = DecoderFeature(self.feat_channels, self.num_ch_dec)
+ self.conv_out_2 = UNet(inp_ch=unet_in_channel,
+ output_chal=unet_out_channel + 1,
+ down_sample_times=3,
+ channel_mode='v0',
+ )
+
+ self.depth_regressor_2 = nn.Sequential(
+ nn.Conv2d(unet_out_channel,
+ self.num_depth_regressor_anchor,
+ kernel_size=3,
+ padding=1,
+ ),
+ nn.BatchNorm2d(self.num_depth_regressor_anchor),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(
+ self.num_depth_regressor_anchor,
+ self.num_depth_regressor_anchor,
+ kernel_size=1,
+ )
+ )
+ self.residual_channel = 16
+ self.conv_up_2 = nn.Sequential(
+ nn.Conv2d(1 + 2 + unet_out_channel, self.residual_channel, 3, padding=1),
+ nn.BatchNorm2d(self.residual_channel),
+ nn.ReLU(),
+ nn.Conv2d(self.residual_channel, self.residual_channel, 3, padding=1),
+ nn.Upsample(scale_factor=4),
+ nn.Conv2d(self.residual_channel, self.residual_channel, 3, padding=1),
+ nn.ReLU(),
+ nn.Conv2d(self.residual_channel, 1, 1, padding=0),
+ )
+
+ def get_bins(self, bins_num):
+ depth_bins_vec = torch.linspace(math.log(self.min_val), math.log(self.max_val), bins_num, device='cuda')
+ depth_bins_vec = torch.exp(depth_bins_vec)
+ return depth_bins_vec
+
+ def register_depth_expectation_anchor(self, bins_num, B):
+ depth_bins_vec = self.get_bins(bins_num)
+ depth_bins_vec = depth_bins_vec.unsqueeze(0).repeat(B, 1)
+ self.register_buffer('depth_expectation_anchor', depth_bins_vec, persistent=False)
+
+ def upsample(self, x, scale_factor=2):
+ return F.interpolate(x, scale_factor=scale_factor, mode='nearest')
+
+ def regress_depth_2(self, feature_map_d):
+ prob = self.depth_regressor_2(feature_map_d).softmax(dim=1)
+ B = prob.shape[0]
+ if "depth_expectation_anchor" not in self._buffers:
+ self.register_depth_expectation_anchor(self.num_depth_regressor_anchor, B)
+ d = compute_depth_expectation(
+ prob,
+ self.depth_expectation_anchor[:B, ...]
+ ).unsqueeze(1)
+ return d
+
+ def create_mesh_grid(self, height, width, batch, device="cuda", set_buffer=True):
+ y, x = torch.meshgrid([torch.arange(0, height, dtype=torch.float32, device=device),
+ torch.arange(0, width, dtype=torch.float32, device=device)], indexing='ij')
+ meshgrid = torch.stack((x, y))
+ meshgrid = meshgrid.unsqueeze(0).repeat(batch, 1, 1, 1)
+ return meshgrid
+
+ def forward(self, features_mono, **kwargs):
+ '''
+ trans_ref2src: list of transformation matrix from the reference view to source view. [B, 4, 4]
+ inv_intrinsic_pool: list of inverse intrinsic matrix.
+ features_mono: features of reference and source views. [[ref_f1, ref_f2, ref_f3, ref_f4],[src1_f1, src1_f2, src1_f3, src1_f4], ...].
+ '''
+ outputs = {}
+ # get encoder feature of the reference view
+ ref_feat = features_mono
+
+ feature_map_mono = self.decoder_mono(ref_feat)
+ feature_map_mono_pred = self.conv_out_2(feature_map_mono)
+ confidence_map_2 = feature_map_mono_pred[:, -1:, :, :]
+ feature_map_d_2 = feature_map_mono_pred[:, :-1, :, :]
+
+ depth_pred_2 = self.regress_depth_2(feature_map_d_2)
+
+ B, _, H, W = depth_pred_2.shape
+
+ meshgrid = self.create_mesh_grid(H, W, B)
+
+ depth_pred_mono = self.upsample(depth_pred_2, scale_factor=4) + 1e-1 * \
+ self.conv_up_2(
+ torch.cat((depth_pred_2, meshgrid[:B, ...], feature_map_d_2), 1)
+ )
+ confidence_map_mono = self.upsample(confidence_map_2, scale_factor=4)
+
+ outputs=dict(
+ prediction=depth_pred_mono,
+ confidence=confidence_map_mono,
+ pred_logit=None,
+ )
+ return outputs
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py b/finetune/Metric3D/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py
new file mode 100644
index 0000000000000000000000000000000000000000..9af89f9b4b1878a2e4bcfcd489075c2e97cd8d3d
--- /dev/null
+++ b/finetune/Metric3D/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py
@@ -0,0 +1,1033 @@
+import torch
+import torch.nn as nn
+import numpy as np
+import math
+import torch.nn.functional as F
+
+# LORA finetuning originally by edwardjhu
+class LoRALayer():
+ def __init__(
+ self,
+ r: int,
+ lora_alpha: int,
+ lora_dropout: float,
+ merge_weights: bool,
+ ):
+ self.r = r
+ self.lora_alpha = lora_alpha
+ # Optional dropout
+ if lora_dropout > 0.:
+ self.lora_dropout = nn.Dropout(p=lora_dropout)
+ else:
+ self.lora_dropout = lambda x: x
+ # Mark the weight as unmerged
+ self.merged = False
+ self.merge_weights = merge_weights
+
+class LoRALinear(nn.Linear, LoRALayer):
+ # LoRA implemented in a dense layer
+ def __init__(
+ self,
+ in_features: int,
+ out_features: int,
+ r: int = 0,
+ lora_alpha: int = 1,
+ lora_dropout: float = 0.,
+ fan_in_fan_out: bool = False, # Set this to True if the layer to replace stores weight like (fan_in, fan_out)
+ merge_weights: bool = True,
+ **kwargs
+ ):
+ nn.Linear.__init__(self, in_features, out_features, **kwargs)
+ LoRALayer.__init__(self, r=r, lora_alpha=lora_alpha, lora_dropout=lora_dropout,
+ merge_weights=merge_weights)
+
+ self.fan_in_fan_out = fan_in_fan_out
+ # Actual trainable parameters
+ if r > 0:
+ self.lora_A = nn.Parameter(self.weight.new_zeros((r, in_features)))
+ self.lora_B = nn.Parameter(self.weight.new_zeros((out_features, r)))
+ self.scaling = self.lora_alpha / self.r
+ # Freezing the pre-trained weight matrix
+ self.weight.requires_grad = False
+ self.reset_parameters()
+ if fan_in_fan_out:
+ self.weight.data = self.weight.data.transpose(0, 1)
+
+ def reset_parameters(self):
+ #nn.Linear.reset_parameters(self)
+ if hasattr(self, 'lora_A'):
+ # initialize B the same way as the default for nn.Linear and A to zero
+ # this is different than what is described in the paper but should not affect performance
+ nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5))
+ nn.init.zeros_(self.lora_B)
+
+ # def train(self, mode: bool = True):
+ # def T(w):
+ # return w.transpose(0, 1) if self.fan_in_fan_out else w
+ # nn.Linear.train(self, mode)
+ # if mode:
+ # if self.merge_weights and self.merged:
+ # # Make sure that the weights are not merged
+ # if self.r > 0:
+ # self.weight.data -= T(self.lora_B @ self.lora_A) * self.scaling
+ # self.merged = False
+ # else:
+ # if self.merge_weights and not self.merged:
+ # # Merge the weights and mark it
+ # if self.r > 0:
+ # self.weight.data += T(self.lora_B @ self.lora_A) * self.scaling
+ # self.merged = True
+
+ def forward(self, x: torch.Tensor):
+ def T(w):
+ return w.transpose(0, 1) if self.fan_in_fan_out else w
+ if self.r > 0 and not self.merged:
+ result = F.linear(x, T(self.weight), bias=self.bias)
+ result += (self.lora_dropout(x) @ self.lora_A.transpose(0, 1) @ self.lora_B.transpose(0, 1)) * self.scaling
+ return result
+ else:
+ return F.linear(x, T(self.weight), bias=self.bias)
+
+class ConvLoRA(nn.Conv2d, LoRALayer):
+ def __init__(self, in_channels, out_channels, kernel_size, r=0, lora_alpha=1, lora_dropout=0., merge_weights=True, **kwargs):
+ #self.conv = conv_module(in_channels, out_channels, kernel_size, **kwargs)
+ nn.Conv2d.__init__(self, in_channels, out_channels, kernel_size, **kwargs)
+ LoRALayer.__init__(self, r=r, lora_alpha=lora_alpha, lora_dropout=lora_dropout, merge_weights=merge_weights)
+ assert isinstance(kernel_size, int)
+
+ # Actual trainable parameters
+ if r > 0:
+ self.lora_A = nn.Parameter(
+ self.weight.new_zeros((r * kernel_size, in_channels * kernel_size))
+ )
+ self.lora_B = nn.Parameter(
+ self.weight.new_zeros((out_channels//self.groups*kernel_size, r*kernel_size))
+ )
+ self.scaling = self.lora_alpha / self.r
+ # Freezing the pre-trained weight matrix
+ self.weight.requires_grad = False
+ self.reset_parameters()
+ self.merged = False
+
+ def reset_parameters(self):
+ #self.conv.reset_parameters()
+ if hasattr(self, 'lora_A'):
+ # initialize A the same way as the default for nn.Linear and B to zero
+ nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5))
+ nn.init.zeros_(self.lora_B)
+
+ # def train(self, mode=True):
+ # super(ConvLoRA, self).train(mode)
+ # if mode:
+ # if self.merge_weights and self.merged:
+ # if self.r > 0:
+ # # Make sure that the weights are not merged
+ # self.conv.weight.data -= (self.lora_B @ self.lora_A).view(self.conv.weight.shape) * self.scaling
+ # self.merged = False
+ # else:
+ # if self.merge_weights and not self.merged:
+ # if self.r > 0:
+ # # Merge the weights and mark it
+ # self.conv.weight.data += (self.lora_B @ self.lora_A).view(self.conv.weight.shape) * self.scaling
+ # self.merged = True
+
+ def forward(self, x):
+ if self.r > 0 and not self.merged:
+ # return self.conv._conv_forward(
+ # x,
+ # self.conv.weight + (self.lora_B @ self.lora_A).view(self.conv.weight.shape) * self.scaling,
+ # self.conv.bias
+ # )
+ weight = self.weight + (self.lora_B @ self.lora_A).view(self.weight.shape) * self.scaling
+ bias = self.bias
+
+ return F.conv2d(x, weight, bias=bias, stride=self.stride, padding=self.padding, dilation=self.dilation, groups=self.groups)
+ else:
+ return F.conv2d(x, self.weight, bias=self.bias, stride=self.stride, padding=self.padding, dilation=self.dilation, groups=self.groups)
+
+class ConvTransposeLoRA(nn.ConvTranspose2d, LoRALayer):
+ def __init__(self, in_channels, out_channels, kernel_size, r=0, lora_alpha=1, lora_dropout=0., merge_weights=True, **kwargs):
+ #self.conv = conv_module(in_channels, out_channels, kernel_size, **kwargs)
+ nn.ConvTranspose2d.__init__(self, in_channels, out_channels, kernel_size, **kwargs)
+ LoRALayer.__init__(self, r=r, lora_alpha=lora_alpha, lora_dropout=lora_dropout, merge_weights=merge_weights)
+ assert isinstance(kernel_size, int)
+
+ # Actual trainable parameters
+ if r > 0:
+ self.lora_A = nn.Parameter(
+ self.weight.new_zeros((r * kernel_size, in_channels * kernel_size))
+ )
+ self.lora_B = nn.Parameter(
+ self.weight.new_zeros((out_channels//self.groups*kernel_size, r*kernel_size))
+ )
+ self.scaling = self.lora_alpha / self.r
+ # Freezing the pre-trained weight matrix
+ self.weight.requires_grad = False
+ self.reset_parameters()
+ self.merged = False
+
+ def reset_parameters(self):
+ #self.conv.reset_parameters()
+ if hasattr(self, 'lora_A'):
+ # initialize A the same way as the default for nn.Linear and B to zero
+ nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5))
+ nn.init.zeros_(self.lora_B)
+
+ # def train(self, mode=True):
+ # super(ConvTransposeLoRA, self).train(mode)
+ # if mode:
+ # if self.merge_weights and self.merged:
+ # if self.r > 0:
+ # # Make sure that the weights are not merged
+ # self.conv.weight.data -= (self.lora_B @ self.lora_A).view(self.conv.weight.shape) * self.scaling
+ # self.merged = False
+ # else:
+ # if self.merge_weights and not self.merged:
+ # if self.r > 0:
+ # # Merge the weights and mark it
+ # self.conv.weight.data += (self.lora_B @ self.lora_A).view(self.conv.weight.shape) * self.scaling
+ # self.merged = True
+
+ def forward(self, x):
+ if self.r > 0 and not self.merged:
+ weight = self.weight + (self.lora_B @ self.lora_A).view(self.weight.shape) * self.scaling
+ bias = self.bias
+ return F.conv_transpose2d(x, weight,
+ bias=bias, stride=self.stride, padding=self.padding, output_padding=self.output_padding,
+ groups=self.groups, dilation=self.dilation)
+ else:
+ return F.conv_transpose2d(x, self.weight,
+ bias=self.bias, stride=self.stride, padding=self.padding, output_padding=self.output_padding,
+ groups=self.groups, dilation=self.dilation)
+ #return self.conv(x)
+
+class Conv2dLoRA(ConvLoRA):
+ def __init__(self, *args, **kwargs):
+ super(Conv2dLoRA, self).__init__(*args, **kwargs)
+
+class ConvTranspose2dLoRA(ConvTransposeLoRA):
+ def __init__(self, *args, **kwargs):
+ super(ConvTranspose2dLoRA, self).__init__(*args, **kwargs)
+
+
+def compute_depth_expectation(prob, depth_values):
+ depth_values = depth_values.view(*depth_values.shape, 1, 1)
+ depth = torch.sum(prob * depth_values, 1)
+ return depth
+
+def interpolate_float32(x, size=None, scale_factor=None, mode='nearest', align_corners=None):
+ with torch.autocast(device_type='cuda', dtype=torch.bfloat16, enabled=False):
+ return F.interpolate(x.float(), size=size, scale_factor=scale_factor, mode=mode, align_corners=align_corners)
+
+# def upflow8(flow, mode='bilinear'):
+# new_size = (8 * flow.shape[2], 8 * flow.shape[3])
+# return 8 * F.interpolate(flow, size=new_size, mode=mode, align_corners=True)
+
+def upflow4(flow, mode='bilinear'):
+ new_size = (4 * flow.shape[2], 4 * flow.shape[3])
+ with torch.autocast(device_type='cuda', dtype=torch.bfloat16, enabled=False):
+ return F.interpolate(flow, size=new_size, mode=mode, align_corners=True)
+
+def coords_grid(batch, ht, wd):
+ # coords = torch.meshgrid(torch.arange(ht), torch.arange(wd))
+ coords = (torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)))
+ coords = torch.stack(coords[::-1], dim=0).float()
+ return coords[None].repeat(batch, 1, 1, 1)
+
+def norm_normalize(norm_out):
+ min_kappa = 0.01
+ norm_x, norm_y, norm_z, kappa = torch.split(norm_out, 1, dim=1)
+ norm = torch.sqrt(norm_x ** 2.0 + norm_y ** 2.0 + norm_z ** 2.0) + 1e-10
+ kappa = F.elu(kappa) + 1.0 + min_kappa
+ final_out = torch.cat([norm_x / norm, norm_y / norm, norm_z / norm, kappa], dim=1)
+ return final_out
+
+# uncertainty-guided sampling (only used during training)
+@torch.no_grad()
+def sample_points(init_normal, gt_norm_mask, sampling_ratio, beta):
+ device = init_normal.device
+ B, _, H, W = init_normal.shape
+ N = int(sampling_ratio * H * W)
+ beta = beta
+
+ # uncertainty map
+ uncertainty_map = -1 * init_normal[:, -1, :, :] # B, H, W
+
+ # gt_invalid_mask (B, H, W)
+ if gt_norm_mask is not None:
+ gt_invalid_mask = F.interpolate(gt_norm_mask.float(), size=[H, W], mode='nearest')
+ gt_invalid_mask = gt_invalid_mask[:, 0, :, :] < 0.5
+ uncertainty_map[gt_invalid_mask] = -1e4
+
+ # (B, H*W)
+ _, idx = uncertainty_map.view(B, -1).sort(1, descending=True)
+
+ # importance sampling
+ if int(beta * N) > 0:
+ importance = idx[:, :int(beta * N)] # B, beta*N
+
+ # remaining
+ remaining = idx[:, int(beta * N):] # B, H*W - beta*N
+
+ # coverage
+ num_coverage = N - int(beta * N)
+
+ if num_coverage <= 0:
+ samples = importance
+ else:
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = torch.cat((importance, coverage), dim=1) # B, N
+
+ else:
+ # remaining
+ remaining = idx[:, :] # B, H*W
+
+ # coverage
+ num_coverage = N
+
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = coverage
+
+ # point coordinates
+ rows_int = samples // W # 0 for first row, H-1 for last row
+ rows_float = rows_int / float(H-1) # 0 to 1.0
+ rows_float = (rows_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ cols_int = samples % W # 0 for first column, W-1 for last column
+ cols_float = cols_int / float(W-1) # 0 to 1.0
+ cols_float = (cols_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ point_coords = torch.zeros(B, 1, N, 2)
+ point_coords[:, 0, :, 0] = cols_float # x coord
+ point_coords[:, 0, :, 1] = rows_float # y coord
+ point_coords = point_coords.to(device)
+ return point_coords, rows_int, cols_int
+
+class FlowHead(nn.Module):
+ def __init__(self, input_dim=128, hidden_dim=256, output_dim_depth=2, output_dim_norm=4, tuning_mode=None):
+ super(FlowHead, self).__init__()
+ self.conv1d = Conv2dLoRA(input_dim, hidden_dim // 2, 3, padding=1, r = 8 if tuning_mode == 'lora' else 0)
+ self.conv2d = Conv2dLoRA(hidden_dim // 2, output_dim_depth, 3, padding=1, r = 8 if tuning_mode == 'lora' else 0)
+
+ self.conv1n = Conv2dLoRA(input_dim, hidden_dim // 2, 3, padding=1, r = 8 if tuning_mode == 'lora' else 0)
+ self.conv2n = Conv2dLoRA(hidden_dim // 2, output_dim_norm, 3, padding=1, r = 8 if tuning_mode == 'lora' else 0)
+ self.relu = nn.ReLU(inplace=True)
+
+ def forward(self, x):
+ depth = self.conv2d(self.relu(self.conv1d(x)))
+ normal = self.conv2n(self.relu(self.conv1n(x)))
+ return torch.cat((depth, normal), dim=1)
+
+
+class ConvGRU(nn.Module):
+ def __init__(self, hidden_dim, input_dim, kernel_size=3, tuning_mode=None):
+ super(ConvGRU, self).__init__()
+ self.convz = Conv2dLoRA(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2, r = 8 if tuning_mode == 'lora' else 0)
+ self.convr = Conv2dLoRA(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2, r = 8 if tuning_mode == 'lora' else 0)
+ self.convq = Conv2dLoRA(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2, r = 8 if tuning_mode == 'lora' else 0)
+
+ def forward(self, h, cz, cr, cq, *x_list):
+ x = torch.cat(x_list, dim=1)
+ hx = torch.cat([h, x], dim=1)
+
+ z = torch.sigmoid((self.convz(hx) + cz))
+ r = torch.sigmoid((self.convr(hx) + cr))
+ q = torch.tanh((self.convq(torch.cat([r*h, x], dim=1)) + cq))
+
+ # z = torch.sigmoid((self.convz(hx) + cz).float())
+ # r = torch.sigmoid((self.convr(hx) + cr).float())
+ # q = torch.tanh((self.convq(torch.cat([r*h, x], dim=1)) + cq).float())
+
+ h = (1-z) * h + z * q
+ return h
+
+def pool2x(x):
+ return F.avg_pool2d(x, 3, stride=2, padding=1)
+
+def pool4x(x):
+ return F.avg_pool2d(x, 5, stride=4, padding=1)
+
+def interp(x, dest):
+ interp_args = {'mode': 'bilinear', 'align_corners': True}
+ return interpolate_float32(x, dest.shape[2:], **interp_args)
+
+class BasicMultiUpdateBlock(nn.Module):
+ def __init__(self, args, hidden_dims=[], out_dims=2, tuning_mode=None):
+ super().__init__()
+ self.args = args
+ self.n_gru_layers = args.model.decode_head.n_gru_layers # 3
+ self.n_downsample = args.model.decode_head.n_downsample # 3, resolution of the disparity field (1/2^K)
+
+ # self.encoder = BasicMotionEncoder(args)
+ # encoder_output_dim = 128 # if there is corr volume
+ encoder_output_dim = 6 # no corr volume
+
+ self.gru08 = ConvGRU(hidden_dims[2], encoder_output_dim + hidden_dims[1] * (self.n_gru_layers > 1), tuning_mode=tuning_mode)
+ self.gru16 = ConvGRU(hidden_dims[1], hidden_dims[0] * (self.n_gru_layers == 3) + hidden_dims[2], tuning_mode=tuning_mode)
+ self.gru32 = ConvGRU(hidden_dims[0], hidden_dims[1], tuning_mode=tuning_mode)
+ self.flow_head = FlowHead(hidden_dims[2], hidden_dim=2*hidden_dims[2], tuning_mode=tuning_mode)
+ factor = 2**self.n_downsample
+
+ self.mask = nn.Sequential(
+ Conv2dLoRA(hidden_dims[2], hidden_dims[2], 3, padding=1, r = 8 if tuning_mode == 'lora' else 0),
+ nn.ReLU(inplace=True),
+ Conv2dLoRA(hidden_dims[2], (factor**2)*9, 1, padding=0, r = 8 if tuning_mode == 'lora' else 0))
+
+ def forward(self, net, inp, corr=None, flow=None, iter08=True, iter16=True, iter32=True, update=True):
+
+ if iter32:
+ net[2] = self.gru32(net[2], *(inp[2]), pool2x(net[1]))
+ if iter16:
+ if self.n_gru_layers > 2:
+ net[1] = self.gru16(net[1], *(inp[1]), interp(pool2x(net[0]), net[1]), interp(net[2], net[1]))
+ else:
+ net[1] = self.gru16(net[1], *(inp[1]), interp(pool2x(net[0]), net[1]))
+ if iter08:
+ if corr is not None:
+ motion_features = self.encoder(flow, corr)
+ else:
+ motion_features = flow
+ if self.n_gru_layers > 1:
+ net[0] = self.gru08(net[0], *(inp[0]), motion_features, interp(net[1], net[0]))
+ else:
+ net[0] = self.gru08(net[0], *(inp[0]), motion_features)
+
+ if not update:
+ return net
+
+ delta_flow = self.flow_head(net[0])
+
+ # scale mask to balence gradients
+ mask = .25 * self.mask(net[0])
+ return net, mask, delta_flow
+
+class LayerNorm2d(nn.LayerNorm):
+ def __init__(self, dim):
+ super(LayerNorm2d, self).__init__(dim)
+
+ def forward(self, x):
+ x = x.permute(0, 2, 3, 1).contiguous()
+ x = super(LayerNorm2d, self).forward(x)
+ x = x.permute(0, 3, 1, 2).contiguous()
+ return x
+
+class ResidualBlock(nn.Module):
+ def __init__(self, in_planes, planes, norm_fn='group', stride=1, tuning_mode=None):
+ super(ResidualBlock, self).__init__()
+
+ self.conv1 = Conv2dLoRA(in_planes, planes, kernel_size=3, padding=1, stride=stride, r = 8 if tuning_mode == 'lora' else 0)
+ self.conv2 = Conv2dLoRA(planes, planes, kernel_size=3, padding=1, r = 8 if tuning_mode == 'lora' else 0)
+ self.relu = nn.ReLU(inplace=True)
+
+ num_groups = planes // 8
+
+ if norm_fn == 'group':
+ self.norm1 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+ self.norm2 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+
+ elif norm_fn == 'batch':
+ self.norm1 = nn.BatchNorm2d(planes)
+ self.norm2 = nn.BatchNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.BatchNorm2d(planes)
+
+ elif norm_fn == 'instance':
+ self.norm1 = nn.InstanceNorm2d(planes)
+ self.norm2 = nn.InstanceNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.InstanceNorm2d(planes)
+
+ elif norm_fn == 'layer':
+ self.norm1 = LayerNorm2d(planes)
+ self.norm2 = LayerNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = LayerNorm2d(planes)
+
+ elif norm_fn == 'none':
+ self.norm1 = nn.Sequential()
+ self.norm2 = nn.Sequential()
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.Sequential()
+
+ if stride == 1 and in_planes == planes:
+ self.downsample = None
+
+ else:
+ self.downsample = nn.Sequential(
+ Conv2dLoRA(in_planes, planes, kernel_size=1, stride=stride, r = 8 if tuning_mode == 'lora' else 0), self.norm3)
+
+ def forward(self, x):
+ y = x
+ y = self.conv1(y)
+ y = self.norm1(y)
+ y = self.relu(y)
+ y = self.conv2(y)
+ y = self.norm2(y)
+ y = self.relu(y)
+
+ if self.downsample is not None:
+ x = self.downsample(x)
+
+ return self.relu(x+y)
+
+
+class ContextFeatureEncoder(nn.Module):
+ '''
+ Encoder features are used to:
+ 1. initialize the hidden state of the update operator
+ 2. and also injected into the GRU during each iteration of the update operator
+ '''
+ def __init__(self, in_dim, output_dim, tuning_mode=None):
+ '''
+ in_dim = [x4, x8, x16, x32]
+ output_dim = [hindden_dims, context_dims]
+ [[x4,x8,x16,x32],[x4,x8,x16,x32]]
+ '''
+ super().__init__()
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[0], dim[0], 'layer', stride=1, tuning_mode=tuning_mode),
+ Conv2dLoRA(dim[0], dim[0], 3, padding=1, r = 8 if tuning_mode == 'lora' else 0))
+ output_list.append(conv_out)
+
+ self.outputs04 = nn.ModuleList(output_list)
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[1], dim[1], 'layer', stride=1, tuning_mode=tuning_mode),
+ Conv2dLoRA(dim[1], dim[1], 3, padding=1, r = 8 if tuning_mode == 'lora' else 0))
+ output_list.append(conv_out)
+
+ self.outputs08 = nn.ModuleList(output_list)
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[2], dim[2], 'layer', stride=1, tuning_mode=tuning_mode),
+ Conv2dLoRA(dim[2], dim[2], 3, padding=1, r = 8 if tuning_mode == 'lora' else 0))
+ output_list.append(conv_out)
+
+ self.outputs16 = nn.ModuleList(output_list)
+
+ # output_list = []
+ # for dim in output_dim:
+ # conv_out = Conv2dLoRA(in_dim[3], dim[3], 3, padding=1)
+ # output_list.append(conv_out)
+
+ # self.outputs32 = nn.ModuleList(output_list)
+
+ def forward(self, encoder_features):
+ x_4, x_8, x_16, x_32 = encoder_features
+
+ outputs04 = [f(x_4) for f in self.outputs04]
+ outputs08 = [f(x_8) for f in self.outputs08]
+ outputs16 = [f(x_16)for f in self.outputs16]
+ # outputs32 = [f(x_32) for f in self.outputs32]
+
+ return (outputs04, outputs08, outputs16)
+
+class ConvBlock(nn.Module):
+ # reimplementation of DPT
+ def __init__(self, channels, tuning_mode=None):
+ super(ConvBlock, self).__init__()
+
+ self.act = nn.ReLU(inplace=True)
+ self.conv1 = Conv2dLoRA(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1,
+ r = 8 if tuning_mode == 'lora' else 0
+ )
+ self.conv2 = Conv2dLoRA(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1,
+ r = 8 if tuning_mode == 'lora' else 0
+ )
+
+ def forward(self, x):
+ out = self.act(x)
+ out = self.conv1(out)
+ out = self.act(out)
+ out = self.conv2(out)
+ return x + out
+
+class FuseBlock(nn.Module):
+ # reimplementation of DPT
+ def __init__(self, in_channels, out_channels, fuse=True, upsample=True, scale_factor=2, tuning_mode=None):
+ super(FuseBlock, self).__init__()
+
+ self.fuse = fuse
+ self.scale_factor = scale_factor
+ self.way_trunk = ConvBlock(in_channels, tuning_mode=tuning_mode)
+ if self.fuse:
+ self.way_branch = ConvBlock(in_channels, tuning_mode=tuning_mode)
+
+ self.out_conv = Conv2dLoRA(
+ in_channels,
+ out_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0,
+ r = 8 if tuning_mode == 'lora' else 0
+ )
+ self.upsample = upsample
+
+ def forward(self, x1, x2=None):
+ if x2 is not None:
+ x2 = self.way_branch(x2)
+ x1 = x1 + x2
+
+ out = self.way_trunk(x1)
+
+ if self.upsample:
+ out = interpolate_float32(
+ out, scale_factor=self.scale_factor, mode="bilinear", align_corners=True
+ )
+ out = self.out_conv(out)
+ return out
+
+class Readout(nn.Module):
+ # From DPT
+ def __init__(self, in_features, use_cls_token=True, num_register_tokens=0, tuning_mode=None):
+ super(Readout, self).__init__()
+ self.use_cls_token = use_cls_token
+ if self.use_cls_token == True:
+ self.project_patch = LoRALinear(in_features, in_features, r = 8 if tuning_mode == 'lora' else 0)
+ self.project_learn = LoRALinear((1 + num_register_tokens) * in_features, in_features, bias=False, r = 8 if tuning_mode == 'lora' else 0)
+ self.act = nn.GELU()
+ else:
+ self.project = nn.Identity()
+
+ def forward(self, x):
+
+ if self.use_cls_token == True:
+ x_patch = self.project_patch(x[0])
+ x_learn = self.project_learn(x[1])
+ x_learn = x_learn.expand_as(x_patch).contiguous()
+ features = x_patch + x_learn
+ return self.act(features)
+ else:
+ return self.project(x)
+
+class Token2Feature(nn.Module):
+ # From DPT
+ def __init__(self, vit_channel, feature_channel, scale_factor, use_cls_token=True, num_register_tokens=0, tuning_mode=None):
+ super(Token2Feature, self).__init__()
+ self.scale_factor = scale_factor
+ self.readoper = Readout(in_features=vit_channel, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens, tuning_mode=tuning_mode)
+ if scale_factor > 1 and isinstance(scale_factor, int):
+ self.sample = ConvTranspose2dLoRA(r = 8 if tuning_mode == 'lora' else 0,
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=scale_factor,
+ stride=scale_factor,
+ padding=0,
+ )
+
+ elif scale_factor > 1:
+ self.sample = nn.Sequential(
+ # Upsample2(upscale=scale_factor),
+ # nn.Upsample(scale_factor=scale_factor),
+ Conv2dLoRA(r = 8 if tuning_mode == 'lora' else 0,
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=1,
+ stride=1,
+ padding=0,
+ ),
+ )
+
+
+ elif scale_factor < 1:
+ scale_factor = int(1.0 / scale_factor)
+ self.sample = Conv2dLoRA(r = 8 if tuning_mode == 'lora' else 0,
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=scale_factor+1,
+ stride=scale_factor,
+ padding=1,
+ )
+
+ else:
+ self.sample = nn.Identity()
+
+ def forward(self, x):
+ x = self.readoper(x)
+ #if use_cls_token == True:
+ x = x.permute(0, 3, 1, 2).contiguous()
+ if isinstance(self.scale_factor, float):
+ x = interpolate_float32(x.float(), scale_factor=self.scale_factor, mode='nearest')
+ x = self.sample(x)
+ return x
+
+class EncoderFeature(nn.Module):
+ def __init__(self, vit_channel, num_ch_dec=[256, 512, 1024, 1024], use_cls_token=True, num_register_tokens=0, tuning_mode=None):
+ super(EncoderFeature, self).__init__()
+ self.vit_channel = vit_channel
+ self.num_ch_dec = num_ch_dec
+
+ self.read_3 = Token2Feature(self.vit_channel, self.num_ch_dec[3], scale_factor=1, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens, tuning_mode=tuning_mode)
+ self.read_2 = Token2Feature(self.vit_channel, self.num_ch_dec[2], scale_factor=1, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens, tuning_mode=tuning_mode)
+ self.read_1 = Token2Feature(self.vit_channel, self.num_ch_dec[1], scale_factor=2, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens, tuning_mode=tuning_mode)
+ self.read_0 = Token2Feature(self.vit_channel, self.num_ch_dec[0], scale_factor=7/2, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens, tuning_mode=tuning_mode)
+
+ def forward(self, ref_feature):
+ x = self.read_3(ref_feature[3]) # 1/14
+ x2 = self.read_2(ref_feature[2]) # 1/14
+ x1 = self.read_1(ref_feature[1]) # 1/7
+ x0 = self.read_0(ref_feature[0]) # 1/4
+
+ return x, x2, x1, x0
+
+class DecoderFeature(nn.Module):
+ def __init__(self, vit_channel, num_ch_dec=[128, 256, 512, 1024, 1024], use_cls_token=True, tuning_mode=None):
+ super(DecoderFeature, self).__init__()
+ self.vit_channel = vit_channel
+ self.num_ch_dec = num_ch_dec
+
+ self.upconv_3 = FuseBlock(
+ self.num_ch_dec[4],
+ self.num_ch_dec[3],
+ fuse=False, upsample=False, tuning_mode=tuning_mode)
+
+ self.upconv_2 = FuseBlock(
+ self.num_ch_dec[3],
+ self.num_ch_dec[2],
+ tuning_mode=tuning_mode)
+
+ self.upconv_1 = FuseBlock(
+ self.num_ch_dec[2],
+ self.num_ch_dec[1] + 2,
+ scale_factor=7/4,
+ tuning_mode=tuning_mode)
+
+ # self.upconv_0 = FuseBlock(
+ # self.num_ch_dec[1],
+ # self.num_ch_dec[0] + 1,
+ # )
+
+ def forward(self, ref_feature):
+ x, x2, x1, x0 = ref_feature # 1/14 1/14 1/7 1/4
+
+ x = self.upconv_3(x) # 1/14
+ x = self.upconv_2(x, x2) # 1/7
+ x = self.upconv_1(x, x1) # 1/4
+ # x = self.upconv_0(x, x0) # 4/7
+ return x
+
+class RAFTDepthNormalDPT5(nn.Module):
+ def __init__(self, cfg):
+ super().__init__()
+ self.in_channels = cfg.model.decode_head.in_channels # [1024, 1024, 1024, 1024]
+ self.feature_channels = cfg.model.decode_head.feature_channels # [256, 512, 1024, 1024] [2/7, 1/7, 1/14, 1/14]
+ self.decoder_channels = cfg.model.decode_head.decoder_channels # [128, 256, 512, 1024, 1024] [-, 1/4, 1/7, 1/14, 1/14]
+ self.use_cls_token = cfg.model.decode_head.use_cls_token
+ self.up_scale = cfg.model.decode_head.up_scale
+ self.num_register_tokens = cfg.model.decode_head.num_register_tokens
+ self.min_val = cfg.data_basic.depth_normalize[0]
+ self.max_val = cfg.data_basic.depth_normalize[1]
+ self.regress_scale = 100.0\
+
+ try:
+ tuning_mode = cfg.model.decode_head.tuning_mode
+ except:
+ tuning_mode = None
+ self.tuning_mode = tuning_mode
+
+ self.hidden_dims = self.context_dims = cfg.model.decode_head.hidden_channels # [128, 128, 128, 128]
+ self.n_gru_layers = cfg.model.decode_head.n_gru_layers # 3
+ self.n_downsample = cfg.model.decode_head.n_downsample # 3, resolution of the disparity field (1/2^K)
+ self.iters = cfg.model.decode_head.iters # 22
+ self.slow_fast_gru = cfg.model.decode_head.slow_fast_gru # True
+
+ self.num_depth_regressor_anchor = 256 # 512
+ self.used_res_channel = self.decoder_channels[1] # now, use 2/7 res
+ self.token2feature = EncoderFeature(self.in_channels[0], self.feature_channels, self.use_cls_token, self.num_register_tokens, tuning_mode=tuning_mode)
+ self.decoder_mono = DecoderFeature(self.in_channels, self.decoder_channels, tuning_mode=tuning_mode)
+ self.depth_regressor = nn.Sequential(
+ Conv2dLoRA(self.used_res_channel,
+ self.num_depth_regressor_anchor,
+ kernel_size=3,
+ padding=1, r = 8 if tuning_mode == 'lora' else 0),
+ # nn.BatchNorm2d(self.num_depth_regressor_anchor),
+ nn.ReLU(inplace=True),
+ Conv2dLoRA(self.num_depth_regressor_anchor,
+ self.num_depth_regressor_anchor,
+ kernel_size=1, r = 8 if tuning_mode == 'lora' else 0),
+ )
+ self.normal_predictor = nn.Sequential(
+ Conv2dLoRA(self.used_res_channel,
+ 128,
+ kernel_size=3,
+ padding=1, r = 8 if tuning_mode == 'lora' else 0,),
+ # nn.BatchNorm2d(128),
+ nn.ReLU(inplace=True),
+ Conv2dLoRA(128, 128, kernel_size=1, r = 8 if tuning_mode == 'lora' else 0), nn.ReLU(inplace=True),
+ Conv2dLoRA(128, 128, kernel_size=1, r = 8 if tuning_mode == 'lora' else 0), nn.ReLU(inplace=True),
+ Conv2dLoRA(128, 3, kernel_size=1, r = 8 if tuning_mode == 'lora' else 0),
+ )
+
+ self.context_feature_encoder = ContextFeatureEncoder(self.feature_channels, [self.hidden_dims, self.context_dims], tuning_mode=tuning_mode)
+ self.context_zqr_convs = nn.ModuleList([Conv2dLoRA(self.context_dims[i], self.hidden_dims[i]*3, 3, padding=3//2, r = 8 if tuning_mode == 'lora' else 0) for i in range(self.n_gru_layers)])
+ self.update_block = BasicMultiUpdateBlock(cfg, hidden_dims=self.hidden_dims, out_dims=6, tuning_mode=tuning_mode)
+
+ self.relu = nn.ReLU(inplace=True)
+
+ def get_bins(self, bins_num):
+ depth_bins_vec = torch.linspace(math.log(self.min_val), math.log(self.max_val), bins_num, device="cuda")
+ depth_bins_vec = torch.exp(depth_bins_vec)
+ return depth_bins_vec
+
+ def register_depth_expectation_anchor(self, bins_num, B):
+ depth_bins_vec = self.get_bins(bins_num)
+ depth_bins_vec = depth_bins_vec.unsqueeze(0).repeat(B, 1)
+ self.register_buffer('depth_expectation_anchor', depth_bins_vec, persistent=False)
+
+ def clamp(self, x):
+ y = self.relu(x - self.min_val) + self.min_val
+ y = self.max_val - self.relu(self.max_val - y)
+ return y
+
+ def regress_depth(self, feature_map_d):
+ prob_feature = self.depth_regressor(feature_map_d)
+ prob = prob_feature.softmax(dim=1)
+ #prob = prob_feature.float().softmax(dim=1)
+
+ ## Error logging
+ if torch.isnan(prob).any():
+ print('prob_feat_nan!!!')
+ if torch.isinf(prob).any():
+ print('prob_feat_inf!!!')
+
+ # h = prob[0,:,0,0].cpu().numpy().reshape(-1)
+ # import matplotlib.pyplot as plt
+ # plt.bar(range(len(h)), h)
+ B = prob.shape[0]
+ if "depth_expectation_anchor" not in self._buffers:
+ self.register_depth_expectation_anchor(self.num_depth_regressor_anchor, B)
+ d = compute_depth_expectation(
+ prob,
+ self.depth_expectation_anchor[:B, ...]).unsqueeze(1)
+
+ ## Error logging
+ if torch.isnan(d ).any():
+ print('d_nan!!!')
+ if torch.isinf(d ).any():
+ print('d_inf!!!')
+
+ return (self.clamp(d) - self.max_val)/ self.regress_scale, prob_feature
+
+ def pred_normal(self, feature_map, confidence):
+ normal_out = self.normal_predictor(feature_map)
+
+ ## Error logging
+ if torch.isnan(normal_out).any():
+ print('norm_nan!!!')
+ if torch.isinf(normal_out).any():
+ print('norm_feat_inf!!!')
+
+ return norm_normalize(torch.cat([normal_out, confidence], dim=1))
+ #return norm_normalize(torch.cat([normal_out, confidence], dim=1).float())
+
+ def create_mesh_grid(self, height, width, batch, device="cuda", set_buffer=True):
+ y, x = torch.meshgrid([torch.arange(0, height, dtype=torch.float32, device=device),
+ torch.arange(0, width, dtype=torch.float32, device=device)], indexing='ij')
+ meshgrid = torch.stack((x, y))
+ meshgrid = meshgrid.unsqueeze(0).repeat(batch, 1, 1, 1)
+ #self.register_buffer('meshgrid', meshgrid, persistent=False)
+ return meshgrid
+
+ def upsample_flow(self, flow, mask):
+ """ Upsample flow field [H/8, W/8, 2] -> [H, W, 2] using convex combination """
+ N, D, H, W = flow.shape
+ factor = 2 ** self.n_downsample
+ mask = mask.view(N, 1, 9, factor, factor, H, W)
+ mask = torch.softmax(mask, dim=2)
+ #mask = torch.softmax(mask.float(), dim=2)
+
+ #up_flow = F.unfold(factor * flow, [3,3], padding=1)
+ up_flow = F.unfold(flow, [3,3], padding=1)
+ up_flow = up_flow.view(N, D, 9, 1, 1, H, W)
+
+ up_flow = torch.sum(mask * up_flow, dim=2)
+ up_flow = up_flow.permute(0, 1, 4, 2, 5, 3)
+ return up_flow.reshape(N, D, factor*H, factor*W)
+
+ def initialize_flow(self, img):
+ """ Flow is represented as difference between two coordinate grids flow = coords1 - coords0"""
+ N, _, H, W = img.shape
+
+ coords0 = coords_grid(N, H, W).to(img.device)
+ coords1 = coords_grid(N, H, W).to(img.device)
+
+ return coords0, coords1
+
+ def upsample(self, x, scale_factor=2):
+ """Upsample input tensor by a factor of 2
+ """
+ return interpolate_float32(x, scale_factor=scale_factor*self.up_scale/8, mode="nearest")
+
+ def forward(self, vit_features, **kwargs):
+ ## read vit token to multi-scale features
+ B, H, W, _, _, num_register_tokens = vit_features[1]
+ vit_features = vit_features[0]
+
+ ## Error logging
+ if torch.isnan(vit_features[0]).any():
+ print('vit_feature_nan!!!')
+ if torch.isinf(vit_features[0]).any():
+ print('vit_feature_inf!!!')
+
+ if self.use_cls_token == True:
+ vit_features = [[ft[:, 1+num_register_tokens:, :].view(B, H, W, self.in_channels[0]), \
+ ft[:, 0:1+num_register_tokens, :].view(B, 1, 1, self.in_channels[0] * (1+num_register_tokens))] for ft in vit_features]
+ else:
+ vit_features = [ft.view(B, H, W, self.in_channels[0]) for ft in vit_features]
+ encoder_features = self.token2feature(vit_features) # 1/14, 1/14, 1/7, 1/4
+
+ ## Error logging
+ for en_ft in encoder_features:
+ if torch.isnan(en_ft).any():
+ print('decoder_feature_nan!!!')
+ print(en_ft.shape)
+ if torch.isinf(en_ft).any():
+ print('decoder_feature_inf!!!')
+ print(en_ft.shape)
+
+ ## decode features to init-depth (and confidence)
+ ref_feat= self.decoder_mono(encoder_features) # now, 1/4 for depth
+
+ ## Error logging
+ if torch.isnan(ref_feat).any():
+ print('ref_feat_nan!!!')
+ if torch.isinf(ref_feat).any():
+ print('ref_feat_inf!!!')
+
+ feature_map = ref_feat[:, :-2, :, :] # feature map share of depth and normal prediction
+ depth_confidence_map = ref_feat[:, -2:-1, :, :]
+ normal_confidence_map = ref_feat[:, -1:, :, :]
+ depth_pred, binmap = self.regress_depth(feature_map) # regress bin for depth
+ normal_pred = self.pred_normal(feature_map, normal_confidence_map) # mlp for normal
+
+ depth_init = torch.cat((depth_pred, depth_confidence_map, normal_pred), dim=1) # (N, 1+1+4, H, W)
+
+ ## encoder features to context-feature for init-hidden-state and contex-features
+ cnet_list = self.context_feature_encoder(encoder_features[::-1])
+ net_list = [torch.tanh(x[0]) for x in cnet_list] # x_4, x_8, x_16 of hidden state
+ inp_list = [torch.relu(x[1]) for x in cnet_list] # x_4, x_8, x_16 context features
+
+ # Rather than running the GRU's conv layers on the context features multiple times, we do it once at the beginning
+ inp_list = [list(conv(i).split(split_size=conv.out_channels//3, dim=1)) for i,conv in zip(inp_list, self.context_zqr_convs)]
+
+ coords0, coords1 = self.initialize_flow(net_list[0])
+ if depth_init is not None:
+ coords1 = coords1 + depth_init
+
+ if self.training:
+ low_resolution_init = [self.clamp(depth_init[:,:1] * self.regress_scale + self.max_val), depth_init[:,1:2], norm_normalize(depth_init[:,2:].clone())]
+ init_depth = upflow4(depth_init)
+ flow_predictions = [self.clamp(init_depth[:,:1] * self.regress_scale + self.max_val)]
+ conf_predictions = [init_depth[:,1:2]]
+ normal_outs = [norm_normalize(init_depth[:,2:].clone())]
+
+ else:
+ flow_predictions = []
+ conf_predictions = []
+ samples_pred_list = []
+ coord_list = []
+ normal_outs = []
+ low_resolution_init = []
+
+ for itr in range(self.iters):
+ # coords1 = coords1.detach()
+ flow = coords1 - coords0
+ if self.n_gru_layers == 3 and self.slow_fast_gru: # Update low-res GRU
+ net_list = self.update_block(net_list, inp_list, iter32=True, iter16=False, iter08=False, update=False)
+ if self.n_gru_layers >= 2 and self.slow_fast_gru:# Update low-res GRU and mid-res GRU
+ net_list = self.update_block(net_list, inp_list, iter32=self.n_gru_layers==3, iter16=True, iter08=False, update=False)
+ net_list, up_mask, delta_flow = self.update_block(net_list, inp_list, None, flow, iter32=self.n_gru_layers==3, iter16=self.n_gru_layers>=2)
+
+ # F(t+1) = F(t) + \Delta(t)
+ coords1 = coords1 + delta_flow
+
+ # We do not need to upsample or output intermediate results in test_mode
+ #if (not self.training) and itr < self.iters-1:
+ #continue
+
+ # upsample predictions
+ if up_mask is None:
+ flow_up = self.upsample(coords1-coords0, 4)
+ else:
+ flow_up = self.upsample_flow(coords1 - coords0, up_mask)
+ # flow_up = self.upsample(coords1-coords0, 4)
+
+ flow_predictions.append(self.clamp(flow_up[:,:1] * self.regress_scale + self.max_val))
+ conf_predictions.append(flow_up[:,1:2])
+ normal_outs.append(norm_normalize(flow_up[:,2:].clone()))
+
+ outputs=dict(
+ prediction=flow_predictions[-1],
+ predictions_list=flow_predictions,
+ confidence=conf_predictions[-1],
+ confidence_list=conf_predictions,
+ pred_logit=None,
+ # samples_pred_list=samples_pred_list,
+ # coord_list=coord_list,
+ prediction_normal=normal_outs[-1],
+ normal_out_list=normal_outs,
+ low_resolution_init=low_resolution_init,
+ )
+
+ return outputs
+
+
+if __name__ == "__main__":
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+ cfg = Config.fromfile('/cpfs01/shared/public/users/mu.hu/monodepth/mono/configs/RAFTDecoder/vit.raft.full2t.py')
+ cfg.model.decode_head.in_channels = [384, 384, 384, 384]
+ cfg.model.decode_head.feature_channels = [96, 192, 384, 768]
+ cfg.model.decode_head.decoder_channels = [48, 96, 192, 384, 384]
+ cfg.model.decode_head.hidden_channels = [48, 48, 48, 48, 48]
+ cfg.model.decode_head.up_scale = 7
+
+ # cfg.model.decode_head.use_cls_token = True
+ # vit_feature = [[torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()]]
+
+ cfg.model.decode_head.use_cls_token = True
+ cfg.model.decode_head.num_register_tokens = 4
+ vit_feature = [[torch.rand((2, (74 * 74) + 5, 384)).cuda(),\
+ torch.rand((2, (74 * 74) + 5, 384)).cuda(), \
+ torch.rand((2, (74 * 74) + 5, 384)).cuda(), \
+ torch.rand((2, (74 * 74) + 5, 384)).cuda()], (2, 74, 74, 1036, 1036, 4)]
+
+ decoder = RAFTDepthNormalDPT5(cfg).cuda()
+ output = decoder(vit_feature)
+ temp = 1
+
+
+
+
diff --git a/finetune/Metric3D/mono/model/decode_heads/__init__.py b/finetune/Metric3D/mono/model/decode_heads/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..92381a5fc3dad0ca8009c1ab0a153ce6b107c634
--- /dev/null
+++ b/finetune/Metric3D/mono/model/decode_heads/__init__.py
@@ -0,0 +1,4 @@
+from .HourGlassDecoder import HourglassDecoder
+from .RAFTDepthNormalDPTDecoder5 import RAFTDepthNormalDPT5
+
+__all__=['HourglassDecoder', 'RAFTDepthNormalDPT5']
diff --git a/finetune/Metric3D/mono/model/model_pipelines/__base_model__.py b/finetune/Metric3D/mono/model/model_pipelines/__base_model__.py
new file mode 100644
index 0000000000000000000000000000000000000000..d599c418b3d9677a195fe87d45bb31bf1068fbce
--- /dev/null
+++ b/finetune/Metric3D/mono/model/model_pipelines/__base_model__.py
@@ -0,0 +1,20 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+
+
+class BaseDepthModel(nn.Module):
+ def __init__(self, cfg, **kwargs) -> None:
+ super(BaseDepthModel, self).__init__()
+ model_type = cfg.model.type
+ self.depth_model = get_func('mono.model.model_pipelines.' + model_type)(cfg)
+
+ def forward(self, data):
+ output = self.depth_model(**data)
+
+ return output['prediction'], output['confidence'], output
+
+ def inference(self, data):
+ with torch.no_grad():
+ pred_depth, confidence, _ = self.forward(data)
+ return pred_depth, confidence
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/model/model_pipelines/__init__.py b/finetune/Metric3D/mono/model/model_pipelines/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b962a3f858573466e429219c4ad70951b545b637
--- /dev/null
+++ b/finetune/Metric3D/mono/model/model_pipelines/__init__.py
@@ -0,0 +1,6 @@
+
+from .dense_pipeline import DensePredModel
+from .__base_model__ import BaseDepthModel
+__all__ = [
+ 'DensePredModel', 'BaseDepthModel',
+]
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/model/model_pipelines/dense_pipeline.py b/finetune/Metric3D/mono/model/model_pipelines/dense_pipeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..1362a11b6b9d45e50795dd705906aa3f79ec4a9a
--- /dev/null
+++ b/finetune/Metric3D/mono/model/model_pipelines/dense_pipeline.py
@@ -0,0 +1,16 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+
+class DensePredModel(nn.Module):
+ def __init__(self, cfg) -> None:
+ super(DensePredModel, self).__init__()
+
+ self.encoder = get_func('mono.model.' + cfg.model.backbone.prefix + cfg.model.backbone.type)(**cfg.model.backbone)
+ self.decoder = get_func('mono.model.' + cfg.model.decode_head.prefix + cfg.model.decode_head.type)(cfg)
+
+ def forward(self, input, **kwargs):
+ # [f_32, f_16, f_8, f_4]
+ features = self.encoder(input)
+ out = self.decoder(features, **kwargs)
+ return out
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/model/monodepth_model.py b/finetune/Metric3D/mono/model/monodepth_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b58b7643ee43f84fd4e621e5b3b61b1f3f85564
--- /dev/null
+++ b/finetune/Metric3D/mono/model/monodepth_model.py
@@ -0,0 +1,37 @@
+import torch
+import torch.nn as nn
+from .model_pipelines.__base_model__ import BaseDepthModel
+
+class DepthModel(BaseDepthModel):
+ def __init__(self, cfg, **kwards):
+ super(DepthModel, self).__init__(cfg)
+ model_type = cfg.model.type
+
+ def inference(self, data):
+ with torch.no_grad():
+ pred_depth, confidence, output_dict = self.forward(data)
+ return pred_depth, confidence, output_dict
+
+def get_monodepth_model(
+ cfg : dict,
+ **kwargs
+ ) -> nn.Module:
+ # config depth model
+ model = DepthModel(cfg, **kwargs)
+ #model.init_weights(load_imagenet_model, imagenet_ckpt_fpath)
+ assert isinstance(model, nn.Module)
+ return model
+
+def get_configured_monodepth_model(
+ cfg: dict,
+ ) -> nn.Module:
+ """
+ Args:
+ @ configs: configures for the network.
+ @ load_imagenet_model: whether to initialize from ImageNet-pretrained model.
+ @ imagenet_ckpt_fpath: string representing path to file with weights to initialize model with.
+ Returns:
+ # model: depth model.
+ """
+ model = get_monodepth_model(cfg)
+ return model
diff --git a/finetune/Metric3D/mono/tools/test_scale_cano.py b/finetune/Metric3D/mono/tools/test_scale_cano.py
new file mode 100644
index 0000000000000000000000000000000000000000..03cceda05f4f85de26370e877cb8d0e19b65abde
--- /dev/null
+++ b/finetune/Metric3D/mono/tools/test_scale_cano.py
@@ -0,0 +1,161 @@
+import os
+import os.path as osp
+import cv2
+import time
+import sys
+CODE_SPACE=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+sys.path.append(CODE_SPACE)
+import argparse
+import mmcv
+import torch
+import torch.distributed as dist
+import torch.multiprocessing as mp
+
+try:
+ from mmcv.utils import Config, DictAction
+except:
+ from mmengine import Config, DictAction
+from datetime import timedelta
+import random
+import numpy as np
+from mono.utils.logger import setup_logger
+import glob
+from mono.utils.comm import init_env
+from mono.model.monodepth_model import get_configured_monodepth_model
+from mono.utils.running import load_ckpt
+from mono.utils.do_test import do_scalecano_test_with_custom_data
+from mono.utils.mldb import load_data_info, reset_ckpt_path
+from mono.utils.custom_data import load_from_annos, load_data
+
+def parse_args():
+ parser = argparse.ArgumentParser(description='Train a segmentor')
+ parser.add_argument('config', help='train config file path')
+ parser.add_argument('--show-dir', help='the dir to save logs and visualization results')
+ parser.add_argument('--load-from', help='the checkpoint file to load weights from')
+ parser.add_argument('--node_rank', type=int, default=0)
+ parser.add_argument('--nnodes', type=int, default=1, help='number of nodes')
+ parser.add_argument('--options', nargs='+', action=DictAction, help='custom options')
+ parser.add_argument('--launcher', choices=['None', 'pytorch', 'slurm', 'mpi', 'ror'], default='slurm', help='job launcher')
+ parser.add_argument('--test_data_path', default='None', type=str, help='the path of test data')
+ parser.add_argument('--batch_size', default=1, type=int, help='the batch size for inference')
+ args = parser.parse_args()
+ return args
+
+def main(args):
+ os.chdir(CODE_SPACE)
+ cfg = Config.fromfile(args.config)
+
+ if args.options is not None:
+ cfg.merge_from_dict(args.options)
+
+ # show_dir is determined in this priority: CLI > segment in file > filename
+ if args.show_dir is not None:
+ # update configs according to CLI args if args.show_dir is not None
+ cfg.show_dir = args.show_dir
+ else:
+ # use condig filename + timestamp as default show_dir if args.show_dir is None
+ cfg.show_dir = osp.join('./show_dirs',
+ osp.splitext(osp.basename(args.config))[0],
+ args.timestamp)
+
+ # ckpt path
+ if args.load_from is None:
+ raise RuntimeError('Please set model path!')
+ cfg.load_from = args.load_from
+ cfg.batch_size = args.batch_size
+
+ # load data info
+ data_info = {}
+ load_data_info('data_info', data_info=data_info)
+ cfg.mldb_info = data_info
+ # update check point info
+ reset_ckpt_path(cfg.model, data_info)
+
+ # create show dir
+ os.makedirs(osp.abspath(cfg.show_dir), exist_ok=True)
+
+ # init the logger before other steps
+ cfg.log_file = osp.join(cfg.show_dir, f'{args.timestamp}.log')
+ logger = setup_logger(cfg.log_file)
+
+ # log some basic info
+ logger.info(f'Config:\n{cfg.pretty_text}')
+
+ # init distributed env dirst, since logger depends on the dist info
+ if args.launcher == 'None':
+ cfg.distributed = False
+ else:
+ cfg.distributed = True
+ init_env(args.launcher, cfg)
+ logger.info(f'Distributed training: {cfg.distributed}')
+
+ # dump config
+ cfg.dump(osp.join(cfg.show_dir, osp.basename(args.config)))
+ test_data_path = args.test_data_path
+ if not os.path.isabs(test_data_path):
+ test_data_path = osp.join(CODE_SPACE, test_data_path)
+
+ if 'json' in test_data_path:
+ test_data = load_from_annos(test_data_path)
+ else:
+ test_data = load_data(args.test_data_path)
+
+ if not cfg.distributed:
+ main_worker(0, cfg, args.launcher, test_data)
+ else:
+ # distributed training
+ if args.launcher == 'ror':
+ local_rank = cfg.dist_params.local_rank
+ main_worker(local_rank, cfg, args.launcher, test_data)
+ else:
+ mp.spawn(main_worker, nprocs=cfg.dist_params.num_gpus_per_node, args=(cfg, args.launcher, test_data))
+
+def main_worker(local_rank: int, cfg: dict, launcher: str, test_data: list):
+ if cfg.distributed:
+ cfg.dist_params.global_rank = cfg.dist_params.node_rank * cfg.dist_params.num_gpus_per_node + local_rank
+ cfg.dist_params.local_rank = local_rank
+
+ if launcher == 'ror':
+ init_torch_process_group(use_hvd=False)
+ else:
+ torch.cuda.set_device(local_rank)
+ default_timeout = timedelta(minutes=30)
+ dist.init_process_group(
+ backend=cfg.dist_params.backend,
+ init_method=cfg.dist_params.dist_url,
+ world_size=cfg.dist_params.world_size,
+ rank=cfg.dist_params.global_rank,
+ timeout=default_timeout)
+
+ logger = setup_logger(cfg.log_file)
+ # build model
+ model = get_configured_monodepth_model(cfg, )
+
+ # config distributed training
+ if cfg.distributed:
+ model = torch.nn.parallel.DistributedDataParallel(model.cuda(),
+ device_ids=[local_rank],
+ output_device=local_rank,
+ find_unused_parameters=True)
+ else:
+ model = torch.nn.DataParallel(model).cuda()
+
+ # load ckpt
+ model, _, _, _ = load_ckpt(cfg.load_from, model, strict_match=False)
+ model.eval()
+
+ do_scalecano_test_with_custom_data(
+ model,
+ cfg,
+ test_data,
+ logger,
+ cfg.distributed,
+ local_rank,
+ cfg.batch_size,
+ )
+
+if __name__ == '__main__':
+ args = parse_args()
+ timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime())
+ args.timestamp = timestamp
+ main(args)
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/__init__.py b/finetune/Metric3D/mono/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/__init__.py
@@ -0,0 +1 @@
+
diff --git a/finetune/Metric3D/mono/utils/avg_meter.py b/finetune/Metric3D/mono/utils/avg_meter.py
new file mode 100644
index 0000000000000000000000000000000000000000..37ed9fffa7aa7be7eea094280102168993912f44
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/avg_meter.py
@@ -0,0 +1,475 @@
+import numpy as np
+import torch
+import torch.distributed as dist
+import torch.nn.functional as F
+import matplotlib.pyplot as plt
+
+
+class AverageMeter(object):
+ """Computes and stores the average and current value"""
+ def __init__(self) -> None:
+ self.reset()
+
+ def reset(self) -> None:
+ self.val = np.longdouble(0.0)
+ self.avg = np.longdouble(0.0)
+ self.sum = np.longdouble(0.0)
+ self.count = np.longdouble(0.0)
+
+ def update(self, val, n: float = 1) -> None:
+ self.val = val
+ self.sum += val
+ self.count += n
+ self.avg = self.sum / (self.count + 1e-6)
+
+class MetricAverageMeter(AverageMeter):
+ """
+ An AverageMeter designed specifically for evaluating segmentation results.
+ """
+ def __init__(self, metrics: list) -> None:
+ """ Initialize object. """
+ # average meters for metrics
+ self.abs_rel = AverageMeter()
+ self.rmse = AverageMeter()
+ self.silog = AverageMeter()
+ self.delta1 = AverageMeter()
+ self.delta2 = AverageMeter()
+ self.delta3 = AverageMeter()
+
+ self.metrics = metrics
+
+ self.consistency = AverageMeter()
+ self.log10 = AverageMeter()
+ self.rmse_log = AverageMeter()
+ self.sq_rel = AverageMeter()
+
+ # normal
+ self.normal_mean = AverageMeter()
+ self.normal_rmse = AverageMeter()
+ self.normal_a1 = AverageMeter()
+ self.normal_a2 = AverageMeter()
+
+ self.normal_median = AverageMeter()
+ self.normal_a3 = AverageMeter()
+ self.normal_a4 = AverageMeter()
+ self.normal_a5 = AverageMeter()
+
+
+ def update_metrics_cpu(self,
+ pred: torch.Tensor,
+ target: torch.Tensor,
+ mask: torch.Tensor,):
+ """
+ Update metrics on cpu
+ """
+
+ assert pred.shape == target.shape
+
+ if len(pred.shape) == 3:
+ pred = pred[:, None, :, :]
+ target = target[:, None, :, :]
+ mask = mask[:, None, :, :]
+ elif len(pred.shape) == 2:
+ pred = pred[None, None, :, :]
+ target = target[None, None, :, :]
+ mask = mask[None, None, :, :]
+
+
+ # Absolute relative error
+ abs_rel_sum, valid_pics = get_absrel_err(pred, target, mask)
+ abs_rel_sum = abs_rel_sum.numpy()
+ valid_pics = valid_pics.numpy()
+ self.abs_rel.update(abs_rel_sum, valid_pics)
+
+ # squared relative error
+ sqrel_sum, _ = get_sqrel_err(pred, target, mask)
+ sqrel_sum = sqrel_sum.numpy()
+ self.sq_rel.update(sqrel_sum, valid_pics)
+
+ # root mean squared error
+ rmse_sum, _ = get_rmse_err(pred, target, mask)
+ rmse_sum = rmse_sum.numpy()
+ self.rmse.update(rmse_sum, valid_pics)
+
+ # log root mean squared error
+ log_rmse_sum, _ = get_rmse_log_err(pred, target, mask)
+ log_rmse_sum = log_rmse_sum.numpy()
+ self.rmse.update(log_rmse_sum, valid_pics)
+
+ # log10 error
+ log10_sum, _ = get_log10_err(pred, target, mask)
+ log10_sum = log10_sum.numpy()
+ self.rmse.update(log10_sum, valid_pics)
+
+ # scale-invariant root mean squared error in log space
+ silog_sum, _ = get_silog_err(pred, target, mask)
+ silog_sum = silog_sum.numpy()
+ self.silog.update(silog_sum, valid_pics)
+
+ # ratio error, delta1, ....
+ delta1_sum, delta2_sum, delta3_sum, _ = get_ratio_error(pred, target, mask)
+ delta1_sum = delta1_sum.numpy()
+ delta2_sum = delta2_sum.numpy()
+ delta3_sum = delta3_sum.numpy()
+
+ self.delta1.update(delta1_sum, valid_pics)
+ self.delta2.update(delta1_sum, valid_pics)
+ self.delta3.update(delta1_sum, valid_pics)
+
+
+ def update_metrics_gpu(
+ self,
+ pred: torch.Tensor,
+ target: torch.Tensor,
+ mask: torch.Tensor,
+ is_distributed: bool,
+ pred_next: torch.tensor = None,
+ pose_f1_to_f2: torch.tensor = None,
+ intrinsic: torch.tensor = None):
+ """
+ Update metric on GPU. It supports distributed processing. If multiple machines are employed, please
+ set 'is_distributed' as True.
+ """
+ assert pred.shape == target.shape
+
+ if len(pred.shape) == 3:
+ pred = pred[:, None, :, :]
+ target = target[:, None, :, :]
+ mask = mask[:, None, :, :]
+ elif len(pred.shape) == 2:
+ pred = pred[None, None, :, :]
+ target = target[None, None, :, :]
+ mask = mask[None, None, :, :]
+
+
+ # Absolute relative error
+ abs_rel_sum, valid_pics = get_absrel_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(abs_rel_sum), dist.all_reduce(valid_pics)
+ abs_rel_sum = abs_rel_sum.cpu().numpy()
+ valid_pics = int(valid_pics)
+ self.abs_rel.update(abs_rel_sum, valid_pics)
+
+ # root mean squared error
+ rmse_sum, _ = get_rmse_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(rmse_sum)
+ rmse_sum = rmse_sum.cpu().numpy()
+ self.rmse.update(rmse_sum, valid_pics)
+
+ # log root mean squared error
+ log_rmse_sum, _ = get_rmse_log_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(log_rmse_sum)
+ log_rmse_sum = log_rmse_sum.cpu().numpy()
+ self.rmse_log.update(log_rmse_sum, valid_pics)
+
+ # log10 error
+ log10_sum, _ = get_log10_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(log10_sum)
+ log10_sum = log10_sum.cpu().numpy()
+ self.log10.update(log10_sum, valid_pics)
+
+ # scale-invariant root mean squared error in log space
+ silog_sum, _ = get_silog_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(silog_sum)
+ silog_sum = silog_sum.cpu().numpy()
+ self.silog.update(silog_sum, valid_pics)
+
+ # ratio error, delta1, ....
+ delta1_sum, delta2_sum, delta3_sum, _ = get_ratio_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(delta1_sum), dist.all_reduce(delta2_sum), dist.all_reduce(delta3_sum)
+ delta1_sum = delta1_sum.cpu().numpy()
+ delta2_sum = delta2_sum.cpu().numpy()
+ delta3_sum = delta3_sum.cpu().numpy()
+
+ self.delta1.update(delta1_sum, valid_pics)
+ self.delta2.update(delta2_sum, valid_pics)
+ self.delta3.update(delta3_sum, valid_pics)
+
+ # video consistency error
+ # consistency_rel_sum, valid_warps = get_video_consistency_err(pred, pred_next, pose_f1_to_f2, intrinsic)
+ # if is_distributed:
+ # dist.all_reduce(consistency_rel_sum), dist.all_reduce(valid_warps)
+ # consistency_rel_sum = consistency_rel_sum.cpu().numpy()
+ # valid_warps = int(valid_warps)
+ # self.consistency.update(consistency_rel_sum, valid_warps)
+
+ ## for surface normal
+ def update_normal_metrics_gpu(
+ self,
+ pred: torch.Tensor, # (B, 3, H, W)
+ target: torch.Tensor, # (B, 3, H, W)
+ mask: torch.Tensor, # (B, 1, H, W)
+ is_distributed: bool,
+ ):
+ """
+ Update metric on GPU. It supports distributed processing. If multiple machines are employed, please
+ set 'is_distributed' as True.
+ """
+ assert pred.shape == target.shape
+
+ valid_pics = torch.sum(mask, dtype=torch.float32) + 1e-6
+
+ if valid_pics < 10:
+ return
+
+ mean_error = rmse_error = a1_error = a2_error = dist_node_cnt = valid_pics
+ normal_error = torch.cosine_similarity(pred, target, dim=1)
+ normal_error = torch.clamp(normal_error, min=-1.0, max=1.0)
+ angle_error = torch.acos(normal_error) * 180.0 / torch.pi
+ angle_error = angle_error[:, None, :, :]
+ angle_error = angle_error[mask]
+ # Calculation error
+ mean_error = angle_error.sum() / valid_pics
+ rmse_error = torch.sqrt( torch.sum(torch.square(angle_error)) / valid_pics )
+ median_error = angle_error.median()
+ a1_error = 100.0 * (torch.sum(angle_error < 5) / valid_pics)
+ a2_error = 100.0 * (torch.sum(angle_error < 7.5) / valid_pics)
+
+ a3_error = 100.0 * (torch.sum(angle_error < 11.25) / valid_pics)
+ a4_error = 100.0 * (torch.sum(angle_error < 22.5) / valid_pics)
+ a5_error = 100.0 * (torch.sum(angle_error < 30) / valid_pics)
+
+ # if valid_pics > 1e-5:
+ # If the current node gets data with valid normal
+ dist_node_cnt = (valid_pics - 1e-6) / valid_pics
+
+ if is_distributed:
+ dist.all_reduce(dist_node_cnt)
+ dist.all_reduce(mean_error)
+ dist.all_reduce(rmse_error)
+ dist.all_reduce(a1_error)
+ dist.all_reduce(a2_error)
+
+ dist.all_reduce(a3_error)
+ dist.all_reduce(a4_error)
+ dist.all_reduce(a5_error)
+
+ dist_node_cnt = dist_node_cnt.cpu().numpy()
+ self.normal_mean.update(mean_error.cpu().numpy(), dist_node_cnt)
+ self.normal_rmse.update(rmse_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a1.update(a1_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a2.update(a2_error.cpu().numpy(), dist_node_cnt)
+
+ self.normal_median.update(median_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a3.update(a3_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a4.update(a4_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a5.update(a5_error.cpu().numpy(), dist_node_cnt)
+
+
+ def get_metrics(self,):
+ """
+ """
+ metrics_dict = {}
+ for metric in self.metrics:
+ metrics_dict[metric] = self.__getattribute__(metric).avg
+ return metrics_dict
+
+
+ def get_metrics(self,):
+ """
+ """
+ metrics_dict = {}
+ for metric in self.metrics:
+ metrics_dict[metric] = self.__getattribute__(metric).avg
+ return metrics_dict
+
+def get_absrel_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes absolute relative error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ # Mean Absolute Relative Error
+ rel = torch.abs(t_m - p_m) / (t_m + 1e-10) # compute errors
+ abs_rel_sum = torch.sum(rel.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ abs_err = abs_rel_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(abs_err), valid_pics
+
+def get_sqrel_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes squared relative error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ # squared Relative Error
+ sq_rel = torch.abs(t_m - p_m) ** 2 / (t_m + 1e-10) # compute errors
+ sq_rel_sum = torch.sum(sq_rel.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ sqrel_err = sq_rel_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(sqrel_err), valid_pics
+
+def get_log10_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes log10 error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log10(p_m+1e-10) - torch.log10(t_m+1e-10)) * mask
+ log10_diff = torch.abs(diff_log)
+ log10_sum = torch.sum(log10_diff.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ log10_err = log10_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(log10_err), valid_pics
+
+def get_rmse_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes rmse error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ square = (t_m - p_m) ** 2
+ rmse_sum = torch.sum(square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ rmse = torch.sqrt(rmse_sum / (num + 1e-10))
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(rmse), valid_pics
+
+def get_rmse_log_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes log rmse error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log10(p_m+1e-10) - torch.log10(t_m+1e-10)) * mask
+ square = diff_log ** 2
+ rmse_log_sum = torch.sum(square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ rmse_log = torch.sqrt(rmse_log_sum / (num + 1e-10))
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(rmse_log), valid_pics
+
+def get_silog_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes log rmse error.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log10(p_m+1e-10) - torch.log10(t_m+1e-10)) * mask
+ diff_log_sum = torch.sum(diff_log.reshape((b, c, -1)), dim=2) # [b, c]
+ diff_log_square = diff_log ** 2
+ diff_log_square_sum = torch.sum(diff_log_square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ silog = torch.sqrt(diff_log_square_sum / (num + 1e-10) - (diff_log_sum / (num + 1e-10)) ** 2)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(silog), valid_pics
+
+def get_ratio_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor,
+ ):
+ """
+ Computes the percentage of pixels for which the ratio of the two depth maps is less than a given threshold.
+ Tasks preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred
+
+ gt_pred = t_m / (p_m + 1e-10)
+ pred_gt = p_m / (t_m + 1e-10)
+ gt_pred = gt_pred.reshape((b, c, -1))
+ pred_gt = pred_gt.reshape((b, c, -1))
+ gt_pred_gt = torch.cat((gt_pred, pred_gt), axis=1)
+ ratio_max = torch.amax(gt_pred_gt, axis=1)
+
+ delta_1_sum = torch.sum((ratio_max < 1.25), dim=1) # [b, ]
+ delta_2_sum = torch.sum((ratio_max < 1.25 ** 2), dim=1) # [b, ]
+ delta_3_sum = torch.sum((ratio_max < 1.25 ** 3), dim=1) # [b, ]
+ num = torch.sum(mask.reshape((b, -1)), dim=1) # [b, ]
+
+ delta_1 = delta_1_sum / (num + 1e-10)
+ delta_2 = delta_2_sum / (num + 1e-10)
+ delta_3 = delta_3_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+
+ return torch.sum(delta_1), torch.sum(delta_2), torch.sum(delta_3), valid_pics
+
+
+if __name__ == '__main__':
+ cfg = ['abs_rel', 'delta1']
+ dam = MetricAverageMeter(cfg)
+
+ pred_depth = np.random.random([2, 480, 640])
+ gt_depth = np.random.random([2, 480, 640]) - 0.5
+ intrinsic = [[100, 100, 200, 200], [200, 200, 300, 300]]
+
+ pred = torch.from_numpy(pred_depth).cuda()
+ gt = torch.from_numpy(gt_depth).cuda()
+
+ mask = gt > 0
+ dam.update_metrics_gpu(pred, gt, mask, False)
+ eval_error = dam.get_metrics()
+ print(eval_error)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/comm.py b/finetune/Metric3D/mono/utils/comm.py
new file mode 100644
index 0000000000000000000000000000000000000000..939e4e175c14563d5d13e77e6b56fd1a34668ebf
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/comm.py
@@ -0,0 +1,322 @@
+import importlib
+import torch
+import torch.distributed as dist
+from .avg_meter import AverageMeter
+from collections import defaultdict, OrderedDict
+import os
+import socket
+from mmcv.utils import collect_env as collect_base_env
+try:
+ from mmcv.utils import get_git_hash
+except:
+ from mmengine.utils import get_git_hash
+#import mono.mmseg as mmseg
+# import mmseg
+import time
+import datetime
+import logging
+
+
+def main_process() -> bool:
+ return get_rank() == 0
+ #return not cfg.distributed or \
+ # (cfg.distributed and cfg.local_rank == 0)
+
+def get_world_size() -> int:
+ if not dist.is_available():
+ return 1
+ if not dist.is_initialized():
+ return 1
+ return dist.get_world_size()
+
+def get_rank() -> int:
+ if not dist.is_available():
+ return 0
+ if not dist.is_initialized():
+ return 0
+ return dist.get_rank()
+
+def _find_free_port():
+ # refer to https://github.com/facebookresearch/detectron2/blob/main/detectron2/engine/launch.py # noqa: E501
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ # Binding to port 0 will cause the OS to find an available port for us
+ sock.bind(('', 0))
+ port = sock.getsockname()[1]
+ sock.close()
+ # NOTE: there is still a chance the port could be taken by other processes.
+ return port
+
+def _is_free_port(port):
+ ips = socket.gethostbyname_ex(socket.gethostname())[-1]
+ ips.append('localhost')
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
+ return all(s.connect_ex((ip, port)) != 0 for ip in ips)
+
+
+# def collect_env():
+# """Collect the information of the running environments."""
+# env_info = collect_base_env()
+# env_info['MMSegmentation'] = f'{mmseg.__version__}+{get_git_hash()[:7]}'
+
+# return env_info
+
+def init_env(launcher, cfg):
+ """Initialize distributed training environment.
+ If argument ``cfg.dist_params.dist_url`` is specified as 'env://', then the master port will be system
+ environment variable ``MASTER_PORT``. If ``MASTER_PORT`` is not in system
+ environment variable, then a default port ``29500`` will be used.
+ """
+ if launcher == 'slurm':
+ _init_dist_slurm(cfg)
+ elif launcher == 'ror':
+ _init_dist_ror(cfg)
+ elif launcher == 'None':
+ _init_none_dist(cfg)
+ else:
+ raise RuntimeError(f'{cfg.launcher} has not been supported!')
+
+def _init_none_dist(cfg):
+ cfg.dist_params.num_gpus_per_node = 1
+ cfg.dist_params.world_size = 1
+ cfg.dist_params.nnodes = 1
+ cfg.dist_params.node_rank = 0
+ cfg.dist_params.global_rank = 0
+ cfg.dist_params.local_rank = 0
+ os.environ["WORLD_SIZE"] = str(1)
+
+def _init_dist_ror(cfg):
+ from ac2.ror.comm import get_local_rank, get_world_rank, get_local_size, get_node_rank, get_world_size
+ cfg.dist_params.num_gpus_per_node = get_local_size()
+ cfg.dist_params.world_size = get_world_size()
+ cfg.dist_params.nnodes = (get_world_size()) // (get_local_size())
+ cfg.dist_params.node_rank = get_node_rank()
+ cfg.dist_params.global_rank = get_world_rank()
+ cfg.dist_params.local_rank = get_local_rank()
+ os.environ["WORLD_SIZE"] = str(get_world_size())
+
+
+def _init_dist_slurm(cfg):
+ if 'NNODES' not in os.environ:
+ os.environ['NNODES'] = str(cfg.dist_params.nnodes)
+ if 'NODE_RANK' not in os.environ:
+ os.environ['NODE_RANK'] = str(cfg.dist_params.node_rank)
+
+ #cfg.dist_params.
+ num_gpus = torch.cuda.device_count()
+ world_size = int(os.environ['NNODES']) * num_gpus
+ os.environ['WORLD_SIZE'] = str(world_size)
+
+ # config port
+ if 'MASTER_PORT' in os.environ:
+ master_port = str(os.environ['MASTER_PORT']) # use MASTER_PORT in the environment variable
+ else:
+ # if torch.distributed default port(29500) is available
+ # then use it, else find a free port
+ if _is_free_port(16500):
+ master_port = '16500'
+ else:
+ master_port = str(_find_free_port())
+ os.environ['MASTER_PORT'] = master_port
+
+ # config addr
+ if 'MASTER_ADDR' in os.environ:
+ master_addr = str(os.environ['MASTER_PORT']) # use MASTER_PORT in the environment variable
+ # elif cfg.dist_params.dist_url is not None:
+ # master_addr = ':'.join(str(cfg.dist_params.dist_url).split(':')[:2])
+ else:
+ master_addr = '127.0.0.1' #'tcp://127.0.0.1'
+ os.environ['MASTER_ADDR'] = master_addr
+
+ # set dist_url to 'env://'
+ cfg.dist_params.dist_url = 'env://' #f"{master_addr}:{master_port}"
+
+ cfg.dist_params.num_gpus_per_node = num_gpus
+ cfg.dist_params.world_size = world_size
+ cfg.dist_params.nnodes = int(os.environ['NNODES'])
+ cfg.dist_params.node_rank = int(os.environ['NODE_RANK'])
+
+ # if int(os.environ['NNODES']) > 1 and cfg.dist_params.dist_url.startswith("file://"):
+ # raise Warning("file:// is not a reliable init_method in multi-machine jobs. Prefer tcp://")
+
+
+def get_func(func_name):
+ """
+ Helper to return a function object by name. func_name must identify
+ a function in this module or the path to a function relative to the base
+ module.
+ @ func_name: function name.
+ """
+ if func_name == '':
+ return None
+ try:
+ parts = func_name.split('.')
+ # Refers to a function in this module
+ if len(parts) == 1:
+ return globals()[parts[0]]
+ # Otherwise, assume we're referencing a module under modeling
+ module_name = '.'.join(parts[:-1])
+ module = importlib.import_module(module_name)
+ return getattr(module, parts[-1])
+ except:
+ raise RuntimeError(f'Failed to find function: {func_name}')
+
+class Timer(object):
+ """A simple timer."""
+
+ def __init__(self):
+ self.reset()
+
+ def tic(self):
+ # using time.time instead of time.clock because time time.clock
+ # does not normalize for multithreading
+ self.start_time = time.time()
+
+ def toc(self, average=True):
+ self.diff = time.time() - self.start_time
+ self.total_time += self.diff
+ self.calls += 1
+ self.average_time = self.total_time / self.calls
+ if average:
+ return self.average_time
+ else:
+ return self.diff
+
+ def reset(self):
+ self.total_time = 0.
+ self.calls = 0
+ self.start_time = 0.
+ self.diff = 0.
+ self.average_time = 0.
+
+class TrainingStats(object):
+ """Track vital training statistics."""
+ def __init__(self, log_period, tensorboard_logger=None):
+ self.log_period = log_period
+ self.tblogger = tensorboard_logger
+ self.tb_ignored_keys = ['iter', 'eta', 'epoch', 'time']
+ self.iter_timer = Timer()
+ # Window size for smoothing tracked values (with median filtering)
+ self.filter_size = log_period
+ def create_smoothed_value():
+ return AverageMeter()
+ self.smoothed_losses = defaultdict(create_smoothed_value)
+ #self.smoothed_metrics = defaultdict(create_smoothed_value)
+ #self.smoothed_total_loss = AverageMeter()
+
+
+ def IterTic(self):
+ self.iter_timer.tic()
+
+ def IterToc(self):
+ return self.iter_timer.toc(average=False)
+
+ def reset_iter_time(self):
+ self.iter_timer.reset()
+
+ def update_iter_stats(self, losses_dict):
+ """Update tracked iteration statistics."""
+ for k, v in losses_dict.items():
+ self.smoothed_losses[k].update(float(v), 1)
+
+ def log_iter_stats(self, cur_iter, optimizer, max_iters, val_err={}):
+ """Log the tracked statistics."""
+ if (cur_iter % self.log_period == 0):
+ stats = self.get_stats(cur_iter, optimizer, max_iters, val_err)
+ log_stats(stats)
+ if self.tblogger:
+ self.tb_log_stats(stats, cur_iter)
+ for k, v in self.smoothed_losses.items():
+ v.reset()
+
+ def tb_log_stats(self, stats, cur_iter):
+ """Log the tracked statistics to tensorboard"""
+ for k in stats:
+ # ignore some logs
+ if k not in self.tb_ignored_keys:
+ v = stats[k]
+ if isinstance(v, dict):
+ self.tb_log_stats(v, cur_iter)
+ else:
+ self.tblogger.add_scalar(k, v, cur_iter)
+
+
+ def get_stats(self, cur_iter, optimizer, max_iters, val_err = {}):
+ eta_seconds = self.iter_timer.average_time * (max_iters - cur_iter)
+
+ eta = str(datetime.timedelta(seconds=int(eta_seconds)))
+ stats = OrderedDict(
+ iter=cur_iter, # 1-indexed
+ time=self.iter_timer.average_time,
+ eta=eta,
+ )
+ optimizer_state_dict = optimizer.state_dict()
+ lr = {}
+ for i in range(len(optimizer_state_dict['param_groups'])):
+ lr_name = 'group%d_lr' % i
+ lr[lr_name] = optimizer_state_dict['param_groups'][i]['lr']
+
+ stats['lr'] = OrderedDict(lr)
+ for k, v in self.smoothed_losses.items():
+ stats[k] = v.avg
+
+ stats['val_err'] = OrderedDict(val_err)
+ stats['max_iters'] = max_iters
+ return stats
+
+
+def reduce_dict(input_dict, average=True):
+ """
+ Reduce the values in the dictionary from all processes so that process with rank
+ 0 has the reduced results.
+ Args:
+ @input_dict (dict): inputs to be reduced. All the values must be scalar CUDA Tensor.
+ @average (bool): whether to do average or sum
+ Returns:
+ a dict with the same keys as input_dict, after reduction.
+ """
+ world_size = get_world_size()
+ if world_size < 2:
+ return input_dict
+ with torch.no_grad():
+ names = []
+ values = []
+ # sort the keys so that they are consistent across processes
+ for k in sorted(input_dict.keys()):
+ names.append(k)
+ values.append(input_dict[k])
+ values = torch.stack(values, dim=0)
+ dist.reduce(values, dst=0)
+ if dist.get_rank() == 0 and average:
+ # only main process gets accumulated, so only divide by
+ # world_size in this case
+ values /= world_size
+ reduced_dict = {k: v for k, v in zip(names, values)}
+ return reduced_dict
+
+
+def log_stats(stats):
+ logger = logging.getLogger()
+ """Log training statistics to terminal"""
+ lines = "[Step %d/%d]\n" % (
+ stats['iter'], stats['max_iters'])
+
+ lines += "\t\tloss: %.3f, time: %.6f, eta: %s\n" % (
+ stats['total_loss'], stats['time'], stats['eta'])
+
+ # log loss
+ lines += "\t\t"
+ for k, v in stats.items():
+ if 'loss' in k.lower() and 'total_loss' not in k.lower():
+ lines += "%s: %.3f" % (k, v) + ", "
+ lines = lines[:-3]
+ lines += '\n'
+
+ # validate criteria
+ lines += "\t\tlast val err:" + ", ".join("%s: %.6f" % (k, v) for k, v in stats['val_err'].items()) + ", "
+ lines += '\n'
+
+ # lr in different groups
+ lines += "\t\t" + ", ".join("%s: %.8f" % (k, v) for k, v in stats['lr'].items())
+ lines += '\n'
+ logger.info(lines[:-1]) # remove last new linen_pxl
+
diff --git a/finetune/Metric3D/mono/utils/custom_data.py b/finetune/Metric3D/mono/utils/custom_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..d9fab47478bc471c51b5454cc15550079ebec21b
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/custom_data.py
@@ -0,0 +1,34 @@
+import glob
+import os
+import json
+import cv2
+
+def load_from_annos(anno_path):
+ with open(anno_path, 'r') as f:
+ annos = json.load(f)['files']
+
+ datas = []
+ for i, anno in enumerate(annos):
+ rgb = anno['rgb']
+ depth = anno['depth'] if 'depth' in anno else None
+ depth_scale = anno['depth_scale'] if 'depth_scale' in anno else 1.0
+ intrinsic = anno['cam_in'] if 'cam_in' in anno else None
+ normal = anno['normal'] if 'normal' in anno else None
+
+ data_i = {
+ 'rgb': rgb,
+ 'depth': depth,
+ 'depth_scale': depth_scale,
+ 'intrinsic': intrinsic,
+ 'filename': os.path.basename(rgb),
+ 'folder': rgb.split('/')[-3],
+ 'normal': normal
+ }
+ datas.append(data_i)
+ return datas
+
+def load_data(path: str):
+ rgbs = glob.glob(path + '/*.jpg') + glob.glob(path + '/*.png')
+ #intrinsic = [835.8179931640625, 835.8179931640625, 961.5419921875, 566.8090209960938] #[721.53769, 721.53769, 609.5593, 172.854]
+ data = [{'rgb': i, 'depth': None, 'intrinsic': None, 'filename': os.path.basename(i), 'folder': i.split('/')[-3]} for i in rgbs]
+ return data
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/do_test.py b/finetune/Metric3D/mono/utils/do_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..1f0ced11599e3de301dbdd000097be94758a51dd
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/do_test.py
@@ -0,0 +1,384 @@
+import torch
+import torch.nn.functional as F
+import logging
+import os
+import os.path as osp
+from mono.utils.avg_meter import MetricAverageMeter
+from mono.utils.visualization import save_val_imgs, create_html, save_raw_imgs, save_normal_val_imgs
+import cv2
+from tqdm import tqdm
+import numpy as np
+from PIL import Image
+import matplotlib.pyplot as plt
+
+from mono.utils.unproj_pcd import reconstruct_pcd, save_point_cloud
+
+def to_cuda(data: dict):
+ for k, v in data.items():
+ if isinstance(v, torch.Tensor):
+ data[k] = v.cuda(non_blocking=True)
+ if isinstance(v, list) and len(v)>=1 and isinstance(v[0], torch.Tensor):
+ for i, l_i in enumerate(v):
+ data[k][i] = l_i.cuda(non_blocking=True)
+ return data
+
+def align_scale(pred: torch.tensor, target: torch.tensor):
+ mask = target > 0
+ if torch.sum(mask) > 10:
+ scale = torch.median(target[mask]) / (torch.median(pred[mask]) + 1e-8)
+ else:
+ scale = 1
+ pred_scaled = pred * scale
+ return pred_scaled, scale
+
+def align_scale_shift(pred: torch.tensor, target: torch.tensor):
+ mask = target > 0
+ target_mask = target[mask].cpu().numpy()
+ pred_mask = pred[mask].cpu().numpy()
+ if torch.sum(mask) > 10:
+ scale, shift = np.polyfit(pred_mask, target_mask, deg=1)
+ if scale < 0:
+ scale = torch.median(target[mask]) / (torch.median(pred[mask]) + 1e-8)
+ shift = 0
+ else:
+ scale = 1
+ shift = 0
+ pred = pred * scale + shift
+ return pred, scale
+
+def align_scale_shift_numpy(pred: np.array, target: np.array):
+ mask = target > 0
+ target_mask = target[mask]
+ pred_mask = pred[mask]
+ if np.sum(mask) > 10:
+ scale, shift = np.polyfit(pred_mask, target_mask, deg=1)
+ if scale < 0:
+ scale = np.median(target[mask]) / (np.median(pred[mask]) + 1e-8)
+ shift = 0
+ else:
+ scale = 1
+ shift = 0
+ pred = pred * scale + shift
+ return pred, scale
+
+
+def build_camera_model(H : int, W : int, intrinsics : list) -> np.array:
+ """
+ Encode the camera intrinsic parameters (focal length and principle point) to a 4-channel map.
+ """
+ fx, fy, u0, v0 = intrinsics
+ f = (fx + fy) / 2.0
+ # principle point location
+ x_row = np.arange(0, W).astype(np.float32)
+ x_row_center_norm = (x_row - u0) / W
+ x_center = np.tile(x_row_center_norm, (H, 1)) # [H, W]
+
+ y_col = np.arange(0, H).astype(np.float32)
+ y_col_center_norm = (y_col - v0) / H
+ y_center = np.tile(y_col_center_norm, (W, 1)).T # [H, W]
+
+ # FoV
+ fov_x = np.arctan(x_center / (f / W))
+ fov_y = np.arctan(y_center / (f / H))
+
+ cam_model = np.stack([x_center, y_center, fov_x, fov_y], axis=2)
+ return cam_model
+
+def resize_for_input(image, output_shape, intrinsic, canonical_shape, to_canonical_ratio):
+ """
+ Resize the input.
+ Resizing consists of two processed, i.e. 1) to the canonical space (adjust the camera model); 2) resize the image while the camera model holds. Thus the
+ label will be scaled with the resize factor.
+ """
+ padding = [123.675, 116.28, 103.53]
+ h, w, _ = image.shape
+ resize_ratio_h = output_shape[0] / canonical_shape[0]
+ resize_ratio_w = output_shape[1] / canonical_shape[1]
+ to_scale_ratio = min(resize_ratio_h, resize_ratio_w)
+
+ resize_ratio = to_canonical_ratio * to_scale_ratio
+
+ reshape_h = int(resize_ratio * h)
+ reshape_w = int(resize_ratio * w)
+
+ pad_h = max(output_shape[0] - reshape_h, 0)
+ pad_w = max(output_shape[1] - reshape_w, 0)
+ pad_h_half = int(pad_h / 2)
+ pad_w_half = int(pad_w / 2)
+
+ # resize
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ # padding
+ image = cv2.copyMakeBorder(
+ image,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=padding)
+
+ # Resize, adjust principle point
+ intrinsic[2] = intrinsic[2] * to_scale_ratio
+ intrinsic[3] = intrinsic[3] * to_scale_ratio
+
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ cam_model = cv2.copyMakeBorder(
+ cam_model,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=-1)
+
+ pad=[pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+ label_scale_factor=1/to_scale_ratio
+ return image, cam_model, pad, label_scale_factor
+
+
+def get_prediction(
+ model: torch.nn.Module,
+ input: torch.tensor,
+ cam_model: torch.tensor,
+ pad_info: torch.tensor,
+ scale_info: torch.tensor,
+ gt_depth: torch.tensor,
+ normalize_scale: float,
+ ori_shape: list=[],
+):
+
+ data = dict(
+ input=input,
+ cam_model=cam_model,
+ )
+ pred_depth, confidence, output_dict = model.module.inference(data)
+
+ return pred_depth, output_dict
+
+def transform_test_data_scalecano(rgb, intrinsic, data_basic):
+ """
+ Pre-process the input for forwarding. Employ `label scale canonical transformation.'
+ Args:
+ rgb: input rgb image. [H, W, 3]
+ intrinsic: camera intrinsic parameter, [fx, fy, u0, v0]
+ data_basic: predefined canonical space in configs.
+ """
+ canonical_space = data_basic['canonical_space']
+ forward_size = data_basic.crop_size
+ mean = torch.tensor([123.675, 116.28, 103.53]).float()[:, None, None]
+ std = torch.tensor([58.395, 57.12, 57.375]).float()[:, None, None]
+
+ # BGR to RGB
+ #rgb = cv2.cvtColor(rgb, cv2.COLOR_BGR2RGB)
+
+ ori_h, ori_w, _ = rgb.shape
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2
+ canonical_focal = canonical_space['focal_length']
+
+ cano_label_scale_ratio = canonical_focal / ori_focal
+
+ canonical_intrinsic = [
+ intrinsic[0] * cano_label_scale_ratio,
+ intrinsic[1] * cano_label_scale_ratio,
+ intrinsic[2],
+ intrinsic[3],
+ ]
+
+ # resize
+ rgb, cam_model, pad, resize_label_scale_ratio = resize_for_input(rgb, forward_size, canonical_intrinsic, [ori_h, ori_w], 1.0)
+
+ # label scale factor
+ label_scale_factor = cano_label_scale_ratio * resize_label_scale_ratio
+
+ rgb = torch.from_numpy(rgb.transpose((2, 0, 1))).float()
+ rgb = torch.div((rgb - mean), std)
+ rgb = rgb.cuda()
+
+ cam_model = torch.from_numpy(cam_model.transpose((2, 0, 1))).float()
+ cam_model = cam_model[None, :, :, :].cuda()
+ cam_model_stacks = [
+ torch.nn.functional.interpolate(cam_model, size=(cam_model.shape[2]//i, cam_model.shape[3]//i), mode='bilinear', align_corners=False)
+ for i in [2, 4, 8, 16, 32]
+ ]
+ return rgb, cam_model_stacks, pad, label_scale_factor
+
+def do_scalecano_test_with_custom_data(
+ model: torch.nn.Module,
+ cfg: dict,
+ test_data: list,
+ logger: logging.RootLogger,
+ is_distributed: bool = True,
+ local_rank: int = 0,
+ bs: int = 2, # Batch size parameter
+):
+
+ show_dir = cfg.show_dir
+ save_interval = 1
+ save_imgs_dir = show_dir + '/vis'
+ os.makedirs(save_imgs_dir, exist_ok=True)
+ save_pcd_dir = show_dir + '/pcd'
+ os.makedirs(save_pcd_dir, exist_ok=True)
+
+ normalize_scale = cfg.data_basic.depth_range[1]
+ dam = MetricAverageMeter(['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3'])
+ dam_median = MetricAverageMeter(['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3'])
+ dam_global = MetricAverageMeter(['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3'])
+
+ # Process data in batches
+ for i in tqdm(range(0, len(test_data), bs)):
+ batch_data = test_data[i:i + bs] # Extract batch
+ rgb_inputs, pads, label_scale_factors, gt_depths, rgb_origins = [], [], [], [], []
+
+ for an in batch_data:
+ print(an['rgb'])
+ rgb_origin = cv2.imread(an['rgb'])[:, :, ::-1].copy()
+ rgb_origins.append(rgb_origin)
+ gt_depth = None
+ if an['depth'] is not None:
+ gt_depth = cv2.imread(an['depth'], -1)
+ gt_depth_scale = an['depth_scale']
+ gt_depth = gt_depth / gt_depth_scale
+ gt_depths.append(gt_depth)
+
+ intrinsic = an['intrinsic']
+ if intrinsic is None:
+ intrinsic = [1000.0, 1000.0, rgb_origin.shape[1]/2, rgb_origin.shape[0]/2]
+
+ rgb_input, _, pad, label_scale_factor = transform_test_data_scalecano(rgb_origin, intrinsic, cfg.data_basic)
+ rgb_inputs.append(rgb_input)
+ pads.append(pad)
+ label_scale_factors.append(label_scale_factor)
+
+ # Process the batch
+ pred_depths, outputs = get_prediction(
+ model=model,
+ input=torch.stack(rgb_inputs), # Stack inputs for batch processing
+ cam_model=None,
+ pad_info=pads,
+ scale_info=None,
+ gt_depth=None,
+ normalize_scale=None,
+ )
+
+ for j, gt_depth in enumerate(gt_depths):
+ normal_out = None
+ if 'prediction_normal' in outputs.keys():
+ normal_out = outputs['prediction_normal'][j, :]
+
+ postprocess_per_image(
+ i*bs+j,
+ pred_depths[j, :],
+ gt_depth,
+ intrinsic,
+ rgb_origins[j],
+ normal_out,
+ pads[j],
+ batch_data[j],
+ dam,
+ dam_median,
+ dam_global,
+ is_distributed,
+ save_imgs_dir,
+ save_pcd_dir,
+ normalize_scale,
+ label_scale_factors[j],
+ )
+
+ #if gt_depth_flag:
+ if False:
+ eval_error = dam.get_metrics()
+ print('w/o match :', eval_error)
+
+ eval_error_median = dam_median.get_metrics()
+ print('median match :', eval_error_median)
+
+ eval_error_global = dam_global.get_metrics()
+ print('global match :', eval_error_global)
+ else:
+ print('missing gt_depth, only save visualizations...')
+
+
+def postprocess_per_image(i, pred_depth, gt_depth, intrinsic, rgb_origin, normal_out, pad, an, dam, dam_median, dam_global, is_distributed, save_imgs_dir, save_pcd_dir, normalize_scale, scale_info):
+
+ pred_depth = pred_depth.squeeze()
+ pred_depth = pred_depth[pad[0] : pred_depth.shape[0] - pad[1], pad[2] : pred_depth.shape[1] - pad[3]]
+ pred_depth = torch.nn.functional.interpolate(pred_depth[None, None, :, :], [rgb_origin.shape[0], rgb_origin.shape[1]], mode='bilinear').squeeze() # to original size
+ pred_depth = pred_depth * normalize_scale / scale_info
+
+ pred_depth = (pred_depth > 0) * (pred_depth < 300) * pred_depth
+ if gt_depth is not None:
+
+ pred_depth = torch.nn.functional.interpolate(pred_depth[None, None, :, :], (gt_depth.shape[0], gt_depth.shape[1]), mode='bilinear').squeeze() # to original size
+
+ gt_depth = torch.from_numpy(gt_depth).cuda()
+
+ pred_depth_median = pred_depth * gt_depth[gt_depth != 0].median() / pred_depth[gt_depth != 0].median()
+ pred_global, _ = align_scale_shift(pred_depth, gt_depth)
+
+ mask = (gt_depth > 1e-8)
+ dam.update_metrics_gpu(pred_depth, gt_depth, mask, is_distributed)
+ dam_median.update_metrics_gpu(pred_depth_median, gt_depth, mask, is_distributed)
+ dam_global.update_metrics_gpu(pred_global, gt_depth, mask, is_distributed)
+ print(gt_depth[gt_depth != 0].median() / pred_depth[gt_depth != 0].median(), )
+
+ os.makedirs(osp.join(save_imgs_dir, an['folder']), exist_ok=True)
+ rgb_torch = torch.from_numpy(rgb_origin).to(pred_depth.device).permute(2, 0, 1)
+ mean = torch.tensor([123.675, 116.28, 103.53]).float()[:, None, None].to(rgb_torch.device)
+ std = torch.tensor([58.395, 57.12, 57.375]).float()[:, None, None].to(rgb_torch.device)
+ rgb_torch = torch.div((rgb_torch - mean), std)
+
+ save_val_imgs(
+ i,
+ pred_depth,
+ gt_depth if gt_depth is not None else torch.ones_like(pred_depth, device=pred_depth.device),
+ rgb_torch,
+ osp.join(an['folder'], an['filename']),
+ save_imgs_dir,
+ )
+ #save_raw_imgs(pred_depth.detach().cpu().numpy(), rgb_torch, osp.join(an['folder'], an['filename']), save_imgs_dir, 1000.0)
+
+ # pcd
+ pred_depth = pred_depth.detach().cpu().numpy()
+ #pcd = reconstruct_pcd(pred_depth, intrinsic[0], intrinsic[1], intrinsic[2], intrinsic[3])
+ #os.makedirs(osp.join(save_pcd_dir, an['folder']), exist_ok=True)
+ #save_point_cloud(pcd.reshape((-1, 3)), rgb_origin.reshape(-1, 3), osp.join(save_pcd_dir, an['folder'], an['filename'][:-4]+'.ply'))
+
+ if an['intrinsic'] == None:
+ #for r in [0.9, 1.0, 1.1]:
+ for r in [1.0]:
+ #for f in [600, 800, 1000, 1250, 1500]:
+ for f in [1000]:
+ pcd = reconstruct_pcd(pred_depth, f * r, f * (2-r), intrinsic[2], intrinsic[3])
+ fstr = '_fx_' + str(int(f * r)) + '_fy_' + str(int(f * (2-r)))
+ os.makedirs(osp.join(save_pcd_dir, an['folder']), exist_ok=True)
+ save_point_cloud(pcd.reshape((-1, 3)), rgb_origin.reshape(-1, 3), osp.join(save_pcd_dir, an['folder'], an['filename'][:-4] + fstr +'.ply'))
+
+ if normal_out is not None:
+ pred_normal = normal_out[:3, :, :] # (3, H, W)
+ H, W = pred_normal.shape[1:]
+ pred_normal = pred_normal[ :, pad[0]:H-pad[1], pad[2]:W-pad[3]]
+
+ pred_normal = torch.nn.functional.interpolate(pred_normal[None, :], size=[rgb_origin.shape[0], rgb_origin.shape[1]], mode='bilinear', align_corners=True).squeeze()
+
+ gt_normal = None
+ #if gt_normal_flag:
+ if False:
+ pred_normal = torch.nn.functional.interpolate(pred_normal, size=gt_normal.shape[2:], mode='bilinear', align_corners=True)
+ gt_normal = cv2.imread(norm_path)
+ gt_normal = cv2.cvtColor(gt_normal, cv2.COLOR_BGR2RGB)
+ gt_normal = np.array(gt_normal).astype(np.uint8)
+ gt_normal = ((gt_normal.astype(np.float32) / 255.0) * 2.0) - 1.0
+ norm_valid_mask = (np.linalg.norm(gt_normal, axis=2, keepdims=True) > 0.5)
+ gt_normal = gt_normal * norm_valid_mask
+ gt_normal_mask = ~torch.all(gt_normal == 0, dim=1, keepdim=True)
+ dam.update_normal_metrics_gpu(pred_normal, gt_normal, gt_normal_mask, cfg.distributed)# save valiad normal
+
+ save_normal_val_imgs(iter,
+ pred_normal,
+ gt_normal if gt_normal is not None else torch.ones_like(pred_normal, device=pred_normal.device),
+ rgb_torch, # data['input'],
+ osp.join(an['folder'], 'normal_'+an['filename']),
+ save_imgs_dir,
+ )
+
diff --git a/finetune/Metric3D/mono/utils/logger.py b/finetune/Metric3D/mono/utils/logger.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca48c613b2fdc5352b13ccb7d0bfdc1df5e3b531
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/logger.py
@@ -0,0 +1,102 @@
+import atexit
+import logging
+import os
+import sys
+import time
+import torch
+from termcolor import colored
+
+__all__ = ["setup_logger", ]
+
+class _ColorfulFormatter(logging.Formatter):
+ def __init__(self, *args, **kwargs):
+ self._root_name = kwargs.pop("root_name") + "."
+ self._abbrev_name = kwargs.pop("abbrev_name", "")
+ if len(self._abbrev_name):
+ self._abbrev_name = self._abbrev_name + "."
+ super(_ColorfulFormatter, self).__init__(*args, **kwargs)
+
+ def formatMessage(self, record):
+ record.name = record.name.replace(self._root_name, self._abbrev_name)
+ log = super(_ColorfulFormatter, self).formatMessage(record)
+ if record.levelno == logging.WARNING:
+ prefix = colored("WARNING", "red", attrs=["blink"])
+ elif record.levelno == logging.ERROR or record.levelno == logging.CRITICAL:
+ prefix = colored("ERROR", "red", attrs=["blink", "underline"])
+ else:
+ return log
+ return prefix + " " + log
+
+def setup_logger(
+ output=None, distributed_rank=0, *, name='metricdepth', color=True, abbrev_name=None
+):
+ """
+ Initialize the detectron2 logger and set its verbosity level to "DEBUG".
+ Args:
+ output (str): a file name or a directory to save log. If None, will not save log file.
+ If ends with ".txt" or ".log", assumed to be a file name.
+ Otherwise, logs will be saved to `output/log.txt`.
+ abbrev_name (str): an abbreviation of the module, to avoid log names in logs.
+ Set to "" not log the root module in logs.
+ By default, will abbreviate "detectron2" to "d2" and leave other
+ modules unchanged.
+ Returns:
+ logging.Logger: a logger
+ """
+ logger = logging.getLogger()
+ logger.setLevel(logging.INFO) # NOTE: if more detailed, change it to logging.DEBUG
+ logger.propagate = False
+
+ if abbrev_name is None:
+ abbrev_name = "d2"
+
+ plain_formatter = logging.Formatter(
+ "[%(asctime)s] %(name)s %(levelname)s %(message)s ", datefmt="%m/%d %H:%M:%S"
+ )
+ # stdout logging: master only
+ if distributed_rank == 0:
+ ch = logging.StreamHandler(stream=sys.stdout)
+ ch.setLevel(logging.INFO) # NOTE: if more detailed, change it to logging.DEBUG
+ if color:
+ formatter = _ColorfulFormatter(
+ colored("[%(asctime)s %(name)s]: ", "green") + "%(message)s",
+ datefmt="%m/%d %H:%M:%S",
+ root_name=name,
+ abbrev_name=str(abbrev_name),
+ )
+ else:
+ formatter = plain_formatter
+ ch.setFormatter(formatter)
+ logger.addHandler(ch)
+
+ # file logging: all workers
+ if output is not None:
+ if output.endswith(".txt") or output.endswith(".log"):
+ filename = output
+ else:
+ filename = os.path.join(output, "log.txt")
+ if distributed_rank > 0:
+ filename = filename + ".rank{}".format(distributed_rank)
+ os.makedirs(os.path.dirname(filename), exist_ok=True)
+
+ fh = logging.StreamHandler(_cached_log_stream(filename))
+ fh.setLevel(logging.INFO) # NOTE: if more detailed, change it to logging.DEBUG
+ fh.setFormatter(plain_formatter)
+ logger.addHandler(fh)
+
+
+ return logger
+
+from iopath.common.file_io import PathManager as PathManagerBase
+
+
+PathManager = PathManagerBase()
+
+# cache the opened file object, so that different calls to 'setup_logger
+# with the same file name can safely write to the same file.
+def _cached_log_stream(filename):
+ # use 1K buffer if writting to cloud storage
+ io = PathManager.open(filename, "a", buffering=1024 if "://" in filename else -1)
+ atexit.register(io.close)
+ return io
+
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/mldb.py b/finetune/Metric3D/mono/utils/mldb.py
new file mode 100644
index 0000000000000000000000000000000000000000..d74ac53fd0302e2e954105bade52e6de4c18e2f6
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/mldb.py
@@ -0,0 +1,34 @@
+from types import ModuleType
+import data_info
+
+def load_data_info(module_name, data_info={}, mldb_type='mldb_info', module=None):
+ if module is None:
+ module = globals().get(module_name, None)
+ if module:
+ for key, value in module.__dict__.items():
+ if not (key.startswith('__')) and not (key.startswith('_')):
+ if key == 'mldb_info':
+ data_info.update(value)
+ elif isinstance(value, ModuleType):
+ load_data_info(module_name + '.' + key, data_info, module=value)
+ else:
+ raise RuntimeError(f'Try to access "mldb_info", but cannot find {module_name} module.')
+
+def reset_ckpt_path(cfg, data_info):
+ if isinstance(cfg, dict):
+ for key in cfg.keys():
+ if key == 'backbone':
+ new_ckpt_path = data_info['checkpoint']['mldb_root'] + '/' + data_info['checkpoint'][cfg.backbone.type]
+ cfg.backbone.update(checkpoint=new_ckpt_path)
+ continue
+ elif isinstance(cfg.get(key), dict):
+ reset_ckpt_path(cfg.get(key), data_info)
+ else:
+ continue
+ else:
+ return
+
+if __name__ == '__main__':
+ mldb_info_tmp = {}
+ load_data_info('mldb_data_info', mldb_info_tmp)
+ print('results', mldb_info_tmp.keys())
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/pcd_filter.py b/finetune/Metric3D/mono/utils/pcd_filter.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d26314d806ea961f6bf09d1fb195bf5e364f181
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/pcd_filter.py
@@ -0,0 +1,24 @@
+import open3d as o3d
+import numpy as np
+
+def downsample_and_filter(pcd_file):
+ pcd = o3d.io.read_point_cloud(pcd_file, max_bound_div = 750, neighbor_num = 8)
+ point_num = len(pcd.points)
+ if (point_num > 10000000):
+ voxel_down_pcd = o3d.geometry.PointCloud.uniform_down_sample(pcd, int(point_num / 10000000)+1)
+ else:
+ voxel_down_pcd = pcd
+ max_bound = voxel_down_pcd.get_max_bound()
+ ball_radius = np.linalg.norm(max_bound) / max_bound_div
+ pcd_filter, _ = voxel_down_pcd.remove_radius_outlier(neighbor_num, ball_radius)
+ print('filtered size', len(pcd_filter.points), 'pre size:', len(pcd.points))
+ o3d.io.write_point_cloud(pcd_file[:-4] + '_filtered.ply', pcd_filter)
+
+
+if __name__ == "__main__":
+ import os
+ dir_path = './data/demo_pcd'
+ for pcd_file in os.listdir(dir_path):
+ #if 'jonathan' in pcd_file: set max_bound_div to 300 and neighbot_num to 8
+ downsample_and_filter(os.path.join(dir_path, pcd_file))
+
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/running.py b/finetune/Metric3D/mono/utils/running.py
new file mode 100644
index 0000000000000000000000000000000000000000..8a8b8d2c1f355717f46f784a28ac5f327c01dfc5
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/running.py
@@ -0,0 +1,77 @@
+import os
+import torch
+import torch.nn as nn
+from mono.utils.comm import main_process
+import copy
+import inspect
+import logging
+import glob
+
+
+def load_ckpt(load_path, model, optimizer=None, scheduler=None, strict_match=True, loss_scaler=None):
+ """
+ Load the check point for resuming training or finetuning.
+ """
+ logger = logging.getLogger()
+ if os.path.isfile(load_path):
+ if main_process():
+ logger.info(f"Loading weight '{load_path}'")
+ checkpoint = torch.load(load_path, map_location="cpu")
+ ckpt_state_dict = checkpoint['model_state_dict']
+ model.module.load_state_dict(ckpt_state_dict, strict=strict_match)
+
+ if optimizer is not None:
+ optimizer.load_state_dict(checkpoint['optimizer'])
+ if scheduler is not None:
+ scheduler.load_state_dict(checkpoint['scheduler'])
+ if loss_scaler is not None and 'scaler' in checkpoint:
+ scheduler.load_state_dict(checkpoint['scaler'])
+ del ckpt_state_dict
+ del checkpoint
+ if main_process():
+ logger.info(f"Successfully loaded weight: '{load_path}'")
+ if scheduler is not None and optimizer is not None:
+ logger.info(f"Resume training from: '{load_path}'")
+ else:
+ if main_process():
+ raise RuntimeError(f"No weight found at '{load_path}'")
+ return model, optimizer, scheduler, loss_scaler
+
+
+def save_ckpt(cfg, model, optimizer, scheduler, curr_iter=0, curr_epoch=None, loss_scaler=None):
+ """
+ Save the model, optimizer, lr scheduler.
+ """
+ logger = logging.getLogger()
+
+ if 'IterBasedRunner' in cfg.runner.type:
+ max_iters = cfg.runner.max_iters
+ elif 'EpochBasedRunner' in cfg.runner.type:
+ max_iters = cfg.runner.max_epochs
+ else:
+ raise TypeError(f'{cfg.runner.type} is not supported')
+
+ ckpt = dict(
+ model_state_dict=model.module.state_dict(),
+ optimizer=optimizer.state_dict(),
+ max_iter=cfg.runner.max_iters if 'max_iters' in cfg.runner \
+ else cfg.runner.max_epochs,
+ scheduler=scheduler.state_dict(),
+ )
+
+ if loss_scaler is not None:
+ ckpt.update(dict(scaler=loss_scaler.state_dict()))
+
+ ckpt_dir = os.path.join(cfg.work_dir, 'ckpt')
+ os.makedirs(ckpt_dir, exist_ok=True)
+
+ save_name = os.path.join(ckpt_dir, 'step%08d.pth' %curr_iter)
+ saved_ckpts = glob.glob(ckpt_dir + '/step*.pth')
+ torch.save(ckpt, save_name)
+
+ # keep the last 8 ckpts
+ if len(saved_ckpts) > 20:
+ saved_ckpts.sort()
+ os.remove(saved_ckpts.pop(0))
+
+ logger.info(f'Save model: {save_name}')
diff --git a/finetune/Metric3D/mono/utils/transform.py b/finetune/Metric3D/mono/utils/transform.py
new file mode 100644
index 0000000000000000000000000000000000000000..2af94efe754d6f72325db6fdc170f30fbfb8c2fe
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/transform.py
@@ -0,0 +1,408 @@
+import collections
+import cv2
+import math
+import numpy as np
+import numbers
+import random
+import torch
+
+import matplotlib
+import matplotlib.cm
+
+
+"""
+Provides a set of Pytorch transforms that use OpenCV instead of PIL (Pytorch default)
+for image manipulation.
+"""
+
+class Compose(object):
+ # Composes transforms: transforms.Compose([transforms.RandScale([0.5, 2.0]), transforms.ToTensor()])
+ def __init__(self, transforms):
+ self.transforms = transforms
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, other_labels=None, transform_paras=None):
+ for t in self.transforms:
+ images, labels, intrinsics, cam_models, other_labels, transform_paras = t(images, labels, intrinsics, cam_models, other_labels, transform_paras)
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+class ToTensor(object):
+ # Converts numpy.ndarray (H x W x C) to a torch.FloatTensor of shape (C x H x W).
+ def __init__(self, **kwargs):
+ return
+ def __call__(self, images, labels, intrinsics, cam_models=None, other_labels=None, transform_paras=None):
+ if not isinstance(images, list) or not isinstance(labels, list) or not isinstance(intrinsics, list):
+ raise (RuntimeError("transform.ToTensor() only handle inputs/labels/intrinsics lists."))
+ if len(images) != len(intrinsics):
+ raise (RuntimeError("Numbers of images and intrinsics are not matched."))
+ if not isinstance(images[0], np.ndarray) or not isinstance(labels[0], np.ndarray):
+ raise (RuntimeError("transform.ToTensor() only handle np.ndarray for the input and label."
+ "[eg: data readed by cv2.imread()].\n"))
+ if not isinstance(intrinsics[0], list):
+ raise (RuntimeError("transform.ToTensor() only handle list for the camera intrinsics"))
+
+ if len(images[0].shape) > 3 or len(images[0].shape) < 2:
+ raise (RuntimeError("transform.ToTensor() only handle image(np.ndarray) with 3 dims or 2 dims.\n"))
+ if len(labels[0].shape) > 3 or len(labels[0].shape) < 2:
+ raise (RuntimeError("transform.ToTensor() only handle label(np.ndarray) with 3 dims or 2 dims.\n"))
+
+ if len(intrinsics[0]) >4 or len(intrinsics[0]) < 3:
+ raise (RuntimeError("transform.ToTensor() only handle intrinsic(list) with 3 sizes or 4 sizes.\n"))
+
+ for i, img in enumerate(images):
+ if len(img.shape) == 2:
+ img = np.expand_dims(img, axis=2)
+ images[i] = torch.from_numpy(img.transpose((2, 0, 1))).float()
+ for i, lab in enumerate(labels):
+ if len(lab.shape) == 2:
+ lab = np.expand_dims(lab, axis=0)
+ labels[i] = torch.from_numpy(lab).float()
+ for i, intrinsic in enumerate(intrinsics):
+ if len(intrinsic) == 3:
+ intrinsic = [intrinsic[0],] + intrinsic
+ intrinsics[i] = torch.tensor(intrinsic, dtype=torch.float)
+ if cam_models is not None:
+ for i, cam_model in enumerate(cam_models):
+ cam_models[i] = torch.from_numpy(cam_model.transpose((2, 0, 1))).float() if cam_model is not None else None
+ if other_labels is not None:
+ for i, lab in enumerate(other_labels):
+ if len(lab.shape) == 2:
+ lab = np.expand_dims(lab, axis=0)
+ other_labels[i] = torch.from_numpy(lab).float()
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+class Normalize(object):
+ # Normalize tensor with mean and standard deviation along channel: channel = (channel - mean) / std
+ def __init__(self, mean, std=None, **kwargs):
+ if std is None:
+ assert len(mean) > 0
+ else:
+ assert len(mean) == len(std)
+ self.mean = torch.tensor(mean).float()[:, None, None]
+ self.std = torch.tensor(std).float()[:, None, None] if std is not None \
+ else torch.tensor([1.0, 1.0, 1.0]).float()[:, None, None]
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, other_labels=None, transform_paras=None):
+ # if self.std is None:
+ # # for t, m in zip(image, self.mean):
+ # # t.sub(m)
+ # image = image - self.mean
+ # if ref_images is not None:
+ # for i, ref_i in enumerate(ref_images):
+ # ref_images[i] = ref_i - self.mean
+ # else:
+ # # for t, m, s in zip(image, self.mean, self.std):
+ # # t.sub(m).div(s)
+ # image = (image - self.mean) / self.std
+ # if ref_images is not None:
+ # for i, ref_i in enumerate(ref_images):
+ # ref_images[i] = (ref_i - self.mean) / self.std
+ for i, img in enumerate(images):
+ img = torch.div((img - self.mean), self.std)
+ images[i] = img
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+class LableScaleCanonical(object):
+ """
+ To solve the ambiguity observation for the mono branch, i.e. different focal length (object size) with the same depth, cameras are
+ mapped to a canonical space. To mimic this, we set the focal length to a canonical one and scale the depth value. NOTE: resize the image based on the ratio can also solve
+ Args:
+ images: list of RGB images.
+ labels: list of depth/disparity labels.
+ other labels: other labels, such as instance segmentations, semantic segmentations...
+ """
+ def __init__(self, **kwargs):
+ self.canonical_focal = kwargs['focal_length']
+
+ def _get_scale_ratio(self, intrinsic):
+ target_focal_x = intrinsic[0]
+ label_scale_ratio = self.canonical_focal / target_focal_x
+ pose_scale_ratio = 1.0
+ return label_scale_ratio, pose_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ assert labels[0].dtype == np.float32
+
+ label_scale_ratio = None
+ pose_scale_ratio = None
+
+ for i in range(len(intrinsics)):
+ img_i = images[i]
+ label_i = labels[i] if i < len(labels) else None
+ intrinsic_i = intrinsics[i].copy()
+ cam_model_i = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+
+ label_scale_ratio, pose_scale_ratio = self._get_scale_ratio(intrinsic_i)
+
+ # adjust the focal length, map the current camera to the canonical space
+ intrinsics[i] = [intrinsic_i[0] * label_scale_ratio, intrinsic_i[1] * label_scale_ratio, intrinsic_i[2], intrinsic_i[3]]
+
+ # scale the label to the canonical space
+ if label_i is not None:
+ labels[i] = label_i * label_scale_ratio
+
+ if cam_model_i is not None:
+ # As the focal length is adjusted (canonical focal length), the camera model should be re-built
+ ori_h, ori_w, _ = img_i.shape
+ cam_models[i] = build_camera_model(ori_h, ori_w, intrinsics[i])
+
+
+ if transform_paras is not None:
+ transform_paras.update(label_scale_factor=label_scale_ratio, focal_scale_factor=label_scale_ratio)
+
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+class ResizeKeepRatio(object):
+ """
+ Resize and pad to a given size. Hold the aspect ratio.
+ This resizing assumes that the camera model remains unchanged.
+ Args:
+ resize_size: predefined output size.
+ """
+ def __init__(self, resize_size, padding=None, ignore_label=-1, **kwargs):
+ if isinstance(resize_size, int):
+ self.resize_h = resize_size
+ self.resize_w = resize_size
+ elif isinstance(resize_size, collections.Iterable) and len(resize_size) == 2 \
+ and isinstance(resize_size[0], int) and isinstance(resize_size[1], int) \
+ and resize_size[0] > 0 and resize_size[1] > 0:
+ self.resize_h = resize_size[0]
+ self.resize_w = resize_size[1]
+ else:
+ raise (RuntimeError("crop size error.\n"))
+ if padding is None:
+ self.padding = padding
+ elif isinstance(padding, list):
+ if all(isinstance(i, numbers.Number) for i in padding):
+ self.padding = padding
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if len(padding) != 3:
+ raise (RuntimeError("padding channel is not equal with 3\n"))
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if isinstance(ignore_label, int):
+ self.ignore_label = ignore_label
+ else:
+ raise (RuntimeError("ignore_label should be an integer number\n"))
+ # self.crop_size = kwargs['crop_size']
+ self.canonical_focal = kwargs['focal_length']
+
+ def main_data_transform(self, image, label, intrinsic, cam_model, resize_ratio, padding, to_scale_ratio):
+ """
+ Resize data first and then do the padding.
+ 'label' will be scaled.
+ """
+ h, w, _ = image.shape
+ reshape_h = int(resize_ratio * h)
+ reshape_w = int(resize_ratio * w)
+
+ pad_h, pad_w, pad_h_half, pad_w_half = padding
+
+ # resize
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ # padding
+ image = cv2.copyMakeBorder(
+ image,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.padding)
+
+ if label is not None:
+ # label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ label = cv2.copyMakeBorder(
+ label,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+ # scale the label
+ label = label / to_scale_ratio
+
+ # Resize, adjust principle point
+ if intrinsic is not None:
+ intrinsic[0] = intrinsic[0] * resize_ratio / to_scale_ratio
+ intrinsic[1] = intrinsic[1] * resize_ratio / to_scale_ratio
+ intrinsic[2] = intrinsic[2] * resize_ratio
+ intrinsic[3] = intrinsic[3] * resize_ratio
+
+ if cam_model is not None:
+ #cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ cam_model = cv2.copyMakeBorder(
+ cam_model,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+ # Pad, adjust the principle point
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] + pad_w_half
+ intrinsic[3] = intrinsic[3] + pad_h_half
+ return image, label, intrinsic, cam_model
+
+ def get_label_scale_factor(self, image, intrinsic, resize_ratio):
+ ori_h, ori_w, _ = image.shape
+ # crop_h, crop_w = self.crop_size
+ ori_focal = intrinsic[0]
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+ to_scale_ratio = resize_ratio / to_canonical_ratio
+ return to_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, other_labels=None, transform_paras=None):
+ target_h, target_w, _ = images[0].shape
+ resize_ratio_h = self.resize_h / target_h
+ resize_ratio_w = self.resize_w / target_w
+ resize_ratio = min(resize_ratio_h, resize_ratio_w)
+ reshape_h = int(resize_ratio * target_h)
+ reshape_w = int(resize_ratio * target_w)
+ pad_h = max(self.resize_h - reshape_h, 0)
+ pad_w = max(self.resize_w - reshape_w, 0)
+ pad_h_half = int(pad_h / 2)
+ pad_w_half = int(pad_w / 2)
+
+ pad_info = [pad_h, pad_w, pad_h_half, pad_w_half]
+ to_scale_ratio = self.get_label_scale_factor(images[0], intrinsics[0], resize_ratio)
+
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model = self.main_data_transform(
+ img, label, intrinsic, cam_model, resize_ratio, pad_info, to_scale_ratio)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if other_labels is not None:
+
+ for i, other_lab in enumerate(other_labels):
+ # resize
+ other_lab = cv2.resize(other_lab, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # pad
+ other_labels[i] = cv2.copyMakeBorder(
+ other_lab,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+ pad = [pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+ if transform_paras is not None:
+ pad_old = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ new_pad = [pad_old[0] + pad[0], pad_old[1] + pad[1], pad_old[2] + pad[2], pad_old[3] + pad[3]]
+ transform_paras.update(dict(pad=new_pad))
+ if 'label_scale_factor' in transform_paras:
+ transform_paras['label_scale_factor'] = transform_paras['label_scale_factor'] * 1.0 / to_scale_ratio
+ else:
+ transform_paras.update(label_scale_factor=1.0/to_scale_ratio)
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+class BGR2RGB(object):
+ # Converts image from BGR order to RGB order, for model initialized from Pytorch
+ def __init__(self, **kwargs):
+ return
+ def __call__(self, images, labels, intrinsics, cam_models=None,other_labels=None, transform_paras=None):
+ for i, img in enumerate(images):
+ images[i] = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ return images, labels, intrinsics, cam_models, other_labels, transform_paras
+
+
+def resize_depth_preserve(depth, shape):
+ """
+ Resizes depth map preserving all valid depth pixels
+ Multiple downsampled points can be assigned to the same pixel.
+
+ Parameters
+ ----------
+ depth : np.array [h,w]
+ Depth map
+ shape : tuple (H,W)
+ Output shape
+
+ Returns
+ -------
+ depth : np.array [H,W,1]
+ Resized depth map
+ """
+ # Store dimensions and reshapes to single column
+ depth = np.squeeze(depth)
+ h, w = depth.shape
+ x = depth.reshape(-1)
+ # Create coordinate grid
+ uv = np.mgrid[:h, :w].transpose(1, 2, 0).reshape(-1, 2)
+ # Filters valid points
+ idx = x > 0
+ crd, val = uv[idx], x[idx]
+ # Downsamples coordinates
+ crd[:, 0] = (crd[:, 0] * (shape[0] / h) + 0.5).astype(np.int32)
+ crd[:, 1] = (crd[:, 1] * (shape[1] / w) + 0.5).astype(np.int32)
+ # Filters points inside image
+ idx = (crd[:, 0] < shape[0]) & (crd[:, 1] < shape[1])
+ crd, val = crd[idx], val[idx]
+ # Creates downsampled depth image and assigns points
+ depth = np.zeros(shape)
+ depth[crd[:, 0], crd[:, 1]] = val
+ # Return resized depth map
+ return depth
+
+
+def build_camera_model(H : int, W : int, intrinsics : list) -> np.array:
+ """
+ Encode the camera intrinsic parameters (focal length and principle point) to a 4-channel map.
+ """
+ fx, fy, u0, v0 = intrinsics
+ f = (fx + fy) / 2.0
+ # principle point location
+ x_row = np.arange(0, W).astype(np.float32)
+ x_row_center_norm = (x_row - u0) / W
+ x_center = np.tile(x_row_center_norm, (H, 1)) # [H, W]
+
+ y_col = np.arange(0, H).astype(np.float32)
+ y_col_center_norm = (y_col - v0) / H
+ y_center = np.tile(y_col_center_norm, (W, 1)).T
+
+ # FoV
+ fov_x = np.arctan(x_center / (f / W))
+ fov_y = np.arctan(y_center/ (f / H))
+
+ cam_model = np.stack([x_center, y_center, fov_x, fov_y], axis=2)
+ return cam_model
+
+def gray_to_colormap(img, cmap='rainbow'):
+ """
+ Transfer gray map to matplotlib colormap
+ """
+ assert img.ndim == 2
+
+ img[img<0] = 0
+ mask_invalid = img < 1e-10
+ img = img / (img.max() + 1e-8)
+ norm = matplotlib.colors.Normalize(vmin=0, vmax=1.1)
+ cmap_m = matplotlib.cm.get_cmap(cmap)
+ map = matplotlib.cm.ScalarMappable(norm=norm, cmap=cmap_m)
+ colormap = (map.to_rgba(img)[:, :, :3] * 255).astype(np.uint8)
+ colormap[mask_invalid] = 0
+ return colormap
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/unproj_pcd.py b/finetune/Metric3D/mono/utils/unproj_pcd.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0986d482a2ec68be1dd65719adec662272b833c
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/unproj_pcd.py
@@ -0,0 +1,88 @@
+import numpy as np
+import torch
+from plyfile import PlyData, PlyElement
+import cv2
+
+
+def get_pcd_base(H, W, u0, v0, fx, fy):
+ x_row = np.arange(0, W)
+ x = np.tile(x_row, (H, 1))
+ x = x.astype(np.float32)
+ u_m_u0 = x - u0
+
+ y_col = np.arange(0, H) # y_col = np.arange(0, height)
+ y = np.tile(y_col, (W, 1)).T
+ y = y.astype(np.float32)
+ v_m_v0 = y - v0
+
+ x = u_m_u0 / fx
+ y = v_m_v0 / fy
+ z = np.ones_like(x)
+ pw = np.stack([x, y, z], axis=2) # [h, w, c]
+ return pw
+
+
+def reconstruct_pcd(depth, fx, fy, u0, v0, pcd_base=None, mask=None):
+ if type(depth) == torch.__name__:
+ depth = depth.cpu().numpy().squeeze()
+ depth = cv2.medianBlur(depth, 5)
+ if pcd_base is None:
+ H, W = depth.shape
+ pcd_base = get_pcd_base(H, W, u0, v0, fx, fy)
+ pcd = depth[:, :, None] * pcd_base
+ if mask:
+ pcd[mask] = 0
+ return pcd
+
+
+def save_point_cloud(pcd, rgb, filename, binary=True):
+ """Save an RGB point cloud as a PLY file.
+ :paras
+ @pcd: Nx3 matrix, the XYZ coordinates
+ @rgb: Nx3 matrix, the rgb colors for each 3D point
+ """
+ assert pcd.shape[0] == rgb.shape[0]
+
+ if rgb is None:
+ gray_concat = np.tile(np.array([128], dtype=np.uint8),
+ (pcd.shape[0], 3))
+ points_3d = np.hstack((pcd, gray_concat))
+ else:
+ points_3d = np.hstack((pcd, rgb))
+ python_types = (float, float, float, int, int, int)
+ npy_types = [('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'),
+ ('green', 'u1'), ('blue', 'u1')]
+ if binary is True:
+ # Format into Numpy structured array
+ vertices = []
+ for row_idx in range(points_3d.shape[0]):
+ cur_point = points_3d[row_idx]
+ vertices.append(
+ tuple(
+ dtype(point)
+ for dtype, point in zip(python_types, cur_point)))
+ vertices_array = np.array(vertices, dtype=npy_types)
+ el = PlyElement.describe(vertices_array, 'vertex')
+
+ # write
+ PlyData([el]).write(filename)
+ else:
+ x = np.squeeze(points_3d[:, 0])
+ y = np.squeeze(points_3d[:, 1])
+ z = np.squeeze(points_3d[:, 2])
+ r = np.squeeze(points_3d[:, 3])
+ g = np.squeeze(points_3d[:, 4])
+ b = np.squeeze(points_3d[:, 5])
+
+ ply_head = 'ply\n' \
+ 'format ascii 1.0\n' \
+ 'element vertex %d\n' \
+ 'property float x\n' \
+ 'property float y\n' \
+ 'property float z\n' \
+ 'property uchar red\n' \
+ 'property uchar green\n' \
+ 'property uchar blue\n' \
+ 'end_header' % r.shape[0]
+ # ---- Save ply data to disk
+ np.savetxt(filename, np.column_stack[x, y, z, r, g, b], fmt='%f %f %f %d %d %d', header=ply_head, comments='')
\ No newline at end of file
diff --git a/finetune/Metric3D/mono/utils/visualization.py b/finetune/Metric3D/mono/utils/visualization.py
new file mode 100644
index 0000000000000000000000000000000000000000..07275030c48aeea062c0041b11ba60d911c14a3f
--- /dev/null
+++ b/finetune/Metric3D/mono/utils/visualization.py
@@ -0,0 +1,140 @@
+import matplotlib.pyplot as plt
+import os, cv2
+import numpy as np
+from mono.utils.transform import gray_to_colormap
+import shutil
+import glob
+from mono.utils.running import main_process
+import torch
+from html4vision import Col, imagetable
+
+def save_raw_imgs(
+ pred: torch.tensor,
+ rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ scale: float=200.0,
+ target: torch.tensor=None,
+ ):
+ """
+ Save raw GT, predictions, RGB in the same file.
+ """
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_rgb.jpg'), rgb)
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_d.png'), (pred*scale).astype(np.uint16))
+ if target is not None:
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_gt.png'), (target*scale).astype(np.uint16))
+
+
+def save_val_imgs(
+ iter: int,
+ pred: torch.tensor,
+ target: torch.tensor,
+ rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ tb_logger=None
+ ):
+ """
+ Save GT, predictions, RGB in the same file.
+ """
+ rgb, pred_scale, target_scale, pred_color, target_color = get_data_for_log(pred, target, rgb)
+ rgb = rgb.transpose((1, 2, 0))
+ cat_img = np.concatenate([rgb, pred_color, target_color], axis=0)
+ plt.imsave(os.path.join(save_dir, filename[:-4]+'_merge.jpg'), cat_img)
+
+ # save to tensorboard
+ if tb_logger is not None:
+ tb_logger.add_image(f'{filename[:-4]}_merge.jpg', cat_img.transpose((2, 0, 1)), iter)
+
+def save_normal_val_imgs(
+ iter: int,
+ pred: torch.tensor,
+ targ: torch.tensor,
+ rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ tb_logger=None,
+ mask=None,
+ ):
+ """
+ Save GT, predictions, RGB in the same file.
+ """
+ mean = np.array([123.675, 116.28, 103.53])[np.newaxis, np.newaxis, :]
+ std= np.array([58.395, 57.12, 57.375])[np.newaxis, np.newaxis, :]
+ pred = pred.squeeze()
+ targ = targ.squeeze()
+ rgb = rgb.squeeze()
+
+ if pred.size(0) == 3:
+ pred = pred.permute(1,2,0)
+ if targ.size(0) == 3:
+ targ = targ.permute(1,2,0)
+ if rgb.size(0) == 3:
+ rgb = rgb.permute(1,2,0)
+
+ pred_color = vis_surface_normal(pred, mask)
+ targ_color = vis_surface_normal(targ, mask)
+ rgb_color = ((rgb.cpu().numpy() * std) + mean).astype(np.uint8)
+
+ try:
+ cat_img = np.concatenate([rgb_color, pred_color, targ_color], axis=0)
+ except:
+ pred_color = cv2.resize(pred_color, (rgb.shape[1], rgb.shape[0]))
+ targ_color = cv2.resize(targ_color, (rgb.shape[1], rgb.shape[0]))
+ cat_img = np.concatenate([rgb_color, pred_color, targ_color], axis=0)
+
+ plt.imsave(os.path.join(save_dir, filename[:-4]+'_merge.jpg'), cat_img)
+ # cv2.imwrite(os.path.join(save_dir, filename[:-4]+'.jpg'), pred_color)
+ # save to tensorboard
+ if tb_logger is not None:
+ tb_logger.add_image(f'{filename[:-4]}_merge.jpg', cat_img.transpose((2, 0, 1)), iter)
+
+def get_data_for_log(pred: torch.tensor, target: torch.tensor, rgb: torch.tensor):
+ mean = np.array([123.675, 116.28, 103.53])[:, np.newaxis, np.newaxis]
+ std= np.array([58.395, 57.12, 57.375])[:, np.newaxis, np.newaxis]
+
+ pred = pred.squeeze().cpu().numpy()
+ target = target.squeeze().cpu().numpy()
+ rgb = rgb.squeeze().cpu().numpy()
+
+ pred[pred<0] = 0
+ target[target<0] = 0
+ max_scale = max(pred.max(), target.max())
+ pred_scale = (pred/max_scale * 10000).astype(np.uint16)
+ target_scale = (target/max_scale * 10000).astype(np.uint16)
+ pred_color = gray_to_colormap(pred)
+ target_color = gray_to_colormap(target)
+ pred_color = cv2.resize(pred_color, (rgb.shape[2], rgb.shape[1]))
+ target_color = cv2.resize(target_color, (rgb.shape[2], rgb.shape[1]))
+
+ rgb = ((rgb * std) + mean).astype(np.uint8)
+ return rgb, pred_scale, target_scale, pred_color, target_color
+
+
+def create_html(name2path, save_path='index.html', size=(256, 384)):
+ # table description
+ cols = []
+ for k, v in name2path.items():
+ col_i = Col('img', k, v) # specify image content for column
+ cols.append(col_i)
+ # html table generation
+ imagetable(cols, out_file=save_path, imsize=size)
+
+def vis_surface_normal(normal: torch.tensor, mask: torch.tensor=None) -> np.array:
+ """
+ Visualize surface normal. Transfer surface normal value from [-1, 1] to [0, 255]
+ Aargs:
+ normal (torch.tensor, [h, w, 3]): surface normal
+ mask (torch.tensor, [h, w]): valid masks
+ """
+ normal = normal.cpu().numpy().squeeze()
+ n_img_L2 = np.sqrt(np.sum(normal ** 2, axis=2, keepdims=True))
+ n_img_norm = normal / (n_img_L2 + 1e-8)
+ normal_vis = n_img_norm * 127
+ normal_vis += 128
+ normal_vis = normal_vis.astype(np.uint8)
+ if mask is not None:
+ mask = mask.cpu().numpy().squeeze()
+ normal_vis[~mask] = 0
+ return normal_vis
+
diff --git a/finetune/Metric3D/onnx/metric3d_onnx_export.py b/finetune/Metric3D/onnx/metric3d_onnx_export.py
new file mode 100644
index 0000000000000000000000000000000000000000..d37ef4319014df2c86065765ba2ed692366149e8
--- /dev/null
+++ b/finetune/Metric3D/onnx/metric3d_onnx_export.py
@@ -0,0 +1,119 @@
+"""
+Export the torch hub model to ONNX format. Normalization is done in the model.
+"""
+
+import torch
+
+
+class Metric3DExportModel(torch.nn.Module):
+ """
+ The model for exporting to ONNX format. Add custom preprocessing and postprocessing here.
+ """
+
+ def __init__(self, meta_arch):
+ super().__init__()
+ self.meta_arch = meta_arch
+ self.register_buffer(
+ "rgb_mean", torch.tensor([123.675, 116.28, 103.53]).view(1, 3, 1, 1).cuda()
+ )
+ self.register_buffer(
+ "rgb_std", torch.tensor([58.395, 57.12, 57.375]).view(1, 3, 1, 1).cuda()
+ )
+ self.input_size = (616, 1064)
+
+ def normalize_image(self, image):
+ image = image - self.rgb_mean
+ image = image / self.rgb_std
+ return image
+
+ def forward(self, image):
+ image = self.normalize_image(image)
+ with torch.no_grad():
+ pred_depth, confidence, output_dict = self.meta_arch.inference(
+ {"input": image}
+ )
+ return pred_depth
+
+
+def update_vit_sampling(model):
+ """
+ For ViT models running on some TensorRT version, we need to change the interpolation method from bicubic to bilinear.
+ """
+ import torch.nn as nn
+ import math
+
+ def interpolate_pos_encoding_bilinear(self, x, w, h):
+ previous_dtype = x.dtype
+ npatch = x.shape[1] - 1
+ N = self.pos_embed.shape[1] - 1
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ class_pos_embed = pos_embed[:, 0]
+ patch_pos_embed = pos_embed[:, 1:]
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + self.interpolate_offset, h0 + self.interpolate_offset
+
+ sqrt_N = math.sqrt(N)
+ sx, sy = float(w0) / sqrt_N, float(h0) / sqrt_N
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(sqrt_N), int(sqrt_N), dim).permute(
+ 0, 3, 1, 2
+ ),
+ scale_factor=(sx, sy),
+ mode="bilinear", # Change from bicubic to bilinear
+ antialias=self.interpolate_antialias,
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2]
+ assert int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(
+ previous_dtype
+ )
+
+ model.depth_model.encoder.interpolate_pos_encoding = (
+ interpolate_pos_encoding_bilinear.__get__(
+ model.depth_model.encoder, model.depth_model.encoder.__class__
+ )
+ )
+ return model
+
+
+def main(model_name="metric3d_vit_small", modify_upsample=False):
+ model = torch.hub.load("yvanyin/metric3d", model_name, pretrain=True)
+ model.cuda().eval()
+
+ if modify_upsample:
+ model = update_vit_sampling(model)
+
+ B = 1
+ if "vit" in model_name:
+ dummy_image = torch.randn([B, 3, 616, 1064]).cuda()
+ else:
+ dummy_image = torch.randn([B, 3, 544, 1216]).cuda()
+
+ export_model = Metric3DExportModel(model)
+ export_model.eval()
+ export_model.cuda()
+
+ onnx_output = f"{model_name}.onnx"
+ dummy_input = (dummy_image,)
+ torch.onnx.export(
+ export_model,
+ dummy_input,
+ onnx_output,
+ input_names=["image"],
+ output_names=["pred_depth"],
+ opset_version=11,
+ )
+
+
+if __name__ == "__main__":
+ from fire import Fire
+
+ Fire(main)
diff --git a/finetune/Metric3D/onnx/test_onnx.py b/finetune/Metric3D/onnx/test_onnx.py
new file mode 100644
index 0000000000000000000000000000000000000000..4422f8a2c1a58c97e3a46068565d8025c241b7fa
--- /dev/null
+++ b/finetune/Metric3D/onnx/test_onnx.py
@@ -0,0 +1,97 @@
+import onnxruntime as ort
+import numpy as np
+import cv2
+from typing import Tuple, Dict, List
+from matplotlib import pyplot as plt
+
+
+def prepare_input(
+ rgb_image: np.ndarray, input_size: Tuple[int, int]
+) -> Tuple[Dict[str, np.ndarray], List[int]]:
+
+ h, w = rgb_image.shape[:2]
+ scale = min(input_size[0] / h, input_size[1] / w)
+ rgb = cv2.resize(
+ rgb_image, (int(w * scale), int(h * scale)), interpolation=cv2.INTER_LINEAR
+ )
+
+ padding = [123.675, 116.28, 103.53]
+ h, w = rgb.shape[:2]
+ pad_h = input_size[0] - h
+ pad_w = input_size[1] - w
+ pad_h_half = pad_h // 2
+ pad_w_half = pad_w // 2
+ rgb: np.ndarray = cv2.copyMakeBorder(
+ rgb,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=padding,
+ )
+ pad_info = [pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+
+ onnx_input = {
+ "image": np.ascontiguousarray(
+ np.transpose(rgb, (2, 0, 1))[None], dtype=np.float32
+ ), # 1, 3, H, W
+ }
+ return onnx_input, pad_info
+
+
+def main(
+ onnx_model="metric3d_vit_small.onnx",
+ input_image="data/kitti_demo/rgb/0000000100.png",
+):
+
+ ## Dummy Test
+ B = 1
+ if "vit" in onnx_model:
+ input_size = (616, 1064) # [H, W]
+ dummy_image = np.zeros([B, 3, input_size[0], input_size[1]], dtype=np.float32)
+ else:
+ input_size = (544, 1216) # [H, W]
+ dummy_image = np.zeros([B, 3, input_size[0], input_size[1]], dtype=np.float32)
+
+ providers = [
+ (
+ "CUDAExecutionProvider",
+ {"cudnn_conv_use_max_workspace": "0", "device_id": str(0)},
+ )
+ ]
+ # providers = [("TensorrtExecutionProvider", {'trt_engine_cache_enable': True, 'trt_fp16_enable': True, 'device_id': 0, 'trt_dla_enable': False})]
+ ort_session = ort.InferenceSession(onnx_model, providers=providers)
+ outputs = ort_session.run(None, {"image": dummy_image})
+
+ print(
+ f"The actual output of onnxruntime session for the dummy set: outputs[0].shape={outputs[0].shape}"
+ )
+
+ ## Real Test
+ rgb_image = cv2.imread(input_image)[:, :, ::-1] # BGR to RGB
+ original_shape = rgb_image.shape[:2]
+ onnx_input, pad_info = prepare_input(rgb_image, input_size)
+ outputs = ort_session.run(None, onnx_input)
+ depth = outputs[0].squeeze() # [H, W]
+
+ # Reshape the depth to the original size
+ depth = depth[
+ pad_info[0] : input_size[0] - pad_info[1],
+ pad_info[2] : input_size[1] - pad_info[3],
+ ]
+ depth = cv2.resize(
+ depth, (original_shape[1], original_shape[0]), interpolation=cv2.INTER_LINEAR
+ )
+ plt.subplot(1, 2, 1)
+ plt.imshow(depth)
+ plt.subplot(1, 2, 2)
+ plt.imshow(rgb_image)
+ plt.show()
+
+
+if __name__ == "__main__":
+ from fire import Fire
+
+ Fire(main)
+ print("Done!")
diff --git a/finetune/Metric3D/requirements_v1.txt b/finetune/Metric3D/requirements_v1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..faf9a32bd1a19b92296b5c3f8eaab88b36ba425c
--- /dev/null
+++ b/finetune/Metric3D/requirements_v1.txt
@@ -0,0 +1,15 @@
+torch
+torchvision
+opencv-python
+numpy
+Pillow
+DateTime
+matplotlib
+plyfile
+HTML4Vision
+timm
+tensorboardX
+imgaug
+iopath
+imagecorruptions
+mmcv
\ No newline at end of file
diff --git a/finetune/Metric3D/requirements_v2.txt b/finetune/Metric3D/requirements_v2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7467132b4c1bf148c9cf96ea9accdfb26144bec5
--- /dev/null
+++ b/finetune/Metric3D/requirements_v2.txt
@@ -0,0 +1,16 @@
+torch == 2.0.1
+torchvision == 0.15.2
+opencv-python
+numpy == 1.23.1
+xformers == 0.0.21
+Pillow
+DateTime
+matplotlib
+plyfile
+HTML4Vision
+timm
+tensorboardX
+imgaug
+iopath
+imagecorruptions
+mmcv
diff --git a/finetune/Metric3D/test.sh b/finetune/Metric3D/test.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f11160d4fca3cfe973c803522593b7f1ccaca68c
--- /dev/null
+++ b/finetune/Metric3D/test.sh
@@ -0,0 +1,15 @@
+# ConvNeXt Large
+python mono/tools/test_scale_cano.py \
+ 'mono/configs/HourglassDecoder/convlarge.0.3_150.py' \
+ --load-from ./weight/convlarge_hourglass_0.3_150_step750k_v1.1.pth \
+ --test_data_path ./data/wild_demo \
+ --launcher None \
+ --batch_size 2
+
+# ConvNeXt Tiny, note: only trained on outdoor data, perform better in outdoor scenes, such as kitti
+python mono/tools/test_scale_cano.py \
+ 'mono/configs/HourglassDecoder/convtiny.0.3_150.py' \
+ --load-from ./weight/convtiny_hourglass_v1.pth \
+ --test_data_path ./data/wild_demo \
+ --launcher None \
+ --batch_size 2
\ No newline at end of file
diff --git a/finetune/Metric3D/test_kitti.sh b/finetune/Metric3D/test_kitti.sh
new file mode 100644
index 0000000000000000000000000000000000000000..98c43e39aa2b308b727eb2baa195a96a1a499cf3
--- /dev/null
+++ b/finetune/Metric3D/test_kitti.sh
@@ -0,0 +1,5 @@
+python mono/tools/test_scale_cano.py \
+ 'mono/configs/HourglassDecoder/test_kitti_convlarge_hourglass_0.3_150.py' \
+ --load-from ./weight/convlarge_hourglass_0.3_150_step750k_v1.1.pth \
+ --test_data_path ./data/kitti_demo/test_annotations.json \
+ --launcher None
\ No newline at end of file
diff --git a/finetune/Metric3D/test_nyu.sh b/finetune/Metric3D/test_nyu.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a39f96398427f2e44c3ab227f62f9afc41d6145f
--- /dev/null
+++ b/finetune/Metric3D/test_nyu.sh
@@ -0,0 +1,5 @@
+python mono/tools/test_scale_cano.py \
+ 'mono/configs/HourglassDecoder/test_nyu_convlarge.0.3_150.py' \
+ --load-from ./weight/convlarge_hourglass_0.3_150_step750k_v1.1.pth \
+ --test_data_path ./data/nyu_demo/test_annotations.json \
+ --launcher None
\ No newline at end of file
diff --git a/finetune/Metric3D/test_vit.sh b/finetune/Metric3D/test_vit.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e75c3e93de0a50fe5c330ec9bf909097a6f08b22
--- /dev/null
+++ b/finetune/Metric3D/test_vit.sh
@@ -0,0 +1,5 @@
+python mono/tools/test_scale_cano.py \
+ 'mono/configs/HourglassDecoder/vit.raft5.small.py' \
+ --load-from ./weight/metric_depth_vit_small_800k.pth \
+ --test_data_path ./data/wild_demo \
+ --launcher None
\ No newline at end of file
diff --git a/finetune/Metric3D/training/README.md b/finetune/Metric3D/training/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..0a7b0bd3684ebb97f63b41471f3f238c2bd32f2b
--- /dev/null
+++ b/finetune/Metric3D/training/README.md
@@ -0,0 +1,26 @@
+# Training
+
+**Re-implemented training codes in public environments by @JUGGHM**
+
+This is an re-implemented and verified version of the original training codes in private environments. Codes for overall framework, dataloaders, and losses are kept.
+However, we cannot provide the annotations ```json``` currently due to IP issues.
+
+You can either integrate our framework into your own codes (Recommanded), or prepare the datasets as following (Needs many efforts).
+
+### Config the pretrained checkpoints for ConvNeXt and DINOv2
+Download the checkpoints and config the paths in ```data_server_info/pretrained_weight.py```
+
+### Prepare the json files
+Prepare json files for different datasets in ```data_server_info/public_datasets.py```. Some tiny examples are also provided in ```data_server_info/annos*.json```.
+
+### Train
+```bash mono/scripts/training_scripts/train.sh```
+
+### Example: Finetune on KITTI
+We just re-implemented the [json generating script](./kitti_json_files/generate_json.py) in public environments. Users can finetune the pretrained models on KITTI now with [eigen_split json](./kitti_json_files/eigen_train.json).
+
+Step1: Configure the path for KITTI Raw dataset, KITTI Depth dataset, and the provided json file in ```data_server_info/public_datasets.py``` correctly.
+
+Step2: Start training by
+```bash mono/scripts/training_scripts/train_kitti.sh```
+
diff --git a/finetune/Metric3D/training/data_server_info/__init__.py b/finetune/Metric3D/training/data_server_info/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec8374be5bc1a77bc72386ebf46cb50154217684
--- /dev/null
+++ b/finetune/Metric3D/training/data_server_info/__init__.py
@@ -0,0 +1,2 @@
+from .public_datasets import *
+from .pretrained_weight import *
\ No newline at end of file
diff --git a/finetune/Metric3D/training/data_server_info/annos_test_matterport3d_example.json b/finetune/Metric3D/training/data_server_info/annos_test_matterport3d_example.json
new file mode 100644
index 0000000000000000000000000000000000000000..af406d511362c8d83c858580bf12633749fb00c7
--- /dev/null
+++ b/finetune/Metric3D/training/data_server_info/annos_test_matterport3d_example.json
@@ -0,0 +1 @@
+{"files": [{"meta_data": "Matterport3D/data/2n8kARJN3HM/2n8kARJN3HM/meta/add134cc07e64d9d8524d0d9f96c4180_i1_5.pkl"}, {"meta_data": "Matterport3D/data/SN83YJsR3w2/SN83YJsR3w2/meta/4a87c9150e8442a1b8abc51ed5073ca0_i1_4.pkl"}, {"meta_data": "Matterport3D/data/Uxmj2M2itWa/Uxmj2M2itWa/meta/0cef156ab53041da97dd6a70d3d5af0b_i1_4.pkl"}, {"meta_data": "Matterport3D/data/yqstnuAEVhm/yqstnuAEVhm/meta/e9b4d8e951cb4712b3905c8f4c4dabb5_i2_1.pkl"}, {"meta_data": "Matterport3D/data/dhjEzFoUFzH/dhjEzFoUFzH/meta/3d1a8e5759a14f2a81e5d6e2f5045eca_i2_2.pkl"}]}
\ No newline at end of file
diff --git a/finetune/Metric3D/training/data_server_info/annos_test_normal_nyu_example.json b/finetune/Metric3D/training/data_server_info/annos_test_normal_nyu_example.json
new file mode 100644
index 0000000000000000000000000000000000000000..5e71142338f5cba3667b4fefbd7fffcaa298b676
--- /dev/null
+++ b/finetune/Metric3D/training/data_server_info/annos_test_normal_nyu_example.json
@@ -0,0 +1 @@
+{"files": [{"rgb": "NYU/nyu_normal/official/test/0000.png", "depth": "NYU/nyu_normal/official/test/0000_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0000_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0001.png", "depth": "NYU/nyu_normal/official/test/0001_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0001_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0008.png", "depth": "NYU/nyu_normal/official/test/0008_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0008_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0013.png", "depth": "NYU/nyu_normal/official/test/0013_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0013_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0014.png", "depth": "NYU/nyu_normal/official/test/0014_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0014_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0015.png", "depth": "NYU/nyu_normal/official/test/0015_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0015_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0016.png", "depth": "NYU/nyu_normal/official/test/0016_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0016_n.png"}, {"rgb": "NYU/nyu_normal/official/test/0017.png", "depth": "NYU/nyu_normal/official/test/0017_d.png", "cam_in": [518.8579, 519.4691, 325.58245, 253.73617], "normal": "NYU/nyu_normal/official/test/0017_n.png"}]}
\ No newline at end of file
diff --git a/finetune/Metric3D/training/data_server_info/pretrained_weight.py b/finetune/Metric3D/training/data_server_info/pretrained_weight.py
new file mode 100644
index 0000000000000000000000000000000000000000..2752bd7411cef60e23c8deedccb167803df72f37
--- /dev/null
+++ b/finetune/Metric3D/training/data_server_info/pretrained_weight.py
@@ -0,0 +1,21 @@
+db_info={}
+
+
+
+db_info['checkpoint']={
+ 'db_root': 'tbd_weight_root', # Config your weight root!
+
+ # pretrained weight for vit
+ 'vit_small_reg': 'vit/dinov2_vits14_reg4_pretrain.pth',
+ 'vit_large_reg': 'vit/dinov2_vitl14_reg4_pretrain.pth',
+ 'vit_giant2_reg': 'vit/dinov2_vitg14_reg4_pretrain.pth',
+
+ 'vit_large': 'vit/dinov2_vitl14_pretrain.pth',
+
+ # pretrained weight for convnext
+ 'convnext_tiny': 'convnext/convnext_tiny_22k_1k_384.pth',
+ 'convnext_small': 'convnext/convnext_small_22k_1k_384.pth',
+ 'convnext_base': 'convnext/convnext_base_22k_1k_384.pth',
+ 'convnext_large': 'convnext/convnext_large_22k_1k_384.pth',
+ 'convnext_xlarge': 'convnext/convnext_xlarge_22k_1k_384_ema.pth',
+}
\ No newline at end of file
diff --git a/finetune/Metric3D/training/data_server_info/public_datasets.py b/finetune/Metric3D/training/data_server_info/public_datasets.py
new file mode 100644
index 0000000000000000000000000000000000000000..0e316d85883628cc48d7dcf8fda81e1b4e1202a1
--- /dev/null
+++ b/finetune/Metric3D/training/data_server_info/public_datasets.py
@@ -0,0 +1,416 @@
+
+db_info={}
+
+
+#### DDAD Dataset
+# RGBD, consecutive frames, and ring cameras annotations
+db_info['DDAD']={
+ 'db_root': 'tbd_data_root', # Config your data root!
+ 'data_root': 'DDAD',
+ 'semantic_root': 'DDAD',
+ 'meta_data_root': 'DDAD',
+ 'train_annotations_path': 'DDAD/DDAD/annotations/train.json',
+ 'test_annotations_path': 'DDAD/DDAD/annotations/test.json',
+ 'val_annotations_path': 'DDAD/DDAD/annotations/val.json',
+}
+
+#### Mapillary Planet Scale Dataset
+# Single frame RGBD annotations
+db_info['Mapillary_PSD']={
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Mapillary_PSD',
+ 'semantic_root': 'Mapillary_PSD',
+ 'train_annotations_path': 'Mapillary_PSD/Mapillary_PSD/annotations/train.json',
+ 'test_annotations_path': 'Mapillary_PSD/Mapillary_PSD/annotations/test.json',
+ 'val_annotations_path': 'Mapillary_PSD/Mapillary_PSD/annotations/val.json',
+}
+
+#### Cityscapes dataset
+# Cityscapes sequence dataset, RGBD and consecutive frames annotations
+db_info['Cityscapes_sequence'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Cityscapes_sequence',
+ 'semantic_root': 'Cityscapes_sequence',
+ 'train_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/train.json',
+ 'test_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/test.json',
+ 'val_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/val.json',
+}
+# Cityscapes extra dataset, RGBD annotations
+db_info['Cityscapes_trainextra'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Cityscapes_trainextra',
+ 'train_annotations_path': 'Cityscapes_trainextra/Cityscapes_trainextra/annotations/train.json',
+ 'test_annotations_path': 'Cityscapes_trainextra/Cityscapes_trainextra/annotations/test.json',
+ 'val_annotations_path': 'Cityscapes_trainextra/Cityscapes_trainextra/annotations/val.json',
+}
+db_info['Cityscapes_sequence_test'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Cityscapes_sequence',
+ 'train_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/train.json',
+ 'test_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/test.json',
+ 'val_annotations_path': 'Cityscapes_sequence/Cityscapes_sequence/annotations/test.json',
+}
+
+#### Lyft dataset
+# Lyft dataset, RGBD, neighbouring cameras, and consecutive frames annotations
+db_info['Lyft'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Lyft',
+ 'depth_root': 'Lyft',
+ 'meta_data_root': 'Lyft',
+ 'semantic_root': 'Lyft',
+ 'train_annotations_path': 'Lyft/Lyft/annotations/train.json',
+ 'test_annotations_path': 'Lyft/Lyft/annotations/test.json',
+ 'val_annotations_path': 'Lyft/Lyft/annotations/val.json',
+}
+# Lyft dataset, RGBD for ring cameras
+db_info['Lyft_ring'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Lyft',
+ 'depth_root': 'Lyft',
+ 'meta_data_root': 'Lyft',
+ 'train_annotations_path': 'Lyft/Lyft/annotations/train.json',
+ 'test_annotations_path': 'Lyft/Lyft/annotations/test.json',
+ 'val_annotations_path': 'Lyft/Lyft/annotations/val.json',
+}
+
+#### DSEC dataset
+# DSEC dataset, RGBD and consecutive frames annotaitons
+db_info['DSEC'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DSEC',
+ 'semantic_root': 'DSEC',
+ 'train_annotations_path': 'DSEC/DSEC/annotations/train.json',
+ 'test_annotations_path': 'DSEC/DSEC/annotations/test.json',
+ 'val_annotations_path': 'DSEC/DSEC/annotations/val.json',
+}
+
+#### Argovers2 Dataset
+# Argovers2 dataset, RGBD and neighbouring cameras annotaitons
+db_info['Argovers2'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Argovers2',
+ 'depth_root': 'Argovers2',
+ 'meta_data_root': 'Argovers2',
+ 'train_annotations_path': 'Argovers2/Argovers2/annotations/train.json',
+ 'test_annotations_path': 'Argovers2/Argovers2/annotations/test.json',
+ 'val_annotations_path': 'Argovers2/Argovers2/annotations/val.json',
+}
+# Argovers2 dataset, RGBD and consecutive cameras annotaitons
+db_info['Argovers2_tmpl'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Argovers2',
+ 'depth_root': 'Argovers2',
+ 'meta_data_root': 'Argovers2',
+ 'train_annotations_path': 'Argovers2/Argovers2/annotations/train.json',
+ 'test_annotations_path': 'Argovers2/Argovers2/annotations/test.json',
+ 'val_annotations_path': 'Argovers2/Argovers2/annotations/val.json',
+}
+
+#### DrivingStereo Dataset
+# DrivingStereo dataset, RGBD annotaitons for stereo data
+db_info['DrivingStereo'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DrivingStereo',
+ 'semantic_root': 'DrivingStereo',
+ 'train_annotations_path': 'DrivingStereo/DrivingStereo/annotations/train.json',
+ 'test_annotations_path': 'DrivingStereo/DrivingStereo/annotations/test.json',
+ 'val_annotations_path': 'DrivingStereo/DrivingStereo/annotations/val.json',
+}
+# DrivingStereo dataset, RGBD and consecutive frames annotaitons for stereo data
+db_info['DrivingStereo_tmpl'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DrivingStereo',
+ 'semantic_root': 'DrivingStereo',
+ 'train_annotations_path': 'DrivingStereo/DrivingStereo/annotations/train.json',
+ 'test_annotations_path': 'DrivingStereo/DrivingStereo/annotations/test.json',
+ 'val_annotations_path': 'DrivingStereo/DrivingStereo/annotations/val.json',
+}
+
+#### DIML Dataset
+# DIML dataset, RGBD annotaitons for stereo data
+db_info['DIML'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DIML',
+ 'semantic_root': 'DIML',
+ 'train_annotations_path': 'DIML/DIML/anotation/train.json',
+ 'test_annotations_path': 'DIML/DIML/anotation/test.json',
+ 'val_annotations_path': 'DIML/DIML/anotation/val.json',
+}
+
+db_info['NuScenes'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'NuScenes',
+ 'train_annotations_path': 'NuScenes/NuScenes/annotations/train.json',
+ 'test_annotations_path': 'NuScenes/NuScenes/annotations/test.json',
+ 'val_annotations_path': 'NuScenes/NuScenes/annotations/val.json',
+}
+db_info['NuScenes_tmpl'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'NuScenes',
+ 'train_annotations_path': 'NuScenes/NuScenes/annotations/train.json',
+ 'test_annotations_path': 'NuScenes/NuScenes/annotations/test.json',
+ 'val_annotations_path': 'NuScenes/NuScenes/annotations/val.json',
+}
+
+
+# Pandaset, RGBD + tmpl dataset
+db_info['Pandaset'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Pandaset',
+ 'meta_data_root': 'Pandaset',
+ 'semantic_root': 'Pandaset',
+ 'train_annotations_path': 'Pandaset/Pandaset/annotations/train.json',
+ 'test_annotations_path': 'Pandaset/Pandaset/annotations/test.json',
+ 'val_annotations_path': 'Pandaset/Pandaset/annotations/val.json',
+}
+db_info['Pandaset_ring'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Pandaset',
+ 'meta_data_root': 'Pandaset',
+ 'semantic_root': 'Pandaset',
+ 'train_annotations_path': 'Pandaset/Pandaset/annotations/train.json',
+ 'test_annotations_path': 'Pandaset/Pandaset/annotations/test.json',
+ 'val_annotations_path': 'Pandaset/Pandaset/annotations/val.json',
+}
+
+# UASOL, RGBD + tmpl dataset
+db_info['UASOL'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'UASOL_data',
+ 'meta_data_root': 'UASOL_data',
+ 'semantic_root': 'UASOL_data',
+ 'train_annotations_path': 'UASOL_data/UASOL_data/annotations/train.json',
+ 'test_annotations_path': 'UASOL_data/UASOL_data/annotations/test.json',
+ 'val_annotations_path': 'UASOL_data/UASOL_data/annotations/test.json',
+}
+
+# Taskonomy, RGBD dataset
+db_info['Taskonomy'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Taskonomy',
+ 'meta_data_root': 'Taskonomy',
+ 'semantic_root': 'Taskonomy',
+ 'normal_root': 'Taskonomy',
+
+ 'train_annotations_path': 'Taskonomy/Taskonomy/annotations/train.json',
+ 'test_annotations_path': 'Taskonomy/Taskonomy/annotations/test.json',
+ 'val_annotations_path': 'Taskonomy/Taskonomy/annotations/test.json',
+}
+
+### WebStereo Datasets
+# HRWSI/Holopix dataset, RGBD and sky masks annotations
+db_info['HRWSI_Holopix'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'WebStereo',
+ 'train_annotations_path': 'WebStereo/annotations/train.json',
+ 'test_annotations_path': 'WebStereo/annotations/test.json',
+ 'val_annotations_path': 'WebStereo/annotations/val.json',
+}
+
+### Waymo Datasets
+db_info['Waymo'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Waymo',
+ 'meta_data_root': 'Waymo',
+ 'semantic_root': 'Waymo',
+ 'train_annotations_path': 'Waymo/Waymo/annotations/training_annos_all_filter.json',
+ 'test_annotations_path': 'Waymo/Waymo/annotations/testing_annos_all_filter.json',
+ 'val_annotations_path': 'Waymo/Waymo/annotations/validation_annos_all_filter.json',
+}
+
+
+# DIODE, RGBD dataset
+db_info['DIODE'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DIODE',
+ 'depth_mask_root': 'DIODE',
+ 'normal_root': 'DIODE',
+ 'train_annotations_path': 'DIODE/DIODE/annotations/train.json',
+ 'test_annotations_path': 'DIODE/DIODE/annotations/test.json',
+ 'val_annotations_path': 'DIODE/DIODE/annotations/val.json',
+}
+db_info['DIODE_indoor'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DIODE',
+ 'depth_mask_root': 'DIODE',
+ 'train_annotations_path': 'DIODE/DIODE/annotations/train.json',
+ 'test_annotations_path': 'DIODE/DIODE/annotations/test.json',
+ 'val_annotations_path': 'DIODE/DIODE/annotations/val.json',
+}
+db_info['DIODE_outdoor'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'DIODE',
+ 'depth_mask_root': 'DIODE',
+ 'normal_root': 'DIODE',
+ 'train_annotations_path': 'DIODE/DIODE/annotations/train.json',
+ 'test_annotations_path': 'DIODE/DIODE/annotations/test.json',
+ 'val_annotations_path': 'DIODE/DIODE/annotations/val.json',
+}
+db_info['ETH3D'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'ETH3D',
+ 'depth_mask_root': 'ETH3D',
+ 'train_annotations_path': 'ETH3D/ETH3D/annotations/test.json',
+ 'test_annotations_path': 'ETH3D/ETH3D/annotations/test.json',
+ 'val_annotations_path': 'ETH3D/ETH3D/annotations/test.json',
+}
+# NYU, RGBD dataset
+db_info['NYU'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'NYU',
+ 'normal_root': 'NYU',
+ #'train_annotations_path': 'NYU/NYU/annotations/train.json',
+ 'train_annotations_path': 'NYU/NYU/annotations/train_normal.json',
+ #'test_annotations_path': 'NYU/NYU/annotations/test.json',
+ 'test_annotations_path': 'NYU/NYU/annotations/test_normal.json',
+ 'val_annotations_path': 'NYU/NYU/annotations/test.json',
+}
+# ScanNet, RGBD dataset
+db_info['ScanNet'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'ScanNet',
+ 'train_annotations_path': 'ScanNet/ScanNet/annotations/train.json',
+ 'test_annotations_path': 'ScanNet/ScanNet/annotations/test.json',
+ 'val_annotations_path': 'ScanNet/ScanNet/annotations/test.json',
+}
+# KITTI, RGBD dataset
+db_info['KITTI'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': '',
+ 'train_annotations_path': 'KITTI/KITTI/annotations/eigen_train.json',
+ 'test_annotations_path': 'KITTI/KITTI/annotations/eigen_test.json',
+ 'val_annotations_path': 'KITTI/KITTI/annotations/eigen_test.json',
+}
+
+
+########### new training data
+# Blended_mvg, RGBD dataset
+db_info['BlendedMVG_omni'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Blended_mvg',
+ 'meta_data_root': 'Blended_mvg',
+ 'normal_root': 'Blended_mvg',
+ 'train_annotations_path': 'Blended_mvg/Blended_mvg/annotations/train.json',
+ 'test_annotations_path': 'Blended_mvg/Blended_mvg/annotations/test.json',
+ 'val_annotations_path': 'Blended_mvg/Blended_mvg/annotations/val.json',
+}
+
+# HM3D, RGBD dataset
+db_info['HM3D'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'HM3D',
+ 'meta_data_root': 'HM3D',
+ 'normal_root': 'HM3D',
+ 'train_annotations_path': 'HM3D/HM3d_omnidata/annotations/train.json', #',
+ 'test_annotations_path': 'HM3D/HM3d_omnidata/annotations/val.json',
+ 'val_annotations_path': 'HM3D/HM3d_omnidata/annotations/test.json',
+}
+
+# LeddarPixSet, RGBD dataset, some errors in the data
+db_info['LeddarPixSet'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'LeddarPixSet',
+ 'meta_data_root': 'LeddarPixSet',
+ 'train_annotations_path': 'LeddarPixSet/LeddarPixSet/annotations/train.json',
+ 'test_annotations_path': 'LeddarPixSet/LeddarPixSet/annotations/test.json',
+ 'val_annotations_path': 'LeddarPixSet/LeddarPixSet/annotations/val.json',
+}
+
+# RGBD dataset
+db_info['Replica'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Replica',
+ 'meta_data_root': 'Replica',
+ 'normal_root': 'Replica',
+ 'train_annotations_path': 'Replica/replica/annotations/train.json',
+ 'test_annotations_path': 'Replica/replica/annotations/test.json',
+ 'val_annotations_path': 'Replica/replica/annotations/val.json',
+}
+
+db_info['Replica_gso'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Replica',
+ 'meta_data_root': 'Replica',
+ 'normal_root': 'Replica',
+ 'train_annotations_path': 'Replica/replica_gso/annotations/train.json',
+ 'test_annotations_path': 'Replica/replica_gso/annotations/test.json',
+ 'val_annotations_path': 'Replica/replica_gso/annotations/val.json',
+}
+
+db_info['Matterport3D'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'Matterport3D',
+ 'meta_data_root': 'Matterport3D',
+ 'normal_root': 'Matterport3D',
+ 'train_annotations_path': 'Matterport3D/Matterport3D/annotations/train.json',
+ 'test_annotations_path': 'Matterport3D/Matterport3D/annotations/test.json',
+ 'val_annotations_path': 'Matterport3D/Matterport3D/annotations/test.json',
+}
+
+db_info['S3DIS'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 's3dis',
+ 'meta_data_root': 's3dis',
+ 'normal_root': 's3dis',
+ 'train_annotations_path': 's3dis/s3dis/annotations/train.json',
+ 'test_annotations_path': 's3dis/s3dis/annotations/test.json',
+ 'val_annotations_path': 's3dis/s3dis/annotations/test.json',
+}
+
+db_info['Seasons4'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': '4seasons/4seasons',
+ 'meta_data_root': '4seasons/4seasons',
+ 'train_annotations_path': '4seasons/4seasons/annotations/train.json',
+ 'test_annotations_path': '4seasons/4seasons/annotations/test.json',
+ 'val_annotations_path': '4seasons/4seasons/annotations/test.json',
+}
+
+db_info['Virtual_KITTI'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'virtual_kitti',
+ 'meta_data_root': 'virtual_kitti',
+ 'semantic_root': 'virtual_kitti',
+ 'train_annotations_path': 'virtual_kitti/virtual_kitti/annotations/train.json',
+ 'test_annotations_path': 'virtual_kitti/virtual_kitti/annotations/test.json',
+ 'val_annotations_path': 'virtual_kitti/virtual_kitti/annotations/test.json',
+}
+
+db_info['IBIMS'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': '',
+ 'train_annotations_path': 'iBims-1/annotations/train.json',
+ 'test_annotations_path': 'iBims-1/annotations/test.json',
+ 'val_annotations_path': 'iBims-1/annotations/test.json',
+}
+
+db_info['ScanNetAll'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': 'scannet',
+ 'normal_root': 'scannet',
+ 'meta_data_root': 'scannet',
+ 'train_annotations_path': 'scannet/scannet/annotations/train.json',
+ 'test_annotations_path': 'scannet/scannet/annotations/test.json',
+ 'val_annotations_path': 'scannet/scannet/annotations/test.json',
+}
+
+db_info['Hypersim'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': '',
+ 'meta_data_root': '',
+ 'normal_root': '',
+ # 'semantic_root': '', # Semantic tags without sky, see https://github.com/apple/ml-hypersim/blob/main/code/cpp/tools/scene_annotation_tool/semantic_label_descs.csv
+ 'train_annotations_path': 'Hypersim/annotations/train.json',
+ 'test_annotations_path': 'Hypersim/annotations/test.json',
+ 'val_annotations_path': 'Hypersim/annotations/test.json',
+}
+
+db_info['DIML_indoor'] = {
+ 'db_root': 'tbd_data_root',
+ 'data_root': '',
+ # 'semantic_root': '',
+ 'train_annotations_path': 'DIML_indoor_new/annotations/train.json',
+ 'test_annotations_path': 'DIML_indoor_new/annotations/test.json',
+ 'val_annotations_path': 'DIML_indoor_new/annotations/test.json',
+}
\ No newline at end of file
diff --git a/finetune/Metric3D/training/kitti_json_files/eigen_test.json b/finetune/Metric3D/training/kitti_json_files/eigen_test.json
new file mode 100644
index 0000000000000000000000000000000000000000..7559eb42e17e408309fb243233bda52f825a05d2
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/eigen_test.json
@@ -0,0 +1 @@
+{"files": [{"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000069.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000069.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000054.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000054.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000057.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000057.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000030.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000030.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000027.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000027.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000012.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000012.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000033.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000015.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000015.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000039.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000039.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000009.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000009.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000051.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000051.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000060.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000060.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000021.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000021.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000024.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000024.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000045.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000045.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000018.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000018.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000006.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000006.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0002_sync/image_02/data/0000000063.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0002_sync/proj_depth/groundtruth/image_02/0000000063.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000016.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000016.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000032.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000032.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000064.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000064.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000080.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000080.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000096.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000096.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000112.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000112.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000128.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000128.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000144.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000144.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000160.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000160.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000176.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000176.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000196.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000196.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000212.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000212.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000228.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000228.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000244.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000244.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000260.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000260.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000276.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000276.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000292.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000292.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000308.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000308.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000324.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000324.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000340.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000340.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000356.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000356.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000372.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000372.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0009_sync/image_02/data/0000000388.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0009_sync/proj_depth/groundtruth/image_02/0000000388.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000090.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000090.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000050.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000050.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000110.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000110.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000115.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000115.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000060.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000060.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000105.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000105.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000125.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000125.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000020.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000020.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000085.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000085.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000070.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000080.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000080.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000065.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000065.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000095.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000095.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000130.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000130.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000100.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000100.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000010.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000010.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000030.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000030.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000135.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000135.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000040.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000040.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000005.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000005.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000120.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000120.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000045.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000045.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0013_sync/image_02/data/0000000035.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0013_sync/proj_depth/groundtruth/image_02/0000000035.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000069.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000069.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000057.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000057.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000012.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000012.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000072.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000072.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000018.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000018.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000063.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000063.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000015.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000015.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000066.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000066.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000006.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000006.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000060.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000060.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000009.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000009.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000033.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000021.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000021.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000075.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000075.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000027.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000027.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000045.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000045.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000078.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000078.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000051.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000051.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000054.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000054.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0020_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0020_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000018.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000018.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000090.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000090.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000126.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000126.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000378.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000378.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000288.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000288.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000198.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000198.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000450.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000450.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000144.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000144.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000072.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000072.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000252.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000252.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000180.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000180.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000432.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000432.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000396.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000396.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000054.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000054.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000468.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000468.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000306.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000306.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000108.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000108.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000162.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000162.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000342.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000342.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000270.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000270.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000414.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000414.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000216.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000216.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000360.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000360.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0023_sync/image_02/data/0000000324.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0023_sync/proj_depth/groundtruth/image_02/0000000324.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000077.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000077.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000035.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000035.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000091.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000091.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000112.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000112.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000007.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000007.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000175.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000175.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000098.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000098.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000133.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000133.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000161.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000161.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000014.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000014.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000126.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000126.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000168.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000168.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000070.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000084.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000084.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000140.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000140.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000049.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000049.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000182.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000182.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000147.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000147.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000056.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000056.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000063.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000063.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000021.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000021.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000119.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000119.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0027_sync/image_02/data/0000000028.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0027_sync/proj_depth/groundtruth/image_02/0000000028.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000380.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000380.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000394.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000394.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000324.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000324.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000268.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000268.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000366.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000366.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000296.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000296.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000014.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000014.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000028.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000028.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000182.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000182.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000168.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000168.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000196.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000196.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000140.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000140.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000084.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000084.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000056.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000056.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000112.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000112.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000352.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000352.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000126.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000126.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000070.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000310.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000310.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000154.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000154.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000098.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000098.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000408.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000408.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0029_sync/image_02/data/0000000338.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0029_sync/proj_depth/groundtruth/image_02/0000000338.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000128.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000128.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000192.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000192.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000032.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000032.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000352.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000352.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000608.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000608.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000224.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000224.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000576.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000576.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000672.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000672.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000064.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000064.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000448.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000448.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000704.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000704.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000640.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000640.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000512.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000512.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000768.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000768.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000160.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000160.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000416.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000416.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000480.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000480.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000288.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000288.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000544.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000544.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000096.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000096.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000384.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000384.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000256.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000256.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0036_sync/image_02/data/0000000320.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_26_drive_0036_sync/proj_depth/groundtruth/image_02/0000000320.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000005.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000005.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000010.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000010.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000015.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000015.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000020.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000020.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000025.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000025.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000030.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000030.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000035.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000035.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000040.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000040.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000045.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000045.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000050.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000050.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000055.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000055.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000060.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000060.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000065.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000065.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000070.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000075.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000075.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000080.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000080.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000085.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000085.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000090.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000090.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000095.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000095.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000100.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000100.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000105.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000105.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000110.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000110.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0046_sync/image_02/data/0000000115.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0046_sync/proj_depth/groundtruth/image_02/0000000115.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000005.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000005.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000006.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000006.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000007.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000007.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000008.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000008.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000009.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000009.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000010.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000010.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000011.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000011.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000012.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000012.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000013.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000013.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000014.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000014.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000015.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000015.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0048_sync/image_02/data/0000000016.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0048_sync/proj_depth/groundtruth/image_02/0000000016.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000046.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000046.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000014.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000014.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000028.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000028.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000026.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000026.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000050.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000050.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000040.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000040.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000008.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000008.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000016.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000016.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000044.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000044.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000018.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000018.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000032.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000032.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000010.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000010.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000020.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000020.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000052.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000052.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000006.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000006.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000030.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000030.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000012.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000012.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000038.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000038.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0052_sync/image_02/data/0000000022.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0052_sync/proj_depth/groundtruth/image_02/0000000022.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000011.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000011.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000033.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000242.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000242.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000253.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000253.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000286.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000286.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000154.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000154.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000099.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000099.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000220.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000220.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000022.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000022.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000077.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000077.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000187.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000187.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000143.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000143.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000066.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000066.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000176.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000176.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000110.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000110.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000275.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000275.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000264.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000264.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000198.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000198.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000055.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000055.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000088.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000088.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000121.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000121.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000209.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000209.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000165.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000165.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000231.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000231.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0056_sync/image_02/data/0000000044.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0056_sync/proj_depth/groundtruth/image_02/0000000044.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000056.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000056.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000344.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000344.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000358.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000358.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000316.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000316.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000238.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000238.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000098.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000098.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000112.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000112.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000028.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000028.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000014.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000014.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000330.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000330.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000154.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000154.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000042.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000042.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000302.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000302.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000182.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000182.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000288.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000288.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000140.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000140.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000274.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000274.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000224.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000224.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000196.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000196.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000126.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000126.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000084.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000084.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000210.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000210.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0059_sync/image_02/data/0000000070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0059_sync/proj_depth/groundtruth/image_02/0000000070.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000528.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000528.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000308.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000308.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000044.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000044.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000352.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000352.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000066.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000066.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000506.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000506.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000176.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000176.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000022.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000022.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000242.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000242.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000462.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000462.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000418.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000418.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000110.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000110.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000440.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000440.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000396.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000396.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000154.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000154.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000374.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000374.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000088.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000088.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000286.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000286.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000550.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000550.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000264.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000264.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000220.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000220.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000330.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000330.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000484.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000484.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0064_sync/image_02/data/0000000198.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0064_sync/proj_depth/groundtruth/image_02/0000000198.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000283.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000283.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000361.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000361.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000270.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000270.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000127.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000127.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000205.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000205.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000218.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000218.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000153.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000153.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000335.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000335.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000192.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000192.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000348.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000348.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000101.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000101.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000049.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000049.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000179.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000179.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000140.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000140.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000374.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000374.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000322.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000322.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000309.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000309.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000244.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000244.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000062.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000062.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000257.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000257.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000088.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000088.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000114.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000114.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000075.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000075.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000296.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000296.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0084_sync/image_02/data/0000000231.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0084_sync/proj_depth/groundtruth/image_02/0000000231.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000007.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000007.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000196.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000196.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000439.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000439.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000169.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000169.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000115.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000115.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000034.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000034.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000304.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000304.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000331.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000331.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000277.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000277.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000520.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000520.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000682.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000682.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000628.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000628.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000088.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000088.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000601.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000601.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000574.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000574.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000223.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000223.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000655.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000655.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000358.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000358.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000412.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000412.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000142.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000142.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000385.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000385.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000061.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000061.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000493.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000493.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000466.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000466.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0086_sync/image_02/data/0000000250.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0086_sync/proj_depth/groundtruth/image_02/0000000250.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000016.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000016.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000032.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000032.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000064.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000064.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000080.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000080.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000096.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000096.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000112.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000112.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000128.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000128.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000144.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000144.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000160.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000160.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000176.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000176.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000192.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000192.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000208.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000208.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000224.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000224.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000240.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000240.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000256.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000256.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000305.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000305.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000321.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000321.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000337.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000337.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000353.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000353.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000369.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000369.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000385.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000385.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000401.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000401.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0093_sync/image_02/data/0000000417.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0093_sync/proj_depth/groundtruth/image_02/0000000417.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000019.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000019.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000038.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000038.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000057.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000057.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000076.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000076.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000095.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000095.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000114.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000114.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000133.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000133.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000152.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000152.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000171.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000171.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000190.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000190.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000209.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000209.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000228.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000228.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000247.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000247.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000266.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000266.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000285.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000285.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000304.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000304.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000323.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000323.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000342.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000342.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000361.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000361.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000380.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000380.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000399.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000399.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000418.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000418.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000437.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000437.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0096_sync/image_02/data/0000000456.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0096_sync/proj_depth/groundtruth/image_02/0000000456.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000692.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000692.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000930.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000930.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000760.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000760.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000896.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000896.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000284.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000284.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000148.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000148.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000522.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000522.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000794.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000794.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000624.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000624.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000726.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000726.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000216.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000216.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000318.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000318.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000488.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000488.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000590.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000590.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000454.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000454.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000862.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000862.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000386.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000386.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000352.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000352.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000420.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000420.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000658.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000658.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000828.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000828.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000556.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000556.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000114.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000114.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000182.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000182.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0101_sync/image_02/data/0000000080.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0101_sync/proj_depth/groundtruth/image_02/0000000080.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000015.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000015.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000035.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000035.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000043.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000043.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000051.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000051.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000059.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000059.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000067.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000067.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000075.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000075.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000083.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000083.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000091.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000091.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000099.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000099.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000107.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000107.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000115.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000115.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000123.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000123.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000131.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000131.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000139.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000139.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000147.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000147.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000155.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000155.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000163.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000163.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000171.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000171.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000179.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000179.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000187.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000187.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000195.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000195.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000203.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000203.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000211.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000211.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0106_sync/image_02/data/0000000219.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0106_sync/proj_depth/groundtruth/image_02/0000000219.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000312.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000312.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000494.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000494.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000104.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000104.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000130.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000130.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000156.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000156.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000182.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000182.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000598.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000598.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000416.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000416.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000364.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000364.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000026.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000026.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000078.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000078.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000572.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000572.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000468.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000468.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000260.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000260.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000624.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000624.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000234.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000234.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000442.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000442.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000390.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000390.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000546.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000546.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000286.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000286.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000338.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000338.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000208.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000208.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000650.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000650.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_26/2011_09_26_drive_0117_sync/image_02/data/0000000052.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_26_drive_0117_sync/proj_depth/groundtruth/image_02/0000000052.png", "cam_in": [721.5377, 721.5377, 609.5593, 172.854]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000024.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000024.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000021.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000021.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000051.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000051.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000018.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000018.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000033.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000090.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000090.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000045.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000045.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000054.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000054.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000012.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000012.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000039.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000039.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000009.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000009.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000030.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000030.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000078.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000078.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000060.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000060.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000048.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000048.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000084.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000084.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000081.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000081.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000006.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000006.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000057.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000057.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000072.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000072.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000087.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000087.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_28/2011_09_28_drive_0002_sync/image_02/data/0000000063.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_28_drive_0002_sync/proj_depth/groundtruth/image_02/0000000063.png", "cam_in": [707.0493, 707.0493, 604.0814, 180.5066]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000252.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000252.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000540.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000540.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000036.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000036.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000360.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000360.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000807.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000807.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000879.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000879.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000288.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000288.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000771.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000771.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000216.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000216.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000951.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000951.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000324.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000324.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000432.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000432.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000504.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000504.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000576.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000576.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000108.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000108.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000180.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000180.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000072.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000072.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000612.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000612.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000915.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000915.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000735.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000735.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000144.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000144.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000396.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000396.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_29/2011_09_29_drive_0071_sync/image_02/data/0000000468.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_29_drive_0071_sync/proj_depth/groundtruth/image_02/0000000468.png", "cam_in": [718.3351, 718.3351, 600.3891, 181.5122]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000132.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000132.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000011.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000011.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000154.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000154.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000022.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000022.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000242.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000242.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000198.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000198.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000176.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000176.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000231.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000231.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000220.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000220.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000088.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000088.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000143.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000143.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000055.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000055.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000033.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000187.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000187.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000110.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000110.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000044.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000044.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000077.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000077.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000066.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000066.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000165.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000165.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000264.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000264.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000253.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000253.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000209.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000209.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0016_sync/image_02/data/0000000121.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_09_30_drive_0016_sync/proj_depth/groundtruth/image_02/0000000121.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000107.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000107.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002247.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002247.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001391.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001391.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000535.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000535.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001819.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001819.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001177.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001177.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000428.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000428.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001926.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001926.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000749.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000749.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001284.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001284.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002140.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002140.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001605.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001605.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001498.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001498.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000642.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000642.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002740.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002740.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002419.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002419.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000856.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000856.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002526.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002526.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001712.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001712.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000001070.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000001070.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002033.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002033.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000214.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000214.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000000963.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000000963.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0018_sync/image_02/data/0000002633.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0018_sync/proj_depth/groundtruth/image_02/0000002633.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000533.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000533.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000001040.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000001040.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000082.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000082.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000205.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000205.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000835.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000835.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000451.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000451.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000164.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000164.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000794.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000794.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000328.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000328.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000615.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000615.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000917.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000917.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000369.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000369.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000287.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000287.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000123.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000123.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000876.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000876.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000410.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000410.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000492.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000492.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000958.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000958.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000656.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000656.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000753.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000753.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000574.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000574.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000001081.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000001081.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000041.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000041.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_09_30/2011_09_30_drive_0027_sync/image_02/data/0000000246.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_09_30_drive_0027_sync/proj_depth/groundtruth/image_02/0000000246.png", "cam_in": [707.0912, 707.0912, 601.8873, 183.1104]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002906.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000002906.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002544.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000002544.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000362.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000000362.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004535.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000004535.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000734.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000000734.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001096.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000001096.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004173.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000004173.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000543.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000000543.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001277.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000001277.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000004354.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000004354.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001458.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000001458.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001820.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000001820.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003449.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003449.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003268.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003268.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000915.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000000915.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002363.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000002363.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002725.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000002725.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000000181.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000000181.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000001639.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000001639.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003992.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003992.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003087.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003087.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000002001.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000002001.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003811.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003811.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0027_sync/image_02/data/0000003630.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/train/2011_10_03_drive_0027_sync/proj_depth/groundtruth/image_02/0000003630.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000096.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000096.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000800.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000800.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000320.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000320.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000576.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000576.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000480.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000480.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000640.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000640.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000032.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000032.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000384.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000384.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000160.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000160.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000704.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000704.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000736.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000736.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000672.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000672.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000064.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000064.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000288.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000288.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000352.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000352.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000512.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000512.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000544.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000544.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000608.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000608.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000128.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000128.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000224.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000224.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000416.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000416.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000192.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000192.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000448.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000448.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}, {"rgb": "kitti_raw/kitti_raw/2011_10_03/2011_10_03_drive_0047_sync/image_02/data/0000000768.png", "depth": "kitti/kitti_depth/depth/data_depth_annotated/val/2011_10_03_drive_0047_sync/proj_depth/groundtruth/image_02/0000000768.png", "cam_in": [718.856, 718.856, 607.1928, 185.2157]}]}
\ No newline at end of file
diff --git a/finetune/Metric3D/training/kitti_json_files/eigen_test.txt b/finetune/Metric3D/training/kitti_json_files/eigen_test.txt
new file mode 100644
index 0000000000000000000000000000000000000000..182df59d693af490a771a9176e0d954d95233c45
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/eigen_test.txt
@@ -0,0 +1,697 @@
+2011_09_26/2011_09_26_drive_0002_sync 0000000069 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000054 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000057 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000030 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000027 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000012 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000075 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000036 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000033 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000015 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000072 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000003 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000039 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000009 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000051 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000060 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000021 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000024 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000045 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000018 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000048 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000006 l
+2011_09_26/2011_09_26_drive_0002_sync 0000000063 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000016 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000032 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000048 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000064 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000080 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000096 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000112 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000128 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000144 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000160 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000176 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000196 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000212 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000228 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000244 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000260 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000276 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000292 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000308 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000324 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000340 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000356 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000372 l
+2011_09_26/2011_09_26_drive_0009_sync 0000000388 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000090 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000050 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000110 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000115 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000060 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000105 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000125 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000020 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000140 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000085 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000070 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000080 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000065 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000095 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000130 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000100 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000010 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000030 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000135 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000040 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000005 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000120 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000045 l
+2011_09_26/2011_09_26_drive_0013_sync 0000000035 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000003 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000069 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000057 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000012 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000072 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000018 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000063 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000084 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000015 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000066 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000006 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000048 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000060 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000009 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000033 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000021 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000075 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000027 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000045 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000078 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000036 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000051 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000054 l
+2011_09_26/2011_09_26_drive_0020_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000018 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000090 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000126 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000378 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000036 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000288 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000198 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000450 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000144 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000072 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000252 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000180 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000432 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000396 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000054 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000468 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000306 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000108 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000162 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000342 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000270 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000414 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000216 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000360 l
+2011_09_26/2011_09_26_drive_0023_sync 0000000324 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000077 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000035 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000091 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000112 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000007 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000175 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000098 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000133 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000161 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000014 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000126 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000168 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000070 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000084 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000140 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000049 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000182 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000147 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000056 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000063 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000021 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000119 l
+2011_09_26/2011_09_26_drive_0027_sync 0000000028 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000380 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000394 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000324 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000268 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000366 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000296 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000014 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000028 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000182 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000168 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000196 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000140 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000084 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000056 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000112 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000352 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000126 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000070 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000310 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000154 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000098 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000408 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0029_sync 0000000338 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000128 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000192 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000032 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000352 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000608 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000224 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000576 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000672 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000064 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000448 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000704 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000640 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000512 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000768 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000160 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000416 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000480 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000800 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000288 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000544 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000096 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000384 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000256 l
+2011_09_26/2011_09_26_drive_0036_sync 0000000320 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000005 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000010 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000015 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000020 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000025 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000030 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000035 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000040 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000045 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000050 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000055 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000060 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000065 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000070 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000075 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000080 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000085 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000090 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000095 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000100 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000105 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000110 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000115 l
+2011_09_26/2011_09_26_drive_0046_sync 0000000120 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000001 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000002 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000003 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000004 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000005 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000006 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000007 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000008 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000009 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000010 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000011 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000012 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000013 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000014 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000015 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000016 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000017 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000018 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000019 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000020 l
+2011_09_26/2011_09_26_drive_0048_sync 0000000021 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000046 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000014 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000036 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000028 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000026 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000050 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000040 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000008 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000016 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000044 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000018 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000032 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000010 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000020 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000048 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000052 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000006 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000030 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000012 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000038 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000002 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000004 l
+2011_09_26/2011_09_26_drive_0052_sync 0000000022 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000011 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000033 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000242 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000253 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000286 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000154 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000099 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000220 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000022 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000077 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000187 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000143 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000066 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000176 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000110 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000275 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000264 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000198 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000055 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000088 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000121 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000209 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000165 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000231 l
+2011_09_26/2011_09_26_drive_0056_sync 0000000044 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000056 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000344 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000358 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000316 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000238 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000098 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000112 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000028 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000014 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000330 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000154 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000042 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000302 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000182 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000288 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000140 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000274 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000224 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000372 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000196 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000126 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000084 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000210 l
+2011_09_26/2011_09_26_drive_0059_sync 0000000070 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000528 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000308 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000044 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000352 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000066 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000506 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000176 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000022 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000242 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000462 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000418 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000110 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000440 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000396 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000154 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000374 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000088 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000286 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000550 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000264 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000220 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000330 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000484 l
+2011_09_26/2011_09_26_drive_0064_sync 0000000198 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000283 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000361 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000270 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000127 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000205 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000218 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000153 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000335 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000192 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000348 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000101 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000049 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000179 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000140 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000374 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000322 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000309 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000244 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000062 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000257 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000088 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000114 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000075 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000296 l
+2011_09_26/2011_09_26_drive_0084_sync 0000000231 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000007 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000196 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000439 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000169 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000115 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000034 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000304 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000331 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000277 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000520 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000682 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000628 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000088 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000601 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000574 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000223 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000655 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000358 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000412 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000142 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000385 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000061 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000493 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000466 l
+2011_09_26/2011_09_26_drive_0086_sync 0000000250 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000016 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000032 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000048 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000064 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000080 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000096 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000112 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000128 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000144 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000160 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000176 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000192 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000208 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000224 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000240 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000256 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000305 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000321 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000337 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000353 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000369 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000385 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000401 l
+2011_09_26/2011_09_26_drive_0093_sync 0000000417 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000019 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000038 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000057 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000076 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000095 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000114 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000133 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000152 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000171 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000190 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000209 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000228 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000247 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000266 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000285 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000304 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000323 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000342 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000361 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000380 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000399 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000418 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000437 l
+2011_09_26/2011_09_26_drive_0096_sync 0000000456 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000692 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000930 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000760 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000896 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000284 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000148 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000522 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000794 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000624 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000726 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000216 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000318 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000488 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000590 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000454 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000862 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000386 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000352 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000420 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000658 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000828 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000556 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000114 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000182 l
+2011_09_26/2011_09_26_drive_0101_sync 0000000080 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000015 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000035 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000043 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000051 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000059 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000067 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000075 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000083 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000091 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000099 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000107 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000115 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000123 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000131 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000139 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000147 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000155 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000163 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000171 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000179 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000187 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000195 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000203 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000211 l
+2011_09_26/2011_09_26_drive_0106_sync 0000000219 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000312 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000494 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000104 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000130 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000156 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000182 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000598 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000416 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000364 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000026 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000078 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000572 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000468 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000260 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000624 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000234 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000442 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000390 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000546 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000286 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000000 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000338 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000208 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000650 l
+2011_09_26/2011_09_26_drive_0117_sync 0000000052 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000024 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000021 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000036 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000000 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000051 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000018 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000033 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000090 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000045 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000054 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000012 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000039 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000009 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000003 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000030 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000078 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000060 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000048 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000084 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000081 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000006 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000057 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000072 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000087 l
+2011_09_28/2011_09_28_drive_0002_sync 0000000063 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000252 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000540 l
+2011_09_29/2011_09_29_drive_0071_sync 0000001054 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000036 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000360 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000807 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000879 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000288 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000771 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000000 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000216 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000951 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000324 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000432 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000504 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000576 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000108 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000180 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000072 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000612 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000915 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000735 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000144 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000396 l
+2011_09_29/2011_09_29_drive_0071_sync 0000000468 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000132 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000011 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000154 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000022 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000242 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000198 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000176 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000231 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000275 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000220 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000088 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000143 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000055 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000033 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000187 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000110 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000044 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000077 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000066 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000000 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000165 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000264 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000253 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000209 l
+2011_09_30/2011_09_30_drive_0016_sync 0000000121 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000107 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002247 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001391 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000535 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001819 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001177 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000428 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001926 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000749 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001284 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002140 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001605 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001498 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000642 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002740 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002419 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000856 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002526 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001712 l
+2011_09_30/2011_09_30_drive_0018_sync 0000001070 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000000 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002033 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000214 l
+2011_09_30/2011_09_30_drive_0018_sync 0000000963 l
+2011_09_30/2011_09_30_drive_0018_sync 0000002633 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000533 l
+2011_09_30/2011_09_30_drive_0027_sync 0000001040 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000082 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000205 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000835 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000451 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000164 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000794 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000328 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000615 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000917 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000369 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000287 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000123 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000876 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000410 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000492 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000958 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000656 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000000 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000753 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000574 l
+2011_09_30/2011_09_30_drive_0027_sync 0000001081 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000041 l
+2011_09_30/2011_09_30_drive_0027_sync 0000000246 l
+2011_10_03/2011_10_03_drive_0027_sync 0000002906 l
+2011_10_03/2011_10_03_drive_0027_sync 0000002544 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000362 l
+2011_10_03/2011_10_03_drive_0027_sync 0000004535 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000734 l
+2011_10_03/2011_10_03_drive_0027_sync 0000001096 l
+2011_10_03/2011_10_03_drive_0027_sync 0000004173 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000543 l
+2011_10_03/2011_10_03_drive_0027_sync 0000001277 l
+2011_10_03/2011_10_03_drive_0027_sync 0000004354 l
+2011_10_03/2011_10_03_drive_0027_sync 0000001458 l
+2011_10_03/2011_10_03_drive_0027_sync 0000001820 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003449 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003268 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000915 l
+2011_10_03/2011_10_03_drive_0027_sync 0000002363 l
+2011_10_03/2011_10_03_drive_0027_sync 0000002725 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000181 l
+2011_10_03/2011_10_03_drive_0027_sync 0000001639 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003992 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003087 l
+2011_10_03/2011_10_03_drive_0027_sync 0000002001 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003811 l
+2011_10_03/2011_10_03_drive_0027_sync 0000003630 l
+2011_10_03/2011_10_03_drive_0027_sync 0000000000 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000096 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000800 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000320 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000576 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000000 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000480 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000640 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000032 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000384 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000160 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000704 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000736 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000672 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000064 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000288 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000352 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000512 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000544 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000608 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000128 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000224 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000416 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000192 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000448 l
+2011_10_03/2011_10_03_drive_0047_sync 0000000768 l
\ No newline at end of file
diff --git a/finetune/Metric3D/training/kitti_json_files/eigen_train.json b/finetune/Metric3D/training/kitti_json_files/eigen_train.json
new file mode 100644
index 0000000000000000000000000000000000000000..440bd6662824c815b6162cd2b0f13f405798faec
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/eigen_train.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdcea908b033b307c33392ce158c604a0738078c9c887580c52a2699c2aa2b15
+size 12796181
diff --git a/finetune/Metric3D/training/kitti_json_files/eigen_train.txt b/finetune/Metric3D/training/kitti_json_files/eigen_train.txt
new file mode 100644
index 0000000000000000000000000000000000000000..29436090331412175bd89c309782768dc14ef564
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/eigen_train.txt
@@ -0,0 +1,45200 @@
+2011_10_03/2011_10_03_drive_0034_sync 1757 r
+2011_09_26/2011_09_26_drive_0061_sync 635 r
+2011_09_30/2011_09_30_drive_0020_sync 1092 l
+2011_09_30/2011_09_30_drive_0028_sync 3357 r
+2011_09_26/2011_09_26_drive_0070_sync 366 r
+2011_09_26/2011_09_26_drive_0017_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 2639 r
+2011_10_03/2011_10_03_drive_0034_sync 557 r
+2011_10_03/2011_10_03_drive_0034_sync 4194 r
+2011_09_29/2011_09_29_drive_0026_sync 111 r
+2011_09_30/2011_09_30_drive_0028_sync 4064 l
+2011_10_03/2011_10_03_drive_0042_sync 142 l
+2011_10_03/2011_10_03_drive_0042_sync 166 r
+2011_09_30/2011_09_30_drive_0028_sync 2018 r
+2011_09_26/2011_09_26_drive_0104_sync 273 r
+2011_09_26/2011_09_26_drive_0015_sync 210 r
+2011_09_26/2011_09_26_drive_0057_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 2218 r
+2011_09_30/2011_09_30_drive_0028_sync 2324 l
+2011_10_03/2011_10_03_drive_0042_sync 763 r
+2011_10_03/2011_10_03_drive_0034_sync 2961 r
+2011_09_30/2011_09_30_drive_0028_sync 4746 l
+2011_10_03/2011_10_03_drive_0034_sync 4211 r
+2011_09_30/2011_09_30_drive_0033_sync 552 l
+2011_09_26/2011_09_26_drive_0057_sync 337 r
+2011_09_26/2011_09_26_drive_0061_sync 461 r
+2011_10_03/2011_10_03_drive_0034_sync 4054 r
+2011_09_30/2011_09_30_drive_0028_sync 2489 l
+2011_09_30/2011_09_30_drive_0028_sync 2586 l
+2011_09_30/2011_09_30_drive_0028_sync 3893 l
+2011_09_30/2011_09_30_drive_0028_sync 1067 r
+2011_09_26/2011_09_26_drive_0061_sync 264 l
+2011_09_26/2011_09_26_drive_0032_sync 383 r
+2011_10_03/2011_10_03_drive_0034_sync 4426 l
+2011_10_03/2011_10_03_drive_0034_sync 1035 l
+2011_09_30/2011_09_30_drive_0033_sync 698 r
+2011_09_26/2011_09_26_drive_0104_sync 229 r
+2011_10_03/2011_10_03_drive_0042_sync 948 r
+2011_09_30/2011_09_30_drive_0028_sync 1609 l
+2011_09_26/2011_09_26_drive_0087_sync 51 l
+2011_10_03/2011_10_03_drive_0034_sync 2129 r
+2011_10_03/2011_10_03_drive_0034_sync 2731 r
+2011_09_26/2011_09_26_drive_0028_sync 405 l
+2011_09_26/2011_09_26_drive_0070_sync 137 r
+2011_09_26/2011_09_26_drive_0087_sync 517 r
+2011_09_30/2011_09_30_drive_0020_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 2528 r
+2011_10_03/2011_10_03_drive_0034_sync 4351 r
+2011_09_30/2011_09_30_drive_0028_sync 2102 l
+2011_09_26/2011_09_26_drive_0051_sync 185 l
+2011_09_30/2011_09_30_drive_0028_sync 3297 l
+2011_09_30/2011_09_30_drive_0034_sync 822 l
+2011_10_03/2011_10_03_drive_0034_sync 2316 l
+2011_09_30/2011_09_30_drive_0028_sync 396 l
+2011_09_30/2011_09_30_drive_0028_sync 4781 r
+2011_10_03/2011_10_03_drive_0034_sync 2374 r
+2011_10_03/2011_10_03_drive_0034_sync 1596 r
+2011_09_26/2011_09_26_drive_0014_sync 296 r
+2011_09_26/2011_09_26_drive_0017_sync 15 r
+2011_09_26/2011_09_26_drive_0014_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 908 r
+2011_09_30/2011_09_30_drive_0033_sync 950 l
+2011_09_30/2011_09_30_drive_0028_sync 2908 r
+2011_09_26/2011_09_26_drive_0022_sync 351 r
+2011_09_30/2011_09_30_drive_0028_sync 4612 r
+2011_09_26/2011_09_26_drive_0051_sync 356 l
+2011_10_03/2011_10_03_drive_0034_sync 2183 l
+2011_09_26/2011_09_26_drive_0061_sync 291 l
+2011_09_26/2011_09_26_drive_0095_sync 265 r
+2011_09_26/2011_09_26_drive_0032_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 2386 l
+2011_09_26/2011_09_26_drive_0070_sync 310 l
+2011_10_03/2011_10_03_drive_0034_sync 615 r
+2011_09_30/2011_09_30_drive_0028_sync 2577 r
+2011_10_03/2011_10_03_drive_0034_sync 4021 l
+2011_09_30/2011_09_30_drive_0028_sync 4525 r
+2011_09_26/2011_09_26_drive_0018_sync 123 r
+2011_10_03/2011_10_03_drive_0042_sync 38 l
+2011_10_03/2011_10_03_drive_0034_sync 682 r
+2011_10_03/2011_10_03_drive_0034_sync 3803 r
+2011_09_26/2011_09_26_drive_0035_sync 130 r
+2011_09_26/2011_09_26_drive_0022_sync 219 l
+2011_09_30/2011_09_30_drive_0034_sync 709 l
+2011_09_26/2011_09_26_drive_0057_sync 325 l
+2011_09_30/2011_09_30_drive_0028_sync 2512 r
+2011_09_30/2011_09_30_drive_0028_sync 2248 l
+2011_09_30/2011_09_30_drive_0028_sync 4917 l
+2011_09_30/2011_09_30_drive_0028_sync 643 l
+2011_09_26/2011_09_26_drive_0032_sync 102 r
+2011_09_26/2011_09_26_drive_0087_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 2713 r
+2011_10_03/2011_10_03_drive_0034_sync 610 r
+2011_10_03/2011_10_03_drive_0034_sync 1398 l
+2011_09_26/2011_09_26_drive_0011_sync 62 l
+2011_09_26/2011_09_26_drive_0014_sync 3 r
+2011_09_26/2011_09_26_drive_0028_sync 203 r
+2011_09_26/2011_09_26_drive_0087_sync 196 l
+2011_09_26/2011_09_26_drive_0095_sync 196 r
+2011_09_26/2011_09_26_drive_0015_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 535 l
+2011_09_30/2011_09_30_drive_0028_sync 278 r
+2011_09_26/2011_09_26_drive_0057_sync 311 l
+2011_09_26/2011_09_26_drive_0011_sync 17 r
+2011_09_26/2011_09_26_drive_0015_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 4238 l
+2011_10_03/2011_10_03_drive_0042_sync 202 r
+2011_10_03/2011_10_03_drive_0034_sync 1482 l
+2011_09_30/2011_09_30_drive_0028_sync 3481 r
+2011_09_30/2011_09_30_drive_0028_sync 1361 l
+2011_09_26/2011_09_26_drive_0018_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 788 l
+2011_09_26/2011_09_26_drive_0079_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 3353 l
+2011_09_30/2011_09_30_drive_0028_sync 64 l
+2011_09_30/2011_09_30_drive_0034_sync 930 l
+2011_10_03/2011_10_03_drive_0034_sync 2106 l
+2011_09_30/2011_09_30_drive_0028_sync 1213 l
+2011_10_03/2011_10_03_drive_0034_sync 4089 r
+2011_09_30/2011_09_30_drive_0033_sync 1471 l
+2011_09_30/2011_09_30_drive_0020_sync 578 l
+2011_09_26/2011_09_26_drive_0057_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 3520 l
+2011_10_03/2011_10_03_drive_0034_sync 2584 r
+2011_10_03/2011_10_03_drive_0042_sync 337 l
+2011_09_30/2011_09_30_drive_0028_sync 4092 l
+2011_09_26/2011_09_26_drive_0011_sync 8 r
+2011_09_30/2011_09_30_drive_0020_sync 451 l
+2011_10_03/2011_10_03_drive_0034_sync 2266 r
+2011_09_30/2011_09_30_drive_0028_sync 3545 r
+2011_10_03/2011_10_03_drive_0034_sync 1858 r
+2011_09_30/2011_09_30_drive_0028_sync 5031 l
+2011_09_26/2011_09_26_drive_0005_sync 14 r
+2011_09_26/2011_09_26_drive_0028_sync 369 l
+2011_10_03/2011_10_03_drive_0042_sync 752 r
+2011_09_26/2011_09_26_drive_0095_sync 225 r
+2011_09_26/2011_09_26_drive_0104_sync 301 l
+2011_09_30/2011_09_30_drive_0033_sync 92 l
+2011_09_26/2011_09_26_drive_0061_sync 463 l
+2011_10_03/2011_10_03_drive_0034_sync 3164 l
+2011_09_30/2011_09_30_drive_0028_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 530 l
+2011_09_30/2011_09_30_drive_0033_sync 946 r
+2011_09_26/2011_09_26_drive_0018_sync 162 r
+2011_09_26/2011_09_26_drive_0057_sync 45 l
+2011_09_26/2011_09_26_drive_0017_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 5006 l
+2011_09_30/2011_09_30_drive_0028_sync 5035 l
+2011_09_26/2011_09_26_drive_0070_sync 384 r
+2011_10_03/2011_10_03_drive_0034_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 23 l
+2011_09_26/2011_09_26_drive_0095_sync 230 l
+2011_09_30/2011_09_30_drive_0033_sync 444 l
+2011_09_26/2011_09_26_drive_0019_sync 365 l
+2011_09_30/2011_09_30_drive_0028_sync 2508 r
+2011_09_30/2011_09_30_drive_0028_sync 3896 r
+2011_09_26/2011_09_26_drive_0061_sync 103 l
+2011_09_30/2011_09_30_drive_0028_sync 3667 r
+2011_09_26/2011_09_26_drive_0032_sync 196 r
+2011_09_26/2011_09_26_drive_0032_sync 23 l
+2011_09_26/2011_09_26_drive_0019_sync 392 r
+2011_09_26/2011_09_26_drive_0032_sync 265 r
+2011_09_26/2011_09_26_drive_0028_sync 269 r
+2011_09_26/2011_09_26_drive_0028_sync 344 r
+2011_10_03/2011_10_03_drive_0034_sync 3228 r
+2011_09_30/2011_09_30_drive_0028_sync 928 r
+2011_09_30/2011_09_30_drive_0028_sync 2153 l
+2011_10_03/2011_10_03_drive_0034_sync 3142 l
+2011_10_03/2011_10_03_drive_0034_sync 4319 l
+2011_09_29/2011_09_29_drive_0026_sync 83 r
+2011_09_26/2011_09_26_drive_0091_sync 106 l
+2011_09_26/2011_09_26_drive_0017_sync 10 l
+2011_09_26/2011_09_26_drive_0018_sync 196 l
+2011_09_26/2011_09_26_drive_0035_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 2178 l
+2011_09_30/2011_09_30_drive_0028_sync 4171 l
+2011_09_30/2011_09_30_drive_0028_sync 381 r
+2011_09_30/2011_09_30_drive_0028_sync 615 l
+2011_10_03/2011_10_03_drive_0034_sync 1763 l
+2011_10_03/2011_10_03_drive_0034_sync 860 r
+2011_09_26/2011_09_26_drive_0091_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 1973 r
+2011_09_30/2011_09_30_drive_0028_sync 611 l
+2011_09_30/2011_09_30_drive_0034_sync 817 l
+2011_10_03/2011_10_03_drive_0034_sync 4524 l
+2011_09_30/2011_09_30_drive_0033_sync 1566 r
+2011_09_26/2011_09_26_drive_0087_sync 435 l
+2011_09_30/2011_09_30_drive_0028_sync 2485 l
+2011_10_03/2011_10_03_drive_0042_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 3066 r
+2011_09_30/2011_09_30_drive_0033_sync 984 l
+2011_09_30/2011_09_30_drive_0028_sync 1175 l
+2011_09_30/2011_09_30_drive_0028_sync 3184 r
+2011_10_03/2011_10_03_drive_0034_sync 3856 l
+2011_09_26/2011_09_26_drive_0022_sync 512 l
+2011_10_03/2011_10_03_drive_0042_sync 584 l
+2011_09_30/2011_09_30_drive_0028_sync 899 r
+2011_09_30/2011_09_30_drive_0020_sync 604 r
+2011_09_29/2011_09_29_drive_0004_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 1549 l
+2011_10_03/2011_10_03_drive_0042_sync 675 l
+2011_09_30/2011_09_30_drive_0028_sync 3326 r
+2011_10_03/2011_10_03_drive_0042_sync 266 r
+2011_10_03/2011_10_03_drive_0042_sync 278 r
+2011_10_03/2011_10_03_drive_0034_sync 4534 r
+2011_10_03/2011_10_03_drive_0034_sync 2711 r
+2011_10_03/2011_10_03_drive_0034_sync 3451 l
+2011_09_29/2011_09_29_drive_0026_sync 138 r
+2011_09_30/2011_09_30_drive_0028_sync 4136 l
+2011_09_30/2011_09_30_drive_0028_sync 4465 l
+2011_10_03/2011_10_03_drive_0034_sync 882 r
+2011_09_30/2011_09_30_drive_0034_sync 242 l
+2011_09_26/2011_09_26_drive_0070_sync 305 r
+2011_09_26/2011_09_26_drive_0018_sync 225 l
+2011_09_26/2011_09_26_drive_0104_sync 113 r
+2011_09_30/2011_09_30_drive_0033_sync 52 r
+2011_09_26/2011_09_26_drive_0019_sync 325 r
+2011_09_26/2011_09_26_drive_0022_sync 418 l
+2011_09_30/2011_09_30_drive_0028_sync 2993 r
+2011_09_26/2011_09_26_drive_0032_sync 236 l
+2011_09_30/2011_09_30_drive_0028_sync 3689 l
+2011_09_26/2011_09_26_drive_0022_sync 47 r
+2011_10_03/2011_10_03_drive_0034_sync 3419 r
+2011_09_26/2011_09_26_drive_0104_sync 111 r
+2011_09_26/2011_09_26_drive_0028_sync 243 r
+2011_09_26/2011_09_26_drive_0015_sync 106 r
+2011_09_26/2011_09_26_drive_0070_sync 118 r
+2011_09_26/2011_09_26_drive_0087_sync 560 l
+2011_09_30/2011_09_30_drive_0028_sync 561 l
+2011_09_30/2011_09_30_drive_0028_sync 1916 r
+2011_10_03/2011_10_03_drive_0034_sync 3013 l
+2011_09_29/2011_09_29_drive_0004_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 3896 l
+2011_09_30/2011_09_30_drive_0028_sync 1501 l
+2011_09_30/2011_09_30_drive_0034_sync 47 r
+2011_09_26/2011_09_26_drive_0051_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 3798 l
+2011_10_03/2011_10_03_drive_0034_sync 4218 r
+2011_09_30/2011_09_30_drive_0033_sync 1359 l
+2011_09_30/2011_09_30_drive_0028_sync 5030 l
+2011_09_26/2011_09_26_drive_0019_sync 221 l
+2011_09_29/2011_09_29_drive_0026_sync 48 l
+2011_09_29/2011_09_29_drive_0004_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 1551 l
+2011_09_29/2011_09_29_drive_0026_sync 131 l
+2011_09_30/2011_09_30_drive_0034_sync 1214 l
+2011_09_30/2011_09_30_drive_0034_sync 1170 l
+2011_09_26/2011_09_26_drive_0070_sync 171 l
+2011_09_30/2011_09_30_drive_0028_sync 2544 l
+2011_09_30/2011_09_30_drive_0028_sync 3378 r
+2011_09_29/2011_09_29_drive_0004_sync 201 r
+2011_09_30/2011_09_30_drive_0033_sync 1462 l
+2011_09_30/2011_09_30_drive_0020_sync 180 l
+2011_09_26/2011_09_26_drive_0061_sync 399 l
+2011_09_26/2011_09_26_drive_0022_sync 520 r
+2011_09_30/2011_09_30_drive_0034_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 2552 l
+2011_10_03/2011_10_03_drive_0034_sync 1043 r
+2011_09_26/2011_09_26_drive_0087_sync 697 r
+2011_09_26/2011_09_26_drive_0032_sync 40 r
+2011_09_26/2011_09_26_drive_0011_sync 199 l
+2011_10_03/2011_10_03_drive_0034_sync 1576 l
+2011_09_30/2011_09_30_drive_0028_sync 763 r
+2011_09_26/2011_09_26_drive_0018_sync 83 r
+2011_09_30/2011_09_30_drive_0034_sync 370 r
+2011_10_03/2011_10_03_drive_0042_sync 735 r
+2011_09_26/2011_09_26_drive_0057_sync 313 r
+2011_10_03/2011_10_03_drive_0034_sync 3979 r
+2011_09_30/2011_09_30_drive_0028_sync 2924 l
+2011_09_26/2011_09_26_drive_0079_sync 29 r
+2011_10_03/2011_10_03_drive_0034_sync 701 l
+2011_09_26/2011_09_26_drive_0019_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 4817 r
+2011_09_30/2011_09_30_drive_0020_sync 883 l
+2011_09_30/2011_09_30_drive_0034_sync 655 l
+2011_09_26/2011_09_26_drive_0022_sync 449 r
+2011_09_28/2011_09_28_drive_0001_sync 12 l
+2011_09_26/2011_09_26_drive_0022_sync 468 l
+2011_09_26/2011_09_26_drive_0061_sync 261 r
+2011_09_30/2011_09_30_drive_0020_sync 655 l
+2011_09_26/2011_09_26_drive_0039_sync 89 r
+2011_09_26/2011_09_26_drive_0011_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 2255 r
+2011_09_30/2011_09_30_drive_0028_sync 4993 r
+2011_09_30/2011_09_30_drive_0020_sync 606 l
+2011_09_30/2011_09_30_drive_0028_sync 2503 l
+2011_10_03/2011_10_03_drive_0034_sync 4269 r
+2011_10_03/2011_10_03_drive_0034_sync 513 l
+2011_09_26/2011_09_26_drive_0018_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 4410 r
+2011_09_26/2011_09_26_drive_0061_sync 351 r
+2011_09_30/2011_09_30_drive_0034_sync 507 l
+2011_10_03/2011_10_03_drive_0034_sync 4120 r
+2011_09_26/2011_09_26_drive_0019_sync 168 r
+2011_09_26/2011_09_26_drive_0022_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 1387 r
+2011_10_03/2011_10_03_drive_0042_sync 632 l
+2011_09_30/2011_09_30_drive_0028_sync 1744 l
+2011_09_26/2011_09_26_drive_0061_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 2749 l
+2011_09_26/2011_09_26_drive_0057_sync 133 r
+2011_09_26/2011_09_26_drive_0019_sync 106 r
+2011_09_26/2011_09_26_drive_0022_sync 155 r
+2011_10_03/2011_10_03_drive_0034_sync 125 r
+2011_09_30/2011_09_30_drive_0020_sync 506 l
+2011_10_03/2011_10_03_drive_0034_sync 2064 r
+2011_09_26/2011_09_26_drive_0087_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 4533 r
+2011_09_26/2011_09_26_drive_0091_sync 217 l
+2011_09_30/2011_09_30_drive_0028_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 1527 l
+2011_09_30/2011_09_30_drive_0028_sync 3162 l
+2011_10_03/2011_10_03_drive_0034_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 60 l
+2011_09_30/2011_09_30_drive_0028_sync 589 l
+2011_10_03/2011_10_03_drive_0034_sync 1552 r
+2011_10_03/2011_10_03_drive_0034_sync 3197 r
+2011_09_30/2011_09_30_drive_0028_sync 3351 r
+2011_09_26/2011_09_26_drive_0014_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 1113 l
+2011_09_30/2011_09_30_drive_0033_sync 1302 l
+2011_09_26/2011_09_26_drive_0087_sync 624 r
+2011_09_30/2011_09_30_drive_0034_sync 681 l
+2011_09_30/2011_09_30_drive_0020_sync 494 l
+2011_09_30/2011_09_30_drive_0028_sync 1218 r
+2011_10_03/2011_10_03_drive_0034_sync 1770 l
+2011_10_03/2011_10_03_drive_0034_sync 373 l
+2011_09_26/2011_09_26_drive_0051_sync 279 l
+2011_09_26/2011_09_26_drive_0095_sync 8 r
+2011_09_26/2011_09_26_drive_0087_sync 46 l
+2011_09_26/2011_09_26_drive_0095_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 2296 l
+2011_09_26/2011_09_26_drive_0017_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 469 l
+2011_10_03/2011_10_03_drive_0034_sync 2153 l
+2011_10_03/2011_10_03_drive_0034_sync 2288 r
+2011_09_30/2011_09_30_drive_0033_sync 748 l
+2011_09_30/2011_09_30_drive_0028_sync 3529 r
+2011_09_26/2011_09_26_drive_0022_sync 257 r
+2011_09_30/2011_09_30_drive_0034_sync 488 l
+2011_09_30/2011_09_30_drive_0033_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 3420 r
+2011_09_30/2011_09_30_drive_0028_sync 3138 r
+2011_09_26/2011_09_26_drive_0015_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 3255 l
+2011_09_26/2011_09_26_drive_0018_sync 92 l
+2011_09_26/2011_09_26_drive_0022_sync 58 l
+2011_09_26/2011_09_26_drive_0057_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 2793 r
+2011_09_30/2011_09_30_drive_0020_sync 973 r
+2011_09_30/2011_09_30_drive_0028_sync 1381 r
+2011_10_03/2011_10_03_drive_0034_sync 622 l
+2011_09_26/2011_09_26_drive_0018_sync 151 l
+2011_09_26/2011_09_26_drive_0028_sync 103 r
+2011_09_30/2011_09_30_drive_0028_sync 12 l
+2011_10_03/2011_10_03_drive_0034_sync 930 r
+2011_09_30/2011_09_30_drive_0028_sync 1962 r
+2011_09_26/2011_09_26_drive_0032_sync 23 r
+2011_09_26/2011_09_26_drive_0014_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 2715 r
+2011_09_30/2011_09_30_drive_0028_sync 3362 r
+2011_09_30/2011_09_30_drive_0028_sync 494 l
+2011_10_03/2011_10_03_drive_0034_sync 1762 l
+2011_10_03/2011_10_03_drive_0034_sync 850 l
+2011_09_26/2011_09_26_drive_0061_sync 411 r
+2011_10_03/2011_10_03_drive_0042_sync 80 r
+2011_09_26/2011_09_26_drive_0091_sync 333 r
+2011_09_30/2011_09_30_drive_0028_sync 2928 r
+2011_09_26/2011_09_26_drive_0070_sync 310 r
+2011_09_26/2011_09_26_drive_0011_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 375 r
+2011_09_29/2011_09_29_drive_0004_sync 60 l
+2011_09_26/2011_09_26_drive_0070_sync 43 l
+2011_09_26/2011_09_26_drive_0057_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 679 r
+2011_10_03/2011_10_03_drive_0034_sync 657 l
+2011_09_30/2011_09_30_drive_0020_sync 520 r
+2011_09_26/2011_09_26_drive_0070_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 2607 r
+2011_10_03/2011_10_03_drive_0034_sync 671 l
+2011_09_26/2011_09_26_drive_0061_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 2114 r
+2011_09_26/2011_09_26_drive_0087_sync 703 r
+2011_09_30/2011_09_30_drive_0034_sync 704 r
+2011_09_26/2011_09_26_drive_0061_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 3061 l
+2011_09_30/2011_09_30_drive_0028_sync 2094 l
+2011_09_30/2011_09_30_drive_0033_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 3544 r
+2011_09_30/2011_09_30_drive_0028_sync 4227 l
+2011_10_03/2011_10_03_drive_0034_sync 3159 l
+2011_10_03/2011_10_03_drive_0042_sync 828 r
+2011_09_26/2011_09_26_drive_0061_sync 199 l
+2011_09_26/2011_09_26_drive_0032_sync 342 r
+2011_09_30/2011_09_30_drive_0028_sync 3717 r
+2011_10_03/2011_10_03_drive_0034_sync 2239 r
+2011_09_26/2011_09_26_drive_0039_sync 12 l
+2011_09_26/2011_09_26_drive_0095_sync 51 r
+2011_09_30/2011_09_30_drive_0033_sync 1485 r
+2011_10_03/2011_10_03_drive_0034_sync 1061 l
+2011_09_30/2011_09_30_drive_0028_sync 3462 l
+2011_10_03/2011_10_03_drive_0034_sync 885 l
+2011_09_30/2011_09_30_drive_0033_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 3522 l
+2011_10_03/2011_10_03_drive_0034_sync 454 r
+2011_09_26/2011_09_26_drive_0028_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 1139 l
+2011_09_30/2011_09_30_drive_0028_sync 466 r
+2011_10_03/2011_10_03_drive_0034_sync 1480 r
+2011_09_30/2011_09_30_drive_0034_sync 291 l
+2011_09_30/2011_09_30_drive_0034_sync 897 r
+2011_09_26/2011_09_26_drive_0039_sync 239 l
+2011_10_03/2011_10_03_drive_0042_sync 936 r
+2011_09_26/2011_09_26_drive_0057_sync 61 r
+2011_09_26/2011_09_26_drive_0019_sync 461 r
+2011_09_26/2011_09_26_drive_0087_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 1087 l
+2011_09_30/2011_09_30_drive_0028_sync 4667 r
+2011_09_26/2011_09_26_drive_0014_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 4252 r
+2011_09_30/2011_09_30_drive_0028_sync 2529 l
+2011_09_26/2011_09_26_drive_0087_sync 114 l
+2011_09_26/2011_09_26_drive_0039_sync 216 l
+2011_10_03/2011_10_03_drive_0042_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 1659 r
+2011_09_26/2011_09_26_drive_0014_sync 214 r
+2011_09_30/2011_09_30_drive_0020_sync 323 l
+2011_09_26/2011_09_26_drive_0087_sync 470 l
+2011_09_26/2011_09_26_drive_0039_sync 2 l
+2011_09_26/2011_09_26_drive_0015_sync 216 r
+2011_09_26/2011_09_26_drive_0051_sync 389 l
+2011_09_26/2011_09_26_drive_0019_sync 299 r
+2011_09_26/2011_09_26_drive_0087_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1147 r
+2011_09_30/2011_09_30_drive_0028_sync 769 r
+2011_09_26/2011_09_26_drive_0019_sync 281 l
+2011_09_30/2011_09_30_drive_0028_sync 1629 l
+2011_09_26/2011_09_26_drive_0022_sync 597 l
+2011_09_26/2011_09_26_drive_0019_sync 480 r
+2011_09_26/2011_09_26_drive_0019_sync 54 l
+2011_09_26/2011_09_26_drive_0032_sync 233 r
+2011_09_30/2011_09_30_drive_0034_sync 860 l
+2011_09_30/2011_09_30_drive_0028_sync 2783 l
+2011_09_26/2011_09_26_drive_0087_sync 399 r
+2011_10_03/2011_10_03_drive_0042_sync 1123 l
+2011_09_30/2011_09_30_drive_0028_sync 4662 l
+2011_10_03/2011_10_03_drive_0034_sync 1040 r
+2011_09_30/2011_09_30_drive_0020_sync 533 l
+2011_10_03/2011_10_03_drive_0042_sync 895 r
+2011_09_30/2011_09_30_drive_0033_sync 557 l
+2011_09_30/2011_09_30_drive_0033_sync 1562 r
+2011_09_26/2011_09_26_drive_0061_sync 576 r
+2011_10_03/2011_10_03_drive_0034_sync 1444 l
+2011_10_03/2011_10_03_drive_0034_sync 2054 l
+2011_09_30/2011_09_30_drive_0033_sync 220 r
+2011_09_30/2011_09_30_drive_0034_sync 402 l
+2011_10_03/2011_10_03_drive_0034_sync 1525 r
+2011_09_26/2011_09_26_drive_0061_sync 76 l
+2011_09_29/2011_09_29_drive_0026_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 3131 l
+2011_09_30/2011_09_30_drive_0028_sync 3779 r
+2011_09_30/2011_09_30_drive_0034_sync 1132 l
+2011_09_26/2011_09_26_drive_0061_sync 665 r
+2011_09_26/2011_09_26_drive_0061_sync 509 l
+2011_09_26/2011_09_26_drive_0070_sync 183 r
+2011_09_26/2011_09_26_drive_0022_sync 609 r
+2011_09_26/2011_09_26_drive_0022_sync 600 l
+2011_09_30/2011_09_30_drive_0034_sync 1195 r
+2011_09_28/2011_09_28_drive_0001_sync 103 l
+2011_09_29/2011_09_29_drive_0004_sync 199 l
+2011_09_26/2011_09_26_drive_0095_sync 202 r
+2011_10_03/2011_10_03_drive_0042_sync 1072 l
+2011_09_26/2011_09_26_drive_0022_sync 544 r
+2011_09_30/2011_09_30_drive_0034_sync 551 r
+2011_09_26/2011_09_26_drive_0051_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 2539 r
+2011_09_30/2011_09_30_drive_0028_sync 1275 l
+2011_09_26/2011_09_26_drive_0104_sync 7 l
+2011_09_26/2011_09_26_drive_0022_sync 260 l
+2011_10_03/2011_10_03_drive_0034_sync 913 l
+2011_10_03/2011_10_03_drive_0034_sync 3535 l
+2011_09_30/2011_09_30_drive_0028_sync 845 l
+2011_09_26/2011_09_26_drive_0011_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 2319 r
+2011_09_26/2011_09_26_drive_0035_sync 94 r
+2011_09_30/2011_09_30_drive_0034_sync 552 l
+2011_09_26/2011_09_26_drive_0011_sync 187 l
+2011_09_26/2011_09_26_drive_0022_sync 281 r
+2011_09_30/2011_09_30_drive_0034_sync 328 r
+2011_10_03/2011_10_03_drive_0034_sync 2519 r
+2011_09_26/2011_09_26_drive_0005_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 3111 l
+2011_10_03/2011_10_03_drive_0042_sync 829 r
+2011_09_30/2011_09_30_drive_0033_sync 817 l
+2011_09_30/2011_09_30_drive_0028_sync 3768 l
+2011_10_03/2011_10_03_drive_0034_sync 1694 r
+2011_09_26/2011_09_26_drive_0039_sync 33 l
+2011_09_26/2011_09_26_drive_0022_sync 563 l
+2011_10_03/2011_10_03_drive_0034_sync 4538 l
+2011_09_26/2011_09_26_drive_0070_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 2732 r
+2011_09_26/2011_09_26_drive_0022_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 4474 l
+2011_09_26/2011_09_26_drive_0015_sync 283 r
+2011_10_03/2011_10_03_drive_0034_sync 4030 l
+2011_09_26/2011_09_26_drive_0011_sync 133 r
+2011_10_03/2011_10_03_drive_0042_sync 376 l
+2011_09_26/2011_09_26_drive_0091_sync 303 r
+2011_09_30/2011_09_30_drive_0028_sync 2087 r
+2011_09_30/2011_09_30_drive_0028_sync 2204 r
+2011_10_03/2011_10_03_drive_0034_sync 2534 r
+2011_09_30/2011_09_30_drive_0028_sync 2493 r
+2011_10_03/2011_10_03_drive_0034_sync 1307 l
+2011_10_03/2011_10_03_drive_0034_sync 1545 r
+2011_09_26/2011_09_26_drive_0051_sync 241 r
+2011_09_26/2011_09_26_drive_0032_sync 185 l
+2011_09_30/2011_09_30_drive_0028_sync 4847 l
+2011_10_03/2011_10_03_drive_0042_sync 877 r
+2011_10_03/2011_10_03_drive_0034_sync 4101 r
+2011_09_26/2011_09_26_drive_0018_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 4491 l
+2011_09_30/2011_09_30_drive_0028_sync 2257 l
+2011_09_30/2011_09_30_drive_0020_sync 1060 l
+2011_09_30/2011_09_30_drive_0033_sync 1336 l
+2011_10_03/2011_10_03_drive_0042_sync 1090 r
+2011_09_30/2011_09_30_drive_0028_sync 3623 l
+2011_10_03/2011_10_03_drive_0034_sync 4066 r
+2011_09_30/2011_09_30_drive_0033_sync 1259 r
+2011_09_30/2011_09_30_drive_0028_sync 1911 r
+2011_09_30/2011_09_30_drive_0020_sync 1080 r
+2011_09_30/2011_09_30_drive_0020_sync 966 r
+2011_09_26/2011_09_26_drive_0014_sync 137 l
+2011_09_30/2011_09_30_drive_0020_sync 206 r
+2011_09_30/2011_09_30_drive_0033_sync 716 l
+2011_09_26/2011_09_26_drive_0061_sync 254 l
+2011_10_03/2011_10_03_drive_0042_sync 1043 l
+2011_10_03/2011_10_03_drive_0042_sync 1125 r
+2011_09_30/2011_09_30_drive_0020_sync 335 l
+2011_09_30/2011_09_30_drive_0034_sync 885 r
+2011_10_03/2011_10_03_drive_0034_sync 3596 r
+2011_09_30/2011_09_30_drive_0028_sync 2429 r
+2011_09_30/2011_09_30_drive_0033_sync 83 l
+2011_09_26/2011_09_26_drive_0019_sync 121 l
+2011_09_30/2011_09_30_drive_0033_sync 1008 r
+2011_10_03/2011_10_03_drive_0034_sync 156 r
+2011_10_03/2011_10_03_drive_0042_sync 1054 l
+2011_09_26/2011_09_26_drive_0022_sync 434 r
+2011_10_03/2011_10_03_drive_0042_sync 645 r
+2011_09_30/2011_09_30_drive_0034_sync 449 r
+2011_10_03/2011_10_03_drive_0034_sync 1555 l
+2011_09_26/2011_09_26_drive_0019_sync 148 r
+2011_10_03/2011_10_03_drive_0042_sync 1050 l
+2011_09_30/2011_09_30_drive_0028_sync 646 l
+2011_09_26/2011_09_26_drive_0104_sync 159 r
+2011_09_30/2011_09_30_drive_0028_sync 1551 l
+2011_09_30/2011_09_30_drive_0020_sync 47 r
+2011_09_26/2011_09_26_drive_0051_sync 331 r
+2011_09_26/2011_09_26_drive_0070_sync 66 r
+2011_09_26/2011_09_26_drive_0070_sync 138 l
+2011_09_30/2011_09_30_drive_0033_sync 838 l
+2011_09_30/2011_09_30_drive_0034_sync 843 l
+2011_09_30/2011_09_30_drive_0028_sync 3504 l
+2011_10_03/2011_10_03_drive_0034_sync 3969 r
+2011_09_26/2011_09_26_drive_0087_sync 668 r
+2011_09_26/2011_09_26_drive_0022_sync 229 l
+2011_09_26/2011_09_26_drive_0015_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 2592 l
+2011_09_26/2011_09_26_drive_0070_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 3255 r
+2011_09_26/2011_09_26_drive_0087_sync 620 l
+2011_09_30/2011_09_30_drive_0028_sync 170 l
+2011_10_03/2011_10_03_drive_0042_sync 766 r
+2011_09_26/2011_09_26_drive_0079_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 558 l
+2011_09_30/2011_09_30_drive_0028_sync 3619 r
+2011_10_03/2011_10_03_drive_0034_sync 4389 l
+2011_09_26/2011_09_26_drive_0087_sync 84 r
+2011_09_30/2011_09_30_drive_0033_sync 497 l
+2011_09_30/2011_09_30_drive_0028_sync 1139 l
+2011_09_30/2011_09_30_drive_0033_sync 663 r
+2011_09_30/2011_09_30_drive_0034_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 1802 l
+2011_09_26/2011_09_26_drive_0019_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 1751 l
+2011_09_26/2011_09_26_drive_0014_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 3539 l
+2011_09_30/2011_09_30_drive_0028_sync 2326 r
+2011_09_26/2011_09_26_drive_0061_sync 378 l
+2011_09_29/2011_09_29_drive_0004_sync 195 r
+2011_10_03/2011_10_03_drive_0042_sync 789 l
+2011_09_26/2011_09_26_drive_0015_sync 220 r
+2011_10_03/2011_10_03_drive_0042_sync 231 r
+2011_10_03/2011_10_03_drive_0034_sync 2441 l
+2011_09_26/2011_09_26_drive_0087_sync 454 l
+2011_09_30/2011_09_30_drive_0020_sync 110 l
+2011_10_03/2011_10_03_drive_0034_sync 1196 r
+2011_10_03/2011_10_03_drive_0034_sync 4291 r
+2011_10_03/2011_10_03_drive_0034_sync 1365 r
+2011_09_26/2011_09_26_drive_0032_sync 51 l
+2011_10_03/2011_10_03_drive_0034_sync 1046 r
+2011_09_26/2011_09_26_drive_0022_sync 692 r
+2011_09_30/2011_09_30_drive_0020_sync 710 l
+2011_09_30/2011_09_30_drive_0028_sync 3497 r
+2011_10_03/2011_10_03_drive_0034_sync 3294 r
+2011_09_30/2011_09_30_drive_0028_sync 2337 r
+2011_10_03/2011_10_03_drive_0034_sync 3523 l
+2011_09_26/2011_09_26_drive_0019_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 782 l
+2011_10_03/2011_10_03_drive_0034_sync 3805 l
+2011_09_30/2011_09_30_drive_0028_sync 4677 r
+2011_09_30/2011_09_30_drive_0028_sync 31 r
+2011_09_26/2011_09_26_drive_0015_sync 191 r
+2011_09_30/2011_09_30_drive_0034_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 809 l
+2011_09_30/2011_09_30_drive_0028_sync 51 l
+2011_09_30/2011_09_30_drive_0033_sync 1095 r
+2011_09_30/2011_09_30_drive_0028_sync 671 l
+2011_09_26/2011_09_26_drive_0022_sync 745 l
+2011_09_30/2011_09_30_drive_0033_sync 242 l
+2011_09_30/2011_09_30_drive_0033_sync 1473 r
+2011_10_03/2011_10_03_drive_0034_sync 1326 l
+2011_10_03/2011_10_03_drive_0034_sync 3726 r
+2011_09_30/2011_09_30_drive_0033_sync 592 l
+2011_09_30/2011_09_30_drive_0020_sync 434 l
+2011_09_30/2011_09_30_drive_0028_sync 5136 l
+2011_09_28/2011_09_28_drive_0001_sync 56 r
+2011_09_26/2011_09_26_drive_0095_sync 222 r
+2011_09_26/2011_09_26_drive_0091_sync 327 r
+2011_09_30/2011_09_30_drive_0028_sync 1543 r
+2011_09_26/2011_09_26_drive_0079_sync 37 r
+2011_09_26/2011_09_26_drive_0018_sync 233 r
+2011_09_26/2011_09_26_drive_0019_sync 101 r
+2011_10_03/2011_10_03_drive_0034_sync 3121 r
+2011_09_30/2011_09_30_drive_0028_sync 1454 r
+2011_09_26/2011_09_26_drive_0015_sync 259 r
+2011_09_26/2011_09_26_drive_0015_sync 54 r
+2011_09_30/2011_09_30_drive_0034_sync 160 l
+2011_09_30/2011_09_30_drive_0034_sync 857 r
+2011_09_30/2011_09_30_drive_0034_sync 500 l
+2011_09_26/2011_09_26_drive_0079_sync 3 l
+2011_09_26/2011_09_26_drive_0017_sync 70 l
+2011_09_30/2011_09_30_drive_0020_sync 43 r
+2011_09_26/2011_09_26_drive_0032_sync 339 l
+2011_09_28/2011_09_28_drive_0001_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 1136 r
+2011_09_30/2011_09_30_drive_0028_sync 2484 l
+2011_09_26/2011_09_26_drive_0087_sync 87 r
+2011_09_29/2011_09_29_drive_0004_sync 194 r
+2011_09_26/2011_09_26_drive_0087_sync 242 l
+2011_09_30/2011_09_30_drive_0033_sync 359 r
+2011_09_30/2011_09_30_drive_0028_sync 1461 l
+2011_09_30/2011_09_30_drive_0034_sync 734 l
+2011_09_30/2011_09_30_drive_0033_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 1285 r
+2011_09_26/2011_09_26_drive_0019_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 1719 l
+2011_09_26/2011_09_26_drive_0019_sync 31 l
+2011_09_26/2011_09_26_drive_0057_sync 67 l
+2011_09_26/2011_09_26_drive_0061_sync 505 l
+2011_09_26/2011_09_26_drive_0051_sync 33 r
+2011_09_26/2011_09_26_drive_0011_sync 82 r
+2011_09_26/2011_09_26_drive_0091_sync 79 r
+2011_09_26/2011_09_26_drive_0015_sync 81 l
+2011_09_30/2011_09_30_drive_0033_sync 1092 r
+2011_10_03/2011_10_03_drive_0034_sync 4409 l
+2011_09_30/2011_09_30_drive_0033_sync 697 r
+2011_09_30/2011_09_30_drive_0033_sync 563 r
+2011_09_26/2011_09_26_drive_0022_sync 415 r
+2011_09_30/2011_09_30_drive_0028_sync 1146 l
+2011_09_26/2011_09_26_drive_0079_sync 9 r
+2011_10_03/2011_10_03_drive_0042_sync 1018 l
+2011_09_26/2011_09_26_drive_0032_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 3349 l
+2011_09_26/2011_09_26_drive_0070_sync 380 l
+2011_09_26/2011_09_26_drive_0051_sync 348 l
+2011_09_26/2011_09_26_drive_0051_sync 337 r
+2011_09_26/2011_09_26_drive_0091_sync 260 l
+2011_09_26/2011_09_26_drive_0091_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 5026 l
+2011_09_30/2011_09_30_drive_0028_sync 1637 r
+2011_09_26/2011_09_26_drive_0087_sync 248 r
+2011_09_26/2011_09_26_drive_0061_sync 143 r
+2011_10_03/2011_10_03_drive_0034_sync 2568 l
+2011_09_26/2011_09_26_drive_0014_sync 226 r
+2011_09_30/2011_09_30_drive_0028_sync 385 l
+2011_09_30/2011_09_30_drive_0033_sync 684 l
+2011_09_26/2011_09_26_drive_0039_sync 292 l
+2011_10_03/2011_10_03_drive_0034_sync 4598 l
+2011_09_26/2011_09_26_drive_0051_sync 208 l
+2011_10_03/2011_10_03_drive_0034_sync 3571 r
+2011_10_03/2011_10_03_drive_0042_sync 671 l
+2011_09_30/2011_09_30_drive_0033_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 3075 l
+2011_10_03/2011_10_03_drive_0034_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 443 l
+2011_09_26/2011_09_26_drive_0015_sync 8 l
+2011_09_26/2011_09_26_drive_0028_sync 292 l
+2011_09_26/2011_09_26_drive_0022_sync 759 l
+2011_10_03/2011_10_03_drive_0042_sync 1113 l
+2011_09_30/2011_09_30_drive_0028_sync 4681 r
+2011_09_26/2011_09_26_drive_0061_sync 678 l
+2011_09_30/2011_09_30_drive_0028_sync 632 l
+2011_10_03/2011_10_03_drive_0042_sync 1088 r
+2011_09_30/2011_09_30_drive_0028_sync 4090 l
+2011_09_30/2011_09_30_drive_0033_sync 770 l
+2011_09_26/2011_09_26_drive_0018_sync 159 r
+2011_09_26/2011_09_26_drive_0019_sync 241 l
+2011_09_30/2011_09_30_drive_0034_sync 1090 l
+2011_10_03/2011_10_03_drive_0034_sync 753 l
+2011_10_03/2011_10_03_drive_0042_sync 544 l
+2011_09_26/2011_09_26_drive_0032_sync 76 r
+2011_09_30/2011_09_30_drive_0033_sync 1003 l
+2011_09_30/2011_09_30_drive_0034_sync 40 l
+2011_09_26/2011_09_26_drive_0028_sync 424 r
+2011_10_03/2011_10_03_drive_0034_sync 3383 r
+2011_09_26/2011_09_26_drive_0015_sync 90 r
+2011_09_30/2011_09_30_drive_0033_sync 426 l
+2011_09_26/2011_09_26_drive_0019_sync 171 l
+2011_09_30/2011_09_30_drive_0028_sync 5014 l
+2011_09_26/2011_09_26_drive_0087_sync 384 l
+2011_10_03/2011_10_03_drive_0042_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 3265 r
+2011_09_30/2011_09_30_drive_0020_sync 472 l
+2011_10_03/2011_10_03_drive_0034_sync 116 r
+2011_09_30/2011_09_30_drive_0028_sync 3129 l
+2011_09_30/2011_09_30_drive_0020_sync 626 l
+2011_10_03/2011_10_03_drive_0034_sync 1815 r
+2011_09_30/2011_09_30_drive_0028_sync 3939 l
+2011_09_30/2011_09_30_drive_0033_sync 552 r
+2011_09_26/2011_09_26_drive_0005_sync 141 l
+2011_09_26/2011_09_26_drive_0028_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 544 r
+2011_09_26/2011_09_26_drive_0019_sync 323 l
+2011_09_26/2011_09_26_drive_0028_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 1601 l
+2011_09_30/2011_09_30_drive_0028_sync 4939 r
+2011_09_30/2011_09_30_drive_0028_sync 651 l
+2011_09_30/2011_09_30_drive_0028_sync 2859 r
+2011_09_26/2011_09_26_drive_0028_sync 397 l
+2011_09_26/2011_09_26_drive_0095_sync 254 l
+2011_09_30/2011_09_30_drive_0034_sync 41 l
+2011_09_26/2011_09_26_drive_0028_sync 285 l
+2011_10_03/2011_10_03_drive_0034_sync 2444 l
+2011_10_03/2011_10_03_drive_0042_sync 576 r
+2011_09_30/2011_09_30_drive_0028_sync 4377 r
+2011_09_26/2011_09_26_drive_0061_sync 566 l
+2011_09_26/2011_09_26_drive_0057_sync 205 r
+2011_09_26/2011_09_26_drive_0070_sync 2 l
+2011_09_30/2011_09_30_drive_0020_sync 918 l
+2011_10_03/2011_10_03_drive_0034_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 156 l
+2011_09_26/2011_09_26_drive_0070_sync 83 r
+2011_09_30/2011_09_30_drive_0034_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 3065 l
+2011_09_30/2011_09_30_drive_0033_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 1904 r
+2011_09_26/2011_09_26_drive_0051_sync 343 l
+2011_09_26/2011_09_26_drive_0014_sync 45 l
+2011_09_30/2011_09_30_drive_0020_sync 258 l
+2011_09_30/2011_09_30_drive_0028_sync 3514 l
+2011_09_26/2011_09_26_drive_0011_sync 116 r
+2011_10_03/2011_10_03_drive_0042_sync 962 l
+2011_10_03/2011_10_03_drive_0034_sync 4286 r
+2011_09_26/2011_09_26_drive_0028_sync 387 r
+2011_09_26/2011_09_26_drive_0015_sync 179 r
+2011_09_26/2011_09_26_drive_0057_sync 18 r
+2011_10_03/2011_10_03_drive_0042_sync 1115 l
+2011_09_26/2011_09_26_drive_0019_sync 460 l
+2011_09_26/2011_09_26_drive_0001_sync 26 r
+2011_09_30/2011_09_30_drive_0034_sync 1219 r
+2011_09_30/2011_09_30_drive_0028_sync 2231 l
+2011_09_30/2011_09_30_drive_0033_sync 1318 l
+2011_10_03/2011_10_03_drive_0042_sync 599 r
+2011_10_03/2011_10_03_drive_0034_sync 2000 r
+2011_09_26/2011_09_26_drive_0032_sync 217 l
+2011_10_03/2011_10_03_drive_0034_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 1630 l
+2011_10_03/2011_10_03_drive_0042_sync 865 l
+2011_09_30/2011_09_30_drive_0020_sync 448 l
+2011_09_26/2011_09_26_drive_0051_sync 10 l
+2011_09_30/2011_09_30_drive_0020_sync 267 l
+2011_10_03/2011_10_03_drive_0034_sync 1512 r
+2011_09_29/2011_09_29_drive_0004_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 3047 l
+2011_09_30/2011_09_30_drive_0020_sync 188 l
+2011_09_30/2011_09_30_drive_0028_sync 2638 l
+2011_09_26/2011_09_26_drive_0032_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 412 r
+2011_09_30/2011_09_30_drive_0020_sync 351 r
+2011_09_26/2011_09_26_drive_0028_sync 310 l
+2011_09_26/2011_09_26_drive_0104_sync 139 r
+2011_09_26/2011_09_26_drive_0005_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 2188 l
+2011_09_30/2011_09_30_drive_0028_sync 3486 r
+2011_09_26/2011_09_26_drive_0019_sync 189 l
+2011_09_30/2011_09_30_drive_0033_sync 1242 r
+2011_09_29/2011_09_29_drive_0004_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 738 l
+2011_09_26/2011_09_26_drive_0061_sync 229 l
+2011_09_26/2011_09_26_drive_0011_sync 85 r
+2011_10_03/2011_10_03_drive_0042_sync 1137 r
+2011_09_30/2011_09_30_drive_0033_sync 690 r
+2011_09_30/2011_09_30_drive_0028_sync 1832 l
+2011_09_26/2011_09_26_drive_0032_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 1573 l
+2011_09_30/2011_09_30_drive_0020_sync 588 r
+2011_09_26/2011_09_26_drive_0022_sync 745 r
+2011_10_03/2011_10_03_drive_0034_sync 334 l
+2011_09_30/2011_09_30_drive_0034_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 719 l
+2011_09_30/2011_09_30_drive_0028_sync 3753 l
+2011_09_26/2011_09_26_drive_0060_sync 65 r
+2011_09_26/2011_09_26_drive_0057_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 1905 r
+2011_10_03/2011_10_03_drive_0034_sync 2541 r
+2011_10_03/2011_10_03_drive_0034_sync 2512 l
+2011_09_30/2011_09_30_drive_0034_sync 627 r
+2011_09_26/2011_09_26_drive_0079_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 4850 r
+2011_09_26/2011_09_26_drive_0057_sync 110 r
+2011_09_26/2011_09_26_drive_0019_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 781 l
+2011_09_26/2011_09_26_drive_0032_sync 156 l
+2011_09_26/2011_09_26_drive_0061_sync 661 l
+2011_09_30/2011_09_30_drive_0028_sync 1394 r
+2011_09_26/2011_09_26_drive_0022_sync 167 r
+2011_09_26/2011_09_26_drive_0028_sync 194 l
+2011_10_03/2011_10_03_drive_0034_sync 1560 l
+2011_09_30/2011_09_30_drive_0028_sync 2194 l
+2011_09_30/2011_09_30_drive_0033_sync 1042 l
+2011_10_03/2011_10_03_drive_0034_sync 857 r
+2011_10_03/2011_10_03_drive_0034_sync 1225 l
+2011_09_30/2011_09_30_drive_0028_sync 5047 r
+2011_09_30/2011_09_30_drive_0020_sync 1054 l
+2011_09_30/2011_09_30_drive_0028_sync 4796 l
+2011_09_26/2011_09_26_drive_0014_sync 74 l
+2011_09_30/2011_09_30_drive_0034_sync 586 r
+2011_09_26/2011_09_26_drive_0028_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 2619 r
+2011_09_30/2011_09_30_drive_0028_sync 3954 r
+2011_09_26/2011_09_26_drive_0057_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 3836 l
+2011_09_29/2011_09_29_drive_0026_sync 124 l
+2011_09_29/2011_09_29_drive_0026_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 1562 l
+2011_09_30/2011_09_30_drive_0028_sync 4013 r
+2011_09_26/2011_09_26_drive_0087_sync 620 r
+2011_09_26/2011_09_26_drive_0087_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 1043 r
+2011_09_30/2011_09_30_drive_0028_sync 2360 r
+2011_09_26/2011_09_26_drive_0019_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 2430 l
+2011_10_03/2011_10_03_drive_0034_sync 896 l
+2011_10_03/2011_10_03_drive_0042_sync 319 l
+2011_10_03/2011_10_03_drive_0034_sync 113 r
+2011_09_30/2011_09_30_drive_0020_sync 1007 l
+2011_09_26/2011_09_26_drive_0087_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 3790 r
+2011_10_03/2011_10_03_drive_0034_sync 3932 r
+2011_09_30/2011_09_30_drive_0028_sync 4668 l
+2011_09_30/2011_09_30_drive_0028_sync 4834 l
+2011_09_30/2011_09_30_drive_0028_sync 5062 l
+2011_10_03/2011_10_03_drive_0034_sync 4419 l
+2011_09_26/2011_09_26_drive_0095_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 2990 l
+2011_09_30/2011_09_30_drive_0034_sync 605 r
+2011_10_03/2011_10_03_drive_0034_sync 2446 r
+2011_09_30/2011_09_30_drive_0034_sync 768 r
+2011_10_03/2011_10_03_drive_0034_sync 2948 l
+2011_09_30/2011_09_30_drive_0020_sync 1074 r
+2011_09_30/2011_09_30_drive_0034_sync 232 l
+2011_09_26/2011_09_26_drive_0070_sync 372 r
+2011_09_30/2011_09_30_drive_0034_sync 588 r
+2011_10_03/2011_10_03_drive_0034_sync 717 r
+2011_09_30/2011_09_30_drive_0028_sync 550 r
+2011_09_26/2011_09_26_drive_0039_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 3812 l
+2011_09_29/2011_09_29_drive_0004_sync 136 r
+2011_09_26/2011_09_26_drive_0061_sync 558 l
+2011_09_30/2011_09_30_drive_0028_sync 3942 l
+2011_10_03/2011_10_03_drive_0034_sync 3560 l
+2011_09_30/2011_09_30_drive_0020_sync 365 r
+2011_09_26/2011_09_26_drive_0070_sync 320 r
+2011_09_30/2011_09_30_drive_0033_sync 1462 r
+2011_10_03/2011_10_03_drive_0034_sync 4580 r
+2011_10_03/2011_10_03_drive_0034_sync 107 l
+2011_09_26/2011_09_26_drive_0019_sync 310 r
+2011_09_26/2011_09_26_drive_0018_sync 119 r
+2011_09_28/2011_09_28_drive_0001_sync 98 l
+2011_09_30/2011_09_30_drive_0034_sync 504 r
+2011_09_26/2011_09_26_drive_0061_sync 625 r
+2011_09_26/2011_09_26_drive_0032_sync 215 l
+2011_09_26/2011_09_26_drive_0087_sync 457 r
+2011_09_26/2011_09_26_drive_0104_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 3368 r
+2011_09_30/2011_09_30_drive_0028_sync 774 l
+2011_09_26/2011_09_26_drive_0061_sync 328 r
+2011_09_26/2011_09_26_drive_0028_sync 349 l
+2011_09_30/2011_09_30_drive_0034_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 3464 r
+2011_09_30/2011_09_30_drive_0034_sync 298 r
+2011_09_26/2011_09_26_drive_0022_sync 381 l
+2011_09_26/2011_09_26_drive_0087_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 4326 l
+2011_09_26/2011_09_26_drive_0022_sync 200 l
+2011_10_03/2011_10_03_drive_0034_sync 3057 l
+2011_09_29/2011_09_29_drive_0004_sync 157 r
+2011_09_26/2011_09_26_drive_0113_sync 77 l
+2011_09_26/2011_09_26_drive_0014_sync 94 l
+2011_09_26/2011_09_26_drive_0005_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 2559 l
+2011_09_30/2011_09_30_drive_0033_sync 773 r
+2011_09_26/2011_09_26_drive_0070_sync 30 r
+2011_09_30/2011_09_30_drive_0033_sync 860 r
+2011_10_03/2011_10_03_drive_0034_sync 2921 r
+2011_09_26/2011_09_26_drive_0051_sync 425 l
+2011_10_03/2011_10_03_drive_0034_sync 3323 r
+2011_09_26/2011_09_26_drive_0032_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 3539 r
+2011_09_26/2011_09_26_drive_0014_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 4540 r
+2011_09_30/2011_09_30_drive_0034_sync 121 r
+2011_09_26/2011_09_26_drive_0087_sync 426 l
+2011_09_26/2011_09_26_drive_0019_sync 270 r
+2011_10_03/2011_10_03_drive_0042_sync 255 r
+2011_10_03/2011_10_03_drive_0034_sync 3148 r
+2011_09_26/2011_09_26_drive_0060_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 364 l
+2011_09_26/2011_09_26_drive_0032_sync 388 l
+2011_09_30/2011_09_30_drive_0034_sync 767 r
+2011_09_30/2011_09_30_drive_0028_sync 3819 l
+2011_09_30/2011_09_30_drive_0028_sync 2779 l
+2011_09_30/2011_09_30_drive_0033_sync 10 r
+2011_09_26/2011_09_26_drive_0104_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 3436 r
+2011_09_26/2011_09_26_drive_0015_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 5095 r
+2011_09_30/2011_09_30_drive_0033_sync 1137 r
+2011_09_26/2011_09_26_drive_0087_sync 431 l
+2011_09_30/2011_09_30_drive_0020_sync 204 r
+2011_09_30/2011_09_30_drive_0028_sync 785 l
+2011_09_30/2011_09_30_drive_0020_sync 815 l
+2011_09_26/2011_09_26_drive_0022_sync 597 r
+2011_09_26/2011_09_26_drive_0051_sync 15 l
+2011_09_29/2011_09_29_drive_0004_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 3985 r
+2011_09_30/2011_09_30_drive_0020_sync 270 r
+2011_10_03/2011_10_03_drive_0034_sync 2545 r
+2011_09_26/2011_09_26_drive_0095_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 2938 l
+2011_09_30/2011_09_30_drive_0028_sync 4486 l
+2011_10_03/2011_10_03_drive_0034_sync 2100 l
+2011_09_26/2011_09_26_drive_0017_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 2761 l
+2011_09_26/2011_09_26_drive_0014_sync 94 r
+2011_09_26/2011_09_26_drive_0070_sync 242 l
+2011_09_30/2011_09_30_drive_0028_sync 1293 r
+2011_09_26/2011_09_26_drive_0087_sync 272 r
+2011_09_26/2011_09_26_drive_0019_sync 65 l
+2011_09_30/2011_09_30_drive_0020_sync 493 l
+2011_09_30/2011_09_30_drive_0028_sync 1738 l
+2011_09_30/2011_09_30_drive_0028_sync 4359 l
+2011_10_03/2011_10_03_drive_0034_sync 1113 r
+2011_09_30/2011_09_30_drive_0028_sync 1891 l
+2011_09_26/2011_09_26_drive_0091_sync 24 l
+2011_09_29/2011_09_29_drive_0004_sync 142 l
+2011_09_26/2011_09_26_drive_0070_sync 325 l
+2011_10_03/2011_10_03_drive_0034_sync 1364 l
+2011_09_30/2011_09_30_drive_0034_sync 729 r
+2011_09_30/2011_09_30_drive_0028_sync 3459 r
+2011_10_03/2011_10_03_drive_0034_sync 2192 r
+2011_09_26/2011_09_26_drive_0022_sync 516 l
+2011_09_30/2011_09_30_drive_0033_sync 1050 l
+2011_09_30/2011_09_30_drive_0028_sync 4371 r
+2011_09_30/2011_09_30_drive_0034_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 4323 r
+2011_10_03/2011_10_03_drive_0034_sync 2067 r
+2011_10_03/2011_10_03_drive_0034_sync 2874 r
+2011_09_26/2011_09_26_drive_0095_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 1168 r
+2011_09_30/2011_09_30_drive_0028_sync 394 r
+2011_09_26/2011_09_26_drive_0028_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 3254 l
+2011_10_03/2011_10_03_drive_0034_sync 2441 r
+2011_09_30/2011_09_30_drive_0028_sync 3936 r
+2011_09_26/2011_09_26_drive_0032_sync 357 r
+2011_09_26/2011_09_26_drive_0022_sync 621 r
+2011_10_03/2011_10_03_drive_0042_sync 1094 r
+2011_09_26/2011_09_26_drive_0011_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 1526 r
+2011_09_26/2011_09_26_drive_0057_sync 173 r
+2011_09_26/2011_09_26_drive_0015_sync 113 l
+2011_09_26/2011_09_26_drive_0019_sync 158 r
+2011_09_30/2011_09_30_drive_0034_sync 991 l
+2011_09_30/2011_09_30_drive_0033_sync 649 l
+2011_10_03/2011_10_03_drive_0034_sync 1207 r
+2011_09_26/2011_09_26_drive_0022_sync 422 l
+2011_10_03/2011_10_03_drive_0034_sync 595 r
+2011_10_03/2011_10_03_drive_0034_sync 1441 r
+2011_09_30/2011_09_30_drive_0034_sync 197 r
+2011_09_26/2011_09_26_drive_0011_sync 30 r
+2011_09_26/2011_09_26_drive_0035_sync 72 l
+2011_10_03/2011_10_03_drive_0042_sync 948 l
+2011_09_30/2011_09_30_drive_0028_sync 2113 l
+2011_10_03/2011_10_03_drive_0034_sync 2515 l
+2011_09_30/2011_09_30_drive_0033_sync 783 l
+2011_09_26/2011_09_26_drive_0022_sync 548 l
+2011_09_26/2011_09_26_drive_0015_sync 26 l
+2011_09_30/2011_09_30_drive_0033_sync 1511 r
+2011_09_26/2011_09_26_drive_0022_sync 513 r
+2011_09_29/2011_09_29_drive_0004_sync 204 r
+2011_09_26/2011_09_26_drive_0087_sync 142 r
+2011_09_26/2011_09_26_drive_0005_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 618 r
+2011_09_26/2011_09_26_drive_0051_sync 22 l
+2011_09_30/2011_09_30_drive_0033_sync 523 l
+2011_09_30/2011_09_30_drive_0028_sync 4080 l
+2011_09_30/2011_09_30_drive_0020_sync 157 l
+2011_09_30/2011_09_30_drive_0034_sync 763 r
+2011_10_03/2011_10_03_drive_0034_sync 1903 r
+2011_09_30/2011_09_30_drive_0033_sync 439 r
+2011_09_30/2011_09_30_drive_0028_sync 1069 l
+2011_10_03/2011_10_03_drive_0034_sync 3940 r
+2011_09_26/2011_09_26_drive_0022_sync 702 r
+2011_09_30/2011_09_30_drive_0028_sync 3418 r
+2011_09_26/2011_09_26_drive_0091_sync 324 l
+2011_09_30/2011_09_30_drive_0034_sync 850 l
+2011_09_30/2011_09_30_drive_0034_sync 265 r
+2011_09_30/2011_09_30_drive_0028_sync 4435 l
+2011_09_30/2011_09_30_drive_0028_sync 5084 l
+2011_09_26/2011_09_26_drive_0095_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 3146 l
+2011_09_30/2011_09_30_drive_0028_sync 2066 r
+2011_09_26/2011_09_26_drive_0061_sync 421 r
+2011_09_30/2011_09_30_drive_0020_sync 647 l
+2011_09_26/2011_09_26_drive_0019_sync 137 l
+2011_10_03/2011_10_03_drive_0034_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 3408 l
+2011_10_03/2011_10_03_drive_0034_sync 864 r
+2011_09_30/2011_09_30_drive_0034_sync 1153 l
+2011_10_03/2011_10_03_drive_0034_sync 1792 l
+2011_10_03/2011_10_03_drive_0042_sync 1012 r
+2011_09_29/2011_09_29_drive_0026_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 233 r
+2011_09_30/2011_09_30_drive_0028_sync 3156 l
+2011_10_03/2011_10_03_drive_0042_sync 1159 l
+2011_09_30/2011_09_30_drive_0028_sync 751 l
+2011_09_26/2011_09_26_drive_0032_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 104 r
+2011_09_26/2011_09_26_drive_0022_sync 584 r
+2011_10_03/2011_10_03_drive_0034_sync 2778 l
+2011_09_30/2011_09_30_drive_0028_sync 4907 r
+2011_09_30/2011_09_30_drive_0028_sync 2915 l
+2011_10_03/2011_10_03_drive_0034_sync 1655 r
+2011_09_26/2011_09_26_drive_0028_sync 348 r
+2011_09_26/2011_09_26_drive_0070_sync 416 l
+2011_09_30/2011_09_30_drive_0033_sync 928 l
+2011_09_30/2011_09_30_drive_0028_sync 3274 r
+2011_09_26/2011_09_26_drive_0015_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 3265 l
+2011_09_26/2011_09_26_drive_0019_sync 231 l
+2011_10_03/2011_10_03_drive_0042_sync 546 l
+2011_09_30/2011_09_30_drive_0034_sync 939 r
+2011_09_30/2011_09_30_drive_0028_sync 5034 r
+2011_09_26/2011_09_26_drive_0028_sync 53 l
+2011_09_30/2011_09_30_drive_0034_sync 639 l
+2011_09_26/2011_09_26_drive_0104_sync 235 r
+2011_09_30/2011_09_30_drive_0028_sync 4221 r
+2011_09_30/2011_09_30_drive_0028_sync 4585 r
+2011_09_30/2011_09_30_drive_0028_sync 668 r
+2011_09_26/2011_09_26_drive_0022_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 957 r
+2011_09_26/2011_09_26_drive_0039_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 808 r
+2011_10_03/2011_10_03_drive_0042_sync 1 l
+2011_09_26/2011_09_26_drive_0104_sync 69 l
+2011_09_30/2011_09_30_drive_0028_sync 1073 r
+2011_09_26/2011_09_26_drive_0028_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 5081 r
+2011_09_30/2011_09_30_drive_0033_sync 1028 r
+2011_09_30/2011_09_30_drive_0028_sync 355 l
+2011_09_30/2011_09_30_drive_0033_sync 1267 r
+2011_10_03/2011_10_03_drive_0042_sync 509 r
+2011_09_26/2011_09_26_drive_0057_sync 58 r
+2011_09_30/2011_09_30_drive_0033_sync 1026 r
+2011_09_26/2011_09_26_drive_0061_sync 365 r
+2011_09_26/2011_09_26_drive_0022_sync 693 l
+2011_10_03/2011_10_03_drive_0034_sync 990 r
+2011_09_30/2011_09_30_drive_0034_sync 49 l
+2011_10_03/2011_10_03_drive_0034_sync 3145 l
+2011_09_26/2011_09_26_drive_0095_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 4628 l
+2011_09_26/2011_09_26_drive_0104_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 4862 l
+2011_09_26/2011_09_26_drive_0019_sync 285 l
+2011_09_30/2011_09_30_drive_0028_sync 4397 l
+2011_09_30/2011_09_30_drive_0020_sync 1008 r
+2011_09_26/2011_09_26_drive_0095_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 939 r
+2011_09_30/2011_09_30_drive_0028_sync 187 r
+2011_09_26/2011_09_26_drive_0104_sync 167 l
+2011_10_03/2011_10_03_drive_0034_sync 3967 l
+2011_09_26/2011_09_26_drive_0104_sync 111 l
+2011_09_30/2011_09_30_drive_0028_sync 4263 l
+2011_10_03/2011_10_03_drive_0034_sync 392 l
+2011_09_26/2011_09_26_drive_0051_sync 272 r
+2011_09_26/2011_09_26_drive_0095_sync 265 l
+2011_09_26/2011_09_26_drive_0011_sync 52 l
+2011_09_30/2011_09_30_drive_0034_sync 332 r
+2011_09_30/2011_09_30_drive_0033_sync 1240 r
+2011_09_26/2011_09_26_drive_0032_sync 1 r
+2011_09_29/2011_09_29_drive_0004_sync 165 r
+2011_09_30/2011_09_30_drive_0028_sync 2603 r
+2011_09_30/2011_09_30_drive_0028_sync 946 l
+2011_09_26/2011_09_26_drive_0091_sync 275 r
+2011_09_29/2011_09_29_drive_0004_sync 124 l
+2011_09_30/2011_09_30_drive_0028_sync 4830 r
+2011_09_30/2011_09_30_drive_0028_sync 2240 l
+2011_09_30/2011_09_30_drive_0028_sync 1514 r
+2011_09_30/2011_09_30_drive_0028_sync 4056 l
+2011_10_03/2011_10_03_drive_0034_sync 2775 r
+2011_09_26/2011_09_26_drive_0104_sync 219 r
+2011_09_26/2011_09_26_drive_0015_sync 119 r
+2011_10_03/2011_10_03_drive_0042_sync 716 r
+2011_09_26/2011_09_26_drive_0005_sync 152 r
+2011_09_26/2011_09_26_drive_0057_sync 248 r
+2011_09_30/2011_09_30_drive_0020_sync 698 l
+2011_09_30/2011_09_30_drive_0028_sync 2918 l
+2011_09_26/2011_09_26_drive_0095_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 4635 l
+2011_09_26/2011_09_26_drive_0011_sync 55 l
+2011_09_30/2011_09_30_drive_0034_sync 585 r
+2011_09_30/2011_09_30_drive_0020_sync 659 r
+2011_09_30/2011_09_30_drive_0028_sync 4627 l
+2011_09_26/2011_09_26_drive_0061_sync 271 r
+2011_09_30/2011_09_30_drive_0034_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 4547 l
+2011_10_03/2011_10_03_drive_0034_sync 4479 r
+2011_10_03/2011_10_03_drive_0042_sync 1035 l
+2011_10_03/2011_10_03_drive_0034_sync 1015 l
+2011_09_30/2011_09_30_drive_0028_sync 736 l
+2011_09_26/2011_09_26_drive_0014_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 3826 l
+2011_09_26/2011_09_26_drive_0018_sync 237 l
+2011_10_03/2011_10_03_drive_0034_sync 506 l
+2011_09_30/2011_09_30_drive_0034_sync 145 r
+2011_09_30/2011_09_30_drive_0028_sync 2675 l
+2011_09_30/2011_09_30_drive_0028_sync 4363 r
+2011_09_30/2011_09_30_drive_0020_sync 1006 r
+2011_10_03/2011_10_03_drive_0042_sync 71 r
+2011_09_26/2011_09_26_drive_0014_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 3719 r
+2011_09_30/2011_09_30_drive_0028_sync 3251 r
+2011_09_30/2011_09_30_drive_0020_sync 463 r
+2011_09_30/2011_09_30_drive_0020_sync 1025 l
+2011_09_30/2011_09_30_drive_0028_sync 4932 r
+2011_09_30/2011_09_30_drive_0034_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 1693 r
+2011_09_30/2011_09_30_drive_0034_sync 438 l
+2011_09_30/2011_09_30_drive_0028_sync 4038 l
+2011_09_26/2011_09_26_drive_0051_sync 86 l
+2011_09_26/2011_09_26_drive_0022_sync 542 l
+2011_09_30/2011_09_30_drive_0033_sync 777 r
+2011_09_30/2011_09_30_drive_0028_sync 4964 l
+2011_10_03/2011_10_03_drive_0034_sync 966 r
+2011_10_03/2011_10_03_drive_0042_sync 274 r
+2011_10_03/2011_10_03_drive_0034_sync 345 l
+2011_09_26/2011_09_26_drive_0018_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 1126 l
+2011_10_03/2011_10_03_drive_0034_sync 3590 l
+2011_10_03/2011_10_03_drive_0034_sync 575 r
+2011_10_03/2011_10_03_drive_0034_sync 1053 r
+2011_09_30/2011_09_30_drive_0028_sync 1702 r
+2011_10_03/2011_10_03_drive_0034_sync 272 l
+2011_09_26/2011_09_26_drive_0087_sync 244 r
+2011_09_30/2011_09_30_drive_0033_sync 731 r
+2011_09_30/2011_09_30_drive_0033_sync 774 r
+2011_09_26/2011_09_26_drive_0015_sync 181 r
+2011_09_26/2011_09_26_drive_0022_sync 663 r
+2011_09_26/2011_09_26_drive_0032_sync 177 r
+2011_09_30/2011_09_30_drive_0028_sync 911 l
+2011_09_30/2011_09_30_drive_0028_sync 3482 l
+2011_09_30/2011_09_30_drive_0034_sync 770 l
+2011_10_03/2011_10_03_drive_0042_sync 222 r
+2011_09_30/2011_09_30_drive_0034_sync 849 l
+2011_09_30/2011_09_30_drive_0020_sync 634 l
+2011_10_03/2011_10_03_drive_0034_sync 109 l
+2011_09_30/2011_09_30_drive_0028_sync 1336 l
+2011_09_26/2011_09_26_drive_0032_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 4238 r
+2011_09_26/2011_09_26_drive_0028_sync 416 l
+2011_09_30/2011_09_30_drive_0028_sync 70 l
+2011_09_26/2011_09_26_drive_0019_sync 96 l
+2011_10_03/2011_10_03_drive_0034_sync 4135 r
+2011_09_30/2011_09_30_drive_0028_sync 3670 r
+2011_09_30/2011_09_30_drive_0020_sync 829 l
+2011_09_26/2011_09_26_drive_0014_sync 261 l
+2011_09_26/2011_09_26_drive_0019_sync 138 r
+2011_09_30/2011_09_30_drive_0033_sync 1095 l
+2011_09_30/2011_09_30_drive_0020_sync 983 l
+2011_09_30/2011_09_30_drive_0028_sync 4670 l
+2011_09_26/2011_09_26_drive_0022_sync 644 l
+2011_10_03/2011_10_03_drive_0034_sync 1527 r
+2011_09_26/2011_09_26_drive_0104_sync 18 r
+2011_09_30/2011_09_30_drive_0033_sync 59 r
+2011_09_26/2011_09_26_drive_0051_sync 71 r
+2011_09_30/2011_09_30_drive_0033_sync 704 l
+2011_09_26/2011_09_26_drive_0001_sync 30 r
+2011_09_26/2011_09_26_drive_0039_sync 247 l
+2011_09_26/2011_09_26_drive_0028_sync 166 r
+2011_09_26/2011_09_26_drive_0022_sync 246 l
+2011_09_26/2011_09_26_drive_0028_sync 388 l
+2011_09_26/2011_09_26_drive_0039_sync 362 l
+2011_09_30/2011_09_30_drive_0020_sync 1091 r
+2011_09_26/2011_09_26_drive_0022_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 1545 r
+2011_09_26/2011_09_26_drive_0051_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 877 l
+2011_09_30/2011_09_30_drive_0034_sync 364 r
+2011_09_29/2011_09_29_drive_0004_sync 183 l
+2011_09_29/2011_09_29_drive_0004_sync 107 r
+2011_10_03/2011_10_03_drive_0042_sync 816 l
+2011_10_03/2011_10_03_drive_0034_sync 741 l
+2011_09_26/2011_09_26_drive_0014_sync 115 l
+2011_09_30/2011_09_30_drive_0028_sync 3764 l
+2011_09_30/2011_09_30_drive_0028_sync 798 r
+2011_10_03/2011_10_03_drive_0034_sync 1603 r
+2011_09_26/2011_09_26_drive_0019_sync 350 r
+2011_09_26/2011_09_26_drive_0061_sync 663 l
+2011_09_26/2011_09_26_drive_0022_sync 693 r
+2011_10_03/2011_10_03_drive_0034_sync 4185 r
+2011_10_03/2011_10_03_drive_0034_sync 1520 r
+2011_09_26/2011_09_26_drive_0011_sync 50 r
+2011_09_26/2011_09_26_drive_0032_sync 285 r
+2011_09_26/2011_09_26_drive_0061_sync 448 l
+2011_09_30/2011_09_30_drive_0028_sync 2000 r
+2011_09_30/2011_09_30_drive_0033_sync 1192 l
+2011_09_26/2011_09_26_drive_0060_sync 8 r
+2011_09_26/2011_09_26_drive_0035_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 3318 r
+2011_09_30/2011_09_30_drive_0020_sync 207 r
+2011_09_30/2011_09_30_drive_0033_sync 1495 r
+2011_10_03/2011_10_03_drive_0034_sync 4104 l
+2011_09_29/2011_09_29_drive_0004_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 555 r
+2011_09_30/2011_09_30_drive_0020_sync 127 l
+2011_09_30/2011_09_30_drive_0028_sync 5172 l
+2011_09_30/2011_09_30_drive_0028_sync 2848 l
+2011_09_30/2011_09_30_drive_0020_sync 236 r
+2011_09_30/2011_09_30_drive_0028_sync 4028 l
+2011_09_26/2011_09_26_drive_0018_sync 28 l
+2011_09_26/2011_09_26_drive_0061_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 4289 r
+2011_09_26/2011_09_26_drive_0028_sync 427 r
+2011_09_26/2011_09_26_drive_0019_sync 425 l
+2011_09_26/2011_09_26_drive_0022_sync 379 l
+2011_09_26/2011_09_26_drive_0019_sync 379 l
+2011_09_26/2011_09_26_drive_0005_sync 58 r
+2011_09_29/2011_09_29_drive_0026_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 3917 l
+2011_09_26/2011_09_26_drive_0051_sync 52 r
+2011_09_30/2011_09_30_drive_0028_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 284 r
+2011_09_26/2011_09_26_drive_0028_sync 336 l
+2011_09_26/2011_09_26_drive_0028_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 143 l
+2011_09_26/2011_09_26_drive_0001_sync 32 l
+2011_09_26/2011_09_26_drive_0051_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 2286 l
+2011_09_30/2011_09_30_drive_0033_sync 824 r
+2011_10_03/2011_10_03_drive_0034_sync 2760 r
+2011_10_03/2011_10_03_drive_0042_sync 705 l
+2011_09_26/2011_09_26_drive_0015_sync 70 r
+2011_10_03/2011_10_03_drive_0042_sync 29 r
+2011_09_26/2011_09_26_drive_0011_sync 135 r
+2011_09_26/2011_09_26_drive_0028_sync 55 r
+2011_09_26/2011_09_26_drive_0028_sync 135 l
+2011_09_26/2011_09_26_drive_0070_sync 115 l
+2011_09_26/2011_09_26_drive_0001_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 4110 l
+2011_10_03/2011_10_03_drive_0034_sync 2351 r
+2011_09_30/2011_09_30_drive_0028_sync 1956 l
+2011_09_30/2011_09_30_drive_0028_sync 4083 l
+2011_10_03/2011_10_03_drive_0034_sync 772 l
+2011_09_30/2011_09_30_drive_0020_sync 753 r
+2011_09_26/2011_09_26_drive_0070_sync 410 r
+2011_09_30/2011_09_30_drive_0034_sync 735 l
+2011_09_30/2011_09_30_drive_0028_sync 761 r
+2011_09_26/2011_09_26_drive_0001_sync 21 r
+2011_09_26/2011_09_26_drive_0019_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 4053 l
+2011_10_03/2011_10_03_drive_0034_sync 4395 r
+2011_09_30/2011_09_30_drive_0034_sync 1076 l
+2011_09_26/2011_09_26_drive_0019_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 3305 l
+2011_09_30/2011_09_30_drive_0028_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 3845 l
+2011_09_26/2011_09_26_drive_0104_sync 46 l
+2011_09_26/2011_09_26_drive_0087_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 3546 r
+2011_09_30/2011_09_30_drive_0028_sync 1769 r
+2011_09_30/2011_09_30_drive_0020_sync 628 r
+2011_09_30/2011_09_30_drive_0028_sync 3566 l
+2011_09_26/2011_09_26_drive_0014_sync 291 l
+2011_09_26/2011_09_26_drive_0001_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 3080 r
+2011_09_30/2011_09_30_drive_0028_sync 2547 r
+2011_10_03/2011_10_03_drive_0042_sync 171 l
+2011_09_26/2011_09_26_drive_0051_sync 409 l
+2011_10_03/2011_10_03_drive_0034_sync 4131 r
+2011_09_26/2011_09_26_drive_0039_sync 364 r
+2011_09_30/2011_09_30_drive_0028_sync 751 r
+2011_10_03/2011_10_03_drive_0034_sync 4026 r
+2011_09_26/2011_09_26_drive_0017_sync 21 l
+2011_09_26/2011_09_26_drive_0057_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 3862 l
+2011_09_26/2011_09_26_drive_0061_sync 217 l
+2011_09_26/2011_09_26_drive_0087_sync 56 r
+2011_09_26/2011_09_26_drive_0095_sync 89 l
+2011_09_26/2011_09_26_drive_0061_sync 314 l
+2011_10_03/2011_10_03_drive_0042_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 2532 l
+2011_09_30/2011_09_30_drive_0033_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 2525 r
+2011_09_30/2011_09_30_drive_0020_sync 713 l
+2011_09_30/2011_09_30_drive_0020_sync 30 r
+2011_09_30/2011_09_30_drive_0020_sync 832 r
+2011_10_03/2011_10_03_drive_0034_sync 3949 l
+2011_09_30/2011_09_30_drive_0033_sync 689 r
+2011_09_26/2011_09_26_drive_0014_sync 243 r
+2011_09_26/2011_09_26_drive_0005_sync 98 r
+2011_09_26/2011_09_26_drive_0113_sync 54 l
+2011_09_26/2011_09_26_drive_0022_sync 502 l
+2011_09_30/2011_09_30_drive_0028_sync 1717 l
+2011_09_30/2011_09_30_drive_0033_sync 725 l
+2011_09_26/2011_09_26_drive_0015_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 3315 l
+2011_09_26/2011_09_26_drive_0022_sync 90 r
+2011_09_29/2011_09_29_drive_0026_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 628 l
+2011_10_03/2011_10_03_drive_0034_sync 1856 r
+2011_09_26/2011_09_26_drive_0028_sync 116 l
+2011_09_30/2011_09_30_drive_0033_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 3982 l
+2011_09_26/2011_09_26_drive_0051_sync 152 l
+2011_09_26/2011_09_26_drive_0011_sync 221 r
+2011_09_26/2011_09_26_drive_0014_sync 126 l
+2011_09_26/2011_09_26_drive_0091_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 2763 l
+2011_09_26/2011_09_26_drive_0104_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 3209 l
+2011_10_03/2011_10_03_drive_0034_sync 2339 l
+2011_09_26/2011_09_26_drive_0051_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 3837 l
+2011_09_26/2011_09_26_drive_0057_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 297 l
+2011_10_03/2011_10_03_drive_0042_sync 657 l
+2011_09_26/2011_09_26_drive_0022_sync 451 r
+2011_09_30/2011_09_30_drive_0034_sync 477 r
+2011_09_30/2011_09_30_drive_0034_sync 477 l
+2011_10_03/2011_10_03_drive_0034_sync 2523 r
+2011_09_26/2011_09_26_drive_0019_sync 111 r
+2011_09_26/2011_09_26_drive_0032_sync 45 r
+2011_09_26/2011_09_26_drive_0028_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 267 r
+2011_09_30/2011_09_30_drive_0034_sync 877 r
+2011_10_03/2011_10_03_drive_0034_sync 239 l
+2011_09_26/2011_09_26_drive_0061_sync 699 l
+2011_10_03/2011_10_03_drive_0042_sync 921 l
+2011_09_26/2011_09_26_drive_0019_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 2773 r
+2011_09_30/2011_09_30_drive_0028_sync 4934 r
+2011_09_26/2011_09_26_drive_0019_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 2652 l
+2011_09_30/2011_09_30_drive_0020_sync 250 r
+2011_09_26/2011_09_26_drive_0095_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 4766 l
+2011_10_03/2011_10_03_drive_0034_sync 2955 l
+2011_09_30/2011_09_30_drive_0028_sync 1882 l
+2011_09_30/2011_09_30_drive_0028_sync 172 r
+2011_10_03/2011_10_03_drive_0042_sync 128 r
+2011_10_03/2011_10_03_drive_0042_sync 995 l
+2011_10_03/2011_10_03_drive_0034_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 3184 r
+2011_09_26/2011_09_26_drive_0018_sync 96 l
+2011_09_30/2011_09_30_drive_0020_sync 460 r
+2011_10_03/2011_10_03_drive_0034_sync 619 l
+2011_09_26/2011_09_26_drive_0022_sync 505 r
+2011_09_30/2011_09_30_drive_0028_sync 4712 r
+2011_09_30/2011_09_30_drive_0028_sync 4288 r
+2011_09_30/2011_09_30_drive_0028_sync 3757 l
+2011_09_26/2011_09_26_drive_0022_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 4318 r
+2011_09_30/2011_09_30_drive_0028_sync 1204 r
+2011_09_30/2011_09_30_drive_0034_sync 1167 r
+2011_09_30/2011_09_30_drive_0028_sync 3624 l
+2011_09_30/2011_09_30_drive_0028_sync 780 r
+2011_09_30/2011_09_30_drive_0028_sync 4472 r
+2011_09_26/2011_09_26_drive_0019_sync 96 r
+2011_09_26/2011_09_26_drive_0060_sync 43 r
+2011_09_30/2011_09_30_drive_0020_sync 404 l
+2011_09_26/2011_09_26_drive_0011_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 2578 r
+2011_09_30/2011_09_30_drive_0028_sync 1270 l
+2011_09_30/2011_09_30_drive_0028_sync 4774 l
+2011_10_03/2011_10_03_drive_0042_sync 1160 r
+2011_10_03/2011_10_03_drive_0034_sync 1414 l
+2011_10_03/2011_10_03_drive_0042_sync 661 l
+2011_09_26/2011_09_26_drive_0051_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 1136 l
+2011_10_03/2011_10_03_drive_0042_sync 1124 l
+2011_09_30/2011_09_30_drive_0028_sync 3010 r
+2011_10_03/2011_10_03_drive_0034_sync 1859 r
+2011_09_26/2011_09_26_drive_0028_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 5122 l
+2011_10_03/2011_10_03_drive_0034_sync 1034 r
+2011_10_03/2011_10_03_drive_0034_sync 739 r
+2011_09_30/2011_09_30_drive_0034_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 2925 r
+2011_09_26/2011_09_26_drive_0019_sync 119 r
+2011_09_26/2011_09_26_drive_0014_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 1519 l
+2011_09_26/2011_09_26_drive_0051_sync 329 l
+2011_09_26/2011_09_26_drive_0014_sync 268 r
+2011_09_30/2011_09_30_drive_0020_sync 748 r
+2011_09_30/2011_09_30_drive_0028_sync 1445 r
+2011_09_29/2011_09_29_drive_0004_sync 170 l
+2011_09_30/2011_09_30_drive_0028_sync 706 l
+2011_09_26/2011_09_26_drive_0018_sync 44 r
+2011_09_26/2011_09_26_drive_0022_sync 721 r
+2011_09_30/2011_09_30_drive_0034_sync 496 r
+2011_09_26/2011_09_26_drive_0015_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 3036 r
+2011_09_26/2011_09_26_drive_0061_sync 571 r
+2011_09_30/2011_09_30_drive_0028_sync 3024 l
+2011_09_26/2011_09_26_drive_0011_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 319 r
+2011_09_26/2011_09_26_drive_0022_sync 601 r
+2011_09_30/2011_09_30_drive_0020_sync 596 r
+2011_09_26/2011_09_26_drive_0022_sync 739 r
+2011_09_30/2011_09_30_drive_0028_sync 1344 l
+2011_09_30/2011_09_30_drive_0028_sync 280 l
+2011_09_26/2011_09_26_drive_0032_sync 199 r
+2011_09_26/2011_09_26_drive_0017_sync 15 l
+2011_09_26/2011_09_26_drive_0087_sync 596 l
+2011_09_30/2011_09_30_drive_0034_sync 813 r
+2011_09_30/2011_09_30_drive_0028_sync 1379 r
+2011_10_03/2011_10_03_drive_0034_sync 4429 l
+2011_09_30/2011_09_30_drive_0028_sync 3828 r
+2011_09_30/2011_09_30_drive_0033_sync 132 l
+2011_09_30/2011_09_30_drive_0034_sync 691 r
+2011_10_03/2011_10_03_drive_0034_sync 3128 r
+2011_09_26/2011_09_26_drive_0022_sync 284 r
+2011_09_26/2011_09_26_drive_0070_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 609 l
+2011_09_30/2011_09_30_drive_0028_sync 3765 l
+2011_10_03/2011_10_03_drive_0042_sync 450 r
+2011_09_26/2011_09_26_drive_0070_sync 289 l
+2011_09_26/2011_09_26_drive_0091_sync 137 l
+2011_09_26/2011_09_26_drive_0014_sync 39 r
+2011_09_26/2011_09_26_drive_0051_sync 210 r
+2011_09_26/2011_09_26_drive_0001_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 2513 l
+2011_09_30/2011_09_30_drive_0028_sync 80 r
+2011_09_30/2011_09_30_drive_0033_sync 1246 l
+2011_09_30/2011_09_30_drive_0033_sync 1213 l
+2011_10_03/2011_10_03_drive_0034_sync 2753 l
+2011_09_30/2011_09_30_drive_0034_sync 566 r
+2011_10_03/2011_10_03_drive_0042_sync 942 l
+2011_09_30/2011_09_30_drive_0028_sync 3329 l
+2011_09_26/2011_09_26_drive_0019_sync 0 l
+2011_09_26/2011_09_26_drive_0095_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 455 l
+2011_09_26/2011_09_26_drive_0011_sync 143 l
+2011_09_30/2011_09_30_drive_0028_sync 4359 r
+2011_09_30/2011_09_30_drive_0028_sync 459 l
+2011_10_03/2011_10_03_drive_0034_sync 798 l
+2011_09_30/2011_09_30_drive_0028_sync 151 r
+2011_09_30/2011_09_30_drive_0033_sync 401 l
+2011_09_30/2011_09_30_drive_0020_sync 847 r
+2011_09_30/2011_09_30_drive_0020_sync 712 l
+2011_09_29/2011_09_29_drive_0004_sync 28 r
+2011_09_26/2011_09_26_drive_0087_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 3248 l
+2011_10_03/2011_10_03_drive_0034_sync 3939 r
+2011_09_26/2011_09_26_drive_0091_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 3314 l
+2011_09_30/2011_09_30_drive_0028_sync 3341 l
+2011_09_26/2011_09_26_drive_0019_sync 108 l
+2011_09_30/2011_09_30_drive_0033_sync 363 r
+2011_09_30/2011_09_30_drive_0028_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 1609 l
+2011_10_03/2011_10_03_drive_0034_sync 4599 l
+2011_09_30/2011_09_30_drive_0020_sync 399 l
+2011_09_26/2011_09_26_drive_0011_sync 162 l
+2011_09_26/2011_09_26_drive_0015_sync 217 l
+2011_10_03/2011_10_03_drive_0042_sync 1112 l
+2011_09_30/2011_09_30_drive_0028_sync 1237 l
+2011_09_30/2011_09_30_drive_0028_sync 3728 l
+2011_09_30/2011_09_30_drive_0034_sync 918 l
+2011_09_30/2011_09_30_drive_0020_sync 443 r
+2011_09_30/2011_09_30_drive_0028_sync 233 r
+2011_10_03/2011_10_03_drive_0042_sync 277 l
+2011_09_26/2011_09_26_drive_0087_sync 683 l
+2011_09_26/2011_09_26_drive_0022_sync 133 r
+2011_10_03/2011_10_03_drive_0034_sync 4052 r
+2011_09_26/2011_09_26_drive_0039_sync 350 r
+2011_10_03/2011_10_03_drive_0034_sync 4532 l
+2011_09_30/2011_09_30_drive_0028_sync 1486 r
+2011_09_30/2011_09_30_drive_0020_sync 553 l
+2011_09_26/2011_09_26_drive_0087_sync 516 l
+2011_10_03/2011_10_03_drive_0034_sync 1978 r
+2011_09_30/2011_09_30_drive_0028_sync 1217 l
+2011_09_26/2011_09_26_drive_0039_sync 183 l
+2011_09_26/2011_09_26_drive_0032_sync 48 l
+2011_09_30/2011_09_30_drive_0020_sync 1004 l
+2011_10_03/2011_10_03_drive_0034_sync 4299 l
+2011_10_03/2011_10_03_drive_0034_sync 3689 l
+2011_10_03/2011_10_03_drive_0034_sync 2906 r
+2011_09_26/2011_09_26_drive_0070_sync 339 r
+2011_09_30/2011_09_30_drive_0034_sync 935 r
+2011_09_30/2011_09_30_drive_0028_sync 4497 l
+2011_10_03/2011_10_03_drive_0034_sync 4446 r
+2011_09_26/2011_09_26_drive_0057_sync 304 r
+2011_10_03/2011_10_03_drive_0034_sync 497 r
+2011_09_26/2011_09_26_drive_0035_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 521 l
+2011_09_26/2011_09_26_drive_0095_sync 5 r
+2011_10_03/2011_10_03_drive_0034_sync 3583 l
+2011_09_30/2011_09_30_drive_0028_sync 4797 l
+2011_10_03/2011_10_03_drive_0042_sync 492 r
+2011_09_26/2011_09_26_drive_0028_sync 305 l
+2011_09_30/2011_09_30_drive_0020_sync 117 r
+2011_10_03/2011_10_03_drive_0034_sync 81 r
+2011_09_30/2011_09_30_drive_0034_sync 161 l
+2011_09_26/2011_09_26_drive_0091_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 3263 r
+2011_09_26/2011_09_26_drive_0015_sync 186 l
+2011_09_26/2011_09_26_drive_0087_sync 538 r
+2011_09_30/2011_09_30_drive_0028_sync 4297 l
+2011_09_26/2011_09_26_drive_0091_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 4056 r
+2011_09_30/2011_09_30_drive_0028_sync 447 l
+2011_09_26/2011_09_26_drive_0022_sync 406 l
+2011_09_26/2011_09_26_drive_0061_sync 424 l
+2011_09_30/2011_09_30_drive_0028_sync 3715 r
+2011_09_26/2011_09_26_drive_0087_sync 176 l
+2011_09_30/2011_09_30_drive_0033_sync 1287 r
+2011_09_30/2011_09_30_drive_0028_sync 1658 r
+2011_09_26/2011_09_26_drive_0022_sync 327 l
+2011_10_03/2011_10_03_drive_0034_sync 2865 l
+2011_10_03/2011_10_03_drive_0034_sync 4285 l
+2011_09_30/2011_09_30_drive_0028_sync 255 l
+2011_09_30/2011_09_30_drive_0028_sync 1291 r
+2011_09_26/2011_09_26_drive_0028_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 2308 l
+2011_09_26/2011_09_26_drive_0087_sync 132 r
+2011_10_03/2011_10_03_drive_0034_sync 3223 r
+2011_09_26/2011_09_26_drive_0005_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 142 l
+2011_09_26/2011_09_26_drive_0070_sync 19 l
+2011_09_30/2011_09_30_drive_0020_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 3142 r
+2011_09_26/2011_09_26_drive_0005_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 1003 l
+2011_10_03/2011_10_03_drive_0042_sync 590 l
+2011_09_30/2011_09_30_drive_0020_sync 259 r
+2011_09_26/2011_09_26_drive_0018_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 4756 r
+2011_10_03/2011_10_03_drive_0034_sync 1743 r
+2011_09_30/2011_09_30_drive_0033_sync 964 r
+2011_09_30/2011_09_30_drive_0033_sync 406 l
+2011_09_30/2011_09_30_drive_0028_sync 811 r
+2011_09_30/2011_09_30_drive_0028_sync 2651 r
+2011_09_26/2011_09_26_drive_0022_sync 639 r
+2011_09_30/2011_09_30_drive_0034_sync 957 r
+2011_10_03/2011_10_03_drive_0034_sync 1840 l
+2011_09_30/2011_09_30_drive_0020_sync 925 l
+2011_09_30/2011_09_30_drive_0028_sync 4441 l
+2011_09_26/2011_09_26_drive_0039_sync 75 r
+2011_09_26/2011_09_26_drive_0018_sync 122 r
+2011_09_26/2011_09_26_drive_0028_sync 326 r
+2011_09_26/2011_09_26_drive_0032_sync 164 r
+2011_09_26/2011_09_26_drive_0022_sync 257 l
+2011_09_26/2011_09_26_drive_0022_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 369 r
+2011_09_30/2011_09_30_drive_0033_sync 1335 l
+2011_09_30/2011_09_30_drive_0020_sync 280 r
+2011_10_03/2011_10_03_drive_0034_sync 1543 r
+2011_09_26/2011_09_26_drive_0087_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 875 l
+2011_09_26/2011_09_26_drive_0061_sync 625 l
+2011_10_03/2011_10_03_drive_0034_sync 1572 r
+2011_09_29/2011_09_29_drive_0026_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 3090 r
+2011_09_30/2011_09_30_drive_0028_sync 2353 l
+2011_10_03/2011_10_03_drive_0034_sync 1670 l
+2011_09_26/2011_09_26_drive_0011_sync 32 l
+2011_09_26/2011_09_26_drive_0061_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 2750 l
+2011_09_30/2011_09_30_drive_0033_sync 356 r
+2011_09_26/2011_09_26_drive_0022_sync 186 r
+2011_09_26/2011_09_26_drive_0104_sync 84 r
+2011_09_30/2011_09_30_drive_0020_sync 887 r
+2011_10_03/2011_10_03_drive_0034_sync 4505 r
+2011_09_30/2011_09_30_drive_0028_sync 3381 r
+2011_09_30/2011_09_30_drive_0028_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 3583 r
+2011_09_26/2011_09_26_drive_0057_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 906 r
+2011_10_03/2011_10_03_drive_0034_sync 3911 l
+2011_09_30/2011_09_30_drive_0028_sync 1427 l
+2011_09_30/2011_09_30_drive_0033_sync 970 r
+2011_09_26/2011_09_26_drive_0051_sync 347 r
+2011_09_26/2011_09_26_drive_0087_sync 168 l
+2011_09_30/2011_09_30_drive_0028_sync 1360 l
+2011_09_26/2011_09_26_drive_0091_sync 321 l
+2011_09_26/2011_09_26_drive_0051_sync 267 r
+2011_10_03/2011_10_03_drive_0034_sync 1984 r
+2011_10_03/2011_10_03_drive_0034_sync 1707 l
+2011_10_03/2011_10_03_drive_0034_sync 3928 l
+2011_09_30/2011_09_30_drive_0028_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 2538 l
+2011_10_03/2011_10_03_drive_0034_sync 178 r
+2011_09_29/2011_09_29_drive_0004_sync 39 l
+2011_10_03/2011_10_03_drive_0042_sync 466 l
+2011_09_26/2011_09_26_drive_0070_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 3147 r
+2011_09_26/2011_09_26_drive_0079_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 3853 l
+2011_09_26/2011_09_26_drive_0015_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 3915 r
+2011_09_30/2011_09_30_drive_0034_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 1374 l
+2011_09_30/2011_09_30_drive_0020_sync 986 l
+2011_09_30/2011_09_30_drive_0020_sync 657 r
+2011_09_30/2011_09_30_drive_0028_sync 393 l
+2011_10_03/2011_10_03_drive_0034_sync 2101 l
+2011_09_26/2011_09_26_drive_0028_sync 177 l
+2011_10_03/2011_10_03_drive_0034_sync 4155 r
+2011_09_30/2011_09_30_drive_0033_sync 573 r
+2011_09_26/2011_09_26_drive_0019_sync 271 l
+2011_10_03/2011_10_03_drive_0034_sync 839 r
+2011_09_30/2011_09_30_drive_0033_sync 1384 l
+2011_09_26/2011_09_26_drive_0087_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 876 l
+2011_09_30/2011_09_30_drive_0033_sync 1016 l
+2011_09_30/2011_09_30_drive_0033_sync 1119 r
+2011_09_30/2011_09_30_drive_0033_sync 722 l
+2011_09_26/2011_09_26_drive_0019_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 4412 l
+2011_09_26/2011_09_26_drive_0018_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 4046 r
+2011_09_26/2011_09_26_drive_0057_sync 161 l
+2011_09_30/2011_09_30_drive_0028_sync 38 r
+2011_09_26/2011_09_26_drive_0019_sync 415 r
+2011_09_30/2011_09_30_drive_0028_sync 5110 r
+2011_09_30/2011_09_30_drive_0028_sync 2821 l
+2011_09_30/2011_09_30_drive_0028_sync 3744 l
+2011_09_30/2011_09_30_drive_0034_sync 523 r
+2011_10_03/2011_10_03_drive_0042_sync 284 r
+2011_09_30/2011_09_30_drive_0028_sync 4004 l
+2011_09_26/2011_09_26_drive_0011_sync 172 r
+2011_09_26/2011_09_26_drive_0011_sync 101 r
+2011_10_03/2011_10_03_drive_0034_sync 491 r
+2011_09_30/2011_09_30_drive_0028_sync 1282 r
+2011_09_26/2011_09_26_drive_0005_sync 43 l
+2011_10_03/2011_10_03_drive_0042_sync 482 r
+2011_09_30/2011_09_30_drive_0028_sync 1718 r
+2011_10_03/2011_10_03_drive_0042_sync 725 r
+2011_10_03/2011_10_03_drive_0034_sync 3748 r
+2011_09_26/2011_09_26_drive_0087_sync 355 l
+2011_09_26/2011_09_26_drive_0018_sync 65 r
+2011_10_03/2011_10_03_drive_0034_sync 2570 l
+2011_09_30/2011_09_30_drive_0028_sync 844 l
+2011_09_30/2011_09_30_drive_0034_sync 156 r
+2011_10_03/2011_10_03_drive_0034_sync 4471 r
+2011_10_03/2011_10_03_drive_0034_sync 3100 r
+2011_09_26/2011_09_26_drive_0104_sync 238 l
+2011_09_29/2011_09_29_drive_0004_sync 284 l
+2011_09_26/2011_09_26_drive_0104_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 3807 l
+2011_09_26/2011_09_26_drive_0057_sync 343 l
+2011_09_30/2011_09_30_drive_0020_sync 686 l
+2011_09_26/2011_09_26_drive_0032_sync 369 l
+2011_09_26/2011_09_26_drive_0087_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 4406 r
+2011_10_03/2011_10_03_drive_0034_sync 2872 r
+2011_09_30/2011_09_30_drive_0028_sync 383 r
+2011_09_26/2011_09_26_drive_0032_sync 374 l
+2011_09_30/2011_09_30_drive_0028_sync 4911 l
+2011_10_03/2011_10_03_drive_0034_sync 1995 l
+2011_10_03/2011_10_03_drive_0034_sync 4501 r
+2011_09_29/2011_09_29_drive_0026_sync 41 r
+2011_09_30/2011_09_30_drive_0020_sync 784 l
+2011_09_26/2011_09_26_drive_0018_sync 73 r
+2011_10_03/2011_10_03_drive_0042_sync 137 r
+2011_09_30/2011_09_30_drive_0028_sync 2235 l
+2011_09_26/2011_09_26_drive_0104_sync 306 l
+2011_10_03/2011_10_03_drive_0042_sync 1016 r
+2011_09_26/2011_09_26_drive_0061_sync 3 l
+2011_09_30/2011_09_30_drive_0033_sync 514 l
+2011_09_30/2011_09_30_drive_0033_sync 469 r
+2011_09_30/2011_09_30_drive_0033_sync 531 r
+2011_09_30/2011_09_30_drive_0028_sync 2359 r
+2011_10_03/2011_10_03_drive_0034_sync 1144 l
+2011_09_30/2011_09_30_drive_0028_sync 4847 r
+2011_10_03/2011_10_03_drive_0034_sync 380 l
+2011_09_30/2011_09_30_drive_0033_sync 1010 l
+2011_09_30/2011_09_30_drive_0028_sync 365 l
+2011_10_03/2011_10_03_drive_0034_sync 2998 l
+2011_09_30/2011_09_30_drive_0028_sync 3582 l
+2011_10_03/2011_10_03_drive_0042_sync 510 l
+2011_09_30/2011_09_30_drive_0034_sync 1135 r
+2011_10_03/2011_10_03_drive_0034_sync 2566 r
+2011_09_26/2011_09_26_drive_0057_sync 125 r
+2011_09_26/2011_09_26_drive_0032_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 3019 l
+2011_09_26/2011_09_26_drive_0051_sync 70 l
+2011_09_30/2011_09_30_drive_0028_sync 538 l
+2011_10_03/2011_10_03_drive_0034_sync 2807 r
+2011_09_26/2011_09_26_drive_0104_sync 276 r
+2011_09_26/2011_09_26_drive_0011_sync 222 r
+2011_10_03/2011_10_03_drive_0034_sync 899 r
+2011_09_30/2011_09_30_drive_0033_sync 313 r
+2011_09_30/2011_09_30_drive_0034_sync 609 l
+2011_09_26/2011_09_26_drive_0061_sync 242 l
+2011_09_30/2011_09_30_drive_0028_sync 1830 l
+2011_09_26/2011_09_26_drive_0019_sync 192 r
+2011_09_26/2011_09_26_drive_0087_sync 479 l
+2011_09_30/2011_09_30_drive_0020_sync 799 l
+2011_09_26/2011_09_26_drive_0014_sync 202 r
+2011_09_26/2011_09_26_drive_0087_sync 471 l
+2011_10_03/2011_10_03_drive_0034_sync 1023 l
+2011_09_26/2011_09_26_drive_0028_sync 422 r
+2011_09_26/2011_09_26_drive_0028_sync 313 l
+2011_09_26/2011_09_26_drive_0022_sync 772 l
+2011_10_03/2011_10_03_drive_0034_sync 3259 r
+2011_09_30/2011_09_30_drive_0028_sync 3211 l
+2011_09_30/2011_09_30_drive_0020_sync 144 l
+2011_09_30/2011_09_30_drive_0034_sync 1216 r
+2011_09_26/2011_09_26_drive_0070_sync 318 l
+2011_09_26/2011_09_26_drive_0028_sync 77 r
+2011_09_26/2011_09_26_drive_0051_sync 258 l
+2011_09_26/2011_09_26_drive_0022_sync 144 r
+2011_09_30/2011_09_30_drive_0034_sync 599 r
+2011_10_03/2011_10_03_drive_0034_sync 4339 l
+2011_09_30/2011_09_30_drive_0028_sync 4297 r
+2011_09_30/2011_09_30_drive_0034_sync 1221 r
+2011_10_03/2011_10_03_drive_0034_sync 1954 r
+2011_09_30/2011_09_30_drive_0028_sync 3399 r
+2011_09_26/2011_09_26_drive_0061_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 3807 l
+2011_09_26/2011_09_26_drive_0070_sync 1 r
+2011_09_26/2011_09_26_drive_0022_sync 683 r
+2011_10_03/2011_10_03_drive_0042_sync 276 r
+2011_09_30/2011_09_30_drive_0028_sync 639 r
+2011_09_30/2011_09_30_drive_0028_sync 1529 l
+2011_09_26/2011_09_26_drive_0070_sync 85 r
+2011_10_03/2011_10_03_drive_0034_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 1083 l
+2011_10_03/2011_10_03_drive_0034_sync 1044 r
+2011_10_03/2011_10_03_drive_0034_sync 2711 l
+2011_09_30/2011_09_30_drive_0020_sync 948 r
+2011_09_26/2011_09_26_drive_0018_sync 22 r
+2011_09_30/2011_09_30_drive_0028_sync 2659 r
+2011_09_26/2011_09_26_drive_0051_sync 155 r
+2011_09_26/2011_09_26_drive_0015_sync 286 r
+2011_10_03/2011_10_03_drive_0034_sync 4652 l
+2011_09_26/2011_09_26_drive_0017_sync 112 l
+2011_09_26/2011_09_26_drive_0032_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 750 r
+2011_09_30/2011_09_30_drive_0033_sync 708 r
+2011_09_30/2011_09_30_drive_0033_sync 464 r
+2011_09_30/2011_09_30_drive_0028_sync 3801 l
+2011_09_30/2011_09_30_drive_0028_sync 4095 r
+2011_09_30/2011_09_30_drive_0033_sync 417 r
+2011_09_30/2011_09_30_drive_0033_sync 558 l
+2011_09_30/2011_09_30_drive_0028_sync 1604 r
+2011_09_30/2011_09_30_drive_0028_sync 1577 r
+2011_09_30/2011_09_30_drive_0028_sync 180 r
+2011_09_30/2011_09_30_drive_0020_sync 519 l
+2011_10_03/2011_10_03_drive_0034_sync 1863 l
+2011_10_03/2011_10_03_drive_0034_sync 1000 r
+2011_09_30/2011_09_30_drive_0028_sync 2378 r
+2011_09_26/2011_09_26_drive_0022_sync 576 r
+2011_09_30/2011_09_30_drive_0033_sync 368 l
+2011_09_30/2011_09_30_drive_0034_sync 980 r
+2011_09_30/2011_09_30_drive_0028_sync 520 r
+2011_09_30/2011_09_30_drive_0034_sync 486 r
+2011_09_26/2011_09_26_drive_0039_sync 228 r
+2011_09_26/2011_09_26_drive_0028_sync 64 l
+2011_09_26/2011_09_26_drive_0015_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 4441 r
+2011_09_30/2011_09_30_drive_0033_sync 1151 l
+2011_10_03/2011_10_03_drive_0042_sync 288 r
+2011_09_29/2011_09_29_drive_0004_sync 52 r
+2011_09_26/2011_09_26_drive_0057_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 4691 l
+2011_09_26/2011_09_26_drive_0051_sync 356 r
+2011_09_30/2011_09_30_drive_0028_sync 949 r
+2011_10_03/2011_10_03_drive_0034_sync 3633 r
+2011_09_26/2011_09_26_drive_0087_sync 687 l
+2011_10_03/2011_10_03_drive_0042_sync 1103 r
+2011_09_30/2011_09_30_drive_0028_sync 3659 l
+2011_09_26/2011_09_26_drive_0014_sync 173 r
+2011_10_03/2011_10_03_drive_0042_sync 1131 l
+2011_09_30/2011_09_30_drive_0034_sync 335 l
+2011_10_03/2011_10_03_drive_0042_sync 519 l
+2011_09_30/2011_09_30_drive_0028_sync 2583 r
+2011_09_30/2011_09_30_drive_0028_sync 654 l
+2011_09_30/2011_09_30_drive_0033_sync 793 l
+2011_09_26/2011_09_26_drive_0070_sync 143 l
+2011_09_26/2011_09_26_drive_0070_sync 17 r
+2011_10_03/2011_10_03_drive_0034_sync 875 r
+2011_10_03/2011_10_03_drive_0034_sync 4567 l
+2011_09_26/2011_09_26_drive_0019_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 2637 l
+2011_09_30/2011_09_30_drive_0028_sync 2249 l
+2011_09_30/2011_09_30_drive_0028_sync 4888 r
+2011_09_26/2011_09_26_drive_0070_sync 268 l
+2011_09_30/2011_09_30_drive_0028_sync 673 l
+2011_09_26/2011_09_26_drive_0104_sync 117 r
+2011_09_26/2011_09_26_drive_0095_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 1668 r
+2011_09_30/2011_09_30_drive_0020_sync 213 r
+2011_09_26/2011_09_26_drive_0015_sync 294 l
+2011_09_26/2011_09_26_drive_0022_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 325 l
+2011_09_26/2011_09_26_drive_0015_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 3457 l
+2011_09_26/2011_09_26_drive_0039_sync 358 l
+2011_09_30/2011_09_30_drive_0033_sync 248 r
+2011_09_26/2011_09_26_drive_0057_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 3646 l
+2011_09_30/2011_09_30_drive_0028_sync 2638 r
+2011_09_26/2011_09_26_drive_0061_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 1434 r
+2011_09_30/2011_09_30_drive_0028_sync 891 r
+2011_09_30/2011_09_30_drive_0028_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 3958 r
+2011_09_26/2011_09_26_drive_0087_sync 302 r
+2011_09_30/2011_09_30_drive_0034_sync 194 r
+2011_09_26/2011_09_26_drive_0051_sync 167 l
+2011_09_26/2011_09_26_drive_0005_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 1700 r
+2011_10_03/2011_10_03_drive_0034_sync 1732 l
+2011_09_30/2011_09_30_drive_0028_sync 3398 r
+2011_09_26/2011_09_26_drive_0035_sync 86 l
+2011_09_26/2011_09_26_drive_0028_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 3048 l
+2011_09_26/2011_09_26_drive_0011_sync 164 l
+2011_09_26/2011_09_26_drive_0022_sync 569 l
+2011_09_26/2011_09_26_drive_0061_sync 269 l
+2011_09_30/2011_09_30_drive_0020_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 97 r
+2011_09_26/2011_09_26_drive_0104_sync 54 r
+2011_10_03/2011_10_03_drive_0034_sync 4067 l
+2011_09_26/2011_09_26_drive_0028_sync 340 l
+2011_10_03/2011_10_03_drive_0034_sync 2321 l
+2011_10_03/2011_10_03_drive_0034_sync 607 r
+2011_10_03/2011_10_03_drive_0042_sync 912 r
+2011_09_30/2011_09_30_drive_0033_sync 1344 r
+2011_10_03/2011_10_03_drive_0042_sync 719 l
+2011_09_30/2011_09_30_drive_0033_sync 1100 l
+2011_09_30/2011_09_30_drive_0034_sync 367 r
+2011_09_30/2011_09_30_drive_0028_sync 1182 r
+2011_10_03/2011_10_03_drive_0034_sync 3476 l
+2011_09_26/2011_09_26_drive_0070_sync 4 r
+2011_10_03/2011_10_03_drive_0042_sync 657 r
+2011_09_30/2011_09_30_drive_0028_sync 4871 r
+2011_09_26/2011_09_26_drive_0061_sync 68 l
+2011_09_30/2011_09_30_drive_0028_sync 3265 l
+2011_09_30/2011_09_30_drive_0028_sync 4909 r
+2011_10_03/2011_10_03_drive_0034_sync 4240 l
+2011_09_30/2011_09_30_drive_0028_sync 1204 l
+2011_10_03/2011_10_03_drive_0034_sync 4407 l
+2011_09_29/2011_09_29_drive_0004_sync 29 r
+2011_09_30/2011_09_30_drive_0034_sync 873 r
+2011_10_03/2011_10_03_drive_0042_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 987 r
+2011_09_30/2011_09_30_drive_0028_sync 1172 l
+2011_10_03/2011_10_03_drive_0034_sync 1754 r
+2011_09_30/2011_09_30_drive_0034_sync 488 r
+2011_09_26/2011_09_26_drive_0039_sync 205 r
+2011_09_26/2011_09_26_drive_0005_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 4581 r
+2011_10_03/2011_10_03_drive_0034_sync 2245 l
+2011_10_03/2011_10_03_drive_0042_sync 304 r
+2011_09_30/2011_09_30_drive_0033_sync 490 r
+2011_09_26/2011_09_26_drive_0095_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 2697 r
+2011_09_26/2011_09_26_drive_0019_sync 476 l
+2011_09_30/2011_09_30_drive_0028_sync 4771 r
+2011_09_26/2011_09_26_drive_0015_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 770 r
+2011_09_26/2011_09_26_drive_0022_sync 115 r
+2011_09_26/2011_09_26_drive_0057_sync 283 r
+2011_09_26/2011_09_26_drive_0032_sync 290 l
+2011_09_30/2011_09_30_drive_0028_sync 24 r
+2011_09_26/2011_09_26_drive_0051_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 689 r
+2011_09_30/2011_09_30_drive_0028_sync 2214 l
+2011_09_30/2011_09_30_drive_0028_sync 4649 l
+2011_10_03/2011_10_03_drive_0042_sync 267 r
+2011_10_03/2011_10_03_drive_0034_sync 2654 r
+2011_09_30/2011_09_30_drive_0028_sync 2844 l
+2011_09_30/2011_09_30_drive_0020_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 1421 r
+2011_09_30/2011_09_30_drive_0028_sync 2836 r
+2011_09_26/2011_09_26_drive_0091_sync 245 l
+2011_09_26/2011_09_26_drive_0022_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 3722 r
+2011_09_26/2011_09_26_drive_0087_sync 203 l
+2011_09_30/2011_09_30_drive_0028_sync 4058 l
+2011_10_03/2011_10_03_drive_0034_sync 2511 r
+2011_09_26/2011_09_26_drive_0061_sync 669 r
+2011_09_26/2011_09_26_drive_0015_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 1500 l
+2011_09_30/2011_09_30_drive_0028_sync 4736 l
+2011_09_30/2011_09_30_drive_0020_sync 881 r
+2011_10_03/2011_10_03_drive_0034_sync 532 r
+2011_09_30/2011_09_30_drive_0028_sync 765 l
+2011_09_30/2011_09_30_drive_0033_sync 606 r
+2011_09_26/2011_09_26_drive_0018_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 3045 r
+2011_09_30/2011_09_30_drive_0033_sync 144 r
+2011_09_26/2011_09_26_drive_0035_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 4054 l
+2011_10_03/2011_10_03_drive_0034_sync 1777 r
+2011_09_30/2011_09_30_drive_0020_sync 136 l
+2011_09_29/2011_09_29_drive_0004_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4456 l
+2011_09_30/2011_09_30_drive_0033_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 2961 l
+2011_09_30/2011_09_30_drive_0028_sync 4187 l
+2011_10_03/2011_10_03_drive_0034_sync 3014 r
+2011_10_03/2011_10_03_drive_0042_sync 640 r
+2011_09_26/2011_09_26_drive_0011_sync 26 l
+2011_09_26/2011_09_26_drive_0005_sync 56 l
+2011_10_03/2011_10_03_drive_0034_sync 4107 l
+2011_09_26/2011_09_26_drive_0087_sync 508 l
+2011_09_30/2011_09_30_drive_0028_sync 100 r
+2011_09_26/2011_09_26_drive_0014_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 3781 l
+2011_09_30/2011_09_30_drive_0028_sync 4431 l
+2011_09_30/2011_09_30_drive_0034_sync 596 r
+2011_09_26/2011_09_26_drive_0019_sync 231 r
+2011_09_30/2011_09_30_drive_0034_sync 1112 r
+2011_09_26/2011_09_26_drive_0022_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 4816 r
+2011_09_30/2011_09_30_drive_0034_sync 679 l
+2011_09_26/2011_09_26_drive_0104_sync 163 l
+2011_09_30/2011_09_30_drive_0028_sync 4877 l
+2011_09_28/2011_09_28_drive_0001_sync 96 l
+2011_09_26/2011_09_26_drive_0019_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 1465 l
+2011_09_26/2011_09_26_drive_0017_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 2151 r
+2011_09_29/2011_09_29_drive_0004_sync 71 l
+2011_09_26/2011_09_26_drive_0035_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 3535 r
+2011_10_03/2011_10_03_drive_0034_sync 2848 r
+2011_09_26/2011_09_26_drive_0087_sync 348 l
+2011_09_26/2011_09_26_drive_0028_sync 332 l
+2011_09_26/2011_09_26_drive_0061_sync 18 r
+2011_09_30/2011_09_30_drive_0020_sync 570 l
+2011_10_03/2011_10_03_drive_0034_sync 793 r
+2011_10_03/2011_10_03_drive_0034_sync 1002 r
+2011_09_30/2011_09_30_drive_0033_sync 67 l
+2011_10_03/2011_10_03_drive_0042_sync 1030 l
+2011_09_30/2011_09_30_drive_0028_sync 2745 l
+2011_09_26/2011_09_26_drive_0022_sync 226 r
+2011_09_30/2011_09_30_drive_0034_sync 999 l
+2011_09_30/2011_09_30_drive_0033_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 1893 r
+2011_09_30/2011_09_30_drive_0033_sync 1051 l
+2011_09_26/2011_09_26_drive_0017_sync 42 l
+2011_10_03/2011_10_03_drive_0034_sync 934 l
+2011_09_30/2011_09_30_drive_0020_sync 950 r
+2011_09_30/2011_09_30_drive_0028_sync 2016 l
+2011_09_29/2011_09_29_drive_0004_sync 99 r
+2011_09_26/2011_09_26_drive_0017_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 1569 l
+2011_09_30/2011_09_30_drive_0034_sync 587 r
+2011_10_03/2011_10_03_drive_0034_sync 1351 r
+2011_09_26/2011_09_26_drive_0011_sync 176 r
+2011_09_26/2011_09_26_drive_0091_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 5159 r
+2011_09_26/2011_09_26_drive_0087_sync 365 r
+2011_09_30/2011_09_30_drive_0033_sync 1261 r
+2011_09_30/2011_09_30_drive_0028_sync 2613 l
+2011_09_29/2011_09_29_drive_0004_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 2729 l
+2011_09_29/2011_09_29_drive_0026_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2128 r
+2011_10_03/2011_10_03_drive_0034_sync 2804 r
+2011_10_03/2011_10_03_drive_0034_sync 4185 l
+2011_09_26/2011_09_26_drive_0035_sync 108 l
+2011_10_03/2011_10_03_drive_0034_sync 1123 r
+2011_09_26/2011_09_26_drive_0061_sync 486 r
+2011_09_26/2011_09_26_drive_0057_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 4400 l
+2011_09_30/2011_09_30_drive_0028_sync 1384 r
+2011_09_30/2011_09_30_drive_0033_sync 979 l
+2011_09_30/2011_09_30_drive_0020_sync 765 l
+2011_09_30/2011_09_30_drive_0033_sync 571 r
+2011_09_26/2011_09_26_drive_0095_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 1636 l
+2011_10_03/2011_10_03_drive_0034_sync 945 l
+2011_09_26/2011_09_26_drive_0014_sync 38 r
+2011_09_26/2011_09_26_drive_0022_sync 536 r
+2011_09_26/2011_09_26_drive_0061_sync 459 l
+2011_10_03/2011_10_03_drive_0042_sync 132 l
+2011_10_03/2011_10_03_drive_0042_sync 467 l
+2011_09_26/2011_09_26_drive_0051_sync 406 l
+2011_09_26/2011_09_26_drive_0001_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 4219 r
+2011_09_26/2011_09_26_drive_0014_sync 269 r
+2011_09_26/2011_09_26_drive_0091_sync 276 l
+2011_09_26/2011_09_26_drive_0001_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 3755 l
+2011_09_30/2011_09_30_drive_0034_sync 651 l
+2011_09_26/2011_09_26_drive_0091_sync 332 l
+2011_09_30/2011_09_30_drive_0020_sync 1072 l
+2011_10_03/2011_10_03_drive_0042_sync 1114 l
+2011_09_26/2011_09_26_drive_0014_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 2292 r
+2011_09_30/2011_09_30_drive_0034_sync 840 r
+2011_09_26/2011_09_26_drive_0014_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 4652 r
+2011_10_03/2011_10_03_drive_0034_sync 1606 l
+2011_10_03/2011_10_03_drive_0034_sync 1003 l
+2011_09_30/2011_09_30_drive_0028_sync 3404 r
+2011_09_30/2011_09_30_drive_0028_sync 4034 l
+2011_10_03/2011_10_03_drive_0034_sync 3090 l
+2011_09_26/2011_09_26_drive_0019_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 4099 l
+2011_09_26/2011_09_26_drive_0015_sync 23 l
+2011_10_03/2011_10_03_drive_0042_sync 605 l
+2011_10_03/2011_10_03_drive_0034_sync 3154 r
+2011_10_03/2011_10_03_drive_0042_sync 433 r
+2011_09_30/2011_09_30_drive_0028_sync 1733 l
+2011_09_26/2011_09_26_drive_0018_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 3716 r
+2011_09_30/2011_09_30_drive_0020_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 2069 l
+2011_09_26/2011_09_26_drive_0019_sync 258 r
+2011_10_03/2011_10_03_drive_0042_sync 114 r
+2011_09_30/2011_09_30_drive_0033_sync 1474 l
+2011_09_30/2011_09_30_drive_0028_sync 399 r
+2011_10_03/2011_10_03_drive_0042_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 4802 r
+2011_09_30/2011_09_30_drive_0034_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 2249 r
+2011_09_26/2011_09_26_drive_0091_sync 33 r
+2011_09_30/2011_09_30_drive_0033_sync 831 r
+2011_09_26/2011_09_26_drive_0087_sync 284 l
+2011_09_26/2011_09_26_drive_0051_sync 425 r
+2011_09_26/2011_09_26_drive_0039_sync 71 l
+2011_09_30/2011_09_30_drive_0033_sync 561 l
+2011_09_30/2011_09_30_drive_0028_sync 3440 l
+2011_10_03/2011_10_03_drive_0034_sync 4493 l
+2011_10_03/2011_10_03_drive_0042_sync 659 l
+2011_09_26/2011_09_26_drive_0113_sync 57 r
+2011_09_30/2011_09_30_drive_0033_sync 1187 r
+2011_09_26/2011_09_26_drive_0051_sync 407 r
+2011_09_26/2011_09_26_drive_0022_sync 376 l
+2011_09_30/2011_09_30_drive_0028_sync 4347 l
+2011_09_30/2011_09_30_drive_0028_sync 4831 l
+2011_09_30/2011_09_30_drive_0028_sync 1572 l
+2011_09_26/2011_09_26_drive_0019_sync 449 l
+2011_10_03/2011_10_03_drive_0034_sync 2206 l
+2011_09_29/2011_09_29_drive_0026_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 3570 l
+2011_09_30/2011_09_30_drive_0033_sync 1278 l
+2011_09_30/2011_09_30_drive_0034_sync 1089 r
+2011_09_30/2011_09_30_drive_0034_sync 617 l
+2011_09_30/2011_09_30_drive_0020_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 1194 l
+2011_09_30/2011_09_30_drive_0028_sync 623 l
+2011_09_26/2011_09_26_drive_0061_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 3218 l
+2011_09_30/2011_09_30_drive_0033_sync 335 l
+2011_09_30/2011_09_30_drive_0033_sync 1184 l
+2011_10_03/2011_10_03_drive_0034_sync 765 r
+2011_09_30/2011_09_30_drive_0034_sync 1053 l
+2011_10_03/2011_10_03_drive_0034_sync 1922 r
+2011_09_30/2011_09_30_drive_0020_sync 196 l
+2011_09_29/2011_09_29_drive_0004_sync 227 r
+2011_10_03/2011_10_03_drive_0034_sync 1979 l
+2011_09_26/2011_09_26_drive_0015_sync 122 r
+2011_09_26/2011_09_26_drive_0104_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 1651 r
+2011_10_03/2011_10_03_drive_0042_sync 13 l
+2011_09_26/2011_09_26_drive_0057_sync 261 l
+2011_10_03/2011_10_03_drive_0034_sync 1731 l
+2011_09_26/2011_09_26_drive_0001_sync 15 l
+2011_09_26/2011_09_26_drive_0061_sync 238 r
+2011_10_03/2011_10_03_drive_0034_sync 2913 r
+2011_09_30/2011_09_30_drive_0028_sync 1658 l
+2011_09_30/2011_09_30_drive_0034_sync 313 r
+2011_10_03/2011_10_03_drive_0042_sync 438 r
+2011_09_30/2011_09_30_drive_0028_sync 427 r
+2011_09_30/2011_09_30_drive_0020_sync 794 l
+2011_09_30/2011_09_30_drive_0028_sync 2127 r
+2011_09_26/2011_09_26_drive_0001_sync 10 l
+2011_10_03/2011_10_03_drive_0034_sync 2646 l
+2011_09_26/2011_09_26_drive_0113_sync 20 r
+2011_09_26/2011_09_26_drive_0015_sync 212 r
+2011_09_26/2011_09_26_drive_0032_sync 198 l
+2011_09_30/2011_09_30_drive_0028_sync 3576 r
+2011_09_30/2011_09_30_drive_0034_sync 1104 r
+2011_09_30/2011_09_30_drive_0028_sync 2194 r
+2011_09_30/2011_09_30_drive_0020_sync 947 r
+2011_09_26/2011_09_26_drive_0022_sync 768 r
+2011_09_30/2011_09_30_drive_0020_sync 50 r
+2011_09_26/2011_09_26_drive_0087_sync 364 r
+2011_10_03/2011_10_03_drive_0034_sync 1407 r
+2011_10_03/2011_10_03_drive_0034_sync 3796 l
+2011_09_26/2011_09_26_drive_0028_sync 212 r
+2011_09_26/2011_09_26_drive_0022_sync 196 l
+2011_10_03/2011_10_03_drive_0034_sync 3181 l
+2011_10_03/2011_10_03_drive_0034_sync 2077 r
+2011_09_30/2011_09_30_drive_0028_sync 4789 r
+2011_10_03/2011_10_03_drive_0034_sync 3521 l
+2011_09_30/2011_09_30_drive_0033_sync 228 r
+2011_09_29/2011_09_29_drive_0026_sync 133 l
+2011_09_26/2011_09_26_drive_0070_sync 361 r
+2011_09_26/2011_09_26_drive_0022_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 3244 l
+2011_09_30/2011_09_30_drive_0028_sync 2795 r
+2011_09_26/2011_09_26_drive_0104_sync 203 l
+2011_09_30/2011_09_30_drive_0028_sync 3153 r
+2011_09_26/2011_09_26_drive_0032_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 3793 l
+2011_09_26/2011_09_26_drive_0070_sync 7 r
+2011_09_26/2011_09_26_drive_0061_sync 433 r
+2011_09_26/2011_09_26_drive_0018_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 1385 r
+2011_09_30/2011_09_30_drive_0028_sync 3082 l
+2011_10_03/2011_10_03_drive_0034_sync 4085 l
+2011_09_26/2011_09_26_drive_0001_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 2316 r
+2011_09_30/2011_09_30_drive_0028_sync 3770 r
+2011_09_30/2011_09_30_drive_0028_sync 4524 l
+2011_09_26/2011_09_26_drive_0057_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 4209 r
+2011_09_30/2011_09_30_drive_0020_sync 317 l
+2011_09_26/2011_09_26_drive_0091_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 4809 l
+2011_10_03/2011_10_03_drive_0034_sync 3069 r
+2011_09_26/2011_09_26_drive_0095_sync 116 l
+2011_09_30/2011_09_30_drive_0020_sync 985 r
+2011_10_03/2011_10_03_drive_0042_sync 251 l
+2011_10_03/2011_10_03_drive_0034_sync 2368 r
+2011_10_03/2011_10_03_drive_0034_sync 4473 r
+2011_10_03/2011_10_03_drive_0034_sync 3059 r
+2011_10_03/2011_10_03_drive_0042_sync 1069 l
+2011_09_29/2011_09_29_drive_0004_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 3451 r
+2011_09_26/2011_09_26_drive_0061_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 3567 l
+2011_09_30/2011_09_30_drive_0028_sync 297 l
+2011_10_03/2011_10_03_drive_0034_sync 1638 l
+2011_09_26/2011_09_26_drive_0014_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 3 l
+2011_09_30/2011_09_30_drive_0034_sync 346 r
+2011_09_30/2011_09_30_drive_0028_sync 895 l
+2011_09_26/2011_09_26_drive_0028_sync 353 l
+2011_09_30/2011_09_30_drive_0033_sync 384 l
+2011_10_03/2011_10_03_drive_0042_sync 625 l
+2011_09_26/2011_09_26_drive_0015_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 4206 r
+2011_10_03/2011_10_03_drive_0034_sync 2099 r
+2011_09_29/2011_09_29_drive_0004_sync 95 r
+2011_09_26/2011_09_26_drive_0061_sync 547 l
+2011_09_30/2011_09_30_drive_0028_sync 3460 l
+2011_09_26/2011_09_26_drive_0014_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 3 r
+2011_09_26/2011_09_26_drive_0028_sync 206 l
+2011_09_26/2011_09_26_drive_0091_sync 338 l
+2011_09_30/2011_09_30_drive_0028_sync 3397 l
+2011_09_26/2011_09_26_drive_0087_sync 265 l
+2011_09_26/2011_09_26_drive_0022_sync 63 r
+2011_09_26/2011_09_26_drive_0032_sync 109 r
+2011_09_26/2011_09_26_drive_0070_sync 303 r
+2011_09_26/2011_09_26_drive_0061_sync 491 r
+2011_09_26/2011_09_26_drive_0051_sync 299 r
+2011_10_03/2011_10_03_drive_0042_sync 1064 r
+2011_09_30/2011_09_30_drive_0028_sync 924 r
+2011_09_30/2011_09_30_drive_0028_sync 2395 l
+2011_09_26/2011_09_26_drive_0028_sync 205 r
+2011_09_26/2011_09_26_drive_0011_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 3282 l
+2011_09_26/2011_09_26_drive_0070_sync 267 l
+2011_10_03/2011_10_03_drive_0034_sync 3143 r
+2011_09_30/2011_09_30_drive_0033_sync 202 l
+2011_09_30/2011_09_30_drive_0034_sync 103 l
+2011_09_26/2011_09_26_drive_0019_sync 285 r
+2011_10_03/2011_10_03_drive_0042_sync 1135 r
+2011_10_03/2011_10_03_drive_0042_sync 801 l
+2011_09_26/2011_09_26_drive_0015_sync 19 r
+2011_09_30/2011_09_30_drive_0020_sync 863 r
+2011_10_03/2011_10_03_drive_0042_sync 526 l
+2011_10_03/2011_10_03_drive_0034_sync 3810 l
+2011_10_03/2011_10_03_drive_0034_sync 1108 l
+2011_10_03/2011_10_03_drive_0034_sync 3110 r
+2011_09_26/2011_09_26_drive_0011_sync 219 r
+2011_09_26/2011_09_26_drive_0070_sync 5 r
+2011_09_26/2011_09_26_drive_0104_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 4995 r
+2011_09_26/2011_09_26_drive_0057_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 4864 l
+2011_09_30/2011_09_30_drive_0034_sync 530 l
+2011_09_26/2011_09_26_drive_0095_sync 121 r
+2011_09_26/2011_09_26_drive_0061_sync 495 r
+2011_09_26/2011_09_26_drive_0022_sync 271 r
+2011_09_30/2011_09_30_drive_0028_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 3887 r
+2011_09_26/2011_09_26_drive_0022_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 2576 l
+2011_09_26/2011_09_26_drive_0087_sync 614 r
+2011_09_30/2011_09_30_drive_0033_sync 1131 l
+2011_09_30/2011_09_30_drive_0033_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 4576 r
+2011_09_30/2011_09_30_drive_0028_sync 295 l
+2011_09_30/2011_09_30_drive_0020_sync 563 r
+2011_09_30/2011_09_30_drive_0028_sync 2865 l
+2011_09_26/2011_09_26_drive_0022_sync 722 r
+2011_09_26/2011_09_26_drive_0087_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 1507 r
+2011_09_30/2011_09_30_drive_0028_sync 2712 l
+2011_09_26/2011_09_26_drive_0104_sync 160 r
+2011_09_30/2011_09_30_drive_0034_sync 112 r
+2011_10_03/2011_10_03_drive_0042_sync 735 l
+2011_10_03/2011_10_03_drive_0034_sync 2320 l
+2011_09_26/2011_09_26_drive_0019_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 593 r
+2011_09_30/2011_09_30_drive_0028_sync 5129 r
+2011_09_30/2011_09_30_drive_0028_sync 2982 r
+2011_09_30/2011_09_30_drive_0033_sync 921 l
+2011_09_30/2011_09_30_drive_0028_sync 908 l
+2011_10_03/2011_10_03_drive_0034_sync 4126 r
+2011_10_03/2011_10_03_drive_0034_sync 3644 l
+2011_09_30/2011_09_30_drive_0033_sync 428 r
+2011_09_26/2011_09_26_drive_0018_sync 259 l
+2011_10_03/2011_10_03_drive_0034_sync 224 r
+2011_09_30/2011_09_30_drive_0028_sync 4709 l
+2011_09_26/2011_09_26_drive_0022_sync 457 l
+2011_09_30/2011_09_30_drive_0033_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 1133 l
+2011_09_30/2011_09_30_drive_0020_sync 40 l
+2011_09_26/2011_09_26_drive_0051_sync 23 r
+2011_09_26/2011_09_26_drive_0091_sync 72 l
+2011_09_26/2011_09_26_drive_0104_sync 38 r
+2011_09_26/2011_09_26_drive_0091_sync 315 r
+2011_09_30/2011_09_30_drive_0020_sync 1086 l
+2011_10_03/2011_10_03_drive_0034_sync 1348 l
+2011_09_26/2011_09_26_drive_0070_sync 75 r
+2011_09_29/2011_09_29_drive_0004_sync 15 l
+2011_09_28/2011_09_28_drive_0001_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 1607 r
+2011_09_26/2011_09_26_drive_0057_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 1620 r
+2011_10_03/2011_10_03_drive_0034_sync 4298 l
+2011_09_30/2011_09_30_drive_0028_sync 4026 r
+2011_09_26/2011_09_26_drive_0057_sync 144 r
+2011_09_26/2011_09_26_drive_0011_sync 86 l
+2011_09_26/2011_09_26_drive_0022_sync 494 l
+2011_09_26/2011_09_26_drive_0028_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 3082 r
+2011_09_30/2011_09_30_drive_0028_sync 4666 l
+2011_10_03/2011_10_03_drive_0034_sync 2799 r
+2011_09_30/2011_09_30_drive_0028_sync 820 l
+2011_09_26/2011_09_26_drive_0028_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 50 r
+2011_09_26/2011_09_26_drive_0061_sync 657 l
+2011_10_03/2011_10_03_drive_0034_sync 890 l
+2011_09_26/2011_09_26_drive_0061_sync 2 r
+2011_09_29/2011_09_29_drive_0026_sync 62 l
+2011_09_26/2011_09_26_drive_0051_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 185 l
+2011_09_26/2011_09_26_drive_0019_sync 240 l
+2011_10_03/2011_10_03_drive_0042_sync 262 r
+2011_10_03/2011_10_03_drive_0042_sync 306 r
+2011_10_03/2011_10_03_drive_0034_sync 2220 l
+2011_09_26/2011_09_26_drive_0019_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 449 l
+2011_09_29/2011_09_29_drive_0026_sync 129 r
+2011_09_26/2011_09_26_drive_0057_sync 285 r
+2011_09_30/2011_09_30_drive_0020_sync 400 l
+2011_10_03/2011_10_03_drive_0034_sync 2979 r
+2011_09_30/2011_09_30_drive_0033_sync 1507 l
+2011_09_26/2011_09_26_drive_0070_sync 1 l
+2011_09_29/2011_09_29_drive_0004_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 4553 r
+2011_09_26/2011_09_26_drive_0039_sync 203 r
+2011_09_30/2011_09_30_drive_0034_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 2173 r
+2011_09_30/2011_09_30_drive_0028_sync 5154 r
+2011_09_26/2011_09_26_drive_0087_sync 575 r
+2011_09_30/2011_09_30_drive_0028_sync 3924 r
+2011_10_03/2011_10_03_drive_0034_sync 564 l
+2011_09_26/2011_09_26_drive_0095_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 2530 r
+2011_09_26/2011_09_26_drive_0032_sync 369 r
+2011_09_26/2011_09_26_drive_0070_sync 122 r
+2011_10_03/2011_10_03_drive_0042_sync 362 l
+2011_09_30/2011_09_30_drive_0020_sync 551 r
+2011_09_30/2011_09_30_drive_0028_sync 4022 l
+2011_09_30/2011_09_30_drive_0028_sync 4705 l
+2011_09_30/2011_09_30_drive_0034_sync 385 r
+2011_09_30/2011_09_30_drive_0028_sync 2469 r
+2011_09_30/2011_09_30_drive_0028_sync 922 l
+2011_09_26/2011_09_26_drive_0070_sync 27 l
+2011_09_26/2011_09_26_drive_0087_sync 83 r
+2011_10_03/2011_10_03_drive_0034_sync 3055 r
+2011_09_30/2011_09_30_drive_0034_sync 883 l
+2011_10_03/2011_10_03_drive_0034_sync 859 r
+2011_09_26/2011_09_26_drive_0039_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 3885 l
+2011_10_03/2011_10_03_drive_0034_sync 4248 l
+2011_09_30/2011_09_30_drive_0028_sync 4045 r
+2011_09_26/2011_09_26_drive_0091_sync 41 r
+2011_09_26/2011_09_26_drive_0087_sync 306 r
+2011_09_26/2011_09_26_drive_0019_sync 94 l
+2011_09_26/2011_09_26_drive_0022_sync 776 r
+2011_09_26/2011_09_26_drive_0018_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 581 l
+2011_09_30/2011_09_30_drive_0020_sync 437 r
+2011_09_30/2011_09_30_drive_0034_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 4010 r
+2011_09_30/2011_09_30_drive_0020_sync 745 r
+2011_09_26/2011_09_26_drive_0095_sync 234 l
+2011_09_26/2011_09_26_drive_0070_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 3457 l
+2011_09_26/2011_09_26_drive_0039_sync 117 l
+2011_09_26/2011_09_26_drive_0018_sync 47 r
+2011_09_26/2011_09_26_drive_0019_sync 109 l
+2011_09_26/2011_09_26_drive_0017_sync 4 l
+2011_09_26/2011_09_26_drive_0104_sync 123 l
+2011_09_26/2011_09_26_drive_0032_sync 314 l
+2011_09_26/2011_09_26_drive_0087_sync 680 r
+2011_09_30/2011_09_30_drive_0028_sync 373 l
+2011_09_26/2011_09_26_drive_0087_sync 578 r
+2011_09_30/2011_09_30_drive_0028_sync 3311 l
+2011_09_30/2011_09_30_drive_0033_sync 473 l
+2011_09_30/2011_09_30_drive_0020_sync 270 l
+2011_09_26/2011_09_26_drive_0022_sync 453 l
+2011_09_30/2011_09_30_drive_0020_sync 639 l
+2011_10_03/2011_10_03_drive_0034_sync 1058 r
+2011_10_03/2011_10_03_drive_0034_sync 2280 l
+2011_09_30/2011_09_30_drive_0028_sync 3149 l
+2011_09_30/2011_09_30_drive_0033_sync 1195 l
+2011_10_03/2011_10_03_drive_0034_sync 993 r
+2011_09_30/2011_09_30_drive_0034_sync 917 l
+2011_09_30/2011_09_30_drive_0028_sync 1912 l
+2011_09_30/2011_09_30_drive_0028_sync 125 r
+2011_09_30/2011_09_30_drive_0034_sync 553 r
+2011_09_30/2011_09_30_drive_0033_sync 1266 l
+2011_09_26/2011_09_26_drive_0028_sync 72 r
+2011_09_26/2011_09_26_drive_0039_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 3741 l
+2011_09_26/2011_09_26_drive_0061_sync 465 r
+2011_09_30/2011_09_30_drive_0028_sync 2819 r
+2011_09_30/2011_09_30_drive_0028_sync 3697 l
+2011_10_03/2011_10_03_drive_0034_sync 2859 l
+2011_09_26/2011_09_26_drive_0011_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 1863 l
+2011_09_26/2011_09_26_drive_0061_sync 515 l
+2011_10_03/2011_10_03_drive_0034_sync 3132 l
+2011_09_29/2011_09_29_drive_0004_sync 70 r
+2011_09_29/2011_09_29_drive_0004_sync 216 r
+2011_09_30/2011_09_30_drive_0020_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 4000 r
+2011_10_03/2011_10_03_drive_0042_sync 126 l
+2011_09_29/2011_09_29_drive_0004_sync 328 l
+2011_09_30/2011_09_30_drive_0028_sync 1127 l
+2011_09_30/2011_09_30_drive_0028_sync 1412 l
+2011_10_03/2011_10_03_drive_0034_sync 1335 l
+2011_09_30/2011_09_30_drive_0034_sync 649 l
+2011_09_30/2011_09_30_drive_0028_sync 1577 l
+2011_09_26/2011_09_26_drive_0070_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 3436 l
+2011_10_03/2011_10_03_drive_0034_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 952 l
+2011_09_26/2011_09_26_drive_0039_sync 333 r
+2011_09_26/2011_09_26_drive_0032_sync 230 r
+2011_09_26/2011_09_26_drive_0028_sync 138 l
+2011_09_26/2011_09_26_drive_0035_sync 38 l
+2011_10_03/2011_10_03_drive_0034_sync 1259 l
+2011_09_30/2011_09_30_drive_0034_sync 1134 r
+2011_09_26/2011_09_26_drive_0018_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 2090 l
+2011_09_26/2011_09_26_drive_0061_sync 488 l
+2011_09_26/2011_09_26_drive_0011_sync 106 r
+2011_09_26/2011_09_26_drive_0015_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 1221 l
+2011_09_26/2011_09_26_drive_0061_sync 529 r
+2011_09_26/2011_09_26_drive_0095_sync 132 l
+2011_09_30/2011_09_30_drive_0034_sync 758 r
+2011_10_03/2011_10_03_drive_0034_sync 2015 r
+2011_09_26/2011_09_26_drive_0087_sync 686 l
+2011_09_26/2011_09_26_drive_0051_sync 152 r
+2011_09_26/2011_09_26_drive_0032_sync 190 l
+2011_09_29/2011_09_29_drive_0026_sync 53 r
+2011_10_03/2011_10_03_drive_0042_sync 1011 r
+2011_09_30/2011_09_30_drive_0020_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 1781 l
+2011_09_26/2011_09_26_drive_0028_sync 149 l
+2011_10_03/2011_10_03_drive_0034_sync 2961 l
+2011_10_03/2011_10_03_drive_0034_sync 863 r
+2011_09_26/2011_09_26_drive_0104_sync 39 r
+2011_09_26/2011_09_26_drive_0079_sync 35 r
+2011_09_30/2011_09_30_drive_0034_sync 702 r
+2011_09_26/2011_09_26_drive_0070_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 2271 l
+2011_10_03/2011_10_03_drive_0034_sync 4395 l
+2011_09_26/2011_09_26_drive_0087_sync 372 l
+2011_09_30/2011_09_30_drive_0028_sync 4044 l
+2011_09_26/2011_09_26_drive_0014_sync 273 r
+2011_09_30/2011_09_30_drive_0028_sync 3073 l
+2011_09_26/2011_09_26_drive_0017_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 1489 l
+2011_10_03/2011_10_03_drive_0034_sync 300 r
+2011_09_26/2011_09_26_drive_0022_sync 617 r
+2011_09_29/2011_09_29_drive_0004_sync 204 l
+2011_10_03/2011_10_03_drive_0034_sync 3490 l
+2011_10_03/2011_10_03_drive_0034_sync 4191 r
+2011_10_03/2011_10_03_drive_0034_sync 1280 r
+2011_09_30/2011_09_30_drive_0020_sync 690 r
+2011_09_26/2011_09_26_drive_0070_sync 160 l
+2011_09_30/2011_09_30_drive_0034_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 3841 r
+2011_09_26/2011_09_26_drive_0104_sync 198 l
+2011_09_26/2011_09_26_drive_0061_sync 488 r
+2011_09_26/2011_09_26_drive_0061_sync 409 l
+2011_10_03/2011_10_03_drive_0042_sync 212 r
+2011_09_26/2011_09_26_drive_0019_sync 302 r
+2011_09_30/2011_09_30_drive_0028_sync 3740 r
+2011_09_30/2011_09_30_drive_0028_sync 5056 l
+2011_10_03/2011_10_03_drive_0042_sync 350 r
+2011_09_26/2011_09_26_drive_0087_sync 468 l
+2011_09_30/2011_09_30_drive_0034_sync 111 l
+2011_10_03/2011_10_03_drive_0042_sync 728 l
+2011_09_30/2011_09_30_drive_0034_sync 613 l
+2011_09_30/2011_09_30_drive_0028_sync 378 l
+2011_10_03/2011_10_03_drive_0034_sync 3808 r
+2011_09_30/2011_09_30_drive_0028_sync 1049 r
+2011_10_03/2011_10_03_drive_0034_sync 3002 l
+2011_10_03/2011_10_03_drive_0034_sync 2830 r
+2011_09_30/2011_09_30_drive_0028_sync 3819 r
+2011_09_26/2011_09_26_drive_0022_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 1003 r
+2011_09_29/2011_09_29_drive_0026_sync 89 r
+2011_09_30/2011_09_30_drive_0034_sync 579 r
+2011_10_03/2011_10_03_drive_0042_sync 474 r
+2011_10_03/2011_10_03_drive_0042_sync 1068 l
+2011_09_26/2011_09_26_drive_0014_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 4046 l
+2011_10_03/2011_10_03_drive_0034_sync 312 r
+2011_09_30/2011_09_30_drive_0028_sync 5139 l
+2011_10_03/2011_10_03_drive_0034_sync 3443 r
+2011_09_26/2011_09_26_drive_0087_sync 506 r
+2011_09_26/2011_09_26_drive_0032_sync 267 r
+2011_09_26/2011_09_26_drive_0028_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 697 l
+2011_09_30/2011_09_30_drive_0034_sync 269 r
+2011_09_28/2011_09_28_drive_0001_sync 11 l
+2011_09_30/2011_09_30_drive_0033_sync 1065 r
+2011_10_03/2011_10_03_drive_0034_sync 2816 l
+2011_09_30/2011_09_30_drive_0033_sync 993 r
+2011_09_30/2011_09_30_drive_0033_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 1711 l
+2011_09_30/2011_09_30_drive_0034_sync 696 l
+2011_09_26/2011_09_26_drive_0087_sync 325 l
+2011_09_26/2011_09_26_drive_0015_sync 121 r
+2011_09_29/2011_09_29_drive_0026_sync 88 r
+2011_09_30/2011_09_30_drive_0034_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 401 r
+2011_09_30/2011_09_30_drive_0028_sync 1292 r
+2011_09_26/2011_09_26_drive_0032_sync 177 l
+2011_09_30/2011_09_30_drive_0034_sync 208 r
+2011_09_26/2011_09_26_drive_0022_sync 88 r
+2011_09_30/2011_09_30_drive_0028_sync 270 l
+2011_09_26/2011_09_26_drive_0104_sync 131 l
+2011_10_03/2011_10_03_drive_0042_sync 902 r
+2011_10_03/2011_10_03_drive_0034_sync 4130 r
+2011_09_30/2011_09_30_drive_0028_sync 3687 r
+2011_09_30/2011_09_30_drive_0028_sync 2354 r
+2011_09_26/2011_09_26_drive_0057_sync 16 l
+2011_09_26/2011_09_26_drive_0087_sync 93 r
+2011_09_26/2011_09_26_drive_0014_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 260 l
+2011_10_03/2011_10_03_drive_0042_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 3163 l
+2011_09_30/2011_09_30_drive_0028_sync 4950 l
+2011_10_03/2011_10_03_drive_0034_sync 1826 l
+2011_09_26/2011_09_26_drive_0017_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 713 r
+2011_09_26/2011_09_26_drive_0051_sync 10 r
+2011_09_30/2011_09_30_drive_0033_sync 371 r
+2011_09_26/2011_09_26_drive_0061_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 506 r
+2011_10_03/2011_10_03_drive_0034_sync 3699 r
+2011_10_03/2011_10_03_drive_0034_sync 2454 l
+2011_09_30/2011_09_30_drive_0028_sync 1504 l
+2011_09_30/2011_09_30_drive_0034_sync 1152 l
+2011_09_26/2011_09_26_drive_0061_sync 74 l
+2011_10_03/2011_10_03_drive_0034_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 4344 l
+2011_09_30/2011_09_30_drive_0028_sync 949 l
+2011_09_30/2011_09_30_drive_0028_sync 1233 l
+2011_09_26/2011_09_26_drive_0035_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 439 l
+2011_10_03/2011_10_03_drive_0034_sync 2979 l
+2011_09_26/2011_09_26_drive_0095_sync 80 r
+2011_09_26/2011_09_26_drive_0051_sync 427 l
+2011_09_26/2011_09_26_drive_0019_sync 348 l
+2011_09_26/2011_09_26_drive_0014_sync 92 r
+2011_09_30/2011_09_30_drive_0028_sync 3829 r
+2011_09_30/2011_09_30_drive_0028_sync 192 l
+2011_09_26/2011_09_26_drive_0070_sync 115 r
+2011_09_26/2011_09_26_drive_0061_sync 229 r
+2011_09_29/2011_09_29_drive_0004_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 888 r
+2011_09_30/2011_09_30_drive_0028_sync 2643 r
+2011_09_30/2011_09_30_drive_0028_sync 3150 l
+2011_09_30/2011_09_30_drive_0028_sync 2601 r
+2011_09_26/2011_09_26_drive_0087_sync 438 l
+2011_10_03/2011_10_03_drive_0034_sync 525 l
+2011_10_03/2011_10_03_drive_0042_sync 739 l
+2011_09_26/2011_09_26_drive_0017_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 4356 l
+2011_09_26/2011_09_26_drive_0057_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 4563 r
+2011_09_29/2011_09_29_drive_0004_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 3669 l
+2011_09_29/2011_09_29_drive_0004_sync 190 r
+2011_09_30/2011_09_30_drive_0033_sync 11 l
+2011_09_26/2011_09_26_drive_0028_sync 239 l
+2011_10_03/2011_10_03_drive_0034_sync 4228 r
+2011_10_03/2011_10_03_drive_0034_sync 4032 l
+2011_10_03/2011_10_03_drive_0034_sync 2185 l
+2011_10_03/2011_10_03_drive_0034_sync 3834 r
+2011_10_03/2011_10_03_drive_0034_sync 3330 l
+2011_09_26/2011_09_26_drive_0028_sync 197 r
+2011_09_26/2011_09_26_drive_0018_sync 260 l
+2011_09_26/2011_09_26_drive_0061_sync 662 r
+2011_09_26/2011_09_26_drive_0095_sync 165 r
+2011_09_26/2011_09_26_drive_0005_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 4633 l
+2011_10_03/2011_10_03_drive_0034_sync 2301 l
+2011_09_26/2011_09_26_drive_0104_sync 182 l
+2011_09_26/2011_09_26_drive_0070_sync 392 l
+2011_09_30/2011_09_30_drive_0028_sync 4495 r
+2011_09_26/2011_09_26_drive_0022_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 2880 r
+2011_10_03/2011_10_03_drive_0042_sync 69 r
+2011_10_03/2011_10_03_drive_0034_sync 1303 r
+2011_09_26/2011_09_26_drive_0018_sync 145 r
+2011_09_26/2011_09_26_drive_0028_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 3010 l
+2011_09_30/2011_09_30_drive_0028_sync 1710 r
+2011_09_30/2011_09_30_drive_0020_sync 812 l
+2011_09_30/2011_09_30_drive_0028_sync 1771 r
+2011_09_30/2011_09_30_drive_0034_sync 930 r
+2011_10_03/2011_10_03_drive_0034_sync 3086 r
+2011_09_26/2011_09_26_drive_0061_sync 315 l
+2011_09_30/2011_09_30_drive_0028_sync 1184 l
+2011_09_30/2011_09_30_drive_0033_sync 708 l
+2011_10_03/2011_10_03_drive_0034_sync 3224 r
+2011_09_30/2011_09_30_drive_0034_sync 583 r
+2011_09_28/2011_09_28_drive_0001_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 3779 r
+2011_09_30/2011_09_30_drive_0034_sync 1212 r
+2011_09_26/2011_09_26_drive_0022_sync 572 r
+2011_09_26/2011_09_26_drive_0087_sync 60 l
+2011_10_03/2011_10_03_drive_0042_sync 1137 l
+2011_10_03/2011_10_03_drive_0042_sync 1063 l
+2011_09_30/2011_09_30_drive_0020_sync 1061 l
+2011_09_30/2011_09_30_drive_0020_sync 752 r
+2011_09_26/2011_09_26_drive_0014_sync 276 l
+2011_09_30/2011_09_30_drive_0020_sync 992 r
+2011_10_03/2011_10_03_drive_0034_sync 3386 l
+2011_09_30/2011_09_30_drive_0033_sync 1486 r
+2011_10_03/2011_10_03_drive_0034_sync 231 l
+2011_10_03/2011_10_03_drive_0034_sync 1856 l
+2011_09_26/2011_09_26_drive_0091_sync 81 l
+2011_09_30/2011_09_30_drive_0020_sync 930 r
+2011_10_03/2011_10_03_drive_0034_sync 3495 l
+2011_09_26/2011_09_26_drive_0104_sync 136 r
+2011_10_03/2011_10_03_drive_0034_sync 3108 r
+2011_09_26/2011_09_26_drive_0070_sync 333 l
+2011_09_30/2011_09_30_drive_0028_sync 4464 r
+2011_09_30/2011_09_30_drive_0033_sync 1203 r
+2011_09_30/2011_09_30_drive_0028_sync 1687 r
+2011_09_26/2011_09_26_drive_0032_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 4332 r
+2011_09_30/2011_09_30_drive_0034_sync 1062 r
+2011_09_30/2011_09_30_drive_0028_sync 1617 r
+2011_09_26/2011_09_26_drive_0019_sync 212 l
+2011_09_26/2011_09_26_drive_0057_sync 154 r
+2011_10_03/2011_10_03_drive_0034_sync 65 r
+2011_09_26/2011_09_26_drive_0061_sync 442 l
+2011_10_03/2011_10_03_drive_0034_sync 2949 r
+2011_09_26/2011_09_26_drive_0061_sync 589 l
+2011_09_30/2011_09_30_drive_0028_sync 4514 r
+2011_10_03/2011_10_03_drive_0042_sync 310 r
+2011_09_30/2011_09_30_drive_0034_sync 461 r
+2011_09_26/2011_09_26_drive_0022_sync 539 l
+2011_09_29/2011_09_29_drive_0004_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 1047 r
+2011_09_30/2011_09_30_drive_0020_sync 1071 r
+2011_09_26/2011_09_26_drive_0019_sync 255 l
+2011_09_26/2011_09_26_drive_0028_sync 343 r
+2011_09_26/2011_09_26_drive_0022_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 724 r
+2011_09_26/2011_09_26_drive_0032_sync 299 l
+2011_09_26/2011_09_26_drive_0070_sync 227 r
+2011_09_30/2011_09_30_drive_0033_sync 1383 r
+2011_09_30/2011_09_30_drive_0028_sync 1574 l
+2011_10_03/2011_10_03_drive_0042_sync 893 r
+2011_10_03/2011_10_03_drive_0034_sync 3880 l
+2011_09_30/2011_09_30_drive_0020_sync 914 r
+2011_09_26/2011_09_26_drive_0079_sync 82 l
+2011_09_26/2011_09_26_drive_0018_sync 116 r
+2011_09_30/2011_09_30_drive_0033_sync 486 r
+2011_10_03/2011_10_03_drive_0034_sync 3105 l
+2011_10_03/2011_10_03_drive_0034_sync 1864 l
+2011_09_26/2011_09_26_drive_0039_sync 307 r
+2011_10_03/2011_10_03_drive_0034_sync 1769 l
+2011_09_30/2011_09_30_drive_0020_sync 961 r
+2011_10_03/2011_10_03_drive_0042_sync 789 r
+2011_09_30/2011_09_30_drive_0033_sync 530 r
+2011_09_30/2011_09_30_drive_0028_sync 4060 l
+2011_10_03/2011_10_03_drive_0034_sync 2894 r
+2011_10_03/2011_10_03_drive_0034_sync 1389 r
+2011_09_26/2011_09_26_drive_0022_sync 636 r
+2011_09_26/2011_09_26_drive_0051_sync 427 r
+2011_09_26/2011_09_26_drive_0070_sync 236 l
+2011_10_03/2011_10_03_drive_0034_sync 2526 l
+2011_09_26/2011_09_26_drive_0061_sync 112 r
+2011_09_26/2011_09_26_drive_0018_sync 104 l
+2011_09_26/2011_09_26_drive_0087_sync 528 r
+2011_09_30/2011_09_30_drive_0033_sync 322 r
+2011_09_30/2011_09_30_drive_0028_sync 2149 r
+2011_10_03/2011_10_03_drive_0034_sync 903 l
+2011_09_26/2011_09_26_drive_0051_sync 340 r
+2011_09_26/2011_09_26_drive_0022_sync 707 l
+2011_09_30/2011_09_30_drive_0028_sync 3590 l
+2011_09_30/2011_09_30_drive_0028_sync 442 l
+2011_09_30/2011_09_30_drive_0034_sync 1181 l
+2011_10_03/2011_10_03_drive_0034_sync 2610 r
+2011_09_30/2011_09_30_drive_0033_sync 1183 l
+2011_09_30/2011_09_30_drive_0033_sync 1270 r
+2011_09_30/2011_09_30_drive_0028_sync 2188 r
+2011_09_26/2011_09_26_drive_0018_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 3248 r
+2011_10_03/2011_10_03_drive_0034_sync 1870 r
+2011_09_26/2011_09_26_drive_0051_sync 320 l
+2011_10_03/2011_10_03_drive_0034_sync 1918 r
+2011_10_03/2011_10_03_drive_0034_sync 3901 l
+2011_09_26/2011_09_26_drive_0087_sync 611 r
+2011_09_30/2011_09_30_drive_0028_sync 2145 l
+2011_10_03/2011_10_03_drive_0042_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 4884 r
+2011_09_30/2011_09_30_drive_0028_sync 3042 l
+2011_09_30/2011_09_30_drive_0034_sync 829 l
+2011_09_26/2011_09_26_drive_0022_sync 525 l
+2011_10_03/2011_10_03_drive_0034_sync 1738 l
+2011_10_03/2011_10_03_drive_0034_sync 3704 r
+2011_09_30/2011_09_30_drive_0028_sync 5163 l
+2011_10_03/2011_10_03_drive_0042_sync 208 r
+2011_09_30/2011_09_30_drive_0028_sync 3533 r
+2011_09_30/2011_09_30_drive_0028_sync 3161 r
+2011_10_03/2011_10_03_drive_0034_sync 2679 l
+2011_09_30/2011_09_30_drive_0028_sync 636 r
+2011_09_30/2011_09_30_drive_0028_sync 1118 r
+2011_09_26/2011_09_26_drive_0032_sync 118 r
+2011_09_26/2011_09_26_drive_0019_sync 279 r
+2011_09_26/2011_09_26_drive_0051_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 983 l
+2011_09_30/2011_09_30_drive_0028_sync 4763 l
+2011_10_03/2011_10_03_drive_0034_sync 96 l
+2011_09_30/2011_09_30_drive_0033_sync 584 l
+2011_10_03/2011_10_03_drive_0034_sync 4424 l
+2011_09_26/2011_09_26_drive_0014_sync 119 l
+2011_10_03/2011_10_03_drive_0042_sync 342 l
+2011_09_30/2011_09_30_drive_0034_sync 892 l
+2011_09_26/2011_09_26_drive_0087_sync 449 l
+2011_10_03/2011_10_03_drive_0034_sync 1674 r
+2011_10_03/2011_10_03_drive_0034_sync 1306 r
+2011_10_03/2011_10_03_drive_0042_sync 806 l
+2011_09_30/2011_09_30_drive_0028_sync 2396 r
+2011_10_03/2011_10_03_drive_0034_sync 3144 r
+2011_10_03/2011_10_03_drive_0034_sync 1334 l
+2011_10_03/2011_10_03_drive_0034_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 1659 l
+2011_10_03/2011_10_03_drive_0034_sync 57 l
+2011_10_03/2011_10_03_drive_0034_sync 2433 r
+2011_09_26/2011_09_26_drive_0015_sync 44 r
+2011_09_26/2011_09_26_drive_0087_sync 321 l
+2011_09_26/2011_09_26_drive_0035_sync 69 r
+2011_09_30/2011_09_30_drive_0034_sync 859 r
+2011_09_26/2011_09_26_drive_0005_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 1915 r
+2011_09_26/2011_09_26_drive_0051_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 4655 r
+2011_10_03/2011_10_03_drive_0034_sync 2107 r
+2011_09_26/2011_09_26_drive_0039_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 4067 l
+2011_09_30/2011_09_30_drive_0028_sync 243 r
+2011_09_30/2011_09_30_drive_0028_sync 388 r
+2011_09_30/2011_09_30_drive_0028_sync 4953 l
+2011_09_26/2011_09_26_drive_0087_sync 412 r
+2011_09_30/2011_09_30_drive_0020_sync 1084 l
+2011_09_26/2011_09_26_drive_0014_sync 257 l
+2011_09_26/2011_09_26_drive_0039_sync 4 l
+2011_09_26/2011_09_26_drive_0014_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 3026 r
+2011_09_30/2011_09_30_drive_0034_sync 31 r
+2011_10_03/2011_10_03_drive_0034_sync 4569 l
+2011_09_30/2011_09_30_drive_0020_sync 918 r
+2011_09_30/2011_09_30_drive_0033_sync 1259 l
+2011_09_26/2011_09_26_drive_0011_sync 223 l
+2011_09_26/2011_09_26_drive_0032_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 1109 l
+2011_09_29/2011_09_29_drive_0004_sync 179 l
+2011_10_03/2011_10_03_drive_0042_sync 154 l
+2011_09_26/2011_09_26_drive_0011_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 4114 l
+2011_10_03/2011_10_03_drive_0034_sync 4254 l
+2011_10_03/2011_10_03_drive_0034_sync 1377 r
+2011_10_03/2011_10_03_drive_0042_sync 1008 l
+2011_09_30/2011_09_30_drive_0028_sync 3244 r
+2011_09_26/2011_09_26_drive_0011_sync 174 l
+2011_09_30/2011_09_30_drive_0028_sync 2580 r
+2011_09_30/2011_09_30_drive_0034_sync 810 l
+2011_09_26/2011_09_26_drive_0061_sync 513 l
+2011_09_30/2011_09_30_drive_0034_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 3825 r
+2011_09_30/2011_09_30_drive_0034_sync 353 l
+2011_09_30/2011_09_30_drive_0028_sync 3851 r
+2011_09_30/2011_09_30_drive_0028_sync 758 r
+2011_10_03/2011_10_03_drive_0034_sync 3136 r
+2011_09_26/2011_09_26_drive_0032_sync 305 r
+2011_09_30/2011_09_30_drive_0033_sync 1084 r
+2011_09_26/2011_09_26_drive_0032_sync 151 l
+2011_09_26/2011_09_26_drive_0022_sync 401 l
+2011_09_30/2011_09_30_drive_0028_sync 2347 l
+2011_09_30/2011_09_30_drive_0028_sync 2153 r
+2011_09_26/2011_09_26_drive_0070_sync 179 l
+2011_09_30/2011_09_30_drive_0034_sync 330 r
+2011_09_26/2011_09_26_drive_0022_sync 628 r
+2011_09_26/2011_09_26_drive_0022_sync 272 l
+2011_09_26/2011_09_26_drive_0113_sync 45 l
+2011_09_30/2011_09_30_drive_0020_sync 740 l
+2011_09_30/2011_09_30_drive_0034_sync 240 r
+2011_09_30/2011_09_30_drive_0028_sync 2861 l
+2011_09_30/2011_09_30_drive_0028_sync 4224 l
+2011_09_26/2011_09_26_drive_0057_sync 183 l
+2011_09_26/2011_09_26_drive_0070_sync 270 r
+2011_10_03/2011_10_03_drive_0042_sync 638 r
+2011_09_26/2011_09_26_drive_0017_sync 0 l
+2011_09_30/2011_09_30_drive_0034_sync 554 r
+2011_09_30/2011_09_30_drive_0028_sync 1741 l
+2011_09_30/2011_09_30_drive_0028_sync 1955 r
+2011_09_26/2011_09_26_drive_0019_sync 473 l
+2011_09_26/2011_09_26_drive_0057_sync 318 r
+2011_09_26/2011_09_26_drive_0070_sync 104 l
+2011_09_26/2011_09_26_drive_0070_sync 281 l
+2011_09_26/2011_09_26_drive_0028_sync 132 r
+2011_09_26/2011_09_26_drive_0051_sync 77 r
+2011_09_26/2011_09_26_drive_0022_sync 11 r
+2011_09_26/2011_09_26_drive_0014_sync 48 r
+2011_09_26/2011_09_26_drive_0057_sync 231 r
+2011_10_03/2011_10_03_drive_0042_sync 243 r
+2011_09_26/2011_09_26_drive_0019_sync 189 r
+2011_09_30/2011_09_30_drive_0034_sync 658 r
+2011_09_26/2011_09_26_drive_0070_sync 315 l
+2011_09_30/2011_09_30_drive_0028_sync 805 l
+2011_10_03/2011_10_03_drive_0042_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 285 l
+2011_09_30/2011_09_30_drive_0020_sync 499 l
+2011_09_30/2011_09_30_drive_0028_sync 2740 r
+2011_09_26/2011_09_26_drive_0022_sync 672 r
+2011_09_26/2011_09_26_drive_0015_sync 111 l
+2011_09_26/2011_09_26_drive_0104_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 2631 l
+2011_09_30/2011_09_30_drive_0028_sync 4350 r
+2011_09_30/2011_09_30_drive_0034_sync 833 l
+2011_09_30/2011_09_30_drive_0028_sync 4312 l
+2011_09_30/2011_09_30_drive_0028_sync 4035 r
+2011_09_30/2011_09_30_drive_0028_sync 4112 r
+2011_09_26/2011_09_26_drive_0060_sync 76 l
+2011_10_03/2011_10_03_drive_0034_sync 1318 l
+2011_09_26/2011_09_26_drive_0091_sync 86 r
+2011_09_30/2011_09_30_drive_0033_sync 1457 r
+2011_09_26/2011_09_26_drive_0087_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 332 l
+2011_09_26/2011_09_26_drive_0061_sync 537 r
+2011_09_29/2011_09_29_drive_0004_sync 208 r
+2011_09_26/2011_09_26_drive_0039_sync 263 l
+2011_09_26/2011_09_26_drive_0022_sync 558 r
+2011_09_26/2011_09_26_drive_0015_sync 248 r
+2011_09_26/2011_09_26_drive_0035_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 1841 l
+2011_09_26/2011_09_26_drive_0060_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 1202 l
+2011_09_26/2011_09_26_drive_0087_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 3566 l
+2011_10_03/2011_10_03_drive_0034_sync 3737 l
+2011_09_30/2011_09_30_drive_0034_sync 613 r
+2011_09_30/2011_09_30_drive_0028_sync 1603 l
+2011_09_30/2011_09_30_drive_0034_sync 1005 l
+2011_09_30/2011_09_30_drive_0020_sync 317 r
+2011_10_03/2011_10_03_drive_0034_sync 4190 l
+2011_09_30/2011_09_30_drive_0028_sync 1393 l
+2011_10_03/2011_10_03_drive_0034_sync 4157 l
+2011_09_26/2011_09_26_drive_0091_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 4707 l
+2011_09_26/2011_09_26_drive_0087_sync 160 l
+2011_10_03/2011_10_03_drive_0034_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 4605 l
+2011_09_26/2011_09_26_drive_0028_sync 9 l
+2011_09_26/2011_09_26_drive_0015_sync 109 r
+2011_09_30/2011_09_30_drive_0020_sync 896 l
+2011_09_26/2011_09_26_drive_0087_sync 626 l
+2011_09_30/2011_09_30_drive_0028_sync 749 r
+2011_09_26/2011_09_26_drive_0028_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 3598 r
+2011_09_26/2011_09_26_drive_0057_sync 63 l
+2011_10_03/2011_10_03_drive_0034_sync 567 r
+2011_10_03/2011_10_03_drive_0034_sync 4056 l
+2011_09_30/2011_09_30_drive_0034_sync 270 r
+2011_09_30/2011_09_30_drive_0033_sync 112 r
+2011_09_26/2011_09_26_drive_0057_sync 263 l
+2011_09_26/2011_09_26_drive_0087_sync 279 r
+2011_09_26/2011_09_26_drive_0060_sync 72 r
+2011_09_26/2011_09_26_drive_0057_sync 250 l
+2011_09_30/2011_09_30_drive_0020_sync 669 r
+2011_09_30/2011_09_30_drive_0028_sync 2744 l
+2011_09_30/2011_09_30_drive_0034_sync 515 l
+2011_10_03/2011_10_03_drive_0034_sync 509 l
+2011_09_30/2011_09_30_drive_0020_sync 496 l
+2011_09_26/2011_09_26_drive_0061_sync 27 r
+2011_10_03/2011_10_03_drive_0034_sync 352 l
+2011_09_26/2011_09_26_drive_0015_sync 5 r
+2011_10_03/2011_10_03_drive_0042_sync 397 r
+2011_09_30/2011_09_30_drive_0020_sync 106 l
+2011_09_26/2011_09_26_drive_0011_sync 10 l
+2011_09_30/2011_09_30_drive_0028_sync 28 r
+2011_09_30/2011_09_30_drive_0034_sync 457 r
+2011_09_30/2011_09_30_drive_0033_sync 980 l
+2011_09_30/2011_09_30_drive_0020_sync 581 l
+2011_09_26/2011_09_26_drive_0022_sync 781 r
+2011_10_03/2011_10_03_drive_0034_sync 270 l
+2011_09_30/2011_09_30_drive_0020_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 3395 l
+2011_10_03/2011_10_03_drive_0042_sync 809 l
+2011_09_26/2011_09_26_drive_0039_sync 246 r
+2011_09_26/2011_09_26_drive_0087_sync 592 r
+2011_09_30/2011_09_30_drive_0028_sync 1618 l
+2011_10_03/2011_10_03_drive_0034_sync 1487 r
+2011_09_26/2011_09_26_drive_0019_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 1926 r
+2011_09_30/2011_09_30_drive_0033_sync 1009 r
+2011_09_30/2011_09_30_drive_0033_sync 471 r
+2011_10_03/2011_10_03_drive_0034_sync 3089 l
+2011_09_30/2011_09_30_drive_0034_sync 1151 r
+2011_10_03/2011_10_03_drive_0034_sync 2135 l
+2011_09_26/2011_09_26_drive_0032_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 4338 r
+2011_09_26/2011_09_26_drive_0087_sync 623 r
+2011_09_30/2011_09_30_drive_0033_sync 1066 l
+2011_10_03/2011_10_03_drive_0042_sync 886 l
+2011_09_26/2011_09_26_drive_0005_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 3682 r
+2011_09_26/2011_09_26_drive_0028_sync 24 l
+2011_09_29/2011_09_29_drive_0004_sync 76 l
+2011_09_30/2011_09_30_drive_0033_sync 1166 r
+2011_09_26/2011_09_26_drive_0057_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 850 l
+2011_09_26/2011_09_26_drive_0087_sync 552 l
+2011_10_03/2011_10_03_drive_0034_sync 245 r
+2011_09_30/2011_09_30_drive_0033_sync 1470 l
+2011_09_30/2011_09_30_drive_0028_sync 1899 r
+2011_10_03/2011_10_03_drive_0034_sync 2145 r
+2011_10_03/2011_10_03_drive_0034_sync 3089 r
+2011_09_30/2011_09_30_drive_0028_sync 1657 l
+2011_09_30/2011_09_30_drive_0028_sync 3608 r
+2011_10_03/2011_10_03_drive_0042_sync 1117 r
+2011_09_30/2011_09_30_drive_0028_sync 2850 l
+2011_09_26/2011_09_26_drive_0061_sync 623 l
+2011_09_30/2011_09_30_drive_0028_sync 4669 l
+2011_10_03/2011_10_03_drive_0034_sync 2564 r
+2011_10_03/2011_10_03_drive_0034_sync 1982 r
+2011_09_29/2011_09_29_drive_0004_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 1201 l
+2011_09_30/2011_09_30_drive_0028_sync 2970 l
+2011_09_30/2011_09_30_drive_0020_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 3126 l
+2011_09_30/2011_09_30_drive_0028_sync 454 l
+2011_09_26/2011_09_26_drive_0035_sync 37 l
+2011_09_26/2011_09_26_drive_0060_sync 27 l
+2011_09_30/2011_09_30_drive_0033_sync 1483 r
+2011_09_30/2011_09_30_drive_0028_sync 1773 r
+2011_09_26/2011_09_26_drive_0051_sync 72 l
+2011_10_03/2011_10_03_drive_0042_sync 543 r
+2011_09_30/2011_09_30_drive_0020_sync 650 r
+2011_10_03/2011_10_03_drive_0034_sync 1065 l
+2011_09_30/2011_09_30_drive_0028_sync 3392 r
+2011_09_30/2011_09_30_drive_0028_sync 3381 l
+2011_09_30/2011_09_30_drive_0033_sync 231 r
+2011_09_26/2011_09_26_drive_0028_sync 272 l
+2011_09_30/2011_09_30_drive_0028_sync 2459 r
+2011_09_30/2011_09_30_drive_0028_sync 2464 r
+2011_09_26/2011_09_26_drive_0087_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 467 r
+2011_09_26/2011_09_26_drive_0018_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 3641 l
+2011_09_30/2011_09_30_drive_0034_sync 927 l
+2011_09_26/2011_09_26_drive_0018_sync 179 r
+2011_09_30/2011_09_30_drive_0034_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 1011 r
+2011_10_03/2011_10_03_drive_0042_sync 774 r
+2011_09_26/2011_09_26_drive_0091_sync 68 r
+2011_09_30/2011_09_30_drive_0020_sync 413 r
+2011_09_26/2011_09_26_drive_0015_sync 170 l
+2011_09_30/2011_09_30_drive_0034_sync 437 r
+2011_10_03/2011_10_03_drive_0034_sync 3892 l
+2011_09_30/2011_09_30_drive_0028_sync 1770 l
+2011_10_03/2011_10_03_drive_0034_sync 487 r
+2011_09_26/2011_09_26_drive_0057_sync 145 l
+2011_10_03/2011_10_03_drive_0042_sync 337 r
+2011_09_30/2011_09_30_drive_0028_sync 2082 l
+2011_09_30/2011_09_30_drive_0033_sync 1134 l
+2011_09_30/2011_09_30_drive_0028_sync 3096 r
+2011_09_30/2011_09_30_drive_0028_sync 642 r
+2011_10_03/2011_10_03_drive_0034_sync 4230 r
+2011_09_29/2011_09_29_drive_0004_sync 238 l
+2011_09_26/2011_09_26_drive_0019_sync 312 l
+2011_09_26/2011_09_26_drive_0061_sync 661 r
+2011_10_03/2011_10_03_drive_0034_sync 1767 l
+2011_09_30/2011_09_30_drive_0020_sync 149 l
+2011_09_30/2011_09_30_drive_0034_sync 890 l
+2011_09_26/2011_09_26_drive_0051_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 1776 r
+2011_09_26/2011_09_26_drive_0087_sync 274 l
+2011_09_30/2011_09_30_drive_0028_sync 224 r
+2011_10_03/2011_10_03_drive_0034_sync 1158 r
+2011_09_30/2011_09_30_drive_0033_sync 935 r
+2011_09_26/2011_09_26_drive_0113_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 4433 r
+2011_09_26/2011_09_26_drive_0061_sync 189 r
+2011_09_26/2011_09_26_drive_0104_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 1819 l
+2011_10_03/2011_10_03_drive_0034_sync 2403 l
+2011_09_30/2011_09_30_drive_0028_sync 662 r
+2011_09_26/2011_09_26_drive_0051_sync 324 l
+2011_09_30/2011_09_30_drive_0028_sync 449 l
+2011_09_26/2011_09_26_drive_0028_sync 236 l
+2011_09_30/2011_09_30_drive_0034_sync 1100 r
+2011_10_03/2011_10_03_drive_0034_sync 2149 r
+2011_09_26/2011_09_26_drive_0070_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 241 l
+2011_09_26/2011_09_26_drive_0079_sync 49 r
+2011_09_26/2011_09_26_drive_0017_sync 31 l
+2011_09_26/2011_09_26_drive_0051_sync 326 l
+2011_09_26/2011_09_26_drive_0087_sync 472 r
+2011_09_30/2011_09_30_drive_0033_sync 1524 l
+2011_10_03/2011_10_03_drive_0034_sync 4143 l
+2011_09_26/2011_09_26_drive_0095_sync 34 r
+2011_09_26/2011_09_26_drive_0057_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 4270 l
+2011_09_26/2011_09_26_drive_0091_sync 147 r
+2011_09_30/2011_09_30_drive_0020_sync 131 l
+2011_10_03/2011_10_03_drive_0034_sync 3601 l
+2011_10_03/2011_10_03_drive_0034_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 3661 l
+2011_09_26/2011_09_26_drive_0051_sync 92 r
+2011_09_26/2011_09_26_drive_0011_sync 65 l
+2011_09_30/2011_09_30_drive_0020_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 1934 r
+2011_10_03/2011_10_03_drive_0042_sync 712 l
+2011_09_26/2011_09_26_drive_0087_sync 269 l
+2011_09_26/2011_09_26_drive_0061_sync 690 r
+2011_09_26/2011_09_26_drive_0091_sync 57 l
+2011_09_26/2011_09_26_drive_0061_sync 492 l
+2011_09_30/2011_09_30_drive_0028_sync 3745 l
+2011_10_03/2011_10_03_drive_0034_sync 831 r
+2011_09_26/2011_09_26_drive_0104_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 3376 r
+2011_09_30/2011_09_30_drive_0028_sync 92 r
+2011_09_26/2011_09_26_drive_0039_sync 84 r
+2011_09_26/2011_09_26_drive_0061_sync 415 l
+2011_09_30/2011_09_30_drive_0034_sync 525 l
+2011_09_30/2011_09_30_drive_0034_sync 852 r
+2011_09_30/2011_09_30_drive_0028_sync 330 r
+2011_09_30/2011_09_30_drive_0033_sync 575 r
+2011_09_30/2011_09_30_drive_0028_sync 2423 r
+2011_10_03/2011_10_03_drive_0034_sync 632 r
+2011_10_03/2011_10_03_drive_0034_sync 1995 r
+2011_09_26/2011_09_26_drive_0032_sync 261 r
+2011_09_26/2011_09_26_drive_0014_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 4293 r
+2011_09_30/2011_09_30_drive_0028_sync 1524 l
+2011_10_03/2011_10_03_drive_0034_sync 3723 l
+2011_10_03/2011_10_03_drive_0042_sync 514 l
+2011_09_30/2011_09_30_drive_0028_sync 4734 l
+2011_09_26/2011_09_26_drive_0011_sync 127 l
+2011_09_26/2011_09_26_drive_0070_sync 224 r
+2011_09_30/2011_09_30_drive_0020_sync 1023 l
+2011_09_26/2011_09_26_drive_0028_sync 168 l
+2011_09_30/2011_09_30_drive_0020_sync 745 l
+2011_09_30/2011_09_30_drive_0028_sync 594 r
+2011_09_26/2011_09_26_drive_0091_sync 183 l
+2011_09_30/2011_09_30_drive_0028_sync 562 l
+2011_09_30/2011_09_30_drive_0033_sync 1345 l
+2011_09_30/2011_09_30_drive_0028_sync 1477 l
+2011_09_26/2011_09_26_drive_0091_sync 157 r
+2011_09_30/2011_09_30_drive_0028_sync 3849 l
+2011_09_30/2011_09_30_drive_0020_sync 340 l
+2011_09_30/2011_09_30_drive_0033_sync 1466 l
+2011_09_26/2011_09_26_drive_0032_sync 90 l
+2011_09_26/2011_09_26_drive_0022_sync 600 r
+2011_09_30/2011_09_30_drive_0033_sync 255 l
+2011_09_30/2011_09_30_drive_0028_sync 1364 r
+2011_10_03/2011_10_03_drive_0034_sync 4275 l
+2011_09_30/2011_09_30_drive_0033_sync 1205 r
+2011_10_03/2011_10_03_drive_0034_sync 3271 r
+2011_09_26/2011_09_26_drive_0087_sync 708 r
+2011_09_26/2011_09_26_drive_0087_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 1342 r
+2011_09_26/2011_09_26_drive_0022_sync 584 l
+2011_09_30/2011_09_30_drive_0028_sync 964 l
+2011_10_03/2011_10_03_drive_0034_sync 2650 r
+2011_09_29/2011_09_29_drive_0026_sync 144 r
+2011_09_26/2011_09_26_drive_0051_sync 412 r
+2011_09_30/2011_09_30_drive_0020_sync 645 r
+2011_10_03/2011_10_03_drive_0034_sync 4238 l
+2011_09_30/2011_09_30_drive_0028_sync 3923 l
+2011_09_30/2011_09_30_drive_0033_sync 181 l
+2011_09_26/2011_09_26_drive_0028_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 3336 r
+2011_10_03/2011_10_03_drive_0042_sync 612 r
+2011_09_26/2011_09_26_drive_0091_sync 181 r
+2011_09_30/2011_09_30_drive_0028_sync 4884 l
+2011_09_26/2011_09_26_drive_0061_sync 64 l
+2011_09_26/2011_09_26_drive_0051_sync 288 l
+2011_09_30/2011_09_30_drive_0033_sync 1155 l
+2011_09_30/2011_09_30_drive_0028_sync 1125 l
+2011_10_03/2011_10_03_drive_0034_sync 2037 l
+2011_09_26/2011_09_26_drive_0015_sync 137 l
+2011_09_26/2011_09_26_drive_0015_sync 98 l
+2011_09_26/2011_09_26_drive_0028_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 3694 l
+2011_09_30/2011_09_30_drive_0028_sync 602 r
+2011_10_03/2011_10_03_drive_0034_sync 519 r
+2011_10_03/2011_10_03_drive_0034_sync 1428 l
+2011_09_30/2011_09_30_drive_0020_sync 939 l
+2011_10_03/2011_10_03_drive_0034_sync 1163 r
+2011_09_30/2011_09_30_drive_0028_sync 3247 r
+2011_09_29/2011_09_29_drive_0026_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 1265 r
+2011_09_26/2011_09_26_drive_0061_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 2158 r
+2011_09_30/2011_09_30_drive_0028_sync 2168 r
+2011_09_26/2011_09_26_drive_0039_sync 341 r
+2011_09_26/2011_09_26_drive_0091_sync 213 l
+2011_09_30/2011_09_30_drive_0028_sync 3534 r
+2011_09_26/2011_09_26_drive_0091_sync 117 l
+2011_09_30/2011_09_30_drive_0033_sync 1064 l
+2011_10_03/2011_10_03_drive_0034_sync 2378 r
+2011_09_26/2011_09_26_drive_0032_sync 68 l
+2011_09_30/2011_09_30_drive_0033_sync 1143 r
+2011_09_30/2011_09_30_drive_0033_sync 1514 l
+2011_09_26/2011_09_26_drive_0028_sync 429 l
+2011_09_26/2011_09_26_drive_0028_sync 247 r
+2011_09_26/2011_09_26_drive_0091_sync 36 r
+2011_10_03/2011_10_03_drive_0042_sync 290 l
+2011_10_03/2011_10_03_drive_0034_sync 607 l
+2011_09_26/2011_09_26_drive_0035_sync 89 r
+2011_10_03/2011_10_03_drive_0042_sync 192 l
+2011_10_03/2011_10_03_drive_0034_sync 2355 r
+2011_09_30/2011_09_30_drive_0028_sync 3103 r
+2011_10_03/2011_10_03_drive_0034_sync 4379 l
+2011_09_30/2011_09_30_drive_0034_sync 979 r
+2011_09_30/2011_09_30_drive_0028_sync 4723 l
+2011_09_30/2011_09_30_drive_0020_sync 172 l
+2011_09_26/2011_09_26_drive_0019_sync 140 l
+2011_09_30/2011_09_30_drive_0028_sync 4705 r
+2011_09_30/2011_09_30_drive_0033_sync 1434 l
+2011_09_26/2011_09_26_drive_0022_sync 424 r
+2011_10_03/2011_10_03_drive_0034_sync 836 l
+2011_09_26/2011_09_26_drive_0095_sync 247 r
+2011_09_26/2011_09_26_drive_0061_sync 22 r
+2011_09_26/2011_09_26_drive_0061_sync 618 r
+2011_10_03/2011_10_03_drive_0034_sync 3741 r
+2011_09_26/2011_09_26_drive_0039_sync 252 r
+2011_09_30/2011_09_30_drive_0028_sync 2720 l
+2011_09_30/2011_09_30_drive_0033_sync 709 r
+2011_09_30/2011_09_30_drive_0020_sync 361 r
+2011_09_30/2011_09_30_drive_0028_sync 3006 r
+2011_10_03/2011_10_03_drive_0034_sync 1534 r
+2011_09_26/2011_09_26_drive_0022_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 582 l
+2011_09_26/2011_09_26_drive_0028_sync 341 l
+2011_10_03/2011_10_03_drive_0034_sync 918 r
+2011_09_26/2011_09_26_drive_0057_sync 23 l
+2011_09_26/2011_09_26_drive_0070_sync 300 r
+2011_09_30/2011_09_30_drive_0034_sync 1014 l
+2011_09_26/2011_09_26_drive_0019_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 3135 r
+2011_10_03/2011_10_03_drive_0034_sync 2876 r
+2011_09_26/2011_09_26_drive_0015_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 2689 r
+2011_09_26/2011_09_26_drive_0095_sync 141 r
+2011_09_26/2011_09_26_drive_0061_sync 138 l
+2011_09_26/2011_09_26_drive_0057_sync 120 r
+2011_09_26/2011_09_26_drive_0113_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 4409 r
+2011_09_26/2011_09_26_drive_0087_sync 622 r
+2011_09_26/2011_09_26_drive_0095_sync 218 l
+2011_09_26/2011_09_26_drive_0032_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 1582 r
+2011_09_26/2011_09_26_drive_0014_sync 64 r
+2011_09_26/2011_09_26_drive_0022_sync 59 r
+2011_09_26/2011_09_26_drive_0028_sync 50 r
+2011_09_26/2011_09_26_drive_0028_sync 213 r
+2011_09_26/2011_09_26_drive_0022_sync 332 r
+2011_09_29/2011_09_29_drive_0026_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 3558 l
+2011_09_26/2011_09_26_drive_0011_sync 40 l
+2011_09_26/2011_09_26_drive_0014_sync 188 l
+2011_09_30/2011_09_30_drive_0028_sync 5022 l
+2011_09_26/2011_09_26_drive_0022_sync 672 l
+2011_09_26/2011_09_26_drive_0070_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 5144 l
+2011_09_30/2011_09_30_drive_0028_sync 275 r
+2011_09_30/2011_09_30_drive_0020_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 2444 l
+2011_09_26/2011_09_26_drive_0022_sync 378 l
+2011_10_03/2011_10_03_drive_0034_sync 375 r
+2011_09_26/2011_09_26_drive_0014_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 444 r
+2011_09_30/2011_09_30_drive_0028_sync 3883 l
+2011_09_26/2011_09_26_drive_0011_sync 109 r
+2011_09_26/2011_09_26_drive_0070_sync 339 l
+2011_09_30/2011_09_30_drive_0033_sync 398 l
+2011_09_30/2011_09_30_drive_0033_sync 1564 l
+2011_09_26/2011_09_26_drive_0070_sync 252 l
+2011_09_30/2011_09_30_drive_0034_sync 1140 l
+2011_09_30/2011_09_30_drive_0033_sync 26 l
+2011_10_03/2011_10_03_drive_0034_sync 4245 r
+2011_09_30/2011_09_30_drive_0033_sync 476 r
+2011_10_03/2011_10_03_drive_0034_sync 2627 l
+2011_10_03/2011_10_03_drive_0042_sync 500 r
+2011_09_30/2011_09_30_drive_0020_sync 647 r
+2011_09_26/2011_09_26_drive_0051_sync 402 r
+2011_10_03/2011_10_03_drive_0034_sync 2198 l
+2011_09_30/2011_09_30_drive_0028_sync 803 r
+2011_09_26/2011_09_26_drive_0011_sync 197 r
+2011_09_30/2011_09_30_drive_0028_sync 2450 l
+2011_09_26/2011_09_26_drive_0061_sync 605 l
+2011_09_30/2011_09_30_drive_0033_sync 1248 l
+2011_09_30/2011_09_30_drive_0028_sync 2586 r
+2011_09_26/2011_09_26_drive_0019_sync 458 r
+2011_09_26/2011_09_26_drive_0022_sync 481 r
+2011_09_30/2011_09_30_drive_0033_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 1231 r
+2011_10_03/2011_10_03_drive_0034_sync 3098 l
+2011_10_03/2011_10_03_drive_0034_sync 2260 l
+2011_10_03/2011_10_03_drive_0034_sync 2098 l
+2011_09_30/2011_09_30_drive_0028_sync 676 l
+2011_09_26/2011_09_26_drive_0032_sync 212 r
+2011_10_03/2011_10_03_drive_0034_sync 3063 r
+2011_10_03/2011_10_03_drive_0034_sync 2007 r
+2011_09_30/2011_09_30_drive_0020_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 3160 l
+2011_09_26/2011_09_26_drive_0061_sync 58 l
+2011_09_26/2011_09_26_drive_0057_sync 265 r
+2011_09_26/2011_09_26_drive_0039_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 4066 l
+2011_10_03/2011_10_03_drive_0042_sync 940 l
+2011_09_30/2011_09_30_drive_0034_sync 1048 l
+2011_10_03/2011_10_03_drive_0034_sync 2562 r
+2011_09_30/2011_09_30_drive_0033_sync 1472 l
+2011_09_26/2011_09_26_drive_0011_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 1027 l
+2011_09_30/2011_09_30_drive_0020_sync 506 r
+2011_09_30/2011_09_30_drive_0033_sync 1503 r
+2011_10_03/2011_10_03_drive_0034_sync 3072 r
+2011_09_26/2011_09_26_drive_0057_sync 240 l
+2011_09_30/2011_09_30_drive_0028_sync 1480 r
+2011_09_26/2011_09_26_drive_0061_sync 602 r
+2011_09_26/2011_09_26_drive_0087_sync 162 r
+2011_09_26/2011_09_26_drive_0079_sync 19 l
+2011_09_30/2011_09_30_drive_0028_sync 3323 l
+2011_09_26/2011_09_26_drive_0011_sync 66 r
+2011_09_26/2011_09_26_drive_0011_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 3474 r
+2011_09_26/2011_09_26_drive_0113_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 4001 l
+2011_10_03/2011_10_03_drive_0034_sync 1955 r
+2011_09_26/2011_09_26_drive_0113_sync 59 r
+2011_09_26/2011_09_26_drive_0061_sync 153 r
+2011_09_26/2011_09_26_drive_0061_sync 531 r
+2011_10_03/2011_10_03_drive_0034_sync 2480 l
+2011_09_26/2011_09_26_drive_0014_sync 283 l
+2011_09_30/2011_09_30_drive_0034_sync 1030 r
+2011_09_26/2011_09_26_drive_0095_sync 40 l
+2011_10_03/2011_10_03_drive_0034_sync 1905 r
+2011_09_26/2011_09_26_drive_0022_sync 360 l
+2011_09_26/2011_09_26_drive_0061_sync 324 l
+2011_09_26/2011_09_26_drive_0019_sync 191 r
+2011_09_30/2011_09_30_drive_0028_sync 1924 r
+2011_09_26/2011_09_26_drive_0032_sync 60 r
+2011_09_29/2011_09_29_drive_0004_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 5153 l
+2011_09_30/2011_09_30_drive_0028_sync 945 r
+2011_09_30/2011_09_30_drive_0033_sync 1569 r
+2011_09_26/2011_09_26_drive_0091_sync 125 l
+2011_09_30/2011_09_30_drive_0033_sync 14 l
+2011_09_26/2011_09_26_drive_0057_sync 182 r
+2011_09_30/2011_09_30_drive_0034_sync 351 l
+2011_09_26/2011_09_26_drive_0035_sync 67 r
+2011_09_26/2011_09_26_drive_0019_sync 113 l
+2011_09_26/2011_09_26_drive_0015_sync 68 r
+2011_09_30/2011_09_30_drive_0020_sync 498 r
+2011_09_26/2011_09_26_drive_0087_sync 390 l
+2011_10_03/2011_10_03_drive_0034_sync 3369 l
+2011_09_30/2011_09_30_drive_0033_sync 1447 l
+2011_09_26/2011_09_26_drive_0057_sync 112 l
+2011_09_26/2011_09_26_drive_0014_sync 189 l
+2011_09_30/2011_09_30_drive_0028_sync 3769 l
+2011_10_03/2011_10_03_drive_0034_sync 1508 r
+2011_09_26/2011_09_26_drive_0011_sync 229 l
+2011_09_30/2011_09_30_drive_0033_sync 752 r
+2011_10_03/2011_10_03_drive_0034_sync 360 r
+2011_10_03/2011_10_03_drive_0034_sync 1216 r
+2011_09_30/2011_09_30_drive_0033_sync 966 r
+2011_09_26/2011_09_26_drive_0087_sync 19 r
+2011_09_26/2011_09_26_drive_0032_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 4855 l
+2011_09_30/2011_09_30_drive_0033_sync 1429 l
+2011_09_30/2011_09_30_drive_0020_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 3469 r
+2011_10_03/2011_10_03_drive_0034_sync 1682 r
+2011_09_30/2011_09_30_drive_0028_sync 451 l
+2011_09_30/2011_09_30_drive_0034_sync 737 r
+2011_09_30/2011_09_30_drive_0020_sync 773 r
+2011_10_03/2011_10_03_drive_0042_sync 368 r
+2011_10_03/2011_10_03_drive_0034_sync 4437 l
+2011_09_26/2011_09_26_drive_0087_sync 118 l
+2011_09_30/2011_09_30_drive_0034_sync 140 l
+2011_09_26/2011_09_26_drive_0019_sync 473 r
+2011_09_26/2011_09_26_drive_0091_sync 307 r
+2011_10_03/2011_10_03_drive_0042_sync 1073 l
+2011_09_26/2011_09_26_drive_0070_sync 364 l
+2011_09_26/2011_09_26_drive_0028_sync 276 l
+2011_10_03/2011_10_03_drive_0034_sync 4543 r
+2011_09_30/2011_09_30_drive_0020_sync 555 l
+2011_10_03/2011_10_03_drive_0034_sync 2598 l
+2011_09_30/2011_09_30_drive_0028_sync 1391 r
+2011_09_26/2011_09_26_drive_0011_sync 124 r
+2011_09_30/2011_09_30_drive_0020_sync 852 l
+2011_09_30/2011_09_30_drive_0033_sync 1369 r
+2011_09_26/2011_09_26_drive_0087_sync 122 r
+2011_09_30/2011_09_30_drive_0028_sync 2955 l
+2011_10_03/2011_10_03_drive_0034_sync 1446 r
+2011_09_30/2011_09_30_drive_0034_sync 155 l
+2011_09_26/2011_09_26_drive_0019_sync 48 r
+2011_10_03/2011_10_03_drive_0042_sync 631 r
+2011_09_30/2011_09_30_drive_0034_sync 757 r
+2011_09_26/2011_09_26_drive_0035_sync 9 r
+2011_09_29/2011_09_29_drive_0004_sync 312 r
+2011_09_26/2011_09_26_drive_0032_sync 115 l
+2011_09_30/2011_09_30_drive_0020_sync 298 r
+2011_10_03/2011_10_03_drive_0034_sync 2951 l
+2011_09_29/2011_09_29_drive_0026_sync 141 r
+2011_10_03/2011_10_03_drive_0042_sync 1134 r
+2011_09_26/2011_09_26_drive_0095_sync 149 r
+2011_09_26/2011_09_26_drive_0061_sync 400 l
+2011_10_03/2011_10_03_drive_0034_sync 4560 l
+2011_10_03/2011_10_03_drive_0034_sync 3238 r
+2011_09_26/2011_09_26_drive_0014_sync 86 l
+2011_09_30/2011_09_30_drive_0020_sync 511 r
+2011_09_30/2011_09_30_drive_0033_sync 1237 r
+2011_09_26/2011_09_26_drive_0087_sync 479 r
+2011_09_30/2011_09_30_drive_0033_sync 407 l
+2011_09_30/2011_09_30_drive_0028_sync 2558 l
+2011_09_26/2011_09_26_drive_0091_sync 67 r
+2011_09_26/2011_09_26_drive_0051_sync 117 r
+2011_09_26/2011_09_26_drive_0091_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 1981 r
+2011_09_30/2011_09_30_drive_0028_sync 2615 l
+2011_09_29/2011_09_29_drive_0026_sync 10 l
+2011_09_30/2011_09_30_drive_0028_sync 849 l
+2011_10_03/2011_10_03_drive_0034_sync 1977 r
+2011_09_26/2011_09_26_drive_0060_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 4398 l
+2011_09_30/2011_09_30_drive_0034_sync 662 r
+2011_10_03/2011_10_03_drive_0042_sync 345 l
+2011_09_26/2011_09_26_drive_0018_sync 41 l
+2011_09_26/2011_09_26_drive_0017_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 224 l
+2011_10_03/2011_10_03_drive_0034_sync 4186 l
+2011_09_30/2011_09_30_drive_0033_sync 294 r
+2011_10_03/2011_10_03_drive_0034_sync 1188 l
+2011_09_30/2011_09_30_drive_0028_sync 3107 r
+2011_10_03/2011_10_03_drive_0034_sync 3740 l
+2011_09_29/2011_09_29_drive_0004_sync 172 l
+2011_09_26/2011_09_26_drive_0019_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 2577 l
+2011_09_30/2011_09_30_drive_0028_sync 3388 l
+2011_09_26/2011_09_26_drive_0061_sync 149 r
+2011_09_30/2011_09_30_drive_0033_sync 1141 r
+2011_09_26/2011_09_26_drive_0060_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 4972 r
+2011_10_03/2011_10_03_drive_0042_sync 325 r
+2011_10_03/2011_10_03_drive_0034_sync 515 r
+2011_09_30/2011_09_30_drive_0028_sync 2877 r
+2011_09_28/2011_09_28_drive_0001_sync 44 r
+2011_09_30/2011_09_30_drive_0033_sync 103 r
+2011_09_26/2011_09_26_drive_0057_sync 233 r
+2011_09_30/2011_09_30_drive_0028_sync 4412 r
+2011_09_30/2011_09_30_drive_0028_sync 3702 r
+2011_09_30/2011_09_30_drive_0020_sync 85 l
+2011_09_26/2011_09_26_drive_0028_sync 389 l
+2011_09_30/2011_09_30_drive_0028_sync 886 r
+2011_09_30/2011_09_30_drive_0034_sync 307 l
+2011_09_26/2011_09_26_drive_0039_sync 265 r
+2011_09_26/2011_09_26_drive_0061_sync 276 r
+2011_09_30/2011_09_30_drive_0020_sync 395 r
+2011_10_03/2011_10_03_drive_0042_sync 418 r
+2011_10_03/2011_10_03_drive_0034_sync 2276 l
+2011_09_30/2011_09_30_drive_0028_sync 551 r
+2011_09_26/2011_09_26_drive_0011_sync 85 l
+2011_09_26/2011_09_26_drive_0057_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 513 l
+2011_09_30/2011_09_30_drive_0034_sync 469 r
+2011_09_26/2011_09_26_drive_0095_sync 171 r
+2011_09_26/2011_09_26_drive_0104_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 4417 r
+2011_09_26/2011_09_26_drive_0019_sync 57 l
+2011_09_30/2011_09_30_drive_0020_sync 741 l
+2011_09_26/2011_09_26_drive_0028_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 5085 r
+2011_09_29/2011_09_29_drive_0004_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 246 l
+2011_09_30/2011_09_30_drive_0028_sync 2834 r
+2011_09_26/2011_09_26_drive_0022_sync 736 r
+2011_09_30/2011_09_30_drive_0028_sync 2913 l
+2011_09_30/2011_09_30_drive_0033_sync 511 r
+2011_09_30/2011_09_30_drive_0020_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 467 l
+2011_09_26/2011_09_26_drive_0014_sync 209 l
+2011_09_30/2011_09_30_drive_0020_sync 357 r
+2011_09_30/2011_09_30_drive_0028_sync 4590 l
+2011_09_26/2011_09_26_drive_0014_sync 259 r
+2011_09_26/2011_09_26_drive_0032_sync 167 l
+2011_09_26/2011_09_26_drive_0022_sync 556 r
+2011_10_03/2011_10_03_drive_0034_sync 1617 l
+2011_09_26/2011_09_26_drive_0028_sync 355 l
+2011_09_30/2011_09_30_drive_0028_sync 4282 r
+2011_09_26/2011_09_26_drive_0014_sync 153 l
+2011_09_29/2011_09_29_drive_0004_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 3708 l
+2011_09_26/2011_09_26_drive_0087_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 2710 l
+2011_09_26/2011_09_26_drive_0095_sync 118 l
+2011_09_26/2011_09_26_drive_0019_sync 250 r
+2011_09_26/2011_09_26_drive_0104_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 1621 r
+2011_09_30/2011_09_30_drive_0028_sync 2973 r
+2011_09_30/2011_09_30_drive_0028_sync 910 l
+2011_10_03/2011_10_03_drive_0042_sync 1107 r
+2011_09_26/2011_09_26_drive_0061_sync 203 l
+2011_09_26/2011_09_26_drive_0095_sync 0 l
+2011_09_30/2011_09_30_drive_0033_sync 810 l
+2011_10_03/2011_10_03_drive_0034_sync 1424 r
+2011_09_30/2011_09_30_drive_0033_sync 657 l
+2011_09_30/2011_09_30_drive_0028_sync 1935 r
+2011_09_26/2011_09_26_drive_0022_sync 566 r
+2011_10_03/2011_10_03_drive_0034_sync 2289 l
+2011_09_29/2011_09_29_drive_0026_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 1420 l
+2011_09_30/2011_09_30_drive_0028_sync 4527 l
+2011_09_30/2011_09_30_drive_0028_sync 143 r
+2011_10_03/2011_10_03_drive_0042_sync 617 r
+2011_09_26/2011_09_26_drive_0015_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 5065 l
+2011_09_26/2011_09_26_drive_0005_sync 130 l
+2011_09_26/2011_09_26_drive_0070_sync 302 l
+2011_09_26/2011_09_26_drive_0017_sync 36 r
+2011_09_30/2011_09_30_drive_0033_sync 1302 r
+2011_09_26/2011_09_26_drive_0022_sync 107 r
+2011_09_30/2011_09_30_drive_0020_sync 564 l
+2011_09_30/2011_09_30_drive_0028_sync 4455 l
+2011_09_30/2011_09_30_drive_0020_sync 2 l
+2011_09_26/2011_09_26_drive_0104_sync 146 r
+2011_09_26/2011_09_26_drive_0091_sync 126 l
+2011_09_30/2011_09_30_drive_0028_sync 1323 l
+2011_09_30/2011_09_30_drive_0034_sync 261 r
+2011_09_26/2011_09_26_drive_0022_sync 478 l
+2011_10_03/2011_10_03_drive_0034_sync 3578 l
+2011_10_03/2011_10_03_drive_0034_sync 1880 r
+2011_09_26/2011_09_26_drive_0087_sync 464 r
+2011_09_26/2011_09_26_drive_0022_sync 510 r
+2011_09_30/2011_09_30_drive_0028_sync 1019 l
+2011_09_26/2011_09_26_drive_0014_sync 136 l
+2011_09_26/2011_09_26_drive_0022_sync 52 r
+2011_09_30/2011_09_30_drive_0028_sync 418 r
+2011_09_30/2011_09_30_drive_0033_sync 962 r
+2011_09_29/2011_09_29_drive_0004_sync 102 r
+2011_09_30/2011_09_30_drive_0020_sync 111 r
+2011_09_26/2011_09_26_drive_0061_sync 185 l
+2011_09_26/2011_09_26_drive_0057_sync 166 r
+2011_09_30/2011_09_30_drive_0033_sync 1145 r
+2011_09_30/2011_09_30_drive_0028_sync 1266 r
+2011_10_03/2011_10_03_drive_0034_sync 111 l
+2011_09_30/2011_09_30_drive_0033_sync 427 r
+2011_09_26/2011_09_26_drive_0061_sync 244 l
+2011_10_03/2011_10_03_drive_0042_sync 754 l
+2011_10_03/2011_10_03_drive_0042_sync 857 l
+2011_10_03/2011_10_03_drive_0034_sync 227 l
+2011_09_28/2011_09_28_drive_0001_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1200 l
+2011_09_30/2011_09_30_drive_0028_sync 1448 r
+2011_10_03/2011_10_03_drive_0034_sync 4297 l
+2011_09_30/2011_09_30_drive_0033_sync 1404 r
+2011_09_26/2011_09_26_drive_0032_sync 151 r
+2011_09_30/2011_09_30_drive_0020_sync 1041 r
+2011_09_30/2011_09_30_drive_0028_sync 674 r
+2011_09_26/2011_09_26_drive_0087_sync 664 l
+2011_09_30/2011_09_30_drive_0028_sync 4875 l
+2011_09_30/2011_09_30_drive_0028_sync 726 r
+2011_09_26/2011_09_26_drive_0051_sync 393 l
+2011_09_26/2011_09_26_drive_0104_sync 188 r
+2011_09_26/2011_09_26_drive_0113_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 461 l
+2011_10_03/2011_10_03_drive_0034_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 1108 r
+2011_09_30/2011_09_30_drive_0033_sync 564 l
+2011_09_26/2011_09_26_drive_0028_sync 394 l
+2011_09_30/2011_09_30_drive_0028_sync 3549 l
+2011_09_26/2011_09_26_drive_0014_sync 2 l
+2011_09_30/2011_09_30_drive_0034_sync 985 r
+2011_09_26/2011_09_26_drive_0039_sync 371 l
+2011_09_29/2011_09_29_drive_0004_sync 309 l
+2011_09_26/2011_09_26_drive_0087_sync 199 l
+2011_09_26/2011_09_26_drive_0087_sync 185 l
+2011_09_30/2011_09_30_drive_0034_sync 632 r
+2011_09_26/2011_09_26_drive_0028_sync 29 l
+2011_09_26/2011_09_26_drive_0087_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 2673 r
+2011_09_26/2011_09_26_drive_0051_sync 409 r
+2011_09_26/2011_09_26_drive_0087_sync 487 r
+2011_09_30/2011_09_30_drive_0033_sync 317 r
+2011_10_03/2011_10_03_drive_0034_sync 1123 l
+2011_09_26/2011_09_26_drive_0087_sync 393 r
+2011_09_26/2011_09_26_drive_0070_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 2187 r
+2011_09_30/2011_09_30_drive_0028_sync 3696 r
+2011_09_26/2011_09_26_drive_0070_sync 418 r
+2011_09_26/2011_09_26_drive_0039_sync 337 r
+2011_09_30/2011_09_30_drive_0020_sync 585 l
+2011_10_03/2011_10_03_drive_0034_sync 2393 l
+2011_09_26/2011_09_26_drive_0079_sync 77 l
+2011_09_26/2011_09_26_drive_0061_sync 582 l
+2011_09_30/2011_09_30_drive_0028_sync 1730 l
+2011_09_30/2011_09_30_drive_0028_sync 3056 l
+2011_09_26/2011_09_26_drive_0028_sync 324 l
+2011_09_30/2011_09_30_drive_0028_sync 3941 r
+2011_09_26/2011_09_26_drive_0070_sync 133 r
+2011_10_03/2011_10_03_drive_0034_sync 2542 l
+2011_09_26/2011_09_26_drive_0022_sync 438 r
+2011_10_03/2011_10_03_drive_0034_sync 201 l
+2011_09_26/2011_09_26_drive_0039_sync 145 r
+2011_09_26/2011_09_26_drive_0061_sync 87 l
+2011_09_26/2011_09_26_drive_0051_sync 232 r
+2011_10_03/2011_10_03_drive_0042_sync 729 r
+2011_09_26/2011_09_26_drive_0022_sync 56 r
+2011_09_30/2011_09_30_drive_0033_sync 1378 r
+2011_10_03/2011_10_03_drive_0034_sync 501 l
+2011_09_26/2011_09_26_drive_0028_sync 136 r
+2011_09_26/2011_09_26_drive_0070_sync 225 r
+2011_09_30/2011_09_30_drive_0020_sync 425 r
+2011_09_30/2011_09_30_drive_0028_sync 573 l
+2011_09_26/2011_09_26_drive_0022_sync 173 l
+2011_09_26/2011_09_26_drive_0022_sync 243 r
+2011_10_03/2011_10_03_drive_0042_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 2930 r
+2011_09_30/2011_09_30_drive_0028_sync 1783 l
+2011_09_26/2011_09_26_drive_0087_sync 484 l
+2011_09_29/2011_09_29_drive_0026_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 3852 l
+2011_09_26/2011_09_26_drive_0028_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 4271 l
+2011_09_26/2011_09_26_drive_0022_sync 652 l
+2011_09_30/2011_09_30_drive_0028_sync 2700 r
+2011_09_30/2011_09_30_drive_0028_sync 5033 l
+2011_09_30/2011_09_30_drive_0028_sync 4039 l
+2011_10_03/2011_10_03_drive_0042_sync 842 l
+2011_10_03/2011_10_03_drive_0042_sync 550 l
+2011_09_26/2011_09_26_drive_0070_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 3034 r
+2011_09_30/2011_09_30_drive_0028_sync 3415 l
+2011_09_29/2011_09_29_drive_0004_sync 276 l
+2011_09_30/2011_09_30_drive_0034_sync 921 l
+2011_09_29/2011_09_29_drive_0026_sync 75 r
+2011_09_26/2011_09_26_drive_0104_sync 56 l
+2011_09_26/2011_09_26_drive_0022_sync 503 r
+2011_09_30/2011_09_30_drive_0028_sync 2564 l
+2011_09_26/2011_09_26_drive_0019_sync 419 r
+2011_09_26/2011_09_26_drive_0005_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 2407 l
+2011_10_03/2011_10_03_drive_0034_sync 998 r
+2011_09_30/2011_09_30_drive_0028_sync 4390 l
+2011_10_03/2011_10_03_drive_0034_sync 4466 l
+2011_09_30/2011_09_30_drive_0034_sync 680 r
+2011_09_26/2011_09_26_drive_0051_sync 9 l
+2011_09_26/2011_09_26_drive_0091_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 1087 r
+2011_09_26/2011_09_26_drive_0070_sync 125 l
+2011_10_03/2011_10_03_drive_0034_sync 434 l
+2011_10_03/2011_10_03_drive_0042_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 3875 r
+2011_09_30/2011_09_30_drive_0020_sync 372 l
+2011_09_26/2011_09_26_drive_0028_sync 353 r
+2011_10_03/2011_10_03_drive_0034_sync 688 l
+2011_09_26/2011_09_26_drive_0032_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 46 l
+2011_10_03/2011_10_03_drive_0034_sync 2341 l
+2011_09_26/2011_09_26_drive_0022_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 1495 r
+2011_09_26/2011_09_26_drive_0087_sync 658 r
+2011_09_29/2011_09_29_drive_0026_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 422 l
+2011_09_26/2011_09_26_drive_0061_sync 445 r
+2011_09_26/2011_09_26_drive_0095_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 1720 r
+2011_09_26/2011_09_26_drive_0113_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 3700 l
+2011_10_03/2011_10_03_drive_0034_sync 3618 r
+2011_09_30/2011_09_30_drive_0028_sync 4138 l
+2011_09_30/2011_09_30_drive_0028_sync 3544 l
+2011_09_26/2011_09_26_drive_0061_sync 317 l
+2011_10_03/2011_10_03_drive_0034_sync 2278 r
+2011_10_03/2011_10_03_drive_0042_sync 494 l
+2011_09_30/2011_09_30_drive_0033_sync 1080 r
+2011_09_26/2011_09_26_drive_0019_sync 81 l
+2011_09_29/2011_09_29_drive_0004_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 3899 l
+2011_10_03/2011_10_03_drive_0034_sync 2008 l
+2011_09_26/2011_09_26_drive_0015_sync 296 r
+2011_09_30/2011_09_30_drive_0033_sync 1195 r
+2011_09_26/2011_09_26_drive_0015_sync 20 l
+2011_09_26/2011_09_26_drive_0061_sync 582 r
+2011_10_03/2011_10_03_drive_0034_sync 2667 r
+2011_09_26/2011_09_26_drive_0057_sync 20 l
+2011_09_26/2011_09_26_drive_0018_sync 80 r
+2011_09_30/2011_09_30_drive_0033_sync 1362 l
+2011_10_03/2011_10_03_drive_0042_sync 173 l
+2011_09_28/2011_09_28_drive_0001_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 623 l
+2011_09_30/2011_09_30_drive_0028_sync 2842 r
+2011_09_30/2011_09_30_drive_0028_sync 83 r
+2011_10_03/2011_10_03_drive_0034_sync 1657 l
+2011_09_30/2011_09_30_drive_0028_sync 5152 l
+2011_09_26/2011_09_26_drive_0022_sync 733 l
+2011_09_26/2011_09_26_drive_0051_sync 265 l
+2011_09_29/2011_09_29_drive_0026_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 1523 l
+2011_09_30/2011_09_30_drive_0028_sync 4579 r
+2011_09_30/2011_09_30_drive_0028_sync 925 l
+2011_09_26/2011_09_26_drive_0091_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 1226 r
+2011_09_26/2011_09_26_drive_0018_sync 105 r
+2011_09_26/2011_09_26_drive_0087_sync 622 l
+2011_10_03/2011_10_03_drive_0034_sync 1119 r
+2011_10_03/2011_10_03_drive_0034_sync 3289 l
+2011_09_30/2011_09_30_drive_0028_sync 2035 l
+2011_09_26/2011_09_26_drive_0019_sync 343 r
+2011_09_26/2011_09_26_drive_0014_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 4024 r
+2011_09_30/2011_09_30_drive_0034_sync 101 r
+2011_09_26/2011_09_26_drive_0087_sync 673 l
+2011_09_26/2011_09_26_drive_0014_sync 210 r
+2011_09_26/2011_09_26_drive_0070_sync 417 r
+2011_09_26/2011_09_26_drive_0061_sync 125 r
+2011_09_26/2011_09_26_drive_0015_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 1429 l
+2011_10_03/2011_10_03_drive_0034_sync 630 l
+2011_09_26/2011_09_26_drive_0028_sync 232 l
+2011_09_26/2011_09_26_drive_0051_sync 384 l
+2011_10_03/2011_10_03_drive_0034_sync 3008 l
+2011_10_03/2011_10_03_drive_0034_sync 748 r
+2011_09_30/2011_09_30_drive_0028_sync 2409 r
+2011_09_26/2011_09_26_drive_0019_sync 366 r
+2011_09_30/2011_09_30_drive_0028_sync 4035 l
+2011_09_30/2011_09_30_drive_0028_sync 1651 l
+2011_09_26/2011_09_26_drive_0051_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 1505 r
+2011_09_30/2011_09_30_drive_0020_sync 892 l
+2011_10_03/2011_10_03_drive_0034_sync 3165 r
+2011_09_26/2011_09_26_drive_0014_sync 246 r
+2011_09_26/2011_09_26_drive_0060_sync 4 l
+2011_09_30/2011_09_30_drive_0033_sync 1163 l
+2011_09_26/2011_09_26_drive_0017_sync 54 l
+2011_09_26/2011_09_26_drive_0061_sync 546 l
+2011_09_26/2011_09_26_drive_0017_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 686 r
+2011_09_26/2011_09_26_drive_0022_sync 546 r
+2011_09_30/2011_09_30_drive_0033_sync 1188 l
+2011_09_26/2011_09_26_drive_0057_sync 338 l
+2011_09_30/2011_09_30_drive_0028_sync 3380 l
+2011_09_26/2011_09_26_drive_0061_sync 642 l
+2011_09_30/2011_09_30_drive_0028_sync 3361 r
+2011_09_30/2011_09_30_drive_0033_sync 1029 l
+2011_09_30/2011_09_30_drive_0033_sync 1150 l
+2011_09_26/2011_09_26_drive_0091_sync 216 l
+2011_10_03/2011_10_03_drive_0042_sync 46 r
+2011_09_26/2011_09_26_drive_0014_sync 262 r
+2011_09_26/2011_09_26_drive_0028_sync 409 l
+2011_09_30/2011_09_30_drive_0033_sync 1000 r
+2011_09_26/2011_09_26_drive_0032_sync 388 r
+2011_10_03/2011_10_03_drive_0042_sync 497 l
+2011_10_03/2011_10_03_drive_0042_sync 321 l
+2011_10_03/2011_10_03_drive_0042_sync 822 r
+2011_09_26/2011_09_26_drive_0057_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 2325 r
+2011_09_30/2011_09_30_drive_0028_sync 789 r
+2011_09_26/2011_09_26_drive_0022_sync 117 l
+2011_09_30/2011_09_30_drive_0033_sync 1369 l
+2011_09_26/2011_09_26_drive_0070_sync 243 l
+2011_09_30/2011_09_30_drive_0028_sync 2877 l
+2011_10_03/2011_10_03_drive_0034_sync 1247 r
+2011_09_26/2011_09_26_drive_0087_sync 502 r
+2011_09_30/2011_09_30_drive_0028_sync 2169 l
+2011_09_26/2011_09_26_drive_0018_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 3533 l
+2011_10_03/2011_10_03_drive_0034_sync 3825 l
+2011_09_26/2011_09_26_drive_0061_sync 599 r
+2011_10_03/2011_10_03_drive_0034_sync 1684 l
+2011_09_26/2011_09_26_drive_0091_sync 115 r
+2011_09_26/2011_09_26_drive_0005_sync 8 r
+2011_09_26/2011_09_26_drive_0061_sync 501 l
+2011_09_26/2011_09_26_drive_0087_sync 115 l
+2011_09_30/2011_09_30_drive_0028_sync 2889 l
+2011_09_30/2011_09_30_drive_0028_sync 74 l
+2011_09_29/2011_09_29_drive_0004_sync 160 r
+2011_09_26/2011_09_26_drive_0091_sync 153 l
+2011_09_30/2011_09_30_drive_0020_sync 893 r
+2011_09_30/2011_09_30_drive_0020_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 421 l
+2011_09_26/2011_09_26_drive_0070_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 69 r
+2011_09_26/2011_09_26_drive_0039_sync 330 r
+2011_09_26/2011_09_26_drive_0018_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 4557 r
+2011_10_03/2011_10_03_drive_0034_sync 4442 r
+2011_10_03/2011_10_03_drive_0034_sync 2751 r
+2011_09_30/2011_09_30_drive_0028_sync 1963 r
+2011_10_03/2011_10_03_drive_0034_sync 1876 l
+2011_10_03/2011_10_03_drive_0034_sync 313 r
+2011_09_30/2011_09_30_drive_0028_sync 3597 l
+2011_09_29/2011_09_29_drive_0026_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 1213 r
+2011_09_30/2011_09_30_drive_0033_sync 1074 r
+2011_09_30/2011_09_30_drive_0033_sync 615 r
+2011_09_30/2011_09_30_drive_0020_sync 395 l
+2011_09_26/2011_09_26_drive_0070_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 444 r
+2011_10_03/2011_10_03_drive_0034_sync 4642 l
+2011_09_30/2011_09_30_drive_0028_sync 4835 r
+2011_10_03/2011_10_03_drive_0034_sync 3509 l
+2011_09_30/2011_09_30_drive_0033_sync 1119 l
+2011_09_26/2011_09_26_drive_0022_sync 185 r
+2011_09_26/2011_09_26_drive_0087_sync 551 r
+2011_09_26/2011_09_26_drive_0087_sync 333 r
+2011_09_30/2011_09_30_drive_0020_sync 466 r
+2011_09_26/2011_09_26_drive_0015_sync 277 r
+2011_09_30/2011_09_30_drive_0034_sync 258 l
+2011_10_03/2011_10_03_drive_0034_sync 1338 r
+2011_09_29/2011_09_29_drive_0004_sync 143 r
+2011_09_26/2011_09_26_drive_0057_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 4349 r
+2011_09_29/2011_09_29_drive_0004_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 2663 l
+2011_10_03/2011_10_03_drive_0034_sync 4618 r
+2011_09_30/2011_09_30_drive_0028_sync 768 r
+2011_09_30/2011_09_30_drive_0033_sync 1381 l
+2011_09_30/2011_09_30_drive_0033_sync 1568 r
+2011_10_03/2011_10_03_drive_0034_sync 292 l
+2011_09_26/2011_09_26_drive_0104_sync 148 l
+2011_09_26/2011_09_26_drive_0018_sync 58 r
+2011_09_30/2011_09_30_drive_0033_sync 1483 l
+2011_09_30/2011_09_30_drive_0034_sync 283 r
+2011_10_03/2011_10_03_drive_0042_sync 950 r
+2011_09_30/2011_09_30_drive_0020_sync 809 l
+2011_09_30/2011_09_30_drive_0034_sync 575 l
+2011_10_03/2011_10_03_drive_0034_sync 1312 r
+2011_10_03/2011_10_03_drive_0042_sync 903 r
+2011_10_03/2011_10_03_drive_0034_sync 2041 l
+2011_09_30/2011_09_30_drive_0028_sync 3054 r
+2011_09_26/2011_09_26_drive_0028_sync 319 l
+2011_10_03/2011_10_03_drive_0034_sync 2906 l
+2011_09_26/2011_09_26_drive_0032_sync 176 l
+2011_09_26/2011_09_26_drive_0035_sync 33 l
+2011_09_30/2011_09_30_drive_0020_sync 709 r
+2011_09_26/2011_09_26_drive_0087_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 365 r
+2011_09_30/2011_09_30_drive_0028_sync 4387 l
+2011_09_26/2011_09_26_drive_0017_sync 17 l
+2011_09_26/2011_09_26_drive_0035_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 4324 l
+2011_10_03/2011_10_03_drive_0034_sync 3707 l
+2011_09_30/2011_09_30_drive_0028_sync 2712 r
+2011_10_03/2011_10_03_drive_0034_sync 2810 r
+2011_10_03/2011_10_03_drive_0034_sync 4412 r
+2011_09_26/2011_09_26_drive_0028_sync 164 r
+2011_09_30/2011_09_30_drive_0028_sync 1263 r
+2011_09_26/2011_09_26_drive_0028_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 379 r
+2011_09_30/2011_09_30_drive_0028_sync 4235 r
+2011_09_30/2011_09_30_drive_0020_sync 477 l
+2011_09_26/2011_09_26_drive_0022_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 4472 l
+2011_09_30/2011_09_30_drive_0028_sync 5169 r
+2011_10_03/2011_10_03_drive_0034_sync 4637 r
+2011_09_30/2011_09_30_drive_0028_sync 912 l
+2011_09_26/2011_09_26_drive_0001_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 2803 r
+2011_10_03/2011_10_03_drive_0042_sync 318 l
+2011_09_30/2011_09_30_drive_0033_sync 105 r
+2011_09_30/2011_09_30_drive_0028_sync 2696 l
+2011_09_26/2011_09_26_drive_0079_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 2140 r
+2011_09_30/2011_09_30_drive_0033_sync 1063 l
+2011_09_26/2011_09_26_drive_0017_sync 53 r
+2011_09_30/2011_09_30_drive_0028_sync 3963 l
+2011_09_26/2011_09_26_drive_0087_sync 392 r
+2011_10_03/2011_10_03_drive_0034_sync 656 l
+2011_09_30/2011_09_30_drive_0034_sync 852 l
+2011_09_30/2011_09_30_drive_0028_sync 1465 r
+2011_10_03/2011_10_03_drive_0034_sync 2805 r
+2011_09_30/2011_09_30_drive_0034_sync 939 l
+2011_09_30/2011_09_30_drive_0028_sync 673 r
+2011_09_29/2011_09_29_drive_0004_sync 229 r
+2011_10_03/2011_10_03_drive_0034_sync 2104 l
+2011_09_30/2011_09_30_drive_0020_sync 84 l
+2011_09_26/2011_09_26_drive_0028_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 37 r
+2011_09_26/2011_09_26_drive_0019_sync 458 l
+2011_09_26/2011_09_26_drive_0060_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 1530 l
+2011_10_03/2011_10_03_drive_0034_sync 3727 r
+2011_10_03/2011_10_03_drive_0034_sync 3605 r
+2011_09_30/2011_09_30_drive_0028_sync 4215 l
+2011_09_30/2011_09_30_drive_0028_sync 3158 l
+2011_09_26/2011_09_26_drive_0017_sync 109 l
+2011_09_30/2011_09_30_drive_0028_sync 1144 r
+2011_09_30/2011_09_30_drive_0033_sync 1140 l
+2011_09_30/2011_09_30_drive_0033_sync 619 l
+2011_09_26/2011_09_26_drive_0022_sync 260 r
+2011_09_26/2011_09_26_drive_0019_sync 254 r
+2011_09_26/2011_09_26_drive_0087_sync 221 l
+2011_09_30/2011_09_30_drive_0028_sync 2981 r
+2011_09_30/2011_09_30_drive_0034_sync 702 l
+2011_10_03/2011_10_03_drive_0034_sync 4518 l
+2011_09_30/2011_09_30_drive_0028_sync 2471 r
+2011_09_30/2011_09_30_drive_0034_sync 1186 r
+2011_09_30/2011_09_30_drive_0033_sync 337 r
+2011_09_30/2011_09_30_drive_0020_sync 635 r
+2011_09_26/2011_09_26_drive_0014_sync 264 r
+2011_09_26/2011_09_26_drive_0057_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 664 l
+2011_09_26/2011_09_26_drive_0087_sync 335 l
+2011_10_03/2011_10_03_drive_0034_sync 1663 r
+2011_09_26/2011_09_26_drive_0028_sync 214 l
+2011_10_03/2011_10_03_drive_0042_sync 896 l
+2011_09_30/2011_09_30_drive_0033_sync 1437 r
+2011_09_26/2011_09_26_drive_0079_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 1005 r
+2011_09_29/2011_09_29_drive_0004_sync 257 r
+2011_10_03/2011_10_03_drive_0034_sync 1874 r
+2011_09_26/2011_09_26_drive_0022_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 2731 l
+2011_09_26/2011_09_26_drive_0039_sync 96 l
+2011_09_26/2011_09_26_drive_0057_sync 267 l
+2011_09_26/2011_09_26_drive_0057_sync 214 l
+2011_10_03/2011_10_03_drive_0042_sync 1104 r
+2011_09_30/2011_09_30_drive_0020_sync 428 l
+2011_10_03/2011_10_03_drive_0034_sync 1777 l
+2011_10_03/2011_10_03_drive_0042_sync 642 l
+2011_10_03/2011_10_03_drive_0042_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 3668 l
+2011_09_26/2011_09_26_drive_0091_sync 210 l
+2011_09_30/2011_09_30_drive_0034_sync 424 l
+2011_09_26/2011_09_26_drive_0032_sync 101 l
+2011_09_30/2011_09_30_drive_0028_sync 5042 r
+2011_10_03/2011_10_03_drive_0034_sync 4524 r
+2011_09_30/2011_09_30_drive_0033_sync 830 l
+2011_09_30/2011_09_30_drive_0028_sync 1324 r
+2011_10_03/2011_10_03_drive_0034_sync 799 l
+2011_09_30/2011_09_30_drive_0028_sync 1094 l
+2011_09_26/2011_09_26_drive_0028_sync 369 r
+2011_09_30/2011_09_30_drive_0028_sync 906 l
+2011_09_26/2011_09_26_drive_0061_sync 646 r
+2011_09_26/2011_09_26_drive_0039_sync 235 r
+2011_09_26/2011_09_26_drive_0087_sync 442 r
+2011_09_30/2011_09_30_drive_0033_sync 461 r
+2011_09_26/2011_09_26_drive_0057_sync 79 l
+2011_09_30/2011_09_30_drive_0033_sync 1197 r
+2011_10_03/2011_10_03_drive_0042_sync 972 r
+2011_09_26/2011_09_26_drive_0019_sync 410 l
+2011_09_26/2011_09_26_drive_0061_sync 603 r
+2011_09_30/2011_09_30_drive_0028_sync 3098 r
+2011_09_26/2011_09_26_drive_0091_sync 194 l
+2011_09_30/2011_09_30_drive_0033_sync 621 l
+2011_09_26/2011_09_26_drive_0087_sync 646 r
+2011_09_26/2011_09_26_drive_0104_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 364 r
+2011_09_30/2011_09_30_drive_0034_sync 452 l
+2011_09_30/2011_09_30_drive_0028_sync 4391 l
+2011_09_30/2011_09_30_drive_0028_sync 4644 l
+2011_09_26/2011_09_26_drive_0014_sync 110 r
+2011_09_30/2011_09_30_drive_0020_sync 698 r
+2011_09_26/2011_09_26_drive_0070_sync 401 l
+2011_09_26/2011_09_26_drive_0019_sync 201 r
+2011_09_30/2011_09_30_drive_0033_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 4015 r
+2011_10_03/2011_10_03_drive_0034_sync 4661 l
+2011_10_03/2011_10_03_drive_0034_sync 3952 r
+2011_09_30/2011_09_30_drive_0028_sync 2804 l
+2011_09_26/2011_09_26_drive_0018_sync 110 l
+2011_09_26/2011_09_26_drive_0015_sync 96 r
+2011_09_26/2011_09_26_drive_0022_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 2640 l
+2011_09_30/2011_09_30_drive_0020_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 2828 l
+2011_09_26/2011_09_26_drive_0028_sync 193 r
+2011_09_26/2011_09_26_drive_0070_sync 229 l
+2011_10_03/2011_10_03_drive_0034_sync 877 r
+2011_09_30/2011_09_30_drive_0020_sync 241 r
+2011_09_26/2011_09_26_drive_0028_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 1165 r
+2011_09_26/2011_09_26_drive_0104_sync 302 r
+2011_09_26/2011_09_26_drive_0019_sync 329 r
+2011_09_30/2011_09_30_drive_0028_sync 1911 l
+2011_09_26/2011_09_26_drive_0019_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 2047 r
+2011_09_26/2011_09_26_drive_0061_sync 298 l
+2011_09_30/2011_09_30_drive_0034_sync 618 l
+2011_09_30/2011_09_30_drive_0034_sync 26 l
+2011_09_30/2011_09_30_drive_0033_sync 1090 r
+2011_09_30/2011_09_30_drive_0028_sync 3971 l
+2011_09_30/2011_09_30_drive_0020_sync 688 r
+2011_09_30/2011_09_30_drive_0028_sync 2620 l
+2011_09_30/2011_09_30_drive_0034_sync 872 r
+2011_09_30/2011_09_30_drive_0020_sync 964 r
+2011_09_30/2011_09_30_drive_0028_sync 2598 r
+2011_10_03/2011_10_03_drive_0034_sync 1095 l
+2011_10_03/2011_10_03_drive_0042_sync 282 l
+2011_09_30/2011_09_30_drive_0028_sync 484 l
+2011_09_26/2011_09_26_drive_0022_sync 162 r
+2011_09_26/2011_09_26_drive_0032_sync 26 r
+2011_09_30/2011_09_30_drive_0028_sync 4520 l
+2011_09_26/2011_09_26_drive_0014_sync 178 r
+2011_10_03/2011_10_03_drive_0034_sync 3502 l
+2011_10_03/2011_10_03_drive_0042_sync 390 l
+2011_09_30/2011_09_30_drive_0028_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 1436 r
+2011_09_26/2011_09_26_drive_0022_sync 202 r
+2011_10_03/2011_10_03_drive_0042_sync 361 l
+2011_09_26/2011_09_26_drive_0015_sync 237 l
+2011_09_30/2011_09_30_drive_0033_sync 1506 l
+2011_10_03/2011_10_03_drive_0034_sync 4604 r
+2011_09_30/2011_09_30_drive_0034_sync 1008 r
+2011_09_26/2011_09_26_drive_0087_sync 138 l
+2011_09_26/2011_09_26_drive_0104_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 727 r
+2011_09_30/2011_09_30_drive_0020_sync 333 r
+2011_09_26/2011_09_26_drive_0087_sync 147 l
+2011_09_26/2011_09_26_drive_0051_sync 105 l
+2011_09_26/2011_09_26_drive_0019_sync 442 r
+2011_09_30/2011_09_30_drive_0034_sync 937 l
+2011_09_30/2011_09_30_drive_0028_sync 1415 l
+2011_09_26/2011_09_26_drive_0087_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 3203 l
+2011_10_03/2011_10_03_drive_0034_sync 3900 r
+2011_10_03/2011_10_03_drive_0042_sync 503 r
+2011_09_26/2011_09_26_drive_0022_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 3262 l
+2011_09_26/2011_09_26_drive_0039_sync 243 r
+2011_10_03/2011_10_03_drive_0034_sync 2249 l
+2011_10_03/2011_10_03_drive_0034_sync 2644 r
+2011_09_30/2011_09_30_drive_0020_sync 456 r
+2011_10_03/2011_10_03_drive_0034_sync 419 l
+2011_09_26/2011_09_26_drive_0032_sync 83 r
+2011_09_30/2011_09_30_drive_0028_sync 2031 r
+2011_10_03/2011_10_03_drive_0042_sync 344 l
+2011_09_26/2011_09_26_drive_0005_sync 117 l
+2011_09_26/2011_09_26_drive_0061_sync 90 l
+2011_09_26/2011_09_26_drive_0019_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 2230 l
+2011_09_26/2011_09_26_drive_0019_sync 203 l
+2011_09_26/2011_09_26_drive_0032_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 916 l
+2011_10_03/2011_10_03_drive_0034_sync 4142 l
+2011_09_26/2011_09_26_drive_0061_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 825 l
+2011_09_30/2011_09_30_drive_0034_sync 1179 r
+2011_09_30/2011_09_30_drive_0028_sync 3944 r
+2011_09_30/2011_09_30_drive_0028_sync 7 r
+2011_09_26/2011_09_26_drive_0070_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 2100 r
+2011_09_30/2011_09_30_drive_0028_sync 3214 l
+2011_10_03/2011_10_03_drive_0034_sync 351 r
+2011_10_03/2011_10_03_drive_0034_sync 1943 r
+2011_10_03/2011_10_03_drive_0034_sync 4411 r
+2011_10_03/2011_10_03_drive_0034_sync 2443 r
+2011_09_30/2011_09_30_drive_0028_sync 2966 r
+2011_09_30/2011_09_30_drive_0028_sync 5142 l
+2011_09_26/2011_09_26_drive_0032_sync 139 r
+2011_09_26/2011_09_26_drive_0057_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 4827 l
+2011_09_26/2011_09_26_drive_0019_sync 441 l
+2011_09_30/2011_09_30_drive_0028_sync 622 r
+2011_10_03/2011_10_03_drive_0034_sync 4626 l
+2011_09_29/2011_09_29_drive_0004_sync 261 l
+2011_09_26/2011_09_26_drive_0051_sync 27 r
+2011_09_26/2011_09_26_drive_0039_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 3733 r
+2011_10_03/2011_10_03_drive_0042_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 3699 l
+2011_09_26/2011_09_26_drive_0022_sync 30 r
+2011_09_30/2011_09_30_drive_0034_sync 522 l
+2011_09_30/2011_09_30_drive_0028_sync 4237 r
+2011_09_30/2011_09_30_drive_0028_sync 3831 l
+2011_09_30/2011_09_30_drive_0033_sync 455 l
+2011_09_30/2011_09_30_drive_0033_sync 283 l
+2011_09_30/2011_09_30_drive_0020_sync 664 l
+2011_09_26/2011_09_26_drive_0104_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 1758 l
+2011_09_26/2011_09_26_drive_0005_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 4037 r
+2011_10_03/2011_10_03_drive_0034_sync 1913 r
+2011_09_26/2011_09_26_drive_0018_sync 250 r
+2011_09_26/2011_09_26_drive_0087_sync 297 r
+2011_09_30/2011_09_30_drive_0033_sync 1431 r
+2011_09_26/2011_09_26_drive_0091_sync 142 r
+2011_09_29/2011_09_29_drive_0004_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 742 r
+2011_09_26/2011_09_26_drive_0104_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 2733 l
+2011_09_26/2011_09_26_drive_0022_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 2483 l
+2011_09_26/2011_09_26_drive_0017_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 4622 l
+2011_09_30/2011_09_30_drive_0033_sync 771 l
+2011_09_26/2011_09_26_drive_0095_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 3427 l
+2011_09_26/2011_09_26_drive_0014_sync 154 r
+2011_09_26/2011_09_26_drive_0113_sync 64 l
+2011_09_30/2011_09_30_drive_0034_sync 498 r
+2011_10_03/2011_10_03_drive_0034_sync 1710 r
+2011_09_26/2011_09_26_drive_0014_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 615 r
+2011_10_03/2011_10_03_drive_0034_sync 1794 r
+2011_10_03/2011_10_03_drive_0034_sync 3425 r
+2011_09_26/2011_09_26_drive_0087_sync 346 l
+2011_10_03/2011_10_03_drive_0034_sync 3016 l
+2011_09_29/2011_09_29_drive_0004_sync 60 r
+2011_10_03/2011_10_03_drive_0034_sync 194 r
+2011_09_26/2011_09_26_drive_0091_sync 288 r
+2011_09_26/2011_09_26_drive_0057_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 927 r
+2011_09_30/2011_09_30_drive_0034_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 2769 r
+2011_09_26/2011_09_26_drive_0061_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 988 r
+2011_09_26/2011_09_26_drive_0039_sync 259 l
+2011_09_30/2011_09_30_drive_0028_sync 2769 l
+2011_09_30/2011_09_30_drive_0034_sync 17 l
+2011_09_26/2011_09_26_drive_0057_sync 122 r
+2011_09_30/2011_09_30_drive_0033_sync 443 r
+2011_09_26/2011_09_26_drive_0019_sync 413 r
+2011_09_26/2011_09_26_drive_0061_sync 160 r
+2011_10_03/2011_10_03_drive_0042_sync 292 r
+2011_09_30/2011_09_30_drive_0020_sync 949 r
+2011_10_03/2011_10_03_drive_0034_sync 2881 r
+2011_09_26/2011_09_26_drive_0104_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 3328 l
+2011_09_26/2011_09_26_drive_0032_sync 239 r
+2011_09_30/2011_09_30_drive_0020_sync 664 r
+2011_09_29/2011_09_29_drive_0004_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 3396 l
+2011_10_03/2011_10_03_drive_0034_sync 3127 l
+2011_09_30/2011_09_30_drive_0034_sync 814 r
+2011_10_03/2011_10_03_drive_0034_sync 542 l
+2011_09_26/2011_09_26_drive_0022_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 2627 l
+2011_09_30/2011_09_30_drive_0028_sync 5013 r
+2011_09_26/2011_09_26_drive_0022_sync 218 l
+2011_09_26/2011_09_26_drive_0095_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 1900 r
+2011_09_26/2011_09_26_drive_0019_sync 194 l
+2011_09_26/2011_09_26_drive_0087_sync 164 r
+2011_09_26/2011_09_26_drive_0051_sync 75 l
+2011_09_26/2011_09_26_drive_0032_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 1843 r
+2011_10_03/2011_10_03_drive_0034_sync 1808 r
+2011_09_30/2011_09_30_drive_0020_sync 808 l
+2011_09_30/2011_09_30_drive_0033_sync 516 r
+2011_09_30/2011_09_30_drive_0033_sync 568 r
+2011_09_26/2011_09_26_drive_0022_sync 69 r
+2011_09_26/2011_09_26_drive_0001_sync 18 l
+2011_09_26/2011_09_26_drive_0028_sync 0 r
+2011_09_26/2011_09_26_drive_0022_sync 355 r
+2011_09_30/2011_09_30_drive_0034_sync 1068 l
+2011_09_30/2011_09_30_drive_0028_sync 4572 l
+2011_10_03/2011_10_03_drive_0034_sync 2716 r
+2011_09_30/2011_09_30_drive_0028_sync 3773 l
+2011_09_26/2011_09_26_drive_0001_sync 88 l
+2011_09_26/2011_09_26_drive_0032_sync 258 r
+2011_09_26/2011_09_26_drive_0061_sync 624 l
+2011_10_03/2011_10_03_drive_0034_sync 4177 r
+2011_09_30/2011_09_30_drive_0028_sync 4498 l
+2011_10_03/2011_10_03_drive_0034_sync 2234 l
+2011_09_30/2011_09_30_drive_0020_sync 282 r
+2011_09_26/2011_09_26_drive_0032_sync 315 l
+2011_09_26/2011_09_26_drive_0019_sync 396 r
+2011_09_26/2011_09_26_drive_0061_sync 202 r
+2011_09_30/2011_09_30_drive_0033_sync 638 r
+2011_09_30/2011_09_30_drive_0028_sync 4823 r
+2011_09_30/2011_09_30_drive_0028_sync 954 l
+2011_10_03/2011_10_03_drive_0034_sync 3187 r
+2011_09_30/2011_09_30_drive_0028_sync 2761 r
+2011_09_30/2011_09_30_drive_0028_sync 4964 r
+2011_09_26/2011_09_26_drive_0015_sync 102 r
+2011_09_26/2011_09_26_drive_0079_sync 38 l
+2011_09_26/2011_09_26_drive_0051_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 3419 r
+2011_09_30/2011_09_30_drive_0028_sync 4552 l
+2011_10_03/2011_10_03_drive_0034_sync 493 l
+2011_09_26/2011_09_26_drive_0028_sync 29 r
+2011_09_26/2011_09_26_drive_0104_sync 191 r
+2011_09_26/2011_09_26_drive_0051_sync 245 l
+2011_10_03/2011_10_03_drive_0034_sync 4466 r
+2011_09_30/2011_09_30_drive_0033_sync 922 l
+2011_09_26/2011_09_26_drive_0061_sync 495 l
+2011_09_26/2011_09_26_drive_0061_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 3151 r
+2011_10_03/2011_10_03_drive_0034_sync 3432 r
+2011_10_03/2011_10_03_drive_0034_sync 1029 r
+2011_09_26/2011_09_26_drive_0087_sync 389 l
+2011_09_30/2011_09_30_drive_0033_sync 509 l
+2011_09_26/2011_09_26_drive_0032_sync 141 l
+2011_10_03/2011_10_03_drive_0034_sync 4321 r
+2011_10_03/2011_10_03_drive_0034_sync 2842 l
+2011_09_26/2011_09_26_drive_0011_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 3755 r
+2011_09_26/2011_09_26_drive_0095_sync 108 l
+2011_09_30/2011_09_30_drive_0034_sync 304 l
+2011_09_30/2011_09_30_drive_0028_sync 5024 r
+2011_10_03/2011_10_03_drive_0034_sync 2679 r
+2011_10_03/2011_10_03_drive_0034_sync 934 r
+2011_10_03/2011_10_03_drive_0042_sync 870 l
+2011_09_26/2011_09_26_drive_0032_sync 197 r
+2011_09_26/2011_09_26_drive_0022_sync 482 r
+2011_09_26/2011_09_26_drive_0039_sync 362 r
+2011_09_30/2011_09_30_drive_0028_sync 4093 r
+2011_09_26/2011_09_26_drive_0051_sync 141 l
+2011_10_03/2011_10_03_drive_0034_sync 2199 r
+2011_09_26/2011_09_26_drive_0019_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 1827 l
+2011_09_26/2011_09_26_drive_0051_sync 406 r
+2011_09_26/2011_09_26_drive_0051_sync 370 l
+2011_09_26/2011_09_26_drive_0057_sync 107 r
+2011_09_26/2011_09_26_drive_0005_sync 40 r
+2011_09_26/2011_09_26_drive_0070_sync 399 l
+2011_09_30/2011_09_30_drive_0034_sync 1093 l
+2011_10_03/2011_10_03_drive_0034_sync 884 l
+2011_09_26/2011_09_26_drive_0019_sync 360 r
+2011_09_26/2011_09_26_drive_0018_sync 212 l
+2011_09_26/2011_09_26_drive_0070_sync 294 l
+2011_09_26/2011_09_26_drive_0061_sync 474 r
+2011_09_30/2011_09_30_drive_0028_sync 1545 l
+2011_09_26/2011_09_26_drive_0061_sync 614 r
+2011_09_26/2011_09_26_drive_0022_sync 459 l
+2011_09_26/2011_09_26_drive_0070_sync 244 r
+2011_09_30/2011_09_30_drive_0033_sync 524 r
+2011_09_30/2011_09_30_drive_0028_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 2451 r
+2011_10_03/2011_10_03_drive_0034_sync 2745 l
+2011_09_26/2011_09_26_drive_0091_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 2044 r
+2011_09_30/2011_09_30_drive_0028_sync 576 r
+2011_09_26/2011_09_26_drive_0039_sync 150 l
+2011_09_26/2011_09_26_drive_0051_sync 181 r
+2011_09_29/2011_09_29_drive_0004_sync 282 r
+2011_09_30/2011_09_30_drive_0033_sync 652 l
+2011_09_30/2011_09_30_drive_0034_sync 795 r
+2011_10_03/2011_10_03_drive_0034_sync 3097 l
+2011_09_30/2011_09_30_drive_0020_sync 335 r
+2011_09_26/2011_09_26_drive_0057_sync 68 r
+2011_09_26/2011_09_26_drive_0087_sync 28 l
+2011_10_03/2011_10_03_drive_0042_sync 884 l
+2011_09_30/2011_09_30_drive_0028_sync 4759 r
+2011_09_26/2011_09_26_drive_0051_sync 212 r
+2011_10_03/2011_10_03_drive_0034_sync 2435 r
+2011_09_30/2011_09_30_drive_0020_sync 848 l
+2011_09_26/2011_09_26_drive_0018_sync 210 r
+2011_09_26/2011_09_26_drive_0028_sync 243 l
+2011_10_03/2011_10_03_drive_0034_sync 587 l
+2011_09_26/2011_09_26_drive_0032_sync 372 r
+2011_09_30/2011_09_30_drive_0033_sync 362 r
+2011_09_30/2011_09_30_drive_0028_sync 2737 l
+2011_10_03/2011_10_03_drive_0034_sync 2470 l
+2011_10_03/2011_10_03_drive_0034_sync 1634 l
+2011_09_30/2011_09_30_drive_0028_sync 2192 r
+2011_09_30/2011_09_30_drive_0028_sync 103 r
+2011_09_30/2011_09_30_drive_0033_sync 171 l
+2011_09_30/2011_09_30_drive_0020_sync 466 l
+2011_10_03/2011_10_03_drive_0034_sync 2157 r
+2011_09_30/2011_09_30_drive_0028_sync 2708 r
+2011_09_26/2011_09_26_drive_0061_sync 83 r
+2011_09_26/2011_09_26_drive_0070_sync 415 r
+2011_09_30/2011_09_30_drive_0033_sync 643 l
+2011_09_26/2011_09_26_drive_0017_sync 52 l
+2011_09_30/2011_09_30_drive_0034_sync 1201 l
+2011_09_30/2011_09_30_drive_0028_sync 4496 l
+2011_09_26/2011_09_26_drive_0061_sync 187 l
+2011_09_26/2011_09_26_drive_0104_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 3358 l
+2011_09_26/2011_09_26_drive_0028_sync 416 r
+2011_09_29/2011_09_29_drive_0004_sync 143 l
+2011_09_26/2011_09_26_drive_0091_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 2645 l
+2011_09_26/2011_09_26_drive_0022_sync 103 l
+2011_10_03/2011_10_03_drive_0042_sync 1163 l
+2011_09_30/2011_09_30_drive_0028_sync 1804 r
+2011_09_30/2011_09_30_drive_0034_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 3188 r
+2011_09_30/2011_09_30_drive_0020_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 1897 r
+2011_09_26/2011_09_26_drive_0005_sync 111 r
+2011_09_30/2011_09_30_drive_0033_sync 518 r
+2011_09_26/2011_09_26_drive_0061_sync 372 r
+2011_09_30/2011_09_30_drive_0028_sync 478 l
+2011_09_30/2011_09_30_drive_0033_sync 1017 l
+2011_09_26/2011_09_26_drive_0061_sync 235 r
+2011_09_29/2011_09_29_drive_0004_sync 202 r
+2011_09_28/2011_09_28_drive_0001_sync 102 r
+2011_09_26/2011_09_26_drive_0087_sync 698 l
+2011_09_26/2011_09_26_drive_0032_sync 245 r
+2011_10_03/2011_10_03_drive_0034_sync 3827 l
+2011_09_26/2011_09_26_drive_0070_sync 376 l
+2011_09_26/2011_09_26_drive_0087_sync 484 r
+2011_09_30/2011_09_30_drive_0020_sync 905 l
+2011_09_26/2011_09_26_drive_0104_sync 74 l
+2011_09_26/2011_09_26_drive_0070_sync 419 r
+2011_09_26/2011_09_26_drive_0061_sync 444 l
+2011_09_26/2011_09_26_drive_0113_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 1100 r
+2011_09_30/2011_09_30_drive_0020_sync 779 r
+2011_09_26/2011_09_26_drive_0039_sync 188 l
+2011_09_30/2011_09_30_drive_0034_sync 411 l
+2011_10_03/2011_10_03_drive_0034_sync 360 l
+2011_09_26/2011_09_26_drive_0070_sync 297 l
+2011_09_26/2011_09_26_drive_0087_sync 112 r
+2011_09_26/2011_09_26_drive_0001_sync 85 l
+2011_09_26/2011_09_26_drive_0022_sync 709 l
+2011_09_30/2011_09_30_drive_0028_sync 2907 l
+2011_09_30/2011_09_30_drive_0028_sync 2860 l
+2011_09_30/2011_09_30_drive_0028_sync 3174 r
+2011_09_26/2011_09_26_drive_0061_sync 115 l
+2011_09_26/2011_09_26_drive_0017_sync 74 r
+2011_09_26/2011_09_26_drive_0022_sync 775 l
+2011_09_30/2011_09_30_drive_0020_sync 559 l
+2011_09_30/2011_09_30_drive_0033_sync 247 l
+2011_09_28/2011_09_28_drive_0001_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 2510 r
+2011_09_30/2011_09_30_drive_0033_sync 1159 r
+2011_09_26/2011_09_26_drive_0113_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 3270 l
+2011_10_03/2011_10_03_drive_0034_sync 1297 l
+2011_09_26/2011_09_26_drive_0087_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 851 r
+2011_10_03/2011_10_03_drive_0034_sync 3896 r
+2011_09_30/2011_09_30_drive_0028_sync 3847 r
+2011_09_26/2011_09_26_drive_0011_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 3512 l
+2011_10_03/2011_10_03_drive_0034_sync 4122 r
+2011_10_03/2011_10_03_drive_0034_sync 447 l
+2011_09_26/2011_09_26_drive_0070_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 315 r
+2011_09_30/2011_09_30_drive_0033_sync 1110 l
+2011_09_30/2011_09_30_drive_0028_sync 2475 r
+2011_09_26/2011_09_26_drive_0022_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 1832 r
+2011_09_26/2011_09_26_drive_0091_sync 80 r
+2011_09_26/2011_09_26_drive_0018_sync 26 r
+2011_09_30/2011_09_30_drive_0028_sync 3337 r
+2011_09_26/2011_09_26_drive_0018_sync 3 l
+2011_10_03/2011_10_03_drive_0042_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 4306 l
+2011_09_26/2011_09_26_drive_0061_sync 596 l
+2011_09_30/2011_09_30_drive_0034_sync 821 r
+2011_10_03/2011_10_03_drive_0034_sync 3840 r
+2011_09_26/2011_09_26_drive_0039_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 4164 l
+2011_10_03/2011_10_03_drive_0034_sync 3720 r
+2011_09_30/2011_09_30_drive_0028_sync 1534 r
+2011_09_30/2011_09_30_drive_0028_sync 4651 l
+2011_09_26/2011_09_26_drive_0087_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 3137 l
+2011_09_30/2011_09_30_drive_0034_sync 1180 r
+2011_10_03/2011_10_03_drive_0034_sync 4397 r
+2011_09_26/2011_09_26_drive_0022_sync 318 l
+2011_09_26/2011_09_26_drive_0001_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 1860 l
+2011_10_03/2011_10_03_drive_0034_sync 1522 l
+2011_09_30/2011_09_30_drive_0028_sync 4722 l
+2011_10_03/2011_10_03_drive_0034_sync 2616 l
+2011_09_30/2011_09_30_drive_0033_sync 682 l
+2011_09_29/2011_09_29_drive_0004_sync 31 l
+2011_09_29/2011_09_29_drive_0004_sync 56 l
+2011_10_03/2011_10_03_drive_0042_sync 65 r
+2011_09_26/2011_09_26_drive_0070_sync 378 r
+2011_09_26/2011_09_26_drive_0039_sync 26 r
+2011_09_30/2011_09_30_drive_0033_sync 1132 r
+2011_10_03/2011_10_03_drive_0042_sync 664 r
+2011_09_30/2011_09_30_drive_0028_sync 1051 r
+2011_09_30/2011_09_30_drive_0028_sync 796 l
+2011_09_26/2011_09_26_drive_0104_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 1489 r
+2011_10_03/2011_10_03_drive_0042_sync 239 l
+2011_09_26/2011_09_26_drive_0051_sync 117 l
+2011_09_26/2011_09_26_drive_0051_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 2759 r
+2011_09_26/2011_09_26_drive_0057_sync 221 r
+2011_09_30/2011_09_30_drive_0028_sync 5166 l
+2011_09_26/2011_09_26_drive_0022_sync 53 l
+2011_09_26/2011_09_26_drive_0018_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 2495 l
+2011_09_26/2011_09_26_drive_0039_sync 357 r
+2011_10_03/2011_10_03_drive_0034_sync 3093 l
+2011_09_30/2011_09_30_drive_0028_sync 559 l
+2011_09_30/2011_09_30_drive_0028_sync 1498 r
+2011_09_30/2011_09_30_drive_0028_sync 901 l
+2011_09_30/2011_09_30_drive_0033_sync 1229 l
+2011_09_30/2011_09_30_drive_0028_sync 3567 l
+2011_10_03/2011_10_03_drive_0042_sync 240 l
+2011_09_28/2011_09_28_drive_0001_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 3006 l
+2011_10_03/2011_10_03_drive_0034_sync 1849 r
+2011_09_30/2011_09_30_drive_0028_sync 5111 r
+2011_09_30/2011_09_30_drive_0033_sync 490 l
+2011_09_30/2011_09_30_drive_0020_sync 452 l
+2011_09_26/2011_09_26_drive_0051_sync 421 l
+2011_09_26/2011_09_26_drive_0035_sync 109 l
+2011_09_30/2011_09_30_drive_0028_sync 964 r
+2011_09_26/2011_09_26_drive_0070_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 585 r
+2011_10_03/2011_10_03_drive_0034_sync 3724 r
+2011_10_03/2011_10_03_drive_0034_sync 4322 l
+2011_09_30/2011_09_30_drive_0033_sync 102 r
+2011_09_26/2011_09_26_drive_0022_sync 189 r
+2011_10_03/2011_10_03_drive_0034_sync 4350 l
+2011_10_03/2011_10_03_drive_0034_sync 418 r
+2011_09_26/2011_09_26_drive_0087_sync 550 r
+2011_09_30/2011_09_30_drive_0028_sync 3965 l
+2011_09_26/2011_09_26_drive_0028_sync 411 l
+2011_10_03/2011_10_03_drive_0034_sync 13 l
+2011_09_26/2011_09_26_drive_0018_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 4401 l
+2011_10_03/2011_10_03_drive_0034_sync 4589 r
+2011_09_26/2011_09_26_drive_0051_sync 115 r
+2011_09_29/2011_09_29_drive_0004_sync 112 r
+2011_09_26/2011_09_26_drive_0087_sync 80 r
+2011_09_30/2011_09_30_drive_0033_sync 1131 r
+2011_09_26/2011_09_26_drive_0091_sync 14 r
+2011_09_30/2011_09_30_drive_0033_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 4605 r
+2011_10_03/2011_10_03_drive_0034_sync 926 r
+2011_10_03/2011_10_03_drive_0042_sync 1073 r
+2011_09_30/2011_09_30_drive_0028_sync 2025 r
+2011_09_30/2011_09_30_drive_0028_sync 1636 r
+2011_09_30/2011_09_30_drive_0034_sync 762 l
+2011_09_30/2011_09_30_drive_0028_sync 1626 r
+2011_10_03/2011_10_03_drive_0034_sync 2560 l
+2011_09_30/2011_09_30_drive_0033_sync 124 r
+2011_09_30/2011_09_30_drive_0033_sync 1137 l
+2011_09_26/2011_09_26_drive_0022_sync 620 r
+2011_10_03/2011_10_03_drive_0034_sync 2306 r
+2011_09_30/2011_09_30_drive_0028_sync 2890 l
+2011_10_03/2011_10_03_drive_0034_sync 2094 r
+2011_09_29/2011_09_29_drive_0026_sync 53 l
+2011_10_03/2011_10_03_drive_0042_sync 223 l
+2011_09_29/2011_09_29_drive_0026_sync 95 r
+2011_09_30/2011_09_30_drive_0033_sync 899 r
+2011_10_03/2011_10_03_drive_0034_sync 4515 l
+2011_09_26/2011_09_26_drive_0022_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 3196 r
+2011_09_26/2011_09_26_drive_0087_sync 209 l
+2011_10_03/2011_10_03_drive_0034_sync 296 l
+2011_09_26/2011_09_26_drive_0022_sync 32 r
+2011_09_26/2011_09_26_drive_0039_sync 310 r
+2011_09_26/2011_09_26_drive_0015_sync 126 r
+2011_09_26/2011_09_26_drive_0061_sync 516 r
+2011_09_30/2011_09_30_drive_0028_sync 2903 l
+2011_09_26/2011_09_26_drive_0022_sync 289 l
+2011_09_30/2011_09_30_drive_0034_sync 683 r
+2011_09_30/2011_09_30_drive_0033_sync 374 l
+2011_09_30/2011_09_30_drive_0034_sync 722 r
+2011_09_30/2011_09_30_drive_0034_sync 616 l
+2011_10_03/2011_10_03_drive_0042_sync 573 r
+2011_10_03/2011_10_03_drive_0034_sync 3916 l
+2011_09_30/2011_09_30_drive_0028_sync 3459 l
+2011_10_03/2011_10_03_drive_0034_sync 4075 l
+2011_09_26/2011_09_26_drive_0087_sync 144 r
+2011_09_30/2011_09_30_drive_0028_sync 3526 l
+2011_09_26/2011_09_26_drive_0087_sync 613 r
+2011_09_26/2011_09_26_drive_0032_sync 350 l
+2011_09_30/2011_09_30_drive_0028_sync 4907 l
+2011_10_03/2011_10_03_drive_0034_sync 3148 l
+2011_09_30/2011_09_30_drive_0033_sync 285 r
+2011_09_30/2011_09_30_drive_0033_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 1341 l
+2011_10_03/2011_10_03_drive_0042_sync 304 l
+2011_09_30/2011_09_30_drive_0034_sync 198 r
+2011_09_30/2011_09_30_drive_0028_sync 3182 l
+2011_10_03/2011_10_03_drive_0034_sync 4388 l
+2011_10_03/2011_10_03_drive_0034_sync 3146 r
+2011_10_03/2011_10_03_drive_0034_sync 1729 r
+2011_09_26/2011_09_26_drive_0061_sync 671 r
+2011_09_26/2011_09_26_drive_0022_sync 602 l
+2011_10_03/2011_10_03_drive_0034_sync 3427 l
+2011_09_26/2011_09_26_drive_0087_sync 553 l
+2011_09_30/2011_09_30_drive_0028_sync 4040 r
+2011_09_30/2011_09_30_drive_0028_sync 2206 r
+2011_09_26/2011_09_26_drive_0028_sync 117 l
+2011_09_26/2011_09_26_drive_0019_sync 97 r
+2011_09_26/2011_09_26_drive_0015_sync 232 l
+2011_09_26/2011_09_26_drive_0015_sync 52 r
+2011_09_26/2011_09_26_drive_0104_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 818 l
+2011_09_26/2011_09_26_drive_0051_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 4300 l
+2011_09_30/2011_09_30_drive_0028_sync 675 r
+2011_09_26/2011_09_26_drive_0060_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 3675 r
+2011_09_30/2011_09_30_drive_0020_sync 907 r
+2011_09_29/2011_09_29_drive_0026_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 1359 r
+2011_09_30/2011_09_30_drive_0033_sync 493 l
+2011_09_30/2011_09_30_drive_0028_sync 4869 r
+2011_09_26/2011_09_26_drive_0022_sync 682 l
+2011_10_03/2011_10_03_drive_0034_sync 49 r
+2011_09_26/2011_09_26_drive_0015_sync 267 r
+2011_10_03/2011_10_03_drive_0034_sync 2127 l
+2011_09_26/2011_09_26_drive_0051_sync 306 l
+2011_09_26/2011_09_26_drive_0087_sync 28 r
+2011_09_26/2011_09_26_drive_0039_sync 268 l
+2011_09_30/2011_09_30_drive_0033_sync 963 l
+2011_09_26/2011_09_26_drive_0095_sync 55 r
+2011_09_30/2011_09_30_drive_0020_sync 1043 l
+2011_09_26/2011_09_26_drive_0019_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 3412 r
+2011_09_26/2011_09_26_drive_0032_sync 340 r
+2011_09_30/2011_09_30_drive_0020_sync 535 l
+2011_10_03/2011_10_03_drive_0034_sync 3030 r
+2011_09_30/2011_09_30_drive_0033_sync 515 l
+2011_09_26/2011_09_26_drive_0104_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 28 r
+2011_09_26/2011_09_26_drive_0061_sync 469 r
+2011_10_03/2011_10_03_drive_0034_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 4913 r
+2011_09_26/2011_09_26_drive_0087_sync 639 l
+2011_09_30/2011_09_30_drive_0028_sync 3094 l
+2011_10_03/2011_10_03_drive_0034_sync 2657 l
+2011_09_30/2011_09_30_drive_0028_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 2871 l
+2011_09_26/2011_09_26_drive_0018_sync 265 l
+2011_09_26/2011_09_26_drive_0057_sync 328 r
+2011_09_26/2011_09_26_drive_0087_sync 716 r
+2011_10_03/2011_10_03_drive_0034_sync 4048 r
+2011_09_26/2011_09_26_drive_0022_sync 198 r
+2011_09_30/2011_09_30_drive_0028_sync 3599 r
+2011_09_30/2011_09_30_drive_0020_sync 374 l
+2011_09_26/2011_09_26_drive_0091_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 1002 r
+2011_09_30/2011_09_30_drive_0034_sync 561 l
+2011_09_26/2011_09_26_drive_0019_sync 400 l
+2011_09_30/2011_09_30_drive_0020_sync 1034 r
+2011_09_26/2011_09_26_drive_0022_sync 454 l
+2011_09_30/2011_09_30_drive_0028_sync 4833 r
+2011_09_26/2011_09_26_drive_0104_sync 86 l
+2011_10_03/2011_10_03_drive_0042_sync 506 r
+2011_09_26/2011_09_26_drive_0087_sync 128 l
+2011_09_26/2011_09_26_drive_0061_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 189 l
+2011_09_26/2011_09_26_drive_0022_sync 438 l
+2011_10_03/2011_10_03_drive_0034_sync 2090 l
+2011_09_30/2011_09_30_drive_0033_sync 609 r
+2011_09_26/2011_09_26_drive_0113_sync 73 r
+2011_09_30/2011_09_30_drive_0033_sync 303 l
+2011_10_03/2011_10_03_drive_0034_sync 3319 l
+2011_09_30/2011_09_30_drive_0020_sync 681 r
+2011_09_30/2011_09_30_drive_0033_sync 977 r
+2011_10_03/2011_10_03_drive_0034_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 4003 r
+2011_09_30/2011_09_30_drive_0028_sync 3177 l
+2011_09_26/2011_09_26_drive_0061_sync 606 l
+2011_09_26/2011_09_26_drive_0011_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 686 l
+2011_09_26/2011_09_26_drive_0070_sync 32 r
+2011_09_26/2011_09_26_drive_0018_sync 67 r
+2011_09_26/2011_09_26_drive_0061_sync 611 l
+2011_09_30/2011_09_30_drive_0028_sync 4378 r
+2011_10_03/2011_10_03_drive_0034_sync 1242 r
+2011_09_26/2011_09_26_drive_0070_sync 49 r
+2011_09_26/2011_09_26_drive_0011_sync 73 l
+2011_09_26/2011_09_26_drive_0005_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 4380 l
+2011_09_30/2011_09_30_drive_0028_sync 814 r
+2011_09_26/2011_09_26_drive_0019_sync 262 l
+2011_10_03/2011_10_03_drive_0042_sync 635 l
+2011_09_26/2011_09_26_drive_0022_sync 470 r
+2011_10_03/2011_10_03_drive_0034_sync 4572 r
+2011_09_26/2011_09_26_drive_0022_sync 10 l
+2011_09_26/2011_09_26_drive_0104_sync 80 r
+2011_09_26/2011_09_26_drive_0087_sync 610 l
+2011_09_30/2011_09_30_drive_0020_sync 370 l
+2011_09_30/2011_09_30_drive_0033_sync 568 l
+2011_09_26/2011_09_26_drive_0039_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 44 r
+2011_09_26/2011_09_26_drive_0001_sync 25 l
+2011_09_26/2011_09_26_drive_0015_sync 21 r
+2011_09_26/2011_09_26_drive_0014_sync 232 r
+2011_09_26/2011_09_26_drive_0070_sync 299 l
+2011_09_26/2011_09_26_drive_0019_sync 466 l
+2011_10_03/2011_10_03_drive_0034_sync 206 r
+2011_09_30/2011_09_30_drive_0033_sync 400 l
+2011_09_29/2011_09_29_drive_0004_sync 188 l
+2011_09_30/2011_09_30_drive_0033_sync 835 l
+2011_09_26/2011_09_26_drive_0087_sync 623 l
+2011_09_26/2011_09_26_drive_0091_sync 216 r
+2011_09_30/2011_09_30_drive_0020_sync 151 l
+2011_09_30/2011_09_30_drive_0028_sync 42 l
+2011_09_26/2011_09_26_drive_0022_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 804 r
+2011_09_30/2011_09_30_drive_0034_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 1975 l
+2011_09_30/2011_09_30_drive_0028_sync 4540 l
+2011_09_30/2011_09_30_drive_0028_sync 2050 l
+2011_09_30/2011_09_30_drive_0028_sync 3786 l
+2011_09_26/2011_09_26_drive_0057_sync 294 r
+2011_09_26/2011_09_26_drive_0039_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 2092 r
+2011_10_03/2011_10_03_drive_0034_sync 3288 r
+2011_09_26/2011_09_26_drive_0061_sync 487 l
+2011_09_30/2011_09_30_drive_0028_sync 4867 l
+2011_09_29/2011_09_29_drive_0004_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 1877 r
+2011_10_03/2011_10_03_drive_0034_sync 4153 l
+2011_10_03/2011_10_03_drive_0034_sync 2868 l
+2011_09_26/2011_09_26_drive_0095_sync 121 l
+2011_09_26/2011_09_26_drive_0039_sync 117 r
+2011_10_03/2011_10_03_drive_0034_sync 3865 r
+2011_10_03/2011_10_03_drive_0034_sync 2774 l
+2011_09_30/2011_09_30_drive_0028_sync 1547 l
+2011_09_30/2011_09_30_drive_0028_sync 4967 l
+2011_09_29/2011_09_29_drive_0004_sync 289 l
+2011_09_30/2011_09_30_drive_0028_sync 4465 r
+2011_09_26/2011_09_26_drive_0019_sync 97 l
+2011_09_26/2011_09_26_drive_0022_sync 65 r
+2011_09_26/2011_09_26_drive_0019_sync 68 r
+2011_09_26/2011_09_26_drive_0015_sync 158 r
+2011_09_30/2011_09_30_drive_0028_sync 4471 r
+2011_09_26/2011_09_26_drive_0022_sync 566 l
+2011_10_03/2011_10_03_drive_0034_sync 3602 l
+2011_09_30/2011_09_30_drive_0028_sync 3456 l
+2011_10_03/2011_10_03_drive_0034_sync 1068 r
+2011_10_03/2011_10_03_drive_0034_sync 3648 r
+2011_09_30/2011_09_30_drive_0033_sync 678 r
+2011_09_30/2011_09_30_drive_0028_sync 2571 l
+2011_09_26/2011_09_26_drive_0079_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 1946 r
+2011_09_26/2011_09_26_drive_0061_sync 602 l
+2011_09_30/2011_09_30_drive_0028_sync 3960 l
+2011_09_30/2011_09_30_drive_0033_sync 164 r
+2011_09_30/2011_09_30_drive_0033_sync 24 r
+2011_09_26/2011_09_26_drive_0022_sync 679 r
+2011_09_30/2011_09_30_drive_0020_sync 913 l
+2011_09_26/2011_09_26_drive_0104_sync 174 l
+2011_10_03/2011_10_03_drive_0034_sync 1616 r
+2011_10_03/2011_10_03_drive_0034_sync 455 r
+2011_09_30/2011_09_30_drive_0028_sync 4354 l
+2011_09_26/2011_09_26_drive_0022_sync 421 r
+2011_09_30/2011_09_30_drive_0028_sync 1351 l
+2011_09_30/2011_09_30_drive_0028_sync 1187 l
+2011_09_26/2011_09_26_drive_0057_sync 322 r
+2011_09_30/2011_09_30_drive_0033_sync 1500 l
+2011_10_03/2011_10_03_drive_0042_sync 267 l
+2011_09_30/2011_09_30_drive_0033_sync 375 r
+2011_09_26/2011_09_26_drive_0051_sync 304 r
+2011_09_26/2011_09_26_drive_0032_sync 284 r
+2011_09_26/2011_09_26_drive_0057_sync 59 l
+2011_09_30/2011_09_30_drive_0034_sync 1174 r
+2011_09_26/2011_09_26_drive_0019_sync 143 r
+2011_09_26/2011_09_26_drive_0039_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 4404 l
+2011_09_30/2011_09_30_drive_0033_sync 460 r
+2011_09_30/2011_09_30_drive_0028_sync 86 l
+2011_09_30/2011_09_30_drive_0033_sync 46 r
+2011_09_26/2011_09_26_drive_0019_sync 330 r
+2011_09_26/2011_09_26_drive_0014_sync 196 l
+2011_10_03/2011_10_03_drive_0034_sync 4651 r
+2011_10_03/2011_10_03_drive_0034_sync 4092 r
+2011_09_26/2011_09_26_drive_0018_sync 46 r
+2011_09_26/2011_09_26_drive_0022_sync 658 l
+2011_09_26/2011_09_26_drive_0015_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 2252 r
+2011_09_26/2011_09_26_drive_0104_sync 285 r
+2011_10_03/2011_10_03_drive_0042_sync 921 r
+2011_09_29/2011_09_29_drive_0004_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 189 r
+2011_09_30/2011_09_30_drive_0028_sync 916 r
+2011_09_30/2011_09_30_drive_0028_sync 3193 l
+2011_09_26/2011_09_26_drive_0087_sync 682 l
+2011_09_26/2011_09_26_drive_0032_sync 296 r
+2011_09_30/2011_09_30_drive_0034_sync 699 l
+2011_09_30/2011_09_30_drive_0028_sync 3616 r
+2011_09_26/2011_09_26_drive_0028_sync 163 l
+2011_09_26/2011_09_26_drive_0019_sync 70 l
+2011_10_03/2011_10_03_drive_0034_sync 2498 l
+2011_09_26/2011_09_26_drive_0087_sync 339 l
+2011_09_30/2011_09_30_drive_0028_sync 3049 l
+2011_09_30/2011_09_30_drive_0020_sync 459 l
+2011_09_26/2011_09_26_drive_0028_sync 263 r
+2011_09_26/2011_09_26_drive_0091_sync 334 l
+2011_09_30/2011_09_30_drive_0033_sync 1445 l
+2011_10_03/2011_10_03_drive_0034_sync 915 l
+2011_09_30/2011_09_30_drive_0028_sync 1940 r
+2011_09_30/2011_09_30_drive_0028_sync 3673 r
+2011_09_30/2011_09_30_drive_0020_sync 1088 l
+2011_10_03/2011_10_03_drive_0042_sync 1108 r
+2011_09_30/2011_09_30_drive_0020_sync 418 l
+2011_09_26/2011_09_26_drive_0061_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 3052 l
+2011_09_28/2011_09_28_drive_0001_sync 39 r
+2011_10_03/2011_10_03_drive_0042_sync 382 l
+2011_09_26/2011_09_26_drive_0019_sync 298 r
+2011_10_03/2011_10_03_drive_0042_sync 334 l
+2011_09_30/2011_09_30_drive_0028_sync 1160 r
+2011_09_30/2011_09_30_drive_0028_sync 4456 l
+2011_09_26/2011_09_26_drive_0070_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 648 r
+2011_09_30/2011_09_30_drive_0028_sync 4642 l
+2011_09_30/2011_09_30_drive_0033_sync 286 r
+2011_10_03/2011_10_03_drive_0034_sync 4140 r
+2011_09_30/2011_09_30_drive_0028_sync 4701 r
+2011_10_03/2011_10_03_drive_0034_sync 3717 l
+2011_10_03/2011_10_03_drive_0042_sync 694 l
+2011_10_03/2011_10_03_drive_0034_sync 235 r
+2011_09_26/2011_09_26_drive_0039_sync 23 l
+2011_09_30/2011_09_30_drive_0028_sync 4058 r
+2011_09_26/2011_09_26_drive_0028_sync 173 r
+2011_09_30/2011_09_30_drive_0034_sync 481 r
+2011_09_26/2011_09_26_drive_0019_sync 438 l
+2011_09_26/2011_09_26_drive_0060_sync 38 r
+2011_09_26/2011_09_26_drive_0104_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 195 r
+2011_09_26/2011_09_26_drive_0032_sync 348 r
+2011_10_03/2011_10_03_drive_0034_sync 4554 l
+2011_10_03/2011_10_03_drive_0034_sync 4159 l
+2011_09_26/2011_09_26_drive_0014_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 2884 r
+2011_10_03/2011_10_03_drive_0034_sync 2415 r
+2011_09_26/2011_09_26_drive_0022_sync 643 r
+2011_09_26/2011_09_26_drive_0057_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 4769 l
+2011_09_26/2011_09_26_drive_0011_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 3050 r
+2011_10_03/2011_10_03_drive_0034_sync 2828 l
+2011_09_26/2011_09_26_drive_0091_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 3295 r
+2011_09_30/2011_09_30_drive_0028_sync 3732 r
+2011_10_03/2011_10_03_drive_0034_sync 4343 r
+2011_09_30/2011_09_30_drive_0033_sync 1235 l
+2011_09_30/2011_09_30_drive_0028_sync 973 r
+2011_09_30/2011_09_30_drive_0028_sync 252 l
+2011_10_03/2011_10_03_drive_0034_sync 440 l
+2011_09_30/2011_09_30_drive_0033_sync 1157 l
+2011_09_30/2011_09_30_drive_0033_sync 600 l
+2011_10_03/2011_10_03_drive_0034_sync 3315 r
+2011_10_03/2011_10_03_drive_0034_sync 2920 r
+2011_09_30/2011_09_30_drive_0028_sync 597 r
+2011_09_26/2011_09_26_drive_0019_sync 340 l
+2011_09_30/2011_09_30_drive_0020_sync 431 r
+2011_09_29/2011_09_29_drive_0026_sync 153 l
+2011_10_03/2011_10_03_drive_0034_sync 376 r
+2011_10_03/2011_10_03_drive_0034_sync 785 l
+2011_09_26/2011_09_26_drive_0005_sync 111 l
+2011_09_26/2011_09_26_drive_0057_sync 94 l
+2011_09_26/2011_09_26_drive_0057_sync 323 r
+2011_09_30/2011_09_30_drive_0028_sync 4604 l
+2011_09_30/2011_09_30_drive_0034_sync 192 r
+2011_09_30/2011_09_30_drive_0034_sync 976 l
+2011_09_26/2011_09_26_drive_0061_sync 388 l
+2011_10_03/2011_10_03_drive_0034_sync 4080 l
+2011_09_26/2011_09_26_drive_0051_sync 187 l
+2011_10_03/2011_10_03_drive_0042_sync 274 l
+2011_09_26/2011_09_26_drive_0014_sync 68 r
+2011_09_26/2011_09_26_drive_0032_sync 376 l
+2011_09_30/2011_09_30_drive_0028_sync 1406 l
+2011_09_30/2011_09_30_drive_0034_sync 554 l
+2011_09_30/2011_09_30_drive_0033_sync 1021 l
+2011_09_26/2011_09_26_drive_0070_sync 307 l
+2011_09_26/2011_09_26_drive_0032_sync 203 l
+2011_10_03/2011_10_03_drive_0034_sync 2223 l
+2011_10_03/2011_10_03_drive_0034_sync 2697 r
+2011_09_30/2011_09_30_drive_0034_sync 1178 r
+2011_09_30/2011_09_30_drive_0034_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 1473 r
+2011_10_03/2011_10_03_drive_0034_sync 4333 l
+2011_09_30/2011_09_30_drive_0034_sync 1041 l
+2011_09_26/2011_09_26_drive_0104_sync 213 l
+2011_10_03/2011_10_03_drive_0034_sync 3895 l
+2011_09_26/2011_09_26_drive_0079_sync 89 r
+2011_09_26/2011_09_26_drive_0061_sync 289 r
+2011_09_26/2011_09_26_drive_0022_sync 744 l
+2011_09_30/2011_09_30_drive_0034_sync 239 l
+2011_09_30/2011_09_30_drive_0034_sync 961 l
+2011_09_30/2011_09_30_drive_0028_sync 2420 r
+2011_09_30/2011_09_30_drive_0020_sync 567 r
+2011_09_26/2011_09_26_drive_0032_sync 287 r
+2011_09_26/2011_09_26_drive_0070_sync 185 l
+2011_09_30/2011_09_30_drive_0028_sync 161 r
+2011_09_26/2011_09_26_drive_0051_sync 244 r
+2011_09_26/2011_09_26_drive_0014_sync 267 l
+2011_10_03/2011_10_03_drive_0034_sync 2540 r
+2011_10_03/2011_10_03_drive_0034_sync 733 r
+2011_09_26/2011_09_26_drive_0011_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 946 r
+2011_09_26/2011_09_26_drive_0051_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 4984 r
+2011_10_03/2011_10_03_drive_0034_sync 3510 r
+2011_09_30/2011_09_30_drive_0028_sync 5047 l
+2011_09_26/2011_09_26_drive_0005_sync 69 l
+2011_09_26/2011_09_26_drive_0091_sync 238 l
+2011_09_26/2011_09_26_drive_0018_sync 66 l
+2011_09_30/2011_09_30_drive_0034_sync 286 r
+2011_09_26/2011_09_26_drive_0070_sync 220 r
+2011_10_03/2011_10_03_drive_0034_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 2815 r
+2011_09_30/2011_09_30_drive_0028_sync 1874 l
+2011_10_03/2011_10_03_drive_0034_sync 3568 r
+2011_09_30/2011_09_30_drive_0028_sync 3398 l
+2011_09_30/2011_09_30_drive_0028_sync 3457 r
+2011_09_30/2011_09_30_drive_0028_sync 3547 l
+2011_09_26/2011_09_26_drive_0028_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 4001 l
+2011_09_30/2011_09_30_drive_0028_sync 2103 r
+2011_09_26/2011_09_26_drive_0057_sync 329 l
+2011_09_30/2011_09_30_drive_0028_sync 3606 l
+2011_09_30/2011_09_30_drive_0020_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 3408 r
+2011_09_26/2011_09_26_drive_0087_sync 402 r
+2011_10_03/2011_10_03_drive_0034_sync 991 r
+2011_10_03/2011_10_03_drive_0042_sync 918 l
+2011_09_26/2011_09_26_drive_0022_sync 694 l
+2011_09_30/2011_09_30_drive_0033_sync 1161 l
+2011_09_26/2011_09_26_drive_0022_sync 545 l
+2011_09_30/2011_09_30_drive_0033_sync 657 r
+2011_09_26/2011_09_26_drive_0022_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 3073 r
+2011_10_03/2011_10_03_drive_0034_sync 365 r
+2011_09_30/2011_09_30_drive_0034_sync 573 l
+2011_09_26/2011_09_26_drive_0001_sync 69 r
+2011_09_26/2011_09_26_drive_0018_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 91 r
+2011_10_03/2011_10_03_drive_0042_sync 471 l
+2011_09_26/2011_09_26_drive_0070_sync 109 r
+2011_10_03/2011_10_03_drive_0034_sync 2305 r
+2011_09_30/2011_09_30_drive_0028_sync 2847 r
+2011_09_30/2011_09_30_drive_0028_sync 3400 r
+2011_09_26/2011_09_26_drive_0087_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 3691 l
+2011_09_26/2011_09_26_drive_0087_sync 128 r
+2011_10_03/2011_10_03_drive_0042_sync 435 r
+2011_10_03/2011_10_03_drive_0034_sync 1191 l
+2011_09_30/2011_09_30_drive_0028_sync 3015 r
+2011_10_03/2011_10_03_drive_0042_sync 926 r
+2011_09_30/2011_09_30_drive_0028_sync 1766 r
+2011_10_03/2011_10_03_drive_0042_sync 814 r
+2011_09_29/2011_09_29_drive_0004_sync 171 l
+2011_09_26/2011_09_26_drive_0087_sync 293 r
+2011_09_30/2011_09_30_drive_0028_sync 2424 l
+2011_09_26/2011_09_26_drive_0015_sync 123 r
+2011_09_26/2011_09_26_drive_0095_sync 109 l
+2011_09_30/2011_09_30_drive_0028_sync 4670 r
+2011_09_26/2011_09_26_drive_0051_sync 236 r
+2011_09_30/2011_09_30_drive_0033_sync 1061 l
+2011_09_26/2011_09_26_drive_0070_sync 299 r
+2011_09_30/2011_09_30_drive_0020_sync 793 l
+2011_09_30/2011_09_30_drive_0020_sync 482 r
+2011_09_30/2011_09_30_drive_0028_sync 1122 l
+2011_09_30/2011_09_30_drive_0028_sync 1548 r
+2011_10_03/2011_10_03_drive_0034_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 1708 r
+2011_10_03/2011_10_03_drive_0034_sync 1177 r
+2011_09_26/2011_09_26_drive_0014_sync 111 l
+2011_09_30/2011_09_30_drive_0028_sync 3274 l
+2011_10_03/2011_10_03_drive_0034_sync 2243 r
+2011_09_26/2011_09_26_drive_0011_sync 88 r
+2011_09_30/2011_09_30_drive_0020_sync 571 l
+2011_10_03/2011_10_03_drive_0034_sync 1107 r
+2011_09_30/2011_09_30_drive_0033_sync 484 l
+2011_09_30/2011_09_30_drive_0020_sync 548 l
+2011_10_03/2011_10_03_drive_0034_sync 3660 l
+2011_09_28/2011_09_28_drive_0001_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 3201 l
+2011_10_03/2011_10_03_drive_0042_sync 616 r
+2011_10_03/2011_10_03_drive_0034_sync 2417 l
+2011_10_03/2011_10_03_drive_0034_sync 756 l
+2011_10_03/2011_10_03_drive_0042_sync 1118 r
+2011_10_03/2011_10_03_drive_0042_sync 843 l
+2011_10_03/2011_10_03_drive_0034_sync 3220 r
+2011_09_30/2011_09_30_drive_0033_sync 355 l
+2011_10_03/2011_10_03_drive_0034_sync 2530 r
+2011_09_26/2011_09_26_drive_0018_sync 197 l
+2011_09_26/2011_09_26_drive_0018_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 261 l
+2011_09_26/2011_09_26_drive_0079_sync 5 r
+2011_09_26/2011_09_26_drive_0091_sync 301 r
+2011_09_30/2011_09_30_drive_0033_sync 890 l
+2011_09_26/2011_09_26_drive_0057_sync 28 r
+2011_09_30/2011_09_30_drive_0033_sync 302 r
+2011_09_30/2011_09_30_drive_0028_sync 5041 r
+2011_10_03/2011_10_03_drive_0034_sync 1376 r
+2011_09_30/2011_09_30_drive_0033_sync 147 l
+2011_09_29/2011_09_29_drive_0004_sync 210 l
+2011_09_30/2011_09_30_drive_0033_sync 155 r
+2011_10_03/2011_10_03_drive_0034_sync 1773 r
+2011_09_30/2011_09_30_drive_0028_sync 1106 l
+2011_09_26/2011_09_26_drive_0032_sync 328 l
+2011_09_26/2011_09_26_drive_0032_sync 220 r
+2011_09_26/2011_09_26_drive_0095_sync 27 r
+2011_09_26/2011_09_26_drive_0060_sync 24 l
+2011_09_30/2011_09_30_drive_0034_sync 181 r
+2011_09_30/2011_09_30_drive_0020_sync 538 l
+2011_09_30/2011_09_30_drive_0033_sync 1544 l
+2011_09_26/2011_09_26_drive_0028_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 4743 l
+2011_09_30/2011_09_30_drive_0033_sync 1197 l
+2011_10_03/2011_10_03_drive_0034_sync 4338 r
+2011_09_30/2011_09_30_drive_0020_sync 287 r
+2011_09_26/2011_09_26_drive_0022_sync 303 r
+2011_09_26/2011_09_26_drive_0019_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 148 l
+2011_10_03/2011_10_03_drive_0034_sync 3562 l
+2011_10_03/2011_10_03_drive_0034_sync 2287 l
+2011_09_26/2011_09_26_drive_0087_sync 198 l
+2011_09_26/2011_09_26_drive_0022_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 3166 l
+2011_09_26/2011_09_26_drive_0014_sync 299 r
+2011_09_28/2011_09_28_drive_0001_sync 57 l
+2011_09_26/2011_09_26_drive_0087_sync 579 r
+2011_09_26/2011_09_26_drive_0011_sync 176 l
+2011_09_26/2011_09_26_drive_0032_sync 204 r
+2011_09_26/2011_09_26_drive_0070_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 4897 l
+2011_09_26/2011_09_26_drive_0039_sync 230 l
+2011_10_03/2011_10_03_drive_0034_sync 3147 r
+2011_09_26/2011_09_26_drive_0061_sync 186 l
+2011_09_26/2011_09_26_drive_0022_sync 376 r
+2011_09_30/2011_09_30_drive_0034_sync 122 r
+2011_09_30/2011_09_30_drive_0028_sync 835 l
+2011_09_26/2011_09_26_drive_0032_sync 215 r
+2011_09_26/2011_09_26_drive_0018_sync 254 l
+2011_09_30/2011_09_30_drive_0034_sync 948 l
+2011_09_26/2011_09_26_drive_0113_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 572 r
+2011_09_26/2011_09_26_drive_0051_sync 127 l
+2011_09_30/2011_09_30_drive_0028_sync 524 l
+2011_10_03/2011_10_03_drive_0034_sync 3504 r
+2011_09_26/2011_09_26_drive_0061_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 26 l
+2011_09_30/2011_09_30_drive_0033_sync 1554 r
+2011_09_30/2011_09_30_drive_0034_sync 1105 l
+2011_09_30/2011_09_30_drive_0034_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 4022 r
+2011_10_03/2011_10_03_drive_0042_sync 1014 r
+2011_09_30/2011_09_30_drive_0028_sync 3403 l
+2011_09_30/2011_09_30_drive_0028_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 183 r
+2011_09_26/2011_09_26_drive_0028_sync 84 r
+2011_09_26/2011_09_26_drive_0051_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 2416 l
+2011_09_30/2011_09_30_drive_0034_sync 115 r
+2011_09_30/2011_09_30_drive_0034_sync 825 l
+2011_09_26/2011_09_26_drive_0087_sync 444 l
+2011_09_30/2011_09_30_drive_0028_sync 4232 r
+2011_09_30/2011_09_30_drive_0033_sync 96 l
+2011_10_03/2011_10_03_drive_0042_sync 562 r
+2011_09_30/2011_09_30_drive_0028_sync 2094 r
+2011_09_26/2011_09_26_drive_0015_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 2085 r
+2011_09_26/2011_09_26_drive_0005_sync 147 l
+2011_09_30/2011_09_30_drive_0033_sync 139 r
+2011_09_30/2011_09_30_drive_0028_sync 2417 l
+2011_10_03/2011_10_03_drive_0042_sync 645 l
+2011_09_30/2011_09_30_drive_0028_sync 4573 r
+2011_09_30/2011_09_30_drive_0034_sync 683 l
+2011_09_30/2011_09_30_drive_0028_sync 2585 r
+2011_09_26/2011_09_26_drive_0087_sync 480 r
+2011_09_26/2011_09_26_drive_0019_sync 3 r
+2011_09_26/2011_09_26_drive_0022_sync 695 r
+2011_09_26/2011_09_26_drive_0022_sync 80 l
+2011_09_26/2011_09_26_drive_0070_sync 260 l
+2011_09_26/2011_09_26_drive_0022_sync 487 l
+2011_09_26/2011_09_26_drive_0113_sync 46 r
+2011_09_30/2011_09_30_drive_0020_sync 970 r
+2011_09_26/2011_09_26_drive_0019_sync 346 l
+2011_10_03/2011_10_03_drive_0034_sync 2251 r
+2011_09_30/2011_09_30_drive_0034_sync 616 r
+2011_09_26/2011_09_26_drive_0087_sync 668 l
+2011_09_26/2011_09_26_drive_0018_sync 10 l
+2011_10_03/2011_10_03_drive_0034_sync 2776 r
+2011_10_03/2011_10_03_drive_0034_sync 2423 r
+2011_09_26/2011_09_26_drive_0014_sync 70 l
+2011_09_26/2011_09_26_drive_0039_sync 153 l
+2011_09_26/2011_09_26_drive_0022_sync 503 l
+2011_09_30/2011_09_30_drive_0028_sync 2036 r
+2011_10_03/2011_10_03_drive_0034_sync 2708 l
+2011_09_30/2011_09_30_drive_0020_sync 879 r
+2011_10_03/2011_10_03_drive_0042_sync 1021 r
+2011_09_30/2011_09_30_drive_0020_sync 975 l
+2011_09_30/2011_09_30_drive_0028_sync 1201 r
+2011_10_03/2011_10_03_drive_0042_sync 600 l
+2011_09_30/2011_09_30_drive_0020_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 3185 l
+2011_10_03/2011_10_03_drive_0034_sync 168 l
+2011_09_30/2011_09_30_drive_0028_sync 1633 r
+2011_09_26/2011_09_26_drive_0091_sync 159 r
+2011_09_30/2011_09_30_drive_0028_sync 3230 r
+2011_09_30/2011_09_30_drive_0034_sync 809 r
+2011_10_03/2011_10_03_drive_0042_sync 733 r
+2011_10_03/2011_10_03_drive_0034_sync 4145 r
+2011_09_26/2011_09_26_drive_0057_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 5162 r
+2011_09_30/2011_09_30_drive_0033_sync 1090 l
+2011_10_03/2011_10_03_drive_0042_sync 945 r
+2011_09_26/2011_09_26_drive_0061_sync 443 l
+2011_09_26/2011_09_26_drive_0014_sync 194 l
+2011_09_30/2011_09_30_drive_0020_sync 239 l
+2011_09_30/2011_09_30_drive_0028_sync 1665 r
+2011_09_26/2011_09_26_drive_0104_sync 217 r
+2011_09_26/2011_09_26_drive_0061_sync 354 l
+2011_09_30/2011_09_30_drive_0028_sync 5028 r
+2011_09_26/2011_09_26_drive_0060_sync 51 r
+2011_09_30/2011_09_30_drive_0028_sync 1849 l
+2011_09_26/2011_09_26_drive_0015_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 4548 l
+2011_10_03/2011_10_03_drive_0034_sync 3357 l
+2011_09_30/2011_09_30_drive_0028_sync 3246 l
+2011_10_03/2011_10_03_drive_0034_sync 3402 r
+2011_10_03/2011_10_03_drive_0034_sync 2811 r
+2011_09_26/2011_09_26_drive_0051_sync 339 l
+2011_09_26/2011_09_26_drive_0022_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 3796 l
+2011_10_03/2011_10_03_drive_0034_sync 3566 r
+2011_09_30/2011_09_30_drive_0028_sync 3236 r
+2011_10_03/2011_10_03_drive_0034_sync 3213 l
+2011_10_03/2011_10_03_drive_0034_sync 4102 l
+2011_09_30/2011_09_30_drive_0028_sync 426 l
+2011_09_26/2011_09_26_drive_0061_sync 386 r
+2011_09_26/2011_09_26_drive_0028_sync 87 l
+2011_09_26/2011_09_26_drive_0104_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 1027 r
+2011_09_30/2011_09_30_drive_0028_sync 3200 l
+2011_09_30/2011_09_30_drive_0033_sync 1162 r
+2011_09_26/2011_09_26_drive_0028_sync 404 l
+2011_10_03/2011_10_03_drive_0034_sync 1684 r
+2011_09_26/2011_09_26_drive_0005_sync 140 r
+2011_10_03/2011_10_03_drive_0034_sync 339 r
+2011_09_26/2011_09_26_drive_0061_sync 374 l
+2011_09_30/2011_09_30_drive_0033_sync 97 r
+2011_09_30/2011_09_30_drive_0028_sync 1432 r
+2011_09_30/2011_09_30_drive_0034_sync 275 l
+2011_09_26/2011_09_26_drive_0018_sync 82 l
+2011_09_26/2011_09_26_drive_0039_sync 215 l
+2011_09_30/2011_09_30_drive_0034_sync 1183 l
+2011_09_26/2011_09_26_drive_0061_sync 121 l
+2011_09_30/2011_09_30_drive_0033_sync 550 r
+2011_09_26/2011_09_26_drive_0017_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 25 r
+2011_09_30/2011_09_30_drive_0034_sync 150 l
+2011_09_26/2011_09_26_drive_0015_sync 231 l
+2011_09_30/2011_09_30_drive_0028_sync 3247 l
+2011_09_26/2011_09_26_drive_0022_sync 524 r
+2011_09_26/2011_09_26_drive_0039_sync 65 l
+2011_09_26/2011_09_26_drive_0057_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 1649 l
+2011_09_30/2011_09_30_drive_0033_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 1380 l
+2011_10_03/2011_10_03_drive_0042_sync 592 l
+2011_09_30/2011_09_30_drive_0028_sync 2519 r
+2011_09_26/2011_09_26_drive_0022_sync 324 l
+2011_09_30/2011_09_30_drive_0020_sync 307 l
+2011_09_26/2011_09_26_drive_0087_sync 547 l
+2011_09_30/2011_09_30_drive_0033_sync 1 l
+2011_09_26/2011_09_26_drive_0028_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 4585 l
+2011_09_30/2011_09_30_drive_0028_sync 2678 r
+2011_09_26/2011_09_26_drive_0039_sync 201 r
+2011_09_26/2011_09_26_drive_0028_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 2439 l
+2011_09_26/2011_09_26_drive_0001_sync 50 l
+2011_09_30/2011_09_30_drive_0020_sync 1045 r
+2011_09_30/2011_09_30_drive_0033_sync 1019 l
+2011_10_03/2011_10_03_drive_0042_sync 899 r
+2011_09_30/2011_09_30_drive_0034_sync 1034 l
+2011_10_03/2011_10_03_drive_0034_sync 3559 l
+2011_09_26/2011_09_26_drive_0019_sync 302 l
+2011_09_26/2011_09_26_drive_0057_sync 177 r
+2011_09_26/2011_09_26_drive_0039_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 3445 l
+2011_10_03/2011_10_03_drive_0034_sync 4084 r
+2011_09_26/2011_09_26_drive_0087_sync 216 l
+2011_09_26/2011_09_26_drive_0005_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 4363 l
+2011_09_30/2011_09_30_drive_0033_sync 806 l
+2011_09_30/2011_09_30_drive_0028_sync 3950 r
+2011_09_26/2011_09_26_drive_0032_sync 80 l
+2011_09_26/2011_09_26_drive_0039_sync 171 r
+2011_09_30/2011_09_30_drive_0034_sync 863 r
+2011_10_03/2011_10_03_drive_0034_sync 3001 r
+2011_09_30/2011_09_30_drive_0028_sync 4025 l
+2011_10_03/2011_10_03_drive_0034_sync 839 l
+2011_09_30/2011_09_30_drive_0034_sync 842 l
+2011_09_30/2011_09_30_drive_0028_sync 4644 r
+2011_09_30/2011_09_30_drive_0020_sync 401 l
+2011_09_30/2011_09_30_drive_0028_sync 4632 l
+2011_09_26/2011_09_26_drive_0070_sync 199 r
+2011_09_26/2011_09_26_drive_0032_sync 252 l
+2011_09_30/2011_09_30_drive_0020_sync 915 l
+2011_09_30/2011_09_30_drive_0033_sync 128 l
+2011_09_26/2011_09_26_drive_0022_sync 673 r
+2011_09_30/2011_09_30_drive_0020_sync 495 l
+2011_10_03/2011_10_03_drive_0042_sync 1146 r
+2011_09_26/2011_09_26_drive_0022_sync 383 r
+2011_09_30/2011_09_30_drive_0033_sync 740 r
+2011_09_30/2011_09_30_drive_0028_sync 2114 r
+2011_09_26/2011_09_26_drive_0039_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 256 r
+2011_09_30/2011_09_30_drive_0028_sync 870 r
+2011_10_03/2011_10_03_drive_0042_sync 941 r
+2011_09_26/2011_09_26_drive_0019_sync 174 l
+2011_10_03/2011_10_03_drive_0034_sync 1881 l
+2011_09_26/2011_09_26_drive_0113_sync 34 l
+2011_09_26/2011_09_26_drive_0022_sync 521 l
+2011_10_03/2011_10_03_drive_0034_sync 488 r
+2011_09_30/2011_09_30_drive_0034_sync 553 l
+2011_10_03/2011_10_03_drive_0034_sync 550 r
+2011_09_30/2011_09_30_drive_0028_sync 1660 l
+2011_09_26/2011_09_26_drive_0061_sync 485 l
+2011_09_26/2011_09_26_drive_0032_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 1278 l
+2011_09_30/2011_09_30_drive_0028_sync 1605 r
+2011_10_03/2011_10_03_drive_0034_sync 4374 r
+2011_10_03/2011_10_03_drive_0034_sync 1839 l
+2011_10_03/2011_10_03_drive_0034_sync 2087 l
+2011_09_26/2011_09_26_drive_0035_sync 62 l
+2011_10_03/2011_10_03_drive_0042_sync 1067 l
+2011_09_26/2011_09_26_drive_0035_sync 57 r
+2011_09_26/2011_09_26_drive_0070_sync 4 l
+2011_09_30/2011_09_30_drive_0033_sync 853 l
+2011_09_26/2011_09_26_drive_0015_sync 124 l
+2011_09_30/2011_09_30_drive_0033_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 80 r
+2011_09_26/2011_09_26_drive_0032_sync 347 r
+2011_09_26/2011_09_26_drive_0070_sync 30 l
+2011_10_03/2011_10_03_drive_0042_sync 269 r
+2011_09_26/2011_09_26_drive_0019_sync 430 r
+2011_09_26/2011_09_26_drive_0022_sync 164 r
+2011_09_30/2011_09_30_drive_0028_sync 4120 r
+2011_10_03/2011_10_03_drive_0034_sync 1989 l
+2011_09_29/2011_09_29_drive_0026_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 4752 l
+2011_09_26/2011_09_26_drive_0001_sync 103 r
+2011_09_30/2011_09_30_drive_0034_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 3156 l
+2011_09_26/2011_09_26_drive_0087_sync 453 l
+2011_10_03/2011_10_03_drive_0042_sync 591 l
+2011_09_30/2011_09_30_drive_0034_sync 1109 l
+2011_09_30/2011_09_30_drive_0028_sync 4853 l
+2011_10_03/2011_10_03_drive_0034_sync 3960 l
+2011_09_30/2011_09_30_drive_0028_sync 4413 l
+2011_09_30/2011_09_30_drive_0028_sync 5060 l
+2011_09_26/2011_09_26_drive_0070_sync 366 l
+2011_09_26/2011_09_26_drive_0014_sync 47 l
+2011_09_30/2011_09_30_drive_0034_sync 895 l
+2011_09_30/2011_09_30_drive_0033_sync 1011 r
+2011_09_30/2011_09_30_drive_0028_sync 4707 r
+2011_09_26/2011_09_26_drive_0079_sync 34 l
+2011_10_03/2011_10_03_drive_0034_sync 2177 l
+2011_09_30/2011_09_30_drive_0034_sync 912 l
+2011_09_26/2011_09_26_drive_0019_sync 139 r
+2011_09_26/2011_09_26_drive_0014_sync 212 l
+2011_09_30/2011_09_30_drive_0033_sync 780 l
+2011_10_03/2011_10_03_drive_0042_sync 838 r
+2011_09_30/2011_09_30_drive_0028_sync 3726 r
+2011_10_03/2011_10_03_drive_0034_sync 2447 r
+2011_10_03/2011_10_03_drive_0034_sync 3311 l
+2011_09_30/2011_09_30_drive_0033_sync 871 l
+2011_10_03/2011_10_03_drive_0042_sync 945 l
+2011_09_26/2011_09_26_drive_0070_sync 368 r
+2011_10_03/2011_10_03_drive_0034_sync 629 l
+2011_09_30/2011_09_30_drive_0028_sync 2636 r
+2011_10_03/2011_10_03_drive_0034_sync 262 l
+2011_09_30/2011_09_30_drive_0034_sync 625 r
+2011_09_30/2011_09_30_drive_0028_sync 2034 r
+2011_09_30/2011_09_30_drive_0028_sync 666 r
+2011_09_30/2011_09_30_drive_0033_sync 312 l
+2011_09_26/2011_09_26_drive_0015_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 3762 r
+2011_10_03/2011_10_03_drive_0034_sync 4311 r
+2011_09_30/2011_09_30_drive_0028_sync 4002 l
+2011_09_26/2011_09_26_drive_0113_sync 12 r
+2011_09_26/2011_09_26_drive_0095_sync 76 l
+2011_09_30/2011_09_30_drive_0034_sync 746 r
+2011_09_26/2011_09_26_drive_0039_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 3037 r
+2011_09_30/2011_09_30_drive_0033_sync 1319 l
+2011_09_30/2011_09_30_drive_0028_sync 3343 l
+2011_09_26/2011_09_26_drive_0057_sync 248 l
+2011_09_30/2011_09_30_drive_0028_sync 586 r
+2011_10_03/2011_10_03_drive_0042_sync 1047 r
+2011_09_26/2011_09_26_drive_0022_sync 738 l
+2011_10_03/2011_10_03_drive_0034_sync 601 r
+2011_10_03/2011_10_03_drive_0034_sync 1125 l
+2011_09_30/2011_09_30_drive_0028_sync 3830 l
+2011_09_26/2011_09_26_drive_0028_sync 356 r
+2011_09_26/2011_09_26_drive_0011_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 3131 l
+2011_09_26/2011_09_26_drive_0061_sync 225 l
+2011_09_26/2011_09_26_drive_0104_sync 142 l
+2011_09_26/2011_09_26_drive_0087_sync 695 l
+2011_09_26/2011_09_26_drive_0019_sync 401 l
+2011_09_30/2011_09_30_drive_0028_sync 3453 r
+2011_09_26/2011_09_26_drive_0019_sync 188 l
+2011_09_26/2011_09_26_drive_0022_sync 798 l
+2011_10_03/2011_10_03_drive_0034_sync 2240 l
+2011_09_26/2011_09_26_drive_0070_sync 117 l
+2011_09_30/2011_09_30_drive_0033_sync 69 r
+2011_09_30/2011_09_30_drive_0034_sync 564 l
+2011_09_26/2011_09_26_drive_0014_sync 213 l
+2011_09_29/2011_09_29_drive_0004_sync 259 r
+2011_10_03/2011_10_03_drive_0034_sync 1614 l
+2011_09_30/2011_09_30_drive_0028_sync 4832 r
+2011_09_30/2011_09_30_drive_0034_sync 433 r
+2011_09_26/2011_09_26_drive_0011_sync 173 r
+2011_09_30/2011_09_30_drive_0028_sync 1227 l
+2011_09_30/2011_09_30_drive_0034_sync 139 l
+2011_09_30/2011_09_30_drive_0033_sync 557 r
+2011_09_30/2011_09_30_drive_0020_sync 836 r
+2011_09_30/2011_09_30_drive_0028_sync 1207 r
+2011_10_03/2011_10_03_drive_0034_sync 1596 l
+2011_10_03/2011_10_03_drive_0034_sync 1789 l
+2011_10_03/2011_10_03_drive_0034_sync 1969 r
+2011_09_30/2011_09_30_drive_0034_sync 796 l
+2011_09_30/2011_09_30_drive_0028_sync 800 r
+2011_09_26/2011_09_26_drive_0104_sync 275 r
+2011_09_30/2011_09_30_drive_0033_sync 593 l
+2011_09_30/2011_09_30_drive_0020_sync 1077 l
+2011_09_30/2011_09_30_drive_0034_sync 1185 l
+2011_09_26/2011_09_26_drive_0091_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 711 r
+2011_10_03/2011_10_03_drive_0042_sync 682 r
+2011_10_03/2011_10_03_drive_0034_sync 588 l
+2011_09_26/2011_09_26_drive_0087_sync 629 l
+2011_09_30/2011_09_30_drive_0028_sync 1845 r
+2011_09_29/2011_09_29_drive_0004_sync 173 l
+2011_09_29/2011_09_29_drive_0004_sync 283 r
+2011_10_03/2011_10_03_drive_0034_sync 2014 r
+2011_09_29/2011_09_29_drive_0004_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 4286 l
+2011_10_03/2011_10_03_drive_0042_sync 358 r
+2011_09_26/2011_09_26_drive_0113_sync 41 r
+2011_09_26/2011_09_26_drive_0104_sync 107 l
+2011_09_26/2011_09_26_drive_0019_sync 240 r
+2011_09_30/2011_09_30_drive_0028_sync 1544 l
+2011_09_30/2011_09_30_drive_0020_sync 254 r
+2011_09_30/2011_09_30_drive_0028_sync 1887 l
+2011_09_26/2011_09_26_drive_0087_sync 315 r
+2011_10_03/2011_10_03_drive_0042_sync 334 r
+2011_09_26/2011_09_26_drive_0057_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 695 l
+2011_09_26/2011_09_26_drive_0051_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 4548 l
+2011_09_30/2011_09_30_drive_0028_sync 2308 l
+2011_09_30/2011_09_30_drive_0020_sync 436 l
+2011_09_26/2011_09_26_drive_0051_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 2593 l
+2011_09_26/2011_09_26_drive_0022_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 3651 l
+2011_09_30/2011_09_30_drive_0033_sync 20 r
+2011_09_26/2011_09_26_drive_0061_sync 561 l
+2011_09_30/2011_09_30_drive_0020_sync 1004 r
+2011_09_30/2011_09_30_drive_0028_sync 5132 l
+2011_10_03/2011_10_03_drive_0034_sync 1655 l
+2011_09_26/2011_09_26_drive_0061_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 4394 r
+2011_09_29/2011_09_29_drive_0004_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 650 r
+2011_10_03/2011_10_03_drive_0034_sync 3239 r
+2011_09_26/2011_09_26_drive_0091_sync 73 r
+2011_09_30/2011_09_30_drive_0033_sync 1424 l
+2011_09_30/2011_09_30_drive_0033_sync 1128 r
+2011_09_30/2011_09_30_drive_0028_sync 2665 l
+2011_10_03/2011_10_03_drive_0034_sync 1705 r
+2011_09_26/2011_09_26_drive_0061_sync 490 l
+2011_10_03/2011_10_03_drive_0034_sync 1346 l
+2011_09_30/2011_09_30_drive_0028_sync 1100 l
+2011_09_30/2011_09_30_drive_0033_sync 1364 l
+2011_09_26/2011_09_26_drive_0061_sync 453 r
+2011_09_26/2011_09_26_drive_0104_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2419 r
+2011_10_03/2011_10_03_drive_0034_sync 3917 r
+2011_10_03/2011_10_03_drive_0042_sync 521 l
+2011_09_26/2011_09_26_drive_0019_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 2575 l
+2011_09_30/2011_09_30_drive_0028_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 3653 r
+2011_09_26/2011_09_26_drive_0070_sync 12 l
+2011_09_30/2011_09_30_drive_0034_sync 361 l
+2011_09_26/2011_09_26_drive_0005_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 4578 l
+2011_09_30/2011_09_30_drive_0028_sync 3601 l
+2011_09_30/2011_09_30_drive_0020_sync 615 r
+2011_09_26/2011_09_26_drive_0061_sync 343 r
+2011_09_26/2011_09_26_drive_0070_sync 275 r
+2011_09_26/2011_09_26_drive_0005_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 1563 r
+2011_09_26/2011_09_26_drive_0015_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 1624 r
+2011_09_30/2011_09_30_drive_0028_sync 1306 l
+2011_09_26/2011_09_26_drive_0070_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 195 l
+2011_09_30/2011_09_30_drive_0028_sync 1244 l
+2011_09_26/2011_09_26_drive_0087_sync 278 l
+2011_09_30/2011_09_30_drive_0020_sync 1099 r
+2011_09_30/2011_09_30_drive_0020_sync 559 r
+2011_09_26/2011_09_26_drive_0095_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 3617 l
+2011_09_30/2011_09_30_drive_0033_sync 391 r
+2011_09_30/2011_09_30_drive_0028_sync 1291 l
+2011_09_30/2011_09_30_drive_0028_sync 1092 r
+2011_09_30/2011_09_30_drive_0020_sync 1033 r
+2011_09_29/2011_09_29_drive_0004_sync 79 r
+2011_09_26/2011_09_26_drive_0015_sync 173 r
+2011_09_30/2011_09_30_drive_0028_sync 760 r
+2011_09_26/2011_09_26_drive_0104_sync 242 l
+2011_09_26/2011_09_26_drive_0011_sync 29 l
+2011_09_30/2011_09_30_drive_0034_sync 978 r
+2011_09_30/2011_09_30_drive_0028_sync 4760 l
+2011_09_30/2011_09_30_drive_0028_sync 371 l
+2011_10_03/2011_10_03_drive_0034_sync 40 l
+2011_09_30/2011_09_30_drive_0034_sync 193 r
+2011_09_30/2011_09_30_drive_0020_sync 801 r
+2011_09_26/2011_09_26_drive_0087_sync 257 l
+2011_09_26/2011_09_26_drive_0070_sync 256 r
+2011_09_26/2011_09_26_drive_0095_sync 267 r
+2011_09_30/2011_09_30_drive_0028_sync 3585 l
+2011_10_03/2011_10_03_drive_0034_sync 936 l
+2011_09_26/2011_09_26_drive_0087_sync 674 l
+2011_09_26/2011_09_26_drive_0028_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 2015 l
+2011_09_26/2011_09_26_drive_0039_sync 225 r
+2011_09_30/2011_09_30_drive_0033_sync 690 l
+2011_09_26/2011_09_26_drive_0087_sync 334 r
+2011_09_30/2011_09_30_drive_0034_sync 932 l
+2011_09_26/2011_09_26_drive_0022_sync 336 l
+2011_09_26/2011_09_26_drive_0019_sync 242 l
+2011_09_26/2011_09_26_drive_0095_sync 72 l
+2011_09_30/2011_09_30_drive_0034_sync 235 l
+2011_09_26/2011_09_26_drive_0057_sync 198 r
+2011_09_30/2011_09_30_drive_0034_sync 1158 r
+2011_09_26/2011_09_26_drive_0087_sync 537 l
+2011_09_26/2011_09_26_drive_0005_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 3701 r
+2011_10_03/2011_10_03_drive_0034_sync 3831 l
+2011_09_26/2011_09_26_drive_0018_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 2255 l
+2011_09_26/2011_09_26_drive_0035_sync 83 l
+2011_09_30/2011_09_30_drive_0020_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 656 r
+2011_09_26/2011_09_26_drive_0028_sync 26 r
+2011_09_30/2011_09_30_drive_0028_sync 4168 l
+2011_09_30/2011_09_30_drive_0034_sync 1111 l
+2011_10_03/2011_10_03_drive_0034_sync 655 l
+2011_09_30/2011_09_30_drive_0028_sync 4027 r
+2011_09_26/2011_09_26_drive_0028_sync 249 l
+2011_09_26/2011_09_26_drive_0011_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 1085 l
+2011_09_30/2011_09_30_drive_0028_sync 4482 r
+2011_09_30/2011_09_30_drive_0028_sync 4236 r
+2011_10_03/2011_10_03_drive_0034_sync 1264 r
+2011_09_30/2011_09_30_drive_0034_sync 128 l
+2011_09_26/2011_09_26_drive_0057_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 4171 r
+2011_09_26/2011_09_26_drive_0015_sync 215 r
+2011_09_26/2011_09_26_drive_0022_sync 85 r
+2011_10_03/2011_10_03_drive_0034_sync 1356 l
+2011_09_30/2011_09_30_drive_0028_sync 5113 r
+2011_10_03/2011_10_03_drive_0034_sync 1181 r
+2011_10_03/2011_10_03_drive_0042_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 3705 l
+2011_09_30/2011_09_30_drive_0033_sync 686 r
+2011_09_30/2011_09_30_drive_0033_sync 678 l
+2011_10_03/2011_10_03_drive_0034_sync 4623 l
+2011_09_30/2011_09_30_drive_0028_sync 4339 l
+2011_09_30/2011_09_30_drive_0028_sync 2872 r
+2011_10_03/2011_10_03_drive_0034_sync 1262 l
+2011_09_30/2011_09_30_drive_0028_sync 1667 l
+2011_09_30/2011_09_30_drive_0020_sync 772 l
+2011_09_30/2011_09_30_drive_0020_sync 881 l
+2011_10_03/2011_10_03_drive_0042_sync 952 r
+2011_09_26/2011_09_26_drive_0005_sync 45 l
+2011_09_30/2011_09_30_drive_0020_sync 445 r
+2011_09_26/2011_09_26_drive_0032_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 4354 r
+2011_09_26/2011_09_26_drive_0035_sync 27 l
+2011_09_26/2011_09_26_drive_0018_sync 249 r
+2011_10_03/2011_10_03_drive_0042_sync 1000 l
+2011_10_03/2011_10_03_drive_0034_sync 1349 r
+2011_09_26/2011_09_26_drive_0011_sync 212 r
+2011_09_30/2011_09_30_drive_0028_sync 4520 r
+2011_09_26/2011_09_26_drive_0011_sync 87 r
+2011_09_30/2011_09_30_drive_0034_sync 498 l
+2011_09_30/2011_09_30_drive_0028_sync 3050 r
+2011_09_30/2011_09_30_drive_0033_sync 1432 l
+2011_09_30/2011_09_30_drive_0028_sync 1939 r
+2011_09_30/2011_09_30_drive_0020_sync 490 l
+2011_10_03/2011_10_03_drive_0034_sync 1035 r
+2011_09_30/2011_09_30_drive_0034_sync 1204 l
+2011_09_29/2011_09_29_drive_0004_sync 71 r
+2011_09_30/2011_09_30_drive_0034_sync 743 r
+2011_09_30/2011_09_30_drive_0033_sync 570 r
+2011_09_26/2011_09_26_drive_0104_sync 154 l
+2011_09_26/2011_09_26_drive_0022_sync 551 l
+2011_10_03/2011_10_03_drive_0034_sync 1084 l
+2011_09_30/2011_09_30_drive_0028_sync 4960 l
+2011_10_03/2011_10_03_drive_0042_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 2571 r
+2011_09_26/2011_09_26_drive_0079_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 1297 r
+2011_09_30/2011_09_30_drive_0034_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 4541 r
+2011_09_30/2011_09_30_drive_0028_sync 4407 l
+2011_09_26/2011_09_26_drive_0032_sync 333 l
+2011_09_30/2011_09_30_drive_0020_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 4296 r
+2011_09_30/2011_09_30_drive_0020_sync 355 l
+2011_09_30/2011_09_30_drive_0034_sync 956 r
+2011_09_26/2011_09_26_drive_0113_sync 81 l
+2011_09_26/2011_09_26_drive_0022_sync 781 l
+2011_09_26/2011_09_26_drive_0017_sync 97 l
+2011_09_30/2011_09_30_drive_0033_sync 157 l
+2011_09_30/2011_09_30_drive_0033_sync 832 r
+2011_09_30/2011_09_30_drive_0020_sync 18 r
+2011_09_26/2011_09_26_drive_0070_sync 228 l
+2011_09_30/2011_09_30_drive_0033_sync 1282 r
+2011_10_03/2011_10_03_drive_0034_sync 1803 r
+2011_10_03/2011_10_03_drive_0034_sync 4334 r
+2011_09_26/2011_09_26_drive_0032_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 3296 r
+2011_09_26/2011_09_26_drive_0022_sync 323 l
+2011_10_03/2011_10_03_drive_0034_sync 3235 r
+2011_09_30/2011_09_30_drive_0033_sync 714 l
+2011_10_03/2011_10_03_drive_0034_sync 4371 r
+2011_09_26/2011_09_26_drive_0001_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 2585 l
+2011_10_03/2011_10_03_drive_0034_sync 3065 r
+2011_09_26/2011_09_26_drive_0028_sync 358 l
+2011_09_26/2011_09_26_drive_0061_sync 698 l
+2011_09_30/2011_09_30_drive_0028_sync 233 l
+2011_09_30/2011_09_30_drive_0033_sync 284 r
+2011_09_30/2011_09_30_drive_0020_sync 87 r
+2011_09_30/2011_09_30_drive_0020_sync 252 l
+2011_09_26/2011_09_26_drive_0018_sync 121 l
+2011_09_30/2011_09_30_drive_0034_sync 928 l
+2011_09_26/2011_09_26_drive_0019_sync 412 r
+2011_09_26/2011_09_26_drive_0028_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 821 l
+2011_09_30/2011_09_30_drive_0033_sync 547 r
+2011_09_30/2011_09_30_drive_0020_sync 419 l
+2011_10_03/2011_10_03_drive_0034_sync 681 r
+2011_09_30/2011_09_30_drive_0020_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 823 r
+2011_10_03/2011_10_03_drive_0042_sync 351 r
+2011_10_03/2011_10_03_drive_0042_sync 906 r
+2011_09_26/2011_09_26_drive_0061_sync 179 l
+2011_09_26/2011_09_26_drive_0057_sync 358 l
+2011_10_03/2011_10_03_drive_0034_sync 77 l
+2011_09_26/2011_09_26_drive_0005_sync 152 l
+2011_09_26/2011_09_26_drive_0087_sync 721 l
+2011_09_30/2011_09_30_drive_0028_sync 9 r
+2011_09_30/2011_09_30_drive_0033_sync 351 r
+2011_09_30/2011_09_30_drive_0028_sync 635 l
+2011_09_30/2011_09_30_drive_0028_sync 862 l
+2011_09_30/2011_09_30_drive_0033_sync 904 r
+2011_09_26/2011_09_26_drive_0087_sync 383 r
+2011_10_03/2011_10_03_drive_0034_sync 1536 l
+2011_10_03/2011_10_03_drive_0034_sync 2869 r
+2011_09_26/2011_09_26_drive_0061_sync 382 l
+2011_09_26/2011_09_26_drive_0061_sync 476 l
+2011_09_30/2011_09_30_drive_0028_sync 4467 r
+2011_09_30/2011_09_30_drive_0028_sync 699 l
+2011_10_03/2011_10_03_drive_0034_sync 4159 r
+2011_09_30/2011_09_30_drive_0028_sync 1809 r
+2011_10_03/2011_10_03_drive_0034_sync 2068 r
+2011_10_03/2011_10_03_drive_0034_sync 3929 r
+2011_09_30/2011_09_30_drive_0033_sync 900 r
+2011_09_30/2011_09_30_drive_0034_sync 530 r
+2011_09_26/2011_09_26_drive_0087_sync 429 r
+2011_10_03/2011_10_03_drive_0042_sync 1012 l
+2011_09_26/2011_09_26_drive_0022_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 4475 r
+2011_09_26/2011_09_26_drive_0095_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 2252 l
+2011_10_03/2011_10_03_drive_0034_sync 3351 l
+2011_09_26/2011_09_26_drive_0070_sync 108 l
+2011_09_30/2011_09_30_drive_0033_sync 1156 r
+2011_10_03/2011_10_03_drive_0034_sync 2536 l
+2011_09_26/2011_09_26_drive_0079_sync 28 r
+2011_09_26/2011_09_26_drive_0019_sync 270 l
+2011_09_26/2011_09_26_drive_0019_sync 173 r
+2011_09_30/2011_09_30_drive_0033_sync 394 l
+2011_09_30/2011_09_30_drive_0034_sync 1103 l
+2011_09_26/2011_09_26_drive_0015_sync 9 r
+2011_09_26/2011_09_26_drive_0051_sync 138 r
+2011_09_26/2011_09_26_drive_0014_sync 311 r
+2011_09_26/2011_09_26_drive_0051_sync 273 r
+2011_09_30/2011_09_30_drive_0034_sync 560 l
+2011_09_30/2011_09_30_drive_0028_sync 2758 l
+2011_10_03/2011_10_03_drive_0034_sync 3382 l
+2011_09_30/2011_09_30_drive_0033_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 2782 l
+2011_10_03/2011_10_03_drive_0034_sync 2285 r
+2011_09_26/2011_09_26_drive_0061_sync 273 r
+2011_10_03/2011_10_03_drive_0042_sync 221 r
+2011_09_26/2011_09_26_drive_0091_sync 239 l
+2011_10_03/2011_10_03_drive_0034_sync 3851 l
+2011_09_30/2011_09_30_drive_0020_sync 978 r
+2011_09_30/2011_09_30_drive_0033_sync 828 r
+2011_09_26/2011_09_26_drive_0060_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 379 l
+2011_10_03/2011_10_03_drive_0034_sync 469 l
+2011_09_30/2011_09_30_drive_0028_sync 3397 r
+2011_09_26/2011_09_26_drive_0001_sync 93 l
+2011_09_26/2011_09_26_drive_0061_sync 268 l
+2011_09_26/2011_09_26_drive_0022_sync 718 l
+2011_09_26/2011_09_26_drive_0032_sync 320 r
+2011_09_30/2011_09_30_drive_0034_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 3372 l
+2011_10_03/2011_10_03_drive_0034_sync 3680 l
+2011_09_30/2011_09_30_drive_0028_sync 1228 l
+2011_09_26/2011_09_26_drive_0019_sync 252 r
+2011_09_30/2011_09_30_drive_0028_sync 4387 r
+2011_09_26/2011_09_26_drive_0032_sync 200 l
+2011_09_26/2011_09_26_drive_0039_sync 289 l
+2011_10_03/2011_10_03_drive_0042_sync 82 l
+2011_10_03/2011_10_03_drive_0034_sync 1728 l
+2011_10_03/2011_10_03_drive_0034_sync 2044 l
+2011_10_03/2011_10_03_drive_0034_sync 2563 r
+2011_09_30/2011_09_30_drive_0033_sync 1257 l
+2011_10_03/2011_10_03_drive_0034_sync 1621 l
+2011_09_26/2011_09_26_drive_0051_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 4828 l
+2011_10_03/2011_10_03_drive_0034_sync 3069 l
+2011_10_03/2011_10_03_drive_0042_sync 18 l
+2011_10_03/2011_10_03_drive_0042_sync 798 l
+2011_09_30/2011_09_30_drive_0028_sync 4803 r
+2011_10_03/2011_10_03_drive_0034_sync 1292 l
+2011_09_26/2011_09_26_drive_0060_sync 46 r
+2011_09_26/2011_09_26_drive_0019_sync 395 l
+2011_09_30/2011_09_30_drive_0033_sync 1312 r
+2011_09_26/2011_09_26_drive_0113_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 392 r
+2011_10_03/2011_10_03_drive_0034_sync 2612 r
+2011_10_03/2011_10_03_drive_0042_sync 16 r
+2011_10_03/2011_10_03_drive_0042_sync 1057 l
+2011_09_30/2011_09_30_drive_0028_sync 3345 r
+2011_09_30/2011_09_30_drive_0028_sync 3622 r
+2011_09_30/2011_09_30_drive_0028_sync 2646 r
+2011_10_03/2011_10_03_drive_0034_sync 2726 l
+2011_09_29/2011_09_29_drive_0004_sync 308 r
+2011_09_30/2011_09_30_drive_0033_sync 1593 r
+2011_09_30/2011_09_30_drive_0033_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 1454 r
+2011_09_26/2011_09_26_drive_0061_sync 519 l
+2011_09_26/2011_09_26_drive_0028_sync 73 l
+2011_09_26/2011_09_26_drive_0070_sync 188 l
+2011_09_30/2011_09_30_drive_0033_sync 67 r
+2011_09_26/2011_09_26_drive_0061_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 74 r
+2011_09_26/2011_09_26_drive_0091_sync 158 r
+2011_09_26/2011_09_26_drive_0051_sync 106 l
+2011_10_03/2011_10_03_drive_0034_sync 2555 l
+2011_09_26/2011_09_26_drive_0022_sync 552 r
+2011_09_26/2011_09_26_drive_0017_sync 79 r
+2011_09_26/2011_09_26_drive_0035_sync 120 r
+2011_09_30/2011_09_30_drive_0028_sync 3990 r
+2011_10_03/2011_10_03_drive_0034_sync 242 l
+2011_09_26/2011_09_26_drive_0057_sync 339 l
+2011_09_26/2011_09_26_drive_0104_sync 53 l
+2011_09_30/2011_09_30_drive_0028_sync 4753 r
+2011_09_26/2011_09_26_drive_0028_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 1921 l
+2011_09_29/2011_09_29_drive_0004_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 4195 l
+2011_09_26/2011_09_26_drive_0039_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 909 l
+2011_09_30/2011_09_30_drive_0028_sync 2803 r
+2011_09_29/2011_09_29_drive_0026_sync 32 l
+2011_10_03/2011_10_03_drive_0042_sync 180 l
+2011_10_03/2011_10_03_drive_0042_sync 883 l
+2011_09_26/2011_09_26_drive_0051_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 3087 r
+2011_10_03/2011_10_03_drive_0034_sync 777 l
+2011_10_03/2011_10_03_drive_0034_sync 1826 r
+2011_10_03/2011_10_03_drive_0034_sync 893 l
+2011_10_03/2011_10_03_drive_0042_sync 1107 l
+2011_09_26/2011_09_26_drive_0039_sync 374 r
+2011_09_26/2011_09_26_drive_0051_sync 434 l
+2011_09_26/2011_09_26_drive_0014_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 3845 r
+2011_09_30/2011_09_30_drive_0033_sync 1443 l
+2011_09_30/2011_09_30_drive_0033_sync 509 r
+2011_09_30/2011_09_30_drive_0033_sync 662 r
+2011_10_03/2011_10_03_drive_0034_sync 1442 l
+2011_10_03/2011_10_03_drive_0034_sync 1042 l
+2011_09_30/2011_09_30_drive_0028_sync 1699 l
+2011_09_30/2011_09_30_drive_0033_sync 65 r
+2011_09_26/2011_09_26_drive_0061_sync 653 l
+2011_09_26/2011_09_26_drive_0061_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 2301 r
+2011_09_26/2011_09_26_drive_0061_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 4148 r
+2011_09_26/2011_09_26_drive_0087_sync 129 l
+2011_09_30/2011_09_30_drive_0033_sync 446 l
+2011_09_26/2011_09_26_drive_0087_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 1888 r
+2011_09_26/2011_09_26_drive_0028_sync 411 r
+2011_09_30/2011_09_30_drive_0033_sync 273 l
+2011_09_30/2011_09_30_drive_0034_sync 830 l
+2011_09_29/2011_09_29_drive_0004_sync 271 l
+2011_09_30/2011_09_30_drive_0028_sync 332 r
+2011_09_26/2011_09_26_drive_0015_sync 260 l
+2011_09_28/2011_09_28_drive_0001_sync 35 r
+2011_09_30/2011_09_30_drive_0034_sync 608 l
+2011_09_30/2011_09_30_drive_0028_sync 1441 r
+2011_09_26/2011_09_26_drive_0039_sync 349 l
+2011_09_26/2011_09_26_drive_0104_sync 212 r
+2011_09_26/2011_09_26_drive_0022_sync 763 r
+2011_10_03/2011_10_03_drive_0034_sync 2960 l
+2011_10_03/2011_10_03_drive_0034_sync 3205 l
+2011_10_03/2011_10_03_drive_0034_sync 4652 r
+2011_10_03/2011_10_03_drive_0034_sync 2194 l
+2011_09_30/2011_09_30_drive_0034_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 1020 r
+2011_10_03/2011_10_03_drive_0034_sync 231 r
+2011_09_30/2011_09_30_drive_0034_sync 216 r
+2011_10_03/2011_10_03_drive_0034_sync 4581 l
+2011_09_26/2011_09_26_drive_0028_sync 413 l
+2011_09_26/2011_09_26_drive_0028_sync 158 l
+2011_09_30/2011_09_30_drive_0033_sync 480 l
+2011_09_26/2011_09_26_drive_0019_sync 337 r
+2011_09_26/2011_09_26_drive_0087_sync 677 r
+2011_09_30/2011_09_30_drive_0020_sync 213 l
+2011_09_30/2011_09_30_drive_0028_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 1968 l
+2011_09_26/2011_09_26_drive_0014_sync 69 l
+2011_09_30/2011_09_30_drive_0028_sync 2369 l
+2011_10_03/2011_10_03_drive_0034_sync 4431 r
+2011_10_03/2011_10_03_drive_0034_sync 3802 l
+2011_09_30/2011_09_30_drive_0034_sync 883 r
+2011_09_26/2011_09_26_drive_0061_sync 657 r
+2011_09_26/2011_09_26_drive_0018_sync 266 r
+2011_09_26/2011_09_26_drive_0091_sync 16 l
+2011_09_30/2011_09_30_drive_0020_sync 1042 r
+2011_09_26/2011_09_26_drive_0061_sync 153 l
+2011_10_03/2011_10_03_drive_0034_sync 1795 l
+2011_09_30/2011_09_30_drive_0020_sync 467 l
+2011_10_03/2011_10_03_drive_0034_sync 3151 l
+2011_09_30/2011_09_30_drive_0028_sync 1473 l
+2011_09_30/2011_09_30_drive_0028_sync 5120 l
+2011_09_26/2011_09_26_drive_0032_sync 366 l
+2011_09_30/2011_09_30_drive_0034_sync 731 r
+2011_10_03/2011_10_03_drive_0034_sync 3855 r
+2011_10_03/2011_10_03_drive_0034_sync 589 r
+2011_10_03/2011_10_03_drive_0034_sync 2054 r
+2011_09_26/2011_09_26_drive_0028_sync 335 r
+2011_09_26/2011_09_26_drive_0061_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 2104 l
+2011_10_03/2011_10_03_drive_0034_sync 2554 l
+2011_09_26/2011_09_26_drive_0087_sync 451 l
+2011_09_26/2011_09_26_drive_0051_sync 174 r
+2011_09_30/2011_09_30_drive_0033_sync 1416 l
+2011_10_03/2011_10_03_drive_0034_sync 4595 l
+2011_10_03/2011_10_03_drive_0034_sync 2340 l
+2011_09_30/2011_09_30_drive_0028_sync 766 r
+2011_10_03/2011_10_03_drive_0034_sync 1875 l
+2011_10_03/2011_10_03_drive_0034_sync 1953 r
+2011_09_30/2011_09_30_drive_0028_sync 1379 l
+2011_10_03/2011_10_03_drive_0034_sync 2502 l
+2011_09_26/2011_09_26_drive_0014_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 378 r
+2011_10_03/2011_10_03_drive_0034_sync 3904 r
+2011_09_30/2011_09_30_drive_0028_sync 641 l
+2011_09_26/2011_09_26_drive_0028_sync 296 r
+2011_09_30/2011_09_30_drive_0033_sync 319 l
+2011_09_26/2011_09_26_drive_0051_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 3815 r
+2011_10_03/2011_10_03_drive_0034_sync 2855 l
+2011_10_03/2011_10_03_drive_0034_sync 4258 l
+2011_09_26/2011_09_26_drive_0022_sync 645 r
+2011_09_26/2011_09_26_drive_0113_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 1799 r
+2011_09_30/2011_09_30_drive_0028_sync 3393 r
+2011_10_03/2011_10_03_drive_0034_sync 410 l
+2011_09_26/2011_09_26_drive_0061_sync 144 r
+2011_09_26/2011_09_26_drive_0091_sync 326 l
+2011_09_30/2011_09_30_drive_0020_sync 1078 r
+2011_10_03/2011_10_03_drive_0042_sync 957 r
+2011_09_26/2011_09_26_drive_0022_sync 369 r
+2011_10_03/2011_10_03_drive_0034_sync 2557 l
+2011_10_03/2011_10_03_drive_0034_sync 1961 r
+2011_09_30/2011_09_30_drive_0033_sync 779 r
+2011_09_30/2011_09_30_drive_0033_sync 1260 r
+2011_10_03/2011_10_03_drive_0034_sync 1350 l
+2011_09_30/2011_09_30_drive_0028_sync 4995 l
+2011_09_30/2011_09_30_drive_0028_sync 1554 l
+2011_09_30/2011_09_30_drive_0033_sync 608 l
+2011_09_30/2011_09_30_drive_0033_sync 118 r
+2011_09_26/2011_09_26_drive_0087_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 1030 l
+2011_09_26/2011_09_26_drive_0057_sync 163 l
+2011_09_26/2011_09_26_drive_0095_sync 78 r
+2011_09_26/2011_09_26_drive_0087_sync 663 l
+2011_10_03/2011_10_03_drive_0034_sync 3365 r
+2011_09_30/2011_09_30_drive_0028_sync 4925 r
+2011_09_26/2011_09_26_drive_0051_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 2953 r
+2011_09_26/2011_09_26_drive_0032_sync 253 l
+2011_09_26/2011_09_26_drive_0032_sync 330 l
+2011_10_03/2011_10_03_drive_0034_sync 1403 r
+2011_09_26/2011_09_26_drive_0022_sync 314 r
+2011_10_03/2011_10_03_drive_0034_sync 430 r
+2011_09_26/2011_09_26_drive_0095_sync 227 l
+2011_09_30/2011_09_30_drive_0028_sync 1570 r
+2011_09_30/2011_09_30_drive_0034_sync 37 r
+2011_09_30/2011_09_30_drive_0020_sync 668 r
+2011_09_30/2011_09_30_drive_0028_sync 3691 r
+2011_09_30/2011_09_30_drive_0028_sync 3696 l
+2011_09_30/2011_09_30_drive_0028_sync 4119 l
+2011_09_30/2011_09_30_drive_0020_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 1640 r
+2011_09_26/2011_09_26_drive_0005_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 5093 r
+2011_09_26/2011_09_26_drive_0051_sync 88 l
+2011_09_30/2011_09_30_drive_0020_sync 383 r
+2011_09_26/2011_09_26_drive_0019_sync 110 r
+2011_09_30/2011_09_30_drive_0033_sync 1250 l
+2011_09_26/2011_09_26_drive_0039_sync 192 l
+2011_09_26/2011_09_26_drive_0022_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 3905 l
+2011_10_03/2011_10_03_drive_0034_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 2009 l
+2011_09_26/2011_09_26_drive_0057_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 2752 l
+2011_10_03/2011_10_03_drive_0034_sync 3668 r
+2011_10_03/2011_10_03_drive_0034_sync 2824 r
+2011_09_26/2011_09_26_drive_0022_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 2963 r
+2011_09_30/2011_09_30_drive_0028_sync 5018 l
+2011_09_30/2011_09_30_drive_0028_sync 4669 r
+2011_09_30/2011_09_30_drive_0028_sync 4177 r
+2011_09_30/2011_09_30_drive_0028_sync 3512 r
+2011_10_03/2011_10_03_drive_0034_sync 697 l
+2011_09_26/2011_09_26_drive_0104_sync 141 l
+2011_09_29/2011_09_29_drive_0004_sync 243 l
+2011_09_30/2011_09_30_drive_0020_sync 419 r
+2011_09_30/2011_09_30_drive_0028_sync 2459 l
+2011_09_30/2011_09_30_drive_0033_sync 1564 r
+2011_09_30/2011_09_30_drive_0028_sync 3425 r
+2011_09_30/2011_09_30_drive_0028_sync 2409 l
+2011_10_03/2011_10_03_drive_0034_sync 34 r
+2011_09_30/2011_09_30_drive_0020_sync 473 l
+2011_09_30/2011_09_30_drive_0033_sync 180 r
+2011_09_30/2011_09_30_drive_0034_sync 682 r
+2011_09_30/2011_09_30_drive_0028_sync 3685 l
+2011_09_30/2011_09_30_drive_0028_sync 271 r
+2011_09_26/2011_09_26_drive_0051_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 1752 r
+2011_10_03/2011_10_03_drive_0034_sync 1409 l
+2011_09_30/2011_09_30_drive_0034_sync 680 l
+2011_09_26/2011_09_26_drive_0057_sync 198 l
+2011_09_26/2011_09_26_drive_0019_sync 356 l
+2011_09_30/2011_09_30_drive_0033_sync 1233 r
+2011_09_26/2011_09_26_drive_0022_sync 194 r
+2011_09_30/2011_09_30_drive_0020_sync 123 r
+2011_09_26/2011_09_26_drive_0087_sync 708 l
+2011_09_30/2011_09_30_drive_0034_sync 1055 l
+2011_09_26/2011_09_26_drive_0019_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 101 l
+2011_09_30/2011_09_30_drive_0033_sync 1334 r
+2011_10_03/2011_10_03_drive_0042_sync 872 l
+2011_09_30/2011_09_30_drive_0020_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 545 l
+2011_09_26/2011_09_26_drive_0019_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 3783 r
+2011_09_26/2011_09_26_drive_0015_sync 126 l
+2011_09_30/2011_09_30_drive_0020_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 1931 l
+2011_09_26/2011_09_26_drive_0087_sync 703 l
+2011_09_26/2011_09_26_drive_0014_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 4253 l
+2011_09_26/2011_09_26_drive_0061_sync 224 l
+2011_09_30/2011_09_30_drive_0033_sync 766 r
+2011_09_26/2011_09_26_drive_0051_sync 29 l
+2011_09_26/2011_09_26_drive_0022_sync 229 r
+2011_10_03/2011_10_03_drive_0034_sync 4630 l
+2011_10_03/2011_10_03_drive_0034_sync 4537 l
+2011_10_03/2011_10_03_drive_0042_sync 785 l
+2011_10_03/2011_10_03_drive_0034_sync 1779 l
+2011_09_30/2011_09_30_drive_0033_sync 1380 l
+2011_09_30/2011_09_30_drive_0028_sync 1851 r
+2011_09_26/2011_09_26_drive_0005_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 1950 l
+2011_09_30/2011_09_30_drive_0028_sync 2283 l
+2011_09_26/2011_09_26_drive_0014_sync 172 l
+2011_09_26/2011_09_26_drive_0095_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 217 l
+2011_09_26/2011_09_26_drive_0087_sync 252 l
+2011_09_30/2011_09_30_drive_0033_sync 813 l
+2011_09_30/2011_09_30_drive_0028_sync 2112 l
+2011_09_30/2011_09_30_drive_0028_sync 2634 r
+2011_10_03/2011_10_03_drive_0034_sync 3391 l
+2011_09_26/2011_09_26_drive_0039_sync 188 r
+2011_09_26/2011_09_26_drive_0019_sync 424 l
+2011_09_30/2011_09_30_drive_0028_sync 3313 r
+2011_09_30/2011_09_30_drive_0033_sync 799 r
+2011_09_26/2011_09_26_drive_0005_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 1569 r
+2011_09_30/2011_09_30_drive_0028_sync 3914 l
+2011_09_26/2011_09_26_drive_0039_sync 3 l
+2011_09_26/2011_09_26_drive_0022_sync 407 r
+2011_09_26/2011_09_26_drive_0061_sync 525 l
+2011_09_30/2011_09_30_drive_0033_sync 863 r
+2011_09_30/2011_09_30_drive_0028_sync 1292 l
+2011_09_26/2011_09_26_drive_0039_sync 366 r
+2011_10_03/2011_10_03_drive_0042_sync 407 r
+2011_09_26/2011_09_26_drive_0057_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 1955 l
+2011_10_03/2011_10_03_drive_0034_sync 105 r
+2011_09_30/2011_09_30_drive_0028_sync 1410 r
+2011_09_30/2011_09_30_drive_0028_sync 3801 r
+2011_09_26/2011_09_26_drive_0005_sync 58 l
+2011_09_30/2011_09_30_drive_0034_sync 168 r
+2011_09_26/2011_09_26_drive_0061_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 2925 l
+2011_09_30/2011_09_30_drive_0028_sync 1976 l
+2011_09_26/2011_09_26_drive_0039_sync 144 r
+2011_10_03/2011_10_03_drive_0042_sync 1121 l
+2011_09_30/2011_09_30_drive_0034_sync 1028 l
+2011_10_03/2011_10_03_drive_0034_sync 2576 l
+2011_09_29/2011_09_29_drive_0026_sync 78 l
+2011_09_30/2011_09_30_drive_0033_sync 172 l
+2011_09_26/2011_09_26_drive_0087_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 3649 r
+2011_10_03/2011_10_03_drive_0034_sync 2901 r
+2011_10_03/2011_10_03_drive_0034_sync 3467 l
+2011_09_26/2011_09_26_drive_0022_sync 333 r
+2011_09_26/2011_09_26_drive_0095_sync 20 l
+2011_09_26/2011_09_26_drive_0019_sync 450 r
+2011_09_30/2011_09_30_drive_0028_sync 3600 l
+2011_09_26/2011_09_26_drive_0113_sync 59 l
+2011_09_29/2011_09_29_drive_0004_sync 114 l
+2011_10_03/2011_10_03_drive_0042_sync 1111 l
+2011_09_26/2011_09_26_drive_0022_sync 538 l
+2011_09_26/2011_09_26_drive_0018_sync 239 l
+2011_09_26/2011_09_26_drive_0018_sync 245 l
+2011_10_03/2011_10_03_drive_0034_sync 1812 r
+2011_10_03/2011_10_03_drive_0034_sync 2314 l
+2011_09_26/2011_09_26_drive_0095_sync 80 l
+2011_10_03/2011_10_03_drive_0042_sync 539 r
+2011_09_26/2011_09_26_drive_0028_sync 294 l
+2011_09_26/2011_09_26_drive_0019_sync 2 r
+2011_09_26/2011_09_26_drive_0015_sync 153 l
+2011_10_03/2011_10_03_drive_0042_sync 552 l
+2011_09_30/2011_09_30_drive_0028_sync 3971 r
+2011_10_03/2011_10_03_drive_0042_sync 564 r
+2011_09_30/2011_09_30_drive_0020_sync 508 r
+2011_09_30/2011_09_30_drive_0034_sync 1014 r
+2011_09_26/2011_09_26_drive_0104_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 4429 r
+2011_09_26/2011_09_26_drive_0011_sync 185 l
+2011_09_26/2011_09_26_drive_0113_sync 11 r
+2011_09_26/2011_09_26_drive_0022_sync 610 l
+2011_10_03/2011_10_03_drive_0034_sync 2509 r
+2011_09_30/2011_09_30_drive_0034_sync 755 r
+2011_09_26/2011_09_26_drive_0015_sync 19 l
+2011_09_30/2011_09_30_drive_0034_sync 1200 l
+2011_10_03/2011_10_03_drive_0034_sync 4097 l
+2011_09_30/2011_09_30_drive_0028_sync 4417 r
+2011_10_03/2011_10_03_drive_0034_sync 1566 r
+2011_09_26/2011_09_26_drive_0091_sync 95 r
+2011_10_03/2011_10_03_drive_0034_sync 1496 r
+2011_10_03/2011_10_03_drive_0034_sync 91 l
+2011_09_26/2011_09_26_drive_0022_sync 698 r
+2011_09_26/2011_09_26_drive_0032_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 5108 l
+2011_09_26/2011_09_26_drive_0051_sync 320 r
+2011_09_30/2011_09_30_drive_0028_sync 4882 l
+2011_10_03/2011_10_03_drive_0034_sync 449 l
+2011_09_29/2011_09_29_drive_0026_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 392 r
+2011_09_26/2011_09_26_drive_0070_sync 78 r
+2011_09_26/2011_09_26_drive_0005_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 2721 r
+2011_09_26/2011_09_26_drive_0022_sync 734 r
+2011_09_26/2011_09_26_drive_0104_sync 275 l
+2011_09_30/2011_09_30_drive_0028_sync 1475 r
+2011_09_30/2011_09_30_drive_0028_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 1055 l
+2011_09_26/2011_09_26_drive_0070_sync 70 l
+2011_09_29/2011_09_29_drive_0026_sync 135 r
+2011_10_03/2011_10_03_drive_0042_sync 243 l
+2011_10_03/2011_10_03_drive_0034_sync 1681 r
+2011_10_03/2011_10_03_drive_0034_sync 2573 l
+2011_09_30/2011_09_30_drive_0033_sync 1213 r
+2011_09_30/2011_09_30_drive_0028_sync 3061 r
+2011_09_30/2011_09_30_drive_0033_sync 410 l
+2011_10_03/2011_10_03_drive_0042_sync 196 l
+2011_09_30/2011_09_30_drive_0028_sync 2441 l
+2011_09_26/2011_09_26_drive_0014_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 1017 r
+2011_09_26/2011_09_26_drive_0022_sync 283 r
+2011_09_30/2011_09_30_drive_0033_sync 724 l
+2011_09_26/2011_09_26_drive_0057_sync 105 l
+2011_09_30/2011_09_30_drive_0020_sync 287 l
+2011_10_03/2011_10_03_drive_0034_sync 2450 l
+2011_10_03/2011_10_03_drive_0034_sync 483 l
+2011_09_30/2011_09_30_drive_0020_sync 921 r
+2011_09_26/2011_09_26_drive_0087_sync 378 l
+2011_09_26/2011_09_26_drive_0022_sync 329 l
+2011_09_26/2011_09_26_drive_0022_sync 475 l
+2011_09_30/2011_09_30_drive_0028_sync 883 r
+2011_09_26/2011_09_26_drive_0095_sync 77 r
+2011_10_03/2011_10_03_drive_0042_sync 206 l
+2011_09_26/2011_09_26_drive_0079_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 927 r
+2011_09_26/2011_09_26_drive_0070_sync 222 r
+2011_09_26/2011_09_26_drive_0022_sync 526 r
+2011_09_30/2011_09_30_drive_0034_sync 1211 r
+2011_09_30/2011_09_30_drive_0034_sync 292 l
+2011_10_03/2011_10_03_drive_0034_sync 3284 l
+2011_09_26/2011_09_26_drive_0028_sync 76 l
+2011_09_26/2011_09_26_drive_0087_sync 419 r
+2011_09_26/2011_09_26_drive_0039_sync 392 r
+2011_09_30/2011_09_30_drive_0034_sync 695 r
+2011_09_30/2011_09_30_drive_0028_sync 4547 r
+2011_09_30/2011_09_30_drive_0028_sync 384 r
+2011_09_26/2011_09_26_drive_0015_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 276 l
+2011_09_26/2011_09_26_drive_0019_sync 343 l
+2011_09_30/2011_09_30_drive_0020_sync 1079 l
+2011_09_30/2011_09_30_drive_0028_sync 4071 l
+2011_09_30/2011_09_30_drive_0033_sync 1004 r
+2011_09_26/2011_09_26_drive_0051_sync 434 r
+2011_10_03/2011_10_03_drive_0034_sync 2398 r
+2011_10_03/2011_10_03_drive_0042_sync 236 r
+2011_09_30/2011_09_30_drive_0020_sync 140 r
+2011_09_26/2011_09_26_drive_0057_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 3180 r
+2011_09_26/2011_09_26_drive_0061_sync 552 r
+2011_09_30/2011_09_30_drive_0028_sync 5145 l
+2011_10_03/2011_10_03_drive_0042_sync 683 l
+2011_09_26/2011_09_26_drive_0039_sync 339 l
+2011_09_30/2011_09_30_drive_0028_sync 4738 r
+2011_10_03/2011_10_03_drive_0034_sync 1854 l
+2011_10_03/2011_10_03_drive_0042_sync 829 l
+2011_09_26/2011_09_26_drive_0022_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 1957 l
+2011_09_30/2011_09_30_drive_0028_sync 2960 r
+2011_09_26/2011_09_26_drive_0039_sync 162 l
+2011_09_26/2011_09_26_drive_0061_sync 522 r
+2011_10_03/2011_10_03_drive_0034_sync 1724 l
+2011_09_26/2011_09_26_drive_0015_sync 262 r
+2011_09_26/2011_09_26_drive_0070_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 1581 r
+2011_09_30/2011_09_30_drive_0028_sync 1923 r
+2011_09_26/2011_09_26_drive_0087_sync 597 r
+2011_09_30/2011_09_30_drive_0020_sync 695 r
+2011_09_30/2011_09_30_drive_0028_sync 4321 r
+2011_10_03/2011_10_03_drive_0034_sync 2345 l
+2011_10_03/2011_10_03_drive_0034_sync 2409 l
+2011_09_30/2011_09_30_drive_0028_sync 2319 r
+2011_10_03/2011_10_03_drive_0034_sync 1239 r
+2011_10_03/2011_10_03_drive_0034_sync 129 r
+2011_09_26/2011_09_26_drive_0039_sync 108 l
+2011_09_30/2011_09_30_drive_0033_sync 1228 r
+2011_09_29/2011_09_29_drive_0026_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 125 l
+2011_09_26/2011_09_26_drive_0087_sync 243 r
+2011_09_30/2011_09_30_drive_0028_sync 4677 l
+2011_09_30/2011_09_30_drive_0028_sync 3133 l
+2011_09_30/2011_09_30_drive_0033_sync 1553 l
+2011_10_03/2011_10_03_drive_0034_sync 353 l
+2011_09_26/2011_09_26_drive_0015_sync 100 r
+2011_09_26/2011_09_26_drive_0018_sync 199 l
+2011_10_03/2011_10_03_drive_0034_sync 580 r
+2011_10_03/2011_10_03_drive_0042_sync 847 l
+2011_10_03/2011_10_03_drive_0034_sync 3578 r
+2011_10_03/2011_10_03_drive_0034_sync 3914 l
+2011_10_03/2011_10_03_drive_0034_sync 1736 r
+2011_09_26/2011_09_26_drive_0070_sync 395 r
+2011_09_30/2011_09_30_drive_0033_sync 1174 l
+2011_09_26/2011_09_26_drive_0028_sync 428 r
+2011_10_03/2011_10_03_drive_0042_sync 449 r
+2011_09_26/2011_09_26_drive_0104_sync 54 l
+2011_10_03/2011_10_03_drive_0042_sync 989 r
+2011_09_30/2011_09_30_drive_0020_sync 135 r
+2011_09_30/2011_09_30_drive_0033_sync 1207 l
+2011_09_29/2011_09_29_drive_0004_sync 313 r
+2011_09_30/2011_09_30_drive_0020_sync 1060 r
+2011_09_30/2011_09_30_drive_0034_sync 1106 l
+2011_10_03/2011_10_03_drive_0042_sync 1153 r
+2011_09_30/2011_09_30_drive_0020_sync 651 r
+2011_09_26/2011_09_26_drive_0028_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 1427 r
+2011_10_03/2011_10_03_drive_0034_sync 2743 l
+2011_09_30/2011_09_30_drive_0034_sync 1040 r
+2011_09_30/2011_09_30_drive_0033_sync 1341 l
+2011_10_03/2011_10_03_drive_0034_sync 2443 l
+2011_09_30/2011_09_30_drive_0028_sync 674 l
+2011_09_30/2011_09_30_drive_0020_sync 635 l
+2011_09_30/2011_09_30_drive_0028_sync 2610 l
+2011_09_30/2011_09_30_drive_0028_sync 3205 l
+2011_10_03/2011_10_03_drive_0042_sync 661 r
+2011_09_30/2011_09_30_drive_0033_sync 599 l
+2011_10_03/2011_10_03_drive_0034_sync 60 r
+2011_09_30/2011_09_30_drive_0020_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 1759 r
+2011_09_30/2011_09_30_drive_0028_sync 38 l
+2011_09_30/2011_09_30_drive_0033_sync 1084 l
+2011_09_30/2011_09_30_drive_0034_sync 685 r
+2011_09_26/2011_09_26_drive_0091_sync 105 r
+2011_10_03/2011_10_03_drive_0042_sync 401 r
+2011_10_03/2011_10_03_drive_0034_sync 2057 l
+2011_09_26/2011_09_26_drive_0018_sync 250 l
+2011_10_03/2011_10_03_drive_0034_sync 1917 l
+2011_10_03/2011_10_03_drive_0034_sync 3645 r
+2011_09_30/2011_09_30_drive_0028_sync 2706 l
+2011_09_30/2011_09_30_drive_0028_sync 5039 l
+2011_09_26/2011_09_26_drive_0028_sync 366 l
+2011_09_30/2011_09_30_drive_0028_sync 2688 r
+2011_10_03/2011_10_03_drive_0034_sync 4088 l
+2011_09_26/2011_09_26_drive_0091_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 3428 r
+2011_09_26/2011_09_26_drive_0087_sync 23 l
+2011_09_30/2011_09_30_drive_0034_sync 662 l
+2011_09_26/2011_09_26_drive_0104_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 3172 r
+2011_09_30/2011_09_30_drive_0028_sync 3553 r
+2011_09_26/2011_09_26_drive_0028_sync 289 l
+2011_09_30/2011_09_30_drive_0034_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 661 l
+2011_10_03/2011_10_03_drive_0042_sync 838 l
+2011_09_26/2011_09_26_drive_0017_sync 80 l
+2011_10_03/2011_10_03_drive_0042_sync 412 r
+2011_09_26/2011_09_26_drive_0061_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 5019 l
+2011_09_26/2011_09_26_drive_0018_sync 135 l
+2011_10_03/2011_10_03_drive_0042_sync 343 l
+2011_09_26/2011_09_26_drive_0070_sync 145 l
+2011_09_30/2011_09_30_drive_0020_sync 902 r
+2011_09_26/2011_09_26_drive_0032_sync 359 l
+2011_09_26/2011_09_26_drive_0057_sync 273 l
+2011_09_26/2011_09_26_drive_0015_sync 95 l
+2011_10_03/2011_10_03_drive_0034_sync 2213 r
+2011_09_30/2011_09_30_drive_0028_sync 4017 r
+2011_09_26/2011_09_26_drive_0014_sync 216 r
+2011_09_30/2011_09_30_drive_0028_sync 3311 r
+2011_09_26/2011_09_26_drive_0028_sync 199 l
+2011_09_30/2011_09_30_drive_0034_sync 862 r
+2011_09_30/2011_09_30_drive_0028_sync 4317 r
+2011_10_03/2011_10_03_drive_0034_sync 3238 l
+2011_09_30/2011_09_30_drive_0033_sync 647 l
+2011_09_26/2011_09_26_drive_0019_sync 394 r
+2011_09_30/2011_09_30_drive_0020_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 3409 r
+2011_09_30/2011_09_30_drive_0028_sync 304 l
+2011_09_26/2011_09_26_drive_0039_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 4119 l
+2011_09_30/2011_09_30_drive_0028_sync 1505 l
+2011_09_26/2011_09_26_drive_0061_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 3684 r
+2011_09_30/2011_09_30_drive_0020_sync 831 r
+2011_09_30/2011_09_30_drive_0028_sync 406 r
+2011_10_03/2011_10_03_drive_0034_sync 2261 r
+2011_09_30/2011_09_30_drive_0028_sync 2488 l
+2011_09_26/2011_09_26_drive_0019_sync 66 l
+2011_09_26/2011_09_26_drive_0061_sync 460 l
+2011_09_30/2011_09_30_drive_0028_sync 1979 l
+2011_09_30/2011_09_30_drive_0028_sync 5134 l
+2011_10_03/2011_10_03_drive_0034_sync 616 l
+2011_09_26/2011_09_26_drive_0022_sync 447 l
+2011_09_30/2011_09_30_drive_0034_sync 994 l
+2011_09_26/2011_09_26_drive_0057_sync 255 r
+2011_10_03/2011_10_03_drive_0034_sync 2468 l
+2011_09_30/2011_09_30_drive_0033_sync 1587 r
+2011_09_30/2011_09_30_drive_0020_sync 212 l
+2011_09_26/2011_09_26_drive_0015_sync 222 l
+2011_09_30/2011_09_30_drive_0020_sync 412 r
+2011_10_03/2011_10_03_drive_0034_sync 1171 r
+2011_09_30/2011_09_30_drive_0028_sync 3252 l
+2011_09_30/2011_09_30_drive_0028_sync 2364 r
+2011_09_26/2011_09_26_drive_0019_sync 153 r
+2011_10_03/2011_10_03_drive_0042_sync 498 r
+2011_09_30/2011_09_30_drive_0034_sync 475 l
+2011_09_30/2011_09_30_drive_0034_sync 1113 r
+2011_09_26/2011_09_26_drive_0061_sync 189 l
+2011_09_30/2011_09_30_drive_0028_sync 3229 r
+2011_09_30/2011_09_30_drive_0034_sync 483 l
+2011_09_26/2011_09_26_drive_0104_sync 12 l
+2011_10_03/2011_10_03_drive_0034_sync 4540 l
+2011_09_30/2011_09_30_drive_0028_sync 3656 r
+2011_09_30/2011_09_30_drive_0028_sync 1772 r
+2011_10_03/2011_10_03_drive_0034_sync 2196 r
+2011_09_26/2011_09_26_drive_0070_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 627 l
+2011_09_30/2011_09_30_drive_0028_sync 1539 l
+2011_09_26/2011_09_26_drive_0039_sync 376 l
+2011_09_29/2011_09_29_drive_0004_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 4086 l
+2011_09_26/2011_09_26_drive_0022_sync 714 r
+2011_09_30/2011_09_30_drive_0028_sync 3177 r
+2011_09_30/2011_09_30_drive_0028_sync 643 r
+2011_09_30/2011_09_30_drive_0033_sync 1371 r
+2011_09_30/2011_09_30_drive_0034_sync 493 l
+2011_09_30/2011_09_30_drive_0033_sync 640 l
+2011_09_30/2011_09_30_drive_0028_sync 4301 r
+2011_10_03/2011_10_03_drive_0034_sync 1476 r
+2011_09_26/2011_09_26_drive_0028_sync 218 r
+2011_09_26/2011_09_26_drive_0032_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 802 l
+2011_09_30/2011_09_30_drive_0033_sync 937 l
+2011_09_30/2011_09_30_drive_0028_sync 4717 r
+2011_09_26/2011_09_26_drive_0095_sync 132 r
+2011_10_03/2011_10_03_drive_0042_sync 598 l
+2011_10_03/2011_10_03_drive_0034_sync 368 r
+2011_09_30/2011_09_30_drive_0028_sync 3475 r
+2011_09_30/2011_09_30_drive_0028_sync 239 r
+2011_09_26/2011_09_26_drive_0079_sync 52 r
+2011_09_30/2011_09_30_drive_0028_sync 3466 l
+2011_09_26/2011_09_26_drive_0019_sync 69 r
+2011_09_26/2011_09_26_drive_0018_sync 45 r
+2011_09_26/2011_09_26_drive_0022_sync 707 r
+2011_09_26/2011_09_26_drive_0022_sync 320 r
+2011_10_03/2011_10_03_drive_0034_sync 390 r
+2011_09_26/2011_09_26_drive_0022_sync 728 r
+2011_10_03/2011_10_03_drive_0034_sync 986 r
+2011_09_26/2011_09_26_drive_0061_sync 584 r
+2011_09_30/2011_09_30_drive_0033_sync 545 l
+2011_09_30/2011_09_30_drive_0034_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 3076 r
+2011_09_30/2011_09_30_drive_0028_sync 3223 r
+2011_09_30/2011_09_30_drive_0028_sync 4286 r
+2011_09_30/2011_09_30_drive_0028_sync 2516 r
+2011_10_03/2011_10_03_drive_0042_sync 856 l
+2011_09_30/2011_09_30_drive_0028_sync 4373 r
+2011_09_26/2011_09_26_drive_0019_sync 312 r
+2011_09_26/2011_09_26_drive_0061_sync 384 r
+2011_10_03/2011_10_03_drive_0034_sync 698 l
+2011_10_03/2011_10_03_drive_0042_sync 534 l
+2011_09_30/2011_09_30_drive_0028_sync 4604 r
+2011_09_30/2011_09_30_drive_0028_sync 257 l
+2011_09_30/2011_09_30_drive_0034_sync 289 l
+2011_09_30/2011_09_30_drive_0028_sync 765 r
+2011_10_03/2011_10_03_drive_0034_sync 2445 l
+2011_10_03/2011_10_03_drive_0034_sync 4079 l
+2011_09_30/2011_09_30_drive_0033_sync 1025 l
+2011_09_26/2011_09_26_drive_0011_sync 34 l
+2011_09_26/2011_09_26_drive_0022_sync 569 r
+2011_10_03/2011_10_03_drive_0042_sync 901 r
+2011_09_26/2011_09_26_drive_0091_sync 225 r
+2011_09_26/2011_09_26_drive_0087_sync 589 l
+2011_09_26/2011_09_26_drive_0061_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 4079 r
+2011_09_26/2011_09_26_drive_0061_sync 233 l
+2011_09_26/2011_09_26_drive_0001_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 1455 r
+2011_10_03/2011_10_03_drive_0042_sync 1128 l
+2011_09_26/2011_09_26_drive_0051_sync 280 l
+2011_09_26/2011_09_26_drive_0039_sync 148 l
+2011_09_30/2011_09_30_drive_0033_sync 584 r
+2011_09_26/2011_09_26_drive_0057_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 3637 l
+2011_10_03/2011_10_03_drive_0042_sync 297 r
+2011_09_26/2011_09_26_drive_0091_sync 328 r
+2011_09_30/2011_09_30_drive_0034_sync 517 l
+2011_09_30/2011_09_30_drive_0028_sync 3933 r
+2011_09_26/2011_09_26_drive_0061_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 569 l
+2011_10_03/2011_10_03_drive_0034_sync 2304 r
+2011_09_26/2011_09_26_drive_0022_sync 695 l
+2011_09_26/2011_09_26_drive_0011_sync 194 l
+2011_09_26/2011_09_26_drive_0022_sync 306 l
+2011_09_30/2011_09_30_drive_0020_sync 135 l
+2011_09_26/2011_09_26_drive_0015_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 893 l
+2011_09_30/2011_09_30_drive_0034_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 2290 l
+2011_09_26/2011_09_26_drive_0087_sync 495 l
+2011_10_03/2011_10_03_drive_0034_sync 749 r
+2011_09_26/2011_09_26_drive_0070_sync 241 r
+2011_09_26/2011_09_26_drive_0091_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 1172 l
+2011_09_30/2011_09_30_drive_0028_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 1834 r
+2011_09_30/2011_09_30_drive_0028_sync 3148 r
+2011_09_30/2011_09_30_drive_0033_sync 726 r
+2011_10_03/2011_10_03_drive_0034_sync 2917 r
+2011_09_26/2011_09_26_drive_0039_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 1263 r
+2011_09_26/2011_09_26_drive_0019_sync 400 r
+2011_10_03/2011_10_03_drive_0034_sync 949 r
+2011_09_26/2011_09_26_drive_0035_sync 56 l
+2011_09_26/2011_09_26_drive_0087_sync 499 l
+2011_09_26/2011_09_26_drive_0070_sync 95 r
+2011_09_30/2011_09_30_drive_0033_sync 646 r
+2011_09_26/2011_09_26_drive_0019_sync 227 r
+2011_09_26/2011_09_26_drive_0070_sync 392 r
+2011_09_30/2011_09_30_drive_0028_sync 1389 r
+2011_10_03/2011_10_03_drive_0034_sync 2518 r
+2011_09_30/2011_09_30_drive_0028_sync 4220 r
+2011_09_30/2011_09_30_drive_0020_sync 468 l
+2011_09_26/2011_09_26_drive_0061_sync 541 r
+2011_09_30/2011_09_30_drive_0028_sync 3596 l
+2011_09_26/2011_09_26_drive_0095_sync 174 l
+2011_09_26/2011_09_26_drive_0039_sync 278 r
+2011_10_03/2011_10_03_drive_0034_sync 4596 l
+2011_10_03/2011_10_03_drive_0034_sync 3410 r
+2011_10_03/2011_10_03_drive_0034_sync 1682 l
+2011_10_03/2011_10_03_drive_0034_sync 2534 l
+2011_09_30/2011_09_30_drive_0034_sync 545 r
+2011_09_26/2011_09_26_drive_0022_sync 481 l
+2011_10_03/2011_10_03_drive_0042_sync 637 l
+2011_09_30/2011_09_30_drive_0028_sync 628 r
+2011_09_30/2011_09_30_drive_0028_sync 5150 l
+2011_10_03/2011_10_03_drive_0034_sync 2803 l
+2011_10_03/2011_10_03_drive_0042_sync 795 l
+2011_09_30/2011_09_30_drive_0028_sync 2367 r
+2011_09_30/2011_09_30_drive_0028_sync 2245 l
+2011_09_26/2011_09_26_drive_0091_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 1231 l
+2011_09_26/2011_09_26_drive_0087_sync 513 r
+2011_09_26/2011_09_26_drive_0104_sync 27 r
+2011_09_26/2011_09_26_drive_0028_sync 136 l
+2011_09_26/2011_09_26_drive_0104_sync 304 l
+2011_09_26/2011_09_26_drive_0032_sync 319 l
+2011_09_30/2011_09_30_drive_0034_sync 734 r
+2011_09_30/2011_09_30_drive_0033_sync 827 l
+2011_10_03/2011_10_03_drive_0034_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 1868 l
+2011_09_26/2011_09_26_drive_0022_sync 598 l
+2011_09_26/2011_09_26_drive_0039_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 437 l
+2011_09_30/2011_09_30_drive_0028_sync 2595 r
+2011_09_26/2011_09_26_drive_0104_sync 211 l
+2011_09_26/2011_09_26_drive_0028_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 2922 l
+2011_09_30/2011_09_30_drive_0033_sync 960 l
+2011_10_03/2011_10_03_drive_0034_sync 3250 l
+2011_09_26/2011_09_26_drive_0087_sync 140 l
+2011_09_26/2011_09_26_drive_0022_sync 94 r
+2011_09_26/2011_09_26_drive_0015_sync 160 l
+2011_09_29/2011_09_29_drive_0026_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 991 l
+2011_10_03/2011_10_03_drive_0034_sync 723 l
+2011_09_26/2011_09_26_drive_0022_sync 394 r
+2011_09_30/2011_09_30_drive_0034_sync 341 l
+2011_10_03/2011_10_03_drive_0034_sync 1864 r
+2011_09_26/2011_09_26_drive_0039_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 1380 r
+2011_10_03/2011_10_03_drive_0034_sync 2197 r
+2011_09_26/2011_09_26_drive_0070_sync 413 r
+2011_09_26/2011_09_26_drive_0018_sync 16 l
+2011_09_26/2011_09_26_drive_0017_sync 51 r
+2011_10_03/2011_10_03_drive_0042_sync 222 l
+2011_09_26/2011_09_26_drive_0091_sync 306 l
+2011_09_30/2011_09_30_drive_0033_sync 288 r
+2011_09_30/2011_09_30_drive_0033_sync 670 r
+2011_09_30/2011_09_30_drive_0033_sync 880 l
+2011_09_26/2011_09_26_drive_0070_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 2445 l
+2011_09_26/2011_09_26_drive_0051_sync 407 l
+2011_09_30/2011_09_30_drive_0028_sync 1043 r
+2011_10_03/2011_10_03_drive_0034_sync 2548 l
+2011_09_26/2011_09_26_drive_0032_sync 349 l
+2011_09_29/2011_09_29_drive_0004_sync 132 r
+2011_10_03/2011_10_03_drive_0042_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 4617 r
+2011_09_30/2011_09_30_drive_0028_sync 2350 r
+2011_09_30/2011_09_30_drive_0020_sync 1085 l
+2011_09_30/2011_09_30_drive_0033_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 3473 l
+2011_09_30/2011_09_30_drive_0028_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 1668 r
+2011_09_26/2011_09_26_drive_0028_sync 54 r
+2011_09_26/2011_09_26_drive_0061_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 621 l
+2011_09_30/2011_09_30_drive_0028_sync 1815 l
+2011_09_26/2011_09_26_drive_0091_sync 275 l
+2011_09_30/2011_09_30_drive_0028_sync 3023 r
+2011_09_26/2011_09_26_drive_0061_sync 418 r
+2011_09_26/2011_09_26_drive_0087_sync 356 r
+2011_09_30/2011_09_30_drive_0028_sync 3530 l
+2011_09_30/2011_09_30_drive_0020_sync 153 l
+2011_09_30/2011_09_30_drive_0033_sync 601 r
+2011_09_26/2011_09_26_drive_0095_sync 256 r
+2011_09_30/2011_09_30_drive_0028_sync 2437 l
+2011_09_30/2011_09_30_drive_0028_sync 4196 l
+2011_09_26/2011_09_26_drive_0039_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 975 r
+2011_09_30/2011_09_30_drive_0033_sync 353 r
+2011_09_29/2011_09_29_drive_0004_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 4459 r
+2011_09_30/2011_09_30_drive_0033_sync 1152 l
+2011_09_26/2011_09_26_drive_0014_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 253 r
+2011_09_30/2011_09_30_drive_0033_sync 411 l
+2011_09_26/2011_09_26_drive_0032_sync 272 r
+2011_09_30/2011_09_30_drive_0034_sync 1018 r
+2011_09_26/2011_09_26_drive_0018_sync 259 r
+2011_09_26/2011_09_26_drive_0005_sync 132 r
+2011_09_26/2011_09_26_drive_0022_sync 135 l
+2011_09_26/2011_09_26_drive_0028_sync 395 l
+2011_09_26/2011_09_26_drive_0035_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 4272 l
+2011_09_30/2011_09_30_drive_0034_sync 425 r
+2011_10_03/2011_10_03_drive_0034_sync 4625 l
+2011_09_30/2011_09_30_drive_0033_sync 1079 l
+2011_09_30/2011_09_30_drive_0020_sync 936 r
+2011_09_26/2011_09_26_drive_0095_sync 90 r
+2011_09_30/2011_09_30_drive_0034_sync 621 r
+2011_10_03/2011_10_03_drive_0034_sync 4367 l
+2011_09_30/2011_09_30_drive_0033_sync 1268 l
+2011_09_26/2011_09_26_drive_0018_sync 169 l
+2011_09_30/2011_09_30_drive_0028_sync 2183 l
+2011_09_30/2011_09_30_drive_0028_sync 1372 r
+2011_10_03/2011_10_03_drive_0042_sync 37 r
+2011_09_30/2011_09_30_drive_0028_sync 3920 r
+2011_10_03/2011_10_03_drive_0042_sync 1143 r
+2011_09_30/2011_09_30_drive_0020_sync 319 r
+2011_09_29/2011_09_29_drive_0004_sync 175 l
+2011_09_30/2011_09_30_drive_0028_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 1746 r
+2011_09_26/2011_09_26_drive_0087_sync 364 l
+2011_10_03/2011_10_03_drive_0042_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 3343 r
+2011_09_30/2011_09_30_drive_0028_sync 647 l
+2011_09_30/2011_09_30_drive_0028_sync 3075 l
+2011_09_30/2011_09_30_drive_0034_sync 995 r
+2011_10_03/2011_10_03_drive_0034_sync 3366 r
+2011_09_26/2011_09_26_drive_0061_sync 424 r
+2011_09_26/2011_09_26_drive_0061_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 2019 r
+2011_09_26/2011_09_26_drive_0028_sync 43 r
+2011_09_26/2011_09_26_drive_0018_sync 114 l
+2011_10_03/2011_10_03_drive_0034_sync 53 l
+2011_09_26/2011_09_26_drive_0091_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 1298 r
+2011_09_26/2011_09_26_drive_0061_sync 564 l
+2011_09_26/2011_09_26_drive_0051_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 3640 r
+2011_09_30/2011_09_30_drive_0033_sync 988 r
+2011_09_30/2011_09_30_drive_0028_sync 1810 r
+2011_09_30/2011_09_30_drive_0028_sync 5009 l
+2011_09_26/2011_09_26_drive_0022_sync 511 l
+2011_09_30/2011_09_30_drive_0028_sync 1502 r
+2011_10_03/2011_10_03_drive_0034_sync 2780 l
+2011_09_26/2011_09_26_drive_0039_sync 43 r
+2011_10_03/2011_10_03_drive_0042_sync 1042 r
+2011_09_30/2011_09_30_drive_0028_sync 1786 l
+2011_10_03/2011_10_03_drive_0034_sync 844 l
+2011_10_03/2011_10_03_drive_0034_sync 713 l
+2011_09_26/2011_09_26_drive_0022_sync 414 r
+2011_09_26/2011_09_26_drive_0035_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 3870 r
+2011_09_30/2011_09_30_drive_0028_sync 3973 l
+2011_09_30/2011_09_30_drive_0028_sync 1539 r
+2011_09_30/2011_09_30_drive_0028_sync 807 l
+2011_09_26/2011_09_26_drive_0070_sync 262 r
+2011_10_03/2011_10_03_drive_0042_sync 1096 l
+2011_09_30/2011_09_30_drive_0034_sync 870 r
+2011_09_26/2011_09_26_drive_0018_sync 180 l
+2011_09_30/2011_09_30_drive_0034_sync 492 r
+2011_09_30/2011_09_30_drive_0028_sync 1415 r
+2011_09_30/2011_09_30_drive_0028_sync 968 l
+2011_10_03/2011_10_03_drive_0034_sync 1164 r
+2011_09_26/2011_09_26_drive_0051_sync 81 r
+2011_09_26/2011_09_26_drive_0095_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 2165 l
+2011_10_03/2011_10_03_drive_0034_sync 268 l
+2011_09_30/2011_09_30_drive_0028_sync 3450 r
+2011_09_26/2011_09_26_drive_0087_sync 267 r
+2011_09_30/2011_09_30_drive_0028_sync 2080 l
+2011_10_03/2011_10_03_drive_0034_sync 2173 r
+2011_10_03/2011_10_03_drive_0034_sync 4125 l
+2011_10_03/2011_10_03_drive_0034_sync 2636 l
+2011_09_30/2011_09_30_drive_0034_sync 968 r
+2011_09_30/2011_09_30_drive_0028_sync 1890 r
+2011_10_03/2011_10_03_drive_0034_sync 722 r
+2011_09_30/2011_09_30_drive_0033_sync 372 r
+2011_09_26/2011_09_26_drive_0011_sync 202 r
+2011_09_26/2011_09_26_drive_0032_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 634 r
+2011_10_03/2011_10_03_drive_0034_sync 2280 r
+2011_10_03/2011_10_03_drive_0042_sync 797 r
+2011_09_26/2011_09_26_drive_0039_sync 212 r
+2011_10_03/2011_10_03_drive_0034_sync 3794 r
+2011_09_26/2011_09_26_drive_0011_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 3464 r
+2011_09_30/2011_09_30_drive_0020_sync 275 l
+2011_10_03/2011_10_03_drive_0042_sync 860 l
+2011_10_03/2011_10_03_drive_0034_sync 358 r
+2011_09_26/2011_09_26_drive_0087_sync 295 l
+2011_09_26/2011_09_26_drive_0091_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 531 l
+2011_09_30/2011_09_30_drive_0033_sync 1235 r
+2011_09_29/2011_09_29_drive_0004_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 4462 r
+2011_09_26/2011_09_26_drive_0032_sync 170 l
+2011_10_03/2011_10_03_drive_0034_sync 1025 r
+2011_09_26/2011_09_26_drive_0032_sync 143 l
+2011_09_30/2011_09_30_drive_0034_sync 936 l
+2011_09_26/2011_09_26_drive_0070_sync 101 l
+2011_09_26/2011_09_26_drive_0039_sync 305 r
+2011_09_30/2011_09_30_drive_0020_sync 353 r
+2011_09_29/2011_09_29_drive_0026_sync 117 l
+2011_09_26/2011_09_26_drive_0087_sync 658 l
+2011_10_03/2011_10_03_drive_0034_sync 128 l
+2011_09_26/2011_09_26_drive_0032_sync 11 r
+2011_09_28/2011_09_28_drive_0001_sync 36 l
+2011_09_30/2011_09_30_drive_0020_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 841 r
+2011_09_30/2011_09_30_drive_0033_sync 280 r
+2011_09_30/2011_09_30_drive_0028_sync 240 l
+2011_09_26/2011_09_26_drive_0057_sync 261 r
+2011_09_26/2011_09_26_drive_0070_sync 103 l
+2011_09_30/2011_09_30_drive_0033_sync 361 l
+2011_10_03/2011_10_03_drive_0034_sync 4278 l
+2011_09_26/2011_09_26_drive_0035_sync 14 l
+2011_09_26/2011_09_26_drive_0051_sync 367 r
+2011_09_30/2011_09_30_drive_0028_sync 3429 l
+2011_09_30/2011_09_30_drive_0028_sync 2579 r
+2011_10_03/2011_10_03_drive_0034_sync 537 l
+2011_09_26/2011_09_26_drive_0022_sync 478 r
+2011_10_03/2011_10_03_drive_0034_sync 3624 r
+2011_10_03/2011_10_03_drive_0034_sync 1157 l
+2011_09_26/2011_09_26_drive_0022_sync 689 r
+2011_09_26/2011_09_26_drive_0057_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 3527 r
+2011_09_30/2011_09_30_drive_0028_sync 2211 r
+2011_09_30/2011_09_30_drive_0020_sync 660 l
+2011_09_30/2011_09_30_drive_0033_sync 1386 l
+2011_10_03/2011_10_03_drive_0034_sync 2986 r
+2011_09_26/2011_09_26_drive_0070_sync 313 r
+2011_09_26/2011_09_26_drive_0091_sync 221 r
+2011_09_30/2011_09_30_drive_0034_sync 421 r
+2011_09_26/2011_09_26_drive_0087_sync 631 l
+2011_09_30/2011_09_30_drive_0033_sync 836 r
+2011_10_03/2011_10_03_drive_0034_sync 4115 r
+2011_09_29/2011_09_29_drive_0026_sync 148 l
+2011_10_03/2011_10_03_drive_0034_sync 4233 r
+2011_09_26/2011_09_26_drive_0070_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 2985 r
+2011_09_30/2011_09_30_drive_0020_sync 830 l
+2011_09_30/2011_09_30_drive_0028_sync 3420 r
+2011_09_30/2011_09_30_drive_0028_sync 2299 l
+2011_09_30/2011_09_30_drive_0033_sync 856 l
+2011_09_26/2011_09_26_drive_0028_sync 172 l
+2011_10_03/2011_10_03_drive_0034_sync 2617 r
+2011_09_26/2011_09_26_drive_0087_sync 467 r
+2011_09_30/2011_09_30_drive_0028_sync 4188 r
+2011_10_03/2011_10_03_drive_0042_sync 681 l
+2011_09_30/2011_09_30_drive_0034_sync 963 r
+2011_10_03/2011_10_03_drive_0034_sync 2582 r
+2011_09_26/2011_09_26_drive_0028_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 4721 r
+2011_09_30/2011_09_30_drive_0033_sync 1484 r
+2011_09_26/2011_09_26_drive_0087_sync 136 l
+2011_09_26/2011_09_26_drive_0070_sync 230 l
+2011_09_26/2011_09_26_drive_0019_sync 62 l
+2011_09_26/2011_09_26_drive_0022_sync 705 r
+2011_09_30/2011_09_30_drive_0034_sync 313 l
+2011_10_03/2011_10_03_drive_0042_sync 517 l
+2011_09_30/2011_09_30_drive_0033_sync 1520 r
+2011_10_03/2011_10_03_drive_0034_sync 789 r
+2011_09_30/2011_09_30_drive_0028_sync 2122 l
+2011_09_26/2011_09_26_drive_0018_sync 104 r
+2011_09_26/2011_09_26_drive_0060_sync 12 l
+2011_09_29/2011_09_29_drive_0004_sync 26 l
+2011_10_03/2011_10_03_drive_0034_sync 3118 r
+2011_09_26/2011_09_26_drive_0091_sync 304 l
+2011_10_03/2011_10_03_drive_0034_sync 1277 r
+2011_09_26/2011_09_26_drive_0014_sync 61 r
+2011_09_26/2011_09_26_drive_0039_sync 218 l
+2011_09_30/2011_09_30_drive_0033_sync 373 l
+2011_09_30/2011_09_30_drive_0033_sync 1439 r
+2011_09_30/2011_09_30_drive_0033_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 4533 l
+2011_09_30/2011_09_30_drive_0034_sync 224 r
+2011_10_03/2011_10_03_drive_0034_sync 2725 l
+2011_10_03/2011_10_03_drive_0034_sync 4144 r
+2011_09_30/2011_09_30_drive_0028_sync 464 l
+2011_09_26/2011_09_26_drive_0057_sync 11 l
+2011_09_28/2011_09_28_drive_0001_sync 29 r
+2011_09_30/2011_09_30_drive_0028_sync 2554 l
+2011_10_03/2011_10_03_drive_0034_sync 2857 r
+2011_09_30/2011_09_30_drive_0028_sync 4697 l
+2011_09_30/2011_09_30_drive_0028_sync 913 l
+2011_09_30/2011_09_30_drive_0028_sync 136 r
+2011_09_26/2011_09_26_drive_0087_sync 580 l
+2011_09_30/2011_09_30_drive_0028_sync 1487 r
+2011_10_03/2011_10_03_drive_0034_sync 2546 l
+2011_09_26/2011_09_26_drive_0087_sync 278 r
+2011_09_30/2011_09_30_drive_0034_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 3198 l
+2011_09_26/2011_09_26_drive_0051_sync 29 r
+2011_09_26/2011_09_26_drive_0022_sync 300 r
+2011_09_30/2011_09_30_drive_0034_sync 556 r
+2011_09_30/2011_09_30_drive_0020_sync 348 l
+2011_09_26/2011_09_26_drive_0039_sync 289 r
+2011_09_28/2011_09_28_drive_0001_sync 42 l
+2011_09_30/2011_09_30_drive_0034_sync 1029 l
+2011_09_26/2011_09_26_drive_0070_sync 255 r
+2011_10_03/2011_10_03_drive_0034_sync 232 r
+2011_09_26/2011_09_26_drive_0070_sync 151 l
+2011_09_26/2011_09_26_drive_0019_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 1996 l
+2011_09_30/2011_09_30_drive_0020_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 1276 r
+2011_10_03/2011_10_03_drive_0042_sync 24 r
+2011_09_26/2011_09_26_drive_0001_sync 59 l
+2011_09_30/2011_09_30_drive_0028_sync 1478 l
+2011_10_03/2011_10_03_drive_0034_sync 214 l
+2011_10_03/2011_10_03_drive_0034_sync 770 r
+2011_10_03/2011_10_03_drive_0034_sync 1861 l
+2011_10_03/2011_10_03_drive_0034_sync 1439 r
+2011_10_03/2011_10_03_drive_0034_sync 3781 l
+2011_09_26/2011_09_26_drive_0070_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 1483 r
+2011_09_30/2011_09_30_drive_0028_sync 4904 r
+2011_09_30/2011_09_30_drive_0028_sync 4043 l
+2011_09_30/2011_09_30_drive_0028_sync 1449 l
+2011_09_30/2011_09_30_drive_0028_sync 4870 l
+2011_09_30/2011_09_30_drive_0028_sync 695 l
+2011_09_30/2011_09_30_drive_0034_sync 462 l
+2011_09_30/2011_09_30_drive_0034_sync 489 r
+2011_09_30/2011_09_30_drive_0028_sync 4661 r
+2011_09_30/2011_09_30_drive_0034_sync 283 l
+2011_09_30/2011_09_30_drive_0033_sync 126 r
+2011_09_26/2011_09_26_drive_0022_sync 674 r
+2011_10_03/2011_10_03_drive_0042_sync 348 r
+2011_09_30/2011_09_30_drive_0028_sync 2117 l
+2011_09_26/2011_09_26_drive_0019_sync 330 l
+2011_09_30/2011_09_30_drive_0033_sync 903 r
+2011_09_30/2011_09_30_drive_0028_sync 4204 r
+2011_09_26/2011_09_26_drive_0087_sync 425 l
+2011_09_30/2011_09_30_drive_0020_sync 961 l
+2011_10_03/2011_10_03_drive_0034_sync 700 r
+2011_10_03/2011_10_03_drive_0034_sync 1272 r
+2011_09_30/2011_09_30_drive_0034_sync 359 l
+2011_09_30/2011_09_30_drive_0034_sync 427 r
+2011_10_03/2011_10_03_drive_0034_sync 3266 l
+2011_09_30/2011_09_30_drive_0033_sync 1243 r
+2011_10_03/2011_10_03_drive_0034_sync 2790 l
+2011_09_26/2011_09_26_drive_0087_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 2214 r
+2011_09_30/2011_09_30_drive_0034_sync 608 r
+2011_09_30/2011_09_30_drive_0034_sync 1056 l
+2011_09_30/2011_09_30_drive_0028_sync 3344 l
+2011_09_30/2011_09_30_drive_0028_sync 4037 l
+2011_09_26/2011_09_26_drive_0061_sync 32 r
+2011_09_30/2011_09_30_drive_0033_sync 1283 r
+2011_10_03/2011_10_03_drive_0042_sync 752 l
+2011_09_30/2011_09_30_drive_0020_sync 720 r
+2011_09_30/2011_09_30_drive_0028_sync 2466 r
+2011_10_03/2011_10_03_drive_0034_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 1000 l
+2011_09_30/2011_09_30_drive_0028_sync 791 r
+2011_09_30/2011_09_30_drive_0020_sync 491 r
+2011_10_03/2011_10_03_drive_0034_sync 4582 r
+2011_09_30/2011_09_30_drive_0028_sync 2705 r
+2011_09_30/2011_09_30_drive_0020_sync 613 l
+2011_09_26/2011_09_26_drive_0039_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 857 l
+2011_09_26/2011_09_26_drive_0104_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 2062 l
+2011_09_30/2011_09_30_drive_0034_sync 0 l
+2011_09_26/2011_09_26_drive_0032_sync 389 r
+2011_09_30/2011_09_30_drive_0034_sync 994 r
+2011_10_03/2011_10_03_drive_0034_sync 1140 l
+2011_09_30/2011_09_30_drive_0034_sync 518 r
+2011_09_26/2011_09_26_drive_0022_sync 366 l
+2011_09_26/2011_09_26_drive_0087_sync 470 r
+2011_09_29/2011_09_29_drive_0004_sync 212 r
+2011_09_26/2011_09_26_drive_0057_sync 41 r
+2011_09_26/2011_09_26_drive_0070_sync 347 r
+2011_09_30/2011_09_30_drive_0034_sync 32 r
+2011_09_29/2011_09_29_drive_0004_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 249 l
+2011_09_30/2011_09_30_drive_0034_sync 147 r
+2011_09_30/2011_09_30_drive_0020_sync 719 l
+2011_10_03/2011_10_03_drive_0034_sync 1479 r
+2011_09_26/2011_09_26_drive_0014_sync 93 l
+2011_09_26/2011_09_26_drive_0015_sync 130 r
+2011_09_30/2011_09_30_drive_0033_sync 1565 r
+2011_10_03/2011_10_03_drive_0042_sync 1080 r
+2011_09_30/2011_09_30_drive_0028_sync 4167 l
+2011_09_30/2011_09_30_drive_0028_sync 745 r
+2011_09_30/2011_09_30_drive_0033_sync 1066 r
+2011_10_03/2011_10_03_drive_0034_sync 80 l
+2011_09_28/2011_09_28_drive_0001_sync 88 l
+2011_10_03/2011_10_03_drive_0034_sync 3256 l
+2011_10_03/2011_10_03_drive_0042_sync 308 r
+2011_09_26/2011_09_26_drive_0070_sync 74 r
+2011_09_30/2011_09_30_drive_0033_sync 844 l
+2011_09_30/2011_09_30_drive_0028_sync 4887 r
+2011_09_26/2011_09_26_drive_0104_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 4240 l
+2011_10_03/2011_10_03_drive_0034_sync 2555 r
+2011_09_30/2011_09_30_drive_0020_sync 733 r
+2011_09_29/2011_09_29_drive_0004_sync 62 r
+2011_10_03/2011_10_03_drive_0042_sync 225 r
+2011_09_26/2011_09_26_drive_0028_sync 328 l
+2011_09_30/2011_09_30_drive_0028_sync 1187 r
+2011_09_26/2011_09_26_drive_0018_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 2923 r
+2011_09_26/2011_09_26_drive_0035_sync 45 r
+2011_10_03/2011_10_03_drive_0042_sync 542 l
+2011_09_26/2011_09_26_drive_0104_sync 89 r
+2011_09_26/2011_09_26_drive_0032_sync 191 l
+2011_09_26/2011_09_26_drive_0091_sync 200 l
+2011_10_03/2011_10_03_drive_0034_sync 3949 r
+2011_09_26/2011_09_26_drive_0087_sync 478 l
+2011_09_26/2011_09_26_drive_0022_sync 499 r
+2011_10_03/2011_10_03_drive_0034_sync 2884 l
+2011_09_30/2011_09_30_drive_0033_sync 1539 r
+2011_09_29/2011_09_29_drive_0026_sync 93 r
+2011_09_26/2011_09_26_drive_0028_sync 355 r
+2011_09_30/2011_09_30_drive_0033_sync 626 r
+2011_09_26/2011_09_26_drive_0039_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 3230 l
+2011_09_26/2011_09_26_drive_0028_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 3630 r
+2011_09_26/2011_09_26_drive_0104_sync 131 r
+2011_09_30/2011_09_30_drive_0033_sync 892 r
+2011_09_26/2011_09_26_drive_0019_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 2425 r
+2011_09_26/2011_09_26_drive_0018_sync 99 r
+2011_10_03/2011_10_03_drive_0042_sync 871 r
+2011_10_03/2011_10_03_drive_0042_sync 655 l
+2011_09_30/2011_09_30_drive_0028_sync 89 r
+2011_09_30/2011_09_30_drive_0034_sync 826 l
+2011_09_26/2011_09_26_drive_0095_sync 75 l
+2011_09_29/2011_09_29_drive_0026_sync 25 r
+2011_09_26/2011_09_26_drive_0087_sync 219 l
+2011_09_30/2011_09_30_drive_0020_sync 338 r
+2011_09_30/2011_09_30_drive_0028_sync 1411 l
+2011_09_26/2011_09_26_drive_0095_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 606 l
+2011_09_26/2011_09_26_drive_0079_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 3279 l
+2011_10_03/2011_10_03_drive_0042_sync 839 l
+2011_10_03/2011_10_03_drive_0034_sync 4168 l
+2011_09_30/2011_09_30_drive_0034_sync 981 l
+2011_09_30/2011_09_30_drive_0033_sync 1333 r
+2011_09_26/2011_09_26_drive_0019_sync 292 r
+2011_10_03/2011_10_03_drive_0034_sync 2624 l
+2011_10_03/2011_10_03_drive_0034_sync 68 r
+2011_09_26/2011_09_26_drive_0015_sync 29 l
+2011_09_26/2011_09_26_drive_0028_sync 345 l
+2011_09_30/2011_09_30_drive_0028_sync 510 r
+2011_10_03/2011_10_03_drive_0042_sync 214 l
+2011_10_03/2011_10_03_drive_0034_sync 660 r
+2011_09_30/2011_09_30_drive_0028_sync 567 l
+2011_10_03/2011_10_03_drive_0034_sync 516 r
+2011_10_03/2011_10_03_drive_0034_sync 1227 l
+2011_10_03/2011_10_03_drive_0042_sync 1128 r
+2011_09_30/2011_09_30_drive_0033_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 3661 l
+2011_10_03/2011_10_03_drive_0042_sync 1101 r
+2011_10_03/2011_10_03_drive_0034_sync 72 l
+2011_09_26/2011_09_26_drive_0035_sync 44 r
+2011_09_30/2011_09_30_drive_0034_sync 272 r
+2011_09_26/2011_09_26_drive_0028_sync 180 l
+2011_09_30/2011_09_30_drive_0034_sync 1211 l
+2011_09_26/2011_09_26_drive_0051_sync 285 l
+2011_09_30/2011_09_30_drive_0028_sync 4701 l
+2011_09_26/2011_09_26_drive_0039_sync 163 r
+2011_09_26/2011_09_26_drive_0051_sync 94 l
+2011_09_26/2011_09_26_drive_0087_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 3339 l
+2011_09_30/2011_09_30_drive_0028_sync 1711 r
+2011_09_30/2011_09_30_drive_0033_sync 174 l
+2011_09_26/2011_09_26_drive_0061_sync 227 r
+2011_09_26/2011_09_26_drive_0019_sync 323 r
+2011_09_26/2011_09_26_drive_0017_sync 92 r
+2011_09_30/2011_09_30_drive_0020_sync 1046 l
+2011_09_30/2011_09_30_drive_0034_sync 1054 r
+2011_09_26/2011_09_26_drive_0022_sync 671 r
+2011_09_30/2011_09_30_drive_0033_sync 1063 r
+2011_10_03/2011_10_03_drive_0034_sync 4269 l
+2011_09_30/2011_09_30_drive_0028_sync 3666 r
+2011_10_03/2011_10_03_drive_0042_sync 633 r
+2011_10_03/2011_10_03_drive_0034_sync 589 l
+2011_09_30/2011_09_30_drive_0028_sync 2458 l
+2011_09_26/2011_09_26_drive_0113_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 4030 l
+2011_09_30/2011_09_30_drive_0034_sync 144 l
+2011_09_26/2011_09_26_drive_0113_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 2125 l
+2011_09_30/2011_09_30_drive_0028_sync 1308 l
+2011_09_26/2011_09_26_drive_0079_sync 92 r
+2011_09_26/2011_09_26_drive_0113_sync 0 l
+2011_09_26/2011_09_26_drive_0005_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 4336 r
+2011_10_03/2011_10_03_drive_0034_sync 1206 l
+2011_09_30/2011_09_30_drive_0028_sync 3883 r
+2011_09_30/2011_09_30_drive_0028_sync 2346 r
+2011_10_03/2011_10_03_drive_0034_sync 3078 l
+2011_09_26/2011_09_26_drive_0087_sync 612 r
+2011_09_30/2011_09_30_drive_0028_sync 3134 r
+2011_09_26/2011_09_26_drive_0087_sync 237 l
+2011_09_26/2011_09_26_drive_0028_sync 179 r
+2011_09_26/2011_09_26_drive_0022_sync 558 l
+2011_09_30/2011_09_30_drive_0034_sync 182 l
+2011_10_03/2011_10_03_drive_0034_sync 3678 l
+2011_09_26/2011_09_26_drive_0022_sync 19 r
+2011_09_30/2011_09_30_drive_0020_sync 1068 l
+2011_09_30/2011_09_30_drive_0028_sync 5126 l
+2011_09_30/2011_09_30_drive_0028_sync 1870 r
+2011_09_26/2011_09_26_drive_0022_sync 269 l
+2011_09_30/2011_09_30_drive_0028_sync 3605 r
+2011_09_26/2011_09_26_drive_0019_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 2489 r
+2011_10_03/2011_10_03_drive_0042_sync 137 l
+2011_09_26/2011_09_26_drive_0051_sync 183 r
+2011_10_03/2011_10_03_drive_0042_sync 968 r
+2011_09_30/2011_09_30_drive_0033_sync 626 l
+2011_09_26/2011_09_26_drive_0039_sync 28 l
+2011_09_30/2011_09_30_drive_0033_sync 532 r
+2011_09_26/2011_09_26_drive_0087_sync 353 l
+2011_09_30/2011_09_30_drive_0028_sync 4517 r
+2011_09_30/2011_09_30_drive_0034_sync 952 l
+2011_09_26/2011_09_26_drive_0087_sync 59 l
+2011_09_26/2011_09_26_drive_0060_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 4601 l
+2011_09_26/2011_09_26_drive_0104_sync 297 l
+2011_09_30/2011_09_30_drive_0028_sync 1414 r
+2011_09_30/2011_09_30_drive_0033_sync 567 r
+2011_09_30/2011_09_30_drive_0033_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 2226 l
+2011_09_30/2011_09_30_drive_0034_sync 347 l
+2011_09_26/2011_09_26_drive_0011_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 3582 r
+2011_09_26/2011_09_26_drive_0015_sync 225 r
+2011_09_26/2011_09_26_drive_0022_sync 215 r
+2011_09_26/2011_09_26_drive_0104_sync 16 r
+2011_09_30/2011_09_30_drive_0033_sync 1476 r
+2011_09_26/2011_09_26_drive_0051_sync 158 l
+2011_10_03/2011_10_03_drive_0042_sync 1149 l
+2011_10_03/2011_10_03_drive_0034_sync 1075 l
+2011_09_26/2011_09_26_drive_0019_sync 409 l
+2011_09_30/2011_09_30_drive_0034_sync 1139 l
+2011_09_26/2011_09_26_drive_0032_sync 227 r
+2011_09_30/2011_09_30_drive_0028_sync 3902 l
+2011_09_30/2011_09_30_drive_0020_sync 582 r
+2011_09_26/2011_09_26_drive_0001_sync 16 l
+2011_09_26/2011_09_26_drive_0057_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 2700 l
+2011_09_26/2011_09_26_drive_0011_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 3312 r
+2011_09_30/2011_09_30_drive_0034_sync 934 l
+2011_09_30/2011_09_30_drive_0033_sync 321 l
+2011_09_30/2011_09_30_drive_0028_sync 3783 l
+2011_09_30/2011_09_30_drive_0028_sync 3424 r
+2011_10_03/2011_10_03_drive_0034_sync 2124 r
+2011_09_30/2011_09_30_drive_0028_sync 1745 r
+2011_09_29/2011_09_29_drive_0004_sync 15 r
+2011_09_30/2011_09_30_drive_0034_sync 594 r
+2011_09_30/2011_09_30_drive_0028_sync 1594 l
+2011_09_30/2011_09_30_drive_0028_sync 1969 r
+2011_09_26/2011_09_26_drive_0019_sync 275 l
+2011_09_30/2011_09_30_drive_0033_sync 1198 l
+2011_09_30/2011_09_30_drive_0034_sync 1171 r
+2011_09_30/2011_09_30_drive_0034_sync 805 r
+2011_09_30/2011_09_30_drive_0028_sync 2912 l
+2011_09_30/2011_09_30_drive_0033_sync 213 l
+2011_09_30/2011_09_30_drive_0028_sync 4184 l
+2011_09_26/2011_09_26_drive_0022_sync 593 l
+2011_09_26/2011_09_26_drive_0061_sync 419 r
+2011_10_03/2011_10_03_drive_0034_sync 1598 r
+2011_09_30/2011_09_30_drive_0033_sync 968 l
+2011_09_30/2011_09_30_drive_0034_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 243 r
+2011_09_30/2011_09_30_drive_0028_sync 4506 l
+2011_10_03/2011_10_03_drive_0034_sync 3883 r
+2011_09_30/2011_09_30_drive_0028_sync 4794 r
+2011_09_30/2011_09_30_drive_0028_sync 840 l
+2011_09_30/2011_09_30_drive_0028_sync 3022 r
+2011_09_30/2011_09_30_drive_0020_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 3384 r
+2011_09_26/2011_09_26_drive_0028_sync 205 l
+2011_09_30/2011_09_30_drive_0034_sync 765 r
+2011_09_30/2011_09_30_drive_0033_sync 1088 r
+2011_09_30/2011_09_30_drive_0020_sync 186 l
+2011_09_30/2011_09_30_drive_0020_sync 1039 l
+2011_09_30/2011_09_30_drive_0033_sync 283 r
+2011_09_26/2011_09_26_drive_0095_sync 158 r
+2011_09_30/2011_09_30_drive_0033_sync 1165 l
+2011_09_26/2011_09_26_drive_0017_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 527 r
+2011_10_03/2011_10_03_drive_0034_sync 1813 r
+2011_09_30/2011_09_30_drive_0034_sync 950 r
+2011_09_26/2011_09_26_drive_0015_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 2908 l
+2011_10_03/2011_10_03_drive_0034_sync 3612 r
+2011_09_26/2011_09_26_drive_0015_sync 101 r
+2011_10_03/2011_10_03_drive_0034_sync 1071 r
+2011_10_03/2011_10_03_drive_0034_sync 1336 l
+2011_09_30/2011_09_30_drive_0028_sync 1615 l
+2011_09_30/2011_09_30_drive_0028_sync 649 r
+2011_09_26/2011_09_26_drive_0070_sync 271 r
+2011_09_30/2011_09_30_drive_0033_sync 320 l
+2011_10_03/2011_10_03_drive_0034_sync 3478 l
+2011_09_30/2011_09_30_drive_0028_sync 4321 l
+2011_09_29/2011_09_29_drive_0004_sync 38 r
+2011_09_26/2011_09_26_drive_0091_sync 72 r
+2011_09_26/2011_09_26_drive_0057_sync 193 r
+2011_09_26/2011_09_26_drive_0014_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 4576 l
+2011_09_26/2011_09_26_drive_0039_sync 123 r
+2011_09_30/2011_09_30_drive_0034_sync 730 l
+2011_09_26/2011_09_26_drive_0087_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 3531 r
+2011_09_30/2011_09_30_drive_0028_sync 2301 l
+2011_09_30/2011_09_30_drive_0028_sync 4640 l
+2011_09_30/2011_09_30_drive_0028_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 2870 r
+2011_10_03/2011_10_03_drive_0034_sync 1963 r
+2011_09_26/2011_09_26_drive_0022_sync 263 l
+2011_09_26/2011_09_26_drive_0028_sync 241 l
+2011_10_03/2011_10_03_drive_0034_sync 569 r
+2011_09_26/2011_09_26_drive_0032_sync 244 r
+2011_09_30/2011_09_30_drive_0028_sync 3326 l
+2011_09_30/2011_09_30_drive_0028_sync 4364 l
+2011_09_30/2011_09_30_drive_0020_sync 721 l
+2011_09_26/2011_09_26_drive_0039_sync 308 r
+2011_09_30/2011_09_30_drive_0020_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 4935 l
+2011_09_30/2011_09_30_drive_0034_sync 684 l
+2011_09_26/2011_09_26_drive_0061_sync 161 r
+2011_09_29/2011_09_29_drive_0026_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 1972 r
+2011_09_26/2011_09_26_drive_0015_sync 104 l
+2011_09_30/2011_09_30_drive_0028_sync 4848 r
+2011_09_26/2011_09_26_drive_0051_sync 0 l
+2011_09_26/2011_09_26_drive_0057_sync 156 l
+2011_09_26/2011_09_26_drive_0070_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 3059 l
+2011_09_29/2011_09_29_drive_0004_sync 282 l
+2011_09_30/2011_09_30_drive_0028_sync 1299 l
+2011_09_30/2011_09_30_drive_0033_sync 1272 r
+2011_09_26/2011_09_26_drive_0087_sync 505 l
+2011_09_26/2011_09_26_drive_0113_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 1549 r
+2011_09_30/2011_09_30_drive_0028_sync 2594 r
+2011_09_26/2011_09_26_drive_0051_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 3290 r
+2011_09_26/2011_09_26_drive_0011_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 3329 l
+2011_09_30/2011_09_30_drive_0034_sync 1218 r
+2011_09_26/2011_09_26_drive_0022_sync 235 l
+2011_09_26/2011_09_26_drive_0057_sync 19 l
+2011_09_29/2011_09_29_drive_0026_sync 32 r
+2011_09_30/2011_09_30_drive_0028_sync 1125 r
+2011_09_30/2011_09_30_drive_0028_sync 1195 r
+2011_10_03/2011_10_03_drive_0042_sync 861 r
+2011_09_26/2011_09_26_drive_0087_sync 492 l
+2011_10_03/2011_10_03_drive_0034_sync 1361 r
+2011_10_03/2011_10_03_drive_0034_sync 2939 l
+2011_09_26/2011_09_26_drive_0039_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 4987 l
+2011_09_26/2011_09_26_drive_0057_sync 156 r
+2011_09_30/2011_09_30_drive_0034_sync 902 l
+2011_09_26/2011_09_26_drive_0061_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 2670 l
+2011_09_30/2011_09_30_drive_0028_sync 2334 r
+2011_09_30/2011_09_30_drive_0020_sync 510 r
+2011_10_03/2011_10_03_drive_0034_sync 4184 r
+2011_09_26/2011_09_26_drive_0057_sync 320 l
+2011_09_30/2011_09_30_drive_0028_sync 2157 l
+2011_09_30/2011_09_30_drive_0033_sync 790 r
+2011_09_26/2011_09_26_drive_0091_sync 197 r
+2011_09_30/2011_09_30_drive_0028_sync 579 r
+2011_09_26/2011_09_26_drive_0019_sync 261 l
+2011_09_26/2011_09_26_drive_0057_sync 225 l
+2011_09_26/2011_09_26_drive_0039_sync 282 r
+2011_10_03/2011_10_03_drive_0034_sync 3500 l
+2011_09_30/2011_09_30_drive_0028_sync 3869 l
+2011_10_03/2011_10_03_drive_0034_sync 3247 l
+2011_09_30/2011_09_30_drive_0028_sync 958 l
+2011_09_30/2011_09_30_drive_0033_sync 260 l
+2011_09_30/2011_09_30_drive_0020_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 2010 r
+2011_10_03/2011_10_03_drive_0042_sync 527 r
+2011_09_26/2011_09_26_drive_0113_sync 51 l
+2011_09_26/2011_09_26_drive_0015_sync 13 l
+2011_09_30/2011_09_30_drive_0020_sync 280 l
+2011_09_26/2011_09_26_drive_0018_sync 226 l
+2011_09_26/2011_09_26_drive_0087_sync 528 l
+2011_09_26/2011_09_26_drive_0051_sync 80 l
+2011_09_26/2011_09_26_drive_0032_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 4523 l
+2011_09_30/2011_09_30_drive_0028_sync 4982 r
+2011_10_03/2011_10_03_drive_0042_sync 342 r
+2011_09_26/2011_09_26_drive_0005_sync 18 r
+2011_09_26/2011_09_26_drive_0087_sync 500 l
+2011_09_30/2011_09_30_drive_0034_sync 228 r
+2011_09_29/2011_09_29_drive_0026_sync 51 l
+2011_09_26/2011_09_26_drive_0005_sync 3 r
+2011_09_26/2011_09_26_drive_0015_sync 218 l
+2011_09_30/2011_09_30_drive_0033_sync 1388 r
+2011_09_26/2011_09_26_drive_0095_sync 213 l
+2011_09_26/2011_09_26_drive_0005_sync 23 l
+2011_09_30/2011_09_30_drive_0033_sync 941 l
+2011_09_26/2011_09_26_drive_0091_sync 164 l
+2011_09_26/2011_09_26_drive_0079_sync 26 l
+2011_09_26/2011_09_26_drive_0091_sync 254 r
+2011_09_26/2011_09_26_drive_0091_sync 44 r
+2011_09_26/2011_09_26_drive_0091_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 1250 r
+2011_09_26/2011_09_26_drive_0039_sync 391 r
+2011_09_26/2011_09_26_drive_0051_sync 106 r
+2011_09_26/2011_09_26_drive_0015_sync 155 r
+2011_09_30/2011_09_30_drive_0033_sync 1082 l
+2011_09_26/2011_09_26_drive_0011_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 3792 l
+2011_09_30/2011_09_30_drive_0020_sync 755 r
+2011_09_30/2011_09_30_drive_0033_sync 1549 l
+2011_09_30/2011_09_30_drive_0033_sync 1576 r
+2011_10_03/2011_10_03_drive_0042_sync 722 r
+2011_09_30/2011_09_30_drive_0028_sync 3984 r
+2011_10_03/2011_10_03_drive_0034_sync 935 r
+2011_09_26/2011_09_26_drive_0091_sync 218 l
+2011_09_26/2011_09_26_drive_0104_sync 42 r
+2011_09_26/2011_09_26_drive_0087_sync 169 l
+2011_10_03/2011_10_03_drive_0042_sync 878 r
+2011_09_30/2011_09_30_drive_0028_sync 2452 l
+2011_09_30/2011_09_30_drive_0028_sync 1259 l
+2011_10_03/2011_10_03_drive_0034_sync 4540 r
+2011_09_26/2011_09_26_drive_0070_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 2931 r
+2011_09_26/2011_09_26_drive_0022_sync 142 r
+2011_09_26/2011_09_26_drive_0015_sync 267 l
+2011_09_30/2011_09_30_drive_0033_sync 442 r
+2011_10_03/2011_10_03_drive_0034_sync 3871 l
+2011_09_26/2011_09_26_drive_0005_sync 144 r
+2011_09_30/2011_09_30_drive_0028_sync 2414 l
+2011_09_26/2011_09_26_drive_0070_sync 379 r
+2011_09_30/2011_09_30_drive_0034_sync 815 r
+2011_09_26/2011_09_26_drive_0014_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 3670 r
+2011_09_30/2011_09_30_drive_0028_sync 1517 l
+2011_09_26/2011_09_26_drive_0019_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 1462 r
+2011_09_26/2011_09_26_drive_0087_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 753 l
+2011_09_30/2011_09_30_drive_0028_sync 1798 l
+2011_09_30/2011_09_30_drive_0020_sync 379 l
+2011_09_26/2011_09_26_drive_0005_sync 81 l
+2011_09_26/2011_09_26_drive_0018_sync 149 l
+2011_09_30/2011_09_30_drive_0034_sync 927 r
+2011_09_30/2011_09_30_drive_0020_sync 229 r
+2011_09_30/2011_09_30_drive_0033_sync 713 l
+2011_09_30/2011_09_30_drive_0033_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 1468 r
+2011_09_30/2011_09_30_drive_0028_sync 2122 r
+2011_10_03/2011_10_03_drive_0034_sync 2291 r
+2011_09_30/2011_09_30_drive_0028_sync 4088 r
+2011_09_26/2011_09_26_drive_0087_sync 688 r
+2011_09_26/2011_09_26_drive_0015_sync 196 r
+2011_09_26/2011_09_26_drive_0087_sync 590 l
+2011_09_26/2011_09_26_drive_0028_sync 384 r
+2011_09_26/2011_09_26_drive_0057_sync 359 l
+2011_09_26/2011_09_26_drive_0051_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 3235 l
+2011_10_03/2011_10_03_drive_0042_sync 1080 l
+2011_09_30/2011_09_30_drive_0028_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 4866 l
+2011_09_30/2011_09_30_drive_0033_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 2515 r
+2011_09_30/2011_09_30_drive_0020_sync 149 r
+2011_09_26/2011_09_26_drive_0057_sync 332 l
+2011_09_30/2011_09_30_drive_0028_sync 833 l
+2011_09_30/2011_09_30_drive_0034_sync 1190 l
+2011_09_26/2011_09_26_drive_0091_sync 69 r
+2011_10_03/2011_10_03_drive_0034_sync 985 l
+2011_09_26/2011_09_26_drive_0022_sync 534 l
+2011_09_30/2011_09_30_drive_0033_sync 202 r
+2011_09_30/2011_09_30_drive_0033_sync 79 r
+2011_09_26/2011_09_26_drive_0022_sync 429 l
+2011_10_03/2011_10_03_drive_0034_sync 668 r
+2011_09_30/2011_09_30_drive_0028_sync 3032 r
+2011_09_26/2011_09_26_drive_0022_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 3273 r
+2011_09_26/2011_09_26_drive_0019_sync 74 r
+2011_10_03/2011_10_03_drive_0034_sync 4134 r
+2011_09_30/2011_09_30_drive_0034_sync 414 r
+2011_09_26/2011_09_26_drive_0061_sync 164 l
+2011_09_26/2011_09_26_drive_0061_sync 276 l
+2011_09_30/2011_09_30_drive_0020_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 368 r
+2011_09_26/2011_09_26_drive_0032_sync 358 r
+2011_09_30/2011_09_30_drive_0028_sync 4724 l
+2011_09_30/2011_09_30_drive_0034_sync 443 r
+2011_09_26/2011_09_26_drive_0051_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 2440 l
+2011_10_03/2011_10_03_drive_0034_sync 1301 r
+2011_09_26/2011_09_26_drive_0104_sync 149 l
+2011_09_26/2011_09_26_drive_0019_sync 445 l
+2011_09_26/2011_09_26_drive_0018_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 3842 l
+2011_09_30/2011_09_30_drive_0020_sync 689 l
+2011_09_30/2011_09_30_drive_0028_sync 1871 l
+2011_10_03/2011_10_03_drive_0042_sync 1007 l
+2011_09_26/2011_09_26_drive_0039_sync 356 r
+2011_09_30/2011_09_30_drive_0028_sync 1164 l
+2011_10_03/2011_10_03_drive_0034_sync 1762 r
+2011_10_03/2011_10_03_drive_0034_sync 894 l
+2011_10_03/2011_10_03_drive_0042_sync 803 l
+2011_09_26/2011_09_26_drive_0022_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2944 r
+2011_09_30/2011_09_30_drive_0028_sync 2647 l
+2011_10_03/2011_10_03_drive_0034_sync 4122 l
+2011_10_03/2011_10_03_drive_0034_sync 1083 l
+2011_09_30/2011_09_30_drive_0020_sync 625 r
+2011_09_26/2011_09_26_drive_0019_sync 195 l
+2011_09_30/2011_09_30_drive_0033_sync 1488 l
+2011_09_30/2011_09_30_drive_0034_sync 756 r
+2011_10_03/2011_10_03_drive_0034_sync 2924 l
+2011_09_26/2011_09_26_drive_0070_sync 99 r
+2011_10_03/2011_10_03_drive_0042_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 1749 l
+2011_10_03/2011_10_03_drive_0034_sync 2688 l
+2011_09_26/2011_09_26_drive_0035_sync 14 r
+2011_09_26/2011_09_26_drive_0014_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 3715 l
+2011_10_03/2011_10_03_drive_0034_sync 519 l
+2011_09_26/2011_09_26_drive_0032_sync 262 r
+2011_09_30/2011_09_30_drive_0033_sync 1328 l
+2011_09_26/2011_09_26_drive_0087_sync 511 l
+2011_10_03/2011_10_03_drive_0034_sync 3324 r
+2011_09_26/2011_09_26_drive_0014_sync 254 r
+2011_09_30/2011_09_30_drive_0028_sync 3692 r
+2011_09_30/2011_09_30_drive_0028_sync 431 l
+2011_10_03/2011_10_03_drive_0042_sync 442 r
+2011_10_03/2011_10_03_drive_0034_sync 4016 l
+2011_09_30/2011_09_30_drive_0033_sync 546 r
+2011_09_26/2011_09_26_drive_0104_sync 85 r
+2011_09_26/2011_09_26_drive_0022_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 3502 r
+2011_09_29/2011_09_29_drive_0004_sync 79 l
+2011_09_26/2011_09_26_drive_0095_sync 112 l
+2011_09_26/2011_09_26_drive_0061_sync 577 r
+2011_09_26/2011_09_26_drive_0011_sync 92 r
+2011_09_30/2011_09_30_drive_0034_sync 603 l
+2011_09_26/2011_09_26_drive_0028_sync 283 r
+2011_09_30/2011_09_30_drive_0020_sync 117 l
+2011_09_30/2011_09_30_drive_0034_sync 406 r
+2011_09_30/2011_09_30_drive_0028_sync 1306 r
+2011_09_28/2011_09_28_drive_0001_sync 93 r
+2011_09_30/2011_09_30_drive_0033_sync 346 r
+2011_09_30/2011_09_30_drive_0028_sync 4668 r
+2011_09_26/2011_09_26_drive_0104_sync 289 l
+2011_09_26/2011_09_26_drive_0001_sync 90 r
+2011_09_30/2011_09_30_drive_0020_sync 929 l
+2011_09_26/2011_09_26_drive_0051_sync 277 l
+2011_09_26/2011_09_26_drive_0011_sync 223 r
+2011_09_26/2011_09_26_drive_0014_sync 89 r
+2011_09_26/2011_09_26_drive_0061_sync 341 r
+2011_09_30/2011_09_30_drive_0020_sync 240 r
+2011_10_03/2011_10_03_drive_0042_sync 402 l
+2011_09_26/2011_09_26_drive_0061_sync 299 r
+2011_09_30/2011_09_30_drive_0028_sync 3218 r
+2011_09_26/2011_09_26_drive_0018_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 43 l
+2011_09_26/2011_09_26_drive_0019_sync 378 l
+2011_09_26/2011_09_26_drive_0057_sync 232 r
+2011_09_26/2011_09_26_drive_0039_sync 36 r
+2011_09_26/2011_09_26_drive_0057_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 5114 r
+2011_09_26/2011_09_26_drive_0022_sync 608 l
+2011_09_30/2011_09_30_drive_0020_sync 821 r
+2011_10_03/2011_10_03_drive_0034_sync 3526 r
+2011_09_26/2011_09_26_drive_0028_sync 412 l
+2011_10_03/2011_10_03_drive_0034_sync 636 l
+2011_09_30/2011_09_30_drive_0028_sync 1903 r
+2011_09_26/2011_09_26_drive_0079_sync 30 l
+2011_09_30/2011_09_30_drive_0034_sync 1203 l
+2011_09_30/2011_09_30_drive_0033_sync 961 l
+2011_09_26/2011_09_26_drive_0061_sync 220 l
+2011_09_26/2011_09_26_drive_0028_sync 127 l
+2011_09_26/2011_09_26_drive_0061_sync 25 r
+2011_09_30/2011_09_30_drive_0033_sync 413 l
+2011_09_26/2011_09_26_drive_0061_sync 481 r
+2011_09_26/2011_09_26_drive_0061_sync 552 l
+2011_09_26/2011_09_26_drive_0022_sync 755 r
+2011_10_03/2011_10_03_drive_0034_sync 4119 r
+2011_09_26/2011_09_26_drive_0028_sync 393 l
+2011_09_29/2011_09_29_drive_0004_sync 24 r
+2011_09_26/2011_09_26_drive_0019_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 1196 l
+2011_10_03/2011_10_03_drive_0034_sync 1548 l
+2011_09_26/2011_09_26_drive_0039_sync 356 l
+2011_09_30/2011_09_30_drive_0028_sync 327 r
+2011_09_26/2011_09_26_drive_0061_sync 502 l
+2011_09_30/2011_09_30_drive_0028_sync 3874 r
+2011_09_26/2011_09_26_drive_0087_sync 627 l
+2011_10_03/2011_10_03_drive_0034_sync 4209 l
+2011_09_30/2011_09_30_drive_0033_sync 1453 l
+2011_09_26/2011_09_26_drive_0022_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 2762 l
+2011_09_26/2011_09_26_drive_0028_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 4696 l
+2011_10_03/2011_10_03_drive_0042_sync 1036 r
+2011_09_29/2011_09_29_drive_0004_sync 88 l
+2011_10_03/2011_10_03_drive_0042_sync 320 l
+2011_09_29/2011_09_29_drive_0004_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 700 r
+2011_09_30/2011_09_30_drive_0033_sync 457 r
+2011_09_26/2011_09_26_drive_0051_sync 361 r
+2011_09_26/2011_09_26_drive_0051_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 2814 l
+2011_10_03/2011_10_03_drive_0034_sync 3133 r
+2011_10_03/2011_10_03_drive_0034_sync 428 r
+2011_09_29/2011_09_29_drive_0004_sync 8 r
+2011_09_26/2011_09_26_drive_0018_sync 221 r
+2011_09_30/2011_09_30_drive_0028_sync 3070 r
+2011_09_26/2011_09_26_drive_0051_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 4286 l
+2011_09_30/2011_09_30_drive_0028_sync 3455 l
+2011_10_03/2011_10_03_drive_0034_sync 694 l
+2011_09_30/2011_09_30_drive_0028_sync 345 r
+2011_10_03/2011_10_03_drive_0034_sync 2583 l
+2011_10_03/2011_10_03_drive_0034_sync 3673 l
+2011_09_30/2011_09_30_drive_0028_sync 1060 l
+2011_09_30/2011_09_30_drive_0028_sync 419 l
+2011_10_03/2011_10_03_drive_0034_sync 2976 r
+2011_09_26/2011_09_26_drive_0018_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 1690 l
+2011_09_30/2011_09_30_drive_0028_sync 257 r
+2011_09_26/2011_09_26_drive_0014_sync 239 r
+2011_09_26/2011_09_26_drive_0057_sync 116 r
+2011_09_26/2011_09_26_drive_0035_sync 61 r
+2011_09_29/2011_09_29_drive_0004_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 4021 r
+2011_09_30/2011_09_30_drive_0034_sync 690 l
+2011_10_03/2011_10_03_drive_0034_sync 2023 r
+2011_10_03/2011_10_03_drive_0034_sync 1004 l
+2011_09_26/2011_09_26_drive_0061_sync 580 l
+2011_09_30/2011_09_30_drive_0028_sync 970 r
+2011_09_30/2011_09_30_drive_0034_sync 562 r
+2011_09_30/2011_09_30_drive_0028_sync 4433 r
+2011_09_30/2011_09_30_drive_0028_sync 1310 r
+2011_09_26/2011_09_26_drive_0022_sync 356 r
+2011_09_26/2011_09_26_drive_0061_sync 364 r
+2011_09_26/2011_09_26_drive_0051_sync 309 l
+2011_10_03/2011_10_03_drive_0034_sync 1339 l
+2011_09_26/2011_09_26_drive_0011_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 2400 r
+2011_10_03/2011_10_03_drive_0034_sync 2344 l
+2011_10_03/2011_10_03_drive_0034_sync 304 r
+2011_09_26/2011_09_26_drive_0104_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 3411 l
+2011_09_30/2011_09_30_drive_0020_sync 683 r
+2011_09_26/2011_09_26_drive_0070_sync 40 l
+2011_09_26/2011_09_26_drive_0057_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 2820 l
+2011_10_03/2011_10_03_drive_0034_sync 3787 r
+2011_10_03/2011_10_03_drive_0034_sync 949 l
+2011_09_26/2011_09_26_drive_0028_sync 90 r
+2011_09_26/2011_09_26_drive_0061_sync 606 r
+2011_09_30/2011_09_30_drive_0028_sync 2101 r
+2011_10_03/2011_10_03_drive_0034_sync 76 l
+2011_09_30/2011_09_30_drive_0020_sync 375 l
+2011_09_26/2011_09_26_drive_0015_sync 59 l
+2011_09_26/2011_09_26_drive_0019_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 5017 l
+2011_10_03/2011_10_03_drive_0034_sync 3246 r
+2011_09_26/2011_09_26_drive_0018_sync 258 l
+2011_10_03/2011_10_03_drive_0042_sync 572 r
+2011_09_30/2011_09_30_drive_0028_sync 1472 r
+2011_09_30/2011_09_30_drive_0033_sync 1425 l
+2011_10_03/2011_10_03_drive_0034_sync 3518 r
+2011_09_26/2011_09_26_drive_0018_sync 77 r
+2011_09_26/2011_09_26_drive_0018_sync 269 r
+2011_09_26/2011_09_26_drive_0039_sync 337 l
+2011_09_26/2011_09_26_drive_0011_sync 108 l
+2011_09_26/2011_09_26_drive_0035_sync 100 l
+2011_10_03/2011_10_03_drive_0042_sync 975 l
+2011_09_26/2011_09_26_drive_0022_sync 606 l
+2011_09_26/2011_09_26_drive_0070_sync 329 l
+2011_10_03/2011_10_03_drive_0034_sync 2491 r
+2011_09_30/2011_09_30_drive_0028_sync 2000 l
+2011_09_26/2011_09_26_drive_0018_sync 235 l
+2011_09_30/2011_09_30_drive_0033_sync 1453 r
+2011_09_30/2011_09_30_drive_0034_sync 714 r
+2011_10_03/2011_10_03_drive_0034_sync 716 r
+2011_09_26/2011_09_26_drive_0104_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 1747 r
+2011_09_30/2011_09_30_drive_0028_sync 1247 r
+2011_09_26/2011_09_26_drive_0051_sync 283 r
+2011_09_30/2011_09_30_drive_0033_sync 1293 r
+2011_09_30/2011_09_30_drive_0028_sync 939 l
+2011_10_03/2011_10_03_drive_0034_sync 1024 l
+2011_10_03/2011_10_03_drive_0034_sync 4467 r
+2011_09_26/2011_09_26_drive_0039_sync 0 r
+2011_09_26/2011_09_26_drive_0022_sync 178 l
+2011_09_26/2011_09_26_drive_0022_sync 773 r
+2011_09_30/2011_09_30_drive_0020_sync 290 r
+2011_09_26/2011_09_26_drive_0015_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 1225 r
+2011_10_03/2011_10_03_drive_0034_sync 2684 l
+2011_09_26/2011_09_26_drive_0057_sync 40 l
+2011_09_26/2011_09_26_drive_0087_sync 434 r
+2011_09_26/2011_09_26_drive_0022_sync 217 l
+2011_09_26/2011_09_26_drive_0061_sync 468 l
+2011_10_03/2011_10_03_drive_0034_sync 3774 r
+2011_09_30/2011_09_30_drive_0028_sync 1683 r
+2011_09_30/2011_09_30_drive_0028_sync 648 r
+2011_09_30/2011_09_30_drive_0028_sync 1669 l
+2011_09_30/2011_09_30_drive_0028_sync 1510 r
+2011_09_30/2011_09_30_drive_0028_sync 1269 r
+2011_09_30/2011_09_30_drive_0033_sync 212 l
+2011_10_03/2011_10_03_drive_0034_sync 1720 l
+2011_09_26/2011_09_26_drive_0057_sync 130 l
+2011_10_03/2011_10_03_drive_0034_sync 4241 r
+2011_09_26/2011_09_26_drive_0014_sync 60 r
+2011_09_30/2011_09_30_drive_0033_sync 958 l
+2011_09_26/2011_09_26_drive_0087_sync 403 l
+2011_10_03/2011_10_03_drive_0034_sync 2486 r
+2011_09_30/2011_09_30_drive_0028_sync 2240 r
+2011_09_29/2011_09_29_drive_0004_sync 16 r
+2011_09_30/2011_09_30_drive_0034_sync 280 l
+2011_10_03/2011_10_03_drive_0034_sync 3128 l
+2011_09_26/2011_09_26_drive_0061_sync 514 l
+2011_10_03/2011_10_03_drive_0042_sync 223 r
+2011_09_26/2011_09_26_drive_0015_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 4975 r
+2011_09_30/2011_09_30_drive_0028_sync 4523 r
+2011_09_30/2011_09_30_drive_0028_sync 759 l
+2011_10_03/2011_10_03_drive_0034_sync 4392 l
+2011_09_26/2011_09_26_drive_0015_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 2479 r
+2011_09_30/2011_09_30_drive_0028_sync 4731 r
+2011_09_30/2011_09_30_drive_0033_sync 217 r
+2011_09_26/2011_09_26_drive_0087_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 807 r
+2011_09_30/2011_09_30_drive_0028_sync 3079 l
+2011_09_30/2011_09_30_drive_0020_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 4486 r
+2011_09_30/2011_09_30_drive_0034_sync 972 l
+2011_09_30/2011_09_30_drive_0028_sync 3081 l
+2011_09_30/2011_09_30_drive_0028_sync 3493 l
+2011_09_30/2011_09_30_drive_0033_sync 47 r
+2011_09_26/2011_09_26_drive_0022_sync 548 r
+2011_09_26/2011_09_26_drive_0014_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 4820 r
+2011_10_03/2011_10_03_drive_0034_sync 2522 r
+2011_09_26/2011_09_26_drive_0022_sync 756 l
+2011_09_30/2011_09_30_drive_0034_sync 542 r
+2011_09_26/2011_09_26_drive_0061_sync 250 r
+2011_09_26/2011_09_26_drive_0070_sync 35 l
+2011_10_03/2011_10_03_drive_0042_sync 610 r
+2011_09_30/2011_09_30_drive_0033_sync 270 l
+2011_09_26/2011_09_26_drive_0091_sync 50 r
+2011_09_26/2011_09_26_drive_0022_sync 150 r
+2011_10_03/2011_10_03_drive_0034_sync 4136 r
+2011_09_30/2011_09_30_drive_0033_sync 885 l
+2011_10_03/2011_10_03_drive_0034_sync 4520 l
+2011_10_03/2011_10_03_drive_0042_sync 489 r
+2011_09_30/2011_09_30_drive_0033_sync 689 l
+2011_09_26/2011_09_26_drive_0051_sync 132 l
+2011_09_26/2011_09_26_drive_0019_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 2332 l
+2011_09_30/2011_09_30_drive_0028_sync 4319 r
+2011_09_26/2011_09_26_drive_0032_sync 379 l
+2011_09_30/2011_09_30_drive_0028_sync 4779 r
+2011_09_26/2011_09_26_drive_0001_sync 34 r
+2011_09_26/2011_09_26_drive_0087_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 3666 l
+2011_09_26/2011_09_26_drive_0061_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 3539 r
+2011_09_28/2011_09_28_drive_0001_sync 74 l
+2011_09_26/2011_09_26_drive_0091_sync 264 r
+2011_10_03/2011_10_03_drive_0042_sync 279 r
+2011_09_26/2011_09_26_drive_0032_sync 345 l
+2011_09_26/2011_09_26_drive_0051_sync 130 r
+2011_09_30/2011_09_30_drive_0034_sync 391 l
+2011_09_26/2011_09_26_drive_0032_sync 182 l
+2011_09_30/2011_09_30_drive_0034_sync 458 l
+2011_09_30/2011_09_30_drive_0020_sync 356 l
+2011_10_03/2011_10_03_drive_0034_sync 2052 l
+2011_10_03/2011_10_03_drive_0034_sync 1609 r
+2011_09_30/2011_09_30_drive_0020_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 1034 l
+2011_09_26/2011_09_26_drive_0039_sync 385 r
+2011_09_26/2011_09_26_drive_0061_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 1537 l
+2011_09_26/2011_09_26_drive_0028_sync 139 r
+2011_09_29/2011_09_29_drive_0004_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 103 l
+2011_09_26/2011_09_26_drive_0061_sync 35 r
+2011_09_26/2011_09_26_drive_0060_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 990 r
+2011_09_30/2011_09_30_drive_0028_sync 3101 r
+2011_10_03/2011_10_03_drive_0034_sync 2712 r
+2011_09_30/2011_09_30_drive_0034_sync 863 l
+2011_09_26/2011_09_26_drive_0035_sync 5 l
+2011_10_03/2011_10_03_drive_0042_sync 61 l
+2011_09_26/2011_09_26_drive_0019_sync 132 r
+2011_09_30/2011_09_30_drive_0028_sync 4682 l
+2011_09_26/2011_09_26_drive_0051_sync 170 r
+2011_09_26/2011_09_26_drive_0011_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 4728 r
+2011_09_30/2011_09_30_drive_0028_sync 3461 r
+2011_10_03/2011_10_03_drive_0034_sync 2292 r
+2011_09_26/2011_09_26_drive_0022_sync 505 l
+2011_09_26/2011_09_26_drive_0032_sync 89 l
+2011_09_30/2011_09_30_drive_0028_sync 1768 l
+2011_09_30/2011_09_30_drive_0033_sync 324 r
+2011_09_30/2011_09_30_drive_0020_sync 136 r
+2011_09_26/2011_09_26_drive_0087_sync 213 l
+2011_10_03/2011_10_03_drive_0042_sync 618 l
+2011_09_30/2011_09_30_drive_0028_sync 4740 l
+2011_10_03/2011_10_03_drive_0034_sync 1571 r
+2011_09_30/2011_09_30_drive_0033_sync 917 r
+2011_10_03/2011_10_03_drive_0034_sync 2017 r
+2011_10_03/2011_10_03_drive_0034_sync 372 l
+2011_09_30/2011_09_30_drive_0028_sync 2951 r
+2011_09_30/2011_09_30_drive_0028_sync 3777 r
+2011_10_03/2011_10_03_drive_0042_sync 882 r
+2011_09_26/2011_09_26_drive_0022_sync 78 l
+2011_10_03/2011_10_03_drive_0042_sync 756 l
+2011_09_26/2011_09_26_drive_0070_sync 393 r
+2011_09_26/2011_09_26_drive_0061_sync 65 r
+2011_10_03/2011_10_03_drive_0034_sync 784 l
+2011_10_03/2011_10_03_drive_0034_sync 4141 l
+2011_09_30/2011_09_30_drive_0020_sync 962 l
+2011_09_26/2011_09_26_drive_0091_sync 37 r
+2011_09_26/2011_09_26_drive_0017_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 4298 r
+2011_10_03/2011_10_03_drive_0034_sync 551 r
+2011_09_30/2011_09_30_drive_0033_sync 1435 r
+2011_09_30/2011_09_30_drive_0020_sync 309 r
+2011_09_26/2011_09_26_drive_0028_sync 45 l
+2011_09_26/2011_09_26_drive_0104_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 1187 l
+2011_09_30/2011_09_30_drive_0020_sync 718 r
+2011_10_03/2011_10_03_drive_0034_sync 3750 l
+2011_09_30/2011_09_30_drive_0020_sync 461 l
+2011_09_26/2011_09_26_drive_0057_sync 70 l
+2011_10_03/2011_10_03_drive_0042_sync 468 r
+2011_09_30/2011_09_30_drive_0028_sync 4281 l
+2011_10_03/2011_10_03_drive_0034_sync 2249 r
+2011_09_26/2011_09_26_drive_0014_sync 285 l
+2011_10_03/2011_10_03_drive_0034_sync 4366 r
+2011_09_26/2011_09_26_drive_0011_sync 109 l
+2011_09_26/2011_09_26_drive_0022_sync 540 l
+2011_10_03/2011_10_03_drive_0034_sync 3424 l
+2011_09_30/2011_09_30_drive_0028_sync 1961 r
+2011_09_29/2011_09_29_drive_0026_sync 103 l
+2011_09_30/2011_09_30_drive_0034_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 4252 l
+2011_09_26/2011_09_26_drive_0087_sync 126 r
+2011_09_26/2011_09_26_drive_0104_sync 110 r
+2011_09_30/2011_09_30_drive_0033_sync 1168 l
+2011_09_30/2011_09_30_drive_0034_sync 424 r
+2011_10_03/2011_10_03_drive_0034_sync 2650 l
+2011_09_26/2011_09_26_drive_0019_sync 329 l
+2011_10_03/2011_10_03_drive_0034_sync 3751 r
+2011_09_26/2011_09_26_drive_0011_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 2109 l
+2011_10_03/2011_10_03_drive_0034_sync 4372 l
+2011_09_26/2011_09_26_drive_0057_sync 98 r
+2011_09_26/2011_09_26_drive_0014_sync 89 l
+2011_09_26/2011_09_26_drive_0057_sync 349 l
+2011_09_26/2011_09_26_drive_0091_sync 101 l
+2011_09_30/2011_09_30_drive_0020_sync 1003 l
+2011_09_26/2011_09_26_drive_0017_sync 61 l
+2011_09_26/2011_09_26_drive_0032_sync 360 r
+2011_09_26/2011_09_26_drive_0028_sync 351 r
+2011_09_26/2011_09_26_drive_0060_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 3628 l
+2011_09_26/2011_09_26_drive_0061_sync 392 r
+2011_09_30/2011_09_30_drive_0034_sync 414 l
+2011_10_03/2011_10_03_drive_0034_sync 1129 l
+2011_10_03/2011_10_03_drive_0034_sync 2322 l
+2011_09_30/2011_09_30_drive_0033_sync 795 l
+2011_09_26/2011_09_26_drive_0095_sync 87 l
+2011_09_30/2011_09_30_drive_0034_sync 281 l
+2011_09_26/2011_09_26_drive_0095_sync 183 r
+2011_09_26/2011_09_26_drive_0061_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 4032 l
+2011_09_30/2011_09_30_drive_0020_sync 219 l
+2011_10_03/2011_10_03_drive_0042_sync 747 l
+2011_10_03/2011_10_03_drive_0034_sync 2215 l
+2011_10_03/2011_10_03_drive_0034_sync 330 r
+2011_09_26/2011_09_26_drive_0019_sync 132 l
+2011_09_30/2011_09_30_drive_0020_sync 1000 r
+2011_09_26/2011_09_26_drive_0022_sync 112 l
+2011_09_30/2011_09_30_drive_0020_sync 5 r
+2011_09_30/2011_09_30_drive_0033_sync 109 l
+2011_09_26/2011_09_26_drive_0104_sync 195 r
+2011_09_26/2011_09_26_drive_0019_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 744 l
+2011_09_30/2011_09_30_drive_0028_sync 3123 r
+2011_09_26/2011_09_26_drive_0022_sync 528 r
+2011_10_03/2011_10_03_drive_0034_sync 255 r
+2011_09_30/2011_09_30_drive_0033_sync 703 l
+2011_09_30/2011_09_30_drive_0028_sync 2932 l
+2011_09_30/2011_09_30_drive_0034_sync 545 l
+2011_09_29/2011_09_29_drive_0004_sync 13 l
+2011_10_03/2011_10_03_drive_0042_sync 235 l
+2011_09_30/2011_09_30_drive_0020_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 2266 l
+2011_09_26/2011_09_26_drive_0015_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 184 r
+2011_10_03/2011_10_03_drive_0042_sync 168 l
+2011_09_26/2011_09_26_drive_0087_sync 260 l
+2011_09_26/2011_09_26_drive_0022_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 1389 l
+2011_09_30/2011_09_30_drive_0033_sync 399 r
+2011_09_30/2011_09_30_drive_0028_sync 3626 r
+2011_09_30/2011_09_30_drive_0033_sync 551 r
+2011_09_26/2011_09_26_drive_0091_sync 199 l
+2011_09_26/2011_09_26_drive_0091_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 4274 l
+2011_09_29/2011_09_29_drive_0004_sync 207 r
+2011_09_26/2011_09_26_drive_0104_sync 156 r
+2011_09_30/2011_09_30_drive_0020_sync 910 r
+2011_09_30/2011_09_30_drive_0028_sync 3558 r
+2011_09_30/2011_09_30_drive_0028_sync 3881 r
+2011_10_03/2011_10_03_drive_0034_sync 3501 r
+2011_09_26/2011_09_26_drive_0070_sync 187 r
+2011_09_26/2011_09_26_drive_0022_sync 651 l
+2011_10_03/2011_10_03_drive_0034_sync 617 r
+2011_09_26/2011_09_26_drive_0001_sync 10 r
+2011_09_29/2011_09_29_drive_0004_sync 205 r
+2011_09_26/2011_09_26_drive_0017_sync 2 r
+2011_09_26/2011_09_26_drive_0087_sync 604 r
+2011_10_03/2011_10_03_drive_0034_sync 365 l
+2011_10_03/2011_10_03_drive_0034_sync 797 l
+2011_09_26/2011_09_26_drive_0087_sync 234 r
+2011_09_26/2011_09_26_drive_0104_sync 172 l
+2011_09_30/2011_09_30_drive_0033_sync 223 l
+2011_09_26/2011_09_26_drive_0070_sync 25 l
+2011_09_30/2011_09_30_drive_0020_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 2907 r
+2011_09_26/2011_09_26_drive_0039_sync 14 l
+2011_09_30/2011_09_30_drive_0033_sync 57 l
+2011_10_03/2011_10_03_drive_0034_sync 180 r
+2011_10_03/2011_10_03_drive_0034_sync 3848 l
+2011_09_26/2011_09_26_drive_0022_sync 356 l
+2011_09_26/2011_09_26_drive_0087_sync 572 l
+2011_09_26/2011_09_26_drive_0005_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 2388 r
+2011_09_26/2011_09_26_drive_0057_sync 217 r
+2011_10_03/2011_10_03_drive_0042_sync 406 l
+2011_09_30/2011_09_30_drive_0028_sync 775 r
+2011_10_03/2011_10_03_drive_0034_sync 3990 l
+2011_09_30/2011_09_30_drive_0028_sync 1309 l
+2011_09_30/2011_09_30_drive_0034_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 3682 l
+2011_09_26/2011_09_26_drive_0070_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 2420 l
+2011_09_26/2011_09_26_drive_0032_sync 125 r
+2011_09_26/2011_09_26_drive_0057_sync 147 r
+2011_09_26/2011_09_26_drive_0014_sync 72 r
+2011_09_26/2011_09_26_drive_0039_sync 309 l
+2011_09_29/2011_09_29_drive_0004_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 4287 r
+2011_09_30/2011_09_30_drive_0028_sync 2338 l
+2011_10_03/2011_10_03_drive_0034_sync 4371 l
+2011_09_30/2011_09_30_drive_0034_sync 959 r
+2011_09_26/2011_09_26_drive_0070_sync 243 r
+2011_09_30/2011_09_30_drive_0020_sync 860 r
+2011_09_30/2011_09_30_drive_0033_sync 418 l
+2011_09_30/2011_09_30_drive_0034_sync 106 l
+2011_09_26/2011_09_26_drive_0091_sync 293 l
+2011_10_03/2011_10_03_drive_0034_sync 594 l
+2011_09_26/2011_09_26_drive_0061_sync 395 l
+2011_09_26/2011_09_26_drive_0095_sync 36 r
+2011_09_30/2011_09_30_drive_0033_sync 1489 l
+2011_10_03/2011_10_03_drive_0034_sync 263 r
+2011_09_30/2011_09_30_drive_0020_sync 177 r
+2011_09_30/2011_09_30_drive_0020_sync 1067 r
+2011_09_30/2011_09_30_drive_0033_sync 254 r
+2011_09_30/2011_09_30_drive_0028_sync 1430 l
+2011_10_03/2011_10_03_drive_0034_sync 1258 r
+2011_09_26/2011_09_26_drive_0104_sync 152 r
+2011_09_26/2011_09_26_drive_0028_sync 266 r
+2011_09_30/2011_09_30_drive_0028_sync 1347 l
+2011_09_26/2011_09_26_drive_0095_sync 25 l
+2011_09_26/2011_09_26_drive_0018_sync 79 l
+2011_09_26/2011_09_26_drive_0061_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 3845 l
+2011_09_29/2011_09_29_drive_0004_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 4658 r
+2011_09_29/2011_09_29_drive_0004_sync 134 r
+2011_10_03/2011_10_03_drive_0042_sync 783 r
+2011_10_03/2011_10_03_drive_0034_sync 2323 r
+2011_09_26/2011_09_26_drive_0019_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 691 r
+2011_09_29/2011_09_29_drive_0026_sync 86 l
+2011_09_26/2011_09_26_drive_0018_sync 103 l
+2011_09_26/2011_09_26_drive_0051_sync 230 l
+2011_09_26/2011_09_26_drive_0070_sync 386 l
+2011_10_03/2011_10_03_drive_0034_sync 1092 r
+2011_10_03/2011_10_03_drive_0034_sync 3624 l
+2011_09_29/2011_09_29_drive_0004_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 396 r
+2011_09_26/2011_09_26_drive_0104_sync 201 l
+2011_10_03/2011_10_03_drive_0034_sync 1772 l
+2011_10_03/2011_10_03_drive_0034_sync 1428 r
+2011_10_03/2011_10_03_drive_0034_sync 2999 r
+2011_10_03/2011_10_03_drive_0034_sync 850 r
+2011_09_30/2011_09_30_drive_0028_sync 2181 r
+2011_09_30/2011_09_30_drive_0028_sync 569 r
+2011_09_26/2011_09_26_drive_0087_sync 565 l
+2011_09_26/2011_09_26_drive_0095_sync 246 r
+2011_09_26/2011_09_26_drive_0104_sync 267 r
+2011_10_03/2011_10_03_drive_0034_sync 4260 r
+2011_10_03/2011_10_03_drive_0034_sync 1810 l
+2011_10_03/2011_10_03_drive_0034_sync 4108 l
+2011_09_26/2011_09_26_drive_0015_sync 251 l
+2011_09_30/2011_09_30_drive_0033_sync 926 l
+2011_09_30/2011_09_30_drive_0028_sync 1305 r
+2011_09_30/2011_09_30_drive_0028_sync 1957 r
+2011_10_03/2011_10_03_drive_0034_sync 711 l
+2011_09_26/2011_09_26_drive_0091_sync 118 r
+2011_09_26/2011_09_26_drive_0104_sync 219 l
+2011_10_03/2011_10_03_drive_0042_sync 1064 l
+2011_09_30/2011_09_30_drive_0033_sync 262 r
+2011_09_26/2011_09_26_drive_0011_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 778 r
+2011_09_30/2011_09_30_drive_0033_sync 683 r
+2011_09_30/2011_09_30_drive_0028_sync 3430 r
+2011_09_26/2011_09_26_drive_0091_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 3927 r
+2011_09_29/2011_09_29_drive_0004_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 1112 l
+2011_09_30/2011_09_30_drive_0034_sync 128 r
+2011_09_26/2011_09_26_drive_0091_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 4709 r
+2011_09_30/2011_09_30_drive_0028_sync 1024 r
+2011_09_26/2011_09_26_drive_0022_sync 83 r
+2011_09_30/2011_09_30_drive_0028_sync 1649 r
+2011_10_03/2011_10_03_drive_0042_sync 245 l
+2011_10_03/2011_10_03_drive_0034_sync 4300 r
+2011_10_03/2011_10_03_drive_0034_sync 1463 l
+2011_09_30/2011_09_30_drive_0020_sync 376 l
+2011_09_30/2011_09_30_drive_0033_sync 878 r
+2011_09_26/2011_09_26_drive_0051_sync 186 l
+2011_09_26/2011_09_26_drive_0087_sync 720 r
+2011_09_30/2011_09_30_drive_0028_sync 4076 l
+2011_09_26/2011_09_26_drive_0095_sync 152 l
+2011_09_30/2011_09_30_drive_0034_sync 326 l
+2011_10_03/2011_10_03_drive_0042_sync 499 r
+2011_10_03/2011_10_03_drive_0042_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 1970 l
+2011_09_30/2011_09_30_drive_0033_sync 234 r
+2011_09_26/2011_09_26_drive_0028_sync 322 r
+2011_09_30/2011_09_30_drive_0033_sync 728 r
+2011_09_30/2011_09_30_drive_0028_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 2272 l
+2011_10_03/2011_10_03_drive_0034_sync 688 r
+2011_09_30/2011_09_30_drive_0028_sync 4161 l
+2011_09_30/2011_09_30_drive_0034_sync 451 l
+2011_09_26/2011_09_26_drive_0087_sync 401 r
+2011_10_03/2011_10_03_drive_0034_sync 3337 l
+2011_09_26/2011_09_26_drive_0014_sync 1 l
+2011_10_03/2011_10_03_drive_0042_sync 110 l
+2011_10_03/2011_10_03_drive_0034_sync 3229 r
+2011_09_26/2011_09_26_drive_0104_sync 119 l
+2011_09_30/2011_09_30_drive_0020_sync 261 l
+2011_09_26/2011_09_26_drive_0087_sync 693 l
+2011_09_29/2011_09_29_drive_0026_sync 114 l
+2011_09_30/2011_09_30_drive_0033_sync 808 l
+2011_10_03/2011_10_03_drive_0034_sync 2466 l
+2011_09_26/2011_09_26_drive_0022_sync 271 l
+2011_09_26/2011_09_26_drive_0015_sync 124 r
+2011_09_26/2011_09_26_drive_0011_sync 44 r
+2011_09_26/2011_09_26_drive_0011_sync 117 r
+2011_09_30/2011_09_30_drive_0033_sync 754 l
+2011_09_26/2011_09_26_drive_0014_sync 212 r
+2011_10_03/2011_10_03_drive_0034_sync 1112 r
+2011_09_30/2011_09_30_drive_0028_sync 2492 l
+2011_10_03/2011_10_03_drive_0034_sync 2226 r
+2011_09_26/2011_09_26_drive_0022_sync 166 r
+2011_10_03/2011_10_03_drive_0042_sync 169 r
+2011_10_03/2011_10_03_drive_0042_sync 491 l
+2011_09_26/2011_09_26_drive_0061_sync 626 r
+2011_09_26/2011_09_26_drive_0091_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 2118 r
+2011_09_26/2011_09_26_drive_0057_sync 124 l
+2011_09_26/2011_09_26_drive_0028_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 1422 l
+2011_10_03/2011_10_03_drive_0034_sync 4188 l
+2011_09_30/2011_09_30_drive_0033_sync 1388 l
+2011_09_26/2011_09_26_drive_0014_sync 282 l
+2011_09_26/2011_09_26_drive_0070_sync 283 l
+2011_09_26/2011_09_26_drive_0039_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 3221 l
+2011_09_30/2011_09_30_drive_0028_sync 2778 l
+2011_09_26/2011_09_26_drive_0022_sync 0 l
+2011_10_03/2011_10_03_drive_0034_sync 2481 r
+2011_10_03/2011_10_03_drive_0042_sync 1129 r
+2011_09_30/2011_09_30_drive_0028_sync 3309 r
+2011_09_29/2011_09_29_drive_0004_sync 314 l
+2011_10_03/2011_10_03_drive_0034_sync 1398 r
+2011_09_30/2011_09_30_drive_0028_sync 1855 l
+2011_10_03/2011_10_03_drive_0034_sync 3179 r
+2011_09_26/2011_09_26_drive_0051_sync 215 r
+2011_09_30/2011_09_30_drive_0028_sync 3394 l
+2011_09_30/2011_09_30_drive_0028_sync 2899 r
+2011_09_26/2011_09_26_drive_0022_sync 623 r
+2011_10_03/2011_10_03_drive_0034_sync 1688 l
+2011_09_30/2011_09_30_drive_0028_sync 2923 l
+2011_09_30/2011_09_30_drive_0034_sync 342 l
+2011_10_03/2011_10_03_drive_0042_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 2507 l
+2011_09_26/2011_09_26_drive_0032_sync 185 r
+2011_09_26/2011_09_26_drive_0028_sync 190 l
+2011_09_30/2011_09_30_drive_0020_sync 806 r
+2011_09_26/2011_09_26_drive_0014_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 829 l
+2011_09_30/2011_09_30_drive_0028_sync 4501 r
+2011_09_26/2011_09_26_drive_0070_sync 404 r
+2011_09_26/2011_09_26_drive_0070_sync 9 r
+2011_09_26/2011_09_26_drive_0057_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 456 r
+2011_09_30/2011_09_30_drive_0034_sync 298 l
+2011_09_30/2011_09_30_drive_0028_sync 879 r
+2011_09_26/2011_09_26_drive_0104_sync 291 l
+2011_09_30/2011_09_30_drive_0033_sync 380 l
+2011_10_03/2011_10_03_drive_0034_sync 4507 r
+2011_09_30/2011_09_30_drive_0034_sync 400 l
+2011_09_30/2011_09_30_drive_0028_sync 1394 l
+2011_09_26/2011_09_26_drive_0070_sync 214 l
+2011_10_03/2011_10_03_drive_0034_sync 2561 r
+2011_09_30/2011_09_30_drive_0033_sync 1254 r
+2011_09_30/2011_09_30_drive_0034_sync 896 r
+2011_09_30/2011_09_30_drive_0028_sync 693 l
+2011_10_03/2011_10_03_drive_0034_sync 1650 r
+2011_09_26/2011_09_26_drive_0095_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 3127 l
+2011_09_30/2011_09_30_drive_0020_sync 1079 r
+2011_09_30/2011_09_30_drive_0028_sync 1795 l
+2011_10_03/2011_10_03_drive_0034_sync 2638 l
+2011_09_26/2011_09_26_drive_0061_sync 427 r
+2011_10_03/2011_10_03_drive_0034_sync 1373 l
+2011_09_30/2011_09_30_drive_0020_sync 905 r
+2011_09_30/2011_09_30_drive_0034_sync 90 r
+2011_09_26/2011_09_26_drive_0087_sync 541 l
+2011_09_30/2011_09_30_drive_0028_sync 2120 r
+2011_09_26/2011_09_26_drive_0091_sync 262 l
+2011_09_30/2011_09_30_drive_0028_sync 4611 l
+2011_09_26/2011_09_26_drive_0087_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 4260 l
+2011_09_26/2011_09_26_drive_0070_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 2316 r
+2011_09_30/2011_09_30_drive_0020_sync 1082 r
+2011_09_26/2011_09_26_drive_0017_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1139 r
+2011_09_26/2011_09_26_drive_0051_sync 397 l
+2011_09_26/2011_09_26_drive_0095_sync 136 r
+2011_10_03/2011_10_03_drive_0034_sync 3223 l
+2011_09_30/2011_09_30_drive_0033_sync 623 r
+2011_09_26/2011_09_26_drive_0104_sync 130 l
+2011_09_26/2011_09_26_drive_0070_sync 365 l
+2011_10_03/2011_10_03_drive_0042_sync 1088 l
+2011_09_30/2011_09_30_drive_0028_sync 1552 r
+2011_09_30/2011_09_30_drive_0028_sync 4089 r
+2011_09_26/2011_09_26_drive_0079_sync 87 r
+2011_09_30/2011_09_30_drive_0033_sync 52 l
+2011_09_26/2011_09_26_drive_0032_sync 88 l
+2011_09_26/2011_09_26_drive_0014_sync 259 l
+2011_09_26/2011_09_26_drive_0057_sync 330 l
+2011_09_30/2011_09_30_drive_0033_sync 87 l
+2011_09_30/2011_09_30_drive_0033_sync 602 r
+2011_09_30/2011_09_30_drive_0033_sync 1486 l
+2011_09_30/2011_09_30_drive_0034_sync 297 r
+2011_10_03/2011_10_03_drive_0034_sync 4399 l
+2011_09_26/2011_09_26_drive_0019_sync 437 r
+2011_09_30/2011_09_30_drive_0034_sync 13 r
+2011_09_26/2011_09_26_drive_0032_sync 329 l
+2011_09_26/2011_09_26_drive_0060_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 3173 l
+2011_10_03/2011_10_03_drive_0034_sync 3574 l
+2011_09_30/2011_09_30_drive_0028_sync 3695 r
+2011_09_30/2011_09_30_drive_0028_sync 4298 l
+2011_09_30/2011_09_30_drive_0028_sync 3016 r
+2011_10_03/2011_10_03_drive_0034_sync 2151 l
+2011_10_03/2011_10_03_drive_0034_sync 4500 r
+2011_10_03/2011_10_03_drive_0034_sync 354 r
+2011_09_30/2011_09_30_drive_0034_sync 1176 r
+2011_10_03/2011_10_03_drive_0034_sync 3554 r
+2011_09_30/2011_09_30_drive_0028_sync 356 r
+2011_10_03/2011_10_03_drive_0034_sync 1252 r
+2011_09_26/2011_09_26_drive_0014_sync 199 r
+2011_09_26/2011_09_26_drive_0019_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 4054 l
+2011_09_29/2011_09_29_drive_0004_sync 248 r
+2011_09_30/2011_09_30_drive_0020_sync 771 r
+2011_09_26/2011_09_26_drive_0018_sync 172 r
+2011_09_30/2011_09_30_drive_0020_sync 976 r
+2011_09_30/2011_09_30_drive_0028_sync 4821 l
+2011_09_26/2011_09_26_drive_0057_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 1613 l
+2011_09_30/2011_09_30_drive_0033_sync 1241 r
+2011_09_30/2011_09_30_drive_0033_sync 747 l
+2011_10_03/2011_10_03_drive_0034_sync 4586 r
+2011_09_26/2011_09_26_drive_0051_sync 51 l
+2011_10_03/2011_10_03_drive_0042_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 2612 r
+2011_09_30/2011_09_30_drive_0033_sync 1216 r
+2011_09_26/2011_09_26_drive_0070_sync 251 r
+2011_09_26/2011_09_26_drive_0070_sync 135 l
+2011_09_30/2011_09_30_drive_0034_sync 300 l
+2011_09_26/2011_09_26_drive_0022_sync 787 l
+2011_09_30/2011_09_30_drive_0028_sync 4918 l
+2011_09_30/2011_09_30_drive_0028_sync 203 r
+2011_10_03/2011_10_03_drive_0042_sync 745 r
+2011_09_30/2011_09_30_drive_0020_sync 572 r
+2011_09_26/2011_09_26_drive_0022_sync 620 l
+2011_09_30/2011_09_30_drive_0028_sync 2989 r
+2011_09_30/2011_09_30_drive_0028_sync 2900 l
+2011_09_30/2011_09_30_drive_0028_sync 2317 r
+2011_09_26/2011_09_26_drive_0018_sync 72 l
+2011_10_03/2011_10_03_drive_0034_sync 673 r
+2011_10_03/2011_10_03_drive_0034_sync 4308 l
+2011_09_30/2011_09_30_drive_0028_sync 5068 l
+2011_09_26/2011_09_26_drive_0032_sync 328 r
+2011_09_26/2011_09_26_drive_0032_sync 85 l
+2011_09_26/2011_09_26_drive_0014_sync 207 r
+2011_09_26/2011_09_26_drive_0028_sync 31 l
+2011_10_03/2011_10_03_drive_0034_sync 4655 r
+2011_10_03/2011_10_03_drive_0034_sync 2778 r
+2011_09_26/2011_09_26_drive_0005_sync 65 r
+2011_09_26/2011_09_26_drive_0019_sync 155 r
+2011_09_26/2011_09_26_drive_0060_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 3401 r
+2011_10_03/2011_10_03_drive_0042_sync 924 r
+2011_09_30/2011_09_30_drive_0028_sync 1923 l
+2011_09_26/2011_09_26_drive_0061_sync 450 r
+2011_10_03/2011_10_03_drive_0034_sync 3202 r
+2011_09_30/2011_09_30_drive_0034_sync 777 r
+2011_09_26/2011_09_26_drive_0001_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 2744 l
+2011_09_26/2011_09_26_drive_0091_sync 134 r
+2011_10_03/2011_10_03_drive_0034_sync 971 l
+2011_10_03/2011_10_03_drive_0034_sync 512 r
+2011_09_26/2011_09_26_drive_0087_sync 713 l
+2011_09_30/2011_09_30_drive_0033_sync 1508 l
+2011_09_26/2011_09_26_drive_0095_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 4099 r
+2011_10_03/2011_10_03_drive_0034_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 4644 r
+2011_09_30/2011_09_30_drive_0020_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 1848 l
+2011_09_30/2011_09_30_drive_0020_sync 1064 l
+2011_09_26/2011_09_26_drive_0087_sync 219 r
+2011_09_26/2011_09_26_drive_0087_sync 643 r
+2011_09_26/2011_09_26_drive_0079_sync 12 l
+2011_10_03/2011_10_03_drive_0034_sync 2359 l
+2011_10_03/2011_10_03_drive_0034_sync 771 l
+2011_09_26/2011_09_26_drive_0005_sync 150 l
+2011_09_29/2011_09_29_drive_0004_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 2514 r
+2011_09_26/2011_09_26_drive_0087_sync 247 l
+2011_09_30/2011_09_30_drive_0033_sync 167 l
+2011_09_26/2011_09_26_drive_0070_sync 311 r
+2011_09_26/2011_09_26_drive_0022_sync 631 l
+2011_09_26/2011_09_26_drive_0039_sync 140 l
+2011_09_30/2011_09_30_drive_0033_sync 854 l
+2011_09_26/2011_09_26_drive_0022_sync 632 l
+2011_09_30/2011_09_30_drive_0034_sync 676 r
+2011_10_03/2011_10_03_drive_0034_sync 119 l
+2011_09_26/2011_09_26_drive_0015_sync 148 l
+2011_10_03/2011_10_03_drive_0042_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 5074 r
+2011_10_03/2011_10_03_drive_0034_sync 3273 r
+2011_09_30/2011_09_30_drive_0028_sync 3058 l
+2011_09_26/2011_09_26_drive_0015_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 2810 r
+2011_09_26/2011_09_26_drive_0091_sync 169 r
+2011_09_30/2011_09_30_drive_0020_sync 134 r
+2011_10_03/2011_10_03_drive_0034_sync 859 l
+2011_09_30/2011_09_30_drive_0028_sync 2867 l
+2011_09_26/2011_09_26_drive_0014_sync 278 r
+2011_09_30/2011_09_30_drive_0028_sync 4578 r
+2011_09_26/2011_09_26_drive_0018_sync 108 l
+2011_09_26/2011_09_26_drive_0095_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 68 l
+2011_09_30/2011_09_30_drive_0034_sync 512 l
+2011_09_30/2011_09_30_drive_0028_sync 2008 r
+2011_09_30/2011_09_30_drive_0033_sync 665 l
+2011_09_26/2011_09_26_drive_0061_sync 676 l
+2011_09_26/2011_09_26_drive_0032_sync 159 r
+2011_10_03/2011_10_03_drive_0034_sync 1217 l
+2011_10_03/2011_10_03_drive_0034_sync 4617 l
+2011_09_30/2011_09_30_drive_0028_sync 4000 l
+2011_09_26/2011_09_26_drive_0032_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 1207 l
+2011_09_30/2011_09_30_drive_0028_sync 2516 l
+2011_09_30/2011_09_30_drive_0020_sync 1027 r
+2011_09_26/2011_09_26_drive_0087_sync 530 r
+2011_09_30/2011_09_30_drive_0028_sync 2301 r
+2011_09_26/2011_09_26_drive_0001_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 4947 r
+2011_09_26/2011_09_26_drive_0087_sync 604 l
+2011_09_30/2011_09_30_drive_0034_sync 358 l
+2011_09_26/2011_09_26_drive_0015_sync 167 l
+2011_09_26/2011_09_26_drive_0087_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 4493 r
+2011_10_03/2011_10_03_drive_0034_sync 2021 r
+2011_10_03/2011_10_03_drive_0034_sync 2966 l
+2011_10_03/2011_10_03_drive_0042_sync 383 l
+2011_09_26/2011_09_26_drive_0015_sync 90 l
+2011_09_30/2011_09_30_drive_0034_sync 980 l
+2011_09_26/2011_09_26_drive_0019_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 2828 r
+2011_10_03/2011_10_03_drive_0034_sync 3614 l
+2011_09_29/2011_09_29_drive_0026_sync 149 l
+2011_10_03/2011_10_03_drive_0042_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 2669 r
+2011_10_03/2011_10_03_drive_0034_sync 4393 r
+2011_09_26/2011_09_26_drive_0051_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 5088 l
+2011_09_26/2011_09_26_drive_0005_sync 68 l
+2011_09_30/2011_09_30_drive_0028_sync 3417 r
+2011_09_26/2011_09_26_drive_0095_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 3577 r
+2011_09_26/2011_09_26_drive_0022_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 2694 r
+2011_09_30/2011_09_30_drive_0033_sync 956 r
+2011_09_26/2011_09_26_drive_0019_sync 433 r
+2011_09_26/2011_09_26_drive_0018_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 2560 r
+2011_09_30/2011_09_30_drive_0033_sync 1168 r
+2011_09_26/2011_09_26_drive_0070_sync 92 l
+2011_09_26/2011_09_26_drive_0095_sync 142 l
+2011_10_03/2011_10_03_drive_0034_sync 4558 l
+2011_10_03/2011_10_03_drive_0042_sync 982 l
+2011_10_03/2011_10_03_drive_0034_sync 3302 r
+2011_09_30/2011_09_30_drive_0028_sync 3226 l
+2011_10_03/2011_10_03_drive_0034_sync 2517 r
+2011_09_30/2011_09_30_drive_0028_sync 4544 l
+2011_10_03/2011_10_03_drive_0034_sync 3120 r
+2011_09_30/2011_09_30_drive_0033_sync 639 r
+2011_09_26/2011_09_26_drive_0039_sync 274 l
+2011_09_26/2011_09_26_drive_0113_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 2098 r
+2011_09_30/2011_09_30_drive_0028_sync 750 l
+2011_10_03/2011_10_03_drive_0034_sync 2235 l
+2011_09_30/2011_09_30_drive_0034_sync 588 l
+2011_09_26/2011_09_26_drive_0015_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 2849 l
+2011_09_30/2011_09_30_drive_0020_sync 885 r
+2011_10_03/2011_10_03_drive_0034_sync 2802 r
+2011_10_03/2011_10_03_drive_0034_sync 3591 r
+2011_09_30/2011_09_30_drive_0034_sync 764 r
+2011_09_30/2011_09_30_drive_0033_sync 1360 l
+2011_09_26/2011_09_26_drive_0051_sync 359 l
+2011_10_03/2011_10_03_drive_0034_sync 1187 r
+2011_09_30/2011_09_30_drive_0028_sync 3116 r
+2011_09_26/2011_09_26_drive_0005_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 1470 r
+2011_09_30/2011_09_30_drive_0028_sync 793 r
+2011_09_26/2011_09_26_drive_0022_sync 82 r
+2011_09_26/2011_09_26_drive_0104_sync 121 r
+2011_09_26/2011_09_26_drive_0022_sync 162 l
+2011_09_30/2011_09_30_drive_0020_sync 1067 l
+2011_09_26/2011_09_26_drive_0039_sync 226 l
+2011_09_26/2011_09_26_drive_0095_sync 2 l
+2011_09_26/2011_09_26_drive_0028_sync 257 l
+2011_09_26/2011_09_26_drive_0019_sync 352 l
+2011_09_26/2011_09_26_drive_0022_sync 407 l
+2011_09_26/2011_09_26_drive_0057_sync 61 l
+2011_09_26/2011_09_26_drive_0095_sync 261 r
+2011_09_26/2011_09_26_drive_0061_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 4715 r
+2011_09_26/2011_09_26_drive_0018_sync 5 r
+2011_09_26/2011_09_26_drive_0015_sync 94 l
+2011_09_26/2011_09_26_drive_0087_sync 317 r
+2011_09_26/2011_09_26_drive_0019_sync 9 r
+2011_09_30/2011_09_30_drive_0033_sync 323 r
+2011_09_26/2011_09_26_drive_0095_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 889 l
+2011_09_30/2011_09_30_drive_0028_sync 3603 l
+2011_09_30/2011_09_30_drive_0034_sync 8 r
+2011_09_30/2011_09_30_drive_0028_sync 4150 r
+2011_09_26/2011_09_26_drive_0028_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 2767 l
+2011_09_26/2011_09_26_drive_0095_sync 57 l
+2011_09_30/2011_09_30_drive_0020_sync 922 l
+2011_09_26/2011_09_26_drive_0022_sync 581 r
+2011_09_30/2011_09_30_drive_0033_sync 300 l
+2011_10_03/2011_10_03_drive_0034_sync 2170 l
+2011_10_03/2011_10_03_drive_0034_sync 1384 r
+2011_09_26/2011_09_26_drive_0015_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 1063 r
+2011_09_26/2011_09_26_drive_0019_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 5023 l
+2011_09_26/2011_09_26_drive_0028_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 4488 r
+2011_09_30/2011_09_30_drive_0028_sync 1065 r
+2011_10_03/2011_10_03_drive_0034_sync 3099 r
+2011_09_26/2011_09_26_drive_0035_sync 8 r
+2011_09_30/2011_09_30_drive_0033_sync 643 r
+2011_10_03/2011_10_03_drive_0034_sync 1801 r
+2011_10_03/2011_10_03_drive_0034_sync 973 r
+2011_09_30/2011_09_30_drive_0028_sync 3923 r
+2011_09_29/2011_09_29_drive_0004_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 2462 l
+2011_09_30/2011_09_30_drive_0028_sync 3342 r
+2011_09_26/2011_09_26_drive_0028_sync 187 l
+2011_09_26/2011_09_26_drive_0057_sync 56 r
+2011_09_26/2011_09_26_drive_0087_sync 308 r
+2011_09_30/2011_09_30_drive_0020_sync 226 r
+2011_09_30/2011_09_30_drive_0034_sync 1091 l
+2011_10_03/2011_10_03_drive_0034_sync 2849 l
+2011_09_30/2011_09_30_drive_0033_sync 1395 l
+2011_09_26/2011_09_26_drive_0014_sync 112 l
+2011_09_26/2011_09_26_drive_0018_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 488 l
+2011_09_30/2011_09_30_drive_0028_sync 1040 r
+2011_09_26/2011_09_26_drive_0061_sync 621 l
+2011_10_03/2011_10_03_drive_0034_sync 2233 r
+2011_10_03/2011_10_03_drive_0034_sync 1235 r
+2011_09_30/2011_09_30_drive_0033_sync 329 r
+2011_09_29/2011_09_29_drive_0004_sync 188 r
+2011_09_30/2011_09_30_drive_0028_sync 3857 l
+2011_09_28/2011_09_28_drive_0001_sync 104 r
+2011_09_26/2011_09_26_drive_0022_sync 323 r
+2011_09_30/2011_09_30_drive_0028_sync 3832 l
+2011_09_30/2011_09_30_drive_0028_sync 1433 r
+2011_10_03/2011_10_03_drive_0034_sync 1268 r
+2011_10_03/2011_10_03_drive_0034_sync 4231 r
+2011_09_26/2011_09_26_drive_0091_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 5057 l
+2011_09_30/2011_09_30_drive_0033_sync 640 r
+2011_09_30/2011_09_30_drive_0028_sync 541 r
+2011_10_03/2011_10_03_drive_0034_sync 4091 r
+2011_10_03/2011_10_03_drive_0034_sync 3086 l
+2011_09_30/2011_09_30_drive_0028_sync 3352 r
+2011_09_30/2011_09_30_drive_0028_sync 3008 l
+2011_09_30/2011_09_30_drive_0020_sync 700 r
+2011_09_26/2011_09_26_drive_0095_sync 88 l
+2011_09_26/2011_09_26_drive_0070_sync 346 r
+2011_09_26/2011_09_26_drive_0051_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 1367 r
+2011_09_30/2011_09_30_drive_0028_sync 1346 r
+2011_10_03/2011_10_03_drive_0034_sync 1895 r
+2011_09_30/2011_09_30_drive_0028_sync 3433 l
+2011_09_26/2011_09_26_drive_0087_sync 657 l
+2011_09_26/2011_09_26_drive_0104_sync 127 l
+2011_09_30/2011_09_30_drive_0020_sync 621 r
+2011_09_26/2011_09_26_drive_0018_sync 123 l
+2011_09_30/2011_09_30_drive_0034_sync 1181 r
+2011_09_26/2011_09_26_drive_0032_sync 201 l
+2011_10_03/2011_10_03_drive_0034_sync 3950 l
+2011_09_30/2011_09_30_drive_0028_sync 1811 r
+2011_09_30/2011_09_30_drive_0028_sync 4264 r
+2011_09_30/2011_09_30_drive_0020_sync 729 l
+2011_09_30/2011_09_30_drive_0028_sync 4765 l
+2011_09_30/2011_09_30_drive_0028_sync 3672 r
+2011_09_30/2011_09_30_drive_0034_sync 886 l
+2011_09_30/2011_09_30_drive_0028_sync 3522 l
+2011_09_30/2011_09_30_drive_0028_sync 1610 l
+2011_10_03/2011_10_03_drive_0034_sync 3650 l
+2011_09_26/2011_09_26_drive_0051_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 3107 r
+2011_09_26/2011_09_26_drive_0051_sync 411 l
+2011_09_26/2011_09_26_drive_0005_sync 108 r
+2011_09_26/2011_09_26_drive_0035_sync 121 l
+2011_09_26/2011_09_26_drive_0091_sync 82 l
+2011_10_03/2011_10_03_drive_0034_sync 1305 l
+2011_10_03/2011_10_03_drive_0034_sync 3413 r
+2011_09_30/2011_09_30_drive_0034_sync 1159 r
+2011_09_26/2011_09_26_drive_0087_sync 414 l
+2011_09_26/2011_09_26_drive_0019_sync 147 l
+2011_09_30/2011_09_30_drive_0028_sync 3516 r
+2011_09_30/2011_09_30_drive_0028_sync 4057 l
+2011_10_03/2011_10_03_drive_0034_sync 2133 r
+2011_09_30/2011_09_30_drive_0028_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 1404 l
+2011_09_30/2011_09_30_drive_0020_sync 989 r
+2011_09_30/2011_09_30_drive_0028_sync 2838 l
+2011_09_26/2011_09_26_drive_0039_sync 394 l
+2011_09_30/2011_09_30_drive_0020_sync 277 r
+2011_09_26/2011_09_26_drive_0011_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 3723 r
+2011_09_26/2011_09_26_drive_0087_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 2366 r
+2011_09_30/2011_09_30_drive_0034_sync 764 l
+2011_09_30/2011_09_30_drive_0034_sync 18 r
+2011_09_30/2011_09_30_drive_0034_sync 965 l
+2011_09_30/2011_09_30_drive_0020_sync 810 l
+2011_09_30/2011_09_30_drive_0028_sync 797 l
+2011_09_30/2011_09_30_drive_0028_sync 2669 l
+2011_10_03/2011_10_03_drive_0034_sync 3017 r
+2011_09_26/2011_09_26_drive_0015_sync 243 r
+2011_09_30/2011_09_30_drive_0033_sync 1121 l
+2011_09_26/2011_09_26_drive_0051_sync 62 r
+2011_09_30/2011_09_30_drive_0028_sync 2010 l
+2011_09_30/2011_09_30_drive_0028_sync 1936 l
+2011_09_30/2011_09_30_drive_0028_sync 1459 l
+2011_10_03/2011_10_03_drive_0034_sync 622 r
+2011_09_26/2011_09_26_drive_0087_sync 151 l
+2011_09_26/2011_09_26_drive_0057_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 1602 r
+2011_09_30/2011_09_30_drive_0028_sync 2970 r
+2011_09_30/2011_09_30_drive_0033_sync 70 l
+2011_09_26/2011_09_26_drive_0057_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 1218 l
+2011_09_26/2011_09_26_drive_0022_sync 688 l
+2011_10_03/2011_10_03_drive_0034_sync 2038 l
+2011_10_03/2011_10_03_drive_0034_sync 2615 l
+2011_09_29/2011_09_29_drive_0004_sync 250 r
+2011_09_30/2011_09_30_drive_0028_sync 4176 l
+2011_09_26/2011_09_26_drive_0070_sync 274 l
+2011_09_30/2011_09_30_drive_0028_sync 4800 l
+2011_09_26/2011_09_26_drive_0015_sync 114 l
+2011_10_03/2011_10_03_drive_0034_sync 4573 l
+2011_09_26/2011_09_26_drive_0019_sync 137 r
+2011_09_26/2011_09_26_drive_0061_sync 281 l
+2011_09_30/2011_09_30_drive_0028_sync 320 r
+2011_09_30/2011_09_30_drive_0028_sync 741 r
+2011_10_03/2011_10_03_drive_0034_sync 1537 r
+2011_09_26/2011_09_26_drive_0087_sync 544 r
+2011_09_30/2011_09_30_drive_0028_sync 4476 l
+2011_09_30/2011_09_30_drive_0028_sync 1912 r
+2011_09_30/2011_09_30_drive_0033_sync 888 l
+2011_10_03/2011_10_03_drive_0042_sync 371 r
+2011_09_30/2011_09_30_drive_0028_sync 2562 r
+2011_09_30/2011_09_30_drive_0028_sync 4149 l
+2011_10_03/2011_10_03_drive_0034_sync 220 l
+2011_09_26/2011_09_26_drive_0028_sync 190 r
+2011_09_28/2011_09_28_drive_0001_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 3445 r
+2011_10_03/2011_10_03_drive_0034_sync 4281 r
+2011_09_30/2011_09_30_drive_0034_sync 818 l
+2011_09_30/2011_09_30_drive_0028_sync 1389 l
+2011_09_26/2011_09_26_drive_0001_sync 33 r
+2011_09_26/2011_09_26_drive_0035_sync 7 l
+2011_09_26/2011_09_26_drive_0039_sync 156 l
+2011_09_30/2011_09_30_drive_0020_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 1614 r
+2011_09_30/2011_09_30_drive_0033_sync 1004 l
+2011_09_30/2011_09_30_drive_0033_sync 1076 r
+2011_09_30/2011_09_30_drive_0028_sync 1153 l
+2011_10_03/2011_10_03_drive_0034_sync 1408 r
+2011_10_03/2011_10_03_drive_0034_sync 2080 l
+2011_09_30/2011_09_30_drive_0033_sync 728 l
+2011_09_30/2011_09_30_drive_0028_sync 206 r
+2011_09_26/2011_09_26_drive_0061_sync 387 l
+2011_10_03/2011_10_03_drive_0034_sync 1637 l
+2011_09_30/2011_09_30_drive_0028_sync 1191 l
+2011_09_30/2011_09_30_drive_0034_sync 879 l
+2011_09_30/2011_09_30_drive_0033_sync 1135 r
+2011_09_30/2011_09_30_drive_0028_sync 609 r
+2011_09_30/2011_09_30_drive_0034_sync 1052 l
+2011_09_26/2011_09_26_drive_0019_sync 89 l
+2011_09_26/2011_09_26_drive_0087_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 4081 l
+2011_09_30/2011_09_30_drive_0034_sync 322 l
+2011_09_26/2011_09_26_drive_0061_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 3746 l
+2011_09_26/2011_09_26_drive_0079_sync 11 l
+2011_10_03/2011_10_03_drive_0042_sync 574 r
+2011_09_30/2011_09_30_drive_0028_sync 1027 l
+2011_10_03/2011_10_03_drive_0034_sync 3762 r
+2011_09_26/2011_09_26_drive_0061_sync 2 l
+2011_09_26/2011_09_26_drive_0061_sync 295 r
+2011_09_30/2011_09_30_drive_0034_sync 383 l
+2011_09_26/2011_09_26_drive_0061_sync 343 l
+2011_10_03/2011_10_03_drive_0034_sync 2282 l
+2011_09_30/2011_09_30_drive_0034_sync 633 l
+2011_09_30/2011_09_30_drive_0028_sync 2818 r
+2011_09_30/2011_09_30_drive_0028_sync 492 l
+2011_09_26/2011_09_26_drive_0039_sync 8 r
+2011_09_26/2011_09_26_drive_0022_sync 557 l
+2011_10_03/2011_10_03_drive_0034_sync 4503 r
+2011_09_26/2011_09_26_drive_0061_sync 228 l
+2011_09_26/2011_09_26_drive_0019_sync 51 r
+2011_09_26/2011_09_26_drive_0051_sync 194 l
+2011_10_03/2011_10_03_drive_0034_sync 1986 l
+2011_09_30/2011_09_30_drive_0028_sync 4065 l
+2011_10_03/2011_10_03_drive_0042_sync 432 r
+2011_10_03/2011_10_03_drive_0034_sync 1697 r
+2011_09_30/2011_09_30_drive_0033_sync 885 r
+2011_10_03/2011_10_03_drive_0034_sync 3116 r
+2011_09_30/2011_09_30_drive_0028_sync 5083 l
+2011_09_30/2011_09_30_drive_0028_sync 4702 l
+2011_09_26/2011_09_26_drive_0018_sync 186 l
+2011_10_03/2011_10_03_drive_0034_sync 1346 r
+2011_09_30/2011_09_30_drive_0028_sync 4030 r
+2011_10_03/2011_10_03_drive_0034_sync 820 r
+2011_10_03/2011_10_03_drive_0042_sync 960 r
+2011_10_03/2011_10_03_drive_0042_sync 326 l
+2011_10_03/2011_10_03_drive_0034_sync 2853 r
+2011_09_30/2011_09_30_drive_0028_sync 1614 l
+2011_09_30/2011_09_30_drive_0028_sync 4741 l
+2011_09_30/2011_09_30_drive_0034_sync 291 r
+2011_10_03/2011_10_03_drive_0034_sync 3961 l
+2011_09_30/2011_09_30_drive_0020_sync 179 r
+2011_09_30/2011_09_30_drive_0028_sync 2182 l
+2011_09_26/2011_09_26_drive_0104_sync 222 r
+2011_09_26/2011_09_26_drive_0087_sync 481 r
+2011_09_30/2011_09_30_drive_0034_sync 834 l
+2011_09_26/2011_09_26_drive_0070_sync 168 r
+2011_09_26/2011_09_26_drive_0018_sync 85 l
+2011_09_30/2011_09_30_drive_0028_sync 3289 r
+2011_09_30/2011_09_30_drive_0028_sync 2379 r
+2011_09_26/2011_09_26_drive_0039_sync 111 r
+2011_09_26/2011_09_26_drive_0051_sync 216 r
+2011_09_26/2011_09_26_drive_0022_sync 377 l
+2011_09_30/2011_09_30_drive_0034_sync 982 r
+2011_09_26/2011_09_26_drive_0035_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 1236 l
+2011_10_03/2011_10_03_drive_0034_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 3531 r
+2011_09_26/2011_09_26_drive_0091_sync 250 l
+2011_09_26/2011_09_26_drive_0095_sync 104 l
+2011_09_30/2011_09_30_drive_0034_sync 1055 r
+2011_09_26/2011_09_26_drive_0005_sync 42 l
+2011_10_03/2011_10_03_drive_0034_sync 4490 r
+2011_09_26/2011_09_26_drive_0032_sync 269 l
+2011_10_03/2011_10_03_drive_0042_sync 802 r
+2011_09_26/2011_09_26_drive_0061_sync 524 r
+2011_09_30/2011_09_30_drive_0028_sync 3901 l
+2011_10_03/2011_10_03_drive_0034_sync 3385 r
+2011_09_26/2011_09_26_drive_0060_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 4620 l
+2011_09_30/2011_09_30_drive_0034_sync 506 l
+2011_09_26/2011_09_26_drive_0035_sync 83 r
+2011_09_30/2011_09_30_drive_0020_sync 1046 r
+2011_09_30/2011_09_30_drive_0028_sync 805 r
+2011_09_30/2011_09_30_drive_0028_sync 1754 r
+2011_09_26/2011_09_26_drive_0087_sync 312 r
+2011_09_26/2011_09_26_drive_0057_sync 10 l
+2011_09_30/2011_09_30_drive_0033_sync 925 l
+2011_09_30/2011_09_30_drive_0028_sync 3413 l
+2011_09_26/2011_09_26_drive_0051_sync 290 r
+2011_10_03/2011_10_03_drive_0034_sync 2875 l
+2011_10_03/2011_10_03_drive_0042_sync 66 r
+2011_09_30/2011_09_30_drive_0034_sync 1121 l
+2011_09_30/2011_09_30_drive_0020_sync 952 l
+2011_09_26/2011_09_26_drive_0011_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 881 r
+2011_10_03/2011_10_03_drive_0034_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 3751 l
+2011_09_30/2011_09_30_drive_0028_sync 2359 l
+2011_09_26/2011_09_26_drive_0070_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 1300 r
+2011_09_26/2011_09_26_drive_0057_sync 290 r
+2011_09_26/2011_09_26_drive_0028_sync 23 r
+2011_09_30/2011_09_30_drive_0020_sync 1058 r
+2011_09_26/2011_09_26_drive_0019_sync 480 l
+2011_09_26/2011_09_26_drive_0070_sync 314 l
+2011_09_30/2011_09_30_drive_0028_sync 937 r
+2011_09_30/2011_09_30_drive_0020_sync 151 r
+2011_10_03/2011_10_03_drive_0034_sync 3505 l
+2011_09_30/2011_09_30_drive_0034_sync 1077 l
+2011_10_03/2011_10_03_drive_0034_sync 2047 r
+2011_09_30/2011_09_30_drive_0020_sync 55 r
+2011_09_26/2011_09_26_drive_0019_sync 143 l
+2011_09_30/2011_09_30_drive_0028_sync 277 l
+2011_10_03/2011_10_03_drive_0034_sync 1097 l
+2011_09_30/2011_09_30_drive_0034_sync 1053 r
+2011_09_30/2011_09_30_drive_0028_sync 3430 l
+2011_09_30/2011_09_30_drive_0028_sync 1107 r
+2011_09_26/2011_09_26_drive_0104_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 935 r
+2011_10_03/2011_10_03_drive_0034_sync 1622 l
+2011_09_26/2011_09_26_drive_0039_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 2324 r
+2011_09_30/2011_09_30_drive_0028_sync 3038 l
+2011_09_30/2011_09_30_drive_0028_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 3013 r
+2011_09_26/2011_09_26_drive_0035_sync 86 r
+2011_09_30/2011_09_30_drive_0020_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 3915 l
+2011_10_03/2011_10_03_drive_0034_sync 3640 r
+2011_09_26/2011_09_26_drive_0104_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 2109 r
+2011_09_30/2011_09_30_drive_0020_sync 199 r
+2011_10_03/2011_10_03_drive_0034_sync 3960 r
+2011_10_03/2011_10_03_drive_0042_sync 748 l
+2011_09_30/2011_09_30_drive_0033_sync 1374 l
+2011_09_30/2011_09_30_drive_0034_sync 73 r
+2011_09_26/2011_09_26_drive_0014_sync 248 l
+2011_09_26/2011_09_26_drive_0087_sync 699 r
+2011_09_30/2011_09_30_drive_0028_sync 1789 l
+2011_10_03/2011_10_03_drive_0042_sync 916 l
+2011_09_30/2011_09_30_drive_0028_sync 2672 l
+2011_09_26/2011_09_26_drive_0095_sync 18 r
+2011_09_30/2011_09_30_drive_0033_sync 882 l
+2011_09_26/2011_09_26_drive_0061_sync 286 r
+2011_09_26/2011_09_26_drive_0070_sync 262 l
+2011_09_26/2011_09_26_drive_0087_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 3747 r
+2011_09_26/2011_09_26_drive_0051_sync 135 r
+2011_10_03/2011_10_03_drive_0034_sync 3702 r
+2011_10_03/2011_10_03_drive_0042_sync 149 r
+2011_09_30/2011_09_30_drive_0033_sync 1087 l
+2011_09_30/2011_09_30_drive_0028_sync 1186 r
+2011_09_30/2011_09_30_drive_0028_sync 3052 r
+2011_10_03/2011_10_03_drive_0042_sync 629 l
+2011_09_26/2011_09_26_drive_0028_sync 104 r
+2011_09_26/2011_09_26_drive_0019_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 2624 r
+2011_10_03/2011_10_03_drive_0034_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 3470 r
+2011_09_26/2011_09_26_drive_0057_sync 29 r
+2011_09_30/2011_09_30_drive_0033_sync 1451 r
+2011_09_26/2011_09_26_drive_0014_sync 187 l
+2011_10_03/2011_10_03_drive_0034_sync 3726 l
+2011_09_30/2011_09_30_drive_0028_sync 3210 r
+2011_09_30/2011_09_30_drive_0034_sync 539 r
+2011_09_26/2011_09_26_drive_0079_sync 85 l
+2011_09_26/2011_09_26_drive_0051_sync 252 l
+2011_09_26/2011_09_26_drive_0028_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 2949 l
+2011_10_03/2011_10_03_drive_0034_sync 2835 l
+2011_10_03/2011_10_03_drive_0034_sync 2295 r
+2011_09_30/2011_09_30_drive_0028_sync 4331 r
+2011_09_26/2011_09_26_drive_0051_sync 304 l
+2011_09_30/2011_09_30_drive_0034_sync 753 l
+2011_09_26/2011_09_26_drive_0061_sync 319 r
+2011_09_26/2011_09_26_drive_0019_sync 461 l
+2011_09_26/2011_09_26_drive_0005_sync 123 r
+2011_09_30/2011_09_30_drive_0033_sync 702 r
+2011_09_28/2011_09_28_drive_0001_sync 6 r
+2011_09_29/2011_09_29_drive_0026_sync 15 r
+2011_09_30/2011_09_30_drive_0033_sync 533 r
+2011_09_30/2011_09_30_drive_0028_sync 39 r
+2011_09_30/2011_09_30_drive_0020_sync 533 r
+2011_09_30/2011_09_30_drive_0028_sync 4942 l
+2011_09_30/2011_09_30_drive_0028_sync 2044 r
+2011_09_30/2011_09_30_drive_0028_sync 3995 l
+2011_10_03/2011_10_03_drive_0034_sync 925 l
+2011_09_26/2011_09_26_drive_0035_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 1734 r
+2011_09_30/2011_09_30_drive_0020_sync 1098 r
+2011_09_26/2011_09_26_drive_0039_sync 271 l
+2011_10_03/2011_10_03_drive_0034_sync 3085 r
+2011_09_26/2011_09_26_drive_0087_sync 156 l
+2011_10_03/2011_10_03_drive_0034_sync 1258 l
+2011_10_03/2011_10_03_drive_0034_sync 4134 l
+2011_09_30/2011_09_30_drive_0028_sync 22 r
+2011_09_30/2011_09_30_drive_0028_sync 1019 r
+2011_10_03/2011_10_03_drive_0034_sync 3761 r
+2011_10_03/2011_10_03_drive_0042_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 2321 r
+2011_09_26/2011_09_26_drive_0028_sync 313 r
+2011_09_26/2011_09_26_drive_0022_sync 70 l
+2011_09_26/2011_09_26_drive_0061_sync 334 r
+2011_10_03/2011_10_03_drive_0042_sync 382 r
+2011_09_30/2011_09_30_drive_0028_sync 2193 l
+2011_09_26/2011_09_26_drive_0028_sync 282 l
+2011_09_30/2011_09_30_drive_0033_sync 866 l
+2011_10_03/2011_10_03_drive_0034_sync 1687 r
+2011_09_30/2011_09_30_drive_0028_sync 2845 r
+2011_09_26/2011_09_26_drive_0091_sync 251 r
+2011_09_26/2011_09_26_drive_0022_sync 431 r
+2011_09_26/2011_09_26_drive_0087_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 4521 l
+2011_09_26/2011_09_26_drive_0061_sync 529 l
+2011_10_03/2011_10_03_drive_0034_sync 1095 r
+2011_09_30/2011_09_30_drive_0034_sync 130 r
+2011_09_30/2011_09_30_drive_0033_sync 1452 l
+2011_09_30/2011_09_30_drive_0034_sync 1195 l
+2011_09_26/2011_09_26_drive_0087_sync 616 r
+2011_09_30/2011_09_30_drive_0028_sync 181 r
+2011_09_30/2011_09_30_drive_0028_sync 1422 r
+2011_09_30/2011_09_30_drive_0020_sync 717 l
+2011_10_03/2011_10_03_drive_0034_sync 2996 r
+2011_09_26/2011_09_26_drive_0028_sync 325 l
+2011_09_30/2011_09_30_drive_0028_sync 663 l
+2011_09_26/2011_09_26_drive_0022_sync 582 r
+2011_09_30/2011_09_30_drive_0033_sync 996 l
+2011_09_30/2011_09_30_drive_0020_sync 919 r
+2011_09_29/2011_09_29_drive_0004_sync 201 l
+2011_09_30/2011_09_30_drive_0028_sync 2871 l
+2011_10_03/2011_10_03_drive_0034_sync 3757 r
+2011_09_26/2011_09_26_drive_0005_sync 118 r
+2011_09_30/2011_09_30_drive_0028_sync 202 l
+2011_10_03/2011_10_03_drive_0034_sync 3738 r
+2011_10_03/2011_10_03_drive_0034_sync 106 l
+2011_09_26/2011_09_26_drive_0022_sync 61 r
+2011_09_26/2011_09_26_drive_0095_sync 253 l
+2011_09_26/2011_09_26_drive_0022_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 1733 l
+2011_09_26/2011_09_26_drive_0057_sync 201 l
+2011_09_26/2011_09_26_drive_0035_sync 105 r
+2011_09_26/2011_09_26_drive_0070_sync 383 r
+2011_09_30/2011_09_30_drive_0034_sync 27 r
+2011_10_03/2011_10_03_drive_0034_sync 3313 r
+2011_09_26/2011_09_26_drive_0019_sync 342 r
+2011_09_26/2011_09_26_drive_0061_sync 375 l
+2011_09_26/2011_09_26_drive_0070_sync 107 r
+2011_09_30/2011_09_30_drive_0033_sync 1306 r
+2011_09_30/2011_09_30_drive_0020_sync 998 l
+2011_09_30/2011_09_30_drive_0028_sync 446 r
+2011_09_30/2011_09_30_drive_0034_sync 942 r
+2011_09_30/2011_09_30_drive_0033_sync 554 r
+2011_10_03/2011_10_03_drive_0034_sync 2190 l
+2011_09_30/2011_09_30_drive_0033_sync 592 r
+2011_10_03/2011_10_03_drive_0034_sync 3687 l
+2011_09_26/2011_09_26_drive_0070_sync 206 l
+2011_09_30/2011_09_30_drive_0020_sync 889 r
+2011_09_26/2011_09_26_drive_0022_sync 179 r
+2011_09_26/2011_09_26_drive_0061_sync 257 r
+2011_09_26/2011_09_26_drive_0028_sync 11 r
+2011_09_26/2011_09_26_drive_0051_sync 56 l
+2011_10_03/2011_10_03_drive_0034_sync 3706 r
+2011_09_26/2011_09_26_drive_0005_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 2996 l
+2011_09_26/2011_09_26_drive_0014_sync 164 r
+2011_10_03/2011_10_03_drive_0034_sync 2696 r
+2011_09_30/2011_09_30_drive_0034_sync 267 l
+2011_09_26/2011_09_26_drive_0061_sync 689 r
+2011_09_26/2011_09_26_drive_0022_sync 743 r
+2011_09_30/2011_09_30_drive_0028_sync 4897 r
+2011_09_30/2011_09_30_drive_0028_sync 996 r
+2011_09_26/2011_09_26_drive_0039_sync 323 r
+2011_09_30/2011_09_30_drive_0033_sync 1405 l
+2011_09_30/2011_09_30_drive_0028_sync 3382 r
+2011_09_30/2011_09_30_drive_0028_sync 4479 l
+2011_09_26/2011_09_26_drive_0087_sync 657 r
+2011_10_03/2011_10_03_drive_0034_sync 3483 l
+2011_09_26/2011_09_26_drive_0051_sync 287 l
+2011_09_26/2011_09_26_drive_0015_sync 164 r
+2011_09_26/2011_09_26_drive_0057_sync 97 l
+2011_09_30/2011_09_30_drive_0033_sync 1344 l
+2011_09_30/2011_09_30_drive_0028_sync 4549 r
+2011_10_03/2011_10_03_drive_0034_sync 1865 l
+2011_10_03/2011_10_03_drive_0034_sync 1204 r
+2011_09_26/2011_09_26_drive_0070_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 954 r
+2011_09_26/2011_09_26_drive_0019_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 1126 l
+2011_09_30/2011_09_30_drive_0033_sync 299 r
+2011_09_30/2011_09_30_drive_0028_sync 534 r
+2011_10_03/2011_10_03_drive_0034_sync 1052 l
+2011_09_26/2011_09_26_drive_0022_sync 508 l
+2011_09_26/2011_09_26_drive_0061_sync 380 r
+2011_10_03/2011_10_03_drive_0034_sync 2493 r
+2011_09_26/2011_09_26_drive_0061_sync 429 r
+2011_09_30/2011_09_30_drive_0028_sync 3164 l
+2011_09_26/2011_09_26_drive_0057_sync 225 r
+2011_10_03/2011_10_03_drive_0042_sync 1070 r
+2011_09_26/2011_09_26_drive_0022_sync 424 l
+2011_09_26/2011_09_26_drive_0057_sync 54 r
+2011_09_26/2011_09_26_drive_0011_sync 147 r
+2011_09_30/2011_09_30_drive_0020_sync 255 r
+2011_09_30/2011_09_30_drive_0028_sync 977 l
+2011_09_30/2011_09_30_drive_0028_sync 920 l
+2011_09_30/2011_09_30_drive_0028_sync 4450 r
+2011_09_30/2011_09_30_drive_0028_sync 3636 l
+2011_10_03/2011_10_03_drive_0042_sync 1017 l
+2011_09_30/2011_09_30_drive_0028_sync 2431 l
+2011_09_26/2011_09_26_drive_0091_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 3353 r
+2011_10_03/2011_10_03_drive_0034_sync 2873 l
+2011_09_30/2011_09_30_drive_0028_sync 604 l
+2011_09_26/2011_09_26_drive_0022_sync 627 r
+2011_10_03/2011_10_03_drive_0034_sync 561 l
+2011_09_30/2011_09_30_drive_0020_sync 651 l
+2011_09_26/2011_09_26_drive_0014_sync 131 r
+2011_09_26/2011_09_26_drive_0015_sync 137 r
+2011_09_26/2011_09_26_drive_0051_sync 355 l
+2011_09_30/2011_09_30_drive_0028_sync 1496 r
+2011_10_03/2011_10_03_drive_0034_sync 362 r
+2011_10_03/2011_10_03_drive_0034_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 4413 r
+2011_09_30/2011_09_30_drive_0028_sync 5169 l
+2011_09_26/2011_09_26_drive_0061_sync 620 r
+2011_10_03/2011_10_03_drive_0034_sync 3229 l
+2011_09_30/2011_09_30_drive_0028_sync 543 r
+2011_10_03/2011_10_03_drive_0034_sync 3657 r
+2011_10_03/2011_10_03_drive_0034_sync 3011 l
+2011_09_26/2011_09_26_drive_0015_sync 82 r
+2011_10_03/2011_10_03_drive_0034_sync 3284 r
+2011_10_03/2011_10_03_drive_0034_sync 693 l
+2011_09_30/2011_09_30_drive_0034_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 4595 l
+2011_09_30/2011_09_30_drive_0033_sync 0 l
+2011_09_30/2011_09_30_drive_0034_sync 957 l
+2011_09_30/2011_09_30_drive_0028_sync 1165 r
+2011_09_30/2011_09_30_drive_0034_sync 1007 r
+2011_09_30/2011_09_30_drive_0028_sync 1458 r
+2011_10_03/2011_10_03_drive_0034_sync 290 l
+2011_10_03/2011_10_03_drive_0042_sync 501 r
+2011_09_30/2011_09_30_drive_0028_sync 4204 l
+2011_09_30/2011_09_30_drive_0028_sync 2964 r
+2011_09_26/2011_09_26_drive_0018_sync 203 r
+2011_10_03/2011_10_03_drive_0034_sync 2765 r
+2011_10_03/2011_10_03_drive_0034_sync 1714 r
+2011_09_30/2011_09_30_drive_0028_sync 1747 r
+2011_09_30/2011_09_30_drive_0028_sync 819 r
+2011_10_03/2011_10_03_drive_0034_sync 1009 r
+2011_09_29/2011_09_29_drive_0004_sync 140 l
+2011_09_26/2011_09_26_drive_0028_sync 8 r
+2011_09_30/2011_09_30_drive_0028_sync 5004 l
+2011_10_03/2011_10_03_drive_0034_sync 1975 r
+2011_09_26/2011_09_26_drive_0087_sync 173 l
+2011_10_03/2011_10_03_drive_0034_sync 2681 r
+2011_09_30/2011_09_30_drive_0033_sync 244 r
+2011_09_26/2011_09_26_drive_0032_sync 74 r
+2011_09_26/2011_09_26_drive_0019_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 512 l
+2011_09_30/2011_09_30_drive_0028_sync 2402 l
+2011_10_03/2011_10_03_drive_0034_sync 404 r
+2011_09_26/2011_09_26_drive_0095_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 3116 l
+2011_09_26/2011_09_26_drive_0095_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 4623 r
+2011_09_30/2011_09_30_drive_0028_sync 782 r
+2011_10_03/2011_10_03_drive_0034_sync 4251 r
+2011_09_26/2011_09_26_drive_0019_sync 34 r
+2011_10_03/2011_10_03_drive_0042_sync 440 r
+2011_09_26/2011_09_26_drive_0014_sync 85 l
+2011_09_30/2011_09_30_drive_0028_sync 111 r
+2011_09_30/2011_09_30_drive_0028_sync 1308 r
+2011_09_26/2011_09_26_drive_0070_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 1846 r
+2011_09_26/2011_09_26_drive_0015_sync 81 r
+2011_09_26/2011_09_26_drive_0104_sync 183 r
+2011_10_03/2011_10_03_drive_0034_sync 2436 l
+2011_09_29/2011_09_29_drive_0004_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 3548 r
+2011_09_30/2011_09_30_drive_0028_sync 2256 r
+2011_09_30/2011_09_30_drive_0033_sync 810 r
+2011_10_03/2011_10_03_drive_0034_sync 1786 l
+2011_09_26/2011_09_26_drive_0087_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 4088 l
+2011_10_03/2011_10_03_drive_0034_sync 1195 l
+2011_09_30/2011_09_30_drive_0028_sync 836 l
+2011_10_03/2011_10_03_drive_0034_sync 2009 r
+2011_09_30/2011_09_30_drive_0020_sync 187 r
+2011_09_26/2011_09_26_drive_0032_sync 214 r
+2011_09_26/2011_09_26_drive_0070_sync 149 l
+2011_09_26/2011_09_26_drive_0061_sync 389 r
+2011_09_30/2011_09_30_drive_0028_sync 904 l
+2011_10_03/2011_10_03_drive_0034_sync 4631 l
+2011_10_03/2011_10_03_drive_0034_sync 2013 l
+2011_09_26/2011_09_26_drive_0061_sync 497 l
+2011_09_26/2011_09_26_drive_0057_sync 286 r
+2011_10_03/2011_10_03_drive_0034_sync 999 r
+2011_09_26/2011_09_26_drive_0032_sync 389 l
+2011_10_03/2011_10_03_drive_0034_sync 2404 l
+2011_09_30/2011_09_30_drive_0020_sync 667 l
+2011_09_30/2011_09_30_drive_0028_sync 1881 r
+2011_09_26/2011_09_26_drive_0087_sync 27 l
+2011_10_03/2011_10_03_drive_0042_sync 852 r
+2011_10_03/2011_10_03_drive_0034_sync 414 r
+2011_09_30/2011_09_30_drive_0028_sync 4411 l
+2011_10_03/2011_10_03_drive_0034_sync 2129 l
+2011_09_26/2011_09_26_drive_0087_sync 614 l
+2011_10_03/2011_10_03_drive_0034_sync 2603 l
+2011_09_30/2011_09_30_drive_0028_sync 4723 r
+2011_09_30/2011_09_30_drive_0028_sync 3241 r
+2011_09_26/2011_09_26_drive_0051_sync 224 l
+2011_09_26/2011_09_26_drive_0070_sync 322 l
+2011_10_03/2011_10_03_drive_0034_sync 3763 l
+2011_09_30/2011_09_30_drive_0028_sync 2427 r
+2011_09_26/2011_09_26_drive_0017_sync 110 l
+2011_10_03/2011_10_03_drive_0042_sync 768 l
+2011_09_30/2011_09_30_drive_0028_sync 4734 r
+2011_09_30/2011_09_30_drive_0028_sync 5099 l
+2011_09_30/2011_09_30_drive_0034_sync 427 l
+2011_09_26/2011_09_26_drive_0019_sync 41 l
+2011_10_03/2011_10_03_drive_0034_sync 2793 l
+2011_09_29/2011_09_29_drive_0026_sync 145 l
+2011_09_30/2011_09_30_drive_0020_sync 203 l
+2011_09_26/2011_09_26_drive_0070_sync 218 r
+2011_10_03/2011_10_03_drive_0042_sync 1024 r
+2011_09_30/2011_09_30_drive_0028_sync 4560 l
+2011_09_26/2011_09_26_drive_0104_sync 308 r
+2011_09_26/2011_09_26_drive_0061_sync 338 l
+2011_10_03/2011_10_03_drive_0034_sync 2706 r
+2011_09_30/2011_09_30_drive_0028_sync 2044 l
+2011_09_30/2011_09_30_drive_0028_sync 34 l
+2011_09_26/2011_09_26_drive_0014_sync 31 l
+2011_09_30/2011_09_30_drive_0033_sync 736 l
+2011_09_30/2011_09_30_drive_0028_sync 1528 l
+2011_09_26/2011_09_26_drive_0104_sync 248 l
+2011_09_26/2011_09_26_drive_0057_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 82 r
+2011_09_30/2011_09_30_drive_0020_sync 545 l
+2011_09_30/2011_09_30_drive_0020_sync 522 l
+2011_09_26/2011_09_26_drive_0017_sync 64 r
+2011_10_03/2011_10_03_drive_0042_sync 966 r
+2011_09_30/2011_09_30_drive_0028_sync 4630 r
+2011_09_30/2011_09_30_drive_0033_sync 924 r
+2011_09_30/2011_09_30_drive_0028_sync 733 r
+2011_09_30/2011_09_30_drive_0033_sync 29 l
+2011_09_30/2011_09_30_drive_0020_sync 8 r
+2011_09_30/2011_09_30_drive_0028_sync 81 l
+2011_09_28/2011_09_28_drive_0001_sync 77 r
+2011_09_30/2011_09_30_drive_0033_sync 1249 r
+2011_09_30/2011_09_30_drive_0028_sync 1854 l
+2011_09_30/2011_09_30_drive_0028_sync 3155 l
+2011_09_30/2011_09_30_drive_0034_sync 886 r
+2011_09_26/2011_09_26_drive_0060_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 2250 r
+2011_09_30/2011_09_30_drive_0028_sync 3966 r
+2011_09_26/2011_09_26_drive_0070_sync 26 r
+2011_09_26/2011_09_26_drive_0051_sync 50 r
+2011_09_26/2011_09_26_drive_0095_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 549 r
+2011_09_26/2011_09_26_drive_0070_sync 342 l
+2011_09_26/2011_09_26_drive_0032_sync 374 r
+2011_09_30/2011_09_30_drive_0034_sync 1063 l
+2011_09_30/2011_09_30_drive_0028_sync 3228 r
+2011_09_26/2011_09_26_drive_0057_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 2899 l
+2011_10_03/2011_10_03_drive_0034_sync 3734 l
+2011_09_28/2011_09_28_drive_0001_sync 55 r
+2011_10_03/2011_10_03_drive_0042_sync 1045 l
+2011_10_03/2011_10_03_drive_0034_sync 1804 l
+2011_09_30/2011_09_30_drive_0020_sync 1002 l
+2011_09_26/2011_09_26_drive_0070_sync 389 r
+2011_10_03/2011_10_03_drive_0034_sync 766 l
+2011_09_26/2011_09_26_drive_0070_sync 114 r
+2011_09_26/2011_09_26_drive_0091_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 64 r
+2011_09_26/2011_09_26_drive_0057_sync 262 l
+2011_09_26/2011_09_26_drive_0060_sync 61 r
+2011_09_26/2011_09_26_drive_0091_sync 300 r
+2011_09_30/2011_09_30_drive_0028_sync 3452 l
+2011_09_30/2011_09_30_drive_0020_sync 343 r
+2011_09_30/2011_09_30_drive_0028_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 2602 l
+2011_09_30/2011_09_30_drive_0028_sync 5083 r
+2011_10_03/2011_10_03_drive_0034_sync 1574 l
+2011_09_30/2011_09_30_drive_0028_sync 1803 r
+2011_10_03/2011_10_03_drive_0034_sync 1227 r
+2011_09_30/2011_09_30_drive_0028_sync 4515 r
+2011_09_26/2011_09_26_drive_0032_sync 288 l
+2011_09_26/2011_09_26_drive_0019_sync 296 l
+2011_10_03/2011_10_03_drive_0034_sync 2834 l
+2011_09_26/2011_09_26_drive_0091_sync 256 r
+2011_09_30/2011_09_30_drive_0028_sync 1963 l
+2011_09_26/2011_09_26_drive_0087_sync 64 l
+2011_09_26/2011_09_26_drive_0001_sync 52 l
+2011_09_26/2011_09_26_drive_0015_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 3150 r
+2011_09_30/2011_09_30_drive_0028_sync 1474 l
+2011_09_30/2011_09_30_drive_0034_sync 1075 r
+2011_10_03/2011_10_03_drive_0034_sync 3663 r
+2011_09_26/2011_09_26_drive_0018_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 3986 r
+2011_09_30/2011_09_30_drive_0033_sync 234 l
+2011_10_03/2011_10_03_drive_0034_sync 2587 r
+2011_09_26/2011_09_26_drive_0070_sync 412 l
+2011_09_30/2011_09_30_drive_0028_sync 4957 l
+2011_09_30/2011_09_30_drive_0028_sync 2624 r
+2011_09_30/2011_09_30_drive_0033_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 3245 l
+2011_09_30/2011_09_30_drive_0028_sync 3607 r
+2011_10_03/2011_10_03_drive_0034_sync 1794 l
+2011_09_30/2011_09_30_drive_0028_sync 2519 l
+2011_09_26/2011_09_26_drive_0061_sync 231 r
+2011_09_30/2011_09_30_drive_0020_sync 118 r
+2011_09_30/2011_09_30_drive_0034_sync 306 r
+2011_09_26/2011_09_26_drive_0039_sync 325 r
+2011_09_26/2011_09_26_drive_0005_sync 31 r
+2011_09_26/2011_09_26_drive_0095_sync 24 l
+2011_09_30/2011_09_30_drive_0034_sync 39 r
+2011_10_03/2011_10_03_drive_0042_sync 1045 r
+2011_10_03/2011_10_03_drive_0034_sync 712 l
+2011_10_03/2011_10_03_drive_0034_sync 4091 l
+2011_09_26/2011_09_26_drive_0001_sync 17 r
+2011_09_26/2011_09_26_drive_0039_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 4628 r
+2011_09_26/2011_09_26_drive_0017_sync 22 r
+2011_09_30/2011_09_30_drive_0034_sync 1097 r
+2011_10_03/2011_10_03_drive_0034_sync 3838 l
+2011_09_30/2011_09_30_drive_0020_sync 921 l
+2011_09_26/2011_09_26_drive_0087_sync 593 r
+2011_09_30/2011_09_30_drive_0028_sync 3215 l
+2011_10_03/2011_10_03_drive_0034_sync 1695 r
+2011_09_26/2011_09_26_drive_0091_sync 47 r
+2011_10_03/2011_10_03_drive_0034_sync 4593 r
+2011_10_03/2011_10_03_drive_0034_sync 2847 r
+2011_10_03/2011_10_03_drive_0034_sync 252 l
+2011_09_26/2011_09_26_drive_0070_sync 363 l
+2011_10_03/2011_10_03_drive_0034_sync 3269 l
+2011_09_30/2011_09_30_drive_0033_sync 1284 r
+2011_09_30/2011_09_30_drive_0028_sync 2445 r
+2011_10_03/2011_10_03_drive_0034_sync 2375 r
+2011_09_26/2011_09_26_drive_0032_sync 235 l
+2011_09_29/2011_09_29_drive_0004_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 2559 r
+2011_09_26/2011_09_26_drive_0087_sync 100 r
+2011_09_26/2011_09_26_drive_0011_sync 95 r
+2011_10_03/2011_10_03_drive_0034_sync 2297 l
+2011_10_03/2011_10_03_drive_0034_sync 322 r
+2011_10_03/2011_10_03_drive_0034_sync 475 r
+2011_09_26/2011_09_26_drive_0022_sync 418 r
+2011_10_03/2011_10_03_drive_0034_sync 4485 l
+2011_09_26/2011_09_26_drive_0011_sync 29 r
+2011_10_03/2011_10_03_drive_0034_sync 406 l
+2011_09_30/2011_09_30_drive_0028_sync 1476 r
+2011_09_26/2011_09_26_drive_0087_sync 179 l
+2011_09_26/2011_09_26_drive_0039_sync 241 l
+2011_10_03/2011_10_03_drive_0034_sync 1821 l
+2011_09_30/2011_09_30_drive_0028_sync 4681 l
+2011_09_30/2011_09_30_drive_0034_sync 497 l
+2011_10_03/2011_10_03_drive_0034_sync 4012 r
+2011_10_03/2011_10_03_drive_0034_sync 3999 l
+2011_09_30/2011_09_30_drive_0028_sync 5086 r
+2011_09_29/2011_09_29_drive_0004_sync 104 l
+2011_09_26/2011_09_26_drive_0087_sync 455 r
+2011_09_26/2011_09_26_drive_0061_sync 459 r
+2011_09_26/2011_09_26_drive_0095_sync 179 r
+2011_09_26/2011_09_26_drive_0019_sync 38 l
+2011_09_26/2011_09_26_drive_0060_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 2891 r
+2011_10_03/2011_10_03_drive_0034_sync 396 l
+2011_09_26/2011_09_26_drive_0091_sync 303 l
+2011_09_30/2011_09_30_drive_0033_sync 16 l
+2011_09_26/2011_09_26_drive_0011_sync 140 l
+2011_09_26/2011_09_26_drive_0079_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4141 r
+2011_10_03/2011_10_03_drive_0034_sync 2156 r
+2011_09_26/2011_09_26_drive_0057_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 4228 l
+2011_09_26/2011_09_26_drive_0104_sync 234 l
+2011_09_30/2011_09_30_drive_0028_sync 3088 r
+2011_09_26/2011_09_26_drive_0032_sync 202 l
+2011_09_30/2011_09_30_drive_0028_sync 4532 r
+2011_10_03/2011_10_03_drive_0034_sync 530 r
+2011_09_26/2011_09_26_drive_0095_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 2567 l
+2011_10_03/2011_10_03_drive_0034_sync 3603 l
+2011_09_30/2011_09_30_drive_0033_sync 909 r
+2011_09_26/2011_09_26_drive_0011_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 3888 l
+2011_10_03/2011_10_03_drive_0034_sync 3791 r
+2011_09_26/2011_09_26_drive_0011_sync 68 l
+2011_09_26/2011_09_26_drive_0061_sync 434 r
+2011_10_03/2011_10_03_drive_0034_sync 4363 r
+2011_09_26/2011_09_26_drive_0061_sync 617 r
+2011_09_26/2011_09_26_drive_0018_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 1331 l
+2011_09_26/2011_09_26_drive_0051_sync 431 r
+2011_10_03/2011_10_03_drive_0034_sync 2358 r
+2011_09_30/2011_09_30_drive_0028_sync 1654 r
+2011_10_03/2011_10_03_drive_0042_sync 431 r
+2011_09_30/2011_09_30_drive_0028_sync 2669 r
+2011_09_26/2011_09_26_drive_0061_sync 595 l
+2011_10_03/2011_10_03_drive_0034_sync 1434 l
+2011_09_30/2011_09_30_drive_0028_sync 214 r
+2011_10_03/2011_10_03_drive_0042_sync 848 r
+2011_09_30/2011_09_30_drive_0028_sync 3683 r
+2011_10_03/2011_10_03_drive_0034_sync 1278 l
+2011_09_30/2011_09_30_drive_0028_sync 4997 r
+2011_09_30/2011_09_30_drive_0028_sync 4421 l
+2011_09_26/2011_09_26_drive_0057_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 4612 l
+2011_09_26/2011_09_26_drive_0051_sync 38 l
+2011_09_26/2011_09_26_drive_0095_sync 0 r
+2011_10_03/2011_10_03_drive_0034_sync 738 r
+2011_10_03/2011_10_03_drive_0034_sync 3570 r
+2011_10_03/2011_10_03_drive_0034_sync 3708 r
+2011_10_03/2011_10_03_drive_0034_sync 1711 r
+2011_09_30/2011_09_30_drive_0020_sync 521 r
+2011_09_30/2011_09_30_drive_0034_sync 203 r
+2011_10_03/2011_10_03_drive_0042_sync 1025 l
+2011_09_30/2011_09_30_drive_0028_sync 3137 r
+2011_09_28/2011_09_28_drive_0001_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 350 l
+2011_09_26/2011_09_26_drive_0017_sync 109 r
+2011_10_03/2011_10_03_drive_0042_sync 302 r
+2011_09_30/2011_09_30_drive_0033_sync 99 l
+2011_09_26/2011_09_26_drive_0017_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 1444 r
+2011_10_03/2011_10_03_drive_0034_sync 1954 l
+2011_09_30/2011_09_30_drive_0020_sync 324 r
+2011_09_26/2011_09_26_drive_0011_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 2704 l
+2011_09_26/2011_09_26_drive_0035_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 495 r
+2011_09_26/2011_09_26_drive_0051_sync 214 r
+2011_10_03/2011_10_03_drive_0034_sync 3976 l
+2011_09_26/2011_09_26_drive_0087_sync 144 l
+2011_09_26/2011_09_26_drive_0022_sync 92 l
+2011_09_26/2011_09_26_drive_0039_sync 45 r
+2011_09_30/2011_09_30_drive_0034_sync 710 r
+2011_09_30/2011_09_30_drive_0028_sync 306 l
+2011_09_30/2011_09_30_drive_0028_sync 417 r
+2011_09_30/2011_09_30_drive_0033_sync 1078 r
+2011_09_26/2011_09_26_drive_0001_sync 6 l
+2011_09_26/2011_09_26_drive_0028_sync 224 l
+2011_10_03/2011_10_03_drive_0034_sync 3352 r
+2011_09_30/2011_09_30_drive_0034_sync 1065 l
+2011_09_26/2011_09_26_drive_0060_sync 48 l
+2011_09_26/2011_09_26_drive_0032_sync 318 r
+2011_09_30/2011_09_30_drive_0034_sync 169 l
+2011_09_26/2011_09_26_drive_0087_sync 166 r
+2011_09_26/2011_09_26_drive_0087_sync 18 l
+2011_09_26/2011_09_26_drive_0015_sync 269 l
+2011_10_03/2011_10_03_drive_0034_sync 4366 l
+2011_09_26/2011_09_26_drive_0057_sync 43 r
+2011_09_30/2011_09_30_drive_0034_sync 575 r
+2011_09_26/2011_09_26_drive_0028_sync 137 r
+2011_09_26/2011_09_26_drive_0039_sync 166 r
+2011_09_30/2011_09_30_drive_0028_sync 4320 l
+2011_09_30/2011_09_30_drive_0028_sync 3113 l
+2011_09_26/2011_09_26_drive_0051_sync 24 r
+2011_10_03/2011_10_03_drive_0042_sync 834 r
+2011_09_30/2011_09_30_drive_0020_sync 209 r
+2011_09_30/2011_09_30_drive_0033_sync 1358 r
+2011_09_30/2011_09_30_drive_0028_sync 1549 r
+2011_09_30/2011_09_30_drive_0033_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 3356 r
+2011_10_03/2011_10_03_drive_0034_sync 443 r
+2011_09_26/2011_09_26_drive_0011_sync 158 r
+2011_09_26/2011_09_26_drive_0104_sync 41 r
+2011_09_26/2011_09_26_drive_0035_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 4949 l
+2011_10_03/2011_10_03_drive_0034_sync 4216 r
+2011_10_03/2011_10_03_drive_0034_sync 921 l
+2011_10_03/2011_10_03_drive_0034_sync 2330 l
+2011_09_30/2011_09_30_drive_0028_sync 1904 l
+2011_10_03/2011_10_03_drive_0034_sync 3103 r
+2011_09_30/2011_09_30_drive_0028_sync 2602 l
+2011_10_03/2011_10_03_drive_0034_sync 2388 r
+2011_10_03/2011_10_03_drive_0034_sync 3656 r
+2011_09_26/2011_09_26_drive_0061_sync 530 r
+2011_10_03/2011_10_03_drive_0034_sync 1232 l
+2011_09_30/2011_09_30_drive_0034_sync 436 l
+2011_09_26/2011_09_26_drive_0018_sync 63 r
+2011_09_26/2011_09_26_drive_0057_sync 39 l
+2011_09_26/2011_09_26_drive_0015_sync 197 l
+2011_09_30/2011_09_30_drive_0034_sync 600 l
+2011_10_03/2011_10_03_drive_0034_sync 1603 l
+2011_10_03/2011_10_03_drive_0034_sync 2216 r
+2011_09_26/2011_09_26_drive_0022_sync 437 r
+2011_10_03/2011_10_03_drive_0034_sync 1526 l
+2011_09_26/2011_09_26_drive_0019_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 4566 r
+2011_09_26/2011_09_26_drive_0022_sync 528 l
+2011_09_30/2011_09_30_drive_0034_sync 444 l
+2011_09_30/2011_09_30_drive_0034_sync 684 r
+2011_09_30/2011_09_30_drive_0033_sync 370 l
+2011_09_30/2011_09_30_drive_0028_sync 2099 r
+2011_10_03/2011_10_03_drive_0034_sync 1169 l
+2011_10_03/2011_10_03_drive_0034_sync 1700 l
+2011_09_26/2011_09_26_drive_0005_sync 77 l
+2011_09_26/2011_09_26_drive_0015_sync 153 r
+2011_09_26/2011_09_26_drive_0087_sync 564 r
+2011_09_26/2011_09_26_drive_0061_sync 240 l
+2011_09_30/2011_09_30_drive_0028_sync 2250 r
+2011_09_30/2011_09_30_drive_0033_sync 311 r
+2011_09_30/2011_09_30_drive_0028_sync 1188 l
+2011_09_30/2011_09_30_drive_0028_sync 1259 r
+2011_09_30/2011_09_30_drive_0020_sync 980 r
+2011_09_26/2011_09_26_drive_0087_sync 571 l
+2011_09_30/2011_09_30_drive_0034_sync 853 l
+2011_09_30/2011_09_30_drive_0034_sync 1146 r
+2011_09_26/2011_09_26_drive_0051_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 3975 r
+2011_09_30/2011_09_30_drive_0028_sync 813 r
+2011_09_30/2011_09_30_drive_0033_sync 1548 r
+2011_09_30/2011_09_30_drive_0028_sync 3350 r
+2011_09_26/2011_09_26_drive_0087_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 1749 r
+2011_09_26/2011_09_26_drive_0019_sync 283 l
+2011_09_26/2011_09_26_drive_0015_sync 31 r
+2011_09_26/2011_09_26_drive_0060_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 2994 l
+2011_09_30/2011_09_30_drive_0028_sync 1988 r
+2011_09_26/2011_09_26_drive_0051_sync 35 l
+2011_09_26/2011_09_26_drive_0022_sync 443 l
+2011_09_30/2011_09_30_drive_0034_sync 955 l
+2011_09_30/2011_09_30_drive_0028_sync 1776 r
+2011_09_30/2011_09_30_drive_0020_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 573 r
+2011_09_30/2011_09_30_drive_0028_sync 4462 l
+2011_10_03/2011_10_03_drive_0034_sync 436 l
+2011_09_30/2011_09_30_drive_0034_sync 892 r
+2011_09_28/2011_09_28_drive_0001_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 1523 r
+2011_09_30/2011_09_30_drive_0033_sync 166 r
+2011_10_03/2011_10_03_drive_0034_sync 1039 l
+2011_09_30/2011_09_30_drive_0028_sync 1919 r
+2011_09_26/2011_09_26_drive_0091_sync 139 r
+2011_10_03/2011_10_03_drive_0042_sync 106 r
+2011_09_30/2011_09_30_drive_0033_sync 869 r
+2011_09_26/2011_09_26_drive_0061_sync 338 r
+2011_09_30/2011_09_30_drive_0020_sync 1044 l
+2011_10_03/2011_10_03_drive_0042_sync 164 r
+2011_10_03/2011_10_03_drive_0034_sync 591 l
+2011_09_26/2011_09_26_drive_0051_sync 43 r
+2011_09_26/2011_09_26_drive_0028_sync 224 r
+2011_09_26/2011_09_26_drive_0014_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 689 l
+2011_09_30/2011_09_30_drive_0028_sync 4943 r
+2011_09_29/2011_09_29_drive_0026_sync 132 l
+2011_09_30/2011_09_30_drive_0028_sync 2397 r
+2011_09_26/2011_09_26_drive_0104_sync 282 r
+2011_09_26/2011_09_26_drive_0039_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 1520 l
+2011_09_26/2011_09_26_drive_0070_sync 53 r
+2011_09_26/2011_09_26_drive_0091_sync 61 r
+2011_09_30/2011_09_30_drive_0034_sync 437 l
+2011_09_26/2011_09_26_drive_0018_sync 52 r
+2011_09_26/2011_09_26_drive_0015_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 2081 l
+2011_09_30/2011_09_30_drive_0028_sync 4879 r
+2011_10_03/2011_10_03_drive_0034_sync 2151 r
+2011_10_03/2011_10_03_drive_0034_sync 3117 l
+2011_10_03/2011_10_03_drive_0042_sync 540 r
+2011_09_26/2011_09_26_drive_0032_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 3033 l
+2011_10_03/2011_10_03_drive_0034_sync 4447 r
+2011_09_26/2011_09_26_drive_0087_sync 373 l
+2011_10_03/2011_10_03_drive_0034_sync 1606 r
+2011_09_30/2011_09_30_drive_0028_sync 1506 l
+2011_10_03/2011_10_03_drive_0042_sync 845 l
+2011_09_30/2011_09_30_drive_0028_sync 2280 r
+2011_09_30/2011_09_30_drive_0034_sync 442 r
+2011_10_03/2011_10_03_drive_0042_sync 235 r
+2011_09_26/2011_09_26_drive_0061_sync 247 r
+2011_09_26/2011_09_26_drive_0019_sync 362 l
+2011_09_30/2011_09_30_drive_0028_sync 3631 l
+2011_09_26/2011_09_26_drive_0091_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 2072 l
+2011_10_03/2011_10_03_drive_0034_sync 4444 r
+2011_09_26/2011_09_26_drive_0095_sync 116 r
+2011_09_30/2011_09_30_drive_0028_sync 4245 l
+2011_09_26/2011_09_26_drive_0014_sync 227 r
+2011_09_30/2011_09_30_drive_0028_sync 2857 l
+2011_09_26/2011_09_26_drive_0015_sync 132 l
+2011_09_30/2011_09_30_drive_0028_sync 1804 l
+2011_09_30/2011_09_30_drive_0028_sync 4609 l
+2011_10_03/2011_10_03_drive_0042_sync 1022 l
+2011_09_26/2011_09_26_drive_0079_sync 60 l
+2011_09_30/2011_09_30_drive_0028_sync 4768 r
+2011_09_30/2011_09_30_drive_0028_sync 3667 l
+2011_09_26/2011_09_26_drive_0061_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 357 r
+2011_10_03/2011_10_03_drive_0034_sync 2122 l
+2011_09_29/2011_09_29_drive_0004_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 2001 r
+2011_10_03/2011_10_03_drive_0034_sync 4520 r
+2011_09_30/2011_09_30_drive_0028_sync 5161 l
+2011_10_03/2011_10_03_drive_0034_sync 2436 r
+2011_10_03/2011_10_03_drive_0042_sync 441 r
+2011_09_30/2011_09_30_drive_0028_sync 4383 r
+2011_10_03/2011_10_03_drive_0034_sync 124 r
+2011_09_30/2011_09_30_drive_0028_sync 4990 r
+2011_09_30/2011_09_30_drive_0028_sync 1788 r
+2011_09_30/2011_09_30_drive_0028_sync 2042 r
+2011_09_26/2011_09_26_drive_0070_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 1475 r
+2011_09_30/2011_09_30_drive_0033_sync 589 r
+2011_09_26/2011_09_26_drive_0070_sync 80 l
+2011_09_26/2011_09_26_drive_0057_sync 49 r
+2011_09_26/2011_09_26_drive_0011_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 2220 l
+2011_10_03/2011_10_03_drive_0034_sync 2262 r
+2011_09_30/2011_09_30_drive_0028_sync 429 l
+2011_09_30/2011_09_30_drive_0028_sync 5072 r
+2011_09_30/2011_09_30_drive_0034_sync 35 r
+2011_09_26/2011_09_26_drive_0014_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 4136 r
+2011_09_30/2011_09_30_drive_0028_sync 3356 l
+2011_09_26/2011_09_26_drive_0039_sync 269 l
+2011_09_30/2011_09_30_drive_0028_sync 119 r
+2011_09_26/2011_09_26_drive_0061_sync 635 l
+2011_09_30/2011_09_30_drive_0034_sync 904 l
+2011_09_30/2011_09_30_drive_0033_sync 38 l
+2011_09_26/2011_09_26_drive_0057_sync 321 l
+2011_09_30/2011_09_30_drive_0028_sync 3060 r
+2011_09_30/2011_09_30_drive_0034_sync 1169 r
+2011_10_03/2011_10_03_drive_0034_sync 2488 l
+2011_09_26/2011_09_26_drive_0018_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 2736 r
+2011_09_30/2011_09_30_drive_0020_sync 141 l
+2011_10_03/2011_10_03_drive_0034_sync 2333 l
+2011_09_30/2011_09_30_drive_0033_sync 811 r
+2011_10_03/2011_10_03_drive_0034_sync 796 l
+2011_09_26/2011_09_26_drive_0035_sync 76 r
+2011_09_26/2011_09_26_drive_0011_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 1501 r
+2011_09_30/2011_09_30_drive_0028_sync 713 l
+2011_09_30/2011_09_30_drive_0028_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 2171 l
+2011_10_03/2011_10_03_drive_0034_sync 1580 r
+2011_09_26/2011_09_26_drive_0070_sync 327 l
+2011_09_26/2011_09_26_drive_0015_sync 261 l
+2011_10_03/2011_10_03_drive_0034_sync 763 l
+2011_09_26/2011_09_26_drive_0011_sync 84 l
+2011_09_26/2011_09_26_drive_0001_sync 44 l
+2011_09_26/2011_09_26_drive_0070_sync 92 r
+2011_09_30/2011_09_30_drive_0028_sync 2200 r
+2011_09_30/2011_09_30_drive_0028_sync 1971 r
+2011_10_03/2011_10_03_drive_0034_sync 1664 l
+2011_09_26/2011_09_26_drive_0011_sync 7 r
+2011_09_26/2011_09_26_drive_0015_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 1954 l
+2011_09_28/2011_09_28_drive_0001_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 1173 l
+2011_10_03/2011_10_03_drive_0034_sync 1307 r
+2011_09_26/2011_09_26_drive_0061_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 3208 r
+2011_10_03/2011_10_03_drive_0042_sync 90 l
+2011_09_26/2011_09_26_drive_0070_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 1672 l
+2011_09_30/2011_09_30_drive_0034_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 2559 l
+2011_09_30/2011_09_30_drive_0028_sync 305 l
+2011_09_30/2011_09_30_drive_0028_sync 1642 r
+2011_09_26/2011_09_26_drive_0104_sync 79 l
+2011_09_26/2011_09_26_drive_0039_sync 186 r
+2011_10_03/2011_10_03_drive_0034_sync 564 r
+2011_09_26/2011_09_26_drive_0039_sync 335 l
+2011_09_30/2011_09_30_drive_0033_sync 655 l
+2011_10_03/2011_10_03_drive_0034_sync 1408 l
+2011_10_03/2011_10_03_drive_0034_sync 4413 l
+2011_10_03/2011_10_03_drive_0034_sync 994 r
+2011_09_26/2011_09_26_drive_0087_sync 149 r
+2011_09_26/2011_09_26_drive_0087_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 3523 l
+2011_10_03/2011_10_03_drive_0034_sync 596 l
+2011_09_30/2011_09_30_drive_0028_sync 259 r
+2011_09_26/2011_09_26_drive_0057_sync 114 r
+2011_09_30/2011_09_30_drive_0034_sync 514 l
+2011_09_30/2011_09_30_drive_0028_sync 1437 l
+2011_09_26/2011_09_26_drive_0051_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 684 r
+2011_09_30/2011_09_30_drive_0028_sync 1378 l
+2011_09_30/2011_09_30_drive_0028_sync 4616 r
+2011_10_03/2011_10_03_drive_0034_sync 2242 r
+2011_09_30/2011_09_30_drive_0028_sync 2487 r
+2011_09_30/2011_09_30_drive_0028_sync 4623 l
+2011_09_26/2011_09_26_drive_0018_sync 261 l
+2011_09_26/2011_09_26_drive_0060_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 682 l
+2011_09_30/2011_09_30_drive_0034_sync 189 r
+2011_09_26/2011_09_26_drive_0015_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 1409 r
+2011_09_26/2011_09_26_drive_0091_sync 299 l
+2011_09_30/2011_09_30_drive_0033_sync 265 l
+2011_10_03/2011_10_03_drive_0034_sync 2984 l
+2011_09_29/2011_09_29_drive_0004_sync 163 l
+2011_09_30/2011_09_30_drive_0020_sync 932 l
+2011_09_30/2011_09_30_drive_0028_sync 4876 l
+2011_09_30/2011_09_30_drive_0028_sync 1263 l
+2011_10_03/2011_10_03_drive_0042_sync 1061 r
+2011_09_30/2011_09_30_drive_0028_sync 4736 r
+2011_09_26/2011_09_26_drive_0001_sync 45 r
+2011_09_26/2011_09_26_drive_0087_sync 6 l
+2011_09_30/2011_09_30_drive_0020_sync 407 r
+2011_09_26/2011_09_26_drive_0070_sync 266 r
+2011_09_30/2011_09_30_drive_0028_sync 2271 r
+2011_09_30/2011_09_30_drive_0028_sync 2955 r
+2011_09_30/2011_09_30_drive_0033_sync 1589 r
+2011_10_03/2011_10_03_drive_0042_sync 788 r
+2011_09_30/2011_09_30_drive_0028_sync 1816 l
+2011_09_30/2011_09_30_drive_0020_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 2679 l
+2011_09_26/2011_09_26_drive_0061_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 3627 l
+2011_10_03/2011_10_03_drive_0034_sync 2049 l
+2011_10_03/2011_10_03_drive_0034_sync 556 r
+2011_09_26/2011_09_26_drive_0091_sync 273 l
+2011_09_26/2011_09_26_drive_0087_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 1281 r
+2011_09_26/2011_09_26_drive_0104_sync 308 l
+2011_09_30/2011_09_30_drive_0033_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 2172 l
+2011_09_30/2011_09_30_drive_0028_sync 4416 l
+2011_09_30/2011_09_30_drive_0028_sync 5102 l
+2011_09_26/2011_09_26_drive_0079_sync 97 r
+2011_09_30/2011_09_30_drive_0028_sync 3964 l
+2011_09_30/2011_09_30_drive_0028_sync 4546 r
+2011_09_26/2011_09_26_drive_0095_sync 58 r
+2011_09_26/2011_09_26_drive_0022_sync 134 r
+2011_10_03/2011_10_03_drive_0034_sync 1348 r
+2011_09_26/2011_09_26_drive_0011_sync 52 r
+2011_09_26/2011_09_26_drive_0011_sync 98 r
+2011_10_03/2011_10_03_drive_0042_sync 898 l
+2011_09_30/2011_09_30_drive_0020_sync 160 l
+2011_09_26/2011_09_26_drive_0061_sync 503 r
+2011_09_26/2011_09_26_drive_0061_sync 290 l
+2011_10_03/2011_10_03_drive_0034_sync 374 r
+2011_09_30/2011_09_30_drive_0028_sync 841 l
+2011_09_30/2011_09_30_drive_0033_sync 913 r
+2011_10_03/2011_10_03_drive_0034_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 1582 l
+2011_09_26/2011_09_26_drive_0011_sync 168 r
+2011_09_30/2011_09_30_drive_0034_sync 721 r
+2011_09_26/2011_09_26_drive_0028_sync 373 l
+2011_09_30/2011_09_30_drive_0034_sync 197 l
+2011_09_26/2011_09_26_drive_0087_sync 357 r
+2011_10_03/2011_10_03_drive_0034_sync 835 r
+2011_09_29/2011_09_29_drive_0004_sync 25 r
+2011_09_30/2011_09_30_drive_0028_sync 4043 r
+2011_10_03/2011_10_03_drive_0034_sync 3457 r
+2011_09_26/2011_09_26_drive_0051_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 4956 r
+2011_09_26/2011_09_26_drive_0015_sync 275 l
+2011_09_30/2011_09_30_drive_0034_sync 279 l
+2011_09_26/2011_09_26_drive_0022_sync 685 l
+2011_09_26/2011_09_26_drive_0061_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 2651 r
+2011_09_30/2011_09_30_drive_0020_sync 697 r
+2011_10_03/2011_10_03_drive_0034_sync 141 r
+2011_09_26/2011_09_26_drive_0061_sync 440 r
+2011_09_26/2011_09_26_drive_0028_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 2429 l
+2011_10_03/2011_10_03_drive_0042_sync 210 l
+2011_09_30/2011_09_30_drive_0034_sync 574 l
+2011_10_03/2011_10_03_drive_0034_sync 1575 l
+2011_09_30/2011_09_30_drive_0028_sync 254 r
+2011_09_26/2011_09_26_drive_0039_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 811 l
+2011_09_30/2011_09_30_drive_0034_sync 858 r
+2011_09_30/2011_09_30_drive_0028_sync 1228 r
+2011_09_30/2011_09_30_drive_0028_sync 2279 r
+2011_10_03/2011_10_03_drive_0034_sync 2407 r
+2011_10_03/2011_10_03_drive_0042_sync 678 l
+2011_09_30/2011_09_30_drive_0028_sync 2626 r
+2011_10_03/2011_10_03_drive_0034_sync 553 l
+2011_09_26/2011_09_26_drive_0028_sync 325 r
+2011_09_30/2011_09_30_drive_0034_sync 1096 r
+2011_09_30/2011_09_30_drive_0020_sync 967 r
+2011_09_26/2011_09_26_drive_0011_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 56 l
+2011_09_26/2011_09_26_drive_0079_sync 0 r
+2011_09_30/2011_09_30_drive_0033_sync 590 r
+2011_10_03/2011_10_03_drive_0034_sync 1249 r
+2011_09_26/2011_09_26_drive_0079_sync 83 l
+2011_09_26/2011_09_26_drive_0028_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 1946 l
+2011_09_26/2011_09_26_drive_0095_sync 63 l
+2011_10_03/2011_10_03_drive_0042_sync 564 l
+2011_09_30/2011_09_30_drive_0028_sync 422 l
+2011_09_30/2011_09_30_drive_0028_sync 1914 r
+2011_10_03/2011_10_03_drive_0042_sync 451 r
+2011_10_03/2011_10_03_drive_0034_sync 1665 r
+2011_09_30/2011_09_30_drive_0033_sync 441 r
+2011_09_30/2011_09_30_drive_0028_sync 2321 l
+2011_10_03/2011_10_03_drive_0034_sync 4011 r
+2011_09_30/2011_09_30_drive_0034_sync 566 l
+2011_10_03/2011_10_03_drive_0034_sync 2208 l
+2011_09_26/2011_09_26_drive_0061_sync 313 r
+2011_09_26/2011_09_26_drive_0095_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 1452 r
+2011_09_26/2011_09_26_drive_0014_sync 108 r
+2011_10_03/2011_10_03_drive_0034_sync 4015 l
+2011_09_30/2011_09_30_drive_0028_sync 5148 r
+2011_10_03/2011_10_03_drive_0042_sync 673 r
+2011_09_26/2011_09_26_drive_0039_sync 158 l
+2011_10_03/2011_10_03_drive_0034_sync 3120 l
+2011_09_30/2011_09_30_drive_0028_sync 3958 l
+2011_09_26/2011_09_26_drive_0087_sync 24 l
+2011_09_30/2011_09_30_drive_0033_sync 1537 r
+2011_09_30/2011_09_30_drive_0028_sync 2745 r
+2011_09_30/2011_09_30_drive_0034_sync 1119 r
+2011_09_30/2011_09_30_drive_0028_sync 1899 l
+2011_09_26/2011_09_26_drive_0057_sync 159 r
+2011_09_26/2011_09_26_drive_0095_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 3979 r
+2011_09_30/2011_09_30_drive_0034_sync 455 r
+2011_09_26/2011_09_26_drive_0061_sync 682 l
+2011_10_03/2011_10_03_drive_0034_sync 1125 r
+2011_09_30/2011_09_30_drive_0033_sync 502 r
+2011_10_03/2011_10_03_drive_0042_sync 937 r
+2011_09_30/2011_09_30_drive_0034_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 4846 r
+2011_09_26/2011_09_26_drive_0104_sync 0 l
+2011_09_30/2011_09_30_drive_0020_sync 256 l
+2011_09_30/2011_09_30_drive_0033_sync 576 r
+2011_09_26/2011_09_26_drive_0018_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 2054 r
+2011_09_30/2011_09_30_drive_0033_sync 733 l
+2011_09_30/2011_09_30_drive_0028_sync 167 r
+2011_09_30/2011_09_30_drive_0028_sync 2876 l
+2011_09_26/2011_09_26_drive_0091_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 1859 r
+2011_09_26/2011_09_26_drive_0070_sync 217 l
+2011_09_26/2011_09_26_drive_0070_sync 199 l
+2011_10_03/2011_10_03_drive_0034_sync 3916 r
+2011_09_26/2011_09_26_drive_0022_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 4571 r
+2011_09_30/2011_09_30_drive_0028_sync 858 r
+2011_09_30/2011_09_30_drive_0020_sync 208 r
+2011_09_30/2011_09_30_drive_0028_sync 2581 r
+2011_09_30/2011_09_30_drive_0020_sync 330 l
+2011_09_26/2011_09_26_drive_0079_sync 15 r
+2011_09_26/2011_09_26_drive_0018_sync 118 r
+2011_10_03/2011_10_03_drive_0034_sync 1834 l
+2011_09_30/2011_09_30_drive_0028_sync 991 r
+2011_10_03/2011_10_03_drive_0034_sync 2975 r
+2011_09_26/2011_09_26_drive_0061_sync 405 l
+2011_09_30/2011_09_30_drive_0033_sync 1418 r
+2011_09_30/2011_09_30_drive_0028_sync 4798 r
+2011_09_30/2011_09_30_drive_0028_sync 4628 r
+2011_09_26/2011_09_26_drive_0051_sync 364 r
+2011_09_30/2011_09_30_drive_0028_sync 3092 r
+2011_09_26/2011_09_26_drive_0022_sync 417 r
+2011_10_03/2011_10_03_drive_0034_sync 29 r
+2011_09_30/2011_09_30_drive_0028_sync 4396 l
+2011_09_26/2011_09_26_drive_0039_sync 287 l
+2011_09_26/2011_09_26_drive_0001_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 3391 l
+2011_10_03/2011_10_03_drive_0042_sync 479 r
+2011_09_30/2011_09_30_drive_0028_sync 3688 r
+2011_09_30/2011_09_30_drive_0028_sync 1795 r
+2011_09_30/2011_09_30_drive_0028_sync 2671 l
+2011_10_03/2011_10_03_drive_0034_sync 798 r
+2011_10_03/2011_10_03_drive_0034_sync 3522 r
+2011_09_30/2011_09_30_drive_0028_sync 4098 r
+2011_10_03/2011_10_03_drive_0034_sync 4577 r
+2011_10_03/2011_10_03_drive_0042_sync 98 l
+2011_09_26/2011_09_26_drive_0019_sync 213 l
+2011_10_03/2011_10_03_drive_0034_sync 2010 l
+2011_10_03/2011_10_03_drive_0034_sync 1716 l
+2011_09_26/2011_09_26_drive_0104_sync 22 l
+2011_10_03/2011_10_03_drive_0042_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 316 l
+2011_09_30/2011_09_30_drive_0033_sync 366 r
+2011_10_03/2011_10_03_drive_0034_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 1999 r
+2011_09_26/2011_09_26_drive_0018_sync 32 r
+2011_09_30/2011_09_30_drive_0034_sync 850 r
+2011_09_26/2011_09_26_drive_0018_sync 194 r
+2011_09_30/2011_09_30_drive_0033_sync 987 r
+2011_10_03/2011_10_03_drive_0034_sync 2495 r
+2011_10_03/2011_10_03_drive_0034_sync 3867 r
+2011_09_26/2011_09_26_drive_0079_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 3880 l
+2011_09_30/2011_09_30_drive_0020_sync 1062 l
+2011_09_26/2011_09_26_drive_0104_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 5036 l
+2011_09_30/2011_09_30_drive_0034_sync 767 l
+2011_09_26/2011_09_26_drive_0104_sync 175 r
+2011_09_30/2011_09_30_drive_0033_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 3483 r
+2011_10_03/2011_10_03_drive_0034_sync 1491 l
+2011_09_30/2011_09_30_drive_0028_sync 5020 l
+2011_10_03/2011_10_03_drive_0034_sync 4302 r
+2011_09_30/2011_09_30_drive_0033_sync 32 r
+2011_09_26/2011_09_26_drive_0061_sync 253 r
+2011_09_26/2011_09_26_drive_0032_sync 368 r
+2011_09_30/2011_09_30_drive_0028_sync 564 l
+2011_09_26/2011_09_26_drive_0032_sync 258 l
+2011_09_30/2011_09_30_drive_0028_sync 1018 l
+2011_09_30/2011_09_30_drive_0028_sync 5089 r
+2011_09_26/2011_09_26_drive_0051_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 2439 r
+2011_10_03/2011_10_03_drive_0042_sync 122 r
+2011_09_26/2011_09_26_drive_0087_sync 213 r
+2011_09_30/2011_09_30_drive_0034_sync 880 l
+2011_10_03/2011_10_03_drive_0034_sync 1685 l
+2011_09_30/2011_09_30_drive_0028_sync 3357 l
+2011_09_26/2011_09_26_drive_0087_sync 178 l
+2011_10_03/2011_10_03_drive_0034_sync 4547 l
+2011_09_26/2011_09_26_drive_0022_sync 476 l
+2011_09_26/2011_09_26_drive_0032_sync 202 r
+2011_10_03/2011_10_03_drive_0034_sync 2058 l
+2011_10_03/2011_10_03_drive_0034_sync 2456 r
+2011_09_30/2011_09_30_drive_0028_sync 1648 r
+2011_09_29/2011_09_29_drive_0004_sync 151 r
+2011_10_03/2011_10_03_drive_0042_sync 914 r
+2011_10_03/2011_10_03_drive_0034_sync 4005 l
+2011_09_26/2011_09_26_drive_0039_sync 238 l
+2011_09_30/2011_09_30_drive_0028_sync 902 r
+2011_09_30/2011_09_30_drive_0020_sync 777 r
+2011_09_26/2011_09_26_drive_0051_sync 140 l
+2011_09_26/2011_09_26_drive_0022_sync 799 l
+2011_10_03/2011_10_03_drive_0034_sync 538 l
+2011_09_26/2011_09_26_drive_0051_sync 184 l
+2011_09_30/2011_09_30_drive_0034_sync 664 r
+2011_09_30/2011_09_30_drive_0034_sync 875 r
+2011_09_26/2011_09_26_drive_0032_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 3649 l
+2011_09_30/2011_09_30_drive_0028_sync 4753 l
+2011_09_26/2011_09_26_drive_0032_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 1304 l
+2011_09_30/2011_09_30_drive_0034_sync 1143 l
+2011_09_26/2011_09_26_drive_0087_sync 621 r
+2011_10_03/2011_10_03_drive_0034_sync 546 r
+2011_09_26/2011_09_26_drive_0022_sync 490 r
+2011_09_30/2011_09_30_drive_0028_sync 4041 r
+2011_09_30/2011_09_30_drive_0028_sync 448 l
+2011_09_30/2011_09_30_drive_0034_sync 875 l
+2011_10_03/2011_10_03_drive_0034_sync 3323 l
+2011_09_26/2011_09_26_drive_0018_sync 25 r
+2011_10_03/2011_10_03_drive_0042_sync 456 r
+2011_10_03/2011_10_03_drive_0034_sync 1113 l
+2011_09_30/2011_09_30_drive_0028_sync 1056 r
+2011_10_03/2011_10_03_drive_0034_sync 1021 l
+2011_09_30/2011_09_30_drive_0020_sync 873 r
+2011_09_30/2011_09_30_drive_0020_sync 123 l
+2011_09_26/2011_09_26_drive_0005_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 4574 l
+2011_10_03/2011_10_03_drive_0034_sync 2331 l
+2011_09_30/2011_09_30_drive_0020_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 931 l
+2011_09_30/2011_09_30_drive_0028_sync 1588 l
+2011_09_30/2011_09_30_drive_0033_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 1638 r
+2011_09_30/2011_09_30_drive_0028_sync 5027 l
+2011_09_26/2011_09_26_drive_0070_sync 347 l
+2011_09_26/2011_09_26_drive_0028_sync 161 r
+2011_09_29/2011_09_29_drive_0004_sync 240 l
+2011_09_26/2011_09_26_drive_0019_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 281 l
+2011_10_03/2011_10_03_drive_0042_sync 905 r
+2011_09_30/2011_09_30_drive_0028_sync 1431 r
+2011_10_03/2011_10_03_drive_0034_sync 1748 r
+2011_10_03/2011_10_03_drive_0034_sync 2111 l
+2011_09_26/2011_09_26_drive_0015_sync 138 l
+2011_09_29/2011_09_29_drive_0004_sync 258 l
+2011_10_03/2011_10_03_drive_0042_sync 990 l
+2011_09_30/2011_09_30_drive_0034_sync 1044 l
+2011_09_26/2011_09_26_drive_0087_sync 225 l
+2011_09_26/2011_09_26_drive_0022_sync 578 r
+2011_09_26/2011_09_26_drive_0015_sync 215 l
+2011_09_26/2011_09_26_drive_0011_sync 37 l
+2011_09_30/2011_09_30_drive_0020_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 3797 l
+2011_09_26/2011_09_26_drive_0095_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 2695 l
+2011_09_30/2011_09_30_drive_0028_sync 67 l
+2011_09_30/2011_09_30_drive_0033_sync 1448 l
+2011_10_03/2011_10_03_drive_0034_sync 1886 l
+2011_09_30/2011_09_30_drive_0028_sync 3675 r
+2011_09_30/2011_09_30_drive_0028_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 3864 r
+2011_10_03/2011_10_03_drive_0034_sync 2714 l
+2011_09_26/2011_09_26_drive_0051_sync 202 l
+2011_09_26/2011_09_26_drive_0104_sync 278 r
+2011_09_30/2011_09_30_drive_0033_sync 915 l
+2011_09_26/2011_09_26_drive_0028_sync 351 l
+2011_09_30/2011_09_30_drive_0028_sync 3219 r
+2011_09_30/2011_09_30_drive_0033_sync 95 r
+2011_09_30/2011_09_30_drive_0020_sync 654 l
+2011_10_03/2011_10_03_drive_0034_sync 3400 r
+2011_10_03/2011_10_03_drive_0034_sync 3307 r
+2011_09_26/2011_09_26_drive_0022_sync 751 r
+2011_09_26/2011_09_26_drive_0087_sync 651 r
+2011_09_30/2011_09_30_drive_0020_sync 999 l
+2011_10_03/2011_10_03_drive_0034_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 2733 r
+2011_09_26/2011_09_26_drive_0014_sync 238 r
+2011_10_03/2011_10_03_drive_0042_sync 637 r
+2011_09_26/2011_09_26_drive_0019_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 950 l
+2011_09_30/2011_09_30_drive_0028_sync 3553 l
+2011_10_03/2011_10_03_drive_0034_sync 2175 l
+2011_09_26/2011_09_26_drive_0061_sync 671 l
+2011_09_26/2011_09_26_drive_0087_sync 38 l
+2011_09_26/2011_09_26_drive_0011_sync 123 r
+2011_09_26/2011_09_26_drive_0019_sync 448 l
+2011_09_26/2011_09_26_drive_0061_sync 336 r
+2011_09_26/2011_09_26_drive_0028_sync 57 r
+2011_09_26/2011_09_26_drive_0019_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 921 r
+2011_09_30/2011_09_30_drive_0033_sync 114 r
+2011_09_26/2011_09_26_drive_0028_sync 19 r
+2011_09_26/2011_09_26_drive_0051_sync 353 l
+2011_09_26/2011_09_26_drive_0087_sync 77 l
+2011_09_26/2011_09_26_drive_0015_sync 78 r
+2011_09_26/2011_09_26_drive_0104_sync 58 r
+2011_09_26/2011_09_26_drive_0095_sync 259 l
+2011_09_30/2011_09_30_drive_0028_sync 2436 r
+2011_09_30/2011_09_30_drive_0020_sync 840 r
+2011_09_30/2011_09_30_drive_0028_sync 4186 r
+2011_09_26/2011_09_26_drive_0061_sync 292 r
+2011_09_26/2011_09_26_drive_0014_sync 150 r
+2011_09_26/2011_09_26_drive_0051_sync 8 r
+2011_09_26/2011_09_26_drive_0070_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 1385 r
+2011_10_03/2011_10_03_drive_0034_sync 4555 r
+2011_09_29/2011_09_29_drive_0004_sync 3 r
+2011_09_26/2011_09_26_drive_0032_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 1509 r
+2011_09_30/2011_09_30_drive_0028_sync 744 l
+2011_09_30/2011_09_30_drive_0028_sync 1445 l
+2011_09_26/2011_09_26_drive_0014_sync 59 r
+2011_09_26/2011_09_26_drive_0039_sync 191 l
+2011_09_26/2011_09_26_drive_0095_sync 183 l
+2011_09_29/2011_09_29_drive_0004_sync 316 r
+2011_10_03/2011_10_03_drive_0034_sync 1045 r
+2011_09_30/2011_09_30_drive_0028_sync 3719 l
+2011_10_03/2011_10_03_drive_0034_sync 3479 r
+2011_09_30/2011_09_30_drive_0034_sync 378 l
+2011_09_30/2011_09_30_drive_0033_sync 462 r
+2011_09_30/2011_09_30_drive_0020_sync 315 r
+2011_09_30/2011_09_30_drive_0033_sync 1555 l
+2011_09_26/2011_09_26_drive_0079_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 4299 r
+2011_09_30/2011_09_30_drive_0034_sync 972 r
+2011_09_26/2011_09_26_drive_0057_sync 235 r
+2011_09_26/2011_09_26_drive_0061_sync 394 l
+2011_09_30/2011_09_30_drive_0034_sync 10 r
+2011_09_26/2011_09_26_drive_0091_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 3036 r
+2011_09_26/2011_09_26_drive_0091_sync 49 l
+2011_09_26/2011_09_26_drive_0087_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 4049 r
+2011_09_30/2011_09_30_drive_0028_sync 2144 r
+2011_09_26/2011_09_26_drive_0087_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 2781 r
+2011_09_30/2011_09_30_drive_0028_sync 4748 l
+2011_09_30/2011_09_30_drive_0020_sync 909 l
+2011_09_26/2011_09_26_drive_0018_sync 156 l
+2011_09_26/2011_09_26_drive_0091_sync 337 l
+2011_10_03/2011_10_03_drive_0042_sync 310 l
+2011_09_30/2011_09_30_drive_0028_sync 1141 r
+2011_09_30/2011_09_30_drive_0020_sync 42 l
+2011_09_29/2011_09_29_drive_0026_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 1154 r
+2011_09_26/2011_09_26_drive_0014_sync 127 l
+2011_09_30/2011_09_30_drive_0028_sync 3307 r
+2011_10_03/2011_10_03_drive_0034_sync 4613 l
+2011_09_26/2011_09_26_drive_0039_sync 349 r
+2011_09_30/2011_09_30_drive_0028_sync 2158 r
+2011_09_30/2011_09_30_drive_0033_sync 538 r
+2011_09_30/2011_09_30_drive_0034_sync 1020 l
+2011_10_03/2011_10_03_drive_0034_sync 3972 l
+2011_10_03/2011_10_03_drive_0034_sync 3257 r
+2011_10_03/2011_10_03_drive_0034_sync 182 l
+2011_09_26/2011_09_26_drive_0022_sync 738 r
+2011_09_26/2011_09_26_drive_0014_sync 144 r
+2011_09_30/2011_09_30_drive_0033_sync 18 l
+2011_09_26/2011_09_26_drive_0070_sync 231 l
+2011_09_26/2011_09_26_drive_0091_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 148 r
+2011_09_30/2011_09_30_drive_0020_sync 423 r
+2011_09_26/2011_09_26_drive_0070_sync 105 r
+2011_09_30/2011_09_30_drive_0033_sync 1490 r
+2011_10_03/2011_10_03_drive_0042_sync 537 l
+2011_10_03/2011_10_03_drive_0034_sync 3015 l
+2011_09_26/2011_09_26_drive_0057_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 1667 l
+2011_09_30/2011_09_30_drive_0028_sync 1493 r
+2011_09_26/2011_09_26_drive_0087_sync 585 r
+2011_10_03/2011_10_03_drive_0042_sync 415 l
+2011_09_26/2011_09_26_drive_0032_sync 214 l
+2011_09_30/2011_09_30_drive_0034_sync 1163 l
+2011_10_03/2011_10_03_drive_0034_sync 826 r
+2011_09_26/2011_09_26_drive_0028_sync 265 l
+2011_09_29/2011_09_29_drive_0004_sync 192 l
+2011_10_03/2011_10_03_drive_0034_sync 1487 l
+2011_09_30/2011_09_30_drive_0020_sync 549 l
+2011_09_26/2011_09_26_drive_0015_sync 158 l
+2011_10_03/2011_10_03_drive_0034_sync 2605 r
+2011_10_03/2011_10_03_drive_0034_sync 3115 l
+2011_09_30/2011_09_30_drive_0028_sync 1971 l
+2011_10_03/2011_10_03_drive_0042_sync 502 r
+2011_09_30/2011_09_30_drive_0034_sync 708 r
+2011_09_30/2011_09_30_drive_0028_sync 819 l
+2011_10_03/2011_10_03_drive_0034_sync 2496 l
+2011_09_26/2011_09_26_drive_0001_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 923 r
+2011_09_30/2011_09_30_drive_0034_sync 1107 r
+2011_09_26/2011_09_26_drive_0070_sync 249 l
+2011_09_26/2011_09_26_drive_0087_sync 512 l
+2011_09_26/2011_09_26_drive_0113_sync 10 r
+2011_09_30/2011_09_30_drive_0028_sync 1954 r
+2011_09_30/2011_09_30_drive_0028_sync 4480 l
+2011_09_26/2011_09_26_drive_0070_sync 72 l
+2011_09_30/2011_09_30_drive_0034_sync 115 l
+2011_09_26/2011_09_26_drive_0028_sync 210 r
+2011_09_30/2011_09_30_drive_0033_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 3881 l
+2011_09_26/2011_09_26_drive_0061_sync 695 l
+2011_09_26/2011_09_26_drive_0019_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 1952 r
+2011_09_26/2011_09_26_drive_0091_sync 247 l
+2011_09_30/2011_09_30_drive_0033_sync 1447 r
+2011_09_30/2011_09_30_drive_0033_sync 23 l
+2011_10_03/2011_10_03_drive_0034_sync 562 r
+2011_09_30/2011_09_30_drive_0028_sync 208 r
+2011_09_30/2011_09_30_drive_0034_sync 1010 l
+2011_09_30/2011_09_30_drive_0033_sync 881 r
+2011_09_30/2011_09_30_drive_0028_sync 401 r
+2011_09_26/2011_09_26_drive_0061_sync 146 r
+2011_09_26/2011_09_26_drive_0035_sync 125 l
+2011_09_30/2011_09_30_drive_0020_sync 1036 r
+2011_09_30/2011_09_30_drive_0028_sync 4675 l
+2011_09_30/2011_09_30_drive_0028_sync 4855 r
+2011_10_03/2011_10_03_drive_0034_sync 3963 r
+2011_09_30/2011_09_30_drive_0028_sync 4857 l
+2011_09_30/2011_09_30_drive_0020_sync 895 l
+2011_10_03/2011_10_03_drive_0034_sync 4071 l
+2011_10_03/2011_10_03_drive_0042_sync 121 r
+2011_09_26/2011_09_26_drive_0028_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 2238 r
+2011_09_26/2011_09_26_drive_0022_sync 221 l
+2011_09_26/2011_09_26_drive_0001_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 3138 l
+2011_09_26/2011_09_26_drive_0039_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 1548 r
+2011_09_26/2011_09_26_drive_0091_sync 114 l
+2011_09_30/2011_09_30_drive_0020_sync 679 r
+2011_09_30/2011_09_30_drive_0028_sync 5139 r
+2011_10_03/2011_10_03_drive_0042_sync 247 r
+2011_09_30/2011_09_30_drive_0033_sync 1251 r
+2011_09_26/2011_09_26_drive_0028_sync 311 l
+2011_09_26/2011_09_26_drive_0057_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 3269 r
+2011_10_03/2011_10_03_drive_0034_sync 4335 r
+2011_10_03/2011_10_03_drive_0034_sync 3524 r
+2011_09_26/2011_09_26_drive_0057_sync 293 l
+2011_09_26/2011_09_26_drive_0005_sync 135 r
+2011_09_30/2011_09_30_drive_0033_sync 616 r
+2011_09_30/2011_09_30_drive_0033_sync 840 r
+2011_09_30/2011_09_30_drive_0034_sync 277 r
+2011_09_26/2011_09_26_drive_0057_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 3507 r
+2011_10_03/2011_10_03_drive_0034_sync 2581 r
+2011_09_30/2011_09_30_drive_0034_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 1339 l
+2011_09_26/2011_09_26_drive_0001_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 1395 r
+2011_09_26/2011_09_26_drive_0051_sync 285 r
+2011_09_26/2011_09_26_drive_0051_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 3087 l
+2011_09_30/2011_09_30_drive_0034_sync 486 l
+2011_09_26/2011_09_26_drive_0022_sync 603 l
+2011_09_26/2011_09_26_drive_0022_sync 379 r
+2011_09_26/2011_09_26_drive_0032_sync 335 r
+2011_09_26/2011_09_26_drive_0019_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 4509 l
+2011_09_30/2011_09_30_drive_0033_sync 927 l
+2011_10_03/2011_10_03_drive_0042_sync 1155 r
+2011_09_30/2011_09_30_drive_0034_sync 555 l
+2011_09_26/2011_09_26_drive_0022_sync 579 r
+2011_09_30/2011_09_30_drive_0028_sync 3894 l
+2011_09_30/2011_09_30_drive_0028_sync 2653 l
+2011_10_03/2011_10_03_drive_0042_sync 920 r
+2011_09_30/2011_09_30_drive_0028_sync 215 l
+2011_09_26/2011_09_26_drive_0032_sync 242 l
+2011_09_26/2011_09_26_drive_0017_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 4021 r
+2011_10_03/2011_10_03_drive_0034_sync 3496 l
+2011_09_30/2011_09_30_drive_0033_sync 1416 r
+2011_09_30/2011_09_30_drive_0033_sync 1570 l
+2011_10_03/2011_10_03_drive_0034_sync 3149 l
+2011_09_30/2011_09_30_drive_0028_sync 2530 l
+2011_09_30/2011_09_30_drive_0020_sync 951 r
+2011_09_30/2011_09_30_drive_0033_sync 1423 l
+2011_09_28/2011_09_28_drive_0001_sync 3 r
+2011_09_26/2011_09_26_drive_0087_sync 303 r
+2011_10_03/2011_10_03_drive_0042_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 4376 l
+2011_09_30/2011_09_30_drive_0033_sync 696 l
+2011_09_26/2011_09_26_drive_0011_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 4878 l
+2011_09_26/2011_09_26_drive_0104_sync 309 r
+2011_09_26/2011_09_26_drive_0032_sync 70 r
+2011_09_30/2011_09_30_drive_0020_sync 416 l
+2011_09_30/2011_09_30_drive_0033_sync 778 r
+2011_09_30/2011_09_30_drive_0033_sync 360 r
+2011_09_26/2011_09_26_drive_0032_sync 57 r
+2011_10_03/2011_10_03_drive_0034_sync 3185 l
+2011_09_30/2011_09_30_drive_0028_sync 1245 r
+2011_09_26/2011_09_26_drive_0028_sync 233 l
+2011_09_30/2011_09_30_drive_0033_sync 624 l
+2011_09_30/2011_09_30_drive_0028_sync 1369 r
+2011_09_30/2011_09_30_drive_0034_sync 1133 l
+2011_09_29/2011_09_29_drive_0004_sync 219 r
+2011_09_30/2011_09_30_drive_0020_sync 227 l
+2011_09_30/2011_09_30_drive_0028_sync 4803 l
+2011_10_03/2011_10_03_drive_0034_sync 2134 l
+2011_09_30/2011_09_30_drive_0028_sync 4009 r
+2011_09_30/2011_09_30_drive_0028_sync 1167 r
+2011_10_03/2011_10_03_drive_0034_sync 3671 r
+2011_09_26/2011_09_26_drive_0091_sync 243 l
+2011_10_03/2011_10_03_drive_0034_sync 4284 r
+2011_10_03/2011_10_03_drive_0034_sync 2357 l
+2011_09_26/2011_09_26_drive_0015_sync 149 r
+2011_10_03/2011_10_03_drive_0042_sync 862 l
+2011_09_26/2011_09_26_drive_0057_sync 316 r
+2011_10_03/2011_10_03_drive_0042_sync 51 r
+2011_09_30/2011_09_30_drive_0028_sync 5025 l
+2011_09_26/2011_09_26_drive_0051_sync 358 r
+2011_10_03/2011_10_03_drive_0034_sync 1459 r
+2011_09_26/2011_09_26_drive_0039_sync 390 r
+2011_09_26/2011_09_26_drive_0019_sync 204 l
+2011_10_03/2011_10_03_drive_0034_sync 4468 l
+2011_09_26/2011_09_26_drive_0039_sync 308 l
+2011_09_26/2011_09_26_drive_0104_sync 82 l
+2011_09_26/2011_09_26_drive_0087_sync 402 l
+2011_09_30/2011_09_30_drive_0028_sync 471 r
+2011_09_30/2011_09_30_drive_0028_sync 1869 r
+2011_09_30/2011_09_30_drive_0034_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 4192 r
+2011_10_03/2011_10_03_drive_0034_sync 306 r
+2011_09_26/2011_09_26_drive_0087_sync 697 l
+2011_09_26/2011_09_26_drive_0070_sync 151 r
+2011_10_03/2011_10_03_drive_0034_sync 817 r
+2011_10_03/2011_10_03_drive_0034_sync 570 r
+2011_09_30/2011_09_30_drive_0028_sync 1176 l
+2011_09_26/2011_09_26_drive_0028_sync 142 l
+2011_10_03/2011_10_03_drive_0042_sync 215 r
+2011_09_26/2011_09_26_drive_0104_sync 290 l
+2011_10_03/2011_10_03_drive_0042_sync 172 l
+2011_09_30/2011_09_30_drive_0034_sync 127 l
+2011_09_26/2011_09_26_drive_0039_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 242 l
+2011_09_30/2011_09_30_drive_0034_sync 540 r
+2011_09_26/2011_09_26_drive_0011_sync 118 l
+2011_09_26/2011_09_26_drive_0091_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 4418 l
+2011_09_30/2011_09_30_drive_0034_sync 345 r
+2011_09_30/2011_09_30_drive_0034_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 4121 r
+2011_10_03/2011_10_03_drive_0034_sync 4063 r
+2011_09_26/2011_09_26_drive_0087_sync 597 l
+2011_10_03/2011_10_03_drive_0034_sync 1233 r
+2011_09_30/2011_09_30_drive_0034_sync 757 l
+2011_09_26/2011_09_26_drive_0087_sync 89 l
+2011_09_30/2011_09_30_drive_0028_sync 3780 l
+2011_10_03/2011_10_03_drive_0034_sync 3696 l
+2011_10_03/2011_10_03_drive_0034_sync 2963 l
+2011_10_03/2011_10_03_drive_0034_sync 1342 l
+2011_09_28/2011_09_28_drive_0001_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 2422 r
+2011_09_26/2011_09_26_drive_0005_sync 7 l
+2011_10_03/2011_10_03_drive_0042_sync 1110 l
+2011_09_30/2011_09_30_drive_0028_sync 4362 l
+2011_09_26/2011_09_26_drive_0032_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 3171 r
+2011_09_26/2011_09_26_drive_0022_sync 158 r
+2011_09_30/2011_09_30_drive_0028_sync 1715 l
+2011_10_03/2011_10_03_drive_0034_sync 3903 l
+2011_09_30/2011_09_30_drive_0033_sync 919 l
+2011_09_26/2011_09_26_drive_0011_sync 88 l
+2011_10_03/2011_10_03_drive_0034_sync 1371 l
+2011_09_26/2011_09_26_drive_0039_sync 280 r
+2011_09_30/2011_09_30_drive_0034_sync 292 r
+2011_09_26/2011_09_26_drive_0087_sync 266 r
+2011_09_30/2011_09_30_drive_0033_sync 816 r
+2011_09_30/2011_09_30_drive_0028_sync 1202 r
+2011_09_26/2011_09_26_drive_0061_sync 122 r
+2011_09_30/2011_09_30_drive_0034_sync 533 r
+2011_10_03/2011_10_03_drive_0034_sync 2957 r
+2011_09_30/2011_09_30_drive_0028_sync 787 l
+2011_09_30/2011_09_30_drive_0020_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 5121 l
+2011_09_30/2011_09_30_drive_0033_sync 1414 r
+2011_10_03/2011_10_03_drive_0034_sync 1857 l
+2011_09_26/2011_09_26_drive_0039_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 3536 l
+2011_09_30/2011_09_30_drive_0028_sync 1777 l
+2011_09_26/2011_09_26_drive_0022_sync 302 l
+2011_09_26/2011_09_26_drive_0028_sync 364 l
+2011_09_30/2011_09_30_drive_0028_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 1185 r
+2011_09_30/2011_09_30_drive_0028_sync 1305 l
+2011_09_30/2011_09_30_drive_0028_sync 2815 l
+2011_10_03/2011_10_03_drive_0034_sync 2786 l
+2011_09_26/2011_09_26_drive_0087_sync 594 r
+2011_09_30/2011_09_30_drive_0028_sync 1120 r
+2011_09_26/2011_09_26_drive_0022_sync 754 l
+2011_09_30/2011_09_30_drive_0028_sync 4913 l
+2011_09_30/2011_09_30_drive_0033_sync 1170 r
+2011_10_03/2011_10_03_drive_0042_sync 648 r
+2011_09_26/2011_09_26_drive_0087_sync 284 r
+2011_10_03/2011_10_03_drive_0042_sync 978 r
+2011_09_30/2011_09_30_drive_0028_sync 423 r
+2011_09_26/2011_09_26_drive_0087_sync 724 r
+2011_09_26/2011_09_26_drive_0087_sync 70 r
+2011_09_26/2011_09_26_drive_0022_sync 178 r
+2011_09_30/2011_09_30_drive_0020_sync 681 l
+2011_10_03/2011_10_03_drive_0034_sync 4250 r
+2011_09_26/2011_09_26_drive_0070_sync 372 l
+2011_09_30/2011_09_30_drive_0028_sync 774 r
+2011_10_03/2011_10_03_drive_0034_sync 446 l
+2011_09_26/2011_09_26_drive_0018_sync 241 r
+2011_09_26/2011_09_26_drive_0051_sync 368 r
+2011_09_30/2011_09_30_drive_0020_sync 295 r
+2011_10_03/2011_10_03_drive_0042_sync 340 r
+2011_10_03/2011_10_03_drive_0034_sync 83 r
+2011_10_03/2011_10_03_drive_0042_sync 728 r
+2011_09_26/2011_09_26_drive_0091_sync 195 l
+2011_09_30/2011_09_30_drive_0033_sync 280 l
+2011_09_26/2011_09_26_drive_0028_sync 182 l
+2011_09_30/2011_09_30_drive_0020_sync 397 r
+2011_09_26/2011_09_26_drive_0070_sync 250 l
+2011_09_30/2011_09_30_drive_0028_sync 670 r
+2011_09_30/2011_09_30_drive_0028_sync 911 r
+2011_09_26/2011_09_26_drive_0018_sync 14 r
+2011_09_29/2011_09_29_drive_0004_sync 245 l
+2011_09_30/2011_09_30_drive_0020_sync 171 l
+2011_10_03/2011_10_03_drive_0042_sync 1077 r
+2011_09_30/2011_09_30_drive_0020_sync 699 l
+2011_09_26/2011_09_26_drive_0015_sync 206 l
+2011_09_30/2011_09_30_drive_0020_sync 470 r
+2011_09_30/2011_09_30_drive_0033_sync 1435 l
+2011_09_26/2011_09_26_drive_0015_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 5 l
+2011_09_26/2011_09_26_drive_0095_sync 179 l
+2011_09_26/2011_09_26_drive_0051_sync 293 l
+2011_09_30/2011_09_30_drive_0028_sync 129 r
+2011_09_30/2011_09_30_drive_0033_sync 444 r
+2011_09_30/2011_09_30_drive_0028_sync 1742 r
+2011_09_26/2011_09_26_drive_0039_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 4404 l
+2011_10_03/2011_10_03_drive_0042_sync 615 r
+2011_09_30/2011_09_30_drive_0033_sync 714 r
+2011_10_03/2011_10_03_drive_0034_sync 1253 r
+2011_09_26/2011_09_26_drive_0001_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 1068 r
+2011_09_26/2011_09_26_drive_0057_sync 222 l
+2011_09_30/2011_09_30_drive_0034_sync 705 l
+2011_09_30/2011_09_30_drive_0028_sync 5050 l
+2011_10_03/2011_10_03_drive_0034_sync 1340 r
+2011_09_30/2011_09_30_drive_0028_sync 1830 r
+2011_09_30/2011_09_30_drive_0020_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 1803 l
+2011_09_26/2011_09_26_drive_0035_sync 34 l
+2011_10_03/2011_10_03_drive_0034_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 1046 l
+2011_09_30/2011_09_30_drive_0020_sync 616 l
+2011_09_26/2011_09_26_drive_0039_sync 319 l
+2011_09_30/2011_09_30_drive_0020_sync 932 r
+2011_10_03/2011_10_03_drive_0034_sync 4307 l
+2011_09_30/2011_09_30_drive_0033_sync 971 l
+2011_09_26/2011_09_26_drive_0051_sync 308 r
+2011_10_03/2011_10_03_drive_0034_sync 490 l
+2011_09_30/2011_09_30_drive_0028_sync 863 l
+2011_09_30/2011_09_30_drive_0028_sync 3410 r
+2011_09_30/2011_09_30_drive_0028_sync 3973 r
+2011_10_03/2011_10_03_drive_0034_sync 1232 r
+2011_09_30/2011_09_30_drive_0028_sync 1828 l
+2011_09_26/2011_09_26_drive_0022_sync 374 r
+2011_09_26/2011_09_26_drive_0014_sync 267 r
+2011_09_30/2011_09_30_drive_0033_sync 1181 r
+2011_09_26/2011_09_26_drive_0091_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 4949 r
+2011_09_26/2011_09_26_drive_0028_sync 341 r
+2011_09_30/2011_09_30_drive_0020_sync 568 l
+2011_09_30/2011_09_30_drive_0020_sync 268 r
+2011_09_30/2011_09_30_drive_0028_sync 2674 l
+2011_09_26/2011_09_26_drive_0019_sync 359 r
+2011_09_26/2011_09_26_drive_0028_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 2961 r
+2011_09_26/2011_09_26_drive_0022_sync 394 l
+2011_09_26/2011_09_26_drive_0014_sync 239 l
+2011_09_30/2011_09_30_drive_0028_sync 4630 l
+2011_09_26/2011_09_26_drive_0087_sync 304 l
+2011_09_26/2011_09_26_drive_0061_sync 523 r
+2011_09_30/2011_09_30_drive_0034_sync 378 r
+2011_09_30/2011_09_30_drive_0034_sync 583 l
+2011_09_26/2011_09_26_drive_0070_sync 279 r
+2011_09_30/2011_09_30_drive_0033_sync 776 r
+2011_10_03/2011_10_03_drive_0042_sync 391 r
+2011_09_30/2011_09_30_drive_0028_sync 2365 l
+2011_09_26/2011_09_26_drive_0087_sync 341 l
+2011_09_30/2011_09_30_drive_0028_sync 4133 r
+2011_09_26/2011_09_26_drive_0028_sync 407 l
+2011_10_03/2011_10_03_drive_0034_sync 3161 r
+2011_09_26/2011_09_26_drive_0032_sync 204 l
+2011_09_26/2011_09_26_drive_0051_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 131 r
+2011_10_03/2011_10_03_drive_0034_sync 2053 l
+2011_09_26/2011_09_26_drive_0087_sync 60 r
+2011_10_03/2011_10_03_drive_0042_sync 684 r
+2011_09_30/2011_09_30_drive_0020_sync 1020 r
+2011_10_03/2011_10_03_drive_0034_sync 608 l
+2011_09_30/2011_09_30_drive_0028_sync 4245 r
+2011_09_26/2011_09_26_drive_0032_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 484 r
+2011_09_26/2011_09_26_drive_0014_sync 71 r
+2011_09_30/2011_09_30_drive_0033_sync 325 r
+2011_10_03/2011_10_03_drive_0042_sync 711 r
+2011_09_26/2011_09_26_drive_0113_sync 74 l
+2011_10_03/2011_10_03_drive_0042_sync 410 l
+2011_09_29/2011_09_29_drive_0026_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 3892 l
+2011_09_26/2011_09_26_drive_0011_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 370 r
+2011_09_26/2011_09_26_drive_0039_sync 330 l
+2011_09_26/2011_09_26_drive_0022_sync 152 r
+2011_09_30/2011_09_30_drive_0028_sync 3809 r
+2011_09_30/2011_09_30_drive_0028_sync 3528 l
+2011_10_03/2011_10_03_drive_0034_sync 2298 r
+2011_10_03/2011_10_03_drive_0034_sync 979 l
+2011_09_30/2011_09_30_drive_0028_sync 323 r
+2011_09_30/2011_09_30_drive_0028_sync 4824 l
+2011_09_30/2011_09_30_drive_0033_sync 336 l
+2011_09_28/2011_09_28_drive_0001_sync 72 r
+2011_09_26/2011_09_26_drive_0014_sync 310 l
+2011_09_26/2011_09_26_drive_0087_sync 351 r
+2011_09_26/2011_09_26_drive_0028_sync 350 l
+2011_09_30/2011_09_30_drive_0028_sync 1780 r
+2011_09_26/2011_09_26_drive_0039_sync 258 l
+2011_10_03/2011_10_03_drive_0034_sync 1560 r
+2011_09_30/2011_09_30_drive_0028_sync 2054 l
+2011_09_26/2011_09_26_drive_0061_sync 208 r
+2011_09_30/2011_09_30_drive_0020_sync 879 l
+2011_10_03/2011_10_03_drive_0034_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 1520 l
+2011_09_26/2011_09_26_drive_0022_sync 126 l
+2011_09_30/2011_09_30_drive_0028_sync 2032 l
+2011_10_03/2011_10_03_drive_0034_sync 997 r
+2011_09_26/2011_09_26_drive_0091_sync 157 l
+2011_09_28/2011_09_28_drive_0001_sync 24 r
+2011_10_03/2011_10_03_drive_0042_sync 924 l
+2011_10_03/2011_10_03_drive_0034_sync 3167 r
+2011_09_30/2011_09_30_drive_0028_sync 1258 l
+2011_10_03/2011_10_03_drive_0034_sync 2742 l
+2011_09_26/2011_09_26_drive_0018_sync 106 r
+2011_09_26/2011_09_26_drive_0019_sync 187 r
+2011_09_26/2011_09_26_drive_0051_sync 137 r
+2011_09_30/2011_09_30_drive_0028_sync 1360 r
+2011_09_30/2011_09_30_drive_0028_sync 3555 l
+2011_10_03/2011_10_03_drive_0034_sync 1059 l
+2011_10_03/2011_10_03_drive_0042_sync 848 l
+2011_10_03/2011_10_03_drive_0034_sync 3007 r
+2011_10_03/2011_10_03_drive_0042_sync 93 l
+2011_09_30/2011_09_30_drive_0020_sync 620 r
+2011_09_26/2011_09_26_drive_0087_sync 691 r
+2011_10_03/2011_10_03_drive_0034_sync 462 l
+2011_10_03/2011_10_03_drive_0034_sync 3654 l
+2011_10_03/2011_10_03_drive_0042_sync 203 l
+2011_09_26/2011_09_26_drive_0019_sync 416 r
+2011_10_03/2011_10_03_drive_0034_sync 1565 l
+2011_09_26/2011_09_26_drive_0022_sync 733 r
+2011_09_30/2011_09_30_drive_0028_sync 1043 l
+2011_09_26/2011_09_26_drive_0079_sync 42 r
+2011_09_29/2011_09_29_drive_0004_sync 265 r
+2011_09_26/2011_09_26_drive_0070_sync 82 r
+2011_09_26/2011_09_26_drive_0019_sync 446 l
+2011_09_26/2011_09_26_drive_0032_sync 38 l
+2011_09_30/2011_09_30_drive_0034_sync 590 r
+2011_09_26/2011_09_26_drive_0070_sync 179 r
+2011_09_30/2011_09_30_drive_0028_sync 3867 r
+2011_09_28/2011_09_28_drive_0001_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 2808 l
+2011_09_30/2011_09_30_drive_0028_sync 1467 l
+2011_09_26/2011_09_26_drive_0061_sync 54 r
+2011_10_03/2011_10_03_drive_0034_sync 2375 l
+2011_09_30/2011_09_30_drive_0028_sync 4992 r
+2011_09_26/2011_09_26_drive_0028_sync 97 l
+2011_09_30/2011_09_30_drive_0033_sync 727 l
+2011_10_03/2011_10_03_drive_0042_sync 790 l
+2011_09_29/2011_09_29_drive_0026_sync 65 r
+2011_09_30/2011_09_30_drive_0033_sync 340 r
+2011_09_26/2011_09_26_drive_0070_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 2242 l
+2011_10_03/2011_10_03_drive_0034_sync 2229 r
+2011_09_28/2011_09_28_drive_0001_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 1230 l
+2011_09_30/2011_09_30_drive_0028_sync 3968 l
+2011_09_30/2011_09_30_drive_0028_sync 4818 l
+2011_09_30/2011_09_30_drive_0034_sync 199 r
+2011_09_30/2011_09_30_drive_0033_sync 1161 r
+2011_10_03/2011_10_03_drive_0034_sync 870 l
+2011_09_30/2011_09_30_drive_0028_sync 4368 r
+2011_10_03/2011_10_03_drive_0034_sync 2832 r
+2011_09_30/2011_09_30_drive_0020_sync 253 r
+2011_09_26/2011_09_26_drive_0070_sync 216 r
+2011_09_30/2011_09_30_drive_0028_sync 1037 l
+2011_09_26/2011_09_26_drive_0113_sync 31 r
+2011_09_30/2011_09_30_drive_0034_sync 1087 l
+2011_09_26/2011_09_26_drive_0104_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 1448 r
+2011_09_30/2011_09_30_drive_0028_sync 248 r
+2011_09_29/2011_09_29_drive_0004_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 4068 l
+2011_09_30/2011_09_30_drive_0034_sync 678 r
+2011_09_30/2011_09_30_drive_0033_sync 569 l
+2011_10_03/2011_10_03_drive_0034_sync 216 l
+2011_09_26/2011_09_26_drive_0039_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 2278 l
+2011_09_26/2011_09_26_drive_0032_sync 143 r
+2011_09_30/2011_09_30_drive_0034_sync 580 r
+2011_09_26/2011_09_26_drive_0028_sync 101 r
+2011_09_26/2011_09_26_drive_0039_sync 69 l
+2011_09_26/2011_09_26_drive_0015_sync 188 l
+2011_10_03/2011_10_03_drive_0034_sync 714 r
+2011_09_26/2011_09_26_drive_0051_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 3259 l
+2011_10_03/2011_10_03_drive_0042_sync 439 r
+2011_09_26/2011_09_26_drive_0051_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 4436 r
+2011_10_03/2011_10_03_drive_0034_sync 3246 l
+2011_09_26/2011_09_26_drive_0060_sync 42 l
+2011_10_03/2011_10_03_drive_0034_sync 2970 l
+2011_09_30/2011_09_30_drive_0033_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 1625 l
+2011_09_30/2011_09_30_drive_0028_sync 156 r
+2011_09_26/2011_09_26_drive_0028_sync 246 l
+2011_09_26/2011_09_26_drive_0039_sync 358 r
+2011_09_30/2011_09_30_drive_0033_sync 570 l
+2011_09_28/2011_09_28_drive_0001_sync 14 l
+2011_09_26/2011_09_26_drive_0028_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 4923 r
+2011_09_30/2011_09_30_drive_0028_sync 3840 r
+2011_09_30/2011_09_30_drive_0028_sync 725 l
+2011_09_30/2011_09_30_drive_0028_sync 4639 l
+2011_09_26/2011_09_26_drive_0061_sync 446 r
+2011_09_26/2011_09_26_drive_0028_sync 171 l
+2011_10_03/2011_10_03_drive_0034_sync 3930 l
+2011_09_26/2011_09_26_drive_0028_sync 346 r
+2011_09_26/2011_09_26_drive_0019_sync 367 l
+2011_09_30/2011_09_30_drive_0020_sync 772 r
+2011_09_26/2011_09_26_drive_0019_sync 335 r
+2011_09_26/2011_09_26_drive_0087_sync 681 l
+2011_09_26/2011_09_26_drive_0057_sync 306 r
+2011_09_30/2011_09_30_drive_0028_sync 4474 l
+2011_09_26/2011_09_26_drive_0022_sync 33 l
+2011_09_26/2011_09_26_drive_0001_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 3785 r
+2011_09_30/2011_09_30_drive_0020_sync 924 r
+2011_10_03/2011_10_03_drive_0034_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 3734 r
+2011_09_26/2011_09_26_drive_0061_sync 236 r
+2011_09_30/2011_09_30_drive_0033_sync 805 l
+2011_10_03/2011_10_03_drive_0034_sync 4354 l
+2011_09_26/2011_09_26_drive_0091_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 3064 r
+2011_09_30/2011_09_30_drive_0028_sync 2123 r
+2011_09_30/2011_09_30_drive_0033_sync 165 r
+2011_09_30/2011_09_30_drive_0033_sync 739 r
+2011_09_26/2011_09_26_drive_0051_sync 59 l
+2011_09_26/2011_09_26_drive_0095_sync 46 r
+2011_09_26/2011_09_26_drive_0019_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 4640 r
+2011_09_28/2011_09_28_drive_0001_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 4367 r
+2011_09_26/2011_09_26_drive_0019_sync 267 r
+2011_09_26/2011_09_26_drive_0019_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 217 l
+2011_09_30/2011_09_30_drive_0033_sync 1567 r
+2011_10_03/2011_10_03_drive_0034_sync 4073 l
+2011_09_30/2011_09_30_drive_0028_sync 936 l
+2011_10_03/2011_10_03_drive_0034_sync 1060 r
+2011_09_30/2011_09_30_drive_0020_sync 848 r
+2011_09_30/2011_09_30_drive_0034_sync 1074 r
+2011_09_26/2011_09_26_drive_0091_sync 132 r
+2011_09_26/2011_09_26_drive_0001_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 2139 r
+2011_09_30/2011_09_30_drive_0028_sync 2812 r
+2011_09_30/2011_09_30_drive_0028_sync 1893 l
+2011_09_26/2011_09_26_drive_0061_sync 389 l
+2011_09_26/2011_09_26_drive_0017_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 4155 l
+2011_10_03/2011_10_03_drive_0042_sync 810 l
+2011_09_30/2011_09_30_drive_0028_sync 4539 r
+2011_09_30/2011_09_30_drive_0033_sync 873 l
+2011_10_03/2011_10_03_drive_0034_sync 4415 r
+2011_09_26/2011_09_26_drive_0104_sync 292 r
+2011_09_26/2011_09_26_drive_0095_sync 156 l
+2011_09_26/2011_09_26_drive_0104_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 4108 r
+2011_10_03/2011_10_03_drive_0034_sync 1891 l
+2011_09_26/2011_09_26_drive_0039_sync 24 r
+2011_09_30/2011_09_30_drive_0033_sync 1297 l
+2011_09_30/2011_09_30_drive_0028_sync 557 r
+2011_09_30/2011_09_30_drive_0034_sync 648 l
+2011_09_26/2011_09_26_drive_0032_sync 216 l
+2011_09_29/2011_09_29_drive_0004_sync 296 r
+2011_09_26/2011_09_26_drive_0061_sync 415 r
+2011_09_26/2011_09_26_drive_0011_sync 126 r
+2011_09_30/2011_09_30_drive_0020_sync 377 l
+2011_09_26/2011_09_26_drive_0070_sync 337 r
+2011_10_03/2011_10_03_drive_0034_sync 319 r
+2011_09_30/2011_09_30_drive_0020_sync 821 l
+2011_09_30/2011_09_30_drive_0028_sync 3884 r
+2011_10_03/2011_10_03_drive_0034_sync 1734 r
+2011_09_26/2011_09_26_drive_0022_sync 84 l
+2011_09_26/2011_09_26_drive_0091_sync 25 l
+2011_09_26/2011_09_26_drive_0057_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 5079 r
+2011_09_30/2011_09_30_drive_0028_sync 2071 l
+2011_09_30/2011_09_30_drive_0028_sync 126 r
+2011_09_30/2011_09_30_drive_0020_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 1726 r
+2011_10_03/2011_10_03_drive_0034_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 3056 r
+2011_10_03/2011_10_03_drive_0034_sync 63 l
+2011_09_30/2011_09_30_drive_0020_sync 440 r
+2011_09_26/2011_09_26_drive_0070_sync 369 r
+2011_09_30/2011_09_30_drive_0034_sync 219 l
+2011_09_26/2011_09_26_drive_0087_sync 96 l
+2011_10_03/2011_10_03_drive_0034_sync 2843 l
+2011_10_03/2011_10_03_drive_0034_sync 207 l
+2011_09_26/2011_09_26_drive_0032_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 2860 r
+2011_09_29/2011_09_29_drive_0004_sync 324 l
+2011_09_26/2011_09_26_drive_0018_sync 261 r
+2011_09_29/2011_09_29_drive_0026_sync 36 r
+2011_09_26/2011_09_26_drive_0028_sync 193 l
+2011_09_30/2011_09_30_drive_0028_sync 4611 r
+2011_10_03/2011_10_03_drive_0034_sync 2155 r
+2011_10_03/2011_10_03_drive_0034_sync 1298 l
+2011_09_26/2011_09_26_drive_0095_sync 98 r
+2011_09_30/2011_09_30_drive_0034_sync 524 l
+2011_09_30/2011_09_30_drive_0028_sync 714 l
+2011_09_26/2011_09_26_drive_0051_sync 99 r
+2011_09_26/2011_09_26_drive_0070_sync 358 l
+2011_09_30/2011_09_30_drive_0033_sync 404 r
+2011_09_26/2011_09_26_drive_0022_sync 583 r
+2011_10_03/2011_10_03_drive_0042_sync 878 l
+2011_09_26/2011_09_26_drive_0032_sync 156 r
+2011_09_26/2011_09_26_drive_0015_sync 183 l
+2011_09_26/2011_09_26_drive_0014_sync 283 r
+2011_10_03/2011_10_03_drive_0034_sync 2776 l
+2011_09_26/2011_09_26_drive_0014_sync 301 l
+2011_10_03/2011_10_03_drive_0034_sync 2497 r
+2011_09_30/2011_09_30_drive_0033_sync 838 r
+2011_09_26/2011_09_26_drive_0039_sync 326 l
+2011_10_03/2011_10_03_drive_0034_sync 2852 l
+2011_09_26/2011_09_26_drive_0087_sync 689 l
+2011_10_03/2011_10_03_drive_0034_sync 2499 r
+2011_09_30/2011_09_30_drive_0028_sync 1490 l
+2011_09_26/2011_09_26_drive_0014_sync 133 l
+2011_09_30/2011_09_30_drive_0033_sync 1313 l
+2011_10_03/2011_10_03_drive_0042_sync 759 l
+2011_09_26/2011_09_26_drive_0070_sync 75 l
+2011_09_30/2011_09_30_drive_0020_sync 1040 r
+2011_09_26/2011_09_26_drive_0104_sync 241 r
+2011_09_26/2011_09_26_drive_0061_sync 356 l
+2011_09_30/2011_09_30_drive_0028_sync 4530 l
+2011_10_03/2011_10_03_drive_0042_sync 1060 r
+2011_09_30/2011_09_30_drive_0028_sync 269 l
+2011_10_03/2011_10_03_drive_0034_sync 3594 r
+2011_09_26/2011_09_26_drive_0113_sync 47 r
+2011_09_30/2011_09_30_drive_0033_sync 1058 r
+2011_09_26/2011_09_26_drive_0028_sync 281 r
+2011_09_29/2011_09_29_drive_0026_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 3127 r
+2011_09_26/2011_09_26_drive_0113_sync 80 r
+2011_09_26/2011_09_26_drive_0019_sync 79 l
+2011_09_26/2011_09_26_drive_0087_sync 222 l
+2011_09_29/2011_09_29_drive_0004_sync 16 l
+2011_09_30/2011_09_30_drive_0033_sync 279 r
+2011_09_26/2011_09_26_drive_0087_sync 88 r
+2011_10_03/2011_10_03_drive_0042_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 2863 r
+2011_10_03/2011_10_03_drive_0034_sync 3278 r
+2011_10_03/2011_10_03_drive_0034_sync 786 r
+2011_10_03/2011_10_03_drive_0034_sync 1320 l
+2011_09_26/2011_09_26_drive_0087_sync 287 l
+2011_09_26/2011_09_26_drive_0017_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 1146 r
+2011_09_30/2011_09_30_drive_0028_sync 4886 l
+2011_10_03/2011_10_03_drive_0034_sync 1807 l
+2011_09_26/2011_09_26_drive_0032_sync 180 l
+2011_09_26/2011_09_26_drive_0035_sync 36 r
+2011_09_30/2011_09_30_drive_0020_sync 594 l
+2011_09_26/2011_09_26_drive_0022_sync 542 r
+2011_09_30/2011_09_30_drive_0033_sync 468 l
+2011_09_26/2011_09_26_drive_0051_sync 89 l
+2011_09_30/2011_09_30_drive_0034_sync 491 l
+2011_10_03/2011_10_03_drive_0034_sync 4017 r
+2011_09_26/2011_09_26_drive_0051_sync 177 l
+2011_09_26/2011_09_26_drive_0087_sync 411 l
+2011_09_30/2011_09_30_drive_0033_sync 1517 r
+2011_10_03/2011_10_03_drive_0042_sync 324 r
+2011_09_26/2011_09_26_drive_0104_sync 168 l
+2011_09_30/2011_09_30_drive_0028_sync 361 r
+2011_09_26/2011_09_26_drive_0014_sync 33 l
+2011_10_03/2011_10_03_drive_0042_sync 372 r
+2011_09_30/2011_09_30_drive_0033_sync 392 r
+2011_09_30/2011_09_30_drive_0034_sync 339 l
+2011_09_30/2011_09_30_drive_0028_sync 2831 r
+2011_09_30/2011_09_30_drive_0028_sync 412 l
+2011_09_26/2011_09_26_drive_0070_sync 207 r
+2011_09_26/2011_09_26_drive_0061_sync 649 l
+2011_09_30/2011_09_30_drive_0033_sync 1250 r
+2011_09_26/2011_09_26_drive_0051_sync 196 l
+2011_09_30/2011_09_30_drive_0033_sync 1148 l
+2011_09_30/2011_09_30_drive_0033_sync 645 r
+2011_09_26/2011_09_26_drive_0070_sync 60 l
+2011_09_26/2011_09_26_drive_0011_sync 203 r
+2011_10_03/2011_10_03_drive_0042_sync 1153 l
+2011_10_03/2011_10_03_drive_0034_sync 3691 r
+2011_09_30/2011_09_30_drive_0028_sync 3267 r
+2011_10_03/2011_10_03_drive_0034_sync 2817 r
+2011_09_30/2011_09_30_drive_0020_sync 494 r
+2011_09_26/2011_09_26_drive_0057_sync 345 l
+2011_09_26/2011_09_26_drive_0051_sync 153 r
+2011_09_26/2011_09_26_drive_0113_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 4380 l
+2011_09_26/2011_09_26_drive_0022_sync 531 l
+2011_09_28/2011_09_28_drive_0001_sync 16 r
+2011_09_26/2011_09_26_drive_0057_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 3123 r
+2011_10_03/2011_10_03_drive_0034_sync 814 r
+2011_09_26/2011_09_26_drive_0104_sync 134 r
+2011_09_30/2011_09_30_drive_0033_sync 1470 r
+2011_09_26/2011_09_26_drive_0087_sync 449 r
+2011_09_29/2011_09_29_drive_0004_sync 249 l
+2011_09_26/2011_09_26_drive_0087_sync 235 l
+2011_09_30/2011_09_30_drive_0028_sync 985 r
+2011_09_30/2011_09_30_drive_0033_sync 272 l
+2011_09_30/2011_09_30_drive_0020_sync 66 l
+2011_09_29/2011_09_29_drive_0004_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 956 r
+2011_09_30/2011_09_30_drive_0028_sync 1373 r
+2011_09_30/2011_09_30_drive_0028_sync 1602 l
+2011_09_30/2011_09_30_drive_0033_sync 1321 r
+2011_09_30/2011_09_30_drive_0028_sync 2224 r
+2011_09_26/2011_09_26_drive_0039_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 26 l
+2011_09_26/2011_09_26_drive_0035_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4329 l
+2011_09_26/2011_09_26_drive_0015_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 4406 l
+2011_09_26/2011_09_26_drive_0104_sync 189 r
+2011_09_26/2011_09_26_drive_0011_sync 202 l
+2011_09_30/2011_09_30_drive_0028_sync 2629 r
+2011_09_26/2011_09_26_drive_0061_sync 489 l
+2011_09_30/2011_09_30_drive_0028_sync 1111 l
+2011_09_26/2011_09_26_drive_0032_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 4543 r
+2011_09_26/2011_09_26_drive_0019_sync 459 l
+2011_10_03/2011_10_03_drive_0034_sync 3020 r
+2011_09_30/2011_09_30_drive_0028_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 4545 l
+2011_10_03/2011_10_03_drive_0042_sync 1089 r
+2011_09_26/2011_09_26_drive_0087_sync 9 l
+2011_09_26/2011_09_26_drive_0051_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 3765 l
+2011_09_26/2011_09_26_drive_0057_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 3024 r
+2011_09_26/2011_09_26_drive_0070_sync 375 l
+2011_10_03/2011_10_03_drive_0042_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 1354 r
+2011_09_30/2011_09_30_drive_0028_sync 1968 r
+2011_09_26/2011_09_26_drive_0022_sync 523 r
+2011_09_26/2011_09_26_drive_0057_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 1077 l
+2011_09_26/2011_09_26_drive_0091_sync 175 l
+2011_09_26/2011_09_26_drive_0039_sync 211 r
+2011_09_26/2011_09_26_drive_0104_sync 221 r
+2011_09_30/2011_09_30_drive_0033_sync 1009 l
+2011_10_03/2011_10_03_drive_0034_sync 2919 r
+2011_10_03/2011_10_03_drive_0034_sync 4315 l
+2011_09_26/2011_09_26_drive_0039_sync 92 l
+2011_09_30/2011_09_30_drive_0020_sync 354 r
+2011_10_03/2011_10_03_drive_0034_sync 1893 l
+2011_09_26/2011_09_26_drive_0015_sync 192 r
+2011_09_30/2011_09_30_drive_0033_sync 1311 r
+2011_09_30/2011_09_30_drive_0028_sync 2048 l
+2011_10_03/2011_10_03_drive_0042_sync 776 l
+2011_09_30/2011_09_30_drive_0028_sync 3230 l
+2011_10_03/2011_10_03_drive_0034_sync 4259 l
+2011_09_30/2011_09_30_drive_0034_sync 745 r
+2011_10_03/2011_10_03_drive_0034_sync 4336 l
+2011_10_03/2011_10_03_drive_0034_sync 3697 l
+2011_09_30/2011_09_30_drive_0033_sync 988 l
+2011_09_26/2011_09_26_drive_0022_sync 764 r
+2011_09_30/2011_09_30_drive_0020_sync 985 l
+2011_09_26/2011_09_26_drive_0015_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 3315 r
+2011_09_30/2011_09_30_drive_0020_sync 811 l
+2011_09_26/2011_09_26_drive_0079_sync 35 l
+2011_09_26/2011_09_26_drive_0061_sync 342 r
+2011_09_30/2011_09_30_drive_0033_sync 700 l
+2011_09_26/2011_09_26_drive_0061_sync 603 l
+2011_09_30/2011_09_30_drive_0034_sync 760 r
+2011_09_26/2011_09_26_drive_0022_sync 556 l
+2011_10_03/2011_10_03_drive_0034_sync 3739 r
+2011_10_03/2011_10_03_drive_0034_sync 2038 r
+2011_10_03/2011_10_03_drive_0034_sync 1323 r
+2011_10_03/2011_10_03_drive_0042_sync 1140 l
+2011_09_30/2011_09_30_drive_0020_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 404 l
+2011_10_03/2011_10_03_drive_0034_sync 61 r
+2011_09_26/2011_09_26_drive_0019_sync 278 l
+2011_09_26/2011_09_26_drive_0051_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 4241 l
+2011_10_03/2011_10_03_drive_0034_sync 1733 r
+2011_09_26/2011_09_26_drive_0087_sync 487 l
+2011_09_26/2011_09_26_drive_0039_sync 34 l
+2011_10_03/2011_10_03_drive_0042_sync 1023 l
+2011_10_03/2011_10_03_drive_0034_sync 2022 l
+2011_09_30/2011_09_30_drive_0033_sync 133 r
+2011_09_30/2011_09_30_drive_0020_sync 960 r
+2011_09_30/2011_09_30_drive_0033_sync 904 l
+2011_09_29/2011_09_29_drive_0004_sync 36 l
+2011_09_26/2011_09_26_drive_0028_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 3898 r
+2011_09_30/2011_09_30_drive_0034_sync 519 l
+2011_10_03/2011_10_03_drive_0034_sync 1185 l
+2011_09_30/2011_09_30_drive_0028_sync 191 l
+2011_09_26/2011_09_26_drive_0014_sync 25 r
+2011_09_26/2011_09_26_drive_0070_sync 236 r
+2011_09_30/2011_09_30_drive_0028_sync 4481 l
+2011_09_30/2011_09_30_drive_0033_sync 396 r
+2011_09_26/2011_09_26_drive_0039_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 1692 r
+2011_09_30/2011_09_30_drive_0034_sync 641 l
+2011_09_30/2011_09_30_drive_0020_sync 740 r
+2011_10_03/2011_10_03_drive_0034_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 527 l
+2011_10_03/2011_10_03_drive_0034_sync 1104 r
+2011_09_30/2011_09_30_drive_0028_sync 943 l
+2011_09_30/2011_09_30_drive_0028_sync 4999 l
+2011_09_30/2011_09_30_drive_0034_sync 888 r
+2011_10_03/2011_10_03_drive_0034_sync 1412 r
+2011_09_26/2011_09_26_drive_0104_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 3970 l
+2011_09_30/2011_09_30_drive_0020_sync 1031 l
+2011_09_26/2011_09_26_drive_0095_sync 154 r
+2011_09_26/2011_09_26_drive_0057_sync 300 l
+2011_09_26/2011_09_26_drive_0022_sync 254 l
+2011_09_26/2011_09_26_drive_0061_sync 362 r
+2011_09_26/2011_09_26_drive_0057_sync 337 l
+2011_09_26/2011_09_26_drive_0051_sync 193 l
+2011_09_30/2011_09_30_drive_0028_sync 20 l
+2011_10_03/2011_10_03_drive_0034_sync 1327 l
+2011_09_26/2011_09_26_drive_0028_sync 14 l
+2011_09_26/2011_09_26_drive_0015_sync 258 l
+2011_09_30/2011_09_30_drive_0028_sync 1541 r
+2011_10_03/2011_10_03_drive_0034_sync 1964 l
+2011_10_03/2011_10_03_drive_0034_sync 435 r
+2011_09_30/2011_09_30_drive_0033_sync 290 r
+2011_09_30/2011_09_30_drive_0033_sync 906 l
+2011_09_30/2011_09_30_drive_0028_sync 4218 l
+2011_10_03/2011_10_03_drive_0034_sync 494 l
+2011_09_26/2011_09_26_drive_0070_sync 414 l
+2011_10_03/2011_10_03_drive_0042_sync 188 r
+2011_09_30/2011_09_30_drive_0033_sync 1403 r
+2011_09_30/2011_09_30_drive_0033_sync 1036 l
+2011_10_03/2011_10_03_drive_0042_sync 249 r
+2011_09_26/2011_09_26_drive_0022_sync 527 r
+2011_10_03/2011_10_03_drive_0034_sync 1073 r
+2011_09_30/2011_09_30_drive_0034_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 672 l
+2011_09_29/2011_09_29_drive_0026_sync 140 r
+2011_09_30/2011_09_30_drive_0034_sync 266 l
+2011_09_30/2011_09_30_drive_0034_sync 871 r
+2011_10_03/2011_10_03_drive_0042_sync 606 r
+2011_09_26/2011_09_26_drive_0057_sync 347 r
+2011_10_03/2011_10_03_drive_0034_sync 3854 r
+2011_10_03/2011_10_03_drive_0034_sync 88 r
+2011_09_30/2011_09_30_drive_0033_sync 954 l
+2011_09_30/2011_09_30_drive_0034_sync 1201 r
+2011_09_30/2011_09_30_drive_0028_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 3644 r
+2011_09_26/2011_09_26_drive_0061_sync 460 r
+2011_09_26/2011_09_26_drive_0017_sync 27 r
+2011_09_26/2011_09_26_drive_0070_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 4806 r
+2011_10_03/2011_10_03_drive_0034_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 4164 r
+2011_09_26/2011_09_26_drive_0091_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 2241 l
+2011_10_03/2011_10_03_drive_0034_sync 2892 r
+2011_09_26/2011_09_26_drive_0061_sync 296 l
+2011_09_26/2011_09_26_drive_0095_sync 87 r
+2011_09_26/2011_09_26_drive_0035_sync 94 l
+2011_09_26/2011_09_26_drive_0113_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 3998 l
+2011_10_03/2011_10_03_drive_0034_sync 3810 r
+2011_09_30/2011_09_30_drive_0033_sync 650 r
+2011_09_30/2011_09_30_drive_0028_sync 2338 r
+2011_09_30/2011_09_30_drive_0028_sync 2551 l
+2011_09_30/2011_09_30_drive_0033_sync 786 l
+2011_09_26/2011_09_26_drive_0091_sync 96 r
+2011_10_03/2011_10_03_drive_0042_sync 614 r
+2011_09_30/2011_09_30_drive_0033_sync 1409 l
+2011_09_26/2011_09_26_drive_0017_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 766 l
+2011_09_26/2011_09_26_drive_0019_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 4676 l
+2011_09_30/2011_09_30_drive_0028_sync 3810 l
+2011_09_30/2011_09_30_drive_0033_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 3091 r
+2011_09_30/2011_09_30_drive_0033_sync 458 r
+2011_09_26/2011_09_26_drive_0039_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 2070 r
+2011_09_30/2011_09_30_drive_0033_sync 1336 r
+2011_09_30/2011_09_30_drive_0028_sync 3406 r
+2011_09_30/2011_09_30_drive_0028_sync 4618 r
+2011_09_30/2011_09_30_drive_0033_sync 65 l
+2011_09_26/2011_09_26_drive_0051_sync 401 l
+2011_09_30/2011_09_30_drive_0034_sync 419 r
+2011_09_26/2011_09_26_drive_0061_sync 349 l
+2011_09_30/2011_09_30_drive_0028_sync 3163 r
+2011_09_26/2011_09_26_drive_0091_sync 332 r
+2011_10_03/2011_10_03_drive_0034_sync 1374 l
+2011_10_03/2011_10_03_drive_0034_sync 1325 r
+2011_10_03/2011_10_03_drive_0042_sync 1062 l
+2011_09_30/2011_09_30_drive_0028_sync 2428 l
+2011_09_30/2011_09_30_drive_0028_sync 291 r
+2011_10_03/2011_10_03_drive_0042_sync 1054 r
+2011_09_30/2011_09_30_drive_0028_sync 2702 l
+2011_10_03/2011_10_03_drive_0034_sync 1275 r
+2011_09_26/2011_09_26_drive_0022_sync 395 l
+2011_10_03/2011_10_03_drive_0034_sync 1335 r
+2011_09_30/2011_09_30_drive_0033_sync 870 r
+2011_09_26/2011_09_26_drive_0022_sync 629 r
+2011_09_30/2011_09_30_drive_0028_sync 987 l
+2011_09_30/2011_09_30_drive_0028_sync 2846 r
+2011_09_30/2011_09_30_drive_0028_sync 4880 l
+2011_09_26/2011_09_26_drive_0061_sync 301 r
+2011_09_26/2011_09_26_drive_0091_sync 265 r
+2011_09_26/2011_09_26_drive_0019_sync 470 r
+2011_09_30/2011_09_30_drive_0028_sync 2203 r
+2011_09_26/2011_09_26_drive_0061_sync 94 l
+2011_09_26/2011_09_26_drive_0091_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 1668 l
+2011_09_26/2011_09_26_drive_0032_sync 236 r
+2011_09_30/2011_09_30_drive_0020_sync 510 l
+2011_09_30/2011_09_30_drive_0034_sync 869 r
+2011_10_03/2011_10_03_drive_0034_sync 4128 r
+2011_10_03/2011_10_03_drive_0034_sync 2396 r
+2011_09_30/2011_09_30_drive_0034_sync 1155 l
+2011_09_26/2011_09_26_drive_0057_sync 203 r
+2011_09_26/2011_09_26_drive_0070_sync 13 l
+2011_09_30/2011_09_30_drive_0020_sync 597 r
+2011_09_30/2011_09_30_drive_0028_sync 1343 r
+2011_09_26/2011_09_26_drive_0028_sync 13 l
+2011_09_29/2011_09_29_drive_0004_sync 96 r
+2011_09_29/2011_09_29_drive_0004_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 3557 r
+2011_10_03/2011_10_03_drive_0034_sync 3542 l
+2011_09_26/2011_09_26_drive_0091_sync 261 l
+2011_09_26/2011_09_26_drive_0011_sync 38 r
+2011_09_26/2011_09_26_drive_0057_sync 224 l
+2011_09_26/2011_09_26_drive_0028_sync 247 l
+2011_09_26/2011_09_26_drive_0022_sync 470 l
+2011_09_30/2011_09_30_drive_0028_sync 3733 l
+2011_09_30/2011_09_30_drive_0028_sync 1959 r
+2011_09_26/2011_09_26_drive_0091_sync 283 l
+2011_09_26/2011_09_26_drive_0022_sync 670 r
+2011_10_03/2011_10_03_drive_0034_sync 3403 r
+2011_09_26/2011_09_26_drive_0087_sync 355 r
+2011_09_30/2011_09_30_drive_0033_sync 1112 r
+2011_10_03/2011_10_03_drive_0034_sync 3789 l
+2011_09_26/2011_09_26_drive_0011_sync 104 r
+2011_09_26/2011_09_26_drive_0022_sync 209 l
+2011_09_30/2011_09_30_drive_0034_sync 848 r
+2011_09_30/2011_09_30_drive_0028_sync 390 l
+2011_09_30/2011_09_30_drive_0033_sync 1217 r
+2011_09_26/2011_09_26_drive_0028_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 1466 l
+2011_09_30/2011_09_30_drive_0028_sync 3942 r
+2011_09_26/2011_09_26_drive_0060_sync 69 r
+2011_10_03/2011_10_03_drive_0034_sync 4477 l
+2011_09_30/2011_09_30_drive_0028_sync 1927 l
+2011_09_26/2011_09_26_drive_0039_sync 236 l
+2011_09_26/2011_09_26_drive_0019_sync 304 l
+2011_09_30/2011_09_30_drive_0028_sync 3332 r
+2011_10_03/2011_10_03_drive_0034_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 4516 r
+2011_10_03/2011_10_03_drive_0034_sync 310 l
+2011_10_03/2011_10_03_drive_0034_sync 651 l
+2011_09_26/2011_09_26_drive_0005_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 280 r
+2011_09_26/2011_09_26_drive_0061_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 2384 r
+2011_09_26/2011_09_26_drive_0057_sync 352 r
+2011_10_03/2011_10_03_drive_0034_sync 4579 l
+2011_09_26/2011_09_26_drive_0017_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 1495 l
+2011_10_03/2011_10_03_drive_0042_sync 149 l
+2011_09_30/2011_09_30_drive_0033_sync 481 l
+2011_09_30/2011_09_30_drive_0033_sync 936 l
+2011_09_30/2011_09_30_drive_0028_sync 2513 l
+2011_09_30/2011_09_30_drive_0033_sync 1404 l
+2011_09_26/2011_09_26_drive_0019_sync 395 r
+2011_10_03/2011_10_03_drive_0034_sync 1572 l
+2011_09_26/2011_09_26_drive_0104_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 2905 l
+2011_09_30/2011_09_30_drive_0028_sync 1540 r
+2011_10_03/2011_10_03_drive_0042_sync 520 r
+2011_10_03/2011_10_03_drive_0042_sync 55 r
+2011_09_30/2011_09_30_drive_0034_sync 1125 r
+2011_10_03/2011_10_03_drive_0034_sync 1753 l
+2011_09_30/2011_09_30_drive_0028_sync 737 r
+2011_09_30/2011_09_30_drive_0020_sync 973 l
+2011_10_03/2011_10_03_drive_0034_sync 2281 r
+2011_10_03/2011_10_03_drive_0034_sync 4074 l
+2011_09_30/2011_09_30_drive_0028_sync 1535 r
+2011_09_30/2011_09_30_drive_0033_sync 948 l
+2011_09_30/2011_09_30_drive_0020_sync 816 r
+2011_09_30/2011_09_30_drive_0028_sync 1950 l
+2011_09_26/2011_09_26_drive_0087_sync 10 l
+2011_09_26/2011_09_26_drive_0028_sync 386 l
+2011_09_30/2011_09_30_drive_0028_sync 1975 l
+2011_10_03/2011_10_03_drive_0042_sync 1030 r
+2011_10_03/2011_10_03_drive_0042_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 795 r
+2011_09_26/2011_09_26_drive_0087_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 356 l
+2011_09_30/2011_09_30_drive_0028_sync 577 r
+2011_09_26/2011_09_26_drive_0061_sync 56 l
+2011_09_26/2011_09_26_drive_0104_sync 30 r
+2011_10_03/2011_10_03_drive_0042_sync 548 l
+2011_09_30/2011_09_30_drive_0033_sync 918 l
+2011_09_30/2011_09_30_drive_0034_sync 187 l
+2011_09_30/2011_09_30_drive_0034_sync 838 l
+2011_10_03/2011_10_03_drive_0034_sync 2985 l
+2011_09_26/2011_09_26_drive_0022_sync 404 l
+2011_09_26/2011_09_26_drive_0014_sync 157 r
+2011_09_30/2011_09_30_drive_0034_sync 285 r
+2011_09_30/2011_09_30_drive_0028_sync 2628 r
+2011_09_30/2011_09_30_drive_0028_sync 752 l
+2011_10_03/2011_10_03_drive_0042_sync 303 r
+2011_09_29/2011_09_29_drive_0004_sync 166 l
+2011_09_26/2011_09_26_drive_0104_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 2098 l
+2011_09_30/2011_09_30_drive_0033_sync 548 l
+2011_10_03/2011_10_03_drive_0034_sync 2877 r
+2011_10_03/2011_10_03_drive_0042_sync 530 r
+2011_09_30/2011_09_30_drive_0033_sync 171 r
+2011_09_26/2011_09_26_drive_0035_sync 15 r
+2011_09_26/2011_09_26_drive_0091_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 3294 r
+2011_10_03/2011_10_03_drive_0034_sync 843 l
+2011_10_03/2011_10_03_drive_0034_sync 47 l
+2011_09_30/2011_09_30_drive_0028_sync 2782 r
+2011_10_03/2011_10_03_drive_0034_sync 1896 r
+2011_10_03/2011_10_03_drive_0034_sync 433 r
+2011_09_30/2011_09_30_drive_0028_sync 1857 r
+2011_09_26/2011_09_26_drive_0091_sync 64 l
+2011_09_26/2011_09_26_drive_0015_sync 276 l
+2011_09_30/2011_09_30_drive_0028_sync 1114 l
+2011_10_03/2011_10_03_drive_0034_sync 1271 r
+2011_09_30/2011_09_30_drive_0034_sync 392 r
+2011_09_26/2011_09_26_drive_0061_sync 29 l
+2011_09_30/2011_09_30_drive_0033_sync 1330 r
+2011_09_26/2011_09_26_drive_0028_sync 399 l
+2011_09_30/2011_09_30_drive_0028_sync 3930 r
+2011_10_03/2011_10_03_drive_0034_sync 4219 l
+2011_09_26/2011_09_26_drive_0061_sync 545 l
+2011_09_30/2011_09_30_drive_0028_sync 4084 l
+2011_09_30/2011_09_30_drive_0028_sync 4703 r
+2011_09_26/2011_09_26_drive_0061_sync 360 r
+2011_09_30/2011_09_30_drive_0020_sync 1094 r
+2011_09_26/2011_09_26_drive_0017_sync 14 r
+2011_09_26/2011_09_26_drive_0018_sync 99 l
+2011_09_26/2011_09_26_drive_0051_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 2633 l
+2011_10_03/2011_10_03_drive_0042_sync 963 r
+2011_09_26/2011_09_26_drive_0028_sync 289 r
+2011_09_30/2011_09_30_drive_0034_sync 893 l
+2011_09_30/2011_09_30_drive_0034_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 1333 r
+2011_09_30/2011_09_30_drive_0020_sync 583 r
+2011_10_03/2011_10_03_drive_0034_sync 4398 r
+2011_09_30/2011_09_30_drive_0020_sync 561 r
+2011_09_30/2011_09_30_drive_0028_sync 3291 r
+2011_09_30/2011_09_30_drive_0028_sync 3859 l
+2011_10_03/2011_10_03_drive_0034_sync 760 r
+2011_09_30/2011_09_30_drive_0028_sync 1491 l
+2011_10_03/2011_10_03_drive_0034_sync 3692 l
+2011_09_26/2011_09_26_drive_0018_sync 118 l
+2011_10_03/2011_10_03_drive_0042_sync 959 r
+2011_09_30/2011_09_30_drive_0028_sync 1327 r
+2011_09_30/2011_09_30_drive_0028_sync 1189 l
+2011_09_30/2011_09_30_drive_0028_sync 3505 l
+2011_09_30/2011_09_30_drive_0020_sync 391 r
+2011_09_30/2011_09_30_drive_0034_sync 661 l
+2011_09_30/2011_09_30_drive_0034_sync 805 l
+2011_09_26/2011_09_26_drive_0014_sync 162 l
+2011_09_26/2011_09_26_drive_0028_sync 166 l
+2011_09_30/2011_09_30_drive_0034_sync 1057 r
+2011_10_03/2011_10_03_drive_0034_sync 1414 r
+2011_09_30/2011_09_30_drive_0028_sync 4097 l
+2011_09_30/2011_09_30_drive_0034_sync 1030 l
+2011_09_26/2011_09_26_drive_0022_sync 206 l
+2011_09_26/2011_09_26_drive_0070_sync 57 l
+2011_09_26/2011_09_26_drive_0051_sync 111 l
+2011_09_26/2011_09_26_drive_0095_sync 214 r
+2011_10_03/2011_10_03_drive_0034_sync 1947 l
+2011_09_30/2011_09_30_drive_0028_sync 2623 l
+2011_09_30/2011_09_30_drive_0033_sync 834 l
+2011_09_26/2011_09_26_drive_0079_sync 80 r
+2011_09_26/2011_09_26_drive_0051_sync 384 r
+2011_09_26/2011_09_26_drive_0091_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 3362 l
+2011_09_26/2011_09_26_drive_0061_sync 155 l
+2011_09_30/2011_09_30_drive_0028_sync 2055 r
+2011_09_26/2011_09_26_drive_0028_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 4311 l
+2011_09_30/2011_09_30_drive_0020_sync 25 r
+2011_10_03/2011_10_03_drive_0042_sync 919 l
+2011_10_03/2011_10_03_drive_0042_sync 1127 l
+2011_09_30/2011_09_30_drive_0028_sync 4258 r
+2011_09_26/2011_09_26_drive_0087_sync 686 r
+2011_09_26/2011_09_26_drive_0019_sync 202 r
+2011_09_26/2011_09_26_drive_0087_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 746 r
+2011_09_30/2011_09_30_drive_0028_sync 2958 l
+2011_09_30/2011_09_30_drive_0028_sync 2412 r
+2011_09_30/2011_09_30_drive_0034_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 4077 r
+2011_09_30/2011_09_30_drive_0028_sync 4466 r
+2011_10_03/2011_10_03_drive_0034_sync 1712 r
+2011_09_30/2011_09_30_drive_0028_sync 3255 r
+2011_09_30/2011_09_30_drive_0028_sync 4887 l
+2011_10_03/2011_10_03_drive_0042_sync 101 r
+2011_09_26/2011_09_26_drive_0091_sync 53 r
+2011_09_26/2011_09_26_drive_0039_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 1909 l
+2011_09_26/2011_09_26_drive_0039_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 4228 l
+2011_09_30/2011_09_30_drive_0028_sync 3983 r
+2011_09_30/2011_09_30_drive_0033_sync 1247 l
+2011_09_30/2011_09_30_drive_0028_sync 2641 r
+2011_09_30/2011_09_30_drive_0028_sync 3573 r
+2011_09_30/2011_09_30_drive_0028_sync 1344 r
+2011_09_30/2011_09_30_drive_0028_sync 3181 l
+2011_09_29/2011_09_29_drive_0004_sync 89 r
+2011_09_30/2011_09_30_drive_0034_sync 864 r
+2011_09_30/2011_09_30_drive_0028_sync 614 l
+2011_09_30/2011_09_30_drive_0028_sync 3325 r
+2011_09_30/2011_09_30_drive_0028_sync 5092 l
+2011_09_30/2011_09_30_drive_0028_sync 2212 l
+2011_10_03/2011_10_03_drive_0042_sync 44 l
+2011_09_26/2011_09_26_drive_0015_sync 159 l
+2011_09_26/2011_09_26_drive_0032_sync 377 l
+2011_10_03/2011_10_03_drive_0042_sync 194 r
+2011_10_03/2011_10_03_drive_0034_sync 3170 l
+2011_09_30/2011_09_30_drive_0028_sync 4157 l
+2011_09_26/2011_09_26_drive_0019_sync 332 r
+2011_09_26/2011_09_26_drive_0028_sync 402 l
+2011_09_30/2011_09_30_drive_0028_sync 784 l
+2011_10_03/2011_10_03_drive_0034_sync 3359 r
+2011_09_26/2011_09_26_drive_0057_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 3963 l
+2011_09_26/2011_09_26_drive_0104_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 2004 l
+2011_10_03/2011_10_03_drive_0034_sync 2966 r
+2011_09_26/2011_09_26_drive_0018_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 2616 r
+2011_09_26/2011_09_26_drive_0019_sync 476 r
+2011_09_30/2011_09_30_drive_0034_sync 688 r
+2011_09_26/2011_09_26_drive_0070_sync 324 l
+2011_10_03/2011_10_03_drive_0034_sync 1081 l
+2011_09_30/2011_09_30_drive_0033_sync 93 r
+2011_09_26/2011_09_26_drive_0079_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 2013 l
+2011_10_03/2011_10_03_drive_0042_sync 980 r
+2011_09_29/2011_09_29_drive_0026_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 4032 r
+2011_10_03/2011_10_03_drive_0034_sync 1969 l
+2011_09_30/2011_09_30_drive_0028_sync 2071 r
+2011_09_26/2011_09_26_drive_0061_sync 458 r
+2011_09_26/2011_09_26_drive_0051_sync 46 l
+2011_09_30/2011_09_30_drive_0033_sync 1340 l
+2011_09_26/2011_09_26_drive_0070_sync 44 r
+2011_09_26/2011_09_26_drive_0051_sync 20 r
+2011_09_26/2011_09_26_drive_0022_sync 570 l
+2011_09_30/2011_09_30_drive_0028_sync 2188 l
+2011_09_26/2011_09_26_drive_0070_sync 20 r
+2011_09_30/2011_09_30_drive_0020_sync 727 r
+2011_09_26/2011_09_26_drive_0015_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 1371 l
+2011_10_03/2011_10_03_drive_0034_sync 4207 r
+2011_09_30/2011_09_30_drive_0028_sync 695 r
+2011_09_30/2011_09_30_drive_0034_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 1744 r
+2011_10_03/2011_10_03_drive_0034_sync 2621 l
+2011_09_30/2011_09_30_drive_0020_sync 784 r
+2011_09_26/2011_09_26_drive_0087_sync 90 r
+2011_09_26/2011_09_26_drive_0039_sync 225 l
+2011_09_26/2011_09_26_drive_0014_sync 286 r
+2011_09_29/2011_09_29_drive_0004_sync 106 r
+2011_09_29/2011_09_29_drive_0004_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 3389 r
+2011_10_03/2011_10_03_drive_0034_sync 3101 l
+2011_09_26/2011_09_26_drive_0019_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 2588 r
+2011_09_30/2011_09_30_drive_0020_sync 295 l
+2011_09_30/2011_09_30_drive_0020_sync 943 l
+2011_09_30/2011_09_30_drive_0028_sync 3345 l
+2011_09_26/2011_09_26_drive_0051_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 1261 r
+2011_09_26/2011_09_26_drive_0018_sync 54 l
+2011_10_03/2011_10_03_drive_0042_sync 613 l
+2011_09_30/2011_09_30_drive_0020_sync 943 r
+2011_10_03/2011_10_03_drive_0034_sync 4328 l
+2011_09_30/2011_09_30_drive_0028_sync 618 l
+2011_09_30/2011_09_30_drive_0020_sync 438 r
+2011_09_26/2011_09_26_drive_0070_sync 138 r
+2011_09_30/2011_09_30_drive_0033_sync 1353 r
+2011_09_26/2011_09_26_drive_0022_sync 541 r
+2011_10_03/2011_10_03_drive_0034_sync 1587 l
+2011_09_26/2011_09_26_drive_0018_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 1566 r
+2011_09_26/2011_09_26_drive_0011_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 3390 l
+2011_09_26/2011_09_26_drive_0087_sync 506 l
+2011_09_26/2011_09_26_drive_0070_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 4528 l
+2011_10_03/2011_10_03_drive_0042_sync 34 r
+2011_09_26/2011_09_26_drive_0057_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 866 l
+2011_10_03/2011_10_03_drive_0034_sync 1734 l
+2011_10_03/2011_10_03_drive_0042_sync 595 l
+2011_09_30/2011_09_30_drive_0034_sync 152 l
+2011_09_30/2011_09_30_drive_0020_sync 398 l
+2011_10_03/2011_10_03_drive_0034_sync 415 r
+2011_10_03/2011_10_03_drive_0034_sync 1745 r
+2011_10_03/2011_10_03_drive_0034_sync 4050 l
+2011_09_30/2011_09_30_drive_0034_sync 383 r
+2011_09_30/2011_09_30_drive_0028_sync 4890 r
+2011_10_03/2011_10_03_drive_0042_sync 410 r
+2011_10_03/2011_10_03_drive_0034_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 5113 l
+2011_09_30/2011_09_30_drive_0028_sync 4108 r
+2011_09_30/2011_09_30_drive_0028_sync 1708 r
+2011_10_03/2011_10_03_drive_0042_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 5100 l
+2011_09_30/2011_09_30_drive_0020_sync 322 r
+2011_09_30/2011_09_30_drive_0020_sync 927 r
+2011_10_03/2011_10_03_drive_0034_sync 2914 l
+2011_09_30/2011_09_30_drive_0028_sync 2750 r
+2011_10_03/2011_10_03_drive_0034_sync 3451 r
+2011_09_30/2011_09_30_drive_0028_sync 3768 r
+2011_09_30/2011_09_30_drive_0034_sync 741 l
+2011_09_30/2011_09_30_drive_0028_sync 1328 r
+2011_09_26/2011_09_26_drive_0019_sync 354 r
+2011_09_26/2011_09_26_drive_0051_sync 208 r
+2011_09_26/2011_09_26_drive_0022_sync 662 r
+2011_10_03/2011_10_03_drive_0034_sync 2164 r
+2011_09_30/2011_09_30_drive_0033_sync 1055 l
+2011_09_30/2011_09_30_drive_0033_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 2128 l
+2011_09_30/2011_09_30_drive_0028_sync 1945 r
+2011_10_03/2011_10_03_drive_0034_sync 1464 r
+2011_09_30/2011_09_30_drive_0034_sync 1003 r
+2011_10_03/2011_10_03_drive_0042_sync 238 r
+2011_09_26/2011_09_26_drive_0017_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 1728 l
+2011_09_30/2011_09_30_drive_0028_sync 1542 r
+2011_09_30/2011_09_30_drive_0028_sync 3818 l
+2011_10_03/2011_10_03_drive_0042_sync 78 l
+2011_10_03/2011_10_03_drive_0042_sync 341 l
+2011_09_26/2011_09_26_drive_0019_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 2432 r
+2011_09_26/2011_09_26_drive_0113_sync 43 l
+2011_09_26/2011_09_26_drive_0028_sync 37 r
+2011_09_30/2011_09_30_drive_0020_sync 974 l
+2011_09_26/2011_09_26_drive_0087_sync 574 l
+2011_09_30/2011_09_30_drive_0034_sync 480 r
+2011_09_26/2011_09_26_drive_0028_sync 195 r
+2011_09_30/2011_09_30_drive_0028_sync 3988 l
+2011_09_26/2011_09_26_drive_0014_sync 157 l
+2011_09_26/2011_09_26_drive_0070_sync 3 l
+2011_09_30/2011_09_30_drive_0020_sync 761 l
+2011_09_30/2011_09_30_drive_0028_sync 3207 l
+2011_10_03/2011_10_03_drive_0034_sync 1050 r
+2011_09_26/2011_09_26_drive_0022_sync 592 l
+2011_09_30/2011_09_30_drive_0033_sync 975 l
+2011_09_26/2011_09_26_drive_0091_sync 156 l
+2011_09_30/2011_09_30_drive_0033_sync 494 r
+2011_10_03/2011_10_03_drive_0034_sync 843 r
+2011_09_28/2011_09_28_drive_0001_sync 80 r
+2011_09_26/2011_09_26_drive_0017_sync 46 l
+2011_09_26/2011_09_26_drive_0014_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 3826 r
+2011_10_03/2011_10_03_drive_0034_sync 3598 r
+2011_09_30/2011_09_30_drive_0033_sync 119 r
+2011_09_26/2011_09_26_drive_0022_sync 492 l
+2011_10_03/2011_10_03_drive_0042_sync 1115 r
+2011_10_03/2011_10_03_drive_0034_sync 1104 l
+2011_09_26/2011_09_26_drive_0087_sync 66 l
+2011_10_03/2011_10_03_drive_0042_sync 254 l
+2011_09_26/2011_09_26_drive_0005_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 4382 r
+2011_09_26/2011_09_26_drive_0017_sync 87 l
+2011_09_26/2011_09_26_drive_0061_sync 107 r
+2011_09_26/2011_09_26_drive_0104_sync 290 r
+2011_09_30/2011_09_30_drive_0028_sync 4556 r
+2011_09_26/2011_09_26_drive_0091_sync 237 l
+2011_09_30/2011_09_30_drive_0020_sync 901 l
+2011_09_26/2011_09_26_drive_0061_sync 277 r
+2011_09_26/2011_09_26_drive_0039_sync 250 l
+2011_09_30/2011_09_30_drive_0033_sync 390 r
+2011_09_26/2011_09_26_drive_0070_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 2887 r
+2011_09_30/2011_09_30_drive_0028_sync 2690 l
+2011_10_03/2011_10_03_drive_0034_sync 3581 l
+2011_09_26/2011_09_26_drive_0015_sync 39 r
+2011_09_30/2011_09_30_drive_0033_sync 630 l
+2011_09_30/2011_09_30_drive_0028_sync 4837 l
+2011_09_30/2011_09_30_drive_0028_sync 4170 l
+2011_09_26/2011_09_26_drive_0015_sync 119 l
+2011_09_26/2011_09_26_drive_0087_sync 482 r
+2011_09_26/2011_09_26_drive_0005_sync 121 l
+2011_09_30/2011_09_30_drive_0034_sync 1131 l
+2011_09_30/2011_09_30_drive_0028_sync 2631 r
+2011_09_26/2011_09_26_drive_0061_sync 26 r
+2011_09_26/2011_09_26_drive_0014_sync 113 l
+2011_09_26/2011_09_26_drive_0014_sync 298 r
+2011_10_03/2011_10_03_drive_0034_sync 4358 l
+2011_09_26/2011_09_26_drive_0039_sync 369 l
+2011_09_26/2011_09_26_drive_0061_sync 307 r
+2011_10_03/2011_10_03_drive_0034_sync 2777 r
+2011_09_30/2011_09_30_drive_0028_sync 3474 l
+2011_10_03/2011_10_03_drive_0034_sync 1640 r
+2011_09_26/2011_09_26_drive_0028_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 3845 r
+2011_09_26/2011_09_26_drive_0057_sync 306 l
+2011_09_30/2011_09_30_drive_0020_sync 711 l
+2011_10_03/2011_10_03_drive_0034_sync 4152 r
+2011_09_30/2011_09_30_drive_0028_sync 2069 r
+2011_09_26/2011_09_26_drive_0087_sync 522 r
+2011_09_26/2011_09_26_drive_0014_sync 258 r
+2011_10_03/2011_10_03_drive_0042_sync 702 r
+2011_10_03/2011_10_03_drive_0034_sync 3588 l
+2011_10_03/2011_10_03_drive_0034_sync 1098 r
+2011_09_26/2011_09_26_drive_0091_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 4602 r
+2011_09_30/2011_09_30_drive_0028_sync 2565 l
+2011_09_26/2011_09_26_drive_0061_sync 508 l
+2011_10_03/2011_10_03_drive_0034_sync 1050 l
+2011_09_30/2011_09_30_drive_0033_sync 1286 l
+2011_10_03/2011_10_03_drive_0034_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 2228 l
+2011_10_03/2011_10_03_drive_0034_sync 2579 l
+2011_09_29/2011_09_29_drive_0026_sync 40 r
+2011_09_26/2011_09_26_drive_0028_sync 266 l
+2011_09_26/2011_09_26_drive_0095_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 2429 r
+2011_09_26/2011_09_26_drive_0022_sync 238 r
+2011_09_26/2011_09_26_drive_0070_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 162 r
+2011_09_29/2011_09_29_drive_0004_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 2416 l
+2011_09_30/2011_09_30_drive_0028_sync 3223 l
+2011_09_26/2011_09_26_drive_0019_sync 121 r
+2011_09_30/2011_09_30_drive_0028_sync 2270 r
+2011_09_26/2011_09_26_drive_0022_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 1847 r
+2011_10_03/2011_10_03_drive_0034_sync 2087 r
+2011_09_26/2011_09_26_drive_0028_sync 314 r
+2011_09_26/2011_09_26_drive_0032_sync 17 l
+2011_09_26/2011_09_26_drive_0061_sync 648 r
+2011_09_30/2011_09_30_drive_0020_sync 518 r
+2011_09_26/2011_09_26_drive_0039_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 2772 l
+2011_09_29/2011_09_29_drive_0004_sync 323 l
+2011_09_30/2011_09_30_drive_0033_sync 1553 r
+2011_09_30/2011_09_30_drive_0034_sync 866 l
+2011_09_26/2011_09_26_drive_0022_sync 488 l
+2011_10_03/2011_10_03_drive_0042_sync 630 r
+2011_09_26/2011_09_26_drive_0061_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 2339 r
+2011_10_03/2011_10_03_drive_0034_sync 308 l
+2011_09_26/2011_09_26_drive_0087_sync 503 l
+2011_10_03/2011_10_03_drive_0034_sync 2446 l
+2011_10_03/2011_10_03_drive_0034_sync 2527 r
+2011_09_30/2011_09_30_drive_0033_sync 1498 r
+2011_09_30/2011_09_30_drive_0028_sync 2954 l
+2011_10_03/2011_10_03_drive_0034_sync 1418 r
+2011_10_03/2011_10_03_drive_0034_sync 3328 l
+2011_10_03/2011_10_03_drive_0034_sync 242 r
+2011_09_30/2011_09_30_drive_0020_sync 530 r
+2011_09_30/2011_09_30_drive_0033_sync 923 l
+2011_09_30/2011_09_30_drive_0033_sync 1488 r
+2011_09_26/2011_09_26_drive_0028_sync 256 l
+2011_09_30/2011_09_30_drive_0028_sync 501 r
+2011_09_26/2011_09_26_drive_0011_sync 20 r
+2011_09_30/2011_09_30_drive_0034_sync 478 r
+2011_09_26/2011_09_26_drive_0019_sync 392 l
+2011_09_26/2011_09_26_drive_0015_sync 270 l
+2011_09_30/2011_09_30_drive_0033_sync 1339 r
+2011_09_26/2011_09_26_drive_0051_sync 303 r
+2011_09_26/2011_09_26_drive_0018_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 820 r
+2011_09_26/2011_09_26_drive_0091_sync 177 l
+2011_09_26/2011_09_26_drive_0070_sync 14 l
+2011_09_30/2011_09_30_drive_0033_sync 1326 l
+2011_10_03/2011_10_03_drive_0034_sync 2363 r
+2011_09_30/2011_09_30_drive_0028_sync 3113 r
+2011_09_30/2011_09_30_drive_0020_sync 800 r
+2011_09_26/2011_09_26_drive_0070_sync 335 l
+2011_10_03/2011_10_03_drive_0034_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 3788 l
+2011_09_26/2011_09_26_drive_0057_sync 224 r
+2011_09_26/2011_09_26_drive_0014_sync 177 r
+2011_09_30/2011_09_30_drive_0033_sync 46 l
+2011_09_26/2011_09_26_drive_0079_sync 15 l
+2011_09_30/2011_09_30_drive_0020_sync 586 r
+2011_10_03/2011_10_03_drive_0042_sync 708 l
+2011_09_26/2011_09_26_drive_0022_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 2432 r
+2011_09_26/2011_09_26_drive_0022_sync 750 r
+2011_10_03/2011_10_03_drive_0034_sync 1924 l
+2011_09_26/2011_09_26_drive_0011_sync 161 l
+2011_09_30/2011_09_30_drive_0020_sync 1048 r
+2011_09_26/2011_09_26_drive_0070_sync 44 l
+2011_10_03/2011_10_03_drive_0042_sync 262 l
+2011_09_26/2011_09_26_drive_0087_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 1750 l
+2011_09_30/2011_09_30_drive_0020_sync 185 l
+2011_09_26/2011_09_26_drive_0022_sync 182 r
+2011_09_26/2011_09_26_drive_0095_sync 30 l
+2011_09_26/2011_09_26_drive_0051_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 804 l
+2011_09_26/2011_09_26_drive_0015_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 1642 r
+2011_10_03/2011_10_03_drive_0034_sync 1545 l
+2011_09_30/2011_09_30_drive_0033_sync 445 r
+2011_09_26/2011_09_26_drive_0039_sync 182 l
+2011_10_03/2011_10_03_drive_0042_sync 988 l
+2011_09_26/2011_09_26_drive_0019_sync 8 l
+2011_09_30/2011_09_30_drive_0033_sync 1118 l
+2011_10_03/2011_10_03_drive_0034_sync 663 l
+2011_10_03/2011_10_03_drive_0042_sync 445 r
+2011_09_30/2011_09_30_drive_0028_sync 889 r
+2011_09_30/2011_09_30_drive_0028_sync 900 l
+2011_10_03/2011_10_03_drive_0042_sync 188 l
+2011_09_26/2011_09_26_drive_0022_sync 608 r
+2011_09_26/2011_09_26_drive_0035_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 2366 r
+2011_10_03/2011_10_03_drive_0034_sync 556 l
+2011_09_30/2011_09_30_drive_0020_sync 204 l
+2011_09_26/2011_09_26_drive_0087_sync 516 r
+2011_09_26/2011_09_26_drive_0035_sync 54 l
+2011_09_26/2011_09_26_drive_0079_sync 62 r
+2011_10_03/2011_10_03_drive_0042_sync 1029 r
+2011_09_26/2011_09_26_drive_0022_sync 613 r
+2011_09_30/2011_09_30_drive_0033_sync 1022 l
+2011_09_30/2011_09_30_drive_0028_sync 3143 r
+2011_09_26/2011_09_26_drive_0039_sync 52 l
+2011_09_30/2011_09_30_drive_0033_sync 549 r
+2011_09_30/2011_09_30_drive_0033_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 4331 r
+2011_09_29/2011_09_29_drive_0026_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 4253 r
+2011_09_26/2011_09_26_drive_0104_sync 14 l
+2011_09_26/2011_09_26_drive_0070_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 2055 l
+2011_09_30/2011_09_30_drive_0028_sync 4840 l
+2011_09_26/2011_09_26_drive_0018_sync 27 r
+2011_09_26/2011_09_26_drive_0019_sync 102 r
+2011_09_26/2011_09_26_drive_0087_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 3953 r
+2011_09_26/2011_09_26_drive_0051_sync 237 r
+2011_09_30/2011_09_30_drive_0034_sync 891 r
+2011_10_03/2011_10_03_drive_0034_sync 4278 r
+2011_09_26/2011_09_26_drive_0032_sync 252 r
+2011_09_26/2011_09_26_drive_0019_sync 316 l
+2011_09_26/2011_09_26_drive_0028_sync 333 l
+2011_09_30/2011_09_30_drive_0020_sync 774 r
+2011_10_03/2011_10_03_drive_0034_sync 2240 r
+2011_09_26/2011_09_26_drive_0028_sync 77 l
+2011_09_26/2011_09_26_drive_0051_sync 358 l
+2011_10_03/2011_10_03_drive_0034_sync 1801 l
+2011_10_03/2011_10_03_drive_0034_sync 4003 l
+2011_09_26/2011_09_26_drive_0087_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 2620 r
+2011_09_26/2011_09_26_drive_0113_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 2083 l
+2011_10_03/2011_10_03_drive_0034_sync 4376 l
+2011_09_26/2011_09_26_drive_0051_sync 308 l
+2011_09_26/2011_09_26_drive_0001_sync 11 r
+2011_09_26/2011_09_26_drive_0087_sync 645 r
+2011_09_30/2011_09_30_drive_0028_sync 1774 r
+2011_10_03/2011_10_03_drive_0034_sync 3538 r
+2011_10_03/2011_10_03_drive_0034_sync 4544 r
+2011_09_30/2011_09_30_drive_0028_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 1759 r
+2011_09_30/2011_09_30_drive_0028_sync 1697 r
+2011_09_26/2011_09_26_drive_0022_sync 665 r
+2011_10_03/2011_10_03_drive_0034_sync 283 r
+2011_09_26/2011_09_26_drive_0051_sync 289 l
+2011_09_26/2011_09_26_drive_0022_sync 648 r
+2011_10_03/2011_10_03_drive_0034_sync 1669 l
+2011_09_30/2011_09_30_drive_0028_sync 4867 r
+2011_10_03/2011_10_03_drive_0034_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 1231 l
+2011_09_26/2011_09_26_drive_0095_sync 187 l
+2011_10_03/2011_10_03_drive_0034_sync 648 l
+2011_10_03/2011_10_03_drive_0034_sync 3404 l
+2011_09_26/2011_09_26_drive_0087_sync 501 r
+2011_09_30/2011_09_30_drive_0028_sync 4068 r
+2011_09_30/2011_09_30_drive_0028_sync 2014 l
+2011_09_30/2011_09_30_drive_0033_sync 389 l
+2011_09_26/2011_09_26_drive_0032_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 1754 l
+2011_09_26/2011_09_26_drive_0057_sync 329 r
+2011_09_26/2011_09_26_drive_0087_sync 2 r
+2011_09_30/2011_09_30_drive_0033_sync 799 l
+2011_10_03/2011_10_03_drive_0034_sync 2041 r
+2011_09_26/2011_09_26_drive_0015_sync 280 r
+2011_09_29/2011_09_29_drive_0026_sync 118 r
+2011_09_26/2011_09_26_drive_0039_sync 122 l
+2011_09_26/2011_09_26_drive_0032_sync 256 r
+2011_09_30/2011_09_30_drive_0034_sync 138 l
+2011_09_30/2011_09_30_drive_0034_sync 407 r
+2011_09_30/2011_09_30_drive_0034_sync 1057 l
+2011_09_30/2011_09_30_drive_0028_sync 3555 r
+2011_10_03/2011_10_03_drive_0034_sync 853 r
+2011_09_26/2011_09_26_drive_0014_sync 148 l
+2011_10_03/2011_10_03_drive_0034_sync 4233 l
+2011_09_26/2011_09_26_drive_0113_sync 65 l
+2011_09_26/2011_09_26_drive_0070_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 4650 l
+2011_09_26/2011_09_26_drive_0061_sync 258 l
+2011_09_26/2011_09_26_drive_0022_sync 749 l
+2011_09_30/2011_09_30_drive_0034_sync 205 r
+2011_09_30/2011_09_30_drive_0033_sync 1482 r
+2011_09_26/2011_09_26_drive_0019_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 3576 l
+2011_09_26/2011_09_26_drive_0028_sync 367 l
+2011_09_30/2011_09_30_drive_0028_sync 2649 r
+2011_09_30/2011_09_30_drive_0034_sync 576 l
+2011_09_30/2011_09_30_drive_0033_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 2059 r
+2011_09_30/2011_09_30_drive_0028_sync 619 r
+2011_09_26/2011_09_26_drive_0061_sync 333 l
+2011_09_26/2011_09_26_drive_0014_sync 209 r
+2011_09_30/2011_09_30_drive_0028_sync 628 l
+2011_09_30/2011_09_30_drive_0028_sync 1868 r
+2011_09_30/2011_09_30_drive_0028_sync 2610 r
+2011_09_30/2011_09_30_drive_0020_sync 703 l
+2011_10_03/2011_10_03_drive_0034_sync 1407 l
+2011_09_30/2011_09_30_drive_0028_sync 2046 l
+2011_09_30/2011_09_30_drive_0028_sync 4028 r
+2011_10_03/2011_10_03_drive_0034_sync 884 r
+2011_09_26/2011_09_26_drive_0091_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 955 l
+2011_09_26/2011_09_26_drive_0019_sync 344 r
+2011_09_30/2011_09_30_drive_0033_sync 1398 l
+2011_09_30/2011_09_30_drive_0020_sync 409 r
+2011_09_30/2011_09_30_drive_0033_sync 647 r
+2011_09_30/2011_09_30_drive_0020_sync 66 r
+2011_09_30/2011_09_30_drive_0034_sync 251 r
+2011_09_30/2011_09_30_drive_0033_sync 314 l
+2011_09_30/2011_09_30_drive_0028_sync 4461 l
+2011_10_03/2011_10_03_drive_0042_sync 299 r
+2011_10_03/2011_10_03_drive_0034_sync 823 r
+2011_09_30/2011_09_30_drive_0028_sync 1882 r
+2011_10_03/2011_10_03_drive_0034_sync 4506 r
+2011_10_03/2011_10_03_drive_0034_sync 350 r
+2011_09_26/2011_09_26_drive_0022_sync 774 r
+2011_10_03/2011_10_03_drive_0034_sync 1581 r
+2011_09_26/2011_09_26_drive_0061_sync 198 l
+2011_09_30/2011_09_30_drive_0033_sync 344 r
+2011_09_30/2011_09_30_drive_0028_sync 1262 l
+2011_10_03/2011_10_03_drive_0042_sync 210 r
+2011_10_03/2011_10_03_drive_0042_sync 541 l
+2011_10_03/2011_10_03_drive_0034_sync 733 l
+2011_09_30/2011_09_30_drive_0028_sync 1091 r
+2011_09_30/2011_09_30_drive_0033_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 3947 l
+2011_09_26/2011_09_26_drive_0061_sync 430 l
+2011_09_26/2011_09_26_drive_0022_sync 362 r
+2011_10_03/2011_10_03_drive_0034_sync 1757 l
+2011_09_26/2011_09_26_drive_0022_sync 578 l
+2011_10_03/2011_10_03_drive_0034_sync 3694 r
+2011_09_26/2011_09_26_drive_0022_sync 562 l
+2011_10_03/2011_10_03_drive_0034_sync 724 r
+2011_09_30/2011_09_30_drive_0033_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 4447 r
+2011_10_03/2011_10_03_drive_0034_sync 2735 l
+2011_09_30/2011_09_30_drive_0028_sync 5052 r
+2011_09_30/2011_09_30_drive_0033_sync 765 r
+2011_09_30/2011_09_30_drive_0033_sync 1402 l
+2011_10_03/2011_10_03_drive_0042_sync 100 l
+2011_10_03/2011_10_03_drive_0042_sync 1001 r
+2011_10_03/2011_10_03_drive_0034_sync 2857 l
+2011_10_03/2011_10_03_drive_0034_sync 2494 l
+2011_10_03/2011_10_03_drive_0034_sync 4416 r
+2011_09_30/2011_09_30_drive_0028_sync 898 l
+2011_09_26/2011_09_26_drive_0091_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 1598 l
+2011_09_30/2011_09_30_drive_0020_sync 990 l
+2011_09_26/2011_09_26_drive_0022_sync 63 l
+2011_09_30/2011_09_30_drive_0020_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 3842 l
+2011_09_30/2011_09_30_drive_0028_sync 3538 l
+2011_09_30/2011_09_30_drive_0020_sync 709 l
+2011_09_26/2011_09_26_drive_0028_sync 158 r
+2011_09_30/2011_09_30_drive_0020_sync 842 r
+2011_09_30/2011_09_30_drive_0028_sync 1761 l
+2011_09_26/2011_09_26_drive_0032_sync 254 r
+2011_09_26/2011_09_26_drive_0019_sync 149 r
+2011_09_26/2011_09_26_drive_0070_sync 201 l
+2011_09_26/2011_09_26_drive_0035_sync 1 l
+2011_09_26/2011_09_26_drive_0014_sync 220 l
+2011_09_26/2011_09_26_drive_0095_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 3560 r
+2011_09_26/2011_09_26_drive_0061_sync 686 l
+2011_09_30/2011_09_30_drive_0028_sync 4690 l
+2011_10_03/2011_10_03_drive_0042_sync 1002 l
+2011_10_03/2011_10_03_drive_0034_sync 1297 r
+2011_09_26/2011_09_26_drive_0095_sync 201 r
+2011_09_26/2011_09_26_drive_0070_sync 94 r
+2011_09_26/2011_09_26_drive_0104_sync 157 l
+2011_09_30/2011_09_30_drive_0034_sync 629 l
+2011_09_26/2011_09_26_drive_0039_sync 380 r
+2011_09_30/2011_09_30_drive_0020_sync 668 l
+2011_09_26/2011_09_26_drive_0051_sync 364 l
+2011_10_03/2011_10_03_drive_0042_sync 226 r
+2011_09_26/2011_09_26_drive_0015_sync 74 l
+2011_09_29/2011_09_29_drive_0004_sync 96 l
+2011_09_26/2011_09_26_drive_0095_sync 160 l
+2011_09_30/2011_09_30_drive_0033_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 2894 r
+2011_10_03/2011_10_03_drive_0034_sync 3816 r
+2011_09_26/2011_09_26_drive_0091_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 2827 l
+2011_10_03/2011_10_03_drive_0034_sync 2981 l
+2011_09_30/2011_09_30_drive_0028_sync 369 l
+2011_10_03/2011_10_03_drive_0034_sync 2279 r
+2011_09_30/2011_09_30_drive_0028_sync 1749 r
+2011_09_26/2011_09_26_drive_0087_sync 49 l
+2011_09_26/2011_09_26_drive_0014_sync 120 r
+2011_09_30/2011_09_30_drive_0034_sync 396 l
+2011_09_30/2011_09_30_drive_0028_sync 1572 r
+2011_09_30/2011_09_30_drive_0033_sync 459 l
+2011_09_30/2011_09_30_drive_0034_sync 600 r
+2011_10_03/2011_10_03_drive_0034_sync 3476 r
+2011_10_03/2011_10_03_drive_0042_sync 76 l
+2011_10_03/2011_10_03_drive_0042_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 4962 l
+2011_10_03/2011_10_03_drive_0034_sync 2660 l
+2011_09_30/2011_09_30_drive_0033_sync 115 l
+2011_09_26/2011_09_26_drive_0070_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 1012 l
+2011_09_26/2011_09_26_drive_0070_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 4603 l
+2011_09_26/2011_09_26_drive_0022_sync 146 l
+2011_09_26/2011_09_26_drive_0051_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 3802 r
+2011_09_30/2011_09_30_drive_0028_sync 1035 l
+2011_09_30/2011_09_30_drive_0028_sync 508 l
+2011_09_30/2011_09_30_drive_0034_sync 695 l
+2011_09_26/2011_09_26_drive_0091_sync 152 l
+2011_09_26/2011_09_26_drive_0087_sync 320 l
+2011_09_26/2011_09_26_drive_0070_sync 142 r
+2011_09_26/2011_09_26_drive_0011_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 4583 r
+2011_09_30/2011_09_30_drive_0028_sync 1546 l
+2011_09_26/2011_09_26_drive_0022_sync 439 r
+2011_09_30/2011_09_30_drive_0034_sync 727 l
+2011_10_03/2011_10_03_drive_0034_sync 280 r
+2011_10_03/2011_10_03_drive_0034_sync 362 l
+2011_10_03/2011_10_03_drive_0034_sync 1308 r
+2011_09_30/2011_09_30_drive_0028_sync 1209 l
+2011_09_30/2011_09_30_drive_0028_sync 4618 l
+2011_09_30/2011_09_30_drive_0028_sync 4175 r
+2011_09_30/2011_09_30_drive_0028_sync 4377 l
+2011_09_26/2011_09_26_drive_0015_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 2154 l
+2011_10_03/2011_10_03_drive_0034_sync 297 r
+2011_10_03/2011_10_03_drive_0034_sync 2438 l
+2011_09_26/2011_09_26_drive_0087_sync 381 l
+2011_09_30/2011_09_30_drive_0028_sync 760 l
+2011_09_26/2011_09_26_drive_0087_sync 541 r
+2011_09_26/2011_09_26_drive_0095_sync 62 r
+2011_09_30/2011_09_30_drive_0034_sync 1213 l
+2011_10_03/2011_10_03_drive_0042_sync 587 r
+2011_09_30/2011_09_30_drive_0028_sync 4991 r
+2011_09_26/2011_09_26_drive_0035_sync 41 r
+2011_09_26/2011_09_26_drive_0061_sync 160 l
+2011_10_03/2011_10_03_drive_0034_sync 2807 l
+2011_10_03/2011_10_03_drive_0034_sync 907 r
+2011_10_03/2011_10_03_drive_0042_sync 888 r
+2011_09_30/2011_09_30_drive_0033_sync 701 r
+2011_10_03/2011_10_03_drive_0034_sync 4349 l
+2011_09_26/2011_09_26_drive_0019_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 2446 l
+2011_09_26/2011_09_26_drive_0057_sync 215 r
+2011_09_30/2011_09_30_drive_0028_sync 2584 r
+2011_10_03/2011_10_03_drive_0042_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 3877 r
+2011_09_26/2011_09_26_drive_0051_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 373 r
+2011_09_30/2011_09_30_drive_0028_sync 2652 r
+2011_09_30/2011_09_30_drive_0028_sync 1258 r
+2011_10_03/2011_10_03_drive_0034_sync 3240 l
+2011_09_26/2011_09_26_drive_0087_sync 292 l
+2011_09_26/2011_09_26_drive_0015_sync 203 r
+2011_09_30/2011_09_30_drive_0020_sync 214 l
+2011_10_03/2011_10_03_drive_0034_sync 2927 l
+2011_10_03/2011_10_03_drive_0034_sync 1481 r
+2011_09_30/2011_09_30_drive_0034_sync 900 l
+2011_10_03/2011_10_03_drive_0034_sync 293 r
+2011_09_26/2011_09_26_drive_0022_sync 590 l
+2011_09_30/2011_09_30_drive_0020_sync 266 r
+2011_09_26/2011_09_26_drive_0022_sync 398 l
+2011_09_26/2011_09_26_drive_0087_sync 329 l
+2011_09_26/2011_09_26_drive_0057_sync 230 l
+2011_09_26/2011_09_26_drive_0051_sync 230 r
+2011_10_03/2011_10_03_drive_0034_sync 2898 r
+2011_09_26/2011_09_26_drive_0018_sync 213 r
+2011_09_26/2011_09_26_drive_0061_sync 550 l
+2011_09_26/2011_09_26_drive_0005_sync 29 r
+2011_09_26/2011_09_26_drive_0022_sync 13 l
+2011_09_26/2011_09_26_drive_0018_sync 247 r
+2011_09_30/2011_09_30_drive_0028_sync 1334 r
+2011_09_30/2011_09_30_drive_0028_sync 1599 r
+2011_09_30/2011_09_30_drive_0034_sync 436 r
+2011_09_30/2011_09_30_drive_0033_sync 1478 l
+2011_09_30/2011_09_30_drive_0020_sync 612 l
+2011_10_03/2011_10_03_drive_0034_sync 2644 l
+2011_09_30/2011_09_30_drive_0028_sync 3465 l
+2011_10_03/2011_10_03_drive_0034_sync 2789 l
+2011_10_03/2011_10_03_drive_0034_sync 2047 l
+2011_10_03/2011_10_03_drive_0034_sync 2748 l
+2011_10_03/2011_10_03_drive_0042_sync 630 l
+2011_10_03/2011_10_03_drive_0042_sync 1130 r
+2011_09_26/2011_09_26_drive_0087_sync 673 r
+2011_10_03/2011_10_03_drive_0042_sync 314 r
+2011_09_30/2011_09_30_drive_0033_sync 12 l
+2011_09_26/2011_09_26_drive_0039_sync 27 r
+2011_09_30/2011_09_30_drive_0034_sync 898 l
+2011_09_26/2011_09_26_drive_0032_sync 213 l
+2011_10_03/2011_10_03_drive_0042_sync 593 l
+2011_09_26/2011_09_26_drive_0019_sync 455 r
+2011_09_26/2011_09_26_drive_0070_sync 213 l
+2011_09_30/2011_09_30_drive_0033_sync 978 r
+2011_09_26/2011_09_26_drive_0028_sync 368 r
+2011_09_30/2011_09_30_drive_0028_sync 3822 r
+2011_09_26/2011_09_26_drive_0014_sync 81 l
+2011_09_26/2011_09_26_drive_0022_sync 797 r
+2011_09_26/2011_09_26_drive_0057_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 3429 r
+2011_10_03/2011_10_03_drive_0034_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 3000 l
+2011_09_30/2011_09_30_drive_0034_sync 250 l
+2011_09_26/2011_09_26_drive_0087_sync 559 l
+2011_10_03/2011_10_03_drive_0034_sync 3495 r
+2011_09_26/2011_09_26_drive_0061_sync 272 l
+2011_09_30/2011_09_30_drive_0028_sync 2471 l
+2011_09_30/2011_09_30_drive_0028_sync 875 r
+2011_10_03/2011_10_03_drive_0034_sync 3328 r
+2011_10_03/2011_10_03_drive_0042_sync 900 l
+2011_09_28/2011_09_28_drive_0001_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 1581 r
+2011_10_03/2011_10_03_drive_0042_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 2541 l
+2011_09_26/2011_09_26_drive_0051_sync 91 r
+2011_09_29/2011_09_29_drive_0004_sync 177 l
+2011_09_26/2011_09_26_drive_0039_sync 312 l
+2011_09_26/2011_09_26_drive_0091_sync 48 r
+2011_09_26/2011_09_26_drive_0028_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 676 r
+2011_09_30/2011_09_30_drive_0020_sync 949 l
+2011_09_26/2011_09_26_drive_0015_sync 42 r
+2011_09_26/2011_09_26_drive_0087_sync 425 r
+2011_09_26/2011_09_26_drive_0018_sync 3 r
+2011_09_30/2011_09_30_drive_0034_sync 327 r
+2011_09_30/2011_09_30_drive_0033_sync 1427 r
+2011_10_03/2011_10_03_drive_0034_sync 1622 r
+2011_10_03/2011_10_03_drive_0034_sync 3261 r
+2011_09_30/2011_09_30_drive_0020_sync 396 l
+2011_09_26/2011_09_26_drive_0057_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 5088 r
+2011_09_26/2011_09_26_drive_0087_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 1355 l
+2011_09_30/2011_09_30_drive_0033_sync 272 r
+2011_09_26/2011_09_26_drive_0057_sync 259 l
+2011_10_03/2011_10_03_drive_0034_sync 663 r
+2011_09_30/2011_09_30_drive_0020_sync 1081 l
+2011_09_26/2011_09_26_drive_0070_sync 255 l
+2011_09_26/2011_09_26_drive_0032_sync 189 l
+2011_09_26/2011_09_26_drive_0070_sync 308 l
+2011_09_26/2011_09_26_drive_0039_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 3811 l
+2011_09_30/2011_09_30_drive_0028_sync 3531 l
+2011_09_30/2011_09_30_drive_0028_sync 3194 r
+2011_10_03/2011_10_03_drive_0034_sync 754 l
+2011_09_30/2011_09_30_drive_0033_sync 1475 r
+2011_10_03/2011_10_03_drive_0034_sync 1256 l
+2011_09_30/2011_09_30_drive_0020_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 1653 l
+2011_09_30/2011_09_30_drive_0028_sync 2243 l
+2011_09_26/2011_09_26_drive_0011_sync 219 l
+2011_10_03/2011_10_03_drive_0034_sync 3169 r
+2011_09_30/2011_09_30_drive_0033_sync 1274 r
+2011_09_30/2011_09_30_drive_0034_sync 728 l
+2011_09_26/2011_09_26_drive_0022_sync 223 l
+2011_09_30/2011_09_30_drive_0033_sync 324 l
+2011_09_30/2011_09_30_drive_0020_sync 818 r
+2011_09_26/2011_09_26_drive_0022_sync 72 l
+2011_09_26/2011_09_26_drive_0018_sync 188 l
+2011_09_26/2011_09_26_drive_0014_sync 185 l
+2011_10_03/2011_10_03_drive_0042_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 4653 r
+2011_09_30/2011_09_30_drive_0028_sync 2339 l
+2011_09_30/2011_09_30_drive_0033_sync 578 r
+2011_09_30/2011_09_30_drive_0033_sync 1393 r
+2011_09_30/2011_09_30_drive_0033_sync 851 r
+2011_10_03/2011_10_03_drive_0034_sync 259 l
+2011_09_28/2011_09_28_drive_0001_sync 37 r
+2011_09_26/2011_09_26_drive_0022_sync 150 l
+2011_09_30/2011_09_30_drive_0033_sync 888 r
+2011_09_30/2011_09_30_drive_0028_sync 738 l
+2011_09_26/2011_09_26_drive_0057_sync 98 l
+2011_09_26/2011_09_26_drive_0022_sync 735 l
+2011_09_26/2011_09_26_drive_0039_sync 321 l
+2011_09_30/2011_09_30_drive_0033_sync 1026 l
+2011_10_03/2011_10_03_drive_0034_sync 4546 l
+2011_09_26/2011_09_26_drive_0051_sync 307 l
+2011_09_26/2011_09_26_drive_0015_sync 262 l
+2011_09_30/2011_09_30_drive_0034_sync 798 r
+2011_09_26/2011_09_26_drive_0022_sync 41 r
+2011_09_26/2011_09_26_drive_0070_sync 73 r
+2011_09_26/2011_09_26_drive_0005_sync 95 l
+2011_09_26/2011_09_26_drive_0014_sync 184 r
+2011_09_30/2011_09_30_drive_0020_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 1943 r
+2011_09_30/2011_09_30_drive_0020_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 3419 l
+2011_09_26/2011_09_26_drive_0070_sync 66 l
+2011_09_26/2011_09_26_drive_0087_sync 536 r
+2011_09_26/2011_09_26_drive_0018_sync 229 r
+2011_09_26/2011_09_26_drive_0017_sync 28 l
+2011_10_03/2011_10_03_drive_0042_sync 698 l
+2011_10_03/2011_10_03_drive_0034_sync 702 r
+2011_09_30/2011_09_30_drive_0020_sync 1032 r
+2011_10_03/2011_10_03_drive_0034_sync 2329 l
+2011_09_30/2011_09_30_drive_0028_sync 1268 l
+2011_09_30/2011_09_30_drive_0028_sync 1406 r
+2011_10_03/2011_10_03_drive_0034_sync 1016 r
+2011_09_30/2011_09_30_drive_0034_sync 367 l
+2011_09_26/2011_09_26_drive_0087_sync 626 r
+2011_10_03/2011_10_03_drive_0042_sync 343 r
+2011_09_26/2011_09_26_drive_0019_sync 80 r
+2011_09_26/2011_09_26_drive_0061_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 3713 r
+2011_09_26/2011_09_26_drive_0018_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 722 l
+2011_10_03/2011_10_03_drive_0034_sync 3989 r
+2011_10_03/2011_10_03_drive_0042_sync 460 l
+2011_09_26/2011_09_26_drive_0014_sync 6 l
+2011_09_30/2011_09_30_drive_0034_sync 989 r
+2011_09_30/2011_09_30_drive_0028_sync 3981 l
+2011_09_26/2011_09_26_drive_0051_sync 199 r
+2011_10_03/2011_10_03_drive_0034_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 3867 l
+2011_09_26/2011_09_26_drive_0022_sync 507 l
+2011_09_26/2011_09_26_drive_0051_sync 239 l
+2011_09_30/2011_09_30_drive_0033_sync 1399 l
+2011_09_30/2011_09_30_drive_0033_sync 1218 r
+2011_09_26/2011_09_26_drive_0051_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 1508 l
+2011_09_30/2011_09_30_drive_0028_sync 1303 l
+2011_09_26/2011_09_26_drive_0011_sync 43 l
+2011_09_26/2011_09_26_drive_0057_sync 149 r
+2011_10_03/2011_10_03_drive_0034_sync 497 l
+2011_09_30/2011_09_30_drive_0028_sync 196 l
+2011_10_03/2011_10_03_drive_0042_sync 409 r
+2011_09_30/2011_09_30_drive_0028_sync 1181 l
+2011_09_30/2011_09_30_drive_0034_sync 640 l
+2011_09_26/2011_09_26_drive_0017_sync 76 r
+2011_09_29/2011_09_29_drive_0004_sync 175 r
+2011_09_26/2011_09_26_drive_0039_sync 299 r
+2011_10_03/2011_10_03_drive_0034_sync 4659 r
+2011_09_30/2011_09_30_drive_0033_sync 1060 r
+2011_10_03/2011_10_03_drive_0034_sync 3466 l
+2011_09_26/2011_09_26_drive_0095_sync 134 r
+2011_10_03/2011_10_03_drive_0034_sync 2293 l
+2011_09_30/2011_09_30_drive_0028_sync 4633 l
+2011_09_30/2011_09_30_drive_0033_sync 1262 l
+2011_09_26/2011_09_26_drive_0005_sync 112 l
+2011_09_26/2011_09_26_drive_0022_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 4791 l
+2011_10_03/2011_10_03_drive_0034_sync 827 l
+2011_09_26/2011_09_26_drive_0061_sync 171 l
+2011_09_30/2011_09_30_drive_0028_sync 4213 r
+2011_10_03/2011_10_03_drive_0034_sync 2405 l
+2011_09_26/2011_09_26_drive_0005_sync 124 l
+2011_09_26/2011_09_26_drive_0051_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 4384 r
+2011_09_30/2011_09_30_drive_0028_sync 2716 r
+2011_09_30/2011_09_30_drive_0034_sync 726 r
+2011_09_26/2011_09_26_drive_0039_sync 298 l
+2011_09_26/2011_09_26_drive_0019_sync 420 l
+2011_09_30/2011_09_30_drive_0020_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 274 l
+2011_09_26/2011_09_26_drive_0014_sync 230 r
+2011_09_29/2011_09_29_drive_0004_sync 304 r
+2011_09_30/2011_09_30_drive_0028_sync 364 r
+2011_09_30/2011_09_30_drive_0028_sync 3785 l
+2011_10_03/2011_10_03_drive_0042_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 1532 r
+2011_10_03/2011_10_03_drive_0034_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 2771 l
+2011_09_30/2011_09_30_drive_0028_sync 2178 r
+2011_09_30/2011_09_30_drive_0028_sync 2344 r
+2011_09_30/2011_09_30_drive_0020_sync 205 l
+2011_09_30/2011_09_30_drive_0034_sync 532 r
+2011_09_30/2011_09_30_drive_0028_sync 2575 r
+2011_09_30/2011_09_30_drive_0028_sync 3299 r
+2011_09_30/2011_09_30_drive_0033_sync 437 r
+2011_09_26/2011_09_26_drive_0014_sync 297 l
+2011_09_26/2011_09_26_drive_0022_sync 137 r
+2011_09_26/2011_09_26_drive_0061_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 1869 l
+2011_09_30/2011_09_30_drive_0028_sync 2036 l
+2011_09_30/2011_09_30_drive_0028_sync 4645 r
+2011_09_30/2011_09_30_drive_0028_sync 3794 l
+2011_10_03/2011_10_03_drive_0042_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 2970 r
+2011_09_30/2011_09_30_drive_0028_sync 420 l
+2011_09_30/2011_09_30_drive_0033_sync 1212 r
+2011_09_30/2011_09_30_drive_0033_sync 585 l
+2011_09_26/2011_09_26_drive_0022_sync 630 r
+2011_09_26/2011_09_26_drive_0028_sync 397 r
+2011_09_30/2011_09_30_drive_0034_sync 657 r
+2011_09_26/2011_09_26_drive_0051_sync 366 l
+2011_09_30/2011_09_30_drive_0028_sync 2407 r
+2011_09_26/2011_09_26_drive_0035_sync 68 l
+2011_09_30/2011_09_30_drive_0020_sync 52 l
+2011_09_26/2011_09_26_drive_0061_sync 9 r
+2011_09_26/2011_09_26_drive_0070_sync 31 r
+2011_09_26/2011_09_26_drive_0051_sync 437 r
+2011_10_03/2011_10_03_drive_0034_sync 1763 r
+2011_09_30/2011_09_30_drive_0028_sync 1626 l
+2011_09_30/2011_09_30_drive_0020_sync 535 r
+2011_09_30/2011_09_30_drive_0028_sync 3258 r
+2011_09_26/2011_09_26_drive_0061_sync 6 l
+2011_09_26/2011_09_26_drive_0039_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 617 r
+2011_10_03/2011_10_03_drive_0034_sync 4649 l
+2011_10_03/2011_10_03_drive_0042_sync 800 l
+2011_09_26/2011_09_26_drive_0087_sync 431 r
+2011_09_29/2011_09_29_drive_0004_sync 121 r
+2011_09_26/2011_09_26_drive_0104_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 2695 r
+2011_09_30/2011_09_30_drive_0028_sync 1216 r
+2011_09_30/2011_09_30_drive_0028_sync 3932 r
+2011_09_30/2011_09_30_drive_0034_sync 686 r
+2011_09_30/2011_09_30_drive_0033_sync 107 r
+2011_10_03/2011_10_03_drive_0034_sync 757 l
+2011_09_30/2011_09_30_drive_0028_sync 2766 r
+2011_10_03/2011_10_03_drive_0034_sync 3357 r
+2011_09_26/2011_09_26_drive_0018_sync 246 r
+2011_09_26/2011_09_26_drive_0039_sync 233 r
+2011_10_03/2011_10_03_drive_0042_sync 445 l
+2011_09_30/2011_09_30_drive_0028_sync 3352 l
+2011_09_26/2011_09_26_drive_0039_sync 150 r
+2011_10_03/2011_10_03_drive_0034_sync 3894 l
+2011_10_03/2011_10_03_drive_0034_sync 2735 r
+2011_10_03/2011_10_03_drive_0034_sync 2991 r
+2011_10_03/2011_10_03_drive_0034_sync 2692 r
+2011_10_03/2011_10_03_drive_0042_sync 38 r
+2011_09_26/2011_09_26_drive_0019_sync 83 r
+2011_09_30/2011_09_30_drive_0028_sync 1148 l
+2011_09_30/2011_09_30_drive_0028_sync 2746 r
+2011_09_30/2011_09_30_drive_0033_sync 943 l
+2011_09_26/2011_09_26_drive_0087_sync 288 r
+2011_09_26/2011_09_26_drive_0032_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 2150 r
+2011_09_26/2011_09_26_drive_0061_sync 302 r
+2011_09_26/2011_09_26_drive_0022_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 1855 r
+2011_09_30/2011_09_30_drive_0028_sync 2402 r
+2011_09_29/2011_09_29_drive_0004_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 4399 r
+2011_09_26/2011_09_26_drive_0091_sync 271 r
+2011_09_29/2011_09_29_drive_0004_sync 166 r
+2011_09_30/2011_09_30_drive_0033_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 1584 r
+2011_09_26/2011_09_26_drive_0032_sync 330 r
+2011_09_26/2011_09_26_drive_0015_sync 128 r
+2011_09_26/2011_09_26_drive_0022_sync 464 r
+2011_09_30/2011_09_30_drive_0020_sync 767 l
+2011_09_26/2011_09_26_drive_0070_sync 34 l
+2011_09_30/2011_09_30_drive_0034_sync 356 r
+2011_09_30/2011_09_30_drive_0034_sync 478 l
+2011_09_30/2011_09_30_drive_0028_sync 408 l
+2011_09_30/2011_09_30_drive_0034_sync 479 l
+2011_09_30/2011_09_30_drive_0020_sync 343 l
+2011_09_30/2011_09_30_drive_0033_sync 338 l
+2011_09_26/2011_09_26_drive_0039_sync 136 l
+2011_09_30/2011_09_30_drive_0033_sync 759 r
+2011_09_30/2011_09_30_drive_0033_sync 1019 r
+2011_09_26/2011_09_26_drive_0061_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 1440 l
+2011_10_03/2011_10_03_drive_0034_sync 3195 l
+2011_09_30/2011_09_30_drive_0028_sync 3866 l
+2011_09_30/2011_09_30_drive_0033_sync 504 l
+2011_09_30/2011_09_30_drive_0028_sync 4266 l
+2011_09_26/2011_09_26_drive_0028_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 2256 l
+2011_10_03/2011_10_03_drive_0034_sync 2292 l
+2011_09_30/2011_09_30_drive_0028_sync 209 l
+2011_09_26/2011_09_26_drive_0028_sync 105 l
+2011_09_30/2011_09_30_drive_0020_sync 886 l
+2011_09_26/2011_09_26_drive_0019_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 2049 l
+2011_10_03/2011_10_03_drive_0034_sync 2163 r
+2011_10_03/2011_10_03_drive_0042_sync 746 r
+2011_09_26/2011_09_26_drive_0079_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 3610 l
+2011_10_03/2011_10_03_drive_0034_sync 737 r
+2011_10_03/2011_10_03_drive_0034_sync 2987 r
+2011_09_26/2011_09_26_drive_0087_sync 152 l
+2011_09_26/2011_09_26_drive_0018_sync 29 r
+2011_09_30/2011_09_30_drive_0033_sync 1438 r
+2011_09_26/2011_09_26_drive_0091_sync 57 r
+2011_09_26/2011_09_26_drive_0061_sync 469 l
+2011_09_30/2011_09_30_drive_0028_sync 4921 l
+2011_09_30/2011_09_30_drive_0028_sync 3002 r
+2011_09_30/2011_09_30_drive_0028_sync 4776 r
+2011_09_30/2011_09_30_drive_0034_sync 171 l
+2011_09_26/2011_09_26_drive_0015_sync 149 l
+2011_10_03/2011_10_03_drive_0042_sync 603 l
+2011_10_03/2011_10_03_drive_0034_sync 4214 l
+2011_10_03/2011_10_03_drive_0034_sync 3977 l
+2011_10_03/2011_10_03_drive_0034_sync 4491 r
+2011_09_26/2011_09_26_drive_0091_sync 124 l
+2011_09_30/2011_09_30_drive_0033_sync 1006 r
+2011_09_26/2011_09_26_drive_0095_sync 248 l
+2011_09_30/2011_09_30_drive_0034_sync 418 r
+2011_09_30/2011_09_30_drive_0028_sync 3572 l
+2011_09_26/2011_09_26_drive_0061_sync 285 r
+2011_10_03/2011_10_03_drive_0034_sync 3301 l
+2011_09_26/2011_09_26_drive_0028_sync 82 r
+2011_10_03/2011_10_03_drive_0034_sync 824 l
+2011_09_30/2011_09_30_drive_0028_sync 870 l
+2011_09_26/2011_09_26_drive_0014_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 1203 l
+2011_09_26/2011_09_26_drive_0051_sync 186 r
+2011_09_26/2011_09_26_drive_0035_sync 102 r
+2011_09_30/2011_09_30_drive_0020_sync 227 r
+2011_09_26/2011_09_26_drive_0022_sync 283 l
+2011_10_03/2011_10_03_drive_0034_sync 2543 r
+2011_09_26/2011_09_26_drive_0022_sync 703 l
+2011_10_03/2011_10_03_drive_0034_sync 2821 r
+2011_09_30/2011_09_30_drive_0028_sync 2773 l
+2011_10_03/2011_10_03_drive_0034_sync 3996 r
+2011_09_30/2011_09_30_drive_0028_sync 4109 l
+2011_10_03/2011_10_03_drive_0034_sync 3488 l
+2011_10_03/2011_10_03_drive_0034_sync 3761 l
+2011_10_03/2011_10_03_drive_0034_sync 4341 r
+2011_10_03/2011_10_03_drive_0034_sync 1607 l
+2011_10_03/2011_10_03_drive_0034_sync 4019 r
+2011_09_30/2011_09_30_drive_0028_sync 1660 r
+2011_09_30/2011_09_30_drive_0020_sync 725 l
+2011_09_30/2011_09_30_drive_0028_sync 4978 l
+2011_09_30/2011_09_30_drive_0034_sync 858 l
+2011_09_26/2011_09_26_drive_0057_sync 342 r
+2011_09_26/2011_09_26_drive_0095_sync 147 r
+2011_09_26/2011_09_26_drive_0070_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1018 r
+2011_09_26/2011_09_26_drive_0035_sync 118 l
+2011_10_03/2011_10_03_drive_0034_sync 2931 r
+2011_09_26/2011_09_26_drive_0051_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 4848 l
+2011_09_30/2011_09_30_drive_0028_sync 1326 r
+2011_10_03/2011_10_03_drive_0034_sync 3363 r
+2011_09_26/2011_09_26_drive_0061_sync 537 l
+2011_10_03/2011_10_03_drive_0034_sync 2144 r
+2011_10_03/2011_10_03_drive_0034_sync 1086 r
+2011_09_30/2011_09_30_drive_0020_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 505 r
+2011_10_03/2011_10_03_drive_0034_sync 3342 r
+2011_09_30/2011_09_30_drive_0020_sync 542 r
+2011_09_26/2011_09_26_drive_0015_sync 202 r
+2011_09_30/2011_09_30_drive_0020_sync 971 r
+2011_09_30/2011_09_30_drive_0028_sync 4759 l
+2011_10_03/2011_10_03_drive_0034_sync 484 l
+2011_09_30/2011_09_30_drive_0028_sync 3002 l
+2011_09_30/2011_09_30_drive_0028_sync 3432 r
+2011_10_03/2011_10_03_drive_0034_sync 3319 r
+2011_09_26/2011_09_26_drive_0022_sync 363 r
+2011_10_03/2011_10_03_drive_0042_sync 646 l
+2011_10_03/2011_10_03_drive_0034_sync 3812 l
+2011_10_03/2011_10_03_drive_0034_sync 1979 r
+2011_09_30/2011_09_30_drive_0028_sync 3569 l
+2011_09_26/2011_09_26_drive_0070_sync 228 r
+2011_09_26/2011_09_26_drive_0057_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 3095 l
+2011_09_26/2011_09_26_drive_0022_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 595 l
+2011_10_03/2011_10_03_drive_0034_sync 2297 r
+2011_09_30/2011_09_30_drive_0033_sync 581 r
+2011_10_03/2011_10_03_drive_0034_sync 2531 r
+2011_09_26/2011_09_26_drive_0018_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 4175 l
+2011_09_26/2011_09_26_drive_0019_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 1506 r
+2011_09_30/2011_09_30_drive_0028_sync 3504 r
+2011_09_30/2011_09_30_drive_0028_sync 4125 l
+2011_09_26/2011_09_26_drive_0032_sync 32 r
+2011_09_26/2011_09_26_drive_0015_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 111 l
+2011_09_26/2011_09_26_drive_0087_sync 354 r
+2011_09_30/2011_09_30_drive_0028_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 1857 r
+2011_09_26/2011_09_26_drive_0022_sync 786 l
+2011_09_26/2011_09_26_drive_0039_sync 175 l
+2011_09_26/2011_09_26_drive_0032_sync 132 l
+2011_09_30/2011_09_30_drive_0020_sync 420 l
+2011_10_03/2011_10_03_drive_0034_sync 3634 r
+2011_09_30/2011_09_30_drive_0028_sync 3775 l
+2011_09_26/2011_09_26_drive_0104_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 2432 l
+2011_09_30/2011_09_30_drive_0028_sync 398 r
+2011_10_03/2011_10_03_drive_0034_sync 2910 r
+2011_09_30/2011_09_30_drive_0033_sync 900 l
+2011_10_03/2011_10_03_drive_0034_sync 81 l
+2011_09_26/2011_09_26_drive_0095_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 1781 r
+2011_09_30/2011_09_30_drive_0034_sync 14 r
+2011_09_26/2011_09_26_drive_0019_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 759 r
+2011_09_30/2011_09_30_drive_0020_sync 1048 l
+2011_09_26/2011_09_26_drive_0011_sync 151 l
+2011_09_30/2011_09_30_drive_0033_sync 206 r
+2011_09_26/2011_09_26_drive_0032_sync 378 r
+2011_10_03/2011_10_03_drive_0034_sync 2641 l
+2011_09_30/2011_09_30_drive_0028_sync 4573 l
+2011_09_30/2011_09_30_drive_0034_sync 861 r
+2011_09_26/2011_09_26_drive_0014_sync 71 l
+2011_09_26/2011_09_26_drive_0091_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 4745 r
+2011_09_30/2011_09_30_drive_0020_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 1631 r
+2011_09_30/2011_09_30_drive_0028_sync 3512 l
+2011_10_03/2011_10_03_drive_0034_sync 3153 l
+2011_09_30/2011_09_30_drive_0020_sync 82 l
+2011_09_26/2011_09_26_drive_0070_sync 103 r
+2011_09_26/2011_09_26_drive_0014_sync 13 r
+2011_09_30/2011_09_30_drive_0033_sync 1142 r
+2011_09_30/2011_09_30_drive_0028_sync 1623 l
+2011_09_30/2011_09_30_drive_0028_sync 3214 r
+2011_09_26/2011_09_26_drive_0022_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 810 l
+2011_09_26/2011_09_26_drive_0014_sync 295 l
+2011_09_26/2011_09_26_drive_0039_sync 242 r
+2011_09_30/2011_09_30_drive_0034_sync 609 r
+2011_09_30/2011_09_30_drive_0034_sync 20 r
+2011_09_26/2011_09_26_drive_0061_sync 134 l
+2011_09_26/2011_09_26_drive_0039_sync 167 r
+2011_10_03/2011_10_03_drive_0034_sync 2029 r
+2011_09_30/2011_09_30_drive_0033_sync 823 l
+2011_09_30/2011_09_30_drive_0020_sync 1089 r
+2011_09_26/2011_09_26_drive_0018_sync 74 r
+2011_09_26/2011_09_26_drive_0022_sync 5 r
+2011_09_26/2011_09_26_drive_0061_sync 569 l
+2011_09_26/2011_09_26_drive_0091_sync 292 l
+2011_09_30/2011_09_30_drive_0020_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 2721 l
+2011_10_03/2011_10_03_drive_0034_sync 1605 l
+2011_09_30/2011_09_30_drive_0028_sync 2549 l
+2011_09_29/2011_09_29_drive_0026_sync 66 r
+2011_09_26/2011_09_26_drive_0022_sync 7 l
+2011_09_30/2011_09_30_drive_0020_sync 788 r
+2011_09_30/2011_09_30_drive_0028_sync 1664 l
+2011_09_26/2011_09_26_drive_0104_sync 108 r
+2011_09_26/2011_09_26_drive_0032_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 953 l
+2011_09_30/2011_09_30_drive_0028_sync 2002 l
+2011_09_26/2011_09_26_drive_0028_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 2819 l
+2011_09_30/2011_09_30_drive_0034_sync 188 r
+2011_09_26/2011_09_26_drive_0035_sync 65 r
+2011_09_26/2011_09_26_drive_0087_sync 502 l
+2011_09_30/2011_09_30_drive_0033_sync 1204 l
+2011_09_26/2011_09_26_drive_0022_sync 730 l
+2011_10_03/2011_10_03_drive_0034_sync 2358 l
+2011_09_30/2011_09_30_drive_0034_sync 428 r
+2011_09_29/2011_09_29_drive_0026_sync 64 l
+2011_09_26/2011_09_26_drive_0039_sync 388 r
+2011_10_03/2011_10_03_drive_0042_sync 958 l
+2011_09_30/2011_09_30_drive_0028_sync 2381 r
+2011_09_30/2011_09_30_drive_0028_sync 5056 r
+2011_09_30/2011_09_30_drive_0028_sync 4440 r
+2011_09_30/2011_09_30_drive_0034_sync 936 r
+2011_10_03/2011_10_03_drive_0042_sync 54 l
+2011_09_29/2011_09_29_drive_0004_sync 122 l
+2011_09_26/2011_09_26_drive_0028_sync 302 l
+2011_09_26/2011_09_26_drive_0022_sync 517 l
+2011_09_30/2011_09_30_drive_0020_sync 424 l
+2011_10_03/2011_10_03_drive_0034_sync 4356 r
+2011_09_30/2011_09_30_drive_0028_sync 531 l
+2011_09_30/2011_09_30_drive_0028_sync 4863 r
+2011_09_26/2011_09_26_drive_0014_sync 272 l
+2011_09_30/2011_09_30_drive_0020_sync 27 l
+2011_09_26/2011_09_26_drive_0061_sync 702 l
+2011_09_26/2011_09_26_drive_0011_sync 155 r
+2011_09_26/2011_09_26_drive_0087_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 4732 l
+2011_09_30/2011_09_30_drive_0020_sync 385 r
+2011_09_26/2011_09_26_drive_0019_sync 281 r
+2011_09_30/2011_09_30_drive_0028_sync 4033 r
+2011_09_30/2011_09_30_drive_0028_sync 1422 l
+2011_09_26/2011_09_26_drive_0091_sync 6 l
+2011_10_03/2011_10_03_drive_0042_sync 411 l
+2011_10_03/2011_10_03_drive_0034_sync 2755 r
+2011_09_30/2011_09_30_drive_0028_sync 1180 r
+2011_09_26/2011_09_26_drive_0087_sync 469 r
+2011_09_30/2011_09_30_drive_0033_sync 914 r
+2011_09_30/2011_09_30_drive_0028_sync 4471 l
+2011_10_03/2011_10_03_drive_0034_sync 4231 l
+2011_09_30/2011_09_30_drive_0028_sync 3356 r
+2011_09_30/2011_09_30_drive_0034_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 1860 l
+2011_09_30/2011_09_30_drive_0033_sync 1420 l
+2011_09_30/2011_09_30_drive_0034_sync 960 r
+2011_09_26/2011_09_26_drive_0087_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 1065 l
+2011_09_26/2011_09_26_drive_0032_sync 103 r
+2011_09_26/2011_09_26_drive_0028_sync 295 r
+2011_09_26/2011_09_26_drive_0057_sync 81 r
+2011_09_26/2011_09_26_drive_0061_sync 701 l
+2011_09_30/2011_09_30_drive_0028_sync 1934 l
+2011_09_30/2011_09_30_drive_0033_sync 744 l
+2011_10_03/2011_10_03_drive_0034_sync 2063 r
+2011_09_26/2011_09_26_drive_0011_sync 232 r
+2011_10_03/2011_10_03_drive_0042_sync 1126 r
+2011_09_30/2011_09_30_drive_0028_sync 1571 l
+2011_09_26/2011_09_26_drive_0061_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 1775 l
+2011_09_26/2011_09_26_drive_0028_sync 117 r
+2011_09_26/2011_09_26_drive_0061_sync 522 l
+2011_09_30/2011_09_30_drive_0028_sync 2665 r
+2011_09_26/2011_09_26_drive_0091_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 3868 l
+2011_09_30/2011_09_30_drive_0028_sync 2373 r
+2011_09_30/2011_09_30_drive_0028_sync 1834 l
+2011_09_26/2011_09_26_drive_0061_sync 453 l
+2011_09_30/2011_09_30_drive_0033_sync 1057 l
+2011_09_29/2011_09_29_drive_0026_sync 96 l
+2011_09_30/2011_09_30_drive_0034_sync 591 r
+2011_09_30/2011_09_30_drive_0034_sync 359 r
+2011_09_30/2011_09_30_drive_0028_sync 3416 l
+2011_09_26/2011_09_26_drive_0039_sync 195 l
+2011_10_03/2011_10_03_drive_0042_sync 682 l
+2011_09_26/2011_09_26_drive_0022_sync 554 r
+2011_09_30/2011_09_30_drive_0028_sync 541 l
+2011_09_26/2011_09_26_drive_0079_sync 12 r
+2011_09_26/2011_09_26_drive_0061_sync 692 l
+2011_09_26/2011_09_26_drive_0051_sync 311 r
+2011_09_30/2011_09_30_drive_0033_sync 706 l
+2011_09_26/2011_09_26_drive_0028_sync 274 r
+2011_09_26/2011_09_26_drive_0061_sync 445 l
+2011_10_03/2011_10_03_drive_0034_sync 1383 r
+2011_09_26/2011_09_26_drive_0051_sync 63 r
+2011_09_26/2011_09_26_drive_0015_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 3468 l
+2011_09_30/2011_09_30_drive_0028_sync 2639 r
+2011_10_03/2011_10_03_drive_0042_sync 619 r
+2011_09_26/2011_09_26_drive_0113_sync 69 r
+2011_10_03/2011_10_03_drive_0042_sync 86 r
+2011_09_26/2011_09_26_drive_0091_sync 231 l
+2011_09_30/2011_09_30_drive_0033_sync 1257 r
+2011_09_30/2011_09_30_drive_0028_sync 1909 r
+2011_09_30/2011_09_30_drive_0028_sync 1400 l
+2011_09_26/2011_09_26_drive_0087_sync 555 l
+2011_09_30/2011_09_30_drive_0028_sync 3789 r
+2011_09_30/2011_09_30_drive_0028_sync 4182 r
+2011_09_30/2011_09_30_drive_0033_sync 403 r
+2011_10_03/2011_10_03_drive_0042_sync 1035 r
+2011_09_30/2011_09_30_drive_0020_sync 31 l
+2011_10_03/2011_10_03_drive_0034_sync 1945 l
+2011_09_29/2011_09_29_drive_0004_sync 291 r
+2011_09_26/2011_09_26_drive_0079_sync 72 l
+2011_09_30/2011_09_30_drive_0033_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 2917 l
+2011_09_30/2011_09_30_drive_0020_sync 387 r
+2011_09_30/2011_09_30_drive_0028_sync 3438 r
+2011_10_03/2011_10_03_drive_0034_sync 1021 r
+2011_09_30/2011_09_30_drive_0020_sync 601 r
+2011_09_30/2011_09_30_drive_0028_sync 4295 r
+2011_09_30/2011_09_30_drive_0034_sync 254 r
+2011_09_30/2011_09_30_drive_0033_sync 178 l
+2011_09_30/2011_09_30_drive_0033_sync 964 l
+2011_09_26/2011_09_26_drive_0022_sync 538 r
+2011_09_26/2011_09_26_drive_0022_sync 101 l
+2011_09_29/2011_09_29_drive_0004_sync 310 r
+2011_10_03/2011_10_03_drive_0034_sync 1987 r
+2011_09_30/2011_09_30_drive_0028_sync 4529 l
+2011_09_26/2011_09_26_drive_0019_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 863 l
+2011_09_30/2011_09_30_drive_0020_sync 60 l
+2011_09_30/2011_09_30_drive_0034_sync 612 l
+2011_09_26/2011_09_26_drive_0014_sync 196 r
+2011_09_26/2011_09_26_drive_0022_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 742 r
+2011_10_03/2011_10_03_drive_0034_sync 139 r
+2011_09_26/2011_09_26_drive_0104_sync 138 l
+2011_09_30/2011_09_30_drive_0033_sync 879 r
+2011_09_30/2011_09_30_drive_0028_sync 1346 l
+2011_10_03/2011_10_03_drive_0042_sync 744 r
+2011_09_26/2011_09_26_drive_0039_sync 87 l
+2011_09_30/2011_09_30_drive_0034_sync 537 r
+2011_09_26/2011_09_26_drive_0022_sync 298 l
+2011_09_26/2011_09_26_drive_0087_sync 465 l
+2011_09_30/2011_09_30_drive_0028_sync 657 r
+2011_09_30/2011_09_30_drive_0028_sync 969 l
+2011_09_26/2011_09_26_drive_0061_sync 477 l
+2011_10_03/2011_10_03_drive_0034_sync 611 r
+2011_09_29/2011_09_29_drive_0026_sync 43 l
+2011_09_30/2011_09_30_drive_0033_sync 911 l
+2011_09_26/2011_09_26_drive_0005_sync 48 r
+2011_10_03/2011_10_03_drive_0042_sync 272 r
+2011_09_26/2011_09_26_drive_0087_sync 462 l
+2011_09_30/2011_09_30_drive_0028_sync 4461 r
+2011_10_03/2011_10_03_drive_0034_sync 794 l
+2011_09_30/2011_09_30_drive_0033_sync 754 r
+2011_10_03/2011_10_03_drive_0042_sync 181 r
+2011_09_30/2011_09_30_drive_0033_sync 849 r
+2011_09_26/2011_09_26_drive_0005_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 896 l
+2011_09_30/2011_09_30_drive_0028_sync 5107 r
+2011_09_26/2011_09_26_drive_0019_sync 67 l
+2011_09_30/2011_09_30_drive_0033_sync 555 r
+2011_09_30/2011_09_30_drive_0028_sync 3817 l
+2011_10_03/2011_10_03_drive_0034_sync 3171 l
+2011_09_29/2011_09_29_drive_0004_sync 13 r
+2011_09_30/2011_09_30_drive_0034_sync 1108 l
+2011_09_30/2011_09_30_drive_0028_sync 3764 r
+2011_09_30/2011_09_30_drive_0028_sync 4557 r
+2011_09_30/2011_09_30_drive_0020_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 5167 l
+2011_09_30/2011_09_30_drive_0028_sync 4563 l
+2011_09_30/2011_09_30_drive_0028_sync 3087 l
+2011_10_03/2011_10_03_drive_0034_sync 2659 r
+2011_09_26/2011_09_26_drive_0014_sync 95 r
+2011_10_03/2011_10_03_drive_0034_sync 3488 r
+2011_09_30/2011_09_30_drive_0034_sync 293 l
+2011_09_26/2011_09_26_drive_0039_sync 210 l
+2011_10_03/2011_10_03_drive_0042_sync 207 r
+2011_09_30/2011_09_30_drive_0034_sync 578 r
+2011_09_30/2011_09_30_drive_0033_sync 1092 l
+2011_09_26/2011_09_26_drive_0028_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 1166 r
+2011_09_26/2011_09_26_drive_0057_sync 197 r
+2011_09_26/2011_09_26_drive_0039_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 2580 l
+2011_09_26/2011_09_26_drive_0051_sync 256 l
+2011_10_03/2011_10_03_drive_0034_sync 3426 l
+2011_09_30/2011_09_30_drive_0028_sync 3063 l
+2011_09_30/2011_09_30_drive_0028_sync 3090 l
+2011_09_29/2011_09_29_drive_0004_sync 286 r
+2011_10_03/2011_10_03_drive_0042_sync 190 l
+2011_09_26/2011_09_26_drive_0022_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 1254 l
+2011_09_26/2011_09_26_drive_0015_sync 85 r
+2011_09_30/2011_09_30_drive_0034_sync 601 l
+2011_09_26/2011_09_26_drive_0057_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 339 r
+2011_09_30/2011_09_30_drive_0033_sync 955 r
+2011_09_30/2011_09_30_drive_0033_sync 800 r
+2011_10_03/2011_10_03_drive_0042_sync 1152 l
+2011_09_30/2011_09_30_drive_0028_sync 4761 l
+2011_09_26/2011_09_26_drive_0005_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 135 l
+2011_09_30/2011_09_30_drive_0028_sync 1909 l
+2011_10_03/2011_10_03_drive_0034_sync 4200 r
+2011_09_30/2011_09_30_drive_0033_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 617 l
+2011_10_03/2011_10_03_drive_0034_sync 3710 r
+2011_09_30/2011_09_30_drive_0020_sync 367 l
+2011_09_26/2011_09_26_drive_0087_sync 513 l
+2011_09_30/2011_09_30_drive_0028_sync 891 l
+2011_09_30/2011_09_30_drive_0028_sync 2215 r
+2011_10_03/2011_10_03_drive_0034_sync 61 l
+2011_09_30/2011_09_30_drive_0020_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 5022 r
+2011_09_26/2011_09_26_drive_0001_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 1543 l
+2011_10_03/2011_10_03_drive_0034_sync 12 l
+2011_09_26/2011_09_26_drive_0022_sync 362 l
+2011_10_03/2011_10_03_drive_0034_sync 1360 r
+2011_09_26/2011_09_26_drive_0070_sync 276 l
+2011_09_30/2011_09_30_drive_0020_sync 159 l
+2011_09_26/2011_09_26_drive_0028_sync 304 r
+2011_09_26/2011_09_26_drive_0070_sync 222 l
+2011_09_30/2011_09_30_drive_0028_sync 1055 l
+2011_10_03/2011_10_03_drive_0034_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 2682 l
+2011_09_30/2011_09_30_drive_0020_sync 336 r
+2011_09_26/2011_09_26_drive_0014_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 4180 r
+2011_09_26/2011_09_26_drive_0051_sync 190 r
+2011_10_03/2011_10_03_drive_0042_sync 1135 l
+2011_10_03/2011_10_03_drive_0042_sync 255 l
+2011_09_26/2011_09_26_drive_0011_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 1818 r
+2011_09_30/2011_09_30_drive_0033_sync 703 r
+2011_09_26/2011_09_26_drive_0022_sync 550 r
+2011_09_29/2011_09_29_drive_0004_sync 337 r
+2011_10_03/2011_10_03_drive_0034_sync 2180 l
+2011_10_03/2011_10_03_drive_0034_sync 4103 r
+2011_09_26/2011_09_26_drive_0039_sync 29 r
+2011_09_26/2011_09_26_drive_0070_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 3582 l
+2011_09_26/2011_09_26_drive_0061_sync 381 r
+2011_09_26/2011_09_26_drive_0061_sync 513 r
+2011_09_30/2011_09_30_drive_0028_sync 1734 l
+2011_09_26/2011_09_26_drive_0095_sync 239 r
+2011_09_30/2011_09_30_drive_0034_sync 1033 l
+2011_09_26/2011_09_26_drive_0019_sync 260 r
+2011_10_03/2011_10_03_drive_0034_sync 4534 l
+2011_09_30/2011_09_30_drive_0028_sync 4248 l
+2011_10_03/2011_10_03_drive_0034_sync 2009 l
+2011_09_30/2011_09_30_drive_0028_sync 147 r
+2011_09_30/2011_09_30_drive_0033_sync 1421 l
+2011_10_03/2011_10_03_drive_0034_sync 868 r
+2011_09_30/2011_09_30_drive_0028_sync 3976 r
+2011_10_03/2011_10_03_drive_0034_sync 2503 r
+2011_09_29/2011_09_29_drive_0004_sync 176 l
+2011_09_30/2011_09_30_drive_0028_sync 3469 l
+2011_09_30/2011_09_30_drive_0028_sync 4816 l
+2011_10_03/2011_10_03_drive_0042_sync 492 l
+2011_09_30/2011_09_30_drive_0028_sync 4400 r
+2011_09_30/2011_09_30_drive_0034_sync 44 r
+2011_09_30/2011_09_30_drive_0033_sync 909 l
+2011_09_26/2011_09_26_drive_0061_sync 466 r
+2011_09_30/2011_09_30_drive_0033_sync 992 r
+2011_09_26/2011_09_26_drive_0061_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 2084 l
+2011_09_30/2011_09_30_drive_0028_sync 872 l
+2011_09_26/2011_09_26_drive_0061_sync 455 r
+2011_10_03/2011_10_03_drive_0034_sync 3760 r
+2011_09_30/2011_09_30_drive_0028_sync 2155 r
+2011_09_26/2011_09_26_drive_0051_sync 122 l
+2011_09_30/2011_09_30_drive_0034_sync 698 r
+2011_10_03/2011_10_03_drive_0034_sync 2761 l
+2011_09_30/2011_09_30_drive_0034_sync 1039 l
+2011_10_03/2011_10_03_drive_0034_sync 1072 l
+2011_09_26/2011_09_26_drive_0015_sync 113 r
+2011_09_30/2011_09_30_drive_0020_sync 1094 l
+2011_09_26/2011_09_26_drive_0087_sync 32 r
+2011_09_30/2011_09_30_drive_0020_sync 78 r
+2011_09_26/2011_09_26_drive_0070_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 3103 l
+2011_09_30/2011_09_30_drive_0028_sync 720 r
+2011_09_30/2011_09_30_drive_0028_sync 1041 r
+2011_10_03/2011_10_03_drive_0042_sync 86 l
+2011_09_26/2011_09_26_drive_0095_sync 176 r
+2011_09_26/2011_09_26_drive_0087_sync 309 l
+2011_09_30/2011_09_30_drive_0028_sync 3017 r
+2011_09_26/2011_09_26_drive_0113_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 2510 r
+2011_10_03/2011_10_03_drive_0042_sync 520 l
+2011_10_03/2011_10_03_drive_0034_sync 795 l
+2011_09_26/2011_09_26_drive_0061_sync 485 r
+2011_09_29/2011_09_29_drive_0004_sync 98 l
+2011_09_30/2011_09_30_drive_0020_sync 1029 l
+2011_10_03/2011_10_03_drive_0034_sync 3189 r
+2011_09_26/2011_09_26_drive_0057_sync 152 r
+2011_09_26/2011_09_26_drive_0018_sync 199 r
+2011_09_26/2011_09_26_drive_0022_sync 537 r
+2011_09_30/2011_09_30_drive_0028_sync 2696 r
+2011_09_26/2011_09_26_drive_0057_sync 25 r
+2011_09_26/2011_09_26_drive_0091_sync 162 l
+2011_09_30/2011_09_30_drive_0020_sync 1006 l
+2011_09_30/2011_09_30_drive_0028_sync 2435 l
+2011_09_30/2011_09_30_drive_0034_sync 431 l
+2011_09_26/2011_09_26_drive_0051_sync 382 r
+2011_09_30/2011_09_30_drive_0028_sync 4944 l
+2011_09_30/2011_09_30_drive_0033_sync 930 r
+2011_09_26/2011_09_26_drive_0095_sync 19 l
+2011_09_26/2011_09_26_drive_0091_sync 104 r
+2011_09_26/2011_09_26_drive_0061_sync 660 r
+2011_10_03/2011_10_03_drive_0034_sync 3192 l
+2011_09_28/2011_09_28_drive_0001_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 1769 r
+2011_09_30/2011_09_30_drive_0028_sync 551 l
+2011_09_30/2011_09_30_drive_0033_sync 1554 l
+2011_10_03/2011_10_03_drive_0034_sync 187 l
+2011_09_26/2011_09_26_drive_0022_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 3804 r
+2011_09_26/2011_09_26_drive_0051_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 4112 r
+2011_09_30/2011_09_30_drive_0028_sync 1186 l
+2011_09_26/2011_09_26_drive_0057_sync 44 l
+2011_09_26/2011_09_26_drive_0032_sync 112 r
+2011_09_26/2011_09_26_drive_0022_sync 483 l
+2011_10_03/2011_10_03_drive_0034_sync 4197 r
+2011_09_30/2011_09_30_drive_0028_sync 1815 r
+2011_09_30/2011_09_30_drive_0033_sync 627 r
+2011_09_30/2011_09_30_drive_0028_sync 4642 r
+2011_09_26/2011_09_26_drive_0028_sync 169 l
+2011_09_30/2011_09_30_drive_0034_sync 1035 l
+2011_09_26/2011_09_26_drive_0091_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 2756 l
+2011_09_30/2011_09_30_drive_0028_sync 408 r
+2011_09_26/2011_09_26_drive_0022_sync 769 l
+2011_09_26/2011_09_26_drive_0001_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 2658 l
+2011_09_26/2011_09_26_drive_0104_sync 198 r
+2011_09_29/2011_09_29_drive_0004_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 5024 l
+2011_09_26/2011_09_26_drive_0014_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 3793 r
+2011_09_30/2011_09_30_drive_0033_sync 1376 l
+2011_10_03/2011_10_03_drive_0034_sync 1458 r
+2011_10_03/2011_10_03_drive_0034_sync 1415 l
+2011_10_03/2011_10_03_drive_0034_sync 1471 r
+2011_10_03/2011_10_03_drive_0042_sync 525 l
+2011_10_03/2011_10_03_drive_0034_sync 1358 r
+2011_10_03/2011_10_03_drive_0034_sync 1570 r
+2011_09_30/2011_09_30_drive_0028_sync 1656 r
+2011_09_26/2011_09_26_drive_0091_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 2055 r
+2011_09_30/2011_09_30_drive_0028_sync 3062 l
+2011_09_26/2011_09_26_drive_0079_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 3627 r
+2011_09_26/2011_09_26_drive_0019_sync 94 r
+2011_09_26/2011_09_26_drive_0005_sync 153 l
+2011_09_26/2011_09_26_drive_0015_sync 7 l
+2011_09_30/2011_09_30_drive_0020_sync 96 r
+2011_09_30/2011_09_30_drive_0034_sync 1021 r
+2011_09_26/2011_09_26_drive_0039_sync 207 r
+2011_10_03/2011_10_03_drive_0034_sync 2027 l
+2011_10_03/2011_10_03_drive_0034_sync 3862 l
+2011_09_26/2011_09_26_drive_0091_sync 211 l
+2011_09_26/2011_09_26_drive_0001_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 2264 r
+2011_09_30/2011_09_30_drive_0028_sync 126 l
+2011_09_26/2011_09_26_drive_0032_sync 122 r
+2011_10_03/2011_10_03_drive_0034_sync 1334 r
+2011_09_30/2011_09_30_drive_0028_sync 2491 r
+2011_09_26/2011_09_26_drive_0011_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 4592 l
+2011_09_26/2011_09_26_drive_0087_sync 537 r
+2011_09_26/2011_09_26_drive_0018_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 1033 r
+2011_10_03/2011_10_03_drive_0034_sync 107 r
+2011_09_28/2011_09_28_drive_0001_sync 46 r
+2011_09_26/2011_09_26_drive_0028_sync 204 r
+2011_10_03/2011_10_03_drive_0042_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 1847 l
+2011_09_30/2011_09_30_drive_0033_sync 1448 r
+2011_09_26/2011_09_26_drive_0015_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 4638 l
+2011_09_26/2011_09_26_drive_0018_sync 190 r
+2011_09_26/2011_09_26_drive_0091_sync 160 r
+2011_09_26/2011_09_26_drive_0095_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 391 l
+2011_09_30/2011_09_30_drive_0034_sync 747 r
+2011_09_30/2011_09_30_drive_0028_sync 4725 l
+2011_10_03/2011_10_03_drive_0034_sync 2118 r
+2011_09_30/2011_09_30_drive_0033_sync 783 r
+2011_09_30/2011_09_30_drive_0020_sync 289 l
+2011_10_03/2011_10_03_drive_0034_sync 1784 r
+2011_09_26/2011_09_26_drive_0022_sync 768 l
+2011_10_03/2011_10_03_drive_0034_sync 4548 r
+2011_09_26/2011_09_26_drive_0014_sync 199 l
+2011_09_30/2011_09_30_drive_0034_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 368 l
+2011_09_30/2011_09_30_drive_0033_sync 1473 l
+2011_09_26/2011_09_26_drive_0022_sync 180 r
+2011_09_30/2011_09_30_drive_0020_sync 935 l
+2011_09_30/2011_09_30_drive_0028_sync 4703 l
+2011_09_26/2011_09_26_drive_0035_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 4506 l
+2011_09_30/2011_09_30_drive_0034_sync 643 r
+2011_09_26/2011_09_26_drive_0095_sync 35 r
+2011_09_30/2011_09_30_drive_0033_sync 960 r
+2011_09_26/2011_09_26_drive_0022_sync 374 l
+2011_10_03/2011_10_03_drive_0034_sync 958 r
+2011_09_26/2011_09_26_drive_0087_sync 205 l
+2011_10_03/2011_10_03_drive_0034_sync 320 r
+2011_09_26/2011_09_26_drive_0070_sync 348 l
+2011_09_30/2011_09_30_drive_0034_sync 1109 r
+2011_09_26/2011_09_26_drive_0022_sync 326 r
+2011_09_29/2011_09_29_drive_0004_sync 288 l
+2011_09_26/2011_09_26_drive_0051_sync 373 l
+2011_09_26/2011_09_26_drive_0087_sync 293 l
+2011_09_26/2011_09_26_drive_0087_sync 430 r
+2011_09_30/2011_09_30_drive_0020_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 4487 l
+2011_09_30/2011_09_30_drive_0034_sync 348 l
+2011_09_26/2011_09_26_drive_0014_sync 151 l
+2011_09_30/2011_09_30_drive_0033_sync 369 r
+2011_09_30/2011_09_30_drive_0028_sync 4358 r
+2011_09_26/2011_09_26_drive_0032_sync 104 l
+2011_09_26/2011_09_26_drive_0095_sync 55 l
+2011_09_26/2011_09_26_drive_0070_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 2816 r
+2011_09_30/2011_09_30_drive_0033_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 1870 l
+2011_10_03/2011_10_03_drive_0034_sync 2168 r
+2011_10_03/2011_10_03_drive_0034_sync 829 r
+2011_09_30/2011_09_30_drive_0020_sync 1083 l
+2011_10_03/2011_10_03_drive_0034_sync 3194 l
+2011_10_03/2011_10_03_drive_0034_sync 2582 l
+2011_10_03/2011_10_03_drive_0034_sync 1460 r
+2011_09_26/2011_09_26_drive_0022_sync 344 r
+2011_09_30/2011_09_30_drive_0028_sync 505 l
+2011_10_03/2011_10_03_drive_0042_sync 323 r
+2011_09_26/2011_09_26_drive_0022_sync 442 l
+2011_09_26/2011_09_26_drive_0022_sync 218 r
+2011_09_26/2011_09_26_drive_0019_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 2358 l
+2011_09_26/2011_09_26_drive_0057_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 795 l
+2011_09_26/2011_09_26_drive_0087_sync 641 l
+2011_09_30/2011_09_30_drive_0034_sync 95 l
+2011_09_26/2011_09_26_drive_0001_sync 107 r
+2011_09_30/2011_09_30_drive_0033_sync 1460 l
+2011_09_26/2011_09_26_drive_0028_sync 328 r
+2011_09_26/2011_09_26_drive_0018_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 1634 r
+2011_10_03/2011_10_03_drive_0042_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 387 l
+2011_09_30/2011_09_30_drive_0034_sync 469 l
+2011_10_03/2011_10_03_drive_0034_sync 1132 r
+2011_09_26/2011_09_26_drive_0057_sync 64 r
+2011_09_26/2011_09_26_drive_0051_sync 372 l
+2011_09_26/2011_09_26_drive_0015_sync 191 l
+2011_09_30/2011_09_30_drive_0020_sync 1012 r
+2011_10_03/2011_10_03_drive_0034_sync 2561 l
+2011_10_03/2011_10_03_drive_0034_sync 2554 r
+2011_09_30/2011_09_30_drive_0028_sync 2305 r
+2011_09_26/2011_09_26_drive_0022_sync 188 l
+2011_09_26/2011_09_26_drive_0091_sync 8 l
+2011_09_30/2011_09_30_drive_0033_sync 967 l
+2011_09_30/2011_09_30_drive_0034_sync 954 l
+2011_09_30/2011_09_30_drive_0020_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 4824 r
+2011_09_26/2011_09_26_drive_0022_sync 660 r
+2011_10_03/2011_10_03_drive_0042_sync 488 l
+2011_10_03/2011_10_03_drive_0042_sync 1078 l
+2011_10_03/2011_10_03_drive_0034_sync 2640 r
+2011_09_30/2011_09_30_drive_0033_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 1676 r
+2011_10_03/2011_10_03_drive_0034_sync 2819 l
+2011_09_26/2011_09_26_drive_0022_sync 550 l
+2011_09_26/2011_09_26_drive_0070_sync 240 l
+2011_09_30/2011_09_30_drive_0028_sync 3902 r
+2011_09_30/2011_09_30_drive_0028_sync 1523 r
+2011_09_30/2011_09_30_drive_0028_sync 3843 l
+2011_09_26/2011_09_26_drive_0035_sync 123 l
+2011_09_26/2011_09_26_drive_0051_sync 352 r
+2011_10_03/2011_10_03_drive_0034_sync 3720 l
+2011_09_30/2011_09_30_drive_0028_sync 3432 l
+2011_09_30/2011_09_30_drive_0034_sync 338 r
+2011_10_03/2011_10_03_drive_0034_sync 1012 l
+2011_10_03/2011_10_03_drive_0034_sync 2794 l
+2011_09_26/2011_09_26_drive_0104_sync 233 r
+2011_09_26/2011_09_26_drive_0022_sync 327 r
+2011_09_26/2011_09_26_drive_0104_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 531 r
+2011_10_03/2011_10_03_drive_0034_sync 4023 r
+2011_09_30/2011_09_30_drive_0028_sync 583 r
+2011_09_26/2011_09_26_drive_0032_sync 172 r
+2011_10_03/2011_10_03_drive_0042_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 167 r
+2011_09_26/2011_09_26_drive_0051_sync 305 l
+2011_09_26/2011_09_26_drive_0039_sync 181 l
+2011_09_30/2011_09_30_drive_0034_sync 572 l
+2011_10_03/2011_10_03_drive_0034_sync 1114 r
+2011_09_30/2011_09_30_drive_0028_sync 923 l
+2011_09_26/2011_09_26_drive_0018_sync 138 r
+2011_09_26/2011_09_26_drive_0032_sync 227 l
+2011_09_30/2011_09_30_drive_0028_sync 2176 r
+2011_09_30/2011_09_30_drive_0020_sync 441 l
+2011_10_03/2011_10_03_drive_0034_sync 3004 l
+2011_09_26/2011_09_26_drive_0104_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 2142 r
+2011_09_30/2011_09_30_drive_0028_sync 1273 r
+2011_09_30/2011_09_30_drive_0028_sync 650 l
+2011_09_30/2011_09_30_drive_0028_sync 3204 r
+2011_09_30/2011_09_30_drive_0033_sync 278 r
+2011_09_26/2011_09_26_drive_0019_sync 434 r
+2011_09_26/2011_09_26_drive_0061_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 344 l
+2011_09_26/2011_09_26_drive_0032_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 662 l
+2011_10_03/2011_10_03_drive_0034_sync 2132 r
+2011_10_03/2011_10_03_drive_0034_sync 1110 r
+2011_09_30/2011_09_30_drive_0033_sync 932 l
+2011_09_30/2011_09_30_drive_0033_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 653 l
+2011_09_30/2011_09_30_drive_0028_sync 658 l
+2011_09_30/2011_09_30_drive_0033_sync 956 l
+2011_09_26/2011_09_26_drive_0017_sync 93 r
+2011_09_30/2011_09_30_drive_0033_sync 475 r
+2011_09_26/2011_09_26_drive_0087_sync 558 r
+2011_09_30/2011_09_30_drive_0028_sync 1479 r
+2011_09_30/2011_09_30_drive_0028_sync 3518 r
+2011_09_30/2011_09_30_drive_0028_sync 3478 r
+2011_09_30/2011_09_30_drive_0028_sync 2595 l
+2011_09_26/2011_09_26_drive_0018_sync 68 l
+2011_09_30/2011_09_30_drive_0033_sync 1190 l
+2011_09_26/2011_09_26_drive_0051_sync 213 l
+2011_09_30/2011_09_30_drive_0020_sync 350 l
+2011_09_30/2011_09_30_drive_0034_sync 791 r
+2011_09_30/2011_09_30_drive_0028_sync 1662 l
+2011_09_30/2011_09_30_drive_0028_sync 3982 r
+2011_10_03/2011_10_03_drive_0042_sync 808 r
+2011_09_26/2011_09_26_drive_0019_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 1833 l
+2011_09_30/2011_09_30_drive_0028_sync 4940 l
+2011_09_26/2011_09_26_drive_0087_sync 474 r
+2011_09_26/2011_09_26_drive_0032_sync 87 l
+2011_09_26/2011_09_26_drive_0022_sync 204 r
+2011_09_26/2011_09_26_drive_0014_sync 88 l
+2011_09_30/2011_09_30_drive_0020_sync 434 r
+2011_09_28/2011_09_28_drive_0001_sync 105 l
+2011_10_03/2011_10_03_drive_0042_sync 504 r
+2011_09_30/2011_09_30_drive_0028_sync 4692 r
+2011_10_03/2011_10_03_drive_0034_sync 2614 r
+2011_10_03/2011_10_03_drive_0034_sync 3890 l
+2011_09_30/2011_09_30_drive_0033_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 3920 l
+2011_09_30/2011_09_30_drive_0020_sync 271 r
+2011_09_30/2011_09_30_drive_0028_sync 3091 l
+2011_09_30/2011_09_30_drive_0034_sync 366 r
+2011_09_26/2011_09_26_drive_0014_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 947 r
+2011_09_26/2011_09_26_drive_0095_sync 263 l
+2011_09_26/2011_09_26_drive_0001_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 2527 r
+2011_09_30/2011_09_30_drive_0028_sync 3372 r
+2011_10_03/2011_10_03_drive_0034_sync 2374 l
+2011_09_30/2011_09_30_drive_0028_sync 4247 l
+2011_10_03/2011_10_03_drive_0034_sync 2290 l
+2011_09_30/2011_09_30_drive_0034_sync 1060 r
+2011_09_30/2011_09_30_drive_0020_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 2148 r
+2011_09_30/2011_09_30_drive_0028_sync 950 r
+2011_09_30/2011_09_30_drive_0028_sync 1341 r
+2011_09_26/2011_09_26_drive_0087_sync 106 l
+2011_10_03/2011_10_03_drive_0034_sync 2066 l
+2011_10_03/2011_10_03_drive_0034_sync 2378 l
+2011_09_26/2011_09_26_drive_0061_sync 266 l
+2011_09_30/2011_09_30_drive_0028_sync 2612 l
+2011_10_03/2011_10_03_drive_0034_sync 4561 r
+2011_09_30/2011_09_30_drive_0034_sync 468 l
+2011_09_30/2011_09_30_drive_0028_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 3240 r
+2011_09_30/2011_09_30_drive_0028_sync 4025 r
+2011_09_30/2011_09_30_drive_0033_sync 317 l
+2011_09_26/2011_09_26_drive_0005_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 78 r
+2011_09_30/2011_09_30_drive_0020_sync 440 l
+2011_09_26/2011_09_26_drive_0061_sync 553 l
+2011_09_26/2011_09_26_drive_0057_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 489 l
+2011_09_26/2011_09_26_drive_0015_sync 105 r
+2011_09_30/2011_09_30_drive_0020_sync 522 r
+2011_09_26/2011_09_26_drive_0017_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 1564 r
+2011_09_26/2011_09_26_drive_0011_sync 113 r
+2011_09_26/2011_09_26_drive_0028_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 3948 l
+2011_09_30/2011_09_30_drive_0028_sync 2563 r
+2011_09_26/2011_09_26_drive_0022_sync 700 l
+2011_09_30/2011_09_30_drive_0028_sync 1302 l
+2011_09_26/2011_09_26_drive_0014_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 4655 l
+2011_09_30/2011_09_30_drive_0034_sync 989 l
+2011_09_30/2011_09_30_drive_0028_sync 4015 l
+2011_09_30/2011_09_30_drive_0028_sync 3975 l
+2011_09_30/2011_09_30_drive_0028_sync 4289 l
+2011_09_30/2011_09_30_drive_0020_sync 746 l
+2011_09_26/2011_09_26_drive_0051_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 3145 r
+2011_10_03/2011_10_03_drive_0034_sync 959 l
+2011_09_30/2011_09_30_drive_0020_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 1148 l
+2011_10_03/2011_10_03_drive_0034_sync 3001 l
+2011_09_29/2011_09_29_drive_0004_sync 203 r
+2011_09_30/2011_09_30_drive_0033_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 3216 r
+2011_09_26/2011_09_26_drive_0017_sync 88 r
+2011_09_26/2011_09_26_drive_0095_sync 29 r
+2011_09_30/2011_09_30_drive_0034_sync 1196 r
+2011_09_26/2011_09_26_drive_0018_sync 132 l
+2011_09_26/2011_09_26_drive_0087_sync 112 l
+2011_09_26/2011_09_26_drive_0028_sync 264 r
+2011_10_03/2011_10_03_drive_0034_sync 3299 r
+2011_10_03/2011_10_03_drive_0042_sync 1005 r
+2011_09_30/2011_09_30_drive_0028_sync 63 l
+2011_09_29/2011_09_29_drive_0026_sync 147 r
+2011_09_29/2011_09_29_drive_0004_sync 55 r
+2011_09_30/2011_09_30_drive_0020_sync 980 l
+2011_09_30/2011_09_30_drive_0028_sync 3953 r
+2011_09_26/2011_09_26_drive_0015_sync 84 r
+2011_09_26/2011_09_26_drive_0001_sync 24 r
+2011_09_26/2011_09_26_drive_0095_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 2463 l
+2011_09_30/2011_09_30_drive_0028_sync 2969 l
+2011_09_26/2011_09_26_drive_0091_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 1859 l
+2011_09_30/2011_09_30_drive_0028_sync 562 r
+2011_09_30/2011_09_30_drive_0020_sync 279 r
+2011_09_26/2011_09_26_drive_0039_sync 299 l
+2011_09_30/2011_09_30_drive_0020_sync 544 l
+2011_09_28/2011_09_28_drive_0001_sync 80 l
+2011_09_26/2011_09_26_drive_0051_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 1168 l
+2011_10_03/2011_10_03_drive_0034_sync 4150 r
+2011_09_30/2011_09_30_drive_0034_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 2265 r
+2011_09_30/2011_09_30_drive_0020_sync 1090 r
+2011_09_30/2011_09_30_drive_0020_sync 285 l
+2011_09_26/2011_09_26_drive_0095_sync 249 r
+2011_10_03/2011_10_03_drive_0034_sync 4007 l
+2011_10_03/2011_10_03_drive_0034_sync 735 r
+2011_09_26/2011_09_26_drive_0035_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 448 l
+2011_09_26/2011_09_26_drive_0022_sync 729 r
+2011_09_26/2011_09_26_drive_0061_sync 698 r
+2011_10_03/2011_10_03_drive_0034_sync 2306 l
+2011_09_29/2011_09_29_drive_0004_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 4484 l
+2011_09_30/2011_09_30_drive_0028_sync 4664 l
+2011_09_26/2011_09_26_drive_0087_sync 188 r
+2011_09_29/2011_09_29_drive_0004_sync 125 r
+2011_09_26/2011_09_26_drive_0057_sync 264 r
+2011_10_03/2011_10_03_drive_0034_sync 2324 r
+2011_09_26/2011_09_26_drive_0022_sync 586 r
+2011_09_30/2011_09_30_drive_0028_sync 3439 r
+2011_09_30/2011_09_30_drive_0028_sync 1664 r
+2011_09_26/2011_09_26_drive_0057_sync 264 l
+2011_09_30/2011_09_30_drive_0034_sync 1019 r
+2011_09_30/2011_09_30_drive_0028_sync 3771 r
+2011_09_30/2011_09_30_drive_0033_sync 1480 l
+2011_10_03/2011_10_03_drive_0034_sync 3697 r
+2011_09_26/2011_09_26_drive_0087_sync 311 r
+2011_09_29/2011_09_29_drive_0004_sync 146 l
+2011_09_30/2011_09_30_drive_0034_sync 636 l
+2011_09_26/2011_09_26_drive_0061_sync 312 r
+2011_09_26/2011_09_26_drive_0011_sync 10 r
+2011_09_26/2011_09_26_drive_0087_sync 517 l
+2011_09_26/2011_09_26_drive_0051_sync 371 l
+2011_09_26/2011_09_26_drive_0061_sync 352 l
+2011_10_03/2011_10_03_drive_0034_sync 822 l
+2011_09_30/2011_09_30_drive_0028_sync 667 l
+2011_09_26/2011_09_26_drive_0018_sync 247 l
+2011_09_26/2011_09_26_drive_0022_sync 783 l
+2011_09_26/2011_09_26_drive_0028_sync 141 l
+2011_09_30/2011_09_30_drive_0033_sync 1122 r
+2011_09_30/2011_09_30_drive_0033_sync 1198 r
+2011_09_30/2011_09_30_drive_0028_sync 4012 l
+2011_09_26/2011_09_26_drive_0032_sync 180 r
+2011_09_29/2011_09_29_drive_0004_sync 145 r
+2011_09_26/2011_09_26_drive_0087_sync 359 l
+2011_09_30/2011_09_30_drive_0028_sync 840 r
+2011_09_30/2011_09_30_drive_0020_sync 354 l
+2011_09_26/2011_09_26_drive_0095_sync 222 l
+2011_09_30/2011_09_30_drive_0033_sync 639 l
+2011_09_30/2011_09_30_drive_0033_sync 1381 r
+2011_09_26/2011_09_26_drive_0032_sync 31 r
+2011_09_26/2011_09_26_drive_0070_sync 149 r
+2011_09_26/2011_09_26_drive_0061_sync 630 l
+2011_10_03/2011_10_03_drive_0034_sync 3418 l
+2011_09_26/2011_09_26_drive_0104_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 1199 l
+2011_09_26/2011_09_26_drive_0061_sync 167 r
+2011_09_26/2011_09_26_drive_0039_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 4730 l
+2011_09_30/2011_09_30_drive_0028_sync 3252 r
+2011_10_03/2011_10_03_drive_0034_sync 3764 l
+2011_10_03/2011_10_03_drive_0034_sync 1391 r
+2011_09_26/2011_09_26_drive_0018_sync 78 r
+2011_09_30/2011_09_30_drive_0034_sync 710 l
+2011_09_30/2011_09_30_drive_0020_sync 1077 r
+2011_09_30/2011_09_30_drive_0028_sync 3251 l
+2011_09_30/2011_09_30_drive_0033_sync 101 l
+2011_09_30/2011_09_30_drive_0020_sync 569 r
+2011_09_26/2011_09_26_drive_0087_sync 362 l
+2011_09_30/2011_09_30_drive_0034_sync 874 r
+2011_09_26/2011_09_26_drive_0087_sync 147 r
+2011_09_30/2011_09_30_drive_0033_sync 1583 r
+2011_09_26/2011_09_26_drive_0104_sync 35 r
+2011_09_26/2011_09_26_drive_0022_sync 789 r
+2011_09_30/2011_09_30_drive_0020_sync 45 r
+2011_09_26/2011_09_26_drive_0091_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 3907 r
+2011_10_03/2011_10_03_drive_0034_sync 183 r
+2011_10_03/2011_10_03_drive_0034_sync 70 r
+2011_10_03/2011_10_03_drive_0042_sync 129 r
+2011_09_26/2011_09_26_drive_0019_sync 104 l
+2011_09_26/2011_09_26_drive_0087_sync 427 l
+2011_09_29/2011_09_29_drive_0004_sync 213 l
+2011_09_30/2011_09_30_drive_0033_sync 729 l
+2011_09_26/2011_09_26_drive_0061_sync 451 r
+2011_10_03/2011_10_03_drive_0034_sync 3460 l
+2011_09_30/2011_09_30_drive_0034_sync 326 r
+2011_09_30/2011_09_30_drive_0028_sync 3344 r
+2011_10_03/2011_10_03_drive_0034_sync 4025 l
+2011_09_30/2011_09_30_drive_0028_sync 1098 r
+2011_09_26/2011_09_26_drive_0022_sync 61 l
+2011_09_30/2011_09_30_drive_0020_sync 597 l
+2011_09_30/2011_09_30_drive_0033_sync 729 r
+2011_09_30/2011_09_30_drive_0020_sync 496 r
+2011_09_26/2011_09_26_drive_0028_sync 316 l
+2011_09_30/2011_09_30_drive_0028_sync 631 r
+2011_09_26/2011_09_26_drive_0061_sync 496 r
+2011_09_30/2011_09_30_drive_0028_sync 4708 l
+2011_09_26/2011_09_26_drive_0087_sync 619 l
+2011_09_30/2011_09_30_drive_0034_sync 1026 r
+2011_09_30/2011_09_30_drive_0034_sync 844 l
+2011_10_03/2011_10_03_drive_0034_sync 586 r
+2011_09_30/2011_09_30_drive_0033_sync 1223 l
+2011_09_26/2011_09_26_drive_0019_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 3931 r
+2011_09_26/2011_09_26_drive_0011_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 1482 r
+2011_09_30/2011_09_30_drive_0033_sync 148 l
+2011_09_30/2011_09_30_drive_0020_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 3141 r
+2011_09_26/2011_09_26_drive_0001_sync 83 r
+2011_09_30/2011_09_30_drive_0033_sync 1537 l
+2011_09_26/2011_09_26_drive_0005_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 2509 r
+2011_09_30/2011_09_30_drive_0028_sync 2747 l
+2011_09_30/2011_09_30_drive_0028_sync 2307 r
+2011_10_03/2011_10_03_drive_0034_sync 2335 r
+2011_09_26/2011_09_26_drive_0061_sync 372 l
+2011_09_26/2011_09_26_drive_0070_sync 291 r
+2011_10_03/2011_10_03_drive_0034_sync 2148 r
+2011_09_26/2011_09_26_drive_0091_sync 178 l
+2011_10_03/2011_10_03_drive_0034_sync 2413 l
+2011_09_30/2011_09_30_drive_0028_sync 1277 l
+2011_09_26/2011_09_26_drive_0070_sync 153 r
+2011_10_03/2011_10_03_drive_0034_sync 3474 l
+2011_09_26/2011_09_26_drive_0070_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 1941 r
+2011_10_03/2011_10_03_drive_0034_sync 4245 l
+2011_09_30/2011_09_30_drive_0028_sync 2116 r
+2011_09_26/2011_09_26_drive_0095_sync 232 l
+2011_09_30/2011_09_30_drive_0028_sync 422 r
+2011_09_26/2011_09_26_drive_0005_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 4252 l
+2011_09_30/2011_09_30_drive_0033_sync 1449 l
+2011_09_30/2011_09_30_drive_0028_sync 4822 r
+2011_09_26/2011_09_26_drive_0039_sync 305 l
+2011_09_26/2011_09_26_drive_0028_sync 217 r
+2011_09_30/2011_09_30_drive_0028_sync 1272 r
+2011_10_03/2011_10_03_drive_0034_sync 1005 r
+2011_09_30/2011_09_30_drive_0028_sync 4507 r
+2011_09_26/2011_09_26_drive_0095_sync 3 l
+2011_09_30/2011_09_30_drive_0033_sync 1521 r
+2011_09_26/2011_09_26_drive_0039_sync 165 l
+2011_09_30/2011_09_30_drive_0028_sync 2797 l
+2011_10_03/2011_10_03_drive_0034_sync 1626 r
+2011_09_26/2011_09_26_drive_0018_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 489 l
+2011_09_30/2011_09_30_drive_0028_sync 2635 r
+2011_10_03/2011_10_03_drive_0034_sync 920 r
+2011_09_30/2011_09_30_drive_0028_sync 1781 r
+2011_09_30/2011_09_30_drive_0028_sync 328 r
+2011_09_30/2011_09_30_drive_0028_sync 3752 r
+2011_09_30/2011_09_30_drive_0033_sync 986 l
+2011_10_03/2011_10_03_drive_0034_sync 904 r
+2011_09_30/2011_09_30_drive_0028_sync 693 r
+2011_10_03/2011_10_03_drive_0034_sync 3530 r
+2011_10_03/2011_10_03_drive_0034_sync 652 r
+2011_09_26/2011_09_26_drive_0018_sync 62 l
+2011_09_26/2011_09_26_drive_0018_sync 42 l
+2011_09_26/2011_09_26_drive_0005_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 791 l
+2011_09_30/2011_09_30_drive_0034_sync 425 l
+2011_10_03/2011_10_03_drive_0042_sync 784 r
+2011_09_30/2011_09_30_drive_0020_sync 435 r
+2011_09_30/2011_09_30_drive_0028_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 3667 l
+2011_10_03/2011_10_03_drive_0042_sync 663 l
+2011_09_26/2011_09_26_drive_0028_sync 220 l
+2011_09_30/2011_09_30_drive_0033_sync 717 l
+2011_09_30/2011_09_30_drive_0020_sync 291 l
+2011_09_29/2011_09_29_drive_0026_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 2198 l
+2011_09_26/2011_09_26_drive_0028_sync 120 r
+2011_09_30/2011_09_30_drive_0028_sync 1807 l
+2011_10_03/2011_10_03_drive_0034_sync 3266 r
+2011_09_26/2011_09_26_drive_0061_sync 417 r
+2011_10_03/2011_10_03_drive_0034_sync 1219 l
+2011_09_30/2011_09_30_drive_0028_sync 1070 l
+2011_09_26/2011_09_26_drive_0014_sync 247 r
+2011_10_03/2011_10_03_drive_0034_sync 2267 r
+2011_09_30/2011_09_30_drive_0028_sync 2386 r
+2011_09_26/2011_09_26_drive_0019_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 729 l
+2011_09_30/2011_09_30_drive_0033_sync 470 l
+2011_10_03/2011_10_03_drive_0034_sync 2016 l
+2011_09_26/2011_09_26_drive_0011_sync 56 l
+2011_10_03/2011_10_03_drive_0034_sync 400 l
+2011_09_30/2011_09_30_drive_0034_sync 1074 l
+2011_09_26/2011_09_26_drive_0113_sync 81 r
+2011_09_26/2011_09_26_drive_0018_sync 205 r
+2011_09_30/2011_09_30_drive_0033_sync 1280 l
+2011_09_30/2011_09_30_drive_0033_sync 995 r
+2011_10_03/2011_10_03_drive_0034_sync 1631 r
+2011_09_30/2011_09_30_drive_0034_sync 30 r
+2011_09_26/2011_09_26_drive_0022_sync 152 l
+2011_09_30/2011_09_30_drive_0033_sync 1449 r
+2011_09_30/2011_09_30_drive_0028_sync 1915 l
+2011_09_30/2011_09_30_drive_0028_sync 834 r
+2011_10_03/2011_10_03_drive_0034_sync 4364 l
+2011_10_03/2011_10_03_drive_0034_sync 1968 r
+2011_09_30/2011_09_30_drive_0020_sync 514 l
+2011_09_26/2011_09_26_drive_0061_sync 498 r
+2011_09_26/2011_09_26_drive_0079_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 522 l
+2011_09_26/2011_09_26_drive_0005_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 4409 r
+2011_09_26/2011_09_26_drive_0014_sync 74 r
+2011_09_30/2011_09_30_drive_0034_sync 991 r
+2011_10_03/2011_10_03_drive_0042_sync 624 l
+2011_09_26/2011_09_26_drive_0039_sync 213 l
+2011_10_03/2011_10_03_drive_0034_sync 4647 r
+2011_09_30/2011_09_30_drive_0028_sync 1697 l
+2011_09_30/2011_09_30_drive_0033_sync 1513 l
+2011_09_30/2011_09_30_drive_0028_sync 4490 r
+2011_09_26/2011_09_26_drive_0095_sync 65 l
+2011_09_30/2011_09_30_drive_0034_sync 361 r
+2011_09_29/2011_09_29_drive_0004_sync 288 r
+2011_09_30/2011_09_30_drive_0033_sync 881 l
+2011_09_26/2011_09_26_drive_0028_sync 219 r
+2011_09_26/2011_09_26_drive_0061_sync 543 l
+2011_10_03/2011_10_03_drive_0034_sync 1183 r
+2011_09_30/2011_09_30_drive_0028_sync 4538 l
+2011_09_26/2011_09_26_drive_0014_sync 284 l
+2011_09_26/2011_09_26_drive_0032_sync 18 l
+2011_09_30/2011_09_30_drive_0034_sync 373 r
+2011_09_30/2011_09_30_drive_0020_sync 1011 r
+2011_09_30/2011_09_30_drive_0034_sync 760 l
+2011_09_26/2011_09_26_drive_0070_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 5021 l
+2011_09_30/2011_09_30_drive_0028_sync 888 r
+2011_09_26/2011_09_26_drive_0104_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 293 l
+2011_10_03/2011_10_03_drive_0042_sync 1114 r
+2011_09_30/2011_09_30_drive_0028_sync 1933 r
+2011_09_26/2011_09_26_drive_0095_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 4202 l
+2011_09_26/2011_09_26_drive_0091_sync 95 l
+2011_09_26/2011_09_26_drive_0087_sync 704 l
+2011_09_30/2011_09_30_drive_0028_sync 1407 r
+2011_10_03/2011_10_03_drive_0034_sync 3019 r
+2011_10_03/2011_10_03_drive_0042_sync 31 l
+2011_09_26/2011_09_26_drive_0018_sync 103 r
+2011_09_30/2011_09_30_drive_0033_sync 896 l
+2011_09_30/2011_09_30_drive_0028_sync 2702 r
+2011_09_30/2011_09_30_drive_0028_sync 228 l
+2011_09_30/2011_09_30_drive_0033_sync 174 r
+2011_10_03/2011_10_03_drive_0034_sync 2541 l
+2011_09_30/2011_09_30_drive_0028_sync 1296 r
+2011_09_26/2011_09_26_drive_0104_sync 311 l
+2011_09_26/2011_09_26_drive_0018_sync 193 r
+2011_09_30/2011_09_30_drive_0028_sync 2728 r
+2011_09_26/2011_09_26_drive_0014_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 3886 r
+2011_09_26/2011_09_26_drive_0028_sync 215 l
+2011_09_30/2011_09_30_drive_0020_sync 1008 l
+2011_09_26/2011_09_26_drive_0061_sync 20 r
+2011_09_30/2011_09_30_drive_0028_sync 3663 l
+2011_09_30/2011_09_30_drive_0033_sync 483 r
+2011_09_26/2011_09_26_drive_0011_sync 40 r
+2011_09_26/2011_09_26_drive_0014_sync 35 r
+2011_09_26/2011_09_26_drive_0104_sync 62 l
+2011_09_30/2011_09_30_drive_0020_sync 673 r
+2011_09_26/2011_09_26_drive_0070_sync 89 l
+2011_10_03/2011_10_03_drive_0034_sync 2288 l
+2011_09_29/2011_09_29_drive_0004_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 1028 r
+2011_09_30/2011_09_30_drive_0028_sync 1769 l
+2011_09_26/2011_09_26_drive_0022_sync 343 r
+2011_09_30/2011_09_30_drive_0028_sync 1682 r
+2011_10_03/2011_10_03_drive_0042_sync 905 l
+2011_09_30/2011_09_30_drive_0033_sync 926 r
+2011_10_03/2011_10_03_drive_0042_sync 781 r
+2011_09_26/2011_09_26_drive_0035_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 325 l
+2011_10_03/2011_10_03_drive_0034_sync 1639 r
+2011_09_30/2011_09_30_drive_0028_sync 2466 l
+2011_09_30/2011_09_30_drive_0033_sync 582 r
+2011_09_30/2011_09_30_drive_0028_sync 234 r
+2011_09_26/2011_09_26_drive_0018_sync 194 l
+2011_09_30/2011_09_30_drive_0033_sync 194 r
+2011_10_03/2011_10_03_drive_0034_sync 3797 r
+2011_09_26/2011_09_26_drive_0019_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 1063 r
+2011_09_30/2011_09_30_drive_0034_sync 1113 l
+2011_09_26/2011_09_26_drive_0011_sync 215 l
+2011_10_03/2011_10_03_drive_0042_sync 692 r
+2011_09_30/2011_09_30_drive_0028_sync 1611 l
+2011_09_26/2011_09_26_drive_0091_sync 330 r
+2011_09_30/2011_09_30_drive_0028_sync 2006 l
+2011_09_26/2011_09_26_drive_0051_sync 246 l
+2011_09_26/2011_09_26_drive_0011_sync 210 r
+2011_09_26/2011_09_26_drive_0011_sync 231 l
+2011_09_30/2011_09_30_drive_0028_sync 2406 l
+2011_09_26/2011_09_26_drive_0057_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 4941 l
+2011_09_30/2011_09_30_drive_0020_sync 60 r
+2011_10_03/2011_10_03_drive_0034_sync 2522 l
+2011_09_26/2011_09_26_drive_0051_sync 207 l
+2011_09_30/2011_09_30_drive_0020_sync 927 l
+2011_10_03/2011_10_03_drive_0034_sync 2635 l
+2011_09_30/2011_09_30_drive_0028_sync 2476 l
+2011_09_30/2011_09_30_drive_0033_sync 1031 l
+2011_10_03/2011_10_03_drive_0042_sync 684 l
+2011_10_03/2011_10_03_drive_0034_sync 555 r
+2011_09_30/2011_09_30_drive_0028_sync 2895 l
+2011_10_03/2011_10_03_drive_0034_sync 804 l
+2011_09_26/2011_09_26_drive_0028_sync 394 r
+2011_10_03/2011_10_03_drive_0034_sync 3325 l
+2011_09_26/2011_09_26_drive_0061_sync 151 r
+2011_10_03/2011_10_03_drive_0034_sync 4386 r
+2011_09_26/2011_09_26_drive_0019_sync 59 l
+2011_09_26/2011_09_26_drive_0035_sync 55 r
+2011_09_30/2011_09_30_drive_0020_sync 979 l
+2011_09_26/2011_09_26_drive_0104_sync 301 r
+2011_09_26/2011_09_26_drive_0018_sync 143 r
+2011_10_03/2011_10_03_drive_0034_sync 363 r
+2011_09_29/2011_09_29_drive_0004_sync 7 l
+2011_09_26/2011_09_26_drive_0032_sync 304 l
+2011_09_26/2011_09_26_drive_0057_sync 52 r
+2011_09_26/2011_09_26_drive_0061_sync 568 r
+2011_10_03/2011_10_03_drive_0034_sync 2385 r
+2011_10_03/2011_10_03_drive_0034_sync 1739 l
+2011_09_26/2011_09_26_drive_0060_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 4111 r
+2011_09_30/2011_09_30_drive_0033_sync 828 l
+2011_09_26/2011_09_26_drive_0057_sync 335 r
+2011_09_26/2011_09_26_drive_0018_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 1825 r
+2011_09_26/2011_09_26_drive_0028_sync 84 l
+2011_09_26/2011_09_26_drive_0018_sync 166 r
+2011_09_30/2011_09_30_drive_0028_sync 4308 l
+2011_09_29/2011_09_29_drive_0004_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 437 l
+2011_09_26/2011_09_26_drive_0014_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 4488 l
+2011_09_26/2011_09_26_drive_0005_sync 23 r
+2011_09_26/2011_09_26_drive_0057_sync 296 l
+2011_10_03/2011_10_03_drive_0034_sync 3811 r
+2011_09_26/2011_09_26_drive_0039_sync 80 l
+2011_09_30/2011_09_30_drive_0028_sync 3489 l
+2011_09_30/2011_09_30_drive_0028_sync 4543 l
+2011_09_26/2011_09_26_drive_0051_sync 324 r
+2011_09_30/2011_09_30_drive_0033_sync 1325 l
+2011_10_03/2011_10_03_drive_0034_sync 793 l
+2011_09_30/2011_09_30_drive_0028_sync 2689 l
+2011_09_29/2011_09_29_drive_0026_sync 148 r
+2011_09_30/2011_09_30_drive_0033_sync 680 r
+2011_09_30/2011_09_30_drive_0028_sync 1140 r
+2011_09_26/2011_09_26_drive_0019_sync 185 l
+2011_10_03/2011_10_03_drive_0034_sync 1993 l
+2011_09_26/2011_09_26_drive_0070_sync 371 r
+2011_10_03/2011_10_03_drive_0034_sync 608 r
+2011_09_26/2011_09_26_drive_0087_sync 685 l
+2011_10_03/2011_10_03_drive_0034_sync 864 l
+2011_09_26/2011_09_26_drive_0022_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 3176 l
+2011_09_26/2011_09_26_drive_0015_sync 204 l
+2011_09_26/2011_09_26_drive_0051_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 3670 l
+2011_09_26/2011_09_26_drive_0104_sync 224 l
+2011_09_30/2011_09_30_drive_0033_sync 1232 l
+2011_09_30/2011_09_30_drive_0034_sync 720 l
+2011_09_30/2011_09_30_drive_0028_sync 4111 l
+2011_09_30/2011_09_30_drive_0020_sync 554 r
+2011_09_26/2011_09_26_drive_0087_sync 362 r
+2011_10_03/2011_10_03_drive_0034_sync 3058 l
+2011_10_03/2011_10_03_drive_0034_sync 1722 r
+2011_09_30/2011_09_30_drive_0033_sync 1109 r
+2011_10_03/2011_10_03_drive_0034_sync 2774 r
+2011_09_26/2011_09_26_drive_0022_sync 417 l
+2011_09_30/2011_09_30_drive_0033_sync 938 r
+2011_10_03/2011_10_03_drive_0034_sync 1340 l
+2011_09_26/2011_09_26_drive_0022_sync 464 l
+2011_09_26/2011_09_26_drive_0015_sync 141 l
+2011_09_26/2011_09_26_drive_0087_sync 230 l
+2011_09_26/2011_09_26_drive_0091_sync 228 l
+2011_09_30/2011_09_30_drive_0033_sync 176 r
+2011_09_30/2011_09_30_drive_0033_sync 653 l
+2011_09_30/2011_09_30_drive_0028_sync 2982 l
+2011_09_26/2011_09_26_drive_0087_sync 350 r
+2011_10_03/2011_10_03_drive_0042_sync 1039 r
+2011_10_03/2011_10_03_drive_0034_sync 603 l
+2011_09_30/2011_09_30_drive_0034_sync 742 r
+2011_10_03/2011_10_03_drive_0034_sync 1226 r
+2011_10_03/2011_10_03_drive_0034_sync 1853 r
+2011_09_30/2011_09_30_drive_0034_sync 536 l
+2011_09_30/2011_09_30_drive_0028_sync 2677 l
+2011_09_30/2011_09_30_drive_0034_sync 511 l
+2011_09_30/2011_09_30_drive_0028_sync 3602 r
+2011_09_26/2011_09_26_drive_0070_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 2551 r
+2011_09_30/2011_09_30_drive_0028_sync 3705 r
+2011_09_26/2011_09_26_drive_0104_sync 162 r
+2011_09_30/2011_09_30_drive_0034_sync 509 r
+2011_09_26/2011_09_26_drive_0070_sync 154 r
+2011_09_26/2011_09_26_drive_0061_sync 439 l
+2011_09_30/2011_09_30_drive_0020_sync 581 r
+2011_09_29/2011_09_29_drive_0026_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 1283 r
+2011_09_30/2011_09_30_drive_0028_sync 810 l
+2011_09_30/2011_09_30_drive_0028_sync 334 l
+2011_09_30/2011_09_30_drive_0028_sync 3900 l
+2011_10_03/2011_10_03_drive_0034_sync 2228 r
+2011_09_26/2011_09_26_drive_0091_sync 302 r
+2011_10_03/2011_10_03_drive_0034_sync 3773 r
+2011_09_26/2011_09_26_drive_0095_sync 119 r
+2011_09_26/2011_09_26_drive_0014_sync 293 l
+2011_09_26/2011_09_26_drive_0015_sync 62 r
+2011_09_30/2011_09_30_drive_0033_sync 591 l
+2011_09_30/2011_09_30_drive_0028_sync 1499 l
+2011_09_30/2011_09_30_drive_0028_sync 5144 r
+2011_09_30/2011_09_30_drive_0028_sync 4932 l
+2011_09_26/2011_09_26_drive_0022_sync 96 r
+2011_09_30/2011_09_30_drive_0034_sync 591 l
+2011_09_30/2011_09_30_drive_0028_sync 2283 r
+2011_09_26/2011_09_26_drive_0091_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 4780 r
+2011_09_26/2011_09_26_drive_0061_sync 15 l
+2011_09_30/2011_09_30_drive_0034_sync 154 l
+2011_09_30/2011_09_30_drive_0028_sync 1833 r
+2011_09_30/2011_09_30_drive_0034_sync 349 r
+2011_10_03/2011_10_03_drive_0034_sync 3350 r
+2011_10_03/2011_10_03_drive_0042_sync 215 l
+2011_09_30/2011_09_30_drive_0020_sync 484 r
+2011_09_30/2011_09_30_drive_0028_sync 689 l
+2011_09_26/2011_09_26_drive_0032_sync 53 r
+2011_09_26/2011_09_26_drive_0057_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 2136 l
+2011_09_26/2011_09_26_drive_0091_sync 164 r
+2011_10_03/2011_10_03_drive_0034_sync 3863 r
+2011_09_30/2011_09_30_drive_0028_sync 4714 l
+2011_10_03/2011_10_03_drive_0042_sync 1000 r
+2011_09_26/2011_09_26_drive_0061_sync 91 l
+2011_09_26/2011_09_26_drive_0051_sync 336 r
+2011_09_26/2011_09_26_drive_0070_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 514 r
+2011_09_30/2011_09_30_drive_0028_sync 3900 r
+2011_10_03/2011_10_03_drive_0034_sync 1349 l
+2011_10_03/2011_10_03_drive_0034_sync 286 r
+2011_09_30/2011_09_30_drive_0020_sync 585 r
+2011_09_30/2011_09_30_drive_0033_sync 985 r
+2011_09_29/2011_09_29_drive_0004_sync 117 l
+2011_09_26/2011_09_26_drive_0051_sync 212 l
+2011_09_30/2011_09_30_drive_0020_sync 292 l
+2011_09_26/2011_09_26_drive_0087_sync 98 l
+2011_09_26/2011_09_26_drive_0104_sync 31 l
+2011_09_30/2011_09_30_drive_0033_sync 924 l
+2011_09_26/2011_09_26_drive_0005_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 285 r
+2011_09_26/2011_09_26_drive_0017_sync 91 l
+2011_09_30/2011_09_30_drive_0033_sync 699 l
+2011_09_26/2011_09_26_drive_0001_sync 84 l
+2011_09_30/2011_09_30_drive_0033_sync 907 r
+2011_09_30/2011_09_30_drive_0033_sync 820 l
+2011_10_03/2011_10_03_drive_0034_sync 3964 r
+2011_09_26/2011_09_26_drive_0018_sync 100 r
+2011_09_26/2011_09_26_drive_0015_sync 84 l
+2011_09_26/2011_09_26_drive_0011_sync 229 r
+2011_09_30/2011_09_30_drive_0034_sync 1101 r
+2011_09_30/2011_09_30_drive_0028_sync 4320 r
+2011_09_30/2011_09_30_drive_0028_sync 2687 l
+2011_09_26/2011_09_26_drive_0087_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 875 r
+2011_09_26/2011_09_26_drive_0015_sync 236 l
+2011_10_03/2011_10_03_drive_0034_sync 938 r
+2011_10_03/2011_10_03_drive_0034_sync 2212 l
+2011_10_03/2011_10_03_drive_0042_sync 360 l
+2011_09_30/2011_09_30_drive_0028_sync 4437 l
+2011_09_26/2011_09_26_drive_0087_sync 585 l
+2011_09_30/2011_09_30_drive_0034_sync 439 r
+2011_10_03/2011_10_03_drive_0034_sync 1351 l
+2011_09_26/2011_09_26_drive_0011_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 4098 l
+2011_09_26/2011_09_26_drive_0113_sync 28 r
+2011_09_30/2011_09_30_drive_0020_sync 734 r
+2011_09_30/2011_09_30_drive_0033_sync 1496 r
+2011_09_30/2011_09_30_drive_0028_sync 1597 l
+2011_10_03/2011_10_03_drive_0034_sync 1284 l
+2011_10_03/2011_10_03_drive_0034_sync 2693 r
+2011_09_30/2011_09_30_drive_0028_sync 1264 l
+2011_09_30/2011_09_30_drive_0034_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 3528 l
+2011_09_30/2011_09_30_drive_0028_sync 5029 l
+2011_09_30/2011_09_30_drive_0020_sync 567 l
+2011_09_30/2011_09_30_drive_0028_sync 2393 r
+2011_09_30/2011_09_30_drive_0020_sync 872 l
+2011_09_30/2011_09_30_drive_0028_sync 4883 l
+2011_09_26/2011_09_26_drive_0087_sync 241 l
+2011_09_30/2011_09_30_drive_0033_sync 1022 r
+2011_09_26/2011_09_26_drive_0028_sync 186 l
+2011_09_26/2011_09_26_drive_0019_sync 124 l
+2011_09_30/2011_09_30_drive_0033_sync 294 l
+2011_09_26/2011_09_26_drive_0087_sync 414 r
+2011_09_30/2011_09_30_drive_0034_sync 762 r
+2011_09_26/2011_09_26_drive_0022_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 2466 r
+2011_09_30/2011_09_30_drive_0028_sync 5124 r
+2011_09_29/2011_09_29_drive_0004_sync 75 r
+2011_09_26/2011_09_26_drive_0113_sync 42 r
+2011_09_30/2011_09_30_drive_0020_sync 376 r
+2011_09_26/2011_09_26_drive_0051_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 883 l
+2011_09_30/2011_09_30_drive_0033_sync 1033 l
+2011_09_26/2011_09_26_drive_0051_sync 162 l
+2011_09_26/2011_09_26_drive_0061_sync 115 r
+2011_09_26/2011_09_26_drive_0087_sync 97 l
+2011_09_26/2011_09_26_drive_0087_sync 515 l
+2011_09_26/2011_09_26_drive_0028_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 3379 l
+2011_09_29/2011_09_29_drive_0004_sync 255 l
+2011_10_03/2011_10_03_drive_0034_sync 2937 l
+2011_09_30/2011_09_30_drive_0028_sync 1632 r
+2011_10_03/2011_10_03_drive_0034_sync 3775 r
+2011_10_03/2011_10_03_drive_0034_sync 2512 r
+2011_09_30/2011_09_30_drive_0028_sync 3743 l
+2011_10_03/2011_10_03_drive_0034_sync 4360 r
+2011_09_30/2011_09_30_drive_0034_sync 705 r
+2011_09_30/2011_09_30_drive_0033_sync 9 l
+2011_09_26/2011_09_26_drive_0057_sync 93 r
+2011_09_30/2011_09_30_drive_0033_sync 654 r
+2011_09_30/2011_09_30_drive_0034_sync 439 l
+2011_09_30/2011_09_30_drive_0028_sync 2722 r
+2011_09_26/2011_09_26_drive_0104_sync 2 r
+2011_09_26/2011_09_26_drive_0087_sync 195 r
+2011_09_30/2011_09_30_drive_0028_sync 1760 l
+2011_09_30/2011_09_30_drive_0034_sync 1212 l
+2011_10_03/2011_10_03_drive_0034_sync 352 r
+2011_10_03/2011_10_03_drive_0034_sync 2953 l
+2011_09_26/2011_09_26_drive_0061_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 2565 r
+2011_10_03/2011_10_03_drive_0034_sync 3102 r
+2011_09_30/2011_09_30_drive_0020_sync 158 l
+2011_10_03/2011_10_03_drive_0042_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 2886 r
+2011_09_30/2011_09_30_drive_0034_sync 384 r
+2011_09_26/2011_09_26_drive_0061_sync 383 l
+2011_09_26/2011_09_26_drive_0087_sync 125 r
+2011_09_29/2011_09_29_drive_0004_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 57 l
+2011_09_26/2011_09_26_drive_0014_sync 53 l
+2011_09_30/2011_09_30_drive_0028_sync 4650 l
+2011_09_26/2011_09_26_drive_0014_sync 233 l
+2011_09_26/2011_09_26_drive_0039_sync 160 l
+2011_09_26/2011_09_26_drive_0061_sync 396 r
+2011_10_03/2011_10_03_drive_0034_sync 2947 l
+2011_09_30/2011_09_30_drive_0028_sync 245 r
+2011_10_03/2011_10_03_drive_0034_sync 3652 r
+2011_10_03/2011_10_03_drive_0034_sync 2969 r
+2011_09_30/2011_09_30_drive_0028_sync 2838 r
+2011_09_26/2011_09_26_drive_0039_sync 355 r
+2011_10_03/2011_10_03_drive_0034_sync 1654 l
+2011_10_03/2011_10_03_drive_0034_sync 3196 l
+2011_09_30/2011_09_30_drive_0033_sync 745 r
+2011_10_03/2011_10_03_drive_0042_sync 869 l
+2011_09_30/2011_09_30_drive_0028_sync 2223 r
+2011_10_03/2011_10_03_drive_0034_sync 2348 l
+2011_09_26/2011_09_26_drive_0014_sync 156 r
+2011_09_30/2011_09_30_drive_0034_sync 660 r
+2011_10_03/2011_10_03_drive_0042_sync 981 l
+2011_09_26/2011_09_26_drive_0061_sync 60 r
+2011_09_26/2011_09_26_drive_0091_sync 131 r
+2011_10_03/2011_10_03_drive_0034_sync 1790 r
+2011_09_30/2011_09_30_drive_0028_sync 1196 r
+2011_09_26/2011_09_26_drive_0015_sync 195 r
+2011_10_03/2011_10_03_drive_0042_sync 866 l
+2011_10_03/2011_10_03_drive_0034_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 3725 l
+2011_09_26/2011_09_26_drive_0014_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 2202 r
+2011_09_30/2011_09_30_drive_0028_sync 2276 l
+2011_09_26/2011_09_26_drive_0022_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 211 l
+2011_09_26/2011_09_26_drive_0091_sync 205 r
+2011_09_26/2011_09_26_drive_0001_sync 50 r
+2011_09_26/2011_09_26_drive_0022_sync 261 l
+2011_09_30/2011_09_30_drive_0033_sync 137 r
+2011_09_30/2011_09_30_drive_0028_sync 3614 l
+2011_09_29/2011_09_29_drive_0004_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 4595 r
+2011_09_30/2011_09_30_drive_0028_sync 3879 l
+2011_10_03/2011_10_03_drive_0042_sync 617 l
+2011_09_26/2011_09_26_drive_0061_sync 674 l
+2011_09_30/2011_09_30_drive_0020_sync 223 r
+2011_09_28/2011_09_28_drive_0001_sync 86 r
+2011_09_26/2011_09_26_drive_0057_sync 322 l
+2011_09_26/2011_09_26_drive_0087_sync 17 r
+2011_09_30/2011_09_30_drive_0034_sync 580 l
+2011_10_03/2011_10_03_drive_0042_sync 1121 r
+2011_09_26/2011_09_26_drive_0032_sync 124 r
+2011_09_26/2011_09_26_drive_0017_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 1486 l
+2011_09_26/2011_09_26_drive_0039_sync 258 r
+2011_09_26/2011_09_26_drive_0087_sync 262 l
+2011_09_26/2011_09_26_drive_0005_sync 120 l
+2011_09_30/2011_09_30_drive_0033_sync 232 r
+2011_09_26/2011_09_26_drive_0039_sync 67 l
+2011_09_26/2011_09_26_drive_0022_sync 156 r
+2011_09_30/2011_09_30_drive_0034_sync 512 r
+2011_10_03/2011_10_03_drive_0034_sync 1420 r
+2011_09_30/2011_09_30_drive_0020_sync 618 l
+2011_09_30/2011_09_30_drive_0033_sync 571 l
+2011_09_30/2011_09_30_drive_0033_sync 1366 r
+2011_10_03/2011_10_03_drive_0034_sync 3471 l
+2011_09_30/2011_09_30_drive_0028_sync 93 l
+2011_09_26/2011_09_26_drive_0039_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 1620 r
+2011_09_30/2011_09_30_drive_0028_sync 618 r
+2011_09_26/2011_09_26_drive_0095_sync 89 r
+2011_10_03/2011_10_03_drive_0042_sync 674 l
+2011_10_03/2011_10_03_drive_0042_sync 818 l
+2011_09_26/2011_09_26_drive_0032_sync 114 l
+2011_09_26/2011_09_26_drive_0070_sync 164 r
+2011_09_30/2011_09_30_drive_0034_sync 538 r
+2011_10_03/2011_10_03_drive_0034_sync 1154 l
+2011_10_03/2011_10_03_drive_0042_sync 920 l
+2011_09_30/2011_09_30_drive_0034_sync 444 r
+2011_10_03/2011_10_03_drive_0034_sync 2751 l
+2011_09_26/2011_09_26_drive_0104_sync 179 r
+2011_09_26/2011_09_26_drive_0051_sync 319 l
+2011_09_30/2011_09_30_drive_0033_sync 21 r
+2011_09_26/2011_09_26_drive_0061_sync 375 r
+2011_09_26/2011_09_26_drive_0087_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 78 l
+2011_10_03/2011_10_03_drive_0042_sync 717 l
+2011_09_26/2011_09_26_drive_0087_sync 570 l
+2011_09_26/2011_09_26_drive_0018_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 2569 l
+2011_09_26/2011_09_26_drive_0011_sync 38 l
+2011_09_26/2011_09_26_drive_0028_sync 379 r
+2011_09_26/2011_09_26_drive_0057_sync 99 l
+2011_09_30/2011_09_30_drive_0034_sync 1189 l
+2011_09_30/2011_09_30_drive_0028_sync 4830 l
+2011_09_26/2011_09_26_drive_0022_sync 332 l
+2011_09_30/2011_09_30_drive_0020_sync 273 r
+2011_10_03/2011_10_03_drive_0034_sync 1245 r
+2011_09_30/2011_09_30_drive_0034_sync 243 l
+2011_09_26/2011_09_26_drive_0095_sync 216 r
+2011_09_26/2011_09_26_drive_0087_sync 477 r
+2011_09_30/2011_09_30_drive_0033_sync 1219 r
+2011_09_30/2011_09_30_drive_0020_sync 1088 r
+2011_09_30/2011_09_30_drive_0028_sync 3285 r
+2011_10_03/2011_10_03_drive_0034_sync 3381 l
+2011_10_03/2011_10_03_drive_0034_sync 2228 l
+2011_09_30/2011_09_30_drive_0028_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 3048 l
+2011_09_30/2011_09_30_drive_0020_sync 313 r
+2011_09_30/2011_09_30_drive_0033_sync 298 r
+2011_09_26/2011_09_26_drive_0087_sync 450 r
+2011_09_30/2011_09_30_drive_0020_sync 540 l
+2011_10_03/2011_10_03_drive_0034_sync 3523 r
+2011_09_26/2011_09_26_drive_0061_sync 381 l
+2011_10_03/2011_10_03_drive_0034_sync 816 l
+2011_09_30/2011_09_30_drive_0033_sync 693 l
+2011_09_26/2011_09_26_drive_0022_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 1493 r
+2011_09_30/2011_09_30_drive_0028_sync 2074 l
+2011_10_03/2011_10_03_drive_0034_sync 1100 l
+2011_09_26/2011_09_26_drive_0087_sync 330 r
+2011_09_30/2011_09_30_drive_0028_sync 1482 r
+2011_09_30/2011_09_30_drive_0028_sync 4448 r
+2011_09_30/2011_09_30_drive_0028_sync 4250 l
+2011_09_30/2011_09_30_drive_0020_sync 809 r
+2011_09_30/2011_09_30_drive_0028_sync 1113 r
+2011_09_26/2011_09_26_drive_0061_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 2905 l
+2011_09_30/2011_09_30_drive_0028_sync 3212 r
+2011_10_03/2011_10_03_drive_0034_sync 4470 r
+2011_09_30/2011_09_30_drive_0028_sync 2734 l
+2011_09_30/2011_09_30_drive_0020_sync 988 r
+2011_10_03/2011_10_03_drive_0034_sync 4187 l
+2011_09_30/2011_09_30_drive_0028_sync 4791 r
+2011_09_30/2011_09_30_drive_0028_sync 3434 l
+2011_09_26/2011_09_26_drive_0057_sync 121 l
+2011_09_30/2011_09_30_drive_0020_sync 587 l
+2011_09_30/2011_09_30_drive_0028_sync 2967 r
+2011_09_30/2011_09_30_drive_0020_sync 64 r
+2011_09_26/2011_09_26_drive_0017_sync 78 r
+2011_09_26/2011_09_26_drive_0035_sync 59 r
+2011_09_30/2011_09_30_drive_0033_sync 884 r
+2011_09_30/2011_09_30_drive_0028_sync 1871 r
+2011_09_30/2011_09_30_drive_0020_sync 472 r
+2011_10_03/2011_10_03_drive_0034_sync 778 r
+2011_10_03/2011_10_03_drive_0034_sync 3219 r
+2011_09_26/2011_09_26_drive_0087_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 2160 r
+2011_09_26/2011_09_26_drive_0087_sync 684 r
+2011_10_03/2011_10_03_drive_0042_sync 493 r
+2011_09_29/2011_09_29_drive_0004_sync 45 r
+2011_09_26/2011_09_26_drive_0017_sync 37 r
+2011_09_26/2011_09_26_drive_0051_sync 179 l
+2011_09_30/2011_09_30_drive_0034_sync 471 r
+2011_09_29/2011_09_29_drive_0004_sync 229 l
+2011_09_26/2011_09_26_drive_0022_sync 304 l
+2011_09_26/2011_09_26_drive_0087_sync 299 l
+2011_09_26/2011_09_26_drive_0022_sync 655 l
+2011_10_03/2011_10_03_drive_0034_sync 3494 l
+2011_09_26/2011_09_26_drive_0070_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 2703 r
+2011_09_30/2011_09_30_drive_0033_sync 891 r
+2011_10_03/2011_10_03_drive_0034_sync 742 l
+2011_09_30/2011_09_30_drive_0034_sync 288 r
+2011_09_29/2011_09_29_drive_0026_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 310 r
+2011_10_03/2011_10_03_drive_0034_sync 3540 l
+2011_09_26/2011_09_26_drive_0087_sync 322 r
+2011_09_30/2011_09_30_drive_0028_sync 1787 l
+2011_09_26/2011_09_26_drive_0087_sync 297 l
+2011_10_03/2011_10_03_drive_0042_sync 712 r
+2011_09_30/2011_09_30_drive_0033_sync 884 l
+2011_10_03/2011_10_03_drive_0042_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 2268 r
+2011_10_03/2011_10_03_drive_0034_sync 1192 r
+2011_09_30/2011_09_30_drive_0028_sync 3833 r
+2011_09_26/2011_09_26_drive_0014_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 582 l
+2011_09_26/2011_09_26_drive_0011_sync 160 r
+2011_09_26/2011_09_26_drive_0039_sync 111 l
+2011_09_26/2011_09_26_drive_0022_sync 761 l
+2011_09_26/2011_09_26_drive_0039_sync 8 l
+2011_10_03/2011_10_03_drive_0042_sync 624 r
+2011_09_26/2011_09_26_drive_0017_sync 100 r
+2011_09_26/2011_09_26_drive_0070_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 3833 l
+2011_10_03/2011_10_03_drive_0034_sync 1367 l
+2011_09_26/2011_09_26_drive_0057_sync 124 r
+2011_09_26/2011_09_26_drive_0095_sync 190 r
+2011_09_30/2011_09_30_drive_0033_sync 780 r
+2011_09_26/2011_09_26_drive_0039_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 1514 l
+2011_10_03/2011_10_03_drive_0034_sync 1532 l
+2011_10_03/2011_10_03_drive_0034_sync 3099 l
+2011_09_30/2011_09_30_drive_0028_sync 943 r
+2011_09_30/2011_09_30_drive_0028_sync 4375 l
+2011_10_03/2011_10_03_drive_0034_sync 3337 r
+2011_09_30/2011_09_30_drive_0028_sync 947 l
+2011_10_03/2011_10_03_drive_0034_sync 3055 l
+2011_10_03/2011_10_03_drive_0034_sync 229 r
+2011_09_30/2011_09_30_drive_0028_sync 263 r
+2011_09_30/2011_09_30_drive_0033_sync 412 l
+2011_09_26/2011_09_26_drive_0070_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 4641 r
+2011_10_03/2011_10_03_drive_0034_sync 2652 r
+2011_09_26/2011_09_26_drive_0019_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 3000 l
+2011_10_03/2011_10_03_drive_0034_sync 4648 l
+2011_09_26/2011_09_26_drive_0087_sync 155 l
+2011_09_26/2011_09_26_drive_0011_sync 220 r
+2011_09_26/2011_09_26_drive_0022_sync 280 l
+2011_09_30/2011_09_30_drive_0028_sync 2667 l
+2011_09_26/2011_09_26_drive_0051_sync 370 r
+2011_09_30/2011_09_30_drive_0028_sync 986 r
+2011_09_26/2011_09_26_drive_0061_sync 604 r
+2011_10_03/2011_10_03_drive_0034_sync 1814 l
+2011_09_30/2011_09_30_drive_0033_sync 1437 l
+2011_10_03/2011_10_03_drive_0042_sync 1058 r
+2011_09_30/2011_09_30_drive_0028_sync 3749 l
+2011_09_30/2011_09_30_drive_0034_sync 550 l
+2011_09_26/2011_09_26_drive_0057_sync 342 l
+2011_10_03/2011_10_03_drive_0034_sync 590 l
+2011_09_30/2011_09_30_drive_0028_sync 1319 l
+2011_10_03/2011_10_03_drive_0034_sync 1493 l
+2011_09_30/2011_09_30_drive_0020_sync 676 l
+2011_09_30/2011_09_30_drive_0033_sync 150 l
+2011_09_30/2011_09_30_drive_0034_sync 415 l
+2011_10_03/2011_10_03_drive_0034_sync 725 l
+2011_09_30/2011_09_30_drive_0033_sync 954 r
+2011_09_26/2011_09_26_drive_0039_sync 302 r
+2011_09_26/2011_09_26_drive_0087_sync 571 r
+2011_09_26/2011_09_26_drive_0019_sync 477 r
+2011_09_26/2011_09_26_drive_0051_sync 288 r
+2011_09_30/2011_09_30_drive_0034_sync 920 r
+2011_09_30/2011_09_30_drive_0028_sync 2950 l
+2011_10_03/2011_10_03_drive_0034_sync 287 l
+2011_10_03/2011_10_03_drive_0034_sync 2348 r
+2011_09_30/2011_09_30_drive_0020_sync 756 l
+2011_10_03/2011_10_03_drive_0042_sync 889 l
+2011_09_30/2011_09_30_drive_0020_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 4613 r
+2011_10_03/2011_10_03_drive_0034_sync 2500 l
+2011_09_30/2011_09_30_drive_0028_sync 3421 r
+2011_09_26/2011_09_26_drive_0022_sync 571 l
+2011_09_30/2011_09_30_drive_0033_sync 652 r
+2011_10_03/2011_10_03_drive_0042_sync 961 r
+2011_10_03/2011_10_03_drive_0042_sync 1041 l
+2011_09_30/2011_09_30_drive_0033_sync 165 l
+2011_09_26/2011_09_26_drive_0051_sync 316 l
+2011_09_26/2011_09_26_drive_0022_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 3871 l
+2011_09_30/2011_09_30_drive_0028_sync 231 r
+2011_09_30/2011_09_30_drive_0020_sync 512 r
+2011_09_26/2011_09_26_drive_0039_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 4225 r
+2011_09_30/2011_09_30_drive_0020_sync 476 r
+2011_09_28/2011_09_28_drive_0001_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 4729 r
+2011_10_03/2011_10_03_drive_0042_sync 257 r
+2011_09_26/2011_09_26_drive_0104_sync 296 l
+2011_10_03/2011_10_03_drive_0034_sync 3018 l
+2011_09_30/2011_09_30_drive_0028_sync 4775 r
+2011_09_30/2011_09_30_drive_0020_sync 265 r
+2011_09_30/2011_09_30_drive_0020_sync 63 l
+2011_09_26/2011_09_26_drive_0051_sync 224 r
+2011_10_03/2011_10_03_drive_0034_sync 1604 r
+2011_09_26/2011_09_26_drive_0014_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 3278 l
+2011_10_03/2011_10_03_drive_0034_sync 1368 l
+2011_09_26/2011_09_26_drive_0001_sync 31 l
+2011_09_30/2011_09_30_drive_0033_sync 920 r
+2011_09_26/2011_09_26_drive_0015_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 1287 l
+2011_09_26/2011_09_26_drive_0022_sync 764 l
+2011_09_26/2011_09_26_drive_0019_sync 274 l
+2011_09_26/2011_09_26_drive_0019_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 402 l
+2011_09_26/2011_09_26_drive_0019_sync 19 r
+2011_09_26/2011_09_26_drive_0057_sync 220 l
+2011_09_26/2011_09_26_drive_0035_sync 41 l
+2011_09_26/2011_09_26_drive_0039_sync 360 r
+2011_09_30/2011_09_30_drive_0028_sync 3618 r
+2011_09_26/2011_09_26_drive_0061_sync 321 r
+2011_10_03/2011_10_03_drive_0034_sync 3268 r
+2011_09_26/2011_09_26_drive_0039_sync 99 l
+2011_09_30/2011_09_30_drive_0033_sync 623 l
+2011_09_26/2011_09_26_drive_0022_sync 660 l
+2011_09_30/2011_09_30_drive_0028_sync 4063 l
+2011_10_03/2011_10_03_drive_0034_sync 3339 r
+2011_09_26/2011_09_26_drive_0032_sync 237 r
+2011_09_26/2011_09_26_drive_0061_sync 659 l
+2011_09_30/2011_09_30_drive_0028_sync 867 r
+2011_09_30/2011_09_30_drive_0028_sync 1861 l
+2011_10_03/2011_10_03_drive_0034_sync 4428 r
+2011_09_26/2011_09_26_drive_0022_sync 723 r
+2011_09_30/2011_09_30_drive_0028_sync 5131 l
+2011_09_26/2011_09_26_drive_0091_sync 140 l
+2011_09_30/2011_09_30_drive_0028_sync 159 r
+2011_09_26/2011_09_26_drive_0061_sync 236 l
+2011_09_26/2011_09_26_drive_0061_sync 290 r
+2011_09_30/2011_09_30_drive_0028_sync 987 r
+2011_09_26/2011_09_26_drive_0014_sync 170 l
+2011_09_30/2011_09_30_drive_0033_sync 787 l
+2011_09_30/2011_09_30_drive_0033_sync 1051 r
+2011_09_26/2011_09_26_drive_0113_sync 68 l
+2011_09_30/2011_09_30_drive_0034_sync 71 r
+2011_09_26/2011_09_26_drive_0018_sync 101 r
+2011_09_26/2011_09_26_drive_0095_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 1948 l
+2011_10_03/2011_10_03_drive_0034_sync 809 r
+2011_09_26/2011_09_26_drive_0079_sync 86 l
+2011_09_30/2011_09_30_drive_0033_sync 710 r
+2011_09_30/2011_09_30_drive_0028_sync 3699 l
+2011_09_30/2011_09_30_drive_0028_sync 988 l
+2011_09_30/2011_09_30_drive_0028_sync 2972 l
+2011_10_03/2011_10_03_drive_0034_sync 1509 l
+2011_10_03/2011_10_03_drive_0034_sync 3730 r
+2011_09_26/2011_09_26_drive_0019_sync 133 r
+2011_10_03/2011_10_03_drive_0042_sync 764 l
+2011_10_03/2011_10_03_drive_0034_sync 2287 r
+2011_09_30/2011_09_30_drive_0033_sync 268 r
+2011_09_26/2011_09_26_drive_0017_sync 85 l
+2011_09_26/2011_09_26_drive_0039_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 2491 l
+2011_09_30/2011_09_30_drive_0034_sync 916 l
+2011_09_26/2011_09_26_drive_0070_sync 58 l
+2011_09_26/2011_09_26_drive_0104_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 3671 l
+2011_09_26/2011_09_26_drive_0014_sync 253 r
+2011_09_29/2011_09_29_drive_0004_sync 26 r
+2011_09_30/2011_09_30_drive_0034_sync 719 l
+2011_09_30/2011_09_30_drive_0028_sync 1746 r
+2011_09_26/2011_09_26_drive_0022_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 796 r
+2011_10_03/2011_10_03_drive_0034_sync 1551 r
+2011_09_26/2011_09_26_drive_0057_sync 113 r
+2011_09_26/2011_09_26_drive_0018_sync 134 r
+2011_09_26/2011_09_26_drive_0019_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 1180 r
+2011_09_30/2011_09_30_drive_0033_sync 999 l
+2011_09_30/2011_09_30_drive_0028_sync 4617 r
+2011_09_26/2011_09_26_drive_0091_sync 22 l
+2011_09_26/2011_09_26_drive_0039_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 1145 l
+2011_10_03/2011_10_03_drive_0034_sync 1073 l
+2011_09_29/2011_09_29_drive_0004_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 50 l
+2011_09_28/2011_09_28_drive_0001_sync 83 r
+2011_09_30/2011_09_30_drive_0033_sync 1018 l
+2011_09_30/2011_09_30_drive_0034_sync 109 r
+2011_09_26/2011_09_26_drive_0091_sync 65 r
+2011_10_03/2011_10_03_drive_0042_sync 770 l
+2011_09_30/2011_09_30_drive_0020_sync 124 l
+2011_09_26/2011_09_26_drive_0104_sync 146 l
+2011_10_03/2011_10_03_drive_0034_sync 1521 l
+2011_10_03/2011_10_03_drive_0034_sync 1630 l
+2011_10_03/2011_10_03_drive_0042_sync 365 r
+2011_10_03/2011_10_03_drive_0034_sync 4658 r
+2011_09_26/2011_09_26_drive_0061_sync 198 r
+2011_09_30/2011_09_30_drive_0033_sync 1220 r
+2011_09_26/2011_09_26_drive_0018_sync 224 l
+2011_10_03/2011_10_03_drive_0034_sync 1553 r
+2011_09_30/2011_09_30_drive_0033_sync 189 l
+2011_09_26/2011_09_26_drive_0087_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 1237 r
+2011_09_26/2011_09_26_drive_0070_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 4968 l
+2011_10_03/2011_10_03_drive_0034_sync 5 l
+2011_09_26/2011_09_26_drive_0057_sync 218 l
+2011_09_26/2011_09_26_drive_0095_sync 66 l
+2011_09_26/2011_09_26_drive_0087_sync 246 l
+2011_09_26/2011_09_26_drive_0061_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 3912 r
+2011_09_26/2011_09_26_drive_0039_sync 221 r
+2011_09_30/2011_09_30_drive_0028_sync 4351 r
+2011_09_30/2011_09_30_drive_0028_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 4247 r
+2011_09_30/2011_09_30_drive_0028_sync 2542 l
+2011_09_30/2011_09_30_drive_0033_sync 1189 r
+2011_09_26/2011_09_26_drive_0032_sync 2 r
+2011_09_30/2011_09_30_drive_0020_sync 515 r
+2011_09_30/2011_09_30_drive_0028_sync 1034 l
+2011_09_26/2011_09_26_drive_0091_sync 28 l
+2011_09_26/2011_09_26_drive_0011_sync 152 l
+2011_09_30/2011_09_30_drive_0020_sync 954 l
+2011_10_03/2011_10_03_drive_0034_sync 842 l
+2011_09_30/2011_09_30_drive_0034_sync 513 r
+2011_09_30/2011_09_30_drive_0028_sync 2711 r
+2011_09_30/2011_09_30_drive_0028_sync 351 l
+2011_09_30/2011_09_30_drive_0034_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 1253 r
+2011_09_26/2011_09_26_drive_0011_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 400 r
+2011_10_03/2011_10_03_drive_0034_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 3917 l
+2011_09_30/2011_09_30_drive_0020_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 4765 r
+2011_09_26/2011_09_26_drive_0039_sync 234 l
+2011_09_30/2011_09_30_drive_0028_sync 3894 r
+2011_10_03/2011_10_03_drive_0034_sync 4035 r
+2011_10_03/2011_10_03_drive_0034_sync 3138 l
+2011_09_26/2011_09_26_drive_0001_sync 67 l
+2011_09_26/2011_09_26_drive_0091_sync 280 r
+2011_09_30/2011_09_30_drive_0028_sync 3069 l
+2011_10_03/2011_10_03_drive_0042_sync 1156 r
+2011_10_03/2011_10_03_drive_0034_sync 1452 l
+2011_09_26/2011_09_26_drive_0039_sync 361 l
+2011_09_30/2011_09_30_drive_0028_sync 963 l
+2011_10_03/2011_10_03_drive_0034_sync 964 r
+2011_09_30/2011_09_30_drive_0020_sync 1012 l
+2011_09_26/2011_09_26_drive_0070_sync 196 l
+2011_09_26/2011_09_26_drive_0091_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 3270 r
+2011_09_26/2011_09_26_drive_0017_sync 11 r
+2011_09_30/2011_09_30_drive_0033_sync 634 r
+2011_09_30/2011_09_30_drive_0028_sync 2629 l
+2011_09_30/2011_09_30_drive_0034_sync 1209 r
+2011_10_03/2011_10_03_drive_0034_sync 4061 l
+2011_09_30/2011_09_30_drive_0028_sync 2703 l
+2011_09_26/2011_09_26_drive_0011_sync 73 r
+2011_09_30/2011_09_30_drive_0020_sync 365 l
+2011_09_30/2011_09_30_drive_0034_sync 327 l
+2011_09_26/2011_09_26_drive_0051_sync 426 r
+2011_09_26/2011_09_26_drive_0061_sync 100 r
+2011_09_26/2011_09_26_drive_0061_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 3721 l
+2011_09_30/2011_09_30_drive_0028_sync 4026 l
+2011_09_30/2011_09_30_drive_0020_sync 31 r
+2011_09_26/2011_09_26_drive_0070_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 132 r
+2011_10_03/2011_10_03_drive_0034_sync 2549 l
+2011_09_30/2011_09_30_drive_0028_sync 570 l
+2011_09_26/2011_09_26_drive_0022_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 4203 r
+2011_09_26/2011_09_26_drive_0019_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 1347 r
+2011_09_26/2011_09_26_drive_0022_sync 604 r
+2011_09_30/2011_09_30_drive_0028_sync 4922 r
+2011_10_03/2011_10_03_drive_0034_sync 4253 l
+2011_09_30/2011_09_30_drive_0028_sync 2330 r
+2011_10_03/2011_10_03_drive_0034_sync 2719 l
+2011_09_26/2011_09_26_drive_0091_sync 20 l
+2011_09_26/2011_09_26_drive_0032_sync 173 r
+2011_09_26/2011_09_26_drive_0057_sync 212 r
+2011_09_26/2011_09_26_drive_0087_sync 189 r
+2011_09_26/2011_09_26_drive_0032_sync 138 r
+2011_09_30/2011_09_30_drive_0020_sync 909 r
+2011_09_26/2011_09_26_drive_0087_sync 522 l
+2011_09_26/2011_09_26_drive_0104_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 1727 l
+2011_09_26/2011_09_26_drive_0032_sync 364 l
+2011_09_26/2011_09_26_drive_0087_sync 529 l
+2011_09_30/2011_09_30_drive_0033_sync 668 l
+2011_10_03/2011_10_03_drive_0034_sync 1767 r
+2011_09_26/2011_09_26_drive_0005_sync 46 l
+2011_09_26/2011_09_26_drive_0014_sync 306 r
+2011_10_03/2011_10_03_drive_0042_sync 200 r
+2011_09_30/2011_09_30_drive_0033_sync 1512 r
+2011_10_03/2011_10_03_drive_0034_sync 2609 r
+2011_09_26/2011_09_26_drive_0070_sync 373 r
+2011_09_26/2011_09_26_drive_0005_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 3325 l
+2011_09_26/2011_09_26_drive_0051_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 1619 r
+2011_09_26/2011_09_26_drive_0091_sync 121 r
+2011_10_03/2011_10_03_drive_0042_sync 984 l
+2011_09_30/2011_09_30_drive_0028_sync 4047 l
+2011_09_30/2011_09_30_drive_0028_sync 974 l
+2011_09_30/2011_09_30_drive_0028_sync 1117 l
+2011_09_30/2011_09_30_drive_0033_sync 1067 r
+2011_10_03/2011_10_03_drive_0034_sync 397 l
+2011_09_26/2011_09_26_drive_0032_sync 226 r
+2011_09_30/2011_09_30_drive_0028_sync 2937 r
+2011_09_30/2011_09_30_drive_0028_sync 1123 r
+2011_10_03/2011_10_03_drive_0034_sync 2419 r
+2011_09_26/2011_09_26_drive_0061_sync 598 r
+2011_09_26/2011_09_26_drive_0028_sync 238 l
+2011_10_03/2011_10_03_drive_0034_sync 3541 r
+2011_09_30/2011_09_30_drive_0020_sync 80 l
+2011_09_26/2011_09_26_drive_0051_sync 104 l
+2011_09_26/2011_09_26_drive_0051_sync 291 r
+2011_09_30/2011_09_30_drive_0033_sync 1271 r
+2011_09_30/2011_09_30_drive_0028_sync 4082 r
+2011_09_26/2011_09_26_drive_0015_sync 1 r
+2011_09_30/2011_09_30_drive_0033_sync 1309 r
+2011_09_26/2011_09_26_drive_0104_sync 244 r
+2011_09_26/2011_09_26_drive_0014_sync 305 l
+2011_09_30/2011_09_30_drive_0028_sync 2478 l
+2011_09_28/2011_09_28_drive_0001_sync 99 r
+2011_09_26/2011_09_26_drive_0104_sync 249 l
+2011_09_30/2011_09_30_drive_0033_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 837 l
+2011_10_03/2011_10_03_drive_0034_sync 887 r
+2011_09_26/2011_09_26_drive_0070_sync 201 r
+2011_09_30/2011_09_30_drive_0034_sync 962 l
+2011_10_03/2011_10_03_drive_0034_sync 1726 l
+2011_09_30/2011_09_30_drive_0033_sync 1293 l
+2011_09_26/2011_09_26_drive_0017_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 848 r
+2011_09_30/2011_09_30_drive_0020_sync 189 r
+2011_09_26/2011_09_26_drive_0019_sync 107 r
+2011_09_30/2011_09_30_drive_0028_sync 4551 l
+2011_09_26/2011_09_26_drive_0014_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 1557 r
+2011_09_26/2011_09_26_drive_0113_sync 16 l
+2011_09_30/2011_09_30_drive_0034_sync 227 l
+2011_09_30/2011_09_30_drive_0020_sync 401 r
+2011_09_30/2011_09_30_drive_0033_sync 413 r
+2011_10_03/2011_10_03_drive_0034_sync 1515 l
+2011_10_03/2011_10_03_drive_0034_sync 915 r
+2011_09_26/2011_09_26_drive_0001_sync 26 l
+2011_09_26/2011_09_26_drive_0019_sync 322 l
+2011_10_03/2011_10_03_drive_0034_sync 527 l
+2011_10_03/2011_10_03_drive_0042_sync 533 l
+2011_09_30/2011_09_30_drive_0028_sync 1997 l
+2011_09_26/2011_09_26_drive_0011_sync 231 r
+2011_10_03/2011_10_03_drive_0034_sync 967 l
+2011_10_03/2011_10_03_drive_0034_sync 155 l
+2011_09_30/2011_09_30_drive_0028_sync 2564 r
+2011_10_03/2011_10_03_drive_0034_sync 3594 l
+2011_09_30/2011_09_30_drive_0033_sync 1029 r
+2011_10_03/2011_10_03_drive_0034_sync 3954 r
+2011_10_03/2011_10_03_drive_0034_sync 1855 l
+2011_09_30/2011_09_30_drive_0028_sync 1062 r
+2011_10_03/2011_10_03_drive_0034_sync 4531 r
+2011_10_03/2011_10_03_drive_0034_sync 508 r
+2011_09_26/2011_09_26_drive_0061_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 2839 r
+2011_09_30/2011_09_30_drive_0020_sync 385 l
+2011_10_03/2011_10_03_drive_0042_sync 1015 l
+2011_09_30/2011_09_30_drive_0028_sync 3722 l
+2011_10_03/2011_10_03_drive_0034_sync 1843 l
+2011_09_29/2011_09_29_drive_0004_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 4246 l
+2011_09_26/2011_09_26_drive_0001_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 1889 r
+2011_09_30/2011_09_30_drive_0028_sync 4033 l
+2011_10_03/2011_10_03_drive_0034_sync 1965 r
+2011_09_26/2011_09_26_drive_0015_sync 112 l
+2011_09_30/2011_09_30_drive_0034_sync 1033 r
+2011_09_26/2011_09_26_drive_0011_sync 28 r
+2011_09_26/2011_09_26_drive_0028_sync 7 r
+2011_09_30/2011_09_30_drive_0033_sync 1372 r
+2011_09_30/2011_09_30_drive_0034_sync 915 r
+2011_10_03/2011_10_03_drive_0034_sync 1439 l
+2011_09_30/2011_09_30_drive_0028_sync 1456 r
+2011_09_30/2011_09_30_drive_0020_sync 648 r
+2011_09_30/2011_09_30_drive_0033_sync 1525 l
+2011_09_30/2011_09_30_drive_0033_sync 1349 r
+2011_09_30/2011_09_30_drive_0034_sync 271 r
+2011_09_30/2011_09_30_drive_0028_sync 4631 r
+2011_10_03/2011_10_03_drive_0034_sync 2187 r
+2011_09_30/2011_09_30_drive_0020_sync 617 r
+2011_09_30/2011_09_30_drive_0028_sync 4072 r
+2011_09_30/2011_09_30_drive_0028_sync 3208 l
+2011_09_26/2011_09_26_drive_0015_sync 221 r
+2011_09_30/2011_09_30_drive_0033_sync 271 l
+2011_09_26/2011_09_26_drive_0022_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 2385 l
+2011_09_26/2011_09_26_drive_0028_sync 123 l
+2011_10_03/2011_10_03_drive_0042_sync 1047 l
+2011_10_03/2011_10_03_drive_0034_sync 4490 l
+2011_09_30/2011_09_30_drive_0033_sync 122 r
+2011_09_26/2011_09_26_drive_0015_sync 144 r
+2011_09_26/2011_09_26_drive_0061_sync 239 r
+2011_09_26/2011_09_26_drive_0032_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 1727 l
+2011_10_03/2011_10_03_drive_0034_sync 3418 r
+2011_10_03/2011_10_03_drive_0034_sync 3361 l
+2011_09_30/2011_09_30_drive_0028_sync 4777 r
+2011_09_26/2011_09_26_drive_0091_sync 174 r
+2011_10_03/2011_10_03_drive_0042_sync 1026 r
+2011_09_30/2011_09_30_drive_0028_sync 3387 l
+2011_09_26/2011_09_26_drive_0061_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 2291 l
+2011_09_30/2011_09_30_drive_0028_sync 1710 l
+2011_09_26/2011_09_26_drive_0015_sync 139 l
+2011_09_26/2011_09_26_drive_0018_sync 128 r
+2011_09_26/2011_09_26_drive_0022_sync 330 r
+2011_09_26/2011_09_26_drive_0005_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 476 l
+2011_10_03/2011_10_03_drive_0034_sync 2214 l
+2011_09_30/2011_09_30_drive_0028_sync 4843 l
+2011_09_30/2011_09_30_drive_0028_sync 2703 r
+2011_09_30/2011_09_30_drive_0033_sync 965 r
+2011_09_26/2011_09_26_drive_0015_sync 166 r
+2011_09_30/2011_09_30_drive_0034_sync 1078 r
+2011_09_29/2011_09_29_drive_0026_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 3872 r
+2011_09_30/2011_09_30_drive_0020_sync 637 r
+2011_09_26/2011_09_26_drive_0005_sync 132 l
+2011_09_26/2011_09_26_drive_0060_sync 22 r
+2011_10_03/2011_10_03_drive_0042_sync 144 r
+2011_09_26/2011_09_26_drive_0079_sync 73 r
+2011_09_26/2011_09_26_drive_0087_sync 642 r
+2011_09_26/2011_09_26_drive_0057_sync 150 r
+2011_10_03/2011_10_03_drive_0042_sync 367 l
+2011_09_30/2011_09_30_drive_0033_sync 948 r
+2011_09_29/2011_09_29_drive_0004_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 2320 r
+2011_09_30/2011_09_30_drive_0034_sync 1140 r
+2011_09_30/2011_09_30_drive_0028_sync 2526 l
+2011_09_30/2011_09_30_drive_0028_sync 262 r
+2011_09_30/2011_09_30_drive_0020_sync 592 r
+2011_09_30/2011_09_30_drive_0028_sync 1421 r
+2011_09_30/2011_09_30_drive_0028_sync 1670 r
+2011_09_26/2011_09_26_drive_0032_sync 49 l
+2011_09_30/2011_09_30_drive_0020_sync 773 l
+2011_10_03/2011_10_03_drive_0034_sync 3551 r
+2011_10_03/2011_10_03_drive_0034_sync 2993 r
+2011_09_30/2011_09_30_drive_0028_sync 5165 r
+2011_09_30/2011_09_30_drive_0028_sync 4211 l
+2011_09_26/2011_09_26_drive_0070_sync 224 l
+2011_09_26/2011_09_26_drive_0018_sync 120 r
+2011_09_30/2011_09_30_drive_0020_sync 722 l
+2011_09_26/2011_09_26_drive_0091_sync 329 r
+2011_10_03/2011_10_03_drive_0034_sync 1501 l
+2011_10_03/2011_10_03_drive_0034_sync 2476 l
+2011_09_30/2011_09_30_drive_0028_sync 4187 r
+2011_09_30/2011_09_30_drive_0034_sync 386 r
+2011_09_30/2011_09_30_drive_0028_sync 2878 l
+2011_09_30/2011_09_30_drive_0033_sync 1469 r
+2011_10_03/2011_10_03_drive_0034_sync 3573 r
+2011_09_26/2011_09_26_drive_0061_sync 679 r
+2011_09_29/2011_09_29_drive_0004_sync 286 l
+2011_09_30/2011_09_30_drive_0020_sync 478 r
+2011_09_30/2011_09_30_drive_0028_sync 3987 r
+2011_09_28/2011_09_28_drive_0001_sync 32 l
+2011_10_03/2011_10_03_drive_0042_sync 213 l
+2011_09_30/2011_09_30_drive_0033_sync 1098 r
+2011_10_03/2011_10_03_drive_0034_sync 3292 l
+2011_09_30/2011_09_30_drive_0033_sync 586 l
+2011_09_26/2011_09_26_drive_0018_sync 144 r
+2011_09_26/2011_09_26_drive_0095_sync 230 r
+2011_09_30/2011_09_30_drive_0020_sync 263 r
+2011_09_30/2011_09_30_drive_0034_sync 201 l
+2011_10_03/2011_10_03_drive_0034_sync 4568 r
+2011_09_30/2011_09_30_drive_0020_sync 734 l
+2011_09_26/2011_09_26_drive_0104_sync 196 r
+2011_09_26/2011_09_26_drive_0057_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 534 l
+2011_09_26/2011_09_26_drive_0011_sync 187 r
+2011_10_03/2011_10_03_drive_0034_sync 3925 l
+2011_09_26/2011_09_26_drive_0057_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 2265 r
+2011_10_03/2011_10_03_drive_0034_sync 1200 r
+2011_09_30/2011_09_30_drive_0034_sync 1038 l
+2011_09_26/2011_09_26_drive_0051_sync 341 r
+2011_09_26/2011_09_26_drive_0061_sync 471 r
+2011_10_03/2011_10_03_drive_0034_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 4511 l
+2011_10_03/2011_10_03_drive_0034_sync 2392 l
+2011_09_30/2011_09_30_drive_0028_sync 3415 r
+2011_09_26/2011_09_26_drive_0028_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 1241 l
+2011_09_30/2011_09_30_drive_0028_sync 955 r
+2011_10_03/2011_10_03_drive_0034_sync 161 r
+2011_10_03/2011_10_03_drive_0034_sync 2011 r
+2011_09_26/2011_09_26_drive_0005_sync 0 r
+2011_09_29/2011_09_29_drive_0004_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4754 l
+2011_09_30/2011_09_30_drive_0028_sync 3516 l
+2011_10_03/2011_10_03_drive_0034_sync 2784 l
+2011_09_30/2011_09_30_drive_0028_sync 2380 r
+2011_09_30/2011_09_30_drive_0028_sync 2140 l
+2011_09_30/2011_09_30_drive_0028_sync 649 l
+2011_09_30/2011_09_30_drive_0034_sync 337 r
+2011_10_03/2011_10_03_drive_0034_sync 1882 l
+2011_09_30/2011_09_30_drive_0034_sync 772 l
+2011_09_30/2011_09_30_drive_0033_sync 748 r
+2011_09_30/2011_09_30_drive_0028_sync 2768 r
+2011_09_26/2011_09_26_drive_0001_sync 105 l
+2011_09_30/2011_09_30_drive_0034_sync 210 r
+2011_09_30/2011_09_30_drive_0020_sync 907 l
+2011_10_03/2011_10_03_drive_0034_sync 2860 l
+2011_09_30/2011_09_30_drive_0034_sync 884 r
+2011_10_03/2011_10_03_drive_0034_sync 1816 l
+2011_09_30/2011_09_30_drive_0028_sync 431 r
+2011_09_26/2011_09_26_drive_0022_sync 274 r
+2011_09_30/2011_09_30_drive_0033_sync 187 l
+2011_09_26/2011_09_26_drive_0087_sync 606 l
+2011_09_30/2011_09_30_drive_0028_sync 159 l
+2011_09_30/2011_09_30_drive_0020_sync 724 l
+2011_09_30/2011_09_30_drive_0028_sync 140 r
+2011_10_03/2011_10_03_drive_0034_sync 2083 l
+2011_09_30/2011_09_30_drive_0028_sync 4010 l
+2011_09_30/2011_09_30_drive_0028_sync 4924 r
+2011_09_30/2011_09_30_drive_0033_sync 1364 r
+2011_09_30/2011_09_30_drive_0034_sync 960 l
+2011_10_03/2011_10_03_drive_0034_sync 2504 r
+2011_09_28/2011_09_28_drive_0001_sync 56 l
+2011_10_03/2011_10_03_drive_0034_sync 1455 l
+2011_09_26/2011_09_26_drive_0087_sync 469 l
+2011_09_26/2011_09_26_drive_0087_sync 535 r
+2011_09_30/2011_09_30_drive_0033_sync 356 l
+2011_09_26/2011_09_26_drive_0018_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 5064 l
+2011_09_30/2011_09_30_drive_0020_sync 348 r
+2011_10_03/2011_10_03_drive_0034_sync 1715 l
+2011_09_30/2011_09_30_drive_0028_sync 4463 l
+2011_09_30/2011_09_30_drive_0034_sync 398 l
+2011_09_26/2011_09_26_drive_0051_sync 21 r
+2011_09_26/2011_09_26_drive_0032_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 2202 l
+2011_09_26/2011_09_26_drive_0014_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3260 r
+2011_09_30/2011_09_30_drive_0028_sync 2035 r
+2011_09_29/2011_09_29_drive_0004_sync 80 r
+2011_09_26/2011_09_26_drive_0014_sync 270 r
+2011_10_03/2011_10_03_drive_0034_sync 4324 l
+2011_10_03/2011_10_03_drive_0034_sync 1624 r
+2011_09_30/2011_09_30_drive_0020_sync 200 r
+2011_10_03/2011_10_03_drive_0042_sync 859 l
+2011_09_26/2011_09_26_drive_0061_sync 590 r
+2011_09_26/2011_09_26_drive_0091_sync 220 l
+2011_09_26/2011_09_26_drive_0095_sync 99 r
+2011_09_26/2011_09_26_drive_0011_sync 207 l
+2011_09_26/2011_09_26_drive_0028_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 1960 l
+2011_10_03/2011_10_03_drive_0034_sync 3072 l
+2011_10_03/2011_10_03_drive_0034_sync 2724 l
+2011_09_30/2011_09_30_drive_0033_sync 1186 l
+2011_09_30/2011_09_30_drive_0028_sync 131 l
+2011_09_26/2011_09_26_drive_0104_sync 143 l
+2011_09_26/2011_09_26_drive_0039_sync 300 r
+2011_09_29/2011_09_29_drive_0026_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 5067 l
+2011_09_26/2011_09_26_drive_0113_sync 58 r
+2011_09_29/2011_09_29_drive_0004_sync 24 l
+2011_09_30/2011_09_30_drive_0033_sync 674 r
+2011_09_26/2011_09_26_drive_0039_sync 176 r
+2011_09_26/2011_09_26_drive_0019_sync 176 r
+2011_09_26/2011_09_26_drive_0104_sync 12 r
+2011_09_26/2011_09_26_drive_0061_sync 358 r
+2011_09_26/2011_09_26_drive_0061_sync 178 l
+2011_10_03/2011_10_03_drive_0042_sync 241 l
+2011_10_03/2011_10_03_drive_0034_sync 3298 r
+2011_09_30/2011_09_30_drive_0028_sync 607 l
+2011_09_30/2011_09_30_drive_0020_sync 167 l
+2011_09_26/2011_09_26_drive_0022_sync 103 r
+2011_09_26/2011_09_26_drive_0014_sync 66 l
+2011_09_26/2011_09_26_drive_0061_sync 486 l
+2011_09_30/2011_09_30_drive_0034_sync 446 l
+2011_09_26/2011_09_26_drive_0022_sync 485 r
+2011_10_03/2011_10_03_drive_0042_sync 118 l
+2011_09_30/2011_09_30_drive_0034_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 1247 l
+2011_09_30/2011_09_30_drive_0028_sync 4169 l
+2011_09_30/2011_09_30_drive_0033_sync 331 r
+2011_09_26/2011_09_26_drive_0095_sync 12 l
+2011_09_26/2011_09_26_drive_0087_sync 157 r
+2011_09_26/2011_09_26_drive_0061_sync 357 l
+2011_10_03/2011_10_03_drive_0034_sync 3587 r
+2011_10_03/2011_10_03_drive_0034_sync 2945 l
+2011_10_03/2011_10_03_drive_0034_sync 2222 r
+2011_09_26/2011_09_26_drive_0019_sync 31 r
+2011_10_03/2011_10_03_drive_0042_sync 929 r
+2011_09_30/2011_09_30_drive_0028_sync 1367 r
+2011_09_30/2011_09_30_drive_0028_sync 4648 r
+2011_09_26/2011_09_26_drive_0022_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 3703 r
+2011_10_03/2011_10_03_drive_0034_sync 588 r
+2011_09_26/2011_09_26_drive_0022_sync 219 r
+2011_09_30/2011_09_30_drive_0028_sync 975 l
+2011_09_30/2011_09_30_drive_0028_sync 316 r
+2011_10_03/2011_10_03_drive_0034_sync 1215 r
+2011_09_26/2011_09_26_drive_0005_sync 56 r
+2011_09_26/2011_09_26_drive_0061_sync 234 l
+2011_09_30/2011_09_30_drive_0028_sync 630 r
+2011_10_03/2011_10_03_drive_0034_sync 3022 l
+2011_09_30/2011_09_30_drive_0028_sync 462 r
+2011_10_03/2011_10_03_drive_0034_sync 776 r
+2011_10_03/2011_10_03_drive_0034_sync 1561 r
+2011_10_03/2011_10_03_drive_0034_sync 948 r
+2011_09_30/2011_09_30_drive_0033_sync 1559 l
+2011_10_03/2011_10_03_drive_0042_sync 385 l
+2011_09_26/2011_09_26_drive_0087_sync 406 l
+2011_09_26/2011_09_26_drive_0039_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 4647 l
+2011_09_30/2011_09_30_drive_0028_sync 3996 r
+2011_09_29/2011_09_29_drive_0004_sync 322 l
+2011_10_03/2011_10_03_drive_0042_sync 764 r
+2011_10_03/2011_10_03_drive_0034_sync 1937 l
+2011_09_30/2011_09_30_drive_0033_sync 139 l
+2011_10_03/2011_10_03_drive_0034_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 2898 l
+2011_09_26/2011_09_26_drive_0061_sync 123 l
+2011_09_30/2011_09_30_drive_0033_sync 178 r
+2011_10_03/2011_10_03_drive_0034_sync 310 r
+2011_09_30/2011_09_30_drive_0034_sync 1142 l
+2011_09_26/2011_09_26_drive_0011_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 749 l
+2011_09_30/2011_09_30_drive_0028_sync 477 l
+2011_09_26/2011_09_26_drive_0070_sync 180 l
+2011_09_26/2011_09_26_drive_0019_sync 217 l
+2011_09_30/2011_09_30_drive_0020_sync 72 l
+2011_09_26/2011_09_26_drive_0005_sync 10 l
+2011_09_26/2011_09_26_drive_0014_sync 160 r
+2011_09_26/2011_09_26_drive_0022_sync 107 l
+2011_09_26/2011_09_26_drive_0028_sync 362 r
+2011_09_26/2011_09_26_drive_0095_sync 258 r
+2011_09_26/2011_09_26_drive_0070_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 1742 r
+2011_09_30/2011_09_30_drive_0028_sync 104 l
+2011_09_26/2011_09_26_drive_0032_sync 114 r
+2011_09_26/2011_09_26_drive_0051_sync 366 r
+2011_09_30/2011_09_30_drive_0034_sync 1073 r
+2011_09_26/2011_09_26_drive_0019_sync 129 r
+2011_09_26/2011_09_26_drive_0014_sync 265 l
+2011_09_26/2011_09_26_drive_0061_sync 335 l
+2011_09_30/2011_09_30_drive_0020_sync 987 l
+2011_09_26/2011_09_26_drive_0095_sync 157 l
+2011_09_26/2011_09_26_drive_0015_sync 172 r
+2011_09_30/2011_09_30_drive_0028_sync 165 r
+2011_09_30/2011_09_30_drive_0033_sync 101 r
+2011_09_30/2011_09_30_drive_0033_sync 1177 r
+2011_10_03/2011_10_03_drive_0034_sync 626 l
+2011_09_30/2011_09_30_drive_0028_sync 4351 l
+2011_10_03/2011_10_03_drive_0042_sync 130 r
+2011_10_03/2011_10_03_drive_0042_sync 1061 l
+2011_09_30/2011_09_30_drive_0028_sync 2244 r
+2011_10_03/2011_10_03_drive_0034_sync 845 l
+2011_10_03/2011_10_03_drive_0042_sync 647 r
+2011_09_26/2011_09_26_drive_0018_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 4963 l
+2011_09_26/2011_09_26_drive_0022_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 2104 r
+2011_10_03/2011_10_03_drive_0034_sync 2785 r
+2011_10_03/2011_10_03_drive_0034_sync 2678 l
+2011_09_26/2011_09_26_drive_0095_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 5173 l
+2011_09_30/2011_09_30_drive_0028_sync 3402 r
+2011_10_03/2011_10_03_drive_0034_sync 4176 r
+2011_10_03/2011_10_03_drive_0034_sync 4188 r
+2011_09_30/2011_09_30_drive_0028_sync 948 l
+2011_09_30/2011_09_30_drive_0034_sync 202 r
+2011_09_26/2011_09_26_drive_0087_sync 1 l
+2011_09_26/2011_09_26_drive_0104_sync 226 r
+2011_09_30/2011_09_30_drive_0020_sync 722 r
+2011_09_29/2011_09_29_drive_0026_sync 34 l
+2011_09_29/2011_09_29_drive_0026_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 2730 l
+2011_10_03/2011_10_03_drive_0034_sync 66 r
+2011_09_26/2011_09_26_drive_0061_sync 444 r
+2011_09_30/2011_09_30_drive_0028_sync 1970 l
+2011_10_03/2011_10_03_drive_0034_sync 4330 l
+2011_09_30/2011_09_30_drive_0028_sync 4508 r
+2011_09_26/2011_09_26_drive_0061_sync 416 l
+2011_10_03/2011_10_03_drive_0034_sync 2197 l
+2011_09_26/2011_09_26_drive_0022_sync 495 l
+2011_10_03/2011_10_03_drive_0034_sync 4558 r
+2011_10_03/2011_10_03_drive_0034_sync 1411 r
+2011_09_30/2011_09_30_drive_0028_sync 3566 r
+2011_09_30/2011_09_30_drive_0028_sync 1519 l
+2011_09_30/2011_09_30_drive_0028_sync 900 r
+2011_09_26/2011_09_26_drive_0005_sync 145 r
+2011_09_26/2011_09_26_drive_0087_sync 466 l
+2011_09_30/2011_09_30_drive_0020_sync 944 l
+2011_10_03/2011_10_03_drive_0042_sync 160 r
+2011_09_26/2011_09_26_drive_0087_sync 415 l
+2011_09_26/2011_09_26_drive_0087_sync 533 l
+2011_09_30/2011_09_30_drive_0033_sync 1034 l
+2011_10_03/2011_10_03_drive_0042_sync 864 r
+2011_09_29/2011_09_29_drive_0026_sync 37 r
+2011_09_30/2011_09_30_drive_0033_sync 1209 r
+2011_09_30/2011_09_30_drive_0028_sync 4345 l
+2011_10_03/2011_10_03_drive_0034_sync 1190 r
+2011_10_03/2011_10_03_drive_0034_sync 4434 l
+2011_09_26/2011_09_26_drive_0087_sync 306 l
+2011_09_30/2011_09_30_drive_0028_sync 1126 r
+2011_10_03/2011_10_03_drive_0034_sync 2231 l
+2011_09_30/2011_09_30_drive_0033_sync 750 r
+2011_09_30/2011_09_30_drive_0020_sync 242 l
+2011_09_30/2011_09_30_drive_0034_sync 797 l
+2011_09_26/2011_09_26_drive_0001_sync 87 r
+2011_09_26/2011_09_26_drive_0061_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 889 r
+2011_09_30/2011_09_30_drive_0034_sync 381 l
+2011_09_26/2011_09_26_drive_0051_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 2041 l
+2011_09_26/2011_09_26_drive_0057_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 1430 r
+2011_10_03/2011_10_03_drive_0034_sync 2225 l
+2011_09_30/2011_09_30_drive_0028_sync 4156 r
+2011_09_26/2011_09_26_drive_0019_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 3588 r
+2011_09_30/2011_09_30_drive_0033_sync 741 l
+2011_10_03/2011_10_03_drive_0034_sync 4434 r
+2011_09_26/2011_09_26_drive_0095_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 2911 r
+2011_10_03/2011_10_03_drive_0034_sync 917 l
+2011_09_30/2011_09_30_drive_0028_sync 2375 r
+2011_09_26/2011_09_26_drive_0032_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 2523 l
+2011_09_26/2011_09_26_drive_0039_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 1967 l
+2011_09_30/2011_09_30_drive_0034_sync 394 l
+2011_09_26/2011_09_26_drive_0032_sync 84 r
+2011_09_26/2011_09_26_drive_0005_sync 103 r
+2011_09_26/2011_09_26_drive_0028_sync 259 l
+2011_09_30/2011_09_30_drive_0028_sync 4355 r
+2011_09_30/2011_09_30_drive_0028_sync 4607 r
+2011_09_26/2011_09_26_drive_0015_sync 77 r
+2011_09_26/2011_09_26_drive_0015_sync 229 l
+2011_10_03/2011_10_03_drive_0042_sync 366 l
+2011_10_03/2011_10_03_drive_0034_sync 4542 r
+2011_09_26/2011_09_26_drive_0022_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 2584 l
+2011_10_03/2011_10_03_drive_0042_sync 245 r
+2011_09_26/2011_09_26_drive_0039_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1590 l
+2011_10_03/2011_10_03_drive_0034_sync 1892 r
+2011_10_03/2011_10_03_drive_0034_sync 359 l
+2011_09_30/2011_09_30_drive_0034_sync 180 l
+2011_10_03/2011_10_03_drive_0034_sync 4347 l
+2011_09_26/2011_09_26_drive_0087_sync 539 r
+2011_09_30/2011_09_30_drive_0033_sync 1317 r
+2011_09_30/2011_09_30_drive_0034_sync 962 r
+2011_09_26/2011_09_26_drive_0028_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 2554 r
+2011_10_03/2011_10_03_drive_0034_sync 1640 l
+2011_09_26/2011_09_26_drive_0014_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 4200 l
+2011_09_26/2011_09_26_drive_0061_sync 143 l
+2011_09_26/2011_09_26_drive_0018_sync 17 r
+2011_09_26/2011_09_26_drive_0028_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 887 l
+2011_09_30/2011_09_30_drive_0028_sync 3882 r
+2011_10_03/2011_10_03_drive_0034_sync 4624 r
+2011_09_26/2011_09_26_drive_0070_sync 245 l
+2011_09_30/2011_09_30_drive_0028_sync 3309 l
+2011_10_03/2011_10_03_drive_0034_sync 489 r
+2011_09_26/2011_09_26_drive_0087_sync 307 r
+2011_10_03/2011_10_03_drive_0042_sync 525 r
+2011_10_03/2011_10_03_drive_0034_sync 2684 r
+2011_10_03/2011_10_03_drive_0034_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 2986 l
+2011_10_03/2011_10_03_drive_0034_sync 1723 r
+2011_09_30/2011_09_30_drive_0028_sync 4894 l
+2011_09_26/2011_09_26_drive_0015_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 2943 l
+2011_09_30/2011_09_30_drive_0028_sync 388 l
+2011_09_30/2011_09_30_drive_0033_sync 911 r
+2011_09_26/2011_09_26_drive_0070_sync 49 l
+2011_09_30/2011_09_30_drive_0034_sync 509 l
+2011_09_30/2011_09_30_drive_0028_sync 2591 r
+2011_10_03/2011_10_03_drive_0034_sync 554 l
+2011_09_26/2011_09_26_drive_0061_sync 304 r
+2011_09_26/2011_09_26_drive_0091_sync 179 l
+2011_09_29/2011_09_29_drive_0004_sync 162 l
+2011_09_26/2011_09_26_drive_0022_sync 579 l
+2011_09_26/2011_09_26_drive_0057_sync 357 l
+2011_09_30/2011_09_30_drive_0033_sync 1322 r
+2011_09_26/2011_09_26_drive_0028_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 2940 l
+2011_09_26/2011_09_26_drive_0060_sync 15 l
+2011_09_26/2011_09_26_drive_0095_sync 167 r
+2011_09_30/2011_09_30_drive_0020_sync 691 r
+2011_10_03/2011_10_03_drive_0034_sync 4489 r
+2011_09_30/2011_09_30_drive_0028_sync 341 l
+2011_09_26/2011_09_26_drive_0091_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 4442 l
+2011_09_26/2011_09_26_drive_0051_sync 312 r
+2011_09_26/2011_09_26_drive_0087_sync 149 l
+2011_09_26/2011_09_26_drive_0001_sync 25 r
+2011_09_26/2011_09_26_drive_0104_sync 36 r
+2011_09_30/2011_09_30_drive_0020_sync 341 r
+2011_09_30/2011_09_30_drive_0020_sync 814 l
+2011_09_30/2011_09_30_drive_0020_sync 329 r
+2011_09_30/2011_09_30_drive_0028_sync 4568 r
+2011_09_26/2011_09_26_drive_0015_sync 92 r
+2011_09_30/2011_09_30_drive_0028_sync 3458 l
+2011_09_26/2011_09_26_drive_0061_sync 644 l
+2011_09_30/2011_09_30_drive_0033_sync 1277 l
+2011_09_26/2011_09_26_drive_0087_sync 244 l
+2011_09_26/2011_09_26_drive_0011_sync 78 r
+2011_09_30/2011_09_30_drive_0020_sync 788 l
+2011_09_30/2011_09_30_drive_0028_sync 3888 l
+2011_10_03/2011_10_03_drive_0034_sync 56 l
+2011_09_26/2011_09_26_drive_0061_sync 627 r
+2011_09_26/2011_09_26_drive_0028_sync 42 r
+2011_09_26/2011_09_26_drive_0019_sync 399 r
+2011_10_03/2011_10_03_drive_0042_sync 379 r
+2011_10_03/2011_10_03_drive_0034_sync 2156 l
+2011_09_30/2011_09_30_drive_0028_sync 2211 l
+2011_09_30/2011_09_30_drive_0034_sync 1108 r
+2011_09_30/2011_09_30_drive_0033_sync 755 r
+2011_10_03/2011_10_03_drive_0034_sync 1012 r
+2011_09_26/2011_09_26_drive_0018_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 3154 l
+2011_09_29/2011_09_29_drive_0026_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 2818 r
+2011_09_30/2011_09_30_drive_0034_sync 432 l
+2011_09_26/2011_09_26_drive_0018_sync 160 r
+2011_09_30/2011_09_30_drive_0028_sync 4013 l
+2011_09_30/2011_09_30_drive_0020_sync 209 l
+2011_09_26/2011_09_26_drive_0079_sync 22 l
+2011_09_26/2011_09_26_drive_0061_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 1926 r
+2011_10_03/2011_10_03_drive_0034_sync 1148 r
+2011_09_30/2011_09_30_drive_0028_sync 1641 r
+2011_10_03/2011_10_03_drive_0034_sync 4311 l
+2011_09_30/2011_09_30_drive_0028_sync 4944 r
+2011_09_30/2011_09_30_drive_0028_sync 1448 l
+2011_10_03/2011_10_03_drive_0034_sync 1481 l
+2011_10_03/2011_10_03_drive_0034_sync 1874 l
+2011_09_30/2011_09_30_drive_0028_sync 4469 l
+2011_09_26/2011_09_26_drive_0051_sync 164 r
+2011_09_26/2011_09_26_drive_0015_sync 100 l
+2011_10_03/2011_10_03_drive_0034_sync 3282 r
+2011_09_26/2011_09_26_drive_0011_sync 227 l
+2011_09_29/2011_09_29_drive_0004_sync 327 r
+2011_09_30/2011_09_30_drive_0028_sync 3472 l
+2011_09_30/2011_09_30_drive_0034_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 4191 l
+2011_09_30/2011_09_30_drive_0034_sync 870 l
+2011_09_30/2011_09_30_drive_0034_sync 937 r
+2011_10_03/2011_10_03_drive_0034_sync 2820 r
+2011_09_30/2011_09_30_drive_0020_sync 574 r
+2011_10_03/2011_10_03_drive_0042_sync 965 r
+2011_09_30/2011_09_30_drive_0028_sync 364 l
+2011_09_26/2011_09_26_drive_0014_sync 204 r
+2011_10_03/2011_10_03_drive_0034_sync 3857 l
+2011_09_30/2011_09_30_drive_0033_sync 540 l
+2011_09_30/2011_09_30_drive_0028_sync 1121 r
+2011_09_30/2011_09_30_drive_0028_sync 4861 r
+2011_09_26/2011_09_26_drive_0087_sync 206 l
+2011_09_26/2011_09_26_drive_0091_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 995 r
+2011_10_03/2011_10_03_drive_0034_sync 1744 r
+2011_09_30/2011_09_30_drive_0034_sync 677 r
+2011_09_30/2011_09_30_drive_0020_sync 470 l
+2011_09_30/2011_09_30_drive_0028_sync 4008 r
+2011_09_30/2011_09_30_drive_0028_sync 3830 r
+2011_09_26/2011_09_26_drive_0022_sync 529 l
+2011_09_26/2011_09_26_drive_0091_sync 12 r
+2011_09_26/2011_09_26_drive_0061_sync 426 l
+2011_09_26/2011_09_26_drive_0005_sync 44 l
+2011_09_26/2011_09_26_drive_0022_sync 69 l
+2011_09_30/2011_09_30_drive_0034_sync 1114 l
+2011_10_03/2011_10_03_drive_0042_sync 514 r
+2011_09_26/2011_09_26_drive_0087_sync 184 r
+2011_09_26/2011_09_26_drive_0095_sync 93 r
+2011_09_30/2011_09_30_drive_0033_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 4435 r
+2011_09_30/2011_09_30_drive_0020_sync 508 l
+2011_09_26/2011_09_26_drive_0091_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 3759 r
+2011_10_03/2011_10_03_drive_0034_sync 1830 r
+2011_10_03/2011_10_03_drive_0034_sync 4131 l
+2011_09_30/2011_09_30_drive_0028_sync 222 r
+2011_09_26/2011_09_26_drive_0001_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 4640 l
+2011_09_30/2011_09_30_drive_0020_sync 924 l
+2011_10_03/2011_10_03_drive_0034_sync 2646 r
+2011_09_26/2011_09_26_drive_0015_sync 207 r
+2011_09_26/2011_09_26_drive_0032_sync 289 l
+2011_10_03/2011_10_03_drive_0034_sync 3076 r
+2011_10_03/2011_10_03_drive_0034_sync 4215 r
+2011_09_26/2011_09_26_drive_0014_sync 37 r
+2011_09_30/2011_09_30_drive_0033_sync 372 l
+2011_09_30/2011_09_30_drive_0028_sync 2664 r
+2011_10_03/2011_10_03_drive_0034_sync 3993 r
+2011_09_30/2011_09_30_drive_0033_sync 1129 r
+2011_09_30/2011_09_30_drive_0028_sync 3496 l
+2011_10_03/2011_10_03_drive_0034_sync 3888 r
+2011_09_30/2011_09_30_drive_0033_sync 422 l
+2011_10_03/2011_10_03_drive_0034_sync 3140 r
+2011_10_03/2011_10_03_drive_0034_sync 2878 l
+2011_10_03/2011_10_03_drive_0034_sync 1814 r
+2011_10_03/2011_10_03_drive_0034_sync 649 r
+2011_09_26/2011_09_26_drive_0035_sync 130 l
+2011_10_03/2011_10_03_drive_0034_sync 2808 r
+2011_10_03/2011_10_03_drive_0034_sync 3762 l
+2011_10_03/2011_10_03_drive_0042_sync 853 r
+2011_09_30/2011_09_30_drive_0020_sync 258 r
+2011_09_26/2011_09_26_drive_0061_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 79 r
+2011_09_26/2011_09_26_drive_0018_sync 67 l
+2011_09_26/2011_09_26_drive_0028_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 457 r
+2011_09_26/2011_09_26_drive_0091_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 1871 l
+2011_10_03/2011_10_03_drive_0034_sync 2960 r
+2011_09_26/2011_09_26_drive_0015_sync 162 r
+2011_09_26/2011_09_26_drive_0087_sync 382 r
+2011_09_26/2011_09_26_drive_0095_sync 184 l
+2011_09_26/2011_09_26_drive_0022_sync 595 r
+2011_09_30/2011_09_30_drive_0034_sync 487 r
+2011_09_26/2011_09_26_drive_0070_sync 35 r
+2011_09_30/2011_09_30_drive_0033_sync 74 l
+2011_09_26/2011_09_26_drive_0061_sync 526 l
+2011_10_03/2011_10_03_drive_0034_sync 4130 l
+2011_09_30/2011_09_30_drive_0028_sync 902 l
+2011_09_30/2011_09_30_drive_0028_sync 453 l
+2011_10_03/2011_10_03_drive_0034_sync 1554 r
+2011_09_30/2011_09_30_drive_0028_sync 1518 l
+2011_09_30/2011_09_30_drive_0028_sync 4671 l
+2011_09_26/2011_09_26_drive_0087_sync 507 l
+2011_09_30/2011_09_30_drive_0028_sync 5052 l
+2011_09_30/2011_09_30_drive_0028_sync 4472 l
+2011_09_26/2011_09_26_drive_0022_sync 177 r
+2011_09_26/2011_09_26_drive_0005_sync 2 l
+2011_09_26/2011_09_26_drive_0095_sync 66 r
+2011_09_26/2011_09_26_drive_0005_sync 131 l
+2011_09_26/2011_09_26_drive_0091_sync 150 r
+2011_09_26/2011_09_26_drive_0032_sync 62 r
+2011_09_29/2011_09_29_drive_0004_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 4204 l
+2011_09_30/2011_09_30_drive_0020_sync 457 l
+2011_09_30/2011_09_30_drive_0033_sync 1169 r
+2011_09_30/2011_09_30_drive_0028_sync 629 l
+2011_09_29/2011_09_29_drive_0026_sync 109 l
+2011_09_26/2011_09_26_drive_0015_sync 3 l
+2011_09_26/2011_09_26_drive_0014_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 781 l
+2011_09_26/2011_09_26_drive_0014_sync 173 l
+2011_09_30/2011_09_30_drive_0028_sync 4291 r
+2011_09_26/2011_09_26_drive_0087_sync 48 r
+2011_09_26/2011_09_26_drive_0018_sync 238 l
+2011_09_26/2011_09_26_drive_0087_sync 590 r
+2011_09_26/2011_09_26_drive_0070_sync 104 r
+2011_09_26/2011_09_26_drive_0061_sync 496 l
+2011_10_03/2011_10_03_drive_0042_sync 1089 l
+2011_09_26/2011_09_26_drive_0015_sync 71 l
+2011_09_30/2011_09_30_drive_0020_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 142 l
+2011_10_03/2011_10_03_drive_0034_sync 2982 l
+2011_09_30/2011_09_30_drive_0034_sync 990 l
+2011_09_30/2011_09_30_drive_0028_sync 4236 l
+2011_09_26/2011_09_26_drive_0039_sync 131 r
+2011_10_03/2011_10_03_drive_0034_sync 3564 l
+2011_09_26/2011_09_26_drive_0070_sync 356 l
+2011_09_30/2011_09_30_drive_0028_sync 3453 l
+2011_10_03/2011_10_03_drive_0034_sync 746 l
+2011_09_26/2011_09_26_drive_0019_sync 166 r
+2011_10_03/2011_10_03_drive_0042_sync 183 l
+2011_09_30/2011_09_30_drive_0028_sync 854 r
+2011_09_26/2011_09_26_drive_0019_sync 435 r
+2011_10_03/2011_10_03_drive_0034_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 3748 r
+2011_09_28/2011_09_28_drive_0001_sync 104 l
+2011_09_26/2011_09_26_drive_0061_sync 369 r
+2011_09_26/2011_09_26_drive_0113_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 3233 r
+2011_09_30/2011_09_30_drive_0020_sync 791 l
+2011_09_30/2011_09_30_drive_0028_sync 4212 r
+2011_09_26/2011_09_26_drive_0014_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 1849 r
+2011_10_03/2011_10_03_drive_0042_sync 598 r
+2011_09_26/2011_09_26_drive_0061_sync 211 l
+2011_09_30/2011_09_30_drive_0020_sync 1083 r
+2011_09_26/2011_09_26_drive_0028_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 3620 r
+2011_09_26/2011_09_26_drive_0061_sync 442 r
+2011_09_29/2011_09_29_drive_0004_sync 73 r
+2011_09_26/2011_09_26_drive_0005_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 2866 l
+2011_10_03/2011_10_03_drive_0042_sync 1155 l
+2011_09_30/2011_09_30_drive_0028_sync 1358 r
+2011_09_26/2011_09_26_drive_0019_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 3962 l
+2011_10_03/2011_10_03_drive_0034_sync 3348 l
+2011_09_30/2011_09_30_drive_0020_sync 674 r
+2011_09_30/2011_09_30_drive_0034_sync 273 r
+2011_09_26/2011_09_26_drive_0017_sync 103 r
+2011_09_30/2011_09_30_drive_0028_sync 4941 r
+2011_09_30/2011_09_30_drive_0028_sync 1846 l
+2011_09_30/2011_09_30_drive_0033_sync 156 l
+2011_09_26/2011_09_26_drive_0018_sync 153 r
+2011_09_30/2011_09_30_drive_0020_sync 984 l
+2011_10_03/2011_10_03_drive_0034_sync 1533 r
+2011_10_03/2011_10_03_drive_0042_sync 452 l
+2011_09_26/2011_09_26_drive_0070_sync 218 l
+2011_09_26/2011_09_26_drive_0015_sync 279 l
+2011_09_26/2011_09_26_drive_0015_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 3985 r
+2011_09_30/2011_09_30_drive_0028_sync 4017 l
+2011_10_03/2011_10_03_drive_0034_sync 3187 l
+2011_10_03/2011_10_03_drive_0034_sync 4205 r
+2011_09_30/2011_09_30_drive_0034_sync 1085 r
+2011_09_30/2011_09_30_drive_0028_sync 1951 l
+2011_09_26/2011_09_26_drive_0091_sync 120 r
+2011_09_26/2011_09_26_drive_0091_sync 136 r
+2011_10_03/2011_10_03_drive_0034_sync 491 l
+2011_09_30/2011_09_30_drive_0028_sync 1781 l
+2011_09_30/2011_09_30_drive_0033_sync 793 r
+2011_10_03/2011_10_03_drive_0042_sync 720 r
+2011_10_03/2011_10_03_drive_0034_sync 1028 r
+2011_10_03/2011_10_03_drive_0034_sync 695 r
+2011_10_03/2011_10_03_drive_0034_sync 1718 l
+2011_09_26/2011_09_26_drive_0015_sync 69 l
+2011_09_29/2011_09_29_drive_0004_sync 113 r
+2011_10_03/2011_10_03_drive_0034_sync 1215 l
+2011_09_30/2011_09_30_drive_0033_sync 1370 l
+2011_09_30/2011_09_30_drive_0020_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 3130 r
+2011_09_30/2011_09_30_drive_0034_sync 1138 r
+2011_09_30/2011_09_30_drive_0028_sync 2671 r
+2011_10_03/2011_10_03_drive_0034_sync 3732 r
+2011_09_30/2011_09_30_drive_0020_sync 621 l
+2011_09_30/2011_09_30_drive_0020_sync 491 l
+2011_09_26/2011_09_26_drive_0095_sync 124 l
+2011_09_29/2011_09_29_drive_0026_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 520 l
+2011_09_30/2011_09_30_drive_0028_sync 3592 r
+2011_09_26/2011_09_26_drive_0087_sync 270 l
+2011_09_29/2011_09_29_drive_0026_sync 135 l
+2011_09_29/2011_09_29_drive_0026_sync 57 l
+2011_10_03/2011_10_03_drive_0034_sync 3043 l
+2011_09_30/2011_09_30_drive_0028_sync 545 r
+2011_10_03/2011_10_03_drive_0034_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 3219 l
+2011_09_30/2011_09_30_drive_0028_sync 656 l
+2011_09_30/2011_09_30_drive_0028_sync 4188 l
+2011_09_30/2011_09_30_drive_0028_sync 460 l
+2011_09_30/2011_09_30_drive_0034_sync 294 r
+2011_10_03/2011_10_03_drive_0042_sync 877 l
+2011_10_03/2011_10_03_drive_0034_sync 3175 r
+2011_09_26/2011_09_26_drive_0057_sync 60 r
+2011_10_03/2011_10_03_drive_0034_sync 4264 l
+2011_09_30/2011_09_30_drive_0028_sync 3617 l
+2011_10_03/2011_10_03_drive_0034_sync 1191 r
+2011_09_26/2011_09_26_drive_0018_sync 23 r
+2011_09_30/2011_09_30_drive_0033_sync 116 l
+2011_09_30/2011_09_30_drive_0033_sync 1069 l
+2011_10_03/2011_10_03_drive_0034_sync 977 r
+2011_09_26/2011_09_26_drive_0057_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 1867 l
+2011_09_30/2011_09_30_drive_0020_sync 358 r
+2011_09_26/2011_09_26_drive_0057_sync 282 r
+2011_09_26/2011_09_26_drive_0022_sync 210 l
+2011_10_03/2011_10_03_drive_0034_sync 4552 r
+2011_09_29/2011_09_29_drive_0026_sync 6 r
+2011_09_30/2011_09_30_drive_0020_sync 536 l
+2011_09_26/2011_09_26_drive_0032_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 1210 l
+2011_09_30/2011_09_30_drive_0028_sync 4326 r
+2011_09_30/2011_09_30_drive_0028_sync 1460 r
+2011_09_30/2011_09_30_drive_0034_sync 660 l
+2011_09_29/2011_09_29_drive_0026_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 240 r
+2011_10_03/2011_10_03_drive_0042_sync 802 l
+2011_09_30/2011_09_30_drive_0034_sync 330 l
+2011_09_26/2011_09_26_drive_0057_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 4022 l
+2011_09_30/2011_09_30_drive_0028_sync 1492 r
+2011_10_03/2011_10_03_drive_0042_sync 555 l
+2011_09_26/2011_09_26_drive_0019_sync 472 l
+2011_09_29/2011_09_29_drive_0004_sync 324 r
+2011_09_30/2011_09_30_drive_0020_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 3431 l
+2011_09_26/2011_09_26_drive_0005_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 1642 l
+2011_09_30/2011_09_30_drive_0028_sync 1475 l
+2011_09_30/2011_09_30_drive_0028_sync 1757 l
+2011_10_03/2011_10_03_drive_0034_sync 702 l
+2011_09_26/2011_09_26_drive_0022_sync 598 r
+2011_09_26/2011_09_26_drive_0051_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 1344 l
+2011_09_30/2011_09_30_drive_0033_sync 597 l
+2011_09_26/2011_09_26_drive_0022_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 2924 r
+2011_09_26/2011_09_26_drive_0087_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 4893 l
+2011_09_26/2011_09_26_drive_0061_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 2421 r
+2011_09_30/2011_09_30_drive_0028_sync 3712 l
+2011_10_03/2011_10_03_drive_0034_sync 170 r
+2011_09_26/2011_09_26_drive_0022_sync 224 l
+2011_09_26/2011_09_26_drive_0014_sync 120 l
+2011_09_30/2011_09_30_drive_0033_sync 1401 r
+2011_09_30/2011_09_30_drive_0028_sync 3125 l
+2011_09_26/2011_09_26_drive_0022_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 3519 r
+2011_09_30/2011_09_30_drive_0028_sync 3082 r
+2011_10_03/2011_10_03_drive_0034_sync 4181 r
+2011_09_30/2011_09_30_drive_0034_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 2419 l
+2011_09_30/2011_09_30_drive_0028_sync 2185 r
+2011_09_26/2011_09_26_drive_0057_sync 3 l
+2011_09_26/2011_09_26_drive_0079_sync 81 l
+2011_09_26/2011_09_26_drive_0019_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 4790 l
+2011_09_26/2011_09_26_drive_0091_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 1049 l
+2011_10_03/2011_10_03_drive_0034_sync 457 r
+2011_09_26/2011_09_26_drive_0022_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 4526 r
+2011_09_30/2011_09_30_drive_0020_sync 1028 l
+2011_10_03/2011_10_03_drive_0042_sync 23 r
+2011_09_30/2011_09_30_drive_0020_sync 47 l
+2011_09_26/2011_09_26_drive_0057_sync 251 r
+2011_10_03/2011_10_03_drive_0034_sync 3825 r
+2011_10_03/2011_10_03_drive_0042_sync 332 r
+2011_09_30/2011_09_30_drive_0033_sync 274 l
+2011_10_03/2011_10_03_drive_0034_sync 2543 l
+2011_09_26/2011_09_26_drive_0091_sync 88 l
+2011_09_30/2011_09_30_drive_0034_sync 1184 r
+2011_10_03/2011_10_03_drive_0034_sync 4052 l
+2011_09_30/2011_09_30_drive_0020_sync 311 r
+2011_10_03/2011_10_03_drive_0034_sync 2734 r
+2011_10_03/2011_10_03_drive_0034_sync 1174 l
+2011_09_26/2011_09_26_drive_0022_sync 313 r
+2011_10_03/2011_10_03_drive_0034_sync 1077 r
+2011_09_26/2011_09_26_drive_0087_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 1280 l
+2011_09_29/2011_09_29_drive_0004_sync 213 r
+2011_09_30/2011_09_30_drive_0020_sync 749 r
+2011_09_26/2011_09_26_drive_0011_sync 166 r
+2011_09_26/2011_09_26_drive_0061_sync 539 l
+2011_09_26/2011_09_26_drive_0039_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 1254 r
+2011_09_26/2011_09_26_drive_0015_sync 254 r
+2011_10_03/2011_10_03_drive_0042_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 1732 r
+2011_09_30/2011_09_30_drive_0028_sync 1616 r
+2011_09_30/2011_09_30_drive_0028_sync 2757 l
+2011_09_26/2011_09_26_drive_0019_sync 114 r
+2011_09_30/2011_09_30_drive_0033_sync 897 l
+2011_09_26/2011_09_26_drive_0087_sync 53 l
+2011_09_26/2011_09_26_drive_0061_sync 681 r
+2011_09_26/2011_09_26_drive_0014_sync 293 r
+2011_09_30/2011_09_30_drive_0033_sync 366 l
+2011_10_03/2011_10_03_drive_0034_sync 3475 l
+2011_09_30/2011_09_30_drive_0034_sync 372 l
+2011_09_26/2011_09_26_drive_0032_sync 286 r
+2011_10_03/2011_10_03_drive_0034_sync 2453 l
+2011_10_03/2011_10_03_drive_0034_sync 3045 l
+2011_10_03/2011_10_03_drive_0034_sync 2185 r
+2011_09_30/2011_09_30_drive_0028_sync 2728 l
+2011_09_26/2011_09_26_drive_0028_sync 299 r
+2011_09_30/2011_09_30_drive_0028_sync 411 l
+2011_09_30/2011_09_30_drive_0034_sync 1222 l
+2011_10_03/2011_10_03_drive_0034_sync 2864 l
+2011_10_03/2011_10_03_drive_0034_sync 659 l
+2011_09_26/2011_09_26_drive_0087_sync 599 r
+2011_09_30/2011_09_30_drive_0028_sync 4228 r
+2011_09_26/2011_09_26_drive_0039_sync 393 r
+2011_09_30/2011_09_30_drive_0028_sync 4930 l
+2011_10_03/2011_10_03_drive_0034_sync 3004 r
+2011_10_03/2011_10_03_drive_0042_sync 373 l
+2011_09_30/2011_09_30_drive_0028_sync 2392 l
+2011_09_30/2011_09_30_drive_0028_sync 87 l
+2011_09_26/2011_09_26_drive_0028_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 2908 r
+2011_09_29/2011_09_29_drive_0004_sync 43 l
+2011_09_30/2011_09_30_drive_0033_sync 251 r
+2011_09_30/2011_09_30_drive_0020_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 1082 r
+2011_09_29/2011_09_29_drive_0026_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 3659 r
+2011_10_03/2011_10_03_drive_0034_sync 62 r
+2011_09_26/2011_09_26_drive_0070_sync 264 l
+2011_09_30/2011_09_30_drive_0028_sync 1225 l
+2011_10_03/2011_10_03_drive_0034_sync 941 l
+2011_10_03/2011_10_03_drive_0034_sync 1809 r
+2011_09_29/2011_09_29_drive_0026_sync 121 r
+2011_09_26/2011_09_26_drive_0028_sync 195 l
+2011_09_29/2011_09_29_drive_0004_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 824 l
+2011_10_03/2011_10_03_drive_0042_sync 782 r
+2011_09_30/2011_09_30_drive_0028_sync 1711 l
+2011_09_30/2011_09_30_drive_0028_sync 5110 l
+2011_09_26/2011_09_26_drive_0005_sync 74 r
+2011_09_26/2011_09_26_drive_0057_sync 266 r
+2011_09_26/2011_09_26_drive_0039_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 1249 l
+2011_09_30/2011_09_30_drive_0028_sync 207 l
+2011_09_30/2011_09_30_drive_0028_sync 903 l
+2011_10_03/2011_10_03_drive_0034_sync 4482 l
+2011_09_30/2011_09_30_drive_0028_sync 1463 l
+2011_09_26/2011_09_26_drive_0087_sync 228 l
+2011_10_03/2011_10_03_drive_0034_sync 3458 l
+2011_09_26/2011_09_26_drive_0051_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 3962 r
+2011_10_03/2011_10_03_drive_0034_sync 3603 r
+2011_09_26/2011_09_26_drive_0032_sync 357 l
+2011_10_03/2011_10_03_drive_0034_sync 1791 r
+2011_09_26/2011_09_26_drive_0091_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 2286 r
+2011_09_26/2011_09_26_drive_0028_sync 189 l
+2011_09_30/2011_09_30_drive_0028_sync 4095 l
+2011_10_03/2011_10_03_drive_0034_sync 524 r
+2011_10_03/2011_10_03_drive_0042_sync 1140 r
+2011_10_03/2011_10_03_drive_0042_sync 765 r
+2011_09_26/2011_09_26_drive_0032_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 4294 l
+2011_09_26/2011_09_26_drive_0018_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 3618 l
+2011_10_03/2011_10_03_drive_0034_sync 1026 l
+2011_09_26/2011_09_26_drive_0039_sync 340 l
+2011_09_26/2011_09_26_drive_0039_sync 353 l
+2011_09_26/2011_09_26_drive_0011_sync 130 l
+2011_09_30/2011_09_30_drive_0033_sync 549 l
+2011_09_26/2011_09_26_drive_0087_sync 319 l
+2011_09_30/2011_09_30_drive_0028_sync 116 r
+2011_09_30/2011_09_30_drive_0020_sync 729 r
+2011_10_03/2011_10_03_drive_0034_sync 3439 l
+2011_10_03/2011_10_03_drive_0034_sync 4472 r
+2011_09_30/2011_09_30_drive_0028_sync 5042 l
+2011_09_30/2011_09_30_drive_0028_sync 218 l
+2011_10_03/2011_10_03_drive_0042_sync 550 r
+2011_09_30/2011_09_30_drive_0028_sync 2881 l
+2011_09_30/2011_09_30_drive_0028_sync 4194 l
+2011_09_30/2011_09_30_drive_0028_sync 3072 r
+2011_09_26/2011_09_26_drive_0022_sync 153 l
+2011_09_26/2011_09_26_drive_0015_sync 174 r
+2011_09_26/2011_09_26_drive_0019_sync 156 r
+2011_09_30/2011_09_30_drive_0033_sync 542 l
+2011_09_26/2011_09_26_drive_0061_sync 377 l
+2011_09_26/2011_09_26_drive_0018_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 2971 r
+2011_09_26/2011_09_26_drive_0060_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 3725 r
+2011_09_30/2011_09_30_drive_0028_sync 3276 l
+2011_09_26/2011_09_26_drive_0001_sync 55 l
+2011_09_29/2011_09_29_drive_0004_sync 21 r
+2011_09_26/2011_09_26_drive_0087_sync 76 l
+2011_09_26/2011_09_26_drive_0070_sync 127 l
+2011_09_26/2011_09_26_drive_0095_sync 247 l
+2011_09_30/2011_09_30_drive_0028_sync 930 r
+2011_10_03/2011_10_03_drive_0034_sync 3983 r
+2011_09_26/2011_09_26_drive_0087_sync 151 r
+2011_09_26/2011_09_26_drive_0039_sync 325 l
+2011_09_30/2011_09_30_drive_0034_sync 779 r
+2011_10_03/2011_10_03_drive_0034_sync 4270 r
+2011_09_26/2011_09_26_drive_0061_sync 262 l
+2011_09_30/2011_09_30_drive_0028_sync 485 r
+2011_09_30/2011_09_30_drive_0020_sync 1039 r
+2011_09_26/2011_09_26_drive_0022_sync 333 l
+2011_10_03/2011_10_03_drive_0042_sync 557 l
+2011_09_26/2011_09_26_drive_0104_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 2655 l
+2011_09_26/2011_09_26_drive_0014_sync 238 l
+2011_09_30/2011_09_30_drive_0034_sync 765 l
+2011_09_26/2011_09_26_drive_0022_sync 673 l
+2011_10_03/2011_10_03_drive_0034_sync 1261 l
+2011_09_30/2011_09_30_drive_0028_sync 2043 l
+2011_10_03/2011_10_03_drive_0034_sync 3260 r
+2011_10_03/2011_10_03_drive_0034_sync 2698 l
+2011_09_30/2011_09_30_drive_0028_sync 3910 l
+2011_09_26/2011_09_26_drive_0019_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 3616 l
+2011_09_30/2011_09_30_drive_0033_sync 1397 l
+2011_09_26/2011_09_26_drive_0061_sync 509 r
+2011_10_03/2011_10_03_drive_0042_sync 913 l
+2011_09_26/2011_09_26_drive_0018_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 3870 r
+2011_09_26/2011_09_26_drive_0035_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 2288 l
+2011_09_30/2011_09_30_drive_0033_sync 402 l
+2011_09_30/2011_09_30_drive_0020_sync 105 l
+2011_09_30/2011_09_30_drive_0020_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 68 l
+2011_09_26/2011_09_26_drive_0060_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 890 r
+2011_10_03/2011_10_03_drive_0034_sync 4643 r
+2011_09_26/2011_09_26_drive_0070_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 3951 r
+2011_10_03/2011_10_03_drive_0042_sync 428 r
+2011_09_30/2011_09_30_drive_0033_sync 41 l
+2011_10_03/2011_10_03_drive_0034_sync 2569 r
+2011_09_30/2011_09_30_drive_0028_sync 2788 r
+2011_09_30/2011_09_30_drive_0020_sync 928 l
+2011_10_03/2011_10_03_drive_0034_sync 2683 l
+2011_10_03/2011_10_03_drive_0042_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 3225 r
+2011_10_03/2011_10_03_drive_0034_sync 2558 r
+2011_10_03/2011_10_03_drive_0034_sync 3131 r
+2011_10_03/2011_10_03_drive_0034_sync 4302 l
+2011_10_03/2011_10_03_drive_0034_sync 2470 r
+2011_09_26/2011_09_26_drive_0113_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 1827 r
+2011_09_30/2011_09_30_drive_0020_sync 504 l
+2011_09_30/2011_09_30_drive_0028_sync 3195 l
+2011_09_30/2011_09_30_drive_0028_sync 1079 l
+2011_09_26/2011_09_26_drive_0104_sync 283 r
+2011_10_03/2011_10_03_drive_0034_sync 4392 r
+2011_09_26/2011_09_26_drive_0018_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 2388 l
+2011_09_26/2011_09_26_drive_0022_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 799 l
+2011_09_30/2011_09_30_drive_0033_sync 1485 l
+2011_09_26/2011_09_26_drive_0022_sync 574 l
+2011_09_30/2011_09_30_drive_0020_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 2905 r
+2011_09_26/2011_09_26_drive_0019_sync 456 r
+2011_09_26/2011_09_26_drive_0095_sync 256 l
+2011_10_03/2011_10_03_drive_0034_sync 3336 l
+2011_10_03/2011_10_03_drive_0034_sync 3621 r
+2011_09_29/2011_09_29_drive_0026_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 725 r
+2011_09_26/2011_09_26_drive_0019_sync 71 r
+2011_09_30/2011_09_30_drive_0033_sync 1275 r
+2011_09_30/2011_09_30_drive_0028_sync 3658 l
+2011_09_30/2011_09_30_drive_0034_sync 1018 l
+2011_09_26/2011_09_26_drive_0001_sync 91 l
+2011_09_26/2011_09_26_drive_0022_sync 303 l
+2011_09_29/2011_09_29_drive_0004_sync 294 l
+2011_09_26/2011_09_26_drive_0104_sync 241 l
+2011_09_30/2011_09_30_drive_0020_sync 325 l
+2011_10_03/2011_10_03_drive_0042_sync 943 r
+2011_09_26/2011_09_26_drive_0104_sync 294 l
+2011_10_03/2011_10_03_drive_0034_sync 3152 r
+2011_10_03/2011_10_03_drive_0034_sync 897 r
+2011_10_03/2011_10_03_drive_0042_sync 1093 l
+2011_09_26/2011_09_26_drive_0022_sync 446 l
+2011_09_26/2011_09_26_drive_0079_sync 11 r
+2011_10_03/2011_10_03_drive_0042_sync 1040 l
+2011_09_30/2011_09_30_drive_0028_sync 4395 l
+2011_10_03/2011_10_03_drive_0034_sync 1394 l
+2011_09_30/2011_09_30_drive_0020_sync 835 l
+2011_09_30/2011_09_30_drive_0028_sync 3704 l
+2011_09_30/2011_09_30_drive_0020_sync 541 r
+2011_09_26/2011_09_26_drive_0057_sync 167 r
+2011_09_30/2011_09_30_drive_0033_sync 679 r
+2011_10_03/2011_10_03_drive_0034_sync 3531 l
+2011_09_26/2011_09_26_drive_0011_sync 209 l
+2011_10_03/2011_10_03_drive_0034_sync 683 l
+2011_09_30/2011_09_30_drive_0028_sync 1130 l
+2011_09_30/2011_09_30_drive_0034_sync 505 r
+2011_09_30/2011_09_30_drive_0028_sync 2233 l
+2011_09_30/2011_09_30_drive_0028_sync 1460 l
+2011_10_03/2011_10_03_drive_0034_sync 2618 r
+2011_09_26/2011_09_26_drive_0057_sync 270 l
+2011_09_30/2011_09_30_drive_0028_sync 5093 l
+2011_09_30/2011_09_30_drive_0033_sync 187 r
+2011_09_30/2011_09_30_drive_0034_sync 174 r
+2011_09_26/2011_09_26_drive_0022_sync 689 l
+2011_10_03/2011_10_03_drive_0034_sync 3436 r
+2011_09_30/2011_09_30_drive_0028_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 856 r
+2011_10_03/2011_10_03_drive_0034_sync 2474 l
+2011_09_30/2011_09_30_drive_0028_sync 4099 l
+2011_09_30/2011_09_30_drive_0028_sync 3569 r
+2011_09_30/2011_09_30_drive_0028_sync 4468 r
+2011_10_03/2011_10_03_drive_0034_sync 4039 r
+2011_09_30/2011_09_30_drive_0028_sync 4571 l
+2011_09_30/2011_09_30_drive_0034_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 18 l
+2011_09_26/2011_09_26_drive_0087_sync 327 r
+2011_09_29/2011_09_29_drive_0004_sync 217 r
+2011_09_26/2011_09_26_drive_0032_sync 306 r
+2011_09_26/2011_09_26_drive_0015_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 466 r
+2011_09_30/2011_09_30_drive_0028_sync 794 r
+2011_09_30/2011_09_30_drive_0034_sync 1128 r
+2011_10_03/2011_10_03_drive_0034_sync 2224 l
+2011_09_26/2011_09_26_drive_0087_sync 536 l
+2011_10_03/2011_10_03_drive_0034_sync 4352 l
+2011_10_03/2011_10_03_drive_0034_sync 3276 r
+2011_09_26/2011_09_26_drive_0095_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 4695 l
+2011_09_26/2011_09_26_drive_0057_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 4666 r
+2011_09_26/2011_09_26_drive_0087_sync 35 l
+2011_09_26/2011_09_26_drive_0022_sync 533 l
+2011_09_26/2011_09_26_drive_0061_sync 418 l
+2011_10_03/2011_10_03_drive_0034_sync 2233 l
+2011_09_26/2011_09_26_drive_0028_sync 333 r
+2011_09_29/2011_09_29_drive_0026_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 529 l
+2011_09_26/2011_09_26_drive_0095_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 2940 r
+2011_09_30/2011_09_30_drive_0033_sync 1230 l
+2011_10_03/2011_10_03_drive_0034_sync 756 r
+2011_09_30/2011_09_30_drive_0028_sync 3940 l
+2011_10_03/2011_10_03_drive_0034_sync 998 l
+2011_09_26/2011_09_26_drive_0019_sync 469 r
+2011_09_30/2011_09_30_drive_0028_sync 1277 r
+2011_09_30/2011_09_30_drive_0020_sync 895 r
+2011_09_30/2011_09_30_drive_0034_sync 1017 l
+2011_10_03/2011_10_03_drive_0042_sync 513 r
+2011_09_30/2011_09_30_drive_0028_sync 3375 r
+2011_09_26/2011_09_26_drive_0019_sync 451 r
+2011_09_26/2011_09_26_drive_0087_sync 45 r
+2011_09_29/2011_09_29_drive_0026_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 3371 l
+2011_10_03/2011_10_03_drive_0034_sync 3841 l
+2011_09_26/2011_09_26_drive_0051_sync 274 l
+2011_09_26/2011_09_26_drive_0019_sync 215 r
+2011_09_29/2011_09_29_drive_0026_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 3080 l
+2011_09_26/2011_09_26_drive_0014_sync 201 l
+2011_09_30/2011_09_30_drive_0020_sync 775 r
+2011_09_26/2011_09_26_drive_0032_sync 187 r
+2011_09_29/2011_09_29_drive_0026_sync 46 r
+2011_09_30/2011_09_30_drive_0034_sync 423 l
+2011_10_03/2011_10_03_drive_0034_sync 2020 l
+2011_09_26/2011_09_26_drive_0019_sync 387 r
+2011_09_26/2011_09_26_drive_0087_sync 249 r
+2011_09_26/2011_09_26_drive_0039_sync 283 r
+2011_10_03/2011_10_03_drive_0042_sync 1072 r
+2011_09_26/2011_09_26_drive_0015_sync 41 l
+2011_09_26/2011_09_26_drive_0032_sync 186 r
+2011_10_03/2011_10_03_drive_0034_sync 4291 l
+2011_09_30/2011_09_30_drive_0028_sync 4992 l
+2011_09_30/2011_09_30_drive_0028_sync 1353 l
+2011_09_26/2011_09_26_drive_0039_sync 210 r
+2011_09_30/2011_09_30_drive_0034_sync 719 r
+2011_09_30/2011_09_30_drive_0033_sync 339 l
+2011_09_30/2011_09_30_drive_0033_sync 695 r
+2011_10_03/2011_10_03_drive_0034_sync 384 l
+2011_09_26/2011_09_26_drive_0070_sync 134 r
+2011_09_26/2011_09_26_drive_0019_sync 272 l
+2011_10_03/2011_10_03_drive_0034_sync 2164 l
+2011_09_30/2011_09_30_drive_0033_sync 871 r
+2011_10_03/2011_10_03_drive_0034_sync 2818 l
+2011_09_30/2011_09_30_drive_0020_sync 618 r
+2011_10_03/2011_10_03_drive_0034_sync 3101 r
+2011_09_30/2011_09_30_drive_0033_sync 307 l
+2011_09_29/2011_09_29_drive_0004_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 3601 r
+2011_09_26/2011_09_26_drive_0061_sync 97 r
+2011_09_30/2011_09_30_drive_0020_sync 1033 l
+2011_09_30/2011_09_30_drive_0028_sync 2527 l
+2011_09_26/2011_09_26_drive_0022_sync 448 l
+2011_09_30/2011_09_30_drive_0033_sync 1417 r
+2011_09_26/2011_09_26_drive_0104_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 1221 l
+2011_10_03/2011_10_03_drive_0042_sync 902 l
+2011_09_26/2011_09_26_drive_0019_sync 64 l
+2011_09_26/2011_09_26_drive_0070_sync 240 r
+2011_09_30/2011_09_30_drive_0028_sync 4764 r
+2011_09_30/2011_09_30_drive_0020_sync 940 r
+2011_09_26/2011_09_26_drive_0051_sync 86 r
+2011_09_30/2011_09_30_drive_0033_sync 1185 r
+2011_09_26/2011_09_26_drive_0022_sync 526 l
+2011_09_26/2011_09_26_drive_0032_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 4421 l
+2011_09_26/2011_09_26_drive_0032_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 1628 l
+2011_09_30/2011_09_30_drive_0034_sync 395 l
+2011_10_03/2011_10_03_drive_0034_sync 1915 l
+2011_09_26/2011_09_26_drive_0061_sync 204 r
+2011_10_03/2011_10_03_drive_0034_sync 1477 r
+2011_10_03/2011_10_03_drive_0042_sync 775 r
+2011_09_30/2011_09_30_drive_0033_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 173 r
+2011_09_26/2011_09_26_drive_0015_sync 85 l
+2011_09_26/2011_09_26_drive_0057_sync 12 l
+2011_10_03/2011_10_03_drive_0034_sync 4360 l
+2011_10_03/2011_10_03_drive_0034_sync 4403 r
+2011_09_26/2011_09_26_drive_0019_sync 314 r
+2011_10_03/2011_10_03_drive_0034_sync 993 l
+2011_09_30/2011_09_30_drive_0034_sync 815 l
+2011_09_26/2011_09_26_drive_0087_sync 290 r
+2011_09_30/2011_09_30_drive_0028_sync 1158 r
+2011_09_26/2011_09_26_drive_0014_sync 207 l
+2011_09_26/2011_09_26_drive_0087_sync 587 r
+2011_10_03/2011_10_03_drive_0042_sync 354 r
+2011_09_26/2011_09_26_drive_0015_sync 132 r
+2011_09_30/2011_09_30_drive_0020_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 676 r
+2011_10_03/2011_10_03_drive_0034_sync 4086 l
+2011_09_26/2011_09_26_drive_0051_sync 118 l
+2011_09_30/2011_09_30_drive_0034_sync 1159 l
+2011_09_30/2011_09_30_drive_0028_sync 310 l
+2011_09_26/2011_09_26_drive_0032_sync 353 r
+2011_09_26/2011_09_26_drive_0087_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 2179 l
+2011_09_30/2011_09_30_drive_0033_sync 818 l
+2011_09_30/2011_09_30_drive_0028_sync 2726 l
+2011_10_03/2011_10_03_drive_0042_sync 732 l
+2011_09_30/2011_09_30_drive_0033_sync 869 l
+2011_10_03/2011_10_03_drive_0042_sync 966 l
+2011_09_29/2011_09_29_drive_0004_sync 67 r
+2011_10_03/2011_10_03_drive_0034_sync 2676 l
+2011_09_26/2011_09_26_drive_0022_sync 105 l
+2011_09_30/2011_09_30_drive_0020_sync 841 r
+2011_09_30/2011_09_30_drive_0028_sync 3806 r
+2011_09_26/2011_09_26_drive_0035_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 164 r
+2011_10_03/2011_10_03_drive_0034_sync 3113 r
+2011_09_26/2011_09_26_drive_0070_sync 162 r
+2011_09_26/2011_09_26_drive_0018_sync 164 l
+2011_09_30/2011_09_30_drive_0028_sync 4086 r
+2011_09_26/2011_09_26_drive_0061_sync 192 l
+2011_09_30/2011_09_30_drive_0020_sync 278 r
+2011_09_30/2011_09_30_drive_0028_sync 4987 r
+2011_09_26/2011_09_26_drive_0057_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 1737 r
+2011_09_30/2011_09_30_drive_0028_sync 4447 l
+2011_10_03/2011_10_03_drive_0034_sync 4599 r
+2011_09_30/2011_09_30_drive_0028_sync 4970 l
+2011_09_30/2011_09_30_drive_0033_sync 798 r
+2011_10_03/2011_10_03_drive_0034_sync 1459 l
+2011_09_26/2011_09_26_drive_0104_sync 183 l
+2011_09_30/2011_09_30_drive_0028_sync 3154 l
+2011_09_26/2011_09_26_drive_0070_sync 131 l
+2011_10_03/2011_10_03_drive_0042_sync 780 r
+2011_10_03/2011_10_03_drive_0034_sync 902 r
+2011_09_26/2011_09_26_drive_0028_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 1961 l
+2011_09_26/2011_09_26_drive_0019_sync 403 r
+2011_10_03/2011_10_03_drive_0034_sync 4163 r
+2011_10_03/2011_10_03_drive_0034_sync 3119 l
+2011_09_30/2011_09_30_drive_0028_sync 1345 r
+2011_09_30/2011_09_30_drive_0028_sync 2042 l
+2011_09_30/2011_09_30_drive_0034_sync 288 l
+2011_10_03/2011_10_03_drive_0034_sync 2845 l
+2011_10_03/2011_10_03_drive_0034_sync 3756 r
+2011_09_26/2011_09_26_drive_0039_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 3534 l
+2011_09_26/2011_09_26_drive_0051_sync 398 l
+2011_09_28/2011_09_28_drive_0001_sync 32 r
+2011_09_30/2011_09_30_drive_0028_sync 782 l
+2011_09_26/2011_09_26_drive_0028_sync 159 r
+2011_09_30/2011_09_30_drive_0034_sync 1056 r
+2011_09_26/2011_09_26_drive_0022_sync 326 l
+2011_09_26/2011_09_26_drive_0011_sync 218 l
+2011_10_03/2011_10_03_drive_0034_sync 942 l
+2011_09_30/2011_09_30_drive_0028_sync 3955 l
+2011_10_03/2011_10_03_drive_0042_sync 690 r
+2011_10_03/2011_10_03_drive_0034_sync 2953 r
+2011_10_03/2011_10_03_drive_0034_sync 4516 l
+2011_09_30/2011_09_30_drive_0028_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 781 l
+2011_09_26/2011_09_26_drive_0011_sync 188 l
+2011_09_30/2011_09_30_drive_0028_sync 5091 l
+2011_09_26/2011_09_26_drive_0032_sync 285 l
+2011_09_30/2011_09_30_drive_0028_sync 3351 l
+2011_10_03/2011_10_03_drive_0042_sync 505 r
+2011_09_26/2011_09_26_drive_0011_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 3207 r
+2011_09_30/2011_09_30_drive_0020_sync 98 r
+2011_09_26/2011_09_26_drive_0070_sync 233 r
+2011_09_26/2011_09_26_drive_0014_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 1898 r
+2011_10_03/2011_10_03_drive_0042_sync 642 r
+2011_09_30/2011_09_30_drive_0028_sync 3797 r
+2011_09_29/2011_09_29_drive_0004_sync 126 l
+2011_09_30/2011_09_30_drive_0028_sync 4665 r
+2011_09_30/2011_09_30_drive_0020_sync 430 l
+2011_10_03/2011_10_03_drive_0034_sync 4220 r
+2011_09_30/2011_09_30_drive_0028_sync 2220 r
+2011_09_30/2011_09_30_drive_0020_sync 1051 r
+2011_09_26/2011_09_26_drive_0087_sync 148 l
+2011_09_30/2011_09_30_drive_0034_sync 396 r
+2011_10_03/2011_10_03_drive_0034_sync 3707 r
+2011_09_30/2011_09_30_drive_0033_sync 1048 l
+2011_09_30/2011_09_30_drive_0028_sync 2013 r
+2011_09_26/2011_09_26_drive_0061_sync 456 l
+2011_10_03/2011_10_03_drive_0034_sync 3821 l
+2011_10_03/2011_10_03_drive_0034_sync 1592 l
+2011_09_30/2011_09_30_drive_0028_sync 4643 r
+2011_09_26/2011_09_26_drive_0104_sync 102 r
+2011_09_30/2011_09_30_drive_0034_sync 457 l
+2011_09_26/2011_09_26_drive_0070_sync 52 l
+2011_09_26/2011_09_26_drive_0039_sync 272 r
+2011_09_30/2011_09_30_drive_0028_sync 3049 r
+2011_09_28/2011_09_28_drive_0001_sync 101 r
+2011_09_30/2011_09_30_drive_0028_sync 3443 l
+2011_09_30/2011_09_30_drive_0033_sync 1534 l
+2011_10_03/2011_10_03_drive_0034_sync 1870 l
+2011_09_30/2011_09_30_drive_0020_sync 220 l
+2011_10_03/2011_10_03_drive_0034_sync 3321 l
+2011_09_30/2011_09_30_drive_0033_sync 513 r
+2011_10_03/2011_10_03_drive_0034_sync 1455 r
+2011_09_30/2011_09_30_drive_0033_sync 693 r
+2011_10_03/2011_10_03_drive_0034_sync 3611 l
+2011_09_30/2011_09_30_drive_0033_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 2940 r
+2011_10_03/2011_10_03_drive_0034_sync 3024 l
+2011_09_30/2011_09_30_drive_0028_sync 1856 l
+2011_09_26/2011_09_26_drive_0015_sync 147 l
+2011_09_26/2011_09_26_drive_0039_sync 152 r
+2011_09_30/2011_09_30_drive_0028_sync 3434 r
+2011_10_03/2011_10_03_drive_0034_sync 3206 l
+2011_09_26/2011_09_26_drive_0087_sync 42 l
+2011_09_29/2011_09_29_drive_0026_sync 80 r
+2011_09_30/2011_09_30_drive_0034_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 3038 r
+2011_09_26/2011_09_26_drive_0018_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 1997 r
+2011_09_30/2011_09_30_drive_0028_sync 2184 l
+2011_09_26/2011_09_26_drive_0032_sync 16 r
+2011_09_30/2011_09_30_drive_0033_sync 275 l
+2011_10_03/2011_10_03_drive_0034_sync 4312 l
+2011_10_03/2011_10_03_drive_0042_sync 193 r
+2011_09_26/2011_09_26_drive_0104_sync 271 r
+2011_09_30/2011_09_30_drive_0028_sync 538 r
+2011_09_26/2011_09_26_drive_0032_sync 301 l
+2011_10_03/2011_10_03_drive_0034_sync 4355 l
+2011_09_26/2011_09_26_drive_0091_sync 63 l
+2011_09_26/2011_09_26_drive_0087_sync 616 l
+2011_09_26/2011_09_26_drive_0032_sync 216 r
+2011_10_03/2011_10_03_drive_0034_sync 834 l
+2011_09_30/2011_09_30_drive_0033_sync 154 r
+2011_09_26/2011_09_26_drive_0095_sync 100 l
+2011_10_03/2011_10_03_drive_0042_sync 330 l
+2011_10_03/2011_10_03_drive_0034_sync 4262 r
+2011_10_03/2011_10_03_drive_0042_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 4305 r
+2011_09_26/2011_09_26_drive_0057_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 118 r
+2011_09_26/2011_09_26_drive_0057_sync 351 r
+2011_09_26/2011_09_26_drive_0001_sync 83 l
+2011_09_30/2011_09_30_drive_0033_sync 1355 l
+2011_09_26/2011_09_26_drive_0087_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 3721 r
+2011_09_29/2011_09_29_drive_0004_sync 262 l
+2011_09_26/2011_09_26_drive_0087_sync 601 r
+2011_09_30/2011_09_30_drive_0033_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 1931 r
+2011_09_26/2011_09_26_drive_0032_sync 290 r
+2011_10_03/2011_10_03_drive_0042_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 4713 l
+2011_09_26/2011_09_26_drive_0104_sync 299 l
+2011_09_26/2011_09_26_drive_0039_sync 59 r
+2011_09_30/2011_09_30_drive_0020_sync 643 l
+2011_10_03/2011_10_03_drive_0042_sync 329 r
+2011_09_30/2011_09_30_drive_0020_sync 393 r
+2011_09_26/2011_09_26_drive_0057_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 349 l
+2011_09_26/2011_09_26_drive_0022_sync 647 l
+2011_10_03/2011_10_03_drive_0042_sync 132 r
+2011_09_26/2011_09_26_drive_0005_sync 87 l
+2011_09_30/2011_09_30_drive_0028_sync 4457 l
+2011_09_26/2011_09_26_drive_0051_sync 299 l
+2011_09_30/2011_09_30_drive_0028_sync 4192 l
+2011_10_03/2011_10_03_drive_0034_sync 2120 l
+2011_09_30/2011_09_30_drive_0028_sync 2025 l
+2011_10_03/2011_10_03_drive_0034_sync 1156 l
+2011_09_30/2011_09_30_drive_0028_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 3262 l
+2011_09_29/2011_09_29_drive_0004_sync 158 l
+2011_09_30/2011_09_30_drive_0034_sync 527 r
+2011_09_26/2011_09_26_drive_0061_sync 581 l
+2011_09_30/2011_09_30_drive_0033_sync 967 r
+2011_10_03/2011_10_03_drive_0034_sync 3189 l
+2011_09_30/2011_09_30_drive_0033_sync 656 r
+2011_09_30/2011_09_30_drive_0033_sync 1341 r
+2011_09_30/2011_09_30_drive_0028_sync 1590 r
+2011_09_30/2011_09_30_drive_0028_sync 3855 r
+2011_09_30/2011_09_30_drive_0028_sync 5039 r
+2011_10_03/2011_10_03_drive_0034_sync 1861 r
+2011_10_03/2011_10_03_drive_0034_sync 2619 r
+2011_09_30/2011_09_30_drive_0028_sync 4483 l
+2011_09_26/2011_09_26_drive_0032_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 4160 r
+2011_09_30/2011_09_30_drive_0034_sync 402 r
+2011_09_26/2011_09_26_drive_0061_sync 288 r
+2011_10_03/2011_10_03_drive_0042_sync 602 l
+2011_09_26/2011_09_26_drive_0039_sync 92 r
+2011_09_26/2011_09_26_drive_0022_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 4950 r
+2011_09_26/2011_09_26_drive_0035_sync 66 l
+2011_09_26/2011_09_26_drive_0028_sync 282 r
+2011_10_03/2011_10_03_drive_0034_sync 1617 r
+2011_09_30/2011_09_30_drive_0033_sync 395 l
+2011_09_30/2011_09_30_drive_0033_sync 1114 r
+2011_09_26/2011_09_26_drive_0022_sync 382 r
+2011_09_26/2011_09_26_drive_0019_sync 437 l
+2011_10_03/2011_10_03_drive_0034_sync 2264 l
+2011_09_30/2011_09_30_drive_0028_sync 3957 l
+2011_10_03/2011_10_03_drive_0042_sync 447 l
+2011_09_30/2011_09_30_drive_0028_sync 4972 l
+2011_10_03/2011_10_03_drive_0034_sync 4216 l
+2011_09_26/2011_09_26_drive_0091_sync 135 l
+2011_09_30/2011_09_30_drive_0020_sync 174 l
+2011_10_03/2011_10_03_drive_0034_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 687 r
+2011_09_26/2011_09_26_drive_0091_sync 189 r
+2011_09_26/2011_09_26_drive_0095_sync 11 r
+2011_09_26/2011_09_26_drive_0022_sync 704 l
+2011_09_30/2011_09_30_drive_0028_sync 288 r
+2011_09_30/2011_09_30_drive_0034_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 2739 r
+2011_09_26/2011_09_26_drive_0095_sync 114 l
+2011_09_26/2011_09_26_drive_0039_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 2861 r
+2011_09_30/2011_09_30_drive_0034_sync 934 r
+2011_09_30/2011_09_30_drive_0028_sync 3596 r
+2011_09_26/2011_09_26_drive_0079_sync 68 l
+2011_10_03/2011_10_03_drive_0042_sync 784 l
+2011_09_30/2011_09_30_drive_0028_sync 2710 l
+2011_09_30/2011_09_30_drive_0028_sync 1775 l
+2011_09_26/2011_09_26_drive_0051_sync 435 l
+2011_10_03/2011_10_03_drive_0034_sync 2043 l
+2011_10_03/2011_10_03_drive_0034_sync 1559 r
+2011_09_26/2011_09_26_drive_0057_sync 220 r
+2011_09_26/2011_09_26_drive_0104_sync 104 l
+2011_09_26/2011_09_26_drive_0022_sync 696 r
+2011_09_30/2011_09_30_drive_0028_sync 496 l
+2011_09_26/2011_09_26_drive_0079_sync 44 l
+2011_09_26/2011_09_26_drive_0070_sync 102 r
+2011_09_26/2011_09_26_drive_0032_sync 317 r
+2011_09_30/2011_09_30_drive_0033_sync 1012 l
+2011_10_03/2011_10_03_drive_0042_sync 107 r
+2011_10_03/2011_10_03_drive_0042_sync 967 r
+2011_09_30/2011_09_30_drive_0028_sync 4881 r
+2011_09_26/2011_09_26_drive_0032_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 4213 l
+2011_09_26/2011_09_26_drive_0017_sync 18 r
+2011_09_30/2011_09_30_drive_0034_sync 928 r
+2011_10_03/2011_10_03_drive_0042_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 1053 l
+2011_10_03/2011_10_03_drive_0034_sync 470 l
+2011_09_26/2011_09_26_drive_0061_sync 610 r
+2011_09_30/2011_09_30_drive_0033_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 2876 r
+2011_09_30/2011_09_30_drive_0033_sync 1397 r
+2011_10_03/2011_10_03_drive_0034_sync 1943 l
+2011_09_30/2011_09_30_drive_0033_sync 483 l
+2011_10_03/2011_10_03_drive_0042_sync 472 r
+2011_10_03/2011_10_03_drive_0034_sync 2370 r
+2011_09_26/2011_09_26_drive_0022_sync 782 l
+2011_09_26/2011_09_26_drive_0061_sync 441 l
+2011_09_30/2011_09_30_drive_0028_sync 3935 r
+2011_09_30/2011_09_30_drive_0028_sync 3533 l
+2011_09_26/2011_09_26_drive_0070_sync 162 l
+2011_09_29/2011_09_29_drive_0004_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 4678 l
+2011_09_26/2011_09_26_drive_0087_sync 282 r
+2011_09_26/2011_09_26_drive_0019_sync 463 l
+2011_09_26/2011_09_26_drive_0039_sync 288 r
+2011_09_29/2011_09_29_drive_0026_sync 126 l
+2011_09_26/2011_09_26_drive_0032_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 1451 r
+2011_09_26/2011_09_26_drive_0051_sync 408 r
+2011_09_30/2011_09_30_drive_0020_sync 903 r
+2011_09_30/2011_09_30_drive_0033_sync 131 r
+2011_09_30/2011_09_30_drive_0020_sync 345 r
+2011_09_30/2011_09_30_drive_0020_sync 790 r
+2011_09_26/2011_09_26_drive_0104_sync 136 l
+2011_09_26/2011_09_26_drive_0005_sync 89 r
+2011_09_26/2011_09_26_drive_0057_sync 304 l
+2011_09_26/2011_09_26_drive_0039_sync 391 l
+2011_09_30/2011_09_30_drive_0028_sync 3523 r
+2011_09_26/2011_09_26_drive_0051_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 2661 r
+2011_09_26/2011_09_26_drive_0019_sync 435 l
+2011_10_03/2011_10_03_drive_0034_sync 3364 r
+2011_09_30/2011_09_30_drive_0028_sync 1894 l
+2011_09_26/2011_09_26_drive_0095_sync 163 l
+2011_09_26/2011_09_26_drive_0005_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 4410 l
+2011_09_30/2011_09_30_drive_0020_sync 514 r
+2011_10_03/2011_10_03_drive_0034_sync 3406 l
+2011_10_03/2011_10_03_drive_0034_sync 3911 r
+2011_09_30/2011_09_30_drive_0033_sync 9 r
+2011_09_26/2011_09_26_drive_0022_sync 797 l
+2011_10_03/2011_10_03_drive_0034_sync 1737 l
+2011_10_03/2011_10_03_drive_0034_sync 2703 l
+2011_09_26/2011_09_26_drive_0018_sync 113 r
+2011_09_26/2011_09_26_drive_0051_sync 151 r
+2011_09_26/2011_09_26_drive_0087_sync 677 l
+2011_09_26/2011_09_26_drive_0051_sync 392 r
+2011_09_26/2011_09_26_drive_0019_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 2780 l
+2011_10_03/2011_10_03_drive_0034_sync 291 l
+2011_10_03/2011_10_03_drive_0042_sync 231 l
+2011_09_26/2011_09_26_drive_0070_sync 184 l
+2011_09_30/2011_09_30_drive_0034_sync 1041 r
+2011_09_26/2011_09_26_drive_0057_sync 217 l
+2011_09_30/2011_09_30_drive_0033_sync 482 l
+2011_09_26/2011_09_26_drive_0022_sync 622 r
+2011_10_03/2011_10_03_drive_0034_sync 4527 l
+2011_09_26/2011_09_26_drive_0061_sync 223 l
+2011_09_26/2011_09_26_drive_0079_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 2777 r
+2011_10_03/2011_10_03_drive_0042_sync 1017 r
+2011_09_26/2011_09_26_drive_0022_sync 38 r
+2011_09_26/2011_09_26_drive_0022_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 1612 r
+2011_09_26/2011_09_26_drive_0070_sync 124 r
+2011_09_30/2011_09_30_drive_0028_sync 3145 l
+2011_09_30/2011_09_30_drive_0028_sync 4329 r
+2011_10_03/2011_10_03_drive_0042_sync 358 l
+2011_09_30/2011_09_30_drive_0033_sync 1368 r
+2011_09_26/2011_09_26_drive_0070_sync 192 l
+2011_09_30/2011_09_30_drive_0033_sync 723 l
+2011_09_26/2011_09_26_drive_0104_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 223 l
+2011_09_29/2011_09_29_drive_0026_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 1251 l
+2011_10_03/2011_10_03_drive_0042_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 1071 l
+2011_09_30/2011_09_30_drive_0028_sync 4920 l
+2011_09_30/2011_09_30_drive_0028_sync 1128 r
+2011_10_03/2011_10_03_drive_0034_sync 3217 l
+2011_09_30/2011_09_30_drive_0028_sync 1632 l
+2011_09_30/2011_09_30_drive_0033_sync 976 r
+2011_09_26/2011_09_26_drive_0039_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 1946 r
+2011_10_03/2011_10_03_drive_0034_sync 3922 l
+2011_09_30/2011_09_30_drive_0033_sync 331 l
+2011_09_30/2011_09_30_drive_0028_sync 3904 l
+2011_09_26/2011_09_26_drive_0091_sync 124 r
+2011_09_26/2011_09_26_drive_0022_sync 565 l
+2011_09_26/2011_09_26_drive_0014_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 1590 r
+2011_09_26/2011_09_26_drive_0104_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 4528 l
+2011_09_26/2011_09_26_drive_0070_sync 390 r
+2011_09_30/2011_09_30_drive_0034_sync 466 l
+2011_09_26/2011_09_26_drive_0104_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 3690 r
+2011_10_03/2011_10_03_drive_0034_sync 830 r
+2011_09_29/2011_09_29_drive_0026_sync 62 r
+2011_09_26/2011_09_26_drive_0032_sync 175 r
+2011_09_30/2011_09_30_drive_0033_sync 1443 r
+2011_09_30/2011_09_30_drive_0028_sync 3078 r
+2011_09_26/2011_09_26_drive_0019_sync 455 l
+2011_09_30/2011_09_30_drive_0034_sync 5 l
+2011_09_26/2011_09_26_drive_0091_sync 18 r
+2011_09_26/2011_09_26_drive_0104_sync 170 l
+2011_09_26/2011_09_26_drive_0070_sync 163 l
+2011_09_30/2011_09_30_drive_0028_sync 212 r
+2011_10_03/2011_10_03_drive_0042_sync 366 r
+2011_09_26/2011_09_26_drive_0019_sync 453 l
+2011_09_26/2011_09_26_drive_0104_sync 122 l
+2011_09_26/2011_09_26_drive_0022_sync 719 r
+2011_09_26/2011_09_26_drive_0070_sync 239 r
+2011_09_30/2011_09_30_drive_0028_sync 1675 r
+2011_09_30/2011_09_30_drive_0028_sync 4814 r
+2011_09_28/2011_09_28_drive_0001_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 3256 l
+2011_09_30/2011_09_30_drive_0020_sync 58 r
+2011_09_26/2011_09_26_drive_0061_sync 355 r
+2011_10_03/2011_10_03_drive_0034_sync 2334 r
+2011_09_30/2011_09_30_drive_0028_sync 3800 r
+2011_09_26/2011_09_26_drive_0019_sync 144 l
+2011_09_26/2011_09_26_drive_0091_sync 29 l
+2011_09_26/2011_09_26_drive_0039_sync 141 r
+2011_09_30/2011_09_30_drive_0033_sync 1183 r
+2011_09_26/2011_09_26_drive_0005_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 1567 l
+2011_10_03/2011_10_03_drive_0034_sync 4403 l
+2011_09_26/2011_09_26_drive_0032_sync 247 l
+2011_09_30/2011_09_30_drive_0028_sync 112 l
+2011_09_26/2011_09_26_drive_0017_sync 34 l
+2011_10_03/2011_10_03_drive_0042_sync 111 l
+2011_09_26/2011_09_26_drive_0051_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 4985 r
+2011_10_03/2011_10_03_drive_0042_sync 416 l
+2011_10_03/2011_10_03_drive_0034_sync 4459 l
+2011_09_30/2011_09_30_drive_0028_sync 2550 r
+2011_09_30/2011_09_30_drive_0028_sync 1641 l
+2011_10_03/2011_10_03_drive_0034_sync 2930 l
+2011_10_03/2011_10_03_drive_0034_sync 2093 r
+2011_09_30/2011_09_30_drive_0033_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 1030 l
+2011_10_03/2011_10_03_drive_0034_sync 2875 r
+2011_09_26/2011_09_26_drive_0022_sync 473 l
+2011_09_26/2011_09_26_drive_0028_sync 259 r
+2011_09_26/2011_09_26_drive_0061_sync 50 r
+2011_09_26/2011_09_26_drive_0015_sync 250 r
+2011_09_30/2011_09_30_drive_0028_sync 4567 r
+2011_09_30/2011_09_30_drive_0033_sync 519 r
+2011_09_30/2011_09_30_drive_0020_sync 557 l
+2011_09_26/2011_09_26_drive_0095_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 2414 l
+2011_10_03/2011_10_03_drive_0034_sync 3486 r
+2011_10_03/2011_10_03_drive_0034_sync 562 l
+2011_09_30/2011_09_30_drive_0028_sync 1428 r
+2011_09_30/2011_09_30_drive_0034_sync 855 r
+2011_09_30/2011_09_30_drive_0028_sync 3711 l
+2011_10_03/2011_10_03_drive_0034_sync 3168 l
+2011_09_26/2011_09_26_drive_0032_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 2298 l
+2011_10_03/2011_10_03_drive_0034_sync 2573 r
+2011_09_30/2011_09_30_drive_0028_sync 999 l
+2011_10_03/2011_10_03_drive_0034_sync 3317 r
+2011_09_30/2011_09_30_drive_0028_sync 2425 l
+2011_09_26/2011_09_26_drive_0095_sync 189 r
+2011_09_30/2011_09_30_drive_0020_sync 37 r
+2011_09_26/2011_09_26_drive_0070_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 2957 l
+2011_09_26/2011_09_26_drive_0028_sync 382 l
+2011_09_30/2011_09_30_drive_0028_sync 4225 r
+2011_09_30/2011_09_30_drive_0033_sync 735 r
+2011_09_30/2011_09_30_drive_0028_sync 1456 l
+2011_10_03/2011_10_03_drive_0034_sync 1178 r
+2011_10_03/2011_10_03_drive_0034_sync 1155 l
+2011_09_30/2011_09_30_drive_0033_sync 1224 l
+2011_10_03/2011_10_03_drive_0034_sync 1458 l
+2011_10_03/2011_10_03_drive_0034_sync 1011 r
+2011_09_26/2011_09_26_drive_0032_sync 28 l
+2011_09_30/2011_09_30_drive_0020_sync 1038 r
+2011_09_26/2011_09_26_drive_0028_sync 93 r
+2011_09_26/2011_09_26_drive_0018_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 3901 r
+2011_10_03/2011_10_03_drive_0034_sync 964 l
+2011_09_26/2011_09_26_drive_0014_sync 30 r
+2011_09_26/2011_09_26_drive_0079_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 1198 l
+2011_09_30/2011_09_30_drive_0028_sync 1333 l
+2011_09_26/2011_09_26_drive_0011_sync 60 l
+2011_09_26/2011_09_26_drive_0039_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 2863 l
+2011_09_26/2011_09_26_drive_0087_sync 509 l
+2011_09_26/2011_09_26_drive_0060_sync 29 l
+2011_10_03/2011_10_03_drive_0042_sync 480 r
+2011_09_26/2011_09_26_drive_0057_sync 325 r
+2011_10_03/2011_10_03_drive_0034_sync 1052 r
+2011_09_30/2011_09_30_drive_0028_sync 517 r
+2011_09_30/2011_09_30_drive_0028_sync 2976 l
+2011_09_26/2011_09_26_drive_0070_sync 189 r
+2011_09_26/2011_09_26_drive_0061_sync 30 l
+2011_09_26/2011_09_26_drive_0015_sync 99 l
+2011_09_26/2011_09_26_drive_0032_sync 318 l
+2011_09_26/2011_09_26_drive_0015_sync 28 l
+2011_09_26/2011_09_26_drive_0028_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 1555 l
+2011_09_26/2011_09_26_drive_0095_sync 97 l
+2011_09_26/2011_09_26_drive_0070_sync 213 r
+2011_09_30/2011_09_30_drive_0034_sync 669 l
+2011_09_26/2011_09_26_drive_0051_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 1981 l
+2011_10_03/2011_10_03_drive_0034_sync 2780 r
+2011_09_30/2011_09_30_drive_0028_sync 3451 l
+2011_09_30/2011_09_30_drive_0034_sync 781 r
+2011_09_30/2011_09_30_drive_0028_sync 326 l
+2011_09_30/2011_09_30_drive_0028_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 1571 l
+2011_09_26/2011_09_26_drive_0032_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 515 r
+2011_09_30/2011_09_30_drive_0020_sync 364 r
+2011_09_26/2011_09_26_drive_0057_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 1684 l
+2011_09_26/2011_09_26_drive_0070_sync 71 l
+2011_09_26/2011_09_26_drive_0022_sync 675 l
+2011_09_30/2011_09_30_drive_0033_sync 1139 l
+2011_10_03/2011_10_03_drive_0034_sync 835 l
+2011_09_30/2011_09_30_drive_0028_sync 2659 l
+2011_09_26/2011_09_26_drive_0014_sync 254 l
+2011_09_26/2011_09_26_drive_0018_sync 0 r
+2011_09_26/2011_09_26_drive_0087_sync 47 r
+2011_10_03/2011_10_03_drive_0034_sync 1953 l
+2011_09_26/2011_09_26_drive_0061_sync 473 l
+2011_09_26/2011_09_26_drive_0022_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 3898 r
+2011_10_03/2011_10_03_drive_0034_sync 448 r
+2011_10_03/2011_10_03_drive_0042_sync 743 r
+2011_09_30/2011_09_30_drive_0028_sync 1612 l
+2011_09_30/2011_09_30_drive_0034_sync 102 r
+2011_09_30/2011_09_30_drive_0034_sync 125 l
+2011_10_03/2011_10_03_drive_0034_sync 2775 l
+2011_09_30/2011_09_30_drive_0028_sync 2163 r
+2011_09_30/2011_09_30_drive_0028_sync 2475 l
+2011_09_30/2011_09_30_drive_0034_sync 974 r
+2011_10_03/2011_10_03_drive_0034_sync 3589 l
+2011_09_26/2011_09_26_drive_0061_sync 322 l
+2011_09_26/2011_09_26_drive_0095_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 2124 l
+2011_10_03/2011_10_03_drive_0034_sync 2230 r
+2011_09_26/2011_09_26_drive_0087_sync 582 r
+2011_10_03/2011_10_03_drive_0034_sync 4313 r
+2011_09_30/2011_09_30_drive_0028_sync 1645 l
+2011_09_30/2011_09_30_drive_0028_sync 1787 r
+2011_10_03/2011_10_03_drive_0034_sync 2256 l
+2011_10_03/2011_10_03_drive_0034_sync 3803 l
+2011_09_30/2011_09_30_drive_0028_sync 2085 l
+2011_09_30/2011_09_30_drive_0033_sync 711 l
+2011_09_30/2011_09_30_drive_0020_sync 926 r
+2011_09_30/2011_09_30_drive_0020_sync 250 l
+2011_09_30/2011_09_30_drive_0033_sync 1310 r
+2011_09_30/2011_09_30_drive_0028_sync 5121 r
+2011_09_29/2011_09_29_drive_0004_sync 328 r
+2011_09_26/2011_09_26_drive_0051_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 1009 r
+2011_10_03/2011_10_03_drive_0034_sync 1109 l
+2011_10_03/2011_10_03_drive_0042_sync 230 l
+2011_09_26/2011_09_26_drive_0061_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 4077 l
+2011_09_30/2011_09_30_drive_0034_sync 219 r
+2011_09_30/2011_09_30_drive_0033_sync 616 l
+2011_10_03/2011_10_03_drive_0034_sync 1613 l
+2011_09_30/2011_09_30_drive_0033_sync 365 r
+2011_09_30/2011_09_30_drive_0028_sync 2723 l
+2011_09_30/2011_09_30_drive_0033_sync 497 r
+2011_09_26/2011_09_26_drive_0014_sync 61 l
+2011_09_26/2011_09_26_drive_0019_sync 411 l
+2011_09_30/2011_09_30_drive_0028_sync 1310 l
+2011_10_03/2011_10_03_drive_0042_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 2508 l
+2011_10_03/2011_10_03_drive_0042_sync 147 r
+2011_09_30/2011_09_30_drive_0033_sync 1240 l
+2011_09_30/2011_09_30_drive_0028_sync 3242 l
+2011_09_30/2011_09_30_drive_0034_sync 958 l
+2011_09_30/2011_09_30_drive_0034_sync 708 l
+2011_09_29/2011_09_29_drive_0004_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 3093 l
+2011_10_03/2011_10_03_drive_0034_sync 2209 l
+2011_09_30/2011_09_30_drive_0028_sync 4484 r
+2011_09_26/2011_09_26_drive_0018_sync 142 r
+2011_09_26/2011_09_26_drive_0019_sync 125 l
+2011_09_26/2011_09_26_drive_0039_sync 153 r
+2011_10_03/2011_10_03_drive_0034_sync 3857 r
+2011_09_26/2011_09_26_drive_0022_sync 239 l
+2011_09_26/2011_09_26_drive_0057_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 1948 l
+2011_09_30/2011_09_30_drive_0028_sync 2410 r
+2011_09_29/2011_09_29_drive_0004_sync 82 l
+2011_09_30/2011_09_30_drive_0033_sync 739 l
+2011_09_30/2011_09_30_drive_0028_sync 2736 l
+2011_10_03/2011_10_03_drive_0042_sync 729 l
+2011_09_26/2011_09_26_drive_0018_sync 97 r
+2011_09_26/2011_09_26_drive_0087_sync 426 r
+2011_09_26/2011_09_26_drive_0104_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 2015 r
+2011_09_26/2011_09_26_drive_0019_sync 478 r
+2011_09_30/2011_09_30_drive_0028_sync 101 r
+2011_09_30/2011_09_30_drive_0020_sync 420 r
+2011_09_30/2011_09_30_drive_0020_sync 1075 r
+2011_09_26/2011_09_26_drive_0070_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 3808 r
+2011_09_26/2011_09_26_drive_0032_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 4082 l
+2011_09_30/2011_09_30_drive_0028_sync 2130 r
+2011_09_30/2011_09_30_drive_0020_sync 479 r
+2011_09_26/2011_09_26_drive_0070_sync 205 l
+2011_09_26/2011_09_26_drive_0070_sync 309 l
+2011_09_30/2011_09_30_drive_0028_sync 5010 r
+2011_09_30/2011_09_30_drive_0020_sync 999 r
+2011_10_03/2011_10_03_drive_0034_sync 3233 l
+2011_09_30/2011_09_30_drive_0028_sync 2772 l
+2011_09_30/2011_09_30_drive_0028_sync 2017 l
+2011_09_30/2011_09_30_drive_0028_sync 4107 r
+2011_09_26/2011_09_26_drive_0061_sync 572 l
+2011_10_03/2011_10_03_drive_0034_sync 534 l
+2011_10_03/2011_10_03_drive_0034_sync 2167 l
+2011_10_03/2011_10_03_drive_0034_sync 828 r
+2011_10_03/2011_10_03_drive_0042_sync 1152 r
+2011_09_26/2011_09_26_drive_0014_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 4285 r
+2011_09_26/2011_09_26_drive_0087_sync 457 l
+2011_09_30/2011_09_30_drive_0034_sync 487 l
+2011_09_26/2011_09_26_drive_0104_sync 281 l
+2011_10_03/2011_10_03_drive_0034_sync 4656 r
+2011_09_26/2011_09_26_drive_0022_sync 793 l
+2011_09_30/2011_09_30_drive_0028_sync 4473 r
+2011_09_30/2011_09_30_drive_0028_sync 3322 l
+2011_10_03/2011_10_03_drive_0034_sync 1438 l
+2011_09_30/2011_09_30_drive_0020_sync 403 l
+2011_09_26/2011_09_26_drive_0015_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 4606 r
+2011_09_26/2011_09_26_drive_0104_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 3277 l
+2011_09_26/2011_09_26_drive_0022_sync 291 l
+2011_10_03/2011_10_03_drive_0034_sync 4390 l
+2011_09_26/2011_09_26_drive_0070_sync 29 r
+2011_09_26/2011_09_26_drive_0019_sync 49 l
+2011_09_26/2011_09_26_drive_0113_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 1304 l
+2011_09_26/2011_09_26_drive_0060_sync 10 l
+2011_09_30/2011_09_30_drive_0028_sync 475 l
+2011_09_26/2011_09_26_drive_0087_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 1664 r
+2011_09_26/2011_09_26_drive_0022_sync 75 r
+2011_09_30/2011_09_30_drive_0033_sync 1372 l
+2011_10_03/2011_10_03_drive_0034_sync 911 r
+2011_09_30/2011_09_30_drive_0028_sync 1994 l
+2011_09_26/2011_09_26_drive_0095_sync 85 l
+2011_09_30/2011_09_30_drive_0033_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 4970 r
+2011_09_30/2011_09_30_drive_0033_sync 1370 r
+2011_09_26/2011_09_26_drive_0019_sync 235 l
+2011_09_30/2011_09_30_drive_0028_sync 2296 l
+2011_09_26/2011_09_26_drive_0051_sync 340 l
+2011_10_03/2011_10_03_drive_0034_sync 1838 r
+2011_09_26/2011_09_26_drive_0051_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 2310 l
+2011_09_30/2011_09_30_drive_0028_sync 2290 r
+2011_09_30/2011_09_30_drive_0028_sync 597 l
+2011_09_26/2011_09_26_drive_0039_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 153 r
+2011_09_26/2011_09_26_drive_0087_sync 618 l
+2011_10_03/2011_10_03_drive_0034_sync 1436 l
+2011_09_30/2011_09_30_drive_0020_sync 338 l
+2011_09_26/2011_09_26_drive_0018_sync 201 r
+2011_10_03/2011_10_03_drive_0042_sync 352 l
+2011_09_26/2011_09_26_drive_0087_sync 12 r
+2011_10_03/2011_10_03_drive_0042_sync 444 l
+2011_10_03/2011_10_03_drive_0034_sync 2599 l
+2011_09_26/2011_09_26_drive_0018_sync 178 r
+2011_09_26/2011_09_26_drive_0061_sync 98 l
+2011_10_03/2011_10_03_drive_0042_sync 757 r
+2011_10_03/2011_10_03_drive_0034_sync 1753 r
+2011_10_03/2011_10_03_drive_0034_sync 3472 l
+2011_09_26/2011_09_26_drive_0061_sync 431 l
+2011_09_26/2011_09_26_drive_0019_sync 195 r
+2011_09_26/2011_09_26_drive_0019_sync 471 r
+2011_09_30/2011_09_30_drive_0034_sync 539 l
+2011_09_26/2011_09_26_drive_0051_sync 22 r
+2011_09_30/2011_09_30_drive_0033_sync 1014 l
+2011_09_26/2011_09_26_drive_0019_sync 258 l
+2011_09_26/2011_09_26_drive_0057_sync 46 l
+2011_10_03/2011_10_03_drive_0034_sync 2267 l
+2011_10_03/2011_10_03_drive_0042_sync 653 l
+2011_09_26/2011_09_26_drive_0005_sync 38 l
+2011_10_03/2011_10_03_drive_0042_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 5104 r
+2011_10_03/2011_10_03_drive_0034_sync 433 l
+2011_09_26/2011_09_26_drive_0087_sync 238 r
+2011_09_26/2011_09_26_drive_0039_sync 229 r
+2011_09_26/2011_09_26_drive_0028_sync 260 r
+2011_09_30/2011_09_30_drive_0020_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 3000 r
+2011_09_26/2011_09_26_drive_0087_sync 689 r
+2011_09_30/2011_09_30_drive_0034_sync 1019 l
+2011_09_30/2011_09_30_drive_0028_sync 229 l
+2011_09_30/2011_09_30_drive_0034_sync 1066 l
+2011_10_03/2011_10_03_drive_0042_sync 996 r
+2011_09_30/2011_09_30_drive_0028_sync 3239 l
+2011_09_30/2011_09_30_drive_0020_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 1774 l
+2011_09_30/2011_09_30_drive_0028_sync 3323 r
+2011_09_26/2011_09_26_drive_0079_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 3129 r
+2011_09_26/2011_09_26_drive_0087_sync 525 r
+2011_10_03/2011_10_03_drive_0034_sync 3249 l
+2011_09_26/2011_09_26_drive_0015_sync 68 l
+2011_09_26/2011_09_26_drive_0051_sync 371 r
+2011_09_30/2011_09_30_drive_0028_sync 3221 r
+2011_09_26/2011_09_26_drive_0051_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 5127 l
+2011_09_26/2011_09_26_drive_0039_sync 380 l
+2011_09_30/2011_09_30_drive_0028_sync 3954 l
+2011_09_30/2011_09_30_drive_0028_sync 3305 r
+2011_09_26/2011_09_26_drive_0022_sync 747 l
+2011_09_26/2011_09_26_drive_0095_sync 74 l
+2011_09_26/2011_09_26_drive_0014_sync 217 l
+2011_09_26/2011_09_26_drive_0087_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 2188 r
+2011_10_03/2011_10_03_drive_0042_sync 465 r
+2011_09_30/2011_09_30_drive_0033_sync 1113 l
+2011_09_26/2011_09_26_drive_0087_sync 404 l
+2011_09_30/2011_09_30_drive_0028_sync 1442 l
+2011_09_30/2011_09_30_drive_0033_sync 452 r
+2011_09_26/2011_09_26_drive_0014_sync 206 r
+2011_09_26/2011_09_26_drive_0014_sync 221 r
+2011_10_03/2011_10_03_drive_0034_sync 3239 l
+2011_09_26/2011_09_26_drive_0095_sync 83 l
+2011_09_26/2011_09_26_drive_0051_sync 420 l
+2011_09_30/2011_09_30_drive_0033_sync 1272 l
+2011_09_30/2011_09_30_drive_0028_sync 4296 l
+2011_10_03/2011_10_03_drive_0034_sync 2919 l
+2011_09_30/2011_09_30_drive_0033_sync 812 l
+2011_09_26/2011_09_26_drive_0051_sync 404 l
+2011_09_26/2011_09_26_drive_0087_sync 367 l
+2011_09_26/2011_09_26_drive_0022_sync 794 r
+2011_09_26/2011_09_26_drive_0087_sync 514 l
+2011_10_03/2011_10_03_drive_0034_sync 3925 r
+2011_10_03/2011_10_03_drive_0034_sync 4177 l
+2011_09_30/2011_09_30_drive_0034_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 1538 l
+2011_09_30/2011_09_30_drive_0033_sync 328 l
+2011_09_30/2011_09_30_drive_0020_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 4165 l
+2011_10_03/2011_10_03_drive_0034_sync 3221 r
+2011_09_26/2011_09_26_drive_0018_sync 132 r
+2011_10_03/2011_10_03_drive_0034_sync 2631 r
+2011_10_03/2011_10_03_drive_0034_sync 4273 r
+2011_10_03/2011_10_03_drive_0034_sync 1469 r
+2011_09_30/2011_09_30_drive_0028_sync 2084 r
+2011_09_26/2011_09_26_drive_0028_sync 83 l
+2011_09_26/2011_09_26_drive_0051_sync 83 r
+2011_10_03/2011_10_03_drive_0034_sync 1055 r
+2011_09_30/2011_09_30_drive_0028_sync 492 r
+2011_09_26/2011_09_26_drive_0057_sync 316 l
+2011_09_30/2011_09_30_drive_0033_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 2382 r
+2011_09_26/2011_09_26_drive_0028_sync 291 l
+2011_09_26/2011_09_26_drive_0028_sync 408 r
+2011_09_30/2011_09_30_drive_0028_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 3481 l
+2011_09_30/2011_09_30_drive_0028_sync 2726 r
+2011_09_30/2011_09_30_drive_0028_sync 2701 r
+2011_09_26/2011_09_26_drive_0039_sync 357 l
+2011_09_26/2011_09_26_drive_0014_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 3037 l
+2011_09_30/2011_09_30_drive_0028_sync 136 l
+2011_10_03/2011_10_03_drive_0042_sync 298 l
+2011_09_26/2011_09_26_drive_0061_sync 455 l
+2011_09_28/2011_09_28_drive_0001_sync 20 r
+2011_09_30/2011_09_30_drive_0034_sync 1184 l
+2011_09_30/2011_09_30_drive_0028_sync 2059 r
+2011_09_26/2011_09_26_drive_0039_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 1410 l
+2011_09_26/2011_09_26_drive_0057_sync 185 l
+2011_10_03/2011_10_03_drive_0034_sync 4237 l
+2011_10_03/2011_10_03_drive_0042_sync 434 r
+2011_10_03/2011_10_03_drive_0042_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 5133 r
+2011_10_03/2011_10_03_drive_0042_sync 667 l
+2011_09_30/2011_09_30_drive_0028_sync 33 l
+2011_09_29/2011_09_29_drive_0004_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 1469 r
+2011_09_30/2011_09_30_drive_0033_sync 113 r
+2011_09_28/2011_09_28_drive_0001_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 4232 r
+2011_09_26/2011_09_26_drive_0087_sync 444 r
+2011_09_26/2011_09_26_drive_0028_sync 360 r
+2011_09_30/2011_09_30_drive_0020_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 2201 l
+2011_09_30/2011_09_30_drive_0028_sync 4966 l
+2011_09_26/2011_09_26_drive_0104_sync 161 l
+2011_09_26/2011_09_26_drive_0032_sync 54 r
+2011_09_30/2011_09_30_drive_0033_sync 762 r
+2011_10_03/2011_10_03_drive_0034_sync 947 r
+2011_09_26/2011_09_26_drive_0091_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 2918 l
+2011_10_03/2011_10_03_drive_0034_sync 2485 r
+2011_09_30/2011_09_30_drive_0028_sync 2483 r
+2011_09_26/2011_09_26_drive_0104_sync 154 r
+2011_09_26/2011_09_26_drive_0051_sync 345 r
+2011_10_03/2011_10_03_drive_0042_sync 686 r
+2011_09_30/2011_09_30_drive_0028_sync 816 l
+2011_09_30/2011_09_30_drive_0028_sync 2124 l
+2011_09_26/2011_09_26_drive_0091_sync 163 r
+2011_09_26/2011_09_26_drive_0022_sync 705 l
+2011_09_30/2011_09_30_drive_0028_sync 999 r
+2011_09_26/2011_09_26_drive_0022_sync 399 r
+2011_09_30/2011_09_30_drive_0028_sync 4725 r
+2011_09_26/2011_09_26_drive_0091_sync 144 r
+2011_09_30/2011_09_30_drive_0020_sync 539 r
+2011_09_26/2011_09_26_drive_0104_sync 0 r
+2011_09_26/2011_09_26_drive_0087_sync 496 r
+2011_09_26/2011_09_26_drive_0022_sync 173 r
+2011_09_26/2011_09_26_drive_0095_sync 162 r
+2011_09_29/2011_09_29_drive_0004_sync 212 l
+2011_09_26/2011_09_26_drive_0039_sync 381 l
+2011_10_03/2011_10_03_drive_0042_sync 1099 l
+2011_09_30/2011_09_30_drive_0034_sync 504 l
+2011_09_26/2011_09_26_drive_0018_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 1071 r
+2011_09_26/2011_09_26_drive_0070_sync 284 r
+2011_09_30/2011_09_30_drive_0034_sync 1165 l
+2011_09_26/2011_09_26_drive_0032_sync 208 r
+2011_09_30/2011_09_30_drive_0033_sync 554 l
+2011_10_03/2011_10_03_drive_0034_sync 3341 r
+2011_10_03/2011_10_03_drive_0042_sync 739 r
+2011_09_30/2011_09_30_drive_0020_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 10 l
+2011_09_26/2011_09_26_drive_0039_sync 161 r
+2011_10_03/2011_10_03_drive_0042_sync 969 l
+2011_09_26/2011_09_26_drive_0087_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 2558 l
+2011_10_03/2011_10_03_drive_0034_sync 3039 r
+2011_09_30/2011_09_30_drive_0034_sync 898 r
+2011_09_26/2011_09_26_drive_0015_sync 226 r
+2011_10_03/2011_10_03_drive_0042_sync 329 l
+2011_09_30/2011_09_30_drive_0028_sync 1366 l
+2011_09_30/2011_09_30_drive_0028_sync 2091 r
+2011_10_03/2011_10_03_drive_0034_sync 2826 r
+2011_09_26/2011_09_26_drive_0061_sync 44 l
+2011_09_26/2011_09_26_drive_0018_sync 95 l
+2011_10_03/2011_10_03_drive_0042_sync 529 l
+2011_09_26/2011_09_26_drive_0028_sync 209 l
+2011_09_26/2011_09_26_drive_0087_sync 73 r
+2011_09_30/2011_09_30_drive_0020_sync 302 r
+2011_09_28/2011_09_28_drive_0001_sync 87 l
+2011_09_30/2011_09_30_drive_0034_sync 959 l
+2011_09_30/2011_09_30_drive_0034_sync 546 r
+2011_09_30/2011_09_30_drive_0028_sync 3792 r
+2011_09_26/2011_09_26_drive_0104_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 168 r
+2011_09_26/2011_09_26_drive_0113_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 1404 r
+2011_09_30/2011_09_30_drive_0020_sync 210 l
+2011_09_26/2011_09_26_drive_0061_sync 454 l
+2011_09_26/2011_09_26_drive_0022_sync 241 l
+2011_09_26/2011_09_26_drive_0079_sync 25 l
+2011_09_26/2011_09_26_drive_0070_sync 292 l
+2011_09_30/2011_09_30_drive_0028_sync 1844 l
+2011_09_26/2011_09_26_drive_0087_sync 87 l
+2011_10_03/2011_10_03_drive_0042_sync 938 l
+2011_09_30/2011_09_30_drive_0028_sync 4936 l
+2011_09_29/2011_09_29_drive_0026_sync 97 r
+2011_10_03/2011_10_03_drive_0042_sync 139 r
+2011_09_30/2011_09_30_drive_0020_sync 947 l
+2011_09_26/2011_09_26_drive_0113_sync 83 l
+2011_09_26/2011_09_26_drive_0087_sync 224 r
+2011_09_26/2011_09_26_drive_0104_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 2723 r
+2011_09_30/2011_09_30_drive_0034_sync 776 r
+2011_10_03/2011_10_03_drive_0034_sync 908 r
+2011_09_26/2011_09_26_drive_0051_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 1267 l
+2011_09_26/2011_09_26_drive_0051_sync 134 l
+2011_10_03/2011_10_03_drive_0042_sync 898 r
+2011_10_03/2011_10_03_drive_0034_sync 1542 l
+2011_09_30/2011_09_30_drive_0028_sync 1723 l
+2011_09_30/2011_09_30_drive_0028_sync 4443 r
+2011_09_30/2011_09_30_drive_0033_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 531 r
+2011_09_30/2011_09_30_drive_0028_sync 1809 l
+2011_09_30/2011_09_30_drive_0028_sync 1637 l
+2011_09_30/2011_09_30_drive_0028_sync 4135 l
+2011_09_30/2011_09_30_drive_0020_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 3454 r
+2011_10_03/2011_10_03_drive_0042_sync 592 r
+2011_09_30/2011_09_30_drive_0033_sync 1333 l
+2011_09_30/2011_09_30_drive_0034_sync 89 r
+2011_09_26/2011_09_26_drive_0022_sync 489 r
+2011_09_29/2011_09_29_drive_0004_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 4700 r
+2011_09_26/2011_09_26_drive_0011_sync 158 l
+2011_10_03/2011_10_03_drive_0034_sync 2915 r
+2011_09_30/2011_09_30_drive_0034_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 2948 r
+2011_10_03/2011_10_03_drive_0034_sync 3776 r
+2011_10_03/2011_10_03_drive_0034_sync 1869 r
+2011_10_03/2011_10_03_drive_0034_sync 1293 l
+2011_10_03/2011_10_03_drive_0034_sync 4412 l
+2011_09_30/2011_09_30_drive_0028_sync 5035 r
+2011_09_26/2011_09_26_drive_0022_sync 4 r
+2011_09_26/2011_09_26_drive_0070_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 1830 l
+2011_09_26/2011_09_26_drive_0051_sync 176 l
+2011_09_30/2011_09_30_drive_0033_sync 1081 l
+2011_09_30/2011_09_30_drive_0033_sync 807 l
+2011_09_30/2011_09_30_drive_0028_sync 4878 r
+2011_09_30/2011_09_30_drive_0033_sync 886 r
+2011_09_30/2011_09_30_drive_0028_sync 3690 r
+2011_10_03/2011_10_03_drive_0034_sync 1205 l
+2011_09_30/2011_09_30_drive_0028_sync 4421 r
+2011_09_30/2011_09_30_drive_0028_sync 2170 r
+2011_09_26/2011_09_26_drive_0015_sync 190 l
+2011_09_30/2011_09_30_drive_0033_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 4656 l
+2011_09_30/2011_09_30_drive_0028_sync 4858 r
+2011_10_03/2011_10_03_drive_0034_sync 3630 l
+2011_09_26/2011_09_26_drive_0028_sync 14 r
+2011_09_26/2011_09_26_drive_0104_sync 282 l
+2011_09_26/2011_09_26_drive_0001_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 349 r
+2011_10_03/2011_10_03_drive_0034_sync 3850 r
+2011_09_30/2011_09_30_drive_0033_sync 664 l
+2011_09_30/2011_09_30_drive_0033_sync 1412 l
+2011_09_30/2011_09_30_drive_0033_sync 438 r
+2011_09_26/2011_09_26_drive_0091_sync 318 l
+2011_09_30/2011_09_30_drive_0028_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 2061 l
+2011_09_30/2011_09_30_drive_0020_sync 590 r
+2011_09_26/2011_09_26_drive_0061_sync 243 l
+2011_09_26/2011_09_26_drive_0057_sync 303 l
+2011_09_26/2011_09_26_drive_0104_sync 184 l
+2011_09_30/2011_09_30_drive_0033_sync 1003 r
+2011_09_26/2011_09_26_drive_0079_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 2589 r
+2011_09_26/2011_09_26_drive_0079_sync 24 l
+2011_09_26/2011_09_26_drive_0070_sync 182 l
+2011_10_03/2011_10_03_drive_0034_sync 726 r
+2011_10_03/2011_10_03_drive_0042_sync 1005 l
+2011_10_03/2011_10_03_drive_0034_sync 295 r
+2011_09_30/2011_09_30_drive_0028_sync 4449 l
+2011_10_03/2011_10_03_drive_0034_sync 3994 l
+2011_10_03/2011_10_03_drive_0034_sync 3714 l
+2011_09_30/2011_09_30_drive_0020_sync 74 l
+2011_09_26/2011_09_26_drive_0039_sync 267 r
+2011_09_26/2011_09_26_drive_0022_sync 596 r
+2011_09_26/2011_09_26_drive_0051_sync 69 r
+2011_09_26/2011_09_26_drive_0015_sync 198 l
+2011_09_30/2011_09_30_drive_0028_sync 3826 r
+2011_10_03/2011_10_03_drive_0034_sync 2920 l
+2011_09_30/2011_09_30_drive_0028_sync 5019 r
+2011_09_30/2011_09_30_drive_0028_sync 2499 l
+2011_09_26/2011_09_26_drive_0091_sync 107 l
+2011_09_26/2011_09_26_drive_0015_sync 266 l
+2011_10_03/2011_10_03_drive_0042_sync 1059 l
+2011_09_30/2011_09_30_drive_0033_sync 825 l
+2011_09_30/2011_09_30_drive_0028_sync 4201 l
+2011_09_30/2011_09_30_drive_0020_sync 957 r
+2011_10_03/2011_10_03_drive_0034_sync 66 l
+2011_09_30/2011_09_30_drive_0028_sync 853 r
+2011_09_30/2011_09_30_drive_0028_sync 3530 r
+2011_09_30/2011_09_30_drive_0028_sync 788 r
+2011_09_26/2011_09_26_drive_0011_sync 195 l
+2011_09_30/2011_09_30_drive_0028_sync 4555 r
+2011_10_03/2011_10_03_drive_0034_sync 4222 r
+2011_10_03/2011_10_03_drive_0042_sync 230 r
+2011_09_30/2011_09_30_drive_0033_sync 1069 r
+2011_09_30/2011_09_30_drive_0028_sync 3983 l
+2011_10_03/2011_10_03_drive_0034_sync 4334 l
+2011_09_30/2011_09_30_drive_0034_sync 117 l
+2011_10_03/2011_10_03_drive_0034_sync 3848 r
+2011_09_26/2011_09_26_drive_0014_sync 237 l
+2011_09_26/2011_09_26_drive_0095_sync 195 l
+2011_09_30/2011_09_30_drive_0034_sync 273 l
+2011_09_26/2011_09_26_drive_0087_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2854 l
+2011_09_26/2011_09_26_drive_0035_sync 64 r
+2011_09_26/2011_09_26_drive_0022_sync 94 l
+2011_09_26/2011_09_26_drive_0051_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 4760 r
+2011_09_26/2011_09_26_drive_0051_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 5103 l
+2011_09_26/2011_09_26_drive_0057_sync 280 r
+2011_09_26/2011_09_26_drive_0018_sync 187 l
+2011_09_26/2011_09_26_drive_0032_sync 255 l
+2011_09_26/2011_09_26_drive_0032_sync 370 l
+2011_09_30/2011_09_30_drive_0034_sync 459 r
+2011_09_30/2011_09_30_drive_0034_sync 87 r
+2011_09_26/2011_09_26_drive_0011_sync 53 r
+2011_10_03/2011_10_03_drive_0042_sync 21 l
+2011_09_29/2011_09_29_drive_0004_sync 251 r
+2011_09_30/2011_09_30_drive_0020_sync 645 l
+2011_10_03/2011_10_03_drive_0034_sync 1938 r
+2011_09_29/2011_09_29_drive_0004_sync 22 l
+2011_10_03/2011_10_03_drive_0042_sync 199 r
+2011_09_30/2011_09_30_drive_0034_sync 837 l
+2011_10_03/2011_10_03_drive_0034_sync 413 r
+2011_09_26/2011_09_26_drive_0070_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 1412 l
+2011_09_26/2011_09_26_drive_0022_sync 463 l
+2011_09_26/2011_09_26_drive_0032_sync 26 l
+2011_09_30/2011_09_30_drive_0033_sync 1106 r
+2011_09_30/2011_09_30_drive_0028_sync 1229 r
+2011_09_30/2011_09_30_drive_0034_sync 1142 r
+2011_09_26/2011_09_26_drive_0039_sync 296 l
+2011_09_26/2011_09_26_drive_0017_sync 41 r
+2011_09_26/2011_09_26_drive_0022_sync 340 l
+2011_09_30/2011_09_30_drive_0028_sync 2852 r
+2011_09_30/2011_09_30_drive_0033_sync 1041 r
+2011_09_26/2011_09_26_drive_0018_sync 89 r
+2011_10_03/2011_10_03_drive_0042_sync 271 l
+2011_09_26/2011_09_26_drive_0057_sync 184 l
+2011_09_30/2011_09_30_drive_0033_sync 255 r
+2011_09_26/2011_09_26_drive_0061_sync 359 l
+2011_09_26/2011_09_26_drive_0018_sync 140 r
+2011_09_30/2011_09_30_drive_0033_sync 44 r
+2011_09_26/2011_09_26_drive_0057_sync 259 r
+2011_09_26/2011_09_26_drive_0087_sync 372 r
+2011_09_26/2011_09_26_drive_0087_sync 184 l
+2011_10_03/2011_10_03_drive_0042_sync 1157 l
+2011_10_03/2011_10_03_drive_0034_sync 4425 r
+2011_09_26/2011_09_26_drive_0015_sync 195 l
+2011_09_26/2011_09_26_drive_0018_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 3617 r
+2011_09_26/2011_09_26_drive_0095_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 1907 r
+2011_09_30/2011_09_30_drive_0028_sync 1260 l
+2011_10_03/2011_10_03_drive_0034_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 3805 r
+2011_09_26/2011_09_26_drive_0028_sync 156 l
+2011_10_03/2011_10_03_drive_0034_sync 3199 l
+2011_10_03/2011_10_03_drive_0034_sync 3031 r
+2011_09_30/2011_09_30_drive_0028_sync 965 l
+2011_09_30/2011_09_30_drive_0034_sync 418 l
+2011_10_03/2011_10_03_drive_0034_sync 2308 r
+2011_09_30/2011_09_30_drive_0028_sync 4453 l
+2011_09_30/2011_09_30_drive_0033_sync 455 r
+2011_09_30/2011_09_30_drive_0033_sync 1073 l
+2011_09_30/2011_09_30_drive_0028_sync 2038 l
+2011_09_30/2011_09_30_drive_0033_sync 991 r
+2011_10_03/2011_10_03_drive_0034_sync 3490 r
+2011_09_26/2011_09_26_drive_0022_sync 741 r
+2011_10_03/2011_10_03_drive_0034_sync 1505 l
+2011_10_03/2011_10_03_drive_0042_sync 836 l
+2011_09_26/2011_09_26_drive_0091_sync 331 r
+2011_09_30/2011_09_30_drive_0033_sync 996 r
+2011_09_26/2011_09_26_drive_0039_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 1200 l
+2011_10_03/2011_10_03_drive_0034_sync 4006 l
+2011_10_03/2011_10_03_drive_0034_sync 6 l
+2011_09_26/2011_09_26_drive_0070_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 2914 r
+2011_10_03/2011_10_03_drive_0034_sync 3745 l
+2011_09_26/2011_09_26_drive_0091_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 3787 l
+2011_09_26/2011_09_26_drive_0091_sync 1 r
+2011_09_30/2011_09_30_drive_0034_sync 535 l
+2011_09_30/2011_09_30_drive_0028_sync 5156 r
+2011_09_30/2011_09_30_drive_0028_sync 846 r
+2011_09_30/2011_09_30_drive_0028_sync 498 l
+2011_09_26/2011_09_26_drive_0005_sync 36 r
+2011_09_26/2011_09_26_drive_0022_sync 330 l
+2011_09_30/2011_09_30_drive_0028_sync 2356 r
+2011_09_30/2011_09_30_drive_0028_sync 4619 r
+2011_10_03/2011_10_03_drive_0042_sync 269 l
+2011_09_26/2011_09_26_drive_0018_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 681 l
+2011_09_26/2011_09_26_drive_0019_sync 415 l
+2011_09_30/2011_09_30_drive_0034_sync 581 r
+2011_09_30/2011_09_30_drive_0028_sync 4800 r
+2011_09_30/2011_09_30_drive_0028_sync 4169 r
+2011_09_30/2011_09_30_drive_0033_sync 751 l
+2011_10_03/2011_10_03_drive_0034_sync 766 r
+2011_09_26/2011_09_26_drive_0028_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 3876 l
+2011_09_30/2011_09_30_drive_0028_sync 444 l
+2011_09_26/2011_09_26_drive_0032_sync 229 r
+2011_09_30/2011_09_30_drive_0033_sync 654 l
+2011_10_03/2011_10_03_drive_0034_sync 692 r
+2011_09_30/2011_09_30_drive_0028_sync 5060 r
+2011_09_26/2011_09_26_drive_0057_sync 282 l
+2011_09_26/2011_09_26_drive_0104_sync 239 r
+2011_09_30/2011_09_30_drive_0028_sync 2618 r
+2011_09_26/2011_09_26_drive_0070_sync 356 r
+2011_09_26/2011_09_26_drive_0087_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 3939 r
+2011_09_26/2011_09_26_drive_0091_sync 301 l
+2011_09_30/2011_09_30_drive_0020_sync 665 r
+2011_09_26/2011_09_26_drive_0022_sync 428 l
+2011_10_03/2011_10_03_drive_0034_sync 459 r
+2011_09_30/2011_09_30_drive_0028_sync 4299 l
+2011_09_26/2011_09_26_drive_0032_sync 277 r
+2011_09_26/2011_09_26_drive_0028_sync 192 l
+2011_09_26/2011_09_26_drive_0028_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 481 l
+2011_09_30/2011_09_30_drive_0028_sync 5118 r
+2011_09_26/2011_09_26_drive_0014_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 1138 l
+2011_10_03/2011_10_03_drive_0034_sync 708 l
+2011_09_30/2011_09_30_drive_0028_sync 1935 l
+2011_09_29/2011_09_29_drive_0004_sync 97 l
+2011_09_26/2011_09_26_drive_0022_sync 157 r
+2011_09_26/2011_09_26_drive_0039_sync 62 r
+2011_09_30/2011_09_30_drive_0033_sync 521 l
+2011_10_03/2011_10_03_drive_0034_sync 3506 l
+2011_10_03/2011_10_03_drive_0042_sync 81 r
+2011_09_28/2011_09_28_drive_0001_sync 27 r
+2011_10_03/2011_10_03_drive_0034_sync 2376 l
+2011_09_26/2011_09_26_drive_0032_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 1489 l
+2011_09_30/2011_09_30_drive_0028_sync 5101 r
+2011_10_03/2011_10_03_drive_0034_sync 4474 r
+2011_09_26/2011_09_26_drive_0104_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 4838 r
+2011_10_03/2011_10_03_drive_0034_sync 2162 l
+2011_10_03/2011_10_03_drive_0034_sync 2973 r
+2011_09_30/2011_09_30_drive_0020_sync 167 r
+2011_09_30/2011_09_30_drive_0028_sync 1509 l
+2011_09_26/2011_09_26_drive_0011_sync 222 l
+2011_09_30/2011_09_30_drive_0020_sync 610 l
+2011_09_26/2011_09_26_drive_0022_sync 221 r
+2011_09_26/2011_09_26_drive_0104_sync 132 r
+2011_09_30/2011_09_30_drive_0020_sync 500 r
+2011_09_26/2011_09_26_drive_0005_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 2576 r
+2011_09_26/2011_09_26_drive_0104_sync 305 r
+2011_09_26/2011_09_26_drive_0104_sync 126 l
+2011_09_26/2011_09_26_drive_0019_sync 14 l
+2011_09_26/2011_09_26_drive_0061_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 558 r
+2011_09_26/2011_09_26_drive_0028_sync 22 r
+2011_09_26/2011_09_26_drive_0028_sync 154 r
+2011_10_03/2011_10_03_drive_0042_sync 156 l
+2011_09_30/2011_09_30_drive_0028_sync 417 l
+2011_09_26/2011_09_26_drive_0060_sync 64 l
+2011_10_03/2011_10_03_drive_0042_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 1024 r
+2011_10_03/2011_10_03_drive_0034_sync 3082 l
+2011_09_26/2011_09_26_drive_0028_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4974 l
+2011_09_29/2011_09_29_drive_0004_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 1467 l
+2011_09_30/2011_09_30_drive_0028_sync 3389 l
+2011_10_03/2011_10_03_drive_0042_sync 95 r
+2011_10_03/2011_10_03_drive_0034_sync 821 r
+2011_09_26/2011_09_26_drive_0061_sync 255 r
+2011_09_30/2011_09_30_drive_0034_sync 622 l
+2011_10_03/2011_10_03_drive_0034_sync 735 l
+2011_09_29/2011_09_29_drive_0004_sync 120 l
+2011_09_26/2011_09_26_drive_0061_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 5015 l
+2011_10_03/2011_10_03_drive_0034_sync 1036 l
+2011_09_30/2011_09_30_drive_0028_sync 2986 l
+2011_10_03/2011_10_03_drive_0034_sync 1552 l
+2011_09_26/2011_09_26_drive_0022_sync 543 r
+2011_09_26/2011_09_26_drive_0051_sync 228 r
+2011_09_30/2011_09_30_drive_0033_sync 573 l
+2011_09_26/2011_09_26_drive_0028_sync 301 l
+2011_10_03/2011_10_03_drive_0034_sync 356 l
+2011_09_26/2011_09_26_drive_0015_sync 8 r
+2011_09_26/2011_09_26_drive_0032_sync 152 l
+2011_09_30/2011_09_30_drive_0034_sync 1124 r
+2011_09_30/2011_09_30_drive_0028_sync 3897 l
+2011_09_30/2011_09_30_drive_0028_sync 4796 r
+2011_09_26/2011_09_26_drive_0032_sync 164 l
+2011_09_26/2011_09_26_drive_0018_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 3054 l
+2011_10_03/2011_10_03_drive_0034_sync 2476 r
+2011_09_30/2011_09_30_drive_0033_sync 1071 l
+2011_10_03/2011_10_03_drive_0034_sync 1693 l
+2011_09_26/2011_09_26_drive_0015_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 4447 l
+2011_09_26/2011_09_26_drive_0015_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 4118 r
+2011_09_26/2011_09_26_drive_0022_sync 479 l
+2011_09_26/2011_09_26_drive_0015_sync 289 l
+2011_09_30/2011_09_30_drive_0033_sync 1500 r
+2011_10_03/2011_10_03_drive_0034_sync 36 r
+2011_09_30/2011_09_30_drive_0034_sync 170 l
+2011_09_30/2011_09_30_drive_0028_sync 3285 l
+2011_09_26/2011_09_26_drive_0022_sync 369 l
+2011_09_30/2011_09_30_drive_0028_sync 953 l
+2011_09_30/2011_09_30_drive_0033_sync 1182 l
+2011_09_26/2011_09_26_drive_0057_sync 226 r
+2011_09_26/2011_09_26_drive_0057_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 3204 l
+2011_09_30/2011_09_30_drive_0028_sync 3322 r
+2011_09_26/2011_09_26_drive_0087_sync 662 r
+2011_09_26/2011_09_26_drive_0051_sync 238 l
+2011_09_26/2011_09_26_drive_0022_sync 389 l
+2011_09_26/2011_09_26_drive_0061_sync 128 r
+2011_10_03/2011_10_03_drive_0034_sync 3253 r
+2011_10_03/2011_10_03_drive_0034_sync 1370 r
+2011_09_30/2011_09_30_drive_0033_sync 959 r
+2011_09_26/2011_09_26_drive_0032_sync 145 l
+2011_10_03/2011_10_03_drive_0034_sync 1529 r
+2011_09_30/2011_09_30_drive_0028_sync 506 l
+2011_10_03/2011_10_03_drive_0042_sync 1116 r
+2011_09_30/2011_09_30_drive_0033_sync 671 l
+2011_09_30/2011_09_30_drive_0028_sync 3009 l
+2011_09_30/2011_09_30_drive_0028_sync 3290 l
+2011_09_30/2011_09_30_drive_0033_sync 792 l
+2011_09_30/2011_09_30_drive_0033_sync 1201 r
+2011_10_03/2011_10_03_drive_0034_sync 1150 r
+2011_09_30/2011_09_30_drive_0033_sync 1311 l
+2011_10_03/2011_10_03_drive_0042_sync 1106 r
+2011_09_30/2011_09_30_drive_0028_sync 907 l
+2011_09_30/2011_09_30_drive_0033_sync 310 r
+2011_10_03/2011_10_03_drive_0042_sync 996 l
+2011_09_26/2011_09_26_drive_0022_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 616 r
+2011_09_26/2011_09_26_drive_0022_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 987 l
+2011_09_26/2011_09_26_drive_0087_sync 236 r
+2011_09_30/2011_09_30_drive_0028_sync 2664 l
+2011_09_26/2011_09_26_drive_0091_sync 200 r
+2011_10_03/2011_10_03_drive_0034_sync 3067 r
+2011_09_26/2011_09_26_drive_0095_sync 25 r
+2011_09_26/2011_09_26_drive_0079_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 1210 r
+2011_09_30/2011_09_30_drive_0028_sync 2694 r
+2011_10_03/2011_10_03_drive_0034_sync 3348 r
+2011_10_03/2011_10_03_drive_0034_sync 4187 r
+2011_09_30/2011_09_30_drive_0028_sync 2897 r
+2011_09_26/2011_09_26_drive_0001_sync 66 r
+2011_09_26/2011_09_26_drive_0079_sync 89 l
+2011_09_30/2011_09_30_drive_0028_sync 677 l
+2011_09_30/2011_09_30_drive_0020_sync 659 l
+2011_10_03/2011_10_03_drive_0034_sync 4658 l
+2011_10_03/2011_10_03_drive_0034_sync 4246 r
+2011_09_30/2011_09_30_drive_0028_sync 2628 l
+2011_09_30/2011_09_30_drive_0028_sync 1074 l
+2011_09_30/2011_09_30_drive_0028_sync 4162 r
+2011_09_26/2011_09_26_drive_0011_sync 1 r
+2011_09_26/2011_09_26_drive_0070_sync 329 r
+2011_10_03/2011_10_03_drive_0034_sync 2088 r
+2011_09_26/2011_09_26_drive_0019_sync 398 r
+2011_09_26/2011_09_26_drive_0091_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 2924 r
+2011_09_26/2011_09_26_drive_0091_sync 287 r
+2011_09_26/2011_09_26_drive_0015_sync 78 l
+2011_09_26/2011_09_26_drive_0061_sync 511 r
+2011_09_30/2011_09_30_drive_0028_sync 4685 r
+2011_09_30/2011_09_30_drive_0033_sync 782 r
+2011_09_30/2011_09_30_drive_0028_sync 3780 r
+2011_10_03/2011_10_03_drive_0034_sync 3225 l
+2011_09_26/2011_09_26_drive_0091_sync 93 l
+2011_09_26/2011_09_26_drive_0051_sync 2 r
+2011_09_26/2011_09_26_drive_0104_sync 60 r
+2011_10_03/2011_10_03_drive_0042_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 2580 r
+2011_09_26/2011_09_26_drive_0022_sync 712 r
+2011_09_30/2011_09_30_drive_0033_sync 284 l
+2011_10_03/2011_10_03_drive_0042_sync 198 l
+2011_09_30/2011_09_30_drive_0033_sync 1530 l
+2011_10_03/2011_10_03_drive_0034_sync 3784 l
+2011_10_03/2011_10_03_drive_0034_sync 2603 r
+2011_10_03/2011_10_03_drive_0034_sync 812 r
+2011_09_26/2011_09_26_drive_0022_sync 667 r
+2011_10_03/2011_10_03_drive_0034_sync 1386 l
+2011_09_30/2011_09_30_drive_0034_sync 430 r
+2011_10_03/2011_10_03_drive_0034_sync 477 l
+2011_10_03/2011_10_03_drive_0034_sync 3838 r
+2011_09_30/2011_09_30_drive_0028_sync 4629 r
+2011_09_26/2011_09_26_drive_0028_sync 338 l
+2011_10_03/2011_10_03_drive_0034_sync 1005 l
+2011_09_30/2011_09_30_drive_0020_sync 723 l
+2011_09_30/2011_09_30_drive_0028_sync 536 r
+2011_09_30/2011_09_30_drive_0020_sync 677 r
+2011_09_30/2011_09_30_drive_0028_sync 1481 r
+2011_09_30/2011_09_30_drive_0034_sync 751 r
+2011_09_26/2011_09_26_drive_0061_sync 575 l
+2011_09_30/2011_09_30_drive_0033_sync 127 r
+2011_09_30/2011_09_30_drive_0034_sync 206 r
+2011_09_30/2011_09_30_drive_0020_sync 439 l
+2011_09_26/2011_09_26_drive_0001_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 4545 l
+2011_10_03/2011_10_03_drive_0034_sync 3573 l
+2011_09_30/2011_09_30_drive_0020_sync 679 l
+2011_09_26/2011_09_26_drive_0060_sync 25 l
+2011_10_03/2011_10_03_drive_0042_sync 1066 r
+2011_09_30/2011_09_30_drive_0033_sync 730 l
+2011_09_26/2011_09_26_drive_0039_sync 222 l
+2011_09_26/2011_09_26_drive_0057_sync 335 l
+2011_09_30/2011_09_30_drive_0033_sync 1136 r
+2011_09_26/2011_09_26_drive_0018_sync 44 l
+2011_09_30/2011_09_30_drive_0033_sync 1253 l
+2011_09_26/2011_09_26_drive_0051_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 1443 l
+2011_10_03/2011_10_03_drive_0034_sync 2553 l
+2011_10_03/2011_10_03_drive_0034_sync 2475 l
+2011_09_30/2011_09_30_drive_0028_sync 3268 r
+2011_09_26/2011_09_26_drive_0057_sync 2 r
+2011_09_30/2011_09_30_drive_0034_sync 431 r
+2011_09_30/2011_09_30_drive_0028_sync 3449 r
+2011_09_26/2011_09_26_drive_0019_sync 459 r
+2011_10_03/2011_10_03_drive_0034_sync 2716 l
+2011_09_30/2011_09_30_drive_0034_sync 426 l
+2011_09_30/2011_09_30_drive_0028_sync 3919 l
+2011_10_03/2011_10_03_drive_0034_sync 1708 l
+2011_09_30/2011_09_30_drive_0028_sync 3892 r
+2011_09_30/2011_09_30_drive_0028_sync 3854 r
+2011_10_03/2011_10_03_drive_0034_sync 4342 r
+2011_09_26/2011_09_26_drive_0091_sync 285 r
+2011_10_03/2011_10_03_drive_0034_sync 2764 r
+2011_10_03/2011_10_03_drive_0034_sync 2563 l
+2011_10_03/2011_10_03_drive_0042_sync 318 r
+2011_09_30/2011_09_30_drive_0034_sync 312 l
+2011_09_26/2011_09_26_drive_0019_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 4419 r
+2011_10_03/2011_10_03_drive_0042_sync 1008 r
+2011_09_30/2011_09_30_drive_0034_sync 1077 r
+2011_10_03/2011_10_03_drive_0034_sync 2208 r
+2011_09_30/2011_09_30_drive_0020_sync 875 l
+2011_09_26/2011_09_26_drive_0019_sync 181 r
+2011_10_03/2011_10_03_drive_0034_sync 1130 l
+2011_09_26/2011_09_26_drive_0032_sync 373 l
+2011_09_30/2011_09_30_drive_0028_sync 2505 l
+2011_09_30/2011_09_30_drive_0033_sync 325 l
+2011_09_26/2011_09_26_drive_0032_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 2121 r
+2011_10_03/2011_10_03_drive_0034_sync 1967 l
+2011_09_30/2011_09_30_drive_0028_sync 1788 l
+2011_09_26/2011_09_26_drive_0039_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 3519 l
+2011_09_26/2011_09_26_drive_0039_sync 73 l
+2011_09_26/2011_09_26_drive_0061_sync 577 l
+2011_09_26/2011_09_26_drive_0095_sync 103 r
+2011_09_26/2011_09_26_drive_0087_sync 14 r
+2011_09_30/2011_09_30_drive_0020_sync 11 r
+2011_09_26/2011_09_26_drive_0039_sync 236 r
+2011_09_26/2011_09_26_drive_0087_sync 335 r
+2011_09_30/2011_09_30_drive_0033_sync 1324 r
+2011_09_30/2011_09_30_drive_0034_sync 1084 l
+2011_10_03/2011_10_03_drive_0034_sync 2059 l
+2011_09_30/2011_09_30_drive_0028_sync 1022 r
+2011_09_30/2011_09_30_drive_0034_sync 806 l
+2011_10_03/2011_10_03_drive_0034_sync 1593 l
+2011_09_29/2011_09_29_drive_0004_sync 85 r
+2011_10_03/2011_10_03_drive_0034_sync 4559 l
+2011_10_03/2011_10_03_drive_0042_sync 811 r
+2011_09_26/2011_09_26_drive_0022_sync 514 l
+2011_10_03/2011_10_03_drive_0034_sync 2886 l
+2011_10_03/2011_10_03_drive_0034_sync 2750 r
+2011_10_03/2011_10_03_drive_0034_sync 2767 r
+2011_09_26/2011_09_26_drive_0035_sync 44 l
+2011_09_30/2011_09_30_drive_0034_sync 403 l
+2011_09_30/2011_09_30_drive_0033_sync 606 l
+2011_10_03/2011_10_03_drive_0034_sync 3283 r
+2011_10_03/2011_10_03_drive_0034_sync 3061 r
+2011_09_26/2011_09_26_drive_0005_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 4001 r
+2011_10_03/2011_10_03_drive_0042_sync 411 r
+2011_09_26/2011_09_26_drive_0087_sync 361 r
+2011_09_26/2011_09_26_drive_0079_sync 60 r
+2011_09_29/2011_09_29_drive_0004_sync 239 l
+2011_10_03/2011_10_03_drive_0034_sync 4024 l
+2011_09_26/2011_09_26_drive_0061_sync 593 l
+2011_10_03/2011_10_03_drive_0042_sync 42 r
+2011_09_26/2011_09_26_drive_0051_sync 85 l
+2011_09_30/2011_09_30_drive_0034_sync 1183 r
+2011_10_03/2011_10_03_drive_0034_sync 114 r
+2011_09_26/2011_09_26_drive_0011_sync 130 r
+2011_10_03/2011_10_03_drive_0042_sync 576 l
+2011_10_03/2011_10_03_drive_0034_sync 2978 r
+2011_09_26/2011_09_26_drive_0018_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 2506 r
+2011_09_26/2011_09_26_drive_0022_sync 225 l
+2011_09_26/2011_09_26_drive_0104_sync 204 r
+2011_09_30/2011_09_30_drive_0028_sync 914 r
+2011_09_26/2011_09_26_drive_0022_sync 609 l
+2011_09_30/2011_09_30_drive_0034_sync 1079 l
+2011_09_30/2011_09_30_drive_0028_sync 1208 l
+2011_09_30/2011_09_30_drive_0033_sync 711 r
+2011_09_26/2011_09_26_drive_0032_sync 284 l
+2011_09_30/2011_09_30_drive_0033_sync 673 l
+2011_09_30/2011_09_30_drive_0028_sync 2228 r
+2011_09_30/2011_09_30_drive_0028_sync 410 l
+2011_09_28/2011_09_28_drive_0001_sync 12 r
+2011_09_26/2011_09_26_drive_0032_sync 261 l
+2011_09_26/2011_09_26_drive_0091_sync 92 r
+2011_09_30/2011_09_30_drive_0020_sync 845 l
+2011_09_26/2011_09_26_drive_0051_sync 19 l
+2011_09_30/2011_09_30_drive_0028_sync 560 l
+2011_09_26/2011_09_26_drive_0039_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 1729 l
+2011_09_30/2011_09_30_drive_0028_sync 283 l
+2011_09_30/2011_09_30_drive_0028_sync 2311 l
+2011_10_03/2011_10_03_drive_0034_sync 407 r
+2011_10_03/2011_10_03_drive_0034_sync 830 l
+2011_09_30/2011_09_30_drive_0028_sync 4770 l
+2011_10_03/2011_10_03_drive_0034_sync 724 l
+2011_09_26/2011_09_26_drive_0051_sync 189 r
+2011_10_03/2011_10_03_drive_0034_sync 1217 r
+2011_09_30/2011_09_30_drive_0028_sync 3664 r
+2011_09_26/2011_09_26_drive_0095_sync 174 r
+2011_10_03/2011_10_03_drive_0042_sync 896 r
+2011_09_30/2011_09_30_drive_0028_sync 2147 l
+2011_10_03/2011_10_03_drive_0034_sync 3305 r
+2011_10_03/2011_10_03_drive_0034_sync 3199 r
+2011_09_30/2011_09_30_drive_0028_sync 2198 r
+2011_10_03/2011_10_03_drive_0034_sync 2547 r
+2011_09_26/2011_09_26_drive_0079_sync 96 l
+2011_10_03/2011_10_03_drive_0034_sync 1396 l
+2011_10_03/2011_10_03_drive_0034_sync 2184 l
+2011_09_26/2011_09_26_drive_0057_sync 321 r
+2011_09_26/2011_09_26_drive_0028_sync 226 l
+2011_09_26/2011_09_26_drive_0015_sync 161 r
+2011_09_30/2011_09_30_drive_0034_sync 626 l
+2011_10_03/2011_10_03_drive_0034_sync 1597 l
+2011_09_26/2011_09_26_drive_0022_sync 661 r
+2011_10_03/2011_10_03_drive_0034_sync 2031 l
+2011_09_26/2011_09_26_drive_0015_sync 49 r
+2011_09_26/2011_09_26_drive_0005_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 3546 r
+2011_09_26/2011_09_26_drive_0019_sync 335 l
+2011_10_03/2011_10_03_drive_0034_sync 4476 r
+2011_09_26/2011_09_26_drive_0028_sync 405 r
+2011_09_30/2011_09_30_drive_0034_sync 483 r
+2011_09_30/2011_09_30_drive_0028_sync 3158 r
+2011_09_30/2011_09_30_drive_0034_sync 379 r
+2011_09_30/2011_09_30_drive_0028_sync 3454 r
+2011_09_30/2011_09_30_drive_0028_sync 1061 r
+2011_09_30/2011_09_30_drive_0033_sync 669 l
+2011_09_30/2011_09_30_drive_0028_sync 409 l
+2011_09_30/2011_09_30_drive_0034_sync 929 r
+2011_09_30/2011_09_30_drive_0028_sync 4834 r
+2011_09_30/2011_09_30_drive_0020_sync 1081 r
+2011_09_30/2011_09_30_drive_0020_sync 891 l
+2011_09_30/2011_09_30_drive_0028_sync 4739 r
+2011_10_03/2011_10_03_drive_0034_sync 3542 r
+2011_09_26/2011_09_26_drive_0019_sync 468 l
+2011_09_30/2011_09_30_drive_0033_sync 679 l
+2011_09_30/2011_09_30_drive_0028_sync 1839 r
+2011_09_30/2011_09_30_drive_0028_sync 4769 r
+2011_09_29/2011_09_29_drive_0004_sync 248 l
+2011_10_03/2011_10_03_drive_0042_sync 1158 r
+2011_09_30/2011_09_30_drive_0028_sync 2784 l
+2011_10_03/2011_10_03_drive_0042_sync 588 l
+2011_10_03/2011_10_03_drive_0034_sync 3411 r
+2011_10_03/2011_10_03_drive_0034_sync 3859 l
+2011_09_26/2011_09_26_drive_0087_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 2507 r
+2011_10_03/2011_10_03_drive_0034_sync 1246 r
+2011_09_26/2011_09_26_drive_0057_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 3632 r
+2011_09_26/2011_09_26_drive_0070_sync 143 r
+2011_09_26/2011_09_26_drive_0061_sync 196 l
+2011_09_26/2011_09_26_drive_0022_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 4270 l
+2011_09_30/2011_09_30_drive_0028_sync 2639 l
+2011_10_03/2011_10_03_drive_0042_sync 477 l
+2011_09_26/2011_09_26_drive_0011_sync 92 l
+2011_09_30/2011_09_30_drive_0033_sync 1209 l
+2011_09_26/2011_09_26_drive_0095_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 1876 l
+2011_09_26/2011_09_26_drive_0061_sync 565 r
+2011_09_30/2011_09_30_drive_0020_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 1315 l
+2011_09_30/2011_09_30_drive_0028_sync 4883 r
+2011_09_30/2011_09_30_drive_0028_sync 2688 l
+2011_10_03/2011_10_03_drive_0034_sync 2545 l
+2011_10_03/2011_10_03_drive_0034_sync 2580 l
+2011_09_26/2011_09_26_drive_0087_sync 610 r
+2011_10_03/2011_10_03_drive_0034_sync 736 r
+2011_09_30/2011_09_30_drive_0028_sync 1026 l
+2011_09_26/2011_09_26_drive_0005_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 4955 l
+2011_09_30/2011_09_30_drive_0028_sync 3231 r
+2011_09_26/2011_09_26_drive_0017_sync 54 r
+2011_09_26/2011_09_26_drive_0095_sync 204 r
+2011_10_03/2011_10_03_drive_0034_sync 406 r
+2011_09_26/2011_09_26_drive_0087_sync 545 r
+2011_09_26/2011_09_26_drive_0035_sync 125 r
+2011_09_30/2011_09_30_drive_0020_sync 720 l
+2011_10_03/2011_10_03_drive_0034_sync 2550 l
+2011_09_30/2011_09_30_drive_0028_sync 4477 l
+2011_09_30/2011_09_30_drive_0028_sync 1884 r
+2011_09_29/2011_09_29_drive_0026_sync 3 r
+2011_09_30/2011_09_30_drive_0033_sync 528 r
+2011_09_30/2011_09_30_drive_0034_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 2172 r
+2011_09_30/2011_09_30_drive_0028_sync 4499 r
+2011_09_30/2011_09_30_drive_0034_sync 1061 l
+2011_10_03/2011_10_03_drive_0034_sync 959 r
+2011_09_30/2011_09_30_drive_0028_sync 2286 l
+2011_09_30/2011_09_30_drive_0020_sync 453 l
+2011_10_03/2011_10_03_drive_0034_sync 1235 l
+2011_09_26/2011_09_26_drive_0087_sync 640 r
+2011_09_26/2011_09_26_drive_0051_sync 198 l
+2011_09_30/2011_09_30_drive_0033_sync 440 l
+2011_10_03/2011_10_03_drive_0034_sync 2893 l
+2011_09_26/2011_09_26_drive_0022_sync 100 l
+2011_10_03/2011_10_03_drive_0034_sync 8 l
+2011_09_30/2011_09_30_drive_0020_sync 486 l
+2011_09_26/2011_09_26_drive_0087_sync 63 l
+2011_09_26/2011_09_26_drive_0022_sync 547 r
+2011_10_03/2011_10_03_drive_0042_sync 1133 r
+2011_09_26/2011_09_26_drive_0022_sync 633 r
+2011_09_26/2011_09_26_drive_0051_sync 333 r
+2011_09_30/2011_09_30_drive_0034_sync 1073 l
+2011_09_30/2011_09_30_drive_0020_sync 405 r
+2011_09_30/2011_09_30_drive_0033_sync 1033 r
+2011_09_26/2011_09_26_drive_0051_sync 156 l
+2011_10_03/2011_10_03_drive_0042_sync 1105 l
+2011_09_26/2011_09_26_drive_0039_sync 126 l
+2011_09_30/2011_09_30_drive_0020_sync 148 l
+2011_10_03/2011_10_03_drive_0042_sync 987 l
+2011_09_30/2011_09_30_drive_0028_sync 2789 r
+2011_10_03/2011_10_03_drive_0042_sync 450 l
+2011_09_26/2011_09_26_drive_0091_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 1372 l
+2011_09_30/2011_09_30_drive_0028_sync 4274 r
+2011_10_03/2011_10_03_drive_0034_sync 4049 r
+2011_09_30/2011_09_30_drive_0033_sync 1238 r
+2011_09_30/2011_09_30_drive_0028_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 4805 l
+2011_09_26/2011_09_26_drive_0015_sync 291 l
+2011_09_30/2011_09_30_drive_0028_sync 3014 l
+2011_10_03/2011_10_03_drive_0034_sync 2574 l
+2011_09_30/2011_09_30_drive_0028_sync 430 r
+2011_10_03/2011_10_03_drive_0034_sync 2645 r
+2011_09_26/2011_09_26_drive_0070_sync 3 r
+2011_09_26/2011_09_26_drive_0061_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 2999 r
+2011_10_03/2011_10_03_drive_0034_sync 4280 r
+2011_09_26/2011_09_26_drive_0014_sync 87 l
+2011_09_30/2011_09_30_drive_0034_sync 1145 r
+2011_09_26/2011_09_26_drive_0104_sync 287 r
+2011_09_30/2011_09_30_drive_0028_sync 1158 l
+2011_09_26/2011_09_26_drive_0022_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 1124 l
+2011_09_26/2011_09_26_drive_0057_sync 51 r
+2011_09_30/2011_09_30_drive_0034_sync 304 r
+2011_09_26/2011_09_26_drive_0061_sync 261 l
+2011_09_30/2011_09_30_drive_0028_sync 5103 r
+2011_09_26/2011_09_26_drive_0061_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 2741 l
+2011_10_03/2011_10_03_drive_0034_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 2175 r
+2011_09_30/2011_09_30_drive_0033_sync 751 r
+2011_10_03/2011_10_03_drive_0034_sync 826 l
+2011_10_03/2011_10_03_drive_0034_sync 1038 r
+2011_09_30/2011_09_30_drive_0020_sync 580 l
+2011_09_30/2011_09_30_drive_0028_sync 1209 r
+2011_09_26/2011_09_26_drive_0087_sync 291 l
+2011_09_30/2011_09_30_drive_0020_sync 323 r
+2011_09_30/2011_09_30_drive_0033_sync 175 l
+2011_09_30/2011_09_30_drive_0034_sync 472 r
+2011_09_30/2011_09_30_drive_0028_sync 499 l
+2011_10_03/2011_10_03_drive_0034_sync 4018 r
+2011_09_30/2011_09_30_drive_0020_sync 950 l
+2011_09_30/2011_09_30_drive_0028_sync 2840 r
+2011_10_03/2011_10_03_drive_0034_sync 4551 r
+2011_09_30/2011_09_30_drive_0028_sync 1070 r
+2011_09_26/2011_09_26_drive_0022_sync 632 r
+2011_10_03/2011_10_03_drive_0034_sync 2988 l
+2011_10_03/2011_10_03_drive_0034_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 4348 l
+2011_09_30/2011_09_30_drive_0028_sync 915 r
+2011_09_26/2011_09_26_drive_0087_sync 380 r
+2011_09_30/2011_09_30_drive_0020_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 536 r
+2011_09_26/2011_09_26_drive_0032_sync 365 l
+2011_10_03/2011_10_03_drive_0034_sync 1032 r
+2011_09_30/2011_09_30_drive_0020_sync 859 l
+2011_09_30/2011_09_30_drive_0034_sync 633 r
+2011_09_26/2011_09_26_drive_0051_sync 343 r
+2011_10_03/2011_10_03_drive_0034_sync 5 r
+2011_09_26/2011_09_26_drive_0011_sync 167 r
+2011_09_26/2011_09_26_drive_0032_sync 309 l
+2011_09_26/2011_09_26_drive_0017_sync 33 r
+2011_09_28/2011_09_28_drive_0001_sync 38 l
+2011_09_26/2011_09_26_drive_0032_sync 270 r
+2011_09_26/2011_09_26_drive_0039_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 2566 r
+2011_09_30/2011_09_30_drive_0020_sync 844 r
+2011_10_03/2011_10_03_drive_0042_sync 1037 r
+2011_09_26/2011_09_26_drive_0051_sync 382 l
+2011_10_03/2011_10_03_drive_0042_sync 955 r
+2011_09_30/2011_09_30_drive_0028_sync 4822 l
+2011_09_26/2011_09_26_drive_0051_sync 369 l
+2011_09_26/2011_09_26_drive_0087_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 1192 r
+2011_09_26/2011_09_26_drive_0019_sync 439 l
+2011_10_03/2011_10_03_drive_0034_sync 3303 l
+2011_10_03/2011_10_03_drive_0042_sync 856 r
+2011_09_30/2011_09_30_drive_0028_sync 4960 r
+2011_09_26/2011_09_26_drive_0022_sync 346 r
+2011_09_26/2011_09_26_drive_0061_sync 118 r
+2011_09_26/2011_09_26_drive_0019_sync 13 r
+2011_10_03/2011_10_03_drive_0042_sync 998 r
+2011_10_03/2011_10_03_drive_0042_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 2154 l
+2011_10_03/2011_10_03_drive_0034_sync 3654 r
+2011_09_26/2011_09_26_drive_0015_sync 145 l
+2011_10_03/2011_10_03_drive_0034_sync 140 r
+2011_10_03/2011_10_03_drive_0034_sync 620 l
+2011_09_26/2011_09_26_drive_0104_sync 269 l
+2011_10_03/2011_10_03_drive_0034_sync 1643 r
+2011_09_26/2011_09_26_drive_0022_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 3453 r
+2011_09_30/2011_09_30_drive_0034_sync 919 l
+2011_10_03/2011_10_03_drive_0034_sync 293 l
+2011_09_26/2011_09_26_drive_0039_sync 165 r
+2011_09_30/2011_09_30_drive_0034_sync 1008 l
+2011_09_26/2011_09_26_drive_0061_sync 686 r
+2011_09_30/2011_09_30_drive_0034_sync 341 r
+2011_10_03/2011_10_03_drive_0034_sync 135 l
+2011_09_26/2011_09_26_drive_0005_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 2742 l
+2011_09_30/2011_09_30_drive_0028_sync 4622 l
+2011_09_30/2011_09_30_drive_0028_sync 4553 r
+2011_09_30/2011_09_30_drive_0033_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 1721 r
+2011_09_30/2011_09_30_drive_0028_sync 2141 l
+2011_09_30/2011_09_30_drive_0034_sync 395 r
+2011_09_30/2011_09_30_drive_0034_sync 639 r
+2011_10_03/2011_10_03_drive_0034_sync 937 l
+2011_10_03/2011_10_03_drive_0034_sync 3161 l
+2011_09_26/2011_09_26_drive_0015_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 4373 r
+2011_09_26/2011_09_26_drive_0104_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 4393 l
+2011_09_30/2011_09_30_drive_0028_sync 2012 r
+2011_09_30/2011_09_30_drive_0034_sync 1178 l
+2011_09_26/2011_09_26_drive_0087_sync 451 r
+2011_09_26/2011_09_26_drive_0019_sync 251 l
+2011_09_26/2011_09_26_drive_0019_sync 154 r
+2011_09_26/2011_09_26_drive_0014_sync 245 r
+2011_09_30/2011_09_30_drive_0033_sync 1050 r
+2011_09_30/2011_09_30_drive_0028_sync 4832 l
+2011_09_26/2011_09_26_drive_0005_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 2484 r
+2011_09_26/2011_09_26_drive_0070_sync 273 r
+2011_09_30/2011_09_30_drive_0028_sync 3694 r
+2011_09_30/2011_09_30_drive_0034_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 820 l
+2011_09_30/2011_09_30_drive_0028_sync 871 r
+2011_09_26/2011_09_26_drive_0061_sync 287 l
+2011_09_29/2011_09_29_drive_0004_sync 279 r
+2011_10_03/2011_10_03_drive_0042_sync 338 l
+2011_09_30/2011_09_30_drive_0028_sync 2004 r
+2011_09_26/2011_09_26_drive_0104_sync 197 r
+2011_10_03/2011_10_03_drive_0042_sync 681 r
+2011_09_30/2011_09_30_drive_0033_sync 561 r
+2011_09_26/2011_09_26_drive_0032_sync 212 l
+2011_09_26/2011_09_26_drive_0011_sync 74 r
+2011_09_30/2011_09_30_drive_0033_sync 1586 l
+2011_09_30/2011_09_30_drive_0028_sync 2967 l
+2011_09_26/2011_09_26_drive_0022_sync 715 r
+2011_09_30/2011_09_30_drive_0028_sync 2818 l
+2011_10_03/2011_10_03_drive_0034_sync 2061 l
+2011_09_30/2011_09_30_drive_0028_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 4499 r
+2011_10_03/2011_10_03_drive_0034_sync 646 r
+2011_09_26/2011_09_26_drive_0087_sync 691 l
+2011_09_30/2011_09_30_drive_0028_sync 1423 r
+2011_10_03/2011_10_03_drive_0034_sync 3915 r
+2011_09_30/2011_09_30_drive_0028_sync 4634 r
+2011_09_30/2011_09_30_drive_0028_sync 559 r
+2011_09_26/2011_09_26_drive_0061_sync 645 l
+2011_09_26/2011_09_26_drive_0070_sync 22 l
+2011_09_30/2011_09_30_drive_0020_sync 850 l
+2011_09_26/2011_09_26_drive_0028_sync 307 r
+2011_09_26/2011_09_26_drive_0091_sync 151 l
+2011_09_26/2011_09_26_drive_0039_sync 223 r
+2011_09_30/2011_09_30_drive_0020_sync 776 l
+2011_09_26/2011_09_26_drive_0087_sync 707 r
+2011_10_03/2011_10_03_drive_0034_sync 2983 l
+2011_10_03/2011_10_03_drive_0034_sync 535 r
+2011_09_26/2011_09_26_drive_0087_sync 707 l
+2011_09_30/2011_09_30_drive_0033_sync 1551 l
+2011_09_26/2011_09_26_drive_0057_sync 311 r
+2011_09_26/2011_09_26_drive_0051_sync 270 l
+2011_09_30/2011_09_30_drive_0028_sync 2422 l
+2011_09_30/2011_09_30_drive_0028_sync 2550 l
+2011_10_03/2011_10_03_drive_0042_sync 956 l
+2011_09_30/2011_09_30_drive_0028_sync 968 r
+2011_10_03/2011_10_03_drive_0034_sync 518 r
+2011_09_30/2011_09_30_drive_0028_sync 2352 l
+2011_09_26/2011_09_26_drive_0087_sync 567 l
+2011_09_30/2011_09_30_drive_0020_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 3803 l
+2011_09_26/2011_09_26_drive_0017_sync 2 l
+2011_09_30/2011_09_30_drive_0020_sync 758 l
+2011_09_26/2011_09_26_drive_0018_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 4156 r
+2011_09_26/2011_09_26_drive_0039_sync 284 r
+2011_09_30/2011_09_30_drive_0028_sync 688 l
+2011_09_30/2011_09_30_drive_0028_sync 2034 l
+2011_09_30/2011_09_30_drive_0033_sync 177 l
+2011_09_30/2011_09_30_drive_0034_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 448 r
+2011_10_03/2011_10_03_drive_0034_sync 2586 r
+2011_10_03/2011_10_03_drive_0042_sync 1092 l
+2011_09_30/2011_09_30_drive_0028_sync 2185 l
+2011_09_30/2011_09_30_drive_0028_sync 2075 l
+2011_09_30/2011_09_30_drive_0020_sync 849 l
+2011_09_30/2011_09_30_drive_0028_sync 2217 r
+2011_10_03/2011_10_03_drive_0042_sync 997 r
+2011_09_26/2011_09_26_drive_0051_sync 142 r
+2011_09_26/2011_09_26_drive_0017_sync 51 l
+2011_09_26/2011_09_26_drive_0022_sync 18 r
+2011_09_26/2011_09_26_drive_0113_sync 52 l
+2011_10_03/2011_10_03_drive_0042_sync 815 r
+2011_10_03/2011_10_03_drive_0042_sync 390 r
+2011_09_26/2011_09_26_drive_0019_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 3269 l
+2011_09_26/2011_09_26_drive_0070_sync 405 l
+2011_09_30/2011_09_30_drive_0028_sync 3946 l
+2011_10_03/2011_10_03_drive_0034_sync 1658 r
+2011_09_30/2011_09_30_drive_0028_sync 3782 r
+2011_09_29/2011_09_29_drive_0004_sync 326 r
+2011_10_03/2011_10_03_drive_0034_sync 2102 l
+2011_10_03/2011_10_03_drive_0034_sync 2394 r
+2011_09_30/2011_09_30_drive_0028_sync 767 r
+2011_09_26/2011_09_26_drive_0011_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 4081 r
+2011_09_26/2011_09_26_drive_0019_sync 183 r
+2011_09_26/2011_09_26_drive_0057_sync 187 l
+2011_10_03/2011_10_03_drive_0042_sync 325 l
+2011_09_30/2011_09_30_drive_0020_sync 129 l
+2011_09_26/2011_09_26_drive_0011_sync 68 r
+2011_09_29/2011_09_29_drive_0026_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 4312 r
+2011_09_26/2011_09_26_drive_0061_sync 430 r
+2011_09_26/2011_09_26_drive_0091_sync 243 r
+2011_09_26/2011_09_26_drive_0022_sync 640 l
+2011_09_30/2011_09_30_drive_0020_sync 378 l
+2011_09_30/2011_09_30_drive_0028_sync 221 l
+2011_09_30/2011_09_30_drive_0028_sync 1399 r
+2011_10_03/2011_10_03_drive_0034_sync 707 l
+2011_10_03/2011_10_03_drive_0034_sync 3267 r
+2011_09_30/2011_09_30_drive_0034_sync 961 r
+2011_09_30/2011_09_30_drive_0034_sync 339 r
+2011_09_26/2011_09_26_drive_0087_sync 591 r
+2011_09_26/2011_09_26_drive_0022_sync 669 r
+2011_09_30/2011_09_30_drive_0028_sync 1289 r
+2011_09_30/2011_09_30_drive_0033_sync 1464 l
+2011_09_30/2011_09_30_drive_0028_sync 3480 r
+2011_10_03/2011_10_03_drive_0034_sync 2976 l
+2011_09_30/2011_09_30_drive_0020_sync 457 r
+2011_09_30/2011_09_30_drive_0033_sync 835 r
+2011_09_30/2011_09_30_drive_0028_sync 443 r
+2011_09_30/2011_09_30_drive_0028_sync 3937 l
+2011_09_30/2011_09_30_drive_0028_sync 3001 r
+2011_10_03/2011_10_03_drive_0034_sync 2072 r
+2011_09_26/2011_09_26_drive_0005_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 1485 r
+2011_10_03/2011_10_03_drive_0034_sync 657 r
+2011_09_30/2011_09_30_drive_0028_sync 338 l
+2011_09_26/2011_09_26_drive_0070_sync 230 r
+2011_09_29/2011_09_29_drive_0004_sync 159 l
+2011_09_26/2011_09_26_drive_0019_sync 100 l
+2011_09_26/2011_09_26_drive_0070_sync 406 r
+2011_10_03/2011_10_03_drive_0034_sync 2440 l
+2011_09_26/2011_09_26_drive_0061_sync 410 l
+2011_10_03/2011_10_03_drive_0034_sync 4465 r
+2011_10_03/2011_10_03_drive_0034_sync 110 l
+2011_09_26/2011_09_26_drive_0104_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 4474 r
+2011_10_03/2011_10_03_drive_0034_sync 3441 l
+2011_10_03/2011_10_03_drive_0042_sync 859 r
+2011_10_03/2011_10_03_drive_0034_sync 4464 l
+2011_09_30/2011_09_30_drive_0028_sync 1185 l
+2011_09_30/2011_09_30_drive_0033_sync 902 r
+2011_09_30/2011_09_30_drive_0028_sync 4575 l
+2011_09_30/2011_09_30_drive_0028_sync 4333 l
+2011_09_29/2011_09_29_drive_0004_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 3647 r
+2011_09_26/2011_09_26_drive_0061_sync 89 r
+2011_09_26/2011_09_26_drive_0061_sync 458 l
+2011_09_30/2011_09_30_drive_0028_sync 2866 l
+2011_09_29/2011_09_29_drive_0004_sync 142 r
+2011_10_03/2011_10_03_drive_0042_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 639 l
+2011_09_26/2011_09_26_drive_0022_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 3990 l
+2011_09_26/2011_09_26_drive_0019_sync 317 r
+2011_09_26/2011_09_26_drive_0018_sync 137 l
+2011_09_30/2011_09_30_drive_0033_sync 1094 r
+2011_10_03/2011_10_03_drive_0034_sync 1221 r
+2011_09_30/2011_09_30_drive_0034_sync 756 l
+2011_09_30/2011_09_30_drive_0028_sync 2161 r
+2011_09_30/2011_09_30_drive_0028_sync 690 l
+2011_09_30/2011_09_30_drive_0028_sync 4049 l
+2011_09_26/2011_09_26_drive_0032_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 3023 l
+2011_09_30/2011_09_30_drive_0028_sync 3841 r
+2011_10_03/2011_10_03_drive_0042_sync 317 r
+2011_09_26/2011_09_26_drive_0070_sync 313 l
+2011_10_03/2011_10_03_drive_0034_sync 3746 l
+2011_09_30/2011_09_30_drive_0033_sync 306 l
+2011_10_03/2011_10_03_drive_0034_sync 4370 r
+2011_09_30/2011_09_30_drive_0034_sync 375 r
+2011_09_30/2011_09_30_drive_0028_sync 825 l
+2011_09_30/2011_09_30_drive_0028_sync 1654 l
+2011_10_03/2011_10_03_drive_0034_sync 4249 r
+2011_09_30/2011_09_30_drive_0033_sync 1343 l
+2011_09_30/2011_09_30_drive_0034_sync 204 l
+2011_10_03/2011_10_03_drive_0042_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 3374 l
+2011_10_03/2011_10_03_drive_0034_sync 717 l
+2011_09_26/2011_09_26_drive_0070_sync 277 r
+2011_09_26/2011_09_26_drive_0001_sync 74 r
+2011_09_26/2011_09_26_drive_0070_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 721 l
+2011_09_30/2011_09_30_drive_0034_sync 897 l
+2011_09_26/2011_09_26_drive_0060_sync 66 l
+2011_09_30/2011_09_30_drive_0028_sync 659 l
+2011_10_03/2011_10_03_drive_0034_sync 2418 l
+2011_09_26/2011_09_26_drive_0079_sync 58 l
+2011_10_03/2011_10_03_drive_0042_sync 357 l
+2011_09_26/2011_09_26_drive_0070_sync 380 r
+2011_09_30/2011_09_30_drive_0034_sync 362 r
+2011_09_30/2011_09_30_drive_0034_sync 1037 r
+2011_09_26/2011_09_26_drive_0070_sync 6 l
+2011_09_26/2011_09_26_drive_0035_sync 53 r
+2011_09_30/2011_09_30_drive_0028_sync 2106 l
+2011_10_03/2011_10_03_drive_0034_sync 290 r
+2011_09_26/2011_09_26_drive_0032_sync 340 l
+2011_09_30/2011_09_30_drive_0033_sync 563 l
+2011_09_26/2011_09_26_drive_0087_sync 375 r
+2011_09_26/2011_09_26_drive_0028_sync 242 l
+2011_09_30/2011_09_30_drive_0033_sync 1385 r
+2011_09_26/2011_09_26_drive_0087_sync 137 r
+2011_09_30/2011_09_30_drive_0033_sync 980 r
+2011_09_30/2011_09_30_drive_0034_sync 516 r
+2011_09_26/2011_09_26_drive_0022_sync 171 l
+2011_09_30/2011_09_30_drive_0028_sync 4119 r
+2011_09_26/2011_09_26_drive_0022_sync 434 l
+2011_09_30/2011_09_30_drive_0028_sync 502 l
+2011_10_03/2011_10_03_drive_0034_sync 3927 r
+2011_10_03/2011_10_03_drive_0042_sync 60 l
+2011_09_26/2011_09_26_drive_0022_sync 557 r
+2011_09_30/2011_09_30_drive_0028_sync 2775 r
+2011_09_30/2011_09_30_drive_0020_sync 636 l
+2011_10_03/2011_10_03_drive_0034_sync 3442 r
+2011_09_30/2011_09_30_drive_0028_sync 1311 r
+2011_10_03/2011_10_03_drive_0034_sync 825 r
+2011_09_30/2011_09_30_drive_0028_sync 4916 r
+2011_09_30/2011_09_30_drive_0028_sync 3526 r
+2011_09_30/2011_09_30_drive_0028_sync 3174 l
+2011_09_26/2011_09_26_drive_0022_sync 658 r
+2011_09_30/2011_09_30_drive_0028_sync 2314 r
+2011_09_30/2011_09_30_drive_0028_sync 393 r
+2011_09_30/2011_09_30_drive_0028_sync 836 r
+2011_09_26/2011_09_26_drive_0091_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 2073 l
+2011_09_26/2011_09_26_drive_0039_sync 342 l
+2011_09_30/2011_09_30_drive_0034_sync 285 l
+2011_09_30/2011_09_30_drive_0033_sync 510 r
+2011_09_30/2011_09_30_drive_0020_sync 652 r
+2011_09_30/2011_09_30_drive_0033_sync 1186 r
+2011_10_03/2011_10_03_drive_0042_sync 794 r
+2011_09_30/2011_09_30_drive_0028_sync 5040 r
+2011_09_30/2011_09_30_drive_0033_sync 1342 l
+2011_10_03/2011_10_03_drive_0034_sync 2854 l
+2011_09_30/2011_09_30_drive_0028_sync 1970 r
+2011_09_26/2011_09_26_drive_0032_sync 160 r
+2011_09_26/2011_09_26_drive_0014_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 4087 r
+2011_10_03/2011_10_03_drive_0034_sync 3135 l
+2011_09_26/2011_09_26_drive_0022_sync 664 l
+2011_09_26/2011_09_26_drive_0113_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 225 l
+2011_09_26/2011_09_26_drive_0091_sync 208 r
+2011_09_26/2011_09_26_drive_0061_sync 283 l
+2011_09_26/2011_09_26_drive_0113_sync 45 r
+2011_09_26/2011_09_26_drive_0051_sync 423 l
+2011_09_30/2011_09_30_drive_0028_sync 3347 r
+2011_09_26/2011_09_26_drive_0051_sync 336 l
+2011_09_26/2011_09_26_drive_0014_sync 205 r
+2011_09_30/2011_09_30_drive_0028_sync 4606 r
+2011_09_26/2011_09_26_drive_0022_sync 460 l
+2011_09_30/2011_09_30_drive_0033_sync 1423 r
+2011_09_30/2011_09_30_drive_0028_sync 1900 l
+2011_09_26/2011_09_26_drive_0005_sync 101 r
+2011_09_26/2011_09_26_drive_0005_sync 97 r
+2011_09_30/2011_09_30_drive_0033_sync 1075 r
+2011_09_26/2011_09_26_drive_0022_sync 51 r
+2011_10_03/2011_10_03_drive_0042_sync 1034 l
+2011_10_03/2011_10_03_drive_0034_sync 2812 l
+2011_09_26/2011_09_26_drive_0032_sync 133 r
+2011_09_26/2011_09_26_drive_0028_sync 388 r
+2011_09_26/2011_09_26_drive_0061_sync 67 r
+2011_09_29/2011_09_29_drive_0026_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 769 l
+2011_09_30/2011_09_30_drive_0028_sync 4023 r
+2011_09_30/2011_09_30_drive_0028_sync 3402 l
+2011_09_26/2011_09_26_drive_0051_sync 424 r
+2011_09_30/2011_09_30_drive_0028_sync 1978 l
+2011_10_03/2011_10_03_drive_0034_sync 1506 r
+2011_09_30/2011_09_30_drive_0020_sync 502 l
+2011_09_30/2011_09_30_drive_0028_sync 1736 r
+2011_09_26/2011_09_26_drive_0051_sync 146 r
+2011_09_26/2011_09_26_drive_0070_sync 368 l
+2011_09_26/2011_09_26_drive_0061_sync 575 r
+2011_09_30/2011_09_30_drive_0028_sync 3388 r
+2011_09_26/2011_09_26_drive_0028_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 4343 r
+2011_09_26/2011_09_26_drive_0091_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 2372 l
+2011_10_03/2011_10_03_drive_0034_sync 4030 r
+2011_09_30/2011_09_30_drive_0034_sync 533 l
+2011_09_30/2011_09_30_drive_0028_sync 2029 l
+2011_10_03/2011_10_03_drive_0042_sync 588 r
+2011_10_03/2011_10_03_drive_0034_sync 3933 r
+2011_09_30/2011_09_30_drive_0034_sync 622 r
+2011_09_26/2011_09_26_drive_0039_sync 338 r
+2011_09_26/2011_09_26_drive_0104_sync 88 l
+2011_09_30/2011_09_30_drive_0034_sync 193 l
+2011_09_26/2011_09_26_drive_0061_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 5130 r
+2011_09_26/2011_09_26_drive_0032_sync 367 r
+2011_10_03/2011_10_03_drive_0034_sync 2821 l
+2011_10_03/2011_10_03_drive_0034_sync 3496 r
+2011_09_30/2011_09_30_drive_0034_sync 628 r
+2011_09_30/2011_09_30_drive_0034_sync 694 r
+2011_10_03/2011_10_03_drive_0034_sync 3833 r
+2011_09_30/2011_09_30_drive_0028_sync 4582 r
+2011_09_26/2011_09_26_drive_0032_sync 14 l
+2011_09_30/2011_09_30_drive_0033_sync 1322 l
+2011_09_26/2011_09_26_drive_0104_sync 255 l
+2011_09_26/2011_09_26_drive_0070_sync 288 r
+2011_09_30/2011_09_30_drive_0028_sync 4280 r
+2011_09_30/2011_09_30_drive_0028_sync 3167 l
+2011_09_30/2011_09_30_drive_0034_sync 526 l
+2011_09_30/2011_09_30_drive_0033_sync 1265 r
+2011_09_30/2011_09_30_drive_0028_sync 1335 l
+2011_09_30/2011_09_30_drive_0028_sync 2755 r
+2011_09_26/2011_09_26_drive_0061_sync 702 r
+2011_10_03/2011_10_03_drive_0034_sync 1612 l
+2011_09_26/2011_09_26_drive_0005_sync 106 r
+2011_10_03/2011_10_03_drive_0042_sync 711 l
+2011_09_26/2011_09_26_drive_0019_sync 431 l
+2011_09_30/2011_09_30_drive_0033_sync 859 l
+2011_09_30/2011_09_30_drive_0034_sync 217 l
+2011_09_30/2011_09_30_drive_0020_sync 900 r
+2011_10_03/2011_10_03_drive_0034_sync 3016 r
+2011_09_26/2011_09_26_drive_0019_sync 134 l
+2011_10_03/2011_10_03_drive_0034_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 4610 l
+2011_09_30/2011_09_30_drive_0028_sync 3360 l
+2011_09_30/2011_09_30_drive_0028_sync 3919 r
+2011_09_26/2011_09_26_drive_0095_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 1904 r
+2011_10_03/2011_10_03_drive_0042_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 565 r
+2011_09_26/2011_09_26_drive_0070_sync 158 r
+2011_09_26/2011_09_26_drive_0070_sync 177 r
+2011_09_26/2011_09_26_drive_0087_sync 494 l
+2011_09_26/2011_09_26_drive_0018_sync 48 r
+2011_09_30/2011_09_30_drive_0033_sync 1012 r
+2011_10_03/2011_10_03_drive_0034_sync 4013 r
+2011_09_30/2011_09_30_drive_0028_sync 2617 l
+2011_09_30/2011_09_30_drive_0034_sync 666 l
+2011_09_26/2011_09_26_drive_0032_sync 139 l
+2011_09_26/2011_09_26_drive_0051_sync 381 r
+2011_09_26/2011_09_26_drive_0095_sync 106 l
+2011_09_26/2011_09_26_drive_0032_sync 312 l
+2011_10_03/2011_10_03_drive_0042_sync 157 r
+2011_09_26/2011_09_26_drive_0001_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 3011 r
+2011_09_30/2011_09_30_drive_0034_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 1845 l
+2011_09_30/2011_09_30_drive_0034_sync 787 r
+2011_09_30/2011_09_30_drive_0028_sync 2389 l
+2011_10_03/2011_10_03_drive_0042_sync 1051 l
+2011_09_26/2011_09_26_drive_0051_sync 49 l
+2011_09_26/2011_09_26_drive_0091_sync 102 l
+2011_09_26/2011_09_26_drive_0018_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 2682 r
+2011_09_30/2011_09_30_drive_0028_sync 4345 r
+2011_09_30/2011_09_30_drive_0033_sync 1231 r
+2011_10_03/2011_10_03_drive_0034_sync 4333 r
+2011_09_26/2011_09_26_drive_0032_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 1392 r
+2011_09_30/2011_09_30_drive_0028_sync 4342 l
+2011_09_26/2011_09_26_drive_0057_sync 266 l
+2011_09_30/2011_09_30_drive_0020_sync 978 l
+2011_09_30/2011_09_30_drive_0020_sync 640 l
+2011_09_26/2011_09_26_drive_0022_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 3286 l
+2011_10_03/2011_10_03_drive_0034_sync 424 r
+2011_10_03/2011_10_03_drive_0042_sync 597 r
+2011_09_30/2011_09_30_drive_0020_sync 607 r
+2011_09_30/2011_09_30_drive_0020_sync 733 l
+2011_09_30/2011_09_30_drive_0028_sync 2253 r
+2011_09_26/2011_09_26_drive_0019_sync 386 r
+2011_09_26/2011_09_26_drive_0014_sync 103 l
+2011_09_26/2011_09_26_drive_0051_sync 36 r
+2011_09_26/2011_09_26_drive_0022_sync 445 r
+2011_09_30/2011_09_30_drive_0028_sync 5017 r
+2011_09_30/2011_09_30_drive_0020_sync 366 r
+2011_09_30/2011_09_30_drive_0033_sync 804 r
+2011_09_26/2011_09_26_drive_0028_sync 164 l
+2011_10_03/2011_10_03_drive_0034_sync 604 r
+2011_10_03/2011_10_03_drive_0034_sync 2192 l
+2011_10_03/2011_10_03_drive_0042_sync 1079 l
+2011_09_26/2011_09_26_drive_0057_sync 96 l
+2011_09_26/2011_09_26_drive_0028_sync 106 l
+2011_09_30/2011_09_30_drive_0034_sync 53 l
+2011_09_26/2011_09_26_drive_0039_sync 99 r
+2011_09_26/2011_09_26_drive_0087_sync 716 l
+2011_09_30/2011_09_30_drive_0028_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 186 l
+2011_09_26/2011_09_26_drive_0057_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 3849 r
+2011_10_03/2011_10_03_drive_0034_sync 361 l
+2011_09_30/2011_09_30_drive_0028_sync 282 l
+2011_09_26/2011_09_26_drive_0061_sync 212 l
+2011_09_26/2011_09_26_drive_0022_sync 744 r
+2011_09_30/2011_09_30_drive_0028_sync 4948 r
+2011_09_26/2011_09_26_drive_0087_sync 676 r
+2011_10_03/2011_10_03_drive_0042_sync 714 l
+2011_10_03/2011_10_03_drive_0034_sync 2878 r
+2011_09_26/2011_09_26_drive_0061_sync 135 r
+2011_09_26/2011_09_26_drive_0104_sync 29 l
+2011_09_26/2011_09_26_drive_0011_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 1983 l
+2011_09_30/2011_09_30_drive_0020_sync 638 r
+2011_09_26/2011_09_26_drive_0011_sync 58 l
+2011_09_26/2011_09_26_drive_0039_sync 300 l
+2011_09_30/2011_09_30_drive_0034_sync 510 l
+2011_10_03/2011_10_03_drive_0034_sync 683 r
+2011_10_03/2011_10_03_drive_0042_sync 912 l
+2011_09_30/2011_09_30_drive_0028_sync 4267 r
+2011_09_30/2011_09_30_drive_0028_sync 3673 l
+2011_09_26/2011_09_26_drive_0014_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 3192 r
+2011_10_03/2011_10_03_drive_0034_sync 1817 r
+2011_09_30/2011_09_30_drive_0020_sync 191 l
+2011_09_29/2011_09_29_drive_0004_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 1540 l
+2011_09_26/2011_09_26_drive_0061_sync 43 l
+2011_09_26/2011_09_26_drive_0035_sync 108 r
+2011_10_03/2011_10_03_drive_0034_sync 1440 l
+2011_09_30/2011_09_30_drive_0034_sync 191 l
+2011_09_26/2011_09_26_drive_0022_sync 141 l
+2011_09_26/2011_09_26_drive_0087_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 3118 l
+2011_09_26/2011_09_26_drive_0039_sync 230 r
+2011_09_26/2011_09_26_drive_0032_sync 341 l
+2011_09_28/2011_09_28_drive_0001_sync 69 l
+2011_09_30/2011_09_30_drive_0028_sync 5157 l
+2011_09_26/2011_09_26_drive_0028_sync 376 r
+2011_10_03/2011_10_03_drive_0034_sync 4086 r
+2011_10_03/2011_10_03_drive_0034_sync 1910 l
+2011_09_26/2011_09_26_drive_0005_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 4513 r
+2011_10_03/2011_10_03_drive_0034_sync 366 r
+2011_09_30/2011_09_30_drive_0028_sync 4795 l
+2011_10_03/2011_10_03_drive_0034_sync 462 r
+2011_09_26/2011_09_26_drive_0015_sync 72 r
+2011_09_26/2011_09_26_drive_0028_sync 107 r
+2011_09_26/2011_09_26_drive_0087_sync 588 r
+2011_09_26/2011_09_26_drive_0104_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 1075 l
+2011_10_03/2011_10_03_drive_0034_sync 923 l
+2011_09_26/2011_09_26_drive_0032_sync 326 r
+2011_09_26/2011_09_26_drive_0017_sync 67 l
+2011_09_30/2011_09_30_drive_0033_sync 894 r
+2011_09_26/2011_09_26_drive_0095_sync 257 r
+2011_10_03/2011_10_03_drive_0034_sync 1098 l
+2011_10_03/2011_10_03_drive_0042_sync 685 r
+2011_09_26/2011_09_26_drive_0017_sync 27 l
+2011_09_26/2011_09_26_drive_0061_sync 33 r
+2011_09_26/2011_09_26_drive_0005_sync 137 l
+2011_09_30/2011_09_30_drive_0034_sync 508 r
+2011_10_03/2011_10_03_drive_0042_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 505 r
+2011_10_03/2011_10_03_drive_0034_sync 3730 l
+2011_10_03/2011_10_03_drive_0034_sync 1906 l
+2011_09_30/2011_09_30_drive_0028_sync 1974 l
+2011_09_26/2011_09_26_drive_0091_sync 323 l
+2011_09_30/2011_09_30_drive_0034_sync 253 r
+2011_09_30/2011_09_30_drive_0033_sync 1550 r
+2011_09_26/2011_09_26_drive_0104_sync 177 l
+2011_09_30/2011_09_30_drive_0033_sync 1242 l
+2011_09_29/2011_09_29_drive_0004_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 3345 l
+2011_09_30/2011_09_30_drive_0020_sync 629 l
+2011_10_03/2011_10_03_drive_0034_sync 1163 l
+2011_09_30/2011_09_30_drive_0028_sync 2686 r
+2011_10_03/2011_10_03_drive_0034_sync 1593 r
+2011_09_30/2011_09_30_drive_0033_sync 1220 l
+2011_09_26/2011_09_26_drive_0061_sync 581 r
+2011_09_30/2011_09_30_drive_0028_sync 1382 r
+2011_09_30/2011_09_30_drive_0028_sync 5045 l
+2011_09_29/2011_09_29_drive_0026_sync 108 l
+2011_10_03/2011_10_03_drive_0034_sync 3798 r
+2011_09_30/2011_09_30_drive_0028_sync 1698 l
+2011_10_03/2011_10_03_drive_0034_sync 1386 r
+2011_09_30/2011_09_30_drive_0028_sync 3590 r
+2011_09_30/2011_09_30_drive_0020_sync 256 r
+2011_09_26/2011_09_26_drive_0035_sync 39 l
+2011_09_26/2011_09_26_drive_0104_sync 210 r
+2011_09_30/2011_09_30_drive_0028_sync 464 r
+2011_09_26/2011_09_26_drive_0061_sync 202 l
+2011_09_30/2011_09_30_drive_0020_sync 820 l
+2011_09_30/2011_09_30_drive_0028_sync 3014 r
+2011_09_30/2011_09_30_drive_0028_sync 4284 r
+2011_09_26/2011_09_26_drive_0087_sync 7 r
+2011_09_26/2011_09_26_drive_0015_sync 199 r
+2011_09_26/2011_09_26_drive_0032_sync 360 l
+2011_09_30/2011_09_30_drive_0033_sync 649 r
+2011_09_26/2011_09_26_drive_0091_sync 172 l
+2011_09_30/2011_09_30_drive_0034_sync 749 r
+2011_09_26/2011_09_26_drive_0057_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 1823 r
+2011_09_26/2011_09_26_drive_0087_sync 570 r
+2011_10_03/2011_10_03_drive_0034_sync 1512 l
+2011_09_26/2011_09_26_drive_0005_sync 70 r
+2011_09_26/2011_09_26_drive_0051_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 2290 r
+2011_10_03/2011_10_03_drive_0034_sync 703 l
+2011_09_26/2011_09_26_drive_0022_sync 346 l
+2011_09_30/2011_09_30_drive_0020_sync 575 r
+2011_09_26/2011_09_26_drive_0014_sync 175 r
+2011_09_26/2011_09_26_drive_0014_sync 17 r
+2011_09_26/2011_09_26_drive_0091_sync 188 l
+2011_09_26/2011_09_26_drive_0014_sync 125 l
+2011_09_26/2011_09_26_drive_0032_sync 165 r
+2011_09_30/2011_09_30_drive_0020_sync 822 r
+2011_09_30/2011_09_30_drive_0028_sync 2507 r
+2011_10_03/2011_10_03_drive_0034_sync 3191 l
+2011_09_30/2011_09_30_drive_0028_sync 334 r
+2011_09_29/2011_09_29_drive_0004_sync 51 l
+2011_10_03/2011_10_03_drive_0034_sync 2888 l
+2011_09_30/2011_09_30_drive_0034_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 2177 r
+2011_10_03/2011_10_03_drive_0034_sync 1940 r
+2011_09_26/2011_09_26_drive_0091_sync 298 l
+2011_09_30/2011_09_30_drive_0028_sync 3028 r
+2011_09_26/2011_09_26_drive_0039_sync 365 r
+2011_09_26/2011_09_26_drive_0011_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 2999 l
+2011_09_26/2011_09_26_drive_0019_sync 29 r
+2011_10_03/2011_10_03_drive_0034_sync 1155 r
+2011_09_30/2011_09_30_drive_0034_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 4575 r
+2011_09_30/2011_09_30_drive_0028_sync 1000 r
+2011_09_30/2011_09_30_drive_0034_sync 559 l
+2011_09_26/2011_09_26_drive_0014_sync 39 l
+2011_09_26/2011_09_26_drive_0070_sync 173 r
+2011_09_26/2011_09_26_drive_0070_sync 344 r
+2011_09_26/2011_09_26_drive_0028_sync 395 r
+2011_09_30/2011_09_30_drive_0028_sync 5044 r
+2011_09_30/2011_09_30_drive_0033_sync 562 l
+2011_09_30/2011_09_30_drive_0034_sync 482 r
+2011_10_03/2011_10_03_drive_0034_sync 4255 l
+2011_09_30/2011_09_30_drive_0020_sync 762 l
+2011_09_26/2011_09_26_drive_0095_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 3367 l
+2011_10_03/2011_10_03_drive_0034_sync 2396 l
+2011_09_26/2011_09_26_drive_0051_sync 108 l
+2011_09_26/2011_09_26_drive_0039_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 2492 l
+2011_09_30/2011_09_30_drive_0033_sync 1297 r
+2011_09_26/2011_09_26_drive_0057_sync 291 l
+2011_09_26/2011_09_26_drive_0039_sync 372 l
+2011_10_03/2011_10_03_drive_0034_sync 3241 l
+2011_09_26/2011_09_26_drive_0039_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 372 r
+2011_09_30/2011_09_30_drive_0028_sync 1853 l
+2011_09_26/2011_09_26_drive_0018_sync 195 r
+2011_09_26/2011_09_26_drive_0017_sync 3 l
+2011_09_26/2011_09_26_drive_0039_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 519 r
+2011_09_26/2011_09_26_drive_0113_sync 46 l
+2011_09_26/2011_09_26_drive_0019_sync 300 l
+2011_10_03/2011_10_03_drive_0034_sync 1178 l
+2011_09_30/2011_09_30_drive_0028_sync 399 l
+2011_09_26/2011_09_26_drive_0070_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 2441 r
+2011_09_26/2011_09_26_drive_0061_sync 138 r
+2011_09_30/2011_09_30_drive_0034_sync 501 r
+2011_09_30/2011_09_30_drive_0028_sync 1047 l
+2011_09_30/2011_09_30_drive_0033_sync 1428 l
+2011_09_29/2011_09_29_drive_0004_sync 293 r
+2011_09_26/2011_09_26_drive_0061_sync 401 r
+2011_09_30/2011_09_30_drive_0028_sync 4179 l
+2011_09_30/2011_09_30_drive_0028_sync 2594 l
+2011_10_03/2011_10_03_drive_0034_sync 3595 l
+2011_09_30/2011_09_30_drive_0028_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 598 l
+2011_09_30/2011_09_30_drive_0028_sync 1059 l
+2011_10_03/2011_10_03_drive_0034_sync 4481 r
+2011_09_30/2011_09_30_drive_0028_sync 5112 r
+2011_09_26/2011_09_26_drive_0039_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 2979 r
+2011_10_03/2011_10_03_drive_0034_sync 2903 l
+2011_09_30/2011_09_30_drive_0028_sync 3573 l
+2011_10_03/2011_10_03_drive_0034_sync 294 r
+2011_09_29/2011_09_29_drive_0004_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 4549 l
+2011_09_26/2011_09_26_drive_0091_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 4590 l
+2011_09_26/2011_09_26_drive_0087_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 1678 r
+2011_09_26/2011_09_26_drive_0014_sync 174 l
+2011_09_30/2011_09_30_drive_0034_sync 206 l
+2011_09_30/2011_09_30_drive_0033_sync 1096 l
+2011_09_30/2011_09_30_drive_0034_sync 311 r
+2011_09_26/2011_09_26_drive_0035_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 3195 r
+2011_09_26/2011_09_26_drive_0070_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 2946 r
+2011_09_30/2011_09_30_drive_0034_sync 749 l
+2011_10_03/2011_10_03_drive_0034_sync 1184 l
+2011_10_03/2011_10_03_drive_0034_sync 2706 l
+2011_09_29/2011_09_29_drive_0004_sync 193 l
+2011_09_30/2011_09_30_drive_0028_sync 2480 r
+2011_10_03/2011_10_03_drive_0034_sync 2327 l
+2011_09_26/2011_09_26_drive_0057_sync 236 r
+2011_10_03/2011_10_03_drive_0042_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 2231 r
+2011_09_30/2011_09_30_drive_0028_sync 4700 l
+2011_09_26/2011_09_26_drive_0015_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 1808 l
+2011_09_26/2011_09_26_drive_0087_sync 201 l
+2011_09_30/2011_09_30_drive_0020_sync 802 l
+2011_09_26/2011_09_26_drive_0014_sync 82 r
+2011_09_30/2011_09_30_drive_0020_sync 794 r
+2011_09_28/2011_09_28_drive_0001_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 1340 l
+2011_09_30/2011_09_30_drive_0034_sync 434 l
+2011_09_26/2011_09_26_drive_0087_sync 108 r
+2011_09_26/2011_09_26_drive_0015_sync 133 r
+2011_10_03/2011_10_03_drive_0034_sync 3475 r
+2011_09_26/2011_09_26_drive_0057_sync 327 r
+2011_10_03/2011_10_03_drive_0034_sync 753 r
+2011_09_26/2011_09_26_drive_0022_sync 348 r
+2011_09_29/2011_09_29_drive_0026_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 4440 l
+2011_09_30/2011_09_30_drive_0028_sync 3735 l
+2011_09_30/2011_09_30_drive_0028_sync 4333 r
+2011_09_30/2011_09_30_drive_0034_sync 1021 l
+2011_10_03/2011_10_03_drive_0034_sync 2787 l
+2011_09_30/2011_09_30_drive_0028_sync 1503 r
+2011_10_03/2011_10_03_drive_0042_sync 947 r
+2011_10_03/2011_10_03_drive_0034_sync 747 l
+2011_09_30/2011_09_30_drive_0020_sync 64 l
+2011_09_30/2011_09_30_drive_0033_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 2998 l
+2011_09_30/2011_09_30_drive_0028_sync 1631 l
+2011_09_30/2011_09_30_drive_0028_sync 5058 r
+2011_09_26/2011_09_26_drive_0095_sync 255 l
+2011_09_26/2011_09_26_drive_0057_sync 19 r
+2011_10_03/2011_10_03_drive_0042_sync 582 r
+2011_10_03/2011_10_03_drive_0034_sync 710 l
+2011_10_03/2011_10_03_drive_0034_sync 1958 r
+2011_09_26/2011_09_26_drive_0061_sync 252 l
+2011_09_30/2011_09_30_drive_0034_sync 1086 l
+2011_09_26/2011_09_26_drive_0028_sync 167 l
+2011_09_30/2011_09_30_drive_0033_sync 585 r
+2011_09_30/2011_09_30_drive_0033_sync 1174 r
+2011_09_30/2011_09_30_drive_0028_sync 1178 l
+2011_09_26/2011_09_26_drive_0032_sync 299 r
+2011_09_30/2011_09_30_drive_0028_sync 2113 r
+2011_09_26/2011_09_26_drive_0087_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 3605 l
+2011_09_26/2011_09_26_drive_0028_sync 121 l
+2011_09_30/2011_09_30_drive_0033_sync 1367 r
+2011_09_26/2011_09_26_drive_0032_sync 343 r
+2011_09_26/2011_09_26_drive_0087_sync 235 r
+2011_09_30/2011_09_30_drive_0028_sync 4973 l
+2011_09_30/2011_09_30_drive_0028_sync 864 l
+2011_10_03/2011_10_03_drive_0042_sync 891 r
+2011_09_30/2011_09_30_drive_0033_sync 219 l
+2011_09_26/2011_09_26_drive_0087_sync 156 r
+2011_10_03/2011_10_03_drive_0034_sync 677 r
+2011_09_30/2011_09_30_drive_0028_sync 1735 l
+2011_09_30/2011_09_30_drive_0033_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 4366 l
+2011_09_30/2011_09_30_drive_0028_sync 4172 r
+2011_09_30/2011_09_30_drive_0034_sync 894 l
+2011_10_03/2011_10_03_drive_0034_sync 4391 l
+2011_09_30/2011_09_30_drive_0028_sync 4134 r
+2011_09_30/2011_09_30_drive_0028_sync 362 r
+2011_09_30/2011_09_30_drive_0020_sync 302 l
+2011_10_03/2011_10_03_drive_0042_sync 237 l
+2011_10_03/2011_10_03_drive_0034_sync 1823 l
+2011_10_03/2011_10_03_drive_0042_sync 885 l
+2011_09_26/2011_09_26_drive_0051_sync 179 r
+2011_09_30/2011_09_30_drive_0020_sync 201 r
+2011_10_03/2011_10_03_drive_0034_sync 4126 l
+2011_10_03/2011_10_03_drive_0042_sync 468 l
+2011_09_30/2011_09_30_drive_0028_sync 3040 l
+2011_09_30/2011_09_30_drive_0033_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 590 l
+2011_09_30/2011_09_30_drive_0028_sync 2666 r
+2011_10_03/2011_10_03_drive_0034_sync 4424 r
+2011_10_03/2011_10_03_drive_0042_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 3839 l
+2011_09_30/2011_09_30_drive_0020_sync 580 r
+2011_09_30/2011_09_30_drive_0033_sync 282 l
+2011_09_30/2011_09_30_drive_0028_sync 5119 r
+2011_09_26/2011_09_26_drive_0113_sync 6 r
+2011_09_30/2011_09_30_drive_0033_sync 1256 r
+2011_09_30/2011_09_30_drive_0028_sync 3817 r
+2011_09_30/2011_09_30_drive_0028_sync 3482 r
+2011_09_30/2011_09_30_drive_0028_sync 1048 l
+2011_09_30/2011_09_30_drive_0028_sync 4310 l
+2011_09_30/2011_09_30_drive_0034_sync 233 r
+2011_09_26/2011_09_26_drive_0095_sync 171 l
+2011_10_03/2011_10_03_drive_0034_sync 957 l
+2011_09_30/2011_09_30_drive_0034_sync 207 r
+2011_10_03/2011_10_03_drive_0042_sync 338 r
+2011_10_03/2011_10_03_drive_0042_sync 1055 l
+2011_10_03/2011_10_03_drive_0034_sync 1535 l
+2011_09_26/2011_09_26_drive_0035_sync 85 l
+2011_09_28/2011_09_28_drive_0001_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 2101 l
+2011_09_30/2011_09_30_drive_0028_sync 1390 r
+2011_09_30/2011_09_30_drive_0033_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 4362 r
+2011_09_30/2011_09_30_drive_0028_sync 4444 l
+2011_09_26/2011_09_26_drive_0060_sync 56 l
+2011_09_30/2011_09_30_drive_0034_sync 933 r
+2011_10_03/2011_10_03_drive_0034_sync 584 r
+2011_10_03/2011_10_03_drive_0034_sync 2119 r
+2011_10_03/2011_10_03_drive_0034_sync 3174 r
+2011_10_03/2011_10_03_drive_0042_sync 547 l
+2011_10_03/2011_10_03_drive_0034_sync 629 r
+2011_09_30/2011_09_30_drive_0034_sync 176 l
+2011_10_03/2011_10_03_drive_0042_sync 350 l
+2011_09_26/2011_09_26_drive_0039_sync 282 l
+2011_09_26/2011_09_26_drive_0015_sync 28 r
+2011_09_29/2011_09_29_drive_0026_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 4130 r
+2011_09_30/2011_09_30_drive_0033_sync 541 l
+2011_10_03/2011_10_03_drive_0042_sync 585 l
+2011_09_30/2011_09_30_drive_0020_sync 161 r
+2011_09_26/2011_09_26_drive_0079_sync 38 r
+2011_09_30/2011_09_30_drive_0034_sync 531 r
+2011_09_30/2011_09_30_drive_0033_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 278 r
+2011_09_30/2011_09_30_drive_0034_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 1382 l
+2011_09_26/2011_09_26_drive_0061_sync 670 l
+2011_09_30/2011_09_30_drive_0028_sync 2713 r
+2011_10_03/2011_10_03_drive_0034_sync 1912 r
+2011_09_30/2011_09_30_drive_0033_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 354 r
+2011_09_26/2011_09_26_drive_0022_sync 497 l
+2011_10_03/2011_10_03_drive_0034_sync 3359 l
+2011_09_30/2011_09_30_drive_0028_sync 5034 l
+2011_09_30/2011_09_30_drive_0020_sync 577 l
+2011_09_30/2011_09_30_drive_0028_sync 335 r
+2011_09_30/2011_09_30_drive_0028_sync 710 l
+2011_09_26/2011_09_26_drive_0061_sync 631 r
+2011_09_30/2011_09_30_drive_0028_sync 575 l
+2011_09_30/2011_09_30_drive_0020_sync 815 r
+2011_09_30/2011_09_30_drive_0033_sync 1577 r
+2011_09_29/2011_09_29_drive_0004_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 724 l
+2011_09_30/2011_09_30_drive_0034_sync 23 l
+2011_09_26/2011_09_26_drive_0022_sync 391 l
+2011_09_26/2011_09_26_drive_0022_sync 262 l
+2011_09_30/2011_09_30_drive_0034_sync 1164 r
+2011_10_03/2011_10_03_drive_0034_sync 4359 r
+2011_09_30/2011_09_30_drive_0028_sync 4912 l
+2011_09_26/2011_09_26_drive_0022_sync 211 l
+2011_09_26/2011_09_26_drive_0032_sync 335 l
+2011_09_30/2011_09_30_drive_0028_sync 5076 r
+2011_09_30/2011_09_30_drive_0028_sync 2139 r
+2011_10_03/2011_10_03_drive_0042_sync 812 l
+2011_09_26/2011_09_26_drive_0079_sync 24 r
+2011_09_30/2011_09_30_drive_0020_sync 891 r
+2011_10_03/2011_10_03_drive_0042_sync 662 r
+2011_09_30/2011_09_30_drive_0028_sync 1497 l
+2011_09_26/2011_09_26_drive_0032_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 1295 l
+2011_09_30/2011_09_30_drive_0033_sync 1194 r
+2011_10_03/2011_10_03_drive_0034_sync 895 l
+2011_09_26/2011_09_26_drive_0039_sync 191 r
+2011_09_29/2011_09_29_drive_0026_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 2360 l
+2011_09_26/2011_09_26_drive_0015_sync 201 l
+2011_09_26/2011_09_26_drive_0039_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 3879 r
+2011_09_30/2011_09_30_drive_0020_sync 1003 r
+2011_09_26/2011_09_26_drive_0039_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 4977 r
+2011_09_26/2011_09_26_drive_0087_sync 55 r
+2011_10_03/2011_10_03_drive_0034_sync 1623 l
+2011_10_03/2011_10_03_drive_0034_sync 815 r
+2011_09_26/2011_09_26_drive_0017_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 4304 l
+2011_10_03/2011_10_03_drive_0034_sync 3827 r
+2011_09_26/2011_09_26_drive_0014_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 3612 l
+2011_09_26/2011_09_26_drive_0018_sync 191 r
+2011_09_26/2011_09_26_drive_0019_sync 34 l
+2011_09_30/2011_09_30_drive_0020_sync 441 r
+2011_09_30/2011_09_30_drive_0033_sync 670 l
+2011_09_26/2011_09_26_drive_0015_sync 178 r
+2011_09_26/2011_09_26_drive_0035_sync 68 r
+2011_09_30/2011_09_30_drive_0034_sync 1049 r
+2011_09_30/2011_09_30_drive_0028_sync 1173 r
+2011_09_26/2011_09_26_drive_0018_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 3331 r
+2011_09_26/2011_09_26_drive_0087_sync 518 r
+2011_09_30/2011_09_30_drive_0020_sync 707 r
+2011_09_26/2011_09_26_drive_0022_sync 161 r
+2011_09_30/2011_09_30_drive_0034_sync 1144 r
+2011_09_30/2011_09_30_drive_0034_sync 1194 r
+2011_09_26/2011_09_26_drive_0015_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 2851 l
+2011_10_03/2011_10_03_drive_0034_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 4158 l
+2011_09_30/2011_09_30_drive_0033_sync 1279 l
+2011_09_26/2011_09_26_drive_0061_sync 622 l
+2011_09_26/2011_09_26_drive_0019_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4646 l
+2011_09_30/2011_09_30_drive_0028_sync 4903 l
+2011_10_03/2011_10_03_drive_0034_sync 2935 l
+2011_10_03/2011_10_03_drive_0042_sync 841 l
+2011_09_30/2011_09_30_drive_0028_sync 331 r
+2011_09_30/2011_09_30_drive_0028_sync 4325 l
+2011_09_30/2011_09_30_drive_0028_sync 1442 r
+2011_09_30/2011_09_30_drive_0033_sync 1509 r
+2011_09_30/2011_09_30_drive_0028_sync 4308 r
+2011_09_26/2011_09_26_drive_0070_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 1867 r
+2011_10_03/2011_10_03_drive_0034_sync 653 l
+2011_09_30/2011_09_30_drive_0033_sync 1390 r
+2011_09_30/2011_09_30_drive_0034_sync 712 r
+2011_09_30/2011_09_30_drive_0028_sync 3170 l
+2011_09_26/2011_09_26_drive_0087_sync 94 r
+2011_10_03/2011_10_03_drive_0042_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 4318 l
+2011_09_30/2011_09_30_drive_0028_sync 342 l
+2011_09_26/2011_09_26_drive_0015_sync 35 l
+2011_09_26/2011_09_26_drive_0022_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 3374 r
+2011_09_30/2011_09_30_drive_0033_sync 850 r
+2011_09_30/2011_09_30_drive_0033_sync 1306 l
+2011_09_30/2011_09_30_drive_0028_sync 2536 l
+2011_09_30/2011_09_30_drive_0028_sync 317 r
+2011_10_03/2011_10_03_drive_0034_sync 3934 l
+2011_10_03/2011_10_03_drive_0034_sync 4610 r
+2011_09_26/2011_09_26_drive_0032_sync 224 l
+2011_09_26/2011_09_26_drive_0014_sync 271 l
+2011_09_26/2011_09_26_drive_0019_sync 28 l
+2011_09_26/2011_09_26_drive_0057_sync 50 l
+2011_09_26/2011_09_26_drive_0019_sync 237 r
+2011_09_30/2011_09_30_drive_0020_sync 890 l
+2011_09_30/2011_09_30_drive_0028_sync 4586 l
+2011_09_30/2011_09_30_drive_0033_sync 1504 r
+2011_09_26/2011_09_26_drive_0051_sync 272 l
+2011_09_30/2011_09_30_drive_0034_sync 1110 r
+2011_10_03/2011_10_03_drive_0034_sync 2186 r
+2011_09_30/2011_09_30_drive_0028_sync 4496 r
+2011_09_30/2011_09_30_drive_0028_sync 376 r
+2011_09_30/2011_09_30_drive_0028_sync 2051 r
+2011_09_30/2011_09_30_drive_0028_sync 45 r
+2011_09_30/2011_09_30_drive_0034_sync 429 r
+2011_09_30/2011_09_30_drive_0020_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 1683 l
+2011_09_30/2011_09_30_drive_0028_sync 157 r
+2011_09_30/2011_09_30_drive_0034_sync 882 r
+2011_09_30/2011_09_30_drive_0028_sync 1273 l
+2011_09_30/2011_09_30_drive_0028_sync 277 r
+2011_10_03/2011_10_03_drive_0034_sync 3604 r
+2011_10_03/2011_10_03_drive_0034_sync 4257 r
+2011_10_03/2011_10_03_drive_0042_sync 1021 l
+2011_10_03/2011_10_03_drive_0034_sync 3590 r
+2011_09_26/2011_09_26_drive_0051_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 3040 r
+2011_09_30/2011_09_30_drive_0020_sync 1084 r
+2011_09_26/2011_09_26_drive_0087_sync 512 r
+2011_09_30/2011_09_30_drive_0028_sync 4358 l
+2011_09_30/2011_09_30_drive_0034_sync 771 l
+2011_10_03/2011_10_03_drive_0042_sync 503 l
+2011_09_30/2011_09_30_drive_0028_sync 721 r
+2011_09_30/2011_09_30_drive_0028_sync 2205 l
+2011_09_30/2011_09_30_drive_0020_sync 908 r
+2011_09_26/2011_09_26_drive_0018_sync 200 l
+2011_10_03/2011_10_03_drive_0034_sync 751 r
+2011_09_26/2011_09_26_drive_0005_sync 49 l
+2011_09_26/2011_09_26_drive_0022_sync 420 r
+2011_10_03/2011_10_03_drive_0034_sync 3847 r
+2011_09_26/2011_09_26_drive_0022_sync 778 l
+2011_09_26/2011_09_26_drive_0039_sync 119 r
+2011_10_03/2011_10_03_drive_0034_sync 1649 l
+2011_09_30/2011_09_30_drive_0028_sync 3962 l
+2011_10_03/2011_10_03_drive_0034_sync 1366 r
+2011_10_03/2011_10_03_drive_0042_sync 855 r
+2011_09_30/2011_09_30_drive_0034_sync 84 l
+2011_09_26/2011_09_26_drive_0039_sync 36 l
+2011_10_03/2011_10_03_drive_0042_sync 988 r
+2011_09_26/2011_09_26_drive_0032_sync 315 r
+2011_09_30/2011_09_30_drive_0028_sync 2129 l
+2011_10_03/2011_10_03_drive_0034_sync 638 l
+2011_10_03/2011_10_03_drive_0034_sync 3492 l
+2011_09_26/2011_09_26_drive_0022_sync 504 l
+2011_10_03/2011_10_03_drive_0042_sync 618 r
+2011_09_26/2011_09_26_drive_0113_sync 5 r
+2011_09_30/2011_09_30_drive_0020_sync 682 r
+2011_09_30/2011_09_30_drive_0034_sync 440 r
+2011_09_26/2011_09_26_drive_0019_sync 245 r
+2011_09_26/2011_09_26_drive_0014_sync 161 r
+2011_09_26/2011_09_26_drive_0032_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 3738 l
+2011_09_26/2011_09_26_drive_0022_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 1062 r
+2011_10_03/2011_10_03_drive_0034_sync 1352 r
+2011_10_03/2011_10_03_drive_0042_sync 745 l
+2011_09_26/2011_09_26_drive_0005_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 1510 l
+2011_10_03/2011_10_03_drive_0034_sync 1648 l
+2011_10_03/2011_10_03_drive_0034_sync 4488 l
+2011_10_03/2011_10_03_drive_0034_sync 219 l
+2011_09_26/2011_09_26_drive_0095_sync 26 l
+2011_09_26/2011_09_26_drive_0001_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 2116 l
+2011_09_30/2011_09_30_drive_0028_sync 1179 r
+2011_09_26/2011_09_26_drive_0104_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 2277 l
+2011_09_26/2011_09_26_drive_0019_sync 40 r
+2011_09_30/2011_09_30_drive_0020_sync 850 r
+2011_09_26/2011_09_26_drive_0039_sync 7 l
+2011_09_26/2011_09_26_drive_0022_sync 659 r
+2011_09_30/2011_09_30_drive_0028_sync 3119 r
+2011_09_26/2011_09_26_drive_0051_sync 209 r
+2011_09_26/2011_09_26_drive_0028_sync 202 r
+2011_09_26/2011_09_26_drive_0061_sync 35 l
+2011_09_26/2011_09_26_drive_0087_sync 390 r
+2011_10_03/2011_10_03_drive_0034_sync 4590 r
+2011_09_30/2011_09_30_drive_0028_sync 1945 l
+2011_09_26/2011_09_26_drive_0022_sync 341 l
+2011_10_03/2011_10_03_drive_0034_sync 2190 r
+2011_10_03/2011_10_03_drive_0034_sync 3817 l
+2011_09_26/2011_09_26_drive_0057_sync 38 l
+2011_09_30/2011_09_30_drive_0033_sync 523 r
+2011_09_30/2011_09_30_drive_0020_sync 182 l
+2011_10_03/2011_10_03_drive_0034_sync 2407 l
+2011_10_03/2011_10_03_drive_0042_sync 569 l
+2011_09_30/2011_09_30_drive_0034_sync 735 r
+2011_09_26/2011_09_26_drive_0060_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 1748 r
+2011_09_26/2011_09_26_drive_0019_sync 119 l
+2011_09_26/2011_09_26_drive_0017_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 2374 l
+2011_09_26/2011_09_26_drive_0018_sync 217 l
+2011_09_30/2011_09_30_drive_0028_sync 3911 l
+2011_09_30/2011_09_30_drive_0034_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 740 l
+2011_09_30/2011_09_30_drive_0034_sync 1067 r
+2011_09_30/2011_09_30_drive_0034_sync 214 l
+2011_09_26/2011_09_26_drive_0011_sync 47 r
+2011_09_30/2011_09_30_drive_0020_sync 550 l
+2011_09_26/2011_09_26_drive_0061_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 4249 r
+2011_09_26/2011_09_26_drive_0070_sync 336 l
+2011_09_26/2011_09_26_drive_0070_sync 408 l
+2011_10_03/2011_10_03_drive_0034_sync 1405 r
+2011_09_30/2011_09_30_drive_0028_sync 3710 r
+2011_10_03/2011_10_03_drive_0034_sync 389 r
+2011_09_30/2011_09_30_drive_0033_sync 1225 l
+2011_09_26/2011_09_26_drive_0061_sync 662 l
+2011_10_03/2011_10_03_drive_0034_sync 3322 l
+2011_09_26/2011_09_26_drive_0022_sync 54 r
+2011_10_03/2011_10_03_drive_0034_sync 2825 l
+2011_10_03/2011_10_03_drive_0042_sync 727 r
+2011_09_30/2011_09_30_drive_0028_sync 3308 r
+2011_10_03/2011_10_03_drive_0034_sync 1842 r
+2011_09_30/2011_09_30_drive_0028_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 2939 l
+2011_09_30/2011_09_30_drive_0034_sync 919 r
+2011_09_26/2011_09_26_drive_0057_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 4129 r
+2011_09_30/2011_09_30_drive_0028_sync 2953 l
+2011_09_30/2011_09_30_drive_0034_sync 91 l
+2011_09_26/2011_09_26_drive_0015_sync 296 l
+2011_09_30/2011_09_30_drive_0033_sync 969 l
+2011_09_30/2011_09_30_drive_0028_sync 1900 r
+2011_09_30/2011_09_30_drive_0020_sync 8 l
+2011_09_30/2011_09_30_drive_0020_sync 15 l
+2011_09_26/2011_09_26_drive_0022_sync 398 r
+2011_09_30/2011_09_30_drive_0028_sync 548 r
+2011_10_03/2011_10_03_drive_0034_sync 942 r
+2011_09_26/2011_09_26_drive_0018_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 315 l
+2011_09_30/2011_09_30_drive_0020_sync 662 r
+2011_10_03/2011_10_03_drive_0034_sync 547 l
+2011_10_03/2011_10_03_drive_0034_sync 2034 r
+2011_09_30/2011_09_30_drive_0028_sync 1663 r
+2011_09_26/2011_09_26_drive_0018_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 3405 l
+2011_09_30/2011_09_30_drive_0028_sync 3347 l
+2011_09_30/2011_09_30_drive_0028_sync 1611 r
+2011_09_26/2011_09_26_drive_0079_sync 47 l
+2011_09_26/2011_09_26_drive_0113_sync 54 r
+2011_09_30/2011_09_30_drive_0033_sync 1303 l
+2011_10_03/2011_10_03_drive_0034_sync 4492 r
+2011_09_30/2011_09_30_drive_0028_sync 4770 r
+2011_09_26/2011_09_26_drive_0061_sync 534 r
+2011_09_30/2011_09_30_drive_0028_sync 3742 l
+2011_10_03/2011_10_03_drive_0034_sync 3608 r
+2011_09_30/2011_09_30_drive_0034_sync 938 l
+2011_09_26/2011_09_26_drive_0051_sync 236 l
+2011_09_30/2011_09_30_drive_0028_sync 3779 l
+2011_10_03/2011_10_03_drive_0042_sync 429 l
+2011_09_30/2011_09_30_drive_0020_sync 646 r
+2011_09_30/2011_09_30_drive_0020_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 3029 r
+2011_10_03/2011_10_03_drive_0034_sync 3686 l
+2011_09_30/2011_09_30_drive_0033_sync 456 l
+2011_10_03/2011_10_03_drive_0034_sync 1490 l
+2011_10_03/2011_10_03_drive_0034_sync 2387 l
+2011_09_26/2011_09_26_drive_0091_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 4337 l
+2011_09_26/2011_09_26_drive_0061_sync 51 r
+2011_09_30/2011_09_30_drive_0034_sync 845 r
+2011_09_30/2011_09_30_drive_0034_sync 984 r
+2011_10_03/2011_10_03_drive_0034_sync 1604 l
+2011_10_03/2011_10_03_drive_0034_sync 1611 r
+2011_09_30/2011_09_30_drive_0028_sync 1961 l
+2011_09_26/2011_09_26_drive_0011_sync 170 l
+2011_09_26/2011_09_26_drive_0061_sync 206 r
+2011_09_26/2011_09_26_drive_0022_sync 715 l
+2011_10_03/2011_10_03_drive_0034_sync 4289 l
+2011_09_30/2011_09_30_drive_0020_sync 832 l
+2011_10_03/2011_10_03_drive_0042_sync 726 r
+2011_09_30/2011_09_30_drive_0033_sync 1103 l
+2011_10_03/2011_10_03_drive_0034_sync 1318 r
+2011_10_03/2011_10_03_drive_0034_sync 3910 r
+2011_09_30/2011_09_30_drive_0020_sync 367 r
+2011_09_30/2011_09_30_drive_0028_sync 4190 l
+2011_09_26/2011_09_26_drive_0070_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 2805 l
+2011_09_26/2011_09_26_drive_0057_sync 74 l
+2011_10_03/2011_10_03_drive_0034_sync 214 r
+2011_09_26/2011_09_26_drive_0087_sync 20 r
+2011_09_26/2011_09_26_drive_0051_sync 378 l
+2011_09_26/2011_09_26_drive_0039_sync 79 l
+2011_09_30/2011_09_30_drive_0020_sync 693 l
+2011_09_26/2011_09_26_drive_0061_sync 422 l
+2011_09_30/2011_09_30_drive_0028_sync 2097 l
+2011_09_30/2011_09_30_drive_0028_sync 4366 r
+2011_09_26/2011_09_26_drive_0104_sync 71 r
+2011_09_26/2011_09_26_drive_0057_sync 15 l
+2011_09_30/2011_09_30_drive_0033_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 2550 r
+2011_09_26/2011_09_26_drive_0061_sync 351 l
+2011_10_03/2011_10_03_drive_0042_sync 629 r
+2011_09_30/2011_09_30_drive_0033_sync 526 r
+2011_10_03/2011_10_03_drive_0034_sync 3499 r
+2011_10_03/2011_10_03_drive_0034_sync 4455 r
+2011_10_03/2011_10_03_drive_0034_sync 1568 r
+2011_09_30/2011_09_30_drive_0033_sync 774 l
+2011_09_30/2011_09_30_drive_0034_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 1417 l
+2011_09_26/2011_09_26_drive_0032_sync 225 l
+2011_09_26/2011_09_26_drive_0061_sync 676 r
+2011_10_03/2011_10_03_drive_0034_sync 4440 r
+2011_09_30/2011_09_30_drive_0033_sync 1027 l
+2011_09_30/2011_09_30_drive_0028_sync 3304 l
+2011_10_03/2011_10_03_drive_0034_sync 4310 l
+2011_09_26/2011_09_26_drive_0039_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 1057 r
+2011_10_03/2011_10_03_drive_0034_sync 3513 r
+2011_09_30/2011_09_30_drive_0028_sync 2914 l
+2011_09_26/2011_09_26_drive_0022_sync 553 r
+2011_09_26/2011_09_26_drive_0011_sync 12 r
+2011_09_26/2011_09_26_drive_0011_sync 95 l
+2011_09_26/2011_09_26_drive_0079_sync 73 l
+2011_09_26/2011_09_26_drive_0018_sync 19 l
+2011_09_30/2011_09_30_drive_0020_sync 744 r
+2011_10_03/2011_10_03_drive_0034_sync 393 r
+2011_10_03/2011_10_03_drive_0034_sync 1108 r
+2011_09_30/2011_09_30_drive_0020_sync 603 r
+2011_09_30/2011_09_30_drive_0028_sync 4150 l
+2011_09_26/2011_09_26_drive_0011_sync 208 r
+2011_09_30/2011_09_30_drive_0028_sync 1712 r
+2011_09_30/2011_09_30_drive_0028_sync 4307 l
+2011_09_28/2011_09_28_drive_0001_sync 34 l
+2011_09_26/2011_09_26_drive_0014_sync 23 l
+2011_10_03/2011_10_03_drive_0034_sync 3462 r
+2011_10_03/2011_10_03_drive_0042_sync 806 r
+2011_09_30/2011_09_30_drive_0028_sync 1782 l
+2011_09_26/2011_09_26_drive_0087_sync 576 l
+2011_09_30/2011_09_30_drive_0034_sync 605 l
+2011_09_29/2011_09_29_drive_0004_sync 203 l
+2011_10_03/2011_10_03_drive_0034_sync 3222 r
+2011_09_26/2011_09_26_drive_0070_sync 61 r
+2011_09_30/2011_09_30_drive_0020_sync 38 l
+2011_09_26/2011_09_26_drive_0061_sync 555 r
+2011_10_03/2011_10_03_drive_0034_sync 740 l
+2011_10_03/2011_10_03_drive_0034_sync 4517 r
+2011_10_03/2011_10_03_drive_0042_sync 1102 r
+2011_10_03/2011_10_03_drive_0034_sync 4500 l
+2011_09_30/2011_09_30_drive_0033_sync 448 r
+2011_10_03/2011_10_03_drive_0034_sync 2131 l
+2011_10_03/2011_10_03_drive_0042_sync 447 r
+2011_09_26/2011_09_26_drive_0032_sync 310 l
+2011_09_26/2011_09_26_drive_0032_sync 334 r
+2011_10_03/2011_10_03_drive_0042_sync 1086 l
+2011_09_30/2011_09_30_drive_0033_sync 495 r
+2011_09_30/2011_09_30_drive_0028_sync 2796 l
+2011_09_28/2011_09_28_drive_0001_sync 2 r
+2011_09_26/2011_09_26_drive_0104_sync 104 r
+2011_09_26/2011_09_26_drive_0022_sync 265 r
+2011_09_30/2011_09_30_drive_0028_sync 2232 r
+2011_09_30/2011_09_30_drive_0034_sync 223 l
+2011_09_26/2011_09_26_drive_0087_sync 138 r
+2011_09_30/2011_09_30_drive_0034_sync 751 l
+2011_10_03/2011_10_03_drive_0042_sync 159 r
+2011_09_26/2011_09_26_drive_0035_sync 19 l
+2011_10_03/2011_10_03_drive_0042_sync 41 l
+2011_10_03/2011_10_03_drive_0034_sync 2145 l
+2011_09_30/2011_09_30_drive_0028_sync 1048 r
+2011_10_03/2011_10_03_drive_0034_sync 2315 r
+2011_10_03/2011_10_03_drive_0042_sync 1161 l
+2011_09_30/2011_09_30_drive_0020_sync 602 l
+2011_09_30/2011_09_30_drive_0034_sync 855 l
+2011_09_30/2011_09_30_drive_0028_sync 522 r
+2011_09_26/2011_09_26_drive_0070_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 363 l
+2011_09_26/2011_09_26_drive_0070_sync 252 r
+2011_09_30/2011_09_30_drive_0020_sync 524 r
+2011_10_03/2011_10_03_drive_0042_sync 767 l
+2011_09_26/2011_09_26_drive_0061_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 3225 l
+2011_09_26/2011_09_26_drive_0104_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 1417 r
+2011_09_30/2011_09_30_drive_0028_sync 4239 r
+2011_09_26/2011_09_26_drive_0019_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 662 l
+2011_09_26/2011_09_26_drive_0019_sync 429 r
+2011_09_26/2011_09_26_drive_0017_sync 38 l
+2011_09_26/2011_09_26_drive_0032_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 808 l
+2011_09_30/2011_09_30_drive_0034_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 3417 l
+2011_09_26/2011_09_26_drive_0018_sync 229 l
+2011_09_26/2011_09_26_drive_0091_sync 186 l
+2011_10_03/2011_10_03_drive_0034_sync 1128 r
+2011_09_26/2011_09_26_drive_0070_sync 31 l
+2011_09_29/2011_09_29_drive_0026_sync 49 l
+2011_10_03/2011_10_03_drive_0034_sync 3691 l
+2011_09_30/2011_09_30_drive_0028_sync 2869 r
+2011_10_03/2011_10_03_drive_0034_sync 2842 r
+2011_09_26/2011_09_26_drive_0019_sync 103 r
+2011_09_26/2011_09_26_drive_0104_sync 97 r
+2011_09_26/2011_09_26_drive_0051_sync 159 r
+2011_09_26/2011_09_26_drive_0014_sync 266 r
+2011_09_30/2011_09_30_drive_0028_sync 896 r
+2011_09_30/2011_09_30_drive_0033_sync 1480 r
+2011_09_26/2011_09_26_drive_0015_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 1899 r
+2011_09_26/2011_09_26_drive_0087_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 69 l
+2011_09_26/2011_09_26_drive_0022_sync 680 l
+2011_09_26/2011_09_26_drive_0113_sync 36 l
+2011_09_26/2011_09_26_drive_0060_sync 32 r
+2011_09_30/2011_09_30_drive_0028_sync 1503 l
+2011_10_03/2011_10_03_drive_0042_sync 375 l
+2011_10_03/2011_10_03_drive_0034_sync 2690 l
+2011_09_30/2011_09_30_drive_0034_sync 859 l
+2011_09_30/2011_09_30_drive_0028_sync 2889 r
+2011_09_26/2011_09_26_drive_0104_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 665 l
+2011_09_30/2011_09_30_drive_0028_sync 3578 l
+2011_10_03/2011_10_03_drive_0034_sync 4364 r
+2011_10_03/2011_10_03_drive_0034_sync 2850 r
+2011_09_26/2011_09_26_drive_0018_sync 129 r
+2011_09_26/2011_09_26_drive_0022_sync 322 r
+2011_09_26/2011_09_26_drive_0087_sync 345 r
+2011_10_03/2011_10_03_drive_0034_sync 315 r
+2011_09_26/2011_09_26_drive_0061_sync 108 r
+2011_09_26/2011_09_26_drive_0015_sync 257 r
+2011_09_26/2011_09_26_drive_0011_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 3169 l
+2011_09_30/2011_09_30_drive_0033_sync 1134 r
+2011_09_26/2011_09_26_drive_0011_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 4518 r
+2011_09_26/2011_09_26_drive_0051_sync 172 l
+2011_10_03/2011_10_03_drive_0034_sync 3056 l
+2011_09_26/2011_09_26_drive_0019_sync 7 l
+2011_10_03/2011_10_03_drive_0042_sync 727 l
+2011_09_26/2011_09_26_drive_0070_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 3281 r
+2011_09_30/2011_09_30_drive_0028_sync 3613 r
+2011_10_03/2011_10_03_drive_0034_sync 4567 r
+2011_09_30/2011_09_30_drive_0034_sync 221 l
+2011_09_26/2011_09_26_drive_0091_sync 266 r
+2011_09_26/2011_09_26_drive_0095_sync 7 r
+2011_09_26/2011_09_26_drive_0087_sync 699 l
+2011_10_03/2011_10_03_drive_0034_sync 3389 l
+2011_09_26/2011_09_26_drive_0061_sync 664 l
+2011_10_03/2011_10_03_drive_0034_sync 4381 l
+2011_09_30/2011_09_30_drive_0020_sync 865 l
+2011_09_30/2011_09_30_drive_0028_sync 2448 r
+2011_09_26/2011_09_26_drive_0070_sync 355 l
+2011_09_30/2011_09_30_drive_0028_sync 37 r
+2011_09_26/2011_09_26_drive_0057_sync 340 l
+2011_09_26/2011_09_26_drive_0032_sync 31 l
+2011_10_03/2011_10_03_drive_0034_sync 1965 l
+2011_09_30/2011_09_30_drive_0033_sync 435 r
+2011_09_30/2011_09_30_drive_0033_sync 692 r
+2011_09_30/2011_09_30_drive_0028_sync 2395 r
+2011_09_29/2011_09_29_drive_0004_sync 323 r
+2011_09_26/2011_09_26_drive_0014_sync 95 l
+2011_10_03/2011_10_03_drive_0034_sync 3862 r
+2011_10_03/2011_10_03_drive_0034_sync 619 r
+2011_09_26/2011_09_26_drive_0070_sync 245 r
+2011_09_30/2011_09_30_drive_0033_sync 25 r
+2011_09_30/2011_09_30_drive_0028_sync 3405 r
+2011_10_03/2011_10_03_drive_0034_sync 1538 r
+2011_09_30/2011_09_30_drive_0020_sync 811 r
+2011_10_03/2011_10_03_drive_0034_sync 1301 l
+2011_09_30/2011_09_30_drive_0028_sync 1222 r
+2011_09_30/2011_09_30_drive_0028_sync 1290 r
+2011_09_30/2011_09_30_drive_0028_sync 1444 r
+2011_09_26/2011_09_26_drive_0018_sync 201 l
+2011_10_03/2011_10_03_drive_0034_sync 1105 l
+2011_10_03/2011_10_03_drive_0034_sync 2990 l
+2011_09_30/2011_09_30_drive_0028_sync 2306 r
+2011_09_26/2011_09_26_drive_0087_sync 150 l
+2011_09_29/2011_09_29_drive_0026_sync 66 l
+2011_09_30/2011_09_30_drive_0033_sync 861 l
+2011_10_03/2011_10_03_drive_0034_sync 1382 r
+2011_09_30/2011_09_30_drive_0034_sync 993 l
+2011_09_26/2011_09_26_drive_0014_sync 200 r
+2011_09_26/2011_09_26_drive_0051_sync 387 r
+2011_09_30/2011_09_30_drive_0028_sync 647 r
+2011_09_30/2011_09_30_drive_0034_sync 314 l
+2011_09_26/2011_09_26_drive_0079_sync 27 r
+2011_10_03/2011_10_03_drive_0034_sync 1758 l
+2011_09_26/2011_09_26_drive_0032_sync 278 r
+2011_09_26/2011_09_26_drive_0039_sync 82 r
+2011_09_30/2011_09_30_drive_0033_sync 1367 l
+2011_09_26/2011_09_26_drive_0022_sync 256 l
+2011_09_26/2011_09_26_drive_0019_sync 371 l
+2011_09_30/2011_09_30_drive_0028_sync 1403 l
+2011_09_26/2011_09_26_drive_0022_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 1180 l
+2011_09_26/2011_09_26_drive_0091_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 2858 r
+2011_09_26/2011_09_26_drive_0032_sync 149 r
+2011_09_26/2011_09_26_drive_0087_sync 408 r
+2011_09_26/2011_09_26_drive_0104_sync 180 r
+2011_09_30/2011_09_30_drive_0033_sync 517 r
+2011_10_03/2011_10_03_drive_0034_sync 2096 l
+2011_10_03/2011_10_03_drive_0034_sync 281 r
+2011_09_26/2011_09_26_drive_0087_sync 202 l
+2011_10_03/2011_10_03_drive_0034_sync 2284 r
+2011_09_26/2011_09_26_drive_0087_sync 599 l
+2011_09_26/2011_09_26_drive_0028_sync 291 r
+2011_09_30/2011_09_30_drive_0034_sync 290 l
+2011_09_26/2011_09_26_drive_0028_sync 40 r
+2011_09_26/2011_09_26_drive_0019_sync 12 l
+2011_09_26/2011_09_26_drive_0070_sync 395 l
+2011_10_03/2011_10_03_drive_0042_sync 474 l
+2011_09_26/2011_09_26_drive_0051_sync 139 l
+2011_09_29/2011_09_29_drive_0026_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 2598 r
+2011_10_03/2011_10_03_drive_0034_sync 4027 r
+2011_09_26/2011_09_26_drive_0015_sync 177 r
+2011_10_03/2011_10_03_drive_0034_sync 1886 r
+2011_09_30/2011_09_30_drive_0020_sync 1053 l
+2011_09_26/2011_09_26_drive_0113_sync 10 l
+2011_09_30/2011_09_30_drive_0033_sync 1492 r
+2011_10_03/2011_10_03_drive_0034_sync 769 l
+2011_09_28/2011_09_28_drive_0001_sync 82 l
+2011_09_26/2011_09_26_drive_0035_sync 71 l
+2011_09_26/2011_09_26_drive_0104_sync 126 r
+2011_10_03/2011_10_03_drive_0034_sync 2956 l
+2011_10_03/2011_10_03_drive_0034_sync 2235 r
+2011_09_30/2011_09_30_drive_0020_sync 312 r
+2011_09_30/2011_09_30_drive_0028_sync 325 r
+2011_09_30/2011_09_30_drive_0034_sync 808 l
+2011_09_30/2011_09_30_drive_0028_sync 2850 r
+2011_09_26/2011_09_26_drive_0061_sync 572 r
+2011_09_26/2011_09_26_drive_0022_sync 784 r
+2011_09_26/2011_09_26_drive_0113_sync 73 l
+2011_09_26/2011_09_26_drive_0022_sync 128 l
+2011_09_30/2011_09_30_drive_0020_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 2342 l
+2011_09_26/2011_09_26_drive_0095_sync 192 l
+2011_09_26/2011_09_26_drive_0017_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 2815 r
+2011_09_30/2011_09_30_drive_0028_sync 3701 r
+2011_09_30/2011_09_30_drive_0028_sync 4795 r
+2011_09_26/2011_09_26_drive_0070_sync 401 r
+2011_10_03/2011_10_03_drive_0034_sync 3604 l
+2011_09_30/2011_09_30_drive_0033_sync 975 r
+2011_10_03/2011_10_03_drive_0042_sync 542 r
+2011_09_26/2011_09_26_drive_0051_sync 404 r
+2011_09_26/2011_09_26_drive_0091_sync 203 r
+2011_09_26/2011_09_26_drive_0061_sync 431 r
+2011_10_03/2011_10_03_drive_0034_sync 199 l
+2011_09_26/2011_09_26_drive_0061_sync 429 l
+2011_09_30/2011_09_30_drive_0028_sync 5176 r
+2011_09_26/2011_09_26_drive_0022_sync 420 l
+2011_09_30/2011_09_30_drive_0020_sync 14 r
+2011_09_30/2011_09_30_drive_0028_sync 3479 r
+2011_09_26/2011_09_26_drive_0032_sync 92 l
+2011_09_30/2011_09_30_drive_0033_sync 507 r
+2011_09_30/2011_09_30_drive_0028_sync 3906 r
+2011_09_30/2011_09_30_drive_0028_sync 486 l
+2011_10_03/2011_10_03_drive_0034_sync 3913 l
+2011_10_03/2011_10_03_drive_0034_sync 2013 r
+2011_09_26/2011_09_26_drive_0019_sync 450 l
+2011_09_26/2011_09_26_drive_0051_sync 400 l
+2011_09_26/2011_09_26_drive_0051_sync 223 l
+2011_09_30/2011_09_30_drive_0034_sync 399 l
+2011_09_30/2011_09_30_drive_0034_sync 940 r
+2011_09_26/2011_09_26_drive_0087_sync 700 r
+2011_09_30/2011_09_30_drive_0028_sync 3228 l
+2011_10_03/2011_10_03_drive_0034_sync 2732 l
+2011_10_03/2011_10_03_drive_0034_sync 2115 l
+2011_09_26/2011_09_26_drive_0113_sync 72 r
+2011_09_26/2011_09_26_drive_0028_sync 174 l
+2011_09_26/2011_09_26_drive_0032_sync 273 r
+2011_09_26/2011_09_26_drive_0022_sync 413 l
+2011_10_03/2011_10_03_drive_0034_sync 3211 l
+2011_09_30/2011_09_30_drive_0028_sync 3409 r
+2011_09_30/2011_09_30_drive_0033_sync 633 r
+2011_09_26/2011_09_26_drive_0087_sync 317 l
+2011_09_26/2011_09_26_drive_0022_sync 731 l
+2011_09_30/2011_09_30_drive_0028_sync 4842 l
+2011_09_30/2011_09_30_drive_0028_sync 4726 r
+2011_09_30/2011_09_30_drive_0033_sync 1546 r
+2011_10_03/2011_10_03_drive_0034_sync 1497 l
+2011_09_26/2011_09_26_drive_0028_sync 374 r
+2011_10_03/2011_10_03_drive_0034_sync 3481 r
+2011_10_03/2011_10_03_drive_0042_sync 559 l
+2011_09_30/2011_09_30_drive_0033_sync 1337 l
+2011_09_30/2011_09_30_drive_0034_sync 1001 r
+2011_09_26/2011_09_26_drive_0018_sync 124 l
+2011_09_26/2011_09_26_drive_0061_sync 634 r
+2011_09_30/2011_09_30_drive_0028_sync 1381 l
+2011_09_26/2011_09_26_drive_0087_sync 442 l
+2011_09_26/2011_09_26_drive_0018_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 375 l
+2011_09_30/2011_09_30_drive_0028_sync 5120 r
+2011_09_30/2011_09_30_drive_0028_sync 1004 l
+2011_09_30/2011_09_30_drive_0033_sync 1543 l
+2011_09_26/2011_09_26_drive_0091_sync 198 l
+2011_09_29/2011_09_29_drive_0026_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 3341 l
+2011_09_30/2011_09_30_drive_0028_sync 3423 r
+2011_09_30/2011_09_30_drive_0034_sync 706 l
+2011_10_03/2011_10_03_drive_0034_sync 356 r
+2011_10_03/2011_10_03_drive_0042_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 953 r
+2011_10_03/2011_10_03_drive_0034_sync 3309 l
+2011_10_03/2011_10_03_drive_0034_sync 3466 r
+2011_09_30/2011_09_30_drive_0020_sync 334 l
+2011_09_30/2011_09_30_drive_0020_sync 537 l
+2011_09_30/2011_09_30_drive_0020_sync 51 r
+2011_09_30/2011_09_30_drive_0034_sync 317 l
+2011_09_26/2011_09_26_drive_0028_sync 176 r
+2011_09_26/2011_09_26_drive_0022_sync 694 r
+2011_09_30/2011_09_30_drive_0028_sync 3969 r
+2011_09_26/2011_09_26_drive_0022_sync 753 l
+2011_09_30/2011_09_30_drive_0028_sync 3035 l
+2011_10_03/2011_10_03_drive_0034_sync 2432 l
+2011_10_03/2011_10_03_drive_0034_sync 892 r
+2011_10_03/2011_10_03_drive_0034_sync 842 r
+2011_09_30/2011_09_30_drive_0034_sync 932 r
+2011_09_26/2011_09_26_drive_0061_sync 267 l
+2011_10_03/2011_10_03_drive_0042_sync 836 r
+2011_09_30/2011_09_30_drive_0034_sync 375 l
+2011_09_26/2011_09_26_drive_0014_sync 290 l
+2011_10_03/2011_10_03_drive_0042_sync 380 r
+2011_09_26/2011_09_26_drive_0060_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 3054 l
+2011_10_03/2011_10_03_drive_0034_sync 215 r
+2011_09_30/2011_09_30_drive_0034_sync 222 r
+2011_09_26/2011_09_26_drive_0022_sync 316 l
+2011_09_26/2011_09_26_drive_0087_sync 167 r
+2011_09_30/2011_09_30_drive_0028_sync 5158 l
+2011_09_30/2011_09_30_drive_0033_sync 829 r
+2011_10_03/2011_10_03_drive_0042_sync 558 r
+2011_09_26/2011_09_26_drive_0011_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 518 l
+2011_10_03/2011_10_03_drive_0034_sync 4020 l
+2011_10_03/2011_10_03_drive_0034_sync 2011 l
+2011_09_26/2011_09_26_drive_0018_sync 0 l
+2011_09_30/2011_09_30_drive_0033_sync 289 l
+2011_10_03/2011_10_03_drive_0034_sync 3375 l
+2011_09_26/2011_09_26_drive_0051_sync 48 l
+2011_09_30/2011_09_30_drive_0034_sync 1034 r
+2011_09_30/2011_09_30_drive_0028_sync 500 r
+2011_09_30/2011_09_30_drive_0034_sync 259 l
+2011_09_26/2011_09_26_drive_0005_sync 17 r
+2011_09_26/2011_09_26_drive_0028_sync 60 r
+2011_09_26/2011_09_26_drive_0070_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 4477 r
+2011_10_03/2011_10_03_drive_0034_sync 4072 r
+2011_09_30/2011_09_30_drive_0033_sync 1521 l
+2011_10_03/2011_10_03_drive_0034_sync 3370 r
+2011_09_26/2011_09_26_drive_0039_sync 304 l
+2011_10_03/2011_10_03_drive_0034_sync 4504 l
+2011_10_03/2011_10_03_drive_0034_sync 3948 r
+2011_09_26/2011_09_26_drive_0019_sync 421 r
+2011_09_30/2011_09_30_drive_0020_sync 97 l
+2011_09_30/2011_09_30_drive_0033_sync 1144 l
+2011_09_26/2011_09_26_drive_0061_sync 86 r
+2011_09_30/2011_09_30_drive_0020_sync 104 l
+2011_09_30/2011_09_30_drive_0034_sync 215 r
+2011_09_30/2011_09_30_drive_0034_sync 627 l
+2011_09_26/2011_09_26_drive_0079_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 3708 l
+2011_09_30/2011_09_30_drive_0028_sync 2277 l
+2011_09_26/2011_09_26_drive_0104_sync 208 l
+2011_09_26/2011_09_26_drive_0019_sync 339 l
+2011_09_26/2011_09_26_drive_0061_sync 479 r
+2011_09_30/2011_09_30_drive_0028_sync 2453 l
+2011_09_26/2011_09_26_drive_0091_sync 64 r
+2011_09_30/2011_09_30_drive_0033_sync 784 l
+2011_09_26/2011_09_26_drive_0018_sync 137 r
+2011_09_26/2011_09_26_drive_0015_sync 167 r
+2011_09_30/2011_09_30_drive_0034_sync 604 r
+2011_09_30/2011_09_30_drive_0028_sync 3471 r
+2011_09_30/2011_09_30_drive_0028_sync 801 r
+2011_10_03/2011_10_03_drive_0034_sync 3853 r
+2011_09_26/2011_09_26_drive_0018_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 3439 r
+2011_09_26/2011_09_26_drive_0057_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 377 r
+2011_10_03/2011_10_03_drive_0034_sync 1580 l
+2011_09_30/2011_09_30_drive_0028_sync 1525 r
+2011_10_03/2011_10_03_drive_0034_sync 1290 l
+2011_09_30/2011_09_30_drive_0033_sync 1427 l
+2011_09_26/2011_09_26_drive_0011_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 2479 l
+2011_09_26/2011_09_26_drive_0051_sync 40 r
+2011_09_26/2011_09_26_drive_0019_sync 418 l
+2011_09_30/2011_09_30_drive_0034_sync 373 l
+2011_09_30/2011_09_30_drive_0034_sync 324 l
+2011_09_30/2011_09_30_drive_0034_sync 923 r
+2011_09_30/2011_09_30_drive_0028_sync 1059 r
+2011_10_03/2011_10_03_drive_0034_sync 174 r
+2011_10_03/2011_10_03_drive_0034_sync 4414 r
+2011_10_03/2011_10_03_drive_0034_sync 2106 r
+2011_09_28/2011_09_28_drive_0001_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 15 r
+2011_09_26/2011_09_26_drive_0091_sync 281 l
+2011_09_30/2011_09_30_drive_0028_sync 3075 r
+2011_10_03/2011_10_03_drive_0034_sync 4253 r
+2011_09_26/2011_09_26_drive_0014_sync 0 r
+2011_09_30/2011_09_30_drive_0034_sync 602 r
+2011_09_26/2011_09_26_drive_0022_sync 432 l
+2011_09_30/2011_09_30_drive_0028_sync 206 l
+2011_09_30/2011_09_30_drive_0028_sync 207 r
+2011_10_03/2011_10_03_drive_0042_sync 14 l
+2011_09_30/2011_09_30_drive_0033_sync 759 l
+2011_10_03/2011_10_03_drive_0034_sync 2195 l
+2011_09_30/2011_09_30_drive_0033_sync 1035 r
+2011_09_30/2011_09_30_drive_0028_sync 2155 l
+2011_09_26/2011_09_26_drive_0017_sync 31 r
+2011_09_30/2011_09_30_drive_0020_sync 834 r
+2011_10_03/2011_10_03_drive_0042_sync 400 l
+2011_09_30/2011_09_30_drive_0028_sync 4242 l
+2011_10_03/2011_10_03_drive_0034_sync 1127 r
+2011_09_29/2011_09_29_drive_0026_sync 113 r
+2011_09_26/2011_09_26_drive_0039_sync 130 l
+2011_09_26/2011_09_26_drive_0061_sync 387 r
+2011_09_26/2011_09_26_drive_0061_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 640 r
+2011_10_03/2011_10_03_drive_0034_sync 4405 l
+2011_09_26/2011_09_26_drive_0019_sync 28 r
+2011_09_26/2011_09_26_drive_0028_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 3390 r
+2011_09_26/2011_09_26_drive_0070_sync 216 l
+2011_09_28/2011_09_28_drive_0001_sync 40 r
+2011_09_26/2011_09_26_drive_0011_sync 115 l
+2011_09_30/2011_09_30_drive_0034_sync 97 r
+2011_09_30/2011_09_30_drive_0034_sync 874 l
+2011_09_30/2011_09_30_drive_0028_sync 1469 l
+2011_09_30/2011_09_30_drive_0028_sync 4928 r
+2011_09_30/2011_09_30_drive_0028_sync 4706 r
+2011_09_26/2011_09_26_drive_0057_sync 10 r
+2011_09_30/2011_09_30_drive_0033_sync 1353 l
+2011_09_30/2011_09_30_drive_0028_sync 3562 l
+2011_09_30/2011_09_30_drive_0033_sync 50 r
+2011_09_30/2011_09_30_drive_0020_sync 446 l
+2011_10_03/2011_10_03_drive_0034_sync 445 l
+2011_10_03/2011_10_03_drive_0034_sync 2931 l
+2011_10_03/2011_10_03_drive_0034_sync 2733 l
+2011_09_30/2011_09_30_drive_0020_sync 1091 l
+2011_09_26/2011_09_26_drive_0095_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 2743 r
+2011_09_30/2011_09_30_drive_0034_sync 665 r
+2011_09_30/2011_09_30_drive_0028_sync 2922 r
+2011_09_26/2011_09_26_drive_0087_sync 698 r
+2011_09_30/2011_09_30_drive_0034_sync 227 r
+2011_09_26/2011_09_26_drive_0061_sync 319 l
+2011_09_30/2011_09_30_drive_0033_sync 1038 l
+2011_09_30/2011_09_30_drive_0028_sync 2977 r
+2011_09_30/2011_09_30_drive_0028_sync 1908 l
+2011_09_26/2011_09_26_drive_0051_sync 53 l
+2011_09_30/2011_09_30_drive_0033_sync 1585 r
+2011_09_30/2011_09_30_drive_0028_sync 4161 r
+2011_09_30/2011_09_30_drive_0033_sync 514 r
+2011_09_30/2011_09_30_drive_0020_sync 497 l
+2011_09_30/2011_09_30_drive_0028_sync 2449 r
+2011_09_26/2011_09_26_drive_0087_sync 669 r
+2011_09_29/2011_09_29_drive_0026_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 3375 r
+2011_10_03/2011_10_03_drive_0034_sync 4198 l
+2011_09_30/2011_09_30_drive_0028_sync 1625 r
+2011_09_26/2011_09_26_drive_0001_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 2846 r
+2011_10_03/2011_10_03_drive_0034_sync 3340 l
+2011_10_03/2011_10_03_drive_0034_sync 4385 r
+2011_09_30/2011_09_30_drive_0033_sync 1088 l
+2011_09_26/2011_09_26_drive_0061_sync 587 l
+2011_09_30/2011_09_30_drive_0028_sync 1633 l
+2011_09_30/2011_09_30_drive_0034_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 1713 l
+2011_09_26/2011_09_26_drive_0005_sync 71 l
+2011_10_03/2011_10_03_drive_0042_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 4004 l
+2011_09_30/2011_09_30_drive_0028_sync 2885 l
+2011_09_26/2011_09_26_drive_0091_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 4967 r
+2011_09_29/2011_09_29_drive_0004_sync 329 r
+2011_09_30/2011_09_30_drive_0028_sync 5048 r
+2011_09_30/2011_09_30_drive_0033_sync 673 r
+2011_09_30/2011_09_30_drive_0020_sync 633 r
+2011_09_30/2011_09_30_drive_0028_sync 1080 r
+2011_10_03/2011_10_03_drive_0034_sync 4603 r
+2011_10_03/2011_10_03_drive_0042_sync 441 l
+2011_10_03/2011_10_03_drive_0034_sync 1151 l
+2011_09_30/2011_09_30_drive_0033_sync 917 l
+2011_10_03/2011_10_03_drive_0034_sync 3619 l
+2011_09_26/2011_09_26_drive_0039_sync 115 l
+2011_09_26/2011_09_26_drive_0087_sync 40 l
+2011_09_26/2011_09_26_drive_0018_sync 109 l
+2011_10_03/2011_10_03_drive_0042_sync 1143 l
+2011_09_26/2011_09_26_drive_0061_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 1688 r
+2011_09_26/2011_09_26_drive_0032_sync 106 l
+2011_09_30/2011_09_30_drive_0033_sync 106 l
+2011_09_26/2011_09_26_drive_0087_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 513 r
+2011_09_26/2011_09_26_drive_0022_sync 250 r
+2011_09_30/2011_09_30_drive_0033_sync 122 l
+2011_09_26/2011_09_26_drive_0019_sync 479 l
+2011_09_26/2011_09_26_drive_0028_sync 72 l
+2011_09_26/2011_09_26_drive_0087_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 3617 r
+2011_10_03/2011_10_03_drive_0042_sync 572 l
+2011_09_30/2011_09_30_drive_0028_sync 3692 l
+2011_09_26/2011_09_26_drive_0022_sync 302 r
+2011_10_03/2011_10_03_drive_0034_sync 1929 r
+2011_09_26/2011_09_26_drive_0095_sync 235 l
+2011_09_30/2011_09_30_drive_0033_sync 966 l
+2011_09_26/2011_09_26_drive_0060_sync 60 l
+2011_09_26/2011_09_26_drive_0019_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 2681 l
+2011_09_26/2011_09_26_drive_0019_sync 374 l
+2011_09_26/2011_09_26_drive_0087_sync 495 r
+2011_09_26/2011_09_26_drive_0039_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 1222 l
+2011_09_30/2011_09_30_drive_0028_sync 3084 r
+2011_09_30/2011_09_30_drive_0028_sync 2746 l
+2011_09_29/2011_09_29_drive_0004_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 3007 l
+2011_09_26/2011_09_26_drive_0051_sync 415 r
+2011_09_30/2011_09_30_drive_0034_sync 726 l
+2011_09_26/2011_09_26_drive_0087_sync 388 r
+2011_10_03/2011_10_03_drive_0034_sync 3392 l
+2011_09_26/2011_09_26_drive_0070_sync 312 r
+2011_09_30/2011_09_30_drive_0020_sync 158 r
+2011_10_03/2011_10_03_drive_0034_sync 2617 l
+2011_10_03/2011_10_03_drive_0034_sync 3640 l
+2011_09_30/2011_09_30_drive_0020_sync 1073 l
+2011_10_03/2011_10_03_drive_0034_sync 4161 r
+2011_10_03/2011_10_03_drive_0034_sync 3893 l
+2011_09_26/2011_09_26_drive_0032_sync 184 l
+2011_09_30/2011_09_30_drive_0033_sync 97 l
+2011_09_26/2011_09_26_drive_0051_sync 211 l
+2011_09_26/2011_09_26_drive_0070_sync 373 l
+2011_09_26/2011_09_26_drive_0087_sync 366 l
+2011_10_03/2011_10_03_drive_0034_sync 3976 r
+2011_09_26/2011_09_26_drive_0019_sync 309 l
+2011_09_30/2011_09_30_drive_0020_sync 394 r
+2011_09_26/2011_09_26_drive_0019_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 2327 r
+2011_10_03/2011_10_03_drive_0034_sync 3753 l
+2011_09_30/2011_09_30_drive_0020_sync 582 l
+2011_09_30/2011_09_30_drive_0028_sync 4710 r
+2011_09_30/2011_09_30_drive_0028_sync 468 l
+2011_10_03/2011_10_03_drive_0034_sync 1411 l
+2011_09_30/2011_09_30_drive_0034_sync 816 r
+2011_09_30/2011_09_30_drive_0028_sync 5012 r
+2011_09_26/2011_09_26_drive_0087_sync 466 r
+2011_09_30/2011_09_30_drive_0028_sync 2741 r
+2011_10_03/2011_10_03_drive_0042_sync 211 l
+2011_09_30/2011_09_30_drive_0028_sync 843 r
+2011_09_26/2011_09_26_drive_0087_sync 500 r
+2011_09_30/2011_09_30_drive_0034_sync 678 l
+2011_09_30/2011_09_30_drive_0028_sync 994 r
+2011_10_03/2011_10_03_drive_0042_sync 992 l
+2011_10_03/2011_10_03_drive_0034_sync 1441 l
+2011_09_26/2011_09_26_drive_0017_sync 12 l
+2011_09_26/2011_09_26_drive_0014_sync 128 l
+2011_09_26/2011_09_26_drive_0039_sync 124 r
+2011_09_26/2011_09_26_drive_0061_sync 545 r
+2011_09_26/2011_09_26_drive_0032_sync 327 r
+2011_10_03/2011_10_03_drive_0034_sync 1019 r
+2011_10_03/2011_10_03_drive_0034_sync 2167 r
+2011_10_03/2011_10_03_drive_0034_sync 1425 r
+2011_09_29/2011_09_29_drive_0026_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 386 r
+2011_09_30/2011_09_30_drive_0028_sync 389 l
+2011_09_26/2011_09_26_drive_0051_sync 254 r
+2011_09_30/2011_09_30_drive_0033_sync 1000 l
+2011_09_26/2011_09_26_drive_0022_sync 279 l
+2011_09_30/2011_09_30_drive_0020_sync 391 l
+2011_09_26/2011_09_26_drive_0113_sync 56 r
+2011_10_03/2011_10_03_drive_0042_sync 954 l
+2011_10_03/2011_10_03_drive_0034_sync 3823 l
+2011_09_26/2011_09_26_drive_0070_sync 90 r
+2011_10_03/2011_10_03_drive_0034_sync 788 l
+2011_09_30/2011_09_30_drive_0028_sync 1333 r
+2011_09_30/2011_09_30_drive_0020_sync 381 r
+2011_10_03/2011_10_03_drive_0034_sync 2060 r
+2011_09_30/2011_09_30_drive_0028_sync 4546 l
+2011_10_03/2011_10_03_drive_0034_sync 1631 l
+2011_09_26/2011_09_26_drive_0061_sync 656 l
+2011_09_30/2011_09_30_drive_0033_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 3571 l
+2011_09_30/2011_09_30_drive_0034_sync 544 r
+2011_09_30/2011_09_30_drive_0020_sync 738 l
+2011_09_29/2011_09_29_drive_0004_sync 30 r
+2011_09_26/2011_09_26_drive_0028_sync 350 r
+2011_09_30/2011_09_30_drive_0020_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 3109 r
+2011_09_26/2011_09_26_drive_0017_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 4121 l
+2011_10_03/2011_10_03_drive_0034_sync 3646 l
+2011_09_30/2011_09_30_drive_0020_sync 489 l
+2011_10_03/2011_10_03_drive_0034_sync 2868 r
+2011_09_30/2011_09_30_drive_0028_sync 1032 l
+2011_09_30/2011_09_30_drive_0028_sync 1965 r
+2011_09_30/2011_09_30_drive_0028_sync 4673 r
+2011_09_29/2011_09_29_drive_0004_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 1980 l
+2011_09_30/2011_09_30_drive_0020_sync 267 r
+2011_10_03/2011_10_03_drive_0042_sync 737 r
+2011_09_30/2011_09_30_drive_0028_sync 2917 r
+2011_09_26/2011_09_26_drive_0051_sync 396 l
+2011_09_30/2011_09_30_drive_0034_sync 186 l
+2011_09_26/2011_09_26_drive_0035_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 781 r
+2011_10_03/2011_10_03_drive_0034_sync 4609 l
+2011_09_26/2011_09_26_drive_0091_sync 100 l
+2011_09_26/2011_09_26_drive_0022_sync 210 r
+2011_09_26/2011_09_26_drive_0061_sync 636 r
+2011_10_03/2011_10_03_drive_0034_sync 3861 r
+2011_09_30/2011_09_30_drive_0028_sync 3594 l
+2011_09_26/2011_09_26_drive_0051_sync 281 r
+2011_09_26/2011_09_26_drive_0028_sync 231 r
+2011_09_30/2011_09_30_drive_0033_sync 1301 l
+2011_09_30/2011_09_30_drive_0034_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 4619 l
+2011_09_26/2011_09_26_drive_0001_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 1877 l
+2011_09_26/2011_09_26_drive_0039_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 5129 l
+2011_09_30/2011_09_30_drive_0028_sync 3095 l
+2011_09_30/2011_09_30_drive_0034_sync 953 r
+2011_09_26/2011_09_26_drive_0019_sync 203 r
+2011_09_26/2011_09_26_drive_0022_sync 411 l
+2011_09_26/2011_09_26_drive_0022_sync 460 r
+2011_09_30/2011_09_30_drive_0033_sync 221 l
+2011_09_26/2011_09_26_drive_0032_sync 175 l
+2011_09_30/2011_09_30_drive_0028_sync 1001 l
+2011_10_03/2011_10_03_drive_0034_sync 3969 l
+2011_09_30/2011_09_30_drive_0028_sync 1791 r
+2011_09_30/2011_09_30_drive_0028_sync 1006 l
+2011_09_30/2011_09_30_drive_0028_sync 1865 r
+2011_10_03/2011_10_03_drive_0034_sync 1347 l
+2011_09_30/2011_09_30_drive_0028_sync 5064 r
+2011_09_30/2011_09_30_drive_0028_sync 2977 l
+2011_09_30/2011_09_30_drive_0028_sync 665 l
+2011_10_03/2011_10_03_drive_0042_sync 601 l
+2011_10_03/2011_10_03_drive_0034_sync 684 l
+2011_09_26/2011_09_26_drive_0039_sync 383 r
+2011_10_03/2011_10_03_drive_0034_sync 3767 l
+2011_10_03/2011_10_03_drive_0034_sync 1507 l
+2011_09_30/2011_09_30_drive_0028_sync 748 l
+2011_10_03/2011_10_03_drive_0034_sync 2468 r
+2011_09_30/2011_09_30_drive_0033_sync 1357 r
+2011_09_30/2011_09_30_drive_0034_sync 846 r
+2011_09_29/2011_09_29_drive_0004_sync 106 l
+2011_09_30/2011_09_30_drive_0020_sync 867 r
+2011_10_03/2011_10_03_drive_0034_sync 2628 r
+2011_10_03/2011_10_03_drive_0034_sync 4268 r
+2011_09_30/2011_09_30_drive_0028_sync 238 l
+2011_09_26/2011_09_26_drive_0095_sync 41 l
+2011_10_03/2011_10_03_drive_0034_sync 2471 l
+2011_09_26/2011_09_26_drive_0095_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 3809 r
+2011_09_26/2011_09_26_drive_0057_sync 142 l
+2011_09_30/2011_09_30_drive_0034_sync 701 r
+2011_09_26/2011_09_26_drive_0005_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 1007 l
+2011_09_26/2011_09_26_drive_0011_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 4767 r
+2011_10_03/2011_10_03_drive_0034_sync 1181 l
+2011_09_30/2011_09_30_drive_0028_sync 5107 l
+2011_09_26/2011_09_26_drive_0087_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 2393 l
+2011_09_26/2011_09_26_drive_0028_sync 249 r
+2011_09_30/2011_09_30_drive_0033_sync 681 r
+2011_09_30/2011_09_30_drive_0028_sync 2600 l
+2011_10_03/2011_10_03_drive_0034_sync 2542 r
+2011_09_30/2011_09_30_drive_0028_sync 3321 l
+2011_09_26/2011_09_26_drive_0014_sync 166 r
+2011_10_03/2011_10_03_drive_0042_sync 596 r
+2011_09_26/2011_09_26_drive_0060_sync 3 r
+2011_09_26/2011_09_26_drive_0014_sync 208 l
+2011_10_03/2011_10_03_drive_0034_sync 4497 r
+2011_10_03/2011_10_03_drive_0034_sync 1478 r
+2011_09_26/2011_09_26_drive_0104_sync 37 l
+2011_09_26/2011_09_26_drive_0028_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 3815 l
+2011_10_03/2011_10_03_drive_0034_sync 3486 l
+2011_09_30/2011_09_30_drive_0033_sync 674 l
+2011_09_30/2011_09_30_drive_0028_sync 335 l
+2011_09_29/2011_09_29_drive_0004_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 1105 l
+2011_09_26/2011_09_26_drive_0019_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 1725 r
+2011_09_26/2011_09_26_drive_0051_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 1597 r
+2011_09_30/2011_09_30_drive_0020_sync 411 l
+2011_09_30/2011_09_30_drive_0034_sync 377 l
+2011_09_30/2011_09_30_drive_0033_sync 1565 l
+2011_09_29/2011_09_29_drive_0004_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 2115 l
+2011_09_30/2011_09_30_drive_0034_sync 908 l
+2011_09_26/2011_09_26_drive_0051_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 971 l
+2011_09_26/2011_09_26_drive_0051_sync 136 l
+2011_10_03/2011_10_03_drive_0042_sync 367 r
+2011_09_30/2011_09_30_drive_0028_sync 710 r
+2011_09_26/2011_09_26_drive_0014_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 1960 r
+2011_10_03/2011_10_03_drive_0034_sync 597 r
+2011_09_30/2011_09_30_drive_0028_sync 963 r
+2011_09_30/2011_09_30_drive_0033_sync 997 l
+2011_09_30/2011_09_30_drive_0028_sync 4448 l
+2011_09_26/2011_09_26_drive_0022_sync 710 l
+2011_09_26/2011_09_26_drive_0113_sync 84 r
+2011_09_26/2011_09_26_drive_0019_sync 196 l
+2011_09_30/2011_09_30_drive_0028_sync 4285 l
+2011_09_30/2011_09_30_drive_0033_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 1434 r
+2011_09_30/2011_09_30_drive_0033_sync 1307 r
+2011_10_03/2011_10_03_drive_0034_sync 3085 l
+2011_09_26/2011_09_26_drive_0060_sync 34 l
+2011_10_03/2011_10_03_drive_0042_sync 393 r
+2011_09_30/2011_09_30_drive_0033_sync 1580 r
+2011_09_26/2011_09_26_drive_0022_sync 325 l
+2011_09_29/2011_09_29_drive_0004_sync 177 r
+2011_09_26/2011_09_26_drive_0032_sync 91 r
+2011_09_26/2011_09_26_drive_0022_sync 41 l
+2011_09_26/2011_09_26_drive_0014_sync 191 l
+2011_09_30/2011_09_30_drive_0028_sync 1513 l
+2011_09_30/2011_09_30_drive_0033_sync 1314 l
+2011_09_30/2011_09_30_drive_0028_sync 4792 r
+2011_09_29/2011_09_29_drive_0004_sync 266 l
+2011_09_30/2011_09_30_drive_0028_sync 1207 l
+2011_09_26/2011_09_26_drive_0061_sync 122 l
+2011_09_30/2011_09_30_drive_0020_sync 248 r
+2011_09_26/2011_09_26_drive_0019_sync 273 l
+2011_10_03/2011_10_03_drive_0034_sync 3835 r
+2011_10_03/2011_10_03_drive_0034_sync 523 l
+2011_09_30/2011_09_30_drive_0028_sync 2329 l
+2011_09_26/2011_09_26_drive_0070_sync 12 r
+2011_09_30/2011_09_30_drive_0028_sync 1082 l
+2011_09_30/2011_09_30_drive_0028_sync 754 l
+2011_09_26/2011_09_26_drive_0019_sync 276 r
+2011_09_30/2011_09_30_drive_0028_sync 4459 r
+2011_09_26/2011_09_26_drive_0022_sync 0 r
+2011_09_26/2011_09_26_drive_0028_sync 261 l
+2011_10_03/2011_10_03_drive_0034_sync 4284 l
+2011_09_26/2011_09_26_drive_0039_sync 127 r
+2011_09_26/2011_09_26_drive_0057_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 1521 l
+2011_09_30/2011_09_30_drive_0020_sync 71 r
+2011_10_03/2011_10_03_drive_0042_sync 691 l
+2011_09_30/2011_09_30_drive_0033_sync 1035 l
+2011_09_26/2011_09_26_drive_0061_sync 616 l
+2011_10_03/2011_10_03_drive_0034_sync 1316 r
+2011_09_26/2011_09_26_drive_0017_sync 86 r
+2011_09_26/2011_09_26_drive_0019_sync 91 l
+2011_09_30/2011_09_30_drive_0033_sync 876 r
+2011_10_03/2011_10_03_drive_0034_sync 1724 r
+2011_10_03/2011_10_03_drive_0034_sync 343 l
+2011_09_30/2011_09_30_drive_0028_sync 2306 l
+2011_10_03/2011_10_03_drive_0034_sync 3425 l
+2011_09_26/2011_09_26_drive_0028_sync 126 l
+2011_09_26/2011_09_26_drive_0087_sync 109 r
+2011_09_26/2011_09_26_drive_0032_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 617 l
+2011_09_30/2011_09_30_drive_0020_sync 366 l
+2011_09_30/2011_09_30_drive_0034_sync 116 r
+2011_09_26/2011_09_26_drive_0032_sync 93 r
+2011_09_26/2011_09_26_drive_0017_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 1138 l
+2011_09_26/2011_09_26_drive_0014_sync 20 l
+2011_09_30/2011_09_30_drive_0034_sync 141 r
+2011_09_30/2011_09_30_drive_0020_sync 741 r
+2011_09_26/2011_09_26_drive_0070_sync 327 r
+2011_09_26/2011_09_26_drive_0039_sync 185 l
+2011_10_03/2011_10_03_drive_0034_sync 1963 l
+2011_09_26/2011_09_26_drive_0057_sync 194 r
+2011_10_03/2011_10_03_drive_0042_sync 0 r
+2011_09_30/2011_09_30_drive_0033_sync 1258 r
+2011_09_30/2011_09_30_drive_0028_sync 4904 l
+2011_10_03/2011_10_03_drive_0034_sync 3504 l
+2011_10_03/2011_10_03_drive_0034_sync 4550 l
+2011_10_03/2011_10_03_drive_0034_sync 528 r
+2011_09_26/2011_09_26_drive_0070_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 601 r
+2011_09_30/2011_09_30_drive_0034_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 1598 r
+2011_09_26/2011_09_26_drive_0035_sync 23 l
+2011_09_26/2011_09_26_drive_0015_sync 170 r
+2011_09_26/2011_09_26_drive_0087_sync 261 l
+2011_09_30/2011_09_30_drive_0028_sync 2454 r
+2011_09_26/2011_09_26_drive_0070_sync 136 l
+2011_09_26/2011_09_26_drive_0015_sync 166 l
+2011_09_26/2011_09_26_drive_0087_sync 113 r
+2011_09_26/2011_09_26_drive_0087_sync 233 l
+2011_09_30/2011_09_30_drive_0033_sync 279 l
+2011_09_26/2011_09_26_drive_0087_sync 379 l
+2011_09_30/2011_09_30_drive_0028_sync 1819 l
+2011_09_28/2011_09_28_drive_0001_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 2811 r
+2011_09_26/2011_09_26_drive_0104_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 1891 r
+2011_09_26/2011_09_26_drive_0057_sync 353 l
+2011_10_03/2011_10_03_drive_0034_sync 1768 r
+2011_09_30/2011_09_30_drive_0028_sync 926 l
+2011_09_26/2011_09_26_drive_0039_sync 290 l
+2011_09_26/2011_09_26_drive_0095_sync 173 l
+2011_09_30/2011_09_30_drive_0028_sync 1827 r
+2011_09_30/2011_09_30_drive_0028_sync 831 l
+2011_09_30/2011_09_30_drive_0028_sync 4788 r
+2011_10_03/2011_10_03_drive_0034_sync 1223 l
+2011_09_26/2011_09_26_drive_0028_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 4798 l
+2011_09_26/2011_09_26_drive_0028_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 3278 r
+2011_09_30/2011_09_30_drive_0020_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 683 l
+2011_09_30/2011_09_30_drive_0020_sync 910 l
+2011_09_30/2011_09_30_drive_0034_sync 1051 r
+2011_09_30/2011_09_30_drive_0028_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 1547 r
+2011_09_30/2011_09_30_drive_0028_sync 146 l
+2011_09_26/2011_09_26_drive_0079_sync 80 l
+2011_10_03/2011_10_03_drive_0042_sync 116 l
+2011_09_26/2011_09_26_drive_0039_sync 346 l
+2011_09_26/2011_09_26_drive_0019_sync 370 r
+2011_09_30/2011_09_30_drive_0028_sync 2939 r
+2011_10_03/2011_10_03_drive_0034_sync 2349 r
+2011_09_30/2011_09_30_drive_0028_sync 5115 r
+2011_09_30/2011_09_30_drive_0028_sync 3882 l
+2011_09_30/2011_09_30_drive_0033_sync 1508 r
+2011_09_26/2011_09_26_drive_0001_sync 91 r
+2011_09_30/2011_09_30_drive_0028_sync 2093 l
+2011_09_30/2011_09_30_drive_0033_sync 1180 l
+2011_10_03/2011_10_03_drive_0034_sync 4562 r
+2011_09_26/2011_09_26_drive_0014_sync 285 r
+2011_09_30/2011_09_30_drive_0034_sync 860 r
+2011_09_26/2011_09_26_drive_0014_sync 282 r
+2011_10_03/2011_10_03_drive_0034_sync 2056 l
+2011_09_30/2011_09_30_drive_0020_sync 695 l
+2011_09_30/2011_09_30_drive_0034_sync 1101 l
+2011_09_29/2011_09_29_drive_0004_sync 225 l
+2011_10_03/2011_10_03_drive_0042_sync 251 r
+2011_09_30/2011_09_30_drive_0020_sync 640 r
+2011_09_30/2011_09_30_drive_0020_sync 1050 r
+2011_10_03/2011_10_03_drive_0034_sync 3661 r
+2011_09_30/2011_09_30_drive_0033_sync 631 l
+2011_10_03/2011_10_03_drive_0042_sync 548 r
+2011_09_30/2011_09_30_drive_0034_sync 1032 l
+2011_09_29/2011_09_29_drive_0026_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 1820 r
+2011_09_26/2011_09_26_drive_0039_sync 270 r
+2011_09_30/2011_09_30_drive_0028_sync 1458 l
+2011_09_26/2011_09_26_drive_0039_sync 205 l
+2011_09_26/2011_09_26_drive_0032_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 3908 r
+2011_09_30/2011_09_30_drive_0028_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 339 l
+2011_10_03/2011_10_03_drive_0042_sync 1050 r
+2011_09_29/2011_09_29_drive_0026_sync 126 r
+2011_10_03/2011_10_03_drive_0034_sync 4634 r
+2011_10_03/2011_10_03_drive_0034_sync 1887 l
+2011_10_03/2011_10_03_drive_0034_sync 1406 r
+2011_10_03/2011_10_03_drive_0042_sync 118 r
+2011_09_26/2011_09_26_drive_0019_sync 68 l
+2011_10_03/2011_10_03_drive_0042_sync 242 r
+2011_09_26/2011_09_26_drive_0039_sync 155 r
+2011_09_26/2011_09_26_drive_0070_sync 81 r
+2011_09_26/2011_09_26_drive_0019_sync 441 r
+2011_09_30/2011_09_30_drive_0020_sync 1014 r
+2011_09_26/2011_09_26_drive_0018_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 1129 l
+2011_09_26/2011_09_26_drive_0018_sync 20 l
+2011_09_26/2011_09_26_drive_0035_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 3200 r
+2011_09_30/2011_09_30_drive_0028_sync 189 l
+2011_09_26/2011_09_26_drive_0087_sync 647 r
+2011_09_30/2011_09_30_drive_0020_sync 982 r
+2011_10_03/2011_10_03_drive_0042_sync 858 l
+2011_09_26/2011_09_26_drive_0022_sync 529 r
+2011_09_30/2011_09_30_drive_0020_sync 662 l
+2011_09_26/2011_09_26_drive_0113_sync 15 l
+2011_09_30/2011_09_30_drive_0020_sync 750 l
+2011_09_30/2011_09_30_drive_0020_sync 1087 r
+2011_10_03/2011_10_03_drive_0034_sync 4125 r
+2011_09_30/2011_09_30_drive_0034_sync 24 l
+2011_09_30/2011_09_30_drive_0034_sync 568 l
+2011_09_30/2011_09_30_drive_0028_sync 2613 r
+2011_09_26/2011_09_26_drive_0061_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 746 r
+2011_09_30/2011_09_30_drive_0028_sync 3358 r
+2011_09_30/2011_09_30_drive_0020_sync 1021 l
+2011_09_26/2011_09_26_drive_0032_sync 123 l
+2011_09_26/2011_09_26_drive_0022_sync 199 r
+2011_09_30/2011_09_30_drive_0028_sync 2700 l
+2011_09_30/2011_09_30_drive_0034_sync 807 l
+2011_09_30/2011_09_30_drive_0028_sync 2300 l
+2011_09_30/2011_09_30_drive_0028_sync 1594 r
+2011_09_30/2011_09_30_drive_0028_sync 2239 r
+2011_09_30/2011_09_30_drive_0028_sync 2003 l
+2011_09_30/2011_09_30_drive_0033_sync 1330 l
+2011_10_03/2011_10_03_drive_0034_sync 3749 r
+2011_09_30/2011_09_30_drive_0033_sync 1546 l
+2011_09_26/2011_09_26_drive_0014_sync 18 r
+2011_10_03/2011_10_03_drive_0042_sync 1092 r
+2011_09_26/2011_09_26_drive_0104_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 2245 r
+2011_09_30/2011_09_30_drive_0028_sync 4808 r
+2011_09_26/2011_09_26_drive_0087_sync 632 r
+2011_09_30/2011_09_30_drive_0028_sync 3909 l
+2011_09_30/2011_09_30_drive_0020_sync 685 l
+2011_09_30/2011_09_30_drive_0028_sync 2640 l
+2011_09_26/2011_09_26_drive_0087_sync 488 l
+2011_09_30/2011_09_30_drive_0033_sync 428 l
+2011_09_26/2011_09_26_drive_0001_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 1864 l
+2011_09_26/2011_09_26_drive_0051_sync 282 r
+2011_10_03/2011_10_03_drive_0034_sync 2972 r
+2011_09_26/2011_09_26_drive_0060_sync 67 r
+2011_10_03/2011_10_03_drive_0034_sync 577 l
+2011_09_26/2011_09_26_drive_0061_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 2302 r
+2011_09_26/2011_09_26_drive_0019_sync 247 r
+2011_09_26/2011_09_26_drive_0015_sync 107 l
+2011_09_30/2011_09_30_drive_0020_sync 591 l
+2011_09_26/2011_09_26_drive_0070_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 3663 r
+2011_09_26/2011_09_26_drive_0022_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 2716 l
+2011_10_03/2011_10_03_drive_0042_sync 440 l
+2011_09_26/2011_09_26_drive_0019_sync 142 l
+2011_09_26/2011_09_26_drive_0019_sync 157 r
+2011_09_30/2011_09_30_drive_0028_sync 1383 r
+2011_09_30/2011_09_30_drive_0033_sync 215 l
+2011_09_30/2011_09_30_drive_0034_sync 1185 r
+2011_09_26/2011_09_26_drive_0019_sync 236 l
+2011_09_30/2011_09_30_drive_0028_sync 2647 r
+2011_09_30/2011_09_30_drive_0028_sync 2136 r
+2011_09_26/2011_09_26_drive_0051_sync 97 l
+2011_10_03/2011_10_03_drive_0042_sync 234 r
+2011_09_26/2011_09_26_drive_0014_sync 97 r
+2011_09_26/2011_09_26_drive_0087_sync 422 l
+2011_09_26/2011_09_26_drive_0061_sync 214 r
+2011_09_26/2011_09_26_drive_0087_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 988 l
+2011_10_03/2011_10_03_drive_0034_sync 3050 l
+2011_09_30/2011_09_30_drive_0033_sync 1127 l
+2011_09_26/2011_09_26_drive_0015_sync 176 l
+2011_09_26/2011_09_26_drive_0017_sync 63 l
+2011_09_26/2011_09_26_drive_0070_sync 46 l
+2011_09_30/2011_09_30_drive_0020_sync 771 l
+2011_09_26/2011_09_26_drive_0057_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 1015 r
+2011_09_30/2011_09_30_drive_0028_sync 756 r
+2011_09_30/2011_09_30_drive_0028_sync 1483 l
+2011_09_30/2011_09_30_drive_0028_sync 1239 l
+2011_10_03/2011_10_03_drive_0042_sync 823 l
+2011_09_26/2011_09_26_drive_0017_sync 58 r
+2011_09_30/2011_09_30_drive_0020_sync 234 r
+2011_09_26/2011_09_26_drive_0061_sync 275 r
+2011_09_30/2011_09_30_drive_0033_sync 860 l
+2011_09_26/2011_09_26_drive_0014_sync 136 r
+2011_09_29/2011_09_29_drive_0026_sync 118 l
+2011_09_26/2011_09_26_drive_0061_sync 464 l
+2011_10_03/2011_10_03_drive_0042_sync 960 l
+2011_10_03/2011_10_03_drive_0034_sync 2356 l
+2011_10_03/2011_10_03_drive_0034_sync 784 r
+2011_10_03/2011_10_03_drive_0042_sync 590 r
+2011_09_26/2011_09_26_drive_0104_sync 206 r
+2011_09_26/2011_09_26_drive_0019_sync 427 r
+2011_09_26/2011_09_26_drive_0028_sync 28 r
+2011_10_03/2011_10_03_drive_0042_sync 1138 l
+2011_09_26/2011_09_26_drive_0015_sync 25 r
+2011_09_26/2011_09_26_drive_0087_sync 164 l
+2011_10_03/2011_10_03_drive_0042_sync 553 r
+2011_09_30/2011_09_30_drive_0028_sync 1585 l
+2011_09_26/2011_09_26_drive_0061_sync 0 r
+2011_09_30/2011_09_30_drive_0034_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 769 r
+2011_09_30/2011_09_30_drive_0028_sync 2522 l
+2011_09_30/2011_09_30_drive_0028_sync 1931 l
+2011_09_26/2011_09_26_drive_0022_sync 288 l
+2011_09_30/2011_09_30_drive_0033_sync 819 r
+2011_09_30/2011_09_30_drive_0028_sync 4757 l
+2011_10_03/2011_10_03_drive_0034_sync 2043 r
+2011_10_03/2011_10_03_drive_0034_sync 4368 r
+2011_09_26/2011_09_26_drive_0070_sync 296 l
+2011_09_30/2011_09_30_drive_0028_sync 4654 r
+2011_09_26/2011_09_26_drive_0095_sync 170 l
+2011_09_30/2011_09_30_drive_0033_sync 880 r
+2011_09_30/2011_09_30_drive_0033_sync 1065 l
+2011_10_03/2011_10_03_drive_0042_sync 98 r
+2011_09_26/2011_09_26_drive_0087_sync 191 l
+2011_09_26/2011_09_26_drive_0022_sync 54 l
+2011_09_30/2011_09_30_drive_0034_sync 1188 l
+2011_09_30/2011_09_30_drive_0034_sync 1193 r
+2011_09_26/2011_09_26_drive_0028_sync 35 l
+2011_09_26/2011_09_26_drive_0019_sync 105 r
+2011_09_26/2011_09_26_drive_0113_sync 55 r
+2011_09_30/2011_09_30_drive_0028_sync 1823 r
+2011_09_26/2011_09_26_drive_0022_sync 196 r
+2011_09_29/2011_09_29_drive_0026_sync 100 l
+2011_09_26/2011_09_26_drive_0014_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 4100 l
+2011_09_26/2011_09_26_drive_0091_sync 10 l
+2011_09_26/2011_09_26_drive_0018_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 4739 l
+2011_09_26/2011_09_26_drive_0051_sync 12 l
+2011_09_30/2011_09_30_drive_0020_sync 107 r
+2011_09_26/2011_09_26_drive_0022_sync 281 l
+2011_09_26/2011_09_26_drive_0022_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 905 r
+2011_09_26/2011_09_26_drive_0028_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 1828 r
+2011_09_30/2011_09_30_drive_0033_sync 1179 r
+2011_09_30/2011_09_30_drive_0028_sync 397 r
+2011_09_26/2011_09_26_drive_0022_sync 309 r
+2011_09_29/2011_09_29_drive_0004_sync 291 l
+2011_09_30/2011_09_30_drive_0028_sync 3105 r
+2011_09_26/2011_09_26_drive_0018_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 352 r
+2011_09_26/2011_09_26_drive_0061_sync 475 l
+2011_10_03/2011_10_03_drive_0042_sync 99 l
+2011_09_30/2011_09_30_drive_0020_sync 463 l
+2011_10_03/2011_10_03_drive_0034_sync 132 l
+2011_09_30/2011_09_30_drive_0033_sync 1164 r
+2011_09_30/2011_09_30_drive_0028_sync 2251 l
+2011_09_30/2011_09_30_drive_0028_sync 3729 l
+2011_09_30/2011_09_30_drive_0028_sync 4797 r
+2011_09_29/2011_09_29_drive_0026_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 1591 r
+2011_09_26/2011_09_26_drive_0035_sync 99 r
+2011_09_30/2011_09_30_drive_0033_sync 1571 r
+2011_09_26/2011_09_26_drive_0051_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 1624 l
+2011_09_30/2011_09_30_drive_0033_sync 982 r
+2011_09_30/2011_09_30_drive_0034_sync 166 r
+2011_10_03/2011_10_03_drive_0034_sync 1508 l
+2011_09_30/2011_09_30_drive_0028_sync 4287 l
+2011_09_26/2011_09_26_drive_0014_sync 223 l
+2011_09_26/2011_09_26_drive_0028_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 1726 l
+2011_09_26/2011_09_26_drive_0011_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 249 l
+2011_09_26/2011_09_26_drive_0019_sync 36 r
+2011_09_26/2011_09_26_drive_0032_sync 359 r
+2011_09_30/2011_09_30_drive_0028_sync 3520 r
+2011_09_26/2011_09_26_drive_0018_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 4314 l
+2011_09_30/2011_09_30_drive_0028_sync 96 l
+2011_09_26/2011_09_26_drive_0028_sync 83 r
+2011_09_26/2011_09_26_drive_0022_sync 650 r
+2011_09_30/2011_09_30_drive_0028_sync 3738 l
+2011_10_03/2011_10_03_drive_0034_sync 931 r
+2011_09_30/2011_09_30_drive_0028_sync 295 r
+2011_10_03/2011_10_03_drive_0034_sync 1985 r
+2011_09_30/2011_09_30_drive_0033_sync 957 l
+2011_09_26/2011_09_26_drive_0011_sync 23 l
+2011_09_26/2011_09_26_drive_0014_sync 180 r
+2011_09_30/2011_09_30_drive_0020_sync 513 r
+2011_09_26/2011_09_26_drive_0057_sync 91 l
+2011_10_03/2011_10_03_drive_0034_sync 3009 l
+2011_09_30/2011_09_30_drive_0028_sync 2906 r
+2011_09_30/2011_09_30_drive_0033_sync 1526 l
+2011_09_30/2011_09_30_drive_0033_sync 569 r
+2011_09_30/2011_09_30_drive_0033_sync 432 l
+2011_09_26/2011_09_26_drive_0113_sync 3 r
+2011_09_29/2011_09_29_drive_0004_sync 77 r
+2011_09_30/2011_09_30_drive_0034_sync 929 l
+2011_09_26/2011_09_26_drive_0051_sync 328 r
+2011_09_30/2011_09_30_drive_0033_sync 1232 r
+2011_09_26/2011_09_26_drive_0028_sync 321 l
+2011_10_03/2011_10_03_drive_0034_sync 3308 r
+2011_09_30/2011_09_30_drive_0028_sync 1692 l
+2011_09_30/2011_09_30_drive_0028_sync 1446 l
+2011_09_30/2011_09_30_drive_0028_sync 1330 l
+2011_09_30/2011_09_30_drive_0028_sync 309 l
+2011_09_30/2011_09_30_drive_0034_sync 459 l
+2011_09_30/2011_09_30_drive_0034_sync 321 r
+2011_09_26/2011_09_26_drive_0022_sync 626 l
+2011_09_30/2011_09_30_drive_0034_sync 844 r
+2011_09_26/2011_09_26_drive_0051_sync 344 l
+2011_09_30/2011_09_30_drive_0028_sync 3198 l
+2011_10_03/2011_10_03_drive_0034_sync 1535 r
+2011_09_26/2011_09_26_drive_0005_sync 97 l
+2011_09_26/2011_09_26_drive_0022_sync 714 l
+2011_09_26/2011_09_26_drive_0019_sync 324 r
+2011_09_30/2011_09_30_drive_0028_sync 3394 r
+2011_09_30/2011_09_30_drive_0028_sync 2753 l
+2011_09_30/2011_09_30_drive_0028_sync 4525 l
+2011_09_26/2011_09_26_drive_0095_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 1945 r
+2011_10_03/2011_10_03_drive_0034_sync 3122 l
+2011_09_30/2011_09_30_drive_0033_sync 1227 l
+2011_09_30/2011_09_30_drive_0020_sync 45 l
+2011_10_03/2011_10_03_drive_0042_sync 623 r
+2011_09_26/2011_09_26_drive_0022_sync 443 r
+2011_10_03/2011_10_03_drive_0042_sync 717 r
+2011_10_03/2011_10_03_drive_0034_sync 901 r
+2011_10_03/2011_10_03_drive_0034_sync 1909 r
+2011_10_03/2011_10_03_drive_0034_sync 159 r
+2011_09_30/2011_09_30_drive_0020_sync 516 l
+2011_09_30/2011_09_30_drive_0028_sync 518 r
+2011_09_26/2011_09_26_drive_0022_sync 469 l
+2011_09_30/2011_09_30_drive_0028_sync 954 r
+2011_09_30/2011_09_30_drive_0020_sync 642 l
+2011_09_30/2011_09_30_drive_0028_sync 1073 l
+2011_10_03/2011_10_03_drive_0034_sync 1202 l
+2011_09_30/2011_09_30_drive_0033_sync 522 l
+2011_09_26/2011_09_26_drive_0070_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 2322 r
+2011_09_30/2011_09_30_drive_0033_sync 921 r
+2011_10_03/2011_10_03_drive_0034_sync 1585 l
+2011_10_03/2011_10_03_drive_0042_sync 437 r
+2011_09_30/2011_09_30_drive_0034_sync 442 l
+2011_09_29/2011_09_29_drive_0004_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 3895 r
+2011_09_26/2011_09_26_drive_0001_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 1765 r
+2011_09_30/2011_09_30_drive_0033_sync 1270 l
+2011_09_29/2011_09_29_drive_0004_sync 222 l
+2011_09_30/2011_09_30_drive_0028_sync 2966 l
+2011_10_03/2011_10_03_drive_0034_sync 1623 r
+2011_09_30/2011_09_30_drive_0028_sync 1597 r
+2011_09_30/2011_09_30_drive_0028_sync 231 l
+2011_09_30/2011_09_30_drive_0034_sync 188 l
+2011_09_26/2011_09_26_drive_0113_sync 24 r
+2011_09_26/2011_09_26_drive_0022_sync 292 r
+2011_09_30/2011_09_30_drive_0034_sync 655 r
+2011_10_03/2011_10_03_drive_0034_sync 1218 l
+2011_10_03/2011_10_03_drive_0034_sync 755 r
+2011_09_30/2011_09_30_drive_0028_sync 1731 r
+2011_09_26/2011_09_26_drive_0022_sync 525 r
+2011_09_26/2011_09_26_drive_0014_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 3305 l
+2011_10_03/2011_10_03_drive_0034_sync 646 l
+2011_09_30/2011_09_30_drive_0028_sync 2348 r
+2011_09_26/2011_09_26_drive_0051_sync 383 r
+2011_10_03/2011_10_03_drive_0034_sync 3869 l
+2011_10_03/2011_10_03_drive_0042_sync 1038 l
+2011_09_30/2011_09_30_drive_0033_sync 1058 l
+2011_09_30/2011_09_30_drive_0020_sync 356 r
+2011_09_26/2011_09_26_drive_0061_sync 477 r
+2011_10_03/2011_10_03_drive_0034_sync 944 r
+2011_09_26/2011_09_26_drive_0028_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 52 r
+2011_09_26/2011_09_26_drive_0061_sync 525 r
+2011_09_30/2011_09_30_drive_0020_sync 717 r
+2011_09_26/2011_09_26_drive_0011_sync 206 r
+2011_09_29/2011_09_29_drive_0026_sync 70 l
+2011_10_03/2011_10_03_drive_0042_sync 527 l
+2011_09_28/2011_09_28_drive_0001_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 4408 l
+2011_09_30/2011_09_30_drive_0033_sync 179 r
+2011_10_03/2011_10_03_drive_0034_sync 3397 r
+2011_09_26/2011_09_26_drive_0039_sync 285 l
+2011_09_26/2011_09_26_drive_0018_sync 151 r
+2011_09_26/2011_09_26_drive_0104_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 2750 l
+2011_09_26/2011_09_26_drive_0057_sync 102 l
+2011_09_30/2011_09_30_drive_0033_sync 1327 r
+2011_09_26/2011_09_26_drive_0057_sync 131 l
+2011_09_26/2011_09_26_drive_0087_sync 71 r
+2011_09_26/2011_09_26_drive_0018_sync 55 l
+2011_09_26/2011_09_26_drive_0022_sync 393 r
+2011_09_26/2011_09_26_drive_0079_sync 16 l
+2011_09_26/2011_09_26_drive_0018_sync 112 r
+2011_10_03/2011_10_03_drive_0042_sync 734 l
+2011_09_26/2011_09_26_drive_0051_sync 380 l
+2011_09_30/2011_09_30_drive_0033_sync 369 l
+2011_09_26/2011_09_26_drive_0019_sync 432 r
+2011_09_30/2011_09_30_drive_0033_sync 345 l
+2011_09_26/2011_09_26_drive_0015_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 4718 r
+2011_09_30/2011_09_30_drive_0028_sync 3440 r
+2011_10_03/2011_10_03_drive_0034_sync 3984 r
+2011_10_03/2011_10_03_drive_0034_sync 292 r
+2011_10_03/2011_10_03_drive_0042_sync 21 r
+2011_09_30/2011_09_30_drive_0034_sync 63 l
+2011_09_30/2011_09_30_drive_0020_sync 995 l
+2011_09_26/2011_09_26_drive_0022_sync 456 l
+2011_09_26/2011_09_26_drive_0061_sync 171 r
+2011_09_29/2011_09_29_drive_0026_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 1451 l
+2011_10_03/2011_10_03_drive_0042_sync 227 r
+2011_10_03/2011_10_03_drive_0034_sync 3923 r
+2011_09_26/2011_09_26_drive_0051_sync 201 l
+2011_09_29/2011_09_29_drive_0026_sync 119 r
+2011_09_30/2011_09_30_drive_0020_sync 531 l
+2011_09_30/2011_09_30_drive_0028_sync 4487 r
+2011_09_26/2011_09_26_drive_0035_sync 75 r
+2011_09_26/2011_09_26_drive_0001_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 2068 l
+2011_09_26/2011_09_26_drive_0095_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 3062 r
+2011_09_26/2011_09_26_drive_0057_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 3820 r
+2011_09_26/2011_09_26_drive_0028_sync 222 l
+2011_09_30/2011_09_30_drive_0028_sync 1937 r
+2011_09_26/2011_09_26_drive_0051_sync 436 l
+2011_09_26/2011_09_26_drive_0051_sync 218 r
+2011_10_03/2011_10_03_drive_0034_sync 3261 l
+2011_10_03/2011_10_03_drive_0034_sync 1862 r
+2011_09_30/2011_09_30_drive_0028_sync 1673 r
+2011_09_30/2011_09_30_drive_0028_sync 550 l
+2011_10_03/2011_10_03_drive_0034_sync 3664 l
+2011_09_30/2011_09_30_drive_0028_sync 1542 l
+2011_09_26/2011_09_26_drive_0019_sync 363 l
+2011_09_26/2011_09_26_drive_0061_sync 355 l
+2011_09_30/2011_09_30_drive_0020_sync 803 r
+2011_09_26/2011_09_26_drive_0022_sync 185 l
+2011_09_26/2011_09_26_drive_0032_sync 105 l
+2011_09_26/2011_09_26_drive_0022_sync 409 l
+2011_10_03/2011_10_03_drive_0034_sync 221 l
+2011_09_26/2011_09_26_drive_0104_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 4616 l
+2011_09_26/2011_09_26_drive_0022_sync 259 l
+2011_09_26/2011_09_26_drive_0057_sync 326 r
+2011_09_30/2011_09_30_drive_0033_sync 725 r
+2011_10_03/2011_10_03_drive_0034_sync 246 r
+2011_09_26/2011_09_26_drive_0028_sync 25 r
+2011_09_26/2011_09_26_drive_0091_sync 161 l
+2011_09_30/2011_09_30_drive_0028_sync 1765 l
+2011_09_30/2011_09_30_drive_0020_sync 113 r
+2011_09_26/2011_09_26_drive_0019_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 4806 l
+2011_09_30/2011_09_30_drive_0033_sync 387 l
+2011_10_03/2011_10_03_drive_0042_sync 478 l
+2011_10_03/2011_10_03_drive_0034_sync 782 r
+2011_09_30/2011_09_30_drive_0034_sync 847 r
+2011_09_26/2011_09_26_drive_0104_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 555 l
+2011_09_30/2011_09_30_drive_0028_sync 2328 r
+2011_10_03/2011_10_03_drive_0034_sync 2023 l
+2011_09_26/2011_09_26_drive_0104_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 3789 r
+2011_09_26/2011_09_26_drive_0061_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 2947 l
+2011_10_03/2011_10_03_drive_0034_sync 303 l
+2011_10_03/2011_10_03_drive_0034_sync 250 l
+2011_09_26/2011_09_26_drive_0057_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 765 l
+2011_09_30/2011_09_30_drive_0028_sync 28 l
+2011_09_26/2011_09_26_drive_0061_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 1399 l
+2011_10_03/2011_10_03_drive_0034_sync 3104 r
+2011_10_03/2011_10_03_drive_0034_sync 4171 l
+2011_10_03/2011_10_03_drive_0034_sync 1443 r
+2011_09_26/2011_09_26_drive_0057_sync 85 l
+2011_09_30/2011_09_30_drive_0028_sync 3100 r
+2011_10_03/2011_10_03_drive_0042_sync 817 r
+2011_09_30/2011_09_30_drive_0033_sync 685 l
+2011_10_03/2011_10_03_drive_0034_sync 3343 l
+2011_09_26/2011_09_26_drive_0091_sync 222 r
+2011_09_26/2011_09_26_drive_0104_sync 189 l
+2011_09_30/2011_09_30_drive_0033_sync 1482 l
+2011_09_26/2011_09_26_drive_0015_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 137 l
+2011_10_03/2011_10_03_drive_0034_sync 2107 l
+2011_10_03/2011_10_03_drive_0042_sync 347 r
+2011_09_26/2011_09_26_drive_0095_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 3312 l
+2011_10_03/2011_10_03_drive_0034_sync 4294 l
+2011_09_29/2011_09_29_drive_0004_sync 330 r
+2011_09_30/2011_09_30_drive_0034_sync 405 l
+2011_09_30/2011_09_30_drive_0028_sync 163 r
+2011_09_26/2011_09_26_drive_0014_sync 245 l
+2011_09_26/2011_09_26_drive_0028_sync 41 r
+2011_09_26/2011_09_26_drive_0061_sync 563 l
+2011_09_26/2011_09_26_drive_0035_sync 15 l
+2011_09_26/2011_09_26_drive_0061_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 1016 l
+2011_09_29/2011_09_29_drive_0004_sync 149 r
+2011_09_30/2011_09_30_drive_0034_sync 168 l
+2011_09_30/2011_09_30_drive_0034_sync 618 r
+2011_09_30/2011_09_30_drive_0028_sync 851 l
+2011_10_03/2011_10_03_drive_0034_sync 3728 l
+2011_09_26/2011_09_26_drive_0018_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 912 r
+2011_09_30/2011_09_30_drive_0028_sync 3758 r
+2011_09_26/2011_09_26_drive_0061_sync 530 l
+2011_09_30/2011_09_30_drive_0034_sync 610 l
+2011_09_26/2011_09_26_drive_0095_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 3662 l
+2011_09_30/2011_09_30_drive_0028_sync 1472 l
+2011_10_03/2011_10_03_drive_0034_sync 2459 l
+2011_09_30/2011_09_30_drive_0028_sync 3295 l
+2011_09_26/2011_09_26_drive_0028_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 4489 l
+2011_09_29/2011_09_29_drive_0026_sync 46 l
+2011_10_03/2011_10_03_drive_0034_sync 4512 l
+2011_09_30/2011_09_30_drive_0020_sync 624 l
+2011_09_30/2011_09_30_drive_0033_sync 712 r
+2011_09_30/2011_09_30_drive_0033_sync 450 r
+2011_09_30/2011_09_30_drive_0033_sync 794 r
+2011_09_30/2011_09_30_drive_0028_sync 4217 r
+2011_10_03/2011_10_03_drive_0042_sync 731 r
+2011_10_03/2011_10_03_drive_0034_sync 2530 l
+2011_09_30/2011_09_30_drive_0034_sync 630 r
+2011_09_26/2011_09_26_drive_0019_sync 294 l
+2011_09_26/2011_09_26_drive_0022_sync 731 r
+2011_09_30/2011_09_30_drive_0028_sync 1676 l
+2011_09_26/2011_09_26_drive_0022_sync 425 l
+2011_09_30/2011_09_30_drive_0020_sync 334 r
+2011_10_03/2011_10_03_drive_0034_sync 4376 r
+2011_09_26/2011_09_26_drive_0095_sync 47 l
+2011_09_30/2011_09_30_drive_0034_sync 670 r
+2011_09_26/2011_09_26_drive_0051_sync 145 l
+2011_09_26/2011_09_26_drive_0022_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 3884 l
+2011_10_03/2011_10_03_drive_0034_sync 3060 l
+2011_09_26/2011_09_26_drive_0070_sync 363 r
+2011_09_30/2011_09_30_drive_0034_sync 1208 l
+2011_10_03/2011_10_03_drive_0034_sync 1541 r
+2011_09_30/2011_09_30_drive_0028_sync 4849 r
+2011_09_26/2011_09_26_drive_0005_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 3320 r
+2011_10_03/2011_10_03_drive_0042_sync 416 r
+2011_10_03/2011_10_03_drive_0042_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 1671 r
+2011_09_26/2011_09_26_drive_0051_sync 46 r
+2011_09_30/2011_09_30_drive_0034_sync 107 r
+2011_09_26/2011_09_26_drive_0057_sync 281 l
+2011_09_30/2011_09_30_drive_0033_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 923 r
+2011_09_30/2011_09_30_drive_0028_sync 831 r
+2011_10_03/2011_10_03_drive_0034_sync 2519 l
+2011_09_30/2011_09_30_drive_0028_sync 2762 r
+2011_09_26/2011_09_26_drive_0015_sync 270 r
+2011_10_03/2011_10_03_drive_0034_sync 2722 l
+2011_09_30/2011_09_30_drive_0028_sync 1610 r
+2011_09_26/2011_09_26_drive_0091_sync 47 l
+2011_09_26/2011_09_26_drive_0079_sync 66 r
+2011_09_30/2011_09_30_drive_0033_sync 559 l
+2011_09_26/2011_09_26_drive_0070_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 685 r
+2011_09_26/2011_09_26_drive_0039_sync 317 l
+2011_10_03/2011_10_03_drive_0042_sync 664 l
+2011_09_29/2011_09_29_drive_0026_sync 122 l
+2011_09_30/2011_09_30_drive_0020_sync 549 r
+2011_09_26/2011_09_26_drive_0061_sync 356 r
+2011_09_26/2011_09_26_drive_0032_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 2287 l
+2011_09_30/2011_09_30_drive_0034_sync 198 l
+2011_09_26/2011_09_26_drive_0051_sync 302 l
+2011_09_26/2011_09_26_drive_0039_sync 320 l
+2011_10_03/2011_10_03_drive_0034_sync 3918 r
+2011_10_03/2011_10_03_drive_0034_sync 1497 r
+2011_09_30/2011_09_30_drive_0028_sync 4154 l
+2011_10_03/2011_10_03_drive_0034_sync 2564 l
+2011_09_30/2011_09_30_drive_0028_sync 1080 l
+2011_09_26/2011_09_26_drive_0051_sync 411 r
+2011_09_29/2011_09_29_drive_0004_sync 141 r
+2011_10_03/2011_10_03_drive_0042_sync 298 r
+2011_09_30/2011_09_30_drive_0028_sync 3548 l
+2011_10_03/2011_10_03_drive_0034_sync 1967 r
+2011_09_30/2011_09_30_drive_0033_sync 644 l
+2011_10_03/2011_10_03_drive_0034_sync 3000 r
+2011_10_03/2011_10_03_drive_0034_sync 4199 r
+2011_10_03/2011_10_03_drive_0034_sync 3677 l
+2011_09_30/2011_09_30_drive_0028_sync 216 r
+2011_10_03/2011_10_03_drive_0042_sync 51 l
+2011_09_26/2011_09_26_drive_0028_sync 67 r
+2011_10_03/2011_10_03_drive_0034_sync 2757 l
+2011_10_03/2011_10_03_drive_0034_sync 2768 l
+2011_09_30/2011_09_30_drive_0033_sync 1135 l
+2011_09_26/2011_09_26_drive_0022_sync 206 r
+2011_09_30/2011_09_30_drive_0034_sync 8 l
+2011_09_26/2011_09_26_drive_0051_sync 65 l
+2011_09_26/2011_09_26_drive_0028_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 935 l
+2011_09_26/2011_09_26_drive_0001_sync 88 r
+2011_09_30/2011_09_30_drive_0028_sync 2798 r
+2011_09_30/2011_09_30_drive_0028_sync 3074 r
+2011_10_03/2011_10_03_drive_0034_sync 874 l
+2011_10_03/2011_10_03_drive_0034_sync 3680 r
+2011_09_26/2011_09_26_drive_0014_sync 234 l
+2011_09_26/2011_09_26_drive_0104_sync 178 l
+2011_09_30/2011_09_30_drive_0034_sync 899 l
+2011_09_26/2011_09_26_drive_0032_sync 170 r
+2011_09_26/2011_09_26_drive_0051_sync 257 l
+2011_09_26/2011_09_26_drive_0061_sync 700 r
+2011_09_26/2011_09_26_drive_0061_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 941 l
+2011_09_30/2011_09_30_drive_0028_sync 1877 r
+2011_09_30/2011_09_30_drive_0028_sync 5081 l
+2011_09_30/2011_09_30_drive_0028_sync 2368 r
+2011_09_30/2011_09_30_drive_0028_sync 2634 l
+2011_10_03/2011_10_03_drive_0034_sync 4111 l
+2011_09_26/2011_09_26_drive_0028_sync 184 l
+2011_09_26/2011_09_26_drive_0011_sync 107 r
+2011_09_30/2011_09_30_drive_0034_sync 119 r
+2011_09_26/2011_09_26_drive_0039_sync 346 r
+2011_09_26/2011_09_26_drive_0022_sync 359 r
+2011_09_26/2011_09_26_drive_0057_sync 240 r
+2011_09_26/2011_09_26_drive_0091_sync 75 l
+2011_09_26/2011_09_26_drive_0015_sync 146 l
+2011_09_26/2011_09_26_drive_0011_sync 41 l
+2011_09_30/2011_09_30_drive_0034_sync 634 l
+2011_10_03/2011_10_03_drive_0034_sync 4236 r
+2011_09_30/2011_09_30_drive_0028_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 3139 r
+2011_09_30/2011_09_30_drive_0028_sync 1571 r
+2011_10_03/2011_10_03_drive_0034_sync 3585 l
+2011_09_26/2011_09_26_drive_0061_sync 168 r
+2011_09_30/2011_09_30_drive_0033_sync 1196 l
+2011_09_30/2011_09_30_drive_0034_sync 376 r
+2011_09_30/2011_09_30_drive_0020_sync 77 l
+2011_10_03/2011_10_03_drive_0034_sync 2849 r
+2011_10_03/2011_10_03_drive_0034_sync 3727 l
+2011_09_29/2011_09_29_drive_0004_sync 245 r
+2011_09_30/2011_09_30_drive_0020_sync 926 l
+2011_10_03/2011_10_03_drive_0034_sync 1903 l
+2011_09_30/2011_09_30_drive_0034_sync 229 r
+2011_09_30/2011_09_30_drive_0028_sync 594 l
+2011_09_30/2011_09_30_drive_0028_sync 2041 r
+2011_10_03/2011_10_03_drive_0034_sync 669 r
+2011_09_30/2011_09_30_drive_0033_sync 949 r
+2011_09_26/2011_09_26_drive_0022_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 4714 r
+2011_10_03/2011_10_03_drive_0042_sync 1120 l
+2011_10_03/2011_10_03_drive_0042_sync 84 l
+2011_09_26/2011_09_26_drive_0035_sync 66 r
+2011_10_03/2011_10_03_drive_0034_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 4993 l
+2011_09_26/2011_09_26_drive_0014_sync 137 r
+2011_09_30/2011_09_30_drive_0033_sync 1559 r
+2011_09_30/2011_09_30_drive_0028_sync 2864 r
+2011_09_30/2011_09_30_drive_0028_sync 1621 l
+2011_09_30/2011_09_30_drive_0020_sync 229 l
+2011_09_30/2011_09_30_drive_0028_sync 4089 l
+2011_09_26/2011_09_26_drive_0028_sync 30 r
+2011_09_30/2011_09_30_drive_0020_sync 218 r
+2011_10_03/2011_10_03_drive_0034_sync 1361 l
+2011_09_30/2011_09_30_drive_0028_sync 2949 r
+2011_09_26/2011_09_26_drive_0011_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 3987 l
+2011_09_30/2011_09_30_drive_0033_sync 1160 r
+2011_09_26/2011_09_26_drive_0011_sync 147 l
+2011_09_26/2011_09_26_drive_0087_sync 228 r
+2011_09_26/2011_09_26_drive_0032_sync 283 l
+2011_09_26/2011_09_26_drive_0022_sync 690 r
+2011_09_26/2011_09_26_drive_0061_sync 506 r
+2011_09_30/2011_09_30_drive_0028_sync 2649 l
+2011_09_26/2011_09_26_drive_0057_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 371 r
+2011_09_26/2011_09_26_drive_0011_sync 47 l
+2011_09_26/2011_09_26_drive_0113_sync 60 l
+2011_09_26/2011_09_26_drive_0091_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 4510 l
+2011_09_26/2011_09_26_drive_0051_sync 82 l
+2011_09_30/2011_09_30_drive_0020_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 287 r
+2011_09_26/2011_09_26_drive_0019_sync 403 l
+2011_09_30/2011_09_30_drive_0028_sync 1817 l
+2011_09_30/2011_09_30_drive_0034_sync 241 r
+2011_09_26/2011_09_26_drive_0087_sync 387 l
+2011_09_30/2011_09_30_drive_0033_sync 1410 l
+2011_09_26/2011_09_26_drive_0022_sync 264 r
+2011_10_03/2011_10_03_drive_0034_sync 3799 l
+2011_09_30/2011_09_30_drive_0020_sync 493 r
+2011_09_26/2011_09_26_drive_0091_sync 205 l
+2011_09_30/2011_09_30_drive_0033_sync 516 l
+2011_10_03/2011_10_03_drive_0034_sync 1355 r
+2011_09_30/2011_09_30_drive_0033_sync 852 r
+2011_09_30/2011_09_30_drive_0020_sync 507 l
+2011_10_03/2011_10_03_drive_0042_sync 820 r
+2011_10_03/2011_10_03_drive_0034_sync 3227 r
+2011_09_30/2011_09_30_drive_0028_sync 4202 l
+2011_09_30/2011_09_30_drive_0033_sync 1247 r
+2011_09_30/2011_09_30_drive_0028_sync 2836 l
+2011_10_03/2011_10_03_drive_0034_sync 3997 r
+2011_10_03/2011_10_03_drive_0034_sync 4614 r
+2011_09_26/2011_09_26_drive_0022_sync 644 r
+2011_09_26/2011_09_26_drive_0091_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 1056 l
+2011_10_03/2011_10_03_drive_0034_sync 3264 r
+2011_09_30/2011_09_30_drive_0028_sync 2609 r
+2011_09_26/2011_09_26_drive_0091_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 3469 r
+2011_09_30/2011_09_30_drive_0028_sync 3290 r
+2011_09_26/2011_09_26_drive_0061_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 476 r
+2011_10_03/2011_10_03_drive_0034_sync 1336 r
+2011_09_30/2011_09_30_drive_0028_sync 2553 r
+2011_09_30/2011_09_30_drive_0034_sync 909 l
+2011_09_30/2011_09_30_drive_0028_sync 4755 l
+2011_10_03/2011_10_03_drive_0042_sync 942 r
+2011_09_26/2011_09_26_drive_0018_sync 215 l
+2011_09_26/2011_09_26_drive_0070_sync 403 r
+2011_09_30/2011_09_30_drive_0033_sync 1205 l
+2011_09_26/2011_09_26_drive_0051_sync 176 r
+2011_09_30/2011_09_30_drive_0028_sync 3204 l
+2011_09_30/2011_09_30_drive_0028_sync 2145 r
+2011_09_30/2011_09_30_drive_0028_sync 4494 l
+2011_09_26/2011_09_26_drive_0032_sync 232 l
+2011_09_26/2011_09_26_drive_0022_sync 294 l
+2011_09_30/2011_09_30_drive_0028_sync 507 l
+2011_09_26/2011_09_26_drive_0028_sync 95 r
+2011_09_26/2011_09_26_drive_0018_sync 89 l
+2011_09_30/2011_09_30_drive_0028_sync 4373 l
+2011_10_03/2011_10_03_drive_0042_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 5164 r
+2011_09_26/2011_09_26_drive_0051_sync 125 r
+2011_09_30/2011_09_30_drive_0034_sync 913 r
+2011_09_29/2011_09_29_drive_0004_sync 176 r
+2011_09_30/2011_09_30_drive_0033_sync 1551 r
+2011_10_03/2011_10_03_drive_0034_sync 2026 l
+2011_10_03/2011_10_03_drive_0034_sync 1054 l
+2011_10_03/2011_10_03_drive_0042_sync 704 r
+2011_09_30/2011_09_30_drive_0028_sync 3926 r
+2011_09_26/2011_09_26_drive_0017_sync 105 r
+2011_09_30/2011_09_30_drive_0028_sync 4059 l
+2011_09_30/2011_09_30_drive_0028_sync 4991 l
+2011_10_03/2011_10_03_drive_0034_sync 3713 l
+2011_09_26/2011_09_26_drive_0032_sync 370 r
+2011_09_26/2011_09_26_drive_0015_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 2333 l
+2011_10_03/2011_10_03_drive_0034_sync 1031 l
+2011_10_03/2011_10_03_drive_0034_sync 89 l
+2011_10_03/2011_10_03_drive_0034_sync 1357 r
+2011_09_30/2011_09_30_drive_0020_sync 336 l
+2011_09_26/2011_09_26_drive_0014_sync 248 r
+2011_09_26/2011_09_26_drive_0051_sync 416 l
+2011_09_30/2011_09_30_drive_0028_sync 889 l
+2011_09_30/2011_09_30_drive_0028_sync 3494 l
+2011_09_30/2011_09_30_drive_0033_sync 1441 l
+2011_09_30/2011_09_30_drive_0020_sync 743 l
+2011_09_26/2011_09_26_drive_0039_sync 262 r
+2011_10_03/2011_10_03_drive_0034_sync 1989 r
+2011_09_30/2011_09_30_drive_0033_sync 1442 r
+2011_10_03/2011_10_03_drive_0034_sync 2255 r
+2011_09_30/2011_09_30_drive_0034_sync 681 r
+2011_09_26/2011_09_26_drive_0104_sync 156 l
+2011_09_26/2011_09_26_drive_0057_sync 26 r
+2011_09_26/2011_09_26_drive_0011_sync 138 r
+2011_09_26/2011_09_26_drive_0014_sync 190 r
+2011_10_03/2011_10_03_drive_0034_sync 1072 r
+2011_09_30/2011_09_30_drive_0034_sync 979 l
+2011_10_03/2011_10_03_drive_0034_sync 2867 r
+2011_10_03/2011_10_03_drive_0034_sync 2933 r
+2011_09_30/2011_09_30_drive_0028_sync 3302 l
+2011_09_26/2011_09_26_drive_0011_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 1413 l
+2011_10_03/2011_10_03_drive_0034_sync 714 l
+2011_10_03/2011_10_03_drive_0034_sync 1885 r
+2011_10_03/2011_10_03_drive_0034_sync 2472 r
+2011_09_26/2011_09_26_drive_0051_sync 338 r
+2011_10_03/2011_10_03_drive_0034_sync 3921 l
+2011_09_30/2011_09_30_drive_0034_sync 1059 l
+2011_10_03/2011_10_03_drive_0042_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 327 r
+2011_09_30/2011_09_30_drive_0033_sync 786 r
+2011_09_30/2011_09_30_drive_0020_sync 260 l
+2011_09_30/2011_09_30_drive_0034_sync 997 r
+2011_10_03/2011_10_03_drive_0034_sync 3968 r
+2011_09_30/2011_09_30_drive_0028_sync 4179 r
+2011_10_03/2011_10_03_drive_0034_sync 1089 l
+2011_09_26/2011_09_26_drive_0104_sync 65 l
+2011_09_30/2011_09_30_drive_0020_sync 956 r
+2011_09_26/2011_09_26_drive_0087_sync 397 r
+2011_09_26/2011_09_26_drive_0104_sync 271 l
+2011_10_03/2011_10_03_drive_0034_sync 369 l
+2011_09_26/2011_09_26_drive_0039_sync 177 r
+2011_09_26/2011_09_26_drive_0104_sync 5 l
+2011_09_30/2011_09_30_drive_0033_sync 1338 l
+2011_09_26/2011_09_26_drive_0017_sync 14 l
+2011_09_26/2011_09_26_drive_0070_sync 146 l
+2011_09_30/2011_09_30_drive_0034_sync 552 r
+2011_10_03/2011_10_03_drive_0034_sync 2718 l
+2011_09_26/2011_09_26_drive_0014_sync 40 l
+2011_09_26/2011_09_26_drive_0087_sync 430 l
+2011_10_03/2011_10_03_drive_0034_sync 2665 r
+2011_09_30/2011_09_30_drive_0034_sync 1209 l
+2011_09_30/2011_09_30_drive_0028_sync 2660 r
+2011_09_26/2011_09_26_drive_0017_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 2916 l
+2011_09_30/2011_09_30_drive_0028_sync 867 l
+2011_09_26/2011_09_26_drive_0051_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 2296 r
+2011_10_03/2011_10_03_drive_0034_sync 861 l
+2011_09_30/2011_09_30_drive_0034_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 526 r
+2011_09_26/2011_09_26_drive_0091_sync 244 r
+2011_09_30/2011_09_30_drive_0028_sync 2195 r
+2011_09_30/2011_09_30_drive_0033_sync 1154 l
+2011_09_30/2011_09_30_drive_0028_sync 3909 r
+2011_09_30/2011_09_30_drive_0033_sync 1379 l
+2011_09_26/2011_09_26_drive_0022_sync 441 r
+2011_09_30/2011_09_30_drive_0028_sync 548 l
+2011_09_26/2011_09_26_drive_0011_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 108 r
+2011_10_03/2011_10_03_drive_0042_sync 747 r
+2011_09_26/2011_09_26_drive_0087_sync 443 r
+2011_09_26/2011_09_26_drive_0061_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 2362 l
+2011_10_03/2011_10_03_drive_0034_sync 234 l
+2011_09_26/2011_09_26_drive_0014_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 1674 l
+2011_09_30/2011_09_30_drive_0020_sync 170 r
+2011_09_26/2011_09_26_drive_0011_sync 148 l
+2011_09_30/2011_09_30_drive_0034_sync 53 r
+2011_09_30/2011_09_30_drive_0034_sync 656 l
+2011_10_03/2011_10_03_drive_0034_sync 4283 l
+2011_09_26/2011_09_26_drive_0061_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 786 l
+2011_09_26/2011_09_26_drive_0061_sync 178 r
+2011_09_26/2011_09_26_drive_0032_sync 319 r
+2011_09_26/2011_09_26_drive_0070_sync 197 l
+2011_09_26/2011_09_26_drive_0087_sync 120 r
+2011_10_03/2011_10_03_drive_0042_sync 837 r
+2011_10_03/2011_10_03_drive_0034_sync 3599 r
+2011_09_26/2011_09_26_drive_0019_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 2916 r
+2011_09_30/2011_09_30_drive_0028_sync 2640 r
+2011_10_03/2011_10_03_drive_0034_sync 226 l
+2011_09_28/2011_09_28_drive_0001_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 969 l
+2011_09_26/2011_09_26_drive_0061_sync 40 l
+2011_09_30/2011_09_30_drive_0033_sync 1007 l
+2011_09_26/2011_09_26_drive_0032_sync 297 r
+2011_09_26/2011_09_26_drive_0087_sync 481 l
+2011_09_30/2011_09_30_drive_0028_sync 2898 r
+2011_10_03/2011_10_03_drive_0034_sync 4000 r
+2011_09_30/2011_09_30_drive_0034_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 276 l
+2011_09_29/2011_09_29_drive_0026_sync 106 r
+2011_09_26/2011_09_26_drive_0022_sync 299 r
+2011_09_30/2011_09_30_drive_0033_sync 1180 r
+2011_09_30/2011_09_30_drive_0028_sync 1500 r
+2011_09_30/2011_09_30_drive_0028_sync 1177 l
+2011_10_03/2011_10_03_drive_0034_sync 3553 r
+2011_10_03/2011_10_03_drive_0034_sync 123 r
+2011_09_26/2011_09_26_drive_0019_sync 404 l
+2011_09_26/2011_09_26_drive_0011_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 2617 r
+2011_09_30/2011_09_30_drive_0034_sync 811 r
+2011_09_30/2011_09_30_drive_0034_sync 584 r
+2011_09_30/2011_09_30_drive_0033_sync 172 r
+2011_09_26/2011_09_26_drive_0060_sync 31 l
+2011_09_26/2011_09_26_drive_0051_sync 246 r
+2011_09_26/2011_09_26_drive_0022_sync 657 r
+2011_09_30/2011_09_30_drive_0028_sync 552 l
+2011_09_26/2011_09_26_drive_0028_sync 417 r
+2011_10_03/2011_10_03_drive_0042_sync 526 r
+2011_09_30/2011_09_30_drive_0033_sync 1343 r
+2011_10_03/2011_10_03_drive_0034_sync 4183 l
+2011_09_26/2011_09_26_drive_0032_sync 361 l
+2011_10_03/2011_10_03_drive_0042_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 3999 r
+2011_10_03/2011_10_03_drive_0034_sync 1494 l
+2011_09_26/2011_09_26_drive_0087_sync 565 r
+2011_09_30/2011_09_30_drive_0028_sync 2680 l
+2011_09_30/2011_09_30_drive_0028_sync 3077 l
+2011_09_30/2011_09_30_drive_0033_sync 545 r
+2011_10_03/2011_10_03_drive_0034_sync 1525 l
+2011_09_30/2011_09_30_drive_0028_sync 2495 r
+2011_09_30/2011_09_30_drive_0028_sync 4408 r
+2011_10_03/2011_10_03_drive_0034_sync 3452 l
+2011_10_03/2011_10_03_drive_0034_sync 640 l
+2011_09_30/2011_09_30_drive_0020_sync 262 l
+2011_09_29/2011_09_29_drive_0004_sync 33 r
+2011_09_26/2011_09_26_drive_0087_sync 529 r
+2011_09_26/2011_09_26_drive_0028_sync 7 l
+2011_09_26/2011_09_26_drive_0035_sync 60 r
+2011_10_03/2011_10_03_drive_0042_sync 875 r
+2011_09_26/2011_09_26_drive_0015_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 1560 l
+2011_10_03/2011_10_03_drive_0034_sync 1183 l
+2011_09_26/2011_09_26_drive_0095_sync 228 r
+2011_09_26/2011_09_26_drive_0061_sync 700 l
+2011_09_30/2011_09_30_drive_0033_sync 604 r
+2011_09_30/2011_09_30_drive_0028_sync 2502 l
+2011_09_26/2011_09_26_drive_0011_sync 99 l
+2011_09_30/2011_09_30_drive_0033_sync 223 r
+2011_09_30/2011_09_30_drive_0034_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 3043 r
+2011_09_30/2011_09_30_drive_0034_sync 676 l
+2011_09_30/2011_09_30_drive_0034_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 2381 l
+2011_09_30/2011_09_30_drive_0020_sync 202 r
+2011_09_26/2011_09_26_drive_0061_sync 332 r
+2011_09_30/2011_09_30_drive_0033_sync 1536 r
+2011_09_26/2011_09_26_drive_0061_sync 169 r
+2011_09_29/2011_09_29_drive_0004_sync 94 r
+2011_09_26/2011_09_26_drive_0015_sync 282 r
+2011_10_03/2011_10_03_drive_0034_sync 3214 r
+2011_09_26/2011_09_26_drive_0018_sync 39 l
+2011_09_26/2011_09_26_drive_0022_sync 427 r
+2011_10_03/2011_10_03_drive_0034_sync 750 l
+2011_09_26/2011_09_26_drive_0070_sync 254 r
+2011_09_26/2011_09_26_drive_0017_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 1281 r
+2011_09_26/2011_09_26_drive_0019_sync 358 r
+2011_10_03/2011_10_03_drive_0034_sync 3666 r
+2011_09_26/2011_09_26_drive_0087_sync 201 r
+2011_09_26/2011_09_26_drive_0022_sync 284 l
+2011_09_30/2011_09_30_drive_0028_sync 4361 r
+2011_09_30/2011_09_30_drive_0028_sync 7 l
+2011_09_30/2011_09_30_drive_0028_sync 24 l
+2011_09_26/2011_09_26_drive_0018_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 1912 l
+2011_09_30/2011_09_30_drive_0028_sync 116 l
+2011_09_26/2011_09_26_drive_0032_sync 12 l
+2011_09_30/2011_09_30_drive_0020_sync 406 l
+2011_09_30/2011_09_30_drive_0028_sync 1592 l
+2011_09_30/2011_09_30_drive_0028_sync 2454 l
+2011_09_30/2011_09_30_drive_0028_sync 1066 r
+2011_09_30/2011_09_30_drive_0028_sync 1449 r
+2011_09_30/2011_09_30_drive_0028_sync 350 r
+2011_09_26/2011_09_26_drive_0060_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 2523 l
+2011_09_26/2011_09_26_drive_0051_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 1293 l
+2011_10_03/2011_10_03_drive_0034_sync 2782 l
+2011_09_30/2011_09_30_drive_0020_sync 611 l
+2011_09_26/2011_09_26_drive_0014_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 3374 r
+2011_09_30/2011_09_30_drive_0028_sync 4966 r
+2011_10_03/2011_10_03_drive_0034_sync 1087 l
+2011_09_30/2011_09_30_drive_0028_sync 670 l
+2011_10_03/2011_10_03_drive_0042_sync 398 r
+2011_10_03/2011_10_03_drive_0034_sync 1528 l
+2011_09_26/2011_09_26_drive_0087_sync 508 r
+2011_09_30/2011_09_30_drive_0033_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 600 r
+2011_10_03/2011_10_03_drive_0034_sync 3080 r
+2011_09_26/2011_09_26_drive_0022_sync 361 l
+2011_09_30/2011_09_30_drive_0028_sync 3844 l
+2011_10_03/2011_10_03_drive_0034_sync 2018 r
+2011_10_03/2011_10_03_drive_0034_sync 838 l
+2011_09_30/2011_09_30_drive_0028_sync 3725 r
+2011_09_26/2011_09_26_drive_0019_sync 368 r
+2011_10_03/2011_10_03_drive_0034_sync 2426 l
+2011_09_26/2011_09_26_drive_0018_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3253 l
+2011_10_03/2011_10_03_drive_0034_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 3347 l
+2011_10_03/2011_10_03_drive_0034_sync 366 l
+2011_09_26/2011_09_26_drive_0057_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 1766 l
+2011_10_03/2011_10_03_drive_0034_sync 2962 r
+2011_09_30/2011_09_30_drive_0034_sync 1095 l
+2011_09_26/2011_09_26_drive_0014_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 2092 l
+2011_09_30/2011_09_30_drive_0033_sync 1076 l
+2011_10_03/2011_10_03_drive_0034_sync 1096 r
+2011_09_26/2011_09_26_drive_0057_sync 5 r
+2011_09_26/2011_09_26_drive_0018_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 4740 r
+2011_10_03/2011_10_03_drive_0034_sync 357 l
+2011_09_30/2011_09_30_drive_0034_sync 679 r
+2011_09_26/2011_09_26_drive_0061_sync 194 r
+2011_09_30/2011_09_30_drive_0034_sync 280 r
+2011_09_26/2011_09_26_drive_0028_sync 410 l
+2011_09_30/2011_09_30_drive_0028_sync 4425 r
+2011_09_30/2011_09_30_drive_0028_sync 3832 r
+2011_09_29/2011_09_29_drive_0004_sync 148 l
+2011_09_29/2011_09_29_drive_0004_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 122 l
+2011_09_30/2011_09_30_drive_0034_sync 1213 r
+2011_09_26/2011_09_26_drive_0005_sync 139 r
+2011_09_30/2011_09_30_drive_0034_sync 947 r
+2011_09_26/2011_09_26_drive_0087_sync 289 l
+2011_09_30/2011_09_30_drive_0028_sync 3922 l
+2011_09_26/2011_09_26_drive_0022_sync 45 l
+2011_09_26/2011_09_26_drive_0061_sync 348 l
+2011_09_30/2011_09_30_drive_0028_sync 2442 r
+2011_09_26/2011_09_26_drive_0022_sync 220 l
+2011_09_30/2011_09_30_drive_0020_sync 675 r
+2011_10_03/2011_10_03_drive_0034_sync 2062 l
+2011_09_26/2011_09_26_drive_0051_sync 346 r
+2011_09_26/2011_09_26_drive_0018_sync 167 r
+2011_10_03/2011_10_03_drive_0042_sync 248 l
+2011_09_26/2011_09_26_drive_0087_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 842 r
+2011_10_03/2011_10_03_drive_0034_sync 3934 r
+2011_10_03/2011_10_03_drive_0034_sync 792 l
+2011_09_26/2011_09_26_drive_0032_sync 383 l
+2011_09_30/2011_09_30_drive_0028_sync 4322 r
+2011_10_03/2011_10_03_drive_0042_sync 83 l
+2011_09_26/2011_09_26_drive_0022_sync 465 r
+2011_09_30/2011_09_30_drive_0020_sync 429 l
+2011_09_30/2011_09_30_drive_0028_sync 5053 r
+2011_09_30/2011_09_30_drive_0028_sync 2545 r
+2011_09_29/2011_09_29_drive_0026_sync 33 l
+2011_09_30/2011_09_30_drive_0033_sync 1532 l
+2011_09_26/2011_09_26_drive_0005_sync 90 l
+2011_09_26/2011_09_26_drive_0091_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 3517 r
+2011_09_30/2011_09_30_drive_0033_sync 1221 l
+2011_09_26/2011_09_26_drive_0091_sync 308 r
+2011_09_30/2011_09_30_drive_0028_sync 4464 l
+2011_10_03/2011_10_03_drive_0034_sync 1970 r
+2011_09_26/2011_09_26_drive_0005_sync 112 r
+2011_10_03/2011_10_03_drive_0042_sync 1168 r
+2011_09_30/2011_09_30_drive_0028_sync 5146 r
+2011_09_30/2011_09_30_drive_0028_sync 3775 r
+2011_09_26/2011_09_26_drive_0019_sync 136 l
+2011_10_03/2011_10_03_drive_0042_sync 816 r
+2011_09_29/2011_09_29_drive_0004_sync 65 r
+2011_09_26/2011_09_26_drive_0032_sync 279 l
+2011_09_30/2011_09_30_drive_0033_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 3160 r
+2011_09_26/2011_09_26_drive_0087_sync 27 r
+2011_10_03/2011_10_03_drive_0042_sync 1166 r
+2011_09_30/2011_09_30_drive_0028_sync 905 r
+2011_09_30/2011_09_30_drive_0028_sync 2709 l
+2011_09_30/2011_09_30_drive_0033_sync 667 r
+2011_09_30/2011_09_30_drive_0033_sync 1495 l
+2011_09_30/2011_09_30_drive_0028_sync 1127 r
+2011_09_30/2011_09_30_drive_0020_sync 951 l
+2011_10_03/2011_10_03_drive_0042_sync 508 r
+2011_09_30/2011_09_30_drive_0033_sync 1001 l
+2011_10_03/2011_10_03_drive_0034_sync 2161 r
+2011_09_30/2011_09_30_drive_0028_sync 604 r
+2011_10_03/2011_10_03_drive_0034_sync 4381 r
+2011_09_30/2011_09_30_drive_0020_sync 911 l
+2011_09_30/2011_09_30_drive_0034_sync 649 r
+2011_10_03/2011_10_03_drive_0034_sync 1669 r
+2011_10_03/2011_10_03_drive_0034_sync 1910 r
+2011_10_03/2011_10_03_drive_0034_sync 1126 r
+2011_10_03/2011_10_03_drive_0034_sync 2587 l
+2011_09_30/2011_09_30_drive_0028_sync 1624 l
+2011_09_26/2011_09_26_drive_0022_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 4244 r
+2011_09_30/2011_09_30_drive_0028_sync 1425 r
+2011_09_30/2011_09_30_drive_0020_sync 579 l
+2011_09_26/2011_09_26_drive_0061_sync 609 l
+2011_09_26/2011_09_26_drive_0022_sync 415 l
+2011_09_30/2011_09_30_drive_0028_sync 4743 r
+2011_10_03/2011_10_03_drive_0034_sync 3040 r
+2011_10_03/2011_10_03_drive_0034_sync 1453 l
+2011_09_26/2011_09_26_drive_0061_sync 73 r
+2011_09_30/2011_09_30_drive_0034_sync 100 l
+2011_09_26/2011_09_26_drive_0018_sync 173 l
+2011_09_26/2011_09_26_drive_0087_sync 710 l
+2011_10_03/2011_10_03_drive_0034_sync 337 l
+2011_09_30/2011_09_30_drive_0034_sync 67 l
+2011_09_26/2011_09_26_drive_0087_sync 190 r
+2011_09_29/2011_09_29_drive_0026_sync 157 l
+2011_09_30/2011_09_30_drive_0028_sync 4582 l
+2011_09_26/2011_09_26_drive_0039_sync 133 r
+2011_09_26/2011_09_26_drive_0087_sync 172 r
+2011_09_26/2011_09_26_drive_0039_sync 121 l
+2011_09_26/2011_09_26_drive_0015_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 3216 l
+2011_09_29/2011_09_29_drive_0026_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 1761 r
+2011_09_30/2011_09_30_drive_0028_sync 827 l
+2011_09_30/2011_09_30_drive_0028_sync 2992 l
+2011_09_30/2011_09_30_drive_0028_sync 4200 r
+2011_10_03/2011_10_03_drive_0034_sync 811 l
+2011_09_26/2011_09_26_drive_0019_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 3142 r
+2011_09_26/2011_09_26_drive_0079_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 4502 l
+2011_10_03/2011_10_03_drive_0034_sync 1522 r
+2011_09_30/2011_09_30_drive_0028_sync 1271 l
+2011_09_26/2011_09_26_drive_0005_sync 103 l
+2011_09_26/2011_09_26_drive_0028_sync 115 l
+2011_10_03/2011_10_03_drive_0042_sync 568 l
+2011_09_30/2011_09_30_drive_0020_sync 83 r
+2011_09_30/2011_09_30_drive_0033_sync 1477 r
+2011_09_26/2011_09_26_drive_0011_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 330 r
+2011_09_30/2011_09_30_drive_0020_sync 113 l
+2011_09_26/2011_09_26_drive_0039_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 3968 r
+2011_09_30/2011_09_30_drive_0028_sync 3108 l
+2011_09_30/2011_09_30_drive_0028_sync 4147 r
+2011_09_30/2011_09_30_drive_0028_sync 4080 r
+2011_09_26/2011_09_26_drive_0022_sync 795 r
+2011_09_26/2011_09_26_drive_0018_sync 219 r
+2011_09_30/2011_09_30_drive_0033_sync 1542 l
+2011_09_30/2011_09_30_drive_0033_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 1097 l
+2011_09_26/2011_09_26_drive_0104_sync 40 l
+2011_09_26/2011_09_26_drive_0022_sync 594 r
+2011_10_03/2011_10_03_drive_0042_sync 853 l
+2011_10_03/2011_10_03_drive_0034_sync 2458 r
+2011_10_03/2011_10_03_drive_0042_sync 650 r
+2011_09_26/2011_09_26_drive_0022_sync 634 r
+2011_09_26/2011_09_26_drive_0039_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 3718 r
+2011_10_03/2011_10_03_drive_0034_sync 1101 l
+2011_09_26/2011_09_26_drive_0061_sync 161 l
+2011_09_26/2011_09_26_drive_0019_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 3697 r
+2011_09_30/2011_09_30_drive_0028_sync 3420 l
+2011_09_26/2011_09_26_drive_0061_sync 403 l
+2011_09_26/2011_09_26_drive_0032_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 691 r
+2011_09_26/2011_09_26_drive_0087_sync 665 r
+2011_09_26/2011_09_26_drive_0091_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 3637 r
+2011_09_30/2011_09_30_drive_0033_sync 1094 l
+2011_09_30/2011_09_30_drive_0033_sync 951 l
+2011_09_30/2011_09_30_drive_0028_sync 5155 r
+2011_09_30/2011_09_30_drive_0033_sync 1503 l
+2011_10_03/2011_10_03_drive_0034_sync 1092 l
+2011_09_26/2011_09_26_drive_0028_sync 225 l
+2011_09_30/2011_09_30_drive_0028_sync 4429 l
+2011_09_30/2011_09_30_drive_0034_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 694 r
+2011_09_30/2011_09_30_drive_0033_sync 418 r
+2011_10_03/2011_10_03_drive_0042_sync 596 l
+2011_09_30/2011_09_30_drive_0028_sync 3981 r
+2011_09_26/2011_09_26_drive_0039_sync 344 r
+2011_09_30/2011_09_30_drive_0034_sync 1153 r
+2011_09_30/2011_09_30_drive_0033_sync 1349 l
+2011_09_26/2011_09_26_drive_0014_sync 284 r
+2011_09_26/2011_09_26_drive_0028_sync 208 r
+2011_09_26/2011_09_26_drive_0032_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 1046 l
+2011_09_26/2011_09_26_drive_0095_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 439 r
+2011_09_26/2011_09_26_drive_0104_sync 161 r
+2011_09_26/2011_09_26_drive_0051_sync 165 r
+2011_09_26/2011_09_26_drive_0039_sync 25 r
+2011_09_30/2011_09_30_drive_0033_sync 715 r
+2011_10_03/2011_10_03_drive_0034_sync 1973 l
+2011_09_30/2011_09_30_drive_0028_sync 3744 r
+2011_09_30/2011_09_30_drive_0033_sync 1450 l
+2011_09_30/2011_09_30_drive_0028_sync 4685 l
+2011_09_29/2011_09_29_drive_0004_sync 285 l
+2011_09_30/2011_09_30_drive_0028_sync 2837 l
+2011_09_30/2011_09_30_drive_0028_sync 4551 r
+2011_10_03/2011_10_03_drive_0034_sync 1329 r
+2011_09_26/2011_09_26_drive_0022_sync 171 r
+2011_09_26/2011_09_26_drive_0032_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 183 r
+2011_09_26/2011_09_26_drive_0011_sync 69 l
+2011_09_26/2011_09_26_drive_0019_sync 424 r
+2011_10_03/2011_10_03_drive_0042_sync 643 r
+2011_09_26/2011_09_26_drive_0032_sync 336 r
+2011_09_30/2011_09_30_drive_0034_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 2021 l
+2011_10_03/2011_10_03_drive_0034_sync 3971 l
+2011_09_29/2011_09_29_drive_0004_sync 307 l
+2011_10_03/2011_10_03_drive_0034_sync 4620 r
+2011_09_30/2011_09_30_drive_0033_sync 1464 r
+2011_09_30/2011_09_30_drive_0028_sync 939 r
+2011_09_26/2011_09_26_drive_0104_sync 117 l
+2011_09_26/2011_09_26_drive_0011_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 4353 l
+2011_09_26/2011_09_26_drive_0057_sync 176 l
+2011_09_30/2011_09_30_drive_0028_sync 5049 r
+2011_09_26/2011_09_26_drive_0014_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 2562 l
+2011_09_26/2011_09_26_drive_0087_sync 262 r
+2011_09_29/2011_09_29_drive_0004_sync 136 l
+2011_09_26/2011_09_26_drive_0022_sync 250 l
+2011_09_26/2011_09_26_drive_0032_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 2186 l
+2011_10_03/2011_10_03_drive_0034_sync 3998 l
+2011_09_30/2011_09_30_drive_0028_sync 2740 l
+2011_09_26/2011_09_26_drive_0070_sync 330 r
+2011_10_03/2011_10_03_drive_0034_sync 498 r
+2011_09_30/2011_09_30_drive_0028_sync 640 r
+2011_09_30/2011_09_30_drive_0033_sync 1158 r
+2011_09_26/2011_09_26_drive_0061_sync 66 l
+2011_09_26/2011_09_26_drive_0051_sync 214 l
+2011_09_26/2011_09_26_drive_0019_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 3849 l
+2011_09_30/2011_09_30_drive_0028_sync 3355 r
+2011_09_30/2011_09_30_drive_0028_sync 4382 r
+2011_10_03/2011_10_03_drive_0042_sync 547 r
+2011_09_30/2011_09_30_drive_0033_sync 1413 l
+2011_09_30/2011_09_30_drive_0028_sync 4648 l
+2011_10_03/2011_10_03_drive_0034_sync 2071 l
+2011_09_26/2011_09_26_drive_0022_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 3258 r
+2011_09_30/2011_09_30_drive_0028_sync 1635 l
+2011_09_26/2011_09_26_drive_0015_sync 263 l
+2011_10_03/2011_10_03_drive_0034_sync 3474 r
+2011_09_30/2011_09_30_drive_0034_sync 854 r
+2011_09_30/2011_09_30_drive_0028_sync 4981 l
+2011_10_03/2011_10_03_drive_0034_sync 4640 r
+2011_09_30/2011_09_30_drive_0028_sync 154 r
+2011_09_26/2011_09_26_drive_0011_sync 11 l
+2011_09_30/2011_09_30_drive_0020_sync 525 r
+2011_09_26/2011_09_26_drive_0039_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 3286 r
+2011_09_30/2011_09_30_drive_0028_sync 2472 l
+2011_09_26/2011_09_26_drive_0019_sync 287 l
+2011_10_03/2011_10_03_drive_0034_sync 1502 r
+2011_10_03/2011_10_03_drive_0034_sync 1413 r
+2011_09_26/2011_09_26_drive_0019_sync 129 l
+2011_09_30/2011_09_30_drive_0033_sync 688 l
+2011_09_30/2011_09_30_drive_0028_sync 3165 r
+2011_10_03/2011_10_03_drive_0034_sync 60 l
+2011_09_26/2011_09_26_drive_0091_sync 138 l
+2011_09_26/2011_09_26_drive_0113_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 3643 r
+2011_09_26/2011_09_26_drive_0087_sync 241 r
+2011_09_26/2011_09_26_drive_0022_sync 532 l
+2011_10_03/2011_10_03_drive_0034_sync 2933 l
+2011_09_30/2011_09_30_drive_0028_sync 962 r
+2011_09_26/2011_09_26_drive_0070_sync 123 l
+2011_09_29/2011_09_29_drive_0004_sync 74 l
+2011_09_26/2011_09_26_drive_0091_sync 319 l
+2011_09_30/2011_09_30_drive_0028_sync 1155 r
+2011_09_30/2011_09_30_drive_0033_sync 1323 l
+2011_09_26/2011_09_26_drive_0014_sync 56 l
+2011_09_26/2011_09_26_drive_0095_sync 69 r
+2011_09_30/2011_09_30_drive_0020_sync 16 l
+2011_09_30/2011_09_30_drive_0020_sync 106 r
+2011_10_03/2011_10_03_drive_0042_sync 15 l
+2011_10_03/2011_10_03_drive_0034_sync 2393 r
+2011_09_30/2011_09_30_drive_0033_sync 173 l
+2011_09_26/2011_09_26_drive_0061_sync 604 l
+2011_09_30/2011_09_30_drive_0034_sync 255 r
+2011_09_26/2011_09_26_drive_0022_sync 457 r
+2011_09_26/2011_09_26_drive_0061_sync 478 r
+2011_10_03/2011_10_03_drive_0034_sync 3429 r
+2011_09_26/2011_09_26_drive_0079_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 3220 r
+2011_09_30/2011_09_30_drive_0034_sync 1006 l
+2011_10_03/2011_10_03_drive_0034_sync 97 l
+2011_10_03/2011_10_03_drive_0042_sync 849 l
+2011_09_30/2011_09_30_drive_0028_sync 299 r
+2011_09_30/2011_09_30_drive_0034_sync 410 l
+2011_10_03/2011_10_03_drive_0042_sync 532 r
+2011_09_30/2011_09_30_drive_0028_sync 4459 l
+2011_10_03/2011_10_03_drive_0034_sync 1676 l
+2011_09_26/2011_09_26_drive_0057_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 1729 l
+2011_10_03/2011_10_03_drive_0034_sync 4641 l
+2011_09_30/2011_09_30_drive_0028_sync 893 r
+2011_10_03/2011_10_03_drive_0034_sync 2848 l
+2011_10_03/2011_10_03_drive_0034_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 3793 l
+2011_09_26/2011_09_26_drive_0019_sync 462 l
+2011_09_26/2011_09_26_drive_0005_sync 146 r
+2011_09_26/2011_09_26_drive_0017_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 3621 l
+2011_09_26/2011_09_26_drive_0095_sync 263 r
+2011_09_30/2011_09_30_drive_0033_sync 405 r
+2011_09_30/2011_09_30_drive_0028_sync 322 l
+2011_09_30/2011_09_30_drive_0028_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 4190 r
+2011_09_30/2011_09_30_drive_0028_sync 1548 l
+2011_09_26/2011_09_26_drive_0113_sync 61 r
+2011_09_29/2011_09_29_drive_0026_sync 101 r
+2011_09_30/2011_09_30_drive_0028_sync 245 l
+2011_09_26/2011_09_26_drive_0019_sync 204 r
+2011_09_30/2011_09_30_drive_0020_sync 458 l
+2011_09_26/2011_09_26_drive_0039_sync 390 l
+2011_09_30/2011_09_30_drive_0034_sync 903 r
+2011_09_30/2011_09_30_drive_0028_sync 2870 l
+2011_09_30/2011_09_30_drive_0020_sync 152 r
+2011_10_03/2011_10_03_drive_0042_sync 743 l
+2011_10_03/2011_10_03_drive_0042_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 4420 l
+2011_10_03/2011_10_03_drive_0042_sync 901 l
+2011_10_03/2011_10_03_drive_0034_sync 1618 l
+2011_09_30/2011_09_30_drive_0034_sync 499 l
+2011_09_26/2011_09_26_drive_0017_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 1746 l
+2011_09_26/2011_09_26_drive_0022_sync 387 r
+2011_09_26/2011_09_26_drive_0019_sync 338 l
+2011_09_26/2011_09_26_drive_0104_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 4062 l
+2011_09_26/2011_09_26_drive_0061_sync 405 r
+2011_09_26/2011_09_26_drive_0051_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 4195 l
+2011_09_26/2011_09_26_drive_0035_sync 63 l
+2011_09_26/2011_09_26_drive_0051_sync 164 l
+2011_09_26/2011_09_26_drive_0014_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 447 r
+2011_09_30/2011_09_30_drive_0028_sync 77 l
+2011_09_26/2011_09_26_drive_0061_sync 34 l
+2011_09_30/2011_09_30_drive_0034_sync 1127 r
+2011_09_30/2011_09_30_drive_0034_sync 839 l
+2011_09_29/2011_09_29_drive_0004_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 1396 l
+2011_10_03/2011_10_03_drive_0034_sync 2869 l
+2011_10_03/2011_10_03_drive_0042_sync 158 r
+2011_09_30/2011_09_30_drive_0028_sync 1520 r
+2011_09_30/2011_09_30_drive_0028_sync 3551 r
+2011_09_30/2011_09_30_drive_0028_sync 265 l
+2011_09_30/2011_09_30_drive_0028_sync 2603 l
+2011_10_03/2011_10_03_drive_0034_sync 3370 l
+2011_09_26/2011_09_26_drive_0095_sync 120 r
+2011_10_03/2011_10_03_drive_0034_sync 3945 l
+2011_10_03/2011_10_03_drive_0034_sync 1282 l
+2011_09_30/2011_09_30_drive_0034_sync 75 r
+2011_09_26/2011_09_26_drive_0104_sync 245 r
+2011_09_30/2011_09_30_drive_0020_sync 737 r
+2011_09_30/2011_09_30_drive_0028_sync 1862 r
+2011_10_03/2011_10_03_drive_0034_sync 1750 l
+2011_09_30/2011_09_30_drive_0028_sync 1719 r
+2011_09_26/2011_09_26_drive_0028_sync 347 r
+2011_09_26/2011_09_26_drive_0087_sync 366 r
+2011_10_03/2011_10_03_drive_0034_sync 4041 l
+2011_09_26/2011_09_26_drive_0087_sync 498 r
+2011_10_03/2011_10_03_drive_0042_sync 584 r
+2011_09_26/2011_09_26_drive_0028_sync 250 l
+2011_09_30/2011_09_30_drive_0034_sync 372 r
+2011_09_30/2011_09_30_drive_0034_sync 261 l
+2011_09_26/2011_09_26_drive_0019_sync 58 l
+2011_09_26/2011_09_26_drive_0014_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 2845 l
+2011_09_26/2011_09_26_drive_0070_sync 169 r
+2011_09_26/2011_09_26_drive_0087_sync 706 r
+2011_09_30/2011_09_30_drive_0034_sync 390 r
+2011_09_26/2011_09_26_drive_0014_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 2636 r
+2011_09_30/2011_09_30_drive_0033_sync 1471 r
+2011_09_26/2011_09_26_drive_0022_sync 533 r
+2011_09_26/2011_09_26_drive_0022_sync 799 r
+2011_09_26/2011_09_26_drive_0022_sync 501 l
+2011_09_30/2011_09_30_drive_0028_sync 3997 l
+2011_09_30/2011_09_30_drive_0033_sync 505 l
+2011_09_26/2011_09_26_drive_0019_sync 243 r
+2011_10_03/2011_10_03_drive_0034_sync 4639 r
+2011_09_30/2011_09_30_drive_0028_sync 4307 r
+2011_09_30/2011_09_30_drive_0020_sync 882 r
+2011_09_26/2011_09_26_drive_0019_sync 179 r
+2011_09_30/2011_09_30_drive_0028_sync 3186 r
+2011_10_03/2011_10_03_drive_0034_sync 4295 l
+2011_09_26/2011_09_26_drive_0070_sync 172 r
+2011_10_03/2011_10_03_drive_0042_sync 867 r
+2011_10_03/2011_10_03_drive_0034_sync 4070 l
+2011_10_03/2011_10_03_drive_0034_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 1250 l
+2011_09_26/2011_09_26_drive_0051_sync 199 l
+2011_09_26/2011_09_26_drive_0022_sync 628 l
+2011_09_30/2011_09_30_drive_0028_sync 1587 r
+2011_09_29/2011_09_29_drive_0026_sync 120 r
+2011_09_26/2011_09_26_drive_0017_sync 107 r
+2011_09_30/2011_09_30_drive_0033_sync 326 r
+2011_09_26/2011_09_26_drive_0079_sync 33 l
+2011_09_26/2011_09_26_drive_0091_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 3796 r
+2011_09_26/2011_09_26_drive_0061_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 2646 l
+2011_09_26/2011_09_26_drive_0039_sync 118 r
+2011_09_26/2011_09_26_drive_0051_sync 421 r
+2011_09_26/2011_09_26_drive_0017_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 1890 r
+2011_09_26/2011_09_26_drive_0051_sync 282 l
+2011_09_26/2011_09_26_drive_0019_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 719 r
+2011_09_30/2011_09_30_drive_0028_sync 3021 l
+2011_09_30/2011_09_30_drive_0034_sync 363 r
+2011_10_03/2011_10_03_drive_0034_sync 1275 l
+2011_09_30/2011_09_30_drive_0020_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 3021 l
+2011_09_26/2011_09_26_drive_0022_sync 509 r
+2011_09_30/2011_09_30_drive_0028_sync 1995 r
+2011_09_30/2011_09_30_drive_0028_sync 859 r
+2011_09_30/2011_09_30_drive_0020_sync 23 l
+2011_10_03/2011_10_03_drive_0034_sync 2801 r
+2011_09_26/2011_09_26_drive_0028_sync 281 l
+2011_10_03/2011_10_03_drive_0034_sync 1233 l
+2011_09_28/2011_09_28_drive_0001_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 255 l
+2011_09_26/2011_09_26_drive_0091_sync 137 r
+2011_09_26/2011_09_26_drive_0019_sync 391 l
+2011_09_26/2011_09_26_drive_0095_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 2817 l
+2011_09_30/2011_09_30_drive_0028_sync 0 l
+2011_09_26/2011_09_26_drive_0039_sync 384 r
+2011_09_30/2011_09_30_drive_0034_sync 468 r
+2011_09_26/2011_09_26_drive_0015_sync 272 l
+2011_09_30/2011_09_30_drive_0033_sync 1294 r
+2011_10_03/2011_10_03_drive_0034_sync 3599 l
+2011_09_30/2011_09_30_drive_0034_sync 670 l
+2011_09_26/2011_09_26_drive_0070_sync 39 r
+2011_09_26/2011_09_26_drive_0070_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 2423 l
+2011_09_30/2011_09_30_drive_0028_sync 2297 l
+2011_09_30/2011_09_30_drive_0028_sync 2488 r
+2011_10_03/2011_10_03_drive_0042_sync 135 r
+2011_09_28/2011_09_28_drive_0001_sync 25 l
+2011_09_30/2011_09_30_drive_0033_sync 1487 r
+2011_09_26/2011_09_26_drive_0087_sync 367 r
+2011_09_26/2011_09_26_drive_0061_sync 412 l
+2011_09_26/2011_09_26_drive_0087_sync 701 l
+2011_10_03/2011_10_03_drive_0034_sync 3672 r
+2011_09_26/2011_09_26_drive_0019_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 2317 l
+2011_09_26/2011_09_26_drive_0018_sync 23 l
+2011_09_26/2011_09_26_drive_0051_sync 169 l
+2011_09_30/2011_09_30_drive_0028_sync 3781 r
+2011_09_30/2011_09_30_drive_0028_sync 508 r
+2011_09_26/2011_09_26_drive_0028_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 294 l
+2011_09_26/2011_09_26_drive_0015_sync 56 l
+2011_09_26/2011_09_26_drive_0015_sync 187 l
+2011_09_26/2011_09_26_drive_0019_sync 26 l
+2011_09_26/2011_09_26_drive_0051_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 2061 r
+2011_10_03/2011_10_03_drive_0034_sync 415 l
+2011_09_26/2011_09_26_drive_0095_sync 250 l
+2011_09_30/2011_09_30_drive_0033_sync 580 r
+2011_09_26/2011_09_26_drive_0091_sync 290 r
+2011_10_03/2011_10_03_drive_0034_sync 4435 l
+2011_09_28/2011_09_28_drive_0001_sync 24 l
+2011_09_26/2011_09_26_drive_0019_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 3568 l
+2011_09_30/2011_09_30_drive_0033_sync 454 r
+2011_09_30/2011_09_30_drive_0033_sync 650 l
+2011_09_26/2011_09_26_drive_0070_sync 57 r
+2011_10_03/2011_10_03_drive_0042_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 1774 l
+2011_09_30/2011_09_30_drive_0034_sync 210 l
+2011_10_03/2011_10_03_drive_0034_sync 4105 l
+2011_09_26/2011_09_26_drive_0019_sync 389 r
+2011_09_26/2011_09_26_drive_0039_sync 83 r
+2011_09_26/2011_09_26_drive_0087_sync 406 r
+2011_09_30/2011_09_30_drive_0028_sync 1120 l
+2011_10_03/2011_10_03_drive_0034_sync 2239 l
+2011_09_26/2011_09_26_drive_0087_sync 78 l
+2011_10_03/2011_10_03_drive_0034_sync 4479 l
+2011_09_30/2011_09_30_drive_0020_sync 12 l
+2011_09_26/2011_09_26_drive_0061_sync 639 l
+2011_09_30/2011_09_30_drive_0028_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 4467 l
+2011_09_30/2011_09_30_drive_0033_sync 493 r
+2011_09_26/2011_09_26_drive_0014_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 3787 r
+2011_09_26/2011_09_26_drive_0051_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 4634 l
+2011_09_30/2011_09_30_drive_0028_sync 47 r
+2011_10_03/2011_10_03_drive_0042_sync 750 r
+2011_09_30/2011_09_30_drive_0028_sync 4690 r
+2011_09_26/2011_09_26_drive_0011_sync 159 r
+2011_09_30/2011_09_30_drive_0033_sync 487 r
+2011_10_03/2011_10_03_drive_0034_sync 3283 l
+2011_10_03/2011_10_03_drive_0034_sync 458 l
+2011_09_30/2011_09_30_drive_0028_sync 3529 l
+2011_09_26/2011_09_26_drive_0011_sync 118 r
+2011_09_30/2011_09_30_drive_0034_sync 1219 l
+2011_09_30/2011_09_30_drive_0033_sync 117 l
+2011_10_03/2011_10_03_drive_0034_sync 1099 l
+2011_09_26/2011_09_26_drive_0087_sync 14 l
+2011_10_03/2011_10_03_drive_0042_sync 1139 r
+2011_10_03/2011_10_03_drive_0042_sync 597 l
+2011_10_03/2011_10_03_drive_0034_sync 4316 r
+2011_09_26/2011_09_26_drive_0051_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 3787 l
+2011_09_26/2011_09_26_drive_0087_sync 531 l
+2011_09_30/2011_09_30_drive_0028_sync 855 r
+2011_10_03/2011_10_03_drive_0034_sync 3920 l
+2011_09_30/2011_09_30_drive_0020_sync 938 l
+2011_10_03/2011_10_03_drive_0034_sync 517 r
+2011_09_26/2011_09_26_drive_0015_sync 140 l
+2011_10_03/2011_10_03_drive_0042_sync 259 l
+2011_09_26/2011_09_26_drive_0032_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 4277 l
+2011_10_03/2011_10_03_drive_0034_sync 1914 r
+2011_09_26/2011_09_26_drive_0011_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 2601 r
+2011_10_03/2011_10_03_drive_0042_sync 250 l
+2011_10_03/2011_10_03_drive_0034_sync 3350 l
+2011_09_30/2011_09_30_drive_0034_sync 0 r
+2011_09_30/2011_09_30_drive_0033_sync 560 r
+2011_09_26/2011_09_26_drive_0070_sync 261 r
+2011_09_26/2011_09_26_drive_0087_sync 360 l
+2011_09_26/2011_09_26_drive_0022_sync 653 r
+2011_09_26/2011_09_26_drive_0061_sync 398 r
+2011_09_30/2011_09_30_drive_0028_sync 4367 l
+2011_10_03/2011_10_03_drive_0034_sync 202 r
+2011_09_30/2011_09_30_drive_0033_sync 685 r
+2011_09_30/2011_09_30_drive_0034_sync 1104 l
+2011_09_30/2011_09_30_drive_0028_sync 5087 l
+2011_10_03/2011_10_03_drive_0034_sync 848 r
+2011_09_30/2011_09_30_drive_0028_sync 1384 l
+2011_09_30/2011_09_30_drive_0020_sync 566 l
+2011_09_26/2011_09_26_drive_0022_sync 665 l
+2011_10_03/2011_10_03_drive_0042_sync 354 l
+2011_09_26/2011_09_26_drive_0014_sync 156 l
+2011_09_26/2011_09_26_drive_0039_sync 54 l
+2011_10_03/2011_10_03_drive_0034_sync 3078 r
+2011_09_26/2011_09_26_drive_0014_sync 31 r
+2011_09_26/2011_09_26_drive_0011_sync 203 l
+2011_09_30/2011_09_30_drive_0028_sync 482 l
+2011_09_26/2011_09_26_drive_0057_sync 341 r
+2011_10_03/2011_10_03_drive_0034_sync 1419 l
+2011_09_26/2011_09_26_drive_0005_sync 35 r
+2011_09_26/2011_09_26_drive_0070_sync 188 r
+2011_09_26/2011_09_26_drive_0015_sync 83 l
+2011_09_26/2011_09_26_drive_0014_sync 292 r
+2011_09_26/2011_09_26_drive_0051_sync 128 r
+2011_10_03/2011_10_03_drive_0034_sync 888 l
+2011_09_30/2011_09_30_drive_0028_sync 3203 r
+2011_09_30/2011_09_30_drive_0020_sync 304 r
+2011_10_03/2011_10_03_drive_0034_sync 1365 l
+2011_10_03/2011_10_03_drive_0034_sync 2024 l
+2011_09_30/2011_09_30_drive_0028_sync 2820 r
+2011_09_30/2011_09_30_drive_0028_sync 3492 r
+2011_09_30/2011_09_30_drive_0028_sync 2666 l
+2011_09_26/2011_09_26_drive_0015_sync 103 r
+2011_09_26/2011_09_26_drive_0070_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 4067 r
+2011_09_30/2011_09_30_drive_0028_sync 1424 r
+2011_10_03/2011_10_03_drive_0034_sync 3334 r
+2011_10_03/2011_10_03_drive_0034_sync 938 l
+2011_09_30/2011_09_30_drive_0034_sync 645 l
+2011_09_26/2011_09_26_drive_0022_sync 375 r
+2011_09_26/2011_09_26_drive_0095_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 3263 r
+2011_10_03/2011_10_03_drive_0034_sync 932 l
+2011_09_30/2011_09_30_drive_0033_sync 332 r
+2011_09_30/2011_09_30_drive_0028_sync 3791 l
+2011_10_03/2011_10_03_drive_0034_sync 2040 r
+2011_10_03/2011_10_03_drive_0042_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 2878 r
+2011_10_03/2011_10_03_drive_0034_sync 267 l
+2011_09_30/2011_09_30_drive_0034_sync 249 r
+2011_09_29/2011_09_29_drive_0004_sync 58 l
+2011_09_30/2011_09_30_drive_0034_sync 269 l
+2011_09_29/2011_09_29_drive_0004_sync 292 l
+2011_09_30/2011_09_30_drive_0033_sync 1006 l
+2011_09_30/2011_09_30_drive_0020_sync 843 r
+2011_10_03/2011_10_03_drive_0042_sync 1086 r
+2011_09_26/2011_09_26_drive_0087_sync 488 r
+2011_09_30/2011_09_30_drive_0028_sync 3833 l
+2011_09_30/2011_09_30_drive_0028_sync 2307 l
+2011_09_30/2011_09_30_drive_0028_sync 3496 r
+2011_10_03/2011_10_03_drive_0034_sync 2159 l
+2011_09_28/2011_09_28_drive_0001_sync 67 l
+2011_09_30/2011_09_30_drive_0020_sync 3 l
+2011_09_29/2011_09_29_drive_0004_sync 333 r
+2011_09_26/2011_09_26_drive_0014_sync 32 r
+2011_09_30/2011_09_30_drive_0028_sync 4695 r
+2011_10_03/2011_10_03_drive_0042_sync 453 r
+2011_10_03/2011_10_03_drive_0034_sync 2469 l
+2011_10_03/2011_10_03_drive_0034_sync 3027 l
+2011_09_26/2011_09_26_drive_0061_sync 565 l
+2011_09_30/2011_09_30_drive_0034_sync 664 l
+2011_09_26/2011_09_26_drive_0028_sync 34 r
+2011_09_30/2011_09_30_drive_0033_sync 236 l
+2011_09_26/2011_09_26_drive_0070_sync 55 r
+2011_09_30/2011_09_30_drive_0020_sync 69 r
+2011_09_26/2011_09_26_drive_0104_sync 143 r
+2011_09_26/2011_09_26_drive_0019_sync 389 l
+2011_09_26/2011_09_26_drive_0087_sync 279 l
+2011_09_30/2011_09_30_drive_0033_sync 1196 r
+2011_10_03/2011_10_03_drive_0042_sync 873 l
+2011_10_03/2011_10_03_drive_0034_sync 144 r
+2011_09_30/2011_09_30_drive_0028_sync 5089 l
+2011_09_30/2011_09_30_drive_0028_sync 498 r
+2011_09_26/2011_09_26_drive_0014_sync 288 r
+2011_09_26/2011_09_26_drive_0001_sync 12 l
+2011_09_26/2011_09_26_drive_0104_sync 311 r
+2011_09_26/2011_09_26_drive_0035_sync 34 r
+2011_09_26/2011_09_26_drive_0061_sync 390 r
+2011_09_30/2011_09_30_drive_0033_sync 1283 l
+2011_10_03/2011_10_03_drive_0042_sync 457 r
+2011_09_26/2011_09_26_drive_0015_sync 182 l
+2011_09_26/2011_09_26_drive_0087_sync 176 r
+2011_09_26/2011_09_26_drive_0019_sync 163 l
+2011_09_26/2011_09_26_drive_0104_sync 112 r
+2011_10_03/2011_10_03_drive_0042_sync 340 l
+2011_09_30/2011_09_30_drive_0028_sync 4654 l
+2011_09_26/2011_09_26_drive_0015_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 2691 r
+2011_09_30/2011_09_30_drive_0028_sync 712 r
+2011_09_30/2011_09_30_drive_0020_sync 1099 l
+2011_09_30/2011_09_30_drive_0028_sync 4468 l
+2011_10_03/2011_10_03_drive_0034_sync 3371 r
+2011_10_03/2011_10_03_drive_0034_sync 3304 l
+2011_09_26/2011_09_26_drive_0017_sync 59 l
+2011_09_26/2011_09_26_drive_0057_sync 59 r
+2011_09_26/2011_09_26_drive_0051_sync 405 r
+2011_09_30/2011_09_30_drive_0034_sync 499 r
+2011_09_30/2011_09_30_drive_0033_sync 5 r
+2011_10_03/2011_10_03_drive_0034_sync 2450 r
+2011_09_30/2011_09_30_drive_0028_sync 4597 r
+2011_09_30/2011_09_30_drive_0020_sync 265 l
+2011_09_26/2011_09_26_drive_0039_sync 208 l
+2011_09_26/2011_09_26_drive_0022_sync 677 l
+2011_09_30/2011_09_30_drive_0028_sync 315 l
+2011_09_26/2011_09_26_drive_0087_sync 497 r
+2011_10_03/2011_10_03_drive_0034_sync 1908 l
+2011_09_26/2011_09_26_drive_0022_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 719 l
+2011_09_30/2011_09_30_drive_0034_sync 1150 r
+2011_09_30/2011_09_30_drive_0020_sync 283 l
+2011_09_26/2011_09_26_drive_0070_sync 374 r
+2011_10_03/2011_10_03_drive_0034_sync 2829 r
+2011_09_30/2011_09_30_drive_0028_sync 1958 l
+2011_09_30/2011_09_30_drive_0034_sync 80 l
+2011_09_26/2011_09_26_drive_0104_sync 250 l
+2011_09_30/2011_09_30_drive_0020_sync 143 r
+2011_10_03/2011_10_03_drive_0034_sync 1488 r
+2011_09_26/2011_09_26_drive_0061_sync 450 l
+2011_10_03/2011_10_03_drive_0034_sync 3444 r
+2011_09_30/2011_09_30_drive_0028_sync 696 r
+2011_09_30/2011_09_30_drive_0028_sync 991 l
+2011_09_26/2011_09_26_drive_0039_sync 271 r
+2011_09_30/2011_09_30_drive_0033_sync 1563 l
+2011_09_26/2011_09_26_drive_0022_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 2433 l
+2011_09_30/2011_09_30_drive_0028_sync 3632 r
+2011_10_03/2011_10_03_drive_0042_sync 872 r
+2011_10_03/2011_10_03_drive_0042_sync 894 r
+2011_09_30/2011_09_30_drive_0033_sync 120 r
+2011_09_30/2011_09_30_drive_0028_sync 4945 l
+2011_09_26/2011_09_26_drive_0028_sync 373 r
+2011_09_26/2011_09_26_drive_0061_sync 499 l
+2011_10_03/2011_10_03_drive_0034_sync 2596 r
+2011_09_30/2011_09_30_drive_0028_sync 4780 l
+2011_09_26/2011_09_26_drive_0087_sync 433 r
+2011_09_30/2011_09_30_drive_0028_sync 4091 l
+2011_09_26/2011_09_26_drive_0014_sync 76 l
+2011_10_03/2011_10_03_drive_0034_sync 3651 r
+2011_09_26/2011_09_26_drive_0019_sync 357 l
+2011_09_30/2011_09_30_drive_0028_sync 5041 l
+2011_09_26/2011_09_26_drive_0032_sync 379 r
+2011_09_30/2011_09_30_drive_0028_sync 3441 l
+2011_09_26/2011_09_26_drive_0061_sync 364 l
+2011_09_26/2011_09_26_drive_0087_sync 65 l
+2011_09_30/2011_09_30_drive_0034_sync 39 l
+2011_09_26/2011_09_26_drive_0091_sync 307 l
+2011_09_30/2011_09_30_drive_0028_sync 2498 l
+2011_09_26/2011_09_26_drive_0095_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 2356 l
+2011_09_30/2011_09_30_drive_0028_sync 4600 l
+2011_10_03/2011_10_03_drive_0034_sync 1735 l
+2011_09_26/2011_09_26_drive_0019_sync 419 l
+2011_09_26/2011_09_26_drive_0057_sync 186 l
+2011_09_26/2011_09_26_drive_0005_sync 70 l
+2011_09_30/2011_09_30_drive_0028_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 2620 l
+2011_09_26/2011_09_26_drive_0022_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 1832 r
+2011_10_03/2011_10_03_drive_0034_sync 2314 r
+2011_09_30/2011_09_30_drive_0028_sync 3896 l
+2011_09_26/2011_09_26_drive_0070_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 4971 r
+2011_09_26/2011_09_26_drive_0079_sync 94 r
+2011_10_03/2011_10_03_drive_0034_sync 1079 l
+2011_09_30/2011_09_30_drive_0034_sync 1137 r
+2011_09_30/2011_09_30_drive_0028_sync 4529 r
+2011_09_26/2011_09_26_drive_0032_sync 375 r
+2011_09_30/2011_09_30_drive_0034_sync 884 l
+2011_09_26/2011_09_26_drive_0095_sync 14 l
+2011_09_26/2011_09_26_drive_0022_sync 762 l
+2011_09_30/2011_09_30_drive_0028_sync 2053 l
+2011_10_03/2011_10_03_drive_0034_sync 193 r
+2011_09_26/2011_09_26_drive_0057_sync 20 r
+2011_09_26/2011_09_26_drive_0011_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 3108 l
+2011_09_26/2011_09_26_drive_0051_sync 435 r
+2011_10_03/2011_10_03_drive_0034_sync 612 r
+2011_10_03/2011_10_03_drive_0034_sync 911 l
+2011_10_03/2011_10_03_drive_0034_sync 3057 r
+2011_10_03/2011_10_03_drive_0034_sync 3580 l
+2011_10_03/2011_10_03_drive_0042_sync 1164 r
+2011_09_26/2011_09_26_drive_0022_sync 140 l
+2011_09_30/2011_09_30_drive_0033_sync 1166 l
+2011_09_26/2011_09_26_drive_0011_sync 141 l
+2011_09_26/2011_09_26_drive_0070_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 4557 l
+2011_10_03/2011_10_03_drive_0042_sync 723 r
+2011_09_26/2011_09_26_drive_0019_sync 156 l
+2011_09_26/2011_09_26_drive_0005_sync 127 r
+2011_09_26/2011_09_26_drive_0091_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 4137 l
+2011_09_26/2011_09_26_drive_0057_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 3423 r
+2011_09_30/2011_09_30_drive_0028_sync 2392 r
+2011_09_30/2011_09_30_drive_0028_sync 4758 l
+2011_10_03/2011_10_03_drive_0034_sync 895 r
+2011_09_26/2011_09_26_drive_0087_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 2365 r
+2011_09_30/2011_09_30_drive_0033_sync 556 r
+2011_09_26/2011_09_26_drive_0005_sync 90 r
+2011_10_03/2011_10_03_drive_0042_sync 62 l
+2011_10_03/2011_10_03_drive_0042_sync 103 r
+2011_09_30/2011_09_30_drive_0033_sync 210 l
+2011_09_26/2011_09_26_drive_0087_sync 727 l
+2011_09_28/2011_09_28_drive_0001_sync 23 l
+2011_09_26/2011_09_26_drive_0070_sync 165 l
+2011_10_03/2011_10_03_drive_0042_sync 23 l
+2011_09_30/2011_09_30_drive_0028_sync 3501 r
+2011_09_26/2011_09_26_drive_0087_sync 204 r
+2011_09_26/2011_09_26_drive_0015_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 3369 l
+2011_10_03/2011_10_03_drive_0034_sync 3500 r
+2011_09_30/2011_09_30_drive_0028_sync 3556 r
+2011_09_26/2011_09_26_drive_0051_sync 188 r
+2011_10_03/2011_10_03_drive_0042_sync 1131 r
+2011_09_30/2011_09_30_drive_0020_sync 300 l
+2011_09_26/2011_09_26_drive_0061_sync 158 r
+2011_09_26/2011_09_26_drive_0070_sync 134 l
+2011_09_26/2011_09_26_drive_0032_sync 346 l
+2011_09_30/2011_09_30_drive_0034_sync 1110 l
+2011_10_03/2011_10_03_drive_0034_sync 3538 l
+2011_10_03/2011_10_03_drive_0034_sync 4112 l
+2011_09_30/2011_09_30_drive_0028_sync 937 l
+2011_09_30/2011_09_30_drive_0028_sync 4196 r
+2011_09_30/2011_09_30_drive_0028_sync 272 r
+2011_09_26/2011_09_26_drive_0087_sync 26 r
+2011_09_30/2011_09_30_drive_0033_sync 981 r
+2011_10_03/2011_10_03_drive_0034_sync 2395 r
+2011_10_03/2011_10_03_drive_0034_sync 1341 r
+2011_10_03/2011_10_03_drive_0034_sync 1625 r
+2011_09_26/2011_09_26_drive_0028_sync 357 r
+2011_09_30/2011_09_30_drive_0028_sync 2839 l
+2011_09_26/2011_09_26_drive_0057_sync 92 l
+2011_09_26/2011_09_26_drive_0032_sync 263 l
+2011_09_30/2011_09_30_drive_0033_sync 903 l
+2011_09_30/2011_09_30_drive_0028_sync 4809 r
+2011_10_03/2011_10_03_drive_0034_sync 941 r
+2011_09_30/2011_09_30_drive_0020_sync 855 l
+2011_09_30/2011_09_30_drive_0033_sync 1024 r
+2011_09_26/2011_09_26_drive_0039_sync 364 l
+2011_09_26/2011_09_26_drive_0061_sync 641 r
+2011_09_30/2011_09_30_drive_0028_sync 1648 l
+2011_09_26/2011_09_26_drive_0095_sync 92 r
+2011_09_26/2011_09_26_drive_0014_sync 10 r
+2011_09_30/2011_09_30_drive_0033_sync 1104 r
+2011_09_30/2011_09_30_drive_0033_sync 796 l
+2011_09_30/2011_09_30_drive_0028_sync 3525 l
+2011_09_26/2011_09_26_drive_0057_sync 278 r
+2011_09_26/2011_09_26_drive_0019_sync 460 r
+2011_09_30/2011_09_30_drive_0033_sync 704 r
+2011_09_26/2011_09_26_drive_0070_sync 171 r
+2011_09_30/2011_09_30_drive_0033_sync 1323 r
+2011_09_26/2011_09_26_drive_0087_sync 415 r
+2011_10_03/2011_10_03_drive_0034_sync 3076 l
+2011_09_30/2011_09_30_drive_0020_sync 1023 r
+2011_09_30/2011_09_30_drive_0028_sync 4143 r
+2011_10_03/2011_10_03_drive_0042_sync 741 r
+2011_09_30/2011_09_30_drive_0028_sync 1910 l
+2011_09_26/2011_09_26_drive_0060_sync 21 l
+2011_09_26/2011_09_26_drive_0039_sync 290 r
+2011_09_26/2011_09_26_drive_0061_sync 80 l
+2011_09_30/2011_09_30_drive_0034_sync 309 r
+2011_09_26/2011_09_26_drive_0061_sync 407 r
+2011_09_26/2011_09_26_drive_0061_sync 92 r
+2011_09_30/2011_09_30_drive_0020_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 2467 l
+2011_09_26/2011_09_26_drive_0087_sync 116 r
+2011_09_30/2011_09_30_drive_0028_sync 4718 l
+2011_10_03/2011_10_03_drive_0042_sync 561 r
+2011_09_30/2011_09_30_drive_0034_sync 698 l
+2011_10_03/2011_10_03_drive_0034_sync 1636 l
+2011_09_30/2011_09_30_drive_0020_sync 68 l
+2011_09_26/2011_09_26_drive_0061_sync 117 r
+2011_09_26/2011_09_26_drive_0032_sync 206 r
+2011_10_03/2011_10_03_drive_0042_sync 1146 l
+2011_09_29/2011_09_29_drive_0004_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 3829 l
+2011_09_30/2011_09_30_drive_0028_sync 4342 r
+2011_09_28/2011_09_28_drive_0001_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 5131 r
+2011_09_30/2011_09_30_drive_0020_sync 332 l
+2011_09_26/2011_09_26_drive_0018_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 819 l
+2011_09_30/2011_09_30_drive_0028_sync 4510 r
+2011_09_26/2011_09_26_drive_0070_sync 263 r
+2011_09_26/2011_09_26_drive_0022_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 3674 r
+2011_09_26/2011_09_26_drive_0011_sync 206 l
+2011_09_30/2011_09_30_drive_0033_sync 1059 l
+2011_10_03/2011_10_03_drive_0034_sync 2179 l
+2011_09_26/2011_09_26_drive_0057_sync 319 l
+2011_09_26/2011_09_26_drive_0087_sync 197 r
+2011_09_29/2011_09_29_drive_0004_sync 182 l
+2011_09_26/2011_09_26_drive_0019_sync 381 l
+2011_09_30/2011_09_30_drive_0028_sync 2343 r
+2011_09_30/2011_09_30_drive_0034_sync 173 l
+2011_10_03/2011_10_03_drive_0034_sync 552 r
+2011_09_26/2011_09_26_drive_0032_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 1922 r
+2011_09_26/2011_09_26_drive_0015_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 798 l
+2011_09_30/2011_09_30_drive_0033_sync 658 r
+2011_09_26/2011_09_26_drive_0039_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 707 r
+2011_10_03/2011_10_03_drive_0034_sync 2069 r
+2011_09_30/2011_09_30_drive_0028_sync 2330 l
+2011_09_30/2011_09_30_drive_0028_sync 2868 r
+2011_10_03/2011_10_03_drive_0042_sync 480 l
+2011_09_26/2011_09_26_drive_0015_sync 150 l
+2011_09_26/2011_09_26_drive_0087_sync 717 l
+2011_09_28/2011_09_28_drive_0001_sync 51 r
+2011_09_26/2011_09_26_drive_0018_sync 87 l
+2011_09_30/2011_09_30_drive_0028_sync 2718 r
+2011_09_26/2011_09_26_drive_0087_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 342 r
+2011_09_26/2011_09_26_drive_0104_sync 268 l
+2011_09_30/2011_09_30_drive_0028_sync 3199 l
+2011_09_30/2011_09_30_drive_0028_sync 2213 r
+2011_09_26/2011_09_26_drive_0095_sync 117 l
+2011_09_26/2011_09_26_drive_0028_sync 277 r
+2011_09_30/2011_09_30_drive_0020_sync 296 l
+2011_09_30/2011_09_30_drive_0028_sync 1855 r
+2011_10_03/2011_10_03_drive_0034_sync 16 r
+2011_09_26/2011_09_26_drive_0015_sync 67 l
+2011_09_29/2011_09_29_drive_0004_sync 39 r
+2011_09_30/2011_09_30_drive_0034_sync 617 r
+2011_10_03/2011_10_03_drive_0042_sync 1147 r
+2011_10_03/2011_10_03_drive_0034_sync 4544 l
+2011_09_30/2011_09_30_drive_0028_sync 2496 r
+2011_10_03/2011_10_03_drive_0034_sync 3194 r
+2011_09_30/2011_09_30_drive_0028_sync 3421 l
+2011_09_26/2011_09_26_drive_0087_sync 336 r
+2011_09_26/2011_09_26_drive_0051_sync 166 r
+2011_09_30/2011_09_30_drive_0028_sync 3561 l
+2011_09_30/2011_09_30_drive_0028_sync 3286 l
+2011_09_26/2011_09_26_drive_0104_sync 310 r
+2011_09_26/2011_09_26_drive_0014_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 4266 r
+2011_09_30/2011_09_30_drive_0033_sync 1156 l
+2011_09_30/2011_09_30_drive_0028_sync 1691 r
+2011_10_03/2011_10_03_drive_0034_sync 4528 r
+2011_09_26/2011_09_26_drive_0095_sync 106 r
+2011_09_26/2011_09_26_drive_0032_sync 211 l
+2011_10_03/2011_10_03_drive_0042_sync 907 r
+2011_09_26/2011_09_26_drive_0060_sync 17 l
+2011_09_26/2011_09_26_drive_0014_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 4578 r
+2011_10_03/2011_10_03_drive_0034_sync 1607 r
+2011_09_26/2011_09_26_drive_0061_sync 186 r
+2011_10_03/2011_10_03_drive_0034_sync 3150 l
+2011_10_03/2011_10_03_drive_0042_sync 635 r
+2011_10_03/2011_10_03_drive_0034_sync 3363 l
+2011_10_03/2011_10_03_drive_0042_sync 918 r
+2011_09_30/2011_09_30_drive_0033_sync 66 r
+2011_09_26/2011_09_26_drive_0022_sync 716 r
+2011_09_26/2011_09_26_drive_0022_sync 690 l
+2011_10_03/2011_10_03_drive_0034_sync 4483 r
+2011_09_26/2011_09_26_drive_0051_sync 405 l
+2011_09_26/2011_09_26_drive_0014_sync 51 r
+2011_09_26/2011_09_26_drive_0032_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 5082 l
+2011_10_03/2011_10_03_drive_0034_sync 479 l
+2011_09_30/2011_09_30_drive_0034_sync 766 r
+2011_09_26/2011_09_26_drive_0019_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 3693 r
+2011_09_30/2011_09_30_drive_0028_sync 1279 r
+2011_10_03/2011_10_03_drive_0042_sync 1148 l
+2011_10_03/2011_10_03_drive_0034_sync 1701 r
+2011_09_26/2011_09_26_drive_0022_sync 739 l
+2011_10_03/2011_10_03_drive_0034_sync 1579 l
+2011_09_30/2011_09_30_drive_0028_sync 4422 r
+2011_10_03/2011_10_03_drive_0034_sync 2593 r
+2011_09_30/2011_09_30_drive_0028_sync 3847 l
+2011_09_26/2011_09_26_drive_0091_sync 127 r
+2011_09_26/2011_09_26_drive_0061_sync 463 r
+2011_09_26/2011_09_26_drive_0019_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 2096 r
+2011_09_26/2011_09_26_drive_0019_sync 412 l
+2011_09_26/2011_09_26_drive_0014_sync 87 r
+2011_09_30/2011_09_30_drive_0020_sync 174 r
+2011_09_30/2011_09_30_drive_0033_sync 445 l
+2011_09_26/2011_09_26_drive_0113_sync 82 l
+2011_09_26/2011_09_26_drive_0017_sync 68 r
+2011_10_03/2011_10_03_drive_0034_sync 3354 r
+2011_09_29/2011_09_29_drive_0004_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 2279 l
+2011_09_30/2011_09_30_drive_0028_sync 4393 r
+2011_10_03/2011_10_03_drive_0034_sync 1454 l
+2011_09_26/2011_09_26_drive_0022_sync 701 l
+2011_09_26/2011_09_26_drive_0079_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 1686 r
+2011_09_30/2011_09_30_drive_0028_sync 3727 l
+2011_10_03/2011_10_03_drive_0034_sync 675 r
+2011_09_26/2011_09_26_drive_0001_sync 13 r
+2011_09_26/2011_09_26_drive_0022_sync 251 l
+2011_10_03/2011_10_03_drive_0034_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 1457 r
+2011_10_03/2011_10_03_drive_0042_sync 507 l
+2011_10_03/2011_10_03_drive_0042_sync 827 r
+2011_09_26/2011_09_26_drive_0039_sync 37 l
+2011_09_26/2011_09_26_drive_0095_sync 210 r
+2011_09_30/2011_09_30_drive_0028_sync 3676 l
+2011_09_26/2011_09_26_drive_0051_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 1786 r
+2011_09_26/2011_09_26_drive_0087_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 1058 l
+2011_09_30/2011_09_30_drive_0028_sync 2106 r
+2011_10_03/2011_10_03_drive_0034_sync 2485 l
+2011_10_03/2011_10_03_drive_0034_sync 4063 l
+2011_09_26/2011_09_26_drive_0022_sync 587 r
+2011_09_30/2011_09_30_drive_0033_sync 1417 l
+2011_09_26/2011_09_26_drive_0022_sync 479 r
+2011_09_26/2011_09_26_drive_0032_sync 277 l
+2011_09_26/2011_09_26_drive_0087_sync 76 r
+2011_09_26/2011_09_26_drive_0015_sync 255 r
+2011_09_26/2011_09_26_drive_0051_sync 361 l
+2011_10_03/2011_10_03_drive_0034_sync 3157 l
+2011_09_30/2011_09_30_drive_0028_sync 4304 r
+2011_09_30/2011_09_30_drive_0020_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 2383 r
+2011_09_30/2011_09_30_drive_0028_sync 1497 r
+2011_10_03/2011_10_03_drive_0034_sync 4646 r
+2011_09_26/2011_09_26_drive_0011_sync 177 l
+2011_09_26/2011_09_26_drive_0061_sync 34 r
+2011_09_26/2011_09_26_drive_0057_sync 213 l
+2011_10_03/2011_10_03_drive_0034_sync 2718 r
+2011_09_26/2011_09_26_drive_0087_sync 524 r
+2011_10_03/2011_10_03_drive_0042_sync 324 l
+2011_09_30/2011_09_30_drive_0028_sync 5068 r
+2011_10_03/2011_10_03_drive_0034_sync 3517 l
+2011_09_30/2011_09_30_drive_0033_sync 794 l
+2011_09_26/2011_09_26_drive_0015_sync 274 l
+2011_09_26/2011_09_26_drive_0039_sync 372 r
+2011_09_26/2011_09_26_drive_0061_sync 491 l
+2011_09_30/2011_09_30_drive_0033_sync 1179 l
+2011_09_26/2011_09_26_drive_0022_sync 500 r
+2011_09_30/2011_09_30_drive_0028_sync 1220 r
+2011_09_30/2011_09_30_drive_0028_sync 1034 r
+2011_10_03/2011_10_03_drive_0034_sync 2065 r
+2011_09_30/2011_09_30_drive_0028_sync 3258 l
+2011_10_03/2011_10_03_drive_0034_sync 4328 r
+2011_09_30/2011_09_30_drive_0033_sync 1361 r
+2011_09_30/2011_09_30_drive_0033_sync 348 r
+2011_09_30/2011_09_30_drive_0028_sync 4065 r
+2011_09_30/2011_09_30_drive_0034_sync 133 l
+2011_10_03/2011_10_03_drive_0042_sync 865 r
+2011_09_30/2011_09_30_drive_0028_sync 4261 l
+2011_10_03/2011_10_03_drive_0042_sync 213 r
+2011_09_30/2011_09_30_drive_0034_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 633 r
+2011_09_26/2011_09_26_drive_0087_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 2465 r
+2011_09_26/2011_09_26_drive_0032_sync 29 r
+2011_09_30/2011_09_30_drive_0028_sync 915 l
+2011_09_30/2011_09_30_drive_0028_sync 3396 l
+2011_09_30/2011_09_30_drive_0033_sync 365 l
+2011_09_26/2011_09_26_drive_0011_sync 36 r
+2011_09_26/2011_09_26_drive_0079_sync 31 r
+2011_09_30/2011_09_30_drive_0020_sync 682 l
+2011_10_03/2011_10_03_drive_0034_sync 4594 l
+2011_09_26/2011_09_26_drive_0039_sync 215 r
+2011_09_26/2011_09_26_drive_0001_sync 82 l
+2011_09_30/2011_09_30_drive_0033_sync 961 r
+2011_10_03/2011_10_03_drive_0034_sync 3563 r
+2011_09_26/2011_09_26_drive_0014_sync 9 l
+2011_09_26/2011_09_26_drive_0061_sync 516 l
+2011_09_26/2011_09_26_drive_0061_sync 554 r
+2011_10_03/2011_10_03_drive_0034_sync 3216 l
+2011_09_26/2011_09_26_drive_0017_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 3074 l
+2011_09_30/2011_09_30_drive_0028_sync 1588 r
+2011_09_26/2011_09_26_drive_0035_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 2365 r
+2011_09_30/2011_09_30_drive_0028_sync 2655 r
+2011_09_26/2011_09_26_drive_0070_sync 411 l
+2011_09_26/2011_09_26_drive_0022_sync 349 r
+2011_09_26/2011_09_26_drive_0061_sync 113 l
+2011_09_30/2011_09_30_drive_0028_sync 3791 r
+2011_09_30/2011_09_30_drive_0028_sync 830 r
+2011_09_26/2011_09_26_drive_0039_sync 338 l
+2011_09_30/2011_09_30_drive_0034_sync 1085 l
+2011_10_03/2011_10_03_drive_0034_sync 2682 l
+2011_09_30/2011_09_30_drive_0028_sync 1993 r
+2011_09_26/2011_09_26_drive_0104_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 429 l
+2011_10_03/2011_10_03_drive_0034_sync 4561 l
+2011_09_26/2011_09_26_drive_0018_sync 178 l
+2011_10_03/2011_10_03_drive_0034_sync 3373 r
+2011_10_03/2011_10_03_drive_0034_sync 2320 r
+2011_09_30/2011_09_30_drive_0020_sync 984 r
+2011_10_03/2011_10_03_drive_0034_sync 1504 l
+2011_10_03/2011_10_03_drive_0034_sync 3521 r
+2011_09_30/2011_09_30_drive_0028_sync 4392 r
+2011_09_30/2011_09_30_drive_0028_sync 4921 r
+2011_09_26/2011_09_26_drive_0061_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 3222 l
+2011_09_26/2011_09_26_drive_0014_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 1702 r
+2011_09_26/2011_09_26_drive_0087_sync 92 l
+2011_09_30/2011_09_30_drive_0034_sync 547 r
+2011_10_03/2011_10_03_drive_0034_sync 2734 l
+2011_10_03/2011_10_03_drive_0034_sync 1884 r
+2011_09_26/2011_09_26_drive_0022_sync 698 l
+2011_09_30/2011_09_30_drive_0034_sync 1154 r
+2011_09_26/2011_09_26_drive_0028_sync 340 r
+2011_10_03/2011_10_03_drive_0042_sync 730 l
+2011_09_30/2011_09_30_drive_0020_sync 888 r
+2011_09_30/2011_09_30_drive_0033_sync 666 l
+2011_10_03/2011_10_03_drive_0042_sync 1122 r
+2011_10_03/2011_10_03_drive_0034_sync 4509 r
+2011_09_30/2011_09_30_drive_0033_sync 1064 r
+2011_09_26/2011_09_26_drive_0014_sync 57 r
+2011_10_03/2011_10_03_drive_0034_sync 4357 r
+2011_09_30/2011_09_30_drive_0028_sync 4815 l
+2011_09_26/2011_09_26_drive_0019_sync 216 r
+2011_09_26/2011_09_26_drive_0113_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 2082 r
+2011_10_03/2011_10_03_drive_0042_sync 456 l
+2011_09_26/2011_09_26_drive_0079_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 3230 r
+2011_10_03/2011_10_03_drive_0034_sync 2464 l
+2011_09_28/2011_09_28_drive_0001_sync 54 r
+2011_09_26/2011_09_26_drive_0061_sync 619 l
+2011_10_03/2011_10_03_drive_0034_sync 2738 r
+2011_09_26/2011_09_26_drive_0022_sync 765 r
+2011_10_03/2011_10_03_drive_0042_sync 736 l
+2011_09_26/2011_09_26_drive_0005_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 185 r
+2011_09_29/2011_09_29_drive_0026_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 3627 r
+2011_09_30/2011_09_30_drive_0020_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 4230 l
+2011_09_30/2011_09_30_drive_0028_sync 2314 l
+2011_09_30/2011_09_30_drive_0028_sync 1934 r
+2011_10_03/2011_10_03_drive_0034_sync 4242 r
+2011_09_30/2011_09_30_drive_0034_sync 1175 l
+2011_09_30/2011_09_30_drive_0020_sync 894 l
+2011_09_26/2011_09_26_drive_0061_sync 278 r
+2011_10_03/2011_10_03_drive_0034_sync 2844 l
+2011_10_03/2011_10_03_drive_0034_sync 4523 r
+2011_10_03/2011_10_03_drive_0034_sync 3 r
+2011_09_30/2011_09_30_drive_0034_sync 70 l
+2011_10_03/2011_10_03_drive_0034_sync 2291 l
+2011_09_26/2011_09_26_drive_0095_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 1840 r
+2011_09_30/2011_09_30_drive_0034_sync 761 r
+2011_09_26/2011_09_26_drive_0039_sync 354 l
+2011_09_26/2011_09_26_drive_0057_sync 355 l
+2011_09_30/2011_09_30_drive_0028_sync 554 r
+2011_09_30/2011_09_30_drive_0033_sync 1522 r
+2011_09_30/2011_09_30_drive_0028_sync 1144 l
+2011_09_30/2011_09_30_drive_0033_sync 1093 l
+2011_10_03/2011_10_03_drive_0042_sync 546 r
+2011_10_03/2011_10_03_drive_0034_sync 2255 l
+2011_09_30/2011_09_30_drive_0028_sync 3665 l
+2011_09_26/2011_09_26_drive_0019_sync 365 r
+2011_09_26/2011_09_26_drive_0091_sync 122 r
+2011_09_30/2011_09_30_drive_0028_sync 1779 l
+2011_09_26/2011_09_26_drive_0022_sync 625 l
+2011_09_30/2011_09_30_drive_0028_sync 150 r
+2011_09_30/2011_09_30_drive_0020_sync 450 l
+2011_09_26/2011_09_26_drive_0032_sync 348 l
+2011_09_30/2011_09_30_drive_0028_sync 123 l
+2011_09_26/2011_09_26_drive_0017_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 2456 l
+2011_09_26/2011_09_26_drive_0032_sync 192 l
+2011_09_26/2011_09_26_drive_0091_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 1704 r
+2011_09_26/2011_09_26_drive_0014_sync 240 l
+2011_09_26/2011_09_26_drive_0061_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 3991 l
+2011_09_30/2011_09_30_drive_0028_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 3443 r
+2011_09_26/2011_09_26_drive_0039_sync 194 r
+2011_10_03/2011_10_03_drive_0034_sync 1796 l
+2011_10_03/2011_10_03_drive_0034_sync 2327 r
+2011_09_26/2011_09_26_drive_0057_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 4587 l
+2011_09_26/2011_09_26_drive_0095_sync 238 r
+2011_10_03/2011_10_03_drive_0042_sync 2 r
+2011_09_30/2011_09_30_drive_0033_sync 169 l
+2011_09_26/2011_09_26_drive_0051_sync 155 l
+2011_09_26/2011_09_26_drive_0061_sync 188 l
+2011_09_26/2011_09_26_drive_0060_sync 9 l
+2011_10_03/2011_10_03_drive_0034_sync 1680 r
+2011_09_26/2011_09_26_drive_0061_sync 199 r
+2011_09_30/2011_09_30_drive_0028_sync 1886 l
+2011_10_03/2011_10_03_drive_0034_sync 2237 r
+2011_09_26/2011_09_26_drive_0005_sync 93 r
+2011_09_26/2011_09_26_drive_0079_sync 8 l
+2011_09_26/2011_09_26_drive_0061_sync 271 l
+2011_09_30/2011_09_30_drive_0028_sync 2192 l
+2011_09_30/2011_09_30_drive_0028_sync 487 l
+2011_09_30/2011_09_30_drive_0028_sync 102 l
+2011_09_26/2011_09_26_drive_0060_sync 68 r
+2011_10_03/2011_10_03_drive_0034_sync 498 l
+2011_09_26/2011_09_26_drive_0019_sync 101 l
+2011_09_30/2011_09_30_drive_0028_sync 691 l
+2011_09_26/2011_09_26_drive_0018_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 758 l
+2011_09_26/2011_09_26_drive_0028_sync 175 r
+2011_09_26/2011_09_26_drive_0061_sync 265 l
+2011_09_26/2011_09_26_drive_0091_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 1000 l
+2011_09_26/2011_09_26_drive_0032_sync 5 l
+2011_09_26/2011_09_26_drive_0028_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 979 r
+2011_09_30/2011_09_30_drive_0028_sync 5152 r
+2011_09_30/2011_09_30_drive_0028_sync 2389 r
+2011_09_30/2011_09_30_drive_0028_sync 5116 r
+2011_09_30/2011_09_30_drive_0028_sync 2413 r
+2011_09_30/2011_09_30_drive_0028_sync 4868 r
+2011_09_26/2011_09_26_drive_0061_sync 154 r
+2011_09_26/2011_09_26_drive_0051_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 4449 l
+2011_09_30/2011_09_30_drive_0028_sync 565 r
+2011_09_30/2011_09_30_drive_0028_sync 3659 r
+2011_09_26/2011_09_26_drive_0032_sync 262 l
+2011_09_30/2011_09_30_drive_0028_sync 4720 l
+2011_09_28/2011_09_28_drive_0001_sync 100 l
+2011_09_29/2011_09_29_drive_0026_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 427 l
+2011_09_29/2011_09_29_drive_0004_sync 335 r
+2011_09_30/2011_09_30_drive_0033_sync 588 l
+2011_09_26/2011_09_26_drive_0019_sync 426 r
+2011_10_03/2011_10_03_drive_0034_sync 3391 r
+2011_10_03/2011_10_03_drive_0034_sync 2666 l
+2011_09_30/2011_09_30_drive_0033_sync 1144 r
+2011_09_26/2011_09_26_drive_0079_sync 51 l
+2011_09_30/2011_09_30_drive_0020_sync 1040 l
+2011_09_26/2011_09_26_drive_0070_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 1504 r
+2011_09_26/2011_09_26_drive_0022_sync 91 l
+2011_09_26/2011_09_26_drive_0087_sync 131 l
+2011_09_26/2011_09_26_drive_0032_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 1650 l
+2011_09_30/2011_09_30_drive_0028_sync 4694 r
+2011_10_03/2011_10_03_drive_0034_sync 2655 l
+2011_09_26/2011_09_26_drive_0087_sync 545 l
+2011_09_26/2011_09_26_drive_0051_sync 263 l
+2011_09_26/2011_09_26_drive_0032_sync 249 l
+2011_09_30/2011_09_30_drive_0020_sync 824 r
+2011_10_03/2011_10_03_drive_0034_sync 1313 r
+2011_09_30/2011_09_30_drive_0034_sync 933 l
+2011_10_03/2011_10_03_drive_0034_sync 1193 r
+2011_09_30/2011_09_30_drive_0034_sync 365 r
+2011_09_26/2011_09_26_drive_0061_sync 193 l
+2011_09_26/2011_09_26_drive_0095_sync 23 l
+2011_09_26/2011_09_26_drive_0039_sync 317 r
+2011_09_30/2011_09_30_drive_0020_sync 483 l
+2011_09_30/2011_09_30_drive_0028_sync 3227 r
+2011_10_03/2011_10_03_drive_0034_sync 739 l
+2011_09_30/2011_09_30_drive_0034_sync 84 r
+2011_09_26/2011_09_26_drive_0095_sync 197 l
+2011_09_26/2011_09_26_drive_0087_sync 276 l
+2011_09_30/2011_09_30_drive_0028_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 1510 r
+2011_10_03/2011_10_03_drive_0034_sync 1956 r
+2011_09_26/2011_09_26_drive_0028_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 3110 l
+2011_09_26/2011_09_26_drive_0018_sync 56 r
+2011_09_26/2011_09_26_drive_0057_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 121 r
+2011_09_26/2011_09_26_drive_0095_sync 245 r
+2011_09_26/2011_09_26_drive_0087_sync 445 r
+2011_09_30/2011_09_30_drive_0028_sync 4386 r
+2011_10_03/2011_10_03_drive_0034_sync 1137 r
+2011_09_26/2011_09_26_drive_0018_sync 181 l
+2011_09_30/2011_09_30_drive_0033_sync 603 r
+2011_09_30/2011_09_30_drive_0028_sync 4541 r
+2011_09_30/2011_09_30_drive_0020_sync 1065 r
+2011_10_03/2011_10_03_drive_0034_sync 4113 l
+2011_09_26/2011_09_26_drive_0015_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 3544 r
+2011_09_30/2011_09_30_drive_0028_sync 3994 r
+2011_09_30/2011_09_30_drive_0033_sync 1316 r
+2011_09_29/2011_09_29_drive_0026_sync 54 l
+2011_09_26/2011_09_26_drive_0011_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 1177 l
+2011_09_30/2011_09_30_drive_0028_sync 2418 l
+2011_09_26/2011_09_26_drive_0028_sync 324 r
+2011_09_30/2011_09_30_drive_0034_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 3772 r
+2011_09_30/2011_09_30_drive_0028_sync 2913 r
+2011_10_03/2011_10_03_drive_0034_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 1453 r
+2011_09_26/2011_09_26_drive_0039_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 2975 l
+2011_09_26/2011_09_26_drive_0032_sync 150 l
+2011_10_03/2011_10_03_drive_0042_sync 1023 r
+2011_09_30/2011_09_30_drive_0028_sync 1225 r
+2011_09_26/2011_09_26_drive_0087_sync 82 r
+2011_10_03/2011_10_03_drive_0042_sync 1042 l
+2011_09_30/2011_09_30_drive_0028_sync 3083 l
+2011_09_30/2011_09_30_drive_0034_sync 893 r
+2011_09_30/2011_09_30_drive_0028_sync 3712 r
+2011_09_26/2011_09_26_drive_0039_sync 85 l
+2011_09_30/2011_09_30_drive_0034_sync 360 l
+2011_09_26/2011_09_26_drive_0018_sync 217 r
+2011_09_30/2011_09_30_drive_0028_sync 2885 r
+2011_09_30/2011_09_30_drive_0034_sync 1149 l
+2011_09_26/2011_09_26_drive_0087_sync 630 l
+2011_09_26/2011_09_26_drive_0028_sync 191 l
+2011_09_26/2011_09_26_drive_0019_sync 369 r
+2011_10_03/2011_10_03_drive_0034_sync 3919 r
+2011_09_26/2011_09_26_drive_0061_sync 323 r
+2011_09_26/2011_09_26_drive_0095_sync 127 l
+2011_09_26/2011_09_26_drive_0091_sync 177 r
+2011_09_30/2011_09_30_drive_0028_sync 3171 l
+2011_09_26/2011_09_26_drive_0091_sync 130 r
+2011_09_26/2011_09_26_drive_0032_sync 3 r
+2011_10_03/2011_10_03_drive_0042_sync 30 l
+2011_09_30/2011_09_30_drive_0033_sync 1461 l
+2011_09_26/2011_09_26_drive_0019_sync 65 r
+2011_09_26/2011_09_26_drive_0028_sync 135 r
+2011_09_30/2011_09_30_drive_0034_sync 548 r
+2011_10_03/2011_10_03_drive_0034_sync 3866 r
+2011_09_30/2011_09_30_drive_0028_sync 446 l
+2011_09_26/2011_09_26_drive_0035_sync 19 r
+2011_10_03/2011_10_03_drive_0042_sync 108 l
+2011_09_30/2011_09_30_drive_0034_sync 1004 r
+2011_09_30/2011_09_30_drive_0020_sync 511 l
+2011_09_26/2011_09_26_drive_0014_sync 57 l
+2011_09_29/2011_09_29_drive_0004_sync 200 l
+2011_09_30/2011_09_30_drive_0033_sync 608 r
+2011_09_30/2011_09_30_drive_0033_sync 489 l
+2011_09_26/2011_09_26_drive_0087_sync 239 r
+2011_09_26/2011_09_26_drive_0018_sync 61 l
+2011_09_30/2011_09_30_drive_0020_sync 1025 r
+2011_09_30/2011_09_30_drive_0020_sync 572 l
+2011_10_03/2011_10_03_drive_0042_sync 160 l
+2011_09_28/2011_09_28_drive_0001_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 138 l
+2011_09_30/2011_09_30_drive_0034_sync 1210 l
+2011_09_30/2011_09_30_drive_0033_sync 1406 r
+2011_09_30/2011_09_30_drive_0028_sync 2875 l
+2011_09_30/2011_09_30_drive_0020_sync 1078 l
+2011_09_26/2011_09_26_drive_0057_sync 191 l
+2011_09_26/2011_09_26_drive_0095_sync 199 r
+2011_10_03/2011_10_03_drive_0042_sync 611 r
+2011_09_26/2011_09_26_drive_0032_sync 137 l
+2011_10_03/2011_10_03_drive_0042_sync 1120 r
+2011_09_26/2011_09_26_drive_0087_sync 539 l
+2011_09_30/2011_09_30_drive_0020_sync 1044 r
+2011_09_30/2011_09_30_drive_0028_sync 1240 l
+2011_09_26/2011_09_26_drive_0087_sync 15 r
+2011_09_26/2011_09_26_drive_0039_sync 122 r
+2011_10_03/2011_10_03_drive_0034_sync 1423 l
+2011_09_26/2011_09_26_drive_0079_sync 93 l
+2011_09_30/2011_09_30_drive_0034_sync 717 l
+2011_10_03/2011_10_03_drive_0042_sync 377 r
+2011_09_26/2011_09_26_drive_0087_sync 342 l
+2011_09_30/2011_09_30_drive_0028_sync 4202 r
+2011_09_30/2011_09_30_drive_0033_sync 472 l
+2011_09_30/2011_09_30_drive_0028_sync 2166 r
+2011_09_30/2011_09_30_drive_0028_sync 1933 l
+2011_10_03/2011_10_03_drive_0034_sync 2896 r
+2011_09_30/2011_09_30_drive_0028_sync 2964 l
+2011_10_03/2011_10_03_drive_0034_sync 803 r
+2011_10_03/2011_10_03_drive_0034_sync 2166 r
+2011_09_30/2011_09_30_drive_0033_sync 675 l
+2011_09_30/2011_09_30_drive_0028_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 834 l
+2011_09_26/2011_09_26_drive_0091_sync 247 r
+2011_09_30/2011_09_30_drive_0034_sync 470 r
+2011_09_26/2011_09_26_drive_0079_sync 34 r
+2011_09_26/2011_09_26_drive_0028_sync 71 l
+2011_09_29/2011_09_29_drive_0004_sync 268 r
+2011_09_30/2011_09_30_drive_0028_sync 4558 l
+2011_09_26/2011_09_26_drive_0022_sync 184 r
+2011_09_26/2011_09_26_drive_0061_sync 614 l
+2011_09_30/2011_09_30_drive_0028_sync 1076 r
+2011_10_03/2011_10_03_drive_0034_sync 1132 l
+2011_09_30/2011_09_30_drive_0034_sync 872 l
+2011_09_30/2011_09_30_drive_0028_sync 1111 r
+2011_10_03/2011_10_03_drive_0042_sync 758 r
+2011_10_03/2011_10_03_drive_0034_sync 3360 r
+2011_09_26/2011_09_26_drive_0028_sync 326 l
+2011_09_26/2011_09_26_drive_0051_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 3300 l
+2011_09_30/2011_09_30_drive_0020_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 1627 l
+2011_09_26/2011_09_26_drive_0095_sync 200 r
+2011_09_30/2011_09_30_drive_0033_sync 73 r
+2011_10_03/2011_10_03_drive_0042_sync 68 l
+2011_09_30/2011_09_30_drive_0033_sync 887 l
+2011_09_30/2011_09_30_drive_0028_sync 1638 r
+2011_09_30/2011_09_30_drive_0028_sync 2221 l
+2011_09_30/2011_09_30_drive_0020_sync 937 r
+2011_10_03/2011_10_03_drive_0034_sync 1793 r
+2011_09_26/2011_09_26_drive_0087_sync 504 r
+2011_09_26/2011_09_26_drive_0014_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 1955 l
+2011_09_30/2011_09_30_drive_0028_sync 4458 r
+2011_09_26/2011_09_26_drive_0019_sync 174 r
+2011_09_30/2011_09_30_drive_0020_sync 558 r
+2011_09_30/2011_09_30_drive_0028_sync 1714 r
+2011_09_26/2011_09_26_drive_0051_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 4506 r
+2011_09_26/2011_09_26_drive_0022_sync 114 l
+2011_10_03/2011_10_03_drive_0034_sync 346 l
+2011_09_26/2011_09_26_drive_0019_sync 317 l
+2011_09_26/2011_09_26_drive_0011_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 1731 l
+2011_10_03/2011_10_03_drive_0034_sync 381 l
+2011_09_30/2011_09_30_drive_0028_sync 4163 r
+2011_09_26/2011_09_26_drive_0032_sync 292 l
+2011_09_26/2011_09_26_drive_0087_sync 667 l
+2011_09_26/2011_09_26_drive_0022_sync 467 l
+2011_09_30/2011_09_30_drive_0028_sync 1694 r
+2011_09_30/2011_09_30_drive_0020_sync 702 l
+2011_10_03/2011_10_03_drive_0042_sync 370 r
+2011_09_30/2011_09_30_drive_0020_sync 866 r
+2011_09_26/2011_09_26_drive_0091_sync 257 r
+2011_09_30/2011_09_30_drive_0034_sync 836 r
+2011_10_03/2011_10_03_drive_0034_sync 4127 l
+2011_09_30/2011_09_30_drive_0020_sync 1015 l
+2011_09_30/2011_09_30_drive_0028_sync 3483 l
+2011_09_30/2011_09_30_drive_0028_sync 4735 l
+2011_09_26/2011_09_26_drive_0028_sync 185 l
+2011_10_03/2011_10_03_drive_0034_sync 3946 r
+2011_09_30/2011_09_30_drive_0020_sync 1015 r
+2011_09_26/2011_09_26_drive_0035_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4711 r
+2011_09_26/2011_09_26_drive_0039_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 4218 l
+2011_09_30/2011_09_30_drive_0033_sync 297 r
+2011_09_26/2011_09_26_drive_0032_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 1794 r
+2011_09_26/2011_09_26_drive_0022_sync 357 r
+2011_09_29/2011_09_29_drive_0004_sync 130 r
+2011_09_30/2011_09_30_drive_0033_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 3538 r
+2011_09_30/2011_09_30_drive_0028_sync 4051 r
+2011_09_26/2011_09_26_drive_0015_sync 93 r
+2011_10_03/2011_10_03_drive_0042_sync 679 l
+2011_09_26/2011_09_26_drive_0022_sync 646 l
+2011_09_26/2011_09_26_drive_0022_sync 783 r
+2011_09_26/2011_09_26_drive_0019_sync 243 l
+2011_09_30/2011_09_30_drive_0020_sync 454 l
+2011_09_30/2011_09_30_drive_0028_sync 2783 r
+2011_09_30/2011_09_30_drive_0034_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 2067 l
+2011_09_30/2011_09_30_drive_0028_sync 331 l
+2011_10_03/2011_10_03_drive_0034_sync 1570 l
+2011_10_03/2011_10_03_drive_0042_sync 939 l
+2011_09_26/2011_09_26_drive_0001_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 995 r
+2011_09_30/2011_09_30_drive_0033_sync 809 l
+2011_09_30/2011_09_30_drive_0033_sync 330 r
+2011_09_28/2011_09_28_drive_0001_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 1186 r
+2011_09_26/2011_09_26_drive_0087_sync 600 r
+2011_09_26/2011_09_26_drive_0022_sync 796 r
+2011_09_26/2011_09_26_drive_0022_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 1851 r
+2011_09_26/2011_09_26_drive_0051_sync 67 l
+2011_09_30/2011_09_30_drive_0034_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 818 r
+2011_09_30/2011_09_30_drive_0033_sync 987 l
+2011_09_29/2011_09_29_drive_0026_sync 149 r
+2011_09_26/2011_09_26_drive_0035_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 3127 r
+2011_09_30/2011_09_30_drive_0034_sync 217 r
+2011_09_30/2011_09_30_drive_0033_sync 1091 r
+2011_10_03/2011_10_03_drive_0042_sync 884 r
+2011_10_03/2011_10_03_drive_0034_sync 2971 l
+2011_09_30/2011_09_30_drive_0034_sync 998 l
+2011_09_26/2011_09_26_drive_0087_sync 378 r
+2011_09_26/2011_09_26_drive_0015_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 4665 l
+2011_09_30/2011_09_30_drive_0034_sync 1010 r
+2011_09_30/2011_09_30_drive_0028_sync 4680 r
+2011_09_30/2011_09_30_drive_0028_sync 3324 r
+2011_09_30/2011_09_30_drive_0028_sync 3655 r
+2011_09_30/2011_09_30_drive_0033_sync 1071 r
+2011_09_26/2011_09_26_drive_0011_sync 83 r
+2011_09_26/2011_09_26_drive_0022_sync 668 l
+2011_09_26/2011_09_26_drive_0019_sync 239 l
+2011_09_30/2011_09_30_drive_0028_sync 3705 l
+2011_09_30/2011_09_30_drive_0028_sync 4570 r
+2011_09_30/2011_09_30_drive_0028_sync 1316 r
+2011_10_03/2011_10_03_drive_0034_sync 338 l
+2011_09_26/2011_09_26_drive_0005_sync 120 r
+2011_09_30/2011_09_30_drive_0034_sync 827 l
+2011_09_26/2011_09_26_drive_0113_sync 14 r
+2011_09_30/2011_09_30_drive_0028_sync 3927 l
+2011_09_30/2011_09_30_drive_0034_sync 595 l
+2011_09_30/2011_09_30_drive_0033_sync 341 l
+2011_09_26/2011_09_26_drive_0087_sync 145 r
+2011_09_30/2011_09_30_drive_0033_sync 110 l
+2011_09_30/2011_09_30_drive_0033_sync 1380 r
+2011_09_30/2011_09_30_drive_0028_sync 4829 r
+2011_10_03/2011_10_03_drive_0034_sync 1797 l
+2011_09_26/2011_09_26_drive_0070_sync 414 r
+2011_09_30/2011_09_30_drive_0028_sync 1326 l
+2011_09_30/2011_09_30_drive_0028_sync 2340 l
+2011_09_26/2011_09_26_drive_0057_sync 279 r
+2011_10_03/2011_10_03_drive_0042_sync 997 l
+2011_09_30/2011_09_30_drive_0020_sync 408 l
+2011_09_30/2011_09_30_drive_0033_sync 111 r
+2011_09_30/2011_09_30_drive_0033_sync 1324 l
+2011_09_30/2011_09_30_drive_0020_sync 834 l
+2011_09_26/2011_09_26_drive_0104_sync 57 l
+2011_09_29/2011_09_29_drive_0004_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 1265 l
+2011_09_26/2011_09_26_drive_0017_sync 89 l
+2011_09_26/2011_09_26_drive_0070_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 1196 l
+2011_09_30/2011_09_30_drive_0028_sync 1596 l
+2011_09_26/2011_09_26_drive_0015_sync 121 l
+2011_10_03/2011_10_03_drive_0042_sync 326 r
+2011_10_03/2011_10_03_drive_0042_sync 841 r
+2011_09_26/2011_09_26_drive_0022_sync 179 l
+2011_09_26/2011_09_26_drive_0019_sync 227 l
+2011_10_03/2011_10_03_drive_0042_sync 778 l
+2011_09_26/2011_09_26_drive_0022_sync 200 r
+2011_09_26/2011_09_26_drive_0022_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 1411 r
+2011_09_26/2011_09_26_drive_0015_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 3509 r
+2011_09_30/2011_09_30_drive_0028_sync 4289 r
+2011_09_30/2011_09_30_drive_0028_sync 3266 r
+2011_09_30/2011_09_30_drive_0028_sync 501 l
+2011_09_26/2011_09_26_drive_0070_sync 219 r
+2011_09_30/2011_09_30_drive_0033_sync 401 r
+2011_09_26/2011_09_26_drive_0022_sync 23 l
+2011_09_30/2011_09_30_drive_0028_sync 338 r
+2011_10_03/2011_10_03_drive_0034_sync 3887 r
+2011_09_26/2011_09_26_drive_0070_sync 98 r
+2011_10_03/2011_10_03_drive_0042_sync 322 r
+2011_09_29/2011_09_29_drive_0004_sync 32 r
+2011_09_30/2011_09_30_drive_0034_sync 224 l
+2011_09_26/2011_09_26_drive_0018_sync 197 r
+2011_09_26/2011_09_26_drive_0104_sync 21 r
+2011_09_26/2011_09_26_drive_0032_sync 229 l
+2011_09_26/2011_09_26_drive_0018_sync 43 r
+2011_09_29/2011_09_29_drive_0004_sync 299 l
+2011_09_26/2011_09_26_drive_0061_sync 183 l
+2011_09_30/2011_09_30_drive_0033_sync 840 l
+2011_09_30/2011_09_30_drive_0033_sync 940 l
+2011_09_30/2011_09_30_drive_0020_sync 759 l
+2011_09_30/2011_09_30_drive_0028_sync 1368 l
+2011_09_26/2011_09_26_drive_0018_sync 88 l
+2011_09_26/2011_09_26_drive_0087_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 4098 l
+2011_10_03/2011_10_03_drive_0034_sync 478 r
+2011_09_26/2011_09_26_drive_0061_sync 580 r
+2011_09_30/2011_09_30_drive_0033_sync 1099 l
+2011_09_26/2011_09_26_drive_0051_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 806 l
+2011_09_30/2011_09_30_drive_0028_sync 2834 l
+2011_10_03/2011_10_03_drive_0042_sync 1036 l
+2011_09_26/2011_09_26_drive_0022_sync 138 r
+2011_09_26/2011_09_26_drive_0091_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 791 l
+2011_09_30/2011_09_30_drive_0034_sync 1166 l
+2011_10_03/2011_10_03_drive_0034_sync 162 r
+2011_10_03/2011_10_03_drive_0042_sync 928 l
+2011_10_03/2011_10_03_drive_0034_sync 3623 l
+2011_09_30/2011_09_30_drive_0028_sync 1094 r
+2011_09_26/2011_09_26_drive_0057_sync 1 l
+2011_10_03/2011_10_03_drive_0042_sync 448 l
+2011_09_30/2011_09_30_drive_0028_sync 4814 l
+2011_10_03/2011_10_03_drive_0042_sync 405 r
+2011_09_26/2011_09_26_drive_0019_sync 159 l
+2011_09_30/2011_09_30_drive_0033_sync 208 l
+2011_09_30/2011_09_30_drive_0020_sync 630 l
+2011_10_03/2011_10_03_drive_0034_sync 856 l
+2011_09_30/2011_09_30_drive_0033_sync 935 l
+2011_09_26/2011_09_26_drive_0070_sync 259 l
+2011_09_26/2011_09_26_drive_0035_sync 88 r
+2011_09_30/2011_09_30_drive_0020_sync 245 l
+2011_09_26/2011_09_26_drive_0061_sync 95 l
+2011_09_26/2011_09_26_drive_0095_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 2886 l
+2011_10_03/2011_10_03_drive_0034_sync 2674 r
+2011_10_03/2011_10_03_drive_0034_sync 595 l
+2011_10_03/2011_10_03_drive_0034_sync 4542 l
+2011_09_26/2011_09_26_drive_0104_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 2160 l
+2011_09_30/2011_09_30_drive_0028_sync 3929 r
+2011_09_30/2011_09_30_drive_0020_sync 1072 r
+2011_10_03/2011_10_03_drive_0042_sync 976 r
+2011_10_03/2011_10_03_drive_0034_sync 505 l
+2011_09_26/2011_09_26_drive_0051_sync 60 r
+2011_09_26/2011_09_26_drive_0018_sync 13 r
+2011_09_26/2011_09_26_drive_0014_sync 135 l
+2011_10_03/2011_10_03_drive_0042_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 2384 l
+2011_09_30/2011_09_30_drive_0028_sync 1322 l
+2011_09_30/2011_09_30_drive_0020_sync 748 l
+2011_09_26/2011_09_26_drive_0028_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 2801 l
+2011_10_03/2011_10_03_drive_0034_sync 2097 r
+2011_09_26/2011_09_26_drive_0011_sync 213 r
+2011_09_26/2011_09_26_drive_0022_sync 370 l
+2011_09_26/2011_09_26_drive_0051_sync 239 r
+2011_09_30/2011_09_30_drive_0028_sync 731 l
+2011_09_30/2011_09_30_drive_0028_sync 1736 l
+2011_09_30/2011_09_30_drive_0028_sync 3690 l
+2011_09_26/2011_09_26_drive_0039_sync 146 l
+2011_09_26/2011_09_26_drive_0061_sync 316 l
+2011_09_26/2011_09_26_drive_0061_sync 655 r
+2011_10_03/2011_10_03_drive_0034_sync 3498 l
+2011_09_30/2011_09_30_drive_0028_sync 2839 r
+2011_09_30/2011_09_30_drive_0028_sync 2135 l
+2011_09_26/2011_09_26_drive_0051_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 1737 r
+2011_09_30/2011_09_30_drive_0033_sync 989 r
+2011_09_26/2011_09_26_drive_0095_sync 198 r
+2011_09_29/2011_09_29_drive_0026_sync 91 l
+2011_10_03/2011_10_03_drive_0034_sync 1476 l
+2011_09_26/2011_09_26_drive_0039_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 3405 l
+2011_09_30/2011_09_30_drive_0034_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 1058 l
+2011_09_30/2011_09_30_drive_0028_sync 1418 l
+2011_09_30/2011_09_30_drive_0028_sync 4724 r
+2011_09_30/2011_09_30_drive_0033_sync 478 l
+2011_10_03/2011_10_03_drive_0034_sync 3770 l
+2011_09_30/2011_09_30_drive_0028_sync 213 l
+2011_09_26/2011_09_26_drive_0087_sync 328 l
+2011_09_26/2011_09_26_drive_0070_sync 119 r
+2011_09_26/2011_09_26_drive_0091_sync 173 r
+2011_09_26/2011_09_26_drive_0057_sync 69 l
+2011_09_26/2011_09_26_drive_0028_sync 110 r
+2011_09_26/2011_09_26_drive_0087_sync 563 l
+2011_09_26/2011_09_26_drive_0104_sync 309 l
+2011_09_30/2011_09_30_drive_0034_sync 925 l
+2011_09_30/2011_09_30_drive_0028_sync 1938 r
+2011_09_30/2011_09_30_drive_0028_sync 5105 l
+2011_09_30/2011_09_30_drive_0028_sync 3486 l
+2011_09_26/2011_09_26_drive_0079_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 4577 l
+2011_09_30/2011_09_30_drive_0028_sync 3025 r
+2011_10_03/2011_10_03_drive_0034_sync 2039 l
+2011_09_30/2011_09_30_drive_0028_sync 2771 r
+2011_09_26/2011_09_26_drive_0095_sync 51 l
+2011_09_26/2011_09_26_drive_0032_sync 113 l
+2011_09_30/2011_09_30_drive_0020_sync 1082 l
+2011_10_03/2011_10_03_drive_0034_sync 3717 r
+2011_09_29/2011_09_29_drive_0004_sync 196 l
+2011_10_03/2011_10_03_drive_0042_sync 631 l
+2011_09_30/2011_09_30_drive_0034_sync 1221 l
+2011_09_30/2011_09_30_drive_0020_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 989 r
+2011_09_30/2011_09_30_drive_0028_sync 4980 r
+2011_10_03/2011_10_03_drive_0034_sync 1048 r
+2011_10_03/2011_10_03_drive_0034_sync 4377 l
+2011_09_26/2011_09_26_drive_0022_sync 702 l
+2011_10_03/2011_10_03_drive_0034_sync 2521 r
+2011_09_30/2011_09_30_drive_0033_sync 1502 r
+2011_09_30/2011_09_30_drive_0033_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 1064 r
+2011_09_30/2011_09_30_drive_0020_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 2038 r
+2011_09_30/2011_09_30_drive_0028_sync 2963 l
+2011_09_30/2011_09_30_drive_0034_sync 43 r
+2011_09_26/2011_09_26_drive_0019_sync 158 l
+2011_09_26/2011_09_26_drive_0005_sync 114 l
+2011_10_03/2011_10_03_drive_0034_sync 3973 l
+2011_09_26/2011_09_26_drive_0095_sync 151 l
+2011_09_26/2011_09_26_drive_0087_sync 726 r
+2011_09_30/2011_09_30_drive_0020_sync 865 r
+2011_09_26/2011_09_26_drive_0014_sync 146 l
+2011_09_28/2011_09_28_drive_0001_sync 94 r
+2011_09_26/2011_09_26_drive_0022_sync 766 r
+2011_09_26/2011_09_26_drive_0018_sync 47 l
+2011_09_26/2011_09_26_drive_0061_sync 305 r
+2011_09_30/2011_09_30_drive_0033_sync 1093 r
+2011_09_26/2011_09_26_drive_0061_sync 137 r
+2011_09_30/2011_09_30_drive_0028_sync 2225 r
+2011_09_26/2011_09_26_drive_0061_sync 368 r
+2011_09_26/2011_09_26_drive_0039_sync 312 r
+2011_09_30/2011_09_30_drive_0033_sync 1138 r
+2011_09_29/2011_09_29_drive_0004_sync 217 l
+2011_10_03/2011_10_03_drive_0034_sync 1173 r
+2011_10_03/2011_10_03_drive_0034_sync 2852 r
+2011_10_03/2011_10_03_drive_0034_sync 3306 l
+2011_09_30/2011_09_30_drive_0028_sync 4039 r
+2011_09_26/2011_09_26_drive_0079_sync 1 l
+2011_09_30/2011_09_30_drive_0034_sync 788 r
+2011_10_03/2011_10_03_drive_0042_sync 1091 l
+2011_09_26/2011_09_26_drive_0057_sync 145 r
+2011_09_26/2011_09_26_drive_0095_sync 26 r
+2011_09_29/2011_09_29_drive_0004_sync 283 l
+2011_09_28/2011_09_28_drive_0001_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 4438 l
+2011_10_03/2011_10_03_drive_0034_sync 3109 r
+2011_09_30/2011_09_30_drive_0028_sync 3401 l
+2011_09_30/2011_09_30_drive_0020_sync 380 r
+2011_09_30/2011_09_30_drive_0020_sync 747 l
+2011_09_30/2011_09_30_drive_0028_sync 229 r
+2011_09_30/2011_09_30_drive_0033_sync 20 l
+2011_09_26/2011_09_26_drive_0022_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 966 l
+2011_10_03/2011_10_03_drive_0034_sync 1703 l
+2011_09_26/2011_09_26_drive_0039_sync 110 l
+2011_10_03/2011_10_03_drive_0042_sync 609 r
+2011_09_26/2011_09_26_drive_0057_sync 294 l
+2011_09_30/2011_09_30_drive_0028_sync 3890 l
+2011_09_26/2011_09_26_drive_0095_sync 42 l
+2011_09_26/2011_09_26_drive_0070_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 2990 r
+2011_09_26/2011_09_26_drive_0015_sync 34 l
+2011_10_03/2011_10_03_drive_0034_sync 641 r
+2011_09_26/2011_09_26_drive_0022_sync 410 r
+2011_09_26/2011_09_26_drive_0057_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 3575 l
+2011_10_03/2011_10_03_drive_0034_sync 3431 r
+2011_09_30/2011_09_30_drive_0034_sync 995 l
+2011_09_26/2011_09_26_drive_0091_sync 289 l
+2011_10_03/2011_10_03_drive_0034_sync 4352 r
+2011_09_30/2011_09_30_drive_0034_sync 547 l
+2011_09_30/2011_09_30_drive_0028_sync 2902 r
+2011_09_26/2011_09_26_drive_0070_sync 316 r
+2011_09_30/2011_09_30_drive_0020_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 4404 r
+2011_09_26/2011_09_26_drive_0095_sync 133 r
+2011_09_30/2011_09_30_drive_0034_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 4281 r
+2011_10_03/2011_10_03_drive_0034_sync 2412 r
+2011_09_30/2011_09_30_drive_0028_sync 5102 r
+2011_09_30/2011_09_30_drive_0028_sync 3055 l
+2011_09_30/2011_09_30_drive_0034_sync 397 r
+2011_09_30/2011_09_30_drive_0034_sync 895 r
+2011_09_26/2011_09_26_drive_0039_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 1836 r
+2011_09_30/2011_09_30_drive_0020_sync 779 l
+2011_09_30/2011_09_30_drive_0028_sync 1647 r
+2011_10_03/2011_10_03_drive_0034_sync 1170 l
+2011_09_26/2011_09_26_drive_0014_sync 189 r
+2011_09_30/2011_09_30_drive_0033_sync 1533 l
+2011_09_30/2011_09_30_drive_0033_sync 247 r
+2011_09_26/2011_09_26_drive_0005_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 2273 r
+2011_09_30/2011_09_30_drive_0034_sync 464 l
+2011_09_30/2011_09_30_drive_0020_sync 806 l
+2011_09_26/2011_09_26_drive_0017_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 306 r
+2011_10_03/2011_10_03_drive_0034_sync 120 r
+2011_09_26/2011_09_26_drive_0070_sync 384 l
+2011_09_30/2011_09_30_drive_0028_sync 2196 r
+2011_09_30/2011_09_30_drive_0033_sync 1199 r
+2011_09_26/2011_09_26_drive_0032_sync 320 l
+2011_10_03/2011_10_03_drive_0034_sync 3112 l
+2011_09_26/2011_09_26_drive_0104_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 4454 l
+2011_09_26/2011_09_26_drive_0087_sync 375 l
+2011_09_26/2011_09_26_drive_0028_sync 124 r
+2011_09_30/2011_09_30_drive_0033_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 3737 r
+2011_09_26/2011_09_26_drive_0028_sync 415 r
+2011_09_26/2011_09_26_drive_0091_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 276 l
+2011_09_30/2011_09_30_drive_0028_sync 1013 l
+2011_09_29/2011_09_29_drive_0004_sync 332 r
+2011_09_26/2011_09_26_drive_0039_sync 43 l
+2011_09_30/2011_09_30_drive_0034_sync 738 l
+2011_09_26/2011_09_26_drive_0039_sync 179 r
+2011_10_03/2011_10_03_drive_0034_sync 517 l
+2011_09_26/2011_09_26_drive_0019_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 216 r
+2011_09_30/2011_09_30_drive_0020_sync 969 l
+2011_09_30/2011_09_30_drive_0028_sync 1776 l
+2011_09_30/2011_09_30_drive_0028_sync 2043 r
+2011_09_26/2011_09_26_drive_0001_sync 47 r
+2011_10_03/2011_10_03_drive_0034_sync 326 l
+2011_09_30/2011_09_30_drive_0028_sync 2289 l
+2011_09_26/2011_09_26_drive_0091_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 2658 r
+2011_09_26/2011_09_26_drive_0087_sync 602 r
+2011_09_30/2011_09_30_drive_0028_sync 3232 l
+2011_10_03/2011_10_03_drive_0034_sync 298 r
+2011_09_26/2011_09_26_drive_0032_sync 350 r
+2011_09_26/2011_09_26_drive_0087_sync 409 r
+2011_09_26/2011_09_26_drive_0014_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 3240 l
+2011_09_30/2011_09_30_drive_0028_sync 2517 r
+2011_10_03/2011_10_03_drive_0034_sync 3693 r
+2011_09_26/2011_09_26_drive_0087_sync 455 l
+2011_09_30/2011_09_30_drive_0034_sync 71 l
+2011_09_30/2011_09_30_drive_0033_sync 1241 l
+2011_10_03/2011_10_03_drive_0034_sync 871 r
+2011_10_03/2011_10_03_drive_0034_sync 4056 r
+2011_09_26/2011_09_26_drive_0104_sync 280 r
+2011_09_26/2011_09_26_drive_0028_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 3700 r
+2011_10_03/2011_10_03_drive_0034_sync 989 r
+2011_10_03/2011_10_03_drive_0034_sync 3482 l
+2011_09_26/2011_09_26_drive_0039_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 947 r
+2011_09_26/2011_09_26_drive_0022_sync 138 l
+2011_09_30/2011_09_30_drive_0033_sync 1251 l
+2011_10_03/2011_10_03_drive_0034_sync 2586 l
+2011_09_30/2011_09_30_drive_0034_sync 460 l
+2011_09_30/2011_09_30_drive_0028_sync 5016 r
+2011_09_30/2011_09_30_drive_0028_sync 1557 r
+2011_10_03/2011_10_03_drive_0034_sync 1981 r
+2011_09_26/2011_09_26_drive_0087_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 4153 l
+2011_10_03/2011_10_03_drive_0034_sync 383 l
+2011_10_03/2011_10_03_drive_0034_sync 2669 l
+2011_09_26/2011_09_26_drive_0051_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 1719 r
+2011_09_26/2011_09_26_drive_0095_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 3152 l
+2011_09_26/2011_09_26_drive_0005_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 1400 r
+2011_09_30/2011_09_30_drive_0020_sync 868 r
+2011_10_03/2011_10_03_drive_0034_sync 1898 l
+2011_09_26/2011_09_26_drive_0039_sync 294 r
+2011_09_30/2011_09_30_drive_0033_sync 832 l
+2011_10_03/2011_10_03_drive_0034_sync 3299 l
+2011_09_26/2011_09_26_drive_0022_sync 124 r
+2011_09_30/2011_09_30_drive_0033_sync 801 l
+2011_09_30/2011_09_30_drive_0020_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 3192 r
+2011_09_30/2011_09_30_drive_0020_sync 589 l
+2011_10_03/2011_10_03_drive_0034_sync 3167 l
+2011_09_26/2011_09_26_drive_0039_sync 256 l
+2011_10_03/2011_10_03_drive_0042_sync 769 l
+2011_09_30/2011_09_30_drive_0034_sync 243 r
+2011_10_03/2011_10_03_drive_0034_sync 4475 l
+2011_09_26/2011_09_26_drive_0091_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 4123 l
+2011_09_26/2011_09_26_drive_0079_sync 66 l
+2011_09_30/2011_09_30_drive_0034_sync 1154 l
+2011_09_26/2011_09_26_drive_0061_sync 105 r
+2011_09_26/2011_09_26_drive_0061_sync 515 r
+2011_10_03/2011_10_03_drive_0034_sync 2946 l
+2011_10_03/2011_10_03_drive_0042_sync 533 r
+2011_10_03/2011_10_03_drive_0034_sync 1390 r
+2011_10_03/2011_10_03_drive_0034_sync 456 l
+2011_09_30/2011_09_30_drive_0028_sync 1046 r
+2011_09_30/2011_09_30_drive_0028_sync 4988 l
+2011_09_30/2011_09_30_drive_0028_sync 1152 l
+2011_10_03/2011_10_03_drive_0034_sync 4003 r
+2011_09_26/2011_09_26_drive_0005_sync 115 l
+2011_09_26/2011_09_26_drive_0060_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 3541 r
+2011_09_26/2011_09_26_drive_0095_sync 208 r
+2011_09_26/2011_09_26_drive_0091_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 2296 r
+2011_09_26/2011_09_26_drive_0091_sync 317 l
+2011_09_26/2011_09_26_drive_0087_sync 520 r
+2011_10_03/2011_10_03_drive_0034_sync 453 r
+2011_09_26/2011_09_26_drive_0061_sync 263 l
+2011_09_26/2011_09_26_drive_0028_sync 34 l
+2011_09_26/2011_09_26_drive_0095_sync 126 r
+2011_09_26/2011_09_26_drive_0022_sync 441 l
+2011_09_26/2011_09_26_drive_0014_sync 139 l
+2011_09_26/2011_09_26_drive_0028_sync 365 r
+2011_09_30/2011_09_30_drive_0034_sync 490 l
+2011_09_26/2011_09_26_drive_0011_sync 221 l
+2011_09_30/2011_09_30_drive_0028_sync 2021 r
+2011_09_30/2011_09_30_drive_0034_sync 755 l
+2011_09_26/2011_09_26_drive_0028_sync 371 r
+2011_10_03/2011_10_03_drive_0034_sync 2097 l
+2011_09_30/2011_09_30_drive_0028_sync 2092 r
+2011_09_30/2011_09_30_drive_0033_sync 51 l
+2011_09_26/2011_09_26_drive_0070_sync 156 r
+2011_10_03/2011_10_03_drive_0034_sync 2921 l
+2011_10_03/2011_10_03_drive_0034_sync 3716 r
+2011_09_30/2011_09_30_drive_0034_sync 794 l
+2011_09_30/2011_09_30_drive_0028_sync 4325 r
+2011_10_03/2011_10_03_drive_0034_sync 4354 r
+2011_10_03/2011_10_03_drive_0034_sync 1080 l
+2011_09_26/2011_09_26_drive_0039_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 5053 l
+2011_09_30/2011_09_30_drive_0028_sync 1928 r
+2011_09_30/2011_09_30_drive_0028_sync 4451 r
+2011_10_03/2011_10_03_drive_0042_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 3411 r
+2011_09_30/2011_09_30_drive_0028_sync 4336 l
+2011_09_26/2011_09_26_drive_0061_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 3741 l
+2011_10_03/2011_10_03_drive_0034_sync 1240 r
+2011_09_26/2011_09_26_drive_0060_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 3209 r
+2011_10_03/2011_10_03_drive_0042_sync 1003 l
+2011_10_03/2011_10_03_drive_0034_sync 496 l
+2011_09_30/2011_09_30_drive_0033_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 3074 r
+2011_09_30/2011_09_30_drive_0034_sync 650 l
+2011_10_03/2011_10_03_drive_0034_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 4953 r
+2011_09_30/2011_09_30_drive_0020_sync 780 r
+2011_09_30/2011_09_30_drive_0028_sync 1350 r
+2011_10_03/2011_10_03_drive_0034_sync 4525 r
+2011_09_26/2011_09_26_drive_0035_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 511 r
+2011_09_26/2011_09_26_drive_0001_sync 1 r
+2011_09_30/2011_09_30_drive_0033_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 4128 l
+2011_09_30/2011_09_30_drive_0028_sync 3010 l
+2011_09_26/2011_09_26_drive_0087_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 3257 l
+2011_09_26/2011_09_26_drive_0028_sync 283 l
+2011_10_03/2011_10_03_drive_0034_sync 2026 r
+2011_09_26/2011_09_26_drive_0061_sync 303 l
+2011_10_03/2011_10_03_drive_0034_sync 2036 l
+2011_09_26/2011_09_26_drive_0091_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 140 l
+2011_09_30/2011_09_30_drive_0020_sync 916 r
+2011_09_26/2011_09_26_drive_0014_sync 25 l
+2011_10_03/2011_10_03_drive_0034_sync 546 l
+2011_09_30/2011_09_30_drive_0028_sync 2552 r
+2011_09_26/2011_09_26_drive_0057_sync 308 l
+2011_09_26/2011_09_26_drive_0091_sync 4 r
+2011_09_26/2011_09_26_drive_0001_sync 49 l
+2011_09_26/2011_09_26_drive_0095_sync 264 l
+2011_09_26/2011_09_26_drive_0095_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 1921 r
+2011_09_30/2011_09_30_drive_0028_sync 1622 r
+2011_10_03/2011_10_03_drive_0034_sync 4173 r
+2011_09_26/2011_09_26_drive_0019_sync 454 l
+2011_09_30/2011_09_30_drive_0034_sync 137 l
+2011_10_03/2011_10_03_drive_0034_sync 2737 l
+2011_09_30/2011_09_30_drive_0028_sync 453 r
+2011_10_03/2011_10_03_drive_0042_sync 574 l
+2011_09_26/2011_09_26_drive_0019_sync 328 l
+2011_09_30/2011_09_30_drive_0020_sync 966 l
+2011_09_28/2011_09_28_drive_0001_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 625 l
+2011_09_30/2011_09_30_drive_0028_sync 2218 r
+2011_09_30/2011_09_30_drive_0028_sync 1519 r
+2011_09_26/2011_09_26_drive_0087_sync 231 r
+2011_09_30/2011_09_30_drive_0034_sync 674 r
+2011_09_30/2011_09_30_drive_0020_sync 388 r
+2011_09_30/2011_09_30_drive_0028_sync 3168 l
+2011_09_26/2011_09_26_drive_0087_sync 217 r
+2011_09_26/2011_09_26_drive_0028_sync 331 r
+2011_09_26/2011_09_26_drive_0015_sync 294 r
+2011_09_29/2011_09_29_drive_0004_sync 154 r
+2011_10_03/2011_10_03_drive_0034_sync 190 r
+2011_10_03/2011_10_03_drive_0034_sync 3986 r
+2011_09_30/2011_09_30_drive_0020_sync 156 r
+2011_10_03/2011_10_03_drive_0042_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 658 l
+2011_10_03/2011_10_03_drive_0042_sync 693 l
+2011_09_30/2011_09_30_drive_0028_sync 4140 r
+2011_10_03/2011_10_03_drive_0042_sync 261 r
+2011_09_30/2011_09_30_drive_0028_sync 106 l
+2011_10_03/2011_10_03_drive_0042_sync 357 r
+2011_10_03/2011_10_03_drive_0042_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 4173 r
+2011_09_26/2011_09_26_drive_0019_sync 46 l
+2011_09_26/2011_09_26_drive_0061_sync 433 l
+2011_09_26/2011_09_26_drive_0070_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 1463 r
+2011_09_30/2011_09_30_drive_0028_sync 2498 r
+2011_10_03/2011_10_03_drive_0034_sync 1966 r
+2011_09_30/2011_09_30_drive_0028_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 543 l
+2011_09_30/2011_09_30_drive_0033_sync 1105 r
+2011_09_30/2011_09_30_drive_0028_sync 3885 r
+2011_09_26/2011_09_26_drive_0032_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 958 r
+2011_10_03/2011_10_03_drive_0034_sync 158 l
+2011_09_30/2011_09_30_drive_0034_sync 770 r
+2011_09_30/2011_09_30_drive_0033_sync 227 r
+2011_10_03/2011_10_03_drive_0034_sync 3330 r
+2011_09_26/2011_09_26_drive_0039_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 4758 r
+2011_09_26/2011_09_26_drive_0061_sync 591 l
+2011_10_03/2011_10_03_drive_0042_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 1030 r
+2011_09_26/2011_09_26_drive_0028_sync 303 r
+2011_09_26/2011_09_26_drive_0032_sync 9 l
+2011_10_03/2011_10_03_drive_0042_sync 48 r
+2011_09_26/2011_09_26_drive_0005_sync 55 r
+2011_09_30/2011_09_30_drive_0033_sync 532 l
+2011_09_30/2011_09_30_drive_0033_sync 753 l
+2011_10_03/2011_10_03_drive_0034_sync 1849 l
+2011_09_26/2011_09_26_drive_0039_sync 261 l
+2011_09_26/2011_09_26_drive_0039_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 2992 r
+2011_09_26/2011_09_26_drive_0001_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 4018 r
+2011_09_30/2011_09_30_drive_0034_sync 864 l
+2011_09_30/2011_09_30_drive_0034_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 2078 l
+2011_10_03/2011_10_03_drive_0034_sync 528 l
+2011_09_26/2011_09_26_drive_0051_sync 389 r
+2011_09_26/2011_09_26_drive_0001_sync 31 r
+2011_09_26/2011_09_26_drive_0039_sync 137 l
+2011_09_30/2011_09_30_drive_0033_sync 376 l
+2011_09_30/2011_09_30_drive_0033_sync 503 l
+2011_09_30/2011_09_30_drive_0028_sync 2190 l
+2011_09_26/2011_09_26_drive_0087_sync 656 l
+2011_10_03/2011_10_03_drive_0034_sync 3584 l
+2011_09_26/2011_09_26_drive_0087_sync 347 l
+2011_10_03/2011_10_03_drive_0042_sync 1076 r
+2011_09_26/2011_09_26_drive_0001_sync 95 r
+2011_09_30/2011_09_30_drive_0020_sync 175 l
+2011_10_03/2011_10_03_drive_0034_sync 454 l
+2011_09_26/2011_09_26_drive_0032_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 2218 l
+2011_10_03/2011_10_03_drive_0034_sync 4514 l
+2011_09_30/2011_09_30_drive_0028_sync 3265 r
+2011_09_30/2011_09_30_drive_0028_sync 3375 l
+2011_09_30/2011_09_30_drive_0028_sync 4434 l
+2011_09_26/2011_09_26_drive_0061_sync 691 r
+2011_09_30/2011_09_30_drive_0028_sync 1684 r
+2011_09_30/2011_09_30_drive_0028_sync 3484 r
+2011_09_30/2011_09_30_drive_0033_sync 622 l
+2011_10_03/2011_10_03_drive_0034_sync 3372 r
+2011_09_26/2011_09_26_drive_0018_sync 211 l
+2011_09_26/2011_09_26_drive_0015_sync 194 l
+2011_09_29/2011_09_29_drive_0004_sync 267 r
+2011_10_03/2011_10_03_drive_0034_sync 4511 r
+2011_10_03/2011_10_03_drive_0034_sync 2480 r
+2011_09_30/2011_09_30_drive_0028_sync 4118 l
+2011_09_26/2011_09_26_drive_0014_sync 88 r
+2011_09_26/2011_09_26_drive_0039_sync 127 l
+2011_09_30/2011_09_30_drive_0028_sync 2790 l
+2011_09_26/2011_09_26_drive_0015_sync 177 l
+2011_09_26/2011_09_26_drive_0095_sync 159 r
+2011_09_30/2011_09_30_drive_0028_sync 995 l
+2011_09_26/2011_09_26_drive_0060_sync 75 l
+2011_09_30/2011_09_30_drive_0034_sync 207 l
+2011_09_26/2011_09_26_drive_0032_sync 141 r
+2011_09_26/2011_09_26_drive_0015_sync 55 r
+2011_09_30/2011_09_30_drive_0033_sync 1451 l
+2011_09_30/2011_09_30_drive_0028_sync 1242 r
+2011_09_30/2011_09_30_drive_0034_sync 184 r
+2011_09_26/2011_09_26_drive_0079_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 3424 r
+2011_10_03/2011_10_03_drive_0034_sync 1195 r
+2011_09_26/2011_09_26_drive_0087_sync 643 l
+2011_10_03/2011_10_03_drive_0034_sync 3026 r
+2011_09_29/2011_09_29_drive_0004_sync 301 l
+2011_09_26/2011_09_26_drive_0028_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 3045 l
+2011_09_26/2011_09_26_drive_0039_sync 161 l
+2011_10_03/2011_10_03_drive_0042_sync 1013 r
+2011_09_30/2011_09_30_drive_0028_sync 5033 r
+2011_09_30/2011_09_30_drive_0028_sync 598 l
+2011_09_30/2011_09_30_drive_0033_sync 594 r
+2011_10_03/2011_10_03_drive_0042_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 897 r
+2011_10_03/2011_10_03_drive_0034_sync 4115 l
+2011_09_30/2011_09_30_drive_0028_sync 1592 r
+2011_09_26/2011_09_26_drive_0087_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 3604 l
+2011_09_30/2011_09_30_drive_0028_sync 4257 l
+2011_09_26/2011_09_26_drive_0018_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 4193 l
+2011_09_26/2011_09_26_drive_0001_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 4564 l
+2011_10_03/2011_10_03_drive_0034_sync 450 l
+2011_10_03/2011_10_03_drive_0034_sync 158 r
+2011_09_26/2011_09_26_drive_0087_sync 290 l
+2011_09_26/2011_09_26_drive_0028_sync 10 l
+2011_10_03/2011_10_03_drive_0034_sync 2397 r
+2011_09_30/2011_09_30_drive_0033_sync 826 l
+2011_09_30/2011_09_30_drive_0028_sync 3413 r
+2011_10_03/2011_10_03_drive_0034_sync 1709 l
+2011_09_26/2011_09_26_drive_0022_sync 669 l
+2011_09_29/2011_09_29_drive_0026_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 2310 l
+2011_09_26/2011_09_26_drive_0017_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 2807 l
+2011_09_30/2011_09_30_drive_0028_sync 3841 l
+2011_09_29/2011_09_29_drive_0026_sync 80 l
+2011_09_30/2011_09_30_drive_0028_sync 4923 l
+2011_09_26/2011_09_26_drive_0091_sync 15 r
+2011_09_30/2011_09_30_drive_0020_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 3492 r
+2011_10_03/2011_10_03_drive_0042_sync 409 l
+2011_09_30/2011_09_30_drive_0028_sync 2787 r
+2011_09_26/2011_09_26_drive_0039_sync 348 r
+2011_09_29/2011_09_29_drive_0004_sync 50 r
+2011_10_03/2011_10_03_drive_0034_sync 4467 l
+2011_09_26/2011_09_26_drive_0070_sync 387 r
+2011_10_03/2011_10_03_drive_0042_sync 35 r
+2011_09_30/2011_09_30_drive_0033_sync 744 r
+2011_09_26/2011_09_26_drive_0079_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 4916 l
+2011_09_30/2011_09_30_drive_0020_sync 37 l
+2011_09_26/2011_09_26_drive_0087_sync 192 r
+2011_09_26/2011_09_26_drive_0015_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 2032 r
+2011_09_30/2011_09_30_drive_0020_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 3484 l
+2011_09_26/2011_09_26_drive_0061_sync 547 r
+2011_10_03/2011_10_03_drive_0034_sync 1766 r
+2011_09_26/2011_09_26_drive_0087_sync 632 l
+2011_09_26/2011_09_26_drive_0019_sync 411 r
+2011_09_30/2011_09_30_drive_0028_sync 2246 r
+2011_09_30/2011_09_30_drive_0033_sync 612 r
+2011_09_30/2011_09_30_drive_0033_sync 587 l
+2011_09_26/2011_09_26_drive_0061_sync 363 l
+2011_10_03/2011_10_03_drive_0042_sync 133 r
+2011_09_30/2011_09_30_drive_0033_sync 393 r
+2011_09_30/2011_09_30_drive_0028_sync 3903 l
+2011_09_26/2011_09_26_drive_0091_sync 175 r
+2011_10_03/2011_10_03_drive_0034_sync 3653 r
+2011_09_29/2011_09_29_drive_0004_sync 156 r
+2011_09_26/2011_09_26_drive_0070_sync 266 l
+2011_09_30/2011_09_30_drive_0034_sync 337 l
+2011_09_26/2011_09_26_drive_0051_sync 354 r
+2011_09_26/2011_09_26_drive_0018_sync 31 l
+2011_09_30/2011_09_30_drive_0033_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 3030 r
+2011_09_30/2011_09_30_drive_0028_sync 856 r
+2011_10_03/2011_10_03_drive_0034_sync 4350 r
+2011_09_30/2011_09_30_drive_0028_sync 4141 l
+2011_09_26/2011_09_26_drive_0028_sync 315 l
+2011_09_26/2011_09_26_drive_0011_sync 103 l
+2011_09_30/2011_09_30_drive_0028_sync 4962 r
+2011_09_29/2011_09_29_drive_0004_sync 260 l
+2011_10_03/2011_10_03_drive_0034_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 5153 r
+2011_09_30/2011_09_30_drive_0020_sync 485 l
+2011_09_26/2011_09_26_drive_0035_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 2005 r
+2011_09_30/2011_09_30_drive_0028_sync 4435 r
+2011_09_30/2011_09_30_drive_0033_sync 533 l
+2011_10_03/2011_10_03_drive_0034_sync 314 l
+2011_09_26/2011_09_26_drive_0015_sync 134 r
+2011_09_26/2011_09_26_drive_0060_sync 44 r
+2011_09_30/2011_09_30_drive_0028_sync 3864 r
+2011_09_30/2011_09_30_drive_0020_sync 829 r
+2011_10_03/2011_10_03_drive_0034_sync 411 r
+2011_10_03/2011_10_03_drive_0034_sync 3291 l
+2011_09_30/2011_09_30_drive_0034_sync 45 l
+2011_09_30/2011_09_30_drive_0033_sync 1492 l
+2011_09_26/2011_09_26_drive_0039_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 2024 r
+2011_09_26/2011_09_26_drive_0057_sync 4 l
+2011_09_30/2011_09_30_drive_0033_sync 375 l
+2011_09_26/2011_09_26_drive_0070_sync 238 r
+2011_10_03/2011_10_03_drive_0034_sync 1567 r
+2011_09_30/2011_09_30_drive_0028_sync 2770 l
+2011_10_03/2011_10_03_drive_0042_sync 930 l
+2011_09_26/2011_09_26_drive_0014_sync 200 l
+2011_09_26/2011_09_26_drive_0104_sync 19 l
+2011_09_30/2011_09_30_drive_0028_sync 3904 r
+2011_09_30/2011_09_30_drive_0028_sync 413 r
+2011_09_30/2011_09_30_drive_0028_sync 4046 l
+2011_09_26/2011_09_26_drive_0015_sync 102 l
+2011_09_26/2011_09_26_drive_0051_sync 391 r
+2011_09_26/2011_09_26_drive_0011_sync 146 l
+2011_09_30/2011_09_30_drive_0020_sync 899 r
+2011_09_30/2011_09_30_drive_0028_sync 2208 l
+2011_10_03/2011_10_03_drive_0042_sync 420 r
+2011_10_03/2011_10_03_drive_0034_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 405 l
+2011_09_26/2011_09_26_drive_0011_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 3495 r
+2011_10_03/2011_10_03_drive_0034_sync 460 l
+2011_09_26/2011_09_26_drive_0018_sync 57 l
+2011_10_03/2011_10_03_drive_0042_sync 994 r
+2011_09_30/2011_09_30_drive_0033_sync 938 l
+2011_10_03/2011_10_03_drive_0034_sync 3725 l
+2011_10_03/2011_10_03_drive_0034_sync 4571 l
+2011_09_30/2011_09_30_drive_0020_sync 906 r
+2011_09_26/2011_09_26_drive_0061_sync 428 l
+2011_09_30/2011_09_30_drive_0028_sync 2348 l
+2011_09_26/2011_09_26_drive_0087_sync 678 r
+2011_09_29/2011_09_29_drive_0026_sync 47 r
+2011_09_26/2011_09_26_drive_0039_sync 351 r
+2011_09_26/2011_09_26_drive_0061_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 286 r
+2011_09_26/2011_09_26_drive_0051_sync 136 r
+2011_09_30/2011_09_30_drive_0033_sync 1110 r
+2011_09_26/2011_09_26_drive_0022_sync 685 r
+2011_09_26/2011_09_26_drive_0018_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 558 r
+2011_09_26/2011_09_26_drive_0095_sync 208 l
+2011_09_26/2011_09_26_drive_0104_sync 266 r
+2011_09_30/2011_09_30_drive_0033_sync 870 l
+2011_10_03/2011_10_03_drive_0034_sync 539 r
+2011_09_26/2011_09_26_drive_0095_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3543 r
+2011_09_26/2011_09_26_drive_0032_sync 254 l
+2011_09_30/2011_09_30_drive_0028_sync 1554 r
+2011_10_03/2011_10_03_drive_0034_sync 2908 l
+2011_09_26/2011_09_26_drive_0022_sync 386 r
+2011_09_30/2011_09_30_drive_0028_sync 2499 r
+2011_10_03/2011_10_03_drive_0034_sync 3300 r
+2011_09_26/2011_09_26_drive_0019_sync 122 r
+2011_09_30/2011_09_30_drive_0034_sync 531 l
+2011_10_03/2011_10_03_drive_0034_sync 3064 l
+2011_09_30/2011_09_30_drive_0028_sync 3645 r
+2011_09_30/2011_09_30_drive_0020_sync 796 l
+2011_09_30/2011_09_30_drive_0034_sync 357 l
+2011_09_30/2011_09_30_drive_0034_sync 777 l
+2011_10_03/2011_10_03_drive_0034_sync 1014 l
+2011_09_26/2011_09_26_drive_0022_sync 617 l
+2011_09_30/2011_09_30_drive_0033_sync 1043 l
+2011_09_26/2011_09_26_drive_0061_sync 86 l
+2011_09_30/2011_09_30_drive_0028_sync 2371 r
+2011_09_30/2011_09_30_drive_0028_sync 530 r
+2011_09_30/2011_09_30_drive_0028_sync 2135 r
+2011_09_30/2011_09_30_drive_0028_sync 525 r
+2011_09_30/2011_09_30_drive_0028_sync 1246 l
+2011_09_26/2011_09_26_drive_0051_sync 293 r
+2011_09_26/2011_09_26_drive_0011_sync 41 r
+2011_09_26/2011_09_26_drive_0095_sync 4 l
+2011_09_30/2011_09_30_drive_0020_sync 489 r
+2011_09_26/2011_09_26_drive_0057_sync 269 l
+2011_10_03/2011_10_03_drive_0034_sync 2162 r
+2011_09_30/2011_09_30_drive_0028_sync 1844 r
+2011_10_03/2011_10_03_drive_0034_sync 4436 l
+2011_10_03/2011_10_03_drive_0034_sync 4384 l
+2011_09_30/2011_09_30_drive_0028_sync 488 l
+2011_10_03/2011_10_03_drive_0034_sync 3638 r
+2011_09_26/2011_09_26_drive_0019_sync 167 r
+2011_09_30/2011_09_30_drive_0028_sync 3370 l
+2011_09_26/2011_09_26_drive_0032_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 2302 l
+2011_09_30/2011_09_30_drive_0028_sync 4152 r
+2011_10_03/2011_10_03_drive_0034_sync 4165 r
+2011_09_29/2011_09_29_drive_0026_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 881 r
+2011_09_26/2011_09_26_drive_0095_sync 16 l
+2011_09_30/2011_09_30_drive_0033_sync 1048 r
+2011_10_03/2011_10_03_drive_0034_sync 2495 l
+2011_09_30/2011_09_30_drive_0028_sync 4237 l
+2011_09_26/2011_09_26_drive_0015_sync 165 l
+2011_09_30/2011_09_30_drive_0020_sync 63 r
+2011_09_30/2011_09_30_drive_0034_sync 520 l
+2011_09_26/2011_09_26_drive_0017_sync 78 l
+2011_09_26/2011_09_26_drive_0017_sync 76 l
+2011_09_26/2011_09_26_drive_0057_sync 310 r
+2011_09_26/2011_09_26_drive_0019_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 259 r
+2011_09_30/2011_09_30_drive_0034_sync 733 r
+2011_09_28/2011_09_28_drive_0001_sync 16 l
+2011_09_26/2011_09_26_drive_0051_sync 234 l
+2011_09_26/2011_09_26_drive_0018_sync 38 r
+2011_09_29/2011_09_29_drive_0004_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 3467 r
+2011_09_26/2011_09_26_drive_0022_sync 306 r
+2011_09_26/2011_09_26_drive_0070_sync 346 l
+2011_09_30/2011_09_30_drive_0028_sync 2813 l
+2011_09_26/2011_09_26_drive_0022_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 27 r
+2011_09_26/2011_09_26_drive_0022_sync 540 r
+2011_10_03/2011_10_03_drive_0034_sync 188 r
+2011_09_30/2011_09_30_drive_0020_sync 426 r
+2011_09_26/2011_09_26_drive_0028_sync 16 r
+2011_09_30/2011_09_30_drive_0033_sync 209 r
+2011_09_30/2011_09_30_drive_0033_sync 292 l
+2011_09_26/2011_09_26_drive_0095_sync 96 l
+2011_09_26/2011_09_26_drive_0022_sync 242 r
+2011_10_03/2011_10_03_drive_0034_sync 1747 l
+2011_09_30/2011_09_30_drive_0034_sync 1 r
+2011_09_26/2011_09_26_drive_0022_sync 483 r
+2011_09_30/2011_09_30_drive_0028_sync 1919 l
+2011_09_30/2011_09_30_drive_0028_sync 2275 l
+2011_10_03/2011_10_03_drive_0034_sync 2727 r
+2011_10_03/2011_10_03_drive_0042_sync 837 l
+2011_09_30/2011_09_30_drive_0033_sync 1292 r
+2011_09_30/2011_09_30_drive_0028_sync 2039 l
+2011_10_03/2011_10_03_drive_0034_sync 2084 r
+2011_09_30/2011_09_30_drive_0028_sync 971 r
+2011_09_30/2011_09_30_drive_0028_sync 2217 l
+2011_10_03/2011_10_03_drive_0034_sync 3564 r
+2011_10_03/2011_10_03_drive_0034_sync 3459 r
+2011_09_26/2011_09_26_drive_0028_sync 251 r
+2011_09_26/2011_09_26_drive_0070_sync 279 l
+2011_10_03/2011_10_03_drive_0034_sync 3454 l
+2011_09_30/2011_09_30_drive_0028_sync 1861 r
+2011_09_26/2011_09_26_drive_0015_sync 110 r
+2011_09_26/2011_09_26_drive_0028_sync 204 l
+2011_09_26/2011_09_26_drive_0001_sync 106 l
+2011_09_26/2011_09_26_drive_0039_sync 75 l
+2011_09_26/2011_09_26_drive_0039_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 1224 l
+2011_09_28/2011_09_28_drive_0001_sync 81 r
+2011_09_26/2011_09_26_drive_0032_sync 110 l
+2011_09_26/2011_09_26_drive_0035_sync 97 r
+2011_09_30/2011_09_30_drive_0033_sync 977 l
+2011_09_26/2011_09_26_drive_0087_sync 485 l
+2011_09_30/2011_09_30_drive_0020_sync 631 l
+2011_10_03/2011_10_03_drive_0034_sync 2020 r
+2011_09_26/2011_09_26_drive_0022_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 4126 r
+2011_09_30/2011_09_30_drive_0028_sync 513 r
+2011_09_30/2011_09_30_drive_0028_sync 1903 l
+2011_09_30/2011_09_30_drive_0028_sync 2518 r
+2011_09_30/2011_09_30_drive_0033_sync 896 r
+2011_09_26/2011_09_26_drive_0079_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 3241 l
+2011_09_30/2011_09_30_drive_0028_sync 122 r
+2011_09_29/2011_09_29_drive_0004_sync 263 l
+2011_09_26/2011_09_26_drive_0087_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 1151 r
+2011_09_26/2011_09_26_drive_0070_sync 383 l
+2011_09_30/2011_09_30_drive_0034_sync 752 l
+2011_09_26/2011_09_26_drive_0104_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 3081 r
+2011_10_03/2011_10_03_drive_0034_sync 1421 l
+2011_09_26/2011_09_26_drive_0019_sync 379 r
+2011_10_03/2011_10_03_drive_0034_sync 2854 r
+2011_10_03/2011_10_03_drive_0034_sync 3817 r
+2011_09_30/2011_09_30_drive_0020_sync 452 r
+2011_09_29/2011_09_29_drive_0026_sync 74 l
+2011_09_26/2011_09_26_drive_0014_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 3306 r
+2011_10_03/2011_10_03_drive_0034_sync 1709 r
+2011_09_30/2011_09_30_drive_0028_sync 2377 l
+2011_09_30/2011_09_30_drive_0020_sync 0 l
+2011_10_03/2011_10_03_drive_0042_sync 818 r
+2011_09_26/2011_09_26_drive_0057_sync 32 r
+2011_09_26/2011_09_26_drive_0014_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 1261 r
+2011_09_26/2011_09_26_drive_0028_sync 374 l
+2011_09_26/2011_09_26_drive_0018_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 4554 r
+2011_09_30/2011_09_30_drive_0020_sync 425 l
+2011_09_26/2011_09_26_drive_0070_sync 333 r
+2011_10_03/2011_10_03_drive_0034_sync 3297 l
+2011_10_03/2011_10_03_drive_0034_sync 1696 l
+2011_10_03/2011_10_03_drive_0034_sync 1867 r
+2011_09_26/2011_09_26_drive_0087_sync 337 r
+2011_10_03/2011_10_03_drive_0034_sync 3381 r
+2011_09_26/2011_09_26_drive_0018_sync 150 r
+2011_09_26/2011_09_26_drive_0014_sync 215 l
+2011_10_03/2011_10_03_drive_0042_sync 798 r
+2011_09_30/2011_09_30_drive_0033_sync 84 r
+2011_09_26/2011_09_26_drive_0057_sync 103 r
+2011_09_29/2011_09_29_drive_0026_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 2543 l
+2011_09_30/2011_09_30_drive_0034_sync 967 l
+2011_09_30/2011_09_30_drive_0028_sync 2798 l
+2011_09_30/2011_09_30_drive_0020_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 323 l
+2011_10_03/2011_10_03_drive_0034_sync 848 l
+2011_09_30/2011_09_30_drive_0033_sync 417 l
+2011_09_26/2011_09_26_drive_0061_sync 690 l
+2011_09_26/2011_09_26_drive_0019_sync 466 r
+2011_10_03/2011_10_03_drive_0042_sync 290 r
+2011_09_26/2011_09_26_drive_0022_sync 519 l
+2011_10_03/2011_10_03_drive_0034_sync 2939 r
+2011_09_30/2011_09_30_drive_0028_sync 1190 l
+2011_09_30/2011_09_30_drive_0028_sync 1264 r
+2011_09_30/2011_09_30_drive_0033_sync 908 r
+2011_09_30/2011_09_30_drive_0028_sync 533 l
+2011_09_26/2011_09_26_drive_0022_sync 104 l
+2011_09_30/2011_09_30_drive_0020_sync 837 r
+2011_10_03/2011_10_03_drive_0034_sync 3313 l
+2011_09_30/2011_09_30_drive_0028_sync 3468 l
+2011_09_30/2011_09_30_drive_0028_sync 2801 r
+2011_09_30/2011_09_30_drive_0028_sync 2692 r
+2011_09_26/2011_09_26_drive_0028_sync 220 r
+2011_09_29/2011_09_29_drive_0026_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 1892 l
+2011_10_03/2011_10_03_drive_0034_sync 3851 r
+2011_10_03/2011_10_03_drive_0034_sync 1160 r
+2011_09_30/2011_09_30_drive_0034_sync 802 r
+2011_10_03/2011_10_03_drive_0034_sync 2112 r
+2011_09_26/2011_09_26_drive_0032_sync 294 r
+2011_09_26/2011_09_26_drive_0051_sync 170 l
+2011_10_03/2011_10_03_drive_0042_sync 76 r
+2011_09_26/2011_09_26_drive_0019_sync 451 l
+2011_09_30/2011_09_30_drive_0033_sync 895 r
+2011_09_26/2011_09_26_drive_0087_sync 423 l
+2011_09_30/2011_09_30_drive_0033_sync 929 l
+2011_10_03/2011_10_03_drive_0034_sync 2200 l
+2011_09_30/2011_09_30_drive_0033_sync 797 l
+2011_09_30/2011_09_30_drive_0020_sync 969 r
+2011_10_03/2011_10_03_drive_0042_sync 992 r
+2011_09_26/2011_09_26_drive_0061_sync 588 l
+2011_10_03/2011_10_03_drive_0042_sync 57 r
+2011_09_26/2011_09_26_drive_0051_sync 247 l
+2011_10_03/2011_10_03_drive_0042_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 2146 r
+2011_09_30/2011_09_30_drive_0028_sync 4905 l
+2011_10_03/2011_10_03_drive_0034_sync 1135 l
+2011_09_26/2011_09_26_drive_0032_sync 247 r
+2011_09_30/2011_09_30_drive_0028_sync 347 r
+2011_09_26/2011_09_26_drive_0032_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 4138 r
+2011_09_26/2011_09_26_drive_0028_sync 354 l
+2011_10_03/2011_10_03_drive_0042_sync 531 l
+2011_09_30/2011_09_30_drive_0033_sync 1543 r
+2011_10_03/2011_10_03_drive_0034_sync 2463 r
+2011_10_03/2011_10_03_drive_0042_sync 1038 r
+2011_09_26/2011_09_26_drive_0061_sync 156 l
+2011_10_03/2011_10_03_drive_0034_sync 2858 l
+2011_09_26/2011_09_26_drive_0091_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 1267 r
+2011_09_26/2011_09_26_drive_0095_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 956 r
+2011_09_26/2011_09_26_drive_0035_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 3606 r
+2011_09_30/2011_09_30_drive_0028_sync 4658 l
+2011_09_30/2011_09_30_drive_0028_sync 3723 l
+2011_09_30/2011_09_30_drive_0033_sync 746 r
+2011_09_26/2011_09_26_drive_0057_sync 243 l
+2011_09_26/2011_09_26_drive_0019_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 4869 l
+2011_10_03/2011_10_03_drive_0034_sync 4161 l
+2011_10_03/2011_10_03_drive_0034_sync 3205 r
+2011_09_30/2011_09_30_drive_0033_sync 833 l
+2011_09_30/2011_09_30_drive_0028_sync 586 l
+2011_09_30/2011_09_30_drive_0033_sync 466 r
+2011_09_26/2011_09_26_drive_0032_sync 135 l
+2011_09_30/2011_09_30_drive_0028_sync 1987 r
+2011_10_03/2011_10_03_drive_0034_sync 1205 r
+2011_10_03/2011_10_03_drive_0034_sync 1144 r
+2011_09_30/2011_09_30_drive_0033_sync 397 l
+2011_09_30/2011_09_30_drive_0028_sync 4585 l
+2011_09_30/2011_09_30_drive_0028_sync 3813 l
+2011_09_30/2011_09_30_drive_0020_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 1177 r
+2011_09_30/2011_09_30_drive_0028_sync 1977 l
+2011_09_30/2011_09_30_drive_0028_sync 1990 l
+2011_09_26/2011_09_26_drive_0070_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 4087 r
+2011_09_26/2011_09_26_drive_0011_sync 14 r
+2011_10_03/2011_10_03_drive_0042_sync 152 l
+2011_09_26/2011_09_26_drive_0022_sync 476 r
+2011_09_26/2011_09_26_drive_0028_sync 69 l
+2011_09_30/2011_09_30_drive_0028_sync 1688 l
+2011_10_03/2011_10_03_drive_0034_sync 2329 r
+2011_09_30/2011_09_30_drive_0020_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 1088 r
+2011_10_03/2011_10_03_drive_0034_sync 3411 l
+2011_09_26/2011_09_26_drive_0061_sync 3 r
+2011_09_26/2011_09_26_drive_0051_sync 365 r
+2011_09_30/2011_09_30_drive_0033_sync 1507 r
+2011_10_03/2011_10_03_drive_0042_sync 984 r
+2011_09_26/2011_09_26_drive_0014_sync 260 l
+2011_09_26/2011_09_26_drive_0015_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 3092 l
+2011_09_30/2011_09_30_drive_0033_sync 1217 l
+2011_09_30/2011_09_30_drive_0028_sync 1340 r
+2011_09_26/2011_09_26_drive_0039_sync 231 l
+2011_09_26/2011_09_26_drive_0022_sync 742 l
+2011_09_30/2011_09_30_drive_0033_sync 1204 r
+2011_09_26/2011_09_26_drive_0095_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 343 r
+2011_09_26/2011_09_26_drive_0057_sync 175 l
+2011_10_03/2011_10_03_drive_0042_sync 799 l
+2011_10_03/2011_10_03_drive_0042_sync 1006 l
+2011_09_26/2011_09_26_drive_0028_sync 10 r
+2011_10_03/2011_10_03_drive_0042_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 3052 r
+2011_09_30/2011_09_30_drive_0028_sync 4783 l
+2011_09_30/2011_09_30_drive_0034_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 3232 r
+2011_09_30/2011_09_30_drive_0028_sync 2252 l
+2011_09_26/2011_09_26_drive_0051_sync 418 l
+2011_09_30/2011_09_30_drive_0028_sync 2597 l
+2011_09_30/2011_09_30_drive_0028_sync 3891 l
+2011_09_30/2011_09_30_drive_0033_sync 343 l
+2011_09_30/2011_09_30_drive_0028_sync 4322 l
+2011_09_26/2011_09_26_drive_0095_sync 236 r
+2011_09_26/2011_09_26_drive_0061_sync 329 l
+2011_10_03/2011_10_03_drive_0042_sync 581 l
+2011_10_03/2011_10_03_drive_0034_sync 1902 l
+2011_09_26/2011_09_26_drive_0035_sync 81 l
+2011_09_26/2011_09_26_drive_0005_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 1666 r
+2011_10_03/2011_10_03_drive_0042_sync 1148 r
+2011_09_30/2011_09_30_drive_0033_sync 798 l
+2011_09_29/2011_09_29_drive_0026_sync 29 r
+2011_09_29/2011_09_29_drive_0004_sync 157 l
+2011_09_26/2011_09_26_drive_0018_sync 174 l
+2011_09_26/2011_09_26_drive_0028_sync 160 r
+2011_09_30/2011_09_30_drive_0028_sync 2022 r
+2011_10_03/2011_10_03_drive_0034_sync 1594 r
+2011_10_03/2011_10_03_drive_0034_sync 787 r
+2011_09_26/2011_09_26_drive_0032_sync 234 l
+2011_09_26/2011_09_26_drive_0087_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 2425 r
+2011_10_03/2011_10_03_drive_0034_sync 720 r
+2011_10_03/2011_10_03_drive_0042_sync 419 r
+2011_09_26/2011_09_26_drive_0015_sync 171 l
+2011_09_30/2011_09_30_drive_0034_sync 462 r
+2011_09_30/2011_09_30_drive_0028_sync 608 r
+2011_09_30/2011_09_30_drive_0033_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 3428 l
+2011_09_30/2011_09_30_drive_0020_sync 359 r
+2011_09_30/2011_09_30_drive_0028_sync 850 r
+2011_10_03/2011_10_03_drive_0034_sync 2865 r
+2011_09_26/2011_09_26_drive_0022_sync 67 r
+2011_09_26/2011_09_26_drive_0057_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 1116 r
+2011_09_26/2011_09_26_drive_0017_sync 106 l
+2011_09_26/2011_09_26_drive_0028_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 3181 r
+2011_09_26/2011_09_26_drive_0014_sync 309 l
+2011_09_30/2011_09_30_drive_0034_sync 650 r
+2011_09_30/2011_09_30_drive_0028_sync 2009 r
+2011_09_30/2011_09_30_drive_0028_sync 2168 l
+2011_10_03/2011_10_03_drive_0034_sync 2813 r
+2011_10_03/2011_10_03_drive_0042_sync 423 l
+2011_09_26/2011_09_26_drive_0061_sync 531 l
+2011_09_30/2011_09_30_drive_0028_sync 2237 r
+2011_09_26/2011_09_26_drive_0104_sync 33 r
+2011_09_30/2011_09_30_drive_0033_sync 250 r
+2011_09_26/2011_09_26_drive_0057_sync 126 r
+2011_09_26/2011_09_26_drive_0039_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 1242 l
+2011_09_26/2011_09_26_drive_0060_sync 50 r
+2011_09_26/2011_09_26_drive_0019_sync 320 r
+2011_09_30/2011_09_30_drive_0028_sync 4384 l
+2011_10_03/2011_10_03_drive_0034_sync 405 l
+2011_09_30/2011_09_30_drive_0034_sync 521 l
+2011_09_30/2011_09_30_drive_0028_sync 2781 l
+2011_09_30/2011_09_30_drive_0028_sync 2180 l
+2011_10_03/2011_10_03_drive_0034_sync 4193 r
+2011_09_30/2011_09_30_drive_0028_sync 2880 r
+2011_09_26/2011_09_26_drive_0091_sync 241 l
+2011_09_30/2011_09_30_drive_0034_sync 461 l
+2011_10_03/2011_10_03_drive_0034_sync 1023 r
+2011_09_30/2011_09_30_drive_0028_sync 4268 r
+2011_09_30/2011_09_30_drive_0034_sync 331 l
+2011_09_26/2011_09_26_drive_0018_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 2007 l
+2011_09_30/2011_09_30_drive_0028_sync 3731 r
+2011_09_30/2011_09_30_drive_0028_sync 3205 r
+2011_09_26/2011_09_26_drive_0022_sync 619 l
+2011_10_03/2011_10_03_drive_0034_sync 2003 l
+2011_09_30/2011_09_30_drive_0020_sync 157 r
+2011_09_30/2011_09_30_drive_0033_sync 1039 r
+2011_09_30/2011_09_30_drive_0034_sync 889 l
+2011_09_30/2011_09_30_drive_0034_sync 793 l
+2011_09_30/2011_09_30_drive_0034_sync 834 r
+2011_10_03/2011_10_03_drive_0034_sync 3637 r
+2011_09_30/2011_09_30_drive_0034_sync 867 l
+2011_09_30/2011_09_30_drive_0028_sync 754 r
+2011_10_03/2011_10_03_drive_0042_sync 428 l
+2011_10_03/2011_10_03_drive_0042_sync 147 l
+2011_09_30/2011_09_30_drive_0020_sync 340 r
+2011_10_03/2011_10_03_drive_0034_sync 3526 l
+2011_10_03/2011_10_03_drive_0034_sync 1755 r
+2011_09_30/2011_09_30_drive_0028_sync 2802 r
+2011_09_30/2011_09_30_drive_0020_sync 627 l
+2011_09_30/2011_09_30_drive_0020_sync 352 r
+2011_09_30/2011_09_30_drive_0028_sync 1110 l
+2011_10_03/2011_10_03_drive_0042_sync 1144 r
+2011_09_26/2011_09_26_drive_0039_sync 377 l
+2011_09_26/2011_09_26_drive_0022_sync 247 r
+2011_09_30/2011_09_30_drive_0033_sync 1481 l
+2011_09_30/2011_09_30_drive_0028_sync 2892 r
+2011_09_30/2011_09_30_drive_0020_sync 1092 r
+2011_09_30/2011_09_30_drive_0034_sync 559 r
+2011_09_30/2011_09_30_drive_0028_sync 4061 l
+2011_09_30/2011_09_30_drive_0033_sync 577 l
+2011_10_03/2011_10_03_drive_0034_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 4046 r
+2011_09_26/2011_09_26_drive_0011_sync 19 l
+2011_09_26/2011_09_26_drive_0011_sync 198 r
+2011_09_30/2011_09_30_drive_0028_sync 612 r
+2011_09_26/2011_09_26_drive_0091_sync 285 l
+2011_09_26/2011_09_26_drive_0015_sync 1 l
+2011_09_26/2011_09_26_drive_0061_sync 252 r
+2011_09_30/2011_09_30_drive_0034_sync 1006 r
+2011_09_26/2011_09_26_drive_0095_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 3598 l
+2011_10_03/2011_10_03_drive_0042_sync 495 l
+2011_09_26/2011_09_26_drive_0070_sync 354 l
+2011_09_30/2011_09_30_drive_0028_sync 4309 l
+2011_09_30/2011_09_30_drive_0028_sync 2884 r
+2011_09_26/2011_09_26_drive_0091_sync 207 r
+2011_09_26/2011_09_26_drive_0011_sync 175 r
+2011_10_03/2011_10_03_drive_0034_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 4328 l
+2011_10_03/2011_10_03_drive_0034_sync 2391 r
+2011_09_26/2011_09_26_drive_0035_sync 98 r
+2011_09_30/2011_09_30_drive_0034_sync 503 l
+2011_09_30/2011_09_30_drive_0034_sync 249 l
+2011_10_03/2011_10_03_drive_0042_sync 478 r
+2011_09_26/2011_09_26_drive_0032_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 1337 l
+2011_09_26/2011_09_26_drive_0039_sync 206 r
+2011_10_03/2011_10_03_drive_0034_sync 3236 l
+2011_09_26/2011_09_26_drive_0022_sync 347 r
+2011_09_26/2011_09_26_drive_0028_sync 75 r
+2011_09_30/2011_09_30_drive_0033_sync 198 r
+2011_09_30/2011_09_30_drive_0028_sync 1659 l
+2011_09_26/2011_09_26_drive_0015_sync 251 r
+2011_09_26/2011_09_26_drive_0091_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 2754 r
+2011_10_03/2011_10_03_drive_0042_sync 582 l
+2011_10_03/2011_10_03_drive_0042_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 141 l
+2011_10_03/2011_10_03_drive_0034_sync 2762 r
+2011_09_26/2011_09_26_drive_0104_sync 8 r
+2011_09_26/2011_09_26_drive_0028_sync 339 l
+2011_09_26/2011_09_26_drive_0061_sync 668 r
+2011_10_03/2011_10_03_drive_0034_sync 2191 l
+2011_10_03/2011_10_03_drive_0042_sync 760 l
+2011_10_03/2011_10_03_drive_0034_sync 4659 l
+2011_09_30/2011_09_30_drive_0033_sync 979 r
+2011_09_26/2011_09_26_drive_0060_sync 17 r
+2011_09_30/2011_09_30_drive_0033_sync 286 l
+2011_09_26/2011_09_26_drive_0095_sync 205 r
+2011_09_26/2011_09_26_drive_0051_sync 379 r
+2011_09_30/2011_09_30_drive_0028_sync 2095 l
+2011_09_30/2011_09_30_drive_0033_sync 1588 r
+2011_09_30/2011_09_30_drive_0028_sync 3308 l
+2011_10_03/2011_10_03_drive_0042_sync 951 r
+2011_10_03/2011_10_03_drive_0034_sync 243 l
+2011_10_03/2011_10_03_drive_0034_sync 4109 l
+2011_09_30/2011_09_30_drive_0028_sync 1529 r
+2011_09_26/2011_09_26_drive_0070_sync 305 l
+2011_09_30/2011_09_30_drive_0020_sync 732 r
+2011_09_26/2011_09_26_drive_0051_sync 332 r
+2011_10_03/2011_10_03_drive_0042_sync 760 r
+2011_09_30/2011_09_30_drive_0033_sync 1562 l
+2011_09_30/2011_09_30_drive_0020_sync 342 l
+2011_09_26/2011_09_26_drive_0087_sync 438 r
+2011_09_26/2011_09_26_drive_0070_sync 141 l
+2011_09_26/2011_09_26_drive_0039_sync 373 l
+2011_09_26/2011_09_26_drive_0018_sync 243 r
+2011_09_30/2011_09_30_drive_0034_sync 377 r
+2011_09_26/2011_09_26_drive_0039_sync 198 l
+2011_09_30/2011_09_30_drive_0033_sync 364 r
+2011_09_26/2011_09_26_drive_0061_sync 627 l
+2011_09_26/2011_09_26_drive_0017_sync 16 l
+2011_09_30/2011_09_30_drive_0028_sync 5031 r
+2011_09_26/2011_09_26_drive_0095_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 2207 l
+2011_09_30/2011_09_30_drive_0034_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 780 l
+2011_09_30/2011_09_30_drive_0020_sync 595 l
+2011_09_26/2011_09_26_drive_0057_sync 30 l
+2011_09_30/2011_09_30_drive_0033_sync 1519 r
+2011_09_30/2011_09_30_drive_0028_sync 3057 r
+2011_09_26/2011_09_26_drive_0061_sync 523 l
+2011_10_03/2011_10_03_drive_0034_sync 4037 l
+2011_09_30/2011_09_30_drive_0020_sync 780 l
+2011_09_30/2011_09_30_drive_0020_sync 641 r
+2011_09_30/2011_09_30_drive_0034_sync 1161 l
+2011_09_26/2011_09_26_drive_0028_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 2594 l
+2011_10_03/2011_10_03_drive_0034_sync 2319 l
+2011_09_26/2011_09_26_drive_0028_sync 130 r
+2011_09_26/2011_09_26_drive_0091_sync 253 l
+2011_10_03/2011_10_03_drive_0034_sync 4123 r
+2011_10_03/2011_10_03_drive_0042_sync 782 l
+2011_09_26/2011_09_26_drive_0039_sync 313 r
+2011_09_30/2011_09_30_drive_0033_sync 292 r
+2011_09_26/2011_09_26_drive_0022_sync 388 r
+2011_09_26/2011_09_26_drive_0014_sync 215 r
+2011_09_26/2011_09_26_drive_0057_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 4145 r
+2011_09_29/2011_09_29_drive_0004_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 2187 l
+2011_10_03/2011_10_03_drive_0034_sync 4553 l
+2011_09_26/2011_09_26_drive_0091_sync 191 r
+2011_09_26/2011_09_26_drive_0087_sync 637 r
+2011_09_30/2011_09_30_drive_0028_sync 1528 r
+2011_09_30/2011_09_30_drive_0033_sync 1276 r
+2011_10_03/2011_10_03_drive_0034_sync 2833 l
+2011_09_26/2011_09_26_drive_0091_sync 323 r
+2011_09_30/2011_09_30_drive_0033_sync 692 l
+2011_09_30/2011_09_30_drive_0034_sync 211 l
+2011_09_26/2011_09_26_drive_0015_sync 256 r
+2011_09_26/2011_09_26_drive_0015_sync 122 l
+2011_09_30/2011_09_30_drive_0020_sync 594 r
+2011_09_26/2011_09_26_drive_0057_sync 239 l
+2011_09_26/2011_09_26_drive_0091_sync 265 l
+2011_09_26/2011_09_26_drive_0087_sync 92 r
+2011_10_03/2011_10_03_drive_0042_sync 1145 r
+2011_09_30/2011_09_30_drive_0033_sync 1356 r
+2011_09_26/2011_09_26_drive_0022_sync 366 r
+2011_09_30/2011_09_30_drive_0033_sync 257 r
+2011_09_30/2011_09_30_drive_0020_sync 964 l
+2011_09_26/2011_09_26_drive_0022_sync 725 l
+2011_09_30/2011_09_30_drive_0028_sync 1850 r
+2011_09_30/2011_09_30_drive_0034_sync 492 l
+2011_09_30/2011_09_30_drive_0020_sync 462 r
+2011_09_26/2011_09_26_drive_0057_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 3412 l
+2011_09_30/2011_09_30_drive_0033_sync 544 l
+2011_10_03/2011_10_03_drive_0034_sync 4335 l
+2011_10_03/2011_10_03_drive_0034_sync 2748 r
+2011_10_03/2011_10_03_drive_0042_sync 1049 r
+2011_09_30/2011_09_30_drive_0028_sync 3884 l
+2011_09_26/2011_09_26_drive_0051_sync 290 l
+2011_10_03/2011_10_03_drive_0034_sync 1433 r
+2011_10_03/2011_10_03_drive_0034_sync 1670 r
+2011_09_30/2011_09_30_drive_0033_sync 169 r
+2011_09_26/2011_09_26_drive_0061_sync 99 l
+2011_09_29/2011_09_29_drive_0004_sync 120 r
+2011_09_26/2011_09_26_drive_0014_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 1640 l
+2011_09_26/2011_09_26_drive_0051_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 4079 l
+2011_09_30/2011_09_30_drive_0034_sync 496 l
+2011_09_30/2011_09_30_drive_0028_sync 4315 l
+2011_10_03/2011_10_03_drive_0034_sync 1844 r
+2011_09_29/2011_09_29_drive_0004_sync 23 l
+2011_09_26/2011_09_26_drive_0005_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 3399 l
+2011_09_30/2011_09_30_drive_0028_sync 4787 l
+2011_10_03/2011_10_03_drive_0034_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 2394 l
+2011_09_26/2011_09_26_drive_0091_sync 77 r
+2011_09_30/2011_09_30_drive_0020_sync 181 r
+2011_09_30/2011_09_30_drive_0028_sync 929 r
+2011_09_30/2011_09_30_drive_0033_sync 1425 r
+2011_09_26/2011_09_26_drive_0057_sync 336 r
+2011_09_26/2011_09_26_drive_0032_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 4101 l
+2011_10_03/2011_10_03_drive_0034_sync 4219 r
+2011_10_03/2011_10_03_drive_0034_sync 1121 r
+2011_10_03/2011_10_03_drive_0034_sync 2690 r
+2011_09_30/2011_09_30_drive_0034_sync 1066 r
+2011_09_30/2011_09_30_drive_0020_sync 795 r
+2011_09_30/2011_09_30_drive_0033_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 4088 r
+2011_09_30/2011_09_30_drive_0028_sync 4002 r
+2011_09_26/2011_09_26_drive_0019_sync 24 l
+2011_09_30/2011_09_30_drive_0034_sync 1194 l
+2011_09_26/2011_09_26_drive_0087_sync 700 l
+2011_10_03/2011_10_03_drive_0034_sync 2081 l
+2011_10_03/2011_10_03_drive_0042_sync 152 r
+2011_09_30/2011_09_30_drive_0033_sync 1394 l
+2011_09_26/2011_09_26_drive_0039_sync 256 r
+2011_09_26/2011_09_26_drive_0014_sync 289 r
+2011_10_03/2011_10_03_drive_0034_sync 3219 l
+2011_09_26/2011_09_26_drive_0039_sync 3 r
+2011_09_26/2011_09_26_drive_0032_sync 381 l
+2011_09_30/2011_09_30_drive_0020_sync 842 l
+2011_10_03/2011_10_03_drive_0034_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 440 l
+2011_10_03/2011_10_03_drive_0034_sync 4396 l
+2011_09_30/2011_09_30_drive_0020_sync 326 r
+2011_10_03/2011_10_03_drive_0034_sync 4508 l
+2011_09_26/2011_09_26_drive_0019_sync 136 r
+2011_09_30/2011_09_30_drive_0020_sync 414 r
+2011_10_03/2011_10_03_drive_0034_sync 2075 l
+2011_09_30/2011_09_30_drive_0034_sync 302 l
+2011_09_30/2011_09_30_drive_0034_sync 1156 r
+2011_10_03/2011_10_03_drive_0034_sync 4587 l
+2011_09_26/2011_09_26_drive_0070_sync 186 l
+2011_10_03/2011_10_03_drive_0034_sync 581 r
+2011_10_03/2011_10_03_drive_0034_sync 2400 r
+2011_09_26/2011_09_26_drive_0061_sync 120 r
+2011_09_30/2011_09_30_drive_0020_sync 753 l
+2011_10_03/2011_10_03_drive_0034_sync 4249 l
+2011_09_30/2011_09_30_drive_0028_sync 3416 r
+2011_09_30/2011_09_30_drive_0034_sync 915 l
+2011_09_30/2011_09_30_drive_0034_sync 284 l
+2011_09_30/2011_09_30_drive_0028_sync 4588 l
+2011_09_30/2011_09_30_drive_0034_sync 879 r
+2011_09_30/2011_09_30_drive_0033_sync 1044 r
+2011_09_30/2011_09_30_drive_0034_sync 117 r
+2011_10_03/2011_10_03_drive_0034_sync 4151 l
+2011_09_30/2011_09_30_drive_0020_sync 75 l
+2011_09_26/2011_09_26_drive_0039_sync 48 l
+2011_09_26/2011_09_26_drive_0095_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 452 l
+2011_09_30/2011_09_30_drive_0028_sync 940 l
+2011_09_26/2011_09_26_drive_0011_sync 107 l
+2011_10_03/2011_10_03_drive_0042_sync 744 l
+2011_09_30/2011_09_30_drive_0028_sync 460 r
+2011_09_30/2011_09_30_drive_0034_sync 1016 l
+2011_10_03/2011_10_03_drive_0042_sync 424 l
+2011_09_30/2011_09_30_drive_0020_sync 649 l
+2011_09_26/2011_09_26_drive_0061_sync 116 r
+2011_09_26/2011_09_26_drive_0057_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 3700 l
+2011_09_30/2011_09_30_drive_0020_sync 187 l
+2011_09_30/2011_09_30_drive_0020_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 4984 l
+2011_10_03/2011_10_03_drive_0034_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 191 l
+2011_09_26/2011_09_26_drive_0070_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 4129 l
+2011_09_26/2011_09_26_drive_0001_sync 57 r
+2011_09_26/2011_09_26_drive_0051_sync 103 l
+2011_09_30/2011_09_30_drive_0020_sync 938 r
+2011_09_26/2011_09_26_drive_0014_sync 23 r
+2011_09_30/2011_09_30_drive_0034_sync 759 l
+2011_09_30/2011_09_30_drive_0033_sync 1085 l
+2011_09_30/2011_09_30_drive_0020_sync 523 r
+2011_09_26/2011_09_26_drive_0017_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 3218 r
+2011_09_26/2011_09_26_drive_0057_sync 111 l
+2011_09_26/2011_09_26_drive_0061_sync 551 l
+2011_09_30/2011_09_30_drive_0034_sync 19 l
+2011_09_26/2011_09_26_drive_0061_sync 156 r
+2011_09_30/2011_09_30_drive_0028_sync 4782 l
+2011_09_30/2011_09_30_drive_0034_sync 1036 r
+2011_09_30/2011_09_30_drive_0028_sync 2140 r
+2011_09_30/2011_09_30_drive_0028_sync 2857 r
+2011_10_03/2011_10_03_drive_0034_sync 4383 l
+2011_09_30/2011_09_30_drive_0020_sync 764 l
+2011_09_30/2011_09_30_drive_0028_sync 4217 l
+2011_09_30/2011_09_30_drive_0020_sync 814 r
+2011_10_03/2011_10_03_drive_0034_sync 1783 l
+2011_09_26/2011_09_26_drive_0022_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 667 l
+2011_09_30/2011_09_30_drive_0028_sync 3161 l
+2011_10_03/2011_10_03_drive_0034_sync 379 l
+2011_09_26/2011_09_26_drive_0022_sync 73 r
+2011_09_26/2011_09_26_drive_0070_sync 172 l
+2011_09_26/2011_09_26_drive_0091_sync 267 r
+2011_09_26/2011_09_26_drive_0051_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 2032 r
+2011_10_03/2011_10_03_drive_0034_sync 813 l
+2011_09_30/2011_09_30_drive_0028_sync 1615 r
+2011_09_30/2011_09_30_drive_0020_sync 1100 r
+2011_09_30/2011_09_30_drive_0020_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 3962 r
+2011_09_30/2011_09_30_drive_0034_sync 1016 r
+2011_09_30/2011_09_30_drive_0028_sync 2126 r
+2011_10_03/2011_10_03_drive_0034_sync 3570 l
+2011_09_30/2011_09_30_drive_0033_sync 1394 r
+2011_09_26/2011_09_26_drive_0039_sync 345 r
+2011_09_26/2011_09_26_drive_0104_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 556 l
+2011_10_03/2011_10_03_drive_0042_sync 965 l
+2011_09_30/2011_09_30_drive_0028_sync 134 l
+2011_09_26/2011_09_26_drive_0070_sync 367 r
+2011_10_03/2011_10_03_drive_0034_sync 3010 r
+2011_09_30/2011_09_30_drive_0033_sync 149 r
+2011_10_03/2011_10_03_drive_0034_sync 1637 r
+2011_09_30/2011_09_30_drive_0028_sync 1780 l
+2011_10_03/2011_10_03_drive_0042_sync 199 l
+2011_09_30/2011_09_30_drive_0034_sync 476 l
+2011_09_26/2011_09_26_drive_0019_sync 127 l
+2011_09_30/2011_09_30_drive_0033_sync 1505 l
+2011_09_26/2011_09_26_drive_0057_sync 300 r
+2011_09_30/2011_09_30_drive_0033_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 3794 r
+2011_09_26/2011_09_26_drive_0039_sync 96 r
+2011_09_26/2011_09_26_drive_0011_sync 76 l
+2011_09_26/2011_09_26_drive_0005_sync 151 l
+2011_09_30/2011_09_30_drive_0028_sync 4542 r
+2011_09_26/2011_09_26_drive_0019_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 1329 l
+2011_09_30/2011_09_30_drive_0028_sync 1585 r
+2011_09_30/2011_09_30_drive_0028_sync 2852 l
+2011_09_30/2011_09_30_drive_0034_sync 579 l
+2011_09_26/2011_09_26_drive_0091_sync 94 r
+2011_09_30/2011_09_30_drive_0033_sync 1331 r
+2011_10_03/2011_10_03_drive_0034_sync 1759 l
+2011_09_30/2011_09_30_drive_0020_sync 658 r
+2011_09_30/2011_09_30_drive_0028_sync 3130 r
+2011_09_30/2011_09_30_drive_0028_sync 458 l
+2011_09_26/2011_09_26_drive_0087_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 3872 l
+2011_10_03/2011_10_03_drive_0042_sync 1078 r
+2011_09_30/2011_09_30_drive_0020_sync 595 r
+2011_09_30/2011_09_30_drive_0028_sync 2926 r
+2011_10_03/2011_10_03_drive_0034_sync 155 r
+2011_09_26/2011_09_26_drive_0095_sync 164 r
+2011_09_26/2011_09_26_drive_0019_sync 172 r
+2011_09_26/2011_09_26_drive_0087_sync 397 l
+2011_10_03/2011_10_03_drive_0042_sync 1087 r
+2011_09_30/2011_09_30_drive_0033_sync 1130 r
+2011_09_30/2011_09_30_drive_0028_sync 2165 l
+2011_10_03/2011_10_03_drive_0042_sync 407 l
+2011_09_26/2011_09_26_drive_0057_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 4863 l
+2011_09_26/2011_09_26_drive_0011_sync 70 l
+2011_09_26/2011_09_26_drive_0061_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 4303 r
+2011_09_30/2011_09_30_drive_0028_sync 2882 r
+2011_10_03/2011_10_03_drive_0034_sync 1022 r
+2011_09_30/2011_09_30_drive_0033_sync 295 l
+2011_09_30/2011_09_30_drive_0028_sync 723 r
+2011_10_03/2011_10_03_drive_0034_sync 2958 l
+2011_10_03/2011_10_03_drive_0042_sync 699 l
+2011_09_30/2011_09_30_drive_0020_sync 490 r
+2011_09_30/2011_09_30_drive_0020_sync 39 r
+2011_09_26/2011_09_26_drive_0104_sync 34 l
+2011_09_30/2011_09_30_drive_0033_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 2768 l
+2011_09_26/2011_09_26_drive_0011_sync 74 l
+2011_10_03/2011_10_03_drive_0042_sync 476 r
+2011_09_30/2011_09_30_drive_0028_sync 2398 l
+2011_10_03/2011_10_03_drive_0042_sync 1081 r
+2011_09_30/2011_09_30_drive_0028_sync 2285 r
+2011_09_30/2011_09_30_drive_0028_sync 1211 l
+2011_09_30/2011_09_30_drive_0028_sync 1836 l
+2011_09_30/2011_09_30_drive_0028_sync 1925 l
+2011_09_30/2011_09_30_drive_0034_sync 48 r
+2011_09_26/2011_09_26_drive_0032_sync 49 r
+2011_09_26/2011_09_26_drive_0070_sync 50 l
+2011_09_26/2011_09_26_drive_0022_sync 335 l
+2011_10_03/2011_10_03_drive_0034_sync 1513 l
+2011_09_26/2011_09_26_drive_0091_sync 3 l
+2011_09_26/2011_09_26_drive_0014_sync 176 r
+2011_09_26/2011_09_26_drive_0060_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 449 r
+2011_09_29/2011_09_29_drive_0004_sync 131 l
+2011_10_03/2011_10_03_drive_0034_sync 2843 r
+2011_10_03/2011_10_03_drive_0034_sync 149 l
+2011_09_30/2011_09_30_drive_0020_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4642 r
+2011_09_26/2011_09_26_drive_0061_sync 345 r
+2011_10_03/2011_10_03_drive_0034_sync 479 r
+2011_09_30/2011_09_30_drive_0028_sync 2417 r
+2011_09_30/2011_09_30_drive_0028_sync 1878 l
+2011_09_26/2011_09_26_drive_0051_sync 313 r
+2011_09_30/2011_09_30_drive_0020_sync 1080 l
+2011_09_26/2011_09_26_drive_0104_sync 144 l
+2011_09_30/2011_09_30_drive_0033_sync 1273 r
+2011_09_26/2011_09_26_drive_0005_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 4221 l
+2011_09_30/2011_09_30_drive_0028_sync 1581 l
+2011_09_30/2011_09_30_drive_0028_sync 1674 r
+2011_09_29/2011_09_29_drive_0026_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 4124 l
+2011_10_03/2011_10_03_drive_0042_sync 873 r
+2011_09_26/2011_09_26_drive_0079_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 574 l
+2011_09_30/2011_09_30_drive_0033_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 882 l
+2011_10_03/2011_10_03_drive_0034_sync 1675 r
+2011_09_30/2011_09_30_drive_0033_sync 1017 r
+2011_10_03/2011_10_03_drive_0042_sync 462 r
+2011_09_30/2011_09_30_drive_0034_sync 773 l
+2011_10_03/2011_10_03_drive_0034_sync 4132 l
+2011_09_26/2011_09_26_drive_0015_sync 135 l
+2011_09_26/2011_09_26_drive_0091_sync 109 r
+2011_09_30/2011_09_30_drive_0033_sync 925 r
+2011_09_26/2011_09_26_drive_0087_sync 247 r
+2011_09_26/2011_09_26_drive_0051_sync 357 l
+2011_10_03/2011_10_03_drive_0042_sync 261 l
+2011_09_26/2011_09_26_drive_0019_sync 56 r
+2011_09_26/2011_09_26_drive_0018_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 1758 r
+2011_10_03/2011_10_03_drive_0034_sync 2202 r
+2011_09_26/2011_09_26_drive_0051_sync 295 l
+2011_09_26/2011_09_26_drive_0015_sync 176 r
+2011_09_30/2011_09_30_drive_0034_sync 1158 l
+2011_09_30/2011_09_30_drive_0034_sync 768 l
+2011_10_03/2011_10_03_drive_0034_sync 944 l
+2011_09_30/2011_09_30_drive_0033_sync 164 l
+2011_09_30/2011_09_30_drive_0028_sync 411 r
+2011_09_30/2011_09_30_drive_0028_sync 940 r
+2011_09_26/2011_09_26_drive_0019_sync 306 r
+2011_09_30/2011_09_30_drive_0020_sync 534 l
+2011_09_29/2011_09_29_drive_0026_sync 156 r
+2011_09_26/2011_09_26_drive_0051_sync 109 l
+2011_09_26/2011_09_26_drive_0014_sync 116 l
+2011_09_26/2011_09_26_drive_0061_sync 207 r
+2011_10_03/2011_10_03_drive_0034_sync 3165 l
+2011_09_30/2011_09_30_drive_0028_sync 3327 r
+2011_09_30/2011_09_30_drive_0028_sync 2500 r
+2011_09_30/2011_09_30_drive_0028_sync 1148 r
+2011_10_03/2011_10_03_drive_0034_sync 734 l
+2011_09_30/2011_09_30_drive_0028_sync 1859 l
+2011_09_26/2011_09_26_drive_0051_sync 97 r
+2011_09_30/2011_09_30_drive_0028_sync 4996 l
+2011_10_03/2011_10_03_drive_0034_sync 3686 r
+2011_10_03/2011_10_03_drive_0034_sync 3207 r
+2011_09_26/2011_09_26_drive_0095_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 1620 l
+2011_09_26/2011_09_26_drive_0087_sync 396 l
+2011_09_30/2011_09_30_drive_0028_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 3135 l
+2011_09_30/2011_09_30_drive_0028_sync 2620 r
+2011_09_26/2011_09_26_drive_0087_sync 611 l
+2011_09_26/2011_09_26_drive_0091_sync 234 l
+2011_09_26/2011_09_26_drive_0032_sync 34 l
+2011_09_26/2011_09_26_drive_0022_sync 515 l
+2011_09_26/2011_09_26_drive_0011_sync 11 r
+2011_09_30/2011_09_30_drive_0033_sync 1039 l
+2011_09_26/2011_09_26_drive_0001_sync 46 l
+2011_09_30/2011_09_30_drive_0034_sync 645 r
+2011_09_26/2011_09_26_drive_0061_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 1502 l
+2011_10_03/2011_10_03_drive_0034_sync 2347 r
+2011_09_26/2011_09_26_drive_0032_sync 326 l
+2011_10_03/2011_10_03_drive_0034_sync 1400 r
+2011_09_30/2011_09_30_drive_0033_sync 352 r
+2011_09_26/2011_09_26_drive_0017_sync 105 l
+2011_09_26/2011_09_26_drive_0051_sync 110 l
+2011_09_26/2011_09_26_drive_0070_sync 178 r
+2011_09_26/2011_09_26_drive_0087_sync 722 r
+2011_09_26/2011_09_26_drive_0091_sync 278 l
+2011_10_03/2011_10_03_drive_0034_sync 757 r
+2011_10_03/2011_10_03_drive_0034_sync 3874 r
+2011_09_26/2011_09_26_drive_0032_sync 172 l
+2011_09_26/2011_09_26_drive_0095_sync 197 r
+2011_10_03/2011_10_03_drive_0034_sync 904 l
+2011_10_03/2011_10_03_drive_0042_sync 10 r
+2011_09_26/2011_09_26_drive_0070_sync 71 r
+2011_09_26/2011_09_26_drive_0032_sync 179 l
+2011_09_30/2011_09_30_drive_0028_sync 3159 r
+2011_09_28/2011_09_28_drive_0001_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 1423 r
+2011_09_30/2011_09_30_drive_0033_sync 614 l
+2011_10_03/2011_10_03_drive_0034_sync 4064 r
+2011_10_03/2011_10_03_drive_0042_sync 964 r
+2011_09_30/2011_09_30_drive_0028_sync 102 r
+2011_09_29/2011_09_29_drive_0004_sync 84 r
+2011_09_29/2011_09_29_drive_0004_sync 182 r
+2011_09_29/2011_09_29_drive_0026_sync 97 l
+2011_09_26/2011_09_26_drive_0028_sync 396 r
+2011_09_30/2011_09_30_drive_0033_sync 203 r
+2011_10_03/2011_10_03_drive_0042_sync 1162 l
+2011_09_30/2011_09_30_drive_0028_sync 1377 l
+2011_09_30/2011_09_30_drive_0028_sync 3019 l
+2011_09_30/2011_09_30_drive_0028_sync 2711 l
+2011_09_30/2011_09_30_drive_0028_sync 1969 l
+2011_09_30/2011_09_30_drive_0033_sync 914 l
+2011_10_03/2011_10_03_drive_0034_sync 382 r
+2011_09_26/2011_09_26_drive_0019_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 1763 l
+2011_09_26/2011_09_26_drive_0091_sync 224 r
+2011_09_30/2011_09_30_drive_0034_sync 435 l
+2011_09_26/2011_09_26_drive_0095_sync 130 r
+2011_09_29/2011_09_29_drive_0004_sync 19 r
+2011_09_26/2011_09_26_drive_0014_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 2518 l
+2011_10_03/2011_10_03_drive_0042_sync 400 r
+2011_10_03/2011_10_03_drive_0034_sync 3252 r
+2011_10_03/2011_10_03_drive_0034_sync 3676 l
+2011_10_03/2011_10_03_drive_0034_sync 3361 r
+2011_09_30/2011_09_30_drive_0028_sync 3554 r
+2011_10_03/2011_10_03_drive_0034_sync 3534 r
+2011_09_26/2011_09_26_drive_0022_sync 770 r
+2011_10_03/2011_10_03_drive_0034_sync 3905 r
+2011_09_30/2011_09_30_drive_0028_sync 4223 l
+2011_09_30/2011_09_30_drive_0028_sync 1538 r
+2011_09_26/2011_09_26_drive_0113_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 385 l
+2011_09_30/2011_09_30_drive_0033_sync 756 l
+2011_09_30/2011_09_30_drive_0028_sync 2873 l
+2011_09_26/2011_09_26_drive_0014_sync 37 l
+2011_09_26/2011_09_26_drive_0019_sync 305 l
+2011_10_03/2011_10_03_drive_0042_sync 183 r
+2011_10_03/2011_10_03_drive_0034_sync 2246 r
+2011_09_30/2011_09_30_drive_0033_sync 87 r
+2011_09_30/2011_09_30_drive_0034_sync 60 l
+2011_10_03/2011_10_03_drive_0042_sync 1074 r
+2011_09_30/2011_09_30_drive_0028_sync 879 l
+2011_09_26/2011_09_26_drive_0060_sync 74 r
+2011_09_30/2011_09_30_drive_0033_sync 271 r
+2011_09_30/2011_09_30_drive_0033_sync 600 r
+2011_09_30/2011_09_30_drive_0028_sync 1802 r
+2011_09_30/2011_09_30_drive_0028_sync 3118 r
+2011_09_26/2011_09_26_drive_0087_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 5076 l
+2011_10_03/2011_10_03_drive_0034_sync 3583 r
+2011_09_30/2011_09_30_drive_0028_sync 1793 l
+2011_09_26/2011_09_26_drive_0015_sync 278 r
+2011_09_30/2011_09_30_drive_0020_sync 934 r
+2011_09_26/2011_09_26_drive_0022_sync 293 r
+2011_09_26/2011_09_26_drive_0087_sync 601 l
+2011_09_30/2011_09_30_drive_0028_sync 2251 r
+2011_09_30/2011_09_30_drive_0020_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 3932 l
+2011_09_30/2011_09_30_drive_0028_sync 1946 l
+2011_09_30/2011_09_30_drive_0028_sync 1682 l
+2011_09_26/2011_09_26_drive_0051_sync 235 l
+2011_10_03/2011_10_03_drive_0042_sync 487 r
+2011_09_26/2011_09_26_drive_0019_sync 160 r
+2011_09_26/2011_09_26_drive_0057_sync 72 l
+2011_10_03/2011_10_03_drive_0034_sync 2513 r
+2011_09_30/2011_09_30_drive_0020_sync 486 r
+2011_09_30/2011_09_30_drive_0028_sync 679 l
+2011_09_26/2011_09_26_drive_0022_sync 633 l
+2011_09_30/2011_09_30_drive_0028_sync 2760 r
+2011_09_29/2011_09_29_drive_0026_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 3571 l
+2011_09_30/2011_09_30_drive_0028_sync 1681 l
+2011_10_03/2011_10_03_drive_0034_sync 1175 r
+2011_10_03/2011_10_03_drive_0034_sync 3880 r
+2011_09_26/2011_09_26_drive_0051_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 3259 l
+2011_09_30/2011_09_30_drive_0028_sync 1240 r
+2011_09_30/2011_09_30_drive_0033_sync 1575 r
+2011_09_30/2011_09_30_drive_0033_sync 821 l
+2011_10_03/2011_10_03_drive_0042_sync 1059 r
+2011_10_03/2011_10_03_drive_0034_sync 2567 r
+2011_09_26/2011_09_26_drive_0070_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 732 r
+2011_09_26/2011_09_26_drive_0060_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 3471 l
+2011_10_03/2011_10_03_drive_0042_sync 538 r
+2011_10_03/2011_10_03_drive_0034_sync 3271 l
+2011_09_26/2011_09_26_drive_0011_sync 157 l
+2011_09_30/2011_09_30_drive_0028_sync 1018 r
+2011_10_03/2011_10_03_drive_0034_sync 3645 l
+2011_09_30/2011_09_30_drive_0028_sync 2825 r
+2011_09_30/2011_09_30_drive_0034_sync 1001 l
+2011_09_26/2011_09_26_drive_0070_sync 256 l
+2011_09_30/2011_09_30_drive_0028_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 2962 l
+2011_09_30/2011_09_30_drive_0033_sync 1036 r
+2011_10_03/2011_10_03_drive_0034_sync 4502 r
+2011_09_26/2011_09_26_drive_0091_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 3211 r
+2011_09_30/2011_09_30_drive_0028_sync 4558 r
+2011_09_30/2011_09_30_drive_0028_sync 1098 l
+2011_09_30/2011_09_30_drive_0028_sync 3268 l
+2011_10_03/2011_10_03_drive_0034_sync 3073 l
+2011_10_03/2011_10_03_drive_0034_sync 3772 r
+2011_09_28/2011_09_28_drive_0001_sync 92 l
+2011_09_30/2011_09_30_drive_0034_sync 1119 l
+2011_09_26/2011_09_26_drive_0019_sync 214 l
+2011_09_30/2011_09_30_drive_0033_sync 1540 l
+2011_10_03/2011_10_03_drive_0034_sync 3487 r
+2011_10_03/2011_10_03_drive_0034_sync 3503 r
+2011_10_03/2011_10_03_drive_0034_sync 2937 r
+2011_09_30/2011_09_30_drive_0028_sync 2887 l
+2011_10_03/2011_10_03_drive_0034_sync 170 l
+2011_09_26/2011_09_26_drive_0087_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 262 r
+2011_09_26/2011_09_26_drive_0014_sync 101 l
+2011_09_30/2011_09_30_drive_0033_sync 1083 r
+2011_09_26/2011_09_26_drive_0001_sync 21 l
+2011_09_30/2011_09_30_drive_0034_sync 716 l
+2011_09_30/2011_09_30_drive_0028_sync 2460 r
+2011_10_03/2011_10_03_drive_0042_sync 628 r
+2011_09_26/2011_09_26_drive_0061_sync 659 r
+2011_09_29/2011_09_29_drive_0004_sync 174 r
+2011_09_26/2011_09_26_drive_0070_sync 292 r
+2011_10_03/2011_10_03_drive_0042_sync 431 l
+2011_10_03/2011_10_03_drive_0042_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 2595 l
+2011_09_30/2011_09_30_drive_0020_sync 1076 r
+2011_09_30/2011_09_30_drive_0028_sync 3117 r
+2011_09_26/2011_09_26_drive_0039_sync 273 r
+2011_09_26/2011_09_26_drive_0032_sync 211 r
+2011_09_26/2011_09_26_drive_0087_sync 519 r
+2011_09_26/2011_09_26_drive_0005_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 1648 r
+2011_09_26/2011_09_26_drive_0061_sync 628 l
+2011_09_26/2011_09_26_drive_0028_sync 427 l
+2011_09_26/2011_09_26_drive_0051_sync 180 r
+2011_09_26/2011_09_26_drive_0018_sync 148 r
+2011_09_30/2011_09_30_drive_0034_sync 568 r
+2011_09_26/2011_09_26_drive_0057_sync 253 r
+2011_09_26/2011_09_26_drive_0070_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 185 l
+2011_09_26/2011_09_26_drive_0087_sync 300 l
+2011_09_26/2011_09_26_drive_0035_sync 52 l
+2011_09_26/2011_09_26_drive_0039_sync 142 r
+2011_09_26/2011_09_26_drive_0095_sync 110 l
+2011_09_30/2011_09_30_drive_0020_sync 778 l
+2011_09_30/2011_09_30_drive_0028_sync 4123 r
+2011_09_30/2011_09_30_drive_0020_sync 716 l
+2011_10_03/2011_10_03_drive_0042_sync 599 l
+2011_09_30/2011_09_30_drive_0028_sync 4027 l
+2011_09_26/2011_09_26_drive_0022_sync 56 l
+2011_09_29/2011_09_29_drive_0004_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 3202 l
+2011_09_26/2011_09_26_drive_0019_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 2058 r
+2011_09_30/2011_09_30_drive_0028_sync 3557 r
+2011_09_26/2011_09_26_drive_0061_sync 65 l
+2011_09_26/2011_09_26_drive_0019_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 620 r
+2011_10_03/2011_10_03_drive_0042_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 3247 r
+2011_09_26/2011_09_26_drive_0091_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 1701 l
+2011_09_30/2011_09_30_drive_0028_sync 2871 r
+2011_10_03/2011_10_03_drive_0042_sync 622 r
+2011_10_03/2011_10_03_drive_0034_sync 1700 r
+2011_09_30/2011_09_30_drive_0028_sync 134 r
+2011_09_26/2011_09_26_drive_0051_sync 177 r
+2011_09_30/2011_09_30_drive_0034_sync 268 l
+2011_09_26/2011_09_26_drive_0032_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 3874 l
+2011_09_26/2011_09_26_drive_0022_sync 181 l
+2011_09_26/2011_09_26_drive_0087_sync 118 r
+2011_09_26/2011_09_26_drive_0011_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 2412 l
+2011_09_30/2011_09_30_drive_0020_sync 85 r
+2011_09_30/2011_09_30_drive_0034_sync 986 l
+2011_09_26/2011_09_26_drive_0051_sync 301 l
+2011_10_03/2011_10_03_drive_0042_sync 32 l
+2011_09_26/2011_09_26_drive_0079_sync 3 r
+2011_10_03/2011_10_03_drive_0042_sync 843 r
+2011_09_26/2011_09_26_drive_0087_sync 595 r
+2011_10_03/2011_10_03_drive_0034_sync 4184 l
+2011_09_26/2011_09_26_drive_0104_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 1369 l
+2011_10_03/2011_10_03_drive_0034_sync 4484 r
+2011_09_26/2011_09_26_drive_0032_sync 243 r
+2011_09_30/2011_09_30_drive_0028_sync 3911 r
+2011_09_30/2011_09_30_drive_0033_sync 994 r
+2011_10_03/2011_10_03_drive_0034_sync 2791 l
+2011_10_03/2011_10_03_drive_0034_sync 1926 l
+2011_09_30/2011_09_30_drive_0028_sync 901 r
+2011_09_30/2011_09_30_drive_0020_sync 970 l
+2011_09_30/2011_09_30_drive_0034_sync 443 l
+2011_09_30/2011_09_30_drive_0020_sync 189 l
+2011_09_30/2011_09_30_drive_0034_sync 489 l
+2011_09_26/2011_09_26_drive_0019_sync 104 r
+2011_09_30/2011_09_30_drive_0034_sync 696 r
+2011_10_03/2011_10_03_drive_0034_sync 472 r
+2011_09_26/2011_09_26_drive_0014_sync 165 l
+2011_09_26/2011_09_26_drive_0014_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 3813 r
+2011_10_03/2011_10_03_drive_0034_sync 1626 l
+2011_09_26/2011_09_26_drive_0015_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 1043 l
+2011_09_26/2011_09_26_drive_0051_sync 197 r
+2011_10_03/2011_10_03_drive_0034_sync 4174 l
+2011_09_30/2011_09_30_drive_0033_sync 771 r
+2011_10_03/2011_10_03_drive_0034_sync 3837 r
+2011_10_03/2011_10_03_drive_0034_sync 3834 l
+2011_10_03/2011_10_03_drive_0034_sync 4229 r
+2011_10_03/2011_10_03_drive_0034_sync 866 l
+2011_09_26/2011_09_26_drive_0057_sync 186 r
+2011_10_03/2011_10_03_drive_0034_sync 1280 l
+2011_09_26/2011_09_26_drive_0015_sync 192 l
+2011_09_26/2011_09_26_drive_0095_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 3622 r
+2011_10_03/2011_10_03_drive_0034_sync 3438 r
+2011_09_26/2011_09_26_drive_0028_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 892 l
+2011_09_26/2011_09_26_drive_0028_sync 231 l
+2011_10_03/2011_10_03_drive_0042_sync 507 r
+2011_09_30/2011_09_30_drive_0028_sync 3992 r
+2011_09_26/2011_09_26_drive_0104_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1253 l
+2011_09_30/2011_09_30_drive_0033_sync 1328 r
+2011_09_30/2011_09_30_drive_0028_sync 1618 r
+2011_09_30/2011_09_30_drive_0028_sync 3535 l
+2011_09_26/2011_09_26_drive_0061_sync 113 r
+2011_09_29/2011_09_29_drive_0004_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 331 l
+2011_09_26/2011_09_26_drive_0022_sync 372 r
+2011_09_26/2011_09_26_drive_0022_sync 167 l
+2011_10_03/2011_10_03_drive_0034_sync 1091 l
+2011_09_30/2011_09_30_drive_0020_sync 26 r
+2011_09_30/2011_09_30_drive_0028_sync 4331 l
+2011_09_26/2011_09_26_drive_0061_sync 574 r
+2011_09_26/2011_09_26_drive_0028_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 3836 l
+2011_09_26/2011_09_26_drive_0057_sync 158 l
+2011_09_26/2011_09_26_drive_0039_sync 22 r
+2011_10_03/2011_10_03_drive_0042_sync 690 l
+2011_09_30/2011_09_30_drive_0028_sync 4580 r
+2011_09_26/2011_09_26_drive_0018_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 974 r
+2011_09_26/2011_09_26_drive_0070_sync 357 r
+2011_09_26/2011_09_26_drive_0022_sync 290 r
+2011_09_26/2011_09_26_drive_0014_sync 249 l
+2011_09_26/2011_09_26_drive_0028_sync 183 l
+2011_09_29/2011_09_29_drive_0004_sync 64 l
+2011_09_28/2011_09_28_drive_0001_sync 43 l
+2011_09_26/2011_09_26_drive_0022_sync 191 r
+2011_09_30/2011_09_30_drive_0028_sync 976 r
+2011_10_03/2011_10_03_drive_0034_sync 2039 r
+2011_09_30/2011_09_30_drive_0020_sync 684 r
+2011_09_30/2011_09_30_drive_0028_sync 3500 r
+2011_09_28/2011_09_28_drive_0001_sync 101 l
+2011_09_26/2011_09_26_drive_0051_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 4480 l
+2011_09_30/2011_09_30_drive_0028_sync 3462 r
+2011_10_03/2011_10_03_drive_0034_sync 1760 r
+2011_09_29/2011_09_29_drive_0004_sync 135 r
+2011_09_26/2011_09_26_drive_0014_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 2687 r
+2011_10_03/2011_10_03_drive_0042_sync 1029 l
+2011_09_26/2011_09_26_drive_0070_sync 389 l
+2011_10_03/2011_10_03_drive_0042_sync 980 l
+2011_09_26/2011_09_26_drive_0014_sync 116 r
+2011_09_30/2011_09_30_drive_0028_sync 1511 l
+2011_09_30/2011_09_30_drive_0028_sync 1707 r
+2011_10_03/2011_10_03_drive_0042_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 4376 r
+2011_09_30/2011_09_30_drive_0028_sync 636 l
+2011_09_26/2011_09_26_drive_0017_sync 83 r
+2011_09_30/2011_09_30_drive_0020_sync 164 r
+2011_09_30/2011_09_30_drive_0028_sync 596 l
+2011_10_03/2011_10_03_drive_0034_sync 3275 l
+2011_09_26/2011_09_26_drive_0091_sync 223 l
+2011_09_26/2011_09_26_drive_0061_sync 93 l
+2011_09_30/2011_09_30_drive_0020_sync 288 l
+2011_10_03/2011_10_03_drive_0034_sync 1416 r
+2011_09_26/2011_09_26_drive_0022_sync 577 l
+2011_09_30/2011_09_30_drive_0028_sync 582 r
+2011_09_30/2011_09_30_drive_0028_sync 1943 l
+2011_09_30/2011_09_30_drive_0034_sync 529 l
+2011_09_26/2011_09_26_drive_0070_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 3610 r
+2011_09_30/2011_09_30_drive_0028_sync 3197 l
+2011_10_03/2011_10_03_drive_0034_sync 694 r
+2011_09_30/2011_09_30_drive_0028_sync 4954 r
+2011_10_03/2011_10_03_drive_0042_sync 497 r
+2011_10_03/2011_10_03_drive_0034_sync 3478 r
+2011_09_30/2011_09_30_drive_0028_sync 1365 r
+2011_09_30/2011_09_30_drive_0028_sync 3620 r
+2011_09_30/2011_09_30_drive_0028_sync 2486 r
+2011_10_03/2011_10_03_drive_0034_sync 1314 r
+2011_10_03/2011_10_03_drive_0034_sync 440 r
+2011_09_30/2011_09_30_drive_0028_sync 1235 r
+2011_09_30/2011_09_30_drive_0020_sync 851 r
+2011_10_03/2011_10_03_drive_0042_sync 544 r
+2011_10_03/2011_10_03_drive_0034_sync 4517 l
+2011_10_03/2011_10_03_drive_0034_sync 4066 l
+2011_09_26/2011_09_26_drive_0070_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 4502 l
+2011_09_26/2011_09_26_drive_0061_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 2328 l
+2011_09_26/2011_09_26_drive_0032_sync 273 l
+2011_09_30/2011_09_30_drive_0034_sync 1091 r
+2011_10_03/2011_10_03_drive_0034_sync 311 r
+2011_09_30/2011_09_30_drive_0028_sync 1966 r
+2011_09_30/2011_09_30_drive_0028_sync 3485 l
+2011_09_30/2011_09_30_drive_0033_sync 638 l
+2011_09_30/2011_09_30_drive_0028_sync 302 r
+2011_10_03/2011_10_03_drive_0034_sync 3977 r
+2011_09_30/2011_09_30_drive_0028_sync 3952 r
+2011_09_26/2011_09_26_drive_0070_sync 253 l
+2011_09_30/2011_09_30_drive_0020_sync 91 r
+2011_09_30/2011_09_30_drive_0033_sync 425 l
+2011_10_03/2011_10_03_drive_0034_sync 4348 r
+2011_10_03/2011_10_03_drive_0042_sync 708 r
+2011_09_26/2011_09_26_drive_0061_sync 487 r
+2011_10_03/2011_10_03_drive_0034_sync 2935 r
+2011_09_26/2011_09_26_drive_0032_sync 358 l
+2011_09_30/2011_09_30_drive_0028_sync 2681 r
+2011_09_30/2011_09_30_drive_0028_sync 4750 r
+2011_09_30/2011_09_30_drive_0028_sync 1170 r
+2011_09_26/2011_09_26_drive_0051_sync 410 r
+2011_09_26/2011_09_26_drive_0057_sync 215 l
+2011_09_26/2011_09_26_drive_0032_sync 84 l
+2011_09_30/2011_09_30_drive_0020_sync 504 r
+2011_09_30/2011_09_30_drive_0033_sync 328 r
+2011_09_26/2011_09_26_drive_0028_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 2431 r
+2011_10_03/2011_10_03_drive_0034_sync 2955 r
+2011_10_03/2011_10_03_drive_0034_sync 1787 r
+2011_09_29/2011_09_29_drive_0026_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 1982 l
+2011_09_30/2011_09_30_drive_0033_sync 1239 r
+2011_09_26/2011_09_26_drive_0001_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 1069 l
+2011_09_30/2011_09_30_drive_0028_sync 3560 l
+2011_10_03/2011_10_03_drive_0034_sync 2815 l
+2011_09_26/2011_09_26_drive_0057_sync 119 l
+2011_09_29/2011_09_29_drive_0004_sync 243 r
+2011_09_30/2011_09_30_drive_0033_sync 409 l
+2011_09_26/2011_09_26_drive_0087_sync 404 r
+2011_10_03/2011_10_03_drive_0034_sync 675 l
+2011_09_26/2011_09_26_drive_0087_sync 413 l
+2011_10_03/2011_10_03_drive_0034_sync 1296 r
+2011_10_03/2011_10_03_drive_0042_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 405 r
+2011_09_30/2011_09_30_drive_0028_sync 3627 l
+2011_09_30/2011_09_30_drive_0033_sync 229 l
+2011_09_30/2011_09_30_drive_0020_sync 193 l
+2011_09_26/2011_09_26_drive_0035_sync 10 r
+2011_09_26/2011_09_26_drive_0019_sync 314 l
+2011_09_30/2011_09_30_drive_0034_sync 876 r
+2011_10_03/2011_10_03_drive_0034_sync 2117 r
+2011_09_30/2011_09_30_drive_0033_sync 262 l
+2011_09_26/2011_09_26_drive_0014_sync 90 l
+2011_09_29/2011_09_29_drive_0004_sync 273 r
+2011_10_03/2011_10_03_drive_0042_sync 296 l
+2011_10_03/2011_10_03_drive_0042_sync 697 r
+2011_09_30/2011_09_30_drive_0034_sync 382 l
+2011_09_30/2011_09_30_drive_0028_sync 1014 l
+2011_09_30/2011_09_30_drive_0028_sync 2903 r
+2011_09_30/2011_09_30_drive_0033_sync 177 r
+2011_09_30/2011_09_30_drive_0020_sync 122 r
+2011_09_26/2011_09_26_drive_0051_sync 412 l
+2011_09_30/2011_09_30_drive_0028_sync 2473 l
+2011_09_30/2011_09_30_drive_0033_sync 485 l
+2011_09_30/2011_09_30_drive_0028_sync 3072 l
+2011_09_26/2011_09_26_drive_0018_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 2705 l
+2011_10_03/2011_10_03_drive_0034_sync 4180 l
+2011_09_26/2011_09_26_drive_0018_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 3077 r
+2011_10_03/2011_10_03_drive_0034_sync 3023 r
+2011_09_26/2011_09_26_drive_0104_sync 254 r
+2011_09_30/2011_09_30_drive_0020_sync 623 r
+2011_09_30/2011_09_30_drive_0028_sync 3407 r
+2011_10_03/2011_10_03_drive_0042_sync 751 r
+2011_09_26/2011_09_26_drive_0087_sync 323 l
+2011_10_03/2011_10_03_drive_0034_sync 4143 r
+2011_09_30/2011_09_30_drive_0028_sync 1803 l
+2011_09_30/2011_09_30_drive_0020_sync 1047 r
+2011_09_26/2011_09_26_drive_0032_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 583 r
+2011_09_30/2011_09_30_drive_0028_sync 1069 r
+2011_09_26/2011_09_26_drive_0091_sync 246 l
+2011_09_26/2011_09_26_drive_0022_sync 345 r
+2011_09_30/2011_09_30_drive_0028_sync 3865 r
+2011_09_26/2011_09_26_drive_0057_sync 130 r
+2011_09_26/2011_09_26_drive_0051_sync 107 r
+2011_09_26/2011_09_26_drive_0019_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 4959 l
+2011_09_26/2011_09_26_drive_0015_sync 72 l
+2011_09_26/2011_09_26_drive_0028_sync 376 l
+2011_09_30/2011_09_30_drive_0034_sync 1156 l
+2011_09_30/2011_09_30_drive_0034_sync 440 l
+2011_10_03/2011_10_03_drive_0034_sync 3306 r
+2011_09_26/2011_09_26_drive_0039_sync 245 r
+2011_09_26/2011_09_26_drive_0019_sync 410 r
+2011_09_26/2011_09_26_drive_0061_sync 228 r
+2011_09_30/2011_09_30_drive_0034_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 2793 r
+2011_10_03/2011_10_03_drive_0034_sync 981 r
+2011_09_30/2011_09_30_drive_0020_sync 433 r
+2011_09_26/2011_09_26_drive_0011_sync 56 r
+2011_09_29/2011_09_29_drive_0004_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 2616 r
+2011_09_26/2011_09_26_drive_0057_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 3824 l
+2011_09_30/2011_09_30_drive_0028_sync 1924 l
+2011_10_03/2011_10_03_drive_0034_sync 4194 l
+2011_09_26/2011_09_26_drive_0022_sync 603 r
+2011_10_03/2011_10_03_drive_0042_sync 378 r
+2011_09_26/2011_09_26_drive_0061_sync 590 l
+2011_09_30/2011_09_30_drive_0020_sync 368 r
+2011_09_26/2011_09_26_drive_0070_sync 109 l
+2011_09_30/2011_09_30_drive_0033_sync 1115 l
+2011_09_30/2011_09_30_drive_0028_sync 3941 l
+2011_10_03/2011_10_03_drive_0034_sync 2427 l
+2011_09_30/2011_09_30_drive_0020_sync 386 r
+2011_09_26/2011_09_26_drive_0005_sync 107 l
+2011_09_26/2011_09_26_drive_0051_sync 66 r
+2011_10_03/2011_10_03_drive_0034_sync 776 l
+2011_09_30/2011_09_30_drive_0034_sync 743 l
+2011_09_26/2011_09_26_drive_0104_sync 300 r
+2011_09_26/2011_09_26_drive_0014_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 2588 l
+2011_09_26/2011_09_26_drive_0061_sync 680 r
+2011_09_30/2011_09_30_drive_0034_sync 574 r
+2011_09_26/2011_09_26_drive_0091_sync 281 r
+2011_09_30/2011_09_30_drive_0033_sync 449 r
+2011_10_03/2011_10_03_drive_0042_sync 64 l
+2011_09_26/2011_09_26_drive_0014_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 925 r
+2011_10_03/2011_10_03_drive_0034_sync 4345 l
+2011_09_30/2011_09_30_drive_0033_sync 763 r
+2011_10_03/2011_10_03_drive_0034_sync 3310 l
+2011_09_30/2011_09_30_drive_0028_sync 1937 l
+2011_09_26/2011_09_26_drive_0022_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 2276 r
+2011_09_30/2011_09_30_drive_0020_sync 350 r
+2011_10_03/2011_10_03_drive_0042_sync 10 l
+2011_10_03/2011_10_03_drive_0042_sync 361 r
+2011_09_30/2011_09_30_drive_0028_sync 2525 l
+2011_09_26/2011_09_26_drive_0087_sync 542 r
+2011_09_26/2011_09_26_drive_0032_sync 260 r
+2011_09_29/2011_09_29_drive_0004_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 3921 l
+2011_09_30/2011_09_30_drive_0028_sync 645 r
+2011_10_03/2011_10_03_drive_0034_sync 2629 l
+2011_10_03/2011_10_03_drive_0034_sync 3047 r
+2011_09_26/2011_09_26_drive_0001_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 3298 r
+2011_09_30/2011_09_30_drive_0034_sync 1058 l
+2011_10_03/2011_10_03_drive_0034_sync 706 l
+2011_09_26/2011_09_26_drive_0057_sync 41 l
+2011_09_26/2011_09_26_drive_0035_sync 37 r
+2011_09_26/2011_09_26_drive_0035_sync 87 l
+2011_09_30/2011_09_30_drive_0028_sync 2511 r
+2011_09_26/2011_09_26_drive_0028_sync 372 l
+2011_09_30/2011_09_30_drive_0028_sync 2846 l
+2011_09_30/2011_09_30_drive_0020_sync 500 l
+2011_09_26/2011_09_26_drive_0070_sync 45 r
+2011_09_30/2011_09_30_drive_0020_sync 79 r
+2011_09_30/2011_09_30_drive_0034_sync 673 l
+2011_09_30/2011_09_30_drive_0034_sync 335 r
+2011_09_30/2011_09_30_drive_0033_sync 931 l
+2011_09_26/2011_09_26_drive_0087_sync 574 r
+2011_09_30/2011_09_30_drive_0028_sync 1662 r
+2011_09_30/2011_09_30_drive_0028_sync 419 r
+2011_10_03/2011_10_03_drive_0034_sync 690 r
+2011_09_26/2011_09_26_drive_0070_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 4436 l
+2011_09_26/2011_09_26_drive_0022_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 1853 r
+2011_09_26/2011_09_26_drive_0051_sync 276 l
+2011_09_30/2011_09_30_drive_0033_sync 15 l
+2011_09_26/2011_09_26_drive_0061_sync 150 r
+2011_09_30/2011_09_30_drive_0033_sync 1181 l
+2011_09_30/2011_09_30_drive_0028_sync 2948 l
+2011_09_30/2011_09_30_drive_0028_sync 2868 l
+2011_10_03/2011_10_03_drive_0034_sync 3673 r
+2011_09_28/2011_09_28_drive_0001_sync 91 l
+2011_09_26/2011_09_26_drive_0051_sync 410 l
+2011_09_26/2011_09_26_drive_0095_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 420 l
+2011_09_26/2011_09_26_drive_0018_sync 206 l
+2011_10_03/2011_10_03_drive_0034_sync 323 l
+2011_09_26/2011_09_26_drive_0022_sync 767 l
+2011_09_26/2011_09_26_drive_0091_sync 319 r
+2011_09_30/2011_09_30_drive_0028_sync 5155 l
+2011_09_29/2011_09_29_drive_0004_sync 98 r
+2011_09_26/2011_09_26_drive_0014_sync 82 l
+2011_09_26/2011_09_26_drive_0061_sync 514 r
+2011_10_03/2011_10_03_drive_0034_sync 2648 l
+2011_10_03/2011_10_03_drive_0034_sync 1906 r
+2011_10_03/2011_10_03_drive_0034_sync 4234 r
+2011_09_26/2011_09_26_drive_0091_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 3893 r
+2011_09_30/2011_09_30_drive_0028_sync 2403 r
+2011_09_30/2011_09_30_drive_0028_sync 1771 l
+2011_10_03/2011_10_03_drive_0034_sync 4065 l
+2011_09_26/2011_09_26_drive_0087_sync 552 r
+2011_10_03/2011_10_03_drive_0034_sync 2030 l
+2011_10_03/2011_10_03_drive_0034_sync 3201 r
+2011_09_30/2011_09_30_drive_0028_sync 3945 l
+2011_09_29/2011_09_29_drive_0026_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 1407 r
+2011_09_30/2011_09_30_drive_0034_sync 28 r
+2011_09_26/2011_09_26_drive_0019_sync 313 r
+2011_10_03/2011_10_03_drive_0034_sync 1422 r
+2011_10_03/2011_10_03_drive_0034_sync 4309 l
+2011_09_26/2011_09_26_drive_0087_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 507 l
+2011_10_03/2011_10_03_drive_0042_sync 673 l
+2011_09_26/2011_09_26_drive_0087_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 1736 l
+2011_09_26/2011_09_26_drive_0039_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 1527 r
+2011_09_30/2011_09_30_drive_0028_sync 1409 l
+2011_09_30/2011_09_30_drive_0033_sync 197 r
+2011_09_30/2011_09_30_drive_0020_sync 912 r
+2011_09_30/2011_09_30_drive_0028_sync 3373 l
+2011_09_30/2011_09_30_drive_0034_sync 804 l
+2011_09_26/2011_09_26_drive_0087_sync 510 r
+2011_09_26/2011_09_26_drive_0017_sync 62 r
+2011_09_30/2011_09_30_drive_0033_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 744 r
+2011_09_30/2011_09_30_drive_0028_sync 1813 l
+2011_10_03/2011_10_03_drive_0034_sync 3591 l
+2011_09_26/2011_09_26_drive_0019_sync 352 r
+2011_09_26/2011_09_26_drive_0022_sync 785 l
+2011_10_03/2011_10_03_drive_0034_sync 134 r
+2011_10_03/2011_10_03_drive_0042_sync 687 r
+2011_10_03/2011_10_03_drive_0034_sync 1131 r
+2011_09_26/2011_09_26_drive_0022_sync 224 r
+2011_09_30/2011_09_30_drive_0028_sync 4335 r
+2011_09_26/2011_09_26_drive_0039_sync 217 r
+2011_09_26/2011_09_26_drive_0011_sync 53 l
+2011_09_30/2011_09_30_drive_0033_sync 856 r
+2011_09_30/2011_09_30_drive_0028_sync 3576 l
+2011_10_03/2011_10_03_drive_0042_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 1152 r
+2011_09_30/2011_09_30_drive_0028_sync 3662 r
+2011_09_30/2011_09_30_drive_0020_sync 579 r
+2011_10_03/2011_10_03_drive_0034_sync 3264 l
+2011_09_30/2011_09_30_drive_0034_sync 831 r
+2011_10_03/2011_10_03_drive_0034_sync 3107 l
+2011_09_26/2011_09_26_drive_0028_sync 384 l
+2011_10_03/2011_10_03_drive_0034_sync 1564 r
+2011_09_30/2011_09_30_drive_0034_sync 471 l
+2011_10_03/2011_10_03_drive_0034_sync 166 r
+2011_09_26/2011_09_26_drive_0087_sync 613 l
+2011_09_29/2011_09_29_drive_0026_sync 27 r
+2011_09_30/2011_09_30_drive_0020_sync 465 r
+2011_10_03/2011_10_03_drive_0042_sync 209 l
+2011_10_03/2011_10_03_drive_0034_sync 1978 l
+2011_09_26/2011_09_26_drive_0015_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 3188 l
+2011_09_26/2011_09_26_drive_0015_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 3589 l
+2011_09_26/2011_09_26_drive_0022_sync 642 l
+2011_09_30/2011_09_30_drive_0028_sync 1568 r
+2011_09_30/2011_09_30_drive_0028_sync 3859 r
+2011_09_30/2011_09_30_drive_0028_sync 1657 r
+2011_09_26/2011_09_26_drive_0039_sync 376 r
+2011_09_30/2011_09_30_drive_0033_sync 1590 l
+2011_10_03/2011_10_03_drive_0034_sync 4454 r
+2011_10_03/2011_10_03_drive_0034_sync 2800 l
+2011_10_03/2011_10_03_drive_0034_sync 200 r
+2011_09_28/2011_09_28_drive_0001_sync 47 l
+2011_09_26/2011_09_26_drive_0070_sync 191 r
+2011_09_30/2011_09_30_drive_0028_sync 1154 l
+2011_10_03/2011_10_03_drive_0034_sync 3035 l
+2011_09_30/2011_09_30_drive_0033_sync 1112 l
+2011_10_03/2011_10_03_drive_0034_sync 4009 l
+2011_09_30/2011_09_30_drive_0028_sync 2546 r
+2011_09_26/2011_09_26_drive_0060_sync 54 l
+2011_09_26/2011_09_26_drive_0005_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 4694 l
+2011_09_26/2011_09_26_drive_0079_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 637 r
+2011_10_03/2011_10_03_drive_0034_sync 1435 r
+2011_09_26/2011_09_26_drive_0087_sync 420 l
+2011_09_30/2011_09_30_drive_0028_sync 1701 r
+2011_09_26/2011_09_26_drive_0070_sync 91 r
+2011_09_30/2011_09_30_drive_0034_sync 12 l
+2011_09_30/2011_09_30_drive_0034_sync 1106 r
+2011_09_26/2011_09_26_drive_0022_sync 345 l
+2011_10_03/2011_10_03_drive_0034_sync 2956 r
+2011_09_26/2011_09_26_drive_0005_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 3298 l
+2011_09_30/2011_09_30_drive_0028_sync 2088 l
+2011_09_30/2011_09_30_drive_0033_sync 875 l
+2011_09_26/2011_09_26_drive_0005_sync 74 l
+2011_09_26/2011_09_26_drive_0051_sync 12 r
+2011_09_26/2011_09_26_drive_0035_sync 43 r
+2011_09_30/2011_09_30_drive_0033_sync 465 r
+2011_10_03/2011_10_03_drive_0034_sync 2169 l
+2011_09_30/2011_09_30_drive_0028_sync 5087 r
+2011_09_26/2011_09_26_drive_0022_sync 411 r
+2011_09_26/2011_09_26_drive_0018_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 1152 r
+2011_09_26/2011_09_26_drive_0032_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 1750 r
+2011_10_03/2011_10_03_drive_0034_sync 3018 r
+2011_10_03/2011_10_03_drive_0034_sync 2581 l
+2011_10_03/2011_10_03_drive_0034_sync 822 r
+2011_09_30/2011_09_30_drive_0033_sync 1475 l
+2011_09_30/2011_09_30_drive_0033_sync 1263 r
+2011_09_26/2011_09_26_drive_0087_sync 125 l
+2011_09_26/2011_09_26_drive_0022_sync 205 r
+2011_09_30/2011_09_30_drive_0028_sync 2210 r
+2011_10_03/2011_10_03_drive_0042_sync 704 l
+2011_09_30/2011_09_30_drive_0028_sync 2181 l
+2011_10_03/2011_10_03_drive_0034_sync 2928 l
+2011_10_03/2011_10_03_drive_0034_sync 865 l
+2011_09_29/2011_09_29_drive_0004_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 3333 r
+2011_09_30/2011_09_30_drive_0028_sync 2909 r
+2011_09_30/2011_09_30_drive_0028_sync 2884 l
+2011_09_30/2011_09_30_drive_0020_sync 823 l
+2011_09_26/2011_09_26_drive_0022_sync 594 l
+2011_10_03/2011_10_03_drive_0042_sync 394 l
+2011_09_26/2011_09_26_drive_0015_sync 115 r
+2011_09_26/2011_09_26_drive_0113_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 4595 r
+2011_09_30/2011_09_30_drive_0028_sync 2596 r
+2011_09_30/2011_09_30_drive_0028_sync 2418 r
+2011_09_26/2011_09_26_drive_0087_sync 388 l
+2011_10_03/2011_10_03_drive_0034_sync 2595 r
+2011_09_26/2011_09_26_drive_0018_sync 205 l
+2011_10_03/2011_10_03_drive_0034_sync 3814 l
+2011_10_03/2011_10_03_drive_0042_sync 766 l
+2011_09_26/2011_09_26_drive_0018_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 1054 l
+2011_09_30/2011_09_30_drive_0028_sync 2609 l
+2011_09_26/2011_09_26_drive_0051_sync 206 l
+2011_09_30/2011_09_30_drive_0028_sync 171 l
+2011_10_03/2011_10_03_drive_0034_sync 4316 l
+2011_10_03/2011_10_03_drive_0042_sync 247 l
+2011_10_03/2011_10_03_drive_0042_sync 353 r
+2011_09_30/2011_09_30_drive_0033_sync 241 l
+2011_09_26/2011_09_26_drive_0057_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 3938 r
+2011_09_26/2011_09_26_drive_0022_sync 630 l
+2011_09_30/2011_09_30_drive_0028_sync 2089 r
+2011_09_30/2011_09_30_drive_0028_sync 1108 l
+2011_10_03/2011_10_03_drive_0034_sync 3752 l
+2011_10_03/2011_10_03_drive_0042_sync 977 l
+2011_09_26/2011_09_26_drive_0035_sync 118 r
+2011_09_26/2011_09_26_drive_0032_sync 20 r
+2011_09_26/2011_09_26_drive_0015_sync 120 l
+2011_09_26/2011_09_26_drive_0011_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 1075 r
+2011_09_26/2011_09_26_drive_0028_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 2281 l
+2011_09_30/2011_09_30_drive_0028_sync 3759 l
+2011_09_26/2011_09_26_drive_0001_sync 27 r
+2011_09_26/2011_09_26_drive_0087_sync 226 r
+2011_09_30/2011_09_30_drive_0033_sync 978 l
+2011_09_26/2011_09_26_drive_0070_sync 208 l
+2011_09_30/2011_09_30_drive_0028_sync 1671 r
+2011_10_03/2011_10_03_drive_0034_sync 4357 l
+2011_09_26/2011_09_26_drive_0095_sync 77 l
+2011_10_03/2011_10_03_drive_0042_sync 1052 l
+2011_09_26/2011_09_26_drive_0061_sync 124 r
+2011_09_26/2011_09_26_drive_0019_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 4293 l
+2011_10_03/2011_10_03_drive_0042_sync 983 r
+2011_09_30/2011_09_30_drive_0028_sync 3260 l
+2011_10_03/2011_10_03_drive_0034_sync 388 r
+2011_09_30/2011_09_30_drive_0028_sync 3031 r
+2011_09_26/2011_09_26_drive_0061_sync 125 l
+2011_09_30/2011_09_30_drive_0033_sync 749 r
+2011_10_03/2011_10_03_drive_0034_sync 3961 r
+2011_09_26/2011_09_26_drive_0061_sync 391 r
+2011_09_26/2011_09_26_drive_0104_sync 91 r
+2011_09_30/2011_09_30_drive_0028_sync 4576 l
+2011_09_30/2011_09_30_drive_0033_sync 457 l
+2011_09_26/2011_09_26_drive_0104_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 585 r
+2011_09_26/2011_09_26_drive_0061_sync 483 l
+2011_09_30/2011_09_30_drive_0034_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 72 l
+2011_09_26/2011_09_26_drive_0035_sync 20 r
+2011_09_30/2011_09_30_drive_0028_sync 4537 l
+2011_09_30/2011_09_30_drive_0028_sync 1726 r
+2011_09_30/2011_09_30_drive_0028_sync 1974 r
+2011_09_30/2011_09_30_drive_0028_sync 2573 l
+2011_09_30/2011_09_30_drive_0020_sync 199 l
+2011_10_03/2011_10_03_drive_0034_sync 1472 l
+2011_10_03/2011_10_03_drive_0034_sync 2926 r
+2011_09_26/2011_09_26_drive_0019_sync 267 l
+2011_09_26/2011_09_26_drive_0015_sync 242 l
+2011_10_03/2011_10_03_drive_0042_sync 774 l
+2011_10_03/2011_10_03_drive_0042_sync 667 r
+2011_09_30/2011_09_30_drive_0033_sync 1233 l
+2011_09_30/2011_09_30_drive_0028_sync 1910 r
+2011_09_26/2011_09_26_drive_0087_sync 202 r
+2011_10_03/2011_10_03_drive_0034_sync 2363 l
+2011_09_30/2011_09_30_drive_0034_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 4418 r
+2011_09_30/2011_09_30_drive_0028_sync 3279 r
+2011_09_26/2011_09_26_drive_0017_sync 99 r
+2011_10_03/2011_10_03_drive_0042_sync 268 r
+2011_09_29/2011_09_29_drive_0004_sync 235 r
+2011_09_26/2011_09_26_drive_0061_sync 240 r
+2011_09_30/2011_09_30_drive_0033_sync 1120 r
+2011_09_29/2011_09_29_drive_0004_sync 228 r
+2011_09_30/2011_09_30_drive_0028_sync 1990 r
+2011_09_26/2011_09_26_drive_0087_sync 460 r
+2011_09_26/2011_09_26_drive_0011_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 3679 r
+2011_09_26/2011_09_26_drive_0039_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 997 l
+2011_10_03/2011_10_03_drive_0034_sync 1353 l
+2011_09_26/2011_09_26_drive_0022_sync 315 r
+2011_09_26/2011_09_26_drive_0079_sync 8 r
+2011_09_30/2011_09_30_drive_0028_sync 4747 r
+2011_09_30/2011_09_30_drive_0028_sync 4994 l
+2011_09_30/2011_09_30_drive_0033_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 1718 l
+2011_10_03/2011_10_03_drive_0034_sync 3574 r
+2011_09_30/2011_09_30_drive_0034_sync 113 l
+2011_09_30/2011_09_30_drive_0028_sync 2571 r
+2011_10_03/2011_10_03_drive_0034_sync 1274 r
+2011_09_30/2011_09_30_drive_0028_sync 1285 r
+2011_10_03/2011_10_03_drive_0034_sync 847 r
+2011_10_03/2011_10_03_drive_0042_sync 762 r
+2011_09_29/2011_09_29_drive_0026_sync 141 l
+2011_09_30/2011_09_30_drive_0020_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 2045 l
+2011_10_03/2011_10_03_drive_0034_sync 2209 r
+2011_09_26/2011_09_26_drive_0039_sync 201 l
+2011_09_26/2011_09_26_drive_0051_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 4931 r
+2011_09_30/2011_09_30_drive_0028_sync 1301 r
+2011_09_26/2011_09_26_drive_0019_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 3236 r
+2011_09_29/2011_09_29_drive_0004_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 2997 l
+2011_09_26/2011_09_26_drive_0091_sync 270 l
+2011_09_26/2011_09_26_drive_0051_sync 271 l
+2011_09_30/2011_09_30_drive_0028_sync 4164 r
+2011_10_03/2011_10_03_drive_0042_sync 112 l
+2011_09_30/2011_09_30_drive_0033_sync 233 l
+2011_09_26/2011_09_26_drive_0051_sync 133 r
+2011_09_30/2011_09_30_drive_0033_sync 817 r
+2011_09_30/2011_09_30_drive_0020_sync 1045 l
+2011_09_26/2011_09_26_drive_0028_sync 409 r
+2011_09_26/2011_09_26_drive_0061_sync 124 l
+2011_09_30/2011_09_30_drive_0033_sync 1582 l
+2011_10_03/2011_10_03_drive_0034_sync 1841 r
+2011_09_26/2011_09_26_drive_0104_sync 21 l
+2011_09_30/2011_09_30_drive_0034_sync 690 r
+2011_09_29/2011_09_29_drive_0004_sync 31 r
+2011_09_26/2011_09_26_drive_0022_sync 429 r
+2011_09_26/2011_09_26_drive_0061_sync 132 r
+2011_09_30/2011_09_30_drive_0028_sync 4438 r
+2011_09_26/2011_09_26_drive_0051_sync 56 r
+2011_09_26/2011_09_26_drive_0051_sync 38 r
+2011_09_26/2011_09_26_drive_0019_sync 295 r
+2011_10_03/2011_10_03_drive_0034_sync 2951 r
+2011_10_03/2011_10_03_drive_0042_sync 821 r
+2011_10_03/2011_10_03_drive_0034_sync 2608 l
+2011_09_26/2011_09_26_drive_0051_sync 256 r
+2011_09_26/2011_09_26_drive_0028_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 3217 r
+2011_09_26/2011_09_26_drive_0032_sync 41 r
+2011_09_29/2011_09_29_drive_0004_sync 139 l
+2011_10_03/2011_10_03_drive_0034_sync 3986 l
+2011_10_03/2011_10_03_drive_0034_sync 4060 r
+2011_10_03/2011_10_03_drive_0034_sync 3849 r
+2011_09_26/2011_09_26_drive_0070_sync 82 l
+2011_10_03/2011_10_03_drive_0042_sync 897 r
+2011_09_30/2011_09_30_drive_0020_sync 382 l
+2011_09_26/2011_09_26_drive_0057_sync 118 l
+2011_09_30/2011_09_30_drive_0034_sync 565 l
+2011_09_30/2011_09_30_drive_0033_sync 306 r
+2011_09_30/2011_09_30_drive_0028_sync 4008 l
+2011_09_30/2011_09_30_drive_0028_sync 3795 r
+2011_10_03/2011_10_03_drive_0034_sync 4042 l
+2011_09_30/2011_09_30_drive_0028_sync 4374 l
+2011_09_30/2011_09_30_drive_0028_sync 255 r
+2011_09_26/2011_09_26_drive_0061_sync 658 r
+2011_09_30/2011_09_30_drive_0028_sync 3479 l
+2011_10_03/2011_10_03_drive_0034_sync 1010 r
+2011_09_30/2011_09_30_drive_0028_sync 4050 r
+2011_09_30/2011_09_30_drive_0028_sync 899 l
+2011_09_26/2011_09_26_drive_0057_sync 26 l
+2011_10_03/2011_10_03_drive_0034_sync 2930 r
+2011_09_30/2011_09_30_drive_0034_sync 1190 r
+2011_09_30/2011_09_30_drive_0033_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 4774 r
+2011_09_28/2011_09_28_drive_0001_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 776 l
+2011_09_30/2011_09_30_drive_0028_sync 4671 r
+2011_09_30/2011_09_30_drive_0033_sync 166 l
+2011_09_26/2011_09_26_drive_0091_sync 198 r
+2011_09_30/2011_09_30_drive_0028_sync 540 l
+2011_09_26/2011_09_26_drive_0001_sync 2 r
+2011_09_26/2011_09_26_drive_0113_sync 17 l
+2011_09_26/2011_09_26_drive_0022_sync 635 l
+2011_09_30/2011_09_30_drive_0028_sync 5012 l
+2011_09_30/2011_09_30_drive_0028_sync 5161 r
+2011_09_30/2011_09_30_drive_0028_sync 4379 r
+2011_09_30/2011_09_30_drive_0020_sync 564 r
+2011_10_03/2011_10_03_drive_0042_sync 66 l
+2011_09_30/2011_09_30_drive_0028_sync 4616 l
+2011_10_03/2011_10_03_drive_0034_sync 3412 l
+2011_10_03/2011_10_03_drive_0034_sync 4650 r
+2011_09_30/2011_09_30_drive_0020_sync 88 r
+2011_10_03/2011_10_03_drive_0042_sync 331 r
+2011_09_26/2011_09_26_drive_0005_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 1178 r
+2011_10_03/2011_10_03_drive_0042_sync 639 r
+2011_09_30/2011_09_30_drive_0028_sync 169 r
+2011_09_26/2011_09_26_drive_0019_sync 222 l
+2011_09_26/2011_09_26_drive_0095_sync 168 r
+2011_09_26/2011_09_26_drive_0015_sync 29 r
+2011_09_30/2011_09_30_drive_0020_sync 648 l
+2011_09_30/2011_09_30_drive_0028_sync 3229 l
+2011_10_03/2011_10_03_drive_0034_sync 4090 l
+2011_09_30/2011_09_30_drive_0028_sync 602 l
+2011_09_26/2011_09_26_drive_0039_sync 145 l
+2011_09_30/2011_09_30_drive_0034_sync 685 l
+2011_10_03/2011_10_03_drive_0034_sync 4407 r
+2011_09_26/2011_09_26_drive_0061_sync 608 l
+2011_10_03/2011_10_03_drive_0034_sync 1270 l
+2011_09_30/2011_09_30_drive_0033_sync 1016 r
+2011_09_26/2011_09_26_drive_0061_sync 247 l
+2011_10_03/2011_10_03_drive_0034_sync 4310 r
+2011_10_03/2011_10_03_drive_0034_sync 768 l
+2011_09_26/2011_09_26_drive_0014_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 2023 l
+2011_09_26/2011_09_26_drive_0057_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 2968 l
+2011_10_03/2011_10_03_drive_0034_sync 970 r
+2011_09_26/2011_09_26_drive_0051_sync 283 l
+2011_09_26/2011_09_26_drive_0019_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 3428 l
+2011_09_30/2011_09_30_drive_0033_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 2656 r
+2011_10_03/2011_10_03_drive_0034_sync 3989 l
+2011_10_03/2011_10_03_drive_0042_sync 264 l
+2011_09_26/2011_09_26_drive_0061_sync 640 l
+2011_09_26/2011_09_26_drive_0032_sync 47 r
+2011_09_30/2011_09_30_drive_0034_sync 1157 l
+2011_09_30/2011_09_30_drive_0020_sync 785 r
+2011_10_03/2011_10_03_drive_0034_sync 1230 r
+2011_09_30/2011_09_30_drive_0028_sync 1816 r
+2011_09_30/2011_09_30_drive_0020_sync 816 l
+2011_09_30/2011_09_30_drive_0028_sync 2131 r
+2011_09_26/2011_09_26_drive_0022_sync 187 l
+2011_09_30/2011_09_30_drive_0028_sync 518 l
+2011_09_26/2011_09_26_drive_0028_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 882 l
+2011_09_30/2011_09_30_drive_0020_sync 517 r
+2011_09_26/2011_09_26_drive_0051_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 1206 r
+2011_09_30/2011_09_30_drive_0028_sync 1537 r
+2011_09_26/2011_09_26_drive_0039_sync 170 l
+2011_10_03/2011_10_03_drive_0034_sync 2727 l
+2011_09_30/2011_09_30_drive_0028_sync 1559 l
+2011_09_30/2011_09_30_drive_0028_sync 2949 l
+2011_09_30/2011_09_30_drive_0028_sync 5010 l
+2011_09_26/2011_09_26_drive_0022_sync 151 r
+2011_09_30/2011_09_30_drive_0028_sync 1117 r
+2011_09_30/2011_09_30_drive_0028_sync 1875 l
+2011_09_26/2011_09_26_drive_0087_sync 352 l
+2011_09_30/2011_09_30_drive_0028_sync 3018 r
+2011_09_26/2011_09_26_drive_0070_sync 348 r
+2011_09_26/2011_09_26_drive_0028_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 4240 r
+2011_09_30/2011_09_30_drive_0028_sync 282 r
+2011_09_30/2011_09_30_drive_0020_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 1172 r
+2011_09_26/2011_09_26_drive_0039_sync 11 l
+2011_09_26/2011_09_26_drive_0001_sync 69 l
+2011_09_26/2011_09_26_drive_0019_sync 298 l
+2011_09_30/2011_09_30_drive_0028_sync 1598 l
+2011_10_03/2011_10_03_drive_0042_sync 109 r
+2011_10_03/2011_10_03_drive_0034_sync 2371 r
+2011_09_26/2011_09_26_drive_0005_sync 106 l
+2011_10_03/2011_10_03_drive_0034_sync 2040 l
+2011_09_30/2011_09_30_drive_0033_sync 132 r
+2011_09_26/2011_09_26_drive_0057_sync 334 r
+2011_09_26/2011_09_26_drive_0104_sync 209 r
+2011_09_30/2011_09_30_drive_0028_sync 1188 r
+2011_09_30/2011_09_30_drive_0028_sync 1616 l
+2011_09_26/2011_09_26_drive_0028_sync 272 r
+2011_10_03/2011_10_03_drive_0042_sync 528 l
+2011_09_30/2011_09_30_drive_0028_sync 4385 r
+2011_09_26/2011_09_26_drive_0032_sync 199 l
+2011_09_30/2011_09_30_drive_0020_sync 56 l
+2011_09_26/2011_09_26_drive_0022_sync 640 r
+2011_10_03/2011_10_03_drive_0034_sync 3549 l
+2011_10_03/2011_10_03_drive_0042_sync 651 r
+2011_09_26/2011_09_26_drive_0005_sync 22 r
+2011_09_26/2011_09_26_drive_0039_sync 147 l
+2011_09_30/2011_09_30_drive_0020_sync 952 r
+2011_09_26/2011_09_26_drive_0022_sync 458 r
+2011_10_03/2011_10_03_drive_0042_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 2103 l
+2011_09_26/2011_09_26_drive_0022_sync 555 r
+2011_10_03/2011_10_03_drive_0034_sync 1928 r
+2011_09_30/2011_09_30_drive_0034_sync 295 r
+2011_09_26/2011_09_26_drive_0061_sync 402 l
+2011_09_26/2011_09_26_drive_0051_sync 129 r
+2011_09_30/2011_09_30_drive_0034_sync 476 r
+2011_09_26/2011_09_26_drive_0019_sync 8 r
+2011_09_26/2011_09_26_drive_0091_sync 268 l
+2011_09_30/2011_09_30_drive_0028_sync 3737 r
+2011_09_30/2011_09_30_drive_0033_sync 596 r
+2011_09_30/2011_09_30_drive_0034_sync 94 r
+2011_10_03/2011_10_03_drive_0034_sync 3785 l
+2011_09_26/2011_09_26_drive_0061_sync 556 r
+2011_09_26/2011_09_26_drive_0113_sync 85 l
+2011_09_30/2011_09_30_drive_0033_sync 1499 l
+2011_10_03/2011_10_03_drive_0034_sync 887 l
+2011_09_29/2011_09_29_drive_0004_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 3584 r
+2011_09_26/2011_09_26_drive_0091_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 4389 r
+2011_09_30/2011_09_30_drive_0028_sync 1898 r
+2011_09_30/2011_09_30_drive_0020_sync 609 l
+2011_10_03/2011_10_03_drive_0034_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 1386 r
+2011_10_03/2011_10_03_drive_0034_sync 2275 r
+2011_09_30/2011_09_30_drive_0028_sync 810 r
+2011_09_30/2011_09_30_drive_0028_sync 3546 l
+2011_10_03/2011_10_03_drive_0034_sync 514 l
+2011_09_26/2011_09_26_drive_0032_sync 193 r
+2011_10_03/2011_10_03_drive_0042_sync 495 r
+2011_10_03/2011_10_03_drive_0034_sync 2069 l
+2011_09_30/2011_09_30_drive_0028_sync 4121 r
+2011_09_30/2011_09_30_drive_0028_sync 1972 r
+2011_10_03/2011_10_03_drive_0042_sync 536 l
+2011_09_26/2011_09_26_drive_0091_sync 123 r
+2011_09_26/2011_09_26_drive_0057_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 3959 r
+2011_09_29/2011_09_29_drive_0026_sync 128 r
+2011_10_03/2011_10_03_drive_0034_sync 2116 r
+2011_10_03/2011_10_03_drive_0034_sync 866 r
+2011_09_26/2011_09_26_drive_0014_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 591 r
+2011_09_30/2011_09_30_drive_0028_sync 3335 r
+2011_09_26/2011_09_26_drive_0032_sync 331 l
+2011_09_30/2011_09_30_drive_0028_sync 2785 r
+2011_10_03/2011_10_03_drive_0034_sync 3321 r
+2011_09_30/2011_09_30_drive_0028_sync 5026 r
+2011_09_26/2011_09_26_drive_0014_sync 307 l
+2011_09_30/2011_09_30_drive_0028_sync 1169 r
+2011_09_29/2011_09_29_drive_0004_sync 138 l
+2011_09_26/2011_09_26_drive_0039_sync 382 l
+2011_10_03/2011_10_03_drive_0034_sync 3622 l
+2011_09_26/2011_09_26_drive_0015_sync 87 r
+2011_10_03/2011_10_03_drive_0042_sync 270 l
+2011_09_26/2011_09_26_drive_0011_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 1675 l
+2011_09_30/2011_09_30_drive_0028_sync 4489 r
+2011_10_03/2011_10_03_drive_0034_sync 2082 r
+2011_09_26/2011_09_26_drive_0095_sync 136 l
+2011_09_26/2011_09_26_drive_0091_sync 240 r
+2011_09_26/2011_09_26_drive_0019_sync 4 l
+2011_09_30/2011_09_30_drive_0020_sync 1093 r
+2011_10_03/2011_10_03_drive_0034_sync 3958 r
+2011_09_30/2011_09_30_drive_0020_sync 747 r
+2011_10_03/2011_10_03_drive_0034_sync 765 l
+2011_09_26/2011_09_26_drive_0022_sync 456 r
+2011_09_26/2011_09_26_drive_0087_sync 615 l
+2011_09_26/2011_09_26_drive_0022_sync 4 l
+2011_09_30/2011_09_30_drive_0033_sync 1513 r
+2011_09_26/2011_09_26_drive_0032_sync 386 r
+2011_09_26/2011_09_26_drive_0028_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 75 l
+2011_09_26/2011_09_26_drive_0017_sync 43 r
+2011_09_30/2011_09_30_drive_0033_sync 233 r
+2011_10_03/2011_10_03_drive_0042_sync 233 r
+2011_09_26/2011_09_26_drive_0087_sync 578 l
+2011_09_30/2011_09_30_drive_0028_sync 2542 r
+2011_10_03/2011_10_03_drive_0034_sync 574 r
+2011_10_03/2011_10_03_drive_0042_sync 874 l
+2011_10_03/2011_10_03_drive_0034_sync 3582 r
+2011_10_03/2011_10_03_drive_0034_sync 3612 l
+2011_09_30/2011_09_30_drive_0028_sync 3726 l
+2011_09_30/2011_09_30_drive_0028_sync 4917 r
+2011_10_03/2011_10_03_drive_0034_sync 1832 l
+2011_09_26/2011_09_26_drive_0032_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 4047 r
+2011_10_03/2011_10_03_drive_0042_sync 362 r
+2011_09_26/2011_09_26_drive_0091_sync 284 r
+2011_09_26/2011_09_26_drive_0087_sync 581 r
+2011_09_30/2011_09_30_drive_0028_sync 177 l
+2011_09_29/2011_09_29_drive_0004_sync 151 l
+2011_09_26/2011_09_26_drive_0019_sync 196 r
+2011_10_03/2011_10_03_drive_0042_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 4893 r
+2011_09_26/2011_09_26_drive_0028_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 1755 l
+2011_10_03/2011_10_03_drive_0042_sync 291 l
+2011_09_26/2011_09_26_drive_0104_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 5117 l
+2011_09_26/2011_09_26_drive_0104_sync 69 r
+2011_09_26/2011_09_26_drive_0087_sync 507 r
+2011_10_03/2011_10_03_drive_0034_sync 1779 r
+2011_10_03/2011_10_03_drive_0034_sync 4632 r
+2011_10_03/2011_10_03_drive_0034_sync 258 r
+2011_09_26/2011_09_26_drive_0091_sync 115 l
+2011_09_29/2011_09_29_drive_0004_sync 230 l
+2011_09_26/2011_09_26_drive_0070_sync 409 l
+2011_09_29/2011_09_29_drive_0026_sync 20 r
+2011_10_03/2011_10_03_drive_0042_sync 479 l
+2011_09_28/2011_09_28_drive_0001_sync 68 r
+2011_09_26/2011_09_26_drive_0015_sync 30 r
+2011_09_30/2011_09_30_drive_0034_sync 1144 l
+2011_09_26/2011_09_26_drive_0014_sync 153 r
+2011_10_03/2011_10_03_drive_0034_sync 4588 r
+2011_09_26/2011_09_26_drive_0019_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 2654 l
+2011_09_30/2011_09_30_drive_0028_sync 4226 r
+2011_09_30/2011_09_30_drive_0033_sync 953 r
+2011_09_30/2011_09_30_drive_0028_sync 2213 l
+2011_09_30/2011_09_30_drive_0033_sync 416 l
+2011_10_03/2011_10_03_drive_0034_sync 2551 l
+2011_09_30/2011_09_30_drive_0033_sync 1572 r
+2011_10_03/2011_10_03_drive_0034_sync 1338 l
+2011_09_26/2011_09_26_drive_0087_sync 476 l
+2011_09_30/2011_09_30_drive_0028_sync 970 l
+2011_09_26/2011_09_26_drive_0022_sync 292 l
+2011_10_03/2011_10_03_drive_0034_sync 3997 l
+2011_10_03/2011_10_03_drive_0034_sync 3468 r
+2011_09_26/2011_09_26_drive_0028_sync 407 r
+2011_09_30/2011_09_30_drive_0033_sync 121 r
+2011_09_30/2011_09_30_drive_0033_sync 1146 r
+2011_09_30/2011_09_30_drive_0033_sync 446 r
+2011_09_26/2011_09_26_drive_0015_sync 128 l
+2011_10_03/2011_10_03_drive_0042_sync 396 l
+2011_09_30/2011_09_30_drive_0033_sync 1260 l
+2011_09_26/2011_09_26_drive_0018_sync 115 l
+2011_09_26/2011_09_26_drive_0070_sync 334 r
+2011_09_26/2011_09_26_drive_0104_sync 190 r
+2011_09_26/2011_09_26_drive_0087_sync 398 l
+2011_10_03/2011_10_03_drive_0034_sync 1703 r
+2011_09_26/2011_09_26_drive_0087_sync 280 r
+2011_10_03/2011_10_03_drive_0034_sync 417 l
+2011_09_30/2011_09_30_drive_0033_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 939 l
+2011_09_26/2011_09_26_drive_0061_sync 258 r
+2011_09_26/2011_09_26_drive_0039_sync 352 r
+2011_09_30/2011_09_30_drive_0028_sync 2643 l
+2011_09_26/2011_09_26_drive_0061_sync 140 l
+2011_09_26/2011_09_26_drive_0017_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 3591 l
+2011_09_30/2011_09_30_drive_0033_sync 595 r
+2011_10_03/2011_10_03_drive_0034_sync 951 l
+2011_09_30/2011_09_30_drive_0028_sync 476 l
+2011_09_30/2011_09_30_drive_0034_sync 737 l
+2011_09_30/2011_09_30_drive_0028_sync 1516 r
+2011_09_30/2011_09_30_drive_0028_sync 714 r
+2011_09_26/2011_09_26_drive_0095_sync 68 l
+2011_09_30/2011_09_30_drive_0033_sync 434 r
+2011_09_26/2011_09_26_drive_0057_sync 302 r
+2011_09_30/2011_09_30_drive_0033_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 1394 r
+2011_09_30/2011_09_30_drive_0033_sync 35 l
+2011_09_26/2011_09_26_drive_0039_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 353 l
+2011_10_03/2011_10_03_drive_0034_sync 3881 r
+2011_09_30/2011_09_30_drive_0028_sync 5174 l
+2011_09_26/2011_09_26_drive_0095_sync 152 r
+2011_10_03/2011_10_03_drive_0042_sync 844 r
+2011_09_30/2011_09_30_drive_0033_sync 278 l
+2011_09_29/2011_09_29_drive_0026_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 590 r
+2011_09_30/2011_09_30_drive_0033_sync 530 l
+2011_09_26/2011_09_26_drive_0061_sync 647 l
+2011_10_03/2011_10_03_drive_0034_sync 4648 r
+2011_09_30/2011_09_30_drive_0028_sync 3046 r
+2011_09_26/2011_09_26_drive_0015_sync 139 r
+2011_09_26/2011_09_26_drive_0022_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 603 r
+2011_09_26/2011_09_26_drive_0011_sync 14 l
+2011_09_30/2011_09_30_drive_0034_sync 161 r
+2011_09_26/2011_09_26_drive_0070_sync 367 l
+2011_09_30/2011_09_30_drive_0028_sync 4018 l
+2011_09_26/2011_09_26_drive_0091_sync 21 l
+2011_10_03/2011_10_03_drive_0034_sync 2742 r
+2011_09_30/2011_09_30_drive_0034_sync 712 l
+2011_09_30/2011_09_30_drive_0028_sync 1956 r
+2011_09_26/2011_09_26_drive_0032_sync 181 r
+2011_09_26/2011_09_26_drive_0070_sync 248 r
+2011_09_30/2011_09_30_drive_0028_sync 4872 r
+2011_10_03/2011_10_03_drive_0042_sync 1066 l
+2011_10_03/2011_10_03_drive_0034_sync 1742 l
+2011_09_26/2011_09_26_drive_0061_sync 507 l
+2011_09_30/2011_09_30_drive_0034_sync 68 r
+2011_10_03/2011_10_03_drive_0034_sync 2325 l
+2011_09_26/2011_09_26_drive_0113_sync 18 r
+2011_09_29/2011_09_29_drive_0004_sync 101 r
+2011_09_30/2011_09_30_drive_0020_sync 308 r
+2011_09_30/2011_09_30_drive_0033_sync 604 l
+2011_10_03/2011_10_03_drive_0034_sync 1810 r
+2011_09_30/2011_09_30_drive_0033_sync 741 r
+2011_09_26/2011_09_26_drive_0039_sync 382 r
+2011_09_26/2011_09_26_drive_0014_sync 306 l
+2011_10_03/2011_10_03_drive_0042_sync 182 l
+2011_09_26/2011_09_26_drive_0032_sync 307 r
+2011_09_26/2011_09_26_drive_0039_sync 316 l
+2011_09_26/2011_09_26_drive_0104_sync 263 r
+2011_09_26/2011_09_26_drive_0032_sync 29 l
+2011_09_26/2011_09_26_drive_0079_sync 17 l
+2011_09_30/2011_09_30_drive_0033_sync 270 r
+2011_09_26/2011_09_26_drive_0051_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 4886 r
+2011_10_03/2011_10_03_drive_0034_sync 1337 l
+2011_09_30/2011_09_30_drive_0028_sync 2138 r
+2011_10_03/2011_10_03_drive_0034_sync 962 l
+2011_10_03/2011_10_03_drive_0034_sync 3347 r
+2011_09_26/2011_09_26_drive_0022_sync 120 r
+2011_09_30/2011_09_30_drive_0034_sync 776 l
+2011_09_30/2011_09_30_drive_0020_sync 714 r
+2011_09_30/2011_09_30_drive_0020_sync 539 l
+2011_10_03/2011_10_03_drive_0042_sync 349 l
+2011_09_30/2011_09_30_drive_0034_sync 1126 r
+2011_09_30/2011_09_30_drive_0028_sync 1053 l
+2011_09_30/2011_09_30_drive_0028_sync 2604 r
+2011_10_03/2011_10_03_drive_0034_sync 4487 l
+2011_09_26/2011_09_26_drive_0015_sync 288 r
+2011_09_26/2011_09_26_drive_0104_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 4145 l
+2011_10_03/2011_10_03_drive_0034_sync 3416 l
+2011_09_30/2011_09_30_drive_0034_sync 965 r
+2011_09_30/2011_09_30_drive_0028_sync 513 l
+2011_10_03/2011_10_03_drive_0034_sync 1175 l
+2011_09_30/2011_09_30_drive_0028_sync 4629 l
+2011_09_26/2011_09_26_drive_0061_sync 45 l
+2011_09_26/2011_09_26_drive_0022_sync 55 l
+2011_09_26/2011_09_26_drive_0061_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 3600 l
+2011_10_03/2011_10_03_drive_0034_sync 229 l
+2011_09_26/2011_09_26_drive_0061_sync 340 l
+2011_09_30/2011_09_30_drive_0034_sync 320 l
+2011_09_26/2011_09_26_drive_0039_sync 87 r
+2011_10_03/2011_10_03_drive_0034_sync 1962 r
+2011_09_26/2011_09_26_drive_0061_sync 1 r
+2011_09_26/2011_09_26_drive_0017_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 1162 r
+2011_10_03/2011_10_03_drive_0034_sync 710 r
+2011_09_26/2011_09_26_drive_0032_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 3114 r
+2011_10_03/2011_10_03_drive_0034_sync 4536 r
+2011_09_30/2011_09_30_drive_0034_sync 945 r
+2011_09_30/2011_09_30_drive_0028_sync 2817 l
+2011_09_30/2011_09_30_drive_0020_sync 1051 l
+2011_09_30/2011_09_30_drive_0028_sync 4924 l
+2011_10_03/2011_10_03_drive_0034_sync 4535 r
+2011_09_30/2011_09_30_drive_0028_sync 2763 r
+2011_09_26/2011_09_26_drive_0039_sync 158 r
+2011_09_26/2011_09_26_drive_0032_sync 127 l
+2011_09_30/2011_09_30_drive_0033_sync 873 r
+2011_10_03/2011_10_03_drive_0034_sync 4094 l
+2011_09_30/2011_09_30_drive_0028_sync 2803 l
+2011_10_03/2011_10_03_drive_0034_sync 2427 r
+2011_10_03/2011_10_03_drive_0034_sync 1461 r
+2011_09_26/2011_09_26_drive_0061_sync 256 l
+2011_09_30/2011_09_30_drive_0033_sync 800 l
+2011_10_03/2011_10_03_drive_0042_sync 628 l
+2011_10_03/2011_10_03_drive_0034_sync 1105 r
+2011_09_26/2011_09_26_drive_0087_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 3199 r
+2011_09_30/2011_09_30_drive_0033_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 3159 r
+2011_09_30/2011_09_30_drive_0020_sync 430 r
+2011_09_30/2011_09_30_drive_0020_sync 1019 l
+2011_10_03/2011_10_03_drive_0034_sync 988 r
+2011_09_30/2011_09_30_drive_0028_sync 4890 l
+2011_09_30/2011_09_30_drive_0033_sync 1292 l
+2011_09_30/2011_09_30_drive_0033_sync 1266 r
+2011_10_03/2011_10_03_drive_0034_sync 4174 r
+2011_09_30/2011_09_30_drive_0028_sync 4875 r
+2011_09_26/2011_09_26_drive_0057_sync 339 r
+2011_09_26/2011_09_26_drive_0057_sync 56 l
+2011_09_26/2011_09_26_drive_0019_sync 346 r
+2011_10_03/2011_10_03_drive_0034_sync 2033 l
+2011_10_03/2011_10_03_drive_0034_sync 1323 l
+2011_09_30/2011_09_30_drive_0028_sync 293 r
+2011_09_26/2011_09_26_drive_0015_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 92 l
+2011_09_26/2011_09_26_drive_0087_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 692 r
+2011_09_30/2011_09_30_drive_0020_sync 777 l
+2011_09_26/2011_09_26_drive_0035_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 3379 l
+2011_09_30/2011_09_30_drive_0034_sync 740 l
+2011_09_26/2011_09_26_drive_0104_sync 87 l
+2011_09_30/2011_09_30_drive_0020_sync 763 l
+2011_09_30/2011_09_30_drive_0028_sync 3683 l
+2011_09_26/2011_09_26_drive_0039_sync 106 l
+2011_09_26/2011_09_26_drive_0028_sync 107 l
+2011_09_29/2011_09_29_drive_0026_sync 106 l
+2011_09_26/2011_09_26_drive_0057_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 4531 l
+2011_09_26/2011_09_26_drive_0028_sync 51 l
+2011_10_03/2011_10_03_drive_0034_sync 1377 l
+2011_09_30/2011_09_30_drive_0028_sync 3633 r
+2011_10_03/2011_10_03_drive_0034_sync 2172 r
+2011_09_29/2011_09_29_drive_0026_sync 130 l
+2011_10_03/2011_10_03_drive_0034_sync 1872 l
+2011_09_30/2011_09_30_drive_0033_sync 959 l
+2011_09_30/2011_09_30_drive_0028_sync 4719 r
+2011_09_30/2011_09_30_drive_0034_sync 1102 r
+2011_09_30/2011_09_30_drive_0020_sync 299 l
+2011_09_26/2011_09_26_drive_0060_sync 62 l
+2011_09_26/2011_09_26_drive_0032_sync 226 l
+2011_09_26/2011_09_26_drive_0057_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 1230 r
+2011_10_03/2011_10_03_drive_0034_sync 3433 r
+2011_09_26/2011_09_26_drive_0022_sync 397 r
+2011_10_03/2011_10_03_drive_0034_sync 3890 r
+2011_09_30/2011_09_30_drive_0034_sync 791 l
+2011_10_03/2011_10_03_drive_0034_sync 777 r
+2011_10_03/2011_10_03_drive_0042_sync 991 l
+2011_09_26/2011_09_26_drive_0022_sync 45 r
+2011_09_30/2011_09_30_drive_0033_sync 1561 l
+2011_10_03/2011_10_03_drive_0034_sync 4033 l
+2011_10_03/2011_10_03_drive_0034_sync 4113 r
+2011_09_26/2011_09_26_drive_0011_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 4124 l
+2011_09_29/2011_09_29_drive_0004_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 1821 l
+2011_10_03/2011_10_03_drive_0034_sync 480 r
+2011_09_26/2011_09_26_drive_0061_sync 446 l
+2011_09_30/2011_09_30_drive_0020_sync 726 r
+2011_09_30/2011_09_30_drive_0028_sync 738 r
+2011_09_30/2011_09_30_drive_0020_sync 553 r
+2011_10_03/2011_10_03_drive_0034_sync 1962 l
+2011_09_28/2011_09_28_drive_0001_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 95 r
+2011_09_30/2011_09_30_drive_0034_sync 349 l
+2011_09_30/2011_09_30_drive_0034_sync 569 l
+2011_09_30/2011_09_30_drive_0028_sync 972 l
+2011_10_03/2011_10_03_drive_0034_sync 3179 l
+2011_09_26/2011_09_26_drive_0018_sync 97 l
+2011_09_30/2011_09_30_drive_0028_sync 4799 r
+2011_09_30/2011_09_30_drive_0034_sync 415 r
+2011_10_03/2011_10_03_drive_0034_sync 3655 l
+2011_10_03/2011_10_03_drive_0034_sync 451 r
+2011_09_30/2011_09_30_drive_0028_sync 4926 r
+2011_09_26/2011_09_26_drive_0001_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 4359 l
+2011_09_26/2011_09_26_drive_0070_sync 285 l
+2011_09_26/2011_09_26_drive_0028_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 3231 l
+2011_10_03/2011_10_03_drive_0034_sync 208 l
+2011_09_26/2011_09_26_drive_0104_sync 202 l
+2011_09_26/2011_09_26_drive_0039_sync 159 r
+2011_09_30/2011_09_30_drive_0034_sync 522 r
+2011_09_26/2011_09_26_drive_0087_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 4146 l
+2011_09_30/2011_09_30_drive_0028_sync 1920 l
+2011_09_30/2011_09_30_drive_0033_sync 1252 r
+2011_10_03/2011_10_03_drive_0034_sync 2950 r
+2011_09_26/2011_09_26_drive_0087_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 3008 r
+2011_09_30/2011_09_30_drive_0020_sync 1066 r
+2011_10_03/2011_10_03_drive_0034_sync 2637 l
+2011_09_30/2011_09_30_drive_0020_sync 316 r
+2011_09_26/2011_09_26_drive_0039_sync 37 r
+2011_09_30/2011_09_30_drive_0028_sync 883 l
+2011_09_30/2011_09_30_drive_0033_sync 42 r
+2011_09_30/2011_09_30_drive_0034_sync 958 r
+2011_09_29/2011_09_29_drive_0004_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 3020 l
+2011_10_03/2011_10_03_drive_0042_sync 389 r
+2011_10_03/2011_10_03_drive_0034_sync 3222 l
+2011_09_26/2011_09_26_drive_0095_sync 175 r
+2011_09_26/2011_09_26_drive_0032_sync 243 l
+2011_09_26/2011_09_26_drive_0019_sync 198 l
+2011_09_26/2011_09_26_drive_0028_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 609 r
+2011_09_26/2011_09_26_drive_0018_sync 262 l
+2011_09_29/2011_09_29_drive_0026_sync 105 l
+2011_09_26/2011_09_26_drive_0018_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 884 l
+2011_09_30/2011_09_30_drive_0028_sync 4590 r
+2011_10_03/2011_10_03_drive_0034_sync 886 r
+2011_09_30/2011_09_30_drive_0028_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 2390 r
+2011_10_03/2011_10_03_drive_0034_sync 4514 r
+2011_09_30/2011_09_30_drive_0033_sync 15 r
+2011_09_26/2011_09_26_drive_0095_sync 200 l
+2011_09_30/2011_09_30_drive_0034_sync 165 r
+2011_09_26/2011_09_26_drive_0032_sync 275 l
+2011_10_03/2011_10_03_drive_0034_sync 2351 l
+2011_09_30/2011_09_30_drive_0028_sync 1681 r
+2011_09_30/2011_09_30_drive_0034_sync 657 l
+2011_09_30/2011_09_30_drive_0034_sync 34 l
+2011_09_26/2011_09_26_drive_0104_sync 199 r
+2011_09_30/2011_09_30_drive_0028_sync 3567 r
+2011_10_03/2011_10_03_drive_0034_sync 3835 l
+2011_09_26/2011_09_26_drive_0070_sync 129 r
+2011_09_26/2011_09_26_drive_0039_sync 348 l
+2011_10_03/2011_10_03_drive_0034_sync 3272 l
+2011_09_30/2011_09_30_drive_0028_sync 2847 l
+2011_09_30/2011_09_30_drive_0028_sync 4775 l
+2011_09_30/2011_09_30_drive_0028_sync 3579 r
+2011_09_30/2011_09_30_drive_0033_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 1751 r
+2011_09_26/2011_09_26_drive_0032_sync 136 l
+2011_09_26/2011_09_26_drive_0070_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 110 r
+2011_09_26/2011_09_26_drive_0022_sync 653 l
+2011_09_26/2011_09_26_drive_0019_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 824 r
+2011_09_30/2011_09_30_drive_0033_sync 614 r
+2011_09_30/2011_09_30_drive_0028_sync 2673 r
+2011_09_30/2011_09_30_drive_0028_sync 4792 l
+2011_10_03/2011_10_03_drive_0034_sync 503 l
+2011_10_03/2011_10_03_drive_0042_sync 897 l
+2011_10_03/2011_10_03_drive_0034_sync 992 r
+2011_09_28/2011_09_28_drive_0001_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 915 r
+2011_09_30/2011_09_30_drive_0028_sync 4246 r
+2011_09_30/2011_09_30_drive_0028_sync 362 l
+2011_10_03/2011_10_03_drive_0042_sync 176 r
+2011_10_03/2011_10_03_drive_0042_sync 392 l
+2011_09_26/2011_09_26_drive_0022_sync 144 l
+2011_09_30/2011_09_30_drive_0034_sync 987 l
+2011_09_29/2011_09_29_drive_0026_sync 52 r
+2011_09_26/2011_09_26_drive_0061_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 1677 l
+2011_10_03/2011_10_03_drive_0034_sync 2093 l
+2011_09_30/2011_09_30_drive_0034_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 4637 r
+2011_09_26/2011_09_26_drive_0057_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 4614 r
+2011_10_03/2011_10_03_drive_0034_sync 4378 l
+2011_09_30/2011_09_30_drive_0020_sync 713 r
+2011_09_26/2011_09_26_drive_0079_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 3546 l
+2011_09_26/2011_09_26_drive_0028_sync 393 r
+2011_10_03/2011_10_03_drive_0034_sync 2500 r
+2011_09_26/2011_09_26_drive_0087_sync 473 l
+2011_09_26/2011_09_26_drive_0022_sync 638 r
+2011_10_03/2011_10_03_drive_0034_sync 4192 l
+2011_10_03/2011_10_03_drive_0034_sync 4250 l
+2011_09_30/2011_09_30_drive_0028_sync 4877 r
+2011_09_30/2011_09_30_drive_0034_sync 921 r
+2011_09_26/2011_09_26_drive_0095_sync 44 l
+2011_09_30/2011_09_30_drive_0020_sync 576 r
+2011_09_26/2011_09_26_drive_0113_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 3275 l
+2011_09_30/2011_09_30_drive_0034_sync 823 l
+2011_09_30/2011_09_30_drive_0028_sync 2826 l
+2011_10_03/2011_10_03_drive_0034_sync 667 r
+2011_09_29/2011_09_29_drive_0004_sync 70 l
+2011_10_03/2011_10_03_drive_0034_sync 78 r
+2011_09_26/2011_09_26_drive_0019_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 5171 r
+2011_09_26/2011_09_26_drive_0061_sync 675 l
+2011_09_30/2011_09_30_drive_0028_sync 2480 l
+2011_09_30/2011_09_30_drive_0028_sync 4946 r
+2011_10_03/2011_10_03_drive_0034_sync 4322 r
+2011_09_30/2011_09_30_drive_0028_sync 3128 l
+2011_10_03/2011_10_03_drive_0034_sync 3002 r
+2011_09_30/2011_09_30_drive_0033_sync 1458 l
+2011_09_30/2011_09_30_drive_0033_sync 951 r
+2011_09_30/2011_09_30_drive_0020_sync 845 r
+2011_09_30/2011_09_30_drive_0020_sync 770 r
+2011_09_26/2011_09_26_drive_0018_sync 71 r
+2011_09_26/2011_09_26_drive_0051_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 1723 l
+2011_10_03/2011_10_03_drive_0034_sync 166 l
+2011_09_26/2011_09_26_drive_0028_sync 88 l
+2011_09_26/2011_09_26_drive_0039_sync 199 r
+2011_09_26/2011_09_26_drive_0022_sync 612 r
+2011_09_26/2011_09_26_drive_0104_sync 173 r
+2011_09_30/2011_09_30_drive_0033_sync 1263 l
+2011_09_30/2011_09_30_drive_0028_sync 651 r
+2011_09_26/2011_09_26_drive_0022_sync 554 l
+2011_10_03/2011_10_03_drive_0034_sync 690 l
+2011_09_26/2011_09_26_drive_0019_sync 430 l
+2011_09_30/2011_09_30_drive_0033_sync 916 l
+2011_09_30/2011_09_30_drive_0033_sync 78 r
+2011_09_26/2011_09_26_drive_0051_sync 302 r
+2011_09_30/2011_09_30_drive_0034_sync 723 r
+2011_09_26/2011_09_26_drive_0087_sync 471 r
+2011_09_26/2011_09_26_drive_0087_sync 280 l
+2011_09_26/2011_09_26_drive_0022_sync 19 l
+2011_09_30/2011_09_30_drive_0028_sync 1898 l
+2011_09_30/2011_09_30_drive_0028_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 561 r
+2011_09_30/2011_09_30_drive_0020_sync 474 l
+2011_09_30/2011_09_30_drive_0028_sync 856 l
+2011_10_03/2011_10_03_drive_0034_sync 3736 l
+2011_09_26/2011_09_26_drive_0057_sync 189 r
+2011_09_26/2011_09_26_drive_0091_sync 43 r
+2011_09_26/2011_09_26_drive_0060_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 657 l
+2011_09_30/2011_09_30_drive_0033_sync 1107 l
+2011_10_03/2011_10_03_drive_0034_sync 1658 l
+2011_09_30/2011_09_30_drive_0033_sync 1025 r
+2011_10_03/2011_10_03_drive_0034_sync 3387 r
+2011_10_03/2011_10_03_drive_0034_sync 4401 r
+2011_09_30/2011_09_30_drive_0028_sync 4541 l
+2011_10_03/2011_10_03_drive_0034_sync 4064 l
+2011_09_30/2011_09_30_drive_0028_sync 736 r
+2011_09_26/2011_09_26_drive_0014_sync 164 l
+2011_09_30/2011_09_30_drive_0028_sync 1299 r
+2011_09_26/2011_09_26_drive_0104_sync 228 l
+2011_10_03/2011_10_03_drive_0034_sync 3751 l
+2011_09_26/2011_09_26_drive_0032_sync 4 r
+2011_09_28/2011_09_28_drive_0001_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 188 l
+2011_09_26/2011_09_26_drive_0028_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 3187 l
+2011_10_03/2011_10_03_drive_0042_sync 993 l
+2011_10_03/2011_10_03_drive_0042_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 543 r
+2011_09_30/2011_09_30_drive_0033_sync 865 r
+2011_09_29/2011_09_29_drive_0004_sync 83 l
+2011_09_26/2011_09_26_drive_0011_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 5084 r
+2011_09_29/2011_09_29_drive_0004_sync 230 r
+2011_10_03/2011_10_03_drive_0042_sync 522 r
+2011_10_03/2011_10_03_drive_0034_sync 2457 l
+2011_09_30/2011_09_30_drive_0028_sync 4812 l
+2011_09_26/2011_09_26_drive_0095_sync 23 r
+2011_10_03/2011_10_03_drive_0042_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 3542 l
+2011_09_26/2011_09_26_drive_0019_sync 422 l
+2011_09_30/2011_09_30_drive_0028_sync 1304 r
+2011_09_26/2011_09_26_drive_0022_sync 312 l
+2011_09_26/2011_09_26_drive_0061_sync 294 l
+2011_09_26/2011_09_26_drive_0032_sync 69 r
+2011_09_26/2011_09_26_drive_0095_sync 115 r
+2011_09_26/2011_09_26_drive_0032_sync 6 l
+2011_09_26/2011_09_26_drive_0091_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 3816 l
+2011_09_26/2011_09_26_drive_0113_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 3981 l
+2011_09_30/2011_09_30_drive_0033_sync 1574 l
+2011_09_30/2011_09_30_drive_0028_sync 5132 r
+2011_09_30/2011_09_30_drive_0028_sync 1806 r
+2011_09_30/2011_09_30_drive_0034_sync 914 r
+2011_09_26/2011_09_26_drive_0087_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 4127 r
+2011_09_30/2011_09_30_drive_0033_sync 755 l
+2011_09_26/2011_09_26_drive_0061_sync 365 l
+2011_09_30/2011_09_30_drive_0028_sync 827 r
+2011_10_03/2011_10_03_drive_0042_sync 1167 l
+2011_09_30/2011_09_30_drive_0028_sync 3160 l
+2011_10_03/2011_10_03_drive_0034_sync 4048 l
+2011_10_03/2011_10_03_drive_0034_sync 2205 r
+2011_09_30/2011_09_30_drive_0028_sync 2273 l
+2011_09_30/2011_09_30_drive_0028_sync 4111 r
+2011_09_30/2011_09_30_drive_0028_sync 3808 l
+2011_09_30/2011_09_30_drive_0028_sync 1421 l
+2011_09_26/2011_09_26_drive_0019_sync 212 r
+2011_09_30/2011_09_30_drive_0028_sync 1038 r
+2011_09_30/2011_09_30_drive_0033_sync 1592 r
+2011_09_30/2011_09_30_drive_0033_sync 133 l
+2011_09_26/2011_09_26_drive_0039_sync 255 r
+2011_09_26/2011_09_26_drive_0028_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 1611 l
+2011_09_30/2011_09_30_drive_0028_sync 566 r
+2011_09_26/2011_09_26_drive_0018_sync 53 r
+2011_09_30/2011_09_30_drive_0028_sync 278 l
+2011_10_03/2011_10_03_drive_0034_sync 2223 r
+2011_09_30/2011_09_30_drive_0028_sync 181 l
+2011_09_26/2011_09_26_drive_0032_sync 341 r
+2011_10_03/2011_10_03_drive_0042_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 4357 r
+2011_09_30/2011_09_30_drive_0033_sync 162 l
+2011_09_26/2011_09_26_drive_0015_sync 254 l
+2011_09_30/2011_09_30_drive_0020_sync 234 l
+2011_10_03/2011_10_03_drive_0034_sync 2426 r
+2011_09_26/2011_09_26_drive_0051_sync 363 r
+2011_10_03/2011_10_03_drive_0034_sync 144 l
+2011_09_26/2011_09_26_drive_0035_sync 122 l
+2011_09_26/2011_09_26_drive_0087_sync 526 r
+2011_09_30/2011_09_30_drive_0034_sync 642 r
+2011_09_30/2011_09_30_drive_0020_sync 373 l
+2011_09_30/2011_09_30_drive_0033_sync 628 r
+2011_09_26/2011_09_26_drive_0087_sync 261 r
+2011_09_26/2011_09_26_drive_0017_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 4961 l
+2011_09_26/2011_09_26_drive_0095_sync 193 l
+2011_09_26/2011_09_26_drive_0022_sync 8 l
+2011_09_30/2011_09_30_drive_0033_sync 1128 l
+2011_10_03/2011_10_03_drive_0034_sync 3970 r
+2011_10_03/2011_10_03_drive_0042_sync 999 r
+2011_09_30/2011_09_30_drive_0028_sync 2729 l
+2011_09_26/2011_09_26_drive_0095_sync 6 r
+2011_09_30/2011_09_30_drive_0033_sync 1210 l
+2011_09_26/2011_09_26_drive_0091_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 2456 l
+2011_09_30/2011_09_30_drive_0028_sync 1842 l
+2011_09_26/2011_09_26_drive_0032_sync 47 l
+2011_09_30/2011_09_30_drive_0028_sync 2250 l
+2011_09_26/2011_09_26_drive_0011_sync 113 l
+2011_09_30/2011_09_30_drive_0028_sync 2461 r
+2011_09_26/2011_09_26_drive_0028_sync 354 r
+2011_09_26/2011_09_26_drive_0057_sync 181 r
+2011_09_30/2011_09_30_drive_0033_sync 618 r
+2011_10_03/2011_10_03_drive_0034_sync 1530 r
+2011_09_30/2011_09_30_drive_0028_sync 4536 r
+2011_09_30/2011_09_30_drive_0020_sync 565 l
+2011_10_03/2011_10_03_drive_0042_sync 609 l
+2011_10_03/2011_10_03_drive_0042_sync 47 r
+2011_09_26/2011_09_26_drive_0061_sync 190 r
+2011_09_26/2011_09_26_drive_0028_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 526 l
+2011_10_03/2011_10_03_drive_0034_sync 3938 r
+2011_09_30/2011_09_30_drive_0028_sync 1800 l
+2011_09_26/2011_09_26_drive_0019_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 212 l
+2011_09_26/2011_09_26_drive_0095_sync 266 l
+2011_09_26/2011_09_26_drive_0051_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 1536 l
+2011_09_30/2011_09_30_drive_0028_sync 1702 l
+2011_09_30/2011_09_30_drive_0028_sync 4823 l
+2011_09_30/2011_09_30_drive_0033_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 4621 r
+2011_09_30/2011_09_30_drive_0034_sync 598 r
+2011_10_03/2011_10_03_drive_0034_sync 316 r
+2011_09_26/2011_09_26_drive_0061_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 4061 r
+2011_09_26/2011_09_26_drive_0014_sync 40 r
+2011_09_26/2011_09_26_drive_0104_sync 168 r
+2011_09_26/2011_09_26_drive_0032_sync 131 l
+2011_09_26/2011_09_26_drive_0079_sync 26 r
+2011_10_03/2011_10_03_drive_0042_sync 562 l
+2011_09_26/2011_09_26_drive_0015_sync 190 r
+2011_09_30/2011_09_30_drive_0033_sync 382 l
+2011_09_26/2011_09_26_drive_0039_sync 277 l
+2011_09_30/2011_09_30_drive_0033_sync 1230 r
+2011_09_30/2011_09_30_drive_0034_sync 244 r
+2011_09_26/2011_09_26_drive_0095_sync 221 r
+2011_10_03/2011_10_03_drive_0042_sync 931 l
+2011_09_26/2011_09_26_drive_0022_sync 381 r
+2011_10_03/2011_10_03_drive_0034_sync 4594 r
+2011_09_26/2011_09_26_drive_0018_sync 209 r
+2011_09_26/2011_09_26_drive_0005_sync 89 l
+2011_09_29/2011_09_29_drive_0004_sync 20 r
+2011_09_30/2011_09_30_drive_0028_sync 4844 r
+2011_09_29/2011_09_29_drive_0026_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 612 l
+2011_10_03/2011_10_03_drive_0034_sync 2212 r
+2011_09_30/2011_09_30_drive_0034_sync 1218 l
+2011_09_26/2011_09_26_drive_0028_sync 221 r
+2011_09_30/2011_09_30_drive_0028_sync 1563 l
+2011_09_26/2011_09_26_drive_0061_sync 596 r
+2011_10_03/2011_10_03_drive_0034_sync 3183 r
+2011_10_03/2011_10_03_drive_0034_sync 3182 r
+2011_09_30/2011_09_30_drive_0028_sync 1746 l
+2011_10_03/2011_10_03_drive_0034_sync 1809 l
+2011_10_03/2011_10_03_drive_0034_sync 2600 l
+2011_09_30/2011_09_30_drive_0028_sync 2505 r
+2011_09_30/2011_09_30_drive_0028_sync 3615 l
+2011_09_29/2011_09_29_drive_0004_sync 221 l
+2011_09_26/2011_09_26_drive_0032_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 2496 r
+2011_09_26/2011_09_26_drive_0087_sync 653 l
+2011_10_03/2011_10_03_drive_0034_sync 3902 r
+2011_09_30/2011_09_30_drive_0028_sync 2260 l
+2011_09_30/2011_09_30_drive_0020_sync 972 r
+2011_09_26/2011_09_26_drive_0014_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 2621 r
+2011_09_26/2011_09_26_drive_0011_sync 140 r
+2011_10_03/2011_10_03_drive_0042_sync 981 r
+2011_09_26/2011_09_26_drive_0039_sync 41 r
+2011_09_26/2011_09_26_drive_0014_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 1426 r
+2011_09_30/2011_09_30_drive_0028_sync 2479 l
+2011_09_26/2011_09_26_drive_0061_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 2811 l
+2011_09_30/2011_09_30_drive_0028_sync 5114 l
+2011_09_26/2011_09_26_drive_0005_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 2014 l
+2011_10_03/2011_10_03_drive_0042_sync 589 l
+2011_09_26/2011_09_26_drive_0014_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 161 l
+2011_09_26/2011_09_26_drive_0039_sync 51 l
+2011_09_26/2011_09_26_drive_0057_sync 227 r
+2011_09_30/2011_09_30_drive_0028_sync 3737 l
+2011_10_03/2011_10_03_drive_0034_sync 2977 r
+2011_09_30/2011_09_30_drive_0028_sync 3169 r
+2011_10_03/2011_10_03_drive_0042_sync 668 r
+2011_09_30/2011_09_30_drive_0028_sync 3376 l
+2011_09_30/2011_09_30_drive_0033_sync 235 r
+2011_09_30/2011_09_30_drive_0028_sync 3839 r
+2011_10_03/2011_10_03_drive_0042_sync 675 r
+2011_09_26/2011_09_26_drive_0070_sync 378 l
+2011_09_30/2011_09_30_drive_0034_sync 619 r
+2011_09_26/2011_09_26_drive_0014_sync 79 l
+2011_09_30/2011_09_30_drive_0034_sync 614 l
+2011_09_30/2011_09_30_drive_0028_sync 3022 l
+2011_09_26/2011_09_26_drive_0017_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 2790 r
+2011_10_03/2011_10_03_drive_0034_sync 1591 r
+2011_10_03/2011_10_03_drive_0034_sync 1119 l
+2011_09_30/2011_09_30_drive_0028_sync 3148 l
+2011_09_30/2011_09_30_drive_0028_sync 2063 r
+2011_10_03/2011_10_03_drive_0034_sync 2915 l
+2011_09_26/2011_09_26_drive_0051_sync 295 r
+2011_09_29/2011_09_29_drive_0026_sync 44 l
+2011_09_26/2011_09_26_drive_0039_sync 164 l
+2011_09_26/2011_09_26_drive_0061_sync 135 l
+2011_09_30/2011_09_30_drive_0028_sync 3273 l
+2011_09_30/2011_09_30_drive_0028_sync 1493 l
+2011_09_26/2011_09_26_drive_0051_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 4116 l
+2011_09_30/2011_09_30_drive_0028_sync 3873 l
+2011_09_26/2011_09_26_drive_0087_sync 254 l
+2011_09_26/2011_09_26_drive_0051_sync 373 r
+2011_09_30/2011_09_30_drive_0028_sync 360 l
+2011_10_03/2011_10_03_drive_0042_sync 178 r
+2011_10_03/2011_10_03_drive_0034_sync 1956 l
+2011_09_26/2011_09_26_drive_0032_sync 221 r
+2011_10_03/2011_10_03_drive_0042_sync 1033 r
+2011_09_26/2011_09_26_drive_0035_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 5104 l
+2011_09_30/2011_09_30_drive_0028_sync 219 r
+2011_09_30/2011_09_30_drive_0028_sync 1480 l
+2011_09_30/2011_09_30_drive_0033_sync 482 r
+2011_10_03/2011_10_03_drive_0034_sync 494 r
+2011_10_03/2011_10_03_drive_0034_sync 2791 r
+2011_09_26/2011_09_26_drive_0061_sync 148 r
+2011_09_30/2011_09_30_drive_0020_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 390 l
+2011_09_26/2011_09_26_drive_0051_sync 430 r
+2011_09_26/2011_09_26_drive_0039_sync 243 l
+2011_09_26/2011_09_26_drive_0051_sync 25 r
+2011_09_30/2011_09_30_drive_0034_sync 1045 r
+2011_09_30/2011_09_30_drive_0033_sync 491 r
+2011_09_26/2011_09_26_drive_0035_sync 53 l
+2011_09_26/2011_09_26_drive_0087_sync 674 r
+2011_09_30/2011_09_30_drive_0020_sync 259 l
+2011_09_30/2011_09_30_drive_0034_sync 329 l
+2011_09_26/2011_09_26_drive_0051_sync 342 r
+2011_09_30/2011_09_30_drive_0033_sync 1368 l
+2011_09_30/2011_09_30_drive_0020_sync 781 l
+2011_09_26/2011_09_26_drive_0087_sync 713 r
+2011_09_30/2011_09_30_drive_0028_sync 4660 l
+2011_09_30/2011_09_30_drive_0028_sync 311 r
+2011_10_03/2011_10_03_drive_0034_sync 1971 r
+2011_09_30/2011_09_30_drive_0020_sync 538 r
+2011_09_26/2011_09_26_drive_0022_sync 588 r
+2011_09_26/2011_09_26_drive_0022_sync 449 l
+2011_09_26/2011_09_26_drive_0113_sync 83 r
+2011_09_26/2011_09_26_drive_0028_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 962 r
+2011_10_03/2011_10_03_drive_0034_sync 117 l
+2011_09_26/2011_09_26_drive_0022_sync 520 l
+2011_10_03/2011_10_03_drive_0042_sync 186 r
+2011_10_03/2011_10_03_drive_0042_sync 1009 r
+2011_09_30/2011_09_30_drive_0028_sync 490 r
+2011_09_30/2011_09_30_drive_0020_sync 415 r
+2011_09_26/2011_09_26_drive_0019_sync 178 r
+2011_10_03/2011_10_03_drive_0042_sync 113 r
+2011_09_30/2011_09_30_drive_0020_sync 219 r
+2011_10_03/2011_10_03_drive_0042_sync 368 l
+2011_10_03/2011_10_03_drive_0034_sync 2642 r
+2011_09_26/2011_09_26_drive_0061_sync 275 l
+2011_09_30/2011_09_30_drive_0034_sync 940 l
+2011_09_26/2011_09_26_drive_0014_sync 140 l
+2011_09_26/2011_09_26_drive_0057_sync 206 r
+2011_09_26/2011_09_26_drive_0019_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 2129 r
+2011_09_26/2011_09_26_drive_0087_sync 489 l
+2011_09_30/2011_09_30_drive_0028_sync 3956 r
+2011_09_29/2011_09_29_drive_0004_sync 247 r
+2011_09_26/2011_09_26_drive_0087_sync 675 r
+2011_09_26/2011_09_26_drive_0015_sync 208 r
+2011_09_26/2011_09_26_drive_0019_sync 452 l
+2011_09_30/2011_09_30_drive_0028_sync 4250 r
+2011_10_03/2011_10_03_drive_0034_sync 972 r
+2011_09_26/2011_09_26_drive_0087_sync 655 r
+2011_10_03/2011_10_03_drive_0034_sync 2464 r
+2011_10_03/2011_10_03_drive_0042_sync 1014 l
+2011_10_03/2011_10_03_drive_0042_sync 917 r
+2011_10_03/2011_10_03_drive_0034_sync 869 r
+2011_09_30/2011_09_30_drive_0034_sync 290 r
+2011_10_03/2011_10_03_drive_0034_sync 2284 l
+2011_10_03/2011_10_03_drive_0034_sync 4585 r
+2011_09_30/2011_09_30_drive_0028_sync 4442 l
+2011_09_30/2011_09_30_drive_0034_sync 803 r
+2011_09_30/2011_09_30_drive_0028_sync 1373 l
+2011_09_30/2011_09_30_drive_0028_sync 734 r
+2011_09_26/2011_09_26_drive_0028_sync 58 r
+2011_09_26/2011_09_26_drive_0087_sync 556 l
+2011_09_30/2011_09_30_drive_0028_sync 812 l
+2011_09_30/2011_09_30_drive_0028_sync 4463 r
+2011_10_03/2011_10_03_drive_0034_sync 2855 r
+2011_10_03/2011_10_03_drive_0042_sync 485 r
+2011_09_26/2011_09_26_drive_0019_sync 126 r
+2011_09_30/2011_09_30_drive_0034_sync 66 l
+2011_09_26/2011_09_26_drive_0014_sync 113 r
+2011_09_30/2011_09_30_drive_0034_sync 982 l
+2011_09_30/2011_09_30_drive_0034_sync 274 l
+2011_10_03/2011_10_03_drive_0034_sync 4319 r
+2011_09_30/2011_09_30_drive_0028_sync 4007 l
+2011_09_26/2011_09_26_drive_0017_sync 82 l
+2011_09_30/2011_09_30_drive_0033_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 1937 r
+2011_09_30/2011_09_30_drive_0033_sync 1173 r
+2011_10_03/2011_10_03_drive_0034_sync 1925 l
+2011_09_26/2011_09_26_drive_0057_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 2012 l
+2011_09_29/2011_09_29_drive_0004_sync 306 r
+2011_09_30/2011_09_30_drive_0028_sync 4334 r
+2011_09_26/2011_09_26_drive_0039_sync 359 r
+2011_09_26/2011_09_26_drive_0113_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 3391 r
+2011_09_30/2011_09_30_drive_0028_sync 3649 l
+2011_09_26/2011_09_26_drive_0022_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 4367 r
+2011_09_30/2011_09_30_drive_0020_sync 1021 r
+2011_09_30/2011_09_30_drive_0028_sync 3588 l
+2011_09_30/2011_09_30_drive_0028_sync 248 l
+2011_09_26/2011_09_26_drive_0028_sync 312 r
+2011_09_26/2011_09_26_drive_0051_sync 327 l
+2011_10_03/2011_10_03_drive_0034_sync 3197 l
+2011_10_03/2011_10_03_drive_0034_sync 466 l
+2011_09_30/2011_09_30_drive_0028_sync 590 r
+2011_09_26/2011_09_26_drive_0087_sync 491 r
+2011_09_26/2011_09_26_drive_0113_sync 78 r
+2011_09_30/2011_09_30_drive_0020_sync 6 r
+2011_09_26/2011_09_26_drive_0070_sync 400 r
+2011_09_30/2011_09_30_drive_0028_sync 2265 l
+2011_09_26/2011_09_26_drive_0051_sync 132 r
+2011_09_26/2011_09_26_drive_0028_sync 306 l
+2011_09_30/2011_09_30_drive_0034_sync 913 l
+2011_09_26/2011_09_26_drive_0087_sync 194 r
+2011_09_26/2011_09_26_drive_0032_sync 83 l
+2011_09_26/2011_09_26_drive_0113_sync 65 r
+2011_09_26/2011_09_26_drive_0087_sync 477 l
+2011_09_30/2011_09_30_drive_0020_sync 1074 l
+2011_09_30/2011_09_30_drive_0028_sync 1732 l
+2011_09_26/2011_09_26_drive_0070_sync 331 r
+2011_10_03/2011_10_03_drive_0042_sync 750 l
+2011_09_26/2011_09_26_drive_0015_sync 231 r
+2011_09_29/2011_09_29_drive_0004_sync 53 l
+2011_09_26/2011_09_26_drive_0022_sync 623 l
+2011_09_30/2011_09_30_drive_0034_sync 714 l
+2011_09_30/2011_09_30_drive_0028_sync 1942 l
+2011_09_30/2011_09_30_drive_0028_sync 2546 l
+2011_09_30/2011_09_30_drive_0028_sync 2787 l
+2011_09_26/2011_09_26_drive_0091_sync 331 l
+2011_09_26/2011_09_26_drive_0022_sync 559 r
+2011_09_30/2011_09_30_drive_0028_sync 1426 l
+2011_09_26/2011_09_26_drive_0061_sync 410 r
+2011_09_30/2011_09_30_drive_0028_sync 4935 r
+2011_09_26/2011_09_26_drive_0061_sync 678 r
+2011_09_26/2011_09_26_drive_0022_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 1209 l
+2011_09_28/2011_09_28_drive_0001_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 2111 r
+2011_09_26/2011_09_26_drive_0019_sync 475 l
+2011_09_26/2011_09_26_drive_0022_sync 645 l
+2011_09_26/2011_09_26_drive_0022_sync 55 r
+2011_09_26/2011_09_26_drive_0087_sync 561 l
+2011_10_03/2011_10_03_drive_0034_sync 2168 l
+2011_09_26/2011_09_26_drive_0051_sync 349 l
+2011_09_30/2011_09_30_drive_0034_sync 836 l
+2011_09_26/2011_09_26_drive_0061_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 4277 l
+2011_09_26/2011_09_26_drive_0104_sync 224 r
+2011_09_30/2011_09_30_drive_0034_sync 1060 l
+2011_09_26/2011_09_26_drive_0028_sync 401 l
+2011_09_30/2011_09_30_drive_0020_sync 1030 l
+2011_09_30/2011_09_30_drive_0028_sync 3341 r
+2011_09_26/2011_09_26_drive_0091_sync 26 l
+2011_09_30/2011_09_30_drive_0033_sync 866 r
+2011_09_26/2011_09_26_drive_0061_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 182 r
+2011_09_26/2011_09_26_drive_0019_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 3964 l
+2011_09_30/2011_09_30_drive_0028_sync 2275 r
+2011_09_26/2011_09_26_drive_0057_sync 190 l
+2011_10_03/2011_10_03_drive_0042_sync 1097 r
+2011_09_30/2011_09_30_drive_0034_sync 1149 r
+2011_09_26/2011_09_26_drive_0028_sync 235 l
+2011_09_30/2011_09_30_drive_0033_sync 486 l
+2011_10_03/2011_10_03_drive_0034_sync 3292 r
+2011_10_03/2011_10_03_drive_0034_sync 2094 l
+2011_09_30/2011_09_30_drive_0028_sync 432 l
+2011_10_03/2011_10_03_drive_0042_sync 1142 l
+2011_09_30/2011_09_30_drive_0034_sync 59 r
+2011_09_26/2011_09_26_drive_0095_sync 216 l
+2011_10_03/2011_10_03_drive_0042_sync 1159 r
+2011_09_30/2011_09_30_drive_0033_sync 205 r
+2011_09_26/2011_09_26_drive_0087_sync 283 l
+2011_09_26/2011_09_26_drive_0104_sync 210 l
+2011_10_03/2011_10_03_drive_0034_sync 1449 r
+2011_09_30/2011_09_30_drive_0028_sync 203 l
+2011_10_03/2011_10_03_drive_0034_sync 872 l
+2011_09_30/2011_09_30_drive_0028_sync 1392 r
+2011_10_03/2011_10_03_drive_0034_sync 1824 l
+2011_09_30/2011_09_30_drive_0033_sync 998 l
+2011_09_30/2011_09_30_drive_0033_sync 1226 l
+2011_09_29/2011_09_29_drive_0026_sync 127 l
+2011_09_26/2011_09_26_drive_0087_sync 332 r
+2011_09_26/2011_09_26_drive_0104_sync 177 r
+2011_09_30/2011_09_30_drive_0033_sync 655 r
+2011_09_30/2011_09_30_drive_0028_sync 4241 r
+2011_10_03/2011_10_03_drive_0034_sync 2880 l
+2011_09_26/2011_09_26_drive_0017_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 3393 r
+2011_10_03/2011_10_03_drive_0034_sync 4261 r
+2011_10_03/2011_10_03_drive_0034_sync 2350 r
+2011_09_30/2011_09_30_drive_0028_sync 4607 l
+2011_09_30/2011_09_30_drive_0028_sync 1354 l
+2011_10_03/2011_10_03_drive_0034_sync 3300 l
+2011_10_03/2011_10_03_drive_0034_sync 4320 l
+2011_09_26/2011_09_26_drive_0019_sync 478 l
+2011_09_30/2011_09_30_drive_0020_sync 728 r
+2011_10_03/2011_10_03_drive_0034_sync 4584 l
+2011_09_30/2011_09_30_drive_0028_sync 1090 l
+2011_09_30/2011_09_30_drive_0033_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 2399 l
+2011_09_30/2011_09_30_drive_0020_sync 71 l
+2011_09_26/2011_09_26_drive_0011_sync 150 r
+2011_09_26/2011_09_26_drive_0070_sync 16 l
+2011_09_26/2011_09_26_drive_0035_sync 101 r
+2011_10_03/2011_10_03_drive_0034_sync 1385 l
+2011_09_26/2011_09_26_drive_0095_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 2687 l
+2011_09_30/2011_09_30_drive_0028_sync 5142 r
+2011_09_26/2011_09_26_drive_0079_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 4624 l
+2011_09_30/2011_09_30_drive_0033_sync 412 r
+2011_09_26/2011_09_26_drive_0061_sync 506 l
+2011_09_30/2011_09_30_drive_0028_sync 1440 r
+2011_10_03/2011_10_03_drive_0034_sync 1352 l
+2011_09_26/2011_09_26_drive_0032_sync 228 r
+2011_09_26/2011_09_26_drive_0035_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 2739 l
+2011_09_30/2011_09_30_drive_0028_sync 926 r
+2011_10_03/2011_10_03_drive_0042_sync 772 r
+2011_09_26/2011_09_26_drive_0011_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 1778 l
+2011_09_26/2011_09_26_drive_0032_sync 259 r
+2011_09_30/2011_09_30_drive_0033_sync 1178 l
+2011_09_26/2011_09_26_drive_0035_sync 77 r
+2011_09_26/2011_09_26_drive_0104_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 3667 r
+2011_09_30/2011_09_30_drive_0033_sync 529 r
+2011_10_03/2011_10_03_drive_0042_sync 570 l
+2011_09_26/2011_09_26_drive_0019_sync 382 l
+2011_09_29/2011_09_29_drive_0004_sync 116 r
+2011_09_30/2011_09_30_drive_0033_sync 611 r
+2011_10_03/2011_10_03_drive_0034_sync 1503 l
+2011_09_26/2011_09_26_drive_0057_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 2628 l
+2011_09_26/2011_09_26_drive_0070_sync 181 l
+2011_09_26/2011_09_26_drive_0019_sync 39 r
+2011_10_03/2011_10_03_drive_0042_sync 446 l
+2011_09_29/2011_09_29_drive_0004_sync 14 l
+2011_09_26/2011_09_26_drive_0070_sync 377 r
+2011_09_30/2011_09_30_drive_0034_sync 736 l
+2011_09_30/2011_09_30_drive_0034_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 1616 l
+2011_09_26/2011_09_26_drive_0019_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 497 l
+2011_09_30/2011_09_30_drive_0034_sync 83 r
+2011_09_30/2011_09_30_drive_0028_sync 1183 r
+2011_09_30/2011_09_30_drive_0028_sync 2242 r
+2011_09_26/2011_09_26_drive_0032_sync 278 l
+2011_09_26/2011_09_26_drive_0039_sync 59 l
+2011_09_30/2011_09_30_drive_0028_sync 1171 r
+2011_09_26/2011_09_26_drive_0011_sync 13 l
+2011_10_03/2011_10_03_drive_0042_sync 695 l
+2011_09_30/2011_09_30_drive_0028_sync 979 l
+2011_09_26/2011_09_26_drive_0039_sync 93 l
+2011_09_30/2011_09_30_drive_0033_sync 879 l
+2011_09_26/2011_09_26_drive_0057_sync 86 l
+2011_09_30/2011_09_30_drive_0033_sync 1172 r
+2011_09_30/2011_09_30_drive_0028_sync 1057 l
+2011_09_30/2011_09_30_drive_0034_sync 1044 r
+2011_09_30/2011_09_30_drive_0020_sync 168 l
+2011_09_30/2011_09_30_drive_0034_sync 374 l
+2011_09_30/2011_09_30_drive_0028_sync 4757 r
+2011_09_26/2011_09_26_drive_0022_sync 176 r
+2011_09_30/2011_09_30_drive_0028_sync 4450 l
+2011_10_03/2011_10_03_drive_0034_sync 4173 l
+2011_09_30/2011_09_30_drive_0033_sync 1191 r
+2011_09_30/2011_09_30_drive_0028_sync 2652 l
+2011_09_30/2011_09_30_drive_0020_sync 281 l
+2011_10_03/2011_10_03_drive_0034_sync 2114 l
+2011_09_30/2011_09_30_drive_0034_sync 320 r
+2011_09_26/2011_09_26_drive_0051_sync 141 r
+2011_09_26/2011_09_26_drive_0060_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 381 l
+2011_09_30/2011_09_30_drive_0034_sync 949 r
+2011_09_26/2011_09_26_drive_0032_sync 371 r
+2011_09_26/2011_09_26_drive_0022_sync 462 l
+2011_10_03/2011_10_03_drive_0042_sync 1071 l
+2011_09_30/2011_09_30_drive_0028_sync 589 r
+2011_09_30/2011_09_30_drive_0020_sync 1095 l
+2011_10_03/2011_10_03_drive_0042_sync 601 r
+2011_09_30/2011_09_30_drive_0028_sync 1439 r
+2011_09_30/2011_09_30_drive_0028_sync 2650 r
+2011_09_26/2011_09_26_drive_0014_sync 158 r
+2011_10_03/2011_10_03_drive_0034_sync 2784 r
+2011_10_03/2011_10_03_drive_0042_sync 770 r
+2011_09_26/2011_09_26_drive_0061_sync 567 r
+2011_10_03/2011_10_03_drive_0034_sync 2254 r
+2011_09_26/2011_09_26_drive_0087_sync 346 r
+2011_10_03/2011_10_03_drive_0034_sync 1257 r
+2011_09_26/2011_09_26_drive_0019_sync 139 l
+2011_09_26/2011_09_26_drive_0014_sync 231 l
+2011_09_26/2011_09_26_drive_0070_sync 110 r
+2011_09_26/2011_09_26_drive_0011_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 2119 l
+2011_09_26/2011_09_26_drive_0032_sync 178 r
+2011_09_26/2011_09_26_drive_0087_sync 82 l
+2011_09_30/2011_09_30_drive_0034_sync 1208 r
+2011_09_26/2011_09_26_drive_0091_sync 253 r
+2011_09_30/2011_09_30_drive_0034_sync 912 r
+2011_09_30/2011_09_30_drive_0034_sync 1088 l
+2011_09_30/2011_09_30_drive_0020_sync 7 r
+2011_09_26/2011_09_26_drive_0019_sync 324 l
+2011_09_26/2011_09_26_drive_0061_sync 598 l
+2011_09_26/2011_09_26_drive_0104_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 3985 l
+2011_09_30/2011_09_30_drive_0028_sync 3652 l
+2011_10_03/2011_10_03_drive_0034_sync 4602 r
+2011_09_30/2011_09_30_drive_0028_sync 438 l
+2011_09_26/2011_09_26_drive_0022_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 1872 r
+2011_09_26/2011_09_26_drive_0018_sync 244 l
+2011_09_26/2011_09_26_drive_0017_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 4605 l
+2011_10_03/2011_10_03_drive_0034_sync 1576 r
+2011_09_26/2011_09_26_drive_0028_sync 378 l
+2011_09_26/2011_09_26_drive_0057_sync 305 r
+2011_09_30/2011_09_30_drive_0033_sync 784 r
+2011_09_28/2011_09_28_drive_0001_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 3288 r
+2011_09_30/2011_09_30_drive_0028_sync 2333 r
+2011_09_30/2011_09_30_drive_0020_sync 817 r
+2011_09_29/2011_09_29_drive_0004_sync 260 r
+2011_09_26/2011_09_26_drive_0091_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 1321 l
+2011_10_03/2011_10_03_drive_0042_sync 75 l
+2011_09_26/2011_09_26_drive_0019_sync 283 r
+2011_09_30/2011_09_30_drive_0028_sync 1976 r
+2011_09_30/2011_09_30_drive_0020_sync 1095 r
+2011_09_28/2011_09_28_drive_0001_sync 94 l
+2011_09_26/2011_09_26_drive_0079_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 4696 r
+2011_10_03/2011_10_03_drive_0034_sync 2506 l
+2011_09_30/2011_09_30_drive_0034_sync 1069 r
+2011_10_03/2011_10_03_drive_0034_sync 3734 r
+2011_09_30/2011_09_30_drive_0028_sync 4214 l
+2011_09_30/2011_09_30_drive_0028_sync 390 r
+2011_10_03/2011_10_03_drive_0034_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 1708 l
+2011_10_03/2011_10_03_drive_0034_sync 3678 r
+2011_09_26/2011_09_26_drive_0014_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 399 l
+2011_10_03/2011_10_03_drive_0034_sync 4186 r
+2011_09_26/2011_09_26_drive_0104_sync 208 r
+2011_09_30/2011_09_30_drive_0020_sync 900 l
+2011_09_30/2011_09_30_drive_0028_sync 4647 l
+2011_09_26/2011_09_26_drive_0035_sync 65 l
+2011_09_26/2011_09_26_drive_0104_sync 98 r
+2011_09_30/2011_09_30_drive_0034_sync 1022 l
+2011_09_30/2011_09_30_drive_0028_sync 1272 l
+2011_10_03/2011_10_03_drive_0034_sync 1442 r
+2011_09_30/2011_09_30_drive_0028_sync 936 r
+2011_09_26/2011_09_26_drive_0051_sync 15 r
+2011_09_30/2011_09_30_drive_0033_sync 1194 l
+2011_10_03/2011_10_03_drive_0034_sync 421 r
+2011_09_26/2011_09_26_drive_0019_sync 355 l
+2011_09_26/2011_09_26_drive_0087_sync 702 r
+2011_09_30/2011_09_30_drive_0028_sync 486 r
+2011_09_26/2011_09_26_drive_0014_sync 160 l
+2011_10_03/2011_10_03_drive_0034_sync 3396 r
+2011_10_03/2011_10_03_drive_0042_sync 386 l
+2011_10_03/2011_10_03_drive_0034_sync 331 r
+2011_09_26/2011_09_26_drive_0022_sync 511 r
+2011_10_03/2011_10_03_drive_0034_sync 4460 l
+2011_09_28/2011_09_28_drive_0001_sync 70 l
+2011_09_26/2011_09_26_drive_0028_sync 264 l
+2011_09_26/2011_09_26_drive_0061_sync 494 l
+2011_09_29/2011_09_29_drive_0004_sync 154 l
+2011_09_30/2011_09_30_drive_0034_sync 742 l
+2011_09_30/2011_09_30_drive_0033_sync 159 r
+2011_10_03/2011_10_03_drive_0034_sync 1651 l
+2011_10_03/2011_10_03_drive_0034_sync 4294 r
+2011_09_30/2011_09_30_drive_0020_sync 341 l
+2011_10_03/2011_10_03_drive_0034_sync 3623 r
+2011_10_03/2011_10_03_drive_0034_sync 2125 r
+2011_09_30/2011_09_30_drive_0033_sync 1277 r
+2011_09_26/2011_09_26_drive_0014_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 2438 l
+2011_09_26/2011_09_26_drive_0022_sync 740 r
+2011_10_03/2011_10_03_drive_0034_sync 3856 r
+2011_09_26/2011_09_26_drive_0028_sync 389 r
+2011_09_30/2011_09_30_drive_0028_sync 246 l
+2011_09_26/2011_09_26_drive_0039_sync 81 l
+2011_09_29/2011_09_29_drive_0004_sync 174 l
+2011_09_30/2011_09_30_drive_0028_sync 3124 r
+2011_10_03/2011_10_03_drive_0042_sync 179 l
+2011_09_26/2011_09_26_drive_0051_sync 291 l
+2011_10_03/2011_10_03_drive_0034_sync 4152 l
+2011_09_30/2011_09_30_drive_0028_sync 5109 l
+2011_09_30/2011_09_30_drive_0028_sync 5170 l
+2011_09_30/2011_09_30_drive_0028_sync 4994 r
+2011_09_30/2011_09_30_drive_0028_sync 4706 l
+2011_09_30/2011_09_30_drive_0034_sync 624 l
+2011_09_30/2011_09_30_drive_0028_sync 3639 r
+2011_10_03/2011_10_03_drive_0034_sync 4027 l
+2011_09_26/2011_09_26_drive_0087_sync 676 l
+2011_09_30/2011_09_30_drive_0028_sync 2351 r
+2011_10_03/2011_10_03_drive_0034_sync 3513 l
+2011_10_03/2011_10_03_drive_0034_sync 3832 r
+2011_09_26/2011_09_26_drive_0019_sync 307 r
+2011_09_30/2011_09_30_drive_0033_sync 1455 l
+2011_09_26/2011_09_26_drive_0091_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 1413 r
+2011_09_26/2011_09_26_drive_0032_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 1479 l
+2011_10_03/2011_10_03_drive_0034_sync 1288 r
+2011_09_26/2011_09_26_drive_0022_sync 755 l
+2011_09_26/2011_09_26_drive_0039_sync 324 l
+2011_09_26/2011_09_26_drive_0051_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 546 l
+2011_09_26/2011_09_26_drive_0061_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 854 r
+2011_09_26/2011_09_26_drive_0028_sync 161 l
+2011_09_30/2011_09_30_drive_0033_sync 1249 l
+2011_09_30/2011_09_30_drive_0028_sync 1879 r
+2011_09_30/2011_09_30_drive_0028_sync 2219 r
+2011_09_26/2011_09_26_drive_0061_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 4130 l
+2011_10_03/2011_10_03_drive_0034_sync 2379 r
+2011_09_30/2011_09_30_drive_0033_sync 1389 l
+2011_09_26/2011_09_26_drive_0019_sync 59 r
+2011_09_30/2011_09_30_drive_0033_sync 1536 l
+2011_09_26/2011_09_26_drive_0022_sync 36 r
+2011_09_30/2011_09_30_drive_0020_sync 23 r
+2011_09_26/2011_09_26_drive_0095_sync 139 r
+2011_09_30/2011_09_30_drive_0028_sync 3476 l
+2011_09_30/2011_09_30_drive_0034_sync 253 l
+2011_09_30/2011_09_30_drive_0033_sync 220 l
+2011_09_30/2011_09_30_drive_0020_sync 456 l
+2011_09_28/2011_09_28_drive_0001_sync 10 l
+2011_10_03/2011_10_03_drive_0034_sync 263 l
+2011_09_30/2011_09_30_drive_0033_sync 1316 l
+2011_09_26/2011_09_26_drive_0104_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 4452 l
+2011_09_30/2011_09_30_drive_0034_sync 722 l
+2011_10_03/2011_10_03_drive_0034_sync 4031 r
+2011_10_03/2011_10_03_drive_0042_sync 470 r
+2011_09_30/2011_09_30_drive_0033_sync 1021 r
+2011_09_26/2011_09_26_drive_0018_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 4636 l
+2011_09_30/2011_09_30_drive_0028_sync 2933 l
+2011_09_26/2011_09_26_drive_0015_sync 247 r
+2011_09_26/2011_09_26_drive_0039_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 3995 r
+2011_09_30/2011_09_30_drive_0028_sync 882 r
+2011_09_26/2011_09_26_drive_0022_sync 213 l
+2011_09_26/2011_09_26_drive_0018_sync 145 l
+2011_09_30/2011_09_30_drive_0033_sync 1148 r
+2011_10_03/2011_10_03_drive_0042_sync 31 r
+2011_10_03/2011_10_03_drive_0034_sync 2307 r
+2011_09_30/2011_09_30_drive_0028_sync 4073 l
+2011_09_30/2011_09_30_drive_0028_sync 2273 r
+2011_09_30/2011_09_30_drive_0028_sync 809 r
+2011_09_30/2011_09_30_drive_0020_sync 1018 r
+2011_09_30/2011_09_30_drive_0028_sync 2853 r
+2011_09_29/2011_09_29_drive_0004_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 2452 r
+2011_10_03/2011_10_03_drive_0034_sync 932 r
+2011_09_30/2011_09_30_drive_0028_sync 470 r
+2011_09_26/2011_09_26_drive_0070_sync 202 r
+2011_09_30/2011_09_30_drive_0020_sync 220 r
+2011_10_03/2011_10_03_drive_0034_sync 2737 r
+2011_09_28/2011_09_28_drive_0001_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 778 r
+2011_09_30/2011_09_30_drive_0020_sync 346 l
+2011_09_26/2011_09_26_drive_0057_sync 242 l
+2011_09_26/2011_09_26_drive_0022_sync 416 r
+2011_09_26/2011_09_26_drive_0061_sync 214 l
+2011_09_26/2011_09_26_drive_0051_sync 303 l
+2011_09_26/2011_09_26_drive_0051_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 1314 l
+2011_09_30/2011_09_30_drive_0028_sync 2346 l
+2011_09_26/2011_09_26_drive_0032_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 2341 r
+2011_10_03/2011_10_03_drive_0042_sync 757 l
+2011_09_26/2011_09_26_drive_0079_sync 91 l
+2011_10_03/2011_10_03_drive_0042_sync 515 r
+2011_09_30/2011_09_30_drive_0034_sync 1002 l
+2011_09_26/2011_09_26_drive_0022_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 4171 r
+2011_09_26/2011_09_26_drive_0014_sync 7 l
+2011_09_26/2011_09_26_drive_0051_sync 145 r
+2011_09_30/2011_09_30_drive_0028_sync 1531 r
+2011_09_30/2011_09_30_drive_0034_sync 1130 l
+2011_09_26/2011_09_26_drive_0051_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 1364 l
+2011_09_30/2011_09_30_drive_0028_sync 3152 l
+2011_09_26/2011_09_26_drive_0070_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 2926 l
+2011_09_26/2011_09_26_drive_0019_sync 188 r
+2011_09_26/2011_09_26_drive_0087_sync 217 l
+2011_10_03/2011_10_03_drive_0034_sync 4180 r
+2011_09_30/2011_09_30_drive_0028_sync 3622 l
+2011_09_30/2011_09_30_drive_0034_sync 1002 r
+2011_09_26/2011_09_26_drive_0095_sync 3 r
+2011_09_26/2011_09_26_drive_0061_sync 344 l
+2011_09_30/2011_09_30_drive_0028_sync 1886 r
+2011_09_30/2011_09_30_drive_0028_sync 568 l
+2011_09_30/2011_09_30_drive_0020_sync 29 r
+2011_09_26/2011_09_26_drive_0022_sync 57 r
+2011_09_26/2011_09_26_drive_0057_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 2864 r
+2011_10_03/2011_10_03_drive_0034_sync 899 l
+2011_09_26/2011_09_26_drive_0005_sync 116 r
+2011_09_26/2011_09_26_drive_0070_sync 254 l
+2011_09_30/2011_09_30_drive_0028_sync 5150 r
+2011_09_30/2011_09_30_drive_0028_sync 1296 l
+2011_09_26/2011_09_26_drive_0032_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 1505 r
+2011_10_03/2011_10_03_drive_0034_sync 1141 r
+2011_10_03/2011_10_03_drive_0034_sync 599 r
+2011_09_26/2011_09_26_drive_0061_sync 309 l
+2011_09_26/2011_09_26_drive_0104_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 3182 l
+2011_09_26/2011_09_26_drive_0087_sync 468 r
+2011_09_26/2011_09_26_drive_0022_sync 288 r
+2011_09_26/2011_09_26_drive_0019_sync 407 l
+2011_09_26/2011_09_26_drive_0070_sync 271 l
+2011_09_26/2011_09_26_drive_0032_sync 271 r
+2011_09_30/2011_09_30_drive_0020_sync 783 r
+2011_09_30/2011_09_30_drive_0033_sync 263 l
+2011_09_26/2011_09_26_drive_0061_sync 260 r
+2011_09_26/2011_09_26_drive_0095_sync 242 l
+2011_10_03/2011_10_03_drive_0034_sync 1211 l
+2011_09_26/2011_09_26_drive_0015_sync 238 l
+2011_09_29/2011_09_29_drive_0004_sync 278 l
+2011_10_03/2011_10_03_drive_0034_sync 3607 l
+2011_09_26/2011_09_26_drive_0104_sync 276 l
+2011_09_30/2011_09_30_drive_0028_sync 2616 l
+2011_09_30/2011_09_30_drive_0028_sync 2146 l
+2011_09_30/2011_09_30_drive_0028_sync 2465 r
+2011_09_30/2011_09_30_drive_0028_sync 2167 l
+2011_09_30/2011_09_30_drive_0020_sync 247 r
+2011_09_30/2011_09_30_drive_0020_sync 934 l
+2011_10_03/2011_10_03_drive_0034_sync 2571 l
+2011_09_26/2011_09_26_drive_0028_sync 380 l
+2011_09_30/2011_09_30_drive_0028_sync 3150 r
+2011_09_26/2011_09_26_drive_0022_sync 637 r
+2011_10_03/2011_10_03_drive_0034_sync 642 r
+2011_09_26/2011_09_26_drive_0051_sync 277 r
+2011_10_03/2011_10_03_drive_0034_sync 3414 r
+2011_09_26/2011_09_26_drive_0035_sync 103 l
+2011_09_30/2011_09_30_drive_0033_sync 839 r
+2011_10_03/2011_10_03_drive_0042_sync 952 l
+2011_09_26/2011_09_26_drive_0087_sync 175 l
+2011_10_03/2011_10_03_drive_0042_sync 977 r
+2011_09_26/2011_09_26_drive_0070_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 1728 r
+2011_09_30/2011_09_30_drive_0028_sync 1041 l
+2011_10_03/2011_10_03_drive_0034_sync 4211 l
+2011_09_26/2011_09_26_drive_0061_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 96 r
+2011_09_26/2011_09_26_drive_0039_sync 101 r
+2011_09_30/2011_09_30_drive_0028_sync 824 r
+2011_09_26/2011_09_26_drive_0022_sync 116 l
+2011_09_26/2011_09_26_drive_0070_sync 306 l
+2011_09_29/2011_09_29_drive_0026_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 1982 r
+2011_09_26/2011_09_26_drive_0011_sync 189 l
+2011_09_26/2011_09_26_drive_0057_sync 228 l
+2011_09_30/2011_09_30_drive_0020_sync 374 r
+2011_09_30/2011_09_30_drive_0028_sync 3046 l
+2011_09_30/2011_09_30_drive_0028_sync 59 r
+2011_09_26/2011_09_26_drive_0019_sync 292 l
+2011_09_30/2011_09_30_drive_0028_sync 1867 l
+2011_09_26/2011_09_26_drive_0104_sync 158 r
+2011_10_03/2011_10_03_drive_0042_sync 876 r
+2011_10_03/2011_10_03_drive_0034_sync 4266 l
+2011_09_30/2011_09_30_drive_0028_sync 1038 l
+2011_09_26/2011_09_26_drive_0095_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 3159 l
+2011_10_03/2011_10_03_drive_0034_sync 445 r
+2011_09_30/2011_09_30_drive_0028_sync 430 l
+2011_09_26/2011_09_26_drive_0061_sync 209 r
+2011_09_26/2011_09_26_drive_0039_sync 38 l
+2011_10_03/2011_10_03_drive_0034_sync 730 r
+2011_09_26/2011_09_26_drive_0005_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 3792 r
+2011_09_26/2011_09_26_drive_0039_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 744 r
+2011_10_03/2011_10_03_drive_0034_sync 1020 l
+2011_09_26/2011_09_26_drive_0057_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 493 r
+2011_09_26/2011_09_26_drive_0032_sync 149 l
+2011_09_26/2011_09_26_drive_0039_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 1393 r
+2011_09_26/2011_09_26_drive_0039_sync 242 l
+2011_09_30/2011_09_30_drive_0034_sync 558 l
+2011_09_30/2011_09_30_drive_0020_sync 35 l
+2011_09_29/2011_09_29_drive_0004_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 3461 l
+2011_09_26/2011_09_26_drive_0051_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 55 r
+2011_09_30/2011_09_30_drive_0020_sync 285 r
+2011_10_03/2011_10_03_drive_0034_sync 3512 r
+2011_09_30/2011_09_30_drive_0028_sync 833 r
+2011_09_26/2011_09_26_drive_0060_sync 0 l
+2011_09_30/2011_09_30_drive_0033_sync 471 l
+2011_09_26/2011_09_26_drive_0091_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 2504 r
+2011_10_03/2011_10_03_drive_0034_sync 1635 l
+2011_09_30/2011_09_30_drive_0028_sync 3872 l
+2011_09_26/2011_09_26_drive_0019_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 1140 l
+2011_10_03/2011_10_03_drive_0034_sync 985 r
+2011_09_26/2011_09_26_drive_0091_sync 314 r
+2011_09_26/2011_09_26_drive_0019_sync 388 r
+2011_09_26/2011_09_26_drive_0019_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 1181 r
+2011_09_30/2011_09_30_drive_0028_sync 4426 l
+2011_09_26/2011_09_26_drive_0022_sync 159 r
+2011_09_26/2011_09_26_drive_0091_sync 111 l
+2011_09_30/2011_09_30_drive_0028_sync 2142 l
+2011_10_03/2011_10_03_drive_0042_sync 125 r
+2011_09_26/2011_09_26_drive_0087_sync 376 l
+2011_10_03/2011_10_03_drive_0034_sync 1531 r
+2011_09_26/2011_09_26_drive_0087_sync 608 l
+2011_09_26/2011_09_26_drive_0051_sync 104 r
+2011_09_26/2011_09_26_drive_0022_sync 47 l
+2011_09_26/2011_09_26_drive_0061_sync 265 r
+2011_09_26/2011_09_26_drive_0051_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 1266 l
+2011_10_03/2011_10_03_drive_0034_sync 1771 l
+2011_09_30/2011_09_30_drive_0028_sync 2680 r
+2011_09_26/2011_09_26_drive_0087_sync 328 r
+2011_09_30/2011_09_30_drive_0028_sync 3284 r
+2011_09_30/2011_09_30_drive_0034_sync 992 l
+2011_09_30/2011_09_30_drive_0033_sync 204 l
+2011_09_26/2011_09_26_drive_0061_sync 393 r
+2011_09_30/2011_09_30_drive_0020_sync 95 r
+2011_09_26/2011_09_26_drive_0022_sync 392 r
+2011_09_30/2011_09_30_drive_0028_sync 4248 r
+2011_10_03/2011_10_03_drive_0042_sync 11 l
+2011_10_03/2011_10_03_drive_0042_sync 116 r
+2011_09_26/2011_09_26_drive_0061_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 1751 r
+2011_09_30/2011_09_30_drive_0020_sync 974 r
+2011_09_30/2011_09_30_drive_0028_sync 3677 l
+2011_10_03/2011_10_03_drive_0042_sync 229 r
+2011_09_30/2011_09_30_drive_0028_sync 2535 l
+2011_09_26/2011_09_26_drive_0019_sync 453 r
+2011_09_26/2011_09_26_drive_0022_sync 243 l
+2011_09_26/2011_09_26_drive_0022_sync 364 r
+2011_09_30/2011_09_30_drive_0034_sync 1122 r
+2011_09_26/2011_09_26_drive_0011_sync 191 r
+2011_09_30/2011_09_30_drive_0028_sync 2707 l
+2011_09_30/2011_09_30_drive_0033_sync 1444 r
+2011_09_30/2011_09_30_drive_0028_sync 3254 l
+2011_10_03/2011_10_03_drive_0042_sync 383 r
+2011_09_29/2011_09_29_drive_0026_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 3907 r
+2011_10_03/2011_10_03_drive_0034_sync 4055 l
+2011_09_29/2011_09_29_drive_0026_sync 95 l
+2011_09_26/2011_09_26_drive_0087_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 4651 r
+2011_10_03/2011_10_03_drive_0034_sync 164 l
+2011_09_26/2011_09_26_drive_0028_sync 139 l
+2011_09_26/2011_09_26_drive_0061_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 3200 l
+2011_09_30/2011_09_30_drive_0020_sync 573 l
+2011_10_03/2011_10_03_drive_0042_sync 1105 r
+2011_09_26/2011_09_26_drive_0057_sync 258 l
+2011_09_26/2011_09_26_drive_0028_sync 20 r
+2011_09_26/2011_09_26_drive_0039_sync 347 l
+2011_10_03/2011_10_03_drive_0034_sync 2331 r
+2011_09_26/2011_09_26_drive_0014_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 1131 l
+2011_09_30/2011_09_30_drive_0028_sync 4197 l
+2011_09_26/2011_09_26_drive_0095_sync 128 r
+2011_09_26/2011_09_26_drive_0061_sync 413 r
+2011_09_26/2011_09_26_drive_0051_sync 419 l
+2011_09_26/2011_09_26_drive_0001_sync 42 r
+2011_09_30/2011_09_30_drive_0034_sync 752 r
+2011_09_30/2011_09_30_drive_0028_sync 2770 r
+2011_09_30/2011_09_30_drive_0028_sync 3562 r
+2011_09_30/2011_09_30_drive_0028_sync 3799 l
+2011_10_03/2011_10_03_drive_0034_sync 4630 r
+2011_09_30/2011_09_30_drive_0028_sync 720 l
+2011_09_30/2011_09_30_drive_0033_sync 1301 r
+2011_09_30/2011_09_30_drive_0020_sync 129 r
+2011_10_03/2011_10_03_drive_0034_sync 1986 r
+2011_09_30/2011_09_30_drive_0028_sync 3986 l
+2011_09_26/2011_09_26_drive_0039_sync 373 r
+2011_09_30/2011_09_30_drive_0033_sync 1284 l
+2011_09_30/2011_09_30_drive_0028_sync 3243 r
+2011_09_26/2011_09_26_drive_0028_sync 383 l
+2011_09_30/2011_09_30_drive_0028_sync 4116 r
+2011_09_30/2011_09_30_drive_0020_sync 417 r
+2011_10_03/2011_10_03_drive_0034_sync 4657 r
+2011_09_30/2011_09_30_drive_0033_sync 1281 r
+2011_09_30/2011_09_30_drive_0028_sync 2784 r
+2011_09_30/2011_09_30_drive_0033_sync 383 l
+2011_09_30/2011_09_30_drive_0033_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 4070 r
+2011_09_30/2011_09_30_drive_0020_sync 993 r
+2011_09_30/2011_09_30_drive_0028_sync 3287 l
+2011_09_30/2011_09_30_drive_0034_sync 632 l
+2011_09_30/2011_09_30_drive_0020_sync 268 l
+2011_09_26/2011_09_26_drive_0014_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 296 r
+2011_09_30/2011_09_30_drive_0020_sync 390 r
+2011_09_30/2011_09_30_drive_0028_sync 2443 r
+2011_09_26/2011_09_26_drive_0019_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 2670 r
+2011_09_26/2011_09_26_drive_0028_sync 372 r
+2011_10_03/2011_10_03_drive_0034_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 3308 l
+2011_09_26/2011_09_26_drive_0070_sync 394 l
+2011_09_26/2011_09_26_drive_0028_sync 310 r
+2011_09_28/2011_09_28_drive_0001_sync 67 r
+2011_09_30/2011_09_30_drive_0033_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 4082 l
+2011_09_26/2011_09_26_drive_0032_sync 132 r
+2011_09_29/2011_09_29_drive_0004_sync 137 l
+2011_09_26/2011_09_26_drive_0028_sync 270 l
+2011_10_03/2011_10_03_drive_0034_sync 1610 l
+2011_09_26/2011_09_26_drive_0019_sync 77 r
+2011_09_26/2011_09_26_drive_0018_sync 196 r
+2011_09_26/2011_09_26_drive_0005_sync 50 r
+2011_09_26/2011_09_26_drive_0014_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 2259 l
+2011_09_30/2011_09_30_drive_0020_sync 759 r
+2011_09_26/2011_09_26_drive_0070_sync 26 l
+2011_09_30/2011_09_30_drive_0034_sync 652 r
+2011_09_30/2011_09_30_drive_0033_sync 1450 r
+2011_09_30/2011_09_30_drive_0028_sync 2458 r
+2011_09_26/2011_09_26_drive_0061_sync 280 r
+2011_09_30/2011_09_30_drive_0028_sync 1980 r
+2011_09_30/2011_09_30_drive_0028_sync 1132 r
+2011_10_03/2011_10_03_drive_0034_sync 2940 l
+2011_09_29/2011_09_29_drive_0026_sync 71 r
+2011_09_30/2011_09_30_drive_0020_sync 73 r
+2011_09_30/2011_09_30_drive_0020_sync 920 r
+2011_10_03/2011_10_03_drive_0034_sync 4156 l
+2011_10_03/2011_10_03_drive_0042_sync 771 l
+2011_10_03/2011_10_03_drive_0034_sync 1749 l
+2011_10_03/2011_10_03_drive_0034_sync 3094 l
+2011_10_03/2011_10_03_drive_0034_sync 3118 l
+2011_09_30/2011_09_30_drive_0028_sync 4430 r
+2011_09_26/2011_09_26_drive_0070_sync 41 l
+2011_09_26/2011_09_26_drive_0061_sync 373 l
+2011_09_26/2011_09_26_drive_0017_sync 43 l
+2011_09_26/2011_09_26_drive_0091_sync 74 r
+2011_09_26/2011_09_26_drive_0087_sync 326 r
+2011_09_26/2011_09_26_drive_0095_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 1978 r
+2011_10_03/2011_10_03_drive_0034_sync 4583 r
+2011_09_30/2011_09_30_drive_0028_sync 3437 r
+2011_10_03/2011_10_03_drive_0034_sync 1991 r
+2011_09_26/2011_09_26_drive_0051_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 4414 l
+2011_09_30/2011_09_30_drive_0028_sync 1487 l
+2011_10_03/2011_10_03_drive_0034_sync 2622 l
+2011_10_03/2011_10_03_drive_0034_sync 2712 l
+2011_09_26/2011_09_26_drive_0018_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 196 l
+2011_09_26/2011_09_26_drive_0057_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 1023 r
+2011_09_30/2011_09_30_drive_0028_sync 124 l
+2011_09_30/2011_09_30_drive_0028_sync 2437 r
+2011_09_26/2011_09_26_drive_0028_sync 244 r
+2011_09_30/2011_09_30_drive_0028_sync 1260 r
+2011_09_26/2011_09_26_drive_0032_sync 265 l
+2011_09_26/2011_09_26_drive_0051_sync 124 l
+2011_09_30/2011_09_30_drive_0028_sync 2068 r
+2011_09_30/2011_09_30_drive_0033_sync 189 r
+2011_09_30/2011_09_30_drive_0028_sync 898 r
+2011_09_26/2011_09_26_drive_0028_sync 213 l
+2011_09_30/2011_09_30_drive_0034_sync 139 r
+2011_09_26/2011_09_26_drive_0057_sync 125 l
+2011_09_30/2011_09_30_drive_0020_sync 94 r
+2011_09_30/2011_09_30_drive_0034_sync 357 r
+2011_09_30/2011_09_30_drive_0028_sync 4303 l
+2011_09_30/2011_09_30_drive_0028_sync 4812 r
+2011_09_26/2011_09_26_drive_0028_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 2350 l
+2011_09_26/2011_09_26_drive_0001_sync 40 r
+2011_09_30/2011_09_30_drive_0033_sync 630 r
+2011_09_30/2011_09_30_drive_0033_sync 1516 r
+2011_10_03/2011_10_03_drive_0034_sync 2372 l
+2011_09_26/2011_09_26_drive_0087_sync 561 r
+2011_09_26/2011_09_26_drive_0022_sync 8 r
+2011_09_26/2011_09_26_drive_0091_sync 108 r
+2011_09_30/2011_09_30_drive_0033_sync 422 r
+2011_09_26/2011_09_26_drive_0032_sync 92 r
+2011_09_26/2011_09_26_drive_0091_sync 171 l
+2011_09_30/2011_09_30_drive_0033_sync 297 l
+2011_09_26/2011_09_26_drive_0035_sync 99 l
+2011_09_26/2011_09_26_drive_0087_sync 333 l
+2011_09_26/2011_09_26_drive_0051_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 1281 l
+2011_09_30/2011_09_30_drive_0028_sync 1916 l
+2011_09_26/2011_09_26_drive_0061_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 593 l
+2011_10_03/2011_10_03_drive_0034_sync 1337 r
+2011_09_30/2011_09_30_drive_0028_sync 1118 l
+2011_09_26/2011_09_26_drive_0019_sync 149 l
+2011_09_26/2011_09_26_drive_0091_sync 236 l
+2011_09_26/2011_09_26_drive_0087_sync 429 l
+2011_09_30/2011_09_30_drive_0028_sync 2933 r
+2011_09_26/2011_09_26_drive_0019_sync 440 r
+2011_09_30/2011_09_30_drive_0033_sync 676 l
+2011_09_26/2011_09_26_drive_0022_sync 516 r
+2011_09_26/2011_09_26_drive_0087_sync 463 r
+2011_09_26/2011_09_26_drive_0005_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 3344 r
+2011_10_03/2011_10_03_drive_0034_sync 1938 l
+2011_09_26/2011_09_26_drive_0057_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 1388 l
+2011_09_30/2011_09_30_drive_0028_sync 3587 r
+2011_10_03/2011_10_03_drive_0034_sync 1102 r
+2011_09_26/2011_09_26_drive_0011_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 3529 r
+2011_09_30/2011_09_30_drive_0028_sync 1245 l
+2011_09_30/2011_09_30_drive_0028_sync 3761 r
+2011_09_29/2011_09_29_drive_0004_sync 190 l
+2011_09_30/2011_09_30_drive_0033_sync 998 r
+2011_09_26/2011_09_26_drive_0091_sync 176 l
+2011_09_30/2011_09_30_drive_0034_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 3124 r
+2011_09_26/2011_09_26_drive_0061_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 89 l
+2011_09_26/2011_09_26_drive_0095_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 3409 l
+2011_09_30/2011_09_30_drive_0020_sync 573 r
+2011_09_26/2011_09_26_drive_0060_sync 36 l
+2011_09_26/2011_09_26_drive_0028_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 2583 l
+2011_09_26/2011_09_26_drive_0032_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 2237 l
+2011_10_03/2011_10_03_drive_0034_sync 1934 l
+2011_09_26/2011_09_26_drive_0061_sync 451 l
+2011_09_26/2011_09_26_drive_0019_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 3823 r
+2011_09_26/2011_09_26_drive_0051_sync 232 l
+2011_09_26/2011_09_26_drive_0039_sync 276 l
+2011_10_03/2011_10_03_drive_0042_sync 504 l
+2011_09_30/2011_09_30_drive_0028_sync 4536 l
+2011_10_03/2011_10_03_drive_0034_sync 1600 l
+2011_09_26/2011_09_26_drive_0011_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 1738 r
+2011_09_29/2011_09_29_drive_0026_sync 60 l
+2011_09_30/2011_09_30_drive_0033_sync 227 l
+2011_10_03/2011_10_03_drive_0034_sync 1820 l
+2011_09_30/2011_09_30_drive_0028_sync 2809 l
+2011_10_03/2011_10_03_drive_0042_sync 41 r
+2011_10_03/2011_10_03_drive_0042_sync 1111 r
+2011_09_26/2011_09_26_drive_0061_sync 176 l
+2011_09_30/2011_09_30_drive_0028_sync 1330 r
+2011_09_30/2011_09_30_drive_0028_sync 1942 r
+2011_09_29/2011_09_29_drive_0004_sync 225 r
+2011_09_26/2011_09_26_drive_0032_sync 7 r
+2011_09_26/2011_09_26_drive_0057_sync 106 l
+2011_09_30/2011_09_30_drive_0028_sync 847 l
+2011_09_26/2011_09_26_drive_0022_sync 696 l
+2011_09_29/2011_09_29_drive_0004_sync 117 r
+2011_10_03/2011_10_03_drive_0034_sync 718 r
+2011_09_30/2011_09_30_drive_0028_sync 2315 l
+2011_09_30/2011_09_30_drive_0034_sync 172 l
+2011_09_26/2011_09_26_drive_0060_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 1420 l
+2011_09_30/2011_09_30_drive_0028_sync 2957 r
+2011_10_03/2011_10_03_drive_0042_sync 904 r
+2011_10_03/2011_10_03_drive_0034_sync 1255 r
+2011_09_30/2011_09_30_drive_0028_sync 238 r
+2011_10_03/2011_10_03_drive_0034_sync 2091 l
+2011_10_03/2011_10_03_drive_0034_sync 4095 l
+2011_09_30/2011_09_30_drive_0028_sync 844 r
+2011_09_26/2011_09_26_drive_0015_sync 239 l
+2011_09_30/2011_09_30_drive_0028_sync 718 r
+2011_09_30/2011_09_30_drive_0033_sync 1379 r
+2011_09_26/2011_09_26_drive_0091_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 4618 l
+2011_09_26/2011_09_26_drive_0032_sync 298 r
+2011_09_30/2011_09_30_drive_0034_sync 747 l
+2011_09_30/2011_09_30_drive_0028_sync 3703 l
+2011_10_03/2011_10_03_drive_0034_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 224 l
+2011_09_29/2011_09_29_drive_0004_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 1103 r
+2011_09_26/2011_09_26_drive_0022_sync 625 r
+2011_09_26/2011_09_26_drive_0019_sync 257 l
+2011_09_26/2011_09_26_drive_0001_sync 58 l
+2011_10_03/2011_10_03_drive_0042_sync 1123 r
+2011_10_03/2011_10_03_drive_0034_sync 4375 r
+2011_09_26/2011_09_26_drive_0028_sync 406 l
+2011_09_30/2011_09_30_drive_0033_sync 56 r
+2011_09_26/2011_09_26_drive_0087_sync 177 l
+2011_09_30/2011_09_30_drive_0034_sync 914 l
+2011_09_30/2011_09_30_drive_0028_sync 2442 l
+2011_09_30/2011_09_30_drive_0034_sync 920 l
+2011_10_03/2011_10_03_drive_0034_sync 3790 l
+2011_09_26/2011_09_26_drive_0051_sync 137 l
+2011_10_03/2011_10_03_drive_0034_sync 912 l
+2011_10_03/2011_10_03_drive_0034_sync 1745 l
+2011_09_30/2011_09_30_drive_0033_sync 434 l
+2011_09_30/2011_09_30_drive_0028_sync 503 r
+2011_09_26/2011_09_26_drive_0091_sync 112 r
+2011_09_26/2011_09_26_drive_0104_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 3418 l
+2011_10_03/2011_10_03_drive_0034_sync 2653 r
+2011_09_26/2011_09_26_drive_0039_sync 32 l
+2011_09_26/2011_09_26_drive_0022_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 4394 r
+2011_09_26/2011_09_26_drive_0051_sync 275 l
+2011_10_03/2011_10_03_drive_0034_sync 1754 l
+2011_09_30/2011_09_30_drive_0028_sync 905 l
+2011_09_30/2011_09_30_drive_0028_sync 4185 r
+2011_09_26/2011_09_26_drive_0087_sync 400 l
+2011_09_30/2011_09_30_drive_0034_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 170 r
+2011_10_03/2011_10_03_drive_0034_sync 2526 r
+2011_09_30/2011_09_30_drive_0020_sync 1009 r
+2011_09_30/2011_09_30_drive_0028_sync 4275 l
+2011_09_26/2011_09_26_drive_0022_sync 384 r
+2011_09_26/2011_09_26_drive_0015_sync 244 r
+2011_09_26/2011_09_26_drive_0022_sync 50 r
+2011_10_03/2011_10_03_drive_0042_sync 639 l
+2011_10_03/2011_10_03_drive_0034_sync 731 l
+2011_09_30/2011_09_30_drive_0028_sync 2840 l
+2011_10_03/2011_10_03_drive_0034_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 3975 l
+2011_09_30/2011_09_30_drive_0020_sync 319 l
+2011_09_26/2011_09_26_drive_0095_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 3090 r
+2011_09_26/2011_09_26_drive_0087_sync 337 l
+2011_09_30/2011_09_30_drive_0028_sync 3612 r
+2011_10_03/2011_10_03_drive_0034_sync 2489 l
+2011_09_30/2011_09_30_drive_0033_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 4661 l
+2011_09_26/2011_09_26_drive_0022_sync 468 r
+2011_09_26/2011_09_26_drive_0087_sync 116 l
+2011_09_26/2011_09_26_drive_0005_sync 128 r
+2011_09_30/2011_09_30_drive_0033_sync 1111 r
+2011_09_30/2011_09_30_drive_0034_sync 665 l
+2011_09_30/2011_09_30_drive_0034_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 1360 l
+2011_09_30/2011_09_30_drive_0028_sync 2408 l
+2011_10_03/2011_10_03_drive_0034_sync 3952 l
+2011_09_30/2011_09_30_drive_0028_sync 2016 r
+2011_10_03/2011_10_03_drive_0034_sync 2681 l
+2011_09_30/2011_09_30_drive_0028_sync 2668 r
+2011_09_30/2011_09_30_drive_0020_sync 574 l
+2011_10_03/2011_10_03_drive_0034_sync 3786 l
+2011_09_26/2011_09_26_drive_0113_sync 41 l
+2011_09_26/2011_09_26_drive_0070_sync 200 r
+2011_09_26/2011_09_26_drive_0039_sync 196 l
+2011_09_30/2011_09_30_drive_0034_sync 739 r
+2011_09_26/2011_09_26_drive_0070_sync 376 r
+2011_09_30/2011_09_30_drive_0028_sync 2621 r
+2011_09_30/2011_09_30_drive_0028_sync 4052 r
+2011_09_26/2011_09_26_drive_0091_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 442 r
+2011_09_29/2011_09_29_drive_0004_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 3591 r
+2011_10_03/2011_10_03_drive_0034_sync 3915 l
+2011_09_30/2011_09_30_drive_0028_sync 918 l
+2011_09_30/2011_09_30_drive_0028_sync 894 r
+2011_09_30/2011_09_30_drive_0033_sync 551 l
+2011_09_26/2011_09_26_drive_0061_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 5092 r
+2011_09_26/2011_09_26_drive_0015_sync 210 l
+2011_10_03/2011_10_03_drive_0034_sync 4533 l
+2011_09_30/2011_09_30_drive_0028_sync 3867 l
+2011_09_26/2011_09_26_drive_0014_sync 43 r
+2011_09_26/2011_09_26_drive_0087_sync 17 l
+2011_09_29/2011_09_29_drive_0004_sync 9 r
+2011_10_03/2011_10_03_drive_0042_sync 110 r
+2011_09_26/2011_09_26_drive_0095_sync 237 l
+2011_09_30/2011_09_30_drive_0020_sync 680 l
+2011_09_26/2011_09_26_drive_0022_sync 409 r
+2011_10_03/2011_10_03_drive_0042_sync 1027 l
+2011_10_03/2011_10_03_drive_0034_sync 53 r
+2011_10_03/2011_10_03_drive_0042_sync 511 r
+2011_09_30/2011_09_30_drive_0033_sync 1265 l
+2011_10_03/2011_10_03_drive_0042_sync 545 r
+2011_10_03/2011_10_03_drive_0034_sync 535 l
+2011_09_30/2011_09_30_drive_0020_sync 9 l
+2011_09_26/2011_09_26_drive_0051_sync 378 r
+2011_09_30/2011_09_30_drive_0034_sync 987 r
+2011_09_26/2011_09_26_drive_0039_sync 260 l
+2011_09_26/2011_09_26_drive_0087_sync 445 l
+2011_09_30/2011_09_30_drive_0034_sync 998 r
+2011_09_26/2011_09_26_drive_0015_sync 224 r
+2011_09_30/2011_09_30_drive_0028_sync 778 l
+2011_09_30/2011_09_30_drive_0034_sync 1200 r
+2011_09_26/2011_09_26_drive_0113_sync 49 l
+2011_09_26/2011_09_26_drive_0019_sync 313 l
+2011_09_26/2011_09_26_drive_0091_sync 130 l
+2011_10_03/2011_10_03_drive_0034_sync 3119 r
+2011_09_28/2011_09_28_drive_0001_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 1407 l
+2011_09_26/2011_09_26_drive_0019_sync 349 r
+2011_09_26/2011_09_26_drive_0091_sync 219 l
+2011_09_30/2011_09_30_drive_0020_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 4901 l
+2011_09_30/2011_09_30_drive_0033_sync 1576 l
+2011_09_26/2011_09_26_drive_0061_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 4635 l
+2011_09_30/2011_09_30_drive_0028_sync 1928 l
+2011_09_30/2011_09_30_drive_0028_sync 2974 r
+2011_09_26/2011_09_26_drive_0087_sync 294 r
+2011_09_26/2011_09_26_drive_0032_sync 349 r
+2011_09_30/2011_09_30_drive_0028_sync 223 l
+2011_09_26/2011_09_26_drive_0014_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 2163 l
+2011_10_03/2011_10_03_drive_0034_sync 1294 l
+2011_09_26/2011_09_26_drive_0061_sync 674 r
+2011_09_30/2011_09_30_drive_0028_sync 3959 l
+2011_09_30/2011_09_30_drive_0033_sync 1310 l
+2011_10_03/2011_10_03_drive_0034_sync 4327 l
+2011_09_30/2011_09_30_drive_0033_sync 1438 l
+2011_09_30/2011_09_30_drive_0033_sync 1200 r
+2011_09_30/2011_09_30_drive_0033_sync 400 r
+2011_09_26/2011_09_26_drive_0032_sync 100 r
+2011_09_26/2011_09_26_drive_0022_sync 68 l
+2011_09_26/2011_09_26_drive_0014_sync 288 l
+2011_10_03/2011_10_03_drive_0042_sync 808 l
+2011_10_03/2011_10_03_drive_0034_sync 2528 r
+2011_09_26/2011_09_26_drive_0018_sync 158 r
+2011_09_26/2011_09_26_drive_0011_sync 178 r
+2011_10_03/2011_10_03_drive_0034_sync 1359 l
+2011_09_30/2011_09_30_drive_0028_sync 1446 r
+2011_10_03/2011_10_03_drive_0042_sync 1 r
+2011_09_30/2011_09_30_drive_0034_sync 623 r
+2011_09_30/2011_09_30_drive_0028_sync 4251 l
+2011_09_29/2011_09_29_drive_0004_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 3681 l
+2011_09_28/2011_09_28_drive_0001_sync 0 l
+2011_09_26/2011_09_26_drive_0087_sync 30 r
+2011_09_26/2011_09_26_drive_0087_sync 672 l
+2011_09_26/2011_09_26_drive_0032_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 1068 l
+2011_09_30/2011_09_30_drive_0033_sync 732 r
+2011_09_26/2011_09_26_drive_0019_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 3664 l
+2011_09_26/2011_09_26_drive_0018_sync 210 l
+2011_09_30/2011_09_30_drive_0020_sync 689 r
+2011_10_03/2011_10_03_drive_0042_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 1768 r
+2011_09_30/2011_09_30_drive_0033_sync 1218 l
+2011_09_30/2011_09_30_drive_0028_sync 4653 l
+2011_10_03/2011_10_03_drive_0034_sync 1248 r
+2011_10_03/2011_10_03_drive_0034_sync 3824 l
+2011_09_30/2011_09_30_drive_0028_sync 2159 r
+2011_09_30/2011_09_30_drive_0028_sync 4220 l
+2011_10_03/2011_10_03_drive_0034_sync 2154 r
+2011_09_26/2011_09_26_drive_0028_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 3046 r
+2011_09_30/2011_09_30_drive_0028_sync 45 l
+2011_09_26/2011_09_26_drive_0015_sync 134 l
+2011_09_26/2011_09_26_drive_0032_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 2473 r
+2011_09_30/2011_09_30_drive_0033_sync 170 l
+2011_09_30/2011_09_30_drive_0034_sync 517 r
+2011_09_30/2011_09_30_drive_0033_sync 229 r
+2011_09_30/2011_09_30_drive_0028_sync 82 l
+2011_09_26/2011_09_26_drive_0070_sync 332 l
+2011_09_30/2011_09_30_drive_0028_sync 2197 r
+2011_09_30/2011_09_30_drive_0028_sync 1064 l
+2011_09_30/2011_09_30_drive_0028_sync 1121 l
+2011_09_28/2011_09_28_drive_0001_sync 1 r
+2011_09_26/2011_09_26_drive_0060_sync 57 l
+2011_09_26/2011_09_26_drive_0051_sync 162 r
+2011_09_26/2011_09_26_drive_0070_sync 229 r
+2011_09_26/2011_09_26_drive_0039_sync 352 l
+2011_09_30/2011_09_30_drive_0028_sync 2053 r
+2011_10_03/2011_10_03_drive_0034_sync 2152 l
+2011_09_26/2011_09_26_drive_0019_sync 221 r
+2011_09_30/2011_09_30_drive_0033_sync 435 l
+2011_09_30/2011_09_30_drive_0020_sync 384 r
+2011_09_26/2011_09_26_drive_0070_sync 364 r
+2011_09_30/2011_09_30_drive_0020_sync 701 r
+2011_09_30/2011_09_30_drive_0028_sync 4531 r
+2011_09_30/2011_09_30_drive_0033_sync 815 l
+2011_09_30/2011_09_30_drive_0034_sync 1163 r
+2011_09_30/2011_09_30_drive_0028_sync 3116 l
+2011_09_26/2011_09_26_drive_0057_sync 271 l
+2011_09_26/2011_09_26_drive_0022_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 1243 l
+2011_09_30/2011_09_30_drive_0028_sync 2045 r
+2011_10_03/2011_10_03_drive_0034_sync 1362 r
+2011_09_26/2011_09_26_drive_0051_sync 149 l
+2011_09_30/2011_09_30_drive_0034_sync 607 r
+2011_10_03/2011_10_03_drive_0034_sync 4519 l
+2011_09_30/2011_09_30_drive_0028_sync 718 l
+2011_09_30/2011_09_30_drive_0028_sync 3629 r
+2011_10_03/2011_10_03_drive_0034_sync 3234 r
+2011_09_30/2011_09_30_drive_0028_sync 5147 r
+2011_09_30/2011_09_30_drive_0033_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 499 r
+2011_09_30/2011_09_30_drive_0028_sync 2263 r
+2011_09_26/2011_09_26_drive_0095_sync 130 l
+2011_09_30/2011_09_30_drive_0033_sync 785 r
+2011_09_30/2011_09_30_drive_0028_sync 4406 r
+2011_09_30/2011_09_30_drive_0020_sync 593 r
+2011_09_26/2011_09_26_drive_0051_sync 82 r
+2011_09_26/2011_09_26_drive_0087_sync 575 l
+2011_10_03/2011_10_03_drive_0034_sync 774 r
+2011_10_03/2011_10_03_drive_0034_sync 1917 r
+2011_09_30/2011_09_30_drive_0028_sync 3442 l
+2011_10_03/2011_10_03_drive_0042_sync 43 r
+2011_09_29/2011_09_29_drive_0026_sync 87 l
+2011_09_26/2011_09_26_drive_0028_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 424 l
+2011_09_30/2011_09_30_drive_0028_sync 3501 l
+2011_09_26/2011_09_26_drive_0087_sync 80 l
+2011_09_26/2011_09_26_drive_0104_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 3859 r
+2011_10_03/2011_10_03_drive_0034_sync 347 r
+2011_09_30/2011_09_30_drive_0028_sync 2578 r
+2011_10_03/2011_10_03_drive_0034_sync 2936 r
+2011_09_26/2011_09_26_drive_0070_sync 386 r
+2011_09_26/2011_09_26_drive_0061_sync 693 l
+2011_10_03/2011_10_03_drive_0034_sync 1735 r
+2011_10_03/2011_10_03_drive_0034_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 4084 r
+2011_09_30/2011_09_30_drive_0034_sync 615 l
+2011_09_26/2011_09_26_drive_0091_sync 76 r
+2011_09_26/2011_09_26_drive_0087_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 4522 r
+2011_10_03/2011_10_03_drive_0034_sync 644 l
+2011_09_26/2011_09_26_drive_0039_sync 384 l
+2011_09_26/2011_09_26_drive_0057_sync 114 l
+2011_09_26/2011_09_26_drive_0057_sync 148 r
+2011_09_26/2011_09_26_drive_0014_sync 155 l
+2011_09_30/2011_09_30_drive_0033_sync 683 l
+2011_10_03/2011_10_03_drive_0042_sync 1055 r
+2011_09_26/2011_09_26_drive_0001_sync 28 l
+2011_09_26/2011_09_26_drive_0028_sync 277 l
+2011_10_03/2011_10_03_drive_0034_sync 4615 r
+2011_09_26/2011_09_26_drive_0019_sync 67 r
+2011_09_30/2011_09_30_drive_0020_sync 416 r
+2011_09_30/2011_09_30_drive_0020_sync 205 r
+2011_10_03/2011_10_03_drive_0042_sync 636 l
+2011_09_26/2011_09_26_drive_0051_sync 344 r
+2011_09_30/2011_09_30_drive_0028_sync 1824 l
+2011_09_26/2011_09_26_drive_0061_sync 197 l
+2011_09_26/2011_09_26_drive_0104_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 4565 r
+2011_09_30/2011_09_30_drive_0020_sync 333 l
+2011_09_26/2011_09_26_drive_0057_sync 13 r
+2011_09_26/2011_09_26_drive_0095_sync 204 l
+2011_09_26/2011_09_26_drive_0015_sync 204 r
+2011_09_30/2011_09_30_drive_0020_sync 288 r
+2011_09_26/2011_09_26_drive_0022_sync 317 l
+2011_09_30/2011_09_30_drive_0033_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 1103 r
+2011_09_30/2011_09_30_drive_0028_sync 2280 l
+2011_09_26/2011_09_26_drive_0057_sync 281 r
+2011_09_26/2011_09_26_drive_0095_sync 237 r
+2011_09_30/2011_09_30_drive_0033_sync 1056 l
+2011_09_30/2011_09_30_drive_0033_sync 874 r
+2011_09_30/2011_09_30_drive_0034_sync 1069 l
+2011_09_26/2011_09_26_drive_0028_sync 36 r
+2011_09_26/2011_09_26_drive_0011_sync 200 l
+2011_09_30/2011_09_30_drive_0033_sync 1566 l
+2011_09_26/2011_09_26_drive_0087_sync 692 l
+2011_10_03/2011_10_03_drive_0034_sync 3951 l
+2011_09_30/2011_09_30_drive_0028_sync 1822 r
+2011_09_30/2011_09_30_drive_0028_sync 1414 l
+2011_09_30/2011_09_30_drive_0020_sync 654 r
+2011_09_30/2011_09_30_drive_0028_sync 648 l
+2011_09_30/2011_09_30_drive_0033_sync 60 r
+2011_09_26/2011_09_26_drive_0091_sync 170 r
+2011_10_03/2011_10_03_drive_0034_sync 4507 l
+2011_09_30/2011_09_30_drive_0033_sync 8 r
+2011_09_26/2011_09_26_drive_0061_sync 390 l
+2011_09_26/2011_09_26_drive_0017_sync 97 r
+2011_09_26/2011_09_26_drive_0061_sync 203 r
+2011_09_30/2011_09_30_drive_0034_sync 820 r
+2011_09_26/2011_09_26_drive_0019_sync 140 r
+2011_10_03/2011_10_03_drive_0042_sync 1103 l
+2011_09_26/2011_09_26_drive_0095_sync 235 r
+2011_09_30/2011_09_30_drive_0020_sync 166 r
+2011_09_26/2011_09_26_drive_0051_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 4516 l
+2011_09_26/2011_09_26_drive_0061_sync 483 r
+2011_10_03/2011_10_03_drive_0034_sync 2035 l
+2011_10_03/2011_10_03_drive_0034_sync 4274 l
+2011_09_30/2011_09_30_drive_0028_sync 1123 l
+2011_09_30/2011_09_30_drive_0028_sync 1223 r
+2011_09_30/2011_09_30_drive_0028_sync 4453 r
+2011_09_30/2011_09_30_drive_0028_sync 1233 r
+2011_10_03/2011_10_03_drive_0034_sync 3042 l
+2011_10_03/2011_10_03_drive_0034_sync 2674 l
+2011_09_30/2011_09_30_drive_0033_sync 1225 r
+2011_09_30/2011_09_30_drive_0034_sync 839 r
+2011_09_26/2011_09_26_drive_0070_sync 206 r
+2011_09_26/2011_09_26_drive_0070_sync 399 r
+2011_09_26/2011_09_26_drive_0087_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 256 l
+2011_09_30/2011_09_30_drive_0033_sync 1465 l
+2011_10_03/2011_10_03_drive_0034_sync 2663 r
+2011_09_30/2011_09_30_drive_0020_sync 723 r
+2011_10_03/2011_10_03_drive_0034_sync 2095 r
+2011_09_26/2011_09_26_drive_0087_sync 482 l
+2011_09_30/2011_09_30_drive_0028_sync 2385 l
+2011_09_30/2011_09_30_drive_0028_sync 4277 r
+2011_10_03/2011_10_03_drive_0034_sync 1836 l
+2011_09_26/2011_09_26_drive_0061_sync 558 r
+2011_09_28/2011_09_28_drive_0001_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 2510 l
+2011_09_30/2011_09_30_drive_0028_sync 330 l
+2011_09_26/2011_09_26_drive_0051_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 1578 l
+2011_09_30/2011_09_30_drive_0028_sync 3076 l
+2011_10_03/2011_10_03_drive_0034_sync 1044 l
+2011_09_26/2011_09_26_drive_0095_sync 125 l
+2011_09_26/2011_09_26_drive_0022_sync 737 r
+2011_09_30/2011_09_30_drive_0033_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 2177 l
+2011_09_30/2011_09_30_drive_0028_sync 3139 l
+2011_09_26/2011_09_26_drive_0022_sync 491 r
+2011_09_26/2011_09_26_drive_0095_sync 31 l
+2011_09_26/2011_09_26_drive_0087_sync 222 r
+2011_09_26/2011_09_26_drive_0061_sync 117 l
+2011_09_30/2011_09_30_drive_0028_sync 566 l
+2011_09_26/2011_09_26_drive_0104_sync 22 r
+2011_09_26/2011_09_26_drive_0087_sync 523 l
+2011_09_26/2011_09_26_drive_0095_sync 191 r
+2011_09_30/2011_09_30_drive_0028_sync 3081 r
+2011_09_26/2011_09_26_drive_0001_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 3682 l
+2011_09_26/2011_09_26_drive_0022_sync 706 r
+2011_09_30/2011_09_30_drive_0034_sync 587 l
+2011_10_03/2011_10_03_drive_0042_sync 736 r
+2011_09_26/2011_09_26_drive_0061_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 3764 r
+2011_09_30/2011_09_30_drive_0028_sync 3641 l
+2011_10_03/2011_10_03_drive_0042_sync 439 l
+2011_09_30/2011_09_30_drive_0028_sync 1212 l
+2011_09_30/2011_09_30_drive_0020_sync 321 l
+2011_10_03/2011_10_03_drive_0034_sync 3420 l
+2011_09_26/2011_09_26_drive_0070_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 3665 l
+2011_09_26/2011_09_26_drive_0061_sync 200 r
+2011_10_03/2011_10_03_drive_0034_sync 2982 r
+2011_09_30/2011_09_30_drive_0028_sync 2090 r
+2011_09_26/2011_09_26_drive_0087_sync 518 l
+2011_10_03/2011_10_03_drive_0034_sync 3104 l
+2011_09_26/2011_09_26_drive_0061_sync 438 r
+2011_09_26/2011_09_26_drive_0061_sync 672 r
+2011_09_26/2011_09_26_drive_0061_sync 220 r
+2011_09_30/2011_09_30_drive_0033_sync 910 l
+2011_09_26/2011_09_26_drive_0011_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 4146 r
+2011_10_03/2011_10_03_drive_0034_sync 1097 r
+2011_09_26/2011_09_26_drive_0022_sync 688 r
+2011_09_30/2011_09_30_drive_0028_sync 1826 r
+2011_09_30/2011_09_30_drive_0033_sync 419 r
+2011_09_30/2011_09_30_drive_0028_sync 4287 r
+2011_09_26/2011_09_26_drive_0015_sync 105 l
+2011_09_30/2011_09_30_drive_0034_sync 369 l
+2011_09_26/2011_09_26_drive_0061_sync 618 l
+2011_09_30/2011_09_30_drive_0028_sync 4398 r
+2011_09_26/2011_09_26_drive_0061_sync 360 l
+2011_09_30/2011_09_30_drive_0028_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 4910 l
+2011_09_26/2011_09_26_drive_0028_sync 391 r
+2011_09_30/2011_09_30_drive_0033_sync 1224 r
+2011_10_03/2011_10_03_drive_0034_sync 2980 r
+2011_10_03/2011_10_03_drive_0042_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 4600 r
+2011_10_03/2011_10_03_drive_0034_sync 4564 r
+2011_10_03/2011_10_03_drive_0034_sync 374 l
+2011_09_26/2011_09_26_drive_0087_sync 218 r
+2011_09_29/2011_09_29_drive_0004_sync 152 l
+2011_09_26/2011_09_26_drive_0022_sync 767 r
+2011_09_26/2011_09_26_drive_0019_sync 248 l
+2011_09_30/2011_09_30_drive_0028_sync 3734 l
+2011_09_26/2011_09_26_drive_0070_sync 267 r
+2011_09_30/2011_09_30_drive_0028_sync 2221 r
+2011_09_26/2011_09_26_drive_0028_sync 123 r
+2011_09_26/2011_09_26_drive_0051_sync 383 l
+2011_09_30/2011_09_30_drive_0028_sync 4566 r
+2011_10_03/2011_10_03_drive_0034_sync 1111 r
+2011_09_26/2011_09_26_drive_0095_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 2216 l
+2011_09_30/2011_09_30_drive_0020_sync 1029 r
+2011_09_30/2011_09_30_drive_0028_sync 1238 l
+2011_09_26/2011_09_26_drive_0061_sync 146 l
+2011_09_30/2011_09_30_drive_0034_sync 795 l
+2011_09_26/2011_09_26_drive_0057_sync 70 r
+2011_09_26/2011_09_26_drive_0015_sync 114 r
+2011_09_30/2011_09_30_drive_0034_sync 379 l
+2011_10_03/2011_10_03_drive_0034_sync 3922 r
+2011_10_03/2011_10_03_drive_0034_sync 2859 r
+2011_09_30/2011_09_30_drive_0034_sync 1027 r
+2011_09_26/2011_09_26_drive_0091_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 2623 l
+2011_10_03/2011_10_03_drive_0034_sync 1639 l
+2011_09_26/2011_09_26_drive_0057_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 4449 r
+2011_10_03/2011_10_03_drive_0042_sync 266 l
+2011_09_30/2011_09_30_drive_0033_sync 1255 l
+2011_10_03/2011_10_03_drive_0042_sync 471 r
+2011_10_03/2011_10_03_drive_0034_sync 975 r
+2011_09_26/2011_09_26_drive_0028_sync 399 r
+2011_10_03/2011_10_03_drive_0034_sync 3788 l
+2011_10_03/2011_10_03_drive_0034_sync 3577 l
+2011_10_03/2011_10_03_drive_0034_sync 3415 r
+2011_10_03/2011_10_03_drive_0034_sync 1166 l
+2011_09_26/2011_09_26_drive_0091_sync 288 l
+2011_10_03/2011_10_03_drive_0042_sync 969 r
+2011_09_26/2011_09_26_drive_0032_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 2635 l
+2011_09_30/2011_09_30_drive_0028_sync 4482 l
+2011_09_30/2011_09_30_drive_0020_sync 825 l
+2011_10_03/2011_10_03_drive_0034_sync 3593 r
+2011_09_30/2011_09_30_drive_0028_sync 1252 r
+2011_09_26/2011_09_26_drive_0022_sync 648 l
+2011_10_03/2011_10_03_drive_0034_sync 1415 r
+2011_10_03/2011_10_03_drive_0034_sync 2699 r
+2011_09_26/2011_09_26_drive_0032_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 1558 l
+2011_10_03/2011_10_03_drive_0034_sync 1238 l
+2011_10_03/2011_10_03_drive_0034_sync 1160 l
+2011_09_30/2011_09_30_drive_0033_sync 1258 l
+2011_09_26/2011_09_26_drive_0022_sync 518 l
+2011_09_26/2011_09_26_drive_0061_sync 218 l
+2011_10_03/2011_10_03_drive_0042_sync 716 l
+2011_10_03/2011_10_03_drive_0042_sync 381 r
+2011_09_30/2011_09_30_drive_0028_sync 1076 l
+2011_10_03/2011_10_03_drive_0034_sync 2633 l
+2011_09_26/2011_09_26_drive_0113_sync 20 l
+2011_09_26/2011_09_26_drive_0057_sync 327 l
+2011_09_26/2011_09_26_drive_0087_sync 347 r
+2011_09_26/2011_09_26_drive_0070_sync 370 r
+2011_10_03/2011_10_03_drive_0042_sync 1058 l
+2011_10_03/2011_10_03_drive_0034_sync 3759 l
+2011_09_26/2011_09_26_drive_0018_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 191 r
+2011_09_26/2011_09_26_drive_0035_sync 87 r
+2011_09_26/2011_09_26_drive_0011_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 3141 r
+2011_09_30/2011_09_30_drive_0028_sync 1879 l
+2011_09_30/2011_09_30_drive_0028_sync 1025 r
+2011_09_26/2011_09_26_drive_0051_sync 335 r
+2011_09_30/2011_09_30_drive_0028_sync 3407 l
+2011_09_30/2011_09_30_drive_0028_sync 1164 r
+2011_09_30/2011_09_30_drive_0020_sync 731 l
+2011_09_26/2011_09_26_drive_0018_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 1883 r
+2011_09_30/2011_09_30_drive_0034_sync 1189 r
+2011_09_30/2011_09_30_drive_0028_sync 974 r
+2011_09_26/2011_09_26_drive_0018_sync 9 l
+2011_09_26/2011_09_26_drive_0091_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 3678 r
+2011_09_30/2011_09_30_drive_0028_sync 2556 r
+2011_09_30/2011_09_30_drive_0028_sync 3756 r
+2011_09_30/2011_09_30_drive_0028_sync 1072 r
+2011_09_26/2011_09_26_drive_0087_sync 239 l
+2011_09_26/2011_09_26_drive_0060_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 1719 l
+2011_09_30/2011_09_30_drive_0028_sync 4051 l
+2011_09_30/2011_09_30_drive_0033_sync 842 r
+2011_09_30/2011_09_30_drive_0028_sync 4414 r
+2011_10_03/2011_10_03_drive_0034_sync 594 r
+2011_09_26/2011_09_26_drive_0022_sync 342 l
+2011_09_30/2011_09_30_drive_0020_sync 471 r
+2011_09_26/2011_09_26_drive_0104_sync 32 r
+2011_09_30/2011_09_30_drive_0033_sync 1175 l
+2011_09_26/2011_09_26_drive_0011_sync 143 r
+2011_10_03/2011_10_03_drive_0034_sync 1234 l
+2011_09_30/2011_09_30_drive_0034_sync 1015 r
+2011_09_30/2011_09_30_drive_0028_sync 2742 r
+2011_10_03/2011_10_03_drive_0034_sync 2246 l
+2011_09_30/2011_09_30_drive_0020_sync 977 r
+2011_09_26/2011_09_26_drive_0104_sync 20 l
+2011_10_03/2011_10_03_drive_0042_sync 275 l
+2011_09_26/2011_09_26_drive_0015_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 4451 r
+2011_09_30/2011_09_30_drive_0034_sync 888 l
+2011_09_30/2011_09_30_drive_0020_sync 1087 l
+2011_09_30/2011_09_30_drive_0028_sync 2060 l
+2011_09_26/2011_09_26_drive_0087_sync 472 l
+2011_10_03/2011_10_03_drive_0034_sync 4044 l
+2011_09_30/2011_09_30_drive_0028_sync 5054 r
+2011_10_03/2011_10_03_drive_0034_sync 306 l
+2011_10_03/2011_10_03_drive_0034_sync 3974 r
+2011_09_30/2011_09_30_drive_0028_sync 5140 l
+2011_09_26/2011_09_26_drive_0039_sync 107 r
+2011_10_03/2011_10_03_drive_0042_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 3325 r
+2011_09_26/2011_09_26_drive_0018_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 3626 l
+2011_10_03/2011_10_03_drive_0042_sync 621 l
+2011_09_29/2011_09_29_drive_0004_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 4568 l
+2011_09_30/2011_09_30_drive_0020_sync 272 r
+2011_09_30/2011_09_30_drive_0028_sync 5065 r
+2011_09_26/2011_09_26_drive_0015_sync 79 r
+2011_09_26/2011_09_26_drive_0091_sync 320 l
+2011_09_26/2011_09_26_drive_0057_sync 229 l
+2011_10_03/2011_10_03_drive_0034_sync 3568 l
+2011_09_30/2011_09_30_drive_0028_sync 4592 r
+2011_09_30/2011_09_30_drive_0028_sync 1183 l
+2011_09_26/2011_09_26_drive_0051_sync 113 l
+2011_09_26/2011_09_26_drive_0091_sync 255 l
+2011_09_26/2011_09_26_drive_0015_sync 293 l
+2011_09_26/2011_09_26_drive_0015_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 4388 r
+2011_10_03/2011_10_03_drive_0034_sync 1534 l
+2011_09_30/2011_09_30_drive_0033_sync 882 r
+2011_09_30/2011_09_30_drive_0028_sync 3417 l
+2011_09_30/2011_09_30_drive_0028_sync 4894 r
+2011_09_30/2011_09_30_drive_0028_sync 5037 l
+2011_09_26/2011_09_26_drive_0022_sync 183 r
+2011_09_30/2011_09_30_drive_0020_sync 796 r
+2011_09_30/2011_09_30_drive_0033_sync 196 l
+2011_09_30/2011_09_30_drive_0020_sync 826 l
+2011_09_26/2011_09_26_drive_0057_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 267 r
+2011_09_30/2011_09_30_drive_0028_sync 2180 r
+2011_09_30/2011_09_30_drive_0028_sync 2780 r
+2011_09_30/2011_09_30_drive_0034_sync 1102 l
+2011_09_30/2011_09_30_drive_0033_sync 492 l
+2011_09_29/2011_09_29_drive_0004_sync 222 r
+2011_09_26/2011_09_26_drive_0070_sync 204 r
+2011_09_26/2011_09_26_drive_0035_sync 63 r
+2011_09_26/2011_09_26_drive_0060_sync 62 r
+2011_09_26/2011_09_26_drive_0019_sync 202 l
+2011_09_30/2011_09_30_drive_0033_sync 559 r
+2011_10_03/2011_10_03_drive_0034_sync 2478 l
+2011_09_30/2011_09_30_drive_0028_sync 302 l
+2011_10_03/2011_10_03_drive_0034_sync 3287 l
+2011_09_30/2011_09_30_drive_0028_sync 1276 l
+2011_10_03/2011_10_03_drive_0034_sync 2525 r
+2011_09_30/2011_09_30_drive_0028_sync 349 r
+2011_09_26/2011_09_26_drive_0061_sync 208 l
+2011_09_30/2011_09_30_drive_0033_sync 947 l
+2011_09_30/2011_09_30_drive_0028_sync 4860 r
+2011_09_30/2011_09_30_drive_0028_sync 1847 r
+2011_09_30/2011_09_30_drive_0028_sync 4675 r
+2011_09_30/2011_09_30_drive_0020_sync 545 r
+2011_09_26/2011_09_26_drive_0070_sync 227 l
+2011_10_03/2011_10_03_drive_0034_sync 763 r
+2011_09_30/2011_09_30_drive_0028_sync 3742 r
+2011_09_26/2011_09_26_drive_0061_sync 639 r
+2011_10_03/2011_10_03_drive_0034_sync 2359 r
+2011_09_26/2011_09_26_drive_0022_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 2777 l
+2011_10_03/2011_10_03_drive_0034_sync 1748 l
+2011_09_30/2011_09_30_drive_0028_sync 3864 l
+2011_10_03/2011_10_03_drive_0034_sync 2839 l
+2011_10_03/2011_10_03_drive_0034_sync 2204 l
+2011_09_26/2011_09_26_drive_0061_sync 74 r
+2011_09_26/2011_09_26_drive_0079_sync 90 r
+2011_09_30/2011_09_30_drive_0020_sync 284 r
+2011_09_26/2011_09_26_drive_0051_sync 351 r
+2011_09_26/2011_09_26_drive_0032_sync 302 r
+2011_09_30/2011_09_30_drive_0020_sync 1068 r
+2011_09_26/2011_09_26_drive_0087_sync 665 l
+2011_10_03/2011_10_03_drive_0034_sync 2258 r
+2011_09_26/2011_09_26_drive_0091_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 1163 r
+2011_09_30/2011_09_30_drive_0028_sync 4340 r
+2011_09_26/2011_09_26_drive_0039_sync 367 l
+2011_09_30/2011_09_30_drive_0033_sync 1070 l
+2011_09_26/2011_09_26_drive_0022_sync 176 l
+2011_09_30/2011_09_30_drive_0020_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 501 r
+2011_09_26/2011_09_26_drive_0061_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 4383 l
+2011_09_30/2011_09_30_drive_0028_sync 4735 r
+2011_09_30/2011_09_30_drive_0033_sync 1321 l
+2011_09_30/2011_09_30_drive_0033_sync 367 r
+2011_09_28/2011_09_28_drive_0001_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 3109 l
+2011_09_30/2011_09_30_drive_0028_sync 2108 l
+2011_10_03/2011_10_03_drive_0034_sync 677 l
+2011_09_26/2011_09_26_drive_0091_sync 284 l
+2011_09_30/2011_09_30_drive_0028_sync 336 r
+2011_09_30/2011_09_30_drive_0028_sync 360 r
+2011_10_03/2011_10_03_drive_0042_sync 740 r
+2011_10_03/2011_10_03_drive_0034_sync 1662 r
+2011_09_26/2011_09_26_drive_0039_sync 343 l
+2011_10_03/2011_10_03_drive_0042_sync 395 r
+2011_09_30/2011_09_30_drive_0028_sync 129 l
+2011_09_26/2011_09_26_drive_0022_sync 1 l
+2011_09_26/2011_09_26_drive_0014_sync 310 r
+2011_10_03/2011_10_03_drive_0034_sync 470 r
+2011_10_03/2011_10_03_drive_0034_sync 2438 r
+2011_09_29/2011_09_29_drive_0004_sync 316 l
+2011_09_26/2011_09_26_drive_0032_sync 19 l
+2011_10_03/2011_10_03_drive_0042_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 3182 r
+2011_09_26/2011_09_26_drive_0028_sync 170 l
+2011_09_30/2011_09_30_drive_0020_sync 210 r
+2011_09_30/2011_09_30_drive_0034_sync 159 r
+2011_09_29/2011_09_29_drive_0004_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 4238 r
+2011_09_30/2011_09_30_drive_0034_sync 463 l
+2011_10_03/2011_10_03_drive_0034_sync 3931 l
+2011_09_26/2011_09_26_drive_0017_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 4296 r
+2011_09_30/2011_09_30_drive_0033_sync 340 l
+2011_09_30/2011_09_30_drive_0028_sync 1699 r
+2011_09_26/2011_09_26_drive_0022_sync 132 r
+2011_09_30/2011_09_30_drive_0028_sync 2183 r
+2011_10_03/2011_10_03_drive_0034_sync 1264 l
+2011_09_26/2011_09_26_drive_0022_sync 282 r
+2011_09_26/2011_09_26_drive_0035_sync 5 r
+2011_09_30/2011_09_30_drive_0020_sync 178 r
+2011_09_30/2011_09_30_drive_0034_sync 89 l
+2011_09_26/2011_09_26_drive_0060_sync 52 r
+2011_09_30/2011_09_30_drive_0028_sync 1818 l
+2011_09_30/2011_09_30_drive_0028_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 614 r
+2011_09_26/2011_09_26_drive_0005_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 271 l
+2011_09_26/2011_09_26_drive_0091_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 3157 l
+2011_10_03/2011_10_03_drive_0034_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 143 l
+2011_09_30/2011_09_30_drive_0034_sync 1096 l
+2011_09_30/2011_09_30_drive_0020_sync 963 r
+2011_09_30/2011_09_30_drive_0028_sync 1812 r
+2011_09_26/2011_09_26_drive_0087_sync 324 l
+2011_10_03/2011_10_03_drive_0034_sync 3736 r
+2011_09_30/2011_09_30_drive_0028_sync 4521 r
+2011_09_30/2011_09_30_drive_0033_sync 665 r
+2011_09_26/2011_09_26_drive_0051_sync 146 l
+2011_09_26/2011_09_26_drive_0095_sync 245 l
+2011_09_30/2011_09_30_drive_0034_sync 619 l
+2011_09_30/2011_09_30_drive_0028_sync 2743 l
+2011_09_26/2011_09_26_drive_0022_sync 406 r
+2011_09_26/2011_09_26_drive_0095_sync 32 l
+2011_09_26/2011_09_26_drive_0061_sync 383 r
+2011_09_29/2011_09_29_drive_0004_sync 205 l
+2011_09_26/2011_09_26_drive_0061_sync 416 r
+2011_09_26/2011_09_26_drive_0022_sync 547 l
+2011_09_30/2011_09_30_drive_0034_sync 1164 l
+2011_09_26/2011_09_26_drive_0019_sync 386 l
+2011_09_26/2011_09_26_drive_0028_sync 398 l
+2011_10_03/2011_10_03_drive_0042_sync 473 r
+2011_09_30/2011_09_30_drive_0028_sync 4643 l
+2011_09_30/2011_09_30_drive_0033_sync 447 r
+2011_09_26/2011_09_26_drive_0070_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 4263 r
+2011_09_26/2011_09_26_drive_0028_sync 115 r
+2011_09_30/2011_09_30_drive_0033_sync 821 r
+2011_10_03/2011_10_03_drive_0034_sync 559 r
+2011_10_03/2011_10_03_drive_0034_sync 1248 l
+2011_09_26/2011_09_26_drive_0039_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 2435 l
+2011_09_26/2011_09_26_drive_0022_sync 553 l
+2011_10_03/2011_10_03_drive_0034_sync 3968 l
+2011_09_26/2011_09_26_drive_0022_sync 293 l
+2011_09_26/2011_09_26_drive_0113_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 1423 l
+2011_09_26/2011_09_26_drive_0039_sync 315 r
+2011_10_03/2011_10_03_drive_0034_sync 3310 r
+2011_09_30/2011_09_30_drive_0028_sync 2322 l
+2011_09_30/2011_09_30_drive_0028_sync 81 r
+2011_09_30/2011_09_30_drive_0034_sync 577 r
+2011_09_30/2011_09_30_drive_0028_sync 1320 r
+2011_09_30/2011_09_30_drive_0033_sync 734 r
+2011_09_30/2011_09_30_drive_0033_sync 546 l
+2011_09_30/2011_09_30_drive_0028_sync 4771 l
+2011_10_03/2011_10_03_drive_0034_sync 1463 r
+2011_09_26/2011_09_26_drive_0022_sync 762 r
+2011_10_03/2011_10_03_drive_0034_sync 2169 r
+2011_09_30/2011_09_30_drive_0034_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 1897 l
+2011_10_03/2011_10_03_drive_0034_sync 1599 l
+2011_10_03/2011_10_03_drive_0034_sync 4609 r
+2011_09_26/2011_09_26_drive_0032_sync 259 l
+2011_09_30/2011_09_30_drive_0028_sync 554 l
+2011_10_03/2011_10_03_drive_0034_sync 3112 r
+2011_09_26/2011_09_26_drive_0087_sync 229 r
+2011_09_26/2011_09_26_drive_0032_sync 120 r
+2011_09_26/2011_09_26_drive_0104_sync 18 l
+2011_10_03/2011_10_03_drive_0042_sync 895 l
+2011_09_30/2011_09_30_drive_0028_sync 4783 r
+2011_09_29/2011_09_29_drive_0026_sync 4 l
+2011_09_26/2011_09_26_drive_0032_sync 94 r
+2011_09_26/2011_09_26_drive_0087_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 659 r
+2011_10_03/2011_10_03_drive_0034_sync 1677 r
+2011_09_29/2011_09_29_drive_0004_sync 107 l
+2011_09_26/2011_09_26_drive_0015_sync 93 l
+2011_09_29/2011_09_29_drive_0004_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 5091 r
+2011_10_03/2011_10_03_drive_0034_sync 1222 r
+2011_10_03/2011_10_03_drive_0034_sync 3400 l
+2011_09_26/2011_09_26_drive_0014_sync 66 r
+2011_09_30/2011_09_30_drive_0034_sync 370 l
+2011_09_26/2011_09_26_drive_0051_sync 269 l
+2011_09_30/2011_09_30_drive_0033_sync 1511 l
+2011_09_26/2011_09_26_drive_0095_sync 17 r
+2011_09_30/2011_09_30_drive_0033_sync 894 l
+2011_09_26/2011_09_26_drive_0061_sync 616 r
+2011_09_26/2011_09_26_drive_0113_sync 29 l
+2011_09_30/2011_09_30_drive_0034_sync 267 r
+2011_09_26/2011_09_26_drive_0018_sync 266 l
+2011_09_26/2011_09_26_drive_0087_sync 281 l
+2011_09_30/2011_09_30_drive_0020_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 2691 r
+2011_09_30/2011_09_30_drive_0028_sync 3739 r
+2011_09_26/2011_09_26_drive_0017_sync 100 l
+2011_09_26/2011_09_26_drive_0095_sync 217 l
+2011_09_26/2011_09_26_drive_0011_sync 97 l
+2011_09_26/2011_09_26_drive_0087_sync 521 r
+2011_09_30/2011_09_30_drive_0034_sync 819 l
+2011_09_30/2011_09_30_drive_0028_sync 1311 l
+2011_09_30/2011_09_30_drive_0028_sync 579 l
+2011_09_29/2011_09_29_drive_0026_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 2277 r
+2011_09_26/2011_09_26_drive_0061_sync 339 r
+2011_09_30/2011_09_30_drive_0028_sync 5070 r
+2011_09_26/2011_09_26_drive_0019_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 344 r
+2011_09_30/2011_09_30_drive_0028_sync 948 r
+2011_10_03/2011_10_03_drive_0034_sync 4460 r
+2011_10_03/2011_10_03_drive_0042_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 2298 l
+2011_09_26/2011_09_26_drive_0057_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 1066 r
+2011_09_26/2011_09_26_drive_0011_sync 196 r
+2011_09_26/2011_09_26_drive_0032_sync 157 r
+2011_09_30/2011_09_30_drive_0028_sync 452 l
+2011_09_26/2011_09_26_drive_0019_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 4621 l
+2011_09_26/2011_09_26_drive_0061_sync 311 r
+2011_09_30/2011_09_30_drive_0028_sync 2727 l
+2011_09_26/2011_09_26_drive_0022_sync 165 r
+2011_09_26/2011_09_26_drive_0061_sync 234 r
+2011_10_03/2011_10_03_drive_0042_sync 579 r
+2011_09_26/2011_09_26_drive_0022_sync 757 r
+2011_09_26/2011_09_26_drive_0017_sync 60 r
+2011_09_29/2011_09_29_drive_0026_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 3210 r
+2011_09_30/2011_09_30_drive_0034_sync 890 r
+2011_10_03/2011_10_03_drive_0042_sync 32 r
+2011_09_30/2011_09_30_drive_0020_sync 1070 l
+2011_09_30/2011_09_30_drive_0034_sync 784 l
+2011_10_03/2011_10_03_drive_0034_sync 268 r
+2011_09_30/2011_09_30_drive_0020_sync 687 l
+2011_09_29/2011_09_29_drive_0004_sync 215 l
+2011_09_29/2011_09_29_drive_0004_sync 281 l
+2011_09_26/2011_09_26_drive_0061_sync 484 l
+2011_09_26/2011_09_26_drive_0051_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 1725 l
+2011_09_26/2011_09_26_drive_0057_sync 205 l
+2011_09_26/2011_09_26_drive_0022_sync 582 l
+2011_09_26/2011_09_26_drive_0001_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 757 r
+2011_09_30/2011_09_30_drive_0028_sync 4663 l
+2011_10_03/2011_10_03_drive_0034_sync 1096 l
+2011_09_30/2011_09_30_drive_0028_sync 2349 r
+2011_09_26/2011_09_26_drive_0028_sync 252 l
+2011_09_30/2011_09_30_drive_0033_sync 663 l
+2011_09_26/2011_09_26_drive_0087_sync 634 l
+2011_09_28/2011_09_28_drive_0001_sync 15 r
+2011_09_26/2011_09_26_drive_0051_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 1563 l
+2011_09_26/2011_09_26_drive_0019_sync 98 l
+2011_09_30/2011_09_30_drive_0034_sync 1191 l
+2011_09_30/2011_09_30_drive_0028_sync 4107 l
+2011_10_03/2011_10_03_drive_0034_sync 2027 r
+2011_09_26/2011_09_26_drive_0061_sync 591 r
+2011_09_30/2011_09_30_drive_0020_sync 857 r
+2011_09_26/2011_09_26_drive_0028_sync 15 r
+2011_09_26/2011_09_26_drive_0087_sync 551 l
+2011_10_03/2011_10_03_drive_0042_sync 852 l
+2011_10_03/2011_10_03_drive_0034_sync 2178 r
+2011_09_30/2011_09_30_drive_0028_sync 113 l
+2011_09_26/2011_09_26_drive_0022_sync 545 r
+2011_09_30/2011_09_30_drive_0028_sync 4591 l
+2011_10_03/2011_10_03_drive_0034_sync 1630 r
+2011_10_03/2011_10_03_drive_0034_sync 805 r
+2011_09_26/2011_09_26_drive_0051_sync 102 r
+2011_09_30/2011_09_30_drive_0034_sync 516 l
+2011_09_30/2011_09_30_drive_0028_sync 3852 r
+2011_09_30/2011_09_30_drive_0028_sync 4898 r
+2011_09_30/2011_09_30_drive_0028_sync 3593 r
+2011_09_30/2011_09_30_drive_0028_sync 2503 r
+2011_09_26/2011_09_26_drive_0022_sync 100 r
+2011_09_26/2011_09_26_drive_0070_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 2162 r
+2011_10_03/2011_10_03_drive_0034_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 1205 r
+2011_09_26/2011_09_26_drive_0061_sync 540 r
+2011_09_29/2011_09_29_drive_0004_sync 307 r
+2011_09_26/2011_09_26_drive_0057_sync 245 l
+2011_09_26/2011_09_26_drive_0070_sync 362 r
+2011_09_26/2011_09_26_drive_0017_sync 75 r
+2011_09_26/2011_09_26_drive_0091_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 3881 l
+2011_09_30/2011_09_30_drive_0033_sync 779 l
+2011_09_26/2011_09_26_drive_0070_sync 58 r
+2011_09_26/2011_09_26_drive_0032_sync 282 r
+2011_09_26/2011_09_26_drive_0091_sync 248 l
+2011_09_26/2011_09_26_drive_0061_sync 428 r
+2011_09_26/2011_09_26_drive_0104_sync 167 r
+2011_09_26/2011_09_26_drive_0022_sync 393 l
+2011_09_26/2011_09_26_drive_0019_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 742 l
+2011_09_26/2011_09_26_drive_0011_sync 49 l
+2011_09_30/2011_09_30_drive_0034_sync 830 r
+2011_09_30/2011_09_30_drive_0033_sync 250 l
+2011_09_26/2011_09_26_drive_0005_sync 129 r
+2011_09_26/2011_09_26_drive_0022_sync 495 r
+2011_10_03/2011_10_03_drive_0034_sync 3585 r
+2011_09_26/2011_09_26_drive_0011_sync 168 l
+2011_09_26/2011_09_26_drive_0057_sync 79 r
+2011_09_26/2011_09_26_drive_0079_sync 20 l
+2011_09_30/2011_09_30_drive_0034_sync 922 r
+2011_10_03/2011_10_03_drive_0034_sync 2330 r
+2011_09_26/2011_09_26_drive_0005_sync 68 r
+2011_09_26/2011_09_26_drive_0039_sync 240 r
+2011_09_30/2011_09_30_drive_0020_sync 958 l
+2011_09_30/2011_09_30_drive_0033_sync 1044 l
+2011_09_30/2011_09_30_drive_0020_sync 552 r
+2011_09_29/2011_09_29_drive_0004_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 1350 r
+2011_10_03/2011_10_03_drive_0034_sync 1618 r
+2011_10_03/2011_10_03_drive_0042_sync 356 l
+2011_09_26/2011_09_26_drive_0061_sync 650 l
+2011_10_03/2011_10_03_drive_0034_sync 2060 l
+2011_09_30/2011_09_30_drive_0028_sync 20 r
+2011_09_30/2011_09_30_drive_0033_sync 517 l
+2011_09_30/2011_09_30_drive_0028_sync 2995 l
+2011_10_03/2011_10_03_drive_0034_sync 2837 r
+2011_09_26/2011_09_26_drive_0104_sync 256 r
+2011_09_30/2011_09_30_drive_0020_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 779 r
+2011_10_03/2011_10_03_drive_0034_sync 3153 r
+2011_09_30/2011_09_30_drive_0028_sync 5027 r
+2011_09_30/2011_09_30_drive_0034_sync 894 r
+2011_09_26/2011_09_26_drive_0028_sync 420 r
+2011_09_30/2011_09_30_drive_0028_sync 29 r
+2011_09_26/2011_09_26_drive_0087_sync 137 l
+2011_09_26/2011_09_26_drive_0017_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 2753 r
+2011_10_03/2011_10_03_drive_0034_sync 3038 l
+2011_09_30/2011_09_30_drive_0028_sync 4137 r
+2011_09_30/2011_09_30_drive_0028_sync 4346 l
+2011_10_03/2011_10_03_drive_0034_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 1660 l
+2011_09_26/2011_09_26_drive_0028_sync 420 l
+2011_09_26/2011_09_26_drive_0061_sync 162 l
+2011_09_30/2011_09_30_drive_0033_sync 238 l
+2011_10_03/2011_10_03_drive_0042_sync 741 l
+2011_09_26/2011_09_26_drive_0019_sync 35 l
+2011_09_30/2011_09_30_drive_0033_sync 117 r
+2011_09_30/2011_09_30_drive_0034_sync 754 r
+2011_10_03/2011_10_03_drive_0034_sync 3041 l
+2011_09_30/2011_09_30_drive_0033_sync 1499 r
+2011_10_03/2011_10_03_drive_0034_sync 2406 r
+2011_09_30/2011_09_30_drive_0028_sync 313 l
+2011_09_26/2011_09_26_drive_0070_sync 191 l
+2011_09_30/2011_09_30_drive_0028_sync 3303 r
+2011_09_30/2011_09_30_drive_0033_sync 1440 r
+2011_09_26/2011_09_26_drive_0028_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 611 r
+2011_09_30/2011_09_30_drive_0028_sync 4235 l
+2011_09_30/2011_09_30_drive_0028_sync 4328 r
+2011_09_30/2011_09_30_drive_0020_sync 332 r
+2011_09_26/2011_09_26_drive_0028_sync 89 l
+2011_09_26/2011_09_26_drive_0087_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 1107 l
+2011_09_30/2011_09_30_drive_0028_sync 1840 l
+2011_09_26/2011_09_26_drive_0104_sync 118 l
+2011_09_26/2011_09_26_drive_0018_sync 12 r
+2011_09_30/2011_09_30_drive_0028_sync 2533 r
+2011_10_03/2011_10_03_drive_0034_sync 3579 r
+2011_09_30/2011_09_30_drive_0028_sync 707 r
+2011_09_26/2011_09_26_drive_0022_sync 147 l
+2011_09_30/2011_09_30_drive_0028_sync 3096 l
+2011_10_03/2011_10_03_drive_0034_sync 3907 l
+2011_09_26/2011_09_26_drive_0070_sync 9 l
+2011_09_30/2011_09_30_drive_0034_sync 230 l
+2011_09_30/2011_09_30_drive_0033_sync 1130 l
+2011_09_29/2011_09_29_drive_0026_sync 20 l
+2011_09_26/2011_09_26_drive_0091_sync 278 r
+2011_09_30/2011_09_30_drive_0033_sync 893 l
+2011_09_30/2011_09_30_drive_0034_sync 713 r
+2011_10_03/2011_10_03_drive_0042_sync 756 r
+2011_10_03/2011_10_03_drive_0042_sync 226 l
+2011_09_26/2011_09_26_drive_0015_sync 222 r
+2011_09_26/2011_09_26_drive_0028_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 1578 r
+2011_09_26/2011_09_26_drive_0019_sync 201 l
+2011_09_30/2011_09_30_drive_0020_sync 936 l
+2011_09_30/2011_09_30_drive_0028_sync 764 r
+2011_09_30/2011_09_30_drive_0034_sync 641 r
+2011_09_26/2011_09_26_drive_0051_sync 1 r
+2011_09_26/2011_09_26_drive_0015_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 601 l
+2011_09_30/2011_09_30_drive_0028_sync 4224 r
+2011_10_03/2011_10_03_drive_0034_sync 3779 l
+2011_09_30/2011_09_30_drive_0028_sync 1947 r
+2011_09_30/2011_09_30_drive_0034_sync 648 r
+2011_10_03/2011_10_03_drive_0034_sync 3132 r
+2011_10_03/2011_10_03_drive_0034_sync 4271 l
+2011_09_30/2011_09_30_drive_0028_sync 4378 l
+2011_09_30/2011_09_30_drive_0034_sync 689 r
+2011_09_26/2011_09_26_drive_0011_sync 191 l
+2011_10_03/2011_10_03_drive_0034_sync 204 l
+2011_10_03/2011_10_03_drive_0034_sync 3906 l
+2011_09_26/2011_09_26_drive_0039_sync 324 r
+2011_10_03/2011_10_03_drive_0042_sync 19 l
+2011_09_26/2011_09_26_drive_0032_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 98 r
+2011_09_26/2011_09_26_drive_0061_sync 593 r
+2011_10_03/2011_10_03_drive_0034_sync 2258 l
+2011_09_30/2011_09_30_drive_0028_sync 2528 l
+2011_09_26/2011_09_26_drive_0032_sync 342 l
+2011_09_30/2011_09_30_drive_0028_sync 4493 r
+2011_09_30/2011_09_30_drive_0034_sync 610 r
+2011_09_30/2011_09_30_drive_0028_sync 2410 l
+2011_09_26/2011_09_26_drive_0091_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 2055 l
+2011_09_26/2011_09_26_drive_0011_sync 131 l
+2011_09_26/2011_09_26_drive_0028_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 2027 l
+2011_10_03/2011_10_03_drive_0042_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 802 r
+2011_10_03/2011_10_03_drive_0042_sync 1063 r
+2011_09_29/2011_09_29_drive_0004_sync 280 l
+2011_10_03/2011_10_03_drive_0034_sync 4461 l
+2011_09_30/2011_09_30_drive_0028_sync 2236 l
+2011_10_03/2011_10_03_drive_0042_sync 268 l
+2011_09_26/2011_09_26_drive_0087_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 2978 r
+2011_09_26/2011_09_26_drive_0060_sync 28 r
+2011_09_26/2011_09_26_drive_0087_sync 440 r
+2011_09_26/2011_09_26_drive_0087_sync 432 l
+2011_09_30/2011_09_30_drive_0020_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 4448 l
+2011_10_03/2011_10_03_drive_0034_sync 1907 l
+2011_09_30/2011_09_30_drive_0034_sync 799 l
+2011_09_30/2011_09_30_drive_0034_sync 81 l
+2011_10_03/2011_10_03_drive_0042_sync 703 r
+2011_09_30/2011_09_30_drive_0028_sync 1700 l
+2011_10_03/2011_10_03_drive_0034_sync 1313 l
+2011_09_30/2011_09_30_drive_0028_sync 2535 r
+2011_09_30/2011_09_30_drive_0028_sync 1349 r
+2011_09_30/2011_09_30_drive_0033_sync 296 l
+2011_10_03/2011_10_03_drive_0034_sync 3035 r
+2011_09_26/2011_09_26_drive_0091_sync 60 l
+2011_09_30/2011_09_30_drive_0033_sync 1592 l
+2011_09_26/2011_09_26_drive_0028_sync 375 r
+2011_09_26/2011_09_26_drive_0014_sync 193 l
+2011_09_26/2011_09_26_drive_0087_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 54 r
+2011_09_26/2011_09_26_drive_0019_sync 310 l
+2011_09_30/2011_09_30_drive_0028_sync 2679 r
+2011_09_30/2011_09_30_drive_0033_sync 1264 l
+2011_09_26/2011_09_26_drive_0061_sync 539 r
+2011_09_30/2011_09_30_drive_0028_sync 4126 l
+2011_09_30/2011_09_30_drive_0033_sync 1062 l
+2011_10_03/2011_10_03_drive_0034_sync 236 r
+2011_10_03/2011_10_03_drive_0034_sync 3557 l
+2011_09_26/2011_09_26_drive_0087_sync 277 r
+2011_09_26/2011_09_26_drive_0019_sync 382 r
+2011_09_30/2011_09_30_drive_0028_sync 553 l
+2011_10_03/2011_10_03_drive_0034_sync 1554 l
+2011_09_30/2011_09_30_drive_0028_sync 4652 l
+2011_09_26/2011_09_26_drive_0028_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 740 r
+2011_09_30/2011_09_30_drive_0033_sync 327 r
+2011_09_30/2011_09_30_drive_0028_sync 2506 l
+2011_09_26/2011_09_26_drive_0104_sync 207 r
+2011_09_26/2011_09_26_drive_0087_sync 374 l
+2011_09_30/2011_09_30_drive_0028_sync 4154 r
+2011_10_03/2011_10_03_drive_0042_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 3821 l
+2011_09_30/2011_09_30_drive_0028_sync 3657 r
+2011_09_30/2011_09_30_drive_0028_sync 3444 l
+2011_09_26/2011_09_26_drive_0035_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 4105 r
+2011_10_03/2011_10_03_drive_0034_sync 1567 l
+2011_09_30/2011_09_30_drive_0028_sync 1375 l
+2011_10_03/2011_10_03_drive_0034_sync 502 r
+2011_09_26/2011_09_26_drive_0087_sync 396 r
+2011_09_30/2011_09_30_drive_0020_sync 286 l
+2011_10_03/2011_10_03_drive_0042_sync 117 l
+2011_09_30/2011_09_30_drive_0028_sync 4852 l
+2011_09_30/2011_09_30_drive_0028_sync 1029 r
+2011_09_26/2011_09_26_drive_0015_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 940 r
+2011_09_26/2011_09_26_drive_0018_sync 7 r
+2011_09_30/2011_09_30_drive_0034_sync 252 l
+2011_10_03/2011_10_03_drive_0034_sync 2238 l
+2011_10_03/2011_10_03_drive_0034_sync 3918 l
+2011_09_26/2011_09_26_drive_0060_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 1374 r
+2011_09_26/2011_09_26_drive_0005_sync 135 l
+2011_09_26/2011_09_26_drive_0061_sync 554 l
+2011_09_30/2011_09_30_drive_0033_sync 310 l
+2011_09_30/2011_09_30_drive_0033_sync 753 r
+2011_09_26/2011_09_26_drive_0017_sync 103 l
+2011_09_26/2011_09_26_drive_0022_sync 38 l
+2011_09_26/2011_09_26_drive_0028_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 4773 l
+2011_10_03/2011_10_03_drive_0034_sync 2065 l
+2011_09_30/2011_09_30_drive_0028_sync 5061 l
+2011_10_03/2011_10_03_drive_0034_sync 2936 l
+2011_10_03/2011_10_03_drive_0034_sync 3638 l
+2011_09_30/2011_09_30_drive_0028_sync 3176 r
+2011_09_30/2011_09_30_drive_0028_sync 4873 l
+2011_09_26/2011_09_26_drive_0028_sync 402 r
+2011_09_30/2011_09_30_drive_0028_sync 633 r
+2011_09_30/2011_09_30_drive_0033_sync 858 r
+2011_09_29/2011_09_29_drive_0004_sync 78 r
+2011_09_26/2011_09_26_drive_0113_sync 67 l
+2011_09_26/2011_09_26_drive_0014_sync 304 r
+2011_09_26/2011_09_26_drive_0022_sync 792 l
+2011_09_30/2011_09_30_drive_0028_sync 537 r
+2011_10_03/2011_10_03_drive_0034_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 2529 r
+2011_10_03/2011_10_03_drive_0034_sync 3297 r
+2011_10_03/2011_10_03_drive_0042_sync 1076 l
+2011_09_26/2011_09_26_drive_0057_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 3236 l
+2011_09_30/2011_09_30_drive_0028_sync 1813 r
+2011_10_03/2011_10_03_drive_0034_sync 631 r
+2011_10_03/2011_10_03_drive_0042_sync 380 l
+2011_09_30/2011_09_30_drive_0034_sync 918 r
+2011_09_30/2011_09_30_drive_0020_sync 914 l
+2011_10_03/2011_10_03_drive_0034_sync 2015 l
+2011_09_30/2011_09_30_drive_0028_sync 2555 l
+2011_10_03/2011_10_03_drive_0034_sync 755 l
+2011_09_26/2011_09_26_drive_0061_sync 601 r
+2011_09_30/2011_09_30_drive_0028_sync 2079 r
+2011_09_30/2011_09_30_drive_0033_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 18 l
+2011_09_26/2011_09_26_drive_0057_sync 338 r
+2011_09_30/2011_09_30_drive_0034_sync 1050 l
+2011_10_03/2011_10_03_drive_0034_sync 2643 l
+2011_09_26/2011_09_26_drive_0011_sync 119 l
+2011_09_26/2011_09_26_drive_0018_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 1383 l
+2011_10_03/2011_10_03_drive_0034_sync 3945 r
+2011_10_03/2011_10_03_drive_0034_sync 4469 l
+2011_09_26/2011_09_26_drive_0019_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 2181 l
+2011_09_26/2011_09_26_drive_0022_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 4901 r
+2011_10_03/2011_10_03_drive_0042_sync 1160 l
+2011_10_03/2011_10_03_drive_0034_sync 1319 r
+2011_09_30/2011_09_30_drive_0028_sync 2014 r
+2011_09_26/2011_09_26_drive_0022_sync 234 l
+2011_09_29/2011_09_29_drive_0026_sync 139 r
+2011_09_30/2011_09_30_drive_0034_sync 621 l
+2011_09_26/2011_09_26_drive_0015_sync 189 l
+2011_09_26/2011_09_26_drive_0022_sync 33 r
+2011_09_26/2011_09_26_drive_0104_sync 166 r
+2011_09_30/2011_09_30_drive_0034_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 874 r
+2011_10_03/2011_10_03_drive_0034_sync 326 r
+2011_10_03/2011_10_03_drive_0034_sync 1020 r
+2011_09_30/2011_09_30_drive_0028_sync 4071 r
+2011_10_03/2011_10_03_drive_0034_sync 1971 l
+2011_10_03/2011_10_03_drive_0034_sync 1600 r
+2011_10_03/2011_10_03_drive_0034_sync 840 l
+2011_09_30/2011_09_30_drive_0028_sync 3776 l
+2011_09_26/2011_09_26_drive_0070_sync 319 r
+2011_09_26/2011_09_26_drive_0061_sync 248 l
+2011_10_03/2011_10_03_drive_0042_sync 707 r
+2011_09_26/2011_09_26_drive_0061_sync 520 r
+2011_10_03/2011_10_03_drive_0034_sync 3955 l
+2011_09_26/2011_09_26_drive_0015_sync 88 r
+2011_09_26/2011_09_26_drive_0070_sync 221 r
+2011_10_03/2011_10_03_drive_0034_sync 4290 l
+2011_09_26/2011_09_26_drive_0001_sync 101 l
+2011_09_26/2011_09_26_drive_0051_sync 379 l
+2011_10_03/2011_10_03_drive_0034_sync 2425 l
+2011_09_26/2011_09_26_drive_0039_sync 175 r
+2011_10_03/2011_10_03_drive_0042_sync 26 l
+2011_09_30/2011_09_30_drive_0020_sync 990 r
+2011_09_30/2011_09_30_drive_0028_sync 728 l
+2011_09_30/2011_09_30_drive_0028_sync 4852 r
+2011_09_30/2011_09_30_drive_0028_sync 1031 r
+2011_09_30/2011_09_30_drive_0028_sync 776 r
+2011_10_03/2011_10_03_drive_0034_sync 1895 l
+2011_09_30/2011_09_30_drive_0028_sync 4820 l
+2011_09_30/2011_09_30_drive_0033_sync 1430 l
+2011_09_26/2011_09_26_drive_0070_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 2336 l
+2011_10_03/2011_10_03_drive_0034_sync 3438 l
+2011_09_30/2011_09_30_drive_0034_sync 380 l
+2011_10_03/2011_10_03_drive_0042_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 538 r
+2011_09_30/2011_09_30_drive_0028_sync 2353 r
+2011_09_30/2011_09_30_drive_0028_sync 1085 r
+2011_09_30/2011_09_30_drive_0020_sync 83 l
+2011_09_26/2011_09_26_drive_0061_sync 297 l
+2011_10_03/2011_10_03_drive_0034_sync 1885 l
+2011_10_03/2011_10_03_drive_0034_sync 4636 l
+2011_10_03/2011_10_03_drive_0042_sync 587 l
+2011_09_30/2011_09_30_drive_0020_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 285 r
+2011_09_30/2011_09_30_drive_0020_sync 589 r
+2011_09_30/2011_09_30_drive_0028_sync 2683 r
+2011_09_26/2011_09_26_drive_0061_sync 493 l
+2011_10_03/2011_10_03_drive_0042_sync 995 r
+2011_09_30/2011_09_30_drive_0028_sync 4971 l
+2011_10_03/2011_10_03_drive_0034_sync 1827 l
+2011_09_30/2011_09_30_drive_0020_sync 529 r
+2011_09_26/2011_09_26_drive_0091_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 1928 l
+2011_09_29/2011_09_29_drive_0026_sync 55 r
+2011_09_30/2011_09_30_drive_0034_sync 162 l
+2011_09_30/2011_09_30_drive_0034_sync 73 l
+2011_09_26/2011_09_26_drive_0015_sync 288 l
+2011_09_30/2011_09_30_drive_0028_sync 4807 r
+2011_10_03/2011_10_03_drive_0034_sync 3066 l
+2011_09_26/2011_09_26_drive_0022_sync 676 l
+2011_09_30/2011_09_30_drive_0028_sync 4077 l
+2011_09_30/2011_09_30_drive_0034_sync 1203 r
+2011_09_26/2011_09_26_drive_0039_sync 51 r
+2011_09_30/2011_09_30_drive_0028_sync 3154 r
+2011_09_30/2011_09_30_drive_0033_sync 268 l
+2011_09_26/2011_09_26_drive_0022_sync 131 l
+2011_09_26/2011_09_26_drive_0032_sync 297 l
+2011_09_26/2011_09_26_drive_0032_sync 384 r
+2011_09_26/2011_09_26_drive_0015_sync 91 l
+2011_09_26/2011_09_26_drive_0113_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 841 r
+2011_09_26/2011_09_26_drive_0035_sync 74 l
+2011_09_26/2011_09_26_drive_0091_sync 62 r
+2011_09_26/2011_09_26_drive_0019_sync 239 r
+2011_10_03/2011_10_03_drive_0042_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 2467 r
+2011_09_29/2011_09_29_drive_0026_sync 27 l
+2011_09_30/2011_09_30_drive_0033_sync 163 l
+2011_09_30/2011_09_30_drive_0020_sync 349 r
+2011_10_03/2011_10_03_drive_0034_sync 3243 l
+2011_09_26/2011_09_26_drive_0057_sync 290 l
+2011_09_26/2011_09_26_drive_0032_sync 153 r
+2011_09_30/2011_09_30_drive_0033_sync 1412 r
+2011_09_26/2011_09_26_drive_0039_sync 211 l
+2011_09_30/2011_09_30_drive_0033_sync 651 l
+2011_09_26/2011_09_26_drive_0060_sync 51 l
+2011_09_30/2011_09_30_drive_0034_sync 876 l
+2011_09_30/2011_09_30_drive_0028_sync 4895 r
+2011_09_30/2011_09_30_drive_0020_sync 965 r
+2011_09_30/2011_09_30_drive_0033_sync 129 r
+2011_10_03/2011_10_03_drive_0034_sync 1996 r
+2011_09_26/2011_09_26_drive_0057_sync 206 l
+2011_10_03/2011_10_03_drive_0034_sync 968 r
+2011_09_26/2011_09_26_drive_0060_sync 26 r
+2011_09_30/2011_09_30_drive_0034_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 4217 l
+2011_09_26/2011_09_26_drive_0039_sync 16 l
+2011_10_03/2011_10_03_drive_0042_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 704 r
+2011_10_03/2011_10_03_drive_0034_sync 666 l
+2011_09_30/2011_09_30_drive_0020_sync 529 l
+2011_09_30/2011_09_30_drive_0033_sync 816 l
+2011_09_30/2011_09_30_drive_0028_sync 1176 r
+2011_09_30/2011_09_30_drive_0028_sync 2976 r
+2011_09_26/2011_09_26_drive_0032_sync 221 l
+2011_09_26/2011_09_26_drive_0091_sync 2 l
+2011_09_30/2011_09_30_drive_0020_sync 718 l
+2011_09_26/2011_09_26_drive_0087_sync 243 l
+2011_09_30/2011_09_30_drive_0028_sync 135 r
+2011_09_26/2011_09_26_drive_0039_sync 318 l
+2011_09_30/2011_09_30_drive_0034_sync 94 l
+2011_09_26/2011_09_26_drive_0032_sync 302 l
+2011_09_26/2011_09_26_drive_0001_sync 43 l
+2011_09_26/2011_09_26_drive_0022_sync 231 l
+2011_10_03/2011_10_03_drive_0034_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 1309 l
+2011_09_30/2011_09_30_drive_0028_sync 2404 l
+2011_09_26/2011_09_26_drive_0018_sync 186 r
+2011_09_26/2011_09_26_drive_0032_sync 294 l
+2011_09_26/2011_09_26_drive_0039_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 94 r
+2011_09_30/2011_09_30_drive_0020_sync 672 r
+2011_10_03/2011_10_03_drive_0034_sync 3198 r
+2011_09_30/2011_09_30_drive_0028_sync 3713 l
+2011_09_30/2011_09_30_drive_0028_sync 874 r
+2011_10_03/2011_10_03_drive_0034_sync 2980 l
+2011_09_30/2011_09_30_drive_0033_sync 173 r
+2011_09_26/2011_09_26_drive_0061_sync 201 l
+2011_09_30/2011_09_30_drive_0028_sync 1134 r
+2011_09_26/2011_09_26_drive_0015_sync 16 r
+2011_09_26/2011_09_26_drive_0039_sync 174 l
+2011_09_30/2011_09_30_drive_0034_sync 1223 r
+2011_09_26/2011_09_26_drive_0091_sync 69 l
+2011_09_26/2011_09_26_drive_0022_sync 709 r
+2011_09_26/2011_09_26_drive_0019_sync 393 r
+2011_09_26/2011_09_26_drive_0057_sync 247 l
+2011_10_03/2011_10_03_drive_0034_sync 585 l
+2011_09_26/2011_09_26_drive_0061_sync 555 l
+2011_09_26/2011_09_26_drive_0061_sync 317 r
+2011_10_03/2011_10_03_drive_0034_sync 668 l
+2011_09_26/2011_09_26_drive_0061_sync 61 r
+2011_09_26/2011_09_26_drive_0014_sync 290 r
+2011_09_30/2011_09_30_drive_0028_sync 3686 r
+2011_09_30/2011_09_30_drive_0028_sync 1647 l
+2011_09_30/2011_09_30_drive_0033_sync 528 l
+2011_09_29/2011_09_29_drive_0004_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 3912 l
+2011_09_26/2011_09_26_drive_0051_sync 260 r
+2011_09_26/2011_09_26_drive_0057_sync 265 l
+2011_10_03/2011_10_03_drive_0034_sync 3899 l
+2011_09_30/2011_09_30_drive_0028_sync 3019 r
+2011_09_26/2011_09_26_drive_0014_sync 298 l
+2011_09_30/2011_09_30_drive_0034_sync 44 l
+2011_09_26/2011_09_26_drive_0104_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 3745 r
+2011_09_30/2011_09_30_drive_0028_sync 507 r
+2011_09_30/2011_09_30_drive_0020_sync 404 r
+2011_09_26/2011_09_26_drive_0087_sync 272 l
+2011_09_30/2011_09_30_drive_0028_sync 1952 l
+2011_09_30/2011_09_30_drive_0020_sync 371 l
+2011_10_03/2011_10_03_drive_0034_sync 391 r
+2011_09_26/2011_09_26_drive_0011_sync 60 r
+2011_09_30/2011_09_30_drive_0034_sync 1072 r
+2011_09_30/2011_09_30_drive_0020_sync 694 l
+2011_09_26/2011_09_26_drive_0039_sync 251 l
+2011_10_03/2011_10_03_drive_0042_sync 486 l
+2011_10_03/2011_10_03_drive_0034_sync 1813 l
+2011_09_30/2011_09_30_drive_0028_sync 2724 r
+2011_09_26/2011_09_26_drive_0032_sync 274 l
+2011_09_26/2011_09_26_drive_0039_sync 46 l
+2011_09_26/2011_09_26_drive_0011_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 208 l
+2011_10_03/2011_10_03_drive_0034_sync 1056 l
+2011_09_26/2011_09_26_drive_0022_sync 455 l
+2011_09_26/2011_09_26_drive_0028_sync 380 r
+2011_09_26/2011_09_26_drive_0087_sync 34 l
+2011_10_03/2011_10_03_drive_0034_sync 1064 r
+2011_09_30/2011_09_30_drive_0020_sync 787 l
+2011_09_26/2011_09_26_drive_0022_sync 377 r
+2011_09_30/2011_09_30_drive_0034_sync 1126 l
+2011_10_03/2011_10_03_drive_0034_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 3858 r
+2011_10_03/2011_10_03_drive_0034_sync 2180 r
+2011_10_03/2011_10_03_drive_0034_sync 4029 r
+2011_09_29/2011_09_29_drive_0004_sync 331 l
+2011_09_30/2011_09_30_drive_0034_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 3503 r
+2011_10_03/2011_10_03_drive_0034_sync 2103 r
+2011_09_26/2011_09_26_drive_0087_sync 405 l
+2011_09_26/2011_09_26_drive_0005_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 4933 l
+2011_09_26/2011_09_26_drive_0014_sync 202 l
+2011_09_26/2011_09_26_drive_0014_sync 63 l
+2011_09_30/2011_09_30_drive_0033_sync 767 l
+2011_09_30/2011_09_30_drive_0034_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 1368 r
+2011_09_26/2011_09_26_drive_0032_sync 239 l
+2011_10_03/2011_10_03_drive_0034_sync 836 r
+2011_09_30/2011_09_30_drive_0028_sync 4470 l
+2011_09_30/2011_09_30_drive_0028_sync 1250 l
+2011_09_30/2011_09_30_drive_0028_sync 3329 r
+2011_10_03/2011_10_03_drive_0034_sync 2234 r
+2011_10_03/2011_10_03_drive_0034_sync 1268 l
+2011_09_30/2011_09_30_drive_0028_sync 1388 r
+2011_09_29/2011_09_29_drive_0004_sync 237 l
+2011_10_03/2011_10_03_drive_0034_sync 2283 r
+2011_09_26/2011_09_26_drive_0061_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 1046 r
+2011_09_30/2011_09_30_drive_0033_sync 1073 r
+2011_10_03/2011_10_03_drive_0034_sync 4369 r
+2011_09_26/2011_09_26_drive_0087_sync 50 r
+2011_10_03/2011_10_03_drive_0034_sync 2758 l
+2011_09_30/2011_09_30_drive_0020_sync 197 r
+2011_09_26/2011_09_26_drive_0091_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 1496 l
+2011_10_03/2011_10_03_drive_0034_sync 2992 l
+2011_09_30/2011_09_30_drive_0028_sync 2601 l
+2011_10_03/2011_10_03_drive_0034_sync 3606 r
+2011_09_26/2011_09_26_drive_0061_sync 89 l
+2011_10_03/2011_10_03_drive_0034_sync 2536 r
+2011_10_03/2011_10_03_drive_0034_sync 2002 r
+2011_10_03/2011_10_03_drive_0034_sync 425 l
+2011_09_30/2011_09_30_drive_0034_sync 158 r
+2011_10_03/2011_10_03_drive_0042_sync 586 l
+2011_10_03/2011_10_03_drive_0034_sync 4432 l
+2011_10_03/2011_10_03_drive_0042_sync 930 r
+2011_10_03/2011_10_03_drive_0034_sync 1417 l
+2011_09_30/2011_09_30_drive_0033_sync 897 r
+2011_10_03/2011_10_03_drive_0034_sync 4494 l
+2011_09_26/2011_09_26_drive_0057_sync 174 r
+2011_10_03/2011_10_03_drive_0034_sync 1702 l
+2011_09_26/2011_09_26_drive_0051_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 1162 l
+2011_10_03/2011_10_03_drive_0034_sync 3049 r
+2011_09_26/2011_09_26_drive_0039_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 238 l
+2011_09_28/2011_09_28_drive_0001_sync 53 r
+2011_09_26/2011_09_26_drive_0039_sync 200 r
+2011_09_26/2011_09_26_drive_0087_sync 352 r
+2011_09_26/2011_09_26_drive_0061_sync 669 l
+2011_10_03/2011_10_03_drive_0034_sync 397 r
+2011_10_03/2011_10_03_drive_0034_sync 2984 r
+2011_10_03/2011_10_03_drive_0034_sync 1553 l
+2011_09_26/2011_09_26_drive_0061_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 2292 l
+2011_09_26/2011_09_26_drive_0032_sync 178 l
+2011_09_26/2011_09_26_drive_0061_sync 48 l
+2011_09_26/2011_09_26_drive_0051_sync 58 r
+2011_09_26/2011_09_26_drive_0019_sync 184 l
+2011_09_29/2011_09_29_drive_0004_sync 127 l
+2011_09_30/2011_09_30_drive_0028_sync 3185 r
+2011_10_03/2011_10_03_drive_0042_sync 998 l
+2011_09_26/2011_09_26_drive_0014_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 2892 l
+2011_10_03/2011_10_03_drive_0034_sync 2392 r
+2011_09_26/2011_09_26_drive_0028_sync 181 r
+2011_09_30/2011_09_30_drive_0028_sync 3349 l
+2011_10_03/2011_10_03_drive_0034_sync 2944 r
+2011_09_26/2011_09_26_drive_0070_sync 365 r
+2011_09_30/2011_09_30_drive_0028_sync 1665 l
+2011_10_03/2011_10_03_drive_0034_sync 148 l
+2011_09_30/2011_09_30_drive_0020_sync 299 r
+2011_10_03/2011_10_03_drive_0034_sync 1852 l
+2011_10_03/2011_10_03_drive_0042_sync 644 r
+2011_09_30/2011_09_30_drive_0028_sync 4007 r
+2011_09_26/2011_09_26_drive_0039_sync 342 r
+2011_09_26/2011_09_26_drive_0104_sync 93 r
+2011_09_30/2011_09_30_drive_0020_sync 481 r
+2011_09_26/2011_09_26_drive_0019_sync 22 r
+2011_09_26/2011_09_26_drive_0032_sync 126 r
+2011_09_30/2011_09_30_drive_0020_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 541 l
+2011_09_26/2011_09_26_drive_0022_sync 89 l
+2011_10_03/2011_10_03_drive_0034_sync 4569 r
+2011_09_26/2011_09_26_drive_0035_sync 47 l
+2011_09_30/2011_09_30_drive_0034_sync 643 l
+2011_09_26/2011_09_26_drive_0087_sync 447 l
+2011_10_03/2011_10_03_drive_0034_sync 2635 r
+2011_09_30/2011_09_30_drive_0034_sync 129 r
+2011_10_03/2011_10_03_drive_0034_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 2257 r
+2011_10_03/2011_10_03_drive_0034_sync 2077 l
+2011_09_30/2011_09_30_drive_0020_sync 6 l
+2011_09_30/2011_09_30_drive_0034_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 464 l
+2011_09_26/2011_09_26_drive_0011_sync 0 r
+2011_09_26/2011_09_26_drive_0087_sync 170 r
+2011_09_26/2011_09_26_drive_0087_sync 229 l
+2011_09_30/2011_09_30_drive_0020_sync 501 l
+2011_09_29/2011_09_29_drive_0004_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 338 r
+2011_09_26/2011_09_26_drive_0087_sync 681 r
+2011_09_30/2011_09_30_drive_0028_sync 3525 r
+2011_09_30/2011_09_30_drive_0034_sync 1046 l
+2011_09_26/2011_09_26_drive_0039_sync 385 l
+2011_10_03/2011_10_03_drive_0034_sync 1894 r
+2011_09_26/2011_09_26_drive_0095_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 3910 r
+2011_09_30/2011_09_30_drive_0033_sync 135 r
+2011_10_03/2011_10_03_drive_0034_sync 1498 l
+2011_10_03/2011_10_03_drive_0034_sync 1863 r
+2011_09_30/2011_09_30_drive_0028_sync 1224 r
+2011_10_03/2011_10_03_drive_0042_sync 281 r
+2011_09_30/2011_09_30_drive_0034_sync 570 r
+2011_09_26/2011_09_26_drive_0070_sync 358 r
+2011_09_29/2011_09_29_drive_0004_sync 256 l
+2011_10_03/2011_10_03_drive_0034_sync 272 r
+2011_09_26/2011_09_26_drive_0028_sync 180 r
+2011_09_26/2011_09_26_drive_0104_sync 288 l
+2011_10_03/2011_10_03_drive_0034_sync 4438 l
+2011_09_30/2011_09_30_drive_0034_sync 66 r
+2011_09_26/2011_09_26_drive_0061_sync 536 l
+2011_10_03/2011_10_03_drive_0034_sync 2665 l
+2011_09_26/2011_09_26_drive_0104_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 1918 l
+2011_09_30/2011_09_30_drive_0033_sync 701 l
+2011_10_03/2011_10_03_drive_0034_sync 1359 r
+2011_09_30/2011_09_30_drive_0028_sync 4427 r
+2011_09_30/2011_09_30_drive_0028_sync 787 r
+2011_09_30/2011_09_30_drive_0028_sync 1617 l
+2011_10_03/2011_10_03_drive_0042_sync 700 l
+2011_09_26/2011_09_26_drive_0022_sync 426 r
+2011_10_03/2011_10_03_drive_0042_sync 626 l
+2011_10_03/2011_10_03_drive_0042_sync 606 l
+2011_09_26/2011_09_26_drive_0057_sync 360 l
+2011_09_30/2011_09_30_drive_0028_sync 973 l
+2011_10_03/2011_10_03_drive_0034_sync 248 r
+2011_09_30/2011_09_30_drive_0020_sync 193 r
+2011_09_30/2011_09_30_drive_0033_sync 1089 l
+2011_09_30/2011_09_30_drive_0028_sync 3611 r
+2011_09_30/2011_09_30_drive_0028_sync 4070 l
+2011_09_26/2011_09_26_drive_0028_sync 40 l
+2011_09_26/2011_09_26_drive_0032_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 3597 l
+2011_09_26/2011_09_26_drive_0079_sync 69 l
+2011_09_29/2011_09_29_drive_0004_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 862 r
+2011_09_30/2011_09_30_drive_0028_sync 1454 l
+2011_09_26/2011_09_26_drive_0018_sync 252 l
+2011_09_30/2011_09_30_drive_0033_sync 1267 l
+2011_09_30/2011_09_30_drive_0028_sync 5128 l
+2011_10_03/2011_10_03_drive_0034_sync 840 r
+2011_09_26/2011_09_26_drive_0019_sync 25 l
+2011_09_26/2011_09_26_drive_0018_sync 248 l
+2011_09_26/2011_09_26_drive_0104_sync 109 l
+2011_09_30/2011_09_30_drive_0028_sync 2200 l
+2011_09_26/2011_09_26_drive_0005_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 3448 r
+2011_09_26/2011_09_26_drive_0014_sync 191 r
+2011_09_26/2011_09_26_drive_0022_sync 334 l
+2011_09_26/2011_09_26_drive_0011_sync 35 l
+2011_10_03/2011_10_03_drive_0042_sync 535 l
+2011_09_30/2011_09_30_drive_0028_sync 3142 l
+2011_09_30/2011_09_30_drive_0033_sync 1008 l
+2011_09_26/2011_09_26_drive_0028_sync 381 l
+2011_09_30/2011_09_30_drive_0028_sync 3269 r
+2011_10_03/2011_10_03_drive_0034_sync 2046 r
+2011_09_30/2011_09_30_drive_0028_sync 1500 l
+2011_09_30/2011_09_30_drive_0020_sync 380 l
+2011_09_30/2011_09_30_drive_0033_sync 637 r
+2011_10_03/2011_10_03_drive_0034_sync 2335 l
+2011_09_26/2011_09_26_drive_0019_sync 286 l
+2011_09_26/2011_09_26_drive_0022_sync 347 l
+2011_10_03/2011_10_03_drive_0042_sync 612 l
+2011_09_26/2011_09_26_drive_0001_sync 34 l
+2011_09_26/2011_09_26_drive_0095_sync 10 l
+2011_09_26/2011_09_26_drive_0018_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 1976 l
+2011_09_26/2011_09_26_drive_0070_sync 128 r
+2011_09_30/2011_09_30_drive_0034_sync 725 r
+2011_09_30/2011_09_30_drive_0034_sync 63 r
+2011_09_26/2011_09_26_drive_0022_sync 664 r
+2011_10_03/2011_10_03_drive_0042_sync 518 l
+2011_09_26/2011_09_26_drive_0014_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 4450 l
+2011_10_03/2011_10_03_drive_0034_sync 1509 r
+2011_10_03/2011_10_03_drive_0034_sync 4254 r
+2011_09_30/2011_09_30_drive_0034_sync 731 l
+2011_09_30/2011_09_30_drive_0033_sync 112 l
+2011_09_26/2011_09_26_drive_0022_sync 295 r
+2011_09_26/2011_09_26_drive_0087_sync 179 r
+2011_09_26/2011_09_26_drive_0015_sync 60 r
+2011_09_30/2011_09_30_drive_0020_sync 767 r
+2011_09_30/2011_09_30_drive_0028_sync 3293 r
+2011_09_30/2011_09_30_drive_0033_sync 219 r
+2011_09_30/2011_09_30_drive_0028_sync 2030 l
+2011_09_30/2011_09_30_drive_0028_sync 587 r
+2011_09_30/2011_09_30_drive_0028_sync 871 l
+2011_10_03/2011_10_03_drive_0042_sync 545 l
+2011_09_30/2011_09_30_drive_0034_sync 460 r
+2011_09_30/2011_09_30_drive_0028_sync 4961 r
+2011_09_26/2011_09_26_drive_0022_sync 321 l
+2011_09_26/2011_09_26_drive_0022_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 5023 r
+2011_10_03/2011_10_03_drive_0034_sync 761 l
+2011_09_26/2011_09_26_drive_0091_sync 295 l
+2011_09_30/2011_09_30_drive_0033_sync 574 l
+2011_09_30/2011_09_30_drive_0033_sync 1422 r
+2011_09_26/2011_09_26_drive_0035_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 861 r
+2011_09_30/2011_09_30_drive_0033_sync 1295 l
+2011_10_03/2011_10_03_drive_0034_sync 2383 l
+2011_09_30/2011_09_30_drive_0028_sync 4317 l
+2011_09_26/2011_09_26_drive_0087_sync 365 l
+2011_09_30/2011_09_30_drive_0020_sync 454 r
+2011_09_26/2011_09_26_drive_0051_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 944 r
+2011_09_26/2011_09_26_drive_0028_sync 102 l
+2011_09_26/2011_09_26_drive_0070_sync 407 l
+2011_10_03/2011_10_03_drive_0034_sync 508 l
+2011_10_03/2011_10_03_drive_0034_sync 1256 r
+2011_09_26/2011_09_26_drive_0022_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 5078 l
+2011_09_30/2011_09_30_drive_0020_sync 864 l
+2011_09_30/2011_09_30_drive_0034_sync 597 r
+2011_09_30/2011_09_30_drive_0033_sync 566 l
+2011_09_30/2011_09_30_drive_0028_sync 2323 r
+2011_09_26/2011_09_26_drive_0061_sync 494 r
+2011_10_03/2011_10_03_drive_0034_sync 2876 l
+2011_09_30/2011_09_30_drive_0033_sync 1215 l
+2011_10_03/2011_10_03_drive_0034_sync 3733 l
+2011_09_30/2011_09_30_drive_0028_sync 3818 r
+2011_09_30/2011_09_30_drive_0028_sync 515 l
+2011_09_30/2011_09_30_drive_0028_sync 4584 r
+2011_10_03/2011_10_03_drive_0034_sync 743 r
+2011_09_26/2011_09_26_drive_0014_sync 117 l
+2011_09_26/2011_09_26_drive_0061_sync 212 r
+2011_09_26/2011_09_26_drive_0028_sync 361 r
+2011_09_30/2011_09_30_drive_0028_sync 1595 l
+2011_09_29/2011_09_29_drive_0026_sync 31 l
+2011_09_26/2011_09_26_drive_0035_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 4653 l
+2011_10_03/2011_10_03_drive_0042_sync 627 r
+2011_09_26/2011_09_26_drive_0011_sync 16 l
+2011_09_30/2011_09_30_drive_0028_sync 3266 l
+2011_09_26/2011_09_26_drive_0079_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 2310 r
+2011_09_30/2011_09_30_drive_0020_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 2126 r
+2011_10_03/2011_10_03_drive_0034_sync 3285 l
+2011_09_30/2011_09_30_drive_0033_sync 862 l
+2011_09_30/2011_09_30_drive_0034_sync 597 l
+2011_09_30/2011_09_30_drive_0020_sync 945 r
+2011_10_03/2011_10_03_drive_0034_sync 3681 r
+2011_09_26/2011_09_26_drive_0070_sync 293 l
+2011_09_30/2011_09_30_drive_0034_sync 984 l
+2011_10_03/2011_10_03_drive_0034_sync 282 l
+2011_09_30/2011_09_30_drive_0034_sync 455 l
+2011_09_26/2011_09_26_drive_0061_sync 482 l
+2011_10_03/2011_10_03_drive_0042_sync 72 r
+2011_09_26/2011_09_26_drive_0028_sync 306 r
+2011_10_03/2011_10_03_drive_0034_sync 3469 l
+2011_09_30/2011_09_30_drive_0028_sync 4201 r
+2011_09_26/2011_09_26_drive_0017_sync 6 l
+2011_09_30/2011_09_30_drive_0033_sync 453 l
+2011_09_30/2011_09_30_drive_0034_sync 363 l
+2011_09_26/2011_09_26_drive_0039_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 3802 l
+2011_09_26/2011_09_26_drive_0104_sync 165 r
+2011_09_26/2011_09_26_drive_0070_sync 131 r
+2011_09_26/2011_09_26_drive_0015_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 2509 l
+2011_09_30/2011_09_30_drive_0034_sync 1071 r
+2011_09_30/2011_09_30_drive_0034_sync 586 l
+2011_09_26/2011_09_26_drive_0091_sync 142 l
+2011_09_26/2011_09_26_drive_0095_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 761 r
+2011_09_26/2011_09_26_drive_0015_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 788 l
+2011_09_30/2011_09_30_drive_0028_sync 3488 l
+2011_09_30/2011_09_30_drive_0028_sync 4428 r
+2011_09_30/2011_09_30_drive_0028_sync 4229 r
+2011_10_03/2011_10_03_drive_0042_sync 1108 l
+2011_09_30/2011_09_30_drive_0028_sync 4397 r
+2011_10_03/2011_10_03_drive_0042_sync 892 l
+2011_09_30/2011_09_30_drive_0034_sync 393 r
+2011_10_03/2011_10_03_drive_0034_sync 164 r
+2011_09_30/2011_09_30_drive_0028_sync 1993 l
+2011_09_30/2011_09_30_drive_0028_sync 4786 r
+2011_10_03/2011_10_03_drive_0034_sync 791 r
+2011_10_03/2011_10_03_drive_0034_sync 582 r
+2011_10_03/2011_10_03_drive_0042_sync 1098 r
+2011_09_26/2011_09_26_drive_0091_sync 173 l
+2011_09_30/2011_09_30_drive_0034_sync 556 l
+2011_09_30/2011_09_30_drive_0028_sync 1553 l
+2011_09_30/2011_09_30_drive_0028_sync 723 l
+2011_09_30/2011_09_30_drive_0034_sync 1132 r
+2011_10_03/2011_10_03_drive_0034_sync 2232 l
+2011_10_03/2011_10_03_drive_0034_sync 1161 l
+2011_10_03/2011_10_03_drive_0042_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 3093 r
+2011_09_30/2011_09_30_drive_0028_sync 2195 l
+2011_10_03/2011_10_03_drive_0034_sync 3166 r
+2011_10_03/2011_10_03_drive_0034_sync 419 r
+2011_09_26/2011_09_26_drive_0091_sync 66 r
+2011_09_26/2011_09_26_drive_0087_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 1392 l
+2011_09_30/2011_09_30_drive_0028_sync 3686 l
+2011_09_30/2011_09_30_drive_0028_sync 2704 r
+2011_10_03/2011_10_03_drive_0042_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 3317 r
+2011_09_26/2011_09_26_drive_0022_sync 432 r
+2011_09_26/2011_09_26_drive_0087_sync 475 l
+2011_09_26/2011_09_26_drive_0017_sync 80 r
+2011_09_30/2011_09_30_drive_0020_sync 687 r
+2011_09_30/2011_09_30_drive_0020_sync 115 l
+2011_09_26/2011_09_26_drive_0019_sync 468 r
+2011_09_26/2011_09_26_drive_0028_sync 94 r
+2011_10_03/2011_10_03_drive_0034_sync 285 l
+2011_09_30/2011_09_30_drive_0020_sync 575 l
+2011_09_26/2011_09_26_drive_0018_sync 27 l
+2011_10_03/2011_10_03_drive_0042_sync 1168 l
+2011_09_26/2011_09_26_drive_0001_sync 11 l
+2011_09_30/2011_09_30_drive_0020_sync 298 l
+2011_10_03/2011_10_03_drive_0042_sync 632 r
+2011_09_29/2011_09_29_drive_0004_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 2294 r
+2011_09_30/2011_09_30_drive_0033_sync 1509 l
+2011_09_30/2011_09_30_drive_0028_sync 458 r
+2011_09_26/2011_09_26_drive_0011_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 523 r
+2011_10_03/2011_10_03_drive_0034_sync 730 l
+2011_09_30/2011_09_30_drive_0028_sync 4937 r
+2011_09_26/2011_09_26_drive_0095_sync 78 l
+2011_10_03/2011_10_03_drive_0034_sync 1287 r
+2011_09_26/2011_09_26_drive_0001_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 2403 l
+2011_09_30/2011_09_30_drive_0020_sync 328 l
+2011_09_30/2011_09_30_drive_0028_sync 2209 l
+2011_09_26/2011_09_26_drive_0091_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 472 r
+2011_10_03/2011_10_03_drive_0034_sync 2866 r
+2011_10_03/2011_10_03_drive_0034_sync 1987 l
+2011_10_03/2011_10_03_drive_0034_sync 1129 r
+2011_09_30/2011_09_30_drive_0028_sync 2590 l
+2011_09_26/2011_09_26_drive_0022_sync 704 r
+2011_09_26/2011_09_26_drive_0061_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 3536 r
+2011_10_03/2011_10_03_drive_0034_sync 2744 r
+2011_09_30/2011_09_30_drive_0028_sync 1567 r
+2011_09_30/2011_09_30_drive_0034_sync 543 r
+2011_09_30/2011_09_30_drive_0028_sync 2267 l
+2011_09_26/2011_09_26_drive_0061_sync 396 l
+2011_09_30/2011_09_30_drive_0028_sync 4515 l
+2011_10_03/2011_10_03_drive_0034_sync 2589 l
+2011_09_26/2011_09_26_drive_0095_sync 168 l
+2011_09_26/2011_09_26_drive_0095_sync 201 l
+2011_09_30/2011_09_30_drive_0028_sync 4078 r
+2011_09_26/2011_09_26_drive_0091_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 2397 l
+2011_10_03/2011_10_03_drive_0034_sync 2119 l
+2011_09_30/2011_09_30_drive_0020_sync 836 l
+2011_10_03/2011_10_03_drive_0034_sync 1944 l
+2011_10_03/2011_10_03_drive_0034_sync 3936 r
+2011_09_30/2011_09_30_drive_0028_sync 2593 r
+2011_10_03/2011_10_03_drive_0034_sync 1629 r
+2011_10_03/2011_10_03_drive_0034_sync 472 l
+2011_09_30/2011_09_30_drive_0034_sync 502 l
+2011_09_30/2011_09_30_drive_0033_sync 732 l
+2011_09_26/2011_09_26_drive_0022_sync 391 r
+2011_09_26/2011_09_26_drive_0015_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 335 r
+2011_10_03/2011_10_03_drive_0042_sync 906 l
+2011_09_30/2011_09_30_drive_0028_sync 1387 l
+2011_09_26/2011_09_26_drive_0018_sync 11 l
+2011_09_26/2011_09_26_drive_0079_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 66 r
+2011_10_03/2011_10_03_drive_0034_sync 3800 l
+2011_09_26/2011_09_26_drive_0035_sync 89 l
+2011_09_26/2011_09_26_drive_0019_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 851 l
+2011_09_26/2011_09_26_drive_0035_sync 70 r
+2011_09_26/2011_09_26_drive_0051_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 485 l
+2011_10_03/2011_10_03_drive_0034_sync 2178 l
+2011_09_30/2011_09_30_drive_0034_sync 409 r
+2011_09_26/2011_09_26_drive_0028_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 3837 r
+2011_09_26/2011_09_26_drive_0039_sync 296 r
+2011_10_03/2011_10_03_drive_0034_sync 3380 l
+2011_10_03/2011_10_03_drive_0042_sync 488 r
+2011_09_30/2011_09_30_drive_0028_sync 687 l
+2011_09_26/2011_09_26_drive_0061_sync 652 r
+2011_09_30/2011_09_30_drive_0028_sync 3699 r
+2011_09_30/2011_09_30_drive_0034_sync 611 r
+2011_09_29/2011_09_29_drive_0004_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 4420 r
+2011_09_26/2011_09_26_drive_0019_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 1226 l
+2011_10_03/2011_10_03_drive_0042_sync 931 r
+2011_09_30/2011_09_30_drive_0028_sync 582 l
+2011_09_30/2011_09_30_drive_0028_sync 3157 r
+2011_10_03/2011_10_03_drive_0034_sync 946 l
+2011_09_30/2011_09_30_drive_0033_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 4207 l
+2011_09_26/2011_09_26_drive_0061_sync 632 r
+2011_10_03/2011_10_03_drive_0034_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 965 r
+2011_10_03/2011_10_03_drive_0034_sync 1167 l
+2011_09_30/2011_09_30_drive_0020_sync 883 r
+2011_09_26/2011_09_26_drive_0022_sync 760 r
+2011_09_30/2011_09_30_drive_0028_sync 2157 r
+2011_09_30/2011_09_30_drive_0034_sync 1123 l
+2011_09_30/2011_09_30_drive_0028_sync 2291 r
+2011_09_30/2011_09_30_drive_0028_sync 1053 r
+2011_09_30/2011_09_30_drive_0028_sync 2760 l
+2011_10_03/2011_10_03_drive_0034_sync 1656 l
+2011_09_26/2011_09_26_drive_0039_sync 196 r
+2011_09_28/2011_09_28_drive_0001_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 1006 r
+2011_09_30/2011_09_30_drive_0028_sync 5006 r
+2011_09_26/2011_09_26_drive_0039_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 3499 l
+2011_09_26/2011_09_26_drive_0028_sync 419 l
+2011_10_03/2011_10_03_drive_0034_sync 2787 r
+2011_10_03/2011_10_03_drive_0042_sync 1136 l
+2011_09_29/2011_09_29_drive_0004_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 145 r
+2011_09_26/2011_09_26_drive_0095_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 3711 l
+2011_09_26/2011_09_26_drive_0022_sync 788 l
+2011_09_26/2011_09_26_drive_0060_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 1124 l
+2011_10_03/2011_10_03_drive_0034_sync 1468 r
+2011_09_30/2011_09_30_drive_0034_sync 225 r
+2011_09_30/2011_09_30_drive_0034_sync 371 r
+2011_09_26/2011_09_26_drive_0014_sync 296 l
+2011_09_26/2011_09_26_drive_0061_sync 126 r
+2011_09_30/2011_09_30_drive_0033_sync 680 l
+2011_10_03/2011_10_03_drive_0034_sync 1213 l
+2011_09_30/2011_09_30_drive_0034_sync 92 r
+2011_09_26/2011_09_26_drive_0028_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 3065 r
+2011_09_30/2011_09_30_drive_0028_sync 179 r
+2011_09_30/2011_09_30_drive_0034_sync 1099 r
+2011_09_30/2011_09_30_drive_0028_sync 921 l
+2011_09_26/2011_09_26_drive_0014_sync 222 l
+2011_10_03/2011_10_03_drive_0034_sync 644 r
+2011_09_26/2011_09_26_drive_0022_sync 25 r
+2011_09_26/2011_09_26_drive_0095_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 4226 l
+2011_09_26/2011_09_26_drive_0017_sync 104 l
+2011_09_26/2011_09_26_drive_0032_sync 376 r
+2011_09_26/2011_09_26_drive_0057_sync 100 r
+2011_09_26/2011_09_26_drive_0087_sync 427 r
+2011_09_30/2011_09_30_drive_0028_sync 4492 l
+2011_09_26/2011_09_26_drive_0022_sync 496 l
+2011_10_03/2011_10_03_drive_0034_sync 3065 l
+2011_09_26/2011_09_26_drive_0095_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 2203 l
+2011_09_26/2011_09_26_drive_0035_sync 114 l
+2011_09_30/2011_09_30_drive_0034_sync 802 l
+2011_09_30/2011_09_30_drive_0028_sync 3435 r
+2011_10_03/2011_10_03_drive_0034_sync 2262 l
+2011_09_30/2011_09_30_drive_0028_sync 4778 l
+2011_10_03/2011_10_03_drive_0034_sync 3162 r
+2011_10_03/2011_10_03_drive_0034_sync 1860 r
+2011_09_26/2011_09_26_drive_0070_sync 290 r
+2011_09_26/2011_09_26_drive_0087_sync 180 r
+2011_09_26/2011_09_26_drive_0018_sync 269 l
+2011_09_26/2011_09_26_drive_0028_sync 5 r
+2011_09_26/2011_09_26_drive_0057_sync 344 r
+2011_10_03/2011_10_03_drive_0042_sync 216 l
+2011_09_30/2011_09_30_drive_0028_sync 36 l
+2011_09_26/2011_09_26_drive_0087_sync 409 l
+2011_09_30/2011_09_30_drive_0028_sync 2263 l
+2011_09_30/2011_09_30_drive_0033_sync 548 r
+2011_09_30/2011_09_30_drive_0028_sync 1309 r
+2011_09_30/2011_09_30_drive_0034_sync 635 l
+2011_09_30/2011_09_30_drive_0033_sync 1347 l
+2011_09_26/2011_09_26_drive_0028_sync 202 l
+2011_10_03/2011_10_03_drive_0034_sync 4579 r
+2011_09_26/2011_09_26_drive_0091_sync 244 l
+2011_10_03/2011_10_03_drive_0042_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 691 l
+2011_09_26/2011_09_26_drive_0087_sync 417 r
+2011_09_26/2011_09_26_drive_0019_sync 442 l
+2011_09_26/2011_09_26_drive_0051_sync 193 r
+2011_09_29/2011_09_29_drive_0026_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 4078 l
+2011_09_26/2011_09_26_drive_0001_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 2829 l
+2011_10_03/2011_10_03_drive_0034_sync 3410 l
+2011_09_26/2011_09_26_drive_0087_sync 459 r
+2011_09_26/2011_09_26_drive_0039_sync 97 l
+2011_09_30/2011_09_30_drive_0034_sync 513 l
+2011_09_26/2011_09_26_drive_0022_sync 752 l
+2011_10_03/2011_10_03_drive_0034_sync 2229 l
+2011_09_30/2011_09_30_drive_0034_sync 561 r
+2011_09_30/2011_09_30_drive_0028_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 1430 l
+2011_09_26/2011_09_26_drive_0032_sync 58 r
+2011_09_30/2011_09_30_drive_0033_sync 336 r
+2011_09_30/2011_09_30_drive_0028_sync 1023 l
+2011_09_30/2011_09_30_drive_0028_sync 1131 l
+2011_09_26/2011_09_26_drive_0061_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 4362 l
+2011_10_03/2011_10_03_drive_0034_sync 3508 l
+2011_09_26/2011_09_26_drive_0061_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 577 r
+2011_09_30/2011_09_30_drive_0028_sync 2357 r
+2011_09_30/2011_09_30_drive_0020_sync 369 l
+2011_09_30/2011_09_30_drive_0028_sync 3532 r
+2011_09_26/2011_09_26_drive_0061_sync 358 l
+2011_09_30/2011_09_30_drive_0034_sync 46 l
+2011_09_26/2011_09_26_drive_0039_sync 171 l
+2011_09_30/2011_09_30_drive_0028_sync 4849 l
+2011_10_03/2011_10_03_drive_0034_sync 2651 l
+2011_09_26/2011_09_26_drive_0061_sync 64 r
+2011_09_30/2011_09_30_drive_0033_sync 607 r
+2011_09_30/2011_09_30_drive_0028_sync 3438 l
+2011_09_30/2011_09_30_drive_0028_sync 4719 l
+2011_09_26/2011_09_26_drive_0014_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 3742 r
+2011_09_30/2011_09_30_drive_0028_sync 4699 r
+2011_09_30/2011_09_30_drive_0020_sync 423 l
+2011_09_30/2011_09_30_drive_0028_sync 2039 r
+2011_09_30/2011_09_30_drive_0028_sync 3250 r
+2011_09_26/2011_09_26_drive_0028_sync 296 l
+2011_09_26/2011_09_26_drive_0018_sync 54 r
+2011_09_30/2011_09_30_drive_0034_sync 1121 r
+2011_09_30/2011_09_30_drive_0028_sync 4011 r
+2011_10_03/2011_10_03_drive_0042_sync 73 l
+2011_09_26/2011_09_26_drive_0087_sync 490 r
+2011_09_26/2011_09_26_drive_0028_sync 91 l
+2011_10_03/2011_10_03_drive_0042_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 457 l
+2011_09_30/2011_09_30_drive_0028_sync 4198 r
+2011_09_30/2011_09_30_drive_0028_sync 4270 r
+2011_09_26/2011_09_26_drive_0057_sync 308 r
+2011_10_03/2011_10_03_drive_0042_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 1128 l
+2011_10_03/2011_10_03_drive_0034_sync 3998 r
+2011_09_26/2011_09_26_drive_0087_sync 331 l
+2011_09_26/2011_09_26_drive_0057_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 4159 r
+2011_09_26/2011_09_26_drive_0011_sync 190 r
+2011_09_30/2011_09_30_drive_0034_sync 221 r
+2011_09_26/2011_09_26_drive_0070_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 922 r
+2011_09_30/2011_09_30_drive_0028_sync 441 r
+2011_09_26/2011_09_26_drive_0039_sync 186 l
+2011_10_03/2011_10_03_drive_0034_sync 2813 l
+2011_09_30/2011_09_30_drive_0033_sync 1579 l
+2011_09_30/2011_09_30_drive_0028_sync 2177 r
+2011_10_03/2011_10_03_drive_0034_sync 1272 l
+2011_09_26/2011_09_26_drive_0039_sync 178 l
+2011_09_26/2011_09_26_drive_0095_sync 238 l
+2011_09_26/2011_09_26_drive_0028_sync 239 r
+2011_10_03/2011_10_03_drive_0034_sync 4110 r
+2011_09_30/2011_09_30_drive_0020_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 4024 r
+2011_09_26/2011_09_26_drive_0039_sync 79 r
+2011_09_26/2011_09_26_drive_0022_sync 352 r
+2011_09_26/2011_09_26_drive_0087_sync 684 l
+2011_09_26/2011_09_26_drive_0060_sync 49 l
+2011_10_03/2011_10_03_drive_0034_sync 499 l
+2011_09_30/2011_09_30_drive_0028_sync 2557 r
+2011_09_30/2011_09_30_drive_0034_sync 1205 l
+2011_09_30/2011_09_30_drive_0028_sync 1926 l
+2011_09_26/2011_09_26_drive_0104_sync 114 r
+2011_10_03/2011_10_03_drive_0034_sync 1806 r
+2011_09_26/2011_09_26_drive_0022_sync 320 l
+2011_09_29/2011_09_29_drive_0004_sync 197 r
+2011_09_26/2011_09_26_drive_0051_sync 191 r
+2011_09_30/2011_09_30_drive_0033_sync 642 r
+2011_09_26/2011_09_26_drive_0039_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 2632 l
+2011_09_26/2011_09_26_drive_0028_sync 332 r
+2011_09_26/2011_09_26_drive_0015_sync 285 r
+2011_10_03/2011_10_03_drive_0034_sync 309 l
+2011_09_26/2011_09_26_drive_0032_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 3104 r
+2011_09_30/2011_09_30_drive_0028_sync 2975 r
+2011_10_03/2011_10_03_drive_0034_sync 1159 l
+2011_09_30/2011_09_30_drive_0028_sync 1579 l
+2011_09_26/2011_09_26_drive_0022_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 1466 r
+2011_09_30/2011_09_30_drive_0028_sync 4458 l
+2011_09_30/2011_09_30_drive_0028_sync 552 r
+2011_09_26/2011_09_26_drive_0014_sync 241 r
+2011_09_30/2011_09_30_drive_0033_sync 997 r
+2011_10_03/2011_10_03_drive_0034_sync 2231 r
+2011_09_30/2011_09_30_drive_0033_sync 348 l
+2011_09_30/2011_09_30_drive_0028_sync 717 r
+2011_09_26/2011_09_26_drive_0070_sync 118 l
+2011_09_30/2011_09_30_drive_0033_sync 420 r
+2011_09_26/2011_09_26_drive_0032_sync 213 r
+2011_09_26/2011_09_26_drive_0022_sync 580 l
+2011_09_26/2011_09_26_drive_0018_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 4243 l
+2011_09_30/2011_09_30_drive_0020_sync 548 r
+2011_09_30/2011_09_30_drive_0033_sync 858 l
+2011_09_30/2011_09_30_drive_0028_sync 4565 l
+2011_09_26/2011_09_26_drive_0070_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 1224 r
+2011_09_30/2011_09_30_drive_0028_sync 4936 r
+2011_09_26/2011_09_26_drive_0095_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 2568 r
+2011_09_30/2011_09_30_drive_0028_sync 1002 l
+2011_09_26/2011_09_26_drive_0032_sync 331 r
+2011_09_30/2011_09_30_drive_0033_sync 889 r
+2011_09_29/2011_09_29_drive_0004_sync 241 l
+2011_09_30/2011_09_30_drive_0034_sync 786 l
+2011_09_26/2011_09_26_drive_0113_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 826 r
+2011_09_30/2011_09_30_drive_0028_sync 3645 l
+2011_10_03/2011_10_03_drive_0034_sync 2962 l
+2011_10_03/2011_10_03_drive_0042_sync 158 l
+2011_09_26/2011_09_26_drive_0087_sync 419 l
+2011_09_29/2011_09_29_drive_0026_sync 73 r
+2011_09_30/2011_09_30_drive_0028_sync 165 l
+2011_09_26/2011_09_26_drive_0057_sync 157 r
+2011_09_26/2011_09_26_drive_0019_sync 229 l
+2011_10_03/2011_10_03_drive_0034_sync 3771 r
+2011_10_03/2011_10_03_drive_0034_sync 2719 r
+2011_09_26/2011_09_26_drive_0079_sync 32 l
+2011_09_26/2011_09_26_drive_0019_sync 406 l
+2011_09_26/2011_09_26_drive_0051_sync 326 r
+2011_09_30/2011_09_30_drive_0033_sync 581 l
+2011_09_30/2011_09_30_drive_0034_sync 953 l
+2011_09_26/2011_09_26_drive_0019_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 2674 r
+2011_10_03/2011_10_03_drive_0042_sync 540 l
+2011_09_26/2011_09_26_drive_0104_sync 248 r
+2011_09_30/2011_09_30_drive_0028_sync 438 r
+2011_10_03/2011_10_03_drive_0034_sync 539 l
+2011_09_30/2011_09_30_drive_0033_sync 599 r
+2011_10_03/2011_10_03_drive_0042_sync 971 r
+2011_10_03/2011_10_03_drive_0042_sync 221 l
+2011_09_30/2011_09_30_drive_0028_sync 4976 r
+2011_10_03/2011_10_03_drive_0034_sync 2226 l
+2011_09_26/2011_09_26_drive_0051_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 1290 r
+2011_10_03/2011_10_03_drive_0034_sync 2225 r
+2011_09_30/2011_09_30_drive_0034_sync 525 r
+2011_10_03/2011_10_03_drive_0042_sync 506 l
+2011_10_03/2011_10_03_drive_0034_sync 862 l
+2011_09_29/2011_09_29_drive_0004_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 2116 l
+2011_09_30/2011_09_30_drive_0028_sync 837 l
+2011_09_26/2011_09_26_drive_0022_sync 778 r
+2011_09_30/2011_09_30_drive_0034_sync 257 r
+2011_09_29/2011_09_29_drive_0004_sync 144 l
+2011_09_30/2011_09_30_drive_0020_sync 241 l
+2011_09_26/2011_09_26_drive_0061_sync 406 l
+2011_09_30/2011_09_30_drive_0020_sync 384 l
+2011_09_30/2011_09_30_drive_0028_sync 3284 l
+2011_09_26/2011_09_26_drive_0032_sync 343 l
+2011_09_26/2011_09_26_drive_0014_sync 126 r
+2011_09_29/2011_09_29_drive_0004_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 4204 r
+2011_09_26/2011_09_26_drive_0087_sync 531 r
+2011_09_30/2011_09_30_drive_0028_sync 5063 r
+2011_10_03/2011_10_03_drive_0034_sync 3190 r
+2011_10_03/2011_10_03_drive_0034_sync 1403 l
+2011_10_03/2011_10_03_drive_0034_sync 801 l
+2011_09_30/2011_09_30_drive_0033_sync 1441 r
+2011_10_03/2011_10_03_drive_0034_sync 802 r
+2011_09_29/2011_09_29_drive_0004_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 638 r
+2011_10_03/2011_10_03_drive_0042_sync 283 r
+2011_09_26/2011_09_26_drive_0087_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 32 r
+2011_09_30/2011_09_30_drive_0033_sync 849 l
+2011_09_30/2011_09_30_drive_0028_sync 3982 l
+2011_09_30/2011_09_30_drive_0028_sync 3067 l
+2011_09_26/2011_09_26_drive_0087_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 206 l
+2011_10_03/2011_10_03_drive_0034_sync 1206 r
+2011_09_30/2011_09_30_drive_0028_sync 65 r
+2011_09_26/2011_09_26_drive_0039_sync 61 r
+2011_09_26/2011_09_26_drive_0014_sync 300 r
+2011_09_30/2011_09_30_drive_0028_sync 5157 r
+2011_09_30/2011_09_30_drive_0020_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 4776 l
+2011_09_26/2011_09_26_drive_0061_sync 665 l
+2011_10_03/2011_10_03_drive_0042_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 3585 r
+2011_10_03/2011_10_03_drive_0034_sync 1274 l
+2011_09_30/2011_09_30_drive_0028_sync 128 l
+2011_09_26/2011_09_26_drive_0019_sync 373 l
+2011_10_03/2011_10_03_drive_0042_sync 165 r
+2011_09_26/2011_09_26_drive_0061_sync 139 r
+2011_09_29/2011_09_29_drive_0026_sync 35 l
+2011_10_03/2011_10_03_drive_0034_sync 3873 l
+2011_10_03/2011_10_03_drive_0034_sync 3966 r
+2011_09_26/2011_09_26_drive_0095_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 4058 l
+2011_09_26/2011_09_26_drive_0017_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 4550 r
+2011_09_30/2011_09_30_drive_0028_sync 1997 r
+2011_09_26/2011_09_26_drive_0035_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 3099 r
+2011_09_30/2011_09_30_drive_0020_sync 439 r
+2011_10_03/2011_10_03_drive_0034_sync 1620 l
+2011_09_26/2011_09_26_drive_0091_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 945 l
+2011_09_30/2011_09_30_drive_0028_sync 3320 l
+2011_09_30/2011_09_30_drive_0033_sync 53 l
+2011_09_30/2011_09_30_drive_0033_sync 1188 r
+2011_09_30/2011_09_30_drive_0028_sync 990 l
+2011_09_26/2011_09_26_drive_0087_sync 591 l
+2011_09_26/2011_09_26_drive_0014_sync 98 l
+2011_09_30/2011_09_30_drive_0033_sync 61 r
+2011_10_03/2011_10_03_drive_0042_sync 79 l
+2011_09_30/2011_09_30_drive_0020_sync 793 r
+2011_09_26/2011_09_26_drive_0057_sync 132 r
+2011_09_30/2011_09_30_drive_0034_sync 105 l
+2011_09_26/2011_09_26_drive_0087_sync 461 l
+2011_09_30/2011_09_30_drive_0028_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 3963 r
+2011_09_30/2011_09_30_drive_0028_sync 3624 r
+2011_10_03/2011_10_03_drive_0034_sync 3263 l
+2011_09_26/2011_09_26_drive_0061_sync 640 r
+2011_09_26/2011_09_26_drive_0091_sync 176 r
+2011_09_30/2011_09_30_drive_0028_sync 3688 l
+2011_10_03/2011_10_03_drive_0034_sync 2307 l
+2011_10_03/2011_10_03_drive_0042_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 2161 l
+2011_09_26/2011_09_26_drive_0057_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 2021 l
+2011_10_03/2011_10_03_drive_0034_sync 2814 r
+2011_09_26/2011_09_26_drive_0039_sync 173 l
+2011_09_26/2011_09_26_drive_0087_sync 382 l
+2011_10_03/2011_10_03_drive_0034_sync 4234 l
+2011_09_30/2011_09_30_drive_0033_sync 1335 r
+2011_09_26/2011_09_26_drive_0035_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 1519 r
+2011_09_30/2011_09_30_drive_0020_sync 509 r
+2011_09_30/2011_09_30_drive_0028_sync 3035 r
+2011_09_26/2011_09_26_drive_0070_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 3520 r
+2011_09_26/2011_09_26_drive_0070_sync 398 r
+2011_09_30/2011_09_30_drive_0020_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 4209 r
+2011_09_26/2011_09_26_drive_0001_sync 77 l
+2011_09_26/2011_09_26_drive_0051_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 4631 l
+2011_09_30/2011_09_30_drive_0020_sync 631 r
+2011_09_30/2011_09_30_drive_0028_sync 1455 l
+2011_09_30/2011_09_30_drive_0028_sync 3806 l
+2011_09_26/2011_09_26_drive_0028_sync 403 r
+2011_09_30/2011_09_30_drive_0033_sync 329 l
+2011_09_30/2011_09_30_drive_0028_sync 4302 l
+2011_09_26/2011_09_26_drive_0057_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 4036 l
+2011_09_30/2011_09_30_drive_0028_sync 232 r
+2011_09_26/2011_09_26_drive_0018_sync 6 r
+2011_09_26/2011_09_26_drive_0014_sync 124 l
+2011_09_26/2011_09_26_drive_0019_sync 447 r
+2011_09_30/2011_09_30_drive_0034_sync 1036 l
+2011_09_26/2011_09_26_drive_0032_sync 218 r
+2011_09_30/2011_09_30_drive_0020_sync 752 l
+2011_09_30/2011_09_30_drive_0028_sync 4866 r
+2011_10_03/2011_10_03_drive_0034_sync 828 l
+2011_09_30/2011_09_30_drive_0028_sync 3196 r
+2011_09_26/2011_09_26_drive_0019_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 5004 r
+2011_09_30/2011_09_30_drive_0034_sync 1107 l
+2011_09_30/2011_09_30_drive_0034_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 1741 r
+2011_09_30/2011_09_30_drive_0033_sync 347 r
+2011_09_26/2011_09_26_drive_0091_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 3249 r
+2011_09_30/2011_09_30_drive_0033_sync 686 l
+2011_10_03/2011_10_03_drive_0034_sync 4441 l
+2011_09_26/2011_09_26_drive_0011_sync 59 l
+2011_09_26/2011_09_26_drive_0028_sync 308 l
+2011_09_30/2011_09_30_drive_0028_sync 1269 l
+2011_09_30/2011_09_30_drive_0028_sync 465 l
+2011_09_26/2011_09_26_drive_0061_sync 693 r
+2011_09_30/2011_09_30_drive_0028_sync 1546 r
+2011_10_03/2011_10_03_drive_0034_sync 2012 r
+2011_10_03/2011_10_03_drive_0042_sync 554 r
+2011_09_30/2011_09_30_drive_0020_sync 405 l
+2011_09_26/2011_09_26_drive_0015_sync 64 l
+2011_09_30/2011_09_30_drive_0020_sync 697 l
+2011_09_30/2011_09_30_drive_0033_sync 1538 l
+2011_10_03/2011_10_03_drive_0034_sync 3748 l
+2011_09_26/2011_09_26_drive_0070_sync 176 l
+2011_09_30/2011_09_30_drive_0034_sync 873 l
+2011_10_03/2011_10_03_drive_0034_sync 3992 l
+2011_09_26/2011_09_26_drive_0061_sync 651 r
+2011_09_30/2011_09_30_drive_0028_sync 4693 r
+2011_10_03/2011_10_03_drive_0034_sync 718 l
+2011_09_30/2011_09_30_drive_0034_sync 975 l
+2011_09_30/2011_09_30_drive_0028_sync 3348 l
+2011_09_30/2011_09_30_drive_0028_sync 3548 r
+2011_09_26/2011_09_26_drive_0061_sync 524 l
+2011_09_30/2011_09_30_drive_0020_sync 769 r
+2011_10_03/2011_10_03_drive_0034_sync 3592 r
+2011_10_03/2011_10_03_drive_0042_sync 971 l
+2011_09_30/2011_09_30_drive_0033_sync 1583 l
+2011_09_26/2011_09_26_drive_0104_sync 65 r
+2011_09_30/2011_09_30_drive_0033_sync 1167 r
+2011_10_03/2011_10_03_drive_0034_sync 3692 r
+2011_09_29/2011_09_29_drive_0004_sync 61 r
+2011_09_26/2011_09_26_drive_0057_sync 158 r
+2011_09_26/2011_09_26_drive_0039_sync 189 r
+2011_09_26/2011_09_26_drive_0051_sync 194 r
+2011_09_26/2011_09_26_drive_0091_sync 52 r
+2011_09_30/2011_09_30_drive_0033_sync 1013 l
+2011_10_03/2011_10_03_drive_0042_sync 665 r
+2011_10_03/2011_10_03_drive_0034_sync 321 r
+2011_10_03/2011_10_03_drive_0034_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 12 r
+2011_09_26/2011_09_26_drive_0028_sync 421 r
+2011_09_30/2011_09_30_drive_0028_sync 3141 l
+2011_09_30/2011_09_30_drive_0034_sync 277 l
+2011_09_30/2011_09_30_drive_0020_sync 34 r
+2011_09_26/2011_09_26_drive_0028_sync 153 r
+2011_09_30/2011_09_30_drive_0033_sync 1023 l
+2011_09_30/2011_09_30_drive_0028_sync 2431 r
+2011_09_26/2011_09_26_drive_0028_sync 275 l
+2011_09_26/2011_09_26_drive_0051_sync 32 l
+2011_09_26/2011_09_26_drive_0028_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 4556 r
+2011_09_30/2011_09_30_drive_0028_sync 2956 r
+2011_09_28/2011_09_28_drive_0001_sync 76 r
+2011_09_26/2011_09_26_drive_0057_sync 212 l
+2011_09_30/2011_09_30_drive_0033_sync 1359 r
+2011_09_30/2011_09_30_drive_0028_sync 584 l
+2011_09_30/2011_09_30_drive_0033_sync 120 l
+2011_09_30/2011_09_30_drive_0020_sync 931 l
+2011_09_26/2011_09_26_drive_0018_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 49 r
+2011_09_26/2011_09_26_drive_0113_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 169 l
+2011_09_26/2011_09_26_drive_0057_sync 243 r
+2011_09_26/2011_09_26_drive_0051_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 421 r
+2011_09_29/2011_09_29_drive_0004_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 2189 l
+2011_09_30/2011_09_30_drive_0033_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 345 r
+2011_09_26/2011_09_26_drive_0019_sync 364 r
+2011_09_30/2011_09_30_drive_0028_sync 1786 r
+2011_09_30/2011_09_30_drive_0028_sync 2030 r
+2011_10_03/2011_10_03_drive_0034_sync 4213 r
+2011_09_26/2011_09_26_drive_0011_sync 193 l
+2011_09_26/2011_09_26_drive_0011_sync 67 r
+2011_09_26/2011_09_26_drive_0091_sync 314 l
+2011_10_03/2011_10_03_drive_0034_sync 3702 l
+2011_10_03/2011_10_03_drive_0034_sync 1605 r
+2011_10_03/2011_10_03_drive_0034_sync 2134 r
+2011_09_30/2011_09_30_drive_0028_sync 3949 r
+2011_09_26/2011_09_26_drive_0039_sync 266 l
+2011_09_26/2011_09_26_drive_0022_sync 355 l
+2011_10_03/2011_10_03_drive_0034_sync 3257 l
+2011_09_26/2011_09_26_drive_0039_sync 272 l
+2011_09_30/2011_09_30_drive_0034_sync 369 r
+2011_10_03/2011_10_03_drive_0042_sync 881 r
+2011_09_26/2011_09_26_drive_0070_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 4495 l
+2011_09_30/2011_09_30_drive_0034_sync 691 l
+2011_09_30/2011_09_30_drive_0020_sync 358 l
+2011_09_26/2011_09_26_drive_0070_sync 357 l
+2011_09_30/2011_09_30_drive_0020_sync 783 l
+2011_09_26/2011_09_26_drive_0039_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 1437 r
+2011_10_03/2011_10_03_drive_0034_sync 1201 r
+2011_10_03/2011_10_03_drive_0034_sync 4473 l
+2011_09_30/2011_09_30_drive_0034_sync 1068 r
+2011_09_26/2011_09_26_drive_0061_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 2702 l
+2011_10_03/2011_10_03_drive_0034_sync 900 l
+2011_09_26/2011_09_26_drive_0039_sync 103 l
+2011_09_30/2011_09_30_drive_0034_sync 1118 r
+2011_09_26/2011_09_26_drive_0032_sync 210 l
+2011_09_26/2011_09_26_drive_0091_sync 324 r
+2011_09_26/2011_09_26_drive_0061_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 4711 l
+2011_09_26/2011_09_26_drive_0028_sync 32 r
+2011_09_26/2011_09_26_drive_0104_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 2694 l
+2011_09_30/2011_09_30_drive_0028_sync 3085 l
+2011_09_30/2011_09_30_drive_0034_sync 861 l
+2011_09_30/2011_09_30_drive_0020_sync 798 l
+2011_10_03/2011_10_03_drive_0034_sync 1875 r
+2011_09_30/2011_09_30_drive_0028_sync 4721 l
+2011_09_30/2011_09_30_drive_0033_sync 1362 r
+2011_09_30/2011_09_30_drive_0028_sync 880 r
+2011_09_30/2011_09_30_drive_0028_sync 4561 l
+2011_10_03/2011_10_03_drive_0034_sync 928 r
+2011_09_30/2011_09_30_drive_0028_sync 1254 r
+2011_09_30/2011_09_30_drive_0028_sync 1762 r
+2011_10_03/2011_10_03_drive_0034_sync 2031 r
+2011_09_30/2011_09_30_drive_0033_sync 1202 l
+2011_09_30/2011_09_30_drive_0034_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 2325 r
+2011_09_30/2011_09_30_drive_0028_sync 1138 r
+2011_10_03/2011_10_03_drive_0034_sync 3990 r
+2011_09_30/2011_09_30_drive_0020_sync 352 l
+2011_09_30/2011_09_30_drive_0028_sync 2436 l
+2011_09_30/2011_09_30_drive_0028_sync 3823 l
+2011_10_03/2011_10_03_drive_0042_sync 260 l
+2011_09_26/2011_09_26_drive_0061_sync 553 r
+2011_10_03/2011_10_03_drive_0034_sync 4096 l
+2011_10_03/2011_10_03_drive_0034_sync 1960 r
+2011_09_26/2011_09_26_drive_0051_sync 168 l
+2011_09_30/2011_09_30_drive_0028_sync 4295 l
+2011_09_26/2011_09_26_drive_0061_sync 384 l
+2011_09_26/2011_09_26_drive_0057_sync 179 r
+2011_09_26/2011_09_26_drive_0035_sync 62 r
+2011_09_26/2011_09_26_drive_0032_sync 90 r
+2011_10_03/2011_10_03_drive_0034_sync 45 l
+2011_09_30/2011_09_30_drive_0034_sync 845 l
+2011_09_30/2011_09_30_drive_0028_sync 1285 l
+2011_09_29/2011_09_29_drive_0026_sync 19 r
+2011_09_26/2011_09_26_drive_0018_sync 202 r
+2011_09_30/2011_09_30_drive_0028_sync 183 l
+2011_09_30/2011_09_30_drive_0034_sync 1176 l
+2011_10_03/2011_10_03_drive_0034_sync 4486 l
+2011_09_30/2011_09_30_drive_0028_sync 3377 l
+2011_09_30/2011_09_30_drive_0028_sync 5158 r
+2011_09_30/2011_09_30_drive_0028_sync 4070 r
+2011_09_30/2011_09_30_drive_0028_sync 3282 r
+2011_09_26/2011_09_26_drive_0091_sync 335 r
+2011_09_26/2011_09_26_drive_0087_sync 593 l
+2011_10_03/2011_10_03_drive_0042_sync 554 l
+2011_09_26/2011_09_26_drive_0061_sync 535 l
+2011_10_03/2011_10_03_drive_0034_sync 4225 l
+2011_10_03/2011_10_03_drive_0034_sync 3677 r
+2011_09_30/2011_09_30_drive_0033_sync 1446 l
+2011_10_03/2011_10_03_drive_0034_sync 4344 l
+2011_10_03/2011_10_03_drive_0042_sync 293 r
+2011_09_26/2011_09_26_drive_0095_sync 144 l
+2011_09_26/2011_09_26_drive_0028_sync 278 r
+2011_10_03/2011_10_03_drive_0034_sync 996 l
+2011_09_30/2011_09_30_drive_0028_sync 4519 l
+2011_09_29/2011_09_29_drive_0004_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 1925 r
+2011_09_30/2011_09_30_drive_0034_sync 113 r
+2011_09_30/2011_09_30_drive_0033_sync 1089 r
+2011_09_30/2011_09_30_drive_0020_sync 704 l
+2011_09_26/2011_09_26_drive_0104_sync 179 l
+2011_09_26/2011_09_26_drive_0011_sync 178 l
+2011_09_30/2011_09_30_drive_0033_sync 890 r
+2011_09_30/2011_09_30_drive_0028_sync 1764 l
+2011_09_26/2011_09_26_drive_0104_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 3423 l
+2011_09_26/2011_09_26_drive_0057_sync 210 r
+2011_09_26/2011_09_26_drive_0113_sync 86 l
+2011_09_30/2011_09_30_drive_0028_sync 4003 l
+2011_09_30/2011_09_30_drive_0034_sync 977 r
+2011_09_30/2011_09_30_drive_0033_sync 837 l
+2011_09_30/2011_09_30_drive_0028_sync 5051 r
+2011_10_03/2011_10_03_drive_0034_sync 969 r
+2011_10_03/2011_10_03_drive_0034_sync 241 r
+2011_09_26/2011_09_26_drive_0061_sync 660 l
+2011_09_30/2011_09_30_drive_0028_sync 2332 r
+2011_09_30/2011_09_30_drive_0028_sync 2806 r
+2011_09_30/2011_09_30_drive_0028_sync 352 l
+2011_10_03/2011_10_03_drive_0034_sync 2123 l
+2011_09_30/2011_09_30_drive_0033_sync 95 l
+2011_09_30/2011_09_30_drive_0033_sync 352 l
+2011_09_30/2011_09_30_drive_0028_sync 1670 l
+2011_10_03/2011_10_03_drive_0034_sync 2988 r
+2011_10_03/2011_10_03_drive_0034_sync 430 l
+2011_09_30/2011_09_30_drive_0028_sync 3628 r
+2011_09_26/2011_09_26_drive_0091_sync 317 r
+2011_09_30/2011_09_30_drive_0033_sync 593 r
+2011_09_30/2011_09_30_drive_0028_sync 1189 r
+2011_09_26/2011_09_26_drive_0091_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 336 l
+2011_09_26/2011_09_26_drive_0019_sync 299 l
+2011_09_30/2011_09_30_drive_0028_sync 3783 r
+2011_09_26/2011_09_26_drive_0104_sync 119 r
+2011_09_26/2011_09_26_drive_0019_sync 383 r
+2011_09_30/2011_09_30_drive_0033_sync 752 l
+2011_09_26/2011_09_26_drive_0061_sync 613 r
+2011_09_26/2011_09_26_drive_0104_sync 174 r
+2011_09_26/2011_09_26_drive_0022_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 39 l
+2011_09_30/2011_09_30_drive_0033_sync 1523 l
+2011_09_30/2011_09_30_drive_0034_sync 368 r
+2011_09_26/2011_09_26_drive_0019_sync 55 r
+2011_09_26/2011_09_26_drive_0022_sync 585 r
+2011_09_30/2011_09_30_drive_0028_sync 1901 l
+2011_09_26/2011_09_26_drive_0104_sync 17 r
+2011_10_03/2011_10_03_drive_0034_sync 2597 r
+2011_09_26/2011_09_26_drive_0019_sync 92 l
+2011_09_26/2011_09_26_drive_0014_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 3937 r
+2011_09_30/2011_09_30_drive_0028_sync 2390 l
+2011_09_26/2011_09_26_drive_0039_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 4457 r
+2011_09_29/2011_09_29_drive_0026_sync 15 l
+2011_09_30/2011_09_30_drive_0020_sync 363 l
+2011_09_29/2011_09_29_drive_0004_sync 131 r
+2011_10_03/2011_10_03_drive_0042_sync 792 r
+2011_09_30/2011_09_30_drive_0020_sync 764 r
+2011_09_30/2011_09_30_drive_0028_sync 1084 r
+2011_09_26/2011_09_26_drive_0001_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 2293 r
+2011_09_30/2011_09_30_drive_0020_sync 69 l
+2011_09_30/2011_09_30_drive_0028_sync 2773 r
+2011_10_03/2011_10_03_drive_0034_sync 879 r
+2011_09_26/2011_09_26_drive_0028_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 2132 r
+2011_09_26/2011_09_26_drive_0022_sync 607 l
+2011_10_03/2011_10_03_drive_0042_sync 880 r
+2011_09_30/2011_09_30_drive_0020_sync 233 r
+2011_09_29/2011_09_29_drive_0026_sync 70 r
+2011_09_26/2011_09_26_drive_0051_sync 81 l
+2011_09_26/2011_09_26_drive_0104_sync 78 r
+2011_09_30/2011_09_30_drive_0020_sync 369 r
+2011_09_26/2011_09_26_drive_0087_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 4427 l
+2011_09_26/2011_09_26_drive_0087_sync 530 l
+2011_09_26/2011_09_26_drive_0087_sync 421 r
+2011_10_03/2011_10_03_drive_0042_sync 797 l
+2011_10_03/2011_10_03_drive_0034_sync 2318 r
+2011_09_30/2011_09_30_drive_0028_sync 3506 l
+2011_09_30/2011_09_30_drive_0033_sync 19 l
+2011_09_30/2011_09_30_drive_0033_sync 537 l
+2011_09_26/2011_09_26_drive_0032_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 647 r
+2011_10_03/2011_10_03_drive_0042_sync 868 l
+2011_09_30/2011_09_30_drive_0028_sync 3304 r
+2011_09_30/2011_09_30_drive_0034_sync 1134 l
+2011_10_03/2011_10_03_drive_0034_sync 4458 l
+2011_09_30/2011_09_30_drive_0028_sync 3812 r
+2011_09_26/2011_09_26_drive_0019_sync 268 r
+2011_09_26/2011_09_26_drive_0051_sync 90 l
+2011_09_26/2011_09_26_drive_0022_sync 371 l
+2011_09_26/2011_09_26_drive_0039_sync 200 l
+2011_10_03/2011_10_03_drive_0042_sync 943 l
+2011_09_26/2011_09_26_drive_0095_sync 241 r
+2011_09_30/2011_09_30_drive_0033_sync 834 r
+2011_09_26/2011_09_26_drive_0017_sync 6 r
+2011_09_26/2011_09_26_drive_0032_sync 235 r
+2011_09_26/2011_09_26_drive_0061_sync 586 r
+2011_09_26/2011_09_26_drive_0019_sync 177 l
+2011_09_29/2011_09_29_drive_0004_sync 281 r
+2011_10_03/2011_10_03_drive_0034_sync 3721 r
+2011_09_26/2011_09_26_drive_0104_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 5109 r
+2011_10_03/2011_10_03_drive_0034_sync 1681 l
+2011_09_26/2011_09_26_drive_0061_sync 629 r
+2011_10_03/2011_10_03_drive_0034_sync 2707 l
+2011_09_26/2011_09_26_drive_0051_sync 294 l
+2011_09_26/2011_09_26_drive_0061_sync 87 r
+2011_09_26/2011_09_26_drive_0022_sync 203 l
+2011_09_26/2011_09_26_drive_0022_sync 80 r
+2011_09_26/2011_09_26_drive_0113_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 489 l
+2011_09_30/2011_09_30_drive_0034_sync 674 l
+2011_10_03/2011_10_03_drive_0034_sync 1402 r
+2011_09_26/2011_09_26_drive_0028_sync 207 l
+2011_09_26/2011_09_26_drive_0051_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 4606 l
+2011_10_03/2011_10_03_drive_0034_sync 3643 r
+2011_09_26/2011_09_26_drive_0087_sync 584 r
+2011_09_30/2011_09_30_drive_0028_sync 4519 r
+2011_09_26/2011_09_26_drive_0051_sync 330 r
+2011_09_26/2011_09_26_drive_0022_sync 667 l
+2011_09_30/2011_09_30_drive_0028_sync 3577 l
+2011_09_26/2011_09_26_drive_0014_sync 289 l
+2011_09_30/2011_09_30_drive_0028_sync 152 r
+2011_09_30/2011_09_30_drive_0028_sync 1852 l
+2011_10_03/2011_10_03_drive_0034_sync 3398 l
+2011_09_26/2011_09_26_drive_0028_sync 6 r
+2011_10_03/2011_10_03_drive_0042_sync 579 l
+2011_09_30/2011_09_30_drive_0033_sync 1291 r
+2011_09_26/2011_09_26_drive_0019_sync 245 l
+2011_09_30/2011_09_30_drive_0034_sync 981 r
+2011_10_03/2011_10_03_drive_0034_sync 2382 l
+2011_09_26/2011_09_26_drive_0022_sync 106 r
+2011_09_29/2011_09_29_drive_0026_sync 40 l
+2011_09_26/2011_09_26_drive_0028_sync 422 l
+2011_09_26/2011_09_26_drive_0017_sync 49 r
+2011_09_26/2011_09_26_drive_0028_sync 265 r
+2011_09_30/2011_09_30_drive_0020_sync 703 r
+2011_09_26/2011_09_26_drive_0087_sync 458 l
+2011_10_03/2011_10_03_drive_0034_sync 996 r
+2011_10_03/2011_10_03_drive_0034_sync 2324 l
+2011_10_03/2011_10_03_drive_0034_sync 4575 l
+2011_09_30/2011_09_30_drive_0020_sync 807 l
+2011_09_30/2011_09_30_drive_0020_sync 735 l
+2011_09_30/2011_09_30_drive_0028_sync 537 l
+2011_09_30/2011_09_30_drive_0028_sync 4454 r
+2011_09_26/2011_09_26_drive_0019_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 2136 l
+2011_09_30/2011_09_30_drive_0028_sync 2193 r
+2011_10_03/2011_10_03_drive_0034_sync 1117 r
+2011_09_30/2011_09_30_drive_0033_sync 515 r
+2011_09_30/2011_09_30_drive_0020_sync 688 l
+2011_10_03/2011_10_03_drive_0034_sync 1837 r
+2011_09_26/2011_09_26_drive_0018_sync 211 r
+2011_09_26/2011_09_26_drive_0070_sync 297 r
+2011_09_26/2011_09_26_drive_0022_sync 278 r
+2011_09_30/2011_09_30_drive_0028_sync 2515 l
+2011_10_03/2011_10_03_drive_0034_sync 3028 l
+2011_09_30/2011_09_30_drive_0034_sync 1168 r
+2011_10_03/2011_10_03_drive_0034_sync 572 r
+2011_10_03/2011_10_03_drive_0034_sync 602 r
+2011_09_26/2011_09_26_drive_0070_sync 190 l
+2011_09_26/2011_09_26_drive_0001_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 2936 l
+2011_09_26/2011_09_26_drive_0060_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 3335 l
+2011_10_03/2011_10_03_drive_0034_sync 4197 l
+2011_09_26/2011_09_26_drive_0022_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 42 r
+2011_09_26/2011_09_26_drive_0001_sync 85 r
+2011_09_26/2011_09_26_drive_0070_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 235 l
+2011_09_30/2011_09_30_drive_0033_sync 1018 r
+2011_09_26/2011_09_26_drive_0061_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 3404 r
+2011_09_30/2011_09_30_drive_0034_sync 910 r
+2011_09_26/2011_09_26_drive_0015_sync 220 l
+2011_10_03/2011_10_03_drive_0034_sync 1815 l
+2011_09_30/2011_09_30_drive_0028_sync 5082 r
+2011_09_26/2011_09_26_drive_0015_sync 127 l
+2011_09_26/2011_09_26_drive_0104_sync 243 l
+2011_09_26/2011_09_26_drive_0039_sync 214 r
+2011_09_30/2011_09_30_drive_0033_sync 432 r
+2011_09_30/2011_09_30_drive_0028_sync 3654 l
+2011_09_26/2011_09_26_drive_0057_sync 270 r
+2011_09_30/2011_09_30_drive_0028_sync 2302 r
+2011_09_30/2011_09_30_drive_0033_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 1680 r
+2011_10_03/2011_10_03_drive_0034_sync 1028 l
+2011_10_03/2011_10_03_drive_0034_sync 3298 l
+2011_09_26/2011_09_26_drive_0087_sync 600 l
+2011_10_03/2011_10_03_drive_0034_sync 1808 l
+2011_09_26/2011_09_26_drive_0061_sync 601 l
+2011_10_03/2011_10_03_drive_0034_sync 1091 r
+2011_09_30/2011_09_30_drive_0020_sync 849 r
+2011_10_03/2011_10_03_drive_0034_sync 3158 r
+2011_10_03/2011_10_03_drive_0034_sync 4574 r
+2011_10_03/2011_10_03_drive_0042_sync 978 l
+2011_10_03/2011_10_03_drive_0042_sync 801 r
+2011_09_30/2011_09_30_drive_0033_sync 588 r
+2011_09_30/2011_09_30_drive_0033_sync 1356 l
+2011_09_30/2011_09_30_drive_0034_sync 154 r
+2011_09_30/2011_09_30_drive_0034_sync 827 r
+2011_09_26/2011_09_26_drive_0022_sync 618 r
+2011_10_03/2011_10_03_drive_0042_sync 800 r
+2011_10_03/2011_10_03_drive_0034_sync 931 l
+2011_09_26/2011_09_26_drive_0061_sync 224 r
+2011_10_03/2011_10_03_drive_0034_sync 3872 r
+2011_09_30/2011_09_30_drive_0028_sync 3814 l
+2011_09_26/2011_09_26_drive_0061_sync 168 l
+2011_09_26/2011_09_26_drive_0051_sync 305 r
+2011_10_03/2011_10_03_drive_0034_sync 4422 l
+2011_09_26/2011_09_26_drive_0028_sync 24 r
+2011_09_26/2011_09_26_drive_0022_sync 82 l
+2011_09_26/2011_09_26_drive_0087_sync 119 l
+2011_09_26/2011_09_26_drive_0061_sync 13 r
+2011_09_30/2011_09_30_drive_0033_sync 586 r
+2011_09_30/2011_09_30_drive_0028_sync 532 r
+2011_10_03/2011_10_03_drive_0034_sync 3868 l
+2011_09_28/2011_09_28_drive_0001_sync 42 r
+2011_09_26/2011_09_26_drive_0061_sync 225 r
+2011_09_30/2011_09_30_drive_0028_sync 4445 r
+2011_09_30/2011_09_30_drive_0028_sync 480 l
+2011_09_30/2011_09_30_drive_0033_sync 972 r
+2011_09_30/2011_09_30_drive_0034_sync 3 r
+2011_10_03/2011_10_03_drive_0034_sync 2356 r
+2011_10_03/2011_10_03_drive_0034_sync 4006 r
+2011_09_30/2011_09_30_drive_0033_sync 889 l
+2011_10_03/2011_10_03_drive_0034_sync 970 l
+2011_09_26/2011_09_26_drive_0039_sync 255 l
+2011_09_26/2011_09_26_drive_0019_sync 345 r
+2011_09_30/2011_09_30_drive_0020_sync 625 l
+2011_09_30/2011_09_30_drive_0033_sync 1504 l
+2011_09_30/2011_09_30_drive_0033_sync 969 r
+2011_09_26/2011_09_26_drive_0057_sync 190 r
+2011_10_03/2011_10_03_drive_0034_sync 541 r
+2011_10_03/2011_10_03_drive_0034_sync 3525 l
+2011_09_29/2011_09_29_drive_0004_sync 134 l
+2011_09_26/2011_09_26_drive_0087_sync 371 l
+2011_09_30/2011_09_30_drive_0033_sync 1421 r
+2011_09_30/2011_09_30_drive_0028_sync 1232 l
+2011_09_30/2011_09_30_drive_0028_sync 2058 r
+2011_09_26/2011_09_26_drive_0087_sync 538 l
+2011_09_30/2011_09_30_drive_0028_sync 516 r
+2011_10_03/2011_10_03_drive_0034_sync 1717 r
+2011_09_26/2011_09_26_drive_0104_sync 173 l
+2011_10_03/2011_10_03_drive_0042_sync 436 l
+2011_09_26/2011_09_26_drive_0061_sync 195 l
+2011_09_30/2011_09_30_drive_0020_sync 70 l
+2011_09_26/2011_09_26_drive_0104_sync 95 l
+2011_09_30/2011_09_30_drive_0020_sync 133 r
+2011_10_03/2011_10_03_drive_0034_sync 3135 r
+2011_09_30/2011_09_30_drive_0020_sync 583 l
+2011_10_03/2011_10_03_drive_0034_sync 855 r
+2011_09_30/2011_09_30_drive_0033_sync 1584 r
+2011_09_26/2011_09_26_drive_0019_sync 127 r
+2011_09_26/2011_09_26_drive_0104_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 1314 l
+2011_09_29/2011_09_29_drive_0004_sync 1 r
+2011_09_26/2011_09_26_drive_0057_sync 177 l
+2011_09_26/2011_09_26_drive_0032_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 4492 l
+2011_09_30/2011_09_30_drive_0028_sync 3715 l
+2011_09_26/2011_09_26_drive_0057_sync 277 r
+2011_09_26/2011_09_26_drive_0051_sync 323 r
+2011_09_30/2011_09_30_drive_0028_sync 2856 l
+2011_09_26/2011_09_26_drive_0022_sync 99 l
+2011_09_30/2011_09_30_drive_0033_sync 28 r
+2011_09_26/2011_09_26_drive_0061_sync 245 r
+2011_09_26/2011_09_26_drive_0019_sync 276 l
+2011_10_03/2011_10_03_drive_0034_sync 1184 r
+2011_10_03/2011_10_03_drive_0034_sync 3957 r
+2011_10_03/2011_10_03_drive_0042_sync 689 l
+2011_09_30/2011_09_30_drive_0020_sync 377 r
+2011_09_26/2011_09_26_drive_0087_sync 580 r
+2011_09_26/2011_09_26_drive_0018_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 1066 l
+2011_09_30/2011_09_30_drive_0028_sync 3800 l
+2011_10_03/2011_10_03_drive_0034_sync 775 l
+2011_09_26/2011_09_26_drive_0087_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 509 r
+2011_09_26/2011_09_26_drive_0057_sync 63 r
+2011_09_26/2011_09_26_drive_0015_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 4488 r
+2011_09_30/2011_09_30_drive_0028_sync 4603 r
+2011_09_30/2011_09_30_drive_0028_sync 2415 r
+2011_10_03/2011_10_03_drive_0042_sync 1144 l
+2011_10_03/2011_10_03_drive_0034_sync 1320 r
+2011_09_30/2011_09_30_drive_0034_sync 35 l
+2011_09_26/2011_09_26_drive_0022_sync 790 r
+2011_10_03/2011_10_03_drive_0034_sync 2600 r
+2011_09_30/2011_09_30_drive_0020_sync 527 l
+2011_09_30/2011_09_30_drive_0033_sync 304 l
+2011_09_26/2011_09_26_drive_0022_sync 506 l
+2011_10_03/2011_10_03_drive_0042_sync 220 l
+2011_09_30/2011_09_30_drive_0028_sync 2476 r
+2011_10_03/2011_10_03_drive_0034_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 4631 r
+2011_10_03/2011_10_03_drive_0042_sync 73 r
+2011_09_30/2011_09_30_drive_0028_sync 842 l
+2011_10_03/2011_10_03_drive_0034_sync 4420 r
+2011_09_26/2011_09_26_drive_0032_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 4107 r
+2011_09_26/2011_09_26_drive_0070_sync 212 l
+2011_09_30/2011_09_30_drive_0033_sync 1529 r
+2011_09_30/2011_09_30_drive_0028_sync 4138 r
+2011_09_30/2011_09_30_drive_0028_sync 4787 r
+2011_10_03/2011_10_03_drive_0034_sync 3126 r
+2011_09_30/2011_09_30_drive_0028_sync 109 r
+2011_09_30/2011_09_30_drive_0034_sync 1112 l
+2011_09_26/2011_09_26_drive_0104_sync 45 r
+2011_09_30/2011_09_30_drive_0034_sync 426 r
+2011_09_30/2011_09_30_drive_0034_sync 1080 r
+2011_09_26/2011_09_26_drive_0061_sync 567 l
+2011_09_26/2011_09_26_drive_0104_sync 92 l
+2011_09_30/2011_09_30_drive_0033_sync 1177 l
+2011_09_26/2011_09_26_drive_0113_sync 25 l
+2011_09_30/2011_09_30_drive_0033_sync 933 r
+2011_09_30/2011_09_30_drive_0033_sync 761 l
+2011_09_30/2011_09_30_drive_0033_sync 611 l
+2011_09_30/2011_09_30_drive_0028_sync 1334 l
+2011_09_30/2011_09_30_drive_0028_sync 1902 l
+2011_09_30/2011_09_30_drive_0028_sync 25 l
+2011_09_26/2011_09_26_drive_0057_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 414 r
+2011_09_26/2011_09_26_drive_0015_sync 241 r
+2011_10_03/2011_10_03_drive_0034_sync 3793 r
+2011_09_29/2011_09_29_drive_0004_sync 294 r
+2011_10_03/2011_10_03_drive_0034_sync 3740 r
+2011_10_03/2011_10_03_drive_0034_sync 3629 l
+2011_09_26/2011_09_26_drive_0104_sync 259 l
+2011_09_26/2011_09_26_drive_0051_sync 432 r
+2011_10_03/2011_10_03_drive_0042_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 485 l
+2011_10_03/2011_10_03_drive_0042_sync 189 r
+2011_10_03/2011_10_03_drive_0042_sync 701 r
+2011_09_26/2011_09_26_drive_0057_sync 131 r
+2011_09_30/2011_09_30_drive_0028_sync 1511 r
+2011_09_30/2011_09_30_drive_0033_sync 21 l
+2011_09_26/2011_09_26_drive_0061_sync 131 r
+2011_09_26/2011_09_26_drive_0061_sync 205 r
+2011_09_29/2011_09_29_drive_0004_sync 214 r
+2011_09_30/2011_09_30_drive_0034_sync 638 l
+2011_09_26/2011_09_26_drive_0070_sync 306 r
+2011_09_26/2011_09_26_drive_0051_sync 374 r
+2011_10_03/2011_10_03_drive_0042_sync 344 r
+2011_10_03/2011_10_03_drive_0034_sync 4660 r
+2011_09_30/2011_09_30_drive_0034_sync 149 l
+2011_09_30/2011_09_30_drive_0020_sync 810 r
+2011_09_30/2011_09_30_drive_0028_sync 658 r
+2011_09_30/2011_09_30_drive_0028_sync 1110 r
+2011_09_26/2011_09_26_drive_0014_sync 234 r
+2011_09_26/2011_09_26_drive_0022_sync 642 r
+2011_09_26/2011_09_26_drive_0087_sync 216 r
+2011_09_26/2011_09_26_drive_0057_sync 199 r
+2011_09_26/2011_09_26_drive_0015_sync 22 l
+2011_10_03/2011_10_03_drive_0034_sync 1740 l
+2011_09_30/2011_09_30_drive_0033_sync 700 r
+2011_09_30/2011_09_30_drive_0033_sync 814 l
+2011_10_03/2011_10_03_drive_0034_sync 1613 r
+2011_09_30/2011_09_30_drive_0028_sync 201 r
+2011_09_26/2011_09_26_drive_0104_sync 64 l
+2011_09_30/2011_09_30_drive_0028_sync 3448 l
+2011_09_30/2011_09_30_drive_0020_sync 1022 l
+2011_09_30/2011_09_30_drive_0028_sync 4404 r
+2011_10_03/2011_10_03_drive_0034_sync 2451 l
+2011_09_30/2011_09_30_drive_0034_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 1920 l
+2011_09_30/2011_09_30_drive_0028_sync 3524 r
+2011_09_30/2011_09_30_drive_0028_sync 4276 l
+2011_10_03/2011_10_03_drive_0034_sync 1901 r
+2011_09_30/2011_09_30_drive_0028_sync 4195 r
+2011_09_30/2011_09_30_drive_0028_sync 5105 r
+2011_09_26/2011_09_26_drive_0051_sync 266 r
+2011_09_30/2011_09_30_drive_0028_sync 2059 l
+2011_09_30/2011_09_30_drive_0020_sync 877 r
+2011_09_26/2011_09_26_drive_0051_sync 55 r
+2011_09_26/2011_09_26_drive_0022_sync 28 r
+2011_09_30/2011_09_30_drive_0034_sync 432 r
+2011_09_30/2011_09_30_drive_0028_sync 4197 r
+2011_09_26/2011_09_26_drive_0051_sync 84 l
+2011_09_26/2011_09_26_drive_0070_sync 144 l
+2011_09_29/2011_09_29_drive_0004_sync 59 l
+2011_09_26/2011_09_26_drive_0028_sync 105 r
+2011_09_30/2011_09_30_drive_0028_sync 5145 r
+2011_09_26/2011_09_26_drive_0015_sync 219 l
+2011_09_30/2011_09_30_drive_0034_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 967 r
+2011_09_30/2011_09_30_drive_0028_sync 2061 r
+2011_10_03/2011_10_03_drive_0034_sync 1562 l
+2011_09_26/2011_09_26_drive_0019_sync 381 r
+2011_09_26/2011_09_26_drive_0070_sync 331 l
+2011_09_30/2011_09_30_drive_0028_sync 3878 l
+2011_09_26/2011_09_26_drive_0028_sync 23 l
+2011_09_26/2011_09_26_drive_0104_sync 170 r
+2011_09_30/2011_09_30_drive_0020_sync 459 r
+2011_09_26/2011_09_26_drive_0061_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 2108 l
+2011_09_26/2011_09_26_drive_0091_sync 325 r
+2011_10_03/2011_10_03_drive_0034_sync 4431 l
+2011_09_30/2011_09_30_drive_0028_sync 3179 r
+2011_09_30/2011_09_30_drive_0034_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 1447 r
+2011_09_26/2011_09_26_drive_0091_sync 292 r
+2011_10_03/2011_10_03_drive_0034_sync 1190 l
+2011_10_03/2011_10_03_drive_0034_sync 3440 l
+2011_09_30/2011_09_30_drive_0033_sync 405 l
+2011_09_30/2011_09_30_drive_0028_sync 3937 r
+2011_10_03/2011_10_03_drive_0034_sync 1140 r
+2011_09_26/2011_09_26_drive_0015_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 3657 l
+2011_09_30/2011_09_30_drive_0028_sync 4545 r
+2011_09_29/2011_09_29_drive_0026_sync 8 r
+2011_09_30/2011_09_30_drive_0028_sync 4726 l
+2011_10_03/2011_10_03_drive_0042_sync 487 l
+2011_09_26/2011_09_26_drive_0070_sync 152 r
+2011_10_03/2011_10_03_drive_0042_sync 907 l
+2011_09_26/2011_09_26_drive_0015_sync 63 l
+2011_09_26/2011_09_26_drive_0057_sync 7 r
+2011_09_30/2011_09_30_drive_0033_sync 769 r
+2011_09_26/2011_09_26_drive_0113_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 439 r
+2011_09_30/2011_09_30_drive_0033_sync 1387 l
+2011_10_03/2011_10_03_drive_0034_sync 2705 l
+2011_09_26/2011_09_26_drive_0039_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 2040 l
+2011_09_30/2011_09_30_drive_0033_sync 1125 r
+2011_09_26/2011_09_26_drive_0022_sync 101 r
+2011_09_26/2011_09_26_drive_0011_sync 209 r
+2011_09_26/2011_09_26_drive_0087_sync 651 l
+2011_09_26/2011_09_26_drive_0014_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 3387 r
+2011_10_03/2011_10_03_drive_0034_sync 1159 r
+2011_10_03/2011_10_03_drive_0034_sync 213 l
+2011_09_30/2011_09_30_drive_0020_sync 447 r
+2011_09_30/2011_09_30_drive_0028_sync 4761 r
+2011_09_26/2011_09_26_drive_0113_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 524 l
+2011_09_26/2011_09_26_drive_0039_sync 220 l
+2011_10_03/2011_10_03_drive_0034_sync 1716 r
+2011_09_26/2011_09_26_drive_0057_sync 49 l
+2011_09_26/2011_09_26_drive_0113_sync 71 l
+2011_09_26/2011_09_26_drive_0028_sync 352 l
+2011_09_26/2011_09_26_drive_0032_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 2825 l
+2011_10_03/2011_10_03_drive_0034_sync 708 r
+2011_09_26/2011_09_26_drive_0032_sync 152 r
+2011_09_30/2011_09_30_drive_0028_sync 1323 r
+2011_09_30/2011_09_30_drive_0034_sync 801 r
+2011_10_03/2011_10_03_drive_0034_sync 3231 l
+2011_09_30/2011_09_30_drive_0028_sync 409 r
+2011_09_26/2011_09_26_drive_0019_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 2124 r
+2011_09_30/2011_09_30_drive_0033_sync 930 l
+2011_09_26/2011_09_26_drive_0001_sync 73 r
+2011_09_26/2011_09_26_drive_0070_sync 50 r
+2011_09_26/2011_09_26_drive_0095_sync 161 l
+2011_09_26/2011_09_26_drive_0051_sync 360 l
+2011_09_26/2011_09_26_drive_0070_sync 249 r
+2011_10_03/2011_10_03_drive_0034_sync 3728 r
+2011_09_30/2011_09_30_drive_0028_sync 4691 r
+2011_10_03/2011_10_03_drive_0034_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 3037 r
+2011_09_30/2011_09_30_drive_0028_sync 398 l
+2011_09_26/2011_09_26_drive_0019_sync 208 l
+2011_09_26/2011_09_26_drive_0087_sync 341 r
+2011_10_03/2011_10_03_drive_0034_sync 3514 l
+2011_09_26/2011_09_26_drive_0087_sync 492 r
+2011_10_03/2011_10_03_drive_0034_sync 3178 r
+2011_09_26/2011_09_26_drive_0095_sync 13 l
+2011_09_30/2011_09_30_drive_0020_sync 1089 l
+2011_10_03/2011_10_03_drive_0042_sync 1124 r
+2011_09_26/2011_09_26_drive_0104_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 4002 r
+2011_09_26/2011_09_26_drive_0011_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 3033 r
+2011_09_30/2011_09_30_drive_0034_sync 102 l
+2011_09_26/2011_09_26_drive_0039_sync 388 l
+2011_09_29/2011_09_29_drive_0026_sync 88 l
+2011_09_26/2011_09_26_drive_0087_sync 491 l
+2011_09_30/2011_09_30_drive_0028_sync 1282 l
+2011_09_30/2011_09_30_drive_0033_sync 661 l
+2011_09_26/2011_09_26_drive_0028_sync 1 r
+2011_09_26/2011_09_26_drive_0011_sync 0 l
+2011_10_03/2011_10_03_drive_0034_sync 3251 r
+2011_09_26/2011_09_26_drive_0005_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 495 l
+2011_09_30/2011_09_30_drive_0028_sync 4567 l
+2011_09_29/2011_09_29_drive_0004_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 395 r
+2011_10_03/2011_10_03_drive_0034_sync 1082 l
+2011_09_26/2011_09_26_drive_0091_sync 305 l
+2011_09_30/2011_09_30_drive_0033_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 3886 l
+2011_09_30/2011_09_30_drive_0028_sync 3828 l
+2011_10_03/2011_10_03_drive_0034_sync 4535 l
+2011_09_26/2011_09_26_drive_0022_sync 536 l
+2011_09_30/2011_09_30_drive_0028_sync 1984 l
+2011_10_03/2011_10_03_drive_0034_sync 245 l
+2011_09_30/2011_09_30_drive_0028_sync 2115 r
+2011_10_03/2011_10_03_drive_0034_sync 4386 l
+2011_10_03/2011_10_03_drive_0034_sync 1775 r
+2011_10_03/2011_10_03_drive_0034_sync 1908 r
+2011_09_30/2011_09_30_drive_0028_sync 2 l
+2011_09_26/2011_09_26_drive_0022_sync 587 l
+2011_09_26/2011_09_26_drive_0057_sync 1 r
+2011_09_26/2011_09_26_drive_0091_sync 113 l
+2011_09_26/2011_09_26_drive_0095_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 358 l
+2011_09_30/2011_09_30_drive_0028_sync 163 l
+2011_09_30/2011_09_30_drive_0028_sync 2487 l
+2011_10_03/2011_10_03_drive_0034_sync 1067 r
+2011_09_26/2011_09_26_drive_0061_sync 59 r
+2011_09_26/2011_09_26_drive_0057_sync 139 r
+2011_09_26/2011_09_26_drive_0070_sync 154 l
+2011_09_30/2011_09_30_drive_0033_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 429 r
+2011_09_30/2011_09_30_drive_0034_sync 837 r
+2011_09_30/2011_09_30_drive_0020_sync 282 l
+2011_09_30/2011_09_30_drive_0028_sync 4101 l
+2011_09_26/2011_09_26_drive_0028_sync 133 l
+2011_09_30/2011_09_30_drive_0033_sync 578 l
+2011_09_30/2011_09_30_drive_0033_sync 595 l
+2011_09_26/2011_09_26_drive_0019_sync 6 r
+2011_09_26/2011_09_26_drive_0051_sync 62 l
+2011_09_29/2011_09_29_drive_0004_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 2346 r
+2011_09_30/2011_09_30_drive_0033_sync 534 r
+2011_09_30/2011_09_30_drive_0028_sync 4943 l
+2011_09_26/2011_09_26_drive_0061_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 3710 l
+2011_09_30/2011_09_30_drive_0028_sync 4062 r
+2011_09_26/2011_09_26_drive_0070_sync 22 r
+2011_09_30/2011_09_30_drive_0028_sync 2864 l
+2011_09_30/2011_09_30_drive_0028_sync 2005 l
+2011_10_03/2011_10_03_drive_0034_sync 1529 l
+2011_09_30/2011_09_30_drive_0033_sync 632 r
+2011_09_29/2011_09_29_drive_0004_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 1821 r
+2011_10_03/2011_10_03_drive_0034_sync 3096 l
+2011_10_03/2011_10_03_drive_0034_sync 2786 r
+2011_09_26/2011_09_26_drive_0019_sync 291 l
+2011_09_26/2011_09_26_drive_0104_sync 50 r
+2011_09_30/2011_09_30_drive_0034_sync 153 l
+2011_09_30/2011_09_30_drive_0033_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 2728 r
+2011_09_30/2011_09_30_drive_0028_sync 2086 r
+2011_09_26/2011_09_26_drive_0104_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 4610 r
+2011_09_26/2011_09_26_drive_0032_sync 363 r
+2011_09_30/2011_09_30_drive_0028_sync 4679 r
+2011_09_30/2011_09_30_drive_0028_sync 2176 l
+2011_09_30/2011_09_30_drive_0028_sync 4571 r
+2011_09_26/2011_09_26_drive_0095_sync 231 l
+2011_09_30/2011_09_30_drive_0033_sync 118 l
+2011_10_03/2011_10_03_drive_0034_sync 159 l
+2011_09_30/2011_09_30_drive_0033_sync 508 l
+2011_10_03/2011_10_03_drive_0034_sync 2912 r
+2011_09_26/2011_09_26_drive_0091_sync 254 l
+2011_10_03/2011_10_03_drive_0034_sync 3685 l
+2011_09_30/2011_09_30_drive_0028_sync 783 r
+2011_09_26/2011_09_26_drive_0032_sync 310 r
+2011_09_30/2011_09_30_drive_0028_sync 2304 l
+2011_09_30/2011_09_30_drive_0033_sync 503 r
+2011_09_26/2011_09_26_drive_0057_sync 298 r
+2011_09_30/2011_09_30_drive_0020_sync 422 l
+2011_09_30/2011_09_30_drive_0028_sync 652 l
+2011_09_26/2011_09_26_drive_0057_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 4850 l
+2011_09_26/2011_09_26_drive_0051_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 5046 l
+2011_09_30/2011_09_30_drive_0028_sync 4937 l
+2011_09_30/2011_09_30_drive_0028_sync 156 l
+2011_10_03/2011_10_03_drive_0034_sync 1051 l
+2011_09_26/2011_09_26_drive_0113_sync 39 l
+2011_09_26/2011_09_26_drive_0019_sync 244 r
+2011_09_26/2011_09_26_drive_0087_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 4002 l
+2011_09_26/2011_09_26_drive_0005_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4034 l
+2011_10_03/2011_10_03_drive_0034_sync 1788 r
+2011_09_30/2011_09_30_drive_0028_sync 2444 r
+2011_09_30/2011_09_30_drive_0028_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 1102 l
+2011_10_03/2011_10_03_drive_0034_sync 458 r
+2011_09_30/2011_09_30_drive_0034_sync 766 l
+2011_09_30/2011_09_30_drive_0033_sync 126 l
+2011_09_30/2011_09_30_drive_0034_sync 1098 l
+2011_09_30/2011_09_30_drive_0028_sync 3047 r
+2011_10_03/2011_10_03_drive_0042_sync 95 l
+2011_09_29/2011_09_29_drive_0004_sync 240 r
+2011_09_26/2011_09_26_drive_0051_sync 68 l
+2011_09_30/2011_09_30_drive_0034_sync 325 l
+2011_09_26/2011_09_26_drive_0070_sync 312 l
+2011_09_26/2011_09_26_drive_0039_sync 320 r
+2011_09_30/2011_09_30_drive_0034_sync 29 l
+2011_09_26/2011_09_26_drive_0104_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 3972 l
+2011_09_30/2011_09_30_drive_0033_sync 114 l
+2011_09_26/2011_09_26_drive_0022_sync 51 l
+2011_10_03/2011_10_03_drive_0042_sync 885 r
+2011_09_26/2011_09_26_drive_0070_sync 359 l
+2011_09_26/2011_09_26_drive_0019_sync 315 r
+2011_09_30/2011_09_30_drive_0028_sync 918 r
+2011_09_26/2011_09_26_drive_0070_sync 413 l
+2011_09_30/2011_09_30_drive_0028_sync 3707 r
+2011_09_30/2011_09_30_drive_0028_sync 2764 l
+2011_10_03/2011_10_03_drive_0034_sync 1122 l
+2011_10_03/2011_10_03_drive_0034_sync 3324 l
+2011_09_26/2011_09_26_drive_0032_sync 163 r
+2011_09_26/2011_09_26_drive_0011_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 3344 l
+2011_10_03/2011_10_03_drive_0034_sync 3943 r
+2011_09_30/2011_09_30_drive_0028_sync 127 l
+2011_09_26/2011_09_26_drive_0051_sync 119 r
+2011_10_03/2011_10_03_drive_0034_sync 778 l
+2011_09_30/2011_09_30_drive_0034_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 687 r
+2011_10_03/2011_10_03_drive_0034_sync 2929 r
+2011_09_26/2011_09_26_drive_0032_sync 158 r
+2011_10_03/2011_10_03_drive_0034_sync 1282 r
+2011_09_30/2011_09_30_drive_0033_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 3780 l
+2011_09_30/2011_09_30_drive_0028_sync 3098 l
+2011_09_30/2011_09_30_drive_0028_sync 3739 l
+2011_09_26/2011_09_26_drive_0022_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 3125 r
+2011_10_03/2011_10_03_drive_0042_sync 814 l
+2011_09_30/2011_09_30_drive_0020_sync 981 l
+2011_09_30/2011_09_30_drive_0028_sync 3122 l
+2011_09_26/2011_09_26_drive_0079_sync 13 r
+2011_09_26/2011_09_26_drive_0005_sync 133 r
+2011_10_03/2011_10_03_drive_0034_sync 3861 l
+2011_10_03/2011_10_03_drive_0034_sync 2424 r
+2011_10_03/2011_10_03_drive_0034_sync 4139 l
+2011_09_30/2011_09_30_drive_0033_sync 541 r
+2011_09_30/2011_09_30_drive_0020_sync 139 r
+2011_09_26/2011_09_26_drive_0028_sync 85 r
+2011_09_30/2011_09_30_drive_0034_sync 800 l
+2011_09_26/2011_09_26_drive_0087_sync 635 l
+2011_09_30/2011_09_30_drive_0033_sync 1146 l
+2011_09_30/2011_09_30_drive_0020_sync 987 r
+2011_10_03/2011_10_03_drive_0034_sync 473 l
+2011_09_26/2011_09_26_drive_0022_sync 719 l
+2011_09_30/2011_09_30_drive_0028_sync 4915 l
+2011_10_03/2011_10_03_drive_0034_sync 3662 l
+2011_10_03/2011_10_03_drive_0034_sync 2081 r
+2011_10_03/2011_10_03_drive_0034_sync 1644 l
+2011_09_30/2011_09_30_drive_0028_sync 3648 r
+2011_10_03/2011_10_03_drive_0034_sync 4208 l
+2011_09_26/2011_09_26_drive_0104_sync 194 l
+2011_10_03/2011_10_03_drive_0034_sync 857 l
+2011_10_03/2011_10_03_drive_0034_sync 2210 l
+2011_09_26/2011_09_26_drive_0070_sync 351 r
+2011_09_26/2011_09_26_drive_0032_sync 373 r
+2011_09_30/2011_09_30_drive_0028_sync 4650 r
+2011_10_03/2011_10_03_drive_0034_sync 217 r
+2011_09_26/2011_09_26_drive_0070_sync 178 l
+2011_09_30/2011_09_30_drive_0028_sync 4684 r
+2011_09_30/2011_09_30_drive_0033_sync 757 r
+2011_10_03/2011_10_03_drive_0034_sync 2250 l
+2011_09_26/2011_09_26_drive_0051_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 4415 l
+2011_09_26/2011_09_26_drive_0104_sync 280 l
+2011_09_26/2011_09_26_drive_0060_sync 8 l
+2011_09_26/2011_09_26_drive_0051_sync 243 r
+2011_09_26/2011_09_26_drive_0019_sync 331 l
+2011_09_30/2011_09_30_drive_0028_sync 4040 l
+2011_10_03/2011_10_03_drive_0034_sync 3553 l
+2011_09_26/2011_09_26_drive_0011_sync 57 l
+2011_09_26/2011_09_26_drive_0022_sync 433 r
+2011_09_30/2011_09_30_drive_0034_sync 6 l
+2011_09_30/2011_09_30_drive_0020_sync 667 r
+2011_09_30/2011_09_30_drive_0028_sync 1999 l
+2011_09_30/2011_09_30_drive_0033_sync 775 r
+2011_09_30/2011_09_30_drive_0033_sync 929 r
+2011_09_26/2011_09_26_drive_0061_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 1354 r
+2011_09_26/2011_09_26_drive_0051_sync 331 l
+2011_09_28/2011_09_28_drive_0001_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 2289 r
+2011_09_30/2011_09_30_drive_0020_sync 375 r
+2011_09_30/2011_09_30_drive_0028_sync 328 l
+2011_09_29/2011_09_29_drive_0004_sync 319 l
+2011_10_03/2011_10_03_drive_0034_sync 3839 l
+2011_09_30/2011_09_30_drive_0028_sync 2637 r
+2011_09_26/2011_09_26_drive_0061_sync 412 r
+2011_10_03/2011_10_03_drive_0042_sync 194 l
+2011_09_26/2011_09_26_drive_0022_sync 502 r
+2011_09_30/2011_09_30_drive_0034_sync 706 r
+2011_09_26/2011_09_26_drive_0035_sync 59 l
+2011_09_26/2011_09_26_drive_0070_sync 319 l
+2011_09_30/2011_09_30_drive_0028_sync 2261 r
+2011_09_26/2011_09_26_drive_0032_sync 356 l
+2011_09_26/2011_09_26_drive_0018_sync 106 l
+2011_10_03/2011_10_03_drive_0034_sync 2671 l
+2011_09_30/2011_09_30_drive_0028_sync 982 r
+2011_09_26/2011_09_26_drive_0079_sync 46 l
+2011_09_26/2011_09_26_drive_0091_sync 327 l
+2011_09_26/2011_09_26_drive_0032_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 1427 l
+2011_09_29/2011_09_29_drive_0026_sync 63 r
+2011_09_30/2011_09_30_drive_0028_sync 1586 l
+2011_10_03/2011_10_03_drive_0034_sync 4554 r
+2011_09_30/2011_09_30_drive_0033_sync 1584 l
+2011_10_03/2011_10_03_drive_0034_sync 4106 l
+2011_09_30/2011_09_30_drive_0020_sync 92 r
+2011_09_30/2011_09_30_drive_0034_sync 1082 l
+2011_09_30/2011_09_30_drive_0020_sync 476 l
+2011_10_03/2011_10_03_drive_0042_sync 494 r
+2011_10_03/2011_10_03_drive_0034_sync 167 l
+2011_09_26/2011_09_26_drive_0022_sync 361 r
+2011_09_30/2011_09_30_drive_0028_sync 4460 r
+2011_10_03/2011_10_03_drive_0034_sync 2400 l
+2011_09_26/2011_09_26_drive_0039_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 1300 l
+2011_09_30/2011_09_30_drive_0020_sync 996 r
+2011_09_30/2011_09_30_drive_0028_sync 2344 l
+2011_10_03/2011_10_03_drive_0034_sync 45 r
+2011_09_26/2011_09_26_drive_0104_sync 23 l
+2011_09_26/2011_09_26_drive_0061_sync 538 r
+2011_09_26/2011_09_26_drive_0011_sync 188 r
+2011_09_30/2011_09_30_drive_0028_sync 2642 l
+2011_09_26/2011_09_26_drive_0104_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 3778 r
+2011_09_26/2011_09_26_drive_0061_sync 422 r
+2011_09_26/2011_09_26_drive_0022_sync 310 l
+2011_09_26/2011_09_26_drive_0028_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 858 r
+2011_09_30/2011_09_30_drive_0028_sync 4445 l
+2011_09_30/2011_09_30_drive_0033_sync 1142 l
+2011_09_30/2011_09_30_drive_0028_sync 4500 r
+2011_09_26/2011_09_26_drive_0079_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 3303 l
+2011_09_26/2011_09_26_drive_0035_sync 80 r
+2011_09_26/2011_09_26_drive_0051_sync 310 l
+2011_09_30/2011_09_30_drive_0028_sync 866 r
+2011_09_30/2011_09_30_drive_0028_sync 3671 r
+2011_09_30/2011_09_30_drive_0028_sync 1313 l
+2011_10_03/2011_10_03_drive_0042_sync 1162 r
+2011_09_30/2011_09_30_drive_0033_sync 1049 r
+2011_09_26/2011_09_26_drive_0091_sync 305 r
+2011_09_26/2011_09_26_drive_0022_sync 560 r
+2011_09_26/2011_09_26_drive_0022_sync 42 l
+2011_09_29/2011_09_29_drive_0004_sync 181 r
+2011_09_26/2011_09_26_drive_0028_sync 153 l
+2011_09_26/2011_09_26_drive_0018_sync 62 r
+2011_09_30/2011_09_30_drive_0028_sync 36 r
+2011_09_30/2011_09_30_drive_0034_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 544 r
+2011_09_26/2011_09_26_drive_0087_sync 705 l
+2011_09_26/2011_09_26_drive_0087_sync 231 l
+2011_09_30/2011_09_30_drive_0028_sync 4259 l
+2011_10_03/2011_10_03_drive_0042_sync 1082 l
+2011_09_26/2011_09_26_drive_0018_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 4413 r
+2011_09_26/2011_09_26_drive_0019_sync 349 l
+2011_09_26/2011_09_26_drive_0057_sync 295 l
+2011_10_03/2011_10_03_drive_0042_sync 854 r
+2011_09_26/2011_09_26_drive_0022_sync 334 r
+2011_09_26/2011_09_26_drive_0022_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 2241 l
+2011_10_03/2011_10_03_drive_0034_sync 324 r
+2011_10_03/2011_10_03_drive_0034_sync 614 l
+2011_09_26/2011_09_26_drive_0022_sync 522 l
+2011_09_30/2011_09_30_drive_0028_sync 1932 l
+2011_09_26/2011_09_26_drive_0057_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 1005 l
+2011_09_30/2011_09_30_drive_0028_sync 3943 l
+2011_10_03/2011_10_03_drive_0034_sync 3155 r
+2011_10_03/2011_10_03_drive_0034_sync 153 l
+2011_09_30/2011_09_30_drive_0020_sync 992 l
+2011_10_03/2011_10_03_drive_0042_sync 890 l
+2011_10_03/2011_10_03_drive_0034_sync 3991 r
+2011_10_03/2011_10_03_drive_0034_sync 1866 r
+2011_09_30/2011_09_30_drive_0034_sync 564 r
+2011_09_30/2011_09_30_drive_0034_sync 667 r
+2011_10_03/2011_10_03_drive_0034_sync 890 r
+2011_10_03/2011_10_03_drive_0034_sync 3030 l
+2011_09_30/2011_09_30_drive_0020_sync 603 l
+2011_09_29/2011_09_29_drive_0004_sync 202 l
+2011_09_26/2011_09_26_drive_0022_sync 202 l
+2011_09_30/2011_09_30_drive_0034_sync 841 l
+2011_09_30/2011_09_30_drive_0028_sync 732 l
+2011_10_03/2011_10_03_drive_0034_sync 2008 r
+2011_09_26/2011_09_26_drive_0051_sync 312 l
+2011_09_30/2011_09_30_drive_0028_sync 4497 r
+2011_10_03/2011_10_03_drive_0034_sync 2070 l
+2011_10_03/2011_10_03_drive_0042_sync 114 l
+2011_09_30/2011_09_30_drive_0034_sync 484 r
+2011_09_26/2011_09_26_drive_0104_sync 162 l
+2011_10_03/2011_10_03_drive_0034_sync 4608 l
+2011_09_26/2011_09_26_drive_0014_sync 84 r
+2011_09_26/2011_09_26_drive_0028_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 424 r
+2011_09_29/2011_09_29_drive_0004_sync 187 l
+2011_10_03/2011_10_03_drive_0034_sync 1066 l
+2011_09_26/2011_09_26_drive_0061_sync 380 l
+2011_09_30/2011_09_30_drive_0028_sync 3363 l
+2011_09_30/2011_09_30_drive_0028_sync 1079 r
+2011_09_30/2011_09_30_drive_0033_sync 993 l
+2011_09_30/2011_09_30_drive_0028_sync 1659 r
+2011_10_03/2011_10_03_drive_0034_sync 4092 l
+2011_09_30/2011_09_30_drive_0028_sync 4625 l
+2011_09_29/2011_09_29_drive_0026_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 1805 l
+2011_09_30/2011_09_30_drive_0028_sync 957 r
+2011_09_26/2011_09_26_drive_0104_sync 263 l
+2011_09_26/2011_09_26_drive_0057_sync 143 l
+2011_09_30/2011_09_30_drive_0028_sync 5020 r
+2011_09_30/2011_09_30_drive_0028_sync 5119 l
+2011_09_26/2011_09_26_drive_0019_sync 337 l
+2011_09_29/2011_09_29_drive_0026_sync 34 r
+2011_09_30/2011_09_30_drive_0033_sync 1237 l
+2011_09_26/2011_09_26_drive_0022_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 4952 r
+2011_09_30/2011_09_30_drive_0028_sync 1081 l
+2011_10_03/2011_10_03_drive_0034_sync 1146 r
+2011_09_30/2011_09_30_drive_0028_sync 3636 r
+2011_09_30/2011_09_30_drive_0028_sync 2875 r
+2011_10_03/2011_10_03_drive_0034_sync 468 r
+2011_09_30/2011_09_30_drive_0028_sync 2031 l
+2011_09_26/2011_09_26_drive_0011_sync 227 r
+2011_10_03/2011_10_03_drive_0042_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 2070 r
+2011_10_03/2011_10_03_drive_0034_sync 1602 l
+2011_09_26/2011_09_26_drive_0051_sync 150 r
+2011_10_03/2011_10_03_drive_0034_sync 728 r
+2011_09_30/2011_09_30_drive_0028_sync 3877 l
+2011_09_30/2011_09_30_drive_0028_sync 4637 l
+2011_09_30/2011_09_30_drive_0028_sync 946 r
+2011_10_03/2011_10_03_drive_0034_sync 3317 l
+2011_09_26/2011_09_26_drive_0014_sync 236 l
+2011_09_30/2011_09_30_drive_0033_sync 764 l
+2011_10_03/2011_10_03_drive_0034_sync 2645 l
+2011_09_30/2011_09_30_drive_0034_sync 668 l
+2011_10_03/2011_10_03_drive_0034_sync 566 l
+2011_09_30/2011_09_30_drive_0020_sync 819 l
+2011_09_26/2011_09_26_drive_0015_sync 86 l
+2011_09_30/2011_09_30_drive_0020_sync 604 l
+2011_09_26/2011_09_26_drive_0060_sync 71 l
+2011_09_26/2011_09_26_drive_0022_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 3446 r
+2011_09_30/2011_09_30_drive_0033_sync 539 r
+2011_10_03/2011_10_03_drive_0042_sync 227 l
+2011_09_26/2011_09_26_drive_0019_sync 27 r
+2011_09_26/2011_09_26_drive_0061_sync 694 r
+2011_09_26/2011_09_26_drive_0095_sync 40 r
+2011_09_30/2011_09_30_drive_0033_sync 1208 r
+2011_09_30/2011_09_30_drive_0034_sync 966 r
+2011_09_26/2011_09_26_drive_0079_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 1962 l
+2011_09_26/2011_09_26_drive_0019_sync 426 l
+2011_09_30/2011_09_30_drive_0028_sync 4498 r
+2011_09_26/2011_09_26_drive_0079_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 3586 r
+2011_09_30/2011_09_30_drive_0028_sync 1244 r
+2011_09_30/2011_09_30_drive_0020_sync 775 l
+2011_09_30/2011_09_30_drive_0028_sync 1486 l
+2011_09_30/2011_09_30_drive_0028_sync 4749 l
+2011_10_03/2011_10_03_drive_0034_sync 4439 r
+2011_10_03/2011_10_03_drive_0034_sync 4415 l
+2011_09_30/2011_09_30_drive_0033_sync 69 l
+2011_09_26/2011_09_26_drive_0015_sync 206 r
+2011_09_30/2011_09_30_drive_0033_sync 758 r
+2011_10_03/2011_10_03_drive_0042_sync 153 r
+2011_10_03/2011_10_03_drive_0034_sync 678 l
+2011_09_26/2011_09_26_drive_0015_sync 169 l
+2011_09_30/2011_09_30_drive_0034_sync 955 r
+2011_09_26/2011_09_26_drive_0051_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 1881 l
+2011_09_26/2011_09_26_drive_0018_sync 86 l
+2011_09_30/2011_09_30_drive_0034_sync 448 l
+2011_09_26/2011_09_26_drive_0104_sync 101 l
+2011_09_30/2011_09_30_drive_0034_sync 754 l
+2011_09_30/2011_09_30_drive_0028_sync 3784 r
+2011_09_29/2011_09_29_drive_0004_sync 314 r
+2011_09_26/2011_09_26_drive_0014_sync 255 l
+2011_09_26/2011_09_26_drive_0057_sync 263 r
+2011_09_26/2011_09_26_drive_0070_sync 56 r
+2011_09_26/2011_09_26_drive_0014_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 3364 r
+2011_09_26/2011_09_26_drive_0005_sync 139 l
+2011_09_26/2011_09_26_drive_0014_sync 308 r
+2011_09_30/2011_09_30_drive_0034_sync 828 l
+2011_10_03/2011_10_03_drive_0042_sync 461 l
+2011_09_26/2011_09_26_drive_0022_sync 743 l
+2011_09_30/2011_09_30_drive_0028_sync 3559 l
+2011_09_30/2011_09_30_drive_0028_sync 4225 l
+2011_09_26/2011_09_26_drive_0087_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 4255 r
+2011_09_26/2011_09_26_drive_0057_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 540 l
+2011_09_30/2011_09_30_drive_0033_sync 1560 l
+2011_09_30/2011_09_30_drive_0028_sync 878 l
+2011_10_03/2011_10_03_drive_0034_sync 670 r
+2011_09_30/2011_09_30_drive_0033_sync 386 r
+2011_09_26/2011_09_26_drive_0019_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 4958 r
+2011_09_30/2011_09_30_drive_0028_sync 2340 r
+2011_09_30/2011_09_30_drive_0033_sync 129 l
+2011_09_30/2011_09_30_drive_0034_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 2835 l
+2011_09_26/2011_09_26_drive_0035_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 2602 r
+2011_09_30/2011_09_30_drive_0028_sync 1243 r
+2011_09_30/2011_09_30_drive_0028_sync 3511 r
+2011_10_03/2011_10_03_drive_0034_sync 1006 l
+2011_09_30/2011_09_30_drive_0033_sync 567 l
+2011_09_30/2011_09_30_drive_0020_sync 781 r
+2011_09_30/2011_09_30_drive_0028_sync 1989 r
+2011_09_30/2011_09_30_drive_0028_sync 2326 l
+2011_09_26/2011_09_26_drive_0019_sync 153 l
+2011_09_30/2011_09_30_drive_0034_sync 225 l
+2011_09_26/2011_09_26_drive_0091_sync 54 r
+2011_09_30/2011_09_30_drive_0020_sync 552 l
+2011_09_30/2011_09_30_drive_0033_sync 1415 l
+2011_09_30/2011_09_30_drive_0028_sync 2156 r
+2011_10_03/2011_10_03_drive_0042_sync 577 r
+2011_09_26/2011_09_26_drive_0001_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 4251 r
+2011_10_03/2011_10_03_drive_0034_sync 2391 l
+2011_10_03/2011_10_03_drive_0034_sync 4471 l
+2011_10_03/2011_10_03_drive_0042_sync 1149 r
+2011_09_26/2011_09_26_drive_0028_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 1516 r
+2011_09_30/2011_09_30_drive_0033_sync 1211 l
+2011_09_26/2011_09_26_drive_0091_sync 277 r
+2011_09_26/2011_09_26_drive_0022_sync 130 r
+2011_10_03/2011_10_03_drive_0034_sync 4029 l
+2011_10_03/2011_10_03_drive_0042_sync 461 r
+2011_09_30/2011_09_30_drive_0028_sync 1112 r
+2011_10_03/2011_10_03_drive_0034_sync 1417 r
+2011_10_03/2011_10_03_drive_0034_sync 560 l
+2011_09_26/2011_09_26_drive_0011_sync 89 l
+2011_09_26/2011_09_26_drive_0104_sync 51 r
+2011_09_26/2011_09_26_drive_0022_sync 643 l
+2011_10_03/2011_10_03_drive_0034_sync 4031 l
+2011_10_03/2011_10_03_drive_0034_sync 3742 l
+2011_09_29/2011_09_29_drive_0004_sync 19 l
+2011_09_26/2011_09_26_drive_0022_sync 442 r
+2011_10_03/2011_10_03_drive_0042_sync 633 l
+2011_10_03/2011_10_03_drive_0034_sync 3621 l
+2011_09_30/2011_09_30_drive_0034_sync 159 l
+2011_10_03/2011_10_03_drive_0034_sync 1562 r
+2011_10_03/2011_10_03_drive_0034_sync 846 r
+2011_10_03/2011_10_03_drive_0042_sync 560 r
+2011_09_30/2011_09_30_drive_0020_sync 920 l
+2011_09_30/2011_09_30_drive_0033_sync 1208 l
+2011_09_26/2011_09_26_drive_0019_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 2747 r
+2011_09_26/2011_09_26_drive_0051_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 1474 r
+2011_09_30/2011_09_30_drive_0028_sync 4338 l
+2011_10_03/2011_10_03_drive_0042_sync 1125 l
+2011_09_26/2011_09_26_drive_0028_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 4402 r
+2011_09_30/2011_09_30_drive_0020_sync 642 r
+2011_09_30/2011_09_30_drive_0028_sync 4873 r
+2011_09_30/2011_09_30_drive_0028_sync 327 l
+2011_09_26/2011_09_26_drive_0005_sync 125 r
+2011_09_26/2011_09_26_drive_0022_sync 649 l
+2011_10_03/2011_10_03_drive_0034_sync 1149 r
+2011_10_03/2011_10_03_drive_0034_sync 3572 l
+2011_10_03/2011_10_03_drive_0034_sync 3587 l
+2011_10_03/2011_10_03_drive_0034_sync 3100 l
+2011_09_26/2011_09_26_drive_0028_sync 19 l
+2011_09_26/2011_09_26_drive_0028_sync 87 r
+2011_09_30/2011_09_30_drive_0033_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 4327 r
+2011_09_26/2011_09_26_drive_0014_sync 171 l
+2011_09_26/2011_09_26_drive_0087_sync 573 r
+2011_09_26/2011_09_26_drive_0051_sync 270 r
+2011_09_26/2011_09_26_drive_0019_sync 60 r
+2011_10_03/2011_10_03_drive_0034_sync 3572 r
+2011_09_30/2011_09_30_drive_0034_sync 138 r
+2011_09_26/2011_09_26_drive_0104_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 3532 l
+2011_09_30/2011_09_30_drive_0028_sync 1953 l
+2011_09_30/2011_09_30_drive_0033_sync 68 l
+2011_09_26/2011_09_26_drive_0087_sync 271 l
+2011_09_30/2011_09_30_drive_0028_sync 852 l
+2011_10_03/2011_10_03_drive_0034_sync 3434 r
+2011_09_29/2011_09_29_drive_0004_sync 211 l
+2011_10_03/2011_10_03_drive_0042_sync 106 l
+2011_09_26/2011_09_26_drive_0019_sync 254 l
+2011_09_30/2011_09_30_drive_0028_sync 341 r
+2011_09_26/2011_09_26_drive_0061_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 4476 r
+2011_09_26/2011_09_26_drive_0039_sync 270 l
+2011_09_26/2011_09_26_drive_0061_sync 182 l
+2011_10_03/2011_10_03_drive_0034_sync 3516 r
+2011_09_26/2011_09_26_drive_0018_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 1134 l
+2011_09_30/2011_09_30_drive_0028_sync 1130 r
+2011_09_26/2011_09_26_drive_0057_sync 53 r
+2011_09_30/2011_09_30_drive_0034_sync 593 r
+2011_10_03/2011_10_03_drive_0034_sync 1784 l
+2011_09_26/2011_09_26_drive_0022_sync 410 l
+2011_09_26/2011_09_26_drive_0014_sync 51 l
+2011_09_26/2011_09_26_drive_0035_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 3027 r
+2011_09_26/2011_09_26_drive_0057_sync 73 r
+2011_09_26/2011_09_26_drive_0039_sync 301 l
+2011_09_26/2011_09_26_drive_0032_sync 40 l
+2011_10_03/2011_10_03_drive_0034_sync 1667 r
+2011_09_30/2011_09_30_drive_0028_sync 214 l
+2011_09_29/2011_09_29_drive_0004_sync 167 l
+2011_09_26/2011_09_26_drive_0015_sync 39 l
+2011_09_26/2011_09_26_drive_0057_sync 27 l
+2011_09_26/2011_09_26_drive_0070_sync 402 r
+2011_09_30/2011_09_30_drive_0033_sync 1396 l
+2011_09_29/2011_09_29_drive_0026_sync 25 l
+2011_10_03/2011_10_03_drive_0042_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 3368 l
+2011_10_03/2011_10_03_drive_0042_sync 985 r
+2011_09_30/2011_09_30_drive_0020_sync 968 l
+2011_09_30/2011_09_30_drive_0028_sync 3041 l
+2011_10_03/2011_10_03_drive_0034_sync 1935 r
+2011_10_03/2011_10_03_drive_0034_sync 867 r
+2011_09_30/2011_09_30_drive_0020_sync 262 r
+2011_09_29/2011_09_29_drive_0004_sync 287 l
+2011_09_30/2011_09_30_drive_0033_sync 423 l
+2011_09_30/2011_09_30_drive_0028_sync 294 r
+2011_09_26/2011_09_26_drive_0070_sync 166 r
+2011_09_26/2011_09_26_drive_0057_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 1312 l
+2011_09_26/2011_09_26_drive_0011_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 3948 l
+2011_10_03/2011_10_03_drive_0034_sync 809 l
+2011_09_30/2011_09_30_drive_0028_sync 2947 r
+2011_09_30/2011_09_30_drive_0033_sync 1290 l
+2011_10_03/2011_10_03_drive_0034_sync 3847 l
+2011_09_30/2011_09_30_drive_0020_sync 91 l
+2011_09_26/2011_09_26_drive_0015_sync 283 l
+2011_09_26/2011_09_26_drive_0014_sync 275 l
+2011_09_30/2011_09_30_drive_0028_sync 3360 r
+2011_09_30/2011_09_30_drive_0028_sync 2182 r
+2011_09_30/2011_09_30_drive_0028_sync 3515 l
+2011_09_30/2011_09_30_drive_0028_sync 1796 r
+2011_09_30/2011_09_30_drive_0028_sync 3877 r
+2011_09_30/2011_09_30_drive_0028_sync 509 l
+2011_09_30/2011_09_30_drive_0028_sync 139 l
+2011_09_30/2011_09_30_drive_0020_sync 15 r
+2011_09_26/2011_09_26_drive_0028_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 3514 r
+2011_09_30/2011_09_30_drive_0028_sync 1521 r
+2011_09_30/2011_09_30_drive_0028_sync 4899 l
+2011_09_30/2011_09_30_drive_0028_sync 4767 l
+2011_09_30/2011_09_30_drive_0034_sync 542 l
+2011_09_26/2011_09_26_drive_0039_sync 264 l
+2011_09_30/2011_09_30_drive_0028_sync 1704 r
+2011_09_30/2011_09_30_drive_0033_sync 1326 r
+2011_09_26/2011_09_26_drive_0032_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 1026 r
+2011_09_30/2011_09_30_drive_0028_sync 1507 l
+2011_10_03/2011_10_03_drive_0034_sync 661 l
+2011_09_26/2011_09_26_drive_0032_sync 321 r
+2011_09_26/2011_09_26_drive_0005_sync 35 l
+2011_09_26/2011_09_26_drive_0032_sync 361 r
+2011_09_30/2011_09_30_drive_0028_sync 1214 r
+2011_09_30/2011_09_30_drive_0033_sync 201 l
+2011_09_30/2011_09_30_drive_0034_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 1973 l
+2011_09_26/2011_09_26_drive_0051_sync 51 r
+2011_09_26/2011_09_26_drive_0028_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 3861 r
+2011_09_30/2011_09_30_drive_0033_sync 1274 l
+2011_09_26/2011_09_26_drive_0018_sync 204 l
+2011_09_30/2011_09_30_drive_0033_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 553 r
+2011_09_26/2011_09_26_drive_0032_sync 387 r
+2011_09_30/2011_09_30_drive_0028_sync 739 r
+2011_10_03/2011_10_03_drive_0034_sync 4182 l
+2011_09_30/2011_09_30_drive_0028_sync 1253 l
+2011_09_30/2011_09_30_drive_0020_sync 184 r
+2011_09_26/2011_09_26_drive_0015_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 2123 r
+2011_10_03/2011_10_03_drive_0034_sync 2841 l
+2011_10_03/2011_10_03_drive_0034_sync 239 r
+2011_09_30/2011_09_30_drive_0020_sync 680 r
+2011_09_30/2011_09_30_drive_0028_sync 158 r
+2011_10_03/2011_10_03_drive_0034_sync 270 r
+2011_09_30/2011_09_30_drive_0033_sync 1234 l
+2011_10_03/2011_10_03_drive_0034_sync 3398 r
+2011_09_30/2011_09_30_drive_0034_sync 773 r
+2011_09_26/2011_09_26_drive_0032_sync 192 r
+2011_09_26/2011_09_26_drive_0039_sync 86 r
+2011_09_26/2011_09_26_drive_0091_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 1714 l
+2011_09_30/2011_09_30_drive_0028_sync 1327 l
+2011_10_03/2011_10_03_drive_0042_sync 847 r
+2011_10_03/2011_10_03_drive_0034_sync 2790 r
+2011_10_03/2011_10_03_drive_0034_sync 402 r
+2011_09_26/2011_09_26_drive_0104_sync 288 r
+2011_09_26/2011_09_26_drive_0022_sync 416 l
+2011_09_26/2011_09_26_drive_0087_sync 441 l
+2011_10_03/2011_10_03_drive_0034_sync 3941 r
+2011_10_03/2011_10_03_drive_0042_sync 654 r
+2011_09_26/2011_09_26_drive_0051_sync 241 l
+2011_09_26/2011_09_26_drive_0113_sync 72 l
+2011_09_26/2011_09_26_drive_0019_sync 26 r
+2011_10_03/2011_10_03_drive_0042_sync 518 r
+2011_10_03/2011_10_03_drive_0034_sync 3696 r
+2011_10_03/2011_10_03_drive_0034_sync 4525 l
+2011_09_30/2011_09_30_drive_0028_sync 5135 l
+2011_09_26/2011_09_26_drive_0087_sync 644 l
+2011_09_26/2011_09_26_drive_0015_sync 179 l
+2011_10_03/2011_10_03_drive_0034_sync 2005 l
+2011_10_03/2011_10_03_drive_0034_sync 1505 r
+2011_09_26/2011_09_26_drive_0057_sync 97 r
+2011_09_26/2011_09_26_drive_0070_sync 314 r
+2011_09_26/2011_09_26_drive_0057_sync 4 r
+2011_09_29/2011_09_29_drive_0004_sync 236 r
+2011_09_26/2011_09_26_drive_0014_sync 20 r
+2011_09_30/2011_09_30_drive_0033_sync 854 r
+2011_09_26/2011_09_26_drive_0095_sync 61 r
+2011_09_26/2011_09_26_drive_0019_sync 268 l
+2011_09_26/2011_09_26_drive_0018_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 4437 r
+2011_09_30/2011_09_30_drive_0028_sync 2734 r
+2011_09_30/2011_09_30_drive_0028_sync 981 l
+2011_09_30/2011_09_30_drive_0028_sync 4022 r
+2011_09_30/2011_09_30_drive_0028_sync 1060 r
+2011_10_03/2011_10_03_drive_0034_sync 1686 l
+2011_09_26/2011_09_26_drive_0087_sync 670 l
+2011_09_29/2011_09_29_drive_0004_sync 320 l
+2011_09_30/2011_09_30_drive_0028_sync 2206 l
+2011_09_30/2011_09_30_drive_0020_sync 754 r
+2011_09_30/2011_09_30_drive_0028_sync 5011 r
+2011_10_03/2011_10_03_drive_0034_sync 3062 r
+2011_09_30/2011_09_30_drive_0033_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 2266 r
+2011_10_03/2011_10_03_drive_0034_sync 1721 l
+2011_09_30/2011_09_30_drive_0028_sync 1467 r
+2011_09_30/2011_09_30_drive_0033_sync 553 r
+2011_09_30/2011_09_30_drive_0028_sync 983 r
+2011_10_03/2011_10_03_drive_0034_sync 2736 l
+2011_09_30/2011_09_30_drive_0028_sync 192 r
+2011_09_26/2011_09_26_drive_0070_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 2923 r
+2011_09_26/2011_09_26_drive_0015_sync 277 l
+2011_09_26/2011_09_26_drive_0001_sync 5 r
+2011_09_26/2011_09_26_drive_0087_sync 271 r
+2011_10_03/2011_10_03_drive_0034_sync 3893 r
+2011_09_26/2011_09_26_drive_0070_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 4598 l
+2011_09_30/2011_09_30_drive_0028_sync 4692 l
+2011_09_26/2011_09_26_drive_0022_sync 364 l
+2011_10_03/2011_10_03_drive_0034_sync 3178 l
+2011_09_26/2011_09_26_drive_0019_sync 311 r
+2011_09_26/2011_09_26_drive_0028_sync 91 r
+2011_10_03/2011_10_03_drive_0042_sync 1027 r
+2011_09_26/2011_09_26_drive_0061_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 2756 r
+2011_09_26/2011_09_26_drive_0113_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 1488 l
+2011_09_26/2011_09_26_drive_0018_sync 100 l
+2011_09_30/2011_09_30_drive_0033_sync 98 l
+2011_09_30/2011_09_30_drive_0033_sync 377 l
+2011_09_29/2011_09_29_drive_0004_sync 34 r
+2011_09_26/2011_09_26_drive_0014_sync 277 r
+2011_09_30/2011_09_30_drive_0033_sync 1236 r
+2011_09_26/2011_09_26_drive_0061_sync 184 r
+2011_09_26/2011_09_26_drive_0087_sync 312 l
+2011_09_30/2011_09_30_drive_0020_sync 337 l
+2011_09_30/2011_09_30_drive_0020_sync 473 r
+2011_09_30/2011_09_30_drive_0028_sync 2570 l
+2011_09_30/2011_09_30_drive_0028_sync 3751 r
+2011_09_26/2011_09_26_drive_0104_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 1656 l
+2011_09_30/2011_09_30_drive_0028_sync 1101 l
+2011_09_26/2011_09_26_drive_0005_sync 73 l
+2011_09_26/2011_09_26_drive_0022_sync 184 l
+2011_09_30/2011_09_30_drive_0028_sync 199 l
+2011_09_26/2011_09_26_drive_0051_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 897 l
+2011_09_30/2011_09_30_drive_0033_sync 1199 l
+2011_09_26/2011_09_26_drive_0039_sync 7 r
+2011_09_26/2011_09_26_drive_0028_sync 217 l
+2011_09_26/2011_09_26_drive_0019_sync 397 l
+2011_09_26/2011_09_26_drive_0091_sync 330 l
+2011_09_30/2011_09_30_drive_0033_sync 1413 r
+2011_09_30/2011_09_30_drive_0028_sync 1418 r
+2011_09_26/2011_09_26_drive_0061_sync 197 r
+2011_09_26/2011_09_26_drive_0091_sync 38 l
+2011_09_26/2011_09_26_drive_0087_sync 340 l
+2011_10_03/2011_10_03_drive_0042_sync 178 l
+2011_09_29/2011_09_29_drive_0026_sync 12 r
+2011_09_30/2011_09_30_drive_0034_sync 447 l
+2011_09_30/2011_09_30_drive_0028_sync 4608 l
+2011_09_30/2011_09_30_drive_0028_sync 4451 l
+2011_09_26/2011_09_26_drive_0001_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 1566 l
+2011_09_26/2011_09_26_drive_0087_sync 554 r
+2011_10_03/2011_10_03_drive_0034_sync 3611 r
+2011_10_03/2011_10_03_drive_0034_sync 38 r
+2011_09_30/2011_09_30_drive_0033_sync 556 l
+2011_09_26/2011_09_26_drive_0070_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 2700 r
+2011_09_26/2011_09_26_drive_0001_sync 70 r
+2011_09_26/2011_09_26_drive_0095_sync 231 r
+2011_09_26/2011_09_26_drive_0104_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 110 r
+2011_10_03/2011_10_03_drive_0042_sync 1165 l
+2011_10_03/2011_10_03_drive_0034_sync 1321 r
+2011_09_26/2011_09_26_drive_0087_sync 489 r
+2011_09_30/2011_09_30_drive_0033_sync 764 r
+2011_09_30/2011_09_30_drive_0028_sync 4384 r
+2011_10_03/2011_10_03_drive_0034_sync 3083 l
+2011_09_30/2011_09_30_drive_0028_sync 4821 r
+2011_09_30/2011_09_30_drive_0028_sync 2724 l
+2011_09_30/2011_09_30_drive_0033_sync 341 r
+2011_09_26/2011_09_26_drive_0018_sync 35 l
+2011_10_03/2011_10_03_drive_0034_sync 2487 l
+2011_09_26/2011_09_26_drive_0039_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 3690 l
+2011_09_30/2011_09_30_drive_0033_sync 1234 r
+2011_09_30/2011_09_30_drive_0028_sync 2202 l
+2011_09_30/2011_09_30_drive_0028_sync 5072 l
+2011_09_29/2011_09_29_drive_0004_sync 173 r
+2011_10_03/2011_10_03_drive_0034_sync 3812 r
+2011_09_30/2011_09_30_drive_0028_sync 1717 r
+2011_09_30/2011_09_30_drive_0034_sync 428 l
+2011_09_30/2011_09_30_drive_0033_sync 572 l
+2011_09_30/2011_09_30_drive_0028_sync 2792 r
+2011_09_30/2011_09_30_drive_0033_sync 1540 r
+2011_09_26/2011_09_26_drive_0070_sync 317 r
+2011_09_29/2011_09_29_drive_0026_sync 131 r
+2011_09_26/2011_09_26_drive_0070_sync 311 l
+2011_09_26/2011_09_26_drive_0018_sync 248 r
+2011_09_26/2011_09_26_drive_0022_sync 666 r
+2011_10_03/2011_10_03_drive_0034_sync 2709 r
+2011_09_30/2011_09_30_drive_0028_sync 3456 r
+2011_09_26/2011_09_26_drive_0019_sync 191 l
+2011_10_03/2011_10_03_drive_0034_sync 2826 l
+2011_09_30/2011_09_30_drive_0028_sync 4219 l
+2011_09_26/2011_09_26_drive_0022_sync 136 l
+2011_09_30/2011_09_30_drive_0028_sync 3003 r
+2011_10_03/2011_10_03_drive_0034_sync 2668 l
+2011_09_26/2011_09_26_drive_0104_sync 142 r
+2011_09_26/2011_09_26_drive_0087_sync 301 l
+2011_10_03/2011_10_03_drive_0034_sync 3791 l
+2011_09_26/2011_09_26_drive_0087_sync 134 l
+2011_09_30/2011_09_30_drive_0033_sync 249 r
+2011_10_03/2011_10_03_drive_0034_sync 1581 l
+2011_10_03/2011_10_03_drive_0034_sync 4510 l
+2011_10_03/2011_10_03_drive_0034_sync 4189 l
+2011_10_03/2011_10_03_drive_0042_sync 620 l
+2011_09_30/2011_09_30_drive_0033_sync 1444 l
+2011_09_30/2011_09_30_drive_0028_sync 4189 l
+2011_09_30/2011_09_30_drive_0020_sync 758 r
+2011_10_03/2011_10_03_drive_0042_sync 509 l
+2011_09_30/2011_09_30_drive_0033_sync 1040 r
+2011_10_03/2011_10_03_drive_0034_sync 2345 r
+2011_10_03/2011_10_03_drive_0034_sync 3719 r
+2011_09_26/2011_09_26_drive_0019_sync 69 l
+2011_09_26/2011_09_26_drive_0028_sync 392 r
+2011_09_26/2011_09_26_drive_0032_sync 232 r
+2011_09_30/2011_09_30_drive_0028_sync 1653 r
+2011_09_30/2011_09_30_drive_0020_sync 519 r
+2011_09_30/2011_09_30_drive_0028_sync 3410 l
+2011_09_30/2011_09_30_drive_0028_sync 249 r
+2011_10_03/2011_10_03_drive_0042_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 3261 r
+2011_10_03/2011_10_03_drive_0034_sync 4330 r
+2011_09_26/2011_09_26_drive_0051_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 4156 l
+2011_09_30/2011_09_30_drive_0028_sync 4480 r
+2011_10_03/2011_10_03_drive_0034_sync 3991 l
+2011_09_26/2011_09_26_drive_0011_sync 150 l
+2011_09_26/2011_09_26_drive_0087_sync 99 r
+2011_09_28/2011_09_28_drive_0001_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 2764 l
+2011_10_03/2011_10_03_drive_0034_sync 237 r
+2011_09_26/2011_09_26_drive_0019_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 1667 r
+2011_09_26/2011_09_26_drive_0087_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 4239 l
+2011_09_30/2011_09_30_drive_0028_sync 4864 r
+2011_10_03/2011_10_03_drive_0034_sync 1137 l
+2011_09_26/2011_09_26_drive_0057_sync 48 r
+2011_09_30/2011_09_30_drive_0020_sync 789 r
+2011_09_26/2011_09_26_drive_0028_sync 330 r
+2011_09_26/2011_09_26_drive_0015_sync 10 r
+2011_09_26/2011_09_26_drive_0061_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 2160 l
+2011_09_26/2011_09_26_drive_0018_sync 232 l
+2011_10_03/2011_10_03_drive_0042_sync 443 r
+2011_09_30/2011_09_30_drive_0028_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 3852 r
+2011_10_03/2011_10_03_drive_0034_sync 3125 l
+2011_09_30/2011_09_30_drive_0033_sync 1215 r
+2011_09_26/2011_09_26_drive_0095_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 2657 l
+2011_09_30/2011_09_30_drive_0028_sync 2698 r
+2011_09_30/2011_09_30_drive_0028_sync 3003 l
+2011_09_30/2011_09_30_drive_0020_sync 744 l
+2011_09_26/2011_09_26_drive_0032_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 703 r
+2011_09_30/2011_09_30_drive_0028_sync 1706 r
+2011_10_03/2011_10_03_drive_0034_sync 1964 r
+2011_09_30/2011_09_30_drive_0020_sync 800 l
+2011_09_26/2011_09_26_drive_0011_sync 2 r
+2011_09_26/2011_09_26_drive_0022_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 1841 r
+2011_09_26/2011_09_26_drive_0095_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 3657 l
+2011_09_26/2011_09_26_drive_0014_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 4731 l
+2011_09_26/2011_09_26_drive_0022_sync 703 r
+2011_09_26/2011_09_26_drive_0070_sync 173 l
+2011_09_30/2011_09_30_drive_0020_sync 1011 l
+2011_10_03/2011_10_03_drive_0034_sync 4340 l
+2011_10_03/2011_10_03_drive_0042_sync 986 l
+2011_09_26/2011_09_26_drive_0032_sync 224 r
+2011_10_03/2011_10_03_drive_0034_sync 3928 r
+2011_10_03/2011_10_03_drive_0034_sync 2312 l
+2011_10_03/2011_10_03_drive_0042_sync 484 l
+2011_10_03/2011_10_03_drive_0034_sync 3447 l
+2011_09_26/2011_09_26_drive_0104_sync 176 r
+2011_09_30/2011_09_30_drive_0020_sync 884 l
+2011_09_26/2011_09_26_drive_0091_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 3695 l
+2011_09_30/2011_09_30_drive_0028_sync 784 r
+2011_09_26/2011_09_26_drive_0091_sync 35 l
+2011_09_26/2011_09_26_drive_0014_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 3980 l
+2011_10_03/2011_10_03_drive_0034_sync 1094 l
+2011_09_30/2011_09_30_drive_0028_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 2025 l
+2011_09_30/2011_09_30_drive_0020_sync 543 r
+2011_10_03/2011_10_03_drive_0034_sync 3377 r
+2011_09_30/2011_09_30_drive_0028_sync 4989 r
+2011_09_30/2011_09_30_drive_0033_sync 1463 l
+2011_10_03/2011_10_03_drive_0034_sync 2871 r
+2011_09_26/2011_09_26_drive_0019_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 2175 l
+2011_09_26/2011_09_26_drive_0070_sync 161 l
+2011_09_29/2011_09_29_drive_0026_sync 122 r
+2011_09_30/2011_09_30_drive_0028_sync 777 l
+2011_09_26/2011_09_26_drive_0035_sync 92 l
+2011_10_03/2011_10_03_drive_0034_sync 3106 r
+2011_09_26/2011_09_26_drive_0022_sync 444 r
+2011_09_26/2011_09_26_drive_0022_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 1691 l
+2011_10_03/2011_10_03_drive_0034_sync 1311 r
+2011_09_26/2011_09_26_drive_0057_sync 352 l
+2011_09_30/2011_09_30_drive_0028_sync 2414 r
+2011_09_26/2011_09_26_drive_0051_sync 43 l
+2011_09_26/2011_09_26_drive_0061_sync 63 r
+2011_09_30/2011_09_30_drive_0033_sync 1589 l
+2011_09_26/2011_09_26_drive_0079_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 1941 l
+2011_09_30/2011_09_30_drive_0028_sync 3875 r
+2011_09_26/2011_09_26_drive_0028_sync 346 l
+2011_09_26/2011_09_26_drive_0104_sync 245 l
+2011_10_03/2011_10_03_drive_0034_sync 434 r
+2011_09_26/2011_09_26_drive_0005_sync 28 l
+2011_10_03/2011_10_03_drive_0042_sync 646 r
+2011_09_29/2011_09_29_drive_0026_sync 113 l
+2011_09_30/2011_09_30_drive_0028_sync 1535 l
+2011_10_03/2011_10_03_drive_0034_sync 2912 l
+2011_09_26/2011_09_26_drive_0022_sync 488 r
+2011_09_30/2011_09_30_drive_0028_sync 4446 l
+2011_10_03/2011_10_03_drive_0034_sync 1678 l
+2011_09_30/2011_09_30_drive_0028_sync 3167 r
+2011_09_30/2011_09_30_drive_0020_sync 156 l
+2011_09_26/2011_09_26_drive_0095_sync 175 l
+2011_09_30/2011_09_30_drive_0033_sync 1515 r
+2011_09_26/2011_09_26_drive_0095_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 532 l
+2011_09_26/2011_09_26_drive_0104_sync 31 r
+2011_09_26/2011_09_26_drive_0018_sync 45 l
+2011_10_03/2011_10_03_drive_0042_sync 615 l
+2011_10_03/2011_10_03_drive_0034_sync 1835 l
+2011_09_26/2011_09_26_drive_0039_sync 294 l
+2011_09_26/2011_09_26_drive_0014_sync 197 r
+2011_10_03/2011_10_03_drive_0034_sync 2795 r
+2011_10_03/2011_10_03_drive_0034_sync 4361 r
+2011_09_30/2011_09_30_drive_0028_sync 812 r
+2011_10_03/2011_10_03_drive_0042_sync 505 l
+2011_09_30/2011_09_30_drive_0033_sync 161 r
+2011_10_03/2011_10_03_drive_0034_sync 1819 r
+2011_09_26/2011_09_26_drive_0015_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 4316 r
+2011_09_30/2011_09_30_drive_0020_sync 813 l
+2011_09_26/2011_09_26_drive_0087_sync 394 l
+2011_09_26/2011_09_26_drive_0087_sync 400 r
+2011_10_03/2011_10_03_drive_0042_sync 668 l
+2011_09_26/2011_09_26_drive_0061_sync 571 l
+2011_09_30/2011_09_30_drive_0028_sync 2400 l
+2011_09_30/2011_09_30_drive_0033_sync 1080 l
+2011_09_26/2011_09_26_drive_0091_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 4005 r
+2011_09_30/2011_09_30_drive_0028_sync 2152 r
+2011_09_30/2011_09_30_drive_0020_sync 150 r
+2011_09_30/2011_09_30_drive_0034_sync 1115 l
+2011_09_28/2011_09_28_drive_0001_sync 25 r
+2011_09_26/2011_09_26_drive_0057_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 952 r
+2011_09_26/2011_09_26_drive_0022_sync 691 r
+2011_09_26/2011_09_26_drive_0035_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 853 l
+2011_09_30/2011_09_30_drive_0028_sync 3749 r
+2011_09_26/2011_09_26_drive_0091_sync 336 l
+2011_09_26/2011_09_26_drive_0060_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 1798 r
+2011_09_30/2011_09_30_drive_0033_sync 431 r
+2011_09_26/2011_09_26_drive_0070_sync 194 r
+2011_09_26/2011_09_26_drive_0061_sync 47 r
+2011_09_30/2011_09_30_drive_0034_sync 582 r
+2011_10_03/2011_10_03_drive_0034_sync 2653 l
+2011_09_30/2011_09_30_drive_0034_sync 688 l
+2011_09_26/2011_09_26_drive_0095_sync 143 l
+2011_09_26/2011_09_26_drive_0087_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 2520 l
+2011_09_26/2011_09_26_drive_0070_sync 408 r
+2011_09_30/2011_09_30_drive_0028_sync 1767 r
+2011_10_03/2011_10_03_drive_0034_sync 230 r
+2011_09_26/2011_09_26_drive_0019_sync 238 l
+2011_10_03/2011_10_03_drive_0042_sync 11 r
+2011_09_30/2011_09_30_drive_0033_sync 240 r
+2011_09_30/2011_09_30_drive_0033_sync 742 l
+2011_09_26/2011_09_26_drive_0014_sync 270 l
+2011_09_26/2011_09_26_drive_0015_sync 111 r
+2011_09_26/2011_09_26_drive_0051_sync 420 r
+2011_09_30/2011_09_30_drive_0020_sync 105 r
+2011_10_03/2011_10_03_drive_0042_sync 651 l
+2011_09_30/2011_09_30_drive_0028_sync 3823 r
+2011_09_30/2011_09_30_drive_0028_sync 1932 r
+2011_09_29/2011_09_29_drive_0026_sync 63 l
+2011_09_26/2011_09_26_drive_0005_sync 82 r
+2011_09_26/2011_09_26_drive_0104_sync 180 l
+2011_09_26/2011_09_26_drive_0060_sync 34 r
+2011_09_26/2011_09_26_drive_0022_sync 570 r
+2011_09_30/2011_09_30_drive_0033_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 1629 l
+2011_09_30/2011_09_30_drive_0028_sync 3104 l
+2011_09_26/2011_09_26_drive_0032_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 1565 r
+2011_09_26/2011_09_26_drive_0039_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 1992 r
+2011_09_26/2011_09_26_drive_0091_sync 206 l
+2011_10_03/2011_10_03_drive_0042_sync 258 l
+2011_09_26/2011_09_26_drive_0061_sync 184 l
+2011_09_30/2011_09_30_drive_0028_sync 2812 l
+2011_09_26/2011_09_26_drive_0035_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 4639 l
+2011_09_30/2011_09_30_drive_0034_sync 1071 l
+2011_09_26/2011_09_26_drive_0087_sync 560 r
+2011_10_03/2011_10_03_drive_0034_sync 764 r
+2011_09_26/2011_09_26_drive_0022_sync 607 r
+2011_10_03/2011_10_03_drive_0042_sync 22 l
+2011_09_30/2011_09_30_drive_0020_sync 526 r
+2011_09_30/2011_09_30_drive_0020_sync 897 l
+2011_09_26/2011_09_26_drive_0011_sync 106 l
+2011_09_26/2011_09_26_drive_0022_sync 1 r
+2011_10_03/2011_10_03_drive_0042_sync 530 l
+2011_09_30/2011_09_30_drive_0020_sync 255 l
+2011_09_26/2011_09_26_drive_0022_sync 458 l
+2011_09_26/2011_09_26_drive_0019_sync 131 r
+2011_09_26/2011_09_26_drive_0061_sync 79 l
+2011_09_26/2011_09_26_drive_0032_sync 364 r
+2011_09_30/2011_09_30_drive_0033_sync 389 r
+2011_09_30/2011_09_30_drive_0028_sync 3777 l
+2011_10_03/2011_10_03_drive_0034_sync 2408 r
+2011_09_30/2011_09_30_drive_0034_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 670 l
+2011_09_30/2011_09_30_drive_0028_sync 2739 r
+2011_09_26/2011_09_26_drive_0091_sync 326 r
+2011_09_30/2011_09_30_drive_0028_sync 3731 l
+2011_10_03/2011_10_03_drive_0034_sync 1789 r
+2011_10_03/2011_10_03_drive_0034_sync 1204 l
+2011_10_03/2011_10_03_drive_0034_sync 631 l
+2011_09_26/2011_09_26_drive_0028_sync 137 l
+2011_09_30/2011_09_30_drive_0034_sync 709 r
+2011_09_26/2011_09_26_drive_0028_sync 252 r
+2011_09_26/2011_09_26_drive_0022_sync 319 l
+2011_09_26/2011_09_26_drive_0017_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 3768 r
+2011_10_03/2011_10_03_drive_0034_sync 428 l
+2011_09_26/2011_09_26_drive_0104_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 2606 l
+2011_09_30/2011_09_30_drive_0028_sync 4431 r
+2011_09_26/2011_09_26_drive_0017_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 2738 l
+2011_09_30/2011_09_30_drive_0028_sync 2622 r
+2011_09_26/2011_09_26_drive_0028_sync 11 l
+2011_10_03/2011_10_03_drive_0042_sync 438 l
+2011_09_26/2011_09_26_drive_0079_sync 21 l
+2011_10_03/2011_10_03_drive_0034_sync 1076 r
+2011_09_26/2011_09_26_drive_0011_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 2130 l
+2011_09_26/2011_09_26_drive_0022_sync 86 l
+2011_09_26/2011_09_26_drive_0028_sync 173 l
+2011_10_03/2011_10_03_drive_0034_sync 2315 l
+2011_09_26/2011_09_26_drive_0018_sync 35 r
+2011_09_26/2011_09_26_drive_0061_sync 312 l
+2011_09_30/2011_09_30_drive_0028_sync 1010 r
+2011_10_03/2011_10_03_drive_0034_sync 1914 l
+2011_09_26/2011_09_26_drive_0019_sync 418 r
+2011_09_26/2011_09_26_drive_0087_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 221 r
+2011_10_03/2011_10_03_drive_0034_sync 2117 l
+2011_10_03/2011_10_03_drive_0034_sync 3295 r
+2011_09_26/2011_09_26_drive_0028_sync 70 l
+2011_09_30/2011_09_30_drive_0033_sync 419 l
+2011_10_03/2011_10_03_drive_0042_sync 1093 r
+2011_09_30/2011_09_30_drive_0028_sync 1565 l
+2011_09_26/2011_09_26_drive_0061_sync 570 l
+2011_10_03/2011_10_03_drive_0034_sync 1890 l
+2011_09_26/2011_09_26_drive_0057_sync 144 l
+2011_10_03/2011_10_03_drive_0034_sync 1081 r
+2011_09_26/2011_09_26_drive_0028_sync 20 l
+2011_09_26/2011_09_26_drive_0061_sync 349 r
+2011_09_26/2011_09_26_drive_0019_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 2922 l
+2011_10_03/2011_10_03_drive_0034_sync 3743 r
+2011_10_03/2011_10_03_drive_0034_sync 1341 l
+2011_09_30/2011_09_30_drive_0034_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 4842 r
+2011_09_30/2011_09_30_drive_0028_sync 174 l
+2011_09_26/2011_09_26_drive_0022_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 2126 l
+2011_09_26/2011_09_26_drive_0032_sync 298 l
+2011_09_26/2011_09_26_drive_0091_sync 55 r
+2011_10_03/2011_10_03_drive_0042_sync 950 l
+2011_09_26/2011_09_26_drive_0091_sync 24 r
+2011_09_26/2011_09_26_drive_0095_sync 207 r
+2011_09_30/2011_09_30_drive_0020_sync 922 r
+2011_09_30/2011_09_30_drive_0028_sync 2995 r
+2011_09_30/2011_09_30_drive_0028_sync 1114 r
+2011_09_26/2011_09_26_drive_0028_sync 371 l
+2011_09_30/2011_09_30_drive_0028_sync 3879 r
+2011_10_03/2011_10_03_drive_0034_sync 3252 l
+2011_09_30/2011_09_30_drive_0020_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 4788 l
+2011_09_26/2011_09_26_drive_0011_sync 110 l
+2011_10_03/2011_10_03_drive_0034_sync 4235 l
+2011_09_26/2011_09_26_drive_0005_sync 64 r
+2011_09_26/2011_09_26_drive_0070_sync 212 r
+2011_09_26/2011_09_26_drive_0039_sync 259 r
+2011_10_03/2011_10_03_drive_0042_sync 803 r
+2011_09_26/2011_09_26_drive_0051_sync 42 r
+2011_09_26/2011_09_26_drive_0017_sync 11 l
+2011_09_30/2011_09_30_drive_0033_sync 134 r
+2011_09_26/2011_09_26_drive_0022_sync 380 l
+2011_10_03/2011_10_03_drive_0034_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 2448 r
+2011_09_26/2011_09_26_drive_0039_sync 286 r
+2011_09_30/2011_09_30_drive_0033_sync 1383 l
+2011_09_30/2011_09_30_drive_0028_sync 4880 r
+2011_09_30/2011_09_30_drive_0033_sync 1268 r
+2011_09_26/2011_09_26_drive_0061_sync 331 r
+2011_09_30/2011_09_30_drive_0028_sync 264 l
+2011_09_30/2011_09_30_drive_0034_sync 1169 l
+2011_09_26/2011_09_26_drive_0057_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 1959 l
+2011_09_30/2011_09_30_drive_0033_sync 1172 l
+2011_10_03/2011_10_03_drive_0034_sync 2729 r
+2011_09_26/2011_09_26_drive_0051_sync 393 r
+2011_09_29/2011_09_29_drive_0026_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 405 r
+2011_09_30/2011_09_30_drive_0034_sync 1103 r
+2011_09_30/2011_09_30_drive_0033_sync 1461 r
+2011_09_30/2011_09_30_drive_0028_sync 3661 r
+2011_09_26/2011_09_26_drive_0028_sync 194 r
+2011_09_26/2011_09_26_drive_0039_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 3570 r
+2011_10_03/2011_10_03_drive_0034_sync 1378 l
+2011_09_26/2011_09_26_drive_0070_sync 337 l
+2011_09_26/2011_09_26_drive_0113_sync 38 l
+2011_09_30/2011_09_30_drive_0033_sync 363 l
+2011_09_26/2011_09_26_drive_0019_sync 259 l
+2011_10_03/2011_10_03_drive_0034_sync 4602 l
+2011_09_28/2011_09_28_drive_0001_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 2942 l
+2011_09_30/2011_09_30_drive_0033_sync 1191 l
+2011_09_30/2011_09_30_drive_0028_sync 3036 l
+2011_09_29/2011_09_29_drive_0004_sync 265 l
+2011_09_30/2011_09_30_drive_0028_sync 1142 r
+2011_09_26/2011_09_26_drive_0057_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 5106 l
+2011_09_26/2011_09_26_drive_0070_sync 68 r
+2011_09_26/2011_09_26_drive_0061_sync 152 r
+2011_09_30/2011_09_30_drive_0033_sync 762 l
+2011_09_26/2011_09_26_drive_0104_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 2528 l
+2011_10_03/2011_10_03_drive_0034_sync 1641 l
+2011_10_03/2011_10_03_drive_0034_sync 3026 l
+2011_09_26/2011_09_26_drive_0070_sync 89 r
+2011_09_30/2011_09_30_drive_0028_sync 3858 r
+2011_09_26/2011_09_26_drive_0061_sync 667 l
+2011_09_26/2011_09_26_drive_0087_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 2952 r
+2011_09_26/2011_09_26_drive_0014_sync 233 r
+2011_09_26/2011_09_26_drive_0079_sync 56 r
+2011_09_30/2011_09_30_drive_0033_sync 1309 l
+2011_09_29/2011_09_29_drive_0004_sync 267 l
+2011_09_26/2011_09_26_drive_0019_sync 377 l
+2011_09_30/2011_09_30_drive_0028_sync 1713 l
+2011_09_30/2011_09_30_drive_0033_sync 1465 r
+2011_09_30/2011_09_30_drive_0033_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 3547 l
+2011_10_03/2011_10_03_drive_0042_sync 956 r
+2011_09_26/2011_09_26_drive_0001_sync 101 r
+2011_10_03/2011_10_03_drive_0042_sync 285 l
+2011_09_26/2011_09_26_drive_0061_sync 373 r
+2011_09_29/2011_09_29_drive_0004_sync 178 l
+2011_09_30/2011_09_30_drive_0028_sync 4859 l
+2011_09_30/2011_09_30_drive_0020_sync 80 r
+2011_09_26/2011_09_26_drive_0015_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 2268 l
+2011_09_30/2011_09_30_drive_0028_sync 5100 r
+2011_09_30/2011_09_30_drive_0028_sync 2678 l
+2011_09_26/2011_09_26_drive_0060_sync 55 l
+2011_09_29/2011_09_29_drive_0004_sync 198 l
+2011_09_26/2011_09_26_drive_0018_sync 70 l
+2011_09_30/2011_09_30_drive_0020_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 3346 r
+2011_09_26/2011_09_26_drive_0061_sync 666 l
+2011_09_30/2011_09_30_drive_0020_sync 1063 r
+2011_09_26/2011_09_26_drive_0014_sync 106 l
+2011_09_30/2011_09_30_drive_0034_sync 368 l
+2011_09_26/2011_09_26_drive_0019_sync 465 l
+2011_10_03/2011_10_03_drive_0034_sync 3876 r
+2011_09_26/2011_09_26_drive_0095_sync 233 r
+2011_09_30/2011_09_30_drive_0033_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 680 r
+2011_10_03/2011_10_03_drive_0042_sync 28 r
+2011_09_26/2011_09_26_drive_0057_sync 283 l
+2011_09_26/2011_09_26_drive_0022_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 4062 l
+2011_09_26/2011_09_26_drive_0104_sync 220 r
+2011_10_03/2011_10_03_drive_0034_sync 420 r
+2011_09_26/2011_09_26_drive_0039_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 1291 l
+2011_09_30/2011_09_30_drive_0028_sync 2233 r
+2011_09_28/2011_09_28_drive_0001_sync 63 r
+2011_09_26/2011_09_26_drive_0061_sync 9 l
+2011_09_29/2011_09_29_drive_0004_sync 72 r
+2011_09_30/2011_09_30_drive_0034_sync 636 r
+2011_09_26/2011_09_26_drive_0057_sync 138 r
+2011_09_30/2011_09_30_drive_0028_sync 860 r
+2011_10_03/2011_10_03_drive_0034_sync 571 l
+2011_09_26/2011_09_26_drive_0051_sync 218 l
+2011_09_26/2011_09_26_drive_0070_sync 142 l
+2011_09_30/2011_09_30_drive_0020_sync 960 l
+2011_09_26/2011_09_26_drive_0087_sync 621 l
+2011_09_30/2011_09_30_drive_0028_sync 2989 l
+2011_09_30/2011_09_30_drive_0033_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 3712 l
+2011_09_30/2011_09_30_drive_0028_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 3995 l
+2011_09_30/2011_09_30_drive_0028_sync 403 l
+2011_09_26/2011_09_26_drive_0095_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 3353 l
+2011_09_30/2011_09_30_drive_0028_sync 545 l
+2011_09_26/2011_09_26_drive_0028_sync 290 l
+2011_09_30/2011_09_30_drive_0028_sync 4979 r
+2011_10_03/2011_10_03_drive_0034_sync 2779 l
+2011_09_30/2011_09_30_drive_0034_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 610 l
+2011_09_30/2011_09_30_drive_0034_sync 1007 l
+2011_10_03/2011_10_03_drive_0034_sync 2963 r
+2011_09_26/2011_09_26_drive_0095_sync 264 r
+2011_09_26/2011_09_26_drive_0035_sync 60 l
+2011_09_26/2011_09_26_drive_0028_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 2827 l
+2011_09_30/2011_09_30_drive_0033_sync 127 l
+2011_09_26/2011_09_26_drive_0022_sync 753 r
+2011_09_26/2011_09_26_drive_0104_sync 88 r
+2011_09_26/2011_09_26_drive_0061_sync 151 l
+2011_09_26/2011_09_26_drive_0057_sync 346 l
+2011_09_26/2011_09_26_drive_0039_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 4019 r
+2011_10_03/2011_10_03_drive_0034_sync 3715 r
+2011_09_26/2011_09_26_drive_0035_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 3288 l
+2011_09_30/2011_09_30_drive_0028_sync 4999 r
+2011_09_26/2011_09_26_drive_0051_sync 156 r
+2011_09_26/2011_09_26_drive_0014_sync 97 l
+2011_09_30/2011_09_30_drive_0028_sync 3921 r
+2011_10_03/2011_10_03_drive_0034_sync 4450 r
+2011_09_26/2011_09_26_drive_0018_sync 207 r
+2011_10_03/2011_10_03_drive_0034_sync 3440 r
+2011_09_30/2011_09_30_drive_0028_sync 1743 l
+2011_09_26/2011_09_26_drive_0095_sync 224 l
+2011_09_30/2011_09_30_drive_0033_sync 1129 l
+2011_09_30/2011_09_30_drive_0034_sync 908 r
+2011_09_28/2011_09_28_drive_0001_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 3844 r
+2011_09_30/2011_09_30_drive_0033_sync 124 l
+2011_09_30/2011_09_30_drive_0020_sync 738 r
+2011_09_26/2011_09_26_drive_0060_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 3813 r
+2011_09_30/2011_09_30_drive_0034_sync 1070 l
+2011_09_26/2011_09_26_drive_0095_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 4986 l
+2011_09_26/2011_09_26_drive_0032_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 1741 r
+2011_09_30/2011_09_30_drive_0028_sync 2828 r
+2011_09_26/2011_09_26_drive_0005_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 2848 r
+2011_09_29/2011_09_29_drive_0026_sync 143 l
+2011_09_30/2011_09_30_drive_0020_sync 760 r
+2011_10_03/2011_10_03_drive_0034_sync 2799 l
+2011_09_30/2011_09_30_drive_0028_sync 4676 r
+2011_09_26/2011_09_26_drive_0061_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 267 l
+2011_09_26/2011_09_26_drive_0061_sync 633 r
+2011_09_30/2011_09_30_drive_0033_sync 1338 r
+2011_09_30/2011_09_30_drive_0028_sync 4105 l
+2011_09_30/2011_09_30_drive_0028_sync 4176 r
+2011_09_26/2011_09_26_drive_0019_sync 360 l
+2011_10_03/2011_10_03_drive_0034_sync 444 l
+2011_09_26/2011_09_26_drive_0087_sync 358 l
+2011_09_30/2011_09_30_drive_0033_sync 1294 l
+2011_10_03/2011_10_03_drive_0034_sync 1469 l
+2011_10_03/2011_10_03_drive_0034_sync 2193 l
+2011_10_03/2011_10_03_drive_0042_sync 519 r
+2011_09_30/2011_09_30_drive_0028_sync 382 r
+2011_10_03/2011_10_03_drive_0034_sync 3537 l
+2011_09_26/2011_09_26_drive_0095_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 186 r
+2011_10_03/2011_10_03_drive_0034_sync 2516 l
+2011_09_26/2011_09_26_drive_0091_sync 209 l
+2011_09_30/2011_09_30_drive_0033_sync 50 l
+2011_10_03/2011_10_03_drive_0042_sync 709 r
+2011_10_03/2011_10_03_drive_0034_sync 1514 r
+2011_09_26/2011_09_26_drive_0091_sync 186 r
+2011_10_03/2011_10_03_drive_0042_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 2236 l
+2011_09_30/2011_09_30_drive_0028_sync 274 l
+2011_10_03/2011_10_03_drive_0034_sync 2121 l
+2011_09_26/2011_09_26_drive_0061_sync 597 l
+2011_10_03/2011_10_03_drive_0034_sync 3959 l
+2011_10_03/2011_10_03_drive_0034_sync 1216 l
+2011_09_26/2011_09_26_drive_0087_sync 447 r
+2011_09_30/2011_09_30_drive_0033_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 3798 l
+2011_09_30/2011_09_30_drive_0028_sync 522 l
+2011_10_03/2011_10_03_drive_0034_sync 715 r
+2011_09_30/2011_09_30_drive_0028_sync 2948 r
+2011_09_26/2011_09_26_drive_0061_sync 397 r
+2011_09_26/2011_09_26_drive_0061_sync 403 r
+2011_09_30/2011_09_30_drive_0033_sync 1229 r
+2011_10_03/2011_10_03_drive_0034_sync 3698 r
+2011_10_03/2011_10_03_drive_0034_sync 1503 r
+2011_09_26/2011_09_26_drive_0022_sync 268 l
+2011_09_26/2011_09_26_drive_0061_sync 53 l
+2011_09_26/2011_09_26_drive_0014_sync 252 r
+2011_09_30/2011_09_30_drive_0034_sync 93 r
+2011_10_03/2011_10_03_drive_0034_sync 1330 l
+2011_10_03/2011_10_03_drive_0034_sync 3547 r
+2011_09_30/2011_09_30_drive_0028_sync 3803 r
+2011_09_29/2011_09_29_drive_0026_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 4614 l
+2011_09_30/2011_09_30_drive_0028_sync 4215 r
+2011_09_26/2011_09_26_drive_0070_sync 155 l
+2011_09_30/2011_09_30_drive_0034_sync 408 l
+2011_09_26/2011_09_26_drive_0061_sync 585 r
+2011_09_30/2011_09_30_drive_0020_sync 74 r
+2011_10_03/2011_10_03_drive_0042_sync 426 l
+2011_09_26/2011_09_26_drive_0061_sync 5 l
+2011_09_30/2011_09_30_drive_0020_sync 406 r
+2011_09_30/2011_09_30_drive_0020_sync 54 l
+2011_09_26/2011_09_26_drive_0061_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 922 r
+2011_09_26/2011_09_26_drive_0014_sync 181 r
+2011_09_26/2011_09_26_drive_0019_sync 95 l
+2011_09_26/2011_09_26_drive_0028_sync 321 r
+2011_09_30/2011_09_30_drive_0033_sync 1315 r
+2011_10_03/2011_10_03_drive_0034_sync 937 r
+2011_09_26/2011_09_26_drive_0039_sync 335 r
+2011_09_30/2011_09_30_drive_0028_sync 978 r
+2011_09_26/2011_09_26_drive_0051_sync 414 r
+2011_10_03/2011_10_03_drive_0034_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 4104 r
+2011_09_30/2011_09_30_drive_0020_sync 685 r
+2011_10_03/2011_10_03_drive_0042_sync 867 l
+2011_09_26/2011_09_26_drive_0091_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 2484 r
+2011_09_30/2011_09_30_drive_0028_sync 2222 l
+2011_09_26/2011_09_26_drive_0057_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 2175 r
+2011_09_26/2011_09_26_drive_0091_sync 298 r
+2011_09_30/2011_09_30_drive_0033_sync 30 l
+2011_09_26/2011_09_26_drive_0061_sync 157 l
+2011_10_03/2011_10_03_drive_0042_sync 403 r
+2011_10_03/2011_10_03_drive_0034_sync 3687 r
+2011_09_26/2011_09_26_drive_0070_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 4446 r
+2011_10_03/2011_10_03_drive_0034_sync 563 l
+2011_09_26/2011_09_26_drive_0051_sync 341 l
+2011_10_03/2011_10_03_drive_0042_sync 328 r
+2011_09_26/2011_09_26_drive_0019_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 2707 r
+2011_09_26/2011_09_26_drive_0018_sync 163 r
+2011_09_26/2011_09_26_drive_0022_sync 741 l
+2011_09_30/2011_09_30_drive_0028_sync 2078 r
+2011_09_30/2011_09_30_drive_0034_sync 310 r
+2011_09_30/2011_09_30_drive_0028_sync 3172 l
+2011_10_03/2011_10_03_drive_0034_sync 3660 r
+2011_10_03/2011_10_03_drive_0042_sync 653 r
+2011_09_30/2011_09_30_drive_0028_sync 1678 r
+2011_09_30/2011_09_30_drive_0028_sync 2574 r
+2011_09_29/2011_09_29_drive_0026_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 3545 l
+2011_10_03/2011_10_03_drive_0034_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 2689 r
+2011_09_26/2011_09_26_drive_0018_sync 167 l
+2011_09_30/2011_09_30_drive_0034_sync 1054 l
+2011_09_30/2011_09_30_drive_0020_sync 620 l
+2011_09_29/2011_09_29_drive_0004_sync 132 l
+2011_09_26/2011_09_26_drive_0022_sync 254 r
+2011_09_30/2011_09_30_drive_0028_sync 2027 r
+2011_10_03/2011_10_03_drive_0034_sync 4410 l
+2011_09_30/2011_09_30_drive_0028_sync 1477 r
+2011_10_03/2011_10_03_drive_0034_sync 3124 l
+2011_09_30/2011_09_30_drive_0028_sync 977 r
+2011_09_26/2011_09_26_drive_0001_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 4699 l
+2011_09_30/2011_09_30_drive_0020_sync 143 l
+2011_09_30/2011_09_30_drive_0028_sync 3083 r
+2011_10_03/2011_10_03_drive_0034_sync 1582 r
+2011_09_26/2011_09_26_drive_0061_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 2604 l
+2011_10_03/2011_10_03_drive_0034_sync 1927 r
+2011_10_03/2011_10_03_drive_0042_sync 771 r
+2011_09_30/2011_09_30_drive_0028_sync 5138 l
+2011_09_30/2011_09_30_drive_0028_sync 2962 r
+2011_09_30/2011_09_30_drive_0028_sync 2267 r
+2011_09_26/2011_09_26_drive_0018_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 5094 r
+2011_09_26/2011_09_26_drive_0039_sync 34 r
+2011_09_30/2011_09_30_drive_0033_sync 285 l
+2011_10_03/2011_10_03_drive_0034_sync 1237 r
+2011_09_30/2011_09_30_drive_0028_sync 511 r
+2011_09_26/2011_09_26_drive_0018_sync 224 r
+2011_09_30/2011_09_30_drive_0028_sync 1515 l
+2011_09_30/2011_09_30_drive_0034_sync 699 r
+2011_10_03/2011_10_03_drive_0042_sync 575 r
+2011_10_03/2011_10_03_drive_0034_sync 800 l
+2011_10_03/2011_10_03_drive_0034_sync 251 l
+2011_10_03/2011_10_03_drive_0042_sync 499 l
+2011_10_03/2011_10_03_drive_0034_sync 3643 l
+2011_09_26/2011_09_26_drive_0061_sync 191 l
+2011_09_26/2011_09_26_drive_0061_sync 505 r
+2011_09_26/2011_09_26_drive_0019_sync 385 l
+2011_10_03/2011_10_03_drive_0034_sync 4148 l
+2011_10_03/2011_10_03_drive_0034_sync 704 r
+2011_10_03/2011_10_03_drive_0034_sync 370 r
+2011_09_30/2011_09_30_drive_0028_sync 3956 l
+2011_09_26/2011_09_26_drive_0051_sync 201 r
+2011_09_30/2011_09_30_drive_0034_sync 799 r
+2011_10_03/2011_10_03_drive_0034_sync 3615 r
+2011_09_28/2011_09_28_drive_0001_sync 99 l
+2011_09_26/2011_09_26_drive_0061_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 641 r
+2011_09_26/2011_09_26_drive_0051_sync 178 r
+2011_10_03/2011_10_03_drive_0042_sync 363 r
+2011_10_03/2011_10_03_drive_0034_sync 3873 r
+2011_09_26/2011_09_26_drive_0051_sync 120 l
+2011_09_29/2011_09_29_drive_0004_sync 275 l
+2011_09_26/2011_09_26_drive_0070_sync 353 l
+2011_09_29/2011_09_29_drive_0004_sync 141 l
+2011_09_26/2011_09_26_drive_0014_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 4856 r
+2011_09_30/2011_09_30_drive_0028_sync 1471 l
+2011_09_30/2011_09_30_drive_0028_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 3527 l
+2011_09_30/2011_09_30_drive_0034_sync 247 l
+2011_09_29/2011_09_29_drive_0004_sync 227 l
+2011_10_03/2011_10_03_drive_0034_sync 1379 l
+2011_09_30/2011_09_30_drive_0020_sync 515 l
+2011_09_30/2011_09_30_drive_0028_sync 542 l
+2011_09_30/2011_09_30_drive_0028_sync 3774 l
+2011_09_30/2011_09_30_drive_0034_sync 1188 r
+2011_09_30/2011_09_30_drive_0028_sync 3584 r
+2011_09_26/2011_09_26_drive_0032_sync 220 l
+2011_10_03/2011_10_03_drive_0034_sync 1170 r
+2011_09_26/2011_09_26_drive_0039_sync 281 l
+2011_09_30/2011_09_30_drive_0028_sync 549 l
+2011_09_26/2011_09_26_drive_0104_sync 302 l
+2011_10_03/2011_10_03_drive_0034_sync 3855 l
+2011_10_03/2011_10_03_drive_0034_sync 4320 r
+2011_09_30/2011_09_30_drive_0028_sync 3226 r
+2011_09_26/2011_09_26_drive_0051_sync 264 l
+2011_09_29/2011_09_29_drive_0026_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 3058 r
+2011_09_30/2011_09_30_drive_0028_sync 2731 r
+2011_09_30/2011_09_30_drive_0033_sync 1276 l
+2011_09_26/2011_09_26_drive_0028_sync 303 l
+2011_09_26/2011_09_26_drive_0028_sync 347 l
+2011_09_26/2011_09_26_drive_0028_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 4195 r
+2011_10_03/2011_10_03_drive_0034_sync 4564 l
+2011_09_30/2011_09_30_drive_0028_sync 3492 l
+2011_09_26/2011_09_26_drive_0060_sync 10 r
+2011_09_26/2011_09_26_drive_0070_sync 281 r
+2011_09_30/2011_09_30_drive_0028_sync 3507 l
+2011_09_26/2011_09_26_drive_0070_sync 352 l
+2011_09_29/2011_09_29_drive_0004_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 3066 r
+2011_09_30/2011_09_30_drive_0028_sync 2954 r
+2011_09_30/2011_09_30_drive_0020_sync 433 l
+2011_10_03/2011_10_03_drive_0034_sync 2472 l
+2011_09_30/2011_09_30_drive_0034_sync 1012 r
+2011_10_03/2011_10_03_drive_0042_sync 1138 r
+2011_09_30/2011_09_30_drive_0028_sync 1290 l
+2011_09_30/2011_09_30_drive_0028_sync 3131 r
+2011_09_30/2011_09_30_drive_0020_sync 201 l
+2011_09_30/2011_09_30_drive_0028_sync 563 l
+2011_09_26/2011_09_26_drive_0022_sync 788 r
+2011_10_03/2011_10_03_drive_0034_sync 3331 l
+2011_10_03/2011_10_03_drive_0034_sync 1228 l
+2011_09_30/2011_09_30_drive_0034_sync 33 l
+2011_09_30/2011_09_30_drive_0020_sync 557 r
+2011_09_30/2011_09_30_drive_0028_sync 708 r
+2011_10_03/2011_10_03_drive_0034_sync 780 r
+2011_09_26/2011_09_26_drive_0028_sync 329 r
+2011_09_30/2011_09_30_drive_0034_sync 804 r
+2011_10_03/2011_10_03_drive_0034_sync 2562 l
+2011_09_26/2011_09_26_drive_0113_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 3326 l
+2011_09_30/2011_09_30_drive_0028_sync 2131 l
+2011_10_03/2011_10_03_drive_0034_sync 4449 r
+2011_09_29/2011_09_29_drive_0004_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 4290 r
+2011_10_03/2011_10_03_drive_0034_sync 4633 r
+2011_09_30/2011_09_30_drive_0028_sync 2073 r
+2011_10_03/2011_10_03_drive_0034_sync 2633 r
+2011_09_30/2011_09_30_drive_0028_sync 4518 l
+2011_10_03/2011_10_03_drive_0042_sync 77 l
+2011_09_26/2011_09_26_drive_0011_sync 72 l
+2011_09_26/2011_09_26_drive_0022_sync 276 l
+2011_10_03/2011_10_03_drive_0034_sync 506 r
+2011_09_30/2011_09_30_drive_0028_sync 2227 l
+2011_09_30/2011_09_30_drive_0033_sync 579 r
+2011_10_03/2011_10_03_drive_0034_sync 3992 r
+2011_09_30/2011_09_30_drive_0033_sync 361 r
+2011_09_26/2011_09_26_drive_0019_sync 151 l
+2011_09_30/2011_09_30_drive_0034_sync 817 r
+2011_09_26/2011_09_26_drive_0070_sync 165 r
+2011_09_26/2011_09_26_drive_0028_sync 329 l
+2011_09_28/2011_09_28_drive_0001_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 2947 r
+2011_09_30/2011_09_30_drive_0028_sync 2582 l
+2011_09_26/2011_09_26_drive_0061_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 3680 r
+2011_10_03/2011_10_03_drive_0042_sync 171 r
+2011_09_26/2011_09_26_drive_0087_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 1104 l
+2011_10_03/2011_10_03_drive_0034_sync 3214 l
+2011_09_30/2011_09_30_drive_0028_sync 1896 l
+2011_09_26/2011_09_26_drive_0087_sync 384 r
+2011_09_26/2011_09_26_drive_0104_sync 42 l
+2011_09_26/2011_09_26_drive_0019_sync 462 r
+2011_09_30/2011_09_30_drive_0033_sync 1590 r
+2011_09_26/2011_09_26_drive_0018_sync 252 r
+2011_09_30/2011_09_30_drive_0034_sync 213 l
+2011_09_30/2011_09_30_drive_0020_sync 959 r
+2011_09_26/2011_09_26_drive_0015_sync 112 r
+2011_09_26/2011_09_26_drive_0035_sync 96 l
+2011_09_26/2011_09_26_drive_0022_sync 732 r
+2011_09_30/2011_09_30_drive_0028_sync 925 r
+2011_09_30/2011_09_30_drive_0034_sync 692 l
+2011_10_03/2011_10_03_drive_0034_sync 4560 r
+2011_09_30/2011_09_30_drive_0020_sync 954 r
+2011_09_30/2011_09_30_drive_0033_sync 1074 l
+2011_09_30/2011_09_30_drive_0033_sync 1182 r
+2011_09_30/2011_09_30_drive_0028_sync 4266 r
+2011_09_30/2011_09_30_drive_0028_sync 2320 l
+2011_09_30/2011_09_30_drive_0033_sync 1313 r
+2011_09_30/2011_09_30_drive_0028_sync 4054 r
+2011_09_26/2011_09_26_drive_0070_sync 272 l
+2011_09_30/2011_09_30_drive_0020_sync 1071 l
+2011_09_26/2011_09_26_drive_0019_sync 384 l
+2011_09_26/2011_09_26_drive_0019_sync 374 r
+2011_10_03/2011_10_03_drive_0034_sync 591 r
+2011_09_30/2011_09_30_drive_0020_sync 1065 l
+2011_10_03/2011_10_03_drive_0034_sync 3957 l
+2011_09_30/2011_09_30_drive_0028_sync 3085 r
+2011_09_30/2011_09_30_drive_0020_sync 53 l
+2011_09_26/2011_09_26_drive_0022_sync 238 l
+2011_09_30/2011_09_30_drive_0034_sync 149 r
+2011_09_26/2011_09_26_drive_0022_sync 451 l
+2011_10_03/2011_10_03_drive_0034_sync 1842 l
+2011_10_03/2011_10_03_drive_0034_sync 283 l
+2011_10_03/2011_10_03_drive_0034_sync 4566 l
+2011_10_03/2011_10_03_drive_0034_sync 2272 l
+2011_09_26/2011_09_26_drive_0039_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 376 l
+2011_10_03/2011_10_03_drive_0034_sync 2760 l
+2011_09_30/2011_09_30_drive_0034_sync 599 l
+2011_09_30/2011_09_30_drive_0028_sync 3716 l
+2011_09_30/2011_09_30_drive_0028_sync 4744 r
+2011_09_26/2011_09_26_drive_0032_sync 334 l
+2011_09_30/2011_09_30_drive_0028_sync 4490 l
+2011_10_03/2011_10_03_drive_0034_sync 3215 r
+2011_09_26/2011_09_26_drive_0057_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 4505 l
+2011_09_30/2011_09_30_drive_0028_sync 502 r
+2011_09_26/2011_09_26_drive_0022_sync 263 r
+2011_09_26/2011_09_26_drive_0019_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 3195 r
+2011_09_30/2011_09_30_drive_0028_sync 2896 l
+2011_09_26/2011_09_26_drive_0079_sync 43 r
+2011_09_26/2011_09_26_drive_0022_sync 684 l
+2011_09_26/2011_09_26_drive_0028_sync 80 l
+2011_09_26/2011_09_26_drive_0032_sync 352 l
+2011_09_26/2011_09_26_drive_0011_sync 31 l
+2011_09_26/2011_09_26_drive_0022_sync 317 r
+2011_09_30/2011_09_30_drive_0034_sync 57 l
+2011_10_03/2011_10_03_drive_0034_sync 1923 l
+2011_09_26/2011_09_26_drive_0061_sync 595 r
+2011_09_26/2011_09_26_drive_0028_sync 410 r
+2011_09_30/2011_09_30_drive_0028_sync 865 r
+2011_10_03/2011_10_03_drive_0034_sync 3518 l
+2011_09_26/2011_09_26_drive_0051_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 3005 r
+2011_09_26/2011_09_26_drive_0014_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 4145 l
+2011_09_26/2011_09_26_drive_0057_sync 195 l
+2011_09_26/2011_09_26_drive_0022_sync 751 l
+2011_09_30/2011_09_30_drive_0020_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 1395 l
+2011_10_03/2011_10_03_drive_0034_sync 2411 r
+2011_09_26/2011_09_26_drive_0022_sync 160 r
+2011_09_26/2011_09_26_drive_0019_sync 178 l
+2011_09_26/2011_09_26_drive_0039_sync 73 r
+2011_09_26/2011_09_26_drive_0087_sync 493 l
+2011_09_26/2011_09_26_drive_0032_sync 332 l
+2011_09_26/2011_09_26_drive_0015_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 1236 r
+2011_09_26/2011_09_26_drive_0070_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 2977 l
+2011_09_30/2011_09_30_drive_0033_sync 809 r
+2011_09_26/2011_09_26_drive_0022_sync 71 r
+2011_09_30/2011_09_30_drive_0033_sync 1057 r
+2011_09_30/2011_09_30_drive_0028_sync 969 r
+2011_09_26/2011_09_26_drive_0091_sync 294 l
+2011_10_03/2011_10_03_drive_0034_sync 2049 r
+2011_09_26/2011_09_26_drive_0087_sync 448 l
+2011_09_30/2011_09_30_drive_0028_sync 655 r
+2011_09_30/2011_09_30_drive_0033_sync 1214 r
+2011_09_26/2011_09_26_drive_0039_sync 40 r
+2011_09_30/2011_09_30_drive_0033_sync 451 l
+2011_09_30/2011_09_30_drive_0034_sync 1115 r
+2011_09_26/2011_09_26_drive_0015_sync 202 l
+2011_09_26/2011_09_26_drive_0104_sync 15 l
+2011_09_26/2011_09_26_drive_0061_sync 462 r
+2011_09_30/2011_09_30_drive_0033_sync 1354 r
+2011_09_30/2011_09_30_drive_0028_sync 3317 l
+2011_10_03/2011_10_03_drive_0034_sync 3631 r
+2011_09_30/2011_09_30_drive_0020_sync 449 l
+2011_10_03/2011_10_03_drive_0034_sync 1922 l
+2011_09_26/2011_09_26_drive_0015_sync 48 r
+2011_09_26/2011_09_26_drive_0032_sync 332 r
+2011_09_30/2011_09_30_drive_0028_sync 2789 l
+2011_09_30/2011_09_30_drive_0028_sync 1892 r
+2011_09_29/2011_09_29_drive_0026_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 2409 r
+2011_09_26/2011_09_26_drive_0022_sync 527 l
+2011_09_26/2011_09_26_drive_0070_sync 69 r
+2011_09_26/2011_09_26_drive_0057_sync 356 l
+2011_09_26/2011_09_26_drive_0087_sync 385 r
+2011_09_30/2011_09_30_drive_0028_sync 3850 l
+2011_09_29/2011_09_29_drive_0004_sync 18 r
+2011_09_26/2011_09_26_drive_0015_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 2037 r
+2011_09_30/2011_09_30_drive_0034_sync 323 r
+2011_09_26/2011_09_26_drive_0061_sync 642 r
+2011_09_26/2011_09_26_drive_0061_sync 470 l
+2011_09_26/2011_09_26_drive_0039_sync 394 r
+2011_09_26/2011_09_26_drive_0014_sync 10 l
+2011_09_26/2011_09_26_drive_0005_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 4370 l
+2011_09_30/2011_09_30_drive_0028_sync 4371 l
+2011_09_28/2011_09_28_drive_0001_sync 26 r
+2011_09_26/2011_09_26_drive_0061_sync 462 l
+2011_09_26/2011_09_26_drive_0015_sync 246 l
+2011_09_26/2011_09_26_drive_0070_sync 298 l
+2011_10_03/2011_10_03_drive_0042_sync 58 l
+2011_09_30/2011_09_30_drive_0034_sync 187 r
+2011_09_30/2011_09_30_drive_0034_sync 628 l
+2011_09_30/2011_09_30_drive_0028_sync 2190 r
+2011_09_30/2011_09_30_drive_0020_sync 458 r
+2011_10_03/2011_10_03_drive_0034_sync 928 l
+2011_09_30/2011_09_30_drive_0034_sync 303 r
+2011_09_26/2011_09_26_drive_0070_sync 221 l
+2011_09_30/2011_09_30_drive_0033_sync 833 r
+2011_09_30/2011_09_30_drive_0020_sync 527 r
+2011_10_03/2011_10_03_drive_0034_sync 2079 l
+2011_09_30/2011_09_30_drive_0033_sync 636 l
+2011_09_30/2011_09_30_drive_0020_sync 876 l
+2011_09_26/2011_09_26_drive_0022_sync 201 r
+2011_09_26/2011_09_26_drive_0091_sync 196 l
+2011_09_30/2011_09_30_drive_0028_sync 816 r
+2011_09_30/2011_09_30_drive_0028_sync 5016 l
+2011_09_30/2011_09_30_drive_0033_sync 1405 r
+2011_09_30/2011_09_30_drive_0028_sync 4779 l
+2011_10_03/2011_10_03_drive_0034_sync 3995 r
+2011_09_26/2011_09_26_drive_0095_sync 155 l
+2011_10_03/2011_10_03_drive_0042_sync 496 l
+2011_10_03/2011_10_03_drive_0034_sync 2754 l
+2011_09_30/2011_09_30_drive_0033_sync 612 l
+2011_09_30/2011_09_30_drive_0028_sync 3093 r
+2011_09_29/2011_09_29_drive_0004_sync 195 l
+2011_09_30/2011_09_30_drive_0028_sync 1008 r
+2011_09_26/2011_09_26_drive_0039_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 3144 l
+2011_10_03/2011_10_03_drive_0042_sync 903 l
+2011_09_26/2011_09_26_drive_0061_sync 76 r
+2011_09_30/2011_09_30_drive_0034_sync 1005 r
+2011_10_03/2011_10_03_drive_0034_sync 337 r
+2011_09_30/2011_09_30_drive_0020_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 2835 r
+2011_09_26/2011_09_26_drive_0087_sync 641 r
+2011_09_30/2011_09_30_drive_0020_sync 20 r
+2011_09_26/2011_09_26_drive_0022_sync 599 l
+2011_10_03/2011_10_03_drive_0034_sync 1980 r
+2011_09_26/2011_09_26_drive_0039_sync 298 r
+2011_09_26/2011_09_26_drive_0091_sync 202 l
+2011_09_29/2011_09_29_drive_0004_sync 304 l
+2011_09_26/2011_09_26_drive_0015_sync 40 l
+2011_09_26/2011_09_26_drive_0028_sync 406 r
+2011_09_30/2011_09_30_drive_0033_sync 607 l
+2011_09_26/2011_09_26_drive_0061_sync 680 l
+2011_09_26/2011_09_26_drive_0087_sync 236 l
+2011_10_03/2011_10_03_drive_0034_sync 4307 r
+2011_09_30/2011_09_30_drive_0020_sync 155 r
+2011_09_26/2011_09_26_drive_0104_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 1884 l
+2011_09_30/2011_09_30_drive_0028_sync 90 r
+2011_09_26/2011_09_26_drive_0022_sync 687 r
+2011_10_03/2011_10_03_drive_0034_sync 1744 l
+2011_10_03/2011_10_03_drive_0034_sync 3695 l
+2011_09_30/2011_09_30_drive_0034_sync 238 r
+2011_10_03/2011_10_03_drive_0034_sync 3149 r
+2011_09_30/2011_09_30_drive_0020_sync 768 r
+2011_09_26/2011_09_26_drive_0014_sync 294 r
+2011_09_30/2011_09_30_drive_0020_sync 1028 r
+2011_10_03/2011_10_03_drive_0034_sync 4619 r
+2011_09_30/2011_09_30_drive_0028_sync 4127 l
+2011_09_30/2011_09_30_drive_0028_sync 2697 l
+2011_09_30/2011_09_30_drive_0028_sync 1200 r
+2011_09_30/2011_09_30_drive_0033_sync 1133 l
+2011_09_30/2011_09_30_drive_0034_sync 999 r
+2011_10_03/2011_10_03_drive_0034_sync 1110 l
+2011_09_30/2011_09_30_drive_0033_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 4657 r
+2011_09_26/2011_09_26_drive_0005_sync 62 l
+2011_10_03/2011_10_03_drive_0042_sync 909 l
+2011_10_03/2011_10_03_drive_0034_sync 3431 l
+2011_09_30/2011_09_30_drive_0028_sync 4827 r
+2011_10_03/2011_10_03_drive_0042_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 1976 r
+2011_09_26/2011_09_26_drive_0014_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 4305 l
+2011_09_30/2011_09_30_drive_0028_sync 3477 r
+2011_09_26/2011_09_26_drive_0032_sync 154 r
+2011_09_26/2011_09_26_drive_0061_sync 436 l
+2011_09_30/2011_09_30_drive_0034_sync 728 r
+2011_09_26/2011_09_26_drive_0017_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 318 r
+2011_09_26/2011_09_26_drive_0051_sync 329 r
+2011_09_26/2011_09_26_drive_0061_sync 682 r
+2011_09_26/2011_09_26_drive_0032_sync 183 l
+2011_09_30/2011_09_30_drive_0033_sync 1497 r
+2011_10_03/2011_10_03_drive_0034_sync 3988 r
+2011_09_30/2011_09_30_drive_0028_sync 1315 r
+2011_09_30/2011_09_30_drive_0033_sync 239 l
+2011_09_26/2011_09_26_drive_0070_sync 268 r
+2011_09_26/2011_09_26_drive_0113_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 846 l
+2011_09_26/2011_09_26_drive_0087_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 4667 l
+2011_09_30/2011_09_30_drive_0028_sync 1606 r
+2011_09_30/2011_09_30_drive_0028_sync 1643 l
+2011_09_30/2011_09_30_drive_0028_sync 124 r
+2011_09_26/2011_09_26_drive_0039_sync 130 r
+2011_10_03/2011_10_03_drive_0034_sync 2130 l
+2011_10_03/2011_10_03_drive_0034_sync 3390 l
+2011_09_30/2011_09_30_drive_0033_sync 275 r
+2011_09_26/2011_09_26_drive_0087_sync 723 l
+2011_09_30/2011_09_30_drive_0028_sync 3336 l
+2011_09_30/2011_09_30_drive_0034_sync 51 r
+2011_09_26/2011_09_26_drive_0051_sync 298 l
+2011_10_03/2011_10_03_drive_0034_sync 1876 r
+2011_09_26/2011_09_26_drive_0051_sync 390 l
+2011_09_26/2011_09_26_drive_0032_sync 325 l
+2011_09_30/2011_09_30_drive_0028_sync 2736 r
+2011_09_30/2011_09_30_drive_0033_sync 1555 r
+2011_09_30/2011_09_30_drive_0020_sync 983 r
+2011_10_03/2011_10_03_drive_0042_sync 954 r
+2011_09_26/2011_09_26_drive_0039_sync 381 r
+2011_09_26/2011_09_26_drive_0017_sync 94 l
+2011_09_26/2011_09_26_drive_0087_sync 188 l
+2011_09_26/2011_09_26_drive_0039_sync 311 r
+2011_09_29/2011_09_29_drive_0004_sync 118 l
+2011_10_03/2011_10_03_drive_0034_sync 2428 r
+2011_09_30/2011_09_30_drive_0033_sync 1106 l
+2011_10_03/2011_10_03_drive_0034_sync 4318 l
+2011_10_03/2011_10_03_drive_0034_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 3417 r
+2011_10_03/2011_10_03_drive_0034_sync 4432 r
+2011_09_26/2011_09_26_drive_0039_sync 70 l
+2011_09_26/2011_09_26_drive_0032_sync 378 l
+2011_09_30/2011_09_30_drive_0020_sync 957 l
+2011_09_30/2011_09_30_drive_0034_sync 1059 r
+2011_10_03/2011_10_03_drive_0042_sync 454 r
+2011_09_29/2011_09_29_drive_0004_sync 272 l
+2011_09_26/2011_09_26_drive_0014_sync 123 r
+2011_10_03/2011_10_03_drive_0042_sync 941 l
+2011_09_30/2011_09_30_drive_0020_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 620 r
+2011_09_30/2011_09_30_drive_0028_sync 107 r
+2011_09_26/2011_09_26_drive_0104_sync 112 l
+2011_09_30/2011_09_30_drive_0034_sync 607 l
+2011_10_03/2011_10_03_drive_0034_sync 1959 r
+2011_09_30/2011_09_30_drive_0033_sync 1165 r
+2011_09_26/2011_09_26_drive_0061_sync 436 r
+2011_09_26/2011_09_26_drive_0022_sync 724 l
+2011_10_03/2011_10_03_drive_0034_sync 457 l
+2011_10_03/2011_10_03_drive_0034_sync 3388 l
+2011_09_26/2011_09_26_drive_0051_sync 348 r
+2011_09_26/2011_09_26_drive_0051_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 1010 l
+2011_09_26/2011_09_26_drive_0061_sync 610 l
+2011_09_28/2011_09_28_drive_0001_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 3795 r
+2011_09_30/2011_09_30_drive_0020_sync 629 r
+2011_09_26/2011_09_26_drive_0011_sync 13 r
+2011_09_26/2011_09_26_drive_0087_sync 357 l
+2011_09_30/2011_09_30_drive_0028_sync 634 l
+2011_09_30/2011_09_30_drive_0033_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 479 l
+2011_10_03/2011_10_03_drive_0034_sync 2268 r
+2011_09_30/2011_09_30_drive_0028_sync 2883 l
+2011_09_26/2011_09_26_drive_0057_sync 109 l
+2011_09_26/2011_09_26_drive_0001_sync 15 r
+2011_09_26/2011_09_26_drive_0087_sync 123 l
+2011_09_26/2011_09_26_drive_0018_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 1779 r
+2011_09_30/2011_09_30_drive_0034_sync 891 l
+2011_09_26/2011_09_26_drive_0095_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 4133 r
+2011_10_03/2011_10_03_drive_0034_sync 477 r
+2011_09_28/2011_09_28_drive_0001_sync 39 l
+2011_09_26/2011_09_26_drive_0019_sync 171 r
+2011_09_30/2011_09_30_drive_0033_sync 1245 l
+2011_10_03/2011_10_03_drive_0034_sync 2418 r
+2011_09_30/2011_09_30_drive_0028_sync 1345 l
+2011_10_03/2011_10_03_drive_0034_sync 4210 r
+2011_09_30/2011_09_30_drive_0033_sync 429 l
+2011_09_26/2011_09_26_drive_0095_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 891 l
+2011_09_30/2011_09_30_drive_0034_sync 807 r
+2011_09_26/2011_09_26_drive_0087_sync 289 r
+2011_09_30/2011_09_30_drive_0033_sync 1005 r
+2011_09_30/2011_09_30_drive_0028_sync 1246 r
+2011_09_30/2011_09_30_drive_0028_sync 2826 r
+2011_10_03/2011_10_03_drive_0034_sync 3940 l
+2011_09_30/2011_09_30_drive_0034_sync 1029 r
+2011_10_03/2011_10_03_drive_0034_sync 4443 l
+2011_09_26/2011_09_26_drive_0104_sync 278 l
+2011_09_26/2011_09_26_drive_0095_sync 73 r
+2011_09_30/2011_09_30_drive_0034_sync 1207 r
+2011_09_26/2011_09_26_drive_0070_sync 113 l
+2011_09_26/2011_09_26_drive_0061_sync 84 r
+2011_09_26/2011_09_26_drive_0015_sync 273 l
+2011_09_26/2011_09_26_drive_0095_sync 170 r
+2011_09_30/2011_09_30_drive_0033_sync 237 l
+2011_09_26/2011_09_26_drive_0061_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 1902 r
+2011_09_26/2011_09_26_drive_0005_sync 31 l
+2011_09_29/2011_09_29_drive_0004_sync 332 l
+2011_09_30/2011_09_30_drive_0028_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 346 r
+2011_09_26/2011_09_26_drive_0061_sync 573 l
+2011_09_30/2011_09_30_drive_0033_sync 1325 r
+2011_10_03/2011_10_03_drive_0034_sync 3295 l
+2011_09_30/2011_09_30_drive_0028_sync 1753 l
+2011_09_30/2011_09_30_drive_0028_sync 3314 r
+2011_10_03/2011_10_03_drive_0034_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 3724 l
+2011_09_30/2011_09_30_drive_0033_sync 391 l
+2011_10_03/2011_10_03_drive_0034_sync 3586 r
+2011_09_30/2011_09_30_drive_0034_sync 1186 l
+2011_09_26/2011_09_26_drive_0015_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 4055 l
+2011_09_30/2011_09_30_drive_0034_sync 951 l
+2011_09_26/2011_09_26_drive_0018_sync 191 l
+2011_09_30/2011_09_30_drive_0028_sync 3384 l
+2011_09_30/2011_09_30_drive_0028_sync 3132 l
+2011_09_26/2011_09_26_drive_0061_sync 492 r
+2011_09_30/2011_09_30_drive_0020_sync 512 l
+2011_09_26/2011_09_26_drive_0018_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 3675 l
+2011_09_26/2011_09_26_drive_0061_sync 200 l
+2011_09_26/2011_09_26_drive_0061_sync 695 r
+2011_09_26/2011_09_26_drive_0051_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 4327 l
+2011_09_26/2011_09_26_drive_0061_sync 628 r
+2011_09_30/2011_09_30_drive_0028_sync 4278 l
+2011_09_26/2011_09_26_drive_0032_sync 352 r
+2011_10_03/2011_10_03_drive_0034_sync 3008 r
+2011_09_26/2011_09_26_drive_0028_sync 400 r
+2011_09_26/2011_09_26_drive_0022_sync 156 l
+2011_09_30/2011_09_30_drive_0033_sync 1285 r
+2011_09_30/2011_09_30_drive_0028_sync 4327 r
+2011_09_30/2011_09_30_drive_0020_sync 827 l
+2011_09_30/2011_09_30_drive_0028_sync 684 r
+2011_09_26/2011_09_26_drive_0060_sync 7 l
+2011_09_26/2011_09_26_drive_0019_sync 102 l
+2011_09_26/2011_09_26_drive_0035_sync 122 r
+2011_09_30/2011_09_30_drive_0034_sync 540 l
+2011_09_30/2011_09_30_drive_0034_sync 985 l
+2011_09_30/2011_09_30_drive_0028_sync 3033 l
+2011_09_26/2011_09_26_drive_0005_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 2585 r
+2011_10_03/2011_10_03_drive_0034_sync 3974 l
+2011_09_30/2011_09_30_drive_0028_sync 3383 l
+2011_09_30/2011_09_30_drive_0028_sync 2285 l
+2011_09_30/2011_09_30_drive_0034_sync 1131 r
+2011_09_30/2011_09_30_drive_0028_sync 31 l
+2011_09_30/2011_09_30_drive_0034_sync 1199 l
+2011_09_26/2011_09_26_drive_0095_sync 185 l
+2011_09_30/2011_09_30_drive_0020_sync 797 l
+2011_10_03/2011_10_03_drive_0034_sync 1305 r
+2011_10_03/2011_10_03_drive_0034_sync 1904 l
+2011_09_30/2011_09_30_drive_0028_sync 3491 l
+2011_10_03/2011_10_03_drive_0034_sync 728 l
+2011_10_03/2011_10_03_drive_0034_sync 832 r
+2011_09_30/2011_09_30_drive_0028_sync 3710 l
+2011_09_26/2011_09_26_drive_0087_sync 8 l
+2011_09_26/2011_09_26_drive_0087_sync 329 r
+2011_09_30/2011_09_30_drive_0033_sync 962 l
+2011_09_26/2011_09_26_drive_0091_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 4282 l
+2011_09_26/2011_09_26_drive_0017_sync 50 l
+2011_09_26/2011_09_26_drive_0061_sync 534 l
+2011_09_26/2011_09_26_drive_0091_sync 300 l
+2011_10_03/2011_10_03_drive_0034_sync 4638 r
+2011_09_30/2011_09_30_drive_0028_sync 1679 r
+2011_09_30/2011_09_30_drive_0028_sync 4754 r
+2011_09_30/2011_09_30_drive_0020_sync 400 r
+2011_09_26/2011_09_26_drive_0061_sync 104 l
+2011_09_30/2011_09_30_drive_0028_sync 1215 l
+2011_10_03/2011_10_03_drive_0034_sync 3290 l
+2011_09_26/2011_09_26_drive_0039_sync 118 l
+2011_09_26/2011_09_26_drive_0018_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 178 l
+2011_09_30/2011_09_30_drive_0034_sync 312 r
+2011_09_26/2011_09_26_drive_0057_sync 310 l
+2011_09_30/2011_09_30_drive_0028_sync 4948 l
+2011_09_30/2011_09_30_drive_0020_sync 761 r
+2011_10_03/2011_10_03_drive_0034_sync 3647 l
+2011_09_30/2011_09_30_drive_0033_sync 1126 r
+2011_09_26/2011_09_26_drive_0018_sync 228 l
+2011_09_26/2011_09_26_drive_0051_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 901 l
+2011_09_30/2011_09_30_drive_0034_sync 563 l
+2011_10_03/2011_10_03_drive_0034_sync 2544 r
+2011_10_03/2011_10_03_drive_0034_sync 3393 l
+2011_09_26/2011_09_26_drive_0113_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 1149 l
+2011_09_26/2011_09_26_drive_0039_sync 31 l
+2011_09_30/2011_09_30_drive_0020_sync 134 l
+2011_10_03/2011_10_03_drive_0042_sync 541 r
+2011_10_03/2011_10_03_drive_0034_sync 432 r
+2011_09_26/2011_09_26_drive_0095_sync 140 r
+2011_09_30/2011_09_30_drive_0020_sync 1062 r
+2011_10_03/2011_10_03_drive_0034_sync 1862 l
+2011_10_03/2011_10_03_drive_0034_sync 3965 r
+2011_09_26/2011_09_26_drive_0018_sync 189 r
+2011_10_03/2011_10_03_drive_0034_sync 3121 l
+2011_09_29/2011_09_29_drive_0004_sync 287 r
+2011_09_26/2011_09_26_drive_0005_sync 113 l
+2011_09_26/2011_09_26_drive_0019_sync 180 l
+2011_09_30/2011_09_30_drive_0033_sync 1075 l
+2011_10_03/2011_10_03_drive_0042_sync 813 r
+2011_09_30/2011_09_30_drive_0020_sync 569 l
+2011_09_26/2011_09_26_drive_0061_sync 57 l
+2011_09_30/2011_09_30_drive_0034_sync 111 r
+2011_09_30/2011_09_30_drive_0034_sync 978 l
+2011_10_03/2011_10_03_drive_0034_sync 1802 l
+2011_10_03/2011_10_03_drive_0034_sync 3550 l
+2011_10_03/2011_10_03_drive_0034_sync 3352 l
+2011_09_26/2011_09_26_drive_0011_sync 175 l
+2011_10_03/2011_10_03_drive_0034_sync 831 l
+2011_09_30/2011_09_30_drive_0028_sync 4892 l
+2011_09_26/2011_09_26_drive_0061_sync 672 l
+2011_09_30/2011_09_30_drive_0028_sync 3339 r
+2011_09_26/2011_09_26_drive_0014_sync 15 r
+2011_09_26/2011_09_26_drive_0028_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 2138 r
+2011_09_26/2011_09_26_drive_0022_sync 450 l
+2011_10_03/2011_10_03_drive_0042_sync 314 l
+2011_09_30/2011_09_30_drive_0028_sync 3137 l
+2011_09_30/2011_09_30_drive_0028_sync 1864 r
+2011_09_26/2011_09_26_drive_0091_sync 188 r
+2011_09_30/2011_09_30_drive_0028_sync 1650 r
+2011_09_26/2011_09_26_drive_0039_sync 389 l
+2011_10_03/2011_10_03_drive_0034_sync 461 r
+2011_09_30/2011_09_30_drive_0033_sync 475 l
+2011_10_03/2011_10_03_drive_0042_sync 939 r
+2011_10_03/2011_10_03_drive_0042_sync 388 l
+2011_10_03/2011_10_03_drive_0034_sync 933 l
+2011_09_29/2011_09_29_drive_0004_sync 87 l
+2011_09_26/2011_09_26_drive_0091_sync 221 l
+2011_09_30/2011_09_30_drive_0033_sync 1434 r
+2011_09_30/2011_09_30_drive_0028_sync 1651 r
+2011_09_30/2011_09_30_drive_0033_sync 1568 l
+2011_10_03/2011_10_03_drive_0034_sync 2589 r
+2011_09_30/2011_09_30_drive_0028_sync 1533 r
+2011_09_30/2011_09_30_drive_0033_sync 1298 l
+2011_09_26/2011_09_26_drive_0061_sync 589 r
+2011_09_30/2011_09_30_drive_0028_sync 3540 r
+2011_09_30/2011_09_30_drive_0034_sync 954 r
+2011_09_26/2011_09_26_drive_0087_sync 583 r
+2011_09_26/2011_09_26_drive_0018_sync 153 l
+2011_09_26/2011_09_26_drive_0113_sync 52 r
+2011_09_26/2011_09_26_drive_0087_sync 434 l
+2011_09_30/2011_09_30_drive_0028_sync 627 r
+2011_09_26/2011_09_26_drive_0022_sync 273 l
+2011_09_30/2011_09_30_drive_0033_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 2575 r
+2011_09_26/2011_09_26_drive_0104_sync 209 l
+2011_09_30/2011_09_30_drive_0028_sync 3216 r
+2011_09_26/2011_09_26_drive_0061_sync 326 l
+2011_09_30/2011_09_30_drive_0034_sync 360 r
+2011_09_30/2011_09_30_drive_0034_sync 671 l
+2011_09_30/2011_09_30_drive_0028_sync 439 l
+2011_09_30/2011_09_30_drive_0028_sync 3513 l
+2011_10_03/2011_10_03_drive_0034_sync 1186 l
+2011_09_26/2011_09_26_drive_0028_sync 358 r
+2011_09_26/2011_09_26_drive_0001_sync 63 r
+2011_09_26/2011_09_26_drive_0060_sync 60 r
+2011_09_26/2011_09_26_drive_0087_sync 170 l
+2011_10_03/2011_10_03_drive_0042_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 2405 r
+2011_09_26/2011_09_26_drive_0095_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 3714 l
+2011_09_26/2011_09_26_drive_0011_sync 97 r
+2011_09_26/2011_09_26_drive_0104_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 3244 l
+2011_09_26/2011_09_26_drive_0022_sync 308 r
+2011_09_26/2011_09_26_drive_0022_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 4355 l
+2011_09_30/2011_09_30_drive_0028_sync 3727 r
+2011_10_03/2011_10_03_drive_0034_sync 1850 l
+2011_10_03/2011_10_03_drive_0034_sync 1647 r
+2011_09_30/2011_09_30_drive_0028_sync 254 l
+2011_10_03/2011_10_03_drive_0042_sync 181 l
+2011_09_26/2011_09_26_drive_0018_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 3406 r
+2011_09_26/2011_09_26_drive_0087_sync 281 r
+2011_09_26/2011_09_26_drive_0019_sync 445 r
+2011_09_30/2011_09_30_drive_0028_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 1044 l
+2011_09_26/2011_09_26_drive_0104_sync 265 r
+2011_09_26/2011_09_26_drive_0057_sync 120 l
+2011_09_26/2011_09_26_drive_0070_sync 349 l
+2011_09_26/2011_09_26_drive_0087_sync 257 r
+2011_09_29/2011_09_29_drive_0004_sync 311 r
+2011_09_26/2011_09_26_drive_0079_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 951 r
+2011_09_26/2011_09_26_drive_0113_sync 80 l
+2011_09_26/2011_09_26_drive_0079_sync 82 r
+2011_09_30/2011_09_30_drive_0028_sync 2299 r
+2011_09_26/2011_09_26_drive_0028_sync 104 l
+2011_09_26/2011_09_26_drive_0051_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 4951 r
+2011_10_03/2011_10_03_drive_0034_sync 583 l
+2011_09_30/2011_09_30_drive_0028_sync 1318 r
+2011_09_30/2011_09_30_drive_0034_sync 812 r
+2011_09_26/2011_09_26_drive_0051_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 1432 l
+2011_09_30/2011_09_30_drive_0028_sync 2972 r
+2011_09_30/2011_09_30_drive_0034_sync 435 r
+2011_09_26/2011_09_26_drive_0022_sync 586 l
+2011_09_30/2011_09_30_drive_0033_sync 902 l
+2011_09_30/2011_09_30_drive_0028_sync 3483 r
+2011_09_26/2011_09_26_drive_0032_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 3261 l
+2011_09_26/2011_09_26_drive_0032_sync 206 l
+2011_09_30/2011_09_30_drive_0028_sync 5171 l
+2011_09_26/2011_09_26_drive_0051_sync 133 l
+2011_10_03/2011_10_03_drive_0034_sync 3054 r
+2011_10_03/2011_10_03_drive_0034_sync 4043 l
+2011_09_30/2011_09_30_drive_0028_sync 2230 r
+2011_09_30/2011_09_30_drive_0034_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 2270 l
+2011_09_26/2011_09_26_drive_0032_sync 108 r
+2011_09_26/2011_09_26_drive_0015_sync 70 l
+2011_09_26/2011_09_26_drive_0035_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 1176 l
+2011_09_30/2011_09_30_drive_0020_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 2461 l
+2011_10_03/2011_10_03_drive_0042_sync 142 r
+2011_09_30/2011_09_30_drive_0033_sync 10 l
+2011_09_26/2011_09_26_drive_0060_sync 50 l
+2011_09_30/2011_09_30_drive_0033_sync 368 r
+2011_09_26/2011_09_26_drive_0019_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 1538 l
+2011_09_30/2011_09_30_drive_0033_sync 1163 r
+2011_10_03/2011_10_03_drive_0034_sync 4139 r
+2011_10_03/2011_10_03_drive_0042_sync 796 r
+2011_09_26/2011_09_26_drive_0104_sync 59 r
+2011_09_26/2011_09_26_drive_0091_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 4402 r
+2011_09_30/2011_09_30_drive_0028_sync 4929 r
+2011_10_03/2011_10_03_drive_0034_sync 1883 l
+2011_09_30/2011_09_30_drive_0028_sync 3630 r
+2011_09_26/2011_09_26_drive_0019_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 3187 r
+2011_09_29/2011_09_29_drive_0004_sync 0 r
+2011_09_26/2011_09_26_drive_0028_sync 404 r
+2011_09_26/2011_09_26_drive_0087_sync 654 l
+2011_09_30/2011_09_30_drive_0034_sync 1046 r
+2011_09_26/2011_09_26_drive_0032_sync 382 l
+2011_10_03/2011_10_03_drive_0034_sync 3326 r
+2011_09_30/2011_09_30_drive_0028_sync 929 l
+2011_09_26/2011_09_26_drive_0070_sync 370 l
+2011_10_03/2011_10_03_drive_0034_sync 330 l
+2011_09_26/2011_09_26_drive_0061_sync 385 l
+2011_09_26/2011_09_26_drive_0057_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 768 r
+2011_10_03/2011_10_03_drive_0034_sync 2236 r
+2011_09_30/2011_09_30_drive_0028_sync 3980 l
+2011_09_26/2011_09_26_drive_0070_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 2943 r
+2011_09_26/2011_09_26_drive_0095_sync 65 r
+2011_10_03/2011_10_03_drive_0034_sync 2831 r
+2011_09_26/2011_09_26_drive_0011_sync 177 r
+2011_09_26/2011_09_26_drive_0070_sync 385 r
+2011_09_30/2011_09_30_drive_0033_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 160 l
+2011_09_30/2011_09_30_drive_0033_sync 562 r
+2011_10_03/2011_10_03_drive_0034_sync 2232 r
+2011_09_30/2011_09_30_drive_0034_sync 318 l
+2011_10_03/2011_10_03_drive_0042_sync 677 r
+2011_09_30/2011_09_30_drive_0020_sync 342 r
+2011_09_30/2011_09_30_drive_0028_sync 2685 r
+2011_09_26/2011_09_26_drive_0057_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 1308 l
+2011_10_03/2011_10_03_drive_0034_sync 1025 l
+2011_09_26/2011_09_26_drive_0095_sync 17 l
+2011_09_26/2011_09_26_drive_0022_sync 467 r
+2011_09_26/2011_09_26_drive_0011_sync 16 r
+2011_09_26/2011_09_26_drive_0087_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 2897 l
+2011_09_26/2011_09_26_drive_0104_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 4209 l
+2011_10_03/2011_10_03_drive_0034_sync 3234 l
+2011_09_26/2011_09_26_drive_0070_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 5044 l
+2011_10_03/2011_10_03_drive_0034_sync 3070 r
+2011_10_03/2011_10_03_drive_0034_sync 223 r
+2011_09_26/2011_09_26_drive_0104_sync 151 l
+2011_10_03/2011_10_03_drive_0042_sync 840 r
+2011_09_30/2011_09_30_drive_0028_sync 4261 r
+2011_09_30/2011_09_30_drive_0028_sync 4560 r
+2011_09_28/2011_09_28_drive_0001_sync 69 r
+2011_09_26/2011_09_26_drive_0061_sync 371 l
+2011_09_26/2011_09_26_drive_0019_sync 125 r
+2011_09_26/2011_09_26_drive_0019_sync 347 l
+2011_10_03/2011_10_03_drive_0034_sync 3202 l
+2011_09_30/2011_09_30_drive_0028_sync 2293 l
+2011_10_03/2011_10_03_drive_0042_sync 48 l
+2011_09_26/2011_09_26_drive_0087_sync 165 r
+2011_09_30/2011_09_30_drive_0034_sync 1220 r
+2011_09_26/2011_09_26_drive_0051_sync 91 l
+2011_09_26/2011_09_26_drive_0022_sync 280 r
+2011_09_26/2011_09_26_drive_0060_sync 68 l
+2011_09_30/2011_09_30_drive_0020_sync 503 l
+2011_10_03/2011_10_03_drive_0034_sync 4132 r
+2011_10_03/2011_10_03_drive_0034_sync 4072 l
+2011_10_03/2011_10_03_drive_0042_sync 164 l
+2011_10_03/2011_10_03_drive_0042_sync 804 l
+2011_09_30/2011_09_30_drive_0033_sync 850 l
+2011_10_03/2011_10_03_drive_0034_sync 211 l
+2011_09_30/2011_09_30_drive_0034_sync 1155 r
+2011_09_26/2011_09_26_drive_0057_sync 254 r
+2011_09_26/2011_09_26_drive_0061_sync 102 l
+2011_09_30/2011_09_30_drive_0033_sync 156 r
+2011_09_26/2011_09_26_drive_0061_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 4313 l
+2011_09_30/2011_09_30_drive_0034_sync 358 r
+2011_09_26/2011_09_26_drive_0019_sync 216 l
+2011_09_26/2011_09_26_drive_0039_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 2934 l
+2011_09_30/2011_09_30_drive_0028_sync 1297 l
+2011_09_26/2011_09_26_drive_0091_sync 116 r
+2011_09_30/2011_09_30_drive_0033_sync 671 r
+2011_09_30/2011_09_30_drive_0028_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 1091 l
+2011_10_03/2011_10_03_drive_0034_sync 3784 r
+2011_09_30/2011_09_30_drive_0028_sync 4533 r
+2011_09_26/2011_09_26_drive_0104_sync 80 l
+2011_09_30/2011_09_30_drive_0028_sync 4517 l
+2011_09_30/2011_09_30_drive_0033_sync 1538 r
+2011_10_03/2011_10_03_drive_0034_sync 972 l
+2011_09_30/2011_09_30_drive_0034_sync 746 l
+2011_09_26/2011_09_26_drive_0015_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 3067 l
+2011_09_26/2011_09_26_drive_0015_sync 257 l
+2011_09_29/2011_09_29_drive_0004_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 4389 l
+2011_10_03/2011_10_03_drive_0042_sync 698 r
+2011_09_30/2011_09_30_drive_0028_sync 526 l
+2011_10_03/2011_10_03_drive_0034_sync 2898 l
+2011_09_26/2011_09_26_drive_0014_sync 110 l
+2011_09_26/2011_09_26_drive_0087_sync 638 l
+2011_09_26/2011_09_26_drive_0028_sync 172 r
+2011_09_30/2011_09_30_drive_0033_sync 601 l
+2011_09_30/2011_09_30_drive_0028_sync 2349 l
+2011_09_26/2011_09_26_drive_0061_sync 37 r
+2011_09_30/2011_09_30_drive_0028_sync 4730 r
+2011_09_30/2011_09_30_drive_0028_sync 3299 l
+2011_09_30/2011_09_30_drive_0028_sync 4443 l
+2011_10_03/2011_10_03_drive_0034_sync 2670 r
+2011_09_26/2011_09_26_drive_0104_sync 187 l
+2011_09_26/2011_09_26_drive_0057_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 3144 l
+2011_09_30/2011_09_30_drive_0028_sync 3935 l
+2011_09_30/2011_09_30_drive_0020_sync 702 r
+2011_09_26/2011_09_26_drive_0039_sync 121 r
+2011_09_26/2011_09_26_drive_0028_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 3361 l
+2011_10_03/2011_10_03_drive_0042_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 2347 l
+2011_09_30/2011_09_30_drive_0020_sync 1093 l
+2011_10_03/2011_10_03_drive_0042_sync 709 l
+2011_09_30/2011_09_30_drive_0028_sync 2808 r
+2011_09_26/2011_09_26_drive_0091_sync 228 r
+2011_09_26/2011_09_26_drive_0028_sync 140 l
+2011_09_26/2011_09_26_drive_0005_sync 33 l
+2011_09_26/2011_09_26_drive_0061_sync 520 l
+2011_09_26/2011_09_26_drive_0070_sync 187 l
+2011_10_03/2011_10_03_drive_0034_sync 3335 l
+2011_09_26/2011_09_26_drive_0087_sync 215 l
+2011_09_26/2011_09_26_drive_0022_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 2659 l
+2011_09_26/2011_09_26_drive_0091_sync 256 l
+2011_09_30/2011_09_30_drive_0028_sync 4974 r
+2011_09_30/2011_09_30_drive_0028_sync 735 r
+2011_09_26/2011_09_26_drive_0032_sync 276 l
+2011_09_26/2011_09_26_drive_0022_sync 493 r
+2011_09_30/2011_09_30_drive_0034_sync 1204 r
+2011_09_26/2011_09_26_drive_0087_sync 146 l
+2011_09_30/2011_09_30_drive_0020_sync 563 l
+2011_10_03/2011_10_03_drive_0034_sync 3186 l
+2011_09_30/2011_09_30_drive_0034_sync 146 r
+2011_09_29/2011_09_29_drive_0004_sync 335 l
+2011_09_26/2011_09_26_drive_0104_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 1479 l
+2011_09_30/2011_09_30_drive_0020_sync 378 r
+2011_09_26/2011_09_26_drive_0087_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 931 r
+2011_09_26/2011_09_26_drive_0104_sync 57 r
+2011_09_26/2011_09_26_drive_0051_sync 347 l
+2011_10_03/2011_10_03_drive_0034_sync 4264 r
+2011_09_26/2011_09_26_drive_0087_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 2119 r
+2011_09_26/2011_09_26_drive_0057_sync 343 r
+2011_09_26/2011_09_26_drive_0079_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 4102 r
+2011_09_30/2011_09_30_drive_0020_sync 1057 r
+2011_09_30/2011_09_30_drive_0028_sync 1968 l
+2011_10_03/2011_10_03_drive_0034_sync 1950 r
+2011_09_30/2011_09_30_drive_0033_sync 746 l
+2011_09_26/2011_09_26_drive_0028_sync 176 l
+2011_09_30/2011_09_30_drive_0028_sync 4647 r
+2011_10_03/2011_10_03_drive_0034_sync 1157 r
+2011_09_26/2011_09_26_drive_0015_sync 97 l
+2011_09_26/2011_09_26_drive_0032_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 197 r
+2011_09_26/2011_09_26_drive_0001_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 4483 l
+2011_09_26/2011_09_26_drive_0019_sync 226 r
+2011_09_30/2011_09_30_drive_0020_sync 10 l
+2011_10_03/2011_10_03_drive_0042_sync 761 l
+2011_09_30/2011_09_30_drive_0033_sync 1202 r
+2011_09_26/2011_09_26_drive_0015_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 3319 l
+2011_09_30/2011_09_30_drive_0028_sync 173 l
+2011_09_26/2011_09_26_drive_0087_sync 109 l
+2011_09_30/2011_09_30_drive_0034_sync 558 r
+2011_10_03/2011_10_03_drive_0034_sync 3663 l
+2011_10_03/2011_10_03_drive_0034_sync 3228 l
+2011_09_26/2011_09_26_drive_0028_sync 191 r
+2011_10_03/2011_10_03_drive_0034_sync 1269 l
+2011_09_26/2011_09_26_drive_0113_sync 27 l
+2011_09_26/2011_09_26_drive_0087_sync 582 l
+2011_09_30/2011_09_30_drive_0028_sync 3156 r
+2011_09_26/2011_09_26_drive_0018_sync 176 r
+2011_09_30/2011_09_30_drive_0020_sync 979 r
+2011_09_26/2011_09_26_drive_0039_sync 332 r
+2011_09_30/2011_09_30_drive_0033_sync 1141 l
+2011_09_26/2011_09_26_drive_0028_sync 225 r
+2011_09_30/2011_09_30_drive_0020_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 2691 l
+2011_09_26/2011_09_26_drive_0032_sync 86 r
+2011_09_26/2011_09_26_drive_0061_sync 434 l
+2011_09_26/2011_09_26_drive_0057_sync 314 l
+2011_09_30/2011_09_30_drive_0028_sync 1211 r
+2011_09_30/2011_09_30_drive_0028_sync 416 r
+2011_09_30/2011_09_30_drive_0033_sync 256 r
+2011_09_26/2011_09_26_drive_0015_sync 168 l
+2011_09_30/2011_09_30_drive_0033_sync 199 l
+2011_09_30/2011_09_30_drive_0028_sync 1318 l
+2011_09_30/2011_09_30_drive_0034_sync 1097 l
+2011_10_03/2011_10_03_drive_0034_sync 3434 l
+2011_09_30/2011_09_30_drive_0034_sync 242 r
+2011_09_30/2011_09_30_drive_0033_sync 672 l
+2011_09_30/2011_09_30_drive_0028_sync 4649 r
+2011_09_26/2011_09_26_drive_0032_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 4841 l
+2011_09_26/2011_09_26_drive_0061_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 759 r
+2011_09_26/2011_09_26_drive_0005_sync 33 r
+2011_09_26/2011_09_26_drive_0028_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 4162 l
+2011_09_26/2011_09_26_drive_0022_sync 197 r
+2011_09_29/2011_09_29_drive_0004_sync 247 l
+2011_09_30/2011_09_30_drive_0028_sync 2713 l
+2011_09_30/2011_09_30_drive_0020_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2986 r
+2011_09_30/2011_09_30_drive_0028_sync 3099 l
+2011_09_30/2011_09_30_drive_0028_sync 903 r
+2011_09_26/2011_09_26_drive_0051_sync 174 l
+2011_09_26/2011_09_26_drive_0087_sync 193 l
+2011_09_30/2011_09_30_drive_0028_sync 2762 l
+2011_09_30/2011_09_30_drive_0028_sync 5015 r
+2011_09_30/2011_09_30_drive_0028_sync 932 l
+2011_09_26/2011_09_26_drive_0032_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 2729 r
+2011_09_30/2011_09_30_drive_0034_sync 967 r
+2011_10_03/2011_10_03_drive_0034_sync 1316 l
+2011_09_30/2011_09_30_drive_0028_sync 3848 l
+2011_10_03/2011_10_03_drive_0042_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 2371 l
+2011_09_26/2011_09_26_drive_0014_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 1965 l
+2011_10_03/2011_10_03_drive_0034_sync 3042 r
+2011_09_26/2011_09_26_drive_0032_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 954 l
+2011_10_03/2011_10_03_drive_0034_sync 59 r
+2011_09_26/2011_09_26_drive_0035_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 569 l
+2011_09_30/2011_09_30_drive_0028_sync 2570 r
+2011_10_03/2011_10_03_drive_0034_sync 3529 l
+2011_09_30/2011_09_30_drive_0028_sync 3372 l
+2011_09_30/2011_09_30_drive_0028_sync 4845 r
+2011_09_26/2011_09_26_drive_0019_sync 362 r
+2011_10_03/2011_10_03_drive_0034_sync 2918 r
+2011_09_26/2011_09_26_drive_0087_sync 296 l
+2011_10_03/2011_10_03_drive_0034_sync 2697 l
+2011_09_30/2011_09_30_drive_0028_sync 1380 l
+2011_09_30/2011_09_30_drive_0020_sync 828 l
+2011_09_26/2011_09_26_drive_0035_sync 0 r
+2011_09_26/2011_09_26_drive_0015_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 409 l
+2011_09_30/2011_09_30_drive_0033_sync 1210 r
+2011_10_03/2011_10_03_drive_0042_sync 922 l
+2011_09_30/2011_09_30_drive_0034_sync 474 l
+2011_09_26/2011_09_26_drive_0051_sync 363 l
+2011_09_26/2011_09_26_drive_0022_sync 701 r
+2011_09_30/2011_09_30_drive_0028_sync 354 l
+2011_10_03/2011_10_03_drive_0034_sync 3491 l
+2011_10_03/2011_10_03_drive_0034_sync 4103 l
+2011_10_03/2011_10_03_drive_0042_sync 466 r
+2011_09_26/2011_09_26_drive_0011_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 2929 l
+2011_09_26/2011_09_26_drive_0014_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 1555 r
+2011_09_26/2011_09_26_drive_0087_sync 268 r
+2011_09_30/2011_09_30_drive_0033_sync 1476 l
+2011_09_30/2011_09_30_drive_0028_sync 689 r
+2011_09_30/2011_09_30_drive_0033_sync 496 l
+2011_09_30/2011_09_30_drive_0033_sync 1072 r
+2011_09_26/2011_09_26_drive_0087_sync 420 r
+2011_09_26/2011_09_26_drive_0051_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 341 l
+2011_09_30/2011_09_30_drive_0033_sync 957 r
+2011_10_03/2011_10_03_drive_0042_sync 1018 r
+2011_09_26/2011_09_26_drive_0039_sync 293 l
+2011_09_26/2011_09_26_drive_0060_sync 52 l
+2011_09_26/2011_09_26_drive_0061_sync 508 r
+2011_09_30/2011_09_30_drive_0033_sync 1171 l
+2011_09_30/2011_09_30_drive_0028_sync 346 l
+2011_09_26/2011_09_26_drive_0061_sync 583 r
+2011_09_30/2011_09_30_drive_0028_sync 815 l
+2011_10_03/2011_10_03_drive_0034_sync 2678 r
+2011_10_03/2011_10_03_drive_0034_sync 971 r
+2011_09_28/2011_09_28_drive_0001_sync 19 r
+2011_09_26/2011_09_26_drive_0015_sync 129 r
+2011_09_30/2011_09_30_drive_0034_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 1096 r
+2011_10_03/2011_10_03_drive_0034_sync 137 r
+2011_09_30/2011_09_30_drive_0034_sync 741 r
+2011_09_26/2011_09_26_drive_0022_sync 386 l
+2011_09_26/2011_09_26_drive_0028_sync 400 l
+2011_09_30/2011_09_30_drive_0028_sync 4330 r
+2011_09_30/2011_09_30_drive_0028_sync 1179 l
+2011_09_30/2011_09_30_drive_0034_sync 724 r
+2011_09_30/2011_09_30_drive_0028_sync 3477 l
+2011_09_30/2011_09_30_drive_0028_sync 407 r
+2011_09_30/2011_09_30_drive_0020_sync 432 r
+2011_09_30/2011_09_30_drive_0033_sync 296 r
+2011_09_30/2011_09_30_drive_0033_sync 1463 r
+2011_09_26/2011_09_26_drive_0087_sync 191 r
+2011_09_26/2011_09_26_drive_0005_sync 57 r
+2011_09_26/2011_09_26_drive_0028_sync 27 l
+2011_09_26/2011_09_26_drive_0061_sync 227 l
+2011_09_29/2011_09_29_drive_0026_sync 54 r
+2011_09_26/2011_09_26_drive_0070_sync 307 r
+2011_09_30/2011_09_30_drive_0034_sync 1138 l
+2011_09_30/2011_09_30_drive_0034_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 3646 r
+2011_09_26/2011_09_26_drive_0095_sync 112 r
+2011_09_30/2011_09_30_drive_0033_sync 1593 l
+2011_09_30/2011_09_30_drive_0028_sync 920 r
+2011_09_30/2011_09_30_drive_0020_sync 125 r
+2011_09_30/2011_09_30_drive_0033_sync 423 r
+2011_09_30/2011_09_30_drive_0020_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 674 r
+2011_10_03/2011_10_03_drive_0034_sync 1683 l
+2011_09_30/2011_09_30_drive_0028_sync 4947 l
+2011_10_03/2011_10_03_drive_0034_sync 568 l
+2011_10_03/2011_10_03_drive_0034_sync 1133 r
+2011_09_26/2011_09_26_drive_0039_sync 50 r
+2011_09_30/2011_09_30_drive_0028_sync 1590 l
+2011_10_03/2011_10_03_drive_0034_sync 2899 l
+2011_09_26/2011_09_26_drive_0035_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 527 r
+2011_09_30/2011_09_30_drive_0034_sync 126 r
+2011_10_03/2011_10_03_drive_0034_sync 2422 r
+2011_10_03/2011_10_03_drive_0042_sync 989 l
+2011_09_26/2011_09_26_drive_0022_sync 612 l
+2011_09_26/2011_09_26_drive_0039_sync 363 r
+2011_09_26/2011_09_26_drive_0070_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 2636 l
+2011_10_03/2011_10_03_drive_0034_sync 2050 r
+2011_09_30/2011_09_30_drive_0020_sync 838 r
+2011_09_30/2011_09_30_drive_0028_sync 5162 l
+2011_09_26/2011_09_26_drive_0051_sync 168 r
+2011_09_30/2011_09_30_drive_0033_sync 1350 l
+2011_10_03/2011_10_03_drive_0034_sync 2135 r
+2011_09_29/2011_09_29_drive_0004_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 2478 r
+2011_09_26/2011_09_26_drive_0019_sync 278 r
+2011_10_03/2011_10_03_drive_0034_sync 1919 l
+2011_09_30/2011_09_30_drive_0034_sync 470 l
+2011_09_30/2011_09_30_drive_0020_sync 455 r
+2011_09_26/2011_09_26_drive_0039_sync 180 l
+2011_09_26/2011_09_26_drive_0028_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 1050 r
+2011_10_03/2011_10_03_drive_0034_sync 2440 r
+2011_09_30/2011_09_30_drive_0028_sync 3120 r
+2011_09_30/2011_09_30_drive_0028_sync 712 l
+2011_10_03/2011_10_03_drive_0034_sync 10 l
+2011_09_26/2011_09_26_drive_0022_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 2715 l
+2011_09_26/2011_09_26_drive_0019_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 2577 r
+2011_09_30/2011_09_30_drive_0028_sync 2661 l
+2011_09_30/2011_09_30_drive_0020_sync 988 l
+2011_09_30/2011_09_30_drive_0028_sync 857 r
+2011_10_03/2011_10_03_drive_0034_sync 726 l
+2011_10_03/2011_10_03_drive_0034_sync 943 r
+2011_09_30/2011_09_30_drive_0028_sync 3505 r
+2011_09_30/2011_09_30_drive_0028_sync 4485 r
+2011_09_26/2011_09_26_drive_0051_sync 202 r
+2011_10_03/2011_10_03_drive_0034_sync 8 r
+2011_09_26/2011_09_26_drive_0104_sync 231 l
+2011_09_26/2011_09_26_drive_0061_sync 285 l
+2011_09_26/2011_09_26_drive_0015_sync 143 l
+2011_09_30/2011_09_30_drive_0028_sync 1001 r
+2011_10_03/2011_10_03_drive_0034_sync 560 r
+2011_10_03/2011_10_03_drive_0034_sync 4297 r
+2011_10_03/2011_10_03_drive_0034_sync 401 l
+2011_09_30/2011_09_30_drive_0028_sync 1679 l
+2011_10_03/2011_10_03_drive_0034_sync 4591 l
+2011_10_03/2011_10_03_drive_0034_sync 1696 r
+2011_09_30/2011_09_30_drive_0028_sync 3595 l
+2011_09_30/2011_09_30_drive_0028_sync 4019 l
+2011_09_26/2011_09_26_drive_0051_sync 220 r
+2011_09_30/2011_09_30_drive_0034_sync 1026 l
+2011_09_30/2011_09_30_drive_0028_sync 452 r
+2011_10_03/2011_10_03_drive_0042_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 2773 l
+2011_09_30/2011_09_30_drive_0028_sync 852 r
+2011_09_26/2011_09_26_drive_0051_sync 96 l
+2011_09_26/2011_09_26_drive_0057_sync 35 r
+2011_09_26/2011_09_26_drive_0017_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 1077 r
+2011_10_03/2011_10_03_drive_0042_sync 405 l
+2011_09_30/2011_09_30_drive_0028_sync 4858 l
+2011_09_26/2011_09_26_drive_0070_sync 275 l
+2011_09_26/2011_09_26_drive_0022_sync 661 l
+2011_09_30/2011_09_30_drive_0034_sync 631 l
+2011_10_03/2011_10_03_drive_0034_sync 990 l
+2011_09_30/2011_09_30_drive_0034_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 4586 l
+2011_09_26/2011_09_26_drive_0018_sync 56 l
+2011_09_26/2011_09_26_drive_0070_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 3863 l
+2011_10_03/2011_10_03_drive_0042_sync 556 r
+2011_09_26/2011_09_26_drive_0061_sync 689 l
+2011_09_30/2011_09_30_drive_0034_sync 1120 l
+2011_10_03/2011_10_03_drive_0042_sync 982 r
+2011_09_26/2011_09_26_drive_0087_sync 490 l
+2011_09_26/2011_09_26_drive_0018_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 504 l
+2011_09_30/2011_09_30_drive_0028_sync 5046 r
+2011_09_30/2011_09_30_drive_0028_sync 1248 l
+2011_10_03/2011_10_03_drive_0034_sync 2607 l
+2011_09_26/2011_09_26_drive_0001_sync 65 r
+2011_09_30/2011_09_30_drive_0033_sync 1100 r
+2011_09_30/2011_09_30_drive_0028_sync 3945 r
+2011_09_30/2011_09_30_drive_0033_sync 1466 r
+2011_09_26/2011_09_26_drive_0022_sync 546 l
+2011_09_26/2011_09_26_drive_0051_sync 403 r
+2011_10_03/2011_10_03_drive_0034_sync 4272 r
+2011_09_26/2011_09_26_drive_0095_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 27 l
+2011_09_26/2011_09_26_drive_0019_sync 301 r
+2011_09_26/2011_09_26_drive_0087_sync 679 r
+2011_09_26/2011_09_26_drive_0022_sync 28 l
+2011_09_26/2011_09_26_drive_0022_sync 638 l
+2011_09_26/2011_09_26_drive_0061_sync 468 r
+2011_09_26/2011_09_26_drive_0022_sync 315 l
+2011_09_26/2011_09_26_drive_0019_sync 326 r
+2011_09_30/2011_09_30_drive_0034_sync 179 l
+2011_10_03/2011_10_03_drive_0042_sync 999 l
+2011_10_03/2011_10_03_drive_0034_sync 1370 l
+2011_09_30/2011_09_30_drive_0033_sync 373 r
+2011_09_26/2011_09_26_drive_0051_sync 258 r
+2011_09_26/2011_09_26_drive_0039_sync 78 l
+2011_09_30/2011_09_30_drive_0034_sync 1025 r
+2011_10_03/2011_10_03_drive_0042_sync 1070 l
+2011_09_26/2011_09_26_drive_0057_sync 6 l
+2011_09_26/2011_09_26_drive_0032_sync 169 l
+2011_09_26/2011_09_26_drive_0070_sync 342 r
+2011_09_30/2011_09_30_drive_0033_sync 1091 l
+2011_09_30/2011_09_30_drive_0028_sync 4405 l
+2011_09_30/2011_09_30_drive_0028_sync 4005 l
+2011_09_26/2011_09_26_drive_0087_sync 436 r
+2011_09_30/2011_09_30_drive_0020_sync 736 l
+2011_09_30/2011_09_30_drive_0033_sync 1432 r
+2011_09_30/2011_09_30_drive_0033_sync 394 r
+2011_09_30/2011_09_30_drive_0028_sync 296 l
+2011_09_26/2011_09_26_drive_0061_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 4305 r
+2011_09_30/2011_09_30_drive_0028_sync 4214 r
+2011_09_26/2011_09_26_drive_0070_sync 321 l
+2011_10_03/2011_10_03_drive_0034_sync 2417 r
+2011_09_26/2011_09_26_drive_0087_sync 473 r
+2011_09_26/2011_09_26_drive_0104_sync 72 r
+2011_09_30/2011_09_30_drive_0020_sync 888 l
+2011_09_30/2011_09_30_drive_0033_sync 1031 r
+2011_09_30/2011_09_30_drive_0028_sync 2730 r
+2011_09_26/2011_09_26_drive_0057_sync 196 l
+2011_09_30/2011_09_30_drive_0028_sync 2748 r
+2011_09_26/2011_09_26_drive_0087_sync 542 l
+2011_10_03/2011_10_03_drive_0034_sync 225 r
+2011_09_30/2011_09_30_drive_0033_sync 822 r
+2011_09_30/2011_09_30_drive_0028_sync 675 l
+2011_09_30/2011_09_30_drive_0028_sync 1797 r
+2011_09_30/2011_09_30_drive_0028_sync 4738 l
+2011_10_03/2011_10_03_drive_0034_sync 3156 r
+2011_10_03/2011_10_03_drive_0034_sync 3672 l
+2011_09_30/2011_09_30_drive_0028_sync 4559 r
+2011_10_03/2011_10_03_drive_0042_sync 320 r
+2011_09_30/2011_09_30_drive_0034_sync 1114 r
+2011_09_30/2011_09_30_drive_0033_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 2248 r
+2011_09_30/2011_09_30_drive_0028_sync 2102 r
+2011_09_30/2011_09_30_drive_0028_sync 4638 l
+2011_09_30/2011_09_30_drive_0033_sync 212 r
+2011_09_26/2011_09_26_drive_0051_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 254 r
+2011_09_26/2011_09_26_drive_0051_sync 259 l
+2011_09_30/2011_09_30_drive_0033_sync 862 r
+2011_09_26/2011_09_26_drive_0051_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 4073 r
+2011_09_26/2011_09_26_drive_0022_sync 177 l
+2011_10_03/2011_10_03_drive_0034_sync 2701 r
+2011_09_30/2011_09_30_drive_0028_sync 2512 l
+2011_10_03/2011_10_03_drive_0034_sync 4390 r
+2011_10_03/2011_10_03_drive_0042_sync 831 r
+2011_09_26/2011_09_26_drive_0019_sync 471 l
+2011_10_03/2011_10_03_drive_0042_sync 40 r
+2011_09_26/2011_09_26_drive_0051_sync 388 r
+2011_09_30/2011_09_30_drive_0028_sync 2557 l
+2011_09_30/2011_09_30_drive_0028_sync 5174 r
+2011_09_30/2011_09_30_drive_0028_sync 807 r
+2011_10_03/2011_10_03_drive_0042_sync 991 r
+2011_09_26/2011_09_26_drive_0028_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 619 l
+2011_09_30/2011_09_30_drive_0028_sync 3767 l
+2011_09_26/2011_09_26_drive_0087_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 3180 l
+2011_09_26/2011_09_26_drive_0104_sync 200 r
+2011_09_30/2011_09_30_drive_0020_sync 644 r
+2011_09_26/2011_09_26_drive_0057_sync 201 r
+2011_09_26/2011_09_26_drive_0087_sync 61 l
+2011_09_26/2011_09_26_drive_0104_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 1447 l
+2011_09_26/2011_09_26_drive_0070_sync 402 l
+2011_10_03/2011_10_03_drive_0034_sync 3967 r
+2011_09_26/2011_09_26_drive_0051_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 4495 l
+2011_09_30/2011_09_30_drive_0028_sync 1625 l
+2011_09_26/2011_09_26_drive_0015_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 608 l
+2011_09_26/2011_09_26_drive_0032_sync 313 r
+2011_09_30/2011_09_30_drive_0028_sync 3897 r
+2011_09_26/2011_09_26_drive_0022_sync 339 l
+2011_10_03/2011_10_03_drive_0034_sync 3032 l
+2011_09_26/2011_09_26_drive_0087_sync 354 l
+2011_09_30/2011_09_30_drive_0028_sync 3865 l
+2011_09_30/2011_09_30_drive_0028_sync 847 r
+2011_09_30/2011_09_30_drive_0034_sync 686 l
+2011_09_28/2011_09_28_drive_0001_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 4589 l
+2011_09_30/2011_09_30_drive_0020_sync 751 l
+2011_10_03/2011_10_03_drive_0034_sync 3181 r
+2011_09_30/2011_09_30_drive_0028_sync 4689 l
+2011_09_29/2011_09_29_drive_0004_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 3973 r
+2011_09_30/2011_09_30_drive_0020_sync 555 r
+2011_09_30/2011_09_30_drive_0028_sync 488 r
+2011_09_26/2011_09_26_drive_0015_sync 145 r
+2011_09_26/2011_09_26_drive_0087_sync 695 r
+2011_09_29/2011_09_29_drive_0004_sync 221 r
+2011_09_26/2011_09_26_drive_0095_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 3861 l
+2011_10_03/2011_10_03_drive_0034_sync 3175 l
+2011_09_30/2011_09_30_drive_0028_sync 3786 r
+2011_10_03/2011_10_03_drive_0034_sync 4661 r
+2011_09_26/2011_09_26_drive_0061_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 2171 r
+2011_10_03/2011_10_03_drive_0042_sync 1074 l
+2011_09_29/2011_09_29_drive_0026_sync 81 r
+2011_09_26/2011_09_26_drive_0039_sync 157 l
+2011_09_26/2011_09_26_drive_0014_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 76 r
+2011_09_26/2011_09_26_drive_0032_sync 238 l
+2011_10_03/2011_10_03_drive_0034_sync 3063 l
+2011_10_03/2011_10_03_drive_0042_sync 1132 l
+2011_09_30/2011_09_30_drive_0034_sync 272 l
+2011_09_30/2011_09_30_drive_0028_sync 283 r
+2011_09_30/2011_09_30_drive_0034_sync 1191 r
+2011_09_30/2011_09_30_drive_0028_sync 1977 r
+2011_09_30/2011_09_30_drive_0034_sync 64 l
+2011_10_03/2011_10_03_drive_0042_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 3354 r
+2011_09_30/2011_09_30_drive_0028_sync 2236 r
+2011_09_30/2011_09_30_drive_0028_sync 530 l
+2011_09_30/2011_09_30_drive_0028_sync 2553 l
+2011_09_28/2011_09_28_drive_0001_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 4067 r
+2011_10_03/2011_10_03_drive_0034_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 4 r
+2011_09_30/2011_09_30_drive_0033_sync 615 l
+2011_09_30/2011_09_30_drive_0034_sync 88 r
+2011_09_26/2011_09_26_drive_0087_sync 439 l
+2011_09_30/2011_09_30_drive_0033_sync 252 l
+2011_10_03/2011_10_03_drive_0034_sync 563 r
+2011_09_30/2011_09_30_drive_0034_sync 596 l
+2011_09_26/2011_09_26_drive_0095_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 1309 r
+2011_09_26/2011_09_26_drive_0087_sync 302 l
+2011_09_30/2011_09_30_drive_0028_sync 2051 l
+2011_09_30/2011_09_30_drive_0028_sync 1017 r
+2011_10_03/2011_10_03_drive_0034_sync 3301 r
+2011_09_30/2011_09_30_drive_0028_sync 686 r
+2011_10_03/2011_10_03_drive_0034_sync 248 l
+2011_09_26/2011_09_26_drive_0019_sync 373 r
+2011_09_26/2011_09_26_drive_0087_sync 117 l
+2011_09_30/2011_09_30_drive_0020_sync 1098 l
+2011_10_03/2011_10_03_drive_0034_sync 3869 r
+2011_10_03/2011_10_03_drive_0034_sync 1245 l
+2011_09_30/2011_09_30_drive_0033_sync 843 l
+2011_09_26/2011_09_26_drive_0104_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 2938 r
+2011_09_30/2011_09_30_drive_0034_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 1791 l
+2011_10_03/2011_10_03_drive_0034_sync 2800 r
+2011_09_30/2011_09_30_drive_0020_sync 933 r
+2011_10_03/2011_10_03_drive_0042_sync 603 r
+2011_10_03/2011_10_03_drive_0042_sync 224 r
+2011_09_26/2011_09_26_drive_0104_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 4977 l
+2011_10_03/2011_10_03_drive_0034_sync 1435 l
+2011_10_03/2011_10_03_drive_0042_sync 28 l
+2011_09_26/2011_09_26_drive_0057_sync 303 r
+2011_09_26/2011_09_26_drive_0087_sync 514 r
+2011_09_30/2011_09_30_drive_0034_sync 809 l
+2011_10_03/2011_10_03_drive_0034_sync 2025 r
+2011_09_26/2011_09_26_drive_0032_sync 323 l
+2011_09_30/2011_09_30_drive_0020_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 881 l
+2011_09_30/2011_09_30_drive_0033_sync 496 r
+2011_10_03/2011_10_03_drive_0034_sync 532 l
+2011_09_26/2011_09_26_drive_0113_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 4203 r
+2011_09_26/2011_09_26_drive_0091_sync 199 r
+2011_09_30/2011_09_30_drive_0020_sync 872 r
+2011_09_26/2011_09_26_drive_0022_sync 776 l
+2011_09_26/2011_09_26_drive_0022_sync 143 l
+2011_09_26/2011_09_26_drive_0104_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 2996 l
+2011_09_30/2011_09_30_drive_0028_sync 2523 r
+2011_10_03/2011_10_03_drive_0034_sync 2317 r
+2011_09_30/2011_09_30_drive_0028_sync 1951 r
+2011_09_30/2011_09_30_drive_0020_sync 1069 r
+2011_09_30/2011_09_30_drive_0028_sync 4931 l
+2011_09_30/2011_09_30_drive_0033_sync 51 r
+2011_09_30/2011_09_30_drive_0034_sync 1174 l
+2011_10_03/2011_10_03_drive_0034_sync 3970 l
+2011_09_26/2011_09_26_drive_0091_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 553 r
+2011_09_30/2011_09_30_drive_0034_sync 700 l
+2011_09_30/2011_09_30_drive_0033_sync 1133 r
+2011_09_30/2011_09_30_drive_0034_sync 407 l
+2011_09_30/2011_09_30_drive_0033_sync 1206 r
+2011_09_26/2011_09_26_drive_0051_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 3642 r
+2011_09_30/2011_09_30_drive_0034_sync 85 l
+2011_09_26/2011_09_26_drive_0091_sync 306 r
+2011_10_03/2011_10_03_drive_0034_sync 3103 l
+2011_09_30/2011_09_30_drive_0028_sync 1896 r
+2011_09_30/2011_09_30_drive_0028_sync 5138 r
+2011_09_30/2011_09_30_drive_0028_sync 4360 r
+2011_09_26/2011_09_26_drive_0051_sync 335 l
+2011_09_30/2011_09_30_drive_0028_sync 1532 r
+2011_09_30/2011_09_30_drive_0033_sync 506 r
+2011_10_03/2011_10_03_drive_0034_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 2576 r
+2011_09_30/2011_09_30_drive_0020_sync 730 r
+2011_09_26/2011_09_26_drive_0011_sync 96 r
+2011_09_30/2011_09_30_drive_0033_sync 100 r
+2011_09_30/2011_09_30_drive_0020_sync 802 r
+2011_09_26/2011_09_26_drive_0019_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 4165 r
+2011_09_26/2011_09_26_drive_0051_sync 362 l
+2011_09_26/2011_09_26_drive_0087_sync 672 r
+2011_09_26/2011_09_26_drive_0091_sync 89 l
+2011_09_26/2011_09_26_drive_0028_sync 3 l
+2011_09_26/2011_09_26_drive_0005_sync 122 r
+2011_09_26/2011_09_26_drive_0051_sync 134 r
+2011_09_26/2011_09_26_drive_0019_sync 369 l
+2011_09_30/2011_09_30_drive_0028_sync 412 r
+2011_09_30/2011_09_30_drive_0028_sync 1301 l
+2011_09_30/2011_09_30_drive_0028_sync 1686 r
+2011_09_26/2011_09_26_drive_0104_sync 310 l
+2011_09_29/2011_09_29_drive_0026_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 633 l
+2011_09_26/2011_09_26_drive_0019_sync 232 r
+2011_09_26/2011_09_26_drive_0028_sync 30 l
+2011_09_26/2011_09_26_drive_0051_sync 400 r
+2011_09_30/2011_09_30_drive_0033_sync 215 r
+2011_09_26/2011_09_26_drive_0061_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 1692 r
+2011_09_26/2011_09_26_drive_0070_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 641 l
+2011_09_26/2011_09_26_drive_0005_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 401 l
+2011_09_30/2011_09_30_drive_0028_sync 2481 r
+2011_10_03/2011_10_03_drive_0034_sync 844 r
+2011_10_03/2011_10_03_drive_0042_sync 928 r
+2011_09_30/2011_09_30_drive_0028_sync 2385 r
+2011_09_30/2011_09_30_drive_0028_sync 4090 r
+2011_09_30/2011_09_30_drive_0020_sync 499 r
+2011_09_30/2011_09_30_drive_0033_sync 1572 l
+2011_10_03/2011_10_03_drive_0042_sync 313 r
+2011_09_26/2011_09_26_drive_0070_sync 203 l
+2011_09_26/2011_09_26_drive_0057_sync 341 l
+2011_09_26/2011_09_26_drive_0061_sync 57 r
+2011_09_30/2011_09_30_drive_0034_sync 806 r
+2011_09_30/2011_09_30_drive_0028_sync 1608 l
+2011_09_30/2011_09_30_drive_0033_sync 347 l
+2011_09_26/2011_09_26_drive_0017_sync 84 r
+2011_09_30/2011_09_30_drive_0028_sync 450 r
+2011_09_26/2011_09_26_drive_0057_sync 333 r
+2011_09_26/2011_09_26_drive_0061_sync 615 r
+2011_10_03/2011_10_03_drive_0034_sync 2313 r
+2011_09_30/2011_09_30_drive_0033_sync 1469 l
+2011_09_26/2011_09_26_drive_0091_sync 277 l
+2011_09_29/2011_09_29_drive_0026_sync 114 r
+2011_09_26/2011_09_26_drive_0087_sync 36 r
+2011_09_28/2011_09_28_drive_0001_sync 64 r
+2011_09_26/2011_09_26_drive_0019_sync 265 l
+2011_09_30/2011_09_30_drive_0034_sync 646 r
+2011_09_26/2011_09_26_drive_0017_sync 38 r
+2011_09_30/2011_09_30_drive_0028_sync 4524 r
+2011_09_26/2011_09_26_drive_0051_sync 94 r
+2011_10_03/2011_10_03_drive_0034_sync 4271 r
+2011_10_03/2011_10_03_drive_0034_sync 1782 r
+2011_09_29/2011_09_29_drive_0004_sync 178 r
+2011_09_26/2011_09_26_drive_0061_sync 177 r
+2011_09_30/2011_09_30_drive_0028_sync 3652 r
+2011_10_03/2011_10_03_drive_0034_sync 2502 r
+2011_09_26/2011_09_26_drive_0005_sync 76 l
+2011_09_30/2011_09_30_drive_0033_sync 537 r
+2011_09_26/2011_09_26_drive_0061_sync 626 l
+2011_10_03/2011_10_03_drive_0034_sync 1636 r
+2011_09_30/2011_09_30_drive_0028_sync 2863 r
+2011_09_30/2011_09_30_drive_0028_sync 574 r
+2011_09_26/2011_09_26_drive_0091_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 2969 r
+2011_09_26/2011_09_26_drive_0028_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 1143 r
+2011_09_26/2011_09_26_drive_0019_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 1173 l
+2011_09_30/2011_09_30_drive_0028_sync 1743 r
+2011_10_03/2011_10_03_drive_0042_sync 279 l
+2011_09_30/2011_09_30_drive_0033_sync 1111 l
+2011_09_30/2011_09_30_drive_0028_sync 1752 r
+2011_09_26/2011_09_26_drive_0095_sync 56 r
+2011_09_26/2011_09_26_drive_0070_sync 223 l
+2011_09_30/2011_09_30_drive_0034_sync 1130 r
+2011_09_30/2011_09_30_drive_0033_sync 898 r
+2011_09_30/2011_09_30_drive_0034_sync 103 r
+2011_09_30/2011_09_30_drive_0020_sync 43 l
+2011_09_26/2011_09_26_drive_0079_sync 53 l
+2011_09_30/2011_09_30_drive_0028_sync 2223 l
+2011_10_03/2011_10_03_drive_0034_sync 4375 l
+2011_09_26/2011_09_26_drive_0028_sync 88 r
+2011_09_26/2011_09_26_drive_0061_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 1013 r
+2011_09_30/2011_09_30_drive_0028_sync 1106 r
+2011_10_03/2011_10_03_drive_0034_sync 1690 l
+2011_09_26/2011_09_26_drive_0095_sync 149 l
+2011_10_03/2011_10_03_drive_0042_sync 551 r
+2011_09_30/2011_09_30_drive_0020_sync 797 r
+2011_09_30/2011_09_30_drive_0034_sync 163 l
+2011_09_30/2011_09_30_drive_0033_sync 499 r
+2011_09_26/2011_09_26_drive_0087_sync 633 r
+2011_09_30/2011_09_30_drive_0020_sync 518 l
+2011_10_03/2011_10_03_drive_0034_sync 413 l
+2011_09_26/2011_09_26_drive_0061_sync 656 r
+2011_10_03/2011_10_03_drive_0034_sync 3276 l
+2011_09_30/2011_09_30_drive_0034_sync 606 r
+2011_09_29/2011_09_29_drive_0004_sync 330 l
+2011_09_29/2011_09_29_drive_0004_sync 3 l
+2011_10_03/2011_10_03_drive_0042_sync 421 l
+2011_09_30/2011_09_30_drive_0028_sync 1799 l
+2011_10_03/2011_10_03_drive_0034_sync 2668 r
+2011_09_26/2011_09_26_drive_0070_sync 398 l
+2011_09_26/2011_09_26_drive_0019_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 5123 r
+2011_10_03/2011_10_03_drive_0042_sync 193 l
+2011_09_30/2011_09_30_drive_0020_sync 1085 r
+2011_09_26/2011_09_26_drive_0095_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 4838 l
+2011_09_30/2011_09_30_drive_0028_sync 998 r
+2011_09_26/2011_09_26_drive_0014_sync 224 l
+2011_09_30/2011_09_30_drive_0028_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 2092 l
+2011_09_30/2011_09_30_drive_0020_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 812 l
+2011_09_26/2011_09_26_drive_0051_sync 360 r
+2011_10_03/2011_10_03_drive_0034_sync 4201 l
+2011_09_30/2011_09_30_drive_0028_sync 3765 r
+2011_10_03/2011_10_03_drive_0034_sync 1093 l
+2011_10_03/2011_10_03_drive_0042_sync 1033 l
+2011_09_30/2011_09_30_drive_0034_sync 297 l
+2011_09_30/2011_09_30_drive_0028_sync 2883 r
+2011_09_26/2011_09_26_drive_0015_sync 259 l
+2011_09_26/2011_09_26_drive_0087_sync 340 r
+2011_09_26/2011_09_26_drive_0022_sync 338 r
+2011_09_30/2011_09_30_drive_0034_sync 514 r
+2011_09_30/2011_09_30_drive_0028_sync 1039 r
+2011_09_26/2011_09_26_drive_0087_sync 192 l
+2011_09_26/2011_09_26_drive_0091_sync 29 r
+2011_09_30/2011_09_30_drive_0020_sync 1001 r
+2011_09_30/2011_09_30_drive_0028_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 5149 l
+2011_10_03/2011_10_03_drive_0034_sync 2424 l
+2011_10_03/2011_10_03_drive_0034_sync 1556 l
+2011_09_30/2011_09_30_drive_0033_sync 1117 l
+2011_09_26/2011_09_26_drive_0039_sync 202 r
+2011_10_03/2011_10_03_drive_0042_sync 1122 l
+2011_09_30/2011_09_30_drive_0033_sync 1578 l
+2011_10_03/2011_10_03_drive_0034_sync 1332 r
+2011_10_03/2011_10_03_drive_0034_sync 2482 l
+2011_09_26/2011_09_26_drive_0005_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 1527 l
+2011_09_30/2011_09_30_drive_0028_sync 2593 l
+2011_10_03/2011_10_03_drive_0034_sync 2079 r
+2011_09_30/2011_09_30_drive_0033_sync 1360 r
+2011_09_30/2011_09_30_drive_0034_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 3739 l
+2011_10_03/2011_10_03_drive_0042_sync 665 l
+2011_09_30/2011_09_30_drive_0034_sync 693 r
+2011_10_03/2011_10_03_drive_0034_sync 2064 l
+2011_10_03/2011_10_03_drive_0034_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 1914 l
+2011_09_26/2011_09_26_drive_0061_sync 367 r
+2011_09_30/2011_09_30_drive_0033_sync 566 r
+2011_09_26/2011_09_26_drive_0079_sync 85 r
+2011_09_26/2011_09_26_drive_0070_sync 181 r
+2011_09_26/2011_09_26_drive_0022_sync 328 r
+2011_09_26/2011_09_26_drive_0070_sync 291 l
+2011_09_30/2011_09_30_drive_0033_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 1283 l
+2011_10_03/2011_10_03_drive_0034_sync 3608 l
+2011_09_26/2011_09_26_drive_0028_sync 412 r
+2011_10_03/2011_10_03_drive_0034_sync 1243 r
+2011_10_03/2011_10_03_drive_0034_sync 1136 l
+2011_09_30/2011_09_30_drive_0033_sync 1122 l
+2011_09_26/2011_09_26_drive_0091_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 1431 r
+2011_09_30/2011_09_30_drive_0028_sync 1321 r
+2011_09_30/2011_09_30_drive_0028_sync 455 r
+2011_10_03/2011_10_03_drive_0034_sync 389 l
+2011_10_03/2011_10_03_drive_0034_sync 3650 r
+2011_09_30/2011_09_30_drive_0020_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 3908 l
+2011_09_26/2011_09_26_drive_0022_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 756 l
+2011_09_30/2011_09_30_drive_0028_sync 2993 l
+2011_10_03/2011_10_03_drive_0034_sync 1236 l
+2011_09_26/2011_09_26_drive_0022_sync 721 l
+2011_09_26/2011_09_26_drive_0022_sync 160 l
+2011_09_26/2011_09_26_drive_0087_sync 373 r
+2011_09_26/2011_09_26_drive_0019_sync 358 l
+2011_10_03/2011_10_03_drive_0034_sync 447 r
+2011_09_26/2011_09_26_drive_0104_sync 216 r
+2011_09_26/2011_09_26_drive_0079_sync 50 r
+2011_09_26/2011_09_26_drive_0032_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 4170 r
+2011_09_26/2011_09_26_drive_0015_sync 58 r
+2011_10_03/2011_10_03_drive_0042_sync 437 l
+2011_10_03/2011_10_03_drive_0042_sync 482 l
+2011_09_26/2011_09_26_drive_0022_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 3031 l
+2011_09_30/2011_09_30_drive_0028_sync 3310 l
+2011_09_30/2011_09_30_drive_0028_sync 3362 l
+2011_09_30/2011_09_30_drive_0020_sync 568 r
+2011_09_26/2011_09_26_drive_0079_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 4172 l
+2011_09_26/2011_09_26_drive_0019_sync 463 r
+2011_09_30/2011_09_30_drive_0034_sync 506 r
+2011_09_30/2011_09_30_drive_0028_sync 434 l
+2011_09_30/2011_09_30_drive_0033_sync 429 r
+2011_09_30/2011_09_30_drive_0028_sync 5075 r
+2011_09_30/2011_09_30_drive_0028_sync 3020 l
+2011_09_26/2011_09_26_drive_0019_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 2537 r
+2011_09_30/2011_09_30_drive_0028_sync 2394 r
+2011_10_03/2011_10_03_drive_0042_sync 125 l
+2011_09_29/2011_09_29_drive_0004_sync 233 r
+2011_10_03/2011_10_03_drive_0034_sync 3586 l
+2011_09_30/2011_09_30_drive_0033_sync 1541 r
+2011_09_30/2011_09_30_drive_0028_sync 3964 r
+2011_09_30/2011_09_30_drive_0020_sync 757 l
+2011_09_30/2011_09_30_drive_0028_sync 1396 r
+2011_09_30/2011_09_30_drive_0020_sync 663 l
+2011_09_30/2011_09_30_drive_0034_sync 1100 l
+2011_10_03/2011_10_03_drive_0042_sync 141 l
+2011_09_26/2011_09_26_drive_0057_sync 274 l
+2011_10_03/2011_10_03_drive_0034_sync 636 r
+2011_10_03/2011_10_03_drive_0034_sync 3980 r
+2011_09_30/2011_09_30_drive_0028_sync 358 l
+2011_09_26/2011_09_26_drive_0015_sync 35 r
+2011_09_26/2011_09_26_drive_0051_sync 77 l
+2011_09_30/2011_09_30_drive_0034_sync 1003 l
+2011_09_26/2011_09_26_drive_0104_sync 214 l
+2011_09_30/2011_09_30_drive_0033_sync 1547 l
+2011_09_30/2011_09_30_drive_0028_sync 3259 r
+2011_10_03/2011_10_03_drive_0034_sync 123 l
+2011_09_26/2011_09_26_drive_0061_sync 329 r
+2011_09_30/2011_09_30_drive_0028_sync 2699 r
+2011_10_03/2011_10_03_drive_0034_sync 3376 r
+2011_09_30/2011_09_30_drive_0020_sync 1052 r
+2011_09_26/2011_09_26_drive_0051_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 2164 r
+2011_10_03/2011_10_03_drive_0042_sync 686 l
+2011_10_03/2011_10_03_drive_0034_sync 1725 l
+2011_09_26/2011_09_26_drive_0005_sync 137 r
+2011_10_03/2011_10_03_drive_0042_sync 196 r
+2011_09_30/2011_09_30_drive_0020_sync 935 r
+2011_09_26/2011_09_26_drive_0091_sync 129 r
+2011_09_26/2011_09_26_drive_0019_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 2064 r
+2011_09_26/2011_09_26_drive_0019_sync 161 r
+2011_09_26/2011_09_26_drive_0014_sync 279 l
+2011_09_30/2011_09_30_drive_0020_sync 546 l
+2011_09_30/2011_09_30_drive_0028_sync 4069 l
+2011_09_26/2011_09_26_drive_0001_sync 63 l
+2011_09_26/2011_09_26_drive_0070_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 2570 r
+2011_09_30/2011_09_30_drive_0028_sync 5122 r
+2011_09_30/2011_09_30_drive_0020_sync 217 l
+2011_10_03/2011_10_03_drive_0034_sync 1343 l
+2011_09_26/2011_09_26_drive_0087_sync 721 r
+2011_09_26/2011_09_26_drive_0014_sync 56 r
+2011_09_26/2011_09_26_drive_0022_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 4142 r
+2011_09_30/2011_09_30_drive_0028_sync 4057 r
+2011_09_30/2011_09_30_drive_0028_sync 3977 r
+2011_10_03/2011_10_03_drive_0034_sync 4306 r
+2011_10_03/2011_10_03_drive_0034_sync 1001 r
+2011_09_30/2011_09_30_drive_0028_sync 1999 r
+2011_09_26/2011_09_26_drive_0061_sync 301 l
+2011_10_03/2011_10_03_drive_0034_sync 2607 r
+2011_09_26/2011_09_26_drive_0028_sync 274 l
+2011_09_30/2011_09_30_drive_0028_sync 4280 l
+2011_09_30/2011_09_30_drive_0020_sync 866 l
+2011_09_26/2011_09_26_drive_0057_sync 349 r
+2011_09_26/2011_09_26_drive_0051_sync 59 r
+2011_10_03/2011_10_03_drive_0034_sync 2648 r
+2011_09_26/2011_09_26_drive_0061_sync 504 l
+2011_09_30/2011_09_30_drive_0020_sync 852 r
+2011_09_30/2011_09_30_drive_0028_sync 4102 r
+2011_10_03/2011_10_03_drive_0034_sync 4232 l
+2011_10_03/2011_10_03_drive_0034_sync 41 l
+2011_10_03/2011_10_03_drive_0042_sync 539 l
+2011_09_30/2011_09_30_drive_0033_sync 479 r
+2011_09_30/2011_09_30_drive_0033_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 1541 l
+2011_09_30/2011_09_30_drive_0028_sync 384 l
+2011_09_26/2011_09_26_drive_0015_sync 264 l
+2011_09_26/2011_09_26_drive_0011_sync 180 r
+2011_09_26/2011_09_26_drive_0022_sync 2 l
+2011_09_30/2011_09_30_drive_0033_sync 1248 r
+2011_09_30/2011_09_30_drive_0028_sync 383 l
+2011_09_30/2011_09_30_drive_0034_sync 176 r
+2011_09_30/2011_09_30_drive_0034_sync 1052 r
+2011_09_26/2011_09_26_drive_0032_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 817 r
+2011_09_29/2011_09_29_drive_0026_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 3886 l
+2011_09_26/2011_09_26_drive_0061_sync 670 r
+2011_09_30/2011_09_30_drive_0028_sync 653 r
+2011_10_03/2011_10_03_drive_0042_sync 1091 r
+2011_10_03/2011_10_03_drive_0034_sync 1858 l
+2011_09_26/2011_09_26_drive_0104_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 1764 l
+2011_10_03/2011_10_03_drive_0034_sync 3302 l
+2011_09_26/2011_09_26_drive_0032_sync 248 l
+2011_09_30/2011_09_30_drive_0028_sync 2302 l
+2011_09_26/2011_09_26_drive_0028_sync 203 l
+2011_09_30/2011_09_30_drive_0020_sync 477 r
+2011_09_26/2011_09_26_drive_0032_sync 81 r
+2011_09_26/2011_09_26_drive_0091_sync 83 r
+2011_10_03/2011_10_03_drive_0034_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 1424 l
+2011_09_26/2011_09_26_drive_0014_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 807 l
+2011_09_26/2011_09_26_drive_0011_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 3358 l
+2011_09_26/2011_09_26_drive_0091_sync 114 r
+2011_09_30/2011_09_30_drive_0033_sync 941 r
+2011_10_03/2011_10_03_drive_0034_sync 209 r
+2011_09_30/2011_09_30_drive_0028_sync 3621 r
+2011_10_03/2011_10_03_drive_0034_sync 364 l
+2011_09_30/2011_09_30_drive_0034_sync 1198 l
+2011_09_30/2011_09_30_drive_0028_sync 4938 r
+2011_09_30/2011_09_30_drive_0020_sync 306 l
+2011_09_26/2011_09_26_drive_0005_sync 121 r
+2011_09_30/2011_09_30_drive_0033_sync 1246 r
+2011_09_26/2011_09_26_drive_0087_sync 221 r
+2011_09_26/2011_09_26_drive_0011_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 4258 l
+2011_09_30/2011_09_30_drive_0028_sync 2097 r
+2011_10_03/2011_10_03_drive_0034_sync 2263 l
+2011_09_26/2011_09_26_drive_0015_sync 6 r
+2011_09_26/2011_09_26_drive_0015_sync 80 l
+2011_09_26/2011_09_26_drive_0051_sync 240 r
+2011_09_30/2011_09_30_drive_0028_sync 5101 l
+2011_09_26/2011_09_26_drive_0022_sync 563 r
+2011_09_26/2011_09_26_drive_0032_sync 64 l
+2011_09_26/2011_09_26_drive_0018_sync 133 r
+2011_09_26/2011_09_26_drive_0091_sync 78 r
+2011_10_03/2011_10_03_drive_0034_sync 4512 r
+2011_09_30/2011_09_30_drive_0028_sync 1817 r
+2011_09_30/2011_09_30_drive_0033_sync 801 r
+2011_09_26/2011_09_26_drive_0113_sync 60 r
+2011_09_26/2011_09_26_drive_0015_sync 14 l
+2011_09_26/2011_09_26_drive_0087_sync 588 l
+2011_10_03/2011_10_03_drive_0034_sync 1761 l
+2011_09_26/2011_09_26_drive_0104_sync 48 l
+2011_09_26/2011_09_26_drive_0028_sync 15 l
+2011_09_30/2011_09_30_drive_0028_sync 1156 l
+2011_10_03/2011_10_03_drive_0042_sync 783 l
+2011_09_30/2011_09_30_drive_0028_sync 1499 r
+2011_09_26/2011_09_26_drive_0017_sync 108 r
+2011_10_03/2011_10_03_drive_0034_sync 3889 l
+2011_09_30/2011_09_30_drive_0033_sync 610 r
+2011_09_30/2011_09_30_drive_0033_sync 804 l
+2011_09_30/2011_09_30_drive_0028_sync 2241 r
+2011_09_30/2011_09_30_drive_0028_sync 319 l
+2011_09_26/2011_09_26_drive_0022_sync 314 l
+2011_09_30/2011_09_30_drive_0033_sync 763 l
+2011_09_30/2011_09_30_drive_0028_sync 2347 r
+2011_10_03/2011_10_03_drive_0042_sync 1007 r
+2011_09_26/2011_09_26_drive_0104_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 1299 l
+2011_10_03/2011_10_03_drive_0034_sync 3607 r
+2011_09_26/2011_09_26_drive_0022_sync 275 l
+2011_10_03/2011_10_03_drive_0042_sync 892 r
+2011_09_30/2011_09_30_drive_0034_sync 245 l
+2011_09_26/2011_09_26_drive_0104_sync 195 l
+2011_09_30/2011_09_30_drive_0028_sync 3736 l
+2011_09_30/2011_09_30_drive_0028_sync 1622 l
+2011_09_26/2011_09_26_drive_0079_sync 88 l
+2011_09_26/2011_09_26_drive_0113_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 1045 l
+2011_10_03/2011_10_03_drive_0034_sync 3613 r
+2011_09_26/2011_09_26_drive_0104_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 1959 l
+2011_09_26/2011_09_26_drive_0087_sync 0 l
+2011_10_03/2011_10_03_drive_0042_sync 111 r
+2011_09_30/2011_09_30_drive_0028_sync 694 l
+2011_10_03/2011_10_03_drive_0034_sync 758 r
+2011_09_30/2011_09_30_drive_0033_sync 86 r
+2011_09_26/2011_09_26_drive_0070_sync 265 r
+2011_09_26/2011_09_26_drive_0028_sync 390 l
+2011_09_30/2011_09_30_drive_0028_sync 4319 l
+2011_09_26/2011_09_26_drive_0011_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 4178 r
+2011_10_03/2011_10_03_drive_0034_sync 207 r
+2011_09_30/2011_09_30_drive_0020_sync 965 l
+2011_09_30/2011_09_30_drive_0033_sync 1052 l
+2011_10_03/2011_10_03_drive_0034_sync 1691 r
+2011_10_03/2011_10_03_drive_0034_sync 1587 r
+2011_10_03/2011_10_03_drive_0034_sync 721 l
+2011_09_30/2011_09_30_drive_0028_sync 2029 r
+2011_09_30/2011_09_30_drive_0028_sync 1008 l
+2011_09_30/2011_09_30_drive_0028_sync 1643 r
+2011_09_30/2011_09_30_drive_0028_sync 1382 l
+2011_09_30/2011_09_30_drive_0020_sync 991 l
+2011_10_03/2011_10_03_drive_0034_sync 2111 r
+2011_10_03/2011_10_03_drive_0034_sync 3933 l
+2011_09_26/2011_09_26_drive_0051_sync 300 r
+2011_09_30/2011_09_30_drive_0028_sync 3439 l
+2011_09_26/2011_09_26_drive_0022_sync 104 r
+2011_09_26/2011_09_26_drive_0104_sync 8 l
+2011_09_30/2011_09_30_drive_0033_sync 1067 l
+2011_09_30/2011_09_30_drive_0033_sync 158 l
+2011_09_30/2011_09_30_drive_0034_sync 417 l
+2011_10_03/2011_10_03_drive_0042_sync 908 r
+2011_09_30/2011_09_30_drive_0028_sync 4606 l
+2011_09_29/2011_09_29_drive_0026_sync 74 r
+2011_09_26/2011_09_26_drive_0022_sync 687 l
+2011_09_26/2011_09_26_drive_0032_sync 346 r
+2011_10_03/2011_10_03_drive_0034_sync 1397 l
+2011_09_26/2011_09_26_drive_0014_sync 242 r
+2011_09_26/2011_09_26_drive_0091_sync 93 r
+2011_09_26/2011_09_26_drive_0005_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 2487 r
+2011_09_30/2011_09_30_drive_0033_sync 1037 l
+2011_10_03/2011_10_03_drive_0034_sync 2899 r
+2011_09_30/2011_09_30_drive_0028_sync 876 r
+2011_09_26/2011_09_26_drive_0091_sync 312 l
+2011_09_26/2011_09_26_drive_0061_sync 219 l
+2011_10_03/2011_10_03_drive_0034_sync 3048 r
+2011_10_03/2011_10_03_drive_0034_sync 4613 r
+2011_09_30/2011_09_30_drive_0028_sync 4372 l
+2011_10_03/2011_10_03_drive_0034_sync 4497 l
+2011_09_26/2011_09_26_drive_0051_sync 122 r
+2011_09_29/2011_09_29_drive_0026_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 3829 r
+2011_09_30/2011_09_30_drive_0033_sync 877 r
+2011_09_30/2011_09_30_drive_0034_sync 926 l
+2011_10_03/2011_10_03_drive_0042_sync 1095 r
+2011_10_03/2011_10_03_drive_0034_sync 4068 r
+2011_09_26/2011_09_26_drive_0061_sync 335 r
+2011_09_30/2011_09_30_drive_0033_sync 543 r
+2011_09_26/2011_09_26_drive_0028_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 2910 l
+2011_09_30/2011_09_30_drive_0034_sync 1032 r
+2011_09_26/2011_09_26_drive_0035_sync 113 r
+2011_09_26/2011_09_26_drive_0070_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 3805 r
+2011_10_03/2011_10_03_drive_0034_sync 2128 r
+2011_09_26/2011_09_26_drive_0087_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 1494 r
+2011_10_03/2011_10_03_drive_0042_sync 805 l
+2011_09_26/2011_09_26_drive_0061_sync 473 r
+2011_09_26/2011_09_26_drive_0022_sync 154 r
+2011_09_26/2011_09_26_drive_0087_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 1546 l
+2011_09_26/2011_09_26_drive_0019_sync 376 r
+2011_10_03/2011_10_03_drive_0034_sync 789 l
+2011_10_03/2011_10_03_drive_0034_sync 2437 r
+2011_10_03/2011_10_03_drive_0034_sync 426 r
+2011_09_30/2011_09_30_drive_0028_sync 4751 l
+2011_10_03/2011_10_03_drive_0034_sync 2945 r
+2011_10_03/2011_10_03_drive_0042_sync 1142 r
+2011_09_26/2011_09_26_drive_0079_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 2090 r
+2011_09_30/2011_09_30_drive_0028_sync 3542 r
+2011_10_03/2011_10_03_drive_0034_sync 3901 r
+2011_09_30/2011_09_30_drive_0034_sync 1080 l
+2011_09_30/2011_09_30_drive_0028_sync 2424 r
+2011_09_26/2011_09_26_drive_0051_sync 187 r
+2011_09_26/2011_09_26_drive_0087_sync 158 r
+2011_09_26/2011_09_26_drive_0057_sync 128 r
+2011_09_30/2011_09_30_drive_0020_sync 719 r
+2011_10_03/2011_10_03_drive_0034_sync 2867 l
+2011_09_30/2011_09_30_drive_0028_sync 1913 r
+2011_09_30/2011_09_30_drive_0033_sync 1072 l
+2011_09_26/2011_09_26_drive_0032_sync 74 l
+2011_09_29/2011_09_29_drive_0026_sync 12 l
+2011_09_30/2011_09_30_drive_0020_sync 614 l
+2011_09_30/2011_09_30_drive_0028_sync 2405 r
+2011_09_30/2011_09_30_drive_0020_sync 152 l
+2011_09_26/2011_09_26_drive_0019_sync 56 l
+2011_09_26/2011_09_26_drive_0087_sync 526 l
+2011_10_03/2011_10_03_drive_0034_sync 3017 l
+2011_09_26/2011_09_26_drive_0060_sync 63 l
+2011_10_03/2011_10_03_drive_0034_sync 3032 r
+2011_10_03/2011_10_03_drive_0034_sync 3403 l
+2011_09_30/2011_09_30_drive_0028_sync 1873 l
+2011_09_30/2011_09_30_drive_0028_sync 2366 l
+2011_09_30/2011_09_30_drive_0034_sync 1038 r
+2011_09_30/2011_09_30_drive_0034_sync 821 l
+2011_09_30/2011_09_30_drive_0033_sync 1143 l
+2011_10_03/2011_10_03_drive_0034_sync 905 l
+2011_09_30/2011_09_30_drive_0028_sync 5061 r
+2011_09_26/2011_09_26_drive_0014_sync 227 l
+2011_09_30/2011_09_30_drive_0028_sync 3724 l
+2011_09_30/2011_09_30_drive_0028_sync 3605 l
+2011_10_03/2011_10_03_drive_0034_sync 2001 l
+2011_10_03/2011_10_03_drive_0042_sync 990 r
+2011_10_03/2011_10_03_drive_0034_sync 4346 l
+2011_10_03/2011_10_03_drive_0034_sync 4543 l
+2011_09_26/2011_09_26_drive_0022_sync 498 r
+2011_09_30/2011_09_30_drive_0033_sync 209 l
+2011_09_26/2011_09_26_drive_0019_sync 341 r
+2011_09_30/2011_09_30_drive_0028_sync 2490 l
+2011_10_03/2011_10_03_drive_0034_sync 1795 r
+2011_09_26/2011_09_26_drive_0019_sync 406 r
+2011_10_03/2011_10_03_drive_0034_sync 2721 r
+2011_10_03/2011_10_03_drive_0042_sync 315 l
+2011_09_30/2011_09_30_drive_0020_sync 442 l
+2011_10_03/2011_10_03_drive_0034_sync 4314 r
+2011_09_26/2011_09_26_drive_0091_sync 296 r
+2011_09_30/2011_09_30_drive_0033_sync 859 r
+2011_10_03/2011_10_03_drive_0034_sync 2342 r
+2011_09_30/2011_09_30_drive_0028_sync 3186 l
+2011_10_03/2011_10_03_drive_0042_sync 481 r
+2011_09_26/2011_09_26_drive_0104_sync 233 l
+2011_09_26/2011_09_26_drive_0061_sync 111 l
+2011_10_03/2011_10_03_drive_0042_sync 219 l
+2011_09_30/2011_09_30_drive_0020_sync 438 l
+2011_09_30/2011_09_30_drive_0033_sync 806 r
+2011_09_30/2011_09_30_drive_0028_sync 4211 r
+2011_09_26/2011_09_26_drive_0087_sync 1 r
+2011_09_30/2011_09_30_drive_0034_sync 534 r
+2011_10_03/2011_10_03_drive_0034_sync 378 l
+2011_09_26/2011_09_26_drive_0022_sync 114 r
+2011_09_30/2011_09_30_drive_0033_sync 0 r
+2011_10_03/2011_10_03_drive_0034_sync 2032 l
+2011_09_30/2011_09_30_drive_0020_sync 480 r
+2011_09_30/2011_09_30_drive_0034_sync 529 r
+2011_10_03/2011_10_03_drive_0034_sync 3804 r
+2011_09_30/2011_09_30_drive_0028_sync 3928 l
+2011_09_30/2011_09_30_drive_0028_sync 4181 l
+2011_09_26/2011_09_26_drive_0005_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 2238 r
+2011_09_26/2011_09_26_drive_0061_sync 92 l
+2011_09_26/2011_09_26_drive_0019_sync 338 r
+2011_09_30/2011_09_30_drive_0028_sync 46 r
+2011_09_30/2011_09_30_drive_0020_sync 859 r
+2011_09_30/2011_09_30_drive_0033_sync 773 l
+2011_09_30/2011_09_30_drive_0028_sync 4103 l
+2011_09_26/2011_09_26_drive_0018_sync 72 r
+2011_09_26/2011_09_26_drive_0032_sync 266 l
+2011_09_30/2011_09_30_drive_0033_sync 116 r
+2011_09_26/2011_09_26_drive_0095_sync 241 l
+2011_09_30/2011_09_30_drive_0028_sync 2105 r
+2011_09_30/2011_09_30_drive_0034_sync 364 l
+2011_09_26/2011_09_26_drive_0011_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 4001 r
+2011_09_30/2011_09_30_drive_0028_sync 3020 r
+2011_09_30/2011_09_30_drive_0028_sync 1842 r
+2011_09_30/2011_09_30_drive_0028_sync 1403 r
+2011_10_03/2011_10_03_drive_0034_sync 2909 l
+2011_09_26/2011_09_26_drive_0051_sync 342 l
+2011_09_30/2011_09_30_drive_0028_sync 2754 l
+2011_09_26/2011_09_26_drive_0022_sync 267 l
+2011_10_03/2011_10_03_drive_0034_sync 3683 r
+2011_09_26/2011_09_26_drive_0018_sync 1 r
+2011_09_30/2011_09_30_drive_0034_sync 1042 r
+2011_10_03/2011_10_03_drive_0034_sync 2187 l
+2011_10_03/2011_10_03_drive_0034_sync 1741 l
+2011_10_03/2011_10_03_drive_0034_sync 1751 l
+2011_09_26/2011_09_26_drive_0022_sync 700 r
+2011_09_26/2011_09_26_drive_0018_sync 181 r
+2011_09_26/2011_09_26_drive_0017_sync 81 l
+2011_09_30/2011_09_30_drive_0033_sync 1319 r
+2011_10_03/2011_10_03_drive_0034_sync 363 l
+2011_09_30/2011_09_30_drive_0028_sync 2752 l
+2011_09_26/2011_09_26_drive_0057_sync 324 l
+2011_09_26/2011_09_26_drive_0022_sync 181 r
+2011_09_30/2011_09_30_drive_0033_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 4589 r
+2011_10_03/2011_10_03_drive_0034_sync 2731 l
+2011_10_03/2011_10_03_drive_0034_sync 4465 l
+2011_09_26/2011_09_26_drive_0022_sync 358 r
+2011_09_30/2011_09_30_drive_0034_sync 202 l
+2011_09_26/2011_09_26_drive_0022_sync 515 r
+2011_10_03/2011_10_03_drive_0042_sync 726 l
+2011_09_30/2011_09_30_drive_0028_sync 4256 r
+2011_10_03/2011_10_03_drive_0034_sync 3767 r
+2011_09_30/2011_09_30_drive_0033_sync 795 r
+2011_09_30/2011_09_30_drive_0028_sync 5005 r
+2011_10_03/2011_10_03_drive_0034_sync 1399 r
+2011_09_30/2011_09_30_drive_0033_sync 1446 r
+2011_09_26/2011_09_26_drive_0061_sync 270 r
+2011_09_26/2011_09_26_drive_0039_sync 86 l
+2011_09_30/2011_09_30_drive_0028_sync 3770 l
+2011_10_03/2011_10_03_drive_0034_sync 639 l
+2011_09_26/2011_09_26_drive_0015_sync 168 r
+2011_09_26/2011_09_26_drive_0014_sync 272 r
+2011_09_30/2011_09_30_drive_0020_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 500 l
+2011_09_26/2011_09_26_drive_0035_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 2677 r
+2011_10_03/2011_10_03_drive_0034_sync 2514 r
+2011_09_26/2011_09_26_drive_0014_sync 108 l
+2011_09_30/2011_09_30_drive_0020_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 3425 l
+2011_09_30/2011_09_30_drive_0028_sync 1986 l
+2011_10_03/2011_10_03_drive_0034_sync 1395 l
+2011_10_03/2011_10_03_drive_0042_sync 857 r
+2011_09_30/2011_09_30_drive_0028_sync 3452 r
+2011_10_03/2011_10_03_drive_0034_sync 1940 l
+2011_09_26/2011_09_26_drive_0057_sync 234 l
+2011_09_26/2011_09_26_drive_0028_sync 63 l
+2011_09_30/2011_09_30_drive_0020_sync 756 r
+2011_09_30/2011_09_30_drive_0028_sync 3306 l
+2011_10_03/2011_10_03_drive_0034_sync 4303 l
+2011_09_26/2011_09_26_drive_0005_sync 71 r
+2011_09_30/2011_09_30_drive_0034_sync 238 l
+2011_09_30/2011_09_30_drive_0020_sync 509 l
+2011_09_26/2011_09_26_drive_0022_sync 734 l
+2011_09_26/2011_09_26_drive_0070_sync 371 l
+2011_09_26/2011_09_26_drive_0091_sync 273 r
+2011_09_30/2011_09_30_drive_0028_sync 1184 r
+2011_09_30/2011_09_30_drive_0028_sync 4826 l
+2011_09_30/2011_09_30_drive_0028_sync 30 l
+2011_09_26/2011_09_26_drive_0104_sync 239 l
+2011_09_26/2011_09_26_drive_0022_sync 60 l
+2011_09_30/2011_09_30_drive_0033_sync 192 r
+2011_09_30/2011_09_30_drive_0033_sync 316 l
+2011_09_30/2011_09_30_drive_0020_sync 86 r
+2011_09_26/2011_09_26_drive_0057_sync 75 r
+2011_09_26/2011_09_26_drive_0061_sync 232 r
+2011_09_26/2011_09_26_drive_0057_sync 106 r
+2011_10_03/2011_10_03_drive_0034_sync 1825 l
+2011_09_30/2011_09_30_drive_0028_sync 1329 r
+2011_09_30/2011_09_30_drive_0028_sync 4093 l
+2011_09_30/2011_09_30_drive_0028_sync 4016 l
+2011_09_26/2011_09_26_drive_0032_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 3007 l
+2011_09_30/2011_09_30_drive_0028_sync 1036 r
+2011_09_29/2011_09_29_drive_0004_sync 101 l
+2011_09_26/2011_09_26_drive_0022_sync 425 r
+2011_09_26/2011_09_26_drive_0057_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 2847 l
+2011_09_26/2011_09_26_drive_0028_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 1377 r
+2011_09_30/2011_09_30_drive_0020_sync 841 l
+2011_09_30/2011_09_30_drive_0028_sync 9 l
+2011_09_26/2011_09_26_drive_0022_sync 583 l
+2011_09_26/2011_09_26_drive_0019_sync 199 r
+2011_09_30/2011_09_30_drive_0033_sync 460 l
+2011_09_26/2011_09_26_drive_0022_sync 291 r
+2011_09_30/2011_09_30_drive_0020_sync 218 l
+2011_09_30/2011_09_30_drive_0033_sync 495 l
+2011_10_03/2011_10_03_drive_0042_sync 1101 l
+2011_10_03/2011_10_03_drive_0042_sync 399 r
+2011_09_26/2011_09_26_drive_0032_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 2117 r
+2011_09_26/2011_09_26_drive_0061_sync 320 r
+2011_10_03/2011_10_03_drive_0034_sync 2836 l
+2011_09_26/2011_09_26_drive_0079_sync 27 l
+2011_09_26/2011_09_26_drive_0060_sync 26 l
+2011_09_26/2011_09_26_drive_0070_sync 214 r
+2011_09_26/2011_09_26_drive_0035_sync 111 r
+2011_09_26/2011_09_26_drive_0028_sync 234 l
+2011_10_03/2011_10_03_drive_0034_sync 878 r
+2011_09_30/2011_09_30_drive_0028_sync 4911 r
+2011_09_30/2011_09_30_drive_0020_sync 627 r
+2011_09_26/2011_09_26_drive_0061_sync 256 r
+2011_09_30/2011_09_30_drive_0020_sync 1061 r
+2011_09_26/2011_09_26_drive_0014_sync 313 r
+2011_09_30/2011_09_30_drive_0028_sync 1709 r
+2011_10_03/2011_10_03_drive_0034_sync 3242 l
+2011_09_26/2011_09_26_drive_0022_sync 605 r
+2011_10_03/2011_10_03_drive_0034_sync 1690 r
+2011_09_26/2011_09_26_drive_0051_sync 287 r
+2011_09_30/2011_09_30_drive_0028_sync 4568 l
+2011_09_26/2011_09_26_drive_0035_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 297 r
+2011_09_26/2011_09_26_drive_0061_sync 147 l
+2011_09_26/2011_09_26_drive_0057_sync 71 l
+2011_09_26/2011_09_26_drive_0057_sync 334 l
+2011_09_30/2011_09_30_drive_0020_sync 65 l
+2011_09_26/2011_09_26_drive_0022_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 823 l
+2011_09_29/2011_09_29_drive_0004_sync 109 r
+2011_09_30/2011_09_30_drive_0028_sync 3701 l
+2011_09_30/2011_09_30_drive_0028_sync 2893 l
+2011_09_30/2011_09_30_drive_0028_sync 5176 l
+2011_09_30/2011_09_30_drive_0034_sync 1076 r
+2011_10_03/2011_10_03_drive_0034_sync 347 l
+2011_10_03/2011_10_03_drive_0034_sync 4176 l
+2011_09_30/2011_09_30_drive_0028_sync 4375 r
+2011_10_03/2011_10_03_drive_0034_sync 2269 r
+2011_09_30/2011_09_30_drive_0034_sync 1148 r
+2011_10_03/2011_10_03_drive_0034_sync 709 l
+2011_09_26/2011_09_26_drive_0019_sync 47 l
+2011_09_30/2011_09_30_drive_0028_sync 1582 l
+2011_09_26/2011_09_26_drive_0032_sync 176 r
+2011_09_30/2011_09_30_drive_0033_sync 326 l
+2011_09_30/2011_09_30_drive_0028_sync 1443 r
+2011_09_26/2011_09_26_drive_0035_sync 82 r
+2011_09_30/2011_09_30_drive_0020_sync 455 l
+2011_09_26/2011_09_26_drive_0051_sync 377 l
+2011_10_03/2011_10_03_drive_0034_sync 507 r
+2011_09_30/2011_09_30_drive_0033_sync 785 l
+2011_09_30/2011_09_30_drive_0028_sync 3746 r
+2011_09_30/2011_09_30_drive_0020_sync 81 r
+2011_10_03/2011_10_03_drive_0034_sync 1134 r
+2011_09_30/2011_09_30_drive_0028_sync 2139 l
+2011_09_30/2011_09_30_drive_0034_sync 351 r
+2011_09_30/2011_09_30_drive_0028_sync 3332 l
+2011_09_26/2011_09_26_drive_0014_sync 55 r
+2011_10_03/2011_10_03_drive_0034_sync 4189 r
+2011_10_03/2011_10_03_drive_0034_sync 1332 l
+2011_09_30/2011_09_30_drive_0034_sync 25 r
+2011_09_30/2011_09_30_drive_0033_sync 1262 r
+2011_09_30/2011_09_30_drive_0033_sync 291 l
+2011_09_30/2011_09_30_drive_0028_sync 4598 r
+2011_09_30/2011_09_30_drive_0028_sync 4208 l
+2011_10_03/2011_10_03_drive_0034_sync 2352 r
+2011_10_03/2011_10_03_drive_0034_sync 3806 l
+2011_09_29/2011_09_29_drive_0004_sync 199 r
+2011_10_03/2011_10_03_drive_0034_sync 4539 l
+2011_09_30/2011_09_30_drive_0028_sync 1685 r
+2011_09_30/2011_09_30_drive_0028_sync 565 l
+2011_09_30/2011_09_30_drive_0020_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 4915 r
+2011_09_26/2011_09_26_drive_0070_sync 140 l
+2011_09_26/2011_09_26_drive_0022_sync 298 r
+2011_09_30/2011_09_30_drive_0028_sync 2010 r
+2011_09_26/2011_09_26_drive_0104_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 1785 l
+2011_09_26/2011_09_26_drive_0015_sync 175 l
+2011_10_03/2011_10_03_drive_0034_sync 2566 l
+2011_09_26/2011_09_26_drive_0001_sync 58 r
+2011_09_26/2011_09_26_drive_0087_sync 5 l
+2011_09_26/2011_09_26_drive_0022_sync 277 r
+2011_09_26/2011_09_26_drive_0035_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 3014 l
+2011_09_30/2011_09_30_drive_0020_sync 945 l
+2011_09_30/2011_09_30_drive_0028_sync 520 l
+2011_09_30/2011_09_30_drive_0033_sync 886 l
+2011_09_30/2011_09_30_drive_0034_sync 577 l
+2011_10_03/2011_10_03_drive_0034_sync 3186 r
+2011_09_30/2011_09_30_drive_0034_sync 343 l
+2011_10_03/2011_10_03_drive_0042_sync 604 r
+2011_09_26/2011_09_26_drive_0011_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 2639 l
+2011_10_03/2011_10_03_drive_0042_sync 700 r
+2011_09_29/2011_09_29_drive_0004_sync 113 l
+2011_09_26/2011_09_26_drive_0087_sync 264 l
+2011_09_26/2011_09_26_drive_0019_sync 10 l
+2011_10_03/2011_10_03_drive_0034_sync 2927 r
+2011_09_29/2011_09_29_drive_0004_sync 111 l
+2011_09_30/2011_09_30_drive_0028_sync 5002 l
+2011_09_30/2011_09_30_drive_0034_sync 590 l
+2011_09_26/2011_09_26_drive_0014_sync 167 l
+2011_10_03/2011_10_03_drive_0034_sync 4076 l
+2011_09_26/2011_09_26_drive_0032_sync 173 l
+2011_09_26/2011_09_26_drive_0070_sync 301 l
+2011_09_30/2011_09_30_drive_0033_sync 8 l
+2011_09_29/2011_09_29_drive_0026_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 2984 l
+2011_10_03/2011_10_03_drive_0034_sync 1179 l
+2011_09_26/2011_09_26_drive_0018_sync 264 l
+2011_09_26/2011_09_26_drive_0015_sync 234 l
+2011_09_30/2011_09_30_drive_0020_sync 673 l
+2011_09_30/2011_09_30_drive_0028_sync 5045 r
+2011_09_30/2011_09_30_drive_0028_sync 4860 l
+2011_09_30/2011_09_30_drive_0033_sync 1392 l
+2011_10_03/2011_10_03_drive_0034_sync 2733 r
+2011_10_03/2011_10_03_drive_0034_sync 4017 l
+2011_09_30/2011_09_30_drive_0028_sync 814 l
+2011_09_30/2011_09_30_drive_0028_sync 2364 l
+2011_09_30/2011_09_30_drive_0028_sync 2895 r
+2011_09_30/2011_09_30_drive_0028_sync 227 r
+2011_09_30/2011_09_30_drive_0028_sync 3068 l
+2011_09_30/2011_09_30_drive_0028_sync 2260 r
+2011_10_03/2011_10_03_drive_0034_sync 1369 r
+2011_09_26/2011_09_26_drive_0011_sync 133 l
+2011_10_03/2011_10_03_drive_0042_sync 678 r
+2011_09_30/2011_09_30_drive_0028_sync 2063 l
+2011_09_30/2011_09_30_drive_0028_sync 130 r
+2011_09_26/2011_09_26_drive_0022_sync 68 r
+2011_09_26/2011_09_26_drive_0015_sync 239 r
+2011_09_26/2011_09_26_drive_0104_sync 61 l
+2011_09_30/2011_09_30_drive_0033_sync 71 l
+2011_09_26/2011_09_26_drive_0051_sync 160 r
+2011_09_30/2011_09_30_drive_0028_sync 4430 l
+2011_09_26/2011_09_26_drive_0032_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 2217 r
+2011_09_26/2011_09_26_drive_0079_sync 20 r
+2011_09_26/2011_09_26_drive_0087_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 290 l
+2011_10_03/2011_10_03_drive_0034_sync 4349 r
+2011_09_30/2011_09_30_drive_0034_sync 905 r
+2011_09_26/2011_09_26_drive_0087_sync 15 l
+2011_09_26/2011_09_26_drive_0070_sync 317 l
+2011_10_03/2011_10_03_drive_0034_sync 4591 r
+2011_10_03/2011_10_03_drive_0034_sync 4202 r
+2011_09_30/2011_09_30_drive_0028_sync 4066 r
+2011_10_03/2011_10_03_drive_0042_sync 1127 r
+2011_09_30/2011_09_30_drive_0028_sync 2501 l
+2011_10_03/2011_10_03_drive_0034_sync 2085 l
+2011_09_30/2011_09_30_drive_0034_sync 784 r
+2011_09_30/2011_09_30_drive_0028_sync 3296 l
+2011_09_26/2011_09_26_drive_0001_sync 38 l
+2011_09_29/2011_09_29_drive_0004_sync 232 l
+2011_09_30/2011_09_30_drive_0028_sync 1325 r
+2011_09_30/2011_09_30_drive_0028_sync 2987 l
+2011_10_03/2011_10_03_drive_0034_sync 2269 l
+2011_09_30/2011_09_30_drive_0020_sync 246 r
+2011_09_26/2011_09_26_drive_0001_sync 36 r
+2011_09_30/2011_09_30_drive_0020_sync 1010 r
+2011_10_03/2011_10_03_drive_0034_sync 3956 r
+2011_09_26/2011_09_26_drive_0087_sync 203 r
+2011_09_30/2011_09_30_drive_0020_sync 997 l
+2011_09_26/2011_09_26_drive_0087_sync 494 r
+2011_10_03/2011_10_03_drive_0042_sync 923 r
+2011_09_28/2011_09_28_drive_0001_sync 23 r
+2011_09_26/2011_09_26_drive_0032_sync 264 r
+2011_10_03/2011_10_03_drive_0034_sync 3060 r
+2011_09_30/2011_09_30_drive_0020_sync 692 r
+2011_09_26/2011_09_26_drive_0011_sync 3 l
+2011_09_26/2011_09_26_drive_0039_sync 283 l
+2011_09_30/2011_09_30_drive_0028_sync 2040 r
+2011_09_26/2011_09_26_drive_0039_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 560 r
+2011_09_30/2011_09_30_drive_0028_sync 3564 r
+2011_09_30/2011_09_30_drive_0020_sync 913 r
+2011_10_03/2011_10_03_drive_0034_sync 2889 r
+2011_09_30/2011_09_30_drive_0028_sync 516 l
+2011_10_03/2011_10_03_drive_0034_sync 1461 l
+2011_09_26/2011_09_26_drive_0079_sync 74 r
+2011_09_26/2011_09_26_drive_0032_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 3778 r
+2011_09_26/2011_09_26_drive_0104_sync 236 r
+2011_09_30/2011_09_30_drive_0028_sync 490 l
+2011_09_30/2011_09_30_drive_0028_sync 1982 l
+2011_09_30/2011_09_30_drive_0028_sync 3630 l
+2011_09_30/2011_09_30_drive_0028_sync 1081 r
+2011_09_26/2011_09_26_drive_0019_sync 173 l
+2011_09_26/2011_09_26_drive_0005_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 2998 r
+2011_10_03/2011_10_03_drive_0034_sync 643 l
+2011_09_30/2011_09_30_drive_0028_sync 4243 r
+2011_09_30/2011_09_30_drive_0028_sync 4687 l
+2011_09_30/2011_09_30_drive_0028_sync 2540 r
+2011_10_03/2011_10_03_drive_0034_sync 2568 r
+2011_10_03/2011_10_03_drive_0034_sync 4251 l
+2011_09_30/2011_09_30_drive_0028_sync 1858 l
+2011_09_30/2011_09_30_drive_0033_sync 29 r
+2011_09_30/2011_09_30_drive_0028_sync 3508 r
+2011_10_03/2011_10_03_drive_0034_sync 2897 r
+2011_09_30/2011_09_30_drive_0028_sync 4594 r
+2011_09_30/2011_09_30_drive_0028_sync 2615 r
+2011_09_26/2011_09_26_drive_0095_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 700 l
+2011_09_26/2011_09_26_drive_0087_sync 586 l
+2011_09_26/2011_09_26_drive_0005_sync 146 l
+2011_09_26/2011_09_26_drive_0019_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 2046 l
+2011_09_30/2011_09_30_drive_0033_sync 635 l
+2011_09_30/2011_09_30_drive_0033_sync 1098 l
+2011_09_30/2011_09_30_drive_0028_sync 4899 r
+2011_10_03/2011_10_03_drive_0034_sync 2490 l
+2011_09_26/2011_09_26_drive_0051_sync 72 r
+2011_09_26/2011_09_26_drive_0091_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 2910 l
+2011_09_29/2011_09_29_drive_0026_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 1927 r
+2011_09_30/2011_09_30_drive_0028_sync 3283 r
+2011_09_26/2011_09_26_drive_0014_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 1927 l
+2011_09_30/2011_09_30_drive_0020_sync 30 l
+2011_09_26/2011_09_26_drive_0070_sync 95 l
+2011_09_26/2011_09_26_drive_0095_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 400 l
+2011_09_26/2011_09_26_drive_0022_sync 718 r
+2011_09_30/2011_09_30_drive_0034_sync 1147 l
+2011_09_30/2011_09_30_drive_0028_sync 445 l
+2011_10_03/2011_10_03_drive_0034_sync 3987 l
+2011_09_30/2011_09_30_drive_0028_sync 4591 r
+2011_10_03/2011_10_03_drive_0034_sync 2553 r
+2011_09_26/2011_09_26_drive_0015_sync 253 l
+2011_09_26/2011_09_26_drive_0087_sync 234 l
+2011_09_26/2011_09_26_drive_0017_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 4222 r
+2011_09_30/2011_09_30_drive_0028_sync 3708 r
+2011_10_03/2011_10_03_drive_0034_sync 4235 r
+2011_09_26/2011_09_26_drive_0032_sync 183 r
+2011_09_30/2011_09_30_drive_0033_sync 970 l
+2011_09_26/2011_09_26_drive_0057_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 1737 l
+2011_09_26/2011_09_26_drive_0051_sync 429 r
+2011_09_30/2011_09_30_drive_0028_sync 4050 l
+2011_09_29/2011_09_29_drive_0004_sync 69 l
+2011_09_26/2011_09_26_drive_0061_sync 206 l
+2011_10_03/2011_10_03_drive_0034_sync 2367 l
+2011_09_30/2011_09_30_drive_0028_sync 2751 r
+2011_09_30/2011_09_30_drive_0033_sync 1082 r
+2011_09_30/2011_09_30_drive_0028_sync 4076 r
+2011_09_26/2011_09_26_drive_0061_sync 402 r
+2011_09_26/2011_09_26_drive_0039_sync 273 l
+2011_09_26/2011_09_26_drive_0015_sync 203 l
+2011_09_30/2011_09_30_drive_0020_sync 178 l
+2011_09_26/2011_09_26_drive_0028_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 1437 l
+2011_09_26/2011_09_26_drive_0061_sync 470 r
+2011_09_30/2011_09_30_drive_0033_sync 1320 r
+2011_09_29/2011_09_29_drive_0004_sync 76 r
+2011_09_30/2011_09_30_drive_0034_sync 179 r
+2011_09_30/2011_09_30_drive_0028_sync 4554 l
+2011_09_30/2011_09_30_drive_0028_sync 2905 r
+2011_09_30/2011_09_30_drive_0034_sync 131 l
+2011_09_26/2011_09_26_drive_0018_sync 213 l
+2011_09_30/2011_09_30_drive_0028_sync 3310 r
+2011_10_03/2011_10_03_drive_0042_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 1944 r
+2011_09_30/2011_09_30_drive_0028_sync 4037 r
+2011_09_26/2011_09_26_drive_0057_sync 358 r
+2011_09_30/2011_09_30_drive_0028_sync 3922 r
+2011_10_03/2011_10_03_drive_0034_sync 1649 r
+2011_09_30/2011_09_30_drive_0028_sync 2608 l
+2011_09_26/2011_09_26_drive_0015_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 2601 l
+2011_09_26/2011_09_26_drive_0070_sync 375 r
+2011_10_03/2011_10_03_drive_0034_sync 4433 l
+2011_09_30/2011_09_30_drive_0028_sync 5067 r
+2011_09_30/2011_09_30_drive_0033_sync 1114 l
+2011_09_30/2011_09_30_drive_0033_sync 619 r
+2011_09_26/2011_09_26_drive_0087_sync 527 r
+2011_10_03/2011_10_03_drive_0034_sync 1343 r
+2011_09_26/2011_09_26_drive_0028_sync 237 r
+2011_09_26/2011_09_26_drive_0087_sync 589 r
+2011_10_03/2011_10_03_drive_0034_sync 1328 l
+2011_10_03/2011_10_03_drive_0034_sync 1139 r
+2011_09_30/2011_09_30_drive_0028_sync 219 l
+2011_09_26/2011_09_26_drive_0057_sync 108 r
+2011_09_30/2011_09_30_drive_0034_sync 630 l
+2011_10_03/2011_10_03_drive_0034_sync 2597 l
+2011_09_30/2011_09_30_drive_0028_sync 1888 l
+2011_09_30/2011_09_30_drive_0028_sync 2447 r
+2011_10_03/2011_10_03_drive_0034_sync 1087 r
+2011_09_30/2011_09_30_drive_0028_sync 5030 r
+2011_09_26/2011_09_26_drive_0014_sync 16 r
+2011_09_26/2011_09_26_drive_0051_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 581 l
+2011_09_26/2011_09_26_drive_0095_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 3674 l
+2011_09_30/2011_09_30_drive_0034_sync 1150 l
+2011_09_30/2011_09_30_drive_0033_sync 1244 l
+2011_09_30/2011_09_30_drive_0028_sync 3233 r
+2011_10_03/2011_10_03_drive_0042_sync 758 l
+2011_09_30/2011_09_30_drive_0033_sync 287 r
+2011_09_26/2011_09_26_drive_0022_sync 522 r
+2011_09_29/2011_09_29_drive_0026_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 1579 r
+2011_09_30/2011_09_30_drive_0028_sync 2288 r
+2011_09_30/2011_09_30_drive_0033_sync 791 r
+2011_09_26/2011_09_26_drive_0032_sync 30 r
+2011_09_26/2011_09_26_drive_0061_sync 262 r
+2011_10_03/2011_10_03_drive_0034_sync 3241 r
+2011_10_03/2011_10_03_drive_0034_sync 536 l
+2011_10_03/2011_10_03_drive_0034_sync 2683 r
+2011_10_03/2011_10_03_drive_0034_sync 3561 r
+2011_09_30/2011_09_30_drive_0020_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 1425 l
+2011_09_30/2011_09_30_drive_0033_sync 933 l
+2011_09_30/2011_09_30_drive_0034_sync 447 r
+2011_09_30/2011_09_30_drive_0034_sync 42 r
+2011_10_03/2011_10_03_drive_0042_sync 773 r
+2011_09_29/2011_09_29_drive_0004_sync 93 l
+2011_09_26/2011_09_26_drive_0039_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 2794 r
+2011_09_30/2011_09_30_drive_0028_sync 4990 l
+2011_09_26/2011_09_26_drive_0011_sync 18 l
+2011_09_26/2011_09_26_drive_0022_sync 518 r
+2011_09_26/2011_09_26_drive_0019_sync 252 l
+2011_09_26/2011_09_26_drive_0028_sync 424 l
+2011_09_30/2011_09_30_drive_0028_sync 878 r
+2011_09_30/2011_09_30_drive_0028_sync 1045 l
+2011_09_30/2011_09_30_drive_0033_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 3122 r
+2011_09_30/2011_09_30_drive_0033_sync 1426 l
+2011_10_03/2011_10_03_drive_0034_sync 3215 l
+2011_09_30/2011_09_30_drive_0028_sync 3339 l
+2011_09_26/2011_09_26_drive_0079_sync 54 l
+2011_09_26/2011_09_26_drive_0091_sync 156 r
+2011_09_26/2011_09_26_drive_0015_sync 227 l
+2011_09_30/2011_09_30_drive_0020_sync 605 r
+2011_09_26/2011_09_26_drive_0018_sync 111 r
+2011_09_26/2011_09_26_drive_0051_sync 154 l
+2011_09_30/2011_09_30_drive_0034_sync 794 r
+2011_09_30/2011_09_30_drive_0034_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 907 r
+2011_09_26/2011_09_26_drive_0070_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 3892 r
+2011_09_30/2011_09_30_drive_0028_sync 3194 l
+2011_10_03/2011_10_03_drive_0034_sync 4643 l
+2011_09_30/2011_09_30_drive_0028_sync 2841 l
+2011_09_30/2011_09_30_drive_0020_sync 1036 l
+2011_09_30/2011_09_30_drive_0028_sync 3378 l
+2011_09_26/2011_09_26_drive_0051_sync 42 l
+2011_09_26/2011_09_26_drive_0087_sync 158 l
+2011_09_26/2011_09_26_drive_0018_sync 236 l
+2011_09_26/2011_09_26_drive_0022_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 4314 l
+2011_09_30/2011_09_30_drive_0028_sync 3924 l
+2011_10_03/2011_10_03_drive_0034_sync 1457 l
+2011_10_03/2011_10_03_drive_0034_sync 2987 l
+2011_10_03/2011_10_03_drive_0034_sync 25 r
+2011_09_30/2011_09_30_drive_0020_sync 928 r
+2011_09_30/2011_09_30_drive_0028_sync 1294 r
+2011_10_03/2011_10_03_drive_0042_sync 186 l
+2011_09_30/2011_09_30_drive_0034_sync 1118 l
+2011_10_03/2011_10_03_drive_0034_sync 3801 r
+2011_09_30/2011_09_30_drive_0028_sync 5112 l
+2011_09_26/2011_09_26_drive_0014_sync 132 r
+2011_09_30/2011_09_30_drive_0033_sync 603 l
+2011_09_30/2011_09_30_drive_0028_sync 1602 r
+2011_09_30/2011_09_30_drive_0034_sync 301 l
+2011_09_30/2011_09_30_drive_0033_sync 439 l
+2011_09_30/2011_09_30_drive_0028_sync 314 l
+2011_09_26/2011_09_26_drive_0057_sync 38 r
+2011_09_30/2011_09_30_drive_0020_sync 837 l
+2011_09_26/2011_09_26_drive_0061_sync 467 r
+2011_09_26/2011_09_26_drive_0019_sync 47 r
+2011_09_26/2011_09_26_drive_0095_sync 243 r
+2011_10_03/2011_10_03_drive_0034_sync 1241 l
+2011_10_03/2011_10_03_drive_0034_sync 3332 l
+2011_10_03/2011_10_03_drive_0034_sync 4480 r
+2011_10_03/2011_10_03_drive_0042_sync 1004 r
+2011_09_26/2011_09_26_drive_0070_sync 405 r
+2011_10_03/2011_10_03_drive_0034_sync 1949 l
+2011_09_30/2011_09_30_drive_0033_sync 831 l
+2011_09_30/2011_09_30_drive_0033_sync 380 r
+2011_10_03/2011_10_03_drive_0034_sync 3758 r
+2011_09_30/2011_09_30_drive_0028_sync 4044 r
+2011_09_26/2011_09_26_drive_0005_sync 51 l
+2011_09_30/2011_09_30_drive_0020_sync 561 l
+2011_10_03/2011_10_03_drive_0034_sync 917 r
+2011_10_03/2011_10_03_drive_0034_sync 1695 l
+2011_09_30/2011_09_30_drive_0033_sync 442 l
+2011_09_26/2011_09_26_drive_0022_sync 125 l
+2011_09_26/2011_09_26_drive_0035_sync 88 l
+2011_09_29/2011_09_29_drive_0004_sync 164 r
+2011_09_26/2011_09_26_drive_0104_sync 307 l
+2011_09_26/2011_09_26_drive_0091_sync 97 l
+2011_09_26/2011_09_26_drive_0061_sync 221 r
+2011_10_03/2011_10_03_drive_0034_sync 770 l
+2011_09_30/2011_09_30_drive_0028_sync 1639 l
+2011_10_03/2011_10_03_drive_0034_sync 432 l
+2011_10_03/2011_10_03_drive_0034_sync 4069 l
+2011_09_26/2011_09_26_drive_0104_sync 251 r
+2011_10_03/2011_10_03_drive_0034_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 141 l
+2011_09_28/2011_09_28_drive_0001_sync 53 l
+2011_10_03/2011_10_03_drive_0042_sync 602 r
+2011_09_29/2011_09_29_drive_0004_sync 58 r
+2011_09_26/2011_09_26_drive_0032_sync 240 r
+2011_09_26/2011_09_26_drive_0017_sync 61 r
+2011_09_26/2011_09_26_drive_0022_sync 192 r
+2011_10_03/2011_10_03_drive_0042_sync 1022 r
+2011_09_30/2011_09_30_drive_0028_sync 707 l
+2011_10_03/2011_10_03_drive_0034_sync 3753 r
+2011_09_26/2011_09_26_drive_0011_sync 230 r
+2011_09_26/2011_09_26_drive_0028_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 1518 l
+2011_09_26/2011_09_26_drive_0039_sync 288 l
+2011_09_30/2011_09_30_drive_0028_sync 2980 l
+2011_09_26/2011_09_26_drive_0022_sync 756 r
+2011_10_03/2011_10_03_drive_0034_sync 651 r
+2011_09_30/2011_09_30_drive_0020_sync 9 r
+2011_09_30/2011_09_30_drive_0033_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 2323 l
+2011_09_26/2011_09_26_drive_0035_sync 13 l
+2011_09_26/2011_09_26_drive_0028_sync 302 r
+2011_10_03/2011_10_03_drive_0034_sync 566 r
+2011_09_30/2011_09_30_drive_0028_sync 1814 r
+2011_09_30/2011_09_30_drive_0028_sync 3903 r
+2011_09_30/2011_09_30_drive_0020_sync 609 r
+2011_09_30/2011_09_30_drive_0033_sync 920 l
+2011_10_03/2011_10_03_drive_0042_sync 604 l
+2011_09_26/2011_09_26_drive_0014_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 1565 r
+2011_10_03/2011_10_03_drive_0042_sync 384 l
+2011_09_26/2011_09_26_drive_0001_sync 48 l
+2011_09_30/2011_09_30_drive_0020_sync 995 r
+2011_10_03/2011_10_03_drive_0034_sync 2625 r
+2011_09_30/2011_09_30_drive_0028_sync 4278 r
+2011_10_03/2011_10_03_drive_0034_sync 2819 r
+2011_09_26/2011_09_26_drive_0095_sync 206 l
+2011_09_30/2011_09_30_drive_0034_sync 818 r
+2011_09_26/2011_09_26_drive_0095_sync 127 r
+2011_09_26/2011_09_26_drive_0019_sync 353 r
+2011_09_30/2011_09_30_drive_0020_sync 138 r
+2011_09_30/2011_09_30_drive_0028_sync 3385 l
+2011_09_26/2011_09_26_drive_0070_sync 6 r
+2011_09_26/2011_09_26_drive_0022_sync 270 r
+2011_10_03/2011_10_03_drive_0042_sync 285 r
+2011_09_30/2011_09_30_drive_0034_sync 1160 r
+2011_09_26/2011_09_26_drive_0057_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 2822 l
+2011_10_03/2011_10_03_drive_0042_sync 185 l
+2011_09_26/2011_09_26_drive_0057_sync 117 l
+2011_09_26/2011_09_26_drive_0022_sync 674 l
+2011_09_26/2011_09_26_drive_0011_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 4279 r
+2011_09_30/2011_09_30_drive_0028_sync 3578 r
+2011_09_26/2011_09_26_drive_0061_sync 683 l
+2011_09_26/2011_09_26_drive_0087_sync 207 r
+2011_09_26/2011_09_26_drive_0061_sync 310 r
+2011_10_03/2011_10_03_drive_0034_sync 2685 l
+2011_09_26/2011_09_26_drive_0039_sync 223 l
+2011_09_26/2011_09_26_drive_0005_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 2475 r
+2011_09_30/2011_09_30_drive_0028_sync 3491 r
+2011_09_30/2011_09_30_drive_0028_sync 4853 r
+2011_09_30/2011_09_30_drive_0028_sync 2143 l
+2011_10_03/2011_10_03_drive_0034_sync 3249 r
+2011_09_30/2011_09_30_drive_0033_sync 1291 l
+2011_09_30/2011_09_30_drive_0033_sync 1393 l
+2011_09_30/2011_09_30_drive_0033_sync 1123 r
+2011_10_03/2011_10_03_drive_0034_sync 4267 l
+2011_10_03/2011_10_03_drive_0034_sync 3716 l
+2011_09_30/2011_09_30_drive_0028_sync 4094 l
+2011_09_30/2011_09_30_drive_0028_sync 4184 r
+2011_10_03/2011_10_03_drive_0042_sync 391 l
+2011_09_26/2011_09_26_drive_0087_sync 322 l
+2011_10_03/2011_10_03_drive_0034_sync 801 r
+2011_10_03/2011_10_03_drive_0034_sync 4344 r
+2011_10_03/2011_10_03_drive_0042_sync 516 l
+2011_10_03/2011_10_03_drive_0042_sync 1100 l
+2011_09_30/2011_09_30_drive_0028_sync 4452 r
+2011_10_03/2011_10_03_drive_0034_sync 3452 r
+2011_09_26/2011_09_26_drive_0060_sync 59 r
+2011_09_30/2011_09_30_drive_0034_sync 401 r
+2011_09_30/2011_09_30_drive_0020_sync 232 r
+2011_09_26/2011_09_26_drive_0104_sync 89 l
+2011_09_26/2011_09_26_drive_0061_sync 448 r
+2011_09_30/2011_09_30_drive_0028_sync 343 r
+2011_10_03/2011_10_03_drive_0034_sync 4445 l
+2011_09_30/2011_09_30_drive_0034_sync 761 l
+2011_10_03/2011_10_03_drive_0034_sync 4004 r
+2011_09_26/2011_09_26_drive_0087_sync 166 l
+2011_09_26/2011_09_26_drive_0015_sync 193 r
+2011_10_03/2011_10_03_drive_0042_sync 381 l
+2011_09_26/2011_09_26_drive_0051_sync 350 r
+2011_10_03/2011_10_03_drive_0034_sync 3775 l
+2011_09_30/2011_09_30_drive_0028_sync 1922 l
+2011_10_03/2011_10_03_drive_0034_sync 2619 l
+2011_09_30/2011_09_30_drive_0028_sync 2474 l
+2011_09_26/2011_09_26_drive_0001_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 2958 r
+2011_09_30/2011_09_30_drive_0028_sync 1220 l
+2011_09_30/2011_09_30_drive_0028_sync 3944 l
+2011_10_03/2011_10_03_drive_0034_sync 2741 r
+2011_09_26/2011_09_26_drive_0091_sync 334 r
+2011_09_26/2011_09_26_drive_0104_sync 103 l
+2011_09_26/2011_09_26_drive_0028_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 1159 l
+2011_09_30/2011_09_30_drive_0034_sync 247 r
+2011_09_30/2011_09_30_drive_0028_sync 4074 l
+2011_10_03/2011_10_03_drive_0034_sync 4337 r
+2011_10_03/2011_10_03_drive_0034_sync 2515 r
+2011_09_30/2011_09_30_drive_0034_sync 55 l
+2011_09_26/2011_09_26_drive_0087_sync 345 l
+2011_09_26/2011_09_26_drive_0028_sync 145 r
+2011_09_26/2011_09_26_drive_0087_sync 140 r
+2011_09_30/2011_09_30_drive_0033_sync 853 r
+2011_10_03/2011_10_03_drive_0042_sync 669 r
+2011_10_03/2011_10_03_drive_0034_sync 1387 l
+2011_09_26/2011_09_26_drive_0032_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 4965 r
+2011_10_03/2011_10_03_drive_0042_sync 212 l
+2011_10_03/2011_10_03_drive_0034_sync 599 l
+2011_09_30/2011_09_30_drive_0028_sync 978 l
+2011_09_26/2011_09_26_drive_0018_sync 189 l
+2011_09_30/2011_09_30_drive_0034_sync 480 l
+2011_09_26/2011_09_26_drive_0061_sync 633 l
+2011_09_29/2011_09_29_drive_0026_sync 111 l
+2011_09_26/2011_09_26_drive_0001_sync 29 r
+2011_09_26/2011_09_26_drive_0035_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 2125 l
+2011_10_03/2011_10_03_drive_0034_sync 95 r
+2011_09_30/2011_09_30_drive_0034_sync 721 l
+2011_09_30/2011_09_30_drive_0028_sync 2531 l
+2011_10_03/2011_10_03_drive_0034_sync 2115 r
+2011_09_30/2011_09_30_drive_0028_sync 5170 r
+2011_09_26/2011_09_26_drive_0028_sync 426 r
+2011_09_30/2011_09_30_drive_0028_sync 407 l
+2011_09_30/2011_09_30_drive_0034_sync 173 r
+2011_10_03/2011_10_03_drive_0042_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 291 l
+2011_09_26/2011_09_26_drive_0015_sync 138 r
+2011_09_26/2011_09_26_drive_0061_sync 288 l
+2011_09_30/2011_09_30_drive_0028_sync 2563 l
+2011_09_30/2011_09_30_drive_0028_sync 912 r
+2011_09_30/2011_09_30_drive_0028_sync 1231 r
+2011_09_30/2011_09_30_drive_0020_sync 765 r
+2011_10_03/2011_10_03_drive_0034_sync 1353 r
+2011_09_30/2011_09_30_drive_0028_sync 1011 l
+2011_09_26/2011_09_26_drive_0091_sync 108 l
+2011_10_03/2011_10_03_drive_0034_sync 3311 r
+2011_09_26/2011_09_26_drive_0032_sync 242 r
+2011_10_03/2011_10_03_drive_0034_sync 2355 l
+2011_10_03/2011_10_03_drive_0034_sync 1473 l
+2011_09_26/2011_09_26_drive_0022_sync 757 l
+2011_09_30/2011_09_30_drive_0028_sync 5003 l
+2011_10_03/2011_10_03_drive_0034_sync 3758 l
+2011_09_30/2011_09_30_drive_0034_sync 237 r
+2011_09_26/2011_09_26_drive_0015_sync 89 r
+2011_09_30/2011_09_30_drive_0020_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 1082 r
+2011_10_03/2011_10_03_drive_0034_sync 2623 r
+2011_09_26/2011_09_26_drive_0032_sync 311 r
+2011_09_26/2011_09_26_drive_0061_sync 346 l
+2011_09_26/2011_09_26_drive_0051_sync 115 l
+2011_09_26/2011_09_26_drive_0014_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 1038 l
+2011_09_29/2011_09_29_drive_0004_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 3999 l
+2011_09_30/2011_09_30_drive_0028_sync 58 l
+2011_09_30/2011_09_30_drive_0020_sync 953 l
+2011_09_26/2011_09_26_drive_0057_sync 191 r
+2011_09_26/2011_09_26_drive_0087_sync 69 r
+2011_09_26/2011_09_26_drive_0001_sync 87 l
+2011_09_30/2011_09_30_drive_0034_sync 408 r
+2011_09_26/2011_09_26_drive_0022_sync 233 r
+2011_09_26/2011_09_26_drive_0018_sync 223 l
+2011_10_03/2011_10_03_drive_0034_sync 2923 l
+2011_09_26/2011_09_26_drive_0057_sync 15 r
+2011_09_30/2011_09_30_drive_0020_sync 464 r
+2011_10_03/2011_10_03_drive_0034_sync 2913 l
+2011_10_03/2011_10_03_drive_0042_sync 75 r
+2011_09_26/2011_09_26_drive_0022_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 2900 l
+2011_09_26/2011_09_26_drive_0061_sync 159 r
+2011_09_26/2011_09_26_drive_0028_sync 245 l
+2011_09_30/2011_09_30_drive_0028_sync 3414 r
+2011_09_26/2011_09_26_drive_0057_sync 288 l
+2011_09_26/2011_09_26_drive_0087_sync 647 l
+2011_10_03/2011_10_03_drive_0034_sync 2904 r
+2011_09_26/2011_09_26_drive_0011_sync 22 r
+2011_10_03/2011_10_03_drive_0042_sync 749 l
+2011_09_30/2011_09_30_drive_0028_sync 4982 l
+2011_09_30/2011_09_30_drive_0020_sync 271 l
+2011_09_30/2011_09_30_drive_0034_sync 910 l
+2011_09_26/2011_09_26_drive_0057_sync 46 r
+2011_09_26/2011_09_26_drive_0019_sync 397 r
+2011_09_30/2011_09_30_drive_0028_sync 1251 r
+2011_09_26/2011_09_26_drive_0057_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 3051 l
+2011_09_26/2011_09_26_drive_0104_sync 222 l
+2011_09_26/2011_09_26_drive_0039_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 4267 l
+2011_09_26/2011_09_26_drive_0087_sync 79 r
+2011_09_26/2011_09_26_drive_0057_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 3217 r
+2011_09_28/2011_09_28_drive_0001_sync 7 r
+2011_09_26/2011_09_26_drive_0032_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 4263 r
+2011_10_03/2011_10_03_drive_0042_sync 565 l
+2011_10_03/2011_10_03_drive_0034_sync 2271 l
+2011_09_26/2011_09_26_drive_0005_sync 94 r
+2011_09_26/2011_09_26_drive_0011_sync 3 r
+2011_10_03/2011_10_03_drive_0034_sync 418 l
+2011_09_30/2011_09_30_drive_0020_sync 1055 l
+2011_09_26/2011_09_26_drive_0070_sync 290 l
+2011_09_30/2011_09_30_drive_0028_sync 3238 r
+2011_09_30/2011_09_30_drive_0033_sync 188 l
+2011_09_26/2011_09_26_drive_0087_sync 579 l
+2011_09_30/2011_09_30_drive_0028_sync 3587 l
+2011_09_30/2011_09_30_drive_0020_sync 1100 l
+2011_09_26/2011_09_26_drive_0035_sync 33 r
+2011_09_30/2011_09_30_drive_0033_sync 878 l
+2011_09_30/2011_09_30_drive_0028_sync 2829 l
+2011_10_03/2011_10_03_drive_0034_sync 910 r
+2011_09_30/2011_09_30_drive_0033_sync 721 r
+2011_09_26/2011_09_26_drive_0032_sync 129 r
+2011_09_30/2011_09_30_drive_0034_sync 944 r
+2011_09_26/2011_09_26_drive_0087_sync 459 l
+2011_10_03/2011_10_03_drive_0034_sync 3561 l
+2011_09_26/2011_09_26_drive_0091_sync 329 l
+2011_09_26/2011_09_26_drive_0039_sync 217 l
+2011_09_30/2011_09_30_drive_0034_sync 948 r
+2011_09_30/2011_09_30_drive_0020_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 1880 r
+2011_09_26/2011_09_26_drive_0087_sync 51 r
+2011_09_26/2011_09_26_drive_0095_sync 37 r
+2011_09_26/2011_09_26_drive_0028_sync 206 r
+2011_09_30/2011_09_30_drive_0028_sync 1201 l
+2011_09_26/2011_09_26_drive_0057_sync 69 r
+2011_09_26/2011_09_26_drive_0011_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 2860 r
+2011_09_30/2011_09_30_drive_0028_sync 4260 r
+2011_09_26/2011_09_26_drive_0091_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 1831 l
+2011_10_03/2011_10_03_drive_0034_sync 4423 l
+2011_09_26/2011_09_26_drive_0014_sync 107 r
+2011_09_30/2011_09_30_drive_0028_sync 195 r
+2011_09_26/2011_09_26_drive_0022_sync 766 l
+2011_09_30/2011_09_30_drive_0028_sync 4233 l
+2011_09_30/2011_09_30_drive_0028_sync 4841 r
+2011_10_03/2011_10_03_drive_0034_sync 3972 r
+2011_10_03/2011_10_03_drive_0042_sync 167 r
+2011_09_29/2011_09_29_drive_0004_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 4221 l
+2011_09_26/2011_09_26_drive_0104_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 2535 r
+2011_09_29/2011_09_29_drive_0026_sync 92 l
+2011_09_26/2011_09_26_drive_0019_sync 344 l
+2011_09_30/2011_09_30_drive_0020_sync 587 r
+2011_09_30/2011_09_30_drive_0028_sync 117 l
+2011_09_26/2011_09_26_drive_0028_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 3172 l
+2011_09_30/2011_09_30_drive_0020_sync 732 l
+2011_09_30/2011_09_30_drive_0020_sync 676 r
+2011_09_26/2011_09_26_drive_0057_sync 229 r
+2011_09_26/2011_09_26_drive_0070_sync 412 r
+2011_09_26/2011_09_26_drive_0022_sync 549 r
+2011_09_26/2011_09_26_drive_0060_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 3331 l
+2011_09_30/2011_09_30_drive_0033_sync 500 r
+2011_10_03/2011_10_03_drive_0034_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 2935 r
+2011_09_26/2011_09_26_drive_0015_sync 164 l
+2011_10_03/2011_10_03_drive_0042_sync 1010 l
+2011_09_30/2011_09_30_drive_0034_sync 230 r
+2011_09_29/2011_09_29_drive_0004_sync 194 l
+2011_09_26/2011_09_26_drive_0014_sync 243 l
+2011_09_30/2011_09_30_drive_0028_sync 1135 r
+2011_09_26/2011_09_26_drive_0039_sync 292 r
+2011_09_26/2011_09_26_drive_0014_sync 232 l
+2011_09_26/2011_09_26_drive_0032_sync 222 l
+2011_09_30/2011_09_30_drive_0020_sync 1001 l
+2011_09_30/2011_09_30_drive_0028_sync 4602 l
+2011_10_03/2011_10_03_drive_0034_sync 2165 r
+2011_09_26/2011_09_26_drive_0091_sync 32 r
+2011_09_26/2011_09_26_drive_0005_sync 134 r
+2011_09_26/2011_09_26_drive_0015_sync 241 l
+2011_09_26/2011_09_26_drive_0005_sync 138 l
+2011_09_26/2011_09_26_drive_0035_sync 64 l
+2011_09_30/2011_09_30_drive_0034_sync 592 r
+2011_09_26/2011_09_26_drive_0028_sync 178 r
+2011_09_26/2011_09_26_drive_0091_sync 184 r
+2011_09_30/2011_09_30_drive_0033_sync 1384 r
+2011_10_03/2011_10_03_drive_0034_sync 316 l
+2011_10_03/2011_10_03_drive_0034_sync 1450 l
+2011_09_26/2011_09_26_drive_0061_sync 345 l
+2011_10_03/2011_10_03_drive_0034_sync 2066 r
+2011_09_26/2011_09_26_drive_0011_sync 215 r
+2011_10_03/2011_10_03_drive_0042_sync 1167 r
+2011_10_03/2011_10_03_drive_0034_sync 4457 r
+2011_09_30/2011_09_30_drive_0020_sync 933 l
+2011_09_26/2011_09_26_drive_0087_sync 22 r
+2011_09_26/2011_09_26_drive_0087_sync 50 l
+2011_10_03/2011_10_03_drive_0042_sync 253 l
+2011_10_03/2011_10_03_drive_0034_sync 1997 l
+2011_09_26/2011_09_26_drive_0019_sync 80 l
+2011_09_26/2011_09_26_drive_0104_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 179 l
+2011_10_03/2011_10_03_drive_0042_sync 377 l
+2011_09_30/2011_09_30_drive_0028_sync 1265 l
+2011_09_30/2011_09_30_drive_0020_sync 393 l
+2011_09_26/2011_09_26_drive_0015_sync 151 r
+2011_09_30/2011_09_30_drive_0020_sync 782 r
+2011_09_30/2011_09_30_drive_0028_sync 4059 r
+2011_10_03/2011_10_03_drive_0034_sync 3316 l
+2011_10_03/2011_10_03_drive_0034_sync 2529 l
+2011_09_26/2011_09_26_drive_0019_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 1942 r
+2011_09_30/2011_09_30_drive_0033_sync 1498 l
+2011_09_30/2011_09_30_drive_0028_sync 3951 l
+2011_09_29/2011_09_29_drive_0004_sync 92 r
+2011_09_26/2011_09_26_drive_0079_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 2405 l
+2011_09_26/2011_09_26_drive_0095_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 363 r
+2011_10_03/2011_10_03_drive_0034_sync 3530 l
+2011_10_03/2011_10_03_drive_0042_sync 402 r
+2011_10_03/2011_10_03_drive_0042_sync 467 r
+2011_09_30/2011_09_30_drive_0028_sync 2457 l
+2011_09_26/2011_09_26_drive_0104_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 3746 r
+2011_09_30/2011_09_30_drive_0028_sync 3125 r
+2011_09_30/2011_09_30_drive_0028_sync 4882 r
+2011_09_29/2011_09_29_drive_0004_sync 172 r
+2011_09_30/2011_09_30_drive_0028_sync 3152 r
+2011_09_26/2011_09_26_drive_0014_sync 235 l
+2011_09_26/2011_09_26_drive_0104_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 3876 r
+2011_10_03/2011_10_03_drive_0042_sync 687 l
+2011_09_30/2011_09_30_drive_0028_sync 990 r
+2011_09_26/2011_09_26_drive_0019_sync 380 l
+2011_10_03/2011_10_03_drive_0034_sync 1800 r
+2011_10_03/2011_10_03_drive_0034_sync 1396 r
+2011_10_03/2011_10_03_drive_0034_sync 706 r
+2011_09_26/2011_09_26_drive_0095_sync 49 r
+2011_09_26/2011_09_26_drive_0018_sync 172 l
+2011_09_30/2011_09_30_drive_0028_sync 2110 l
+2011_10_03/2011_10_03_drive_0034_sync 3494 r
+2011_09_26/2011_09_26_drive_0022_sync 465 l
+2011_09_26/2011_09_26_drive_0087_sync 395 l
+2011_09_26/2011_09_26_drive_0022_sync 544 l
+2011_09_30/2011_09_30_drive_0028_sync 1419 l
+2011_09_26/2011_09_26_drive_0070_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 4132 r
+2011_09_30/2011_09_30_drive_0028_sync 1057 r
+2011_09_26/2011_09_26_drive_0022_sync 360 r
+2011_09_30/2011_09_30_drive_0034_sync 481 l
+2011_09_30/2011_09_30_drive_0020_sync 878 r
+2011_09_30/2011_09_30_drive_0028_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 2928 l
+2011_09_30/2011_09_30_drive_0028_sync 3209 r
+2011_09_26/2011_09_26_drive_0087_sync 642 l
+2011_09_26/2011_09_26_drive_0070_sync 17 l
+2011_09_26/2011_09_26_drive_0087_sync 315 l
+2011_09_30/2011_09_30_drive_0034_sync 397 l
+2011_09_30/2011_09_30_drive_0028_sync 2020 r
+2011_09_26/2011_09_26_drive_0011_sync 138 l
+2011_09_26/2011_09_26_drive_0057_sync 23 r
+2011_09_30/2011_09_30_drive_0033_sync 390 l
+2011_09_26/2011_09_26_drive_0095_sync 21 l
+2011_09_26/2011_09_26_drive_0087_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 3768 l
+2011_10_03/2011_10_03_drive_0034_sync 1829 r
+2011_09_30/2011_09_30_drive_0033_sync 742 r
+2011_09_26/2011_09_26_drive_0019_sync 235 r
+2011_09_30/2011_09_30_drive_0028_sync 5038 r
+2011_09_30/2011_09_30_drive_0028_sync 1402 l
+2011_10_03/2011_10_03_drive_0034_sync 4423 r
+2011_09_30/2011_09_30_drive_0034_sync 218 r
+2011_10_03/2011_10_03_drive_0034_sync 3951 r
+2011_09_30/2011_09_30_drive_0020_sync 671 r
+2011_09_30/2011_09_30_drive_0028_sync 1185 r
+2011_10_03/2011_10_03_drive_0034_sync 4615 l
+2011_10_03/2011_10_03_drive_0034_sync 3433 l
+2011_09_26/2011_09_26_drive_0022_sync 474 r
+2011_10_03/2011_10_03_drive_0034_sync 4118 l
+2011_09_26/2011_09_26_drive_0070_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 2028 l
+2011_10_03/2011_10_03_drive_0034_sync 2033 r
+2011_09_26/2011_09_26_drive_0014_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 813 r
+2011_10_03/2011_10_03_drive_0034_sync 4426 r
+2011_09_26/2011_09_26_drive_0022_sync 727 r
+2011_10_03/2011_10_03_drive_0034_sync 3887 l
+2011_09_26/2011_09_26_drive_0028_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 602 l
+2011_09_26/2011_09_26_drive_0022_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 90 l
+2011_09_30/2011_09_30_drive_0033_sync 712 l
+2011_09_30/2011_09_30_drive_0028_sync 1547 r
+2011_09_26/2011_09_26_drive_0015_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 3752 r
+2011_10_03/2011_10_03_drive_0034_sync 2112 l
+2011_10_03/2011_10_03_drive_0034_sync 3507 l
+2011_09_29/2011_09_29_drive_0004_sync 133 l
+2011_09_30/2011_09_30_drive_0020_sync 1086 r
+2011_09_30/2011_09_30_drive_0028_sync 1701 l
+2011_10_03/2011_10_03_drive_0034_sync 3117 r
+2011_09_26/2011_09_26_drive_0051_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 4221 r
+2011_09_30/2011_09_30_drive_0028_sync 2204 l
+2011_09_26/2011_09_26_drive_0087_sync 200 r
+2011_09_26/2011_09_26_drive_0022_sync 349 l
+2011_09_26/2011_09_26_drive_0087_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 2774 r
+2011_09_26/2011_09_26_drive_0022_sync 487 r
+2011_09_30/2011_09_30_drive_0033_sync 1160 l
+2011_09_30/2011_09_30_drive_0020_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 2331 l
+2011_09_26/2011_09_26_drive_0087_sync 310 r
+2011_10_03/2011_10_03_drive_0034_sync 1557 l
+2011_10_03/2011_10_03_drive_0034_sync 1595 l
+2011_10_03/2011_10_03_drive_0034_sync 3456 l
+2011_09_26/2011_09_26_drive_0057_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 4290 r
+2011_10_03/2011_10_03_drive_0034_sync 3221 l
+2011_09_26/2011_09_26_drive_0113_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 212 r
+2011_09_26/2011_09_26_drive_0035_sync 24 l
+2011_09_26/2011_09_26_drive_0051_sync 21 l
+2011_09_26/2011_09_26_drive_0022_sync 455 r
+2011_09_30/2011_09_30_drive_0034_sync 856 l
+2011_10_03/2011_10_03_drive_0034_sync 2599 r
+2011_09_26/2011_09_26_drive_0104_sync 20 r
+2011_09_30/2011_09_30_drive_0033_sync 565 l
+2011_10_03/2011_10_03_drive_0034_sync 3096 r
+2011_09_26/2011_09_26_drive_0095_sync 220 l
+2011_09_26/2011_09_26_drive_0032_sync 308 l
+2011_09_30/2011_09_30_drive_0020_sync 315 l
+2011_09_26/2011_09_26_drive_0011_sync 193 r
+2011_09_30/2011_09_30_drive_0028_sync 3166 r
+2011_10_03/2011_10_03_drive_0042_sync 256 l
+2011_09_26/2011_09_26_drive_0039_sync 241 r
+2011_09_30/2011_09_30_drive_0033_sync 1011 l
+2011_09_26/2011_09_26_drive_0095_sync 163 r
+2011_09_30/2011_09_30_drive_0020_sync 770 l
+2011_09_26/2011_09_26_drive_0087_sync 227 l
+2011_09_30/2011_09_30_drive_0034_sync 1192 l
+2011_09_26/2011_09_26_drive_0022_sync 765 l
+2011_10_03/2011_10_03_drive_0042_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 4752 r
+2011_09_28/2011_09_28_drive_0001_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 1697 l
+2011_09_30/2011_09_30_drive_0028_sync 379 r
+2011_09_26/2011_09_26_drive_0070_sync 287 l
+2011_09_30/2011_09_30_drive_0034_sync 1062 l
+2011_09_30/2011_09_30_drive_0033_sync 1352 r
+2011_09_30/2011_09_30_drive_0033_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 3565 r
+2011_09_30/2011_09_30_drive_0020_sync 616 r
+2011_09_26/2011_09_26_drive_0028_sync 108 r
+2011_09_26/2011_09_26_drive_0011_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 2455 r
+2011_09_26/2011_09_26_drive_0022_sync 139 l
+2011_09_30/2011_09_30_drive_0034_sync 523 l
+2011_09_26/2011_09_26_drive_0014_sync 83 r
+2011_09_26/2011_09_26_drive_0061_sync 398 l
+2011_09_30/2011_09_30_drive_0028_sync 1155 l
+2011_09_26/2011_09_26_drive_0018_sync 77 l
+2011_09_26/2011_09_26_drive_0057_sync 129 l
+2011_09_26/2011_09_26_drive_0070_sync 316 l
+2011_09_30/2011_09_30_drive_0028_sync 2064 l
+2011_09_30/2011_09_30_drive_0020_sync 471 l
+2011_09_26/2011_09_26_drive_0061_sync 570 r
+2011_09_26/2011_09_26_drive_0091_sync 227 r
+2011_09_26/2011_09_26_drive_0104_sync 265 l
+2011_09_30/2011_09_30_drive_0028_sync 4135 r
+2011_10_03/2011_10_03_drive_0034_sync 504 r
+2011_09_30/2011_09_30_drive_0028_sync 2184 r
+2011_09_30/2011_09_30_drive_0028_sync 5036 r
+2011_09_26/2011_09_26_drive_0022_sync 205 l
+2011_09_26/2011_09_26_drive_0015_sync 292 l
+2011_09_30/2011_09_30_drive_0028_sync 4227 r
+2011_09_30/2011_09_30_drive_0028_sync 4481 r
+2011_10_03/2011_10_03_drive_0034_sync 398 r
+2011_10_03/2011_10_03_drive_0042_sync 619 l
+2011_09_26/2011_09_26_drive_0015_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 2823 l
+2011_10_03/2011_10_03_drive_0042_sync 313 l
+2011_10_03/2011_10_03_drive_0034_sync 2099 l
+2011_09_30/2011_09_30_drive_0020_sync 1002 r
+2011_09_30/2011_09_30_drive_0033_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 1014 r
+2011_09_30/2011_09_30_drive_0028_sync 3213 l
+2011_09_30/2011_09_30_drive_0028_sync 5059 r
+2011_09_26/2011_09_26_drive_0061_sync 308 r
+2011_09_26/2011_09_26_drive_0014_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 2610 l
+2011_09_30/2011_09_30_drive_0028_sync 3623 r
+2011_09_26/2011_09_26_drive_0057_sync 36 l
+2011_09_26/2011_09_26_drive_0022_sync 652 r
+2011_09_26/2011_09_26_drive_0057_sync 345 r
+2011_09_30/2011_09_30_drive_0028_sync 2258 l
+2011_10_03/2011_10_03_drive_0034_sync 1755 l
+2011_09_26/2011_09_26_drive_0113_sync 63 r
+2011_10_03/2011_10_03_drive_0042_sync 516 r
+2011_09_26/2011_09_26_drive_0087_sync 141 l
+2011_09_26/2011_09_26_drive_0022_sync 446 r
+2011_09_30/2011_09_30_drive_0028_sync 266 r
+2011_09_26/2011_09_26_drive_0079_sync 55 r
+2011_10_03/2011_10_03_drive_0034_sync 1929 l
+2011_10_03/2011_10_03_drive_0034_sync 3560 r
+2011_10_03/2011_10_03_drive_0034_sync 4043 r
+2011_09_26/2011_09_26_drive_0014_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 1790 l
+2011_09_26/2011_09_26_drive_0091_sync 170 l
+2011_10_03/2011_10_03_drive_0034_sync 2997 r
+2011_09_30/2011_09_30_drive_0033_sync 1457 l
+2011_10_03/2011_10_03_drive_0034_sync 4275 r
+2011_09_26/2011_09_26_drive_0087_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 445 r
+2011_09_30/2011_09_30_drive_0033_sync 1243 l
+2011_10_03/2011_10_03_drive_0034_sync 2491 l
+2011_09_26/2011_09_26_drive_0070_sync 47 r
+2011_09_26/2011_09_26_drive_0019_sync 197 r
+2011_09_26/2011_09_26_drive_0019_sync 307 l
+2011_09_30/2011_09_30_drive_0028_sync 1712 l
+2011_09_30/2011_09_30_drive_0028_sync 3955 r
+2011_09_30/2011_09_30_drive_0033_sync 1345 r
+2011_09_30/2011_09_30_drive_0028_sync 2707 r
+2011_09_30/2011_09_30_drive_0034_sync 394 r
+2011_10_03/2011_10_03_drive_0034_sync 2361 r
+2011_10_03/2011_10_03_drive_0034_sync 522 r
+2011_09_28/2011_09_28_drive_0001_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 1948 r
+2011_10_03/2011_10_03_drive_0034_sync 3615 l
+2011_09_30/2011_09_30_drive_0028_sync 1033 l
+2011_09_30/2011_09_30_drive_0020_sync 427 r
+2011_09_26/2011_09_26_drive_0015_sync 271 l
+2011_09_26/2011_09_26_drive_0051_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 1495 l
+2011_09_26/2011_09_26_drive_0091_sync 193 r
+2011_09_30/2011_09_30_drive_0033_sync 1043 r
+2011_10_03/2011_10_03_drive_0042_sync 1077 l
+2011_09_30/2011_09_30_drive_0028_sync 2824 r
+2011_09_26/2011_09_26_drive_0061_sync 237 r
+2011_09_26/2011_09_26_drive_0017_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 153 r
+2011_10_03/2011_10_03_drive_0034_sync 2591 l
+2011_09_30/2011_09_30_drive_0033_sync 824 l
+2011_09_26/2011_09_26_drive_0061_sync 334 l
+2011_09_30/2011_09_30_drive_0028_sync 1015 r
+2011_10_03/2011_10_03_drive_0034_sync 3938 l
+2011_09_30/2011_09_30_drive_0028_sync 1295 l
+2011_10_03/2011_10_03_drive_0034_sync 3201 l
+2011_10_03/2011_10_03_drive_0034_sync 3904 l
+2011_10_03/2011_10_03_drive_0034_sync 747 r
+2011_09_26/2011_09_26_drive_0104_sync 268 r
+2011_09_30/2011_09_30_drive_0034_sync 544 l
+2011_09_26/2011_09_26_drive_0019_sync 225 r
+2011_09_26/2011_09_26_drive_0019_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 2158 l
+2011_09_26/2011_09_26_drive_0032_sync 291 l
+2011_09_30/2011_09_30_drive_0034_sync 707 l
+2011_09_30/2011_09_30_drive_0033_sync 733 r
+2011_09_30/2011_09_30_drive_0028_sync 3071 r
+2011_09_30/2011_09_30_drive_0028_sync 679 r
+2011_09_30/2011_09_30_drive_0028_sync 3437 l
+2011_09_26/2011_09_26_drive_0070_sync 265 l
+2011_10_03/2011_10_03_drive_0034_sync 1644 r
+2011_10_03/2011_10_03_drive_0042_sync 198 r
+2011_10_03/2011_10_03_drive_0042_sync 191 r
+2011_09_26/2011_09_26_drive_0104_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 4338 l
+2011_10_03/2011_10_03_drive_0034_sync 731 r
+2011_09_30/2011_09_30_drive_0033_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 2389 l
+2011_09_30/2011_09_30_drive_0028_sync 2699 l
+2011_09_26/2011_09_26_drive_0079_sync 36 r
+2011_09_26/2011_09_26_drive_0051_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 2335 l
+2011_10_03/2011_10_03_drive_0034_sync 2088 l
+2011_09_26/2011_09_26_drive_0005_sync 88 r
+2011_09_30/2011_09_30_drive_0020_sync 885 l
+2011_10_03/2011_10_03_drive_0034_sync 4058 r
+2011_09_30/2011_09_30_drive_0028_sync 1428 l
+2011_09_26/2011_09_26_drive_0087_sync 103 l
+2011_09_30/2011_09_30_drive_0028_sync 2050 r
+2011_09_30/2011_09_30_drive_0033_sync 1334 l
+2011_10_03/2011_10_03_drive_0034_sync 2141 r
+2011_09_26/2011_09_26_drive_0022_sync 287 r
+2011_09_26/2011_09_26_drive_0022_sync 535 l
+2011_09_30/2011_09_30_drive_0033_sync 731 l
+2011_10_03/2011_10_03_drive_0034_sync 4482 r
+2011_09_26/2011_09_26_drive_0015_sync 189 r
+2011_09_29/2011_09_29_drive_0004_sync 146 r
+2011_09_30/2011_09_30_drive_0020_sync 102 r
+2011_09_26/2011_09_26_drive_0061_sync 180 r
+2011_10_03/2011_10_03_drive_0034_sync 601 l
+2011_09_26/2011_09_26_drive_0022_sync 595 l
+2011_09_30/2011_09_30_drive_0033_sync 211 l
+2011_09_30/2011_09_30_drive_0033_sync 648 l
+2011_09_26/2011_09_26_drive_0079_sync 83 r
+2011_09_26/2011_09_26_drive_0061_sync 456 r
+2011_09_26/2011_09_26_drive_0028_sync 387 l
+2011_09_30/2011_09_30_drive_0020_sync 161 l
+2011_09_26/2011_09_26_drive_0019_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 203 l
+2011_09_26/2011_09_26_drive_0087_sync 89 r
+2011_09_26/2011_09_26_drive_0018_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 2811 l
+2011_09_26/2011_09_26_drive_0032_sync 255 r
+2011_09_30/2011_09_30_drive_0020_sync 88 l
+2011_09_26/2011_09_26_drive_0057_sync 157 l
+2011_09_30/2011_09_30_drive_0028_sync 1083 r
+2011_09_26/2011_09_26_drive_0018_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 1251 l
+2011_09_30/2011_09_30_drive_0028_sync 3190 r
+2011_09_26/2011_09_26_drive_0019_sync 327 r
+2011_09_30/2011_09_30_drive_0028_sync 2732 l
+2011_09_26/2011_09_26_drive_0091_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 2377 r
+2011_09_26/2011_09_26_drive_0095_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 1532 l
+2011_09_30/2011_09_30_drive_0034_sync 449 l
+2011_10_03/2011_10_03_drive_0034_sync 474 l
+2011_10_03/2011_10_03_drive_0034_sync 2914 r
+2011_09_26/2011_09_26_drive_0028_sync 53 r
+2011_09_26/2011_09_26_drive_0095_sync 42 r
+2011_09_30/2011_09_30_drive_0020_sync 20 l
+2011_09_30/2011_09_30_drive_0028_sync 1752 l
+2011_09_30/2011_09_30_drive_0033_sync 1424 r
+2011_09_26/2011_09_26_drive_0057_sync 302 l
+2011_09_26/2011_09_26_drive_0022_sync 119 r
+2011_09_30/2011_09_30_drive_0033_sync 55 r
+2011_09_26/2011_09_26_drive_0014_sync 302 r
+2011_09_26/2011_09_26_drive_0087_sync 195 l
+2011_09_30/2011_09_30_drive_0020_sync 691 l
+2011_09_30/2011_09_30_drive_0028_sync 561 r
+2011_09_30/2011_09_30_drive_0028_sync 4934 l
+2011_09_30/2011_09_30_drive_0028_sync 4891 l
+2011_09_30/2011_09_30_drive_0028_sync 3611 l
+2011_09_29/2011_09_29_drive_0004_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 348 r
+2011_10_03/2011_10_03_drive_0034_sync 3648 l
+2011_09_26/2011_09_26_drive_0091_sync 287 l
+2011_09_26/2011_09_26_drive_0057_sync 257 r
+2011_10_03/2011_10_03_drive_0034_sync 4440 l
+2011_09_30/2011_09_30_drive_0028_sync 3294 l
+2011_09_29/2011_09_29_drive_0004_sync 144 r
+2011_09_30/2011_09_30_drive_0033_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 301 r
+2011_09_26/2011_09_26_drive_0039_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 4036 l
+2011_10_03/2011_10_03_drive_0034_sync 149 r
+2011_10_03/2011_10_03_drive_0034_sync 2862 l
+2011_09_30/2011_09_30_drive_0034_sync 1123 r
+2011_09_30/2011_09_30_drive_0028_sync 205 r
+2011_09_26/2011_09_26_drive_0022_sync 22 l
+2011_09_26/2011_09_26_drive_0039_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 563 r
+2011_10_03/2011_10_03_drive_0034_sync 346 r
+2011_09_26/2011_09_26_drive_0061_sync 173 l
+2011_10_03/2011_10_03_drive_0034_sync 1515 r
+2011_10_03/2011_10_03_drive_0034_sync 4172 r
+2011_09_26/2011_09_26_drive_0051_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 3830 l
+2011_09_26/2011_09_26_drive_0079_sync 2 r
+2011_09_30/2011_09_30_drive_0020_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 226 r
+2011_10_03/2011_10_03_drive_0042_sync 993 r
+2011_09_30/2011_09_30_drive_0033_sync 769 l
+2011_09_26/2011_09_26_drive_0113_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 4470 r
+2011_09_30/2011_09_30_drive_0028_sync 2668 l
+2011_09_30/2011_09_30_drive_0020_sync 626 r
+2011_09_29/2011_09_29_drive_0004_sync 186 r
+2011_09_26/2011_09_26_drive_0032_sync 280 l
+2011_09_26/2011_09_26_drive_0005_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 1089 r
+2011_09_26/2011_09_26_drive_0104_sync 264 l
+2011_09_26/2011_09_26_drive_0091_sync 189 l
+2011_09_30/2011_09_30_drive_0020_sync 856 l
+2011_09_26/2011_09_26_drive_0057_sync 149 l
+2011_09_30/2011_09_30_drive_0028_sync 2232 l
+2011_09_26/2011_09_26_drive_0060_sync 56 r
+2011_09_29/2011_09_29_drive_0004_sync 299 r
+2011_10_03/2011_10_03_drive_0034_sync 4635 r
+2011_09_26/2011_09_26_drive_0061_sync 585 l
+2011_09_30/2011_09_30_drive_0028_sync 1287 r
+2011_09_30/2011_09_30_drive_0028_sync 2037 l
+2011_09_30/2011_09_30_drive_0028_sync 4657 l
+2011_09_28/2011_09_28_drive_0001_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 4448 r
+2011_09_30/2011_09_30_drive_0028_sync 2227 r
+2011_10_03/2011_10_03_drive_0034_sync 554 r
+2011_10_03/2011_10_03_drive_0034_sync 3781 r
+2011_09_26/2011_09_26_drive_0087_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 2484 l
+2011_09_30/2011_09_30_drive_0028_sync 2842 l
+2011_09_30/2011_09_30_drive_0020_sync 757 r
+2011_10_03/2011_10_03_drive_0034_sync 1974 l
+2011_09_30/2011_09_30_drive_0034_sync 458 r
+2011_10_03/2011_10_03_drive_0034_sync 4436 r
+2011_09_30/2011_09_30_drive_0033_sync 454 l
+2011_09_26/2011_09_26_drive_0014_sync 149 l
+2011_09_26/2011_09_26_drive_0028_sync 377 l
+2011_09_26/2011_09_26_drive_0060_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 806 r
+2011_09_30/2011_09_30_drive_0028_sync 41 r
+2011_09_26/2011_09_26_drive_0039_sync 89 l
+2011_10_03/2011_10_03_drive_0042_sync 84 r
+2011_09_26/2011_09_26_drive_0028_sync 320 l
+2011_09_26/2011_09_26_drive_0032_sync 355 l
+2011_09_30/2011_09_30_drive_0028_sync 4330 l
+2011_09_26/2011_09_26_drive_0070_sync 237 l
+2011_09_29/2011_09_29_drive_0004_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 1226 l
+2011_09_26/2011_09_26_drive_0022_sync 390 r
+2011_09_30/2011_09_30_drive_0028_sync 3767 r
+2011_09_30/2011_09_30_drive_0020_sync 692 l
+2011_09_30/2011_09_30_drive_0034_sync 190 r
+2011_10_03/2011_10_03_drive_0034_sync 642 l
+2011_10_03/2011_10_03_drive_0042_sync 725 l
+2011_10_03/2011_10_03_drive_0034_sync 752 r
+2011_10_03/2011_10_03_drive_0034_sync 1462 r
+2011_09_26/2011_09_26_drive_0104_sync 164 l
+2011_09_26/2011_09_26_drive_0019_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 3314 r
+2011_09_26/2011_09_26_drive_0011_sync 23 r
+2011_09_26/2011_09_26_drive_0014_sync 197 l
+2011_09_26/2011_09_26_drive_0087_sync 73 l
+2011_09_30/2011_09_30_drive_0020_sync 666 l
+2011_10_03/2011_10_03_drive_0042_sync 1051 r
+2011_09_26/2011_09_26_drive_0015_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 2313 l
+2011_09_30/2011_09_30_drive_0028_sync 1967 r
+2011_10_03/2011_10_03_drive_0034_sync 380 r
+2011_09_26/2011_09_26_drive_0028_sync 421 l
+2011_09_30/2011_09_30_drive_0034_sync 1078 l
+2011_09_30/2011_09_30_drive_0033_sync 1109 l
+2011_09_30/2011_09_30_drive_0028_sync 3730 l
+2011_09_30/2011_09_30_drive_0028_sync 2548 l
+2011_09_26/2011_09_26_drive_0011_sync 204 l
+2011_09_26/2011_09_26_drive_0032_sync 196 l
+2011_10_03/2011_10_03_drive_0034_sync 2057 r
+2011_09_26/2011_09_26_drive_0079_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 4914 l
+2011_09_30/2011_09_30_drive_0020_sync 371 r
+2011_09_30/2011_09_30_drive_0028_sync 4396 r
+2011_09_26/2011_09_26_drive_0039_sync 238 r
+2011_10_03/2011_10_03_drive_0034_sync 1263 l
+2011_09_30/2011_09_30_drive_0034_sync 26 r
+2011_09_30/2011_09_30_drive_0020_sync 22 r
+2011_09_26/2011_09_26_drive_0087_sync 124 l
+2011_10_03/2011_10_03_drive_0042_sync 432 l
+2011_09_30/2011_09_30_drive_0028_sync 2658 r
+2011_09_26/2011_09_26_drive_0087_sync 685 r
+2011_09_26/2011_09_26_drive_0113_sync 17 r
+2011_09_26/2011_09_26_drive_0087_sync 453 r
+2011_09_30/2011_09_30_drive_0034_sync 970 r
+2011_09_30/2011_09_30_drive_0028_sync 474 r
+2011_09_30/2011_09_30_drive_0033_sync 1588 l
+2011_09_26/2011_09_26_drive_0104_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3992 l
+2011_09_30/2011_09_30_drive_0028_sync 848 l
+2011_09_30/2011_09_30_drive_0020_sync 805 r
+2011_09_30/2011_09_30_drive_0028_sync 1219 r
+2011_09_26/2011_09_26_drive_0087_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 4114 r
+2011_09_26/2011_09_26_drive_0057_sync 136 l
+2011_10_03/2011_10_03_drive_0034_sync 1920 r
+2011_09_26/2011_09_26_drive_0104_sync 49 r
+2011_09_30/2011_09_30_drive_0034_sync 413 r
+2011_10_03/2011_10_03_drive_0034_sync 1672 r
+2011_10_03/2011_10_03_drive_0034_sync 1698 l
+2011_09_30/2011_09_30_drive_0028_sync 3162 r
+2011_10_03/2011_10_03_drive_0034_sync 171 l
+2011_09_30/2011_09_30_drive_0033_sync 1429 r
+2011_09_26/2011_09_26_drive_0057_sync 140 r
+2011_09_30/2011_09_30_drive_0020_sync 1101 r
+2011_10_03/2011_10_03_drive_0034_sync 3262 r
+2011_10_03/2011_10_03_drive_0034_sync 4010 r
+2011_09_26/2011_09_26_drive_0087_sync 206 r
+2011_10_03/2011_10_03_drive_0034_sync 2434 r
+2011_10_03/2011_10_03_drive_0042_sync 649 l
+2011_09_26/2011_09_26_drive_0019_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 3828 l
+2011_10_03/2011_10_03_drive_0042_sync 415 r
+2011_10_03/2011_10_03_drive_0034_sync 1069 r
+2011_10_03/2011_10_03_drive_0034_sync 982 r
+2011_09_26/2011_09_26_drive_0011_sync 157 r
+2011_09_30/2011_09_30_drive_0033_sync 1347 r
+2011_10_03/2011_10_03_drive_0034_sync 1805 r
+2011_09_26/2011_09_26_drive_0019_sync 23 l
+2011_09_30/2011_09_30_drive_0028_sync 3772 l
+2011_09_30/2011_09_30_drive_0034_sync 819 r
+2011_10_03/2011_10_03_drive_0042_sync 277 r
+2011_09_30/2011_09_30_drive_0033_sync 1086 l
+2011_10_03/2011_10_03_drive_0034_sync 504 l
+2011_09_30/2011_09_30_drive_0033_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 791 l
+2011_09_30/2011_09_30_drive_0028_sync 103 l
+2011_09_30/2011_09_30_drive_0028_sync 4313 r
+2011_10_03/2011_10_03_drive_0034_sync 1574 r
+2011_10_03/2011_10_03_drive_0034_sync 117 r
+2011_09_26/2011_09_26_drive_0032_sync 140 l
+2011_09_30/2011_09_30_drive_0028_sync 1929 r
+2011_09_30/2011_09_30_drive_0028_sync 1623 r
+2011_09_26/2011_09_26_drive_0095_sync 5 l
+2011_09_30/2011_09_30_drive_0033_sync 463 r
+2011_09_26/2011_09_26_drive_0070_sync 167 r
+2011_09_26/2011_09_26_drive_0079_sync 90 l
+2011_09_26/2011_09_26_drive_0011_sync 132 r
+2011_10_03/2011_10_03_drive_0042_sync 1048 l
+2011_09_30/2011_09_30_drive_0028_sync 4680 l
+2011_09_26/2011_09_26_drive_0022_sync 676 r
+2011_09_26/2011_09_26_drive_0039_sync 353 r
+2011_10_03/2011_10_03_drive_0042_sync 643 l
+2011_10_03/2011_10_03_drive_0034_sync 318 r
+2011_10_03/2011_10_03_drive_0034_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 1539 l
+2011_09_26/2011_09_26_drive_0087_sync 603 l
+2011_09_26/2011_09_26_drive_0087_sync 25 r
+2011_09_26/2011_09_26_drive_0032_sync 300 r
+2011_09_30/2011_09_30_drive_0028_sync 3130 l
+2011_09_26/2011_09_26_drive_0087_sync 454 r
+2011_10_03/2011_10_03_drive_0034_sync 2965 l
+2011_09_26/2011_09_26_drive_0070_sync 353 r
+2011_09_26/2011_09_26_drive_0087_sync 131 r
+2011_09_30/2011_09_30_drive_0034_sync 365 l
+2011_10_03/2011_10_03_drive_0042_sync 600 r
+2011_10_03/2011_10_03_drive_0034_sync 3139 l
+2011_09_30/2011_09_30_drive_0034_sync 782 r
+2011_09_30/2011_09_30_drive_0033_sync 659 l
+2011_09_26/2011_09_26_drive_0022_sync 469 r
+2011_10_03/2011_10_03_drive_0034_sync 459 l
+2011_09_30/2011_09_30_drive_0033_sync 383 r
+2011_09_26/2011_09_26_drive_0060_sync 30 l
+2011_09_29/2011_09_29_drive_0004_sync 306 l
+2011_09_30/2011_09_30_drive_0033_sync 943 r
+2011_10_03/2011_10_03_drive_0042_sync 986 r
+2011_10_03/2011_10_03_drive_0042_sync 208 l
+2011_10_03/2011_10_03_drive_0034_sync 1031 r
+2011_10_03/2011_10_03_drive_0034_sync 672 r
+2011_09_26/2011_09_26_drive_0079_sync 23 l
+2011_10_03/2011_10_03_drive_0042_sync 994 l
+2011_09_26/2011_09_26_drive_0061_sync 608 r
+2011_09_26/2011_09_26_drive_0087_sync 123 r
+2011_09_28/2011_09_28_drive_0001_sync 60 r
+2011_09_26/2011_09_26_drive_0057_sync 7 l
+2011_09_30/2011_09_30_drive_0028_sync 2804 r
+2011_09_26/2011_09_26_drive_0104_sync 25 l
+2011_09_26/2011_09_26_drive_0087_sync 318 r
+2011_10_03/2011_10_03_drive_0034_sync 1878 r
+2011_09_26/2011_09_26_drive_0070_sync 157 l
+2011_10_03/2011_10_03_drive_0042_sync 695 r
+2011_09_30/2011_09_30_drive_0028_sync 4385 l
+2011_09_30/2011_09_30_drive_0028_sync 2890 r
+2011_10_03/2011_10_03_drive_0034_sync 2720 l
+2011_10_03/2011_10_03_drive_0034_sync 3171 r
+2011_09_30/2011_09_30_drive_0028_sync 3044 l
+2011_09_26/2011_09_26_drive_0095_sync 39 l
+2011_09_26/2011_09_26_drive_0035_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 1343 l
+2011_09_26/2011_09_26_drive_0087_sync 324 r
+2011_09_30/2011_09_30_drive_0020_sync 831 l
+2011_09_30/2011_09_30_drive_0034_sync 1197 r
+2011_09_30/2011_09_30_drive_0028_sync 1104 r
+2011_09_26/2011_09_26_drive_0061_sync 654 l
+2011_09_30/2011_09_30_drive_0028_sync 1869 l
+2011_09_30/2011_09_30_drive_0028_sync 1197 r
+2011_09_26/2011_09_26_drive_0051_sync 297 r
+2011_09_30/2011_09_30_drive_0028_sync 1805 l
+2011_10_03/2011_10_03_drive_0034_sync 416 l
+2011_09_30/2011_09_30_drive_0028_sync 2658 l
+2011_09_26/2011_09_26_drive_0061_sync 81 l
+2011_10_03/2011_10_03_drive_0034_sync 2465 l
+2011_10_03/2011_10_03_drive_0042_sync 742 r
+2011_09_26/2011_09_26_drive_0017_sync 53 l
+2011_09_26/2011_09_26_drive_0104_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 3493 r
+2011_09_30/2011_09_30_drive_0028_sync 290 r
+2011_09_30/2011_09_30_drive_0028_sync 1284 r
+2011_09_26/2011_09_26_drive_0022_sync 397 l
+2011_09_30/2011_09_30_drive_0033_sync 205 l
+2011_09_30/2011_09_30_drive_0033_sync 682 r
+2011_09_30/2011_09_30_drive_0020_sync 706 r
+2011_09_30/2011_09_30_drive_0028_sync 644 l
+2011_10_03/2011_10_03_drive_0034_sync 2006 r
+2011_09_30/2011_09_30_drive_0028_sync 11 r
+2011_09_26/2011_09_26_drive_0087_sync 81 r
+2011_09_29/2011_09_29_drive_0004_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 832 l
+2011_09_30/2011_09_30_drive_0033_sync 651 r
+2011_10_03/2011_10_03_drive_0042_sync 356 r
+2011_09_26/2011_09_26_drive_0070_sync 18 r
+2011_09_30/2011_09_30_drive_0034_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 3029 l
+2011_09_26/2011_09_26_drive_0022_sync 188 r
+2011_09_26/2011_09_26_drive_0028_sync 317 r
+2011_09_26/2011_09_26_drive_0061_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 304 l
+2011_09_30/2011_09_30_drive_0028_sync 141 l
+2011_09_30/2011_09_30_drive_0020_sync 670 l
+2011_09_26/2011_09_26_drive_0018_sync 86 r
+2011_09_26/2011_09_26_drive_0051_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 913 r
+2011_09_26/2011_09_26_drive_0039_sync 383 l
+2011_09_30/2011_09_30_drive_0020_sync 1052 l
+2011_09_30/2011_09_30_drive_0028_sync 1668 l
+2011_10_03/2011_10_03_drive_0034_sync 1957 r
+2011_10_03/2011_10_03_drive_0042_sync 387 l
+2011_10_03/2011_10_03_drive_0034_sync 3550 r
+2011_09_30/2011_09_30_drive_0020_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 3969 l
+2011_09_30/2011_09_30_drive_0033_sync 91 r
+2011_09_30/2011_09_30_drive_0028_sync 4572 r
+2011_09_30/2011_09_30_drive_0028_sync 2483 l
+2011_09_26/2011_09_26_drive_0039_sync 369 r
+2011_09_30/2011_09_30_drive_0033_sync 512 l
+2011_09_30/2011_09_30_drive_0028_sync 4031 l
+2011_09_30/2011_09_30_drive_0028_sync 3642 l
+2011_09_30/2011_09_30_drive_0028_sync 1175 r
+2011_09_30/2011_09_30_drive_0033_sync 480 r
+2011_09_26/2011_09_26_drive_0017_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 1008 l
+2011_10_03/2011_10_03_drive_0034_sync 2138 l
+2011_09_26/2011_09_26_drive_0039_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 4261 l
+2011_09_30/2011_09_30_drive_0020_sync 247 l
+2011_10_03/2011_10_03_drive_0042_sync 55 l
+2011_09_26/2011_09_26_drive_0039_sync 307 l
+2011_10_03/2011_10_03_drive_0042_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 375 l
+2011_09_26/2011_09_26_drive_0019_sync 402 r
+2011_09_30/2011_09_30_drive_0020_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 2800 l
+2011_09_30/2011_09_30_drive_0028_sync 3140 r
+2011_09_26/2011_09_26_drive_0057_sync 258 r
+2011_10_03/2011_10_03_drive_0034_sync 2198 r
+2011_10_03/2011_10_03_drive_0034_sync 662 r
+2011_10_03/2011_10_03_drive_0034_sync 193 l
+2011_09_26/2011_09_26_drive_0087_sync 532 r
+2011_09_30/2011_09_30_drive_0033_sync 344 l
+2011_09_30/2011_09_30_drive_0028_sync 1957 l
+2011_09_30/2011_09_30_drive_0028_sync 3890 r
+2011_09_28/2011_09_28_drive_0001_sync 33 r
+2011_09_28/2011_09_28_drive_0001_sync 105 r
+2011_09_26/2011_09_26_drive_0091_sync 126 r
+2011_09_26/2011_09_26_drive_0018_sync 69 l
+2011_09_26/2011_09_26_drive_0022_sync 236 l
+2011_09_26/2011_09_26_drive_0070_sync 97 l
+2011_09_30/2011_09_30_drive_0034_sync 976 r
+2011_09_26/2011_09_26_drive_0039_sync 374 l
+2011_09_30/2011_09_30_drive_0028_sync 2720 r
+2011_09_30/2011_09_30_drive_0028_sync 790 l
+2011_09_26/2011_09_26_drive_0035_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 4220 l
+2011_09_30/2011_09_30_drive_0028_sync 1412 r
+2011_09_26/2011_09_26_drive_0104_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 4930 r
+2011_09_26/2011_09_26_drive_0035_sync 115 r
+2011_09_28/2011_09_28_drive_0001_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 1722 l
+2011_09_30/2011_09_30_drive_0020_sync 641 l
+2011_10_03/2011_10_03_drive_0034_sync 720 l
+2011_09_26/2011_09_26_drive_0051_sync 415 l
+2011_09_30/2011_09_30_drive_0034_sync 401 l
+2011_10_03/2011_10_03_drive_0034_sync 867 l
+2011_09_30/2011_09_30_drive_0033_sync 973 r
+2011_10_03/2011_10_03_drive_0034_sync 198 r
+2011_09_26/2011_09_26_drive_0061_sync 395 r
+2011_09_30/2011_09_30_drive_0028_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 2377 l
+2011_09_26/2011_09_26_drive_0039_sync 182 r
+2011_09_30/2011_09_30_drive_0034_sync 466 r
+2011_10_03/2011_10_03_drive_0034_sync 1797 r
+2011_09_30/2011_09_30_drive_0033_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 2758 r
+2011_09_30/2011_09_30_drive_0028_sync 2916 r
+2011_10_03/2011_10_03_drive_0034_sync 3256 r
+2011_09_29/2011_09_29_drive_0004_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 1533 l
+2011_09_26/2011_09_26_drive_0061_sync 667 r
+2011_09_30/2011_09_30_drive_0033_sync 656 l
+2011_09_26/2011_09_26_drive_0087_sync 323 r
+2011_10_03/2011_10_03_drive_0034_sync 3842 r
+2011_10_03/2011_10_03_drive_0034_sync 4164 l
+2011_09_26/2011_09_26_drive_0022_sync 475 r
+2011_09_30/2011_09_30_drive_0033_sync 134 l
+2011_09_30/2011_09_30_drive_0033_sync 522 r
+2011_09_26/2011_09_26_drive_0019_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 3577 r
+2011_09_30/2011_09_30_drive_0028_sync 2460 l
+2011_09_26/2011_09_26_drive_0032_sync 322 r
+2011_09_26/2011_09_26_drive_0061_sync 452 l
+2011_09_26/2011_09_26_drive_0039_sync 40 l
+2011_09_26/2011_09_26_drive_0032_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 1429 l
+2011_09_30/2011_09_30_drive_0028_sync 1996 r
+2011_09_26/2011_09_26_drive_0104_sync 85 l
+2011_09_30/2011_09_30_drive_0028_sync 4349 l
+2011_10_03/2011_10_03_drive_0034_sync 2942 l
+2011_09_30/2011_09_30_drive_0028_sync 2774 l
+2011_09_26/2011_09_26_drive_0061_sync 239 l
+2011_09_30/2011_09_30_drive_0034_sync 1210 r
+2011_10_03/2011_10_03_drive_0034_sync 2594 r
+2011_09_26/2011_09_26_drive_0028_sync 236 r
+2011_09_26/2011_09_26_drive_0018_sync 93 r
+2011_09_26/2011_09_26_drive_0051_sync 7 r
+2011_09_26/2011_09_26_drive_0005_sync 125 l
+2011_09_26/2011_09_26_drive_0011_sync 132 l
+2011_09_30/2011_09_30_drive_0028_sync 481 r
+2011_09_26/2011_09_26_drive_0057_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 2622 r
+2011_09_26/2011_09_26_drive_0014_sync 16 l
+2011_09_26/2011_09_26_drive_0001_sync 78 r
+2011_09_26/2011_09_26_drive_0022_sync 736 l
+2011_09_26/2011_09_26_drive_0079_sync 61 r
+2011_09_30/2011_09_30_drive_0028_sync 3998 r
+2011_09_30/2011_09_30_drive_0028_sync 2215 l
+2011_09_30/2011_09_30_drive_0033_sync 1552 r
+2011_10_03/2011_10_03_drive_0034_sync 1958 l
+2011_09_26/2011_09_26_drive_0104_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 1393 l
+2011_09_26/2011_09_26_drive_0087_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 2596 l
+2011_09_26/2011_09_26_drive_0022_sync 131 r
+2011_09_30/2011_09_30_drive_0020_sync 612 r
+2011_09_26/2011_09_26_drive_0015_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 4292 r
+2011_10_03/2011_10_03_drive_0034_sync 3453 l
+2011_09_30/2011_09_30_drive_0028_sync 2598 l
+2011_09_26/2011_09_26_drive_0035_sync 18 l
+2011_09_30/2011_09_30_drive_0033_sync 796 r
+2011_09_26/2011_09_26_drive_0087_sync 181 l
+2011_09_26/2011_09_26_drive_0095_sync 20 r
+2011_09_26/2011_09_26_drive_0022_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 1362 l
+2011_09_30/2011_09_30_drive_0034_sync 208 l
+2011_10_03/2011_10_03_drive_0034_sync 1260 l
+2011_09_30/2011_09_30_drive_0020_sync 300 r
+2011_09_29/2011_09_29_drive_0004_sync 275 r
+2011_10_03/2011_10_03_drive_0034_sync 381 r
+2011_10_03/2011_10_03_drive_0034_sync 1571 l
+2011_09_26/2011_09_26_drive_0035_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 1433 l
+2011_10_03/2011_10_03_drive_0034_sync 2481 l
+2011_09_26/2011_09_26_drive_0014_sync 176 l
+2011_09_30/2011_09_30_drive_0028_sync 2462 r
+2011_10_03/2011_10_03_drive_0034_sync 1427 r
+2011_09_30/2011_09_30_drive_0028_sync 956 l
+2011_09_29/2011_09_29_drive_0004_sync 277 l
+2011_10_03/2011_10_03_drive_0034_sync 4205 l
+2011_09_30/2011_09_30_drive_0028_sync 3868 r
+2011_09_26/2011_09_26_drive_0095_sync 135 r
+2011_09_30/2011_09_30_drive_0020_sync 368 l
+2011_09_26/2011_09_26_drive_0019_sync 366 l
+2011_09_26/2011_09_26_drive_0070_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 2331 r
+2011_09_30/2011_09_30_drive_0028_sync 4906 r
+2011_09_30/2011_09_30_drive_0033_sync 1501 l
+2011_09_26/2011_09_26_drive_0061_sync 447 l
+2011_10_03/2011_10_03_drive_0042_sync 932 r
+2011_09_30/2011_09_30_drive_0028_sync 2201 l
+2011_09_26/2011_09_26_drive_0051_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 645 l
+2011_09_26/2011_09_26_drive_0022_sync 142 l
+2011_09_26/2011_09_26_drive_0014_sync 304 l
+2011_10_03/2011_10_03_drive_0034_sync 3449 r
+2011_09_26/2011_09_26_drive_0087_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 1647 l
+2011_09_26/2011_09_26_drive_0087_sync 653 r
+2011_09_30/2011_09_30_drive_0028_sync 4218 r
+2011_09_30/2011_09_30_drive_0028_sync 773 r
+2011_09_30/2011_09_30_drive_0028_sync 5137 r
+2011_09_30/2011_09_30_drive_0034_sync 1017 r
+2011_09_30/2011_09_30_drive_0028_sync 888 l
+2011_09_30/2011_09_30_drive_0028_sync 4527 r
+2011_09_26/2011_09_26_drive_0060_sync 70 l
+2011_09_30/2011_09_30_drive_0034_sync 931 r
+2011_09_30/2011_09_30_drive_0028_sync 3724 r
+2011_09_30/2011_09_30_drive_0028_sync 4888 l
+2011_09_30/2011_09_30_drive_0034_sync 1049 l
+2011_09_30/2011_09_30_drive_0020_sync 505 l
+2011_10_03/2011_10_03_drive_0034_sync 3373 l
+2011_10_03/2011_10_03_drive_0034_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 2632 r
+2011_09_26/2011_09_26_drive_0039_sync 264 r
+2011_09_26/2011_09_26_drive_0018_sync 147 l
+2011_10_03/2011_10_03_drive_0034_sync 3210 l
+2011_10_03/2011_10_03_drive_0034_sync 1588 l
+2011_09_30/2011_09_30_drive_0020_sync 1007 r
+2011_09_30/2011_09_30_drive_0034_sync 484 l
+2011_09_26/2011_09_26_drive_0061_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 1784 l
+2011_09_30/2011_09_30_drive_0028_sync 4113 r
+2011_09_26/2011_09_26_drive_0091_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 4080 r
+2011_09_26/2011_09_26_drive_0035_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 3378 r
+2011_09_26/2011_09_26_drive_0022_sync 619 r
+2011_10_03/2011_10_03_drive_0034_sync 3517 r
+2011_09_30/2011_09_30_drive_0020_sync 857 l
+2011_09_26/2011_09_26_drive_0019_sync 126 l
+2011_09_30/2011_09_30_drive_0028_sync 4402 l
+2011_10_03/2011_10_03_drive_0034_sync 1433 l
+2011_09_26/2011_09_26_drive_0017_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 4038 l
+2011_09_30/2011_09_30_drive_0028_sync 4742 r
+2011_09_26/2011_09_26_drive_0095_sync 117 r
+2011_09_26/2011_09_26_drive_0091_sync 283 r
+2011_09_30/2011_09_30_drive_0028_sync 3757 r
+2011_09_29/2011_09_29_drive_0004_sync 167 r
+2011_10_03/2011_10_03_drive_0042_sync 1166 l
+2011_09_26/2011_09_26_drive_0087_sync 395 r
+2011_09_26/2011_09_26_drive_0070_sync 81 l
+2011_09_30/2011_09_30_drive_0033_sync 1015 r
+2011_10_03/2011_10_03_drive_0042_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 1045 r
+2011_09_26/2011_09_26_drive_0039_sync 351 l
+2011_09_26/2011_09_26_drive_0061_sync 620 l
+2011_09_26/2011_09_26_drive_0014_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 2713 l
+2011_09_26/2011_09_26_drive_0061_sync 644 r
+2011_09_30/2011_09_30_drive_0028_sync 3967 r
+2011_09_26/2011_09_26_drive_0091_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 797 r
+2011_10_03/2011_10_03_drive_0042_sync 305 l
+2011_09_28/2011_09_28_drive_0001_sync 50 r
+2011_09_30/2011_09_30_drive_0034_sync 388 r
+2011_09_30/2011_09_30_drive_0028_sync 158 l
+2011_10_03/2011_10_03_drive_0042_sync 443 l
+2011_10_03/2011_10_03_drive_0034_sync 1430 r
+2011_10_03/2011_10_03_drive_0034_sync 3430 l
+2011_10_03/2011_10_03_drive_0034_sync 2086 l
+2011_10_03/2011_10_03_drive_0034_sync 676 l
+2011_09_26/2011_09_26_drive_0015_sync 159 r
+2011_10_03/2011_10_03_drive_0034_sync 3098 r
+2011_10_03/2011_10_03_drive_0034_sync 4010 l
+2011_09_26/2011_09_26_drive_0087_sync 711 l
+2011_09_30/2011_09_30_drive_0033_sync 1378 l
+2011_09_26/2011_09_26_drive_0051_sync 350 l
+2011_09_30/2011_09_30_drive_0028_sync 1556 l
+2011_10_03/2011_10_03_drive_0034_sync 2263 r
+2011_10_03/2011_10_03_drive_0034_sync 3034 l
+2011_09_30/2011_09_30_drive_0028_sync 2496 l
+2011_10_03/2011_10_03_drive_0034_sync 961 l
+2011_09_30/2011_09_30_drive_0028_sync 3932 l
+2011_09_26/2011_09_26_drive_0061_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 205 r
+2011_09_26/2011_09_26_drive_0060_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 3490 r
+2011_09_30/2011_09_30_drive_0020_sync 996 l
+2011_09_26/2011_09_26_drive_0061_sync 548 l
+2011_10_03/2011_10_03_drive_0034_sync 3684 l
+2011_09_26/2011_09_26_drive_0019_sync 413 l
+2011_09_26/2011_09_26_drive_0035_sync 128 r
+2011_09_26/2011_09_26_drive_0087_sync 715 l
+2011_09_30/2011_09_30_drive_0033_sync 1410 r
+2011_09_26/2011_09_26_drive_0051_sync 390 r
+2011_09_30/2011_09_30_drive_0028_sync 535 r
+2011_09_30/2011_09_30_drive_0034_sync 718 l
+2011_10_03/2011_10_03_drive_0034_sync 1243 l
+2011_09_26/2011_09_26_drive_0104_sync 115 r
+2011_09_30/2011_09_30_drive_0033_sync 481 r
+2011_09_26/2011_09_26_drive_0091_sync 106 r
+2011_09_26/2011_09_26_drive_0005_sync 63 l
+2011_09_30/2011_09_30_drive_0034_sync 155 r
+2011_09_26/2011_09_26_drive_0019_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 3616 l
+2011_09_26/2011_09_26_drive_0087_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 1661 r
+2011_09_26/2011_09_26_drive_0104_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 2217 l
+2011_10_03/2011_10_03_drive_0034_sync 3470 l
+2011_09_30/2011_09_30_drive_0028_sync 2657 r
+2011_09_30/2011_09_30_drive_0028_sync 1680 l
+2011_09_30/2011_09_30_drive_0020_sync 497 r
+2011_09_26/2011_09_26_drive_0087_sync 240 l
+2011_09_30/2011_09_30_drive_0028_sync 4673 l
+2011_09_30/2011_09_30_drive_0028_sync 663 r
+2011_09_26/2011_09_26_drive_0019_sync 464 r
+2011_09_26/2011_09_26_drive_0032_sync 171 l
+2011_09_26/2011_09_26_drive_0022_sync 95 r
+2011_09_26/2011_09_26_drive_0061_sync 325 l
+2011_09_30/2011_09_30_drive_0033_sync 621 r
+2011_09_30/2011_09_30_drive_0020_sync 1020 l
+2011_10_03/2011_10_03_drive_0034_sync 837 r
+2011_09_30/2011_09_30_drive_0020_sync 588 l
+2011_10_03/2011_10_03_drive_0034_sync 1051 r
+2011_10_03/2011_10_03_drive_0034_sync 163 r
+2011_09_26/2011_09_26_drive_0032_sync 105 r
+2011_09_26/2011_09_26_drive_0087_sync 625 r
+2011_09_30/2011_09_30_drive_0028_sync 997 r
+2011_10_03/2011_10_03_drive_0034_sync 3850 l
+2011_10_03/2011_10_03_drive_0034_sync 2434 l
+2011_09_30/2011_09_30_drive_0028_sync 1829 l
+2011_09_30/2011_09_30_drive_0028_sync 2858 r
+2011_09_30/2011_09_30_drive_0034_sync 296 l
+2011_09_30/2011_09_30_drive_0033_sync 872 l
+2011_09_30/2011_09_30_drive_0028_sync 1760 r
+2011_10_03/2011_10_03_drive_0034_sync 614 r
+2011_10_03/2011_10_03_drive_0042_sync 206 r
+2011_09_26/2011_09_26_drive_0087_sync 78 r
+2011_09_26/2011_09_26_drive_0019_sync 53 r
+2011_09_26/2011_09_26_drive_0061_sync 310 l
+2011_09_30/2011_09_30_drive_0028_sync 403 r
+2011_09_28/2011_09_28_drive_0001_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 298 r
+2011_09_30/2011_09_30_drive_0020_sync 269 l
+2011_09_26/2011_09_26_drive_0061_sync 316 r
+2011_09_26/2011_09_26_drive_0022_sync 439 l
+2011_09_30/2011_09_30_drive_0034_sync 831 l
+2011_09_26/2011_09_26_drive_0091_sync 60 r
+2011_09_26/2011_09_26_drive_0091_sync 203 l
+2011_09_30/2011_09_30_drive_0034_sync 810 r
+2011_09_30/2011_09_30_drive_0020_sync 521 l
+2011_09_26/2011_09_26_drive_0014_sync 60 l
+2011_09_26/2011_09_26_drive_0035_sync 103 r
+2011_09_30/2011_09_30_drive_0034_sync 403 r
+2011_09_30/2011_09_30_drive_0020_sync 360 r
+2011_10_03/2011_10_03_drive_0042_sync 891 l
+2011_09_30/2011_09_30_drive_0033_sync 73 l
+2011_09_26/2011_09_26_drive_0079_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 4055 r
+2011_09_30/2011_09_30_drive_0034_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 4418 l
+2011_10_03/2011_10_03_drive_0034_sync 202 l
+2011_09_30/2011_09_30_drive_0028_sync 4818 r
+2011_09_26/2011_09_26_drive_0028_sync 223 r
+2011_10_03/2011_10_03_drive_0034_sync 3320 l
+2011_09_26/2011_09_26_drive_0019_sync 398 l
+2011_10_03/2011_10_03_drive_0034_sync 2139 l
+2011_09_26/2011_09_26_drive_0051_sync 419 r
+2011_10_03/2011_10_03_drive_0034_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 3936 l
+2011_10_03/2011_10_03_drive_0034_sync 4178 l
+2011_09_26/2011_09_26_drive_0057_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 4315 r
+2011_10_03/2011_10_03_drive_0034_sync 344 r
+2011_10_03/2011_10_03_drive_0034_sync 3033 r
+2011_10_03/2011_10_03_drive_0034_sync 2045 r
+2011_09_30/2011_09_30_drive_0034_sync 246 l
+2011_09_30/2011_09_30_drive_0028_sync 642 l
+2011_10_03/2011_10_03_drive_0034_sync 2332 r
+2011_09_30/2011_09_30_drive_0028_sync 2011 l
+2011_09_30/2011_09_30_drive_0028_sync 491 l
+2011_09_26/2011_09_26_drive_0070_sync 132 r
+2011_09_30/2011_09_30_drive_0028_sync 1040 l
+2011_10_03/2011_10_03_drive_0034_sync 2276 r
+2011_09_26/2011_09_26_drive_0057_sync 356 r
+2011_09_26/2011_09_26_drive_0091_sync 56 r
+2011_09_26/2011_09_26_drive_0061_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 4672 r
+2011_10_03/2011_10_03_drive_0034_sync 3166 l
+2011_09_30/2011_09_30_drive_0028_sync 4268 l
+2011_09_30/2011_09_30_drive_0033_sync 1570 r
+2011_09_26/2011_09_26_drive_0104_sync 102 l
+2011_09_26/2011_09_26_drive_0039_sync 276 r
+2011_09_26/2011_09_26_drive_0011_sync 75 l
+2011_09_26/2011_09_26_drive_0051_sync 191 l
+2011_10_03/2011_10_03_drive_0034_sync 3894 r
+2011_10_03/2011_10_03_drive_0034_sync 600 r
+2011_09_29/2011_09_29_drive_0026_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 2411 l
+2011_09_26/2011_09_26_drive_0061_sync 609 r
+2011_10_03/2011_10_03_drive_0034_sync 624 r
+2011_10_03/2011_10_03_drive_0034_sync 3688 r
+2011_10_03/2011_10_03_drive_0034_sync 4438 r
+2011_09_30/2011_09_30_drive_0034_sync 30 l
+2011_09_26/2011_09_26_drive_0035_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 760 l
+2011_09_26/2011_09_26_drive_0061_sync 164 r
+2011_09_30/2011_09_30_drive_0028_sync 33 r
+2011_09_26/2011_09_26_drive_0061_sync 344 r
+2011_09_30/2011_09_30_drive_0028_sync 2093 r
+2011_09_26/2011_09_26_drive_0061_sync 621 r
+2011_09_26/2011_09_26_drive_0017_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 420 r
+2011_09_30/2011_09_30_drive_0028_sync 2062 r
+2011_09_26/2011_09_26_drive_0032_sync 194 r
+2011_09_28/2011_09_28_drive_0001_sync 90 r
+2011_09_30/2011_09_30_drive_0020_sync 853 r
+2011_09_30/2011_09_30_drive_0028_sync 1385 l
+2011_10_03/2011_10_03_drive_0034_sync 2022 r
+2011_09_30/2011_09_30_drive_0028_sync 3414 l
+2011_09_30/2011_09_30_drive_0028_sync 1775 r
+2011_09_30/2011_09_30_drive_0033_sync 576 l
+2011_09_30/2011_09_30_drive_0034_sync 451 r
+2011_09_30/2011_09_30_drive_0034_sync 374 r
+2011_09_30/2011_09_30_drive_0028_sync 4079 r
+2011_09_30/2011_09_30_drive_0020_sync 260 r
+2011_09_30/2011_09_30_drive_0033_sync 675 r
+2011_10_03/2011_10_03_drive_0034_sync 3634 l
+2011_10_03/2011_10_03_drive_0034_sync 2772 r
+2011_10_03/2011_10_03_drive_0034_sync 4303 r
+2011_09_30/2011_09_30_drive_0033_sync 289 r
+2011_09_26/2011_09_26_drive_0061_sync 651 l
+2011_09_30/2011_09_30_drive_0020_sync 760 l
+2011_09_30/2011_09_30_drive_0028_sync 5137 l
+2011_09_30/2011_09_30_drive_0028_sync 2641 l
+2011_09_30/2011_09_30_drive_0028_sync 1908 r
+2011_10_03/2011_10_03_drive_0042_sync 523 r
+2011_09_30/2011_09_30_drive_0033_sync 1315 l
+2011_09_30/2011_09_30_drive_0020_sync 671 l
+2011_09_26/2011_09_26_drive_0014_sync 167 r
+2011_10_03/2011_10_03_drive_0034_sync 572 l
+2011_10_03/2011_10_03_drive_0034_sync 2048 r
+2011_10_03/2011_10_03_drive_0034_sync 3698 l
+2011_09_26/2011_09_26_drive_0095_sync 105 r
+2011_09_30/2011_09_30_drive_0028_sync 2978 l
+2011_09_30/2011_09_30_drive_0028_sync 1167 l
+2011_09_30/2011_09_30_drive_0034_sync 196 r
+2011_09_30/2011_09_30_drive_0028_sync 3889 r
+2011_09_26/2011_09_26_drive_0061_sync 472 r
+2011_09_26/2011_09_26_drive_0104_sync 187 r
+2011_10_03/2011_10_03_drive_0042_sync 1084 r
+2011_10_03/2011_10_03_drive_0034_sync 2210 r
+2011_10_03/2011_10_03_drive_0034_sync 3336 r
+2011_09_26/2011_09_26_drive_0104_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 4160 r
+2011_10_03/2011_10_03_drive_0034_sync 2517 l
+2011_09_30/2011_09_30_drive_0028_sync 1635 r
+2011_09_30/2011_09_30_drive_0034_sync 177 r
+2011_09_30/2011_09_30_drive_0020_sync 923 l
+2011_09_26/2011_09_26_drive_0070_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 487 r
+2011_10_03/2011_10_03_drive_0042_sync 510 r
+2011_09_30/2011_09_30_drive_0028_sync 4704 l
+2011_09_30/2011_09_30_drive_0020_sync 409 l
+2011_09_30/2011_09_30_drive_0034_sync 973 r
+2011_09_30/2011_09_30_drive_0028_sync 1061 l
+2011_09_26/2011_09_26_drive_0028_sync 64 r
+2011_09_30/2011_09_30_drive_0033_sync 1083 l
+2011_10_03/2011_10_03_drive_0034_sync 2295 l
+2011_09_30/2011_09_30_drive_0028_sync 300 l
+2011_09_26/2011_09_26_drive_0022_sync 720 l
+2011_09_26/2011_09_26_drive_0005_sync 53 r
+2011_09_26/2011_09_26_drive_0061_sync 517 l
+2011_10_03/2011_10_03_drive_0042_sync 863 l
+2011_09_26/2011_09_26_drive_0070_sync 360 l
+2011_09_30/2011_09_30_drive_0020_sync 862 r
+2011_09_30/2011_09_30_drive_0028_sync 4428 l
+2011_09_26/2011_09_26_drive_0091_sync 290 l
+2011_09_30/2011_09_30_drive_0033_sync 1506 r
+2011_09_30/2011_09_30_drive_0034_sync 581 l
+2011_09_26/2011_09_26_drive_0035_sync 35 r
+2011_10_03/2011_10_03_drive_0042_sync 1132 r
+2011_09_30/2011_09_30_drive_0028_sync 1350 l
+2011_09_26/2011_09_26_drive_0051_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 4361 l
+2011_10_03/2011_10_03_drive_0034_sync 465 l
+2011_09_26/2011_09_26_drive_0057_sync 77 l
+2011_10_03/2011_10_03_drive_0034_sync 1783 r
+2011_09_30/2011_09_30_drive_0028_sync 2247 l
+2011_10_03/2011_10_03_drive_0042_sync 177 r
+2011_09_30/2011_09_30_drive_0028_sync 4837 r
+2011_10_03/2011_10_03_drive_0034_sync 4198 r
+2011_09_30/2011_09_30_drive_0028_sync 4729 l
+2011_09_26/2011_09_26_drive_0039_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 1868 l
+2011_10_03/2011_10_03_drive_0042_sync 721 r
+2011_10_03/2011_10_03_drive_0034_sync 4563 r
+2011_09_29/2011_09_29_drive_0004_sync 298 l
+2011_09_30/2011_09_30_drive_0028_sync 3032 l
+2011_09_26/2011_09_26_drive_0001_sync 99 r
+2011_10_03/2011_10_03_drive_0034_sync 2959 l
+2011_09_26/2011_09_26_drive_0032_sync 280 r
+2011_09_30/2011_09_30_drive_0034_sync 384 l
+2011_09_26/2011_09_26_drive_0051_sync 319 r
+2011_09_29/2011_09_29_drive_0004_sync 293 l
+2011_09_26/2011_09_26_drive_0091_sync 138 r
+2011_09_30/2011_09_30_drive_0028_sync 4569 r
+2011_09_29/2011_09_29_drive_0004_sync 21 l
+2011_09_26/2011_09_26_drive_0061_sync 654 r
+2011_09_30/2011_09_30_drive_0034_sync 482 l
+2011_09_30/2011_09_30_drive_0020_sync 644 l
+2011_09_26/2011_09_26_drive_0087_sync 662 l
+2011_09_26/2011_09_26_drive_0019_sync 402 l
+2011_09_26/2011_09_26_drive_0022_sync 255 r
+2011_09_30/2011_09_30_drive_0034_sync 1031 r
+2011_09_26/2011_09_26_drive_0014_sync 148 r
+2011_09_26/2011_09_26_drive_0051_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 3563 l
+2011_09_30/2011_09_30_drive_0028_sync 2578 l
+2011_10_03/2011_10_03_drive_0034_sync 976 r
+2011_10_03/2011_10_03_drive_0042_sync 425 r
+2011_09_30/2011_09_30_drive_0033_sync 1305 r
+2011_09_30/2011_09_30_drive_0028_sync 3736 r
+2011_10_03/2011_10_03_drive_0034_sync 2102 r
+2011_09_30/2011_09_30_drive_0033_sync 22 r
+2011_09_30/2011_09_30_drive_0034_sync 246 r
+2011_09_26/2011_09_26_drive_0061_sync 519 r
+2011_10_03/2011_10_03_drive_0034_sync 2182 l
+2011_09_26/2011_09_26_drive_0061_sync 472 l
+2011_10_03/2011_10_03_drive_0034_sync 4309 r
+2011_09_30/2011_09_30_drive_0020_sync 556 r
+2011_10_03/2011_10_03_drive_0034_sync 1988 l
+2011_09_26/2011_09_26_drive_0061_sync 176 r
+2011_09_30/2011_09_30_drive_0033_sync 1373 r
+2011_09_26/2011_09_26_drive_0091_sync 35 r
+2011_09_30/2011_09_30_drive_0033_sync 1271 l
+2011_09_26/2011_09_26_drive_0061_sync 629 l
+2011_09_30/2011_09_30_drive_0034_sync 390 l
+2011_09_26/2011_09_26_drive_0091_sync 110 r
+2011_09_30/2011_09_30_drive_0028_sync 1705 l
+2011_09_26/2011_09_26_drive_0061_sync 480 l
+2011_09_26/2011_09_26_drive_0018_sync 92 r
+2011_09_30/2011_09_30_drive_0034_sync 412 r
+2011_10_03/2011_10_03_drive_0042_sync 121 l
+2011_09_29/2011_09_29_drive_0004_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 815 r
+2011_09_30/2011_09_30_drive_0033_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 787 l
+2011_09_30/2011_09_30_drive_0028_sync 3704 r
+2011_09_26/2011_09_26_drive_0022_sync 785 r
+2011_09_26/2011_09_26_drive_0035_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 4154 l
+2011_09_29/2011_09_29_drive_0004_sync 51 r
+2011_09_30/2011_09_30_drive_0028_sync 571 r
+2011_09_26/2011_09_26_drive_0022_sync 677 r
+2011_10_03/2011_10_03_drive_0034_sync 2823 r
+2011_09_30/2011_09_30_drive_0034_sync 281 r
+2011_09_26/2011_09_26_drive_0011_sync 179 r
+2011_09_30/2011_09_30_drive_0028_sync 818 l
+2011_09_30/2011_09_30_drive_0028_sync 2894 l
+2011_09_26/2011_09_26_drive_0028_sync 257 r
+2011_09_30/2011_09_30_drive_0020_sync 607 l
+2011_09_30/2011_09_30_drive_0028_sync 793 l
+2011_09_30/2011_09_30_drive_0028_sync 145 r
+2011_09_30/2011_09_30_drive_0028_sync 4241 l
+2011_09_30/2011_09_30_drive_0028_sync 3632 l
+2011_09_30/2011_09_30_drive_0034_sync 96 r
+2011_10_03/2011_10_03_drive_0042_sync 481 l
+2011_10_03/2011_10_03_drive_0034_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 2154 r
+2011_10_03/2011_10_03_drive_0034_sync 2588 l
+2011_09_26/2011_09_26_drive_0018_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 3505 r
+2011_09_26/2011_09_26_drive_0087_sync 59 r
+2011_09_26/2011_09_26_drive_0022_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 696 l
+2011_09_26/2011_09_26_drive_0051_sync 365 l
+2011_09_26/2011_09_26_drive_0015_sync 183 r
+2011_09_26/2011_09_26_drive_0032_sync 386 l
+2011_09_30/2011_09_30_drive_0028_sync 3522 r
+2011_09_26/2011_09_26_drive_0061_sync 611 r
+2011_09_30/2011_09_30_drive_0028_sync 216 l
+2011_09_26/2011_09_26_drive_0022_sync 419 l
+2011_10_03/2011_10_03_drive_0034_sync 2720 r
+2011_09_30/2011_09_30_drive_0033_sync 790 l
+2011_10_03/2011_10_03_drive_0034_sync 900 r
+2011_09_26/2011_09_26_drive_0095_sync 143 r
+2011_09_26/2011_09_26_drive_0022_sync 631 r
+2011_09_26/2011_09_26_drive_0015_sync 12 r
+2011_09_30/2011_09_30_drive_0028_sync 865 l
+2011_10_03/2011_10_03_drive_0034_sync 3511 r
+2011_10_03/2011_10_03_drive_0034_sync 2370 l
+2011_09_30/2011_09_30_drive_0028_sync 4594 l
+2011_09_26/2011_09_26_drive_0057_sync 66 r
+2011_10_03/2011_10_03_drive_0042_sync 670 l
+2011_09_26/2011_09_26_drive_0019_sync 165 r
+2011_09_26/2011_09_26_drive_0028_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 5069 r
+2011_09_26/2011_09_26_drive_0019_sync 341 l
+2011_10_03/2011_10_03_drive_0042_sync 74 r
+2011_09_30/2011_09_30_drive_0028_sync 887 l
+2011_09_26/2011_09_26_drive_0018_sync 240 r
+2011_09_26/2011_09_26_drive_0014_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 3489 r
+2011_09_26/2011_09_26_drive_0022_sync 75 l
+2011_09_26/2011_09_26_drive_0051_sync 63 l
+2011_09_26/2011_09_26_drive_0091_sync 45 l
+2011_09_26/2011_09_26_drive_0017_sync 71 l
+2011_09_30/2011_09_30_drive_0034_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 3164 r
+2011_09_30/2011_09_30_drive_0020_sync 853 l
+2011_09_30/2011_09_30_drive_0028_sync 875 l
+2011_09_30/2011_09_30_drive_0028_sync 3771 l
+2011_09_26/2011_09_26_drive_0035_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 2656 r
+2011_09_30/2011_09_30_drive_0034_sync 635 r
+2011_09_26/2011_09_26_drive_0057_sync 22 r
+2011_09_30/2011_09_30_drive_0028_sync 600 l
+2011_09_30/2011_09_30_drive_0028_sync 4717 l
+2011_09_30/2011_09_30_drive_0028_sync 4011 l
+2011_09_26/2011_09_26_drive_0087_sync 214 l
+2011_09_30/2011_09_30_drive_0034_sync 869 l
+2011_09_26/2011_09_26_drive_0061_sync 63 l
+2011_10_03/2011_10_03_drive_0034_sync 99 r
+2011_09_26/2011_09_26_drive_0022_sync 158 l
+2011_09_30/2011_09_30_drive_0028_sync 3126 r
+2011_09_30/2011_09_30_drive_0033_sync 659 r
+2011_09_26/2011_09_26_drive_0022_sync 70 r
+2011_09_26/2011_09_26_drive_0032_sync 116 l
+2011_09_26/2011_09_26_drive_0095_sync 6 l
+2011_09_30/2011_09_30_drive_0020_sync 345 l
+2011_09_30/2011_09_30_drive_0034_sync 775 l
+2011_10_03/2011_10_03_drive_0042_sync 265 l
+2011_09_30/2011_09_30_drive_0020_sync 967 l
+2011_09_30/2011_09_30_drive_0033_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 3370 r
+2011_09_26/2011_09_26_drive_0051_sync 317 r
+2011_09_26/2011_09_26_drive_0087_sync 256 l
+2011_09_26/2011_09_26_drive_0019_sync 289 r
+2011_09_29/2011_09_29_drive_0026_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 4351 l
+2011_10_03/2011_10_03_drive_0034_sync 2344 r
+2011_09_30/2011_09_30_drive_0028_sync 2018 l
+2011_10_03/2011_10_03_drive_0034_sync 626 r
+2011_09_30/2011_09_30_drive_0033_sync 416 r
+2011_09_30/2011_09_30_drive_0020_sync 874 r
+2011_09_26/2011_09_26_drive_0087_sync 440 l
+2011_09_30/2011_09_30_drive_0020_sync 874 l
+2011_10_03/2011_10_03_drive_0042_sync 228 r
+2011_09_26/2011_09_26_drive_0057_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 3923 l
+2011_09_30/2011_09_30_drive_0020_sync 628 l
+2011_09_26/2011_09_26_drive_0039_sync 112 r
+2011_09_30/2011_09_30_drive_0033_sync 1150 r
+2011_10_03/2011_10_03_drive_0034_sync 2303 l
+2011_10_03/2011_10_03_drive_0034_sync 1547 l
+2011_09_26/2011_09_26_drive_0039_sync 84 l
+2011_09_26/2011_09_26_drive_0087_sync 450 l
+2011_10_03/2011_10_03_drive_0034_sync 576 r
+2011_09_26/2011_09_26_drive_0028_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 2227 r
+2011_09_30/2011_09_30_drive_0028_sync 4544 r
+2011_09_26/2011_09_26_drive_0070_sync 170 l
+2011_10_03/2011_10_03_drive_0034_sync 17 l
+2011_10_03/2011_10_03_drive_0034_sync 3387 l
+2011_09_30/2011_09_30_drive_0034_sync 846 l
+2011_10_03/2011_10_03_drive_0034_sync 2663 l
+2011_09_30/2011_09_30_drive_0028_sync 2430 r
+2011_09_30/2011_09_30_drive_0028_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 2686 l
+2011_09_30/2011_09_30_drive_0028_sync 4881 l
+2011_09_30/2011_09_30_drive_0028_sync 4360 l
+2011_09_26/2011_09_26_drive_0095_sync 206 r
+2011_09_26/2011_09_26_drive_0087_sync 727 r
+2011_09_26/2011_09_26_drive_0104_sync 291 r
+2011_09_30/2011_09_30_drive_0034_sync 792 r
+2011_09_26/2011_09_26_drive_0070_sync 197 r
+2011_09_28/2011_09_28_drive_0001_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 4101 r
+2011_09_26/2011_09_26_drive_0022_sync 385 l
+2011_10_03/2011_10_03_drive_0042_sync 406 r
+2011_09_26/2011_09_26_drive_0061_sync 666 r
+2011_09_30/2011_09_30_drive_0028_sync 4965 l
+2011_10_03/2011_10_03_drive_0034_sync 4530 r
+2011_09_30/2011_09_30_drive_0028_sync 716 l
+2011_09_26/2011_09_26_drive_0070_sync 354 r
+2011_09_30/2011_09_30_drive_0028_sync 2987 r
+2011_09_30/2011_09_30_drive_0028_sync 2001 l
+2011_09_30/2011_09_30_drive_0028_sync 1378 r
+2011_09_30/2011_09_30_drive_0028_sync 3280 l
+2011_09_26/2011_09_26_drive_0104_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 2300 l
+2011_09_30/2011_09_30_drive_0028_sync 4425 l
+2011_09_26/2011_09_26_drive_0051_sync 250 r
+2011_09_26/2011_09_26_drive_0104_sync 193 l
+2011_09_30/2011_09_30_drive_0028_sync 2918 r
+2011_10_03/2011_10_03_drive_0034_sync 126 l
+2011_09_30/2011_09_30_drive_0033_sync 140 r
+2011_09_26/2011_09_26_drive_0070_sync 205 r
+2011_09_30/2011_09_30_drive_0034_sync 922 l
+2011_09_26/2011_09_26_drive_0087_sync 124 r
+2011_09_30/2011_09_30_drive_0028_sync 656 r
+2011_09_30/2011_09_30_drive_0028_sync 4256 l
+2011_09_29/2011_09_29_drive_0026_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 4272 l
+2011_09_30/2011_09_30_drive_0020_sync 864 r
+2011_09_26/2011_09_26_drive_0014_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 3884 r
+2011_09_26/2011_09_26_drive_0017_sync 57 r
+2011_10_03/2011_10_03_drive_0034_sync 3562 r
+2011_10_03/2011_10_03_drive_0034_sync 3485 l
+2011_09_26/2011_09_26_drive_0079_sync 55 l
+2011_09_30/2011_09_30_drive_0034_sync 595 r
+2011_10_03/2011_10_03_drive_0042_sync 861 l
+2011_09_26/2011_09_26_drive_0019_sync 390 l
+2011_09_26/2011_09_26_drive_0005_sync 91 l
+2011_10_03/2011_10_03_drive_0034_sync 4389 r
+2011_09_30/2011_09_30_drive_0028_sync 4958 l
+2011_10_03/2011_10_03_drive_0034_sync 1518 r
+2011_09_26/2011_09_26_drive_0051_sync 357 r
+2011_10_03/2011_10_03_drive_0034_sync 2654 l
+2011_09_26/2011_09_26_drive_0039_sync 392 l
+2011_09_26/2011_09_26_drive_0022_sync 500 l
+2011_09_26/2011_09_26_drive_0095_sync 139 l
+2011_10_03/2011_10_03_drive_0034_sync 1579 r
+2011_10_03/2011_10_03_drive_0034_sync 2549 r
+2011_10_03/2011_10_03_drive_0034_sync 411 l
+2011_09_30/2011_09_30_drive_0028_sync 3234 r
+2011_09_26/2011_09_26_drive_0018_sync 243 l
+2011_10_03/2011_10_03_drive_0042_sync 1106 l
+2011_10_03/2011_10_03_drive_0034_sync 1115 r
+2011_09_26/2011_09_26_drive_0095_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 70 r
+2011_09_30/2011_09_30_drive_0033_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 2792 l
+2011_09_26/2011_09_26_drive_0087_sync 212 l
+2011_10_03/2011_10_03_drive_0034_sync 2901 l
+2011_09_30/2011_09_30_drive_0028_sync 591 l
+2011_09_28/2011_09_28_drive_0001_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 1825 r
+2011_09_30/2011_09_30_drive_0033_sync 1550 l
+2011_09_30/2011_09_30_drive_0028_sync 414 l
+2011_10_03/2011_10_03_drive_0034_sync 2841 r
+2011_09_26/2011_09_26_drive_0011_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 4588 l
+2011_09_26/2011_09_26_drive_0015_sync 242 r
+2011_09_30/2011_09_30_drive_0034_sync 21 l
+2011_09_26/2011_09_26_drive_0061_sync 83 l
+2011_10_03/2011_10_03_drive_0034_sync 1090 l
+2011_09_26/2011_09_26_drive_0032_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 4604 l
+2011_09_30/2011_09_30_drive_0033_sync 901 l
+2011_10_03/2011_10_03_drive_0034_sync 1575 r
+2011_10_03/2011_10_03_drive_0042_sync 302 l
+2011_09_30/2011_09_30_drive_0020_sync 10 r
+2011_09_26/2011_09_26_drive_0019_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 4146 r
+2011_09_26/2011_09_26_drive_0022_sync 795 l
+2011_09_30/2011_09_30_drive_0028_sync 3600 r
+2011_09_26/2011_09_26_drive_0095_sync 27 l
+2011_09_26/2011_09_26_drive_0061_sync 95 r
+2011_09_30/2011_09_30_drive_0020_sync 601 l
+2011_09_30/2011_09_30_drive_0028_sync 3390 r
+2011_10_03/2011_10_03_drive_0042_sync 835 l
+2011_09_30/2011_09_30_drive_0028_sync 1410 l
+2011_10_03/2011_10_03_drive_0034_sync 611 l
+2011_09_26/2011_09_26_drive_0087_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 3227 l
+2011_10_03/2011_10_03_drive_0034_sync 3729 r
+2011_09_30/2011_09_30_drive_0028_sync 1077 l
+2011_10_03/2011_10_03_drive_0034_sync 1355 l
+2011_09_30/2011_09_30_drive_0028_sync 3243 l
+2011_09_30/2011_09_30_drive_0028_sync 3312 l
+2011_09_30/2011_09_30_drive_0034_sync 947 l
+2011_09_26/2011_09_26_drive_0095_sync 29 l
+2011_10_03/2011_10_03_drive_0042_sync 79 r
+2011_09_30/2011_09_30_drive_0033_sync 1254 l
+2011_09_30/2011_09_30_drive_0034_sync 1177 l
+2011_09_30/2011_09_30_drive_0028_sync 4811 r
+2011_09_30/2011_09_30_drive_0020_sync 880 r
+2011_09_30/2011_09_30_drive_0034_sync 911 r
+2011_09_30/2011_09_30_drive_0028_sync 862 r
+2011_09_30/2011_09_30_drive_0020_sync 902 l
+2011_09_26/2011_09_26_drive_0017_sync 21 r
+2011_09_26/2011_09_26_drive_0087_sync 602 l
+2011_09_30/2011_09_30_drive_0033_sync 1193 r
+2011_09_30/2011_09_30_drive_0034_sync 98 r
+2011_10_03/2011_10_03_drive_0042_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1793 l
+2011_09_26/2011_09_26_drive_0039_sync 198 r
+2011_09_26/2011_09_26_drive_0001_sync 8 l
+2011_10_03/2011_10_03_drive_0042_sync 263 l
+2011_09_30/2011_09_30_drive_0034_sync 50 r
+2011_09_26/2011_09_26_drive_0051_sync 310 r
+2011_09_30/2011_09_30_drive_0028_sync 4817 l
+2011_09_26/2011_09_26_drive_0028_sync 6 l
+2011_09_26/2011_09_26_drive_0091_sync 23 l
+2011_09_30/2011_09_30_drive_0020_sync 613 r
+2011_09_26/2011_09_26_drive_0028_sync 293 l
+2011_09_30/2011_09_30_drive_0034_sync 816 l
+2011_09_30/2011_09_30_drive_0033_sync 919 r
+2011_10_03/2011_10_03_drive_0034_sync 2493 l
+2011_09_30/2011_09_30_drive_0028_sync 2440 r
+2011_09_30/2011_09_30_drive_0028_sync 4094 r
+2011_09_30/2011_09_30_drive_0033_sync 891 l
+2011_09_26/2011_09_26_drive_0032_sync 35 l
+2011_10_03/2011_10_03_drive_0034_sync 1846 r
+2011_09_30/2011_09_30_drive_0028_sync 4203 l
+2011_09_30/2011_09_30_drive_0028_sync 1564 l
+2011_09_26/2011_09_26_drive_0057_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 4045 l
+2011_09_30/2011_09_30_drive_0028_sync 5098 l
+2011_09_26/2011_09_26_drive_0019_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 3794 l
+2011_09_30/2011_09_30_drive_0033_sync 986 r
+2011_09_26/2011_09_26_drive_0032_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 3743 l
+2011_09_26/2011_09_26_drive_0087_sync 358 r
+2011_09_26/2011_09_26_drive_0018_sync 184 l
+2011_09_26/2011_09_26_drive_0019_sync 289 l
+2011_09_26/2011_09_26_drive_0070_sync 87 r
+2011_09_26/2011_09_26_drive_0057_sync 317 r
+2011_09_30/2011_09_30_drive_0034_sync 1166 r
+2011_10_03/2011_10_03_drive_0042_sync 136 l
+2011_09_26/2011_09_26_drive_0087_sync 181 r
+2011_09_30/2011_09_30_drive_0020_sync 851 l
+2011_10_03/2011_10_03_drive_0034_sync 1627 r
+2011_10_03/2011_10_03_drive_0034_sync 51 r
+2011_09_30/2011_09_30_drive_0033_sync 558 r
+2011_09_30/2011_09_30_drive_0033_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 632 l
+2011_09_26/2011_09_26_drive_0022_sync 477 l
+2011_09_26/2011_09_26_drive_0018_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 860 l
+2011_09_26/2011_09_26_drive_0001_sync 105 r
+2011_09_26/2011_09_26_drive_0014_sync 214 l
+2011_09_26/2011_09_26_drive_0032_sync 305 l
+2011_10_03/2011_10_03_drive_0034_sync 1785 r
+2011_10_03/2011_10_03_drive_0034_sync 3031 l
+2011_09_26/2011_09_26_drive_0015_sync 233 r
+2011_09_26/2011_09_26_drive_0051_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 671 r
+2011_09_26/2011_09_26_drive_0039_sync 138 r
+2011_10_03/2011_10_03_drive_0042_sync 925 l
+2011_10_03/2011_10_03_drive_0034_sync 2219 l
+2011_09_30/2011_09_30_drive_0028_sync 598 r
+2011_09_30/2011_09_30_drive_0028_sync 2120 l
+2011_10_03/2011_10_03_drive_0042_sync 127 r
+2011_09_30/2011_09_30_drive_0034_sync 1217 r
+2011_09_30/2011_09_30_drive_0028_sync 4593 r
+2011_09_26/2011_09_26_drive_0022_sync 713 r
+2011_10_03/2011_10_03_drive_0042_sync 433 l
+2011_09_26/2011_09_26_drive_0061_sync 568 l
+2011_09_26/2011_09_26_drive_0022_sync 175 l
+2011_09_26/2011_09_26_drive_0019_sync 228 r
+2011_09_30/2011_09_30_drive_0020_sync 660 r
+2011_10_03/2011_10_03_drive_0034_sync 3676 r
+2011_09_30/2011_09_30_drive_0034_sync 526 r
+2011_09_26/2011_09_26_drive_0087_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 1931 r
+2011_09_26/2011_09_26_drive_0079_sync 63 r
+2011_09_26/2011_09_26_drive_0014_sync 252 l
+2011_10_03/2011_10_03_drive_0034_sync 1188 r
+2011_10_03/2011_10_03_drive_0034_sync 3407 l
+2011_09_30/2011_09_30_drive_0028_sync 743 r
+2011_10_03/2011_10_03_drive_0034_sync 2395 l
+2011_09_30/2011_09_30_drive_0028_sync 1495 r
+2011_09_26/2011_09_26_drive_0022_sync 463 r
+2011_09_30/2011_09_30_drive_0028_sync 3071 l
+2011_09_30/2011_09_30_drive_0028_sync 4799 l
+2011_09_26/2011_09_26_drive_0039_sync 341 l
+2011_09_30/2011_09_30_drive_0028_sync 4112 l
+2011_09_26/2011_09_26_drive_0061_sync 449 r
+2011_09_30/2011_09_30_drive_0033_sync 727 r
+2011_09_30/2011_09_30_drive_0028_sync 4646 l
+2011_09_30/2011_09_30_drive_0028_sync 4601 r
+2011_09_30/2011_09_30_drive_0028_sync 4379 l
+2011_09_30/2011_09_30_drive_0028_sync 4426 r
+2011_09_26/2011_09_26_drive_0095_sync 75 r
+2011_09_26/2011_09_26_drive_0019_sync 141 l
+2011_09_30/2011_09_30_drive_0028_sync 1693 l
+2011_09_26/2011_09_26_drive_0051_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 728 r
+2011_10_03/2011_10_03_drive_0034_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 5128 r
+2011_09_30/2011_09_30_drive_0028_sync 3497 l
+2011_09_30/2011_09_30_drive_0034_sync 157 l
+2011_09_30/2011_09_30_drive_0020_sync 543 l
+2011_10_03/2011_10_03_drive_0034_sync 3632 l
+2011_09_26/2011_09_26_drive_0001_sync 41 l
+2011_09_30/2011_09_30_drive_0020_sync 294 l
+2011_09_26/2011_09_26_drive_0087_sync 113 l
+2011_09_26/2011_09_26_drive_0061_sync 324 r
+2011_09_30/2011_09_30_drive_0033_sync 565 r
+2011_10_03/2011_10_03_drive_0034_sync 4379 r
+2011_09_30/2011_09_30_drive_0028_sync 2686 l
+2011_09_26/2011_09_26_drive_0087_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 3473 r
+2011_10_03/2011_10_03_drive_0034_sync 1884 l
+2011_10_03/2011_10_03_drive_0034_sync 3185 r
+2011_10_03/2011_10_03_drive_0034_sync 3824 r
+2011_09_26/2011_09_26_drive_0061_sync 357 r
+2011_09_26/2011_09_26_drive_0011_sync 15 r
+2011_09_30/2011_09_30_drive_0033_sync 529 l
+2011_09_26/2011_09_26_drive_0032_sync 9 r
+2011_09_30/2011_09_30_drive_0033_sync 149 l
+2011_09_26/2011_09_26_drive_0095_sync 262 r
+2011_10_03/2011_10_03_drive_0042_sync 176 l
+2011_09_26/2011_09_26_drive_0091_sync 316 r
+2011_10_03/2011_10_03_drive_0034_sync 1009 l
+2011_09_26/2011_09_26_drive_0061_sync 378 r
+2011_10_03/2011_10_03_drive_0042_sync 398 l
+2011_09_30/2011_09_30_drive_0033_sync 910 r
+2011_09_26/2011_09_26_drive_0005_sync 37 l
+2011_09_26/2011_09_26_drive_0028_sync 81 r
+2011_09_30/2011_09_30_drive_0034_sync 472 l
+2011_10_03/2011_10_03_drive_0042_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 2056 l
+2011_09_26/2011_09_26_drive_0014_sync 280 r
+2011_09_30/2011_09_30_drive_0028_sync 1569 r
+2011_09_26/2011_09_26_drive_0095_sync 76 r
+2011_10_03/2011_10_03_drive_0042_sync 331 l
+2011_09_30/2011_09_30_drive_0020_sync 963 l
+2011_10_03/2011_10_03_drive_0034_sync 2676 r
+2011_09_30/2011_09_30_drive_0028_sync 2502 r
+2011_09_26/2011_09_26_drive_0011_sync 184 r
+2011_09_30/2011_09_30_drive_0020_sync 108 l
+2011_09_26/2011_09_26_drive_0070_sync 381 r
+2011_10_03/2011_10_03_drive_0034_sync 3809 l
+2011_09_26/2011_09_26_drive_0091_sync 80 l
+2011_10_03/2011_10_03_drive_0034_sync 2806 l
+2011_09_30/2011_09_30_drive_0028_sync 4374 r
+2011_09_30/2011_09_30_drive_0028_sync 2880 l
+2011_09_30/2011_09_30_drive_0033_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 403 r
+2011_09_26/2011_09_26_drive_0035_sync 75 l
+2011_09_30/2011_09_30_drive_0020_sync 915 r
+2011_09_26/2011_09_26_drive_0005_sync 91 r
+2011_09_26/2011_09_26_drive_0035_sync 51 r
+2011_09_30/2011_09_30_drive_0028_sync 2060 r
+2011_09_26/2011_09_26_drive_0095_sync 131 l
+2011_09_26/2011_09_26_drive_0087_sync 650 r
+2011_09_26/2011_09_26_drive_0091_sync 107 r
+2011_09_30/2011_09_30_drive_0034_sync 944 l
+2011_10_03/2011_10_03_drive_0042_sync 1013 l
+2011_09_26/2011_09_26_drive_0051_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2354 l
+2011_09_26/2011_09_26_drive_0061_sync 30 r
+2011_09_26/2011_09_26_drive_0011_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 700 l
+2011_09_30/2011_09_30_drive_0028_sync 2614 l
+2011_10_03/2011_10_03_drive_0042_sync 396 r
+2011_09_26/2011_09_26_drive_0087_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 4013 l
+2011_10_03/2011_10_03_drive_0042_sync 301 l
+2011_09_30/2011_09_30_drive_0028_sync 938 l
+2011_09_30/2011_09_30_drive_0028_sync 2684 l
+2011_10_03/2011_10_03_drive_0042_sync 496 r
+2011_09_30/2011_09_30_drive_0028_sync 1608 r
+2011_09_26/2011_09_26_drive_0051_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 606 r
+2011_10_03/2011_10_03_drive_0034_sync 233 l
+2011_09_30/2011_09_30_drive_0034_sync 727 r
+2011_10_03/2011_10_03_drive_0034_sync 1250 r
+2011_09_30/2011_09_30_drive_0034_sync 881 l
+2011_10_03/2011_10_03_drive_0034_sync 4280 l
+2011_09_30/2011_09_30_drive_0028_sync 410 r
+2011_09_30/2011_09_30_drive_0033_sync 228 l
+2011_10_03/2011_10_03_drive_0034_sync 1725 r
+2011_09_26/2011_09_26_drive_0011_sync 199 r
+2011_09_26/2011_09_26_drive_0015_sync 67 r
+2011_09_26/2011_09_26_drive_0019_sync 11 r
+2011_09_30/2011_09_30_drive_0020_sync 484 l
+2011_09_29/2011_09_29_drive_0026_sync 60 r
+2011_09_30/2011_09_30_drive_0034_sync 911 l
+2011_10_03/2011_10_03_drive_0034_sync 4182 r
+2011_09_30/2011_09_30_drive_0033_sync 425 r
+2011_09_30/2011_09_30_drive_0028_sync 4341 l
+2011_09_30/2011_09_30_drive_0028_sync 4979 l
+2011_09_26/2011_09_26_drive_0022_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 1381 l
+2011_09_26/2011_09_26_drive_0061_sync 502 r
+2011_09_26/2011_09_26_drive_0014_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 704 l
+2011_09_30/2011_09_30_drive_0034_sync 534 l
+2011_09_26/2011_09_26_drive_0028_sync 287 l
+2011_09_30/2011_09_30_drive_0033_sync 1151 r
+2011_09_26/2011_09_26_drive_0095_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 2761 r
+2011_09_30/2011_09_30_drive_0028_sync 4198 l
+2011_10_03/2011_10_03_drive_0034_sync 952 r
+2011_09_26/2011_09_26_drive_0087_sync 349 r
+2011_09_30/2011_09_30_drive_0028_sync 3458 r
+2011_10_03/2011_10_03_drive_0034_sync 4154 r
+2011_09_26/2011_09_26_drive_0015_sync 248 l
+2011_09_28/2011_09_28_drive_0001_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 4781 l
+2011_10_03/2011_10_03_drive_0042_sync 1079 r
+2011_09_30/2011_09_30_drive_0028_sync 4511 r
+2011_09_26/2011_09_26_drive_0095_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 2141 r
+2011_09_30/2011_09_30_drive_0028_sync 106 r
+2011_09_29/2011_09_29_drive_0004_sync 48 r
+2011_09_30/2011_09_30_drive_0033_sync 574 r
+2011_09_30/2011_09_30_drive_0034_sync 352 l
+2011_09_26/2011_09_26_drive_0039_sync 344 l
+2011_10_03/2011_10_03_drive_0034_sync 3141 l
+2011_10_03/2011_10_03_drive_0042_sync 883 r
+2011_09_26/2011_09_26_drive_0087_sync 696 l
+2011_09_30/2011_09_30_drive_0028_sync 1516 l
+2011_09_30/2011_09_30_drive_0028_sync 1713 r
+2011_09_30/2011_09_30_drive_0034_sync 1129 l
+2011_09_30/2011_09_30_drive_0028_sync 4516 r
+2011_09_30/2011_09_30_drive_0028_sync 2545 l
+2011_09_30/2011_09_30_drive_0028_sync 2490 r
+2011_09_26/2011_09_26_drive_0022_sync 662 l
+2011_09_30/2011_09_30_drive_0028_sync 1129 r
+2011_10_03/2011_10_03_drive_0034_sync 3713 r
+2011_09_30/2011_09_30_drive_0028_sync 2261 l
+2011_09_30/2011_09_30_drive_0033_sync 877 l
+2011_09_29/2011_09_29_drive_0004_sync 161 l
+2011_09_30/2011_09_30_drive_0028_sync 3543 l
+2011_10_03/2011_10_03_drive_0042_sync 1156 l
+2011_10_03/2011_10_03_drive_0034_sync 817 l
+2011_09_30/2011_09_30_drive_0020_sync 959 l
+2011_09_26/2011_09_26_drive_0022_sync 771 l
+2011_09_30/2011_09_30_drive_0028_sync 4689 r
+2011_10_03/2011_10_03_drive_0034_sync 3780 r
+2011_10_03/2011_10_03_drive_0034_sync 1244 l
+2011_10_03/2011_10_03_drive_0034_sync 2763 r
+2011_09_26/2011_09_26_drive_0087_sync 596 r
+2011_09_30/2011_09_30_drive_0028_sync 2710 r
+2011_10_03/2011_10_03_drive_0042_sync 810 r
+2011_10_03/2011_10_03_drive_0042_sync 493 l
+2011_09_26/2011_09_26_drive_0018_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 3674 r
+2011_09_26/2011_09_26_drive_0017_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 1099 r
+2011_09_26/2011_09_26_drive_0070_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 65 l
+2011_09_26/2011_09_26_drive_0039_sync 363 l
+2011_09_26/2011_09_26_drive_0039_sync 131 l
+2011_09_30/2011_09_30_drive_0033_sync 836 l
+2011_09_30/2011_09_30_drive_0028_sync 3498 r
+2011_09_26/2011_09_26_drive_0091_sync 225 l
+2011_09_26/2011_09_26_drive_0070_sync 76 l
+2011_09_26/2011_09_26_drive_0018_sync 142 l
+2011_09_26/2011_09_26_drive_0061_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 3895 r
+2011_09_26/2011_09_26_drive_0104_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 4584 r
+2011_10_03/2011_10_03_drive_0034_sync 7 l
+2011_09_30/2011_09_30_drive_0033_sync 1502 l
+2011_09_30/2011_09_30_drive_0028_sync 2209 r
+2011_09_26/2011_09_26_drive_0057_sync 188 l
+2011_09_30/2011_09_30_drive_0020_sync 413 l
+2011_10_03/2011_10_03_drive_0034_sync 2071 r
+2011_09_30/2011_09_30_drive_0028_sync 1735 r
+2011_10_03/2011_10_03_drive_0034_sync 4382 l
+2011_09_30/2011_09_30_drive_0028_sync 4183 l
+2011_09_30/2011_09_30_drive_0028_sync 4091 r
+2011_09_30/2011_09_30_drive_0033_sync 707 l
+2011_09_30/2011_09_30_drive_0028_sync 2478 r
+2011_10_03/2011_10_03_drive_0042_sync 462 l
+2011_09_30/2011_09_30_drive_0028_sync 5154 l
+2011_09_26/2011_09_26_drive_0057_sync 137 l
+2011_10_03/2011_10_03_drive_0034_sync 2416 r
+2011_09_26/2011_09_26_drive_0070_sync 140 r
+2011_09_30/2011_09_30_drive_0033_sync 1478 r
+2011_09_26/2011_09_26_drive_0070_sync 32 l
+2011_09_26/2011_09_26_drive_0022_sync 485 l
+2011_09_30/2011_09_30_drive_0028_sync 2607 l
+2011_09_29/2011_09_29_drive_0004_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 1558 r
+2011_10_03/2011_10_03_drive_0042_sync 1049 l
+2011_10_03/2011_10_03_drive_0034_sync 2788 r
+2011_09_26/2011_09_26_drive_0091_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 4317 r
+2011_09_30/2011_09_30_drive_0028_sync 2602 r
+2011_09_26/2011_09_26_drive_0061_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 269 r
+2011_10_03/2011_10_03_drive_0034_sync 2850 l
+2011_10_03/2011_10_03_drive_0034_sync 573 r
+2011_09_26/2011_09_26_drive_0014_sync 111 r
+2011_09_26/2011_09_26_drive_0104_sync 220 l
+2011_09_30/2011_09_30_drive_0033_sync 1027 r
+2011_10_03/2011_10_03_drive_0034_sync 16 l
+2011_09_30/2011_09_30_drive_0020_sync 674 l
+2011_10_03/2011_10_03_drive_0034_sync 526 r
+2011_09_30/2011_09_30_drive_0028_sync 3400 l
+2011_09_26/2011_09_26_drive_0011_sync 54 l
+2011_10_03/2011_10_03_drive_0042_sync 388 r
+2011_10_03/2011_10_03_drive_0042_sync 929 l
+2011_09_30/2011_09_30_drive_0028_sync 2626 l
+2011_09_30/2011_09_30_drive_0028_sync 959 l
+2011_09_30/2011_09_30_drive_0020_sync 346 r
+2011_10_03/2011_10_03_drive_0034_sync 2529 r
+2011_09_26/2011_09_26_drive_0051_sync 44 r
+2011_09_26/2011_09_26_drive_0070_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 4422 l
+2011_09_29/2011_09_29_drive_0004_sync 97 r
+2011_09_26/2011_09_26_drive_0087_sync 416 l
+2011_10_03/2011_10_03_drive_0034_sync 3950 r
+2011_09_30/2011_09_30_drive_0020_sync 273 l
+2011_09_26/2011_09_26_drive_0005_sync 85 l
+2011_09_30/2011_09_30_drive_0028_sync 3989 r
+2011_10_03/2011_10_03_drive_0034_sync 4494 r
+2011_09_30/2011_09_30_drive_0028_sync 1839 l
+2011_10_03/2011_10_03_drive_0034_sync 3254 r
+2011_09_30/2011_09_30_drive_0034_sync 822 r
+2011_09_30/2011_09_30_drive_0033_sync 1046 r
+2011_09_26/2011_09_26_drive_0087_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 1517 r
+2011_09_30/2011_09_30_drive_0028_sync 351 r
+2011_10_03/2011_10_03_drive_0042_sync 486 r
+2011_09_30/2011_09_30_drive_0028_sync 2165 r
+2011_10_03/2011_10_03_drive_0034_sync 716 l
+2011_09_30/2011_09_30_drive_0028_sync 3685 r
+2011_09_30/2011_09_30_drive_0028_sync 4405 r
+2011_10_03/2011_10_03_drive_0034_sync 2747 r
+2011_09_29/2011_09_29_drive_0026_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 1530 r
+2011_09_30/2011_09_30_drive_0028_sync 4794 l
+2011_09_30/2011_09_30_drive_0028_sync 3709 l
+2011_09_26/2011_09_26_drive_0061_sync 675 r
+2011_09_30/2011_09_30_drive_0028_sync 3238 l
+2011_09_30/2011_09_30_drive_0020_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 4158 l
+2011_10_03/2011_10_03_drive_0034_sync 1390 l
+2011_09_26/2011_09_26_drive_0113_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 93 l
+2011_09_26/2011_09_26_drive_0095_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 612 l
+2011_09_30/2011_09_30_drive_0028_sync 1247 l
+2011_09_26/2011_09_26_drive_0032_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 1774 r
+2011_09_30/2011_09_30_drive_0033_sync 543 l
+2011_10_03/2011_10_03_drive_0034_sync 3941 l
+2011_09_30/2011_09_30_drive_0028_sync 1605 l
+2011_09_26/2011_09_26_drive_0104_sync 87 r
+2011_09_30/2011_09_30_drive_0034_sync 412 l
+2011_09_26/2011_09_26_drive_0018_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 2297 r
+2011_09_30/2011_09_30_drive_0033_sync 1275 l
+2011_09_30/2011_09_30_drive_0028_sync 768 l
+2011_10_03/2011_10_03_drive_0042_sync 311 r
+2011_09_30/2011_09_30_drive_0028_sync 1938 l
+2011_09_30/2011_09_30_drive_0028_sync 3689 r
+2011_09_26/2011_09_26_drive_0061_sync 22 l
+2011_09_26/2011_09_26_drive_0032_sync 82 r
+2011_09_30/2011_09_30_drive_0034_sync 988 l
+2011_09_26/2011_09_26_drive_0019_sync 351 r
+2011_10_03/2011_10_03_drive_0034_sync 1828 l
+2011_09_26/2011_09_26_drive_0022_sync 405 r
+2011_09_26/2011_09_26_drive_0091_sync 202 r
+2011_09_30/2011_09_30_drive_0028_sync 4840 r
+2011_09_26/2011_09_26_drive_0022_sync 691 l
+2011_09_26/2011_09_26_drive_0070_sync 167 l
+2011_09_30/2011_09_30_drive_0033_sync 17 l
+2011_09_26/2011_09_26_drive_0039_sync 216 r
+2011_09_30/2011_09_30_drive_0028_sync 1730 r
+2011_09_26/2011_09_26_drive_0057_sync 209 r
+2011_09_26/2011_09_26_drive_0087_sync 65 r
+2011_09_26/2011_09_26_drive_0061_sync 31 l
+2011_09_30/2011_09_30_drive_0033_sync 1101 r
+2011_09_26/2011_09_26_drive_0028_sync 177 r
+2011_10_03/2011_10_03_drive_0042_sync 413 l
+2011_09_30/2011_09_30_drive_0028_sync 88 l
+2011_09_30/2011_09_30_drive_0033_sync 467 r
+2011_10_03/2011_10_03_drive_0034_sync 647 l
+2011_10_03/2011_10_03_drive_0034_sync 3173 l
+2011_09_26/2011_09_26_drive_0032_sync 80 r
+2011_09_26/2011_09_26_drive_0015_sync 212 l
+2011_09_30/2011_09_30_drive_0020_sync 937 l
+2011_10_03/2011_10_03_drive_0034_sync 810 r
+2011_09_26/2011_09_26_drive_0028_sync 162 l
+2011_09_26/2011_09_26_drive_0104_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4909 l
+2011_09_26/2011_09_26_drive_0019_sync 380 r
+2011_09_26/2011_09_26_drive_0091_sync 8 r
+2011_09_26/2011_09_26_drive_0014_sync 244 r
+2011_09_26/2011_09_26_drive_0070_sync 193 r
+2011_09_30/2011_09_30_drive_0028_sync 2230 l
+2011_09_30/2011_09_30_drive_0034_sync 814 l
+2011_09_30/2011_09_30_drive_0020_sync 1096 l
+2011_09_30/2011_09_30_drive_0028_sync 3778 l
+2011_09_26/2011_09_26_drive_0014_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 2075 r
+2011_10_03/2011_10_03_drive_0034_sync 1844 l
+2011_10_03/2011_10_03_drive_0034_sync 2882 l
+2011_10_03/2011_10_03_drive_0034_sync 2771 r
+2011_09_30/2011_09_30_drive_0028_sync 3004 r
+2011_10_03/2011_10_03_drive_0034_sync 3280 r
+2011_09_26/2011_09_26_drive_0039_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 450 r
+2011_10_03/2011_10_03_drive_0042_sync 459 r
+2011_10_03/2011_10_03_drive_0034_sync 2091 r
+2011_09_30/2011_09_30_drive_0033_sync 1288 r
+2011_09_26/2011_09_26_drive_0022_sync 204 l
+2011_09_30/2011_09_30_drive_0020_sync 372 r
+2011_09_30/2011_09_30_drive_0020_sync 737 l
+2011_10_03/2011_10_03_drive_0034_sync 3046 l
+2011_09_26/2011_09_26_drive_0070_sync 0 l
+2011_09_26/2011_09_26_drive_0057_sync 173 l
+2011_09_26/2011_09_26_drive_0028_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 4790 r
+2011_09_30/2011_09_30_drive_0028_sync 4622 r
+2011_10_03/2011_10_03_drive_0034_sync 815 l
+2011_10_03/2011_10_03_drive_0034_sync 723 r
+2011_10_03/2011_10_03_drive_0034_sync 2369 l
+2011_09_30/2011_09_30_drive_0028_sync 1434 l
+2011_09_30/2011_09_30_drive_0028_sync 4513 l
+2011_09_26/2011_09_26_drive_0017_sync 113 l
+2011_09_26/2011_09_26_drive_0035_sync 30 r
+2011_09_29/2011_09_29_drive_0026_sync 69 r
+2011_09_26/2011_09_26_drive_0032_sync 41 l
+2011_09_26/2011_09_26_drive_0061_sync 350 r
+2011_09_26/2011_09_26_drive_0028_sync 320 r
+2011_09_26/2011_09_26_drive_0091_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 2690 r
+2011_09_26/2011_09_26_drive_0039_sync 221 l
+2011_09_26/2011_09_26_drive_0061_sync 542 l
+2011_09_30/2011_09_30_drive_0028_sync 869 r
+2011_09_30/2011_09_30_drive_0028_sync 1784 r
+2011_09_26/2011_09_26_drive_0022_sync 84 r
+2011_09_30/2011_09_30_drive_0028_sync 497 r
+2011_09_30/2011_09_30_drive_0033_sync 1081 r
+2011_09_30/2011_09_30_drive_0028_sync 3422 r
+2011_09_30/2011_09_30_drive_0028_sync 4570 l
+2011_09_30/2011_09_30_drive_0028_sync 885 r
+2011_09_30/2011_09_30_drive_0020_sync 148 r
+2011_09_26/2011_09_26_drive_0022_sync 450 r
+2011_09_26/2011_09_26_drive_0057_sync 239 r
+2011_09_26/2011_09_26_drive_0061_sync 145 l
+2011_09_26/2011_09_26_drive_0018_sync 173 r
+2011_10_03/2011_10_03_drive_0042_sync 276 l
+2011_10_03/2011_10_03_drive_0042_sync 1024 l
+2011_10_03/2011_10_03_drive_0034_sync 2203 r
+2011_10_03/2011_10_03_drive_0034_sync 2311 r
+2011_09_30/2011_09_30_drive_0028_sync 2536 r
+2011_09_26/2011_09_26_drive_0001_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 1485 r
+2011_09_30/2011_09_30_drive_0028_sync 4918 r
+2011_09_30/2011_09_30_drive_0028_sync 1122 r
+2011_09_30/2011_09_30_drive_0028_sync 1468 l
+2011_09_26/2011_09_26_drive_0087_sync 680 l
+2011_09_26/2011_09_26_drive_0095_sync 192 r
+2011_10_03/2011_10_03_drive_0042_sync 893 l
+2011_09_26/2011_09_26_drive_0022_sync 711 r
+2011_09_26/2011_09_26_drive_0091_sync 149 r
+2011_10_03/2011_10_03_drive_0034_sync 2241 r
+2011_09_26/2011_09_26_drive_0057_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 2197 l
+2011_09_26/2011_09_26_drive_0018_sync 36 l
+2011_10_03/2011_10_03_drive_0034_sync 3871 r
+2011_09_26/2011_09_26_drive_0017_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 4385 l
+2011_09_26/2011_09_26_drive_0104_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 4062 r
+2011_09_30/2011_09_30_drive_0033_sync 484 r
+2011_09_30/2011_09_30_drive_0028_sync 1838 r
+2011_09_26/2011_09_26_drive_0019_sync 293 l
+2011_09_26/2011_09_26_drive_0061_sync 88 l
+2011_09_26/2011_09_26_drive_0018_sync 228 r
+2011_09_30/2011_09_30_drive_0028_sync 1766 l
+2011_09_26/2011_09_26_drive_0104_sync 26 r
+2011_10_03/2011_10_03_drive_0034_sync 4503 l
+2011_09_30/2011_09_30_drive_0020_sync 778 r
+2011_10_03/2011_10_03_drive_0034_sync 3338 r
+2011_09_26/2011_09_26_drive_0091_sync 97 r
+2011_09_26/2011_09_26_drive_0051_sync 45 l
+2011_09_30/2011_09_30_drive_0020_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 681 l
+2011_09_26/2011_09_26_drive_0091_sync 87 l
+2011_09_30/2011_09_30_drive_0028_sync 2390 r
+2011_10_03/2011_10_03_drive_0034_sync 2590 l
+2011_10_03/2011_10_03_drive_0042_sync 955 l
+2011_09_30/2011_09_30_drive_0028_sync 1298 l
+2011_09_26/2011_09_26_drive_0022_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 3102 l
+2011_10_03/2011_10_03_drive_0034_sync 288 l
+2011_09_26/2011_09_26_drive_0087_sync 389 r
+2011_09_30/2011_09_30_drive_0028_sync 3740 l
+2011_09_30/2011_09_30_drive_0033_sync 385 r
+2011_09_30/2011_09_30_drive_0034_sync 143 r
+2011_10_03/2011_10_03_drive_0034_sync 2770 r
+2011_09_26/2011_09_26_drive_0032_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 339 l
+2011_10_03/2011_10_03_drive_0034_sync 2725 r
+2011_09_26/2011_09_26_drive_0070_sync 117 r
+2011_09_26/2011_09_26_drive_0057_sync 139 l
+2011_10_03/2011_10_03_drive_0042_sync 374 r
+2011_09_26/2011_09_26_drive_0028_sync 385 l
+2011_10_03/2011_10_03_drive_0034_sync 423 r
+2011_09_30/2011_09_30_drive_0034_sync 856 r
+2011_09_30/2011_09_30_drive_0034_sync 1187 r
+2011_09_30/2011_09_30_drive_0028_sync 3111 r
+2011_09_30/2011_09_30_drive_0028_sync 3095 r
+2011_09_26/2011_09_26_drive_0113_sync 78 l
+2011_10_03/2011_10_03_drive_0034_sync 2705 r
+2011_09_30/2011_09_30_drive_0028_sync 4933 r
+2011_09_26/2011_09_26_drive_0005_sync 24 r
+2011_09_26/2011_09_26_drive_0091_sync 229 r
+2011_10_03/2011_10_03_drive_0034_sync 1466 l
+2011_09_30/2011_09_30_drive_0028_sync 3754 r
+2011_09_26/2011_09_26_drive_0022_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 1452 l
+2011_09_30/2011_09_30_drive_0033_sync 397 r
+2011_10_03/2011_10_03_drive_0034_sync 1333 l
+2011_10_03/2011_10_03_drive_0034_sync 4323 l
+2011_09_30/2011_09_30_drive_0033_sync 1273 l
+2011_09_30/2011_09_30_drive_0028_sync 2173 l
+2011_09_26/2011_09_26_drive_0014_sync 203 l
+2011_09_29/2011_09_29_drive_0004_sync 111 r
+2011_09_26/2011_09_26_drive_0061_sync 169 l
+2011_09_26/2011_09_26_drive_0039_sync 2 r
+2011_09_30/2011_09_30_drive_0028_sync 709 r
+2011_10_03/2011_10_03_drive_0034_sync 2428 l
+2011_09_26/2011_09_26_drive_0032_sync 160 l
+2011_09_26/2011_09_26_drive_0087_sync 499 r
+2011_09_29/2011_09_29_drive_0004_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 2537 r
+2011_09_26/2011_09_26_drive_0019_sync 477 l
+2011_10_03/2011_10_03_drive_0034_sync 3036 l
+2011_10_03/2011_10_03_drive_0034_sync 1451 r
+2011_10_03/2011_10_03_drive_0034_sync 705 r
+2011_09_26/2011_09_26_drive_0028_sync 359 l
+2011_10_03/2011_10_03_drive_0034_sync 2170 r
+2011_09_30/2011_09_30_drive_0028_sync 3143 l
+2011_09_26/2011_09_26_drive_0060_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4926 l
+2011_10_03/2011_10_03_drive_0034_sync 3920 r
+2011_09_26/2011_09_26_drive_0087_sync 274 r
+2011_09_26/2011_09_26_drive_0019_sync 347 r
+2011_09_26/2011_09_26_drive_0011_sync 136 r
+2011_09_30/2011_09_30_drive_0020_sync 304 l
+2011_09_26/2011_09_26_drive_0057_sync 47 r
+2011_09_30/2011_09_30_drive_0033_sync 399 l
+2011_10_03/2011_10_03_drive_0034_sync 4137 r
+2011_09_30/2011_09_30_drive_0033_sync 1101 l
+2011_09_30/2011_09_30_drive_0028_sync 5173 r
+2011_09_30/2011_09_30_drive_0028_sync 864 r
+2011_09_30/2011_09_30_drive_0028_sync 2763 l
+2011_09_26/2011_09_26_drive_0028_sync 141 r
+2011_09_26/2011_09_26_drive_0005_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 3888 r
+2011_09_26/2011_09_26_drive_0014_sync 91 r
+2011_10_03/2011_10_03_drive_0042_sync 1009 l
+2011_09_26/2011_09_26_drive_0104_sync 185 r
+2011_09_30/2011_09_30_drive_0033_sync 945 r
+2011_10_03/2011_10_03_drive_0034_sync 67 l
+2011_09_30/2011_09_30_drive_0033_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 603 r
+2011_09_30/2011_09_30_drive_0034_sync 348 r
+2011_09_26/2011_09_26_drive_0061_sync 557 l
+2011_10_03/2011_10_03_drive_0042_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 984 r
+2011_10_03/2011_10_03_drive_0042_sync 389 l
+2011_09_26/2011_09_26_drive_0019_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 1977 l
+2011_10_03/2011_10_03_drive_0034_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 1122 r
+2011_09_26/2011_09_26_drive_0051_sync 120 r
+2011_09_30/2011_09_30_drive_0020_sync 602 r
+2011_10_03/2011_10_03_drive_0042_sync 272 l
+2011_09_30/2011_09_30_drive_0020_sync 919 l
+2011_10_03/2011_10_03_drive_0034_sync 2422 l
+2011_09_26/2011_09_26_drive_0091_sync 286 r
+2011_10_03/2011_10_03_drive_0034_sync 4519 r
+2011_09_30/2011_09_30_drive_0033_sync 17 r
+2011_09_26/2011_09_26_drive_0113_sync 74 r
+2011_09_26/2011_09_26_drive_0087_sync 612 l
+2011_09_30/2011_09_30_drive_0028_sync 91 l
+2011_09_30/2011_09_30_drive_0033_sync 1298 r
+2011_09_26/2011_09_26_drive_0014_sync 65 l
+2011_09_26/2011_09_26_drive_0070_sync 174 l
+2011_09_26/2011_09_26_drive_0079_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 1570 l
+2011_09_30/2011_09_30_drive_0033_sync 472 r
+2011_09_26/2011_09_26_drive_0039_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 3044 r
+2011_09_30/2011_09_30_drive_0028_sync 4874 r
+2011_10_03/2011_10_03_drive_0034_sync 4059 l
+2011_09_26/2011_09_26_drive_0028_sync 248 l
+2011_09_26/2011_09_26_drive_0022_sync 375 l
+2011_09_26/2011_09_26_drive_0011_sync 179 l
+2011_09_26/2011_09_26_drive_0014_sync 235 r
+2011_09_26/2011_09_26_drive_0113_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 4808 l
+2011_10_03/2011_10_03_drive_0034_sync 2183 r
+2011_09_26/2011_09_26_drive_0057_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 963 l
+2011_09_30/2011_09_30_drive_0033_sync 1539 l
+2011_09_26/2011_09_26_drive_0113_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 3943 r
+2011_09_26/2011_09_26_drive_0061_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 3694 l
+2011_10_03/2011_10_03_drive_0034_sync 1339 r
+2011_09_26/2011_09_26_drive_0051_sync 375 r
+2011_09_30/2011_09_30_drive_0028_sync 1288 l
+2011_10_03/2011_10_03_drive_0034_sync 2452 l
+2011_09_30/2011_09_30_drive_0034_sync 170 r
+2011_09_26/2011_09_26_drive_0019_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 4 l
+2011_09_26/2011_09_26_drive_0070_sync 55 l
+2011_09_30/2011_09_30_drive_0033_sync 905 l
+2011_09_30/2011_09_30_drive_0028_sync 3658 r
+2011_09_26/2011_09_26_drive_0091_sync 193 l
+2011_09_26/2011_09_26_drive_0061_sync 85 r
+2011_09_26/2011_09_26_drive_0019_sync 351 l
+2011_10_03/2011_10_03_drive_0042_sync 419 l
+2011_09_30/2011_09_30_drive_0028_sync 4686 r
+2011_09_26/2011_09_26_drive_0018_sync 30 r
+2011_09_26/2011_09_26_drive_0039_sync 333 l
+2011_09_26/2011_09_26_drive_0051_sync 192 l
+2011_10_03/2011_10_03_drive_0034_sync 4624 l
+2011_09_26/2011_09_26_drive_0087_sync 282 l
+2011_09_26/2011_09_26_drive_0061_sync 352 r
+2011_09_30/2011_09_30_drive_0034_sync 1099 l
+2011_09_26/2011_09_26_drive_0032_sync 174 r
+2011_10_03/2011_10_03_drive_0034_sync 2082 l
+2011_09_26/2011_09_26_drive_0051_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 2973 l
+2011_10_03/2011_10_03_drive_0034_sync 4009 r
+2011_09_26/2011_09_26_drive_0039_sync 240 l
+2011_09_26/2011_09_26_drive_0019_sync 226 l
+2011_09_26/2011_09_26_drive_0019_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 4645 l
+2011_10_03/2011_10_03_drive_0034_sync 3766 r
+2011_09_30/2011_09_30_drive_0028_sync 2648 r
+2011_09_26/2011_09_26_drive_0019_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 3500 l
+2011_09_30/2011_09_30_drive_0020_sync 931 r
+2011_09_30/2011_09_30_drive_0034_sync 386 l
+2011_10_03/2011_10_03_drive_0034_sync 2680 l
+2011_09_30/2011_09_30_drive_0033_sync 734 l
+2011_09_30/2011_09_30_drive_0034_sync 501 l
+2011_09_26/2011_09_26_drive_0019_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 1114 l
+2011_09_30/2011_09_30_drive_0028_sync 2935 l
+2011_09_30/2011_09_30_drive_0028_sync 4683 l
+2011_10_03/2011_10_03_drive_0034_sync 372 r
+2011_09_26/2011_09_26_drive_0051_sync 161 r
+2011_09_26/2011_09_26_drive_0019_sync 375 l
+2011_10_03/2011_10_03_drive_0034_sync 4470 l
+2011_09_26/2011_09_26_drive_0015_sync 280 l
+2011_09_26/2011_09_26_drive_0014_sync 292 l
+2011_09_30/2011_09_30_drive_0028_sync 1837 r
+2011_10_03/2011_10_03_drive_0034_sync 2342 l
+2011_09_26/2011_09_26_drive_0091_sync 209 r
+2011_09_29/2011_09_29_drive_0004_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 101 l
+2011_09_30/2011_09_30_drive_0028_sync 1989 l
+2011_10_03/2011_10_03_drive_0042_sync 469 r
+2011_09_26/2011_09_26_drive_0087_sync 411 r
+2011_09_26/2011_09_26_drive_0022_sync 170 r
+2011_09_26/2011_09_26_drive_0022_sync 247 l
+2011_10_03/2011_10_03_drive_0034_sync 4258 r
+2011_09_26/2011_09_26_drive_0011_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 3589 r
+2011_09_30/2011_09_30_drive_0028_sync 815 r
+2011_09_26/2011_09_26_drive_0022_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 17 r
+2011_09_30/2011_09_30_drive_0034_sync 565 r
+2011_09_26/2011_09_26_drive_0032_sync 306 l
+2011_10_03/2011_10_03_drive_0034_sync 1944 r
+2011_09_30/2011_09_30_drive_0028_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 2890 l
+2011_09_30/2011_09_30_drive_0020_sync 221 r
+2011_09_26/2011_09_26_drive_0104_sync 303 r
+2011_09_30/2011_09_30_drive_0028_sync 1677 r
+2011_09_30/2011_09_30_drive_0033_sync 768 l
+2011_09_30/2011_09_30_drive_0028_sync 2537 l
+2011_10_03/2011_10_03_drive_0034_sync 4401 l
+2011_09_30/2011_09_30_drive_0033_sync 502 l
+2011_10_03/2011_10_03_drive_0034_sync 740 r
+2011_09_26/2011_09_26_drive_0018_sync 251 l
+2011_09_30/2011_09_30_drive_0020_sync 803 l
+2011_09_26/2011_09_26_drive_0028_sync 133 r
+2011_09_26/2011_09_26_drive_0014_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 87 l
+2011_09_26/2011_09_26_drive_0035_sync 49 l
+2011_09_30/2011_09_30_drive_0033_sync 72 l
+2011_09_30/2011_09_30_drive_0020_sync 487 r
+2011_09_30/2011_09_30_drive_0028_sync 5140 r
+2011_09_30/2011_09_30_drive_0028_sync 2831 l
+2011_09_30/2011_09_30_drive_0028_sync 1401 l
+2011_09_26/2011_09_26_drive_0015_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 3824 r
+2011_10_03/2011_10_03_drive_0034_sync 965 l
+2011_10_03/2011_10_03_drive_0034_sync 1837 l
+2011_10_03/2011_10_03_drive_0034_sync 1380 r
+2011_09_30/2011_09_30_drive_0033_sync 16 r
+2011_09_26/2011_09_26_drive_0087_sync 287 r
+2011_10_03/2011_10_03_drive_0034_sync 94 r
+2011_09_30/2011_09_30_drive_0034_sync 902 r
+2011_09_30/2011_09_30_drive_0028_sync 5163 r
+2011_09_26/2011_09_26_drive_0001_sync 22 r
+2011_09_30/2011_09_30_drive_0020_sync 774 l
+2011_09_30/2011_09_30_drive_0028_sync 1887 r
+2011_09_30/2011_09_30_drive_0034_sync 445 l
+2011_10_03/2011_10_03_drive_0034_sync 893 r
+2011_09_30/2011_09_30_drive_0028_sync 972 r
+2011_09_26/2011_09_26_drive_0015_sync 16 l
+2011_09_30/2011_09_30_drive_0028_sync 772 r
+2011_09_26/2011_09_26_drive_0061_sync 62 l
+2011_09_26/2011_09_26_drive_0057_sync 232 l
+2011_09_26/2011_09_26_drive_0095_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 743 l
+2011_09_30/2011_09_30_drive_0028_sync 4208 r
+2011_09_26/2011_09_26_drive_0087_sync 376 r
+2011_09_30/2011_09_30_drive_0033_sync 830 r
+2011_09_26/2011_09_26_drive_0061_sync 551 r
+2011_10_03/2011_10_03_drive_0034_sync 1897 r
+2011_09_30/2011_09_30_drive_0028_sync 2517 l
+2011_09_26/2011_09_26_drive_0022_sync 358 l
+2011_09_30/2011_09_30_drive_0034_sync 270 l
+2011_10_03/2011_10_03_drive_0034_sync 2627 r
+2011_09_26/2011_09_26_drive_0039_sync 189 l
+2011_09_26/2011_09_26_drive_0018_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 181 r
+2011_09_26/2011_09_26_drive_0061_sync 251 l
+2011_10_03/2011_10_03_drive_0042_sync 616 l
+2011_09_26/2011_09_26_drive_0070_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 2083 r
+2011_09_26/2011_09_26_drive_0032_sync 107 r
+2011_09_26/2011_09_26_drive_0022_sync 555 l
+2011_09_26/2011_09_26_drive_0028_sync 201 l
+2011_09_30/2011_09_30_drive_0028_sync 1132 l
+2011_09_26/2011_09_26_drive_0005_sync 69 r
+2011_09_26/2011_09_26_drive_0087_sync 242 r
+2011_09_26/2011_09_26_drive_0028_sync 361 l
+2011_10_03/2011_10_03_drive_0034_sync 543 l
+2011_09_26/2011_09_26_drive_0032_sync 327 l
+2011_10_03/2011_10_03_drive_0034_sync 3668 l
+2011_10_03/2011_10_03_drive_0034_sync 1988 r
+2011_09_30/2011_09_30_drive_0028_sync 465 r
+2011_09_26/2011_09_26_drive_0070_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 4716 l
+2011_09_26/2011_09_26_drive_0095_sync 105 l
+2011_09_26/2011_09_26_drive_0015_sync 172 l
+2011_09_26/2011_09_26_drive_0051_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 3598 l
+2011_10_03/2011_10_03_drive_0034_sync 100 l
+2011_09_26/2011_09_26_drive_0061_sync 536 r
+2011_10_03/2011_10_03_drive_0034_sync 3383 l
+2011_09_26/2011_09_26_drive_0061_sync 426 r
+2011_09_30/2011_09_30_drive_0020_sync 163 l
+2011_09_26/2011_09_26_drive_0014_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 2161 l
+2011_09_30/2011_09_30_drive_0028_sync 2673 l
+2011_09_29/2011_09_29_drive_0004_sync 122 r
+2011_09_30/2011_09_30_drive_0034_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 3947 l
+2011_09_26/2011_09_26_drive_0022_sync 337 r
+2011_09_26/2011_09_26_drive_0087_sync 532 l
+2011_10_03/2011_10_03_drive_0034_sync 3025 r
+2011_09_26/2011_09_26_drive_0015_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 431 r
+2011_10_03/2011_10_03_drive_0034_sync 1480 l
+2011_09_26/2011_09_26_drive_0039_sync 94 l
+2011_09_26/2011_09_26_drive_0051_sync 167 r
+2011_10_03/2011_10_03_drive_0034_sync 1018 l
+2011_09_30/2011_09_30_drive_0028_sync 1324 l
+2011_09_29/2011_09_29_drive_0004_sync 326 l
+2011_10_03/2011_10_03_drive_0034_sync 1182 r
+2011_09_30/2011_09_30_drive_0034_sync 536 r
+2011_09_30/2011_09_30_drive_0033_sync 802 r
+2011_10_03/2011_10_03_drive_0034_sync 2200 r
+2011_09_30/2011_09_30_drive_0028_sync 273 r
+2011_09_26/2011_09_26_drive_0051_sync 223 r
+2011_09_30/2011_09_30_drive_0033_sync 776 l
+2011_09_26/2011_09_26_drive_0017_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 1439 l
+2011_09_26/2011_09_26_drive_0015_sync 120 r
+2011_10_03/2011_10_03_drive_0034_sync 1419 r
+2011_09_30/2011_09_30_drive_0028_sync 1964 r
+2011_09_30/2011_09_30_drive_0033_sync 1028 l
+2011_10_03/2011_10_03_drive_0034_sync 1799 l
+2011_09_30/2011_09_30_drive_0028_sync 2369 r
+2011_09_30/2011_09_30_drive_0028_sync 503 l
+2011_09_26/2011_09_26_drive_0028_sync 401 r
+2011_10_03/2011_10_03_drive_0034_sync 266 r
+2011_09_30/2011_09_30_drive_0033_sync 88 l
+2011_10_03/2011_10_03_drive_0034_sync 3092 r
+2011_10_03/2011_10_03_drive_0042_sync 430 l
+2011_09_26/2011_09_26_drive_0079_sync 99 l
+2011_09_26/2011_09_26_drive_0022_sync 15 r
+2011_09_30/2011_09_30_drive_0033_sync 63 l
+2011_09_30/2011_09_30_drive_0033_sync 1445 r
+2011_09_30/2011_09_30_drive_0028_sync 1257 r
+2011_10_03/2011_10_03_drive_0034_sync 4446 l
+2011_09_30/2011_09_30_drive_0028_sync 3424 l
+2011_09_30/2011_09_30_drive_0028_sync 2007 r
+2011_09_30/2011_09_30_drive_0033_sync 646 l
+2011_09_30/2011_09_30_drive_0028_sync 4879 l
+2011_09_26/2011_09_26_drive_0087_sync 476 r
+2011_09_30/2011_09_30_drive_0034_sync 1042 l
+2011_09_26/2011_09_26_drive_0032_sync 345 r
+2011_09_30/2011_09_30_drive_0028_sync 5099 r
+2011_09_30/2011_09_30_drive_0028_sync 3499 l
+2011_09_26/2011_09_26_drive_0022_sync 729 l
+2011_09_30/2011_09_30_drive_0028_sync 1335 r
+2011_09_30/2011_09_30_drive_0034_sync 108 l
+2011_09_30/2011_09_30_drive_0033_sync 766 l
+2011_09_30/2011_09_30_drive_0028_sync 2596 l
+2011_09_26/2011_09_26_drive_0011_sync 55 r
+2011_09_26/2011_09_26_drive_0039_sync 326 r
+2011_09_30/2011_09_30_drive_0028_sync 209 r
+2011_09_26/2011_09_26_drive_0032_sync 313 l
+2011_09_26/2011_09_26_drive_0035_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 1062 l
+2011_09_26/2011_09_26_drive_0022_sync 324 r
+2011_09_26/2011_09_26_drive_0032_sync 241 l
+2011_09_26/2011_09_26_drive_0022_sync 371 r
+2011_09_26/2011_09_26_drive_0061_sync 550 r
+2011_10_03/2011_10_03_drive_0034_sync 3905 l
+2011_10_03/2011_10_03_drive_0042_sync 395 l
+2011_10_03/2011_10_03_drive_0034_sync 1040 l
+2011_09_26/2011_09_26_drive_0091_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 1949 l
+2011_10_03/2011_10_03_drive_0034_sync 3115 r
+2011_09_26/2011_09_26_drive_0028_sync 261 r
+2011_09_26/2011_09_26_drive_0057_sync 78 l
+2011_10_03/2011_10_03_drive_0042_sync 1065 l
+2011_09_30/2011_09_30_drive_0028_sync 703 l
+2011_09_26/2011_09_26_drive_0039_sync 25 l
+2011_09_26/2011_09_26_drive_0022_sync 712 l
+2011_09_26/2011_09_26_drive_0022_sync 588 l
+2011_09_26/2011_09_26_drive_0057_sync 273 r
+2011_09_30/2011_09_30_drive_0028_sync 3769 r
+2011_09_26/2011_09_26_drive_0018_sync 75 r
+2011_09_30/2011_09_30_drive_0033_sync 360 l
+2011_09_26/2011_09_26_drive_0022_sync 564 l
+2011_09_30/2011_09_30_drive_0028_sync 2123 l
+2011_09_26/2011_09_26_drive_0104_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 2766 l
+2011_09_30/2011_09_30_drive_0028_sync 1671 l
+2011_09_26/2011_09_26_drive_0057_sync 141 r
+2011_09_30/2011_09_30_drive_0020_sync 228 r
+2011_09_26/2011_09_26_drive_0022_sync 722 l
+2011_09_26/2011_09_26_drive_0022_sync 365 r
+2011_09_26/2011_09_26_drive_0028_sync 365 l
+2011_09_30/2011_09_30_drive_0028_sync 361 l
+2011_09_26/2011_09_26_drive_0051_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 2283 l
+2011_10_03/2011_10_03_drive_0034_sync 4116 l
+2011_09_30/2011_09_30_drive_0028_sync 892 l
+2011_09_26/2011_09_26_drive_0095_sync 107 r
+2011_09_30/2011_09_30_drive_0028_sync 3502 r
+2011_10_03/2011_10_03_drive_0042_sync 250 r
+2011_09_30/2011_09_30_drive_0034_sync 1172 l
+2011_09_30/2011_09_30_drive_0028_sync 1162 r
+2011_09_26/2011_09_26_drive_0022_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 682 l
+2011_10_03/2011_10_03_drive_0042_sync 622 l
+2011_09_30/2011_09_30_drive_0033_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 4702 r
+2011_09_30/2011_09_30_drive_0028_sync 4785 l
+2011_09_26/2011_09_26_drive_0061_sync 44 r
+2011_09_26/2011_09_26_drive_0051_sync 217 l
+2011_10_03/2011_10_03_drive_0034_sync 4600 l
+2011_10_03/2011_10_03_drive_0034_sync 4394 l
+2011_09_30/2011_09_30_drive_0028_sync 4728 l
+2011_09_30/2011_09_30_drive_0033_sync 1545 r
+2011_09_30/2011_09_30_drive_0028_sync 5074 l
+2011_09_30/2011_09_30_drive_0028_sync 1441 l
+2011_10_03/2011_10_03_drive_0042_sync 569 r
+2011_09_30/2011_09_30_drive_0028_sync 3681 r
+2011_09_26/2011_09_26_drive_0095_sync 50 r
+2011_09_26/2011_09_26_drive_0104_sync 52 r
+2011_09_26/2011_09_26_drive_0022_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 2778 r
+2011_09_26/2011_09_26_drive_0091_sync 261 r
+2011_09_26/2011_09_26_drive_0022_sync 222 l
+2011_09_26/2011_09_26_drive_0070_sync 397 r
+2011_09_26/2011_09_26_drive_0095_sync 187 r
+2011_09_26/2011_09_26_drive_0091_sync 118 l
+2011_09_26/2011_09_26_drive_0091_sync 89 r
+2011_09_26/2011_09_26_drive_0104_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 2608 r
+2011_09_26/2011_09_26_drive_0028_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 1153 r
+2011_09_30/2011_09_30_drive_0028_sync 478 r
+2011_09_30/2011_09_30_drive_0028_sync 3735 r
+2011_09_26/2011_09_26_drive_0087_sync 53 r
+2011_09_26/2011_09_26_drive_0017_sync 86 l
+2011_09_30/2011_09_30_drive_0028_sync 2294 l
+2011_09_30/2011_09_30_drive_0033_sync 1374 r
+2011_09_26/2011_09_26_drive_0091_sync 81 r
+2011_09_30/2011_09_30_drive_0033_sync 1375 l
+2011_09_26/2011_09_26_drive_0057_sync 348 l
+2011_09_26/2011_09_26_drive_0061_sync 432 r
+2011_09_26/2011_09_26_drive_0032_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 1351 r
+2011_10_03/2011_10_03_drive_0034_sync 4662 r
+2011_09_30/2011_09_30_drive_0028_sync 2764 r
+2011_09_26/2011_09_26_drive_0015_sync 285 l
+2011_09_26/2011_09_26_drive_0104_sync 185 l
+2011_10_03/2011_10_03_drive_0034_sync 502 l
+2011_09_30/2011_09_30_drive_0028_sync 2100 l
+2011_09_30/2011_09_30_drive_0028_sync 2624 l
+2011_09_26/2011_09_26_drive_0039_sync 377 r
+2011_09_30/2011_09_30_drive_0020_sync 639 r
+2011_09_30/2011_09_30_drive_0028_sync 1267 l
+2011_09_26/2011_09_26_drive_0032_sync 54 l
+2011_10_03/2011_10_03_drive_0042_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 983 l
+2011_09_26/2011_09_26_drive_0022_sync 273 r
+2011_09_26/2011_09_26_drive_0057_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 4870 r
+2011_09_30/2011_09_30_drive_0028_sync 3518 l
+2011_09_30/2011_09_30_drive_0028_sync 2481 l
+2011_09_30/2011_09_30_drive_0028_sync 3972 r
+2011_10_03/2011_10_03_drive_0034_sync 4353 l
+2011_09_26/2011_09_26_drive_0060_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 1165 l
+2011_10_03/2011_10_03_drive_0042_sync 660 l
+2011_09_26/2011_09_26_drive_0014_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 4134 l
+2011_09_30/2011_09_30_drive_0020_sync 634 r
+2011_09_30/2011_09_30_drive_0034_sync 832 l
+2011_09_26/2011_09_26_drive_0091_sync 32 l
+2011_09_26/2011_09_26_drive_0035_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 4501 l
+2011_09_30/2011_09_30_drive_0028_sync 2544 r
+2011_09_30/2011_09_30_drive_0033_sync 1548 l
+2011_09_30/2011_09_30_drive_0028_sync 4744 l
+2011_10_03/2011_10_03_drive_0042_sync 983 l
+2011_09_26/2011_09_26_drive_0057_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 4368 l
+2011_10_03/2011_10_03_drive_0034_sync 975 l
+2011_10_03/2011_10_03_drive_0042_sync 887 r
+2011_10_03/2011_10_03_drive_0034_sync 2892 l
+2011_09_30/2011_09_30_drive_0028_sync 467 r
+2011_10_03/2011_10_03_drive_0034_sync 1713 r
+2011_09_30/2011_09_30_drive_0034_sync 1129 r
+2011_09_26/2011_09_26_drive_0087_sync 97 r
+2011_09_30/2011_09_30_drive_0028_sync 4029 r
+2011_09_26/2011_09_26_drive_0028_sync 85 l
+2011_09_26/2011_09_26_drive_0070_sync 403 l
+2011_09_30/2011_09_30_drive_0028_sync 3950 l
+2011_09_30/2011_09_30_drive_0034_sync 783 r
+2011_09_26/2011_09_26_drive_0104_sync 202 r
+2011_09_30/2011_09_30_drive_0034_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 2026 l
+2011_09_26/2011_09_26_drive_0070_sync 345 r
+2011_09_30/2011_09_30_drive_0028_sync 3055 r
+2011_09_30/2011_09_30_drive_0020_sync 77 r
+2011_09_26/2011_09_26_drive_0022_sync 248 r
+2011_10_03/2011_10_03_drive_0034_sync 2248 l
+2011_09_26/2011_09_26_drive_0039_sync 306 l
+2011_09_30/2011_09_30_drive_0033_sync 1377 l
+2011_09_29/2011_09_29_drive_0004_sync 179 r
+2011_09_30/2011_09_30_drive_0034_sync 248 r
+2011_09_26/2011_09_26_drive_0028_sync 26 l
+2011_09_26/2011_09_26_drive_0061_sync 643 r
+2011_09_30/2011_09_30_drive_0028_sync 3837 l
+2011_09_30/2011_09_30_drive_0034_sync 263 l
+2011_10_03/2011_10_03_drive_0042_sync 953 r
+2011_09_29/2011_09_29_drive_0004_sync 156 l
+2011_09_26/2011_09_26_drive_0104_sync 304 r
+2011_10_03/2011_10_03_drive_0034_sync 2797 l
+2011_09_30/2011_09_30_drive_0020_sync 281 r
+2011_09_30/2011_09_30_drive_0028_sync 3 l
+2011_09_28/2011_09_28_drive_0001_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 2555 r
+2011_09_30/2011_09_30_drive_0028_sync 1715 r
+2011_09_30/2011_09_30_drive_0020_sync 370 r
+2011_09_30/2011_09_30_drive_0033_sync 473 r
+2011_09_26/2011_09_26_drive_0028_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 4455 l
+2011_09_26/2011_09_26_drive_0104_sync 281 r
+2011_09_30/2011_09_30_drive_0028_sync 3485 r
+2011_10_03/2011_10_03_drive_0034_sync 2893 r
+2011_09_30/2011_09_30_drive_0034_sync 356 l
+2011_09_26/2011_09_26_drive_0087_sync 207 l
+2011_09_30/2011_09_30_drive_0034_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 3153 l
+2011_09_30/2011_09_30_drive_0028_sync 779 l
+2011_10_03/2011_10_03_drive_0042_sync 689 r
+2011_09_26/2011_09_26_drive_0061_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 3702 l
+2011_09_30/2011_09_30_drive_0028_sync 2945 r
+2011_09_26/2011_09_26_drive_0039_sync 361 r
+2011_10_03/2011_10_03_drive_0034_sync 2993 l
+2011_09_26/2011_09_26_drive_0070_sync 393 l
+2011_09_30/2011_09_30_drive_0033_sync 819 l
+2011_09_30/2011_09_30_drive_0028_sync 4988 r
+2011_10_03/2011_10_03_drive_0034_sync 2614 l
+2011_09_26/2011_09_26_drive_0019_sync 371 r
+2011_09_26/2011_09_26_drive_0039_sync 329 r
+2011_09_26/2011_09_26_drive_0104_sync 106 l
+2011_09_30/2011_09_30_drive_0028_sync 4980 l
+2011_10_03/2011_10_03_drive_0034_sync 1470 l
+2011_09_30/2011_09_30_drive_0028_sync 2277 r
+2011_10_03/2011_10_03_drive_0034_sync 4179 r
+2011_09_26/2011_09_26_drive_0019_sync 272 r
+2011_09_26/2011_09_26_drive_0028_sync 285 r
+2011_09_26/2011_09_26_drive_0022_sync 118 r
+2011_09_30/2011_09_30_drive_0033_sync 1460 r
+2011_09_30/2011_09_30_drive_0034_sync 1037 l
+2011_10_03/2011_10_03_drive_0034_sync 3656 l
+2011_09_30/2011_09_30_drive_0028_sync 3066 l
+2011_09_26/2011_09_26_drive_0032_sync 100 l
+2011_09_26/2011_09_26_drive_0028_sync 385 r
+2011_09_30/2011_09_30_drive_0028_sync 3646 r
+2011_09_30/2011_09_30_drive_0020_sync 1022 r
+2011_10_03/2011_10_03_drive_0034_sync 1303 l
+2011_10_03/2011_10_03_drive_0042_sync 781 l
+2011_09_26/2011_09_26_drive_0087_sync 299 r
+2011_09_26/2011_09_26_drive_0032_sync 322 l
+2011_09_30/2011_09_30_drive_0034_sync 1172 r
+2011_09_26/2011_09_26_drive_0019_sync 405 l
+2011_09_26/2011_09_26_drive_0061_sync 19 l
+2011_09_30/2011_09_30_drive_0033_sync 1296 l
+2011_10_03/2011_10_03_drive_0042_sync 692 l
+2011_09_30/2011_09_30_drive_0033_sync 1567 l
+2011_10_03/2011_10_03_drive_0034_sync 2136 r
+2011_09_30/2011_09_30_drive_0028_sync 3926 l
+2011_09_26/2011_09_26_drive_0001_sync 23 l
+2011_09_26/2011_09_26_drive_0022_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 2413 r
+2011_09_26/2011_09_26_drive_0018_sync 188 r
+2011_09_30/2011_09_30_drive_0033_sync 730 r
+2011_09_30/2011_09_30_drive_0028_sync 757 l
+2011_09_26/2011_09_26_drive_0022_sync 17 r
+2011_09_26/2011_09_26_drive_0091_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 2207 r
+2011_10_03/2011_10_03_drive_0042_sync 119 l
+2011_09_26/2011_09_26_drive_0061_sync 382 r
+2011_09_30/2011_09_30_drive_0034_sync 503 r
+2011_09_26/2011_09_26_drive_0022_sync 590 r
+2011_09_26/2011_09_26_drive_0104_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 494 r
+2011_10_03/2011_10_03_drive_0042_sync 1145 l
+2011_09_26/2011_09_26_drive_0032_sync 101 r
+2011_09_26/2011_09_26_drive_0017_sync 73 r
+2011_09_26/2011_09_26_drive_0028_sync 280 l
+2011_09_30/2011_09_30_drive_0033_sync 1269 r
+2011_10_03/2011_10_03_drive_0042_sync 1158 l
+2011_09_30/2011_09_30_drive_0028_sync 2380 l
+2011_09_26/2011_09_26_drive_0051_sync 173 r
+2011_09_26/2011_09_26_drive_0051_sync 422 l
+2011_09_30/2011_09_30_drive_0028_sync 1621 r
+2011_09_26/2011_09_26_drive_0022_sync 121 r
+2011_09_29/2011_09_29_drive_0026_sync 152 r
+2011_09_26/2011_09_26_drive_0005_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 1591 l
+2011_09_26/2011_09_26_drive_0061_sync 267 r
+2011_09_26/2011_09_26_drive_0019_sync 103 l
+2011_09_26/2011_09_26_drive_0091_sync 178 r
+2011_10_03/2011_10_03_drive_0042_sync 393 l
+2011_09_26/2011_09_26_drive_0017_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 1375 r
+2011_09_26/2011_09_26_drive_0057_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 635 r
+2011_09_30/2011_09_30_drive_0028_sync 4193 r
+2011_09_26/2011_09_26_drive_0022_sync 308 l
+2011_09_26/2011_09_26_drive_0070_sync 106 l
+2011_09_26/2011_09_26_drive_0005_sync 99 l
+2011_09_26/2011_09_26_drive_0011_sync 20 l
+2011_09_26/2011_09_26_drive_0061_sync 333 r
+2011_09_26/2011_09_26_drive_0087_sync 320 r
+2011_09_30/2011_09_30_drive_0028_sync 2212 r
+2011_09_26/2011_09_26_drive_0018_sync 12 l
+2011_09_26/2011_09_26_drive_0022_sync 297 l
+2011_10_03/2011_10_03_drive_0034_sync 4654 l
+2011_09_26/2011_09_26_drive_0018_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 1770 r
+2011_09_30/2011_09_30_drive_0028_sync 3952 l
+2011_09_30/2011_09_30_drive_0028_sync 4357 l
+2011_09_26/2011_09_26_drive_0018_sync 193 l
+2011_10_03/2011_10_03_drive_0042_sync 40 l
+2011_10_03/2011_10_03_drive_0042_sync 610 l
+2011_10_03/2011_10_03_drive_0042_sync 44 r
+2011_09_26/2011_09_26_drive_0018_sync 170 l
+2011_09_26/2011_09_26_drive_0039_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 19 l
+2011_09_26/2011_09_26_drive_0087_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 2028 r
+2011_09_30/2011_09_30_drive_0034_sync 1148 l
+2011_10_03/2011_10_03_drive_0034_sync 545 r
+2011_09_30/2011_09_30_drive_0028_sync 2056 r
+2011_09_26/2011_09_26_drive_0015_sync 33 r
+2011_09_26/2011_09_26_drive_0028_sync 311 r
+2011_09_26/2011_09_26_drive_0087_sync 664 r
+2011_10_03/2011_10_03_drive_0034_sync 1397 r
+2011_10_03/2011_10_03_drive_0034_sync 953 r
+2011_10_03/2011_10_03_drive_0034_sync 3818 r
+2011_09_26/2011_09_26_drive_0018_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 3556 l
+2011_09_30/2011_09_30_drive_0028_sync 3980 r
+2011_10_03/2011_10_03_drive_0034_sync 478 l
+2011_09_26/2011_09_26_drive_0032_sync 295 r
+2011_09_30/2011_09_30_drive_0034_sync 1162 l
+2011_09_26/2011_09_26_drive_0015_sync 87 l
+2011_09_30/2011_09_30_drive_0033_sync 1510 r
+2011_10_03/2011_10_03_drive_0034_sync 1229 l
+2011_09_26/2011_09_26_drive_0104_sync 253 l
+2011_10_03/2011_10_03_drive_0034_sync 653 r
+2011_09_30/2011_09_30_drive_0020_sync 1024 l
+2011_10_03/2011_10_03_drive_0034_sync 772 r
+2011_09_26/2011_09_26_drive_0095_sync 252 l
+2011_09_30/2011_09_30_drive_0034_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 3844 r
+2011_10_03/2011_10_03_drive_0034_sync 329 l
+2011_09_30/2011_09_30_drive_0028_sync 825 r
+2011_09_26/2011_09_26_drive_0057_sync 309 r
+2011_09_26/2011_09_26_drive_0061_sync 512 r
+2011_10_03/2011_10_03_drive_0034_sync 2029 l
+2011_09_26/2011_09_26_drive_0070_sync 147 l
+2011_10_03/2011_10_03_drive_0042_sync 49 l
+2011_09_30/2011_09_30_drive_0020_sync 550 r
+2011_09_30/2011_09_30_drive_0028_sync 1007 r
+2011_09_30/2011_09_30_drive_0028_sync 2158 l
+2011_10_03/2011_10_03_drive_0042_sync 938 r
+2011_10_03/2011_10_03_drive_0042_sync 1020 l
+2011_09_30/2011_09_30_drive_0020_sync 1102 r
+2011_09_30/2011_09_30_drive_0028_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 435 r
+2011_10_03/2011_10_03_drive_0034_sync 3551 l
+2011_10_03/2011_10_03_drive_0034_sync 3174 l
+2011_09_30/2011_09_30_drive_0020_sync 554 l
+2011_09_26/2011_09_26_drive_0091_sync 259 l
+2011_10_03/2011_10_03_drive_0034_sync 1589 r
+2011_09_26/2011_09_26_drive_0104_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 2199 r
+2011_10_03/2011_10_03_drive_0034_sync 4292 l
+2011_09_30/2011_09_30_drive_0033_sync 846 l
+2011_09_26/2011_09_26_drive_0019_sync 164 r
+2011_09_26/2011_09_26_drive_0039_sync 202 l
+2011_09_30/2011_09_30_drive_0020_sync 655 r
+2011_09_26/2011_09_26_drive_0028_sync 79 l
+2011_09_26/2011_09_26_drive_0011_sync 165 r
+2011_09_26/2011_09_26_drive_0022_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 2644 l
+2011_10_03/2011_10_03_drive_0042_sync 915 l
+2011_09_26/2011_09_26_drive_0061_sync 605 r
+2011_10_03/2011_10_03_drive_0034_sync 927 l
+2011_09_30/2011_09_30_drive_0020_sync 861 l
+2011_09_30/2011_09_30_drive_0028_sync 3203 l
+2011_10_03/2011_10_03_drive_0034_sync 172 l
+2011_09_26/2011_09_26_drive_0079_sync 76 l
+2011_09_30/2011_09_30_drive_0034_sync 1135 l
+2011_09_30/2011_09_30_drive_0034_sync 309 l
+2011_09_30/2011_09_30_drive_0028_sync 2934 r
+2011_09_26/2011_09_26_drive_0018_sync 253 l
+2011_09_30/2011_09_30_drive_0034_sync 711 l
+2011_09_30/2011_09_30_drive_0020_sync 749 l
+2011_09_30/2011_09_30_drive_0034_sync 250 r
+2011_09_30/2011_09_30_drive_0033_sync 426 r
+2011_09_30/2011_09_30_drive_0034_sync 557 r
+2011_09_29/2011_09_29_drive_0004_sync 310 l
+2011_10_03/2011_10_03_drive_0034_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 4713 r
+2011_09_26/2011_09_26_drive_0039_sync 319 r
+2011_09_30/2011_09_30_drive_0028_sync 179 l
+2011_09_30/2011_09_30_drive_0020_sync 1009 l
+2011_09_26/2011_09_26_drive_0015_sync 48 l
+2011_09_30/2011_09_30_drive_0033_sync 653 r
+2011_09_30/2011_09_30_drive_0034_sync 315 l
+2011_09_29/2011_09_29_drive_0026_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 4499 l
+2011_10_03/2011_10_03_drive_0034_sync 4430 r
+2011_10_03/2011_10_03_drive_0034_sync 4406 l
+2011_10_03/2011_10_03_drive_0034_sync 4501 l
+2011_09_26/2011_09_26_drive_0005_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 758 l
+2011_09_30/2011_09_30_drive_0028_sync 2675 r
+2011_09_26/2011_09_26_drive_0057_sync 88 r
+2011_09_26/2011_09_26_drive_0087_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 1796 l
+2011_09_29/2011_09_29_drive_0004_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 2067 r
+2011_10_03/2011_10_03_drive_0034_sync 230 l
+2011_09_30/2011_09_30_drive_0034_sync 1117 l
+2011_09_30/2011_09_30_drive_0028_sync 4332 l
+2011_09_26/2011_09_26_drive_0095_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 2572 r
+2011_10_03/2011_10_03_drive_0034_sync 2887 l
+2011_10_03/2011_10_03_drive_0042_sync 363 l
+2011_09_26/2011_09_26_drive_0019_sync 131 l
+2011_09_26/2011_09_26_drive_0091_sync 147 l
+2011_09_30/2011_09_30_drive_0028_sync 3993 l
+2011_09_26/2011_09_26_drive_0061_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 4363 l
+2011_10_03/2011_10_03_drive_0042_sync 538 l
+2011_09_30/2011_09_30_drive_0028_sync 2254 l
+2011_10_03/2011_10_03_drive_0034_sync 697 r
+2011_09_26/2011_09_26_drive_0057_sync 178 l
+2011_09_30/2011_09_30_drive_0028_sync 5021 r
+2011_10_03/2011_10_03_drive_0034_sync 576 l
+2011_09_26/2011_09_26_drive_0095_sync 90 l
+2011_10_03/2011_10_03_drive_0042_sync 360 r
+2011_09_26/2011_09_26_drive_0017_sync 1 l
+2011_09_26/2011_09_26_drive_0057_sync 183 r
+2011_09_26/2011_09_26_drive_0039_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 3769 l
+2011_09_26/2011_09_26_drive_0087_sync 568 r
+2011_09_30/2011_09_30_drive_0028_sync 696 l
+2011_09_30/2011_09_30_drive_0028_sync 1459 r
+2011_09_26/2011_09_26_drive_0039_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 873 l
+2011_09_26/2011_09_26_drive_0079_sync 63 l
+2011_09_26/2011_09_26_drive_0018_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 1379 r
+2011_09_30/2011_09_30_drive_0028_sync 2540 l
+2011_10_03/2011_10_03_drive_0034_sync 780 l
+2011_09_29/2011_09_29_drive_0004_sync 12 r
+2011_10_03/2011_10_03_drive_0034_sync 3870 l
+2011_10_03/2011_10_03_drive_0034_sync 1138 r
+2011_09_30/2011_09_30_drive_0028_sync 3489 r
+2011_10_03/2011_10_03_drive_0034_sync 21 r
+2011_09_30/2011_09_30_drive_0034_sync 353 r
+2011_09_30/2011_09_30_drive_0028_sync 917 r
+2011_09_30/2011_09_30_drive_0033_sync 1474 r
+2011_09_30/2011_09_30_drive_0020_sync 487 l
+2011_09_26/2011_09_26_drive_0039_sync 327 r
+2011_09_26/2011_09_26_drive_0019_sync 384 r
+2011_10_03/2011_10_03_drive_0042_sync 871 l
+2011_09_30/2011_09_30_drive_0028_sync 1328 l
+2011_10_03/2011_10_03_drive_0034_sync 2448 l
+2011_09_26/2011_09_26_drive_0070_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 625 r
+2011_09_26/2011_09_26_drive_0019_sync 401 r
+2011_09_26/2011_09_26_drive_0039_sync 113 r
+2011_09_30/2011_09_30_drive_0033_sync 1222 r
+2011_09_26/2011_09_26_drive_0022_sync 14 r
+2011_09_30/2011_09_30_drive_0033_sync 696 r
+2011_09_30/2011_09_30_drive_0033_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 1339 r
+2011_09_26/2011_09_26_drive_0061_sync 696 r
+2011_10_03/2011_10_03_drive_0034_sync 1633 r
+2011_09_30/2011_09_30_drive_0028_sync 4262 l
+2011_09_30/2011_09_30_drive_0033_sync 702 l
+2011_09_30/2011_09_30_drive_0020_sync 443 l
+2011_09_30/2011_09_30_drive_0033_sync 861 r
+2011_09_30/2011_09_30_drive_0028_sync 2999 l
+2011_09_26/2011_09_26_drive_0005_sync 64 l
+2011_09_26/2011_09_26_drive_0017_sync 60 l
+2011_09_30/2011_09_30_drive_0028_sync 3802 r
+2011_10_03/2011_10_03_drive_0042_sync 578 r
+2011_09_26/2011_09_26_drive_0019_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 3912 l
+2011_09_29/2011_09_29_drive_0026_sync 137 r
+2011_09_26/2011_09_26_drive_0011_sync 139 l
+2011_09_30/2011_09_30_drive_0020_sync 1070 r
+2011_09_26/2011_09_26_drive_0057_sync 326 l
+2011_09_30/2011_09_30_drive_0034_sync 239 r
+2011_09_30/2011_09_30_drive_0033_sync 1430 r
+2011_10_03/2011_10_03_drive_0034_sync 471 l
+2011_09_29/2011_09_29_drive_0026_sync 78 r
+2011_10_03/2011_10_03_drive_0034_sync 3467 r
+2011_09_26/2011_09_26_drive_0095_sync 81 r
+2011_09_30/2011_09_30_drive_0033_sync 357 r
+2011_09_30/2011_09_30_drive_0033_sync 1113 r
+2011_09_26/2011_09_26_drive_0104_sync 297 r
+2011_09_26/2011_09_26_drive_0022_sync 26 r
+2011_09_30/2011_09_30_drive_0028_sync 1491 r
+2011_09_26/2011_09_26_drive_0039_sync 354 r
+2011_09_30/2011_09_30_drive_0034_sync 151 l
+2011_09_30/2011_09_30_drive_0028_sync 3316 r
+2011_10_03/2011_10_03_drive_0034_sync 15 l
+2011_10_03/2011_10_03_drive_0034_sync 3563 l
+2011_09_30/2011_09_30_drive_0028_sync 5156 l
+2011_09_30/2011_09_30_drive_0034_sync 589 l
+2011_09_30/2011_09_30_drive_0028_sync 3183 r
+2011_09_30/2011_09_30_drive_0034_sync 174 l
+2011_09_26/2011_09_26_drive_0014_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 188 l
+2011_09_26/2011_09_26_drive_0087_sync 625 l
+2011_09_30/2011_09_30_drive_0028_sync 3706 r
+2011_09_26/2011_09_26_drive_0039_sync 190 r
+2011_10_03/2011_10_03_drive_0034_sync 3649 r
+2011_09_30/2011_09_30_drive_0028_sync 2822 r
+2011_10_03/2011_10_03_drive_0034_sync 2286 r
+2011_09_26/2011_09_26_drive_0087_sync 567 r
+2011_10_03/2011_10_03_drive_0034_sync 1780 l
+2011_09_30/2011_09_30_drive_0028_sync 4420 l
+2011_09_26/2011_09_26_drive_0051_sync 296 r
+2011_09_26/2011_09_26_drive_0051_sync 265 r
+2011_09_26/2011_09_26_drive_0060_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 1235 l
+2011_09_30/2011_09_30_drive_0028_sync 4257 r
+2011_10_03/2011_10_03_drive_0034_sync 2572 r
+2011_09_30/2011_09_30_drive_0028_sync 1496 l
+2011_09_26/2011_09_26_drive_0095_sync 74 r
+2011_09_26/2011_09_26_drive_0070_sync 388 r
+2011_10_03/2011_10_03_drive_0034_sync 1240 l
+2011_09_26/2011_09_26_drive_0019_sync 396 l
+2011_09_26/2011_09_26_drive_0057_sync 111 r
+2011_09_30/2011_09_30_drive_0028_sync 3706 l
+2011_09_30/2011_09_30_drive_0033_sync 949 l
+2011_09_30/2011_09_30_drive_0028_sync 4580 l
+2011_09_30/2011_09_30_drive_0033_sync 1207 r
+2011_09_30/2011_09_30_drive_0034_sync 58 r
+2011_09_26/2011_09_26_drive_0087_sync 18 r
+2011_09_30/2011_09_30_drive_0028_sync 3644 l
+2011_09_30/2011_09_30_drive_0028_sync 1524 r
+2011_09_30/2011_09_30_drive_0028_sync 4747 l
+2011_09_26/2011_09_26_drive_0061_sync 533 l
+2011_09_26/2011_09_26_drive_0113_sync 84 l
+2011_10_03/2011_10_03_drive_0034_sync 4282 r
+2011_09_30/2011_09_30_drive_0020_sync 1053 r
+2011_10_03/2011_10_03_drive_0034_sync 3231 r
+2011_09_30/2011_09_30_drive_0028_sync 779 r
+2011_09_30/2011_09_30_drive_0034_sync 388 l
+2011_09_26/2011_09_26_drive_0091_sync 276 r
+2011_09_30/2011_09_30_drive_0034_sync 1217 l
+2011_09_30/2011_09_30_drive_0028_sync 4748 r
+2011_09_26/2011_09_26_drive_0011_sync 126 l
+2011_09_26/2011_09_26_drive_0032_sync 217 r
+2011_09_26/2011_09_26_drive_0061_sync 499 r
+2011_09_30/2011_09_30_drive_0028_sync 4264 l
+2011_09_29/2011_09_29_drive_0004_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 992 l
+2011_10_03/2011_10_03_drive_0034_sync 4662 l
+2011_09_30/2011_09_30_drive_0028_sync 1865 l
+2011_09_26/2011_09_26_drive_0014_sync 98 r
+2011_09_26/2011_09_26_drive_0051_sync 369 r
+2011_09_30/2011_09_30_drive_0028_sync 3301 l
+2011_09_30/2011_09_30_drive_0028_sync 1457 l
+2011_10_03/2011_10_03_drive_0034_sync 1936 l
+2011_09_30/2011_09_30_drive_0033_sync 932 r
+2011_09_30/2011_09_30_drive_0033_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 4259 r
+2011_09_30/2011_09_30_drive_0028_sync 2552 l
+2011_10_03/2011_10_03_drive_0034_sync 1145 r
+2011_09_26/2011_09_26_drive_0032_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 1255 r
+2011_09_26/2011_09_26_drive_0028_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 1610 r
+2011_09_26/2011_09_26_drive_0018_sync 255 l
+2011_09_30/2011_09_30_drive_0034_sync 535 r
+2011_09_30/2011_09_30_drive_0028_sync 3478 l
+2011_09_26/2011_09_26_drive_0035_sync 123 r
+2011_09_26/2011_09_26_drive_0019_sync 409 r
+2011_09_30/2011_09_30_drive_0020_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 630 l
+2011_09_30/2011_09_30_drive_0034_sync 901 r
+2011_09_26/2011_09_26_drive_0032_sync 362 l
+2011_09_30/2011_09_30_drive_0028_sync 1840 r
+2011_10_03/2011_10_03_drive_0034_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 1189 l
+2011_09_30/2011_09_30_drive_0028_sync 3225 r
+2011_09_26/2011_09_26_drive_0104_sync 75 l
+2011_09_26/2011_09_26_drive_0028_sync 187 r
+2011_09_26/2011_09_26_drive_0087_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 4537 r
+2011_09_30/2011_09_30_drive_0028_sync 2732 r
+2011_10_03/2011_10_03_drive_0034_sync 2845 r
+2011_09_30/2011_09_30_drive_0033_sync 1014 r
+2011_10_03/2011_10_03_drive_0034_sync 1197 r
+2011_09_30/2011_09_30_drive_0028_sync 2996 r
+2011_09_30/2011_09_30_drive_0028_sync 1025 l
+2011_09_30/2011_09_30_drive_0028_sync 2468 r
+2011_09_30/2011_09_30_drive_0028_sync 2896 r
+2011_09_30/2011_09_30_drive_0028_sync 2023 r
+2011_09_26/2011_09_26_drive_0079_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 3947 r
+2011_10_03/2011_10_03_drive_0042_sync 640 l
+2011_09_26/2011_09_26_drive_0070_sync 108 r
+2011_09_26/2011_09_26_drive_0087_sync 380 l
+2011_09_30/2011_09_30_drive_0028_sync 2558 r
+2011_09_26/2011_09_26_drive_0017_sync 75 l
+2011_09_26/2011_09_26_drive_0091_sync 129 l
+2011_10_03/2011_10_03_drive_0034_sync 2445 r
+2011_09_26/2011_09_26_drive_0022_sync 92 r
+2011_09_26/2011_09_26_drive_0113_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 3235 r
+2011_09_30/2011_09_30_drive_0028_sync 1893 r
+2011_10_03/2011_10_03_drive_0034_sync 1276 l
+2011_10_03/2011_10_03_drive_0034_sync 1776 l
+2011_10_03/2011_10_03_drive_0042_sync 688 l
+2011_09_30/2011_09_30_drive_0034_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 2991 r
+2011_09_26/2011_09_26_drive_0070_sync 106 r
+2011_10_03/2011_10_03_drive_0042_sync 751 l
+2011_10_03/2011_10_03_drive_0042_sync 776 r
+2011_09_30/2011_09_30_drive_0034_sync 1022 r
+2011_09_30/2011_09_30_drive_0033_sync 167 r
+2011_09_30/2011_09_30_drive_0033_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 1236 r
+2011_10_03/2011_10_03_drive_0034_sync 936 r
+2011_10_03/2011_10_03_drive_0034_sync 2660 r
+2011_09_26/2011_09_26_drive_0087_sync 108 l
+2011_10_03/2011_10_03_drive_0034_sync 727 l
+2011_09_30/2011_09_30_drive_0028_sync 4142 l
+2011_09_26/2011_09_26_drive_0019_sync 155 l
+2011_09_30/2011_09_30_drive_0028_sync 1159 r
+2011_09_26/2011_09_26_drive_0014_sync 179 l
+2011_09_26/2011_09_26_drive_0061_sync 210 r
+2011_09_26/2011_09_26_drive_0039_sync 154 l
+2011_09_30/2011_09_30_drive_0028_sync 678 l
+2011_09_30/2011_09_30_drive_0028_sync 2383 l
+2011_10_03/2011_10_03_drive_0034_sync 1646 r
+2011_09_26/2011_09_26_drive_0070_sync 326 r
+2011_10_03/2011_10_03_drive_0042_sync 824 r
+2011_09_26/2011_09_26_drive_0070_sync 83 l
+2011_09_30/2011_09_30_drive_0034_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 1086 l
+2011_09_30/2011_09_30_drive_0033_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 3782 l
+2011_09_26/2011_09_26_drive_0087_sync 154 l
+2011_09_30/2011_09_30_drive_0020_sync 636 r
+2011_09_26/2011_09_26_drive_0032_sync 59 l
+2011_09_30/2011_09_30_drive_0028_sync 2201 r
+2011_09_26/2011_09_26_drive_0087_sync 693 r
+2011_09_26/2011_09_26_drive_0014_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 1147 l
+2011_09_30/2011_09_30_drive_0034_sync 935 l
+2011_10_03/2011_10_03_drive_0034_sync 2408 l
+2011_09_28/2011_09_28_drive_0001_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 1435 l
+2011_09_26/2011_09_26_drive_0039_sync 368 r
+2011_09_26/2011_09_26_drive_0022_sync 395 r
+2011_09_26/2011_09_26_drive_0011_sync 213 l
+2011_09_26/2011_09_26_drive_0011_sync 79 r
+2011_09_30/2011_09_30_drive_0020_sync 310 l
+2011_09_26/2011_09_26_drive_0001_sync 54 r
+2011_09_26/2011_09_26_drive_0028_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 332 l
+2011_09_26/2011_09_26_drive_0104_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 1896 l
+2011_10_03/2011_10_03_drive_0034_sync 2372 r
+2011_09_26/2011_09_26_drive_0087_sync 348 r
+2011_09_30/2011_09_30_drive_0028_sync 2869 l
+2011_09_30/2011_09_30_drive_0020_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 2695 l
+2011_10_03/2011_10_03_drive_0034_sync 4547 r
+2011_09_30/2011_09_30_drive_0033_sync 1574 r
+2011_10_03/2011_10_03_drive_0042_sync 925 r
+2011_10_03/2011_10_03_drive_0034_sync 3765 r
+2011_09_30/2011_09_30_drive_0028_sync 2735 l
+2011_09_30/2011_09_30_drive_0028_sync 4505 l
+2011_09_26/2011_09_26_drive_0011_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 1312 l
+2011_09_30/2011_09_30_drive_0028_sync 681 r
+2011_09_30/2011_09_30_drive_0028_sync 734 l
+2011_09_26/2011_09_26_drive_0022_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 3377 r
+2011_09_30/2011_09_30_drive_0020_sync 991 r
+2011_10_03/2011_10_03_drive_0034_sync 2142 r
+2011_09_30/2011_09_30_drive_0028_sync 184 r
+2011_09_26/2011_09_26_drive_0018_sync 7 l
+2011_09_26/2011_09_26_drive_0022_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 4727 r
+2011_10_03/2011_10_03_drive_0034_sync 1765 l
+2011_09_30/2011_09_30_drive_0028_sync 2309 l
+2011_09_30/2011_09_30_drive_0020_sync 875 r
+2011_09_30/2011_09_30_drive_0028_sync 4347 r
+2011_09_30/2011_09_30_drive_0028_sync 644 r
+2011_09_26/2011_09_26_drive_0022_sync 482 l
+2011_10_03/2011_10_03_drive_0034_sync 3897 l
+2011_09_26/2011_09_26_drive_0011_sync 49 r
+2011_09_26/2011_09_26_drive_0035_sync 25 l
+2011_09_26/2011_09_26_drive_0087_sync 258 l
+2011_09_30/2011_09_30_drive_0020_sync 353 l
+2011_10_03/2011_10_03_drive_0034_sync 3380 r
+2011_10_03/2011_10_03_drive_0034_sync 2975 l
+2011_09_26/2011_09_26_drive_0032_sync 225 r
+2011_09_30/2011_09_30_drive_0033_sync 1123 l
+2011_10_03/2011_10_03_drive_0042_sync 889 r
+2011_10_03/2011_10_03_drive_0034_sync 1996 l
+2011_10_03/2011_10_03_drive_0042_sync 124 r
+2011_09_30/2011_09_30_drive_0020_sync 896 r
+2011_09_26/2011_09_26_drive_0032_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 2717 l
+2011_10_03/2011_10_03_drive_0034_sync 891 r
+2011_09_30/2011_09_30_drive_0028_sync 2779 r
+2011_09_26/2011_09_26_drive_0022_sync 155 l
+2011_09_26/2011_09_26_drive_0113_sync 49 r
+2011_09_26/2011_09_26_drive_0035_sync 115 l
+2011_09_29/2011_09_29_drive_0004_sync 89 l
+2011_10_03/2011_10_03_drive_0034_sync 649 l
+2011_09_30/2011_09_30_drive_0028_sync 3988 r
+2011_09_26/2011_09_26_drive_0014_sync 105 r
+2011_09_30/2011_09_30_drive_0033_sync 1455 r
+2011_09_26/2011_09_26_drive_0028_sync 415 l
+2011_09_26/2011_09_26_drive_0018_sync 150 l
+2011_09_30/2011_09_30_drive_0033_sync 666 r
+2011_09_30/2011_09_30_drive_0028_sync 678 r
+2011_09_26/2011_09_26_drive_0095_sync 188 r
+2011_09_26/2011_09_26_drive_0032_sync 68 r
+2011_09_26/2011_09_26_drive_0001_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 1435 r
+2011_09_30/2011_09_30_drive_0028_sync 3511 l
+2011_10_03/2011_10_03_drive_0034_sync 877 l
+2011_09_30/2011_09_30_drive_0034_sync 620 l
+2011_10_03/2011_10_03_drive_0042_sync 734 r
+2011_09_30/2011_09_30_drive_0028_sync 884 r
+2011_10_03/2011_10_03_drive_0042_sync 638 l
+2011_10_03/2011_10_03_drive_0034_sync 2001 r
+2011_09_26/2011_09_26_drive_0104_sync 306 r
+2011_09_30/2011_09_30_drive_0028_sync 428 r
+2011_10_03/2011_10_03_drive_0042_sync 316 l
+2011_09_26/2011_09_26_drive_0032_sync 36 r
+2011_09_30/2011_09_30_drive_0033_sync 923 r
+2011_10_03/2011_10_03_drive_0042_sync 1100 r
+2011_09_30/2011_09_30_drive_0028_sync 3821 r
+2011_10_03/2011_10_03_drive_0034_sync 4651 l
+2011_10_03/2011_10_03_drive_0034_sync 2498 r
+2011_09_26/2011_09_26_drive_0087_sync 79 l
+2011_09_26/2011_09_26_drive_0011_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 3386 r
+2011_09_30/2011_09_30_drive_0033_sync 319 r
+2011_09_30/2011_09_30_drive_0033_sync 707 r
+2011_09_26/2011_09_26_drive_0070_sync 390 l
+2011_10_03/2011_10_03_drive_0034_sync 4071 r
+2011_09_30/2011_09_30_drive_0028_sync 4075 l
+2011_10_03/2011_10_03_drive_0034_sync 1276 r
+2011_10_03/2011_10_03_drive_0034_sync 10 r
+2011_09_30/2011_09_30_drive_0028_sync 652 r
+2011_09_30/2011_09_30_drive_0020_sync 488 r
+2011_09_26/2011_09_26_drive_0087_sync 381 r
+2011_09_26/2011_09_26_drive_0028_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 3146 l
+2011_09_26/2011_09_26_drive_0022_sync 581 l
+2011_09_26/2011_09_26_drive_0022_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 2823 l
+2011_09_30/2011_09_30_drive_0028_sync 1009 l
+2011_09_30/2011_09_30_drive_0034_sync 646 l
+2011_09_26/2011_09_26_drive_0061_sync 279 r
+2011_09_26/2011_09_26_drive_0070_sync 24 l
+2011_09_30/2011_09_30_drive_0033_sync 1481 r
+2011_10_03/2011_10_03_drive_0034_sync 3846 l
+2011_09_30/2011_09_30_drive_0034_sync 993 r
+2011_09_26/2011_09_26_drive_0095_sync 239 l
+2011_09_30/2011_09_30_drive_0028_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 597 l
+2011_09_26/2011_09_26_drive_0011_sync 129 l
+2011_09_26/2011_09_26_drive_0070_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 1329 l
+2011_10_03/2011_10_03_drive_0034_sync 977 l
+2011_09_26/2011_09_26_drive_0095_sync 188 l
+2011_10_03/2011_10_03_drive_0034_sync 4521 r
+2011_10_03/2011_10_03_drive_0034_sync 2870 l
+2011_09_30/2011_09_30_drive_0028_sync 3678 l
+2011_10_03/2011_10_03_drive_0034_sync 4575 r
+2011_09_30/2011_09_30_drive_0033_sync 1184 r
+2011_10_03/2011_10_03_drive_0034_sync 173 l
+2011_09_26/2011_09_26_drive_0022_sync 388 l
+2011_09_26/2011_09_26_drive_0087_sync 630 r
+2011_10_03/2011_10_03_drive_0034_sync 1083 r
+2011_09_30/2011_09_30_drive_0028_sync 3338 l
+2011_09_30/2011_09_30_drive_0033_sync 181 r
+2011_09_30/2011_09_30_drive_0033_sync 430 r
+2011_09_30/2011_09_30_drive_0028_sync 4478 r
+2011_10_03/2011_10_03_drive_0034_sync 2074 l
+2011_09_30/2011_09_30_drive_0028_sync 304 r
+2011_10_03/2011_10_03_drive_0034_sync 537 r
+2011_09_26/2011_09_26_drive_0051_sync 372 r
+2011_09_30/2011_09_30_drive_0028_sync 3633 l
+2011_09_26/2011_09_26_drive_0022_sync 236 r
+2011_09_26/2011_09_26_drive_0057_sync 147 l
+2011_09_30/2011_09_30_drive_0034_sync 178 l
+2011_10_03/2011_10_03_drive_0034_sync 387 r
+2011_09_26/2011_09_26_drive_0019_sync 42 r
+2011_10_03/2011_10_03_drive_0042_sync 799 r
+2011_09_26/2011_09_26_drive_0019_sync 326 l
+2011_09_30/2011_09_30_drive_0028_sync 210 l
+2011_09_30/2011_09_30_drive_0028_sync 5124 l
+2011_10_03/2011_10_03_drive_0034_sync 1026 r
+2011_09_26/2011_09_26_drive_0019_sync 116 r
+2011_09_26/2011_09_26_drive_0061_sync 592 r
+2011_09_30/2011_09_30_drive_0028_sync 3584 l
+2011_09_30/2011_09_30_drive_0028_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 4247 r
+2011_09_26/2011_09_26_drive_0014_sync 291 r
+2011_09_30/2011_09_30_drive_0020_sync 414 l
+2011_10_03/2011_10_03_drive_0034_sync 3294 l
+2011_10_03/2011_10_03_drive_0034_sync 4522 l
+2011_09_26/2011_09_26_drive_0087_sync 41 l
+2011_09_26/2011_09_26_drive_0019_sync 179 l
+2011_09_26/2011_09_26_drive_0051_sync 430 l
+2011_09_26/2011_09_26_drive_0032_sync 63 r
+2011_09_30/2011_09_30_drive_0034_sync 200 l
+2011_09_30/2011_09_30_drive_0028_sync 2486 l
+2011_09_26/2011_09_26_drive_0022_sync 255 l
+2011_09_26/2011_09_26_drive_0091_sync 135 r
+2011_09_26/2011_09_26_drive_0032_sync 169 r
+2011_09_26/2011_09_26_drive_0070_sync 295 r
+2011_09_30/2011_09_30_drive_0028_sync 2415 l
+2011_09_30/2011_09_30_drive_0028_sync 4104 l
+2011_09_26/2011_09_26_drive_0028_sync 209 r
+2011_09_30/2011_09_30_drive_0028_sync 2573 r
+2011_10_03/2011_10_03_drive_0034_sync 4083 r
+2011_10_03/2011_10_03_drive_0034_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 2710 r
+2011_09_29/2011_09_29_drive_0004_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 2265 l
+2011_10_03/2011_10_03_drive_0034_sync 3395 l
+2011_09_30/2011_09_30_drive_0028_sync 2067 l
+2011_09_26/2011_09_26_drive_0091_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 596 r
+2011_09_26/2011_09_26_drive_0113_sync 39 r
+2011_09_26/2011_09_26_drive_0014_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 4733 l
+2011_09_26/2011_09_26_drive_0015_sync 244 l
+2011_09_26/2011_09_26_drive_0087_sync 321 r
+2011_10_03/2011_10_03_drive_0034_sync 3924 r
+2011_09_30/2011_09_30_drive_0028_sync 5106 r
+2011_09_26/2011_09_26_drive_0070_sync 7 l
+2011_09_26/2011_09_26_drive_0017_sync 44 l
+2011_09_26/2011_09_26_drive_0061_sync 478 l
+2011_09_30/2011_09_30_drive_0028_sync 713 r
+2011_09_30/2011_09_30_drive_0028_sync 413 l
+2011_10_03/2011_10_03_drive_0034_sync 3029 l
+2011_09_30/2011_09_30_drive_0033_sync 981 l
+2011_09_30/2011_09_30_drive_0028_sync 1655 r
+2011_09_26/2011_09_26_drive_0028_sync 425 r
+2011_10_03/2011_10_03_drive_0034_sync 2131 r
+2011_09_26/2011_09_26_drive_0015_sync 2 l
+2011_09_26/2011_09_26_drive_0019_sync 205 l
+2011_09_26/2011_09_26_drive_0019_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 2916 l
+2011_09_30/2011_09_30_drive_0028_sync 1498 l
+2011_09_30/2011_09_30_drive_0028_sync 4114 l
+2011_09_26/2011_09_26_drive_0087_sync 719 r
+2011_09_26/2011_09_26_drive_0039_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 3550 r
+2011_09_30/2011_09_30_drive_0028_sync 4976 l
+2011_09_26/2011_09_26_drive_0061_sync 217 r
+2011_09_30/2011_09_30_drive_0028_sync 1194 r
+2011_09_26/2011_09_26_drive_0057_sync 89 l
+2011_09_30/2011_09_30_drive_0034_sync 70 r
+2011_09_26/2011_09_26_drive_0070_sync 5 l
+2011_09_26/2011_09_26_drive_0091_sync 168 l
+2011_09_26/2011_09_26_drive_0087_sync 0 r
+2011_09_30/2011_09_30_drive_0028_sync 1936 r
+2011_10_03/2011_10_03_drive_0034_sync 1974 r
+2011_10_03/2011_10_03_drive_0034_sync 1401 l
+2011_09_30/2011_09_30_drive_0028_sync 3115 l
+2011_09_30/2011_09_30_drive_0028_sync 924 l
+2011_09_30/2011_09_30_drive_0028_sync 583 l
+2011_09_30/2011_09_30_drive_0033_sync 379 l
+2011_09_30/2011_09_30_drive_0033_sync 450 l
+2011_10_03/2011_10_03_drive_0034_sync 4549 l
+2011_09_26/2011_09_26_drive_0051_sync 69 l
+2011_09_26/2011_09_26_drive_0022_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 4165 l
+2011_10_03/2011_10_03_drive_0034_sync 3616 r
+2011_10_03/2011_10_03_drive_0042_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 2804 l
+2011_09_30/2011_09_30_drive_0028_sync 4415 r
+2011_09_26/2011_09_26_drive_0005_sync 39 r
+2011_09_30/2011_09_30_drive_0033_sync 1525 r
+2011_09_30/2011_09_30_drive_0028_sync 98 r
+2011_09_26/2011_09_26_drive_0022_sync 29 r
+2011_09_30/2011_09_30_drive_0034_sync 715 l
+2011_09_30/2011_09_30_drive_0028_sync 660 l
+2011_09_26/2011_09_26_drive_0095_sync 12 r
+2011_09_26/2011_09_26_drive_0079_sync 77 r
+2011_10_03/2011_10_03_drive_0042_sync 611 l
+2011_10_03/2011_10_03_drive_0034_sync 1791 l
+2011_09_30/2011_09_30_drive_0028_sync 37 l
+2011_09_30/2011_09_30_drive_0033_sync 461 l
+2011_09_30/2011_09_30_drive_0028_sync 359 l
+2011_10_03/2011_10_03_drive_0042_sync 1032 l
+2011_09_30/2011_09_30_drive_0028_sync 2052 r
+2011_09_26/2011_09_26_drive_0070_sync 340 l
+2011_09_30/2011_09_30_drive_0033_sync 281 l
+2011_09_30/2011_09_30_drive_0033_sync 1530 r
+2011_09_26/2011_09_26_drive_0061_sync 546 r
+2011_09_26/2011_09_26_drive_0070_sync 234 l
+2011_10_03/2011_10_03_drive_0034_sync 2505 r
+2011_09_29/2011_09_29_drive_0026_sync 112 r
+2011_10_03/2011_10_03_drive_0034_sync 3346 r
+2011_09_30/2011_09_30_drive_0028_sync 3495 l
+2011_09_26/2011_09_26_drive_0028_sync 227 r
+2011_09_30/2011_09_30_drive_0033_sync 1408 l
+2011_09_30/2011_09_30_drive_0033_sync 594 l
+2011_10_03/2011_10_03_drive_0034_sync 2459 r
+2011_09_30/2011_09_30_drive_0033_sync 1312 l
+2011_09_26/2011_09_26_drive_0070_sync 153 l
+2011_09_26/2011_09_26_drive_0057_sync 86 r
+2011_09_30/2011_09_30_drive_0020_sync 670 r
+2011_10_03/2011_10_03_drive_0034_sync 3497 r
+2011_09_26/2011_09_26_drive_0019_sync 391 r
+2011_09_26/2011_09_26_drive_0015_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 3703 l
+2011_09_30/2011_09_30_drive_0028_sync 1992 l
+2011_09_30/2011_09_30_drive_0028_sync 4282 l
+2011_10_03/2011_10_03_drive_0034_sync 2838 l
+2011_09_26/2011_09_26_drive_0057_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 3043 r
+2011_09_26/2011_09_26_drive_0051_sync 385 l
+2011_09_30/2011_09_30_drive_0033_sync 635 r
+2011_09_30/2011_09_30_drive_0028_sync 322 r
+2011_09_30/2011_09_30_drive_0028_sync 4109 r
+2011_10_03/2011_10_03_drive_0034_sync 1846 l
+2011_09_30/2011_09_30_drive_0033_sync 944 l
+2011_09_30/2011_09_30_drive_0028_sync 1352 r
+2011_09_30/2011_09_30_drive_0028_sync 3961 l
+2011_09_26/2011_09_26_drive_0019_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 2384 r
+2011_09_30/2011_09_30_drive_0028_sync 2003 r
+2011_10_03/2011_10_03_drive_0034_sync 3497 l
+2011_09_30/2011_09_30_drive_0034_sync 538 l
+2011_09_26/2011_09_26_drive_0028_sync 165 r
+2011_10_03/2011_10_03_drive_0034_sync 4305 l
+2011_09_29/2011_09_29_drive_0004_sync 180 l
+2011_09_30/2011_09_30_drive_0028_sync 3835 l
+2011_09_30/2011_09_30_drive_0034_sync 1094 l
+2011_09_30/2011_09_30_drive_0034_sync 549 r
+2011_09_26/2011_09_26_drive_0057_sync 203 l
+2011_09_26/2011_09_26_drive_0087_sync 652 l
+2011_09_30/2011_09_30_drive_0033_sync 63 r
+2011_09_26/2011_09_26_drive_0039_sync 327 l
+2011_10_03/2011_10_03_drive_0034_sync 2527 l
+2011_09_30/2011_09_30_drive_0020_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 1322 r
+2011_09_26/2011_09_26_drive_0087_sync 640 l
+2011_09_30/2011_09_30_drive_0033_sync 468 r
+2011_09_30/2011_09_30_drive_0028_sync 1102 r
+2011_09_26/2011_09_26_drive_0015_sync 76 r
+2011_09_26/2011_09_26_drive_0104_sync 116 l
+2011_09_30/2011_09_30_drive_0033_sync 1136 l
+2011_09_30/2011_09_30_drive_0020_sync 742 r
+2011_10_03/2011_10_03_drive_0034_sync 2507 l
+2011_09_30/2011_09_30_drive_0034_sync 12 r
+2011_09_26/2011_09_26_drive_0070_sync 264 r
+2011_09_26/2011_09_26_drive_0014_sync 261 r
+2011_09_26/2011_09_26_drive_0095_sync 218 r
+2011_09_26/2011_09_26_drive_0061_sync 653 r
+2011_09_28/2011_09_28_drive_0001_sync 62 l
+2011_10_03/2011_10_03_drive_0042_sync 659 r
+2011_10_03/2011_10_03_drive_0034_sync 4257 l
+2011_09_26/2011_09_26_drive_0018_sync 264 r
+2011_09_30/2011_09_30_drive_0020_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 1483 l
+2011_09_26/2011_09_26_drive_0022_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 3664 r
+2011_10_03/2011_10_03_drive_0034_sync 1223 r
+2011_09_26/2011_09_26_drive_0060_sync 40 l
+2011_09_26/2011_09_26_drive_0028_sync 356 l
+2011_09_26/2011_09_26_drive_0087_sync 391 r
+2011_09_26/2011_09_26_drive_0087_sync 540 l
+2011_09_30/2011_09_30_drive_0028_sync 2245 r
+2011_09_30/2011_09_30_drive_0028_sync 2945 l
+2011_10_03/2011_10_03_drive_0034_sync 695 l
+2011_09_30/2011_09_30_drive_0020_sync 551 l
+2011_09_30/2011_09_30_drive_0028_sync 5008 r
+2011_09_26/2011_09_26_drive_0022_sync 571 r
+2011_09_30/2011_09_30_drive_0020_sync 1097 l
+2011_09_30/2011_09_30_drive_0028_sync 869 l
+2011_09_26/2011_09_26_drive_0014_sync 276 r
+2011_09_26/2011_09_26_drive_0070_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 2002 l
+2011_09_26/2011_09_26_drive_0104_sync 307 r
+2011_10_03/2011_10_03_drive_0042_sync 463 r
+2011_09_26/2011_09_26_drive_0015_sync 275 r
+2011_09_30/2011_09_30_drive_0020_sync 542 l
+2011_10_03/2011_10_03_drive_0034_sync 1115 l
+2011_10_03/2011_10_03_drive_0034_sync 2882 r
+2011_09_26/2011_09_26_drive_0015_sync 178 l
+2011_09_26/2011_09_26_drive_0022_sync 331 l
+2011_09_26/2011_09_26_drive_0015_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 14 l
+2011_09_26/2011_09_26_drive_0032_sync 295 l
+2011_10_03/2011_10_03_drive_0042_sync 123 r
+2011_09_26/2011_09_26_drive_0019_sync 115 l
+2011_09_26/2011_09_26_drive_0061_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 92 r
+2011_10_03/2011_10_03_drive_0042_sync 755 r
+2011_09_30/2011_09_30_drive_0034_sync 532 l
+2011_09_30/2011_09_30_drive_0028_sync 2125 r
+2011_09_30/2011_09_30_drive_0028_sync 2396 l
+2011_09_30/2011_09_30_drive_0020_sync 658 l
+2011_09_30/2011_09_30_drive_0020_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 4234 r
+2011_09_26/2011_09_26_drive_0001_sync 20 r
+2011_10_03/2011_10_03_drive_0042_sync 166 l
+2011_09_26/2011_09_26_drive_0017_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 286 l
+2011_09_30/2011_09_30_drive_0033_sync 1201 l
+2011_10_03/2011_10_03_drive_0034_sync 2211 r
+2011_09_30/2011_09_30_drive_0020_sync 901 r
+2011_10_03/2011_10_03_drive_0042_sync 658 l
+2011_09_30/2011_09_30_drive_0028_sync 3212 l
+2011_10_03/2011_10_03_drive_0034_sync 701 r
+2011_09_30/2011_09_30_drive_0028_sync 3514 r
+2011_09_30/2011_09_30_drive_0034_sync 887 l
+2011_09_30/2011_09_30_drive_0028_sync 523 l
+2011_09_26/2011_09_26_drive_0017_sync 10 r
+2011_09_26/2011_09_26_drive_0091_sync 39 l
+2011_09_26/2011_09_26_drive_0039_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 797 r
+2011_10_03/2011_10_03_drive_0034_sync 2510 l
+2011_09_30/2011_09_30_drive_0034_sync 406 l
+2011_09_26/2011_09_26_drive_0057_sync 344 l
+2011_09_26/2011_09_26_drive_0113_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 3906 r
+2011_10_03/2011_10_03_drive_0034_sync 2900 r
+2011_09_30/2011_09_30_drive_0033_sync 709 l
+2011_09_30/2011_09_30_drive_0028_sync 2794 r
+2011_09_30/2011_09_30_drive_0028_sync 3350 l
+2011_09_26/2011_09_26_drive_0113_sync 47 l
+2011_09_30/2011_09_30_drive_0028_sync 3068 r
+2011_09_26/2011_09_26_drive_0014_sync 295 r
+2011_09_26/2011_09_26_drive_0104_sync 293 l
+2011_09_26/2011_09_26_drive_0070_sync 322 r
+2011_09_26/2011_09_26_drive_0104_sync 217 l
+2011_09_30/2011_09_30_drive_0034_sync 1193 l
+2011_09_30/2011_09_30_drive_0028_sync 3564 l
+2011_09_30/2011_09_30_drive_0028_sync 15 l
+2011_09_26/2011_09_26_drive_0039_sync 285 r
+2011_09_26/2011_09_26_drive_0019_sync 146 l
+2011_10_03/2011_10_03_drive_0042_sync 1068 r
+2011_09_30/2011_09_30_drive_0028_sync 2428 r
+2011_09_26/2011_09_26_drive_0051_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 4495 r
+2011_09_26/2011_09_26_drive_0104_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 731 r
+2011_10_03/2011_10_03_drive_0034_sync 2844 r
+2011_10_03/2011_10_03_drive_0034_sync 1424 l
+2011_09_30/2011_09_30_drive_0028_sync 2942 r
+2011_09_30/2011_09_30_drive_0028_sync 576 l
+2011_09_30/2011_09_30_drive_0028_sync 2722 l
+2011_09_30/2011_09_30_drive_0033_sync 222 r
+2011_09_30/2011_09_30_drive_0034_sync 1161 r
+2011_09_26/2011_09_26_drive_0019_sync 345 l
+2011_10_03/2011_10_03_drive_0034_sync 515 l
+2011_09_30/2011_09_30_drive_0028_sync 881 l
+2011_09_30/2011_09_30_drive_0028_sync 1745 l
+2011_10_03/2011_10_03_drive_0034_sync 320 l
+2011_10_03/2011_10_03_drive_0034_sync 3565 r
+2011_09_26/2011_09_26_drive_0087_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 2917 l
+2011_09_30/2011_09_30_drive_0028_sync 5007 l
+2011_09_29/2011_09_29_drive_0004_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 3164 r
+2011_10_03/2011_10_03_drive_0034_sync 451 l
+2011_09_26/2011_09_26_drive_0017_sync 32 l
+2011_09_26/2011_09_26_drive_0015_sync 255 l
+2011_10_03/2011_10_03_drive_0034_sync 1088 l
+2011_09_30/2011_09_30_drive_0020_sync 418 r
+2011_10_03/2011_10_03_drive_0042_sync 706 l
+2011_09_30/2011_09_30_drive_0028_sync 3364 l
+2011_09_30/2011_09_30_drive_0034_sync 37 l
+2011_10_03/2011_10_03_drive_0042_sync 170 r
+2011_09_30/2011_09_30_drive_0033_sync 1487 l
+2011_09_26/2011_09_26_drive_0035_sync 16 l
+2011_09_26/2011_09_26_drive_0104_sync 218 l
+2011_09_30/2011_09_30_drive_0028_sync 274 r
+2011_09_26/2011_09_26_drive_0057_sync 309 l
+2011_09_30/2011_09_30_drive_0020_sync 523 l
+2011_10_03/2011_10_03_drive_0034_sync 2836 r
+2011_09_26/2011_09_26_drive_0087_sync 724 l
+2011_09_26/2011_09_26_drive_0039_sync 228 l
+2011_09_26/2011_09_26_drive_0019_sync 363 r
+2011_09_30/2011_09_30_drive_0033_sync 913 l
+2011_09_30/2011_09_30_drive_0028_sync 4898 l
+2011_09_30/2011_09_30_drive_0028_sync 1461 r
+2011_09_26/2011_09_26_drive_0022_sync 216 l
+2011_09_26/2011_09_26_drive_0051_sync 268 r
+2011_09_30/2011_09_30_drive_0033_sync 1102 r
+2011_09_30/2011_09_30_drive_0034_sync 404 l
+2011_09_30/2011_09_30_drive_0033_sync 404 l
+2011_10_03/2011_10_03_drive_0034_sync 2080 r
+2011_09_30/2011_09_30_drive_0028_sync 572 l
+2011_09_30/2011_09_30_drive_0020_sync 894 r
+2011_09_26/2011_09_26_drive_0061_sync 376 l
+2011_09_26/2011_09_26_drive_0019_sync 233 r
+2011_10_03/2011_10_03_drive_0042_sync 13 r
+2011_09_26/2011_09_26_drive_0051_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 1502 l
+2011_10_03/2011_10_03_drive_0034_sync 1284 r
+2011_09_30/2011_09_30_drive_0028_sync 4889 l
+2011_10_03/2011_10_03_drive_0034_sync 2752 r
+2011_09_26/2011_09_26_drive_0039_sync 140 r
+2011_09_26/2011_09_26_drive_0014_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 2309 r
+2011_10_03/2011_10_03_drive_0034_sync 2938 l
+2011_10_03/2011_10_03_drive_0034_sync 943 l
+2011_09_26/2011_09_26_drive_0011_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 1835 r
+2011_09_26/2011_09_26_drive_0019_sync 172 l
+2011_09_26/2011_09_26_drive_0104_sync 176 l
+2011_09_30/2011_09_30_drive_0033_sync 677 r
+2011_09_30/2011_09_30_drive_0028_sync 1603 r
+2011_09_30/2011_09_30_drive_0028_sync 986 l
+2011_09_26/2011_09_26_drive_0028_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 2289 r
+2011_10_03/2011_10_03_drive_0034_sync 4096 r
+2011_09_30/2011_09_30_drive_0028_sync 699 r
+2011_09_26/2011_09_26_drive_0091_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 3280 l
+2011_09_30/2011_09_30_drive_0033_sync 1318 r
+2011_09_30/2011_09_30_drive_0028_sync 1644 r
+2011_09_30/2011_09_30_drive_0028_sync 2259 l
+2011_10_03/2011_10_03_drive_0034_sync 4040 l
+2011_09_26/2011_09_26_drive_0028_sync 9 r
+2011_09_30/2011_09_30_drive_0034_sync 567 l
+2011_09_30/2011_09_30_drive_0028_sync 2891 l
+2011_09_26/2011_09_26_drive_0022_sync 771 r
+2011_09_26/2011_09_26_drive_0104_sync 90 r
+2011_10_03/2011_10_03_drive_0042_sync 722 l
+2011_09_30/2011_09_30_drive_0028_sync 1143 l
+2011_09_30/2011_09_30_drive_0020_sync 975 r
+2011_09_29/2011_09_29_drive_0004_sync 242 r
+2011_09_30/2011_09_30_drive_0020_sync 887 l
+2011_10_03/2011_10_03_drive_0042_sync 37 l
+2011_09_26/2011_09_26_drive_0039_sync 206 l
+2011_10_03/2011_10_03_drive_0042_sync 1099 r
+2011_10_03/2011_10_03_drive_0042_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 1432 l
+2011_09_30/2011_09_30_drive_0028_sync 168 l
+2011_09_26/2011_09_26_drive_0022_sync 11 l
+2011_10_03/2011_10_03_drive_0042_sync 453 l
+2011_09_30/2011_09_30_drive_0028_sync 4500 l
+2011_09_29/2011_09_29_drive_0004_sync 12 l
+2011_09_30/2011_09_30_drive_0020_sync 1097 r
+2011_09_30/2011_09_30_drive_0028_sync 14 r
+2011_09_30/2011_09_30_drive_0028_sync 2374 r
+2011_10_03/2011_10_03_drive_0034_sync 908 l
+2011_09_30/2011_09_30_drive_0028_sync 2342 r
+2011_09_26/2011_09_26_drive_0060_sync 14 r
+2011_09_30/2011_09_30_drive_0034_sync 793 r
+2011_10_03/2011_10_03_drive_0034_sync 64 l
+2011_09_30/2011_09_30_drive_0028_sync 151 l
+2011_10_03/2011_10_03_drive_0034_sync 4458 r
+2011_09_26/2011_09_26_drive_0022_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 981 l
+2011_09_29/2011_09_29_drive_0004_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 2997 r
+2011_09_30/2011_09_30_drive_0028_sync 3193 r
+2011_09_26/2011_09_26_drive_0095_sync 7 l
+2011_10_03/2011_10_03_drive_0042_sync 911 l
+2011_09_26/2011_09_26_drive_0035_sync 2 l
+2011_09_26/2011_09_26_drive_0104_sync 235 l
+2011_09_30/2011_09_30_drive_0034_sync 262 r
+2011_10_03/2011_10_03_drive_0034_sync 4637 l
+2011_10_03/2011_10_03_drive_0042_sync 855 l
+2011_09_29/2011_09_29_drive_0004_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 2065 l
+2011_10_03/2011_10_03_drive_0034_sync 3801 l
+2011_09_30/2011_09_30_drive_0028_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 4243 l
+2011_09_30/2011_09_30_drive_0028_sync 3934 r
+2011_09_30/2011_09_30_drive_0028_sync 4262 r
+2011_09_26/2011_09_26_drive_0014_sync 250 l
+2011_09_30/2011_09_30_drive_0028_sync 5125 l
+2011_09_30/2011_09_30_drive_0028_sync 1727 r
+2011_09_30/2011_09_30_drive_0028_sync 4603 l
+2011_10_03/2011_10_03_drive_0034_sync 958 l
+2011_09_30/2011_09_30_drive_0028_sync 4902 l
+2011_09_26/2011_09_26_drive_0104_sync 284 l
+2011_09_26/2011_09_26_drive_0091_sync 30 r
+2011_10_03/2011_10_03_drive_0042_sync 944 l
+2011_09_30/2011_09_30_drive_0020_sync 808 r
+2011_09_26/2011_09_26_drive_0032_sync 67 r
+2011_09_26/2011_09_26_drive_0051_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 1513 r
+2011_09_26/2011_09_26_drive_0028_sync 74 l
+2011_09_26/2011_09_26_drive_0070_sync 278 l
+2011_09_30/2011_09_30_drive_0033_sync 479 l
+2011_09_26/2011_09_26_drive_0014_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 3017 l
+2011_09_30/2011_09_30_drive_0033_sync 589 l
+2011_09_26/2011_09_26_drive_0039_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 407 l
+2011_09_26/2011_09_26_drive_0018_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 4215 l
+2011_09_26/2011_09_26_drive_0061_sync 484 r
+2011_09_29/2011_09_29_drive_0004_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 4131 l
+2011_10_03/2011_10_03_drive_0034_sync 2861 r
+2011_09_26/2011_09_26_drive_0022_sync 350 r
+2011_09_30/2011_09_30_drive_0020_sync 14 l
+2011_09_30/2011_09_30_drive_0020_sync 364 l
+2011_09_28/2011_09_28_drive_0001_sync 84 r
+2011_09_26/2011_09_26_drive_0039_sync 247 r
+2011_09_30/2011_09_30_drive_0028_sync 3648 l
+2011_09_30/2011_09_30_drive_0028_sync 557 l
+2011_10_03/2011_10_03_drive_0034_sync 3642 l
+2011_09_30/2011_09_30_drive_0028_sync 3997 r
+2011_09_30/2011_09_30_drive_0033_sync 1002 r
+2011_09_30/2011_09_30_drive_0033_sync 829 l
+2011_09_30/2011_09_30_drive_0028_sync 2272 r
+2011_09_30/2011_09_30_drive_0028_sync 172 l
+2011_10_03/2011_10_03_drive_0034_sync 1218 r
+2011_10_03/2011_10_03_drive_0034_sync 4451 l
+2011_10_03/2011_10_03_drive_0034_sync 1310 l
+2011_09_29/2011_09_29_drive_0026_sync 38 r
+2011_10_03/2011_10_03_drive_0042_sync 714 r
+2011_09_30/2011_09_30_drive_0028_sync 3444 r
+2011_10_03/2011_10_03_drive_0042_sync 67 r
+2011_10_03/2011_10_03_drive_0034_sync 1372 r
+2011_09_30/2011_09_30_drive_0033_sync 669 r
+2011_09_30/2011_09_30_drive_0028_sync 176 r
+2011_09_26/2011_09_26_drive_0061_sync 371 r
+2011_09_30/2011_09_30_drive_0028_sync 4615 l
+2011_09_30/2011_09_30_drive_0033_sync 745 l
+2011_09_26/2011_09_26_drive_0022_sync 489 l
+2011_09_30/2011_09_30_drive_0028_sync 3064 r
+2011_10_03/2011_10_03_drive_0034_sync 2313 l
+2011_09_26/2011_09_26_drive_0039_sync 318 r
+2011_09_26/2011_09_26_drive_0057_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 4632 r
+2011_10_03/2011_10_03_drive_0034_sync 1972 l
+2011_09_28/2011_09_28_drive_0001_sync 43 r
+2011_09_30/2011_09_30_drive_0028_sync 1101 r
+2011_10_03/2011_10_03_drive_0034_sync 4047 l
+2011_09_30/2011_09_30_drive_0034_sync 1175 r
+2011_09_30/2011_09_30_drive_0033_sync 1286 r
+2011_09_30/2011_09_30_drive_0028_sync 2006 r
+2011_09_26/2011_09_26_drive_0070_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 133 r
+2011_09_26/2011_09_26_drive_0022_sync 201 l
+2011_09_30/2011_09_30_drive_0033_sync 874 l
+2011_09_30/2011_09_30_drive_0028_sync 5127 r
+2011_09_26/2011_09_26_drive_0022_sync 725 r
+2011_09_26/2011_09_26_drive_0095_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 2334 l
+2011_09_30/2011_09_30_drive_0028_sync 2539 l
+2011_09_30/2011_09_30_drive_0033_sync 1085 r
+2011_10_03/2011_10_03_drive_0042_sync 1075 l
+2011_09_30/2011_09_30_drive_0034_sync 315 r
+2011_09_30/2011_09_30_drive_0028_sync 3610 l
+2011_10_03/2011_10_03_drive_0034_sync 4256 r
+2011_10_03/2011_10_03_drive_0034_sync 1304 l
+2011_09_26/2011_09_26_drive_0095_sync 2 r
+2011_10_03/2011_10_03_drive_0034_sync 4397 l
+2011_09_26/2011_09_26_drive_0015_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 1552 l
+2011_09_30/2011_09_30_drive_0028_sync 2946 l
+2011_09_26/2011_09_26_drive_0104_sync 285 l
+2011_10_03/2011_10_03_drive_0034_sync 1147 l
+2011_09_30/2011_09_30_drive_0028_sync 4382 l
+2011_10_03/2011_10_03_drive_0042_sync 874 r
+2011_09_26/2011_09_26_drive_0039_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 2855 l
+2011_09_26/2011_09_26_drive_0018_sync 236 r
+2011_09_26/2011_09_26_drive_0095_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 3117 l
+2011_10_03/2011_10_03_drive_0034_sync 4598 r
+2011_09_30/2011_09_30_drive_0028_sync 74 r
+2011_09_26/2011_09_26_drive_0022_sync 76 r
+2011_09_30/2011_09_30_drive_0033_sync 158 r
+2011_09_30/2011_09_30_drive_0020_sync 437 l
+2011_10_03/2011_10_03_drive_0034_sync 3555 r
+2011_09_30/2011_09_30_drive_0028_sync 855 l
+2011_09_26/2011_09_26_drive_0022_sync 621 l
+2011_09_30/2011_09_30_drive_0028_sync 480 r
+2011_09_30/2011_09_30_drive_0020_sync 1057 l
+2011_09_30/2011_09_30_drive_0034_sync 352 r
+2011_09_26/2011_09_26_drive_0032_sync 240 l
+2011_09_30/2011_09_30_drive_0033_sync 1528 r
+2011_09_30/2011_09_30_drive_0020_sync 253 l
+2011_09_30/2011_09_30_drive_0028_sync 204 r
+2011_09_26/2011_09_26_drive_0028_sync 33 l
+2011_09_26/2011_09_26_drive_0018_sync 164 r
+2011_09_26/2011_09_26_drive_0022_sync 758 l
+2011_09_30/2011_09_30_drive_0033_sync 1068 r
+2011_09_30/2011_09_30_drive_0028_sync 2735 r
+2011_09_30/2011_09_30_drive_0020_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 1805 r
+2011_09_30/2011_09_30_drive_0028_sync 3380 r
+2011_09_26/2011_09_26_drive_0017_sync 41 l
+2011_09_26/2011_09_26_drive_0104_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 2667 r
+2011_09_26/2011_09_26_drive_0014_sync 118 r
+2011_09_26/2011_09_26_drive_0091_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 79 l
+2011_09_26/2011_09_26_drive_0087_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 209 l
+2011_10_03/2011_10_03_drive_0034_sync 1661 l
+2011_09_26/2011_09_26_drive_0039_sync 93 r
+2011_09_30/2011_09_30_drive_0028_sync 1470 r
+2011_09_30/2011_09_30_drive_0033_sync 240 l
+2011_09_26/2011_09_26_drive_0018_sync 222 r
+2011_09_26/2011_09_26_drive_0032_sync 103 l
+2011_09_26/2011_09_26_drive_0011_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 2398 l
+2011_09_30/2011_09_30_drive_0028_sync 3498 l
+2011_09_26/2011_09_26_drive_0019_sync 44 r
+2011_10_03/2011_10_03_drive_0042_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 648 r
+2011_09_26/2011_09_26_drive_0019_sync 383 l
+2011_09_30/2011_09_30_drive_0028_sync 3173 r
+2011_09_26/2011_09_26_drive_0035_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 3215 r
+2011_09_26/2011_09_26_drive_0061_sync 141 r
+2011_09_26/2011_09_26_drive_0014_sync 1 r
+2011_09_26/2011_09_26_drive_0022_sync 532 r
+2011_10_03/2011_10_03_drive_0034_sync 3224 l
+2011_09_30/2011_09_30_drive_0033_sync 521 r
+2011_09_30/2011_09_30_drive_0033_sync 1535 r
+2011_09_26/2011_09_26_drive_0019_sync 470 l
+2011_09_26/2011_09_26_drive_0022_sync 792 r
+2011_09_30/2011_09_30_drive_0028_sync 1638 l
+2011_09_26/2011_09_26_drive_0091_sync 51 r
+2011_09_26/2011_09_26_drive_0019_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 2420 r
+2011_10_03/2011_10_03_drive_0034_sync 3037 l
+2011_09_26/2011_09_26_drive_0019_sync 479 r
+2011_09_30/2011_09_30_drive_0033_sync 385 l
+2011_09_30/2011_09_30_drive_0028_sync 623 r
+2011_09_26/2011_09_26_drive_0057_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 4340 r
+2011_09_30/2011_09_30_drive_0020_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 3179 l
+2011_09_30/2011_09_30_drive_0033_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 2346 l
+2011_10_03/2011_10_03_drive_0034_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 2771 l
+2011_09_26/2011_09_26_drive_0005_sync 95 r
+2011_09_26/2011_09_26_drive_0051_sync 171 l
+2011_09_26/2011_09_26_drive_0014_sync 6 r
+2011_09_30/2011_09_30_drive_0034_sync 453 r
+2011_09_26/2011_09_26_drive_0022_sync 531 r
+2011_09_26/2011_09_26_drive_0087_sync 688 l
+2011_09_30/2011_09_30_drive_0028_sync 4301 l
+2011_10_03/2011_10_03_drive_0034_sync 4160 l
+2011_09_26/2011_09_26_drive_0022_sync 684 r
+2011_09_30/2011_09_30_drive_0034_sync 738 r
+2011_09_30/2011_09_30_drive_0028_sync 2474 r
+2011_09_26/2011_09_26_drive_0022_sync 592 r
+2011_10_03/2011_10_03_drive_0034_sync 4028 r
+2011_09_30/2011_09_30_drive_0034_sync 1173 r
+2011_10_03/2011_10_03_drive_0042_sync 845 r
+2011_10_03/2011_10_03_drive_0034_sync 1152 l
+2011_09_30/2011_09_30_drive_0028_sync 3761 l
+2011_09_26/2011_09_26_drive_0070_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 2371 l
+2011_09_30/2011_09_30_drive_0034_sync 1152 r
+2011_09_30/2011_09_30_drive_0028_sync 3887 l
+2011_09_30/2011_09_30_drive_0028_sync 4768 l
+2011_09_30/2011_09_30_drive_0020_sync 826 r
+2011_09_30/2011_09_30_drive_0034_sync 782 l
+2011_10_03/2011_10_03_drive_0034_sync 3830 r
+2011_10_03/2011_10_03_drive_0042_sync 463 l
+2011_09_30/2011_09_30_drive_0028_sync 4433 l
+2011_09_26/2011_09_26_drive_0015_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 58 l
+2011_09_30/2011_09_30_drive_0034_sync 825 r
+2011_10_03/2011_10_03_drive_0034_sync 3532 r
+2011_09_26/2011_09_26_drive_0018_sync 256 l
+2011_10_03/2011_10_03_drive_0034_sync 1887 r
+2011_10_03/2011_10_03_drive_0042_sync 297 l
+2011_09_30/2011_09_30_drive_0033_sync 1068 l
+2011_09_30/2011_09_30_drive_0033_sync 952 r
+2011_09_26/2011_09_26_drive_0017_sync 13 l
+2011_09_30/2011_09_30_drive_0033_sync 864 r
+2011_09_26/2011_09_26_drive_0011_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 3140 l
+2011_09_26/2011_09_26_drive_0032_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 1035 r
+2011_09_30/2011_09_30_drive_0028_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 82 l
+2011_09_26/2011_09_26_drive_0087_sync 723 r
+2011_09_26/2011_09_26_drive_0091_sync 212 l
+2011_10_03/2011_10_03_drive_0034_sync 1888 r
+2011_09_29/2011_09_29_drive_0026_sync 56 l
+2011_10_03/2011_10_03_drive_0034_sync 1220 r
+2011_10_03/2011_10_03_drive_0034_sync 2544 l
+2011_10_03/2011_10_03_drive_0034_sync 693 r
+2011_09_26/2011_09_26_drive_0057_sync 346 r
+2011_10_03/2011_10_03_drive_0034_sync 3242 r
+2011_09_26/2011_09_26_drive_0087_sync 659 r
+2011_10_03/2011_10_03_drive_0042_sync 82 r
+2011_09_30/2011_09_30_drive_0020_sync 520 l
+2011_09_26/2011_09_26_drive_0015_sync 287 r
+2011_09_30/2011_09_30_drive_0028_sync 2462 l
+2011_09_26/2011_09_26_drive_0032_sync 283 r
+2011_09_30/2011_09_30_drive_0028_sync 2748 l
+2011_10_03/2011_10_03_drive_0042_sync 108 r
+2011_10_03/2011_10_03_drive_0034_sync 2809 r
+2011_09_30/2011_09_30_drive_0028_sync 220 r
+2011_09_26/2011_09_26_drive_0028_sync 419 r
+2011_09_26/2011_09_26_drive_0011_sync 15 l
+2011_09_26/2011_09_26_drive_0022_sync 172 l
+2011_09_30/2011_09_30_drive_0028_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 1772 r
+2011_09_30/2011_09_30_drive_0028_sync 2599 l
+2011_09_30/2011_09_30_drive_0028_sync 2312 l
+2011_09_30/2011_09_30_drive_0028_sync 359 r
+2011_09_30/2011_09_30_drive_0020_sync 446 r
+2011_09_30/2011_09_30_drive_0033_sync 1212 l
+2011_09_26/2011_09_26_drive_0079_sync 51 r
+2011_09_26/2011_09_26_drive_0039_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 4531 l
+2011_10_03/2011_10_03_drive_0034_sync 3683 l
+2011_09_26/2011_09_26_drive_0070_sync 159 r
+2011_09_26/2011_09_26_drive_0019_sync 106 l
+2011_09_29/2011_09_29_drive_0026_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 2151 l
+2011_10_03/2011_10_03_drive_0034_sync 796 r
+2011_09_26/2011_09_26_drive_0039_sync 367 r
+2011_09_26/2011_09_26_drive_0051_sync 307 r
+2011_09_30/2011_09_30_drive_0020_sync 361 l
+2011_09_30/2011_09_30_drive_0028_sync 4764 l
+2011_10_03/2011_10_03_drive_0042_sync 124 l
+2011_09_30/2011_09_30_drive_0034_sync 820 l
+2011_09_30/2011_09_30_drive_0020_sync 736 r
+2011_09_30/2011_09_30_drive_0034_sync 546 l
+2011_09_26/2011_09_26_drive_0032_sync 70 l
+2011_10_03/2011_10_03_drive_0034_sync 3511 l
+2011_09_30/2011_09_30_drive_0034_sync 1087 r
+2011_09_30/2011_09_30_drive_0028_sync 5062 r
+2011_09_30/2011_09_30_drive_0034_sync 385 l
+2011_09_26/2011_09_26_drive_0032_sync 110 r
+2011_10_03/2011_10_03_drive_0042_sync 680 l
+2011_09_30/2011_09_30_drive_0020_sync 876 r
+2011_09_30/2011_09_30_drive_0028_sync 4416 r
+2011_10_03/2011_10_03_drive_0042_sync 263 r
+2011_09_26/2011_09_26_drive_0011_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 5043 l
+2011_09_30/2011_09_30_drive_0028_sync 2579 l
+2011_09_30/2011_09_30_drive_0020_sync 1037 l
+2011_09_26/2011_09_26_drive_0022_sync 611 l
+2011_10_03/2011_10_03_drive_0034_sync 1273 l
+2011_09_26/2011_09_26_drive_0087_sync 134 r
+2011_09_30/2011_09_30_drive_0033_sync 812 r
+2011_09_30/2011_09_30_drive_0028_sync 4275 r
+2011_09_30/2011_09_30_drive_0028_sync 451 r
+2011_10_03/2011_10_03_drive_0034_sync 387 l
+2011_09_26/2011_09_26_drive_0018_sync 179 l
+2011_10_03/2011_10_03_drive_0034_sync 2604 r
+2011_10_03/2011_10_03_drive_0034_sync 340 r
+2011_09_30/2011_09_30_drive_0020_sync 318 r
+2011_09_26/2011_09_26_drive_0087_sync 720 l
+2011_10_03/2011_10_03_drive_0034_sync 4387 r
+2011_09_26/2011_09_26_drive_0022_sync 562 r
+2011_09_30/2011_09_30_drive_0028_sync 1279 l
+2011_10_03/2011_10_03_drive_0034_sync 3652 l
+2011_09_26/2011_09_26_drive_0014_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 2687 r
+2011_10_03/2011_10_03_drive_0034_sync 1471 l
+2011_09_30/2011_09_30_drive_0028_sync 1191 r
+2011_10_03/2011_10_03_drive_0034_sync 2273 l
+2011_09_26/2011_09_26_drive_0095_sync 54 l
+2011_09_30/2011_09_30_drive_0034_sync 653 r
+2011_09_30/2011_09_30_drive_0034_sync 500 r
+2011_10_03/2011_10_03_drive_0034_sync 2989 l
+2011_10_03/2011_10_03_drive_0034_sync 423 l
+2011_09_30/2011_09_30_drive_0028_sync 1985 r
+2011_09_26/2011_09_26_drive_0019_sync 361 r
+2011_09_29/2011_09_29_drive_0004_sync 55 l
+2011_09_26/2011_09_26_drive_0061_sync 400 r
+2011_10_03/2011_10_03_drive_0034_sync 1295 r
+2011_09_26/2011_09_26_drive_0019_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 3942 l
+2011_09_30/2011_09_30_drive_0028_sync 1357 l
+2011_10_03/2011_10_03_drive_0034_sync 104 l
+2011_10_03/2011_10_03_drive_0042_sync 703 l
+2011_09_30/2011_09_30_drive_0028_sync 1984 r
+2011_10_03/2011_10_03_drive_0034_sync 3625 r
+2011_09_30/2011_09_30_drive_0028_sync 2281 l
+2011_10_03/2011_10_03_drive_0042_sync 937 l
+2011_09_26/2011_09_26_drive_0051_sync 268 l
+2011_09_30/2011_09_30_drive_0020_sync 236 l
+2011_09_26/2011_09_26_drive_0018_sync 255 r
+2011_09_30/2011_09_30_drive_0020_sync 706 l
+2011_09_26/2011_09_26_drive_0087_sync 29 r
+2011_09_26/2011_09_26_drive_0032_sync 324 r
+2011_10_03/2011_10_03_drive_0034_sync 1778 l
+2011_09_26/2011_09_26_drive_0032_sync 272 l
+2011_09_26/2011_09_26_drive_0104_sync 258 l
+2011_10_03/2011_10_03_drive_0042_sync 1098 l
+2011_09_26/2011_09_26_drive_0091_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 3356 l
+2011_09_30/2011_09_30_drive_0020_sync 855 r
+2011_09_30/2011_09_30_drive_0028_sync 3552 l
+2011_09_26/2011_09_26_drive_0028_sync 140 r
+2011_09_26/2011_09_26_drive_0039_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 4118 r
+2011_09_30/2011_09_30_drive_0020_sync 115 r
+2011_10_03/2011_10_03_drive_0034_sync 3287 r
+2011_10_03/2011_10_03_drive_0034_sync 1485 l
+2011_10_03/2011_10_03_drive_0034_sync 2492 r
+2011_09_26/2011_09_26_drive_0087_sync 670 r
+2011_10_03/2011_10_03_drive_0042_sync 355 l
+2011_09_30/2011_09_30_drive_0033_sync 295 r
+2011_10_03/2011_10_03_drive_0034_sync 2749 r
+2011_09_30/2011_09_30_drive_0028_sync 4785 r
+2011_09_26/2011_09_26_drive_0022_sync 668 r
+2011_10_03/2011_10_03_drive_0034_sync 2137 l
+2011_09_30/2011_09_30_drive_0020_sync 890 r
+2011_09_30/2011_09_30_drive_0028_sync 4343 l
+2011_09_26/2011_09_26_drive_0019_sync 407 r
+2011_10_03/2011_10_03_drive_0034_sync 3558 l
+2011_09_26/2011_09_26_drive_0061_sync 101 r
+2011_09_26/2011_09_26_drive_0104_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 3620 l
+2011_09_30/2011_09_30_drive_0028_sync 800 l
+2011_10_03/2011_10_03_drive_0042_sync 404 l
+2011_09_26/2011_09_26_drive_0061_sync 42 l
+2011_10_03/2011_10_03_drive_0042_sync 307 r
+2011_10_03/2011_10_03_drive_0042_sync 359 l
+2011_09_30/2011_09_30_drive_0028_sync 2367 l
+2011_09_26/2011_09_26_drive_0079_sync 21 r
+2011_10_03/2011_10_03_drive_0042_sync 674 r
+2011_10_03/2011_10_03_drive_0034_sync 4521 l
+2011_09_30/2011_09_30_drive_0028_sync 1313 r
+2011_09_30/2011_09_30_drive_0028_sync 2951 l
+2011_09_26/2011_09_26_drive_0051_sync 227 r
+2011_09_29/2011_09_29_drive_0004_sync 300 r
+2011_09_30/2011_09_30_drive_0033_sync 1015 l
+2011_09_30/2011_09_30_drive_0028_sync 5040 l
+2011_09_26/2011_09_26_drive_0057_sync 16 r
+2011_09_30/2011_09_30_drive_0034_sync 567 r
+2011_09_30/2011_09_30_drive_0028_sync 592 r
+2011_10_03/2011_10_03_drive_0034_sync 587 r
+2011_10_03/2011_10_03_drive_0034_sync 544 r
+2011_09_26/2011_09_26_drive_0079_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 3897 r
+2011_10_03/2011_10_03_drive_0034_sync 799 r
+2011_09_30/2011_09_30_drive_0028_sync 1558 r
+2011_09_26/2011_09_26_drive_0011_sync 70 r
+2011_09_26/2011_09_26_drive_0061_sync 612 l
+2011_10_03/2011_10_03_drive_0034_sync 2379 l
+2011_09_26/2011_09_26_drive_0022_sync 183 l
+2011_10_03/2011_10_03_drive_0042_sync 589 r
+2011_10_03/2011_10_03_drive_0034_sync 3799 r
+2011_09_26/2011_09_26_drive_0087_sync 706 l
+2011_09_26/2011_09_26_drive_0079_sync 98 r
+2011_09_30/2011_09_30_drive_0034_sync 966 l
+2011_09_30/2011_09_30_drive_0020_sync 787 r
+2011_10_03/2011_10_03_drive_0034_sync 1237 l
+2011_09_30/2011_09_30_drive_0033_sync 388 r
+2011_09_26/2011_09_26_drive_0061_sync 498 l
+2011_09_26/2011_09_26_drive_0005_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 160 r
+2011_09_30/2011_09_30_drive_0033_sync 1348 l
+2011_09_30/2011_09_30_drive_0028_sync 4895 l
+2011_09_30/2011_09_30_drive_0028_sync 1821 r
+2011_10_03/2011_10_03_drive_0034_sync 3979 l
+2011_09_30/2011_09_30_drive_0028_sync 1156 r
+2011_09_29/2011_09_29_drive_0026_sync 136 l
+2011_09_26/2011_09_26_drive_0017_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 586 l
+2011_09_26/2011_09_26_drive_0014_sync 287 l
+2011_09_26/2011_09_26_drive_0087_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 2572 l
+2011_10_03/2011_10_03_drive_0034_sync 1521 r
+2011_10_03/2011_10_03_drive_0034_sync 1645 l
+2011_09_26/2011_09_26_drive_0015_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 637 l
+2011_09_26/2011_09_26_drive_0022_sync 572 l
+2011_09_26/2011_09_26_drive_0091_sync 274 r
+2011_09_26/2011_09_26_drive_0087_sync 114 r
+2011_10_03/2011_10_03_drive_0034_sync 3377 l
+2011_09_30/2011_09_30_drive_0028_sync 1476 l
+2011_10_03/2011_10_03_drive_0034_sync 851 r
+2011_09_26/2011_09_26_drive_0070_sync 293 r
+2011_09_30/2011_09_30_drive_0028_sync 2708 l
+2011_09_26/2011_09_26_drive_0022_sync 537 l
+2011_09_26/2011_09_26_drive_0014_sync 301 r
+2011_09_26/2011_09_26_drive_0028_sync 414 r
+2011_10_03/2011_10_03_drive_0034_sync 3170 r
+2011_09_26/2011_09_26_drive_0087_sync 603 r
+2011_09_26/2011_09_26_drive_0019_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 2776 l
+2011_09_26/2011_09_26_drive_0051_sync 276 r
+2011_09_30/2011_09_30_drive_0033_sync 1049 l
+2011_09_26/2011_09_26_drive_0019_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 1171 l
+2011_09_26/2011_09_26_drive_0019_sync 184 r
+2011_10_03/2011_10_03_drive_0042_sync 755 l
+2011_09_30/2011_09_30_drive_0028_sync 1206 l
+2011_10_03/2011_10_03_drive_0042_sync 346 l
+2011_09_30/2011_09_30_drive_0033_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 4839 r
+2011_09_26/2011_09_26_drive_0005_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 775 r
+2011_09_30/2011_09_30_drive_0028_sync 2547 l
+2011_09_26/2011_09_26_drive_0032_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 2556 l
+2011_09_26/2011_09_26_drive_0032_sync 296 l
+2011_09_30/2011_09_30_drive_0028_sync 3369 r
+2011_09_30/2011_09_30_drive_0028_sync 2464 l
+2011_10_03/2011_10_03_drive_0034_sync 2613 l
+2011_10_03/2011_10_03_drive_0034_sync 1594 l
+2011_09_26/2011_09_26_drive_0087_sync 503 r
+2011_10_03/2011_10_03_drive_0034_sync 999 l
+2011_09_26/2011_09_26_drive_0091_sync 128 r
+2011_09_29/2011_09_29_drive_0004_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 1666 l
+2011_09_26/2011_09_26_drive_0061_sync 638 l
+2011_09_30/2011_09_30_drive_0028_sync 3149 r
+2011_09_30/2011_09_30_drive_0028_sync 4660 r
+2011_10_03/2011_10_03_drive_0034_sync 3885 l
+2011_09_30/2011_09_30_drive_0028_sync 1686 l
+2011_10_03/2011_10_03_drive_0042_sync 45 l
+2011_09_30/2011_09_30_drive_0034_sync 419 l
+2011_09_30/2011_09_30_drive_0028_sync 3961 r
+2011_09_30/2011_09_30_drive_0020_sync 1073 r
+2011_09_26/2011_09_26_drive_0018_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 2455 l
+2011_10_03/2011_10_03_drive_0034_sync 2578 l
+2011_09_30/2011_09_30_drive_0033_sync 1514 r
+2011_10_03/2011_10_03_drive_0034_sync 1202 r
+2011_10_03/2011_10_03_drive_0034_sync 1790 l
+2011_10_03/2011_10_03_drive_0034_sync 4580 l
+2011_09_26/2011_09_26_drive_0091_sync 313 r
+2011_09_26/2011_09_26_drive_0087_sync 648 l
+2011_09_26/2011_09_26_drive_0051_sync 352 l
+2011_10_03/2011_10_03_drive_0034_sync 660 l
+2011_09_29/2011_09_29_drive_0004_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 1086 l
+2011_10_03/2011_10_03_drive_0034_sync 2282 r
+2011_10_03/2011_10_03_drive_0034_sync 3429 l
+2011_09_30/2011_09_30_drive_0020_sync 525 l
+2011_09_30/2011_09_30_drive_0028_sync 3552 r
+2011_09_26/2011_09_26_drive_0061_sync 697 r
+2011_09_30/2011_09_30_drive_0033_sync 1390 l
+2011_09_29/2011_09_29_drive_0004_sync 103 l
+2011_09_26/2011_09_26_drive_0005_sync 131 r
+2011_10_03/2011_10_03_drive_0034_sync 1440 r
+2011_10_03/2011_10_03_drive_0034_sync 732 r
+2011_09_30/2011_09_30_drive_0028_sync 3057 l
+2011_09_26/2011_09_26_drive_0022_sync 163 r
+2011_09_26/2011_09_26_drive_0087_sync 705 r
+2011_09_30/2011_09_30_drive_0028_sync 3895 l
+2011_10_03/2011_10_03_drive_0042_sync 1082 r
+2011_10_03/2011_10_03_drive_0042_sync 252 l
+2011_09_30/2011_09_30_drive_0028_sync 801 l
+2011_09_26/2011_09_26_drive_0035_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 4299 r
+2011_10_03/2011_10_03_drive_0034_sync 2903 r
+2011_09_30/2011_09_30_drive_0028_sync 1843 r
+2011_09_26/2011_09_26_drive_0011_sync 208 l
+2011_09_26/2011_09_26_drive_0022_sync 708 l
+2011_09_30/2011_09_30_drive_0028_sync 1985 l
+2011_09_26/2011_09_26_drive_0039_sync 31 r
+2011_09_29/2011_09_29_drive_0004_sync 292 r
+2011_10_03/2011_10_03_drive_0042_sync 804 r
+2011_09_30/2011_09_30_drive_0020_sync 1013 l
+2011_10_03/2011_10_03_drive_0034_sync 4068 l
+2011_09_30/2011_09_30_drive_0028_sync 3709 r
+2011_09_26/2011_09_26_drive_0017_sync 7 r
+2011_09_26/2011_09_26_drive_0015_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 4427 r
+2011_09_30/2011_09_30_drive_0034_sync 518 l
+2011_10_03/2011_10_03_drive_0034_sync 2367 r
+2011_09_30/2011_09_30_drive_0028_sync 2312 r
+2011_10_03/2011_10_03_drive_0042_sync 20 r
+2011_09_26/2011_09_26_drive_0087_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 4600 r
+2011_09_30/2011_09_30_drive_0028_sync 873 r
+2011_10_03/2011_10_03_drive_0034_sync 4201 r
+2011_09_26/2011_09_26_drive_0070_sync 308 r
+2011_10_03/2011_10_03_drive_0034_sync 402 l
+2011_09_26/2011_09_26_drive_0005_sync 59 r
+2011_09_29/2011_09_29_drive_0004_sync 246 l
+2011_09_26/2011_09_26_drive_0061_sync 37 l
+2011_09_26/2011_09_26_drive_0051_sync 200 r
+2011_10_03/2011_10_03_drive_0034_sync 1578 l
+2011_09_30/2011_09_30_drive_0028_sync 4348 r
+2011_10_03/2011_10_03_drive_0042_sync 644 l
+2011_10_03/2011_10_03_drive_0034_sync 4281 l
+2011_10_03/2011_10_03_drive_0034_sync 2048 l
+2011_09_30/2011_09_30_drive_0028_sync 4502 r
+2011_09_30/2011_09_30_drive_0028_sync 1356 l
+2011_10_03/2011_10_03_drive_0034_sync 1042 r
+2011_10_03/2011_10_03_drive_0042_sync 963 l
+2011_09_26/2011_09_26_drive_0104_sync 255 r
+2011_10_03/2011_10_03_drive_0034_sync 3399 r
+2011_09_30/2011_09_30_drive_0028_sync 4069 r
+2011_09_26/2011_09_26_drive_0017_sync 58 l
+2011_10_03/2011_10_03_drive_0034_sync 2629 r
+2011_09_26/2011_09_26_drive_0070_sync 210 l
+2011_09_26/2011_09_26_drive_0022_sync 290 l
+2011_09_30/2011_09_30_drive_0034_sync 166 l
+2011_09_26/2011_09_26_drive_0022_sync 716 l
+2011_10_03/2011_10_03_drive_0034_sync 3549 r
+2011_09_30/2011_09_30_drive_0028_sync 3349 r
+2011_09_30/2011_09_30_drive_0033_sync 85 r
+2011_09_29/2011_09_29_drive_0004_sync 185 l
+2011_09_26/2011_09_26_drive_0087_sync 286 l
+2011_09_30/2011_09_30_drive_0020_sync 195 l
+2011_09_26/2011_09_26_drive_0015_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 1666 r
+2011_09_30/2011_09_30_drive_0033_sync 990 l
+2011_09_26/2011_09_26_drive_0061_sync 408 r
+2011_10_03/2011_10_03_drive_0034_sync 2590 r
+2011_09_26/2011_09_26_drive_0061_sync 542 r
+2011_09_26/2011_09_26_drive_0051_sync 95 l
+2011_09_30/2011_09_30_drive_0033_sync 598 r
+2011_10_03/2011_10_03_drive_0034_sync 3639 r
+2011_10_03/2011_10_03_drive_0042_sync 738 r
+2011_10_03/2011_10_03_drive_0034_sync 2606 r
+2011_09_30/2011_09_30_drive_0028_sync 818 r
+2011_09_26/2011_09_26_drive_0022_sync 282 l
+2011_09_26/2011_09_26_drive_0061_sync 377 r
+2011_10_03/2011_10_03_drive_0034_sync 2524 r
+2011_09_30/2011_09_30_drive_0028_sync 3795 l
+2011_09_26/2011_09_26_drive_0019_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 567 r
+2011_09_26/2011_09_26_drive_0022_sync 750 l
+2011_09_30/2011_09_30_drive_0028_sync 595 r
+2011_10_03/2011_10_03_drive_0042_sync 957 l
+2011_10_03/2011_10_03_drive_0034_sync 1321 l
+2011_09_30/2011_09_30_drive_0028_sync 4659 r
+2011_10_03/2011_10_03_drive_0034_sync 1683 r
+2011_09_30/2011_09_30_drive_0033_sync 1126 l
+2011_09_30/2011_09_30_drive_0020_sync 917 l
+2011_10_03/2011_10_03_drive_0034_sync 2304 l
+2011_09_26/2011_09_26_drive_0001_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 3245 r
+2011_09_30/2011_09_30_drive_0028_sync 2079 l
+2011_09_26/2011_09_26_drive_0057_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 719 l
+2011_09_30/2011_09_30_drive_0028_sync 3140 l
+2011_09_26/2011_09_26_drive_0051_sync 47 r
+2011_09_26/2011_09_26_drive_0104_sync 17 l
+2011_09_26/2011_09_26_drive_0091_sync 297 l
+2011_09_30/2011_09_30_drive_0033_sync 1586 r
+2011_09_26/2011_09_26_drive_0051_sync 178 l
+2011_09_26/2011_09_26_drive_0015_sync 50 l
+2011_09_30/2011_09_30_drive_0033_sync 946 l
+2011_09_26/2011_09_26_drive_0017_sync 94 r
+2011_09_26/2011_09_26_drive_0061_sync 376 r
+2011_09_26/2011_09_26_drive_0095_sync 135 l
+2011_10_03/2011_10_03_drive_0042_sync 669 l
+2011_09_30/2011_09_30_drive_0034_sync 1081 l
+2011_09_26/2011_09_26_drive_0022_sync 534 r
+2011_09_26/2011_09_26_drive_0028_sync 175 l
+2011_09_26/2011_09_26_drive_0019_sync 230 r
+2011_09_30/2011_09_30_drive_0020_sync 663 r
+2011_10_03/2011_10_03_drive_0034_sync 909 r
+2011_10_03/2011_10_03_drive_0034_sync 1619 l
+2011_10_03/2011_10_03_drive_0042_sync 1004 l
+2011_10_03/2011_10_03_drive_0034_sync 2127 r
+2011_09_30/2011_09_30_drive_0028_sync 4715 l
+2011_10_03/2011_10_03_drive_0042_sync 759 r
+2011_10_03/2011_10_03_drive_0034_sync 9 l
+2011_09_26/2011_09_26_drive_0014_sync 62 r
+2011_09_30/2011_09_30_drive_0028_sync 256 l
+2011_09_26/2011_09_26_drive_0061_sync 612 r
+2011_09_26/2011_09_26_drive_0057_sync 17 r
+2011_10_03/2011_10_03_drive_0034_sync 1635 r
+2011_09_30/2011_09_30_drive_0034_sync 148 l
+2011_09_29/2011_09_29_drive_0004_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 1320 l
+2011_09_26/2011_09_26_drive_0028_sync 119 l
+2011_09_30/2011_09_30_drive_0028_sync 4593 l
+2011_09_30/2011_09_30_drive_0028_sync 1850 l
+2011_09_26/2011_09_26_drive_0087_sync 168 r
+2011_09_26/2011_09_26_drive_0087_sync 413 r
+2011_09_30/2011_09_30_drive_0028_sync 4610 l
+2011_09_30/2011_09_30_drive_0028_sync 3449 l
+2011_09_26/2011_09_26_drive_0035_sync 32 r
+2011_09_26/2011_09_26_drive_0070_sync 2 r
+2011_09_26/2011_09_26_drive_0019_sync 333 r
+2011_09_26/2011_09_26_drive_0014_sync 241 l
+2011_09_30/2011_09_30_drive_0028_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 2343 l
+2011_09_30/2011_09_30_drive_0028_sync 1325 l
+2011_09_26/2011_09_26_drive_0018_sync 16 r
+2011_09_26/2011_09_26_drive_0061_sync 560 l
+2011_10_03/2011_10_03_drive_0042_sync 1113 r
+2011_09_30/2011_09_30_drive_0034_sync 904 r
+2011_10_03/2011_10_03_drive_0034_sync 3464 l
+2011_10_03/2011_10_03_drive_0042_sync 427 r
+2011_10_03/2011_10_03_drive_0034_sync 4133 l
+2011_09_26/2011_09_26_drive_0057_sync 221 l
+2011_09_30/2011_09_30_drive_0028_sync 2506 r
+2011_09_26/2011_09_26_drive_0051_sync 297 l
+2011_09_26/2011_09_26_drive_0001_sync 97 l
+2011_09_30/2011_09_30_drive_0020_sync 407 l
+2011_09_30/2011_09_30_drive_0034_sync 1179 l
+2011_10_03/2011_10_03_drive_0034_sync 4445 r
+2011_10_03/2011_10_03_drive_0034_sync 288 r
+2011_09_26/2011_09_26_drive_0017_sync 108 l
+2011_09_26/2011_09_26_drive_0015_sync 131 l
+2011_10_03/2011_10_03_drive_0034_sync 1798 l
+2011_09_26/2011_09_26_drive_0057_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 1845 r
+2011_09_26/2011_09_26_drive_0070_sync 121 r
+2011_09_30/2011_09_30_drive_0028_sync 3929 l
+2011_09_30/2011_09_30_drive_0033_sync 1192 r
+2011_09_26/2011_09_26_drive_0051_sync 432 l
+2011_09_26/2011_09_26_drive_0032_sync 188 l
+2011_09_26/2011_09_26_drive_0022_sync 599 r
+2011_09_30/2011_09_30_drive_0028_sync 1338 l
+2011_09_26/2011_09_26_drive_0091_sync 325 l
+2011_10_03/2011_10_03_drive_0042_sync 1139 l
+2011_09_30/2011_09_30_drive_0028_sync 1353 r
+2011_09_30/2011_09_30_drive_0028_sync 3571 r
+2011_10_03/2011_10_03_drive_0034_sync 1078 l
+2011_09_30/2011_09_30_drive_0033_sync 138 r
+2011_09_26/2011_09_26_drive_0070_sync 269 l
+2011_09_26/2011_09_26_drive_0051_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 3668 r
+2011_09_30/2011_09_30_drive_0020_sync 624 r
+2011_09_29/2011_09_29_drive_0026_sync 68 l
+2011_09_26/2011_09_26_drive_0061_sync 188 r
+2011_09_30/2011_09_30_drive_0028_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 3750 r
+2011_09_26/2011_09_26_drive_0095_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 1161 r
+2011_10_03/2011_10_03_drive_0034_sync 2638 r
+2011_09_30/2011_09_30_drive_0028_sync 3359 l
+2011_09_30/2011_09_30_drive_0028_sync 4031 r
+2011_09_30/2011_09_30_drive_0028_sync 3974 l
+2011_09_30/2011_09_30_drive_0028_sync 4969 l
+2011_09_26/2011_09_26_drive_0014_sync 117 r
+2011_09_26/2011_09_26_drive_0019_sync 431 r
+2011_09_30/2011_09_30_drive_0028_sync 2870 r
+2011_09_30/2011_09_30_drive_0020_sync 397 l
+2011_09_26/2011_09_26_drive_0015_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 1825 l
+2011_09_30/2011_09_30_drive_0028_sync 5175 l
+2011_10_03/2011_10_03_drive_0034_sync 2019 l
+2011_09_30/2011_09_30_drive_0028_sync 580 l
+2011_09_26/2011_09_26_drive_0028_sync 228 l
+2011_09_26/2011_09_26_drive_0057_sync 241 l
+2011_10_03/2011_10_03_drive_0042_sync 1019 r
+2011_09_30/2011_09_30_drive_0034_sync 1027 l
+2011_10_03/2011_10_03_drive_0042_sync 779 r
+2011_09_26/2011_09_26_drive_0019_sync 256 l
+2011_09_26/2011_09_26_drive_0022_sync 72 r
+2011_09_26/2011_09_26_drive_0028_sync 322 l
+2011_09_26/2011_09_26_drive_0022_sync 428 r
+2011_09_30/2011_09_30_drive_0028_sync 606 l
+2011_09_26/2011_09_26_drive_0019_sync 359 l
+2011_09_30/2011_09_30_drive_0028_sync 3087 r
+2011_09_30/2011_09_30_drive_0028_sync 1371 r
+2011_09_26/2011_09_26_drive_0057_sync 83 r
+2011_09_30/2011_09_30_drive_0028_sync 2262 l
+2011_09_26/2011_09_26_drive_0022_sync 720 r
+2011_10_03/2011_10_03_drive_0034_sync 3177 l
+2011_09_26/2011_09_26_drive_0039_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 3053 l
+2011_09_26/2011_09_26_drive_0032_sync 223 r
+2011_09_26/2011_09_26_drive_0019_sync 163 r
+2011_09_30/2011_09_30_drive_0028_sync 3027 l
+2011_09_30/2011_09_30_drive_0028_sync 250 l
+2011_09_30/2011_09_30_drive_0028_sync 4272 r
+2011_09_26/2011_09_26_drive_0032_sync 194 l
+2011_09_30/2011_09_30_drive_0033_sync 476 l
+2011_09_30/2011_09_30_drive_0028_sync 3366 r
+2011_10_03/2011_10_03_drive_0042_sync 524 l
+2011_10_03/2011_10_03_drive_0034_sync 1017 l
+2011_09_26/2011_09_26_drive_0022_sync 697 l
+2011_09_30/2011_09_30_drive_0033_sync 672 r
+2011_09_30/2011_09_30_drive_0028_sync 951 l
+2011_09_26/2011_09_26_drive_0028_sync 129 r
+2011_09_30/2011_09_30_drive_0034_sync 970 l
+2011_09_26/2011_09_26_drive_0051_sync 426 l
+2011_10_03/2011_10_03_drive_0034_sync 983 r
+2011_09_26/2011_09_26_drive_0028_sync 128 r
+2011_09_26/2011_09_26_drive_0011_sync 183 l
+2011_09_30/2011_09_30_drive_0028_sync 4350 l
+2011_09_30/2011_09_30_drive_0028_sync 4483 r
+2011_09_26/2011_09_26_drive_0113_sync 51 r
+2011_09_26/2011_09_26_drive_0014_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 1583 l
+2011_09_30/2011_09_30_drive_0028_sync 3854 l
+2011_09_30/2011_09_30_drive_0028_sync 3435 l
+2011_09_26/2011_09_26_drive_0061_sync 341 l
+2011_09_30/2011_09_30_drive_0028_sync 1271 r
+2011_09_30/2011_09_30_drive_0028_sync 3472 r
+2011_09_30/2011_09_30_drive_0034_sync 69 l
+2011_09_26/2011_09_26_drive_0005_sync 49 r
+2011_09_26/2011_09_26_drive_0028_sync 229 r
+2011_09_26/2011_09_26_drive_0095_sync 83 r
+2011_09_30/2011_09_30_drive_0033_sync 1346 l
+2011_09_26/2011_09_26_drive_0019_sync 246 l
+2011_10_03/2011_10_03_drive_0042_sync 217 r
+2011_09_26/2011_09_26_drive_0061_sync 330 l
+2011_09_26/2011_09_26_drive_0039_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 3367 r
+2011_10_03/2011_10_03_drive_0034_sync 1135 r
+2011_09_26/2011_09_26_drive_0001_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 1852 r
+2011_09_30/2011_09_30_drive_0028_sync 2470 l
+2011_09_26/2011_09_26_drive_0057_sync 119 r
+2011_09_26/2011_09_26_drive_0087_sync 186 r
+2011_09_26/2011_09_26_drive_0018_sync 141 l
+2011_09_30/2011_09_30_drive_0020_sync 327 l
+2011_09_29/2011_09_29_drive_0004_sync 223 l
+2011_10_03/2011_10_03_drive_0034_sync 2626 r
+2011_09_26/2011_09_26_drive_0104_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 3301 r
+2011_09_26/2011_09_26_drive_0001_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 3006 l
+2011_09_30/2011_09_30_drive_0028_sync 1133 r
+2011_09_26/2011_09_26_drive_0051_sync 173 l
+2011_09_26/2011_09_26_drive_0018_sync 260 r
+2011_09_26/2011_09_26_drive_0017_sync 52 r
+2011_09_26/2011_09_26_drive_0032_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 1652 l
+2011_10_03/2011_10_03_drive_0034_sync 4229 l
+2011_09_26/2011_09_26_drive_0087_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 372 l
+2011_09_30/2011_09_30_drive_0020_sync 410 l
+2011_10_03/2011_10_03_drive_0034_sync 894 r
+2011_09_26/2011_09_26_drive_0087_sync 250 l
+2011_10_03/2011_10_03_drive_0042_sync 862 r
+2011_10_03/2011_10_03_drive_0034_sync 3670 l
+2011_09_26/2011_09_26_drive_0104_sync 70 l
+2011_09_30/2011_09_30_drive_0028_sync 1071 l
+2011_10_03/2011_10_03_drive_0042_sync 864 l
+2011_09_30/2011_09_30_drive_0020_sync 929 r
+2011_09_30/2011_09_30_drive_0028_sync 3005 l
+2011_09_30/2011_09_30_drive_0028_sync 2057 r
+2011_09_30/2011_09_30_drive_0028_sync 680 l
+2011_09_30/2011_09_30_drive_0033_sync 939 r
+2011_09_30/2011_09_30_drive_0034_sync 800 r
+2011_09_26/2011_09_26_drive_0028_sync 255 l
+2011_10_03/2011_10_03_drive_0034_sync 639 r
+2011_09_26/2011_09_26_drive_0015_sync 64 r
+2011_09_26/2011_09_26_drive_0039_sync 135 l
+2011_09_26/2011_09_26_drive_0051_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 2005 r
+2011_09_30/2011_09_30_drive_0028_sync 2775 l
+2011_10_03/2011_10_03_drive_0034_sync 550 l
+2011_09_30/2011_09_30_drive_0033_sync 1501 r
+2011_10_03/2011_10_03_drive_0042_sync 1057 r
+2011_09_29/2011_09_29_drive_0026_sync 94 l
+2011_09_26/2011_09_26_drive_0032_sync 174 l
+2011_09_26/2011_09_26_drive_0061_sync 683 r
+2011_09_26/2011_09_26_drive_0019_sync 177 r
+2011_10_03/2011_10_03_drive_0034_sync 2264 r
+2011_09_30/2011_09_30_drive_0028_sync 2472 r
+2011_09_30/2011_09_30_drive_0028_sync 928 l
+2011_09_30/2011_09_30_drive_0028_sync 5167 r
+2011_10_03/2011_10_03_drive_0034_sync 4121 l
+2011_10_03/2011_10_03_drive_0034_sync 1899 l
+2011_10_03/2011_10_03_drive_0034_sync 968 l
+2011_09_30/2011_09_30_drive_0034_sync 716 r
+2011_09_26/2011_09_26_drive_0005_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 3013 l
+2011_09_30/2011_09_30_drive_0028_sync 4036 r
+2011_09_26/2011_09_26_drive_0022_sync 412 r
+2011_10_03/2011_10_03_drive_0034_sync 4222 l
+2011_09_30/2011_09_30_drive_0034_sync 183 r
+2011_09_26/2011_09_26_drive_0014_sync 313 l
+2011_09_30/2011_09_30_drive_0020_sync 858 l
+2011_10_03/2011_10_03_drive_0034_sync 305 l
+2011_09_30/2011_09_30_drive_0034_sync 946 l
+2011_09_26/2011_09_26_drive_0039_sync 193 r
+2011_09_30/2011_09_30_drive_0028_sync 2539 r
+2011_09_26/2011_09_26_drive_0022_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 4347 r
+2011_09_26/2011_09_26_drive_0095_sync 250 r
+2011_09_26/2011_09_26_drive_0022_sync 770 l
+2011_09_30/2011_09_30_drive_0033_sync 756 r
+2011_09_26/2011_09_26_drive_0018_sync 156 r
+2011_09_30/2011_09_30_drive_0028_sync 3366 l
+2011_09_26/2011_09_26_drive_0039_sync 22 l
+2011_09_26/2011_09_26_drive_0001_sync 65 l
+2011_09_30/2011_09_30_drive_0028_sync 3254 r
+2011_10_03/2011_10_03_drive_0042_sync 707 l
+2011_09_30/2011_09_30_drive_0028_sync 1402 r
+2011_10_03/2011_10_03_drive_0034_sync 3293 l
+2011_09_30/2011_09_30_drive_0028_sync 5085 l
+2011_10_03/2011_10_03_drive_0034_sync 760 l
+2011_09_26/2011_09_26_drive_0019_sync 353 l
+2011_10_03/2011_10_03_drive_0042_sync 42 l
+2011_10_03/2011_10_03_drive_0034_sync 4555 l
+2011_09_26/2011_09_26_drive_0028_sync 151 l
+2011_09_26/2011_09_26_drive_0061_sync 401 l
+2011_10_03/2011_10_03_drive_0034_sync 143 r
+2011_09_26/2011_09_26_drive_0032_sync 34 r
+2011_09_26/2011_09_26_drive_0104_sync 200 l
+2011_10_03/2011_10_03_drive_0034_sync 1294 r
+2011_09_26/2011_09_26_drive_0104_sync 72 l
+2011_09_30/2011_09_30_drive_0033_sync 1299 l
+2011_10_03/2011_10_03_drive_0034_sync 2195 r
+2011_10_03/2011_10_03_drive_0034_sync 1489 r
+2011_09_26/2011_09_26_drive_0087_sync 577 l
+2011_10_03/2011_10_03_drive_0034_sync 3009 r
+2011_09_26/2011_09_26_drive_0015_sync 228 l
+2011_09_30/2011_09_30_drive_0028_sync 4469 r
+2011_09_29/2011_09_29_drive_0004_sync 78 l
+2011_09_26/2011_09_26_drive_0022_sync 49 l
+2011_09_26/2011_09_26_drive_0061_sync 104 r
+2011_09_26/2011_09_26_drive_0057_sync 284 l
+2011_09_26/2011_09_26_drive_0015_sync 101 l
+2011_09_26/2011_09_26_drive_0051_sync 143 l
+2011_10_03/2011_10_03_drive_0034_sync 1492 r
+2011_09_30/2011_09_30_drive_0028_sync 1444 l
+2011_09_30/2011_09_30_drive_0020_sync 460 l
+2011_09_30/2011_09_30_drive_0034_sync 671 r
+2011_09_30/2011_09_30_drive_0020_sync 192 r
+2011_09_30/2011_09_30_drive_0020_sync 326 l
+2011_09_30/2011_09_30_drive_0028_sync 4548 r
+2011_09_30/2011_09_30_drive_0028_sync 2066 l
+2011_09_30/2011_09_30_drive_0028_sync 1032 r
+2011_09_26/2011_09_26_drive_0039_sync 154 r
+2011_09_26/2011_09_26_drive_0005_sync 136 l
+2011_09_26/2011_09_26_drive_0039_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 2207 l
+2011_09_30/2011_09_30_drive_0028_sync 1920 r
+2011_09_30/2011_09_30_drive_0034_sync 833 r
+2011_09_30/2011_09_30_drive_0028_sync 4710 l
+2011_09_26/2011_09_26_drive_0061_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 4475 r
+2011_09_30/2011_09_30_drive_0028_sync 3331 r
+2011_09_26/2011_09_26_drive_0022_sync 523 l
+2011_09_30/2011_09_30_drive_0028_sync 1100 r
+2011_09_30/2011_09_30_drive_0028_sync 4432 l
+2011_10_03/2011_10_03_drive_0034_sync 2611 l
+2011_09_30/2011_09_30_drive_0028_sync 4839 l
+2011_09_30/2011_09_30_drive_0033_sync 1040 l
+2011_10_03/2011_10_03_drive_0034_sync 1224 l
+2011_09_26/2011_09_26_drive_0057_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 3324 l
+2011_09_26/2011_09_26_drive_0051_sync 253 r
+2011_09_26/2011_09_26_drive_0070_sync 345 l
+2011_09_26/2011_09_26_drive_0015_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 892 r
+2011_09_30/2011_09_30_drive_0033_sync 433 r
+2011_09_30/2011_09_30_drive_0028_sync 4329 l
+2011_09_30/2011_09_30_drive_0034_sync 135 r
+2011_10_03/2011_10_03_drive_0034_sync 2220 r
+2011_09_30/2011_09_30_drive_0028_sync 3419 l
+2011_09_30/2011_09_30_drive_0028_sync 637 r
+2011_09_26/2011_09_26_drive_0104_sync 207 l
+2011_10_03/2011_10_03_drive_0042_sync 607 r
+2011_09_30/2011_09_30_drive_0028_sync 1261 l
+2011_09_26/2011_09_26_drive_0087_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 1342 l
+2011_09_26/2011_09_26_drive_0035_sync 70 l
+2011_09_26/2011_09_26_drive_0104_sync 78 l
+2011_10_03/2011_10_03_drive_0034_sync 4192 r
+2011_09_30/2011_09_30_drive_0028_sync 2874 l
+2011_09_26/2011_09_26_drive_0028_sync 145 l
+2011_09_28/2011_09_28_drive_0001_sync 68 l
+2011_09_26/2011_09_26_drive_0079_sync 19 r
+2011_09_30/2011_09_30_drive_0020_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 2216 l
+2011_09_26/2011_09_26_drive_0014_sync 151 r
+2011_10_03/2011_10_03_drive_0042_sync 561 l
+2011_09_26/2011_09_26_drive_0051_sync 298 r
+2011_09_26/2011_09_26_drive_0060_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 4148 r
+2011_09_30/2011_09_30_drive_0034_sync 842 r
+2011_09_30/2011_09_30_drive_0033_sync 1236 l
+2011_09_30/2011_09_30_drive_0028_sync 289 l
+2011_09_26/2011_09_26_drive_0028_sync 197 l
+2011_09_30/2011_09_30_drive_0028_sync 473 r
+2011_09_30/2011_09_30_drive_0028_sync 2433 l
+2011_09_30/2011_09_30_drive_0034_sync 58 l
+2011_09_26/2011_09_26_drive_0060_sync 29 r
+2011_09_26/2011_09_26_drive_0032_sync 119 r
+2011_09_30/2011_09_30_drive_0034_sync 973 l
+2011_09_30/2011_09_30_drive_0028_sync 781 r
+2011_09_30/2011_09_30_drive_0028_sync 1319 r
+2011_09_26/2011_09_26_drive_0019_sync 18 l
+2011_09_30/2011_09_30_drive_0033_sync 1290 r
+2011_09_30/2011_09_30_drive_0028_sync 4124 r
+2011_09_30/2011_09_30_drive_0028_sync 4745 l
+2011_10_03/2011_10_03_drive_0034_sync 4462 l
+2011_10_03/2011_10_03_drive_0034_sync 552 l
+2011_10_03/2011_10_03_drive_0034_sync 3674 l
+2011_09_30/2011_09_30_drive_0028_sync 1944 l
+2011_09_30/2011_09_30_drive_0028_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 295 l
+2011_09_26/2011_09_26_drive_0028_sync 391 l
+2011_09_30/2011_09_30_drive_0028_sync 510 l
+2011_10_03/2011_10_03_drive_0034_sync 986 l
+2011_09_30/2011_09_30_drive_0028_sync 3300 r
+2011_09_30/2011_09_30_drive_0028_sync 3112 r
+2011_09_26/2011_09_26_drive_0091_sync 172 r
+2011_09_30/2011_09_30_drive_0033_sync 1032 l
+2011_10_03/2011_10_03_drive_0042_sync 964 l
+2011_09_30/2011_09_30_drive_0033_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 2654 r
+2011_10_03/2011_10_03_drive_0034_sync 4240 r
+2011_09_30/2011_09_30_drive_0028_sync 4020 l
+2011_09_30/2011_09_30_drive_0033_sync 1104 l
+2011_09_26/2011_09_26_drive_0051_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 2837 r
+2011_09_30/2011_09_30_drive_0028_sync 441 l
+2011_10_03/2011_10_03_drive_0034_sync 2442 r
+2011_10_03/2011_10_03_drive_0042_sync 156 r
+2011_10_03/2011_10_03_drive_0034_sync 580 l
+2011_09_30/2011_09_30_drive_0028_sync 3052 l
+2011_09_29/2011_09_29_drive_0026_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 2560 l
+2011_10_03/2011_10_03_drive_0034_sync 2 l
+2011_09_26/2011_09_26_drive_0028_sync 129 l
+2011_09_26/2011_09_26_drive_0061_sync 33 l
+2011_10_03/2011_10_03_drive_0034_sync 483 r
+2011_09_30/2011_09_30_drive_0028_sync 1289 l
+2011_10_03/2011_10_03_drive_0034_sync 1107 l
+2011_09_30/2011_09_30_drive_0034_sync 1214 r
+2011_09_30/2011_09_30_drive_0033_sync 837 r
+2011_09_30/2011_09_30_drive_0028_sync 4968 r
+2011_09_26/2011_09_26_drive_0018_sync 76 l
+2011_10_03/2011_10_03_drive_0034_sync 3558 r
+2011_10_03/2011_10_03_drive_0042_sync 835 r
+2011_09_30/2011_09_30_drive_0033_sync 1211 r
+2011_09_30/2011_09_30_drive_0020_sync 566 r
+2011_10_03/2011_10_03_drive_0034_sync 3679 l
+2011_09_26/2011_09_26_drive_0015_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 4698 l
+2011_09_30/2011_09_30_drive_0020_sync 51 l
+2011_09_26/2011_09_26_drive_0057_sync 328 l
+2011_09_30/2011_09_30_drive_0028_sync 843 l
+2011_09_26/2011_09_26_drive_0061_sync 425 r
+2011_09_30/2011_09_30_drive_0028_sync 2287 r
+2011_09_30/2011_09_30_drive_0020_sync 782 l
+2011_09_26/2011_09_26_drive_0022_sync 790 l
+2011_09_26/2011_09_26_drive_0104_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 1259 r
+2011_09_29/2011_09_29_drive_0004_sync 35 r
+2011_09_30/2011_09_30_drive_0034_sync 212 l
+2011_09_26/2011_09_26_drive_0015_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 164 l
+2011_09_30/2011_09_30_drive_0020_sync 835 r
+2011_09_26/2011_09_26_drive_0022_sync 629 l
+2011_09_26/2011_09_26_drive_0087_sync 285 r
+2011_09_26/2011_09_26_drive_0087_sync 233 r
+2011_09_30/2011_09_30_drive_0028_sync 998 l
+2011_09_30/2011_09_30_drive_0033_sync 811 l
+2011_09_30/2011_09_30_drive_0033_sync 345 r
+2011_10_03/2011_10_03_drive_0034_sync 1880 l
+2011_09_26/2011_09_26_drive_0019_sync 38 r
+2011_10_03/2011_10_03_drive_0034_sync 2389 r
+2011_09_30/2011_09_30_drive_0033_sync 847 r
+2011_09_30/2011_09_30_drive_0028_sync 4273 l
+2011_09_29/2011_09_29_drive_0004_sync 297 l
+2011_10_03/2011_10_03_drive_0034_sync 3022 r
+2011_10_03/2011_10_03_drive_0042_sync 846 l
+2011_09_26/2011_09_26_drive_0039_sync 375 r
+2011_10_03/2011_10_03_drive_0034_sync 3083 r
+2011_10_03/2011_10_03_drive_0034_sync 1717 l
+2011_09_30/2011_09_30_drive_0028_sync 3086 l
+2011_09_30/2011_09_30_drive_0028_sync 2247 r
+2011_09_30/2011_09_30_drive_0034_sync 1045 l
+2011_09_30/2011_09_30_drive_0028_sync 4477 r
+2011_09_26/2011_09_26_drive_0028_sync 269 l
+2011_09_26/2011_09_26_drive_0022_sync 385 r
+2011_09_29/2011_09_29_drive_0004_sync 305 l
+2011_10_03/2011_10_03_drive_0034_sync 3462 l
+2011_09_26/2011_09_26_drive_0015_sync 34 r
+2011_09_30/2011_09_30_drive_0034_sync 739 l
+2011_09_26/2011_09_26_drive_0018_sync 46 l
+2011_10_03/2011_10_03_drive_0034_sync 1311 l
+2011_09_30/2011_09_30_drive_0028_sync 2765 l
+2011_09_30/2011_09_30_drive_0033_sync 636 r
+2011_09_30/2011_09_30_drive_0020_sync 272 l
+2011_09_30/2011_09_30_drive_0028_sync 4407 r
+2011_09_26/2011_09_26_drive_0087_sync 416 r
+2011_09_30/2011_09_30_drive_0028_sync 4137 l
+2011_09_26/2011_09_26_drive_0039_sync 129 l
+2011_09_26/2011_09_26_drive_0015_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 736 l
+2011_09_26/2011_09_26_drive_0039_sync 169 r
+2011_09_26/2011_09_26_drive_0022_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 4223 l
+2011_09_26/2011_09_26_drive_0061_sync 619 r
+2011_10_03/2011_10_03_drive_0034_sync 2691 l
+2011_09_26/2011_09_26_drive_0019_sync 428 r
+2011_09_26/2011_09_26_drive_0019_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 1990 l
+2011_09_26/2011_09_26_drive_0087_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 1252 l
+2011_09_26/2011_09_26_drive_0104_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 956 l
+2011_09_26/2011_09_26_drive_0057_sync 255 l
+2011_09_30/2011_09_30_drive_0028_sync 3089 r
+2011_09_30/2011_09_30_drive_0028_sync 1084 l
+2011_10_03/2011_10_03_drive_0042_sync 232 l
+2011_09_30/2011_09_30_drive_0028_sync 3475 l
+2011_09_26/2011_09_26_drive_0022_sync 593 r
+2011_09_26/2011_09_26_drive_0001_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 1234 r
+2011_09_30/2011_09_30_drive_0028_sync 4922 l
+2011_10_03/2011_10_03_drive_0034_sync 2889 l
+2011_10_03/2011_10_03_drive_0034_sync 3441 r
+2011_09_30/2011_09_30_drive_0033_sync 596 l
+2011_09_30/2011_09_30_drive_0028_sync 3593 l
+2011_10_03/2011_10_03_drive_0042_sync 1147 l
+2011_09_30/2011_09_30_drive_0028_sync 4290 l
+2011_09_30/2011_09_30_drive_0034_sync 673 r
+2011_09_30/2011_09_30_drive_0020_sync 824 l
+2011_10_03/2011_10_03_drive_0034_sync 1238 r
+2011_09_30/2011_09_30_drive_0028_sync 3583 l
+2011_09_26/2011_09_26_drive_0087_sync 245 l
+2011_09_30/2011_09_30_drive_0034_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 327 r
+2011_09_26/2011_09_26_drive_0022_sync 452 l
+2011_09_26/2011_09_26_drive_0028_sync 255 r
+2011_09_30/2011_09_30_drive_0033_sync 777 l
+2011_09_30/2011_09_30_drive_0033_sync 273 r
+2011_10_03/2011_10_03_drive_0034_sync 2310 r
+2011_09_30/2011_09_30_drive_0033_sync 843 r
+2011_09_30/2011_09_30_drive_0028_sync 1845 l
+2011_10_03/2011_10_03_drive_0034_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 1991 l
+2011_09_30/2011_09_30_drive_0033_sync 237 r
+2011_10_03/2011_10_03_drive_0034_sync 3930 r
+2011_09_26/2011_09_26_drive_0061_sync 243 r
+2011_09_30/2011_09_30_drive_0028_sync 3132 r
+2011_09_30/2011_09_30_drive_0033_sync 1203 l
+2011_09_26/2011_09_26_drive_0104_sync 124 l
+2011_09_30/2011_09_30_drive_0033_sync 645 l
+2011_10_03/2011_10_03_drive_0034_sync 1608 l
+2011_09_30/2011_09_30_drive_0028_sync 3206 r
+2011_10_03/2011_10_03_drive_0042_sync 1130 l
+2011_10_03/2011_10_03_drive_0042_sync 170 l
+2011_10_03/2011_10_03_drive_0034_sync 4150 l
+2011_09_26/2011_09_26_drive_0104_sync 181 r
+2011_10_03/2011_10_03_drive_0034_sync 1013 r
+2011_09_26/2011_09_26_drive_0051_sync 166 l
+2011_09_30/2011_09_30_drive_0033_sync 453 r
+2011_09_26/2011_09_26_drive_0087_sync 564 l
+2011_09_30/2011_09_30_drive_0020_sync 537 r
+2011_09_30/2011_09_30_drive_0034_sync 413 l
+2011_09_30/2011_09_30_drive_0028_sync 404 r
+2011_10_03/2011_10_03_drive_0034_sync 2305 l
+2011_09_26/2011_09_26_drive_0057_sync 289 l
+2011_09_26/2011_09_26_drive_0051_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 3822 l
+2011_09_26/2011_09_26_drive_0014_sync 260 r
+2011_09_26/2011_09_26_drive_0095_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 2522 r
+2011_09_26/2011_09_26_drive_0104_sync 63 l
+2011_10_03/2011_10_03_drive_0034_sync 2863 l
+2011_10_03/2011_10_03_drive_0034_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 118 l
+2011_10_03/2011_10_03_drive_0034_sync 3575 r
+2011_10_03/2011_10_03_drive_0042_sync 575 l
+2011_09_30/2011_09_30_drive_0028_sync 1518 r
+2011_09_26/2011_09_26_drive_0091_sync 270 r
+2011_09_26/2011_09_26_drive_0039_sync 322 r
+2011_10_03/2011_10_03_drive_0042_sync 1011 l
+2011_09_30/2011_09_30_drive_0028_sync 462 l
+2011_09_30/2011_09_30_drive_0028_sync 432 r
+2011_09_30/2011_09_30_drive_0028_sync 2378 l
+2011_09_30/2011_09_30_drive_0033_sync 706 r
+2011_09_30/2011_09_30_drive_0028_sync 4526 l
+2011_09_26/2011_09_26_drive_0014_sync 159 l
+2011_09_30/2011_09_30_drive_0020_sync 638 l
+2011_09_26/2011_09_26_drive_0019_sync 342 l
+2011_10_03/2011_10_03_drive_0042_sync 655 r
+2011_09_26/2011_09_26_drive_0087_sync 533 r
+2011_09_30/2011_09_30_drive_0028_sync 2111 l
+2011_09_26/2011_09_26_drive_0005_sync 2 r
+2011_09_26/2011_09_26_drive_0005_sync 130 r
+2011_09_29/2011_09_29_drive_0026_sync 61 l
+2011_09_26/2011_09_26_drive_0087_sync 220 r
+2011_09_26/2011_09_26_drive_0061_sync 560 r
+2011_09_26/2011_09_26_drive_0014_sync 9 r
+2011_09_26/2011_09_26_drive_0039_sync 143 r
+2011_09_29/2011_09_29_drive_0004_sync 115 r
+2011_09_30/2011_09_30_drive_0028_sync 2048 r
+2011_10_03/2011_10_03_drive_0034_sync 1013 l
+2011_10_03/2011_10_03_drive_0042_sync 792 l
+2011_09_30/2011_09_30_drive_0028_sync 3508 l
+2011_09_26/2011_09_26_drive_0019_sync 261 r
+2011_09_30/2011_09_30_drive_0033_sync 668 r
+2011_09_30/2011_09_30_drive_0028_sync 753 r
+2011_09_26/2011_09_26_drive_0022_sync 396 r
+2011_09_26/2011_09_26_drive_0028_sync 349 r
+2011_10_03/2011_10_03_drive_0034_sync 1785 l
+2011_10_03/2011_10_03_drive_0034_sync 1549 l
+2011_09_26/2011_09_26_drive_0014_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 1409 r
+2011_09_30/2011_09_30_drive_0028_sync 4605 r
+2011_09_26/2011_09_26_drive_0070_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 1142 l
+2011_09_30/2011_09_30_drive_0028_sync 2482 l
+2011_10_03/2011_10_03_drive_0034_sync 2072 l
+2011_09_30/2011_09_30_drive_0033_sync 1497 l
+2011_09_30/2011_09_30_drive_0020_sync 704 r
+2011_09_26/2011_09_26_drive_0061_sync 353 l
+2011_09_26/2011_09_26_drive_0051_sync 209 l
+2011_09_30/2011_09_30_drive_0034_sync 758 l
+2011_09_30/2011_09_30_drive_0033_sync 1361 l
+2011_09_26/2011_09_26_drive_0087_sync 696 r
+2011_09_26/2011_09_26_drive_0022_sync 74 r
+2011_09_26/2011_09_26_drive_0022_sync 512 r
+2011_10_03/2011_10_03_drive_0034_sync 1960 l
+2011_09_26/2011_09_26_drive_0091_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 282 r
+2011_09_30/2011_09_30_drive_0020_sync 116 r
+2011_09_26/2011_09_26_drive_0061_sync 41 l
+2011_09_30/2011_09_30_drive_0034_sync 276 l
+2011_09_30/2011_09_30_drive_0034_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 1643 l
+2011_09_30/2011_09_30_drive_0033_sync 1389 r
+2011_10_03/2011_10_03_drive_0042_sync 953 l
+2011_10_03/2011_10_03_drive_0034_sync 4611 l
+2011_09_26/2011_09_26_drive_0015_sync 32 r
+2011_10_03/2011_10_03_drive_0034_sync 687 l
+2011_09_26/2011_09_26_drive_0011_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 4018 l
+2011_10_03/2011_10_03_drive_0034_sync 3971 r
+2011_10_03/2011_10_03_drive_0042_sync 936 l
+2011_09_30/2011_09_30_drive_0028_sync 3395 r
+2011_09_26/2011_09_26_drive_0019_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 1470 l
+2011_09_26/2011_09_26_drive_0022_sync 591 r
+2011_09_26/2011_09_26_drive_0091_sync 241 r
+2011_09_30/2011_09_30_drive_0034_sync 783 l
+2011_09_26/2011_09_26_drive_0019_sync 154 l
+2011_09_26/2011_09_26_drive_0028_sync 262 r
+2011_09_26/2011_09_26_drive_0019_sync 234 l
+2011_10_03/2011_10_03_drive_0034_sync 3569 r
+2011_09_26/2011_09_26_drive_0061_sync 10 l
+2011_09_26/2011_09_26_drive_0057_sync 11 r
+2011_09_26/2011_09_26_drive_0039_sync 44 l
+2011_09_26/2011_09_26_drive_0005_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 1804 r
+2011_09_26/2011_09_26_drive_0051_sync 296 l
+2011_09_30/2011_09_30_drive_0028_sync 347 l
+2011_09_30/2011_09_30_drive_0028_sync 469 l
+2011_10_03/2011_10_03_drive_0034_sync 4625 r
+2011_09_26/2011_09_26_drive_0039_sync 209 l
+2011_10_03/2011_10_03_drive_0034_sync 2361 l
+2011_09_26/2011_09_26_drive_0087_sync 57 l
+2011_09_30/2011_09_30_drive_0033_sync 839 l
+2011_09_26/2011_09_26_drive_0019_sync 291 r
+2011_09_30/2011_09_30_drive_0028_sync 374 l
+2011_09_30/2011_09_30_drive_0033_sync 1515 l
+2011_10_03/2011_10_03_drive_0034_sync 533 r
+2011_09_26/2011_09_26_drive_0018_sync 91 r
+2011_09_26/2011_09_26_drive_0011_sync 201 l
+2011_10_03/2011_10_03_drive_0034_sync 2380 r
+2011_09_26/2011_09_26_drive_0070_sync 326 l
+2011_09_30/2011_09_30_drive_0020_sync 871 l
+2011_09_30/2011_09_30_drive_0034_sync 647 r
+2011_10_03/2011_10_03_drive_0034_sync 1057 l
+2011_09_26/2011_09_26_drive_0035_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 1366 l
+2011_09_30/2011_09_30_drive_0028_sync 227 l
+2011_09_26/2011_09_26_drive_0005_sync 133 l
+2011_09_30/2011_09_30_drive_0020_sync 309 l
+2011_10_03/2011_10_03_drive_0034_sync 1197 l
+2011_09_30/2011_09_30_drive_0028_sync 2979 l
+2011_09_26/2011_09_26_drive_0061_sync 77 r
+2011_09_26/2011_09_26_drive_0022_sync 649 r
+2011_09_30/2011_09_30_drive_0028_sync 3172 r
+2011_09_26/2011_09_26_drive_0079_sync 36 l
+2011_09_30/2011_09_30_drive_0033_sync 1079 r
+2011_09_26/2011_09_26_drive_0022_sync 727 l
+2011_09_30/2011_09_30_drive_0034_sync 1040 l
+2011_09_30/2011_09_30_drive_0020_sync 632 l
+2011_09_30/2011_09_30_drive_0020_sync 614 r
+2011_10_03/2011_10_03_drive_0034_sync 227 r
+2011_09_29/2011_09_29_drive_0004_sync 180 r
+2011_09_30/2011_09_30_drive_0033_sync 489 r
+2011_09_30/2011_09_30_drive_0034_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 1558 l
+2011_09_30/2011_09_30_drive_0028_sync 1099 l
+2011_09_30/2011_09_30_drive_0020_sync 884 r
+2011_10_03/2011_10_03_drive_0042_sync 341 r
+2011_10_03/2011_10_03_drive_0034_sync 3134 l
+2011_09_30/2011_09_30_drive_0028_sync 3379 r
+2011_09_26/2011_09_26_drive_0039_sync 91 r
+2011_09_30/2011_09_30_drive_0020_sync 360 l
+2011_10_03/2011_10_03_drive_0034_sync 1203 l
+2011_09_30/2011_09_30_drive_0028_sync 4579 l
+2011_09_30/2011_09_30_drive_0028_sync 1763 r
+2011_09_26/2011_09_26_drive_0061_sync 497 r
+2011_09_26/2011_09_26_drive_0070_sync 54 r
+2011_09_26/2011_09_26_drive_0070_sync 381 l
+2011_09_30/2011_09_30_drive_0028_sync 2216 r
+2011_10_03/2011_10_03_drive_0034_sync 2556 r
+2011_09_26/2011_09_26_drive_0051_sync 416 r
+2011_09_30/2011_09_30_drive_0033_sync 864 l
+2011_09_26/2011_09_26_drive_0051_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 2757 r
+2011_09_26/2011_09_26_drive_0039_sync 253 r
+2011_09_30/2011_09_30_drive_0028_sync 2533 l
+2011_09_30/2011_09_30_drive_0034_sync 145 l
+2011_10_03/2011_10_03_drive_0042_sync 283 l
+2011_09_26/2011_09_26_drive_0032_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 1722 r
+2011_09_26/2011_09_26_drive_0061_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 2724 r
+2011_09_30/2011_09_30_drive_0028_sync 2264 l
+2011_09_30/2011_09_30_drive_0033_sync 772 r
+2011_09_26/2011_09_26_drive_0011_sync 144 l
+2011_10_03/2011_10_03_drive_0042_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 2413 l
+2011_09_30/2011_09_30_drive_0028_sync 2284 r
+2011_09_26/2011_09_26_drive_0005_sync 27 l
+2011_09_26/2011_09_26_drive_0001_sync 54 l
+2011_09_26/2011_09_26_drive_0028_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 1609 r
+2011_09_26/2011_09_26_drive_0039_sync 365 l
+2011_10_03/2011_10_03_drive_0034_sync 2941 r
+2011_09_26/2011_09_26_drive_0104_sync 127 r
+2011_09_26/2011_09_26_drive_0028_sync 144 r
+2011_09_30/2011_09_30_drive_0028_sync 3698 l
+2011_09_30/2011_09_30_drive_0028_sync 3521 r
+2011_10_03/2011_10_03_drive_0034_sync 2643 r
+2011_09_30/2011_09_30_drive_0028_sync 3318 l
+2011_10_03/2011_10_03_drive_0042_sync 218 r
+2011_09_30/2011_09_30_drive_0033_sync 1288 l
+2011_10_03/2011_10_03_drive_0042_sync 916 r
+2011_09_30/2011_09_30_drive_0033_sync 984 r
+2011_09_26/2011_09_26_drive_0032_sync 59 r
+2011_09_28/2011_09_28_drive_0001_sync 14 r
+2011_09_30/2011_09_30_drive_0028_sync 1149 r
+2011_09_30/2011_09_30_drive_0020_sync 144 r
+2011_10_03/2011_10_03_drive_0034_sync 1980 l
+2011_09_26/2011_09_26_drive_0015_sync 107 r
+2011_09_26/2011_09_26_drive_0039_sync 57 r
+2011_09_26/2011_09_26_drive_0061_sync 215 r
+2011_09_30/2011_09_30_drive_0028_sync 2727 r
+2011_10_03/2011_10_03_drive_0034_sync 4200 l
+2011_09_26/2011_09_26_drive_0032_sync 46 r
+2011_09_26/2011_09_26_drive_0039_sync 231 r
+2011_09_30/2011_09_30_drive_0033_sync 818 r
+2011_09_30/2011_09_30_drive_0028_sync 3041 r
+2011_10_03/2011_10_03_drive_0034_sync 3427 r
+2011_09_30/2011_09_30_drive_0034_sync 1050 r
+2011_09_30/2011_09_30_drive_0028_sync 4951 l
+2011_09_26/2011_09_26_drive_0061_sync 694 l
+2011_09_26/2011_09_26_drive_0113_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 3782 r
+2011_09_26/2011_09_26_drive_0032_sync 251 r
+2011_10_03/2011_10_03_drive_0034_sync 625 l
+2011_09_26/2011_09_26_drive_0087_sync 711 r
+2011_09_30/2011_09_30_drive_0028_sync 777 r
+2011_09_30/2011_09_30_drive_0033_sync 407 r
+2011_09_30/2011_09_30_drive_0028_sync 1074 r
+2011_09_30/2011_09_30_drive_0028_sync 2497 r
+2011_09_30/2011_09_30_drive_0028_sync 2072 r
+2011_09_26/2011_09_26_drive_0011_sync 93 l
+2011_09_30/2011_09_30_drive_0033_sync 131 l
+2011_09_30/2011_09_30_drive_0033_sync 1264 r
+2011_09_26/2011_09_26_drive_0057_sync 357 r
+2011_10_03/2011_10_03_drive_0034_sync 4120 l
+2011_09_30/2011_09_30_drive_0028_sync 3202 r
+2011_10_03/2011_10_03_drive_0042_sync 951 l
+2011_09_30/2011_09_30_drive_0033_sync 973 l
+2011_10_03/2011_10_03_drive_0034_sync 312 l
+2011_10_03/2011_10_03_drive_0034_sync 2073 r
+2011_10_03/2011_10_03_drive_0034_sync 2063 l
+2011_09_26/2011_09_26_drive_0014_sync 65 r
+2011_09_29/2011_09_29_drive_0004_sync 302 l
+2011_10_03/2011_10_03_drive_0034_sync 4208 r
+2011_09_26/2011_09_26_drive_0087_sync 581 l
+2011_09_26/2011_09_26_drive_0011_sync 90 l
+2011_09_26/2011_09_26_drive_0018_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 3597 r
+2011_09_30/2011_09_30_drive_0028_sync 4599 l
+2011_09_26/2011_09_26_drive_0095_sync 186 l
+2011_09_30/2011_09_30_drive_0033_sync 1013 r
+2011_09_30/2011_09_30_drive_0020_sync 93 r
+2011_09_30/2011_09_30_drive_0028_sync 622 l
+2011_09_30/2011_09_30_drive_0028_sync 2606 r
+2011_09_30/2011_09_30_drive_0033_sync 770 r
+2011_09_26/2011_09_26_drive_0011_sync 102 r
+2011_10_03/2011_10_03_drive_0034_sync 3700 r
+2011_09_26/2011_09_26_drive_0091_sync 76 l
+2011_09_26/2011_09_26_drive_0022_sync 285 l
+2011_09_30/2011_09_30_drive_0020_sync 216 r
+2011_10_03/2011_10_03_drive_0034_sync 1656 r
+2011_10_03/2011_10_03_drive_0034_sync 940 l
+2011_09_26/2011_09_26_drive_0019_sync 93 r
+2011_09_30/2011_09_30_drive_0028_sync 4110 r
+2011_09_26/2011_09_26_drive_0091_sync 75 r
+2011_09_26/2011_09_26_drive_0028_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 202 r
+2011_09_26/2011_09_26_drive_0001_sync 66 l
+2011_10_03/2011_10_03_drive_0042_sync 1083 l
+2011_09_26/2011_09_26_drive_0051_sync 375 l
+2011_09_30/2011_09_30_drive_0028_sync 4346 r
+2011_09_30/2011_09_30_drive_0033_sync 625 l
+2011_09_26/2011_09_26_drive_0104_sync 115 l
+2011_09_30/2011_09_30_drive_0033_sync 403 l
+2011_09_26/2011_09_26_drive_0087_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 1533 l
+2011_10_03/2011_10_03_drive_0042_sync 648 l
+2011_09_30/2011_09_30_drive_0033_sync 1376 r
+2011_09_29/2011_09_29_drive_0026_sync 140 l
+2011_09_30/2011_09_30_drive_0028_sync 1858 r
+2011_09_30/2011_09_30_drive_0028_sync 3602 l
+2011_09_30/2011_09_30_drive_0028_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 2651 l
+2011_09_30/2011_09_30_drive_0034_sync 881 r
+2011_09_26/2011_09_26_drive_0035_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 3870 l
+2011_09_26/2011_09_26_drive_0091_sync 11 l
+2011_09_30/2011_09_30_drive_0034_sync 184 l
+2011_09_26/2011_09_26_drive_0032_sync 371 l
+2011_09_30/2011_09_30_drive_0034_sync 391 r
+2011_09_30/2011_09_30_drive_0028_sync 2575 l
+2011_09_26/2011_09_26_drive_0070_sync 321 r
+2011_09_30/2011_09_30_drive_0020_sync 611 r
+2011_09_26/2011_09_26_drive_0061_sync 587 r
+2011_10_03/2011_10_03_drive_0034_sync 3368 l
+2011_09_26/2011_09_26_drive_0061_sync 443 r
+2011_09_26/2011_09_26_drive_0087_sync 557 r
+2011_09_30/2011_09_30_drive_0028_sync 1810 l
+2011_09_30/2011_09_30_drive_0028_sync 343 l
+2011_09_26/2011_09_26_drive_0005_sync 52 l
+2011_09_26/2011_09_26_drive_0061_sync 645 r
+2011_09_26/2011_09_26_drive_0019_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 253 l
+2011_09_26/2011_09_26_drive_0022_sync 423 r
+2011_09_26/2011_09_26_drive_0005_sync 5 l
+2011_09_26/2011_09_26_drive_0070_sync 202 l
+2011_09_26/2011_09_26_drive_0087_sync 256 r
+2011_09_30/2011_09_30_drive_0028_sync 4920 r
+2011_09_26/2011_09_26_drive_0070_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 1257 l
+2011_09_30/2011_09_30_drive_0033_sync 411 r
+2011_09_30/2011_09_30_drive_0034_sync 905 l
+2011_09_30/2011_09_30_drive_0033_sync 1418 l
+2011_09_30/2011_09_30_drive_0020_sync 547 l
+2011_09_30/2011_09_30_drive_0028_sync 2971 r
+2011_10_03/2011_10_03_drive_0034_sync 3681 l
+2011_10_03/2011_10_03_drive_0034_sync 4005 r
+2011_10_03/2011_10_03_drive_0034_sync 685 l
+2011_09_30/2011_09_30_drive_0028_sync 1753 r
+2011_09_30/2011_09_30_drive_0028_sync 4353 r
+2011_09_30/2011_09_30_drive_0033_sync 1030 r
+2011_10_03/2011_10_03_drive_0042_sync 720 l
+2011_09_26/2011_09_26_drive_0061_sync 213 l
+2011_10_03/2011_10_03_drive_0034_sync 4212 l
+2011_09_30/2011_09_30_drive_0028_sync 3730 r
+2011_09_30/2011_09_30_drive_0020_sync 480 l
+2011_09_30/2011_09_30_drive_0028_sync 4956 l
+2011_10_03/2011_10_03_drive_0034_sync 2322 r
+2011_09_30/2011_09_30_drive_0028_sync 220 l
+2011_09_26/2011_09_26_drive_0022_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 698 l
+2011_09_30/2011_09_30_drive_0028_sync 1055 r
+2011_09_26/2011_09_26_drive_0022_sync 777 r
+2011_09_30/2011_09_30_drive_0028_sync 2108 r
+2011_10_03/2011_10_03_drive_0034_sync 3937 l
+2011_09_30/2011_09_30_drive_0033_sync 844 r
+2011_09_28/2011_09_28_drive_0001_sync 62 r
+2011_10_03/2011_10_03_drive_0034_sync 3436 l
+2011_09_30/2011_09_30_drive_0028_sync 391 l
+2011_09_30/2011_09_30_drive_0033_sync 1544 r
+2011_09_30/2011_09_30_drive_0028_sync 394 l
+2011_10_03/2011_10_03_drive_0034_sync 1208 l
+2011_09_30/2011_09_30_drive_0033_sync 103 l
+2011_10_03/2011_10_03_drive_0042_sync 567 r
+2011_09_26/2011_09_26_drive_0018_sync 29 l
+2011_09_26/2011_09_26_drive_0005_sync 149 l
+2011_09_30/2011_09_30_drive_0033_sync 290 l
+2011_09_26/2011_09_26_drive_0087_sync 548 r
+2011_09_30/2011_09_30_drive_0028_sync 4559 l
+2011_10_03/2011_10_03_drive_0034_sync 3924 l
+2011_09_30/2011_09_30_drive_0028_sync 874 l
+2011_10_03/2011_10_03_drive_0042_sync 353 l
+2011_10_03/2011_10_03_drive_0034_sync 2333 r
+2011_09_30/2011_09_30_drive_0020_sync 1075 l
+2011_09_30/2011_09_30_drive_0028_sync 5007 r
+2011_09_30/2011_09_30_drive_0028_sync 4996 r
+2011_09_26/2011_09_26_drive_0011_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 3047 l
+2011_09_26/2011_09_26_drive_0057_sync 348 r
+2011_09_26/2011_09_26_drive_0032_sync 375 l
+2011_09_30/2011_09_30_drive_0034_sync 606 l
+2011_10_03/2011_10_03_drive_0042_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 4535 l
+2011_10_03/2011_10_03_drive_0034_sync 2463 l
+2011_09_30/2011_09_30_drive_0028_sync 2002 r
+2011_09_30/2011_09_30_drive_0028_sync 4324 r
+2011_09_26/2011_09_26_drive_0070_sync 38 r
+2011_09_26/2011_09_26_drive_0070_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 3383 r
+2011_09_30/2011_09_30_drive_0033_sync 1314 r
+2011_09_26/2011_09_26_drive_0104_sync 128 r
+2011_09_26/2011_09_26_drive_0014_sync 217 r
+2011_09_26/2011_09_26_drive_0095_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 3285 r
+2011_09_30/2011_09_30_drive_0020_sync 754 l
+2011_09_30/2011_09_30_drive_0028_sync 1915 r
+2011_09_30/2011_09_30_drive_0028_sync 2468 l
+2011_09_29/2011_09_29_drive_0004_sync 99 l
+2011_09_26/2011_09_26_drive_0060_sync 63 r
+2011_09_30/2011_09_30_drive_0034_sync 602 l
+2011_09_30/2011_09_30_drive_0028_sync 2278 r
+2011_09_30/2011_09_30_drive_0028_sync 3448 r
+2011_09_30/2011_09_30_drive_0028_sync 2888 r
+2011_09_30/2011_09_30_drive_0033_sync 1285 l
+2011_09_30/2011_09_30_drive_0028_sync 235 r
+2011_09_26/2011_09_26_drive_0019_sync 151 r
+2011_09_26/2011_09_26_drive_0039_sync 321 r
+2011_09_26/2011_09_26_drive_0104_sync 75 r
+2011_09_30/2011_09_30_drive_0033_sync 887 r
+2011_09_26/2011_09_26_drive_0022_sync 782 r
+2011_09_26/2011_09_26_drive_0087_sync 722 l
+2011_09_26/2011_09_26_drive_0061_sync 688 l
+2011_09_30/2011_09_30_drive_0028_sync 454 r
+2011_09_30/2011_09_30_drive_0033_sync 761 r
+2011_09_30/2011_09_30_drive_0028_sync 2159 l
+2011_10_03/2011_10_03_drive_0034_sync 1894 l
+2011_10_03/2011_10_03_drive_0034_sync 2293 r
+2011_09_30/2011_09_30_drive_0028_sync 1688 r
+2011_09_30/2011_09_30_drive_0028_sync 3825 l
+2011_09_30/2011_09_30_drive_0033_sync 726 l
+2011_10_03/2011_10_03_drive_0034_sync 3095 r
+2011_09_26/2011_09_26_drive_0035_sync 106 r
+2011_09_30/2011_09_30_drive_0028_sync 1983 r
+2011_09_30/2011_09_30_drive_0028_sync 1349 l
+2011_10_03/2011_10_03_drive_0042_sync 1102 l
+2011_09_26/2011_09_26_drive_0087_sync 339 r
+2011_09_30/2011_09_30_drive_0034_sync 144 r
+2011_09_30/2011_09_30_drive_0020_sync 131 r
+2011_09_26/2011_09_26_drive_0022_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 1986 r
+2011_10_03/2011_10_03_drive_0034_sync 222 l
+2011_09_26/2011_09_26_drive_0015_sync 273 r
+2011_09_26/2011_09_26_drive_0060_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 1807 r
+2011_09_26/2011_09_26_drive_0011_sync 218 r
+2011_10_03/2011_10_03_drive_0034_sync 3597 r
+2011_09_26/2011_09_26_drive_0087_sync 710 r
+2011_09_30/2011_09_30_drive_0028_sync 3948 r
+2011_09_26/2011_09_26_drive_0087_sync 675 l
+2011_10_03/2011_10_03_drive_0034_sync 2634 r
+2011_09_26/2011_09_26_drive_0017_sync 111 l
+2011_09_26/2011_09_26_drive_0095_sync 59 r
+2011_09_26/2011_09_26_drive_0070_sync 51 l
+2011_10_03/2011_10_03_drive_0034_sync 4019 l
+2011_09_26/2011_09_26_drive_0022_sync 9 l
+2011_09_30/2011_09_30_drive_0028_sync 2470 r
+2011_09_26/2011_09_26_drive_0070_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 3653 l
+2011_10_03/2011_10_03_drive_0034_sync 1851 l
+2011_09_26/2011_09_26_drive_0057_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 583 r
+2011_09_30/2011_09_30_drive_0028_sync 1142 l
+2011_09_26/2011_09_26_drive_0060_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 2569 r
+2011_09_30/2011_09_30_drive_0028_sync 3711 r
+2011_09_26/2011_09_26_drive_0019_sync 370 l
+2011_09_26/2011_09_26_drive_0018_sync 265 r
+2011_09_30/2011_09_30_drive_0028_sync 380 l
+2011_09_30/2011_09_30_drive_0033_sync 1419 r
+2011_10_03/2011_10_03_drive_0034_sync 1090 r
+2011_09_26/2011_09_26_drive_0022_sync 504 r
+2011_09_30/2011_09_30_drive_0028_sync 4113 l
+2011_10_03/2011_10_03_drive_0034_sync 2671 r
+2011_10_03/2011_10_03_drive_0034_sync 324 l
+2011_09_26/2011_09_26_drive_0104_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 3490 l
+2011_09_26/2011_09_26_drive_0104_sync 29 r
+2011_09_30/2011_09_30_drive_0028_sync 4042 r
+2011_09_26/2011_09_26_drive_0060_sync 20 r
+2011_09_26/2011_09_26_drive_0028_sync 47 l
+2011_09_26/2011_09_26_drive_0051_sync 279 r
+2011_09_30/2011_09_30_drive_0033_sync 758 l
+2011_09_26/2011_09_26_drive_0028_sync 92 r
+2011_09_26/2011_09_26_drive_0057_sync 45 r
+2011_10_03/2011_10_03_drive_0042_sync 691 r
+2011_09_30/2011_09_30_drive_0033_sync 74 r
+2011_09_30/2011_09_30_drive_0034_sync 763 l
+2011_09_26/2011_09_26_drive_0022_sync 190 r
+2011_09_30/2011_09_30_drive_0033_sync 760 r
+2011_10_03/2011_10_03_drive_0034_sync 947 l
+2011_09_30/2011_09_30_drive_0034_sync 829 r
+2011_10_03/2011_10_03_drive_0034_sync 1465 r
+2011_09_30/2011_09_30_drive_0028_sync 1147 r
+2011_09_30/2011_09_30_drive_0028_sync 4348 l
+2011_09_26/2011_09_26_drive_0032_sync 286 l
+2011_09_30/2011_09_30_drive_0028_sync 1347 r
+2011_09_26/2011_09_26_drive_0015_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 3778 l
+2011_09_26/2011_09_26_drive_0070_sync 174 r
+2011_09_30/2011_09_30_drive_0034_sync 1157 r
+2011_10_03/2011_10_03_drive_0034_sync 2050 l
+2011_09_30/2011_09_30_drive_0020_sync 785 l
+2011_10_03/2011_10_03_drive_0034_sync 1888 l
+2011_10_03/2011_10_03_drive_0034_sync 2340 r
+2011_10_03/2011_10_03_drive_0034_sync 438 l
+2011_09_30/2011_09_30_drive_0020_sync 316 l
+2011_09_30/2011_09_30_drive_0034_sync 191 r
+2011_10_03/2011_10_03_drive_0042_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 4151 r
+2011_09_26/2011_09_26_drive_0039_sync 323 l
+2011_09_26/2011_09_26_drive_0039_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 1663 l
+2011_09_26/2011_09_26_drive_0022_sync 577 r
+2011_10_03/2011_10_03_drive_0034_sync 3943 l
+2011_09_30/2011_09_30_drive_0028_sync 2084 l
+2011_09_26/2011_09_26_drive_0035_sync 93 r
+2011_09_30/2011_09_30_drive_0033_sync 231 l
+2011_09_26/2011_09_26_drive_0011_sync 186 r
+2011_09_30/2011_09_30_drive_0034_sync 1216 l
+2011_10_03/2011_10_03_drive_0034_sync 852 l
+2011_09_30/2011_09_30_drive_0034_sync 997 l
+2011_10_03/2011_10_03_drive_0034_sync 424 l
+2011_09_30/2011_09_30_drive_0020_sync 428 r
+2011_09_29/2011_09_29_drive_0026_sync 21 l
+2011_09_26/2011_09_26_drive_0087_sync 253 l
+2011_09_30/2011_09_30_drive_0020_sync 708 l
+2011_10_03/2011_10_03_drive_0034_sync 2173 l
+2011_10_03/2011_10_03_drive_0042_sync 1083 r
+2011_10_03/2011_10_03_drive_0042_sync 559 r
+2011_09_26/2011_09_26_drive_0039_sync 9 r
+2011_09_26/2011_09_26_drive_0035_sync 105 l
+2011_09_30/2011_09_30_drive_0028_sync 3851 l
+2011_09_30/2011_09_30_drive_0033_sync 1591 r
+2011_09_26/2011_09_26_drive_0019_sync 318 r
+2011_09_26/2011_09_26_drive_0028_sync 215 r
+2011_09_30/2011_09_30_drive_0033_sync 1169 l
+2011_09_30/2011_09_30_drive_0034_sync 450 l
+2011_10_03/2011_10_03_drive_0034_sync 382 l
+2011_10_03/2011_10_03_drive_0034_sync 3364 l
+2011_10_03/2011_10_03_drive_0034_sync 2835 r
+2011_09_26/2011_09_26_drive_0022_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 1897 l
+2011_09_26/2011_09_26_drive_0087_sync 483 r
+2011_10_03/2011_10_03_drive_0034_sync 496 r
+2011_10_03/2011_10_03_drive_0042_sync 976 l
+2011_10_03/2011_10_03_drive_0034_sync 872 r
+2011_09_26/2011_09_26_drive_0057_sync 271 r
+2011_09_30/2011_09_30_drive_0033_sync 579 l
+2011_09_30/2011_09_30_drive_0028_sync 4292 r
+2011_10_03/2011_10_03_drive_0034_sync 3455 r
+2011_09_26/2011_09_26_drive_0022_sync 647 r
+2011_09_30/2011_09_30_drive_0028_sync 2156 l
+2011_09_26/2011_09_26_drive_0060_sync 41 r
+2011_09_30/2011_09_30_drive_0034_sync 376 l
+2011_09_30/2011_09_30_drive_0028_sync 3086 r
+2011_09_26/2011_09_26_drive_0039_sync 366 l
+2011_10_03/2011_10_03_drive_0042_sync 796 l
+2011_09_30/2011_09_30_drive_0028_sync 1485 l
+2011_10_03/2011_10_03_drive_0034_sync 2672 l
+2011_09_26/2011_09_26_drive_0087_sync 204 l
+2011_09_30/2011_09_30_drive_0033_sync 81 l
+2011_09_26/2011_09_26_drive_0051_sync 11 l
+2011_10_03/2011_10_03_drive_0034_sync 910 l
+2011_09_30/2011_09_30_drive_0028_sync 4133 l
+2011_10_03/2011_10_03_drive_0034_sync 3772 l
+2011_10_03/2011_10_03_drive_0034_sync 1068 l
+2011_09_30/2011_09_30_drive_0028_sync 5001 r
+2011_10_03/2011_10_03_drive_0034_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 1520 l
+2011_09_30/2011_09_30_drive_0028_sync 3128 r
+2011_09_26/2011_09_26_drive_0087_sync 663 r
+2011_10_03/2011_10_03_drive_0034_sync 2656 l
+2011_10_03/2011_10_03_drive_0034_sync 1850 r
+2011_09_26/2011_09_26_drive_0018_sync 139 r
+2011_09_26/2011_09_26_drive_0104_sync 35 l
+2011_09_26/2011_09_26_drive_0070_sync 10 l
+2011_09_26/2011_09_26_drive_0104_sync 264 r
+2011_09_26/2011_09_26_drive_0087_sync 301 r
+2011_09_26/2011_09_26_drive_0079_sync 72 r
+2011_09_26/2011_09_26_drive_0070_sync 352 r
+2011_09_30/2011_09_30_drive_0028_sync 3371 r
+2011_09_30/2011_09_30_drive_0028_sync 830 l
+2011_09_30/2011_09_30_drive_0020_sync 173 l
+2011_09_26/2011_09_26_drive_0087_sync 550 l
+2011_09_30/2011_09_30_drive_0028_sync 2351 l
+2011_09_30/2011_09_30_drive_0020_sync 238 r
+2011_09_26/2011_09_26_drive_0061_sync 574 l
+2011_09_29/2011_09_29_drive_0004_sync 110 l
+2011_09_30/2011_09_30_drive_0020_sync 56 r
+2011_09_29/2011_09_29_drive_0026_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 802 l
+2011_10_03/2011_10_03_drive_0034_sync 643 r
+2011_09_30/2011_09_30_drive_0028_sync 1024 l
+2011_09_26/2011_09_26_drive_0022_sync 646 r
+2011_09_30/2011_09_30_drive_0028_sync 4555 l
+2011_09_26/2011_09_26_drive_0061_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 1530 l
+2011_10_03/2011_10_03_drive_0034_sync 4461 r
+2011_09_30/2011_09_30_drive_0028_sync 933 l
+2011_09_30/2011_09_30_drive_0033_sync 846 r
+2011_09_30/2011_09_30_drive_0020_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 3106 l
+2011_09_26/2011_09_26_drive_0057_sync 312 r
+2011_09_30/2011_09_30_drive_0034_sync 715 r
+2011_09_26/2011_09_26_drive_0019_sync 170 l
+2011_09_26/2011_09_26_drive_0087_sync 356 l
+2011_09_30/2011_09_30_drive_0034_sync 826 r
+2011_09_30/2011_09_30_drive_0020_sync 792 l
+2011_10_03/2011_10_03_drive_0034_sync 2053 r
+2011_09_26/2011_09_26_drive_0039_sync 265 l
+2011_10_03/2011_10_03_drive_0034_sync 3821 r
+2011_09_26/2011_09_26_drive_0018_sync 241 l
+2011_10_03/2011_10_03_drive_0042_sync 485 l
+2011_09_26/2011_09_26_drive_0051_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 2309 r
+2011_09_26/2011_09_26_drive_0061_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 677 r
+2011_10_03/2011_10_03_drive_0034_sync 355 r
+2011_09_26/2011_09_26_drive_0014_sync 147 r
+2011_09_26/2011_09_26_drive_0001_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 348 r
+2011_09_30/2011_09_30_drive_0028_sync 3842 r
+2011_09_26/2011_09_26_drive_0061_sync 253 l
+2011_10_03/2011_10_03_drive_0034_sync 2199 l
+2011_09_26/2011_09_26_drive_0022_sync 654 l
+2011_10_03/2011_10_03_drive_0034_sync 3693 l
+2011_09_30/2011_09_30_drive_0028_sync 3191 l
+2011_09_30/2011_09_30_drive_0020_sync 402 r
+2011_09_30/2011_09_30_drive_0020_sync 1041 l
+2011_09_26/2011_09_26_drive_0018_sync 198 r
+2011_10_03/2011_10_03_drive_0042_sync 763 l
+2011_09_26/2011_09_26_drive_0095_sync 85 r
+2011_09_26/2011_09_26_drive_0087_sync 245 r
+2011_09_30/2011_09_30_drive_0033_sync 1414 l
+2011_10_03/2011_10_03_drive_0034_sync 3806 r
+2011_09_26/2011_09_26_drive_0095_sync 167 l
+2011_09_26/2011_09_26_drive_0001_sync 98 l
+2011_09_26/2011_09_26_drive_0014_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 534 r
+2011_10_03/2011_10_03_drive_0034_sync 1292 r
+2011_09_26/2011_09_26_drive_0035_sync 39 r
+2011_10_03/2011_10_03_drive_0042_sync 882 l
+2011_09_26/2011_09_26_drive_0022_sync 414 l
+2011_09_26/2011_09_26_drive_0014_sync 64 l
+2011_09_26/2011_09_26_drive_0019_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 3430 r
+2011_09_30/2011_09_30_drive_0028_sync 5095 l
+2011_09_30/2011_09_30_drive_0033_sync 323 l
+2011_09_26/2011_09_26_drive_0051_sync 391 l
+2011_10_03/2011_10_03_drive_0034_sync 551 l
+2011_10_03/2011_10_03_drive_0034_sync 3097 r
+2011_09_30/2011_09_30_drive_0034_sync 74 l
+2011_10_03/2011_10_03_drive_0034_sync 157 r
+2011_09_26/2011_09_26_drive_0028_sync 330 l
+2011_09_26/2011_09_26_drive_0015_sync 89 l
+2011_09_26/2011_09_26_drive_0051_sync 431 l
+2011_10_03/2011_10_03_drive_0034_sync 3218 l
+2011_09_26/2011_09_26_drive_0032_sync 99 l
+2011_09_26/2011_09_26_drive_0061_sync 136 l
+2011_09_30/2011_09_30_drive_0028_sync 3748 l
+2011_09_30/2011_09_30_drive_0028_sync 1214 l
+2011_10_03/2011_10_03_drive_0034_sync 2471 r
+2011_10_03/2011_10_03_drive_0034_sync 1599 r
+2011_09_26/2011_09_26_drive_0018_sync 267 r
+2011_09_30/2011_09_30_drive_0028_sync 4843 r
+2011_09_30/2011_09_30_drive_0028_sync 935 l
+2011_09_26/2011_09_26_drive_0061_sync 284 r
+2011_09_26/2011_09_26_drive_0005_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 1063 l
+2011_09_30/2011_09_30_drive_0034_sync 598 l
+2011_09_26/2011_09_26_drive_0005_sync 109 l
+2011_09_30/2011_09_30_drive_0033_sync 1317 l
+2011_09_26/2011_09_26_drive_0019_sync 277 r
+2011_10_03/2011_10_03_drive_0034_sync 2546 r
+2011_09_30/2011_09_30_drive_0020_sync 599 l
+2011_09_30/2011_09_30_drive_0028_sync 2238 l
+2011_09_26/2011_09_26_drive_0011_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 4763 r
+2011_09_30/2011_09_30_drive_0028_sync 3891 r
+2011_10_03/2011_10_03_drive_0034_sync 1740 r
+2011_09_29/2011_09_29_drive_0004_sync 333 l
+2011_10_03/2011_10_03_drive_0034_sync 2068 l
+2011_09_30/2011_09_30_drive_0028_sync 3862 r
+2011_09_30/2011_09_30_drive_0028_sync 4587 r
+2011_10_03/2011_10_03_drive_0034_sync 2740 l
+2011_09_26/2011_09_26_drive_0091_sync 48 l
+2011_09_30/2011_09_30_drive_0034_sync 55 r
+2011_10_03/2011_10_03_drive_0034_sync 2076 r
+2011_09_30/2011_09_30_drive_0028_sync 1526 r
+2011_09_26/2011_09_26_drive_0087_sync 656 r
+2011_10_03/2011_10_03_drive_0034_sync 3193 r
+2011_09_26/2011_09_26_drive_0087_sync 307 l
+2011_09_26/2011_09_26_drive_0087_sync 70 l
+2011_10_03/2011_10_03_drive_0042_sync 282 r
+2011_09_30/2011_09_30_drive_0028_sync 2772 r
+2011_10_03/2011_10_03_drive_0034_sync 2364 r
+2011_10_03/2011_10_03_drive_0034_sync 3376 l
+2011_09_26/2011_09_26_drive_0079_sync 6 l
+2011_09_26/2011_09_26_drive_0022_sync 748 r
+2011_09_30/2011_09_30_drive_0020_sync 690 l
+2011_09_30/2011_09_30_drive_0028_sync 4486 r
+2011_10_03/2011_10_03_drive_0042_sync 94 r
+2011_09_26/2011_09_26_drive_0051_sync 203 l
+2011_09_30/2011_09_30_drive_0034_sync 232 r
+2011_09_26/2011_09_26_drive_0015_sync 185 r
+2011_10_03/2011_10_03_drive_0042_sync 446 r
+2011_09_30/2011_09_30_drive_0028_sync 2721 l
+2011_09_30/2011_09_30_drive_0028_sync 2591 l
+2011_09_30/2011_09_30_drive_0020_sync 993 l
+2011_09_30/2011_09_30_drive_0028_sync 1408 r
+2011_09_30/2011_09_30_drive_0028_sync 247 r
+2011_09_26/2011_09_26_drive_0022_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 4301 r
+2011_10_03/2011_10_03_drive_0034_sync 4089 l
+2011_09_30/2011_09_30_drive_0028_sync 3484 l
+2011_09_26/2011_09_26_drive_0039_sync 339 r
+2011_09_30/2011_09_30_drive_0028_sync 2867 r
+2011_09_26/2011_09_26_drive_0087_sync 360 r
+2011_09_30/2011_09_30_drive_0034_sync 629 r
+2011_09_30/2011_09_30_drive_0028_sync 3776 r
+2011_09_30/2011_09_30_drive_0034_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 823 l
+2011_10_03/2011_10_03_drive_0034_sync 3569 l
+2011_09_30/2011_09_30_drive_0028_sync 268 l
+2011_09_26/2011_09_26_drive_0095_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 1935 l
+2011_10_03/2011_10_03_drive_0034_sync 4510 r
+2011_09_26/2011_09_26_drive_0022_sync 742 r
+2011_09_30/2011_09_30_drive_0034_sync 623 l
+2011_09_30/2011_09_30_drive_0020_sync 669 l
+2011_09_30/2011_09_30_drive_0028_sync 957 l
+2011_09_30/2011_09_30_drive_0034_sync 204 r
+2011_09_26/2011_09_26_drive_0061_sync 133 l
+2011_09_26/2011_09_26_drive_0022_sync 214 r
+2011_09_26/2011_09_26_drive_0091_sync 91 l
+2011_10_03/2011_10_03_drive_0034_sync 4339 r
+2011_09_26/2011_09_26_drive_0057_sync 331 l
+2011_10_03/2011_10_03_drive_0034_sync 2822 r
+2011_09_26/2011_09_26_drive_0022_sync 659 l
+2011_09_26/2011_09_26_drive_0039_sync 180 r
+2011_10_03/2011_10_03_drive_0034_sync 370 l
+2011_10_03/2011_10_03_drive_0034_sync 2311 l
+2011_10_03/2011_10_03_drive_0042_sync 280 l
+2011_09_30/2011_09_30_drive_0033_sync 44 l
+2011_09_30/2011_09_30_drive_0028_sync 716 r
+2011_10_03/2011_10_03_drive_0034_sync 1782 l
+2011_09_30/2011_09_30_drive_0033_sync 154 l
+2011_09_30/2011_09_30_drive_0033_sync 1517 l
+2011_09_26/2011_09_26_drive_0028_sync 307 l
+2011_10_03/2011_10_03_drive_0034_sync 1426 r
+2011_09_30/2011_09_30_drive_0028_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 1531 l
+2011_10_03/2011_10_03_drive_0034_sync 4097 r
+2011_09_26/2011_09_26_drive_0028_sync 300 l
+2011_09_26/2011_09_26_drive_0032_sync 288 r
+2011_09_30/2011_09_30_drive_0028_sync 1661 l
+2011_09_30/2011_09_30_drive_0028_sync 1689 r
+2011_10_03/2011_10_03_drive_0034_sync 4255 r
+2011_10_03/2011_10_03_drive_0034_sync 2000 l
+2011_09_30/2011_09_30_drive_0020_sync 257 l
+2011_09_30/2011_09_30_drive_0034_sync 389 l
+2011_09_30/2011_09_30_drive_0033_sync 1216 l
+2011_09_26/2011_09_26_drive_0019_sync 124 r
+2011_09_26/2011_09_26_drive_0087_sync 704 r
+2011_09_26/2011_09_26_drive_0104_sync 123 r
+2011_09_26/2011_09_26_drive_0018_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 3714 r
+2011_10_03/2011_10_03_drive_0034_sync 361 r
+2011_09_30/2011_09_30_drive_0020_sync 789 l
+2011_10_03/2011_10_03_drive_0042_sync 850 l
+2011_10_03/2011_10_03_drive_0034_sync 4074 r
+2011_10_03/2011_10_03_drive_0034_sync 2343 r
+2011_09_26/2011_09_26_drive_0057_sync 188 r
+2011_09_26/2011_09_26_drive_0061_sync 407 l
+2011_09_30/2011_09_30_drive_0028_sync 2325 l
+2011_09_30/2011_09_30_drive_0033_sync 492 r
+2011_09_30/2011_09_30_drive_0034_sync 303 l
+2011_09_30/2011_09_30_drive_0028_sync 1067 l
+2011_10_03/2011_10_03_drive_0042_sync 371 l
+2011_09_26/2011_09_26_drive_0057_sync 121 r
+2011_10_03/2011_10_03_drive_0034_sync 340 l
+2011_09_30/2011_09_30_drive_0020_sync 889 l
+2011_09_30/2011_09_30_drive_0028_sync 3579 l
+2011_10_03/2011_10_03_drive_0034_sync 2076 l
+2011_09_30/2011_09_30_drive_0033_sync 378 l
+2011_09_26/2011_09_26_drive_0087_sync 267 l
+2011_09_29/2011_09_29_drive_0004_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 4755 r
+2011_09_30/2011_09_30_drive_0028_sync 3121 r
+2011_09_30/2011_09_30_drive_0020_sync 971 l
+2011_09_26/2011_09_26_drive_0032_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 883 r
+2011_09_26/2011_09_26_drive_0061_sync 318 l
+2011_09_30/2011_09_30_drive_0028_sync 1466 r
+2011_09_30/2011_09_30_drive_0028_sync 495 l
+2011_09_30/2011_09_30_drive_0034_sync 256 l
+2011_10_03/2011_10_03_drive_0034_sync 84 l
+2011_09_30/2011_09_30_drive_0033_sync 151 r
+2011_09_30/2011_09_30_drive_0033_sync 1560 r
+2011_09_30/2011_09_30_drive_0028_sync 1789 r
+2011_09_30/2011_09_30_drive_0020_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 2490 r
+2011_09_30/2011_09_30_drive_0028_sync 344 l
+2011_09_30/2011_09_30_drive_0028_sync 1721 r
+2011_09_26/2011_09_26_drive_0028_sync 162 r
+2011_09_26/2011_09_26_drive_0061_sync 482 r
+2011_09_30/2011_09_30_drive_0028_sync 495 r
+2011_09_30/2011_09_30_drive_0028_sync 3287 r
+2011_09_30/2011_09_30_drive_0028_sync 1398 l
+2011_10_03/2011_10_03_drive_0034_sync 2303 r
+2011_09_30/2011_09_30_drive_0028_sync 783 l
+2011_09_30/2011_09_30_drive_0028_sync 2150 r
+2011_09_30/2011_09_30_drive_0028_sync 4684 l
+2011_09_30/2011_09_30_drive_0034_sync 990 r
+2011_10_03/2011_10_03_drive_0034_sync 2520 r
+2011_10_03/2011_10_03_drive_0034_sync 1112 l
+2011_10_03/2011_10_03_drive_0034_sync 4168 r
+2011_09_26/2011_09_26_drive_0070_sync 163 r
+2011_09_26/2011_09_26_drive_0087_sync 474 l
+2011_10_03/2011_10_03_drive_0034_sync 443 l
+2011_09_26/2011_09_26_drive_0022_sync 335 r
+2011_09_30/2011_09_30_drive_0028_sync 3977 l
+2011_09_30/2011_09_30_drive_0028_sync 1391 l
+2011_09_30/2011_09_30_drive_0028_sync 2387 r
+2011_10_03/2011_10_03_drive_0034_sync 2891 l
+2011_09_30/2011_09_30_drive_0028_sync 4417 l
+2011_09_30/2011_09_30_drive_0028_sync 4836 r
+2011_09_30/2011_09_30_drive_0028_sync 4505 r
+2011_09_26/2011_09_26_drive_0095_sync 196 l
+2011_09_26/2011_09_26_drive_0061_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 1512 l
+2011_09_26/2011_09_26_drive_0091_sync 335 l
+2011_09_26/2011_09_26_drive_0087_sync 401 l
+2011_09_26/2011_09_26_drive_0039_sync 74 r
+2011_09_26/2011_09_26_drive_0061_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 1694 l
+2011_09_30/2011_09_30_drive_0028_sync 3293 l
+2011_09_26/2011_09_26_drive_0035_sync 3 r
+2011_09_30/2011_09_30_drive_0020_sync 1101 l
+2011_10_03/2011_10_03_drive_0034_sync 4329 r
+2011_09_30/2011_09_30_drive_0028_sync 1193 r
+2011_10_03/2011_10_03_drive_0034_sync 4109 r
+2011_10_03/2011_10_03_drive_0042_sync 420 l
+2011_09_26/2011_09_26_drive_0015_sync 284 r
+2011_09_30/2011_09_30_drive_0028_sync 1560 r
+2011_09_26/2011_09_26_drive_0104_sync 229 l
+2011_09_26/2011_09_26_drive_0079_sync 22 r
+2011_09_26/2011_09_26_drive_0015_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 1792 l
+2011_09_26/2011_09_26_drive_0005_sync 12 r
+2011_09_26/2011_09_26_drive_0091_sync 7 l
+2011_09_26/2011_09_26_drive_0015_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 4499 l
+2011_09_26/2011_09_26_drive_0014_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 3399 l
+2011_09_30/2011_09_30_drive_0028_sync 1826 l
+2011_10_03/2011_10_03_drive_0042_sync 919 r
+2011_09_30/2011_09_30_drive_0028_sync 1848 r
+2011_10_03/2011_10_03_drive_0034_sync 4593 l
+2011_10_03/2011_10_03_drive_0042_sync 1019 l
+2011_10_03/2011_10_03_drive_0034_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 469 r
+2011_09_26/2011_09_26_drive_0039_sync 187 l
+2011_09_26/2011_09_26_drive_0022_sync 172 r
+2011_09_30/2011_09_30_drive_0033_sync 305 l
+2011_10_03/2011_10_03_drive_0042_sync 858 r
+2011_09_30/2011_09_30_drive_0028_sync 3333 l
+2011_09_26/2011_09_26_drive_0051_sync 197 l
+2011_09_26/2011_09_26_drive_0061_sync 532 l
+2011_10_03/2011_10_03_drive_0034_sync 2453 r
+2011_09_26/2011_09_26_drive_0070_sync 284 l
+2011_09_26/2011_09_26_drive_0011_sync 232 l
+2011_09_30/2011_09_30_drive_0020_sync 599 r
+2011_09_26/2011_09_26_drive_0039_sync 389 r
+2011_09_26/2011_09_26_drive_0104_sync 55 l
+2011_09_26/2011_09_26_drive_0032_sync 187 l
+2011_09_30/2011_09_30_drive_0028_sync 1583 r
+2011_10_03/2011_10_03_drive_0034_sync 3519 r
+2011_09_29/2011_09_29_drive_0026_sync 119 l
+2011_09_29/2011_09_29_drive_0004_sync 123 r
+2011_09_30/2011_09_30_drive_0028_sync 5078 r
+2011_09_30/2011_09_30_drive_0028_sync 717 l
+2011_10_03/2011_10_03_drive_0034_sync 1327 r
+2011_10_03/2011_10_03_drive_0034_sync 174 l
+2011_09_30/2011_09_30_drive_0028_sync 626 r
+2011_10_03/2011_10_03_drive_0034_sync 995 l
+2011_09_26/2011_09_26_drive_0022_sync 730 r
+2011_09_26/2011_09_26_drive_0022_sync 657 l
+2011_09_26/2011_09_26_drive_0022_sync 567 l
+2011_09_30/2011_09_30_drive_0034_sync 342 r
+2011_09_30/2011_09_30_drive_0033_sync 402 r
+2011_09_30/2011_09_30_drive_0033_sync 452 l
+2011_09_30/2011_09_30_drive_0033_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 4276 r
+2011_10_03/2011_10_03_drive_0034_sync 1141 l
+2011_10_03/2011_10_03_drive_0034_sync 3487 l
+2011_09_30/2011_09_30_drive_0028_sync 741 l
+2011_09_30/2011_09_30_drive_0028_sync 556 r
+2011_09_30/2011_09_30_drive_0033_sync 203 l
+2011_09_26/2011_09_26_drive_0091_sync 19 l
+2011_09_26/2011_09_26_drive_0070_sync 303 l
+2011_09_30/2011_09_30_drive_0020_sync 925 r
+2011_09_30/2011_09_30_drive_0028_sync 1484 r
+2011_10_03/2011_10_03_drive_0034_sync 2885 l
+2011_10_03/2011_10_03_drive_0034_sync 2792 r
+2011_10_03/2011_10_03_drive_0034_sync 1322 l
+2011_09_26/2011_09_26_drive_0061_sync 586 l
+2011_10_03/2011_10_03_drive_0034_sync 4053 r
+2011_10_03/2011_10_03_drive_0034_sync 38 l
+2011_09_26/2011_09_26_drive_0028_sync 96 r
+2011_10_03/2011_10_03_drive_0034_sync 1930 l
+2011_09_30/2011_09_30_drive_0034_sync 813 l
+2011_10_03/2011_10_03_drive_0042_sync 595 r
+2011_10_03/2011_10_03_drive_0034_sync 2685 r
+2011_10_03/2011_10_03_drive_0034_sync 3878 l
+2011_09_30/2011_09_30_drive_0028_sync 4597 l
+2011_09_30/2011_09_30_drive_0020_sync 1042 l
+2011_09_30/2011_09_30_drive_0028_sync 3521 l
+2011_09_26/2011_09_26_drive_0104_sync 298 l
+2011_09_30/2011_09_30_drive_0028_sync 276 r
+2011_09_26/2011_09_26_drive_0018_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 3606 l
+2011_10_03/2011_10_03_drive_0034_sync 1084 r
+2011_10_03/2011_10_03_drive_0034_sync 2312 r
+2011_10_03/2011_10_03_drive_0034_sync 2783 l
+2011_09_26/2011_09_26_drive_0087_sync 314 r
+2011_09_26/2011_09_26_drive_0011_sync 125 l
+2011_09_30/2011_09_30_drive_0028_sync 437 r
+2011_10_03/2011_10_03_drive_0042_sync 134 l
+2011_09_30/2011_09_30_drive_0020_sync 998 r
+2011_09_26/2011_09_26_drive_0032_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 1838 l
+2011_10_03/2011_10_03_drive_0034_sync 4332 r
+2011_09_30/2011_09_30_drive_0028_sync 2098 r
+2011_09_30/2011_09_30_drive_0028_sync 1203 r
+2011_10_03/2011_10_03_drive_0034_sync 2404 r
+2011_09_30/2011_09_30_drive_0028_sync 607 r
+2011_09_26/2011_09_26_drive_0032_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 1488 r
+2011_09_26/2011_09_26_drive_0014_sync 280 l
+2011_09_26/2011_09_26_drive_0087_sync 555 r
+2011_10_03/2011_10_03_drive_0042_sync 825 r
+2011_09_26/2011_09_26_drive_0011_sync 182 l
+2011_09_30/2011_09_30_drive_0028_sync 2919 l
+2011_09_26/2011_09_26_drive_0087_sync 212 r
+2011_09_26/2011_09_26_drive_0014_sync 84 l
+2011_09_26/2011_09_26_drive_0061_sync 681 l
+2011_09_26/2011_09_26_drive_0022_sync 758 r
+2011_09_30/2011_09_30_drive_0028_sync 1284 l
+2011_10_03/2011_10_03_drive_0034_sync 2148 l
+2011_10_03/2011_10_03_drive_0034_sync 2973 l
+2011_09_30/2011_09_30_drive_0028_sync 4615 r
+2011_09_26/2011_09_26_drive_0113_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 2457 r
+2011_10_03/2011_10_03_drive_0034_sync 1868 r
+2011_10_03/2011_10_03_drive_0034_sync 492 l
+2011_10_03/2011_10_03_drive_0034_sync 3477 l
+2011_09_26/2011_09_26_drive_0091_sync 14 l
+2011_10_03/2011_10_03_drive_0034_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 2832 l
+2011_09_30/2011_09_30_drive_0034_sync 854 l
+2011_10_03/2011_10_03_drive_0042_sync 97 r
+2011_09_26/2011_09_26_drive_0028_sync 67 l
+2011_09_26/2011_09_26_drive_0022_sync 136 r
+2011_09_26/2011_09_26_drive_0061_sync 332 l
+2011_09_26/2011_09_26_drive_0022_sync 151 l
+2011_09_30/2011_09_30_drive_0028_sync 767 l
+2011_09_30/2011_09_30_drive_0028_sync 1478 r
+2011_09_30/2011_09_30_drive_0028_sync 4205 l
+2011_09_26/2011_09_26_drive_0051_sync 381 l
+2011_09_26/2011_09_26_drive_0070_sync 391 r
+2011_09_26/2011_09_26_drive_0061_sync 149 l
+2011_10_03/2011_10_03_drive_0034_sync 635 l
+2011_10_03/2011_10_03_drive_0034_sync 4582 l
+2011_09_26/2011_09_26_drive_0039_sync 181 r
+2011_09_26/2011_09_26_drive_0015_sync 17 l
+2011_09_26/2011_09_26_drive_0019_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 4162 l
+2011_09_26/2011_09_26_drive_0019_sync 405 r
+2011_10_03/2011_10_03_drive_0034_sync 522 l
+2011_09_26/2011_09_26_drive_0051_sync 107 l
+2011_09_30/2011_09_30_drive_0034_sync 1063 r
+2011_09_30/2011_09_30_drive_0020_sync 830 r
+2011_09_26/2011_09_26_drive_0001_sync 14 r
+2011_09_30/2011_09_30_drive_0028_sync 2357 l
+2011_09_26/2011_09_26_drive_0032_sync 107 l
+2011_09_26/2011_09_26_drive_0087_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 2657 r
+2011_09_30/2011_09_30_drive_0033_sync 788 l
+2011_09_26/2011_09_26_drive_0022_sync 427 l
+2011_09_30/2011_09_30_drive_0028_sync 1095 l
+2011_09_26/2011_09_26_drive_0070_sync 42 l
+2011_10_03/2011_10_03_drive_0034_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 3278 l
+2011_09_30/2011_09_30_drive_0028_sync 1119 r
+2011_10_03/2011_10_03_drive_0034_sync 4417 l
+2011_09_30/2011_09_30_drive_0028_sync 1998 r
+2011_09_30/2011_09_30_drive_0033_sync 1382 l
+2011_09_26/2011_09_26_drive_0028_sync 216 r
+2011_09_26/2011_09_26_drive_0028_sync 189 r
+2011_10_03/2011_10_03_drive_0042_sync 869 r
+2011_10_03/2011_10_03_drive_0042_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 735 l
+2011_10_03/2011_10_03_drive_0034_sync 4163 l
+2011_09_26/2011_09_26_drive_0087_sync 399 l
+2011_10_03/2011_10_03_drive_0042_sync 913 r
+2011_10_03/2011_10_03_drive_0034_sync 46 r
+2011_09_26/2011_09_26_drive_0057_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 124 l
+2011_09_30/2011_09_30_drive_0028_sync 1729 r
+2011_09_26/2011_09_26_drive_0028_sync 334 l
+2011_09_26/2011_09_26_drive_0015_sync 155 l
+2011_09_26/2011_09_26_drive_0039_sync 257 r
+2011_09_26/2011_09_26_drive_0035_sync 71 r
+2011_09_30/2011_09_30_drive_0034_sync 666 r
+2011_10_03/2011_10_03_drive_0034_sync 2366 l
+2011_10_03/2011_10_03_drive_0034_sync 2958 r
+2011_09_30/2011_09_30_drive_0028_sync 4157 r
+2011_09_30/2011_09_30_drive_0028_sync 2411 r
+2011_09_26/2011_09_26_drive_0022_sync 230 l
+2011_09_30/2011_09_30_drive_0028_sync 2915 r
+2011_09_26/2011_09_26_drive_0060_sync 61 l
+2011_10_03/2011_10_03_drive_0042_sync 894 l
+2011_10_03/2011_10_03_drive_0034_sync 3130 l
+2011_09_30/2011_09_30_drive_0034_sync 1061 r
+2011_09_26/2011_09_26_drive_0070_sync 102 l
+2011_09_26/2011_09_26_drive_0017_sync 77 l
+2011_09_30/2011_09_30_drive_0020_sync 893 l
+2011_10_03/2011_10_03_drive_0042_sync 910 r
+2011_09_26/2011_09_26_drive_0070_sync 158 l
+2011_10_03/2011_10_03_drive_0034_sync 3075 r
+2011_09_30/2011_09_30_drive_0028_sync 4444 r
+2011_09_30/2011_09_30_drive_0034_sync 988 r
+2011_10_03/2011_10_03_drive_0034_sync 1550 r
+2011_09_30/2011_09_30_drive_0028_sync 2088 r
+2011_09_26/2011_09_26_drive_0091_sync 204 r
+2011_09_30/2011_09_30_drive_0028_sync 4423 l
+2011_09_26/2011_09_26_drive_0095_sync 92 l
+2011_10_03/2011_10_03_drive_0042_sync 593 r
+2011_09_30/2011_09_30_drive_0028_sync 1195 l
+2011_09_26/2011_09_26_drive_0051_sync 118 r
+2011_10_03/2011_10_03_drive_0034_sync 3533 r
+2011_10_03/2011_10_03_drive_0034_sync 2442 l
+2011_10_03/2011_10_03_drive_0042_sync 585 r
+2011_09_30/2011_09_30_drive_0028_sync 4475 l
+2011_10_03/2011_10_03_drive_0034_sync 2271 r
+2011_09_26/2011_09_26_drive_0011_sync 50 l
+2011_09_30/2011_09_30_drive_0034_sync 974 l
+2011_09_26/2011_09_26_drive_0014_sync 127 r
+2011_09_30/2011_09_30_drive_0020_sync 854 r
+2011_09_26/2011_09_26_drive_0011_sync 164 r
+2011_09_26/2011_09_26_drive_0113_sync 11 l
+2011_09_26/2011_09_26_drive_0019_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 275 l
+2011_09_30/2011_09_30_drive_0034_sync 871 l
+2011_09_26/2011_09_26_drive_0032_sync 36 l
+2011_09_26/2011_09_26_drive_0087_sync 458 r
+2011_10_03/2011_10_03_drive_0034_sync 1106 r
+2011_09_26/2011_09_26_drive_0018_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 3392 l
+2011_10_03/2011_10_03_drive_0042_sync 502 l
+2011_10_03/2011_10_03_drive_0034_sync 4239 r
+2011_09_30/2011_09_30_drive_0033_sync 590 l
+2011_10_03/2011_10_03_drive_0034_sync 2995 l
+2011_09_26/2011_09_26_drive_0022_sync 567 r
+2011_09_30/2011_09_30_drive_0033_sync 367 l
+2011_09_30/2011_09_30_drive_0028_sync 1707 l
+2011_09_26/2011_09_26_drive_0087_sync 712 l
+2011_09_26/2011_09_26_drive_0113_sync 36 r
+2011_09_26/2011_09_26_drive_0015_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 2682 r
+2011_09_26/2011_09_26_drive_0104_sync 107 r
+2011_09_30/2011_09_30_drive_0020_sync 17 r
+2011_09_26/2011_09_26_drive_0087_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 664 r
+2011_09_30/2011_09_30_drive_0020_sync 708 r
+2011_09_30/2011_09_30_drive_0028_sync 4060 r
+2011_09_26/2011_09_26_drive_0019_sync 469 l
+2011_09_30/2011_09_30_drive_0028_sync 2974 l
+2011_09_30/2011_09_30_drive_0033_sync 691 l
+2011_09_30/2011_09_30_drive_0033_sync 1038 r
+2011_10_03/2011_10_03_drive_0034_sync 487 l
+2011_09_26/2011_09_26_drive_0015_sync 237 r
+2011_10_03/2011_10_03_drive_0042_sync 710 l
+2011_09_30/2011_09_30_drive_0034_sync 417 r
+2011_10_03/2011_10_03_drive_0034_sync 549 l
+2011_09_26/2011_09_26_drive_0095_sync 30 r
+2011_09_26/2011_09_26_drive_0057_sync 315 l
+2011_09_26/2011_09_26_drive_0061_sync 685 r
+2011_09_30/2011_09_30_drive_0028_sync 3994 l
+2011_10_03/2011_10_03_drive_0034_sync 1150 l
+2011_09_30/2011_09_30_drive_0028_sync 4081 r
+2011_09_30/2011_09_30_drive_0028_sync 4854 r
+2011_09_26/2011_09_26_drive_0095_sync 162 l
+2011_09_26/2011_09_26_drive_0087_sync 387 r
+2011_10_03/2011_10_03_drive_0042_sync 662 l
+2011_09_30/2011_09_30_drive_0028_sync 500 l
+2011_10_03/2011_10_03_drive_0034_sync 2840 l
+2011_09_30/2011_09_30_drive_0028_sync 130 l
+2011_09_29/2011_09_29_drive_0026_sync 82 l
+2011_09_30/2011_09_30_drive_0034_sync 578 l
+2011_09_30/2011_09_30_drive_0020_sync 562 r
+2011_09_30/2011_09_30_drive_0033_sync 1308 r
+2011_09_30/2011_09_30_drive_0028_sync 3763 l
+2011_09_26/2011_09_26_drive_0091_sync 151 r
+2011_10_03/2011_10_03_drive_0034_sync 3800 r
+2011_09_30/2011_09_30_drive_0028_sync 3034 l
+2011_09_26/2011_09_26_drive_0028_sync 315 r
+2011_09_30/2011_09_30_drive_0020_sync 394 l
+2011_09_26/2011_09_26_drive_0113_sync 85 r
+2011_09_30/2011_09_30_drive_0028_sync 858 l
+2011_09_26/2011_09_26_drive_0019_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 1641 r
+2011_10_03/2011_10_03_drive_0034_sync 3349 r
+2011_09_30/2011_09_30_drive_0028_sync 2795 l
+2011_09_26/2011_09_26_drive_0095_sync 209 l
+2011_09_26/2011_09_26_drive_0022_sync 737 l
+2011_10_03/2011_10_03_drive_0034_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 3235 l
+2011_10_03/2011_10_03_drive_0034_sync 1531 l
+2011_09_30/2011_09_30_drive_0033_sync 637 l
+2011_09_28/2011_09_28_drive_0001_sync 10 r
+2011_09_26/2011_09_26_drive_0028_sync 52 r
+2011_09_30/2011_09_30_drive_0034_sync 1079 r
+2011_09_30/2011_09_30_drive_0028_sync 897 l
+2011_10_03/2011_10_03_drive_0034_sync 1319 l
+2011_09_30/2011_09_30_drive_0028_sync 4081 l
+2011_10_03/2011_10_03_drive_0034_sync 21 l
+2011_09_30/2011_09_30_drive_0034_sync 5 r
+2011_09_30/2011_09_30_drive_0033_sync 916 r
+2011_10_03/2011_10_03_drive_0034_sync 2739 l
+2011_09_30/2011_09_30_drive_0028_sync 3846 r
+2011_09_26/2011_09_26_drive_0061_sync 36 r
+2011_09_26/2011_09_26_drive_0014_sync 177 l
+2011_09_30/2011_09_30_drive_0033_sync 553 l
+2011_09_30/2011_09_30_drive_0028_sync 2259 r
+2011_10_03/2011_10_03_drive_0042_sync 414 r
+2011_09_28/2011_09_28_drive_0001_sync 21 l
+2011_09_30/2011_09_30_drive_0028_sync 3556 l
+2011_09_26/2011_09_26_drive_0051_sync 14 l
+2011_09_29/2011_09_29_drive_0026_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 2932 r
+2011_09_30/2011_09_30_drive_0028_sync 5058 l
+2011_10_03/2011_10_03_drive_0042_sync 949 l
+2011_09_26/2011_09_26_drive_0028_sync 287 r
+2011_09_26/2011_09_26_drive_0005_sync 40 l
+2011_10_03/2011_10_03_drive_0034_sync 2150 l
+2011_10_03/2011_10_03_drive_0034_sync 805 l
+2011_09_26/2011_09_26_drive_0087_sync 405 r
+2011_09_30/2011_09_30_drive_0020_sync 977 l
+2011_10_03/2011_10_03_drive_0034_sync 342 r
+2011_09_26/2011_09_26_drive_0061_sync 201 r
+2011_10_03/2011_10_03_drive_0034_sync 4565 l
+2011_10_03/2011_10_03_drive_0034_sync 4099 r
+2011_09_26/2011_09_26_drive_0019_sync 118 l
+2011_10_03/2011_10_03_drive_0034_sync 570 l
+2011_09_30/2011_09_30_drive_0028_sync 1800 r
+2011_10_03/2011_10_03_drive_0042_sync 352 r
+2011_09_30/2011_09_30_drive_0033_sync 1132 l
+2011_09_26/2011_09_26_drive_0014_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 1750 r
+2011_10_03/2011_10_03_drive_0034_sync 3912 r
+2011_10_03/2011_10_03_drive_0034_sync 3482 r
+2011_09_26/2011_09_26_drive_0018_sync 96 r
+2011_09_26/2011_09_26_drive_0057_sync 267 r
+2011_09_30/2011_09_30_drive_0034_sync 1125 l
+2011_09_30/2011_09_30_drive_0028_sync 13 l
+2011_09_26/2011_09_26_drive_0035_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 4572 l
+2011_09_26/2011_09_26_drive_0057_sync 252 l
+2011_09_26/2011_09_26_drive_0005_sync 67 l
+2011_09_26/2011_09_26_drive_0095_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 2189 l
+2011_09_26/2011_09_26_drive_0015_sync 73 r
+2011_09_30/2011_09_30_drive_0020_sync 488 l
+2011_09_30/2011_09_30_drive_0034_sync 668 r
+2011_09_30/2011_09_30_drive_0028_sync 2262 r
+2011_09_30/2011_09_30_drive_0028_sync 2823 r
+2011_10_03/2011_10_03_drive_0034_sync 2688 r
+2011_10_03/2011_10_03_drive_0034_sync 3898 l
+2011_09_26/2011_09_26_drive_0039_sync 109 r
+2011_10_03/2011_10_03_drive_0042_sync 348 l
+2011_09_26/2011_09_26_drive_0091_sync 9 l
+2011_09_30/2011_09_30_drive_0034_sync 334 r
+2011_09_30/2011_09_30_drive_0028_sync 3732 l
+2011_09_30/2011_09_30_drive_0028_sync 4292 l
+2011_09_26/2011_09_26_drive_0113_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 1991 r
+2011_09_30/2011_09_30_drive_0028_sync 775 l
+2011_09_26/2011_09_26_drive_0028_sync 338 r
+2011_09_26/2011_09_26_drive_0022_sync 585 l
+2011_09_26/2011_09_26_drive_0113_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 355 l
+2011_09_26/2011_09_26_drive_0022_sync 735 r
+2011_09_26/2011_09_26_drive_0032_sync 144 r
+2011_09_26/2011_09_26_drive_0061_sync 181 r
+2011_10_03/2011_10_03_drive_0034_sync 2661 r
+2011_10_03/2011_10_03_drive_0034_sync 2455 r
+2011_09_30/2011_09_30_drive_0028_sync 624 r
+2011_09_30/2011_09_30_drive_0033_sync 1227 r
+2011_09_26/2011_09_26_drive_0035_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 3614 r
+2011_09_30/2011_09_30_drive_0028_sync 854 l
+2011_10_03/2011_10_03_drive_0034_sync 3814 r
+2011_09_30/2011_09_30_drive_0033_sync 293 l
+2011_09_30/2011_09_30_drive_0034_sync 725 l
+2011_09_26/2011_09_26_drive_0087_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 1905 l
+2011_09_30/2011_09_30_drive_0028_sync 4004 r
+2011_09_26/2011_09_26_drive_0032_sync 323 r
+2011_09_30/2011_09_30_drive_0034_sync 964 l
+2011_10_03/2011_10_03_drive_0034_sync 2274 l
+2011_09_26/2011_09_26_drive_0051_sync 242 l
+2011_10_03/2011_10_03_drive_0034_sync 2887 r
+2011_09_26/2011_09_26_drive_0001_sync 19 l
+2011_09_30/2011_09_30_drive_0034_sync 1122 l
+2011_10_03/2011_10_03_drive_0034_sync 1429 r
+2011_09_30/2011_09_30_drive_0028_sync 2144 l
+2011_10_03/2011_10_03_drive_0034_sync 3338 l
+2011_09_29/2011_09_29_drive_0026_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 5054 l
+2011_09_29/2011_09_29_drive_0004_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 2538 r
+2011_10_03/2011_10_03_drive_0042_sync 421 r
+2011_09_26/2011_09_26_drive_0035_sync 46 l
+2011_09_30/2011_09_30_drive_0028_sync 1875 r
+2011_10_03/2011_10_03_drive_0034_sync 3080 l
+2011_09_30/2011_09_30_drive_0028_sync 4014 l
+2011_10_03/2011_10_03_drive_0034_sync 1816 r
+2011_09_26/2011_09_26_drive_0087_sync 587 l
+2011_09_26/2011_09_26_drive_0015_sync 238 r
+2011_09_30/2011_09_30_drive_0033_sync 498 l
+2011_09_26/2011_09_26_drive_0028_sync 418 l
+2011_09_30/2011_09_30_drive_0033_sync 1060 l
+2011_09_26/2011_09_26_drive_0039_sync 277 r
+2011_09_30/2011_09_30_drive_0034_sync 1173 l
+2011_10_03/2011_10_03_drive_0034_sync 1465 l
+2011_09_26/2011_09_26_drive_0051_sync 318 r
+2011_09_30/2011_09_30_drive_0033_sync 1387 r
+2011_10_03/2011_10_03_drive_0034_sync 3985 l
+2011_09_26/2011_09_26_drive_0091_sync 65 l
+2011_09_26/2011_09_26_drive_0019_sync 200 l
+2011_09_26/2011_09_26_drive_0039_sync 229 l
+2011_09_30/2011_09_30_drive_0020_sync 312 l
+2011_09_26/2011_09_26_drive_0051_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 3947 r
+2011_09_30/2011_09_30_drive_0028_sync 2095 r
+2011_10_03/2011_10_03_drive_0034_sync 4023 l
+2011_09_26/2011_09_26_drive_0087_sync 598 l
+2011_10_03/2011_10_03_drive_0034_sync 1378 r
+2011_09_26/2011_09_26_drive_0005_sync 119 r
+2011_09_30/2011_09_30_drive_0028_sync 1317 r
+2011_09_30/2011_09_30_drive_0028_sync 3782 l
+2011_09_30/2011_09_30_drive_0028_sync 49 l
+2011_09_26/2011_09_26_drive_0022_sync 717 l
+2011_09_30/2011_09_30_drive_0028_sync 1748 l
+2011_09_26/2011_09_26_drive_0022_sync 341 r
+2011_09_26/2011_09_26_drive_0060_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 2929 l
+2011_09_30/2011_09_30_drive_0033_sync 1221 r
+2011_09_26/2011_09_26_drive_0015_sync 143 r
+2011_09_30/2011_09_30_drive_0034_sync 338 l
+2011_09_26/2011_09_26_drive_0028_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 2254 l
+2011_09_26/2011_09_26_drive_0087_sync 428 r
+2011_10_03/2011_10_03_drive_0034_sync 261 r
+2011_10_03/2011_10_03_drive_0042_sync 280 r
+2011_10_03/2011_10_03_drive_0042_sync 177 l
+2011_09_26/2011_09_26_drive_0019_sync 399 l
+2011_09_26/2011_09_26_drive_0070_sync 27 r
+2011_09_26/2011_09_26_drive_0095_sync 101 l
+2011_09_30/2011_09_30_drive_0033_sync 1002 l
+2011_09_26/2011_09_26_drive_0014_sync 30 l
+2011_09_26/2011_09_26_drive_0019_sync 15 r
+2011_10_03/2011_10_03_drive_0034_sync 1550 l
+2011_09_26/2011_09_26_drive_0018_sync 207 l
+2011_09_26/2011_09_26_drive_0022_sync 539 r
+2011_10_03/2011_10_03_drive_0034_sync 4138 l
+2011_09_30/2011_09_30_drive_0033_sync 1468 r
+2011_09_30/2011_09_30_drive_0034_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 4733 r
+2011_10_03/2011_10_03_drive_0034_sync 2504 l
+2011_09_30/2011_09_30_drive_0028_sync 655 l
+2011_09_26/2011_09_26_drive_0087_sync 609 r
+2011_10_03/2011_10_03_drive_0034_sync 2336 r
+2011_09_26/2011_09_26_drive_0051_sync 45 r
+2011_09_30/2011_09_30_drive_0033_sync 252 r
+2011_09_30/2011_09_30_drive_0028_sync 3126 l
+2011_09_30/2011_09_30_drive_0028_sync 2866 r
+2011_10_03/2011_10_03_drive_0042_sync 88 r
+2011_09_26/2011_09_26_drive_0022_sync 12 l
+2011_09_26/2011_09_26_drive_0070_sync 148 r
+2011_09_30/2011_09_30_drive_0033_sync 94 r
+2011_09_30/2011_09_30_drive_0028_sync 1716 l
+2011_09_26/2011_09_26_drive_0022_sync 336 r
+2011_09_26/2011_09_26_drive_0061_sync 490 r
+2011_09_30/2011_09_30_drive_0020_sync 576 l
+2011_09_26/2011_09_26_drive_0087_sync 433 l
+2011_09_30/2011_09_30_drive_0028_sync 5134 r
+2011_09_30/2011_09_30_drive_0034_sync 1171 l
+2011_09_26/2011_09_26_drive_0061_sync 181 l
+2011_10_03/2011_10_03_drive_0034_sync 3414 l
+2011_10_03/2011_10_03_drive_0034_sync 1627 l
+2011_09_26/2011_09_26_drive_0019_sync 145 l
+2011_10_03/2011_10_03_drive_0034_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 1773 l
+2011_09_30/2011_09_30_drive_0028_sync 3271 r
+2011_09_26/2011_09_26_drive_0057_sync 350 r
+2011_09_26/2011_09_26_drive_0060_sync 12 r
+2011_09_26/2011_09_26_drive_0095_sync 88 r
+2011_09_30/2011_09_30_drive_0028_sync 3908 l
+2011_09_30/2011_09_30_drive_0020_sync 427 l
+2011_09_26/2011_09_26_drive_0060_sync 47 l
+2011_09_30/2011_09_30_drive_0028_sync 3256 r
+2011_09_26/2011_09_26_drive_0028_sync 119 r
+2011_09_30/2011_09_30_drive_0020_sync 398 r
+2011_10_03/2011_10_03_drive_0042_sync 641 r
+2011_09_30/2011_09_30_drive_0028_sync 3527 r
+2011_09_26/2011_09_26_drive_0104_sync 262 r
+2011_09_26/2011_09_26_drive_0091_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 3222 r
+2011_09_30/2011_09_30_drive_0028_sync 3253 r
+2011_09_26/2011_09_26_drive_0087_sync 432 r
+2011_09_30/2011_09_30_drive_0033_sync 358 r
+2011_09_26/2011_09_26_drive_0019_sync 138 l
+2011_09_30/2011_09_30_drive_0028_sync 5080 r
+2011_09_26/2011_09_26_drive_0011_sync 217 l
+2011_09_30/2011_09_30_drive_0033_sync 677 l
+2011_09_26/2011_09_26_drive_0039_sync 114 r
+2011_09_26/2011_09_26_drive_0022_sync 496 r
+2011_09_30/2011_09_30_drive_0033_sync 715 l
+2011_09_26/2011_09_26_drive_0087_sync 266 l
+2011_09_26/2011_09_26_drive_0028_sync 267 r
+2011_09_30/2011_09_30_drive_0033_sync 511 l
+2011_09_30/2011_09_30_drive_0028_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 2375 l
+2011_09_26/2011_09_26_drive_0019_sync 356 r
+2011_10_03/2011_10_03_drive_0034_sync 215 l
+2011_09_26/2011_09_26_drive_0015_sync 261 r
+2011_10_03/2011_10_03_drive_0034_sync 3168 r
+2011_09_30/2011_09_30_drive_0028_sync 3283 l
+2011_09_30/2011_09_30_drive_0033_sync 768 r
+2011_09_26/2011_09_26_drive_0035_sync 117 l
+2011_09_30/2011_09_30_drive_0028_sync 4836 l
+2011_09_30/2011_09_30_drive_0028_sync 4599 r
+2011_09_30/2011_09_30_drive_0028_sync 4151 r
+2011_09_26/2011_09_26_drive_0051_sync 345 l
+2011_09_30/2011_09_30_drive_0028_sync 1062 l
+2011_09_30/2011_09_30_drive_0033_sync 238 r
+2011_09_26/2011_09_26_drive_0079_sync 91 r
+2011_09_30/2011_09_30_drive_0028_sync 5008 l
+2011_09_26/2011_09_26_drive_0028_sync 125 l
+2011_09_30/2011_09_30_drive_0028_sync 2701 l
+2011_09_26/2011_09_26_drive_0087_sync 493 r
+2011_09_26/2011_09_26_drive_0057_sync 160 l
+2011_09_30/2011_09_30_drive_0020_sync 858 r
+2011_09_26/2011_09_26_drive_0028_sync 382 r
+2011_09_30/2011_09_30_drive_0028_sync 2959 r
+2011_10_03/2011_10_03_drive_0034_sync 2998 r
+2011_09_26/2011_09_26_drive_0079_sync 86 r
+2011_10_03/2011_10_03_drive_0042_sync 833 r
+2011_10_03/2011_10_03_drive_0034_sync 2017 l
+2011_09_26/2011_09_26_drive_0087_sync 649 r
+2011_09_30/2011_09_30_drive_0033_sync 218 r
+2011_09_30/2011_09_30_drive_0033_sync 1477 l
+2011_09_26/2011_09_26_drive_0018_sync 75 l
+2011_09_29/2011_09_29_drive_0004_sync 159 r
+2011_10_03/2011_10_03_drive_0034_sync 4453 r
+2011_09_26/2011_09_26_drive_0022_sync 404 r
+2011_09_30/2011_09_30_drive_0020_sync 675 l
+2011_09_30/2011_09_30_drive_0028_sync 4712 l
+2011_09_26/2011_09_26_drive_0032_sync 274 r
+2011_09_30/2011_09_30_drive_0033_sync 1494 l
+2011_09_30/2011_09_30_drive_0033_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 3545 r
+2011_09_30/2011_09_30_drive_0028_sync 1212 r
+2011_09_30/2011_09_30_drive_0028_sync 5018 r
+2011_09_29/2011_09_29_drive_0004_sync 290 l
+2011_09_26/2011_09_26_drive_0091_sync 171 r
+2011_09_26/2011_09_26_drive_0032_sync 271 l
+2011_10_03/2011_10_03_drive_0034_sync 4508 r
+2011_09_26/2011_09_26_drive_0019_sync 443 l
+2011_09_30/2011_09_30_drive_0033_sync 246 l
+2011_09_30/2011_09_30_drive_0028_sync 3916 l
+2011_09_30/2011_09_30_drive_0028_sync 950 l
+2011_09_28/2011_09_28_drive_0001_sync 15 l
+2011_09_30/2011_09_30_drive_0034_sync 515 r
+2011_09_26/2011_09_26_drive_0091_sync 111 r
+2011_10_03/2011_10_03_drive_0034_sync 1410 r
+2011_09_26/2011_09_26_drive_0079_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 4317 l
+2011_10_03/2011_10_03_drive_0042_sync 1003 r
+2011_09_30/2011_09_30_drive_0033_sync 1295 r
+2011_09_30/2011_09_30_drive_0028_sync 2345 l
+2011_09_30/2011_09_30_drive_0028_sync 5117 r
+2011_09_30/2011_09_30_drive_0028_sync 4583 l
+2011_09_30/2011_09_30_drive_0020_sync 944 r
+2011_09_30/2011_09_30_drive_0034_sync 473 r
+2011_10_03/2011_10_03_drive_0042_sync 1087 l
+2011_09_30/2011_09_30_drive_0028_sync 1883 l
+2011_09_30/2011_09_30_drive_0033_sync 747 r
+2011_09_26/2011_09_26_drive_0032_sync 53 l
+2011_09_26/2011_09_26_drive_0095_sync 226 r
+2011_10_03/2011_10_03_drive_0034_sync 1447 l
+2011_09_30/2011_09_30_drive_0028_sync 1372 l
+2011_10_03/2011_10_03_drive_0042_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 1088 l
+2011_10_03/2011_10_03_drive_0034_sync 2157 l
+2011_09_28/2011_09_28_drive_0001_sync 36 r
+2011_09_26/2011_09_26_drive_0095_sync 229 l
+2011_09_26/2011_09_26_drive_0061_sync 298 r
+2011_10_03/2011_10_03_drive_0034_sync 1194 r
+2011_09_30/2011_09_30_drive_0033_sync 722 r
+2011_09_30/2011_09_30_drive_0034_sync 637 l
+2011_09_30/2011_09_30_drive_0033_sync 852 l
+2011_09_30/2011_09_30_drive_0020_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 79 l
+2011_10_03/2011_10_03_drive_0042_sync 805 r
+2011_09_30/2011_09_30_drive_0020_sync 856 r
+2011_10_03/2011_10_03_drive_0042_sync 721 l
+2011_09_30/2011_09_30_drive_0028_sync 3160 r
+2011_09_26/2011_09_26_drive_0061_sync 293 l
+2011_09_30/2011_09_30_drive_0033_sync 718 l
+2011_09_30/2011_09_30_drive_0034_sync 812 l
+2011_09_30/2011_09_30_drive_0028_sync 4807 l
+2011_09_30/2011_09_30_drive_0028_sync 4885 r
+2011_09_30/2011_09_30_drive_0020_sync 972 l
+2011_10_03/2011_10_03_drive_0034_sync 154 l
+2011_09_26/2011_09_26_drive_0061_sync 532 r
+2011_09_30/2011_09_30_drive_0028_sync 4193 l
+2011_10_03/2011_10_03_drive_0034_sync 1619 r
+2011_09_29/2011_09_29_drive_0004_sync 270 r
+2011_09_26/2011_09_26_drive_0061_sync 541 l
+2011_09_26/2011_09_26_drive_0014_sync 229 r
+2011_09_26/2011_09_26_drive_0019_sync 452 r
+2011_09_30/2011_09_30_drive_0028_sync 3595 r
+2011_09_29/2011_09_29_drive_0004_sync 0 l
+2011_09_30/2011_09_30_drive_0020_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 1134 l
+2011_09_30/2011_09_30_drive_0020_sync 1 r
+2011_09_30/2011_09_30_drive_0020_sync 686 r
+2011_09_30/2011_09_30_drive_0028_sync 2921 r
+2011_09_26/2011_09_26_drive_0070_sync 86 l
+2011_09_30/2011_09_30_drive_0034_sync 923 l
+2011_09_26/2011_09_26_drive_0001_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 2083 r
+2011_09_30/2011_09_30_drive_0033_sync 718 r
+2011_09_30/2011_09_30_drive_0028_sync 1663 l
+2011_09_26/2011_09_26_drive_0018_sync 218 l
+2011_09_26/2011_09_26_drive_0061_sync 136 r
+2011_09_26/2011_09_26_drive_0015_sync 295 r
+2011_10_03/2011_10_03_drive_0042_sync 772 l
+2011_09_26/2011_09_26_drive_0022_sync 91 r
+2011_09_30/2011_09_30_drive_0033_sync 953 l
+2011_09_26/2011_09_26_drive_0087_sync 501 l
+2011_10_03/2011_10_03_drive_0034_sync 3493 r
+2011_10_03/2011_10_03_drive_0034_sync 369 r
+2011_09_26/2011_09_26_drive_0015_sync 196 l
+2011_10_03/2011_10_03_drive_0042_sync 521 r
+2011_09_30/2011_09_30_drive_0028_sync 1453 l
+2011_09_30/2011_09_30_drive_0028_sync 5025 r
+2011_09_26/2011_09_26_drive_0022_sync 589 l
+2011_09_29/2011_09_29_drive_0026_sync 67 l
+2011_10_03/2011_10_03_drive_0042_sync 56 l
+2011_09_30/2011_09_30_drive_0033_sync 591 r
+2011_09_30/2011_09_30_drive_0028_sync 1645 r
+2011_10_03/2011_10_03_drive_0034_sync 4236 l
+2011_10_03/2011_10_03_drive_0034_sync 4213 l
+2011_10_03/2011_10_03_drive_0034_sync 705 l
+2011_09_30/2011_09_30_drive_0034_sync 346 l
+2011_09_30/2011_09_30_drive_0028_sync 706 r
+2011_09_26/2011_09_26_drive_0095_sync 195 r
+2011_09_26/2011_09_26_drive_0051_sync 7 l
+2011_10_03/2011_10_03_drive_0042_sync 868 r
+2011_09_26/2011_09_26_drive_0070_sync 360 r
+2011_10_03/2011_10_03_drive_0042_sync 289 r
+2011_09_26/2011_09_26_drive_0018_sync 231 l
+2011_09_30/2011_09_30_drive_0028_sync 927 l
+2011_09_26/2011_09_26_drive_0022_sync 602 r
+2011_09_30/2011_09_30_drive_0034_sync 446 r
+2011_09_30/2011_09_30_drive_0028_sync 4940 r
+2011_10_03/2011_10_03_drive_0042_sync 1163 r
+2011_09_30/2011_09_30_drive_0028_sync 3547 r
+2011_09_26/2011_09_26_drive_0005_sync 105 r
+2011_09_30/2011_09_30_drive_0034_sync 692 r
+2011_09_30/2011_09_30_drive_0020_sync 731 r
+2011_09_26/2011_09_26_drive_0061_sync 302 l
+2011_09_26/2011_09_26_drive_0060_sync 28 l
+2011_09_30/2011_09_30_drive_0020_sync 279 l
+2011_10_03/2011_10_03_drive_0042_sync 217 l
+2011_09_30/2011_09_30_drive_0028_sync 3124 l
+2011_09_30/2011_09_30_drive_0028_sync 3665 r
+2011_09_30/2011_09_30_drive_0028_sync 5151 l
+2011_09_30/2011_09_30_drive_0028_sync 2081 r
+2011_10_03/2011_10_03_drive_0034_sync 1286 l
+2011_09_30/2011_09_30_drive_0033_sync 1337 r
+2011_09_30/2011_09_30_drive_0033_sync 743 l
+2011_09_26/2011_09_26_drive_0104_sync 71 l
+2011_09_26/2011_09_26_drive_0022_sync 22 r
+2011_09_26/2011_09_26_drive_0001_sync 93 r
+2011_09_26/2011_09_26_drive_0018_sync 268 l
+2011_10_03/2011_10_03_drive_0034_sync 2968 l
+2011_09_30/2011_09_30_drive_0034_sync 278 r
+2011_09_26/2011_09_26_drive_0087_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 425 r
+2011_09_30/2011_09_30_drive_0034_sync 601 r
+2011_09_30/2011_09_30_drive_0028_sync 1716 r
+2011_09_26/2011_09_26_drive_0087_sync 547 r
+2011_09_30/2011_09_30_drive_0028_sync 239 l
+2011_09_26/2011_09_26_drive_0032_sync 8 l
+2011_09_30/2011_09_30_drive_0020_sync 432 l
+2011_10_03/2011_10_03_drive_0034_sync 2052 r
+2011_09_30/2011_09_30_drive_0033_sync 1200 l
+2011_09_28/2011_09_28_drive_0001_sync 34 r
+2011_09_30/2011_09_30_drive_0028_sync 4185 l
+2011_09_26/2011_09_26_drive_0070_sync 302 r
+2011_09_29/2011_09_29_drive_0004_sync 236 l
+2011_10_03/2011_10_03_drive_0042_sync 80 l
+2011_09_26/2011_09_26_drive_0019_sync 109 r
+2011_09_30/2011_09_30_drive_0033_sync 524 l
+2011_09_26/2011_09_26_drive_0019_sync 464 l
+2011_10_03/2011_10_03_drive_0034_sync 4527 r
+2011_10_03/2011_10_03_drive_0034_sync 1080 r
+2011_10_03/2011_10_03_drive_0034_sync 2634 l
+2011_09_26/2011_09_26_drive_0061_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 4496 r
+2011_09_26/2011_09_26_drive_0018_sync 13 l
+2011_09_26/2011_09_26_drive_0022_sync 513 l
+2011_09_30/2011_09_30_drive_0028_sync 2026 r
+2011_10_03/2011_10_03_drive_0034_sync 3548 l
+2011_10_03/2011_10_03_drive_0034_sync 1706 r
+2011_09_26/2011_09_26_drive_0061_sync 141 l
+2011_09_26/2011_09_26_drive_0091_sync 271 l
+2011_09_26/2011_09_26_drive_0022_sync 403 l
+2011_09_30/2011_09_30_drive_0028_sync 1851 l
+2011_09_30/2011_09_30_drive_0034_sync 1205 r
+2011_09_30/2011_09_30_drive_0034_sync 707 r
+2011_09_30/2011_09_30_drive_0033_sync 1373 l
+2011_10_03/2011_10_03_drive_0042_sync 832 r
+2011_09_30/2011_09_30_drive_0028_sync 2408 r
+2011_10_03/2011_10_03_drive_0034_sync 678 r
+2011_09_26/2011_09_26_drive_0019_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 547 l
+2011_09_30/2011_09_30_drive_0033_sync 55 l
+2011_10_03/2011_10_03_drive_0034_sync 4315 r
+2011_10_03/2011_10_03_drive_0034_sync 3756 l
+2011_09_30/2011_09_30_drive_0028_sync 2028 r
+2011_09_30/2011_09_30_drive_0028_sync 1877 l
+2011_10_03/2011_10_03_drive_0034_sync 273 r
+2011_09_30/2011_09_30_drive_0020_sync 357 l
+2011_10_03/2011_10_03_drive_0034_sync 1788 l
+2011_10_03/2011_10_03_drive_0034_sync 4476 l
+2011_09_30/2011_09_30_drive_0033_sync 538 l
+2011_09_26/2011_09_26_drive_0070_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 4556 l
+2011_09_30/2011_09_30_drive_0028_sync 4919 l
+2011_09_30/2011_09_30_drive_0028_sync 4564 r
+2011_09_29/2011_09_29_drive_0004_sync 14 r
+2011_09_26/2011_09_26_drive_0091_sync 321 r
+2011_10_03/2011_10_03_drive_0034_sync 3333 r
+2011_09_30/2011_09_30_drive_0028_sync 3568 r
+2011_09_30/2011_09_30_drive_0028_sync 2143 r
+2011_09_26/2011_09_26_drive_0051_sync 219 r
+2011_09_26/2011_09_26_drive_0051_sync 114 r
+2011_09_30/2011_09_30_drive_0020_sync 746 r
+2011_09_26/2011_09_26_drive_0070_sync 203 r
+2011_09_26/2011_09_26_drive_0057_sync 92 r
+2011_10_03/2011_10_03_drive_0034_sync 1473 r
+2011_09_26/2011_09_26_drive_0015_sync 21 l
+2011_09_26/2011_09_26_drive_0051_sync 428 r
+2011_09_26/2011_09_26_drive_0104_sync 256 l
+2011_09_26/2011_09_26_drive_0087_sync 330 l
+2011_09_30/2011_09_30_drive_0028_sync 2085 r
+2011_10_03/2011_10_03_drive_0034_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 1930 r
+2011_09_26/2011_09_26_drive_0087_sync 268 l
+2011_10_03/2011_10_03_drive_0034_sync 992 l
+2011_09_26/2011_09_26_drive_0022_sync 772 r
+2011_10_03/2011_10_03_drive_0034_sync 1687 l
+2011_09_30/2011_09_30_drive_0028_sync 3327 l
+2011_09_26/2011_09_26_drive_0039_sync 295 r
+2011_09_30/2011_09_30_drive_0034_sync 582 l
+2011_09_26/2011_09_26_drive_0061_sync 457 r
+2011_09_26/2011_09_26_drive_0087_sync 153 l
+2011_09_30/2011_09_30_drive_0020_sync 185 r
+2011_09_26/2011_09_26_drive_0039_sync 246 l
+2011_09_26/2011_09_26_drive_0028_sync 155 l
+2011_09_26/2011_09_26_drive_0095_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 2807 r
+2011_09_26/2011_09_26_drive_0091_sync 20 r
+2011_09_29/2011_09_29_drive_0026_sync 132 r
+2011_09_26/2011_09_26_drive_0061_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 863 r
+2011_10_03/2011_10_03_drive_0042_sync 958 r
+2011_10_03/2011_10_03_drive_0034_sync 4167 r
+2011_10_03/2011_10_03_drive_0034_sync 2275 l
+2011_09_30/2011_09_30_drive_0028_sync 3307 l
+2011_10_03/2011_10_03_drive_0034_sync 4562 l
+2011_09_26/2011_09_26_drive_0014_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 3976 l
+2011_09_30/2011_09_30_drive_0033_sync 507 l
+2011_09_30/2011_09_30_drive_0028_sync 1785 r
+2011_10_03/2011_10_03_drive_0034_sync 4169 l
+2011_10_03/2011_10_03_drive_0034_sync 3162 l
+2011_09_26/2011_09_26_drive_0104_sync 178 r
+2011_09_30/2011_09_30_drive_0034_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 5077 l
+2011_09_26/2011_09_26_drive_0001_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 2649 l
+2011_09_26/2011_09_26_drive_0035_sync 38 r
+2011_09_26/2011_09_26_drive_0015_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 1947 r
+2011_09_26/2011_09_26_drive_0070_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 3183 l
+2011_09_30/2011_09_30_drive_0034_sync 322 r
+2011_09_26/2011_09_26_drive_0070_sync 396 r
+2011_09_30/2011_09_30_drive_0020_sync 402 l
+2011_09_30/2011_09_30_drive_0028_sync 3048 r
+2011_09_30/2011_09_30_drive_0028_sync 2254 r
+2011_09_29/2011_09_29_drive_0026_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 41 l
+2011_10_03/2011_10_03_drive_0042_sync 1001 l
+2011_09_30/2011_09_30_drive_0028_sync 704 l
+2011_09_26/2011_09_26_drive_0095_sync 129 l
+2011_09_26/2011_09_26_drive_0018_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 890 l
+2011_10_03/2011_10_03_drive_0042_sync 376 r
+2011_09_26/2011_09_26_drive_0113_sync 16 r
+2011_09_26/2011_09_26_drive_0104_sync 68 r
+2011_09_30/2011_09_30_drive_0028_sync 3368 r
+2011_09_26/2011_09_26_drive_0051_sync 368 l
+2011_09_26/2011_09_26_drive_0087_sync 126 l
+2011_09_26/2011_09_26_drive_0015_sync 53 l
+2011_09_30/2011_09_30_drive_0028_sync 919 r
+2011_09_30/2011_09_30_drive_0020_sync 878 l
+2011_09_30/2011_09_30_drive_0028_sync 1863 r
+2011_09_26/2011_09_26_drive_0095_sync 178 l
+2011_09_30/2011_09_30_drive_0028_sync 2278 l
+2011_09_29/2011_09_29_drive_0004_sync 302 r
+2011_09_30/2011_09_30_drive_0028_sync 4919 r
+2011_09_30/2011_09_30_drive_0028_sync 4773 r
+2011_10_03/2011_10_03_drive_0034_sync 4541 l
+2011_09_26/2011_09_26_drive_0022_sync 445 l
+2011_09_26/2011_09_26_drive_0061_sync 139 l
+2011_09_26/2011_09_26_drive_0057_sync 197 l
+2011_09_30/2011_09_30_drive_0020_sync 1049 r
+2011_09_30/2011_09_30_drive_0028_sync 913 r
+2011_09_30/2011_09_30_drive_0028_sync 3297 r
+2011_09_30/2011_09_30_drive_0033_sync 440 r
+2011_09_30/2011_09_30_drive_0028_sync 2968 r
+2011_09_30/2011_09_30_drive_0034_sync 214 r
+2011_09_26/2011_09_26_drive_0019_sync 266 r
+2011_09_30/2011_09_30_drive_0028_sync 2210 l
+2011_09_29/2011_09_29_drive_0026_sync 14 r
+2011_09_30/2011_09_30_drive_0033_sync 80 l
+2011_09_30/2011_09_30_drive_0033_sync 867 l
+2011_09_26/2011_09_26_drive_0017_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 3913 r
+2011_09_30/2011_09_30_drive_0028_sync 1513 r
+2011_09_30/2011_09_30_drive_0034_sync 134 l
+2011_10_03/2011_10_03_drive_0034_sync 197 r
+2011_09_26/2011_09_26_drive_0022_sync 426 l
+2011_09_26/2011_09_26_drive_0061_sync 177 l
+2011_09_30/2011_09_30_drive_0034_sync 569 r
+2011_09_29/2011_09_29_drive_0026_sync 92 r
+2011_09_26/2011_09_26_drive_0011_sync 116 l
+2011_09_26/2011_09_26_drive_0028_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 1302 r
+2011_09_30/2011_09_30_drive_0028_sync 483 r
+2011_09_26/2011_09_26_drive_0087_sync 424 l
+2011_10_03/2011_10_03_drive_0042_sync 813 l
+2011_09_30/2011_09_30_drive_0028_sync 3693 l
+2011_09_30/2011_09_30_drive_0033_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 1310 r
+2011_09_26/2011_09_26_drive_0022_sync 641 r
+2011_10_03/2011_10_03_drive_0034_sync 2991 l
+2011_09_26/2011_09_26_drive_0028_sync 73 r
+2011_09_26/2011_09_26_drive_0018_sync 220 r
+2011_10_03/2011_10_03_drive_0034_sync 1824 r
+2011_10_03/2011_10_03_drive_0034_sync 1121 l
+2011_09_26/2011_09_26_drive_0051_sync 25 l
+2011_09_26/2011_09_26_drive_0061_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 3078 l
+2011_09_26/2011_09_26_drive_0091_sync 191 l
+2011_09_26/2011_09_26_drive_0087_sync 264 r
+2011_09_26/2011_09_26_drive_0019_sync 229 r
+2011_09_30/2011_09_30_drive_0033_sync 867 r
+2011_09_30/2011_09_30_drive_0028_sync 340 l
+2011_09_30/2011_09_30_drive_0028_sync 489 r
+2011_09_26/2011_09_26_drive_0095_sync 212 r
+2011_10_03/2011_10_03_drive_0034_sync 4346 r
+2011_09_30/2011_09_30_drive_0034_sync 108 r
+2011_09_26/2011_09_26_drive_0001_sync 39 l
+2011_09_26/2011_09_26_drive_0039_sync 329 l
+2011_09_26/2011_09_26_drive_0061_sync 292 l
+2011_09_30/2011_09_30_drive_0028_sync 4120 l
+2011_09_30/2011_09_30_drive_0028_sync 1694 l
+2011_09_26/2011_09_26_drive_0032_sync 381 r
+2011_09_26/2011_09_26_drive_0057_sync 279 l
+2011_09_26/2011_09_26_drive_0051_sync 188 l
+2011_09_26/2011_09_26_drive_0014_sync 34 l
+2011_09_26/2011_09_26_drive_0032_sync 354 r
+2011_10_03/2011_10_03_drive_0034_sync 2073 l
+2011_09_30/2011_09_30_drive_0028_sync 584 r
+2011_09_30/2011_09_30_drive_0028_sync 3876 l
+2011_09_30/2011_09_30_drive_0033_sync 991 l
+2011_10_03/2011_10_03_drive_0034_sync 3111 r
+2011_10_03/2011_10_03_drive_0034_sync 3902 l
+2011_09_30/2011_09_30_drive_0028_sync 1037 r
+2011_09_30/2011_09_30_drive_0028_sync 1208 r
+2011_09_26/2011_09_26_drive_0057_sync 301 l
+2011_09_30/2011_09_30_drive_0020_sync 976 l
+2011_10_03/2011_10_03_drive_0034_sync 404 l
+2011_10_03/2011_10_03_drive_0034_sync 4147 r
+2011_09_26/2011_09_26_drive_0087_sync 645 l
+2011_09_26/2011_09_26_drive_0028_sync 297 l
+2011_10_03/2011_10_03_drive_0034_sync 4530 l
+2011_09_30/2011_09_30_drive_0028_sync 3320 r
+2011_09_29/2011_09_29_drive_0026_sync 28 l
+2011_10_03/2011_10_03_drive_0042_sync 253 r
+2011_09_26/2011_09_26_drive_0057_sync 331 r
+2011_10_03/2011_10_03_drive_0034_sync 4206 l
+2011_10_03/2011_10_03_drive_0034_sync 1457 r
+2011_09_26/2011_09_26_drive_0019_sync 120 l
+2011_09_26/2011_09_26_drive_0014_sync 242 l
+2011_09_26/2011_09_26_drive_0028_sync 152 r
+2011_09_30/2011_09_30_drive_0020_sync 923 r
+2011_09_30/2011_09_30_drive_0028_sync 2743 r
+2011_10_03/2011_10_03_drive_0034_sync 4265 l
+2011_10_03/2011_10_03_drive_0034_sync 4408 r
+2011_09_26/2011_09_26_drive_0019_sync 208 r
+2011_09_30/2011_09_30_drive_0028_sync 1165 l
+2011_09_26/2011_09_26_drive_0015_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 165 r
+2011_09_30/2011_09_30_drive_0028_sync 2152 l
+2011_09_30/2011_09_30_drive_0020_sync 243 l
+2011_10_03/2011_10_03_drive_0034_sync 1539 r
+2011_09_26/2011_09_26_drive_0087_sync 598 r
+2011_10_03/2011_10_03_drive_0042_sync 647 l
+2011_09_26/2011_09_26_drive_0019_sync 25 r
+2011_09_26/2011_09_26_drive_0015_sync 142 r
+2011_09_26/2011_09_26_drive_0015_sync 281 l
+2011_09_26/2011_09_26_drive_0087_sync 652 r
+2011_09_30/2011_09_30_drive_0034_sync 1182 l
+2011_09_26/2011_09_26_drive_0015_sync 252 l
+2011_09_30/2011_09_30_drive_0028_sync 1193 l
+2011_09_26/2011_09_26_drive_0005_sync 37 r
+2011_09_30/2011_09_30_drive_0028_sync 3979 l
+2011_09_30/2011_09_30_drive_0034_sync 689 l
+2011_09_26/2011_09_26_drive_0017_sync 65 l
+2011_09_30/2011_09_30_drive_0020_sync 1096 r
+2011_10_03/2011_10_03_drive_0034_sync 4090 r
+2011_09_30/2011_09_30_drive_0033_sync 822 l
+2011_09_30/2011_09_30_drive_0034_sync 862 l
+2011_09_30/2011_09_30_drive_0028_sync 1724 l
+2011_09_30/2011_09_30_drive_0028_sync 2514 l
+2011_09_28/2011_09_28_drive_0001_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 1136 r
+2011_10_03/2011_10_03_drive_0034_sync 2201 r
+2011_10_03/2011_10_03_drive_0034_sync 1654 r
+2011_09_26/2011_09_26_drive_0015_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 113 l
+2011_09_26/2011_09_26_drive_0019_sync 206 l
+2011_09_29/2011_09_29_drive_0026_sync 2 l
+2011_09_26/2011_09_26_drive_0095_sync 260 l
+2011_10_03/2011_10_03_drive_0034_sync 2696 l
+2011_09_30/2011_09_30_drive_0028_sync 2633 r
+2011_10_03/2011_10_03_drive_0042_sync 670 r
+2011_09_30/2011_09_30_drive_0028_sync 785 r
+2011_09_26/2011_09_26_drive_0095_sync 202 l
+2011_09_26/2011_09_26_drive_0039_sync 262 l
+2011_09_30/2011_09_30_drive_0033_sync 992 l
+2011_09_26/2011_09_26_drive_0095_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 265 l
+2011_09_30/2011_09_30_drive_0028_sync 2479 r
+2011_10_03/2011_10_03_drive_0034_sync 1691 l
+2011_09_30/2011_09_30_drive_0034_sync 614 r
+2011_09_30/2011_09_30_drive_0020_sync 130 r
+2011_09_26/2011_09_26_drive_0028_sync 304 l
+2011_10_03/2011_10_03_drive_0034_sync 3757 l
+2011_09_30/2011_09_30_drive_0028_sync 517 l
+2011_09_30/2011_09_30_drive_0028_sync 3100 l
+2011_10_03/2011_10_03_drive_0042_sync 876 l
+2011_09_30/2011_09_30_drive_0033_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 3502 l
+2011_10_03/2011_10_03_drive_0034_sync 3212 r
+2011_09_30/2011_09_30_drive_0028_sync 4762 l
+2011_09_30/2011_09_30_drive_0034_sync 555 r
+2011_09_30/2011_09_30_drive_0028_sync 2791 r
+2011_10_03/2011_10_03_drive_0034_sync 1829 l
+2011_10_03/2011_10_03_drive_0042_sync 565 r
+2011_09_30/2011_09_30_drive_0033_sync 353 l
+2011_09_26/2011_09_26_drive_0091_sync 6 r
+2011_10_03/2011_10_03_drive_0042_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 3232 l
+2011_09_30/2011_09_30_drive_0028_sync 2339 r
+2011_09_26/2011_09_26_drive_0005_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 3792 l
+2011_09_26/2011_09_26_drive_0032_sync 356 r
+2011_09_30/2011_09_30_drive_0028_sync 3959 r
+2011_09_30/2011_09_30_drive_0028_sync 3790 l
+2011_09_30/2011_09_30_drive_0028_sync 3609 r
+2011_10_03/2011_10_03_drive_0034_sync 218 r
+2011_10_03/2011_10_03_drive_0042_sync 378 l
+2011_09_26/2011_09_26_drive_0005_sync 105 l
+2011_09_26/2011_09_26_drive_0091_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 1553 r
+2011_09_26/2011_09_26_drive_0113_sync 76 l
+2011_09_26/2011_09_26_drive_0091_sync 252 l
+2011_09_30/2011_09_30_drive_0028_sync 22 l
+2011_09_26/2011_09_26_drive_0061_sync 75 l
+2011_10_03/2011_10_03_drive_0042_sync 1062 r
+2011_09_26/2011_09_26_drive_0019_sync 48 l
+2011_09_28/2011_09_28_drive_0001_sync 76 l
+2011_09_30/2011_09_30_drive_0033_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 4653 r
+2011_09_26/2011_09_26_drive_0017_sync 110 r
+2011_09_26/2011_09_26_drive_0011_sync 76 r
+2011_09_26/2011_09_26_drive_0051_sync 349 r
+2011_09_30/2011_09_30_drive_0028_sync 1756 r
+2011_09_26/2011_09_26_drive_0032_sync 117 l
+2011_09_30/2011_09_30_drive_0028_sync 2511 l
+2011_09_30/2011_09_30_drive_0028_sync 690 r
+2011_09_26/2011_09_26_drive_0039_sync 345 l
+2011_09_30/2011_09_30_drive_0034_sync 1084 r
+2011_09_30/2011_09_30_drive_0034_sync 196 l
+2011_09_26/2011_09_26_drive_0014_sync 143 l
+2011_09_26/2011_09_26_drive_0018_sync 2 r
+2011_09_30/2011_09_30_drive_0034_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 4189 r
+2011_10_03/2011_10_03_drive_0042_sync 1041 r
+2011_09_30/2011_09_30_drive_0034_sync 604 l
+2011_09_26/2011_09_26_drive_0022_sync 31 l
+2011_09_30/2011_09_30_drive_0028_sync 2931 l
+2011_09_26/2011_09_26_drive_0095_sync 228 l
+2011_10_03/2011_10_03_drive_0034_sync 1270 r
+2011_09_26/2011_09_26_drive_0039_sync 29 l
+2011_10_03/2011_10_03_drive_0042_sync 242 l
+2011_09_30/2011_09_30_drive_0028_sync 4793 r
+2011_09_26/2011_09_26_drive_0019_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 2604 l
+2011_09_30/2011_09_30_drive_0028_sync 2398 r
+2011_09_30/2011_09_30_drive_0028_sync 571 l
+2011_09_30/2011_09_30_drive_0028_sync 4372 r
+2011_10_03/2011_10_03_drive_0034_sync 2833 r
+2011_10_03/2011_10_03_drive_0034_sync 1871 r
+2011_09_30/2011_09_30_drive_0028_sync 52 l
+2011_10_03/2011_10_03_drive_0042_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 2597 r
+2011_09_30/2011_09_30_drive_0028_sync 4 r
+2011_10_03/2011_10_03_drive_0042_sync 7 l
+2011_09_26/2011_09_26_drive_0001_sync 102 r
+2011_09_26/2011_09_26_drive_0022_sync 574 r
+2011_10_03/2011_10_03_drive_0034_sync 6 r
+2011_09_30/2011_09_30_drive_0034_sync 1116 l
+2011_09_26/2011_09_26_drive_0019_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 491 r
+2011_10_03/2011_10_03_drive_0034_sync 1592 r
+2011_10_03/2011_10_03_drive_0034_sync 4085 r
+2011_09_26/2011_09_26_drive_0061_sync 613 l
+2011_09_26/2011_09_26_drive_0095_sync 62 l
+2011_09_26/2011_09_26_drive_0079_sync 14 r
+2011_09_30/2011_09_30_drive_0020_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 3358 r
+2011_09_30/2011_09_30_drive_0028_sync 193 l
+2011_09_26/2011_09_26_drive_0061_sync 330 r
+2011_09_26/2011_09_26_drive_0022_sync 519 r
+2011_09_30/2011_09_30_drive_0020_sync 743 r
+2011_10_03/2011_10_03_drive_0042_sync 1119 r
+2011_09_30/2011_09_30_drive_0020_sync 349 l
+2011_09_26/2011_09_26_drive_0070_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 2882 l
+2011_09_30/2011_09_30_drive_0034_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 3935 l
+2011_09_30/2011_09_30_drive_0033_sync 382 r
+2011_10_03/2011_10_03_drive_0042_sync 490 l
+2011_09_30/2011_09_30_drive_0028_sync 1490 r
+2011_09_26/2011_09_26_drive_0087_sync 660 l
+2011_09_30/2011_09_30_drive_0028_sync 3315 l
+2011_09_26/2011_09_26_drive_0019_sync 18 r
+2011_09_26/2011_09_26_drive_0070_sync 139 r
+2011_09_30/2011_09_30_drive_0028_sync 708 l
+2011_10_03/2011_10_03_drive_0034_sync 3732 l
+2011_09_30/2011_09_30_drive_0020_sync 666 r
+2011_09_30/2011_09_30_drive_0033_sync 56 l
+2011_09_30/2011_09_30_drive_0034_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 1312 r
+2011_10_03/2011_10_03_drive_0034_sync 201 r
+2011_09_26/2011_09_26_drive_0039_sync 155 l
+2011_09_26/2011_09_26_drive_0095_sync 189 l
+2011_09_30/2011_09_30_drive_0033_sync 1226 r
+2011_09_26/2011_09_26_drive_0061_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 3669 r
+2011_09_30/2011_09_30_drive_0028_sync 4493 l
+2011_09_26/2011_09_26_drive_0057_sync 140 l
+2011_10_03/2011_10_03_drive_0042_sync 417 r
+2011_09_26/2011_09_26_drive_0087_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 2846 l
+2011_09_29/2011_09_29_drive_0004_sync 108 r
+2011_10_03/2011_10_03_drive_0034_sync 1544 l
+2011_09_26/2011_09_26_drive_0022_sync 380 r
+2011_09_30/2011_09_30_drive_0028_sync 4316 l
+2011_09_26/2011_09_26_drive_0022_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 4597 r
+2011_09_30/2011_09_30_drive_0028_sync 4678 r
+2011_10_03/2011_10_03_drive_0034_sync 1705 l
+2011_09_26/2011_09_26_drive_0018_sync 157 r
+2011_10_03/2011_10_03_drive_0042_sync 214 r
+2011_10_03/2011_10_03_drive_0034_sync 4059 r
+2011_10_03/2011_10_03_drive_0034_sync 4377 r
+2011_09_30/2011_09_30_drive_0028_sync 3513 r
+2011_09_30/2011_09_30_drive_0028_sync 3675 l
+2011_10_03/2011_10_03_drive_0034_sync 4657 l
+2011_09_30/2011_09_30_drive_0020_sync 451 r
+2011_09_30/2011_09_30_drive_0028_sync 1917 l
+2011_09_26/2011_09_26_drive_0028_sync 426 l
+2011_09_30/2011_09_30_drive_0033_sync 185 l
+2011_09_26/2011_09_26_drive_0091_sync 250 r
+2011_09_30/2011_09_30_drive_0034_sync 118 l
+2011_09_26/2011_09_26_drive_0018_sync 268 r
+2011_09_26/2011_09_26_drive_0051_sync 18 l
+2011_09_26/2011_09_26_drive_0018_sync 115 r
+2011_09_26/2011_09_26_drive_0104_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 1072 l
+2011_10_03/2011_10_03_drive_0042_sync 705 r
+2011_09_30/2011_09_30_drive_0028_sync 473 l
+2011_09_26/2011_09_26_drive_0057_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 1718 r
+2011_10_03/2011_10_03_drive_0042_sync 697 l
+2011_10_03/2011_10_03_drive_0034_sync 978 l
+2011_09_30/2011_09_30_drive_0033_sync 1428 r
+2011_09_29/2011_09_29_drive_0004_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 2112 r
+2011_09_26/2011_09_26_drive_0032_sync 267 l
+2011_10_03/2011_10_03_drive_0034_sync 4623 r
+2011_10_03/2011_10_03_drive_0034_sync 2323 l
+2011_09_26/2011_09_26_drive_0018_sync 60 r
+2011_09_26/2011_09_26_drive_0051_sync 351 l
+2011_09_30/2011_09_30_drive_0028_sync 1078 r
+2011_09_26/2011_09_26_drive_0060_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 4784 l
+2011_09_30/2011_09_30_drive_0020_sync 755 l
+2011_09_30/2011_09_30_drive_0028_sync 624 l
+2011_09_30/2011_09_30_drive_0033_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 3115 r
+2011_09_26/2011_09_26_drive_0028_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 2485 r
+2011_09_30/2011_09_30_drive_0034_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 4260 l
+2011_09_26/2011_09_26_drive_0022_sync 166 l
+2011_10_03/2011_10_03_drive_0034_sync 820 l
+2011_10_03/2011_10_03_drive_0042_sync 1133 l
+2011_09_26/2011_09_26_drive_0091_sync 236 r
+2011_10_03/2011_10_03_drive_0034_sync 2692 l
+2011_09_26/2011_09_26_drive_0104_sync 10 r
+2011_09_30/2011_09_30_drive_0028_sync 26 r
+2011_09_26/2011_09_26_drive_0087_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 4566 l
+2011_09_30/2011_09_30_drive_0028_sync 1606 l
+2011_09_26/2011_09_26_drive_0051_sync 418 r
+2011_09_26/2011_09_26_drive_0014_sync 279 r
+2011_10_03/2011_10_03_drive_0034_sync 4306 l
+2011_09_26/2011_09_26_drive_0022_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 4608 r
+2011_09_30/2011_09_30_drive_0028_sync 1357 r
+2011_09_28/2011_09_28_drive_0001_sync 103 r
+2011_09_26/2011_09_26_drive_0061_sync 449 l
+2011_10_03/2011_10_03_drive_0034_sync 2166 l
+2011_10_03/2011_10_03_drive_0034_sync 1608 r
+2011_10_03/2011_10_03_drive_0034_sync 3443 l
+2011_09_30/2011_09_30_drive_0020_sync 844 l
+2011_09_30/2011_09_30_drive_0028_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 2184 r
+2011_09_30/2011_09_30_drive_0033_sync 42 l
+2011_10_03/2011_10_03_drive_0042_sync 724 l
+2011_09_30/2011_09_30_drive_0034_sync 38 l
+2011_10_03/2011_10_03_drive_0034_sync 795 r
+2011_09_30/2011_09_30_drive_0028_sync 3978 r
+2011_10_03/2011_10_03_drive_0034_sync 4513 l
+2011_09_30/2011_09_30_drive_0028_sync 3119 l
+2011_09_30/2011_09_30_drive_0034_sync 371 l
+2011_09_26/2011_09_26_drive_0005_sync 18 l
+2011_09_26/2011_09_26_drive_0028_sync 241 r
+2011_09_26/2011_09_26_drive_0032_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 490 r
+2011_09_30/2011_09_30_drive_0028_sync 4815 r
+2011_09_30/2011_09_30_drive_0033_sync 688 r
+2011_09_30/2011_09_30_drive_0028_sync 2809 r
+2011_09_30/2011_09_30_drive_0028_sync 3404 l
+2011_09_26/2011_09_26_drive_0014_sync 90 r
+2011_09_26/2011_09_26_drive_0022_sync 340 r
+2011_09_30/2011_09_30_drive_0020_sync 986 r
+2011_10_03/2011_10_03_drive_0034_sync 3576 r
+2011_10_03/2011_10_03_drive_0042_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 2269 r
+2011_09_30/2011_09_30_drive_0034_sync 310 l
+2011_10_03/2011_10_03_drive_0034_sync 2911 l
+2011_09_30/2011_09_30_drive_0020_sync 762 r
+2011_09_30/2011_09_30_drive_0028_sync 2148 l
+2011_10_03/2011_10_03_drive_0034_sync 2569 l
+2011_09_30/2011_09_30_drive_0034_sync 589 r
+2011_09_26/2011_09_26_drive_0005_sync 100 r
+2011_09_26/2011_09_26_drive_0061_sync 129 r
+2011_09_26/2011_09_26_drive_0087_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 213 r
+2011_10_03/2011_10_03_drive_0034_sync 719 r
+2011_09_30/2011_09_30_drive_0028_sync 1575 r
+2011_09_26/2011_09_26_drive_0057_sync 256 l
+2011_10_03/2011_10_03_drive_0042_sync 321 r
+2011_09_30/2011_09_30_drive_0034_sync 271 l
+2011_09_30/2011_09_30_drive_0028_sync 215 r
+2011_09_30/2011_09_30_drive_0028_sync 1543 l
+2011_10_03/2011_10_03_drive_0034_sync 4214 r
+2011_09_30/2011_09_30_drive_0028_sync 5135 r
+2011_09_26/2011_09_26_drive_0028_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 2909 r
+2011_10_03/2011_10_03_drive_0034_sync 2369 r
+2011_09_26/2011_09_26_drive_0087_sync 540 r
+2011_10_03/2011_10_03_drive_0034_sync 175 l
+2011_09_26/2011_09_26_drive_0018_sync 121 r
+2011_09_26/2011_09_26_drive_0057_sync 8 r
+2011_09_26/2011_09_26_drive_0017_sync 68 l
+2011_09_26/2011_09_26_drive_0022_sync 747 r
+2011_09_26/2011_09_26_drive_0005_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 3433 r
+2011_09_26/2011_09_26_drive_0005_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 4819 r
+2011_09_26/2011_09_26_drive_0032_sync 157 l
+2011_10_03/2011_10_03_drive_0034_sync 2609 l
+2011_09_26/2011_09_26_drive_0028_sync 99 r
+2011_09_30/2011_09_30_drive_0028_sync 2541 r
+2011_09_26/2011_09_26_drive_0011_sync 165 l
+2011_09_30/2011_09_30_drive_0028_sync 2714 r
+2011_09_30/2011_09_30_drive_0028_sync 1135 l
+2011_09_26/2011_09_26_drive_0022_sync 749 r
+2011_09_26/2011_09_26_drive_0022_sync 270 l
+2011_09_26/2011_09_26_drive_0057_sync 32 l
+2011_09_26/2011_09_26_drive_0057_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 5079 l
+2011_09_26/2011_09_26_drive_0039_sync 156 r
+2011_09_26/2011_09_26_drive_0091_sync 316 l
+2011_09_30/2011_09_30_drive_0034_sync 573 r
+2011_09_26/2011_09_26_drive_0057_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 1757 r
+2011_09_30/2011_09_30_drive_0028_sync 1375 r
+2011_09_26/2011_09_26_drive_0091_sync 227 l
+2011_09_26/2011_09_26_drive_0028_sync 258 l
+2011_09_30/2011_09_30_drive_0033_sync 757 l
+2011_09_28/2011_09_28_drive_0001_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 1192 l
+2011_09_30/2011_09_30_drive_0028_sync 3639 l
+2011_09_30/2011_09_30_drive_0034_sync 38 r
+2011_09_26/2011_09_26_drive_0032_sync 37 r
+2011_09_26/2011_09_26_drive_0028_sync 251 l
+2011_09_26/2011_09_26_drive_0079_sync 64 l
+2011_10_03/2011_10_03_drive_0034_sync 1324 l
+2011_09_26/2011_09_26_drive_0091_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 3107 l
+2011_10_03/2011_10_03_drive_0034_sync 2747 l
+2011_09_30/2011_09_30_drive_0028_sync 105 r
+2011_09_30/2011_09_30_drive_0034_sync 1199 r
+2011_09_29/2011_09_29_drive_0026_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 3338 r
+2011_10_03/2011_10_03_drive_0034_sync 783 r
+2011_09_30/2011_09_30_drive_0034_sync 381 r
+2011_09_30/2011_09_30_drive_0033_sync 1308 l
+2011_09_30/2011_09_30_drive_0033_sync 40 r
+2011_10_03/2011_10_03_drive_0034_sync 258 l
+2011_09_30/2011_09_30_drive_0028_sync 2017 r
+2011_09_26/2011_09_26_drive_0070_sync 410 l
+2011_09_30/2011_09_30_drive_0033_sync 743 r
+2011_09_26/2011_09_26_drive_0095_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 2757 r
+2011_09_26/2011_09_26_drive_0022_sync 639 l
+2011_09_30/2011_09_30_drive_0033_sync 1415 r
+2011_09_30/2011_09_30_drive_0028_sync 2028 l
+2011_09_26/2011_09_26_drive_0057_sync 236 l
+2011_09_30/2011_09_30_drive_0028_sync 4625 r
+2011_09_26/2011_09_26_drive_0087_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 334 r
+2011_09_26/2011_09_26_drive_0051_sync 57 l
+2011_09_26/2011_09_26_drive_0028_sync 273 r
+2011_09_30/2011_09_30_drive_0020_sync 596 l
+2011_09_26/2011_09_26_drive_0019_sync 408 r
+2011_09_30/2011_09_30_drive_0020_sync 699 r
+2011_10_03/2011_10_03_drive_0034_sync 2368 l
+2011_09_30/2011_09_30_drive_0020_sync 435 l
+2011_09_26/2011_09_26_drive_0070_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 2052 l
+2011_09_30/2011_09_30_drive_0028_sync 4891 r
+2011_09_30/2011_09_30_drive_0028_sync 1004 r
+2011_10_03/2011_10_03_drive_0034_sync 4616 r
+2011_09_30/2011_09_30_drive_0028_sync 5126 r
+2011_10_03/2011_10_03_drive_0034_sync 600 l
+2011_09_26/2011_09_26_drive_0019_sync 1 l
+2011_09_26/2011_09_26_drive_0022_sync 454 r
+2011_09_26/2011_09_26_drive_0061_sync 109 r
+2011_09_30/2011_09_30_drive_0020_sync 683 l
+2011_09_30/2011_09_30_drive_0028_sync 2448 l
+2011_09_30/2011_09_30_drive_0034_sync 404 r
+2011_09_30/2011_09_30_drive_0028_sync 3858 l
+2011_09_30/2011_09_30_drive_0034_sync 1116 r
+2011_09_30/2011_09_30_drive_0028_sync 2829 r
+2011_10_03/2011_10_03_drive_0034_sync 2874 l
+2011_09_30/2011_09_30_drive_0028_sync 1778 r
+2011_10_03/2011_10_03_drive_0034_sync 3109 l
+2011_09_30/2011_09_30_drive_0028_sync 2642 r
+2011_10_03/2011_10_03_drive_0034_sync 4 r
+2011_09_26/2011_09_26_drive_0039_sync 266 r
+2011_10_03/2011_10_03_drive_0034_sync 3773 l
+2011_10_03/2011_10_03_drive_0042_sync 972 l
+2011_09_26/2011_09_26_drive_0087_sync 694 l
+2011_10_03/2011_10_03_drive_0034_sync 1111 l
+2011_09_30/2011_09_30_drive_0028_sync 4370 r
+2011_10_03/2011_10_03_drive_0034_sync 896 r
+2011_09_30/2011_09_30_drive_0033_sync 204 r
+2011_09_26/2011_09_26_drive_0061_sync 111 r
+2011_09_30/2011_09_30_drive_0028_sync 83 l
+2011_09_30/2011_09_30_drive_0033_sync 928 r
+2011_10_03/2011_10_03_drive_0034_sync 221 r
+2011_09_30/2011_09_30_drive_0034_sync 750 l
+2011_09_30/2011_09_30_drive_0028_sync 4609 r
+2011_09_26/2011_09_26_drive_0017_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 2443 l
+2011_09_26/2011_09_26_drive_0022_sync 774 l
+2011_10_03/2011_10_03_drive_0034_sync 2189 r
+2011_09_26/2011_09_26_drive_0039_sync 120 r
+2011_09_30/2011_09_30_drive_0028_sync 1939 l
+2011_09_30/2011_09_30_drive_0020_sync 100 r
+2011_09_26/2011_09_26_drive_0022_sync 618 l
+2011_09_26/2011_09_26_drive_0061_sync 210 l
+2011_09_30/2011_09_30_drive_0020_sync 1054 r
+2011_09_30/2011_09_30_drive_0028_sync 4784 r
+2011_09_26/2011_09_26_drive_0022_sync 214 l
+2011_09_28/2011_09_28_drive_0001_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 3719 l
+2011_10_03/2011_10_03_drive_0034_sync 1456 r
+2011_09_30/2011_09_30_drive_0033_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 287 l
+2011_09_30/2011_09_30_drive_0020_sync 444 r
+2011_09_30/2011_09_30_drive_0034_sync 653 l
+2011_09_26/2011_09_26_drive_0028_sync 429 r
+2011_09_30/2011_09_30_drive_0028_sync 1331 l
+2011_09_26/2011_09_26_drive_0061_sync 216 r
+2011_09_26/2011_09_26_drive_0095_sync 172 r
+2011_09_26/2011_09_26_drive_0060_sync 13 r
+2011_09_26/2011_09_26_drive_0028_sync 240 l
+2011_09_26/2011_09_26_drive_0017_sync 45 r
+2011_10_03/2011_10_03_drive_0034_sync 3703 r
+2011_10_03/2011_10_03_drive_0042_sync 96 l
+2011_09_30/2011_09_30_drive_0033_sync 945 l
+2011_10_03/2011_10_03_drive_0034_sync 3479 l
+2011_09_30/2011_09_30_drive_0028_sync 3572 r
+2011_09_26/2011_09_26_drive_0057_sync 330 r
+2011_09_30/2011_09_30_drive_0033_sync 1147 r
+2011_09_30/2011_09_30_drive_0020_sync 159 r
+2011_09_30/2011_09_30_drive_0028_sync 3640 l
+2011_09_30/2011_09_30_drive_0033_sync 555 l
+2011_09_30/2011_09_30_drive_0028_sync 762 l
+2011_09_30/2011_09_30_drive_0034_sync 158 l
+2011_09_26/2011_09_26_drive_0070_sync 96 r
+2011_10_03/2011_10_03_drive_0042_sync 749 r
+2011_10_03/2011_10_03_drive_0034_sync 1524 l
+2011_09_26/2011_09_26_drive_0022_sync 423 l
+2011_09_26/2011_09_26_drive_0015_sync 71 r
+2011_09_26/2011_09_26_drive_0113_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 462 l
+2011_09_26/2011_09_26_drive_0061_sync 527 r
+2011_09_30/2011_09_30_drive_0034_sync 900 r
+2011_10_03/2011_10_03_drive_0034_sync 623 r
+2011_09_30/2011_09_30_drive_0028_sync 1902 r
+2011_09_26/2011_09_26_drive_0051_sync 380 r
+2011_09_30/2011_09_30_drive_0028_sync 3198 r
+2011_10_03/2011_10_03_drive_0034_sync 3207 l
+2011_10_03/2011_10_03_drive_0034_sync 4411 l
+2011_09_26/2011_09_26_drive_0015_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 2798 r
+2011_09_26/2011_09_26_drive_0028_sync 238 r
+2011_09_26/2011_09_26_drive_0051_sync 395 l
+2011_09_26/2011_09_26_drive_0011_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 449 r
+2011_09_26/2011_09_26_drive_0039_sync 281 r
+2011_09_26/2011_09_26_drive_0022_sync 389 r
+2011_09_30/2011_09_30_drive_0034_sync 672 r
+2011_09_30/2011_09_30_drive_0034_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 482 l
+2011_09_26/2011_09_26_drive_0087_sync 133 r
+2011_09_30/2011_09_30_drive_0028_sync 358 r
+2011_09_30/2011_09_30_drive_0033_sync 624 r
+2011_09_30/2011_09_30_drive_0028_sync 4163 l
+2011_09_30/2011_09_30_drive_0020_sync 791 r
+2011_09_26/2011_09_26_drive_0070_sync 304 r
+2011_09_26/2011_09_26_drive_0022_sync 170 l
+2011_09_26/2011_09_26_drive_0070_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 4326 r
+2011_10_03/2011_10_03_drive_0042_sync 866 r
+2011_09_26/2011_09_26_drive_0061_sync 51 l
+2011_09_26/2011_09_26_drive_0028_sync 414 l
+2011_09_26/2011_09_26_drive_0014_sync 258 l
+2011_10_03/2011_10_03_drive_0034_sync 4410 r
+2011_10_03/2011_10_03_drive_0034_sync 1124 r
+2011_09_30/2011_09_30_drive_0033_sync 539 l
+2011_09_26/2011_09_26_drive_0051_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 4179 l
+2011_09_30/2011_09_30_drive_0020_sync 109 r
+2011_09_26/2011_09_26_drive_0087_sync 160 r
+2011_09_30/2011_09_30_drive_0033_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 2797 r
+2011_09_30/2011_09_30_drive_0028_sync 3660 r
+2011_09_26/2011_09_26_drive_0104_sync 254 l
+2011_09_29/2011_09_29_drive_0004_sync 270 l
+2011_09_30/2011_09_30_drive_0034_sync 209 l
+2011_09_26/2011_09_26_drive_0018_sync 154 r
+2011_09_26/2011_09_26_drive_0011_sync 128 l
+2011_10_03/2011_10_03_drive_0034_sync 4515 r
+2011_09_30/2011_09_30_drive_0028_sync 1693 r
+2011_09_26/2011_09_26_drive_0039_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 761 l
+2011_09_30/2011_09_30_drive_0028_sync 1451 l
+2011_09_30/2011_09_30_drive_0034_sync 828 r
+2011_09_30/2011_09_30_drive_0020_sync 799 r
+2011_09_30/2011_09_30_drive_0034_sync 463 r
+2011_09_30/2011_09_30_drive_0020_sync 540 r
+2011_09_26/2011_09_26_drive_0015_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 4355 r
+2011_09_29/2011_09_29_drive_0004_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 1363 r
+2011_09_26/2011_09_26_drive_0019_sync 472 r
+2011_09_26/2011_09_26_drive_0070_sync 232 r
+2011_09_30/2011_09_30_drive_0033_sync 330 l
+2011_09_26/2011_09_26_drive_0061_sync 511 l
+2011_09_30/2011_09_30_drive_0028_sync 272 l
+2011_10_03/2011_10_03_drive_0042_sync 238 l
+2011_09_30/2011_09_30_drive_0028_sync 3720 l
+2011_09_30/2011_09_30_drive_0028_sync 941 r
+2011_09_26/2011_09_26_drive_0087_sync 385 l
+2011_09_30/2011_09_30_drive_0028_sync 3563 r
+2011_09_26/2011_09_26_drive_0087_sync 95 l
+2011_09_30/2011_09_30_drive_0028_sync 2901 r
+2011_09_26/2011_09_26_drive_0061_sync 641 l
+2011_10_03/2011_10_03_drive_0034_sync 4601 l
+2011_09_26/2011_09_26_drive_0051_sync 280 r
+2011_10_03/2011_10_03_drive_0034_sync 4000 l
+2011_10_03/2011_10_03_drive_0034_sync 90 l
+2011_09_26/2011_09_26_drive_0014_sync 264 l
+2011_09_26/2011_09_26_drive_0005_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 1589 l
+2011_09_30/2011_09_30_drive_0028_sync 4742 l
+2011_09_26/2011_09_26_drive_0113_sync 33 r
+2011_10_03/2011_10_03_drive_0034_sync 1089 r
+2011_09_30/2011_09_30_drive_0020_sync 462 l
+2011_10_03/2011_10_03_drive_0034_sync 3006 r
+2011_09_26/2011_09_26_drive_0032_sync 124 l
+2011_09_26/2011_09_26_drive_0032_sync 14 r
+2011_09_26/2011_09_26_drive_0014_sync 303 r
+2011_10_03/2011_10_03_drive_0042_sync 773 l
+2011_09_26/2011_09_26_drive_0014_sync 269 l
+2011_09_26/2011_09_26_drive_0032_sync 21 l
+2011_09_30/2011_09_30_drive_0020_sync 565 r
+2011_09_30/2011_09_30_drive_0028_sync 578 l
+2011_09_30/2011_09_30_drive_0020_sync 469 l
+2011_09_30/2011_09_30_drive_0028_sync 668 l
+2011_09_30/2011_09_30_drive_0028_sync 3139 r
+2011_09_30/2011_09_30_drive_0028_sync 1295 r
+2011_10_03/2011_10_03_drive_0034_sync 2181 r
+2011_09_26/2011_09_26_drive_0028_sync 186 r
+2011_09_26/2011_09_26_drive_0028_sync 335 l
+2011_09_30/2011_09_30_drive_0028_sync 1856 r
+2011_10_03/2011_10_03_drive_0034_sync 322 l
+2011_09_26/2011_09_26_drive_0018_sync 90 r
+2011_09_26/2011_09_26_drive_0028_sync 229 l
+2011_09_30/2011_09_30_drive_0033_sync 477 r
+2011_09_30/2011_09_30_drive_0028_sync 21 r
+2011_09_26/2011_09_26_drive_0028_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 3603 r
+2011_09_26/2011_09_26_drive_0018_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 1366 r
+2011_09_26/2011_09_26_drive_0005_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 1574 r
+2011_09_30/2011_09_30_drive_0028_sync 606 r
+2011_09_26/2011_09_26_drive_0051_sync 362 r
+2011_10_03/2011_10_03_drive_0034_sync 2755 l
+2011_09_30/2011_09_30_drive_0033_sync 1516 l
+2011_09_30/2011_09_30_drive_0033_sync 498 r
+2011_09_26/2011_09_26_drive_0104_sync 140 r
+2011_09_26/2011_09_26_drive_0019_sync 70 r
+2011_09_30/2011_09_30_drive_0034_sync 563 r
+2011_10_03/2011_10_03_drive_0034_sync 3074 l
+2011_09_30/2011_09_30_drive_0028_sync 2980 r
+2011_09_26/2011_09_26_drive_0087_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 3891 l
+2011_09_26/2011_09_26_drive_0087_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 1044 r
+2011_09_26/2011_09_26_drive_0019_sync 444 l
+2011_10_03/2011_10_03_drive_0034_sync 1249 l
+2011_10_03/2011_10_03_drive_0034_sync 2101 r
+2011_10_03/2011_10_03_drive_0034_sync 1418 l
+2011_09_26/2011_09_26_drive_0091_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 4334 l
+2011_09_26/2011_09_26_drive_0022_sync 699 r
+2011_09_26/2011_09_26_drive_0061_sync 435 r
+2011_09_30/2011_09_30_drive_0028_sync 2146 r
+2011_09_30/2011_09_30_drive_0028_sync 3263 l
+2011_09_26/2011_09_26_drive_0070_sync 341 r
+2011_09_26/2011_09_26_drive_0032_sync 205 l
+2011_09_30/2011_09_30_drive_0028_sync 2242 l
+2011_09_26/2011_09_26_drive_0061_sync 163 r
+2011_09_30/2011_09_30_drive_0034_sync 853 r
+2011_10_03/2011_10_03_drive_0034_sync 3342 l
+2011_09_30/2011_09_30_drive_0028_sync 4306 r
+2011_09_30/2011_09_30_drive_0020_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 4828 r
+2011_09_30/2011_09_30_drive_0028_sync 1720 l
+2011_10_03/2011_10_03_drive_0042_sync 517 r
+2011_09_26/2011_09_26_drive_0032_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 1238 r
+2011_09_30/2011_09_30_drive_0028_sync 1096 r
+2011_09_26/2011_09_26_drive_0051_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 4955 r
+2011_10_03/2011_10_03_drive_0042_sync 500 l
+2011_09_26/2011_09_26_drive_0061_sync 216 l
+2011_09_30/2011_09_30_drive_0028_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 711 r
+2011_09_26/2011_09_26_drive_0051_sync 64 r
+2011_09_30/2011_09_30_drive_0034_sync 1070 r
+2011_09_30/2011_09_30_drive_0028_sync 1151 l
+2011_10_03/2011_10_03_drive_0034_sync 2147 l
+2011_09_30/2011_09_30_drive_0028_sync 18 r
+2011_10_03/2011_10_03_drive_0034_sync 2006 l
+2011_09_30/2011_09_30_drive_0028_sync 4309 r
+2011_10_03/2011_10_03_drive_0034_sync 1405 l
+2011_09_26/2011_09_26_drive_0057_sync 165 r
+2011_09_30/2011_09_30_drive_0033_sync 1107 r
+2011_09_26/2011_09_26_drive_0091_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 120 r
+2011_10_03/2011_10_03_drive_0042_sync 677 l
+2011_09_26/2011_09_26_drive_0095_sync 211 r
+2011_09_30/2011_09_30_drive_0028_sync 1557 l
+2011_09_30/2011_09_30_drive_0033_sync 899 l
+2011_09_30/2011_09_30_drive_0028_sync 3804 l
+2011_10_03/2011_10_03_drive_0034_sync 4644 l
+2011_10_03/2011_10_03_drive_0034_sync 4036 r
+2011_09_26/2011_09_26_drive_0113_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 217 l
+2011_09_26/2011_09_26_drive_0113_sync 5 l
+2011_09_30/2011_09_30_drive_0028_sync 3129 r
+2011_09_26/2011_09_26_drive_0039_sync 30 l
+2011_09_30/2011_09_30_drive_0034_sync 343 r
+2011_09_26/2011_09_26_drive_0001_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 3843 l
+2011_09_30/2011_09_30_drive_0020_sync 586 l
+2011_09_30/2011_09_30_drive_0033_sync 907 l
+2011_10_03/2011_10_03_drive_0034_sync 1363 l
+2011_09_30/2011_09_30_drive_0033_sync 1581 l
+2011_10_03/2011_10_03_drive_0034_sync 4224 l
+2011_09_26/2011_09_26_drive_0087_sync 728 l
+2011_10_03/2011_10_03_drive_0034_sync 4532 r
+2011_09_30/2011_09_30_drive_0028_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 111 r
+2011_09_26/2011_09_26_drive_0019_sync 274 r
+2011_10_03/2011_10_03_drive_0034_sync 3733 r
+2011_09_30/2011_09_30_drive_0028_sync 3676 r
+2011_09_30/2011_09_30_drive_0028_sync 1078 l
+2011_09_26/2011_09_26_drive_0061_sync 685 l
+2011_09_26/2011_09_26_drive_0035_sync 82 l
+2011_09_26/2011_09_26_drive_0057_sync 312 l
+2011_10_03/2011_10_03_drive_0034_sync 1475 l
+2011_09_30/2011_09_30_drive_0028_sync 837 r
+2011_09_30/2011_09_30_drive_0028_sync 3756 l
+2011_09_30/2011_09_30_drive_0028_sync 4341 r
+2011_09_30/2011_09_30_drive_0034_sync 720 r
+2011_09_26/2011_09_26_drive_0095_sync 82 r
+2011_09_29/2011_09_29_drive_0026_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 1555 r
+2011_09_26/2011_09_26_drive_0091_sync 304 r
+2011_09_26/2011_09_26_drive_0028_sync 352 r
+2011_09_30/2011_09_30_drive_0028_sync 4777 l
+2011_09_26/2011_09_26_drive_0032_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 1279 l
+2011_09_30/2011_09_30_drive_0028_sync 3898 l
+2011_09_30/2011_09_30_drive_0033_sync 1138 l
+2011_09_26/2011_09_26_drive_0011_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 2308 r
+2011_10_03/2011_10_03_drive_0034_sync 819 r
+2011_09_29/2011_09_29_drive_0004_sync 80 l
+2011_09_30/2011_09_30_drive_0028_sync 3289 l
+2011_09_30/2011_09_30_drive_0034_sync 321 l
+2011_09_26/2011_09_26_drive_0022_sync 267 r
+2011_09_30/2011_09_30_drive_0034_sync 687 l
+2011_09_30/2011_09_30_drive_0028_sync 3220 l
+2011_10_03/2011_10_03_drive_0042_sync 444 r
+2011_09_29/2011_09_29_drive_0004_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 4149 r
+2011_09_30/2011_09_30_drive_0033_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 1522 r
+2011_10_03/2011_10_03_drive_0042_sync 138 r
+2011_10_03/2011_10_03_drive_0034_sync 3695 r
+2011_09_26/2011_09_26_drive_0091_sync 309 l
+2011_09_30/2011_09_30_drive_0033_sync 922 r
+2011_09_30/2011_09_30_drive_0028_sync 685 l
+2011_09_26/2011_09_26_drive_0001_sync 102 l
+2011_09_26/2011_09_26_drive_0104_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 2606 l
+2011_10_03/2011_10_03_drive_0042_sync 22 r
+2011_09_29/2011_09_29_drive_0026_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 4946 l
+2011_10_03/2011_10_03_drive_0042_sync 613 r
+2011_10_03/2011_10_03_drive_0034_sync 4166 r
+2011_09_30/2011_09_30_drive_0020_sync 544 r
+2011_09_26/2011_09_26_drive_0011_sync 142 l
+2011_10_03/2011_10_03_drive_0042_sync 870 r
+2011_09_29/2011_09_29_drive_0004_sync 168 r
+2011_10_03/2011_10_03_drive_0034_sync 2272 r
+2011_10_03/2011_10_03_drive_0034_sync 2714 r
+2011_09_26/2011_09_26_drive_0057_sync 285 l
+2011_09_26/2011_09_26_drive_0022_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 808 r
+2011_09_26/2011_09_26_drive_0005_sync 55 l
+2011_09_30/2011_09_30_drive_0020_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 1102 l
+2011_09_30/2011_09_30_drive_0028_sync 3747 l
+2011_09_30/2011_09_30_drive_0034_sync 1143 r
+2011_09_30/2011_09_30_drive_0028_sync 1758 r
+2011_09_30/2011_09_30_drive_0033_sync 1078 l
+2011_10_03/2011_10_03_drive_0034_sync 3343 r
+2011_10_03/2011_10_03_drive_0034_sync 241 l
+2011_09_26/2011_09_26_drive_0022_sync 497 r
+2011_10_03/2011_10_03_drive_0034_sync 3463 l
+2011_09_30/2011_09_30_drive_0028_sync 366 l
+2011_09_30/2011_09_30_drive_0034_sync 456 l
+2011_09_26/2011_09_26_drive_0032_sync 231 l
+2011_09_30/2011_09_30_drive_0028_sync 885 l
+2011_09_30/2011_09_30_drive_0028_sync 540 r
+2011_09_26/2011_09_26_drive_0095_sync 70 l
+2011_09_26/2011_09_26_drive_0018_sync 68 r
+2011_10_03/2011_10_03_drive_0042_sync 825 l
+2011_10_03/2011_10_03_drive_0034_sync 1156 r
+2011_10_03/2011_10_03_drive_0042_sync 817 l
+2011_10_03/2011_10_03_drive_0034_sync 3270 l
+2011_09_30/2011_09_30_drive_0028_sync 3067 r
+2011_09_30/2011_09_30_drive_0028_sync 3720 r
+2011_09_30/2011_09_30_drive_0028_sync 1401 r
+2011_09_30/2011_09_30_drive_0028_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 1420 r
+2011_09_30/2011_09_30_drive_0020_sync 819 r
+2011_10_03/2011_10_03_drive_0034_sync 9 r
+2011_09_26/2011_09_26_drive_0011_sync 93 r
+2011_09_30/2011_09_30_drive_0028_sync 3025 l
+2011_09_26/2011_09_26_drive_0091_sync 155 r
+2011_10_03/2011_10_03_drive_0042_sync 200 l
+2011_09_30/2011_09_30_drive_0020_sync 801 l
+2011_10_03/2011_10_03_drive_0034_sync 4341 l
+2011_09_26/2011_09_26_drive_0032_sync 365 r
+2011_09_30/2011_09_30_drive_0028_sync 4423 r
+2011_09_30/2011_09_30_drive_0033_sync 691 r
+2011_09_26/2011_09_26_drive_0022_sync 12 r
+2011_09_30/2011_09_30_drive_0033_sync 1282 l
+2011_09_30/2011_09_30_drive_0028_sync 4889 r
+2011_09_30/2011_09_30_drive_0028_sync 661 r
+2011_10_03/2011_10_03_drive_0034_sync 3447 r
+2011_09_29/2011_09_29_drive_0004_sync 254 r
+2011_09_26/2011_09_26_drive_0104_sync 284 r
+2011_09_30/2011_09_30_drive_0033_sync 1351 r
+2011_10_03/2011_10_03_drive_0034_sync 2163 l
+2011_09_30/2011_09_30_drive_0033_sync 1386 r
+2011_09_26/2011_09_26_drive_0039_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 3588 r
+2011_09_30/2011_09_30_drive_0034_sync 287 l
+2011_09_30/2011_09_30_drive_0033_sync 186 l
+2011_09_26/2011_09_26_drive_0104_sync 114 l
+2011_09_26/2011_09_26_drive_0061_sync 583 l
+2011_09_30/2011_09_30_drive_0034_sync 1136 r
+2011_10_03/2011_10_03_drive_0042_sync 660 r
+2011_10_03/2011_10_03_drive_0034_sync 2042 l
+2011_09_30/2011_09_30_drive_0028_sync 320 l
+2011_09_30/2011_09_30_drive_0028_sync 2693 l
+2011_09_30/2011_09_30_drive_0033_sync 625 r
+2011_09_30/2011_09_30_drive_0033_sync 1351 l
+2011_09_30/2011_09_30_drive_0028_sync 4125 r
+2011_09_30/2011_09_30_drive_0028_sync 4846 l
+2011_09_26/2011_09_26_drive_0070_sync 176 r
+2011_09_29/2011_09_29_drive_0004_sync 91 r
+2011_09_26/2011_09_26_drive_0018_sync 208 r
+2011_09_26/2011_09_26_drive_0079_sync 70 l
+2011_09_30/2011_09_30_drive_0033_sync 942 r
+2011_09_26/2011_09_26_drive_0005_sync 48 l
+2011_10_03/2011_10_03_drive_0042_sync 91 l
+2011_09_30/2011_09_30_drive_0020_sync 524 l
+2011_09_26/2011_09_26_drive_0087_sync 81 l
+2011_09_30/2011_09_30_drive_0033_sync 620 r
+2011_09_26/2011_09_26_drive_0022_sync 713 l
+2011_09_26/2011_09_26_drive_0015_sync 213 l
+2011_09_30/2011_09_30_drive_0028_sync 764 l
+2011_09_26/2011_09_26_drive_0018_sync 168 l
+2011_09_30/2011_09_30_drive_0028_sync 1036 l
+2011_10_03/2011_10_03_drive_0034_sync 1633 l
+2011_09_26/2011_09_26_drive_0035_sync 97 l
+2011_10_03/2011_10_03_drive_0042_sync 911 r
+2011_09_26/2011_09_26_drive_0087_sync 456 r
+2011_10_03/2011_10_03_drive_0034_sync 1047 r
+2011_09_26/2011_09_26_drive_0057_sync 178 r
+2011_09_30/2011_09_30_drive_0034_sync 945 l
+2011_10_03/2011_10_03_drive_0034_sync 4212 r
+2011_09_26/2011_09_26_drive_0091_sync 86 l
+2011_10_03/2011_10_03_drive_0034_sync 3293 r
+2011_09_30/2011_09_30_drive_0028_sync 4409 l
+2011_09_30/2011_09_30_drive_0028_sync 271 l
+2011_10_03/2011_10_03_drive_0034_sync 1833 r
+2011_09_26/2011_09_26_drive_0032_sync 155 l
+2011_09_30/2011_09_30_drive_0020_sync 363 r
+2011_09_30/2011_09_30_drive_0034_sync 1025 l
+2011_10_03/2011_10_03_drive_0042_sync 386 r
+2011_10_03/2011_10_03_drive_0034_sync 1799 r
+2011_09_26/2011_09_26_drive_0061_sync 342 l
+2011_09_30/2011_09_30_drive_0028_sync 1429 r
+2011_09_30/2011_09_30_drive_0033_sync 443 l
+2011_09_26/2011_09_26_drive_0104_sync 118 r
+2011_09_26/2011_09_26_drive_0014_sync 72 l
+2011_10_03/2011_10_03_drive_0034_sync 4230 l
+2011_09_30/2011_09_30_drive_0028_sync 1262 r
+2011_10_03/2011_10_03_drive_0034_sync 574 l
+2011_10_03/2011_10_03_drive_0034_sync 4453 l
+2011_10_03/2011_10_03_drive_0034_sync 1019 l
+2011_09_30/2011_09_30_drive_0033_sync 723 r
+2011_09_30/2011_09_30_drive_0020_sync 1059 l
+2011_09_26/2011_09_26_drive_0061_sync 404 l
+2011_09_26/2011_09_26_drive_0095_sync 178 r
+2011_09_26/2011_09_26_drive_0014_sync 305 r
+2011_09_30/2011_09_30_drive_0020_sync 412 l
+2011_09_26/2011_09_26_drive_0051_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 137 r
+2011_09_30/2011_09_30_drive_0033_sync 1231 l
+2011_09_30/2011_09_30_drive_0028_sync 2482 r
+2011_09_30/2011_09_30_drive_0020_sync 792 r
+2011_09_26/2011_09_26_drive_0051_sync 100 r
+2011_09_26/2011_09_26_drive_0018_sync 177 r
+2011_10_03/2011_10_03_drive_0034_sync 1756 l
+2011_09_30/2011_09_30_drive_0028_sync 3557 l
+2011_09_26/2011_09_26_drive_0032_sync 91 l
+2011_09_26/2011_09_26_drive_0070_sync 328 r
+2011_10_03/2011_10_03_drive_0034_sync 2557 r
+2011_10_03/2011_10_03_drive_0042_sync 1112 r
+2011_10_03/2011_10_03_drive_0034_sync 1990 r
+2011_09_30/2011_09_30_drive_0028_sync 4954 l
+2011_09_30/2011_09_30_drive_0034_sync 549 l
+2011_09_30/2011_09_30_drive_0028_sync 1510 l
+2011_09_30/2011_09_30_drive_0028_sync 2099 l
+2011_10_03/2011_10_03_drive_0042_sync 99 r
+2011_09_26/2011_09_26_drive_0051_sync 255 r
+2011_09_30/2011_09_30_drive_0028_sync 1217 r
+2011_10_03/2011_10_03_drive_0034_sync 1393 r
+2011_10_03/2011_10_03_drive_0034_sync 1158 l
+2011_09_26/2011_09_26_drive_0087_sync 456 l
+2011_09_30/2011_09_30_drive_0020_sync 181 l
+2011_09_26/2011_09_26_drive_0091_sync 31 r
+2011_09_29/2011_09_29_drive_0004_sync 254 l
+2011_09_30/2011_09_30_drive_0028_sync 3110 l
+2011_10_03/2011_10_03_drive_0034_sync 3312 r
+2011_09_30/2011_09_30_drive_0028_sync 2650 l
+2011_09_26/2011_09_26_drive_0022_sync 145 r
+2011_09_26/2011_09_26_drive_0028_sync 228 r
+2011_09_26/2011_09_26_drive_0011_sync 51 r
+2011_10_03/2011_10_03_drive_0042_sync 1048 r
+2011_09_26/2011_09_26_drive_0051_sync 387 l
+2011_09_26/2011_09_26_drive_0087_sync 572 r
+2011_09_26/2011_09_26_drive_0087_sync 177 r
+2011_09_30/2011_09_30_drive_0020_sync 237 l
+2011_09_26/2011_09_26_drive_0079_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 3818 l
+2011_09_26/2011_09_26_drive_0051_sync 183 l
+2011_09_26/2011_09_26_drive_0060_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 1285 l
+2011_09_30/2011_09_30_drive_0033_sync 940 r
+2011_09_26/2011_09_26_drive_0095_sync 203 l
+2011_09_30/2011_09_30_drive_0028_sync 3931 l
+2011_09_26/2011_09_26_drive_0035_sync 109 r
+2011_09_26/2011_09_26_drive_0087_sync 638 r
+2011_10_03/2011_10_03_drive_0042_sync 790 r
+2011_09_30/2011_09_30_drive_0028_sync 3180 r
+2011_09_30/2011_09_30_drive_0028_sync 752 r
+2011_09_30/2011_09_30_drive_0028_sync 3249 l
+2011_10_03/2011_10_03_drive_0042_sync 636 r
+2011_10_03/2011_10_03_drive_0042_sync 811 l
+2011_09_26/2011_09_26_drive_0039_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 1490 r
+2011_10_03/2011_10_03_drive_0042_sync 126 r
+2011_09_26/2011_09_26_drive_0022_sync 552 l
+2011_09_26/2011_09_26_drive_0087_sync 467 l
+2011_09_26/2011_09_26_drive_0018_sync 117 l
+2011_09_30/2011_09_30_drive_0028_sync 4528 r
+2011_09_30/2011_09_30_drive_0020_sync 946 l
+2011_09_26/2011_09_26_drive_0001_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 2326 l
+2011_09_30/2011_09_30_drive_0034_sync 479 r
+2011_09_26/2011_09_26_drive_0005_sync 28 r
+2011_09_26/2011_09_26_drive_0057_sync 204 r
+2011_10_03/2011_10_03_drive_0034_sync 512 l
+2011_09_30/2011_09_30_drive_0028_sync 4750 l
+2011_10_03/2011_10_03_drive_0034_sync 280 l
+2011_09_30/2011_09_30_drive_0028_sync 1436 l
+2011_09_30/2011_09_30_drive_0020_sync 590 l
+2011_09_30/2011_09_30_drive_0028_sync 2352 r
+2011_09_30/2011_09_30_drive_0033_sync 605 l
+2011_09_30/2011_09_30_drive_0033_sync 469 l
+2011_10_03/2011_10_03_drive_0034_sync 1406 l
+2011_09_26/2011_09_26_drive_0087_sync 369 l
+2011_09_26/2011_09_26_drive_0019_sync 264 l
+2011_09_26/2011_09_26_drive_0014_sync 50 l
+2011_09_26/2011_09_26_drive_0005_sync 127 l
+2011_09_26/2011_09_26_drive_0070_sync 396 l
+2011_10_03/2011_10_03_drive_0034_sync 722 l
+2011_10_03/2011_10_03_drive_0034_sync 4045 r
+2011_09_30/2011_09_30_drive_0028_sync 4401 r
+2011_09_29/2011_09_29_drive_0004_sync 160 l
+2011_09_26/2011_09_26_drive_0015_sync 236 r
+2011_09_26/2011_09_26_drive_0022_sync 484 r
+2011_10_03/2011_10_03_drive_0034_sync 2120 r
+2011_09_30/2011_09_30_drive_0028_sync 2813 r
+2011_09_26/2011_09_26_drive_0022_sync 307 l
+2011_09_30/2011_09_30_drive_0028_sync 178 r
+2011_09_26/2011_09_26_drive_0018_sync 204 r
+2011_09_26/2011_09_26_drive_0057_sync 82 l
+2011_10_03/2011_10_03_drive_0034_sync 199 r
+2011_09_26/2011_09_26_drive_0018_sync 155 r
+2011_09_26/2011_09_26_drive_0022_sync 405 l
+2011_09_30/2011_09_30_drive_0028_sync 1646 l
+2011_09_26/2011_09_26_drive_0014_sync 312 l
+2011_09_30/2011_09_30_drive_0028_sync 1405 r
+2011_09_30/2011_09_30_drive_0034_sync 759 r
+2011_09_26/2011_09_26_drive_0070_sync 258 l
+2011_09_26/2011_09_26_drive_0005_sync 57 l
+2011_09_26/2011_09_26_drive_0087_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 3524 l
+2011_09_30/2011_09_30_drive_0020_sync 203 r
+2011_09_26/2011_09_26_drive_0057_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 729 r
+2011_09_30/2011_09_30_drive_0028_sync 3752 l
+2011_09_30/2011_09_30_drive_0028_sync 3467 l
+2011_10_03/2011_10_03_drive_0034_sync 4224 r
+2011_09_30/2011_09_30_drive_0033_sync 1375 r
+2011_09_30/2011_09_30_drive_0028_sync 3610 r
+2011_09_30/2011_09_30_drive_0028_sync 3061 l
+2011_10_03/2011_10_03_drive_0034_sync 3592 l
+2011_09_30/2011_09_30_drive_0028_sync 4231 r
+2011_09_26/2011_09_26_drive_0057_sync 84 r
+2011_09_30/2011_09_30_drive_0033_sync 1032 r
+2011_09_30/2011_09_30_drive_0028_sync 2927 l
+2011_09_29/2011_09_29_drive_0004_sync 315 r
+2011_09_30/2011_09_30_drive_0028_sync 386 l
+2011_09_26/2011_09_26_drive_0070_sync 270 l
+2011_10_03/2011_10_03_drive_0034_sync 51 l
+2011_09_29/2011_09_29_drive_0026_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 23 l
+2011_09_30/2011_09_30_drive_0028_sync 2166 l
+2011_10_03/2011_10_03_drive_0034_sync 1054 r
+2011_09_30/2011_09_30_drive_0034_sync 843 r
+2011_09_30/2011_09_30_drive_0028_sync 992 r
+2011_10_03/2011_10_03_drive_0034_sync 4526 l
+2011_09_26/2011_09_26_drive_0087_sync 171 l
+2011_09_26/2011_09_26_drive_0032_sync 161 l
+2011_10_03/2011_10_03_drive_0042_sync 460 r
+2011_10_03/2011_10_03_drive_0034_sync 2383 r
+2011_09_30/2011_09_30_drive_0028_sync 790 r
+2011_10_03/2011_10_03_drive_0034_sync 276 r
+2011_09_26/2011_09_26_drive_0057_sync 171 l
+2011_10_03/2011_10_03_drive_0042_sync 418 l
+2011_09_26/2011_09_26_drive_0057_sync 347 l
+2011_09_29/2011_09_29_drive_0026_sync 89 l
+2011_09_30/2011_09_30_drive_0020_sync 716 r
+2011_09_30/2011_09_30_drive_0028_sync 3798 r
+2011_09_30/2011_09_30_drive_0028_sync 1525 l
+2011_10_03/2011_10_03_drive_0034_sync 2509 l
+2011_09_29/2011_09_29_drive_0004_sync 296 l
+2011_09_30/2011_09_30_drive_0020_sync 266 l
+2011_09_30/2011_09_30_drive_0028_sync 4395 r
+2011_09_30/2011_09_30_drive_0028_sync 2737 r
+2011_09_30/2011_09_30_drive_0034_sync 1013 l
+2011_10_03/2011_10_03_drive_0034_sync 2894 l
+2011_09_26/2011_09_26_drive_0014_sync 208 r
+2011_09_30/2011_09_30_drive_0028_sync 1030 r
+2011_10_03/2011_10_03_drive_0034_sync 3755 r
+2011_09_26/2011_09_26_drive_0087_sync 349 l
+2011_09_30/2011_09_30_drive_0028_sync 3466 r
+2011_09_26/2011_09_26_drive_0028_sync 288 l
+2011_09_30/2011_09_30_drive_0033_sync 1157 r
+2011_09_30/2011_09_30_drive_0028_sync 1020 l
+2011_09_30/2011_09_30_drive_0028_sync 1536 r
+2011_09_30/2011_09_30_drive_0033_sync 564 r
+2011_09_30/2011_09_30_drive_0028_sync 47 l
+2011_09_30/2011_09_30_drive_0033_sync 1532 r
+2011_10_03/2011_10_03_drive_0042_sync 91 r
+2011_09_30/2011_09_30_drive_0033_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 3604 r
+2011_09_26/2011_09_26_drive_0015_sync 165 r
+2011_09_30/2011_09_30_drive_0028_sync 4152 l
+2011_09_26/2011_09_26_drive_0061_sync 391 l
+2011_10_03/2011_10_03_drive_0034_sync 86 l
+2011_09_26/2011_09_26_drive_0039_sync 139 l
+2011_09_26/2011_09_26_drive_0039_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 1039 r
+2011_09_26/2011_09_26_drive_0032_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 3540 l
+2011_09_30/2011_09_30_drive_0028_sync 5003 r
+2011_09_26/2011_09_26_drive_0015_sync 232 r
+2011_09_30/2011_09_30_drive_0028_sync 2685 l
+2011_09_26/2011_09_26_drive_0014_sync 236 r
+2011_09_30/2011_09_30_drive_0034_sync 1198 r
+2011_09_26/2011_09_26_drive_0061_sync 121 r
+2011_09_30/2011_09_30_drive_0028_sync 4844 l
+2011_09_30/2011_09_30_drive_0028_sync 3180 l
+2011_09_30/2011_09_30_drive_0020_sync 188 r
+2011_10_03/2011_10_03_drive_0034_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 3516 l
+2011_09_30/2011_09_30_drive_0028_sync 1015 l
+2011_09_26/2011_09_26_drive_0014_sync 130 l
+2011_09_26/2011_09_26_drive_0015_sync 55 l
+2011_09_26/2011_09_26_drive_0095_sync 59 l
+2011_09_30/2011_09_30_drive_0033_sync 170 r
+2011_09_26/2011_09_26_drive_0028_sync 227 l
+2011_09_30/2011_09_30_drive_0028_sync 4233 r
+2011_09_26/2011_09_26_drive_0087_sync 577 r
+2011_10_03/2011_10_03_drive_0042_sync 513 l
+2011_10_03/2011_10_03_drive_0042_sync 394 r
+2011_09_26/2011_09_26_drive_0061_sync 559 l
+2011_09_26/2011_09_26_drive_0019_sync 372 r
+2011_09_30/2011_09_30_drive_0028_sync 4180 l
+2011_10_03/2011_10_03_drive_0034_sync 1818 r
+2011_09_26/2011_09_26_drive_0079_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 2965 r
+2011_10_03/2011_10_03_drive_0034_sync 773 r
+2011_09_26/2011_09_26_drive_0011_sync 105 l
+2011_10_03/2011_10_03_drive_0034_sync 4123 l
+2011_10_03/2011_10_03_drive_0034_sync 2728 l
+2011_09_29/2011_09_29_drive_0004_sync 218 r
+2011_09_26/2011_09_26_drive_0070_sync 282 l
+2011_09_26/2011_09_26_drive_0022_sync 180 l
+2011_10_03/2011_10_03_drive_0034_sync 3279 l
+2011_09_26/2011_09_26_drive_0104_sync 101 r
+2011_09_30/2011_09_30_drive_0028_sync 4596 r
+2011_09_26/2011_09_26_drive_0022_sync 87 r
+2011_09_26/2011_09_26_drive_0057_sync 110 l
+2011_09_26/2011_09_26_drive_0019_sync 200 r
+2011_09_26/2011_09_26_drive_0018_sync 175 l
+2011_09_26/2011_09_26_drive_0014_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 3355 l
+2011_09_30/2011_09_30_drive_0028_sync 4973 r
+2011_09_26/2011_09_26_drive_0051_sync 109 r
+2011_09_26/2011_09_26_drive_0095_sync 261 l
+2011_09_26/2011_09_26_drive_0019_sync 257 r
+2011_09_30/2011_09_30_drive_0028_sync 4336 r
+2011_09_30/2011_09_30_drive_0028_sync 1481 l
+2011_10_03/2011_10_03_drive_0034_sync 529 r
+2011_09_26/2011_09_26_drive_0091_sync 185 l
+2011_09_26/2011_09_26_drive_0022_sync 655 r
+2011_09_26/2011_09_26_drive_0022_sync 754 r
+2011_09_30/2011_09_30_drive_0034_sync 938 r
+2011_10_03/2011_10_03_drive_0034_sync 3421 l
+2011_10_03/2011_10_03_drive_0034_sync 3077 l
+2011_09_30/2011_09_30_drive_0028_sync 3210 l
+2011_09_30/2011_09_30_drive_0028_sync 3527 l
+2011_09_26/2011_09_26_drive_0022_sync 671 l
+2011_09_30/2011_09_30_drive_0028_sync 1690 r
+2011_09_30/2011_09_30_drive_0028_sync 4512 r
+2011_09_26/2011_09_26_drive_0018_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 4871 l
+2011_10_03/2011_10_03_drive_0034_sync 1677 l
+2011_10_03/2011_10_03_drive_0042_sync 748 r
+2011_09_30/2011_09_30_drive_0034_sync 943 r
+2011_09_30/2011_09_30_drive_0033_sync 918 r
+2011_10_03/2011_10_03_drive_0042_sync 197 l
+2011_09_26/2011_09_26_drive_0032_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 4140 l
+2011_09_30/2011_09_30_drive_0028_sync 4386 l
+2011_09_30/2011_09_30_drive_0028_sync 3826 l
+2011_09_26/2011_09_26_drive_0011_sync 192 r
+2011_09_30/2011_09_30_drive_0028_sync 382 l
+2011_09_26/2011_09_26_drive_0014_sync 21 r
+2011_09_26/2011_09_26_drive_0061_sync 287 r
+2011_09_30/2011_09_30_drive_0028_sync 3321 r
+2011_09_26/2011_09_26_drive_0087_sync 728 r
+2011_10_03/2011_10_03_drive_0034_sync 4011 l
+2011_09_30/2011_09_30_drive_0020_sync 485 r
+2011_09_30/2011_09_30_drive_0033_sync 942 l
+2011_10_03/2011_10_03_drive_0034_sync 2309 l
+2011_09_30/2011_09_30_drive_0028_sync 3058 r
+2011_09_30/2011_09_30_drive_0020_sync 958 r
+2011_10_03/2011_10_03_drive_0034_sync 3435 l
+2011_09_30/2011_09_30_drive_0033_sync 245 l
+2011_09_28/2011_09_28_drive_0001_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 3856 l
+2011_09_29/2011_09_29_drive_0004_sync 231 l
+2011_09_26/2011_09_26_drive_0032_sync 162 r
+2011_09_30/2011_09_30_drive_0033_sync 1577 l
+2011_10_03/2011_10_03_drive_0042_sync 534 r
+2011_10_03/2011_10_03_drive_0034_sync 2299 r
+2011_09_30/2011_09_30_drive_0028_sync 4166 l
+2011_10_03/2011_10_03_drive_0034_sync 2399 l
+2011_09_26/2011_09_26_drive_0091_sync 103 r
+2011_10_03/2011_10_03_drive_0034_sync 101 r
+2011_09_30/2011_09_30_drive_0033_sync 842 l
+2011_09_26/2011_09_26_drive_0014_sync 102 r
+2011_09_26/2011_09_26_drive_0019_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 1342 r
+2011_10_03/2011_10_03_drive_0034_sync 2349 l
+2011_09_26/2011_09_26_drive_0061_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 194 r
+2011_09_30/2011_09_30_drive_0020_sync 1027 l
+2011_09_30/2011_09_30_drive_0028_sync 4314 r
+2011_10_03/2011_10_03_drive_0034_sync 3631 l
+2011_09_26/2011_09_26_drive_0032_sync 203 r
+2011_10_03/2011_10_03_drive_0034_sync 4577 l
+2011_10_03/2011_10_03_drive_0042_sync 710 r
+2011_09_30/2011_09_30_drive_0033_sync 1355 r
+2011_10_03/2011_10_03_drive_0034_sync 4487 r
+2011_09_26/2011_09_26_drive_0087_sync 167 l
+2011_10_03/2011_10_03_drive_0034_sync 2204 r
+2011_09_26/2011_09_26_drive_0051_sync 87 l
+2011_09_26/2011_09_26_drive_0095_sync 260 r
+2011_09_26/2011_09_26_drive_0011_sync 214 r
+2011_09_26/2011_09_26_drive_0104_sync 37 r
+2011_10_03/2011_10_03_drive_0042_sync 671 r
+2011_09_26/2011_09_26_drive_0039_sync 15 r
+2011_10_03/2011_10_03_drive_0034_sync 4242 l
+2011_09_30/2011_09_30_drive_0033_sync 717 r
+2011_09_26/2011_09_26_drive_0113_sync 23 l
+2011_09_26/2011_09_26_drive_0061_sync 493 r
+2011_09_30/2011_09_30_drive_0034_sync 848 l
+2011_09_29/2011_09_29_drive_0004_sync 285 r
+2011_09_30/2011_09_30_drive_0028_sync 2089 l
+2011_10_03/2011_10_03_drive_0034_sync 748 l
+2011_09_30/2011_09_30_drive_0028_sync 4016 r
+2011_09_30/2011_09_30_drive_0028_sync 1614 r
+2011_09_30/2011_09_30_drive_0020_sync 632 r
+2011_09_30/2011_09_30_drive_0028_sync 3536 l
+2011_09_26/2011_09_26_drive_0070_sync 324 r
+2011_09_26/2011_09_26_drive_0019_sync 308 r
+2011_09_29/2011_09_29_drive_0004_sync 155 r
+2011_09_30/2011_09_30_drive_0034_sync 1206 r
+2011_09_30/2011_09_30_drive_0020_sync 558 l
+2011_09_26/2011_09_26_drive_0011_sync 163 l
+2011_09_26/2011_09_26_drive_0039_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 1629 r
+2011_10_03/2011_10_03_drive_0034_sync 3609 r
+2011_09_26/2011_09_26_drive_0039_sync 74 l
+2011_10_03/2011_10_03_drive_0034_sync 1585 r
+2011_09_26/2011_09_26_drive_0087_sync 238 l
+2011_09_30/2011_09_30_drive_0033_sync 415 r
+2011_09_26/2011_09_26_drive_0019_sync 416 l
+2011_10_03/2011_10_03_drive_0034_sync 4587 r
+2011_10_03/2011_10_03_drive_0034_sync 592 l
+2011_09_30/2011_09_30_drive_0020_sync 727 l
+2011_09_26/2011_09_26_drive_0087_sync 334 l
+2011_09_26/2011_09_26_drive_0022_sync 510 l
+2011_10_03/2011_10_03_drive_0034_sync 982 l
+2011_09_26/2011_09_26_drive_0039_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 10 r
+2011_09_30/2011_09_30_drive_0028_sync 307 l
+2011_09_28/2011_09_28_drive_0001_sync 83 l
+2011_09_26/2011_09_26_drive_0032_sync 163 l
+2011_09_26/2011_09_26_drive_0091_sync 62 l
+2011_10_03/2011_10_03_drive_0042_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 3147 l
+2011_09_26/2011_09_26_drive_0061_sync 259 r
+2011_10_03/2011_10_03_drive_0034_sync 1770 r
+2011_10_03/2011_10_03_drive_0034_sync 3204 r
+2011_09_30/2011_09_30_drive_0028_sync 5075 l
+2011_09_26/2011_09_26_drive_0039_sync 280 l
+2011_10_03/2011_10_03_drive_0034_sync 2354 l
+2011_09_30/2011_09_30_drive_0028_sync 4485 l
+2011_10_03/2011_10_03_drive_0034_sync 4276 l
+2011_09_30/2011_09_30_drive_0028_sync 2384 l
+2011_09_26/2011_09_26_drive_0087_sync 719 l
+2011_09_26/2011_09_26_drive_0057_sync 295 r
+2011_09_26/2011_09_26_drive_0061_sync 314 r
+2011_09_26/2011_09_26_drive_0061_sync 244 r
+2011_10_03/2011_10_03_drive_0034_sync 2926 l
+2011_10_03/2011_10_03_drive_0034_sync 4372 r
+2011_09_30/2011_09_30_drive_0028_sync 1283 r
+2011_09_30/2011_09_30_drive_0028_sync 5013 l
+2011_09_26/2011_09_26_drive_0015_sync 227 r
+2011_09_26/2011_09_26_drive_0018_sync 154 l
+2011_09_30/2011_09_30_drive_0020_sync 1076 l
+2011_10_03/2011_10_03_drive_0034_sync 3232 r
+2011_09_26/2011_09_26_drive_0018_sync 253 r
+2011_10_03/2011_10_03_drive_0034_sync 652 l
+2011_09_26/2011_09_26_drive_0087_sync 412 l
+2011_09_26/2011_09_26_drive_0061_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 3097 l
+2011_09_26/2011_09_26_drive_0104_sync 259 r
+2011_09_26/2011_09_26_drive_0087_sync 338 l
+2011_09_30/2011_09_30_drive_0033_sync 281 r
+2011_09_26/2011_09_26_drive_0051_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 737 l
+2011_10_03/2011_10_03_drive_0034_sync 1271 l
+2011_09_30/2011_09_30_drive_0028_sync 117 r
+2011_09_30/2011_09_30_drive_0020_sync 468 r
+2011_09_26/2011_09_26_drive_0057_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 179 r
+2011_09_26/2011_09_26_drive_0104_sync 236 l
+2011_09_30/2011_09_30_drive_0033_sync 1329 l
+2011_10_03/2011_10_03_drive_0034_sync 1078 r
+2011_09_26/2011_09_26_drive_0079_sync 69 r
+2011_10_03/2011_10_03_drive_0034_sync 2883 r
+2011_09_26/2011_09_26_drive_0070_sync 272 r
+2011_09_30/2011_09_30_drive_0020_sync 107 l
+2011_09_26/2011_09_26_drive_0087_sync 504 l
+2011_09_30/2011_09_30_drive_0028_sync 157 l
+2011_09_26/2011_09_26_drive_0022_sync 300 l
+2011_09_26/2011_09_26_drive_0022_sync 622 l
+2011_10_03/2011_10_03_drive_0042_sync 270 r
+2011_09_30/2011_09_30_drive_0034_sync 284 r
+2011_10_03/2011_10_03_drive_0034_sync 4614 l
+2011_09_30/2011_09_30_drive_0033_sync 1176 l
+2011_09_29/2011_09_29_drive_0004_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 4688 l
+2011_09_26/2011_09_26_drive_0087_sync 298 r
+2011_09_30/2011_09_30_drive_0028_sync 3494 r
+2011_10_03/2011_10_03_drive_0034_sync 1192 l
+2011_09_26/2011_09_26_drive_0087_sync 75 r
+2011_09_26/2011_09_26_drive_0095_sync 45 r
+2011_09_30/2011_09_30_drive_0028_sync 605 l
+2011_09_30/2011_09_30_drive_0028_sync 1322 r
+2011_10_03/2011_10_03_drive_0034_sync 2380 l
+2011_10_03/2011_10_03_drive_0034_sync 2702 r
+2011_09_30/2011_09_30_drive_0034_sync 857 l
+2011_10_03/2011_10_03_drive_0034_sync 2406 l
+2011_09_30/2011_09_30_drive_0033_sync 346 l
+2011_09_26/2011_09_26_drive_0015_sync 77 l
+2011_10_03/2011_10_03_drive_0042_sync 935 r
+2011_09_28/2011_09_28_drive_0001_sync 17 l
+2011_09_26/2011_09_26_drive_0014_sync 52 r
+2011_09_26/2011_09_26_drive_0087_sync 435 r
+2011_09_26/2011_09_26_drive_0091_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 1362 r
+2011_10_03/2011_10_03_drive_0034_sync 3415 l
+2011_09_30/2011_09_30_drive_0020_sync 526 l
+2011_09_26/2011_09_26_drive_0104_sync 262 l
+2011_09_30/2011_09_30_drive_0033_sync 398 r
+2011_09_30/2011_09_30_drive_0020_sync 956 l
+2011_09_30/2011_09_30_drive_0028_sync 2304 r
+2011_09_30/2011_09_30_drive_0033_sync 34 l
+2011_09_29/2011_09_29_drive_0004_sync 249 r
+2011_09_30/2011_09_30_drive_0020_sync 223 l
+2011_09_26/2011_09_26_drive_0039_sync 313 l
+2011_09_30/2011_09_30_drive_0033_sync 39 r
+2011_09_30/2011_09_30_drive_0034_sync 1192 r
+2011_10_03/2011_10_03_drive_0034_sync 2806 r
+2011_09_26/2011_09_26_drive_0087_sync 314 l
+2011_09_29/2011_09_29_drive_0004_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 3113 l
+2011_10_03/2011_10_03_drive_0034_sync 952 l
+2011_09_30/2011_09_30_drive_0028_sync 3264 l
+2011_09_30/2011_09_30_drive_0033_sync 851 l
+2011_09_30/2011_09_30_drive_0020_sync 230 r
+2011_09_26/2011_09_26_drive_0032_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 13 r
+2011_10_03/2011_10_03_drive_0034_sync 1446 l
+2011_09_26/2011_09_26_drive_0032_sync 19 r
+2011_09_26/2011_09_26_drive_0022_sync 125 r
+2011_10_03/2011_10_03_drive_0034_sync 2318 l
+2011_10_03/2011_10_03_drive_0034_sync 1780 r
+2011_09_30/2011_09_30_drive_0028_sync 2912 r
+2011_10_03/2011_10_03_drive_0034_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 118 r
+2011_09_30/2011_09_30_drive_0033_sync 1472 r
+2011_09_30/2011_09_30_drive_0033_sync 488 r
+2011_09_30/2011_09_30_drive_0033_sync 1153 r
+2011_09_30/2011_09_30_drive_0028_sync 1051 l
+2011_09_26/2011_09_26_drive_0070_sync 10 r
+2011_09_30/2011_09_30_drive_0033_sync 359 l
+2011_09_26/2011_09_26_drive_0018_sync 238 r
+2011_09_26/2011_09_26_drive_0032_sync 279 r
+2011_09_26/2011_09_26_drive_0091_sync 269 l
+2011_10_03/2011_10_03_drive_0034_sync 1941 l
+2011_09_30/2011_09_30_drive_0033_sync 658 l
+2011_10_03/2011_10_03_drive_0034_sync 3392 r
+2011_09_26/2011_09_26_drive_0019_sync 432 l
+2011_09_26/2011_09_26_drive_0061_sync 362 l
+2011_09_30/2011_09_30_drive_0033_sync 464 l
+2011_09_26/2011_09_26_drive_0070_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 2661 l
+2011_09_26/2011_09_26_drive_0051_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 2791 l
+2011_10_03/2011_10_03_drive_0042_sync 917 l
+2011_10_03/2011_10_03_drive_0042_sync 1056 l
+2011_09_30/2011_09_30_drive_0028_sync 2253 l
+2011_09_30/2011_09_30_drive_0028_sync 3224 l
+2011_10_03/2011_10_03_drive_0034_sync 627 l
+2011_09_26/2011_09_26_drive_0079_sync 88 r
+2011_09_30/2011_09_30_drive_0034_sync 1141 l
+2011_09_26/2011_09_26_drive_0015_sync 211 r
+2011_09_26/2011_09_26_drive_0001_sync 61 l
+2011_09_30/2011_09_30_drive_0033_sync 995 l
+2011_09_26/2011_09_26_drive_0015_sync 106 l
+2011_10_03/2011_10_03_drive_0034_sync 674 l
+2011_09_30/2011_09_30_drive_0028_sync 2370 r
+2011_09_30/2011_09_30_drive_0033_sync 1439 l
+2011_10_03/2011_10_03_drive_0042_sync 52 r
+2011_10_03/2011_10_03_drive_0034_sync 1199 r
+2011_09_30/2011_09_30_drive_0034_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 1239 l
+2011_09_30/2011_09_30_drive_0028_sync 2526 r
+2011_09_30/2011_09_30_drive_0028_sync 3070 l
+2011_09_26/2011_09_26_drive_0113_sync 53 l
+2011_09_30/2011_09_30_drive_0034_sync 1137 l
+2011_10_03/2011_10_03_drive_0034_sync 3754 l
+2011_09_30/2011_09_30_drive_0028_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 4986 r
+2011_09_30/2011_09_30_drive_0033_sync 392 l
+2011_10_03/2011_10_03_drive_0034_sync 3602 r
+2011_10_03/2011_10_03_drive_0034_sync 1182 l
+2011_09_26/2011_09_26_drive_0017_sync 59 r
+2011_10_03/2011_10_03_drive_0034_sync 4496 l
+2011_09_26/2011_09_26_drive_0022_sync 435 l
+2011_09_26/2011_09_26_drive_0039_sync 284 l
+2011_09_30/2011_09_30_drive_0028_sync 2971 l
+2011_10_03/2011_10_03_drive_0034_sync 327 l
+2011_09_26/2011_09_26_drive_0001_sync 89 l
+2011_09_30/2011_09_30_drive_0033_sync 54 r
+2011_09_29/2011_09_29_drive_0026_sync 22 r
+2011_09_30/2011_09_30_drive_0028_sync 3984 l
+2011_09_30/2011_09_30_drive_0034_sync 832 r
+2011_09_26/2011_09_26_drive_0070_sync 309 r
+2011_09_30/2011_09_30_drive_0020_sync 127 r
+2011_09_29/2011_09_29_drive_0026_sync 151 l
+2011_09_30/2011_09_30_drive_0020_sync 501 r
+2011_09_30/2011_09_30_drive_0034_sync 572 r
+2011_10_03/2011_10_03_drive_0034_sync 100 r
+2011_09_28/2011_09_28_drive_0001_sync 22 l
+2011_09_26/2011_09_26_drive_0032_sync 102 l
+2011_10_03/2011_10_03_drive_0042_sync 831 l
+2011_09_26/2011_09_26_drive_0113_sync 7 l
+2011_09_30/2011_09_30_drive_0028_sync 4144 l
+2011_09_26/2011_09_26_drive_0061_sync 361 l
+2011_10_03/2011_10_03_drive_0042_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 1336 r
+2011_09_30/2011_09_30_drive_0028_sync 1161 l
+2011_09_30/2011_09_30_drive_0033_sync 575 l
+2011_09_30/2011_09_30_drive_0028_sync 3026 l
+2011_09_30/2011_09_30_drive_0028_sync 294 l
+2011_09_30/2011_09_30_drive_0028_sync 1370 r
+2011_09_30/2011_09_30_drive_0033_sync 1287 l
+2011_09_30/2011_09_30_drive_0028_sync 1772 l
+2011_09_26/2011_09_26_drive_0022_sync 266 r
+2011_09_26/2011_09_26_drive_0104_sync 13 l
+2011_09_26/2011_09_26_drive_0039_sync 128 r
+2011_09_26/2011_09_26_drive_0070_sync 397 l
+2011_09_30/2011_09_30_drive_0028_sync 1613 r
+2011_09_30/2011_09_30_drive_0033_sync 1253 r
+2011_09_28/2011_09_28_drive_0001_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 4608 r
+2011_09_30/2011_09_30_drive_0033_sync 465 l
+2011_09_26/2011_09_26_drive_0087_sync 270 r
+2011_09_26/2011_09_26_drive_0019_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 3565 l
+2011_09_30/2011_09_30_drive_0033_sync 1269 l
+2011_09_26/2011_09_26_drive_0087_sync 654 r
+2011_09_30/2011_09_30_drive_0028_sync 3599 l
+2011_10_03/2011_10_03_drive_0034_sync 2486 l
+2011_09_30/2011_09_30_drive_0028_sync 3834 l
+2011_10_03/2011_10_03_drive_0034_sync 4129 r
+2011_09_26/2011_09_26_drive_0011_sync 137 l
+2011_09_30/2011_09_30_drive_0028_sync 1216 l
+2011_09_26/2011_09_26_drive_0001_sync 12 r
+2011_09_30/2011_09_30_drive_0020_sync 898 r
+2011_10_03/2011_10_03_drive_0034_sync 2801 l
+2011_09_26/2011_09_26_drive_0018_sync 40 r
+2011_09_30/2011_09_30_drive_0028_sync 4392 l
+2011_10_03/2011_10_03_drive_0034_sync 1985 l
+2011_09_26/2011_09_26_drive_0032_sync 189 r
+2011_09_26/2011_09_26_drive_0087_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 4060 l
+2011_09_26/2011_09_26_drive_0032_sync 372 l
+2011_09_30/2011_09_30_drive_0034_sync 92 l
+2011_09_30/2011_09_30_drive_0034_sync 143 l
+2011_09_26/2011_09_26_drive_0019_sync 394 l
+2011_09_26/2011_09_26_drive_0091_sync 179 r
+2011_09_26/2011_09_26_drive_0039_sync 57 l
+2011_09_26/2011_09_26_drive_0022_sync 265 l
+2011_10_03/2011_10_03_drive_0034_sync 1732 r
+2011_09_26/2011_09_26_drive_0061_sync 284 l
+2011_09_30/2011_09_30_drive_0028_sync 5086 l
+2011_09_26/2011_09_26_drive_0091_sync 85 r
+2011_09_26/2011_09_26_drive_0011_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 2754 r
+2011_09_30/2011_09_30_drive_0028_sync 1672 l
+2011_09_26/2011_09_26_drive_0104_sync 247 r
+2011_10_03/2011_10_03_drive_0034_sync 2222 l
+2011_09_30/2011_09_30_drive_0034_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 1092 l
+2011_09_26/2011_09_26_drive_0022_sync 149 r
+2011_09_26/2011_09_26_drive_0005_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 1109 r
+2011_09_26/2011_09_26_drive_0087_sync 592 l
+2011_09_30/2011_09_30_drive_0034_sync 667 l
+2011_09_30/2011_09_30_drive_0028_sync 397 l
+2011_09_30/2011_09_30_drive_0033_sync 499 l
+2011_09_30/2011_09_30_drive_0028_sync 2752 r
+2011_09_26/2011_09_26_drive_0032_sync 257 r
+2011_09_26/2011_09_26_drive_0022_sync 212 r
+2011_09_30/2011_09_30_drive_0028_sync 4686 l
+2011_10_03/2011_10_03_drive_0034_sync 2535 l
+2011_09_30/2011_09_30_drive_0034_sync 254 l
+2011_09_26/2011_09_26_drive_0022_sync 16 l
+2011_10_03/2011_10_03_drive_0042_sync 397 l
+2011_10_03/2011_10_03_drive_0034_sync 2810 l
+2011_10_03/2011_10_03_drive_0034_sync 573 l
+2011_09_26/2011_09_26_drive_0022_sync 310 r
+2011_09_26/2011_09_26_drive_0087_sync 439 r
+2011_10_03/2011_10_03_drive_0034_sync 4619 l
+2011_09_30/2011_09_30_drive_0028_sync 4900 l
+2011_09_30/2011_09_30_drive_0028_sync 2012 l
+2011_09_30/2011_09_30_drive_0028_sync 2855 r
+2011_10_03/2011_10_03_drive_0034_sync 3011 r
+2011_09_26/2011_09_26_drive_0051_sync 300 l
+2011_09_30/2011_09_30_drive_0034_sync 220 r
+2011_09_26/2011_09_26_drive_0095_sync 102 l
+2011_09_26/2011_09_26_drive_0087_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 4512 l
+2011_09_26/2011_09_26_drive_0087_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 2057 l
+2011_09_26/2011_09_26_drive_0028_sync 268 l
+2011_09_26/2011_09_26_drive_0087_sync 556 r
+2011_10_03/2011_10_03_drive_0034_sync 499 r
+2011_09_26/2011_09_26_drive_0022_sync 565 r
+2011_10_03/2011_10_03_drive_0034_sync 2795 l
+2011_10_03/2011_10_03_drive_0034_sync 1344 r
+2011_09_29/2011_09_29_drive_0004_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 1879 l
+2011_09_30/2011_09_30_drive_0028_sync 4244 l
+2011_09_30/2011_09_30_drive_0034_sync 824 l
+2011_09_30/2011_09_30_drive_0028_sync 1889 l
+2011_09_30/2011_09_30_drive_0033_sync 1228 l
+2011_09_30/2011_09_30_drive_0028_sync 1248 r
+2011_10_03/2011_10_03_drive_0034_sync 4368 l
+2011_09_26/2011_09_26_drive_0070_sync 60 r
+2011_09_26/2011_09_26_drive_0017_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 2548 r
+2011_10_03/2011_10_03_drive_0042_sync 435 l
+2011_10_03/2011_10_03_drive_0034_sync 906 r
+2011_10_03/2011_10_03_drive_0034_sync 2357 r
+2011_09_30/2011_09_30_drive_0028_sync 1390 l
+2011_09_30/2011_09_30_drive_0028_sync 1012 r
+2011_09_26/2011_09_26_drive_0061_sync 512 l
+2011_09_30/2011_09_30_drive_0034_sync 867 r
+2011_09_26/2011_09_26_drive_0019_sync 123 l
+2011_09_30/2011_09_30_drive_0033_sync 1459 r
+2011_10_03/2011_10_03_drive_0034_sync 2756 l
+2011_09_29/2011_09_29_drive_0004_sync 278 r
+2011_09_26/2011_09_26_drive_0087_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 4876 r
+2011_10_03/2011_10_03_drive_0034_sync 3200 r
+2011_09_30/2011_09_30_drive_0028_sync 2741 l
+2011_09_26/2011_09_26_drive_0015_sync 218 r
+2011_09_26/2011_09_26_drive_0039_sync 179 l
+2011_09_30/2011_09_30_drive_0028_sync 4294 r
+2011_09_30/2011_09_30_drive_0028_sync 3666 l
+2011_09_26/2011_09_26_drive_0091_sync 70 r
+2011_09_26/2011_09_26_drive_0070_sync 132 l
+2011_09_26/2011_09_26_drive_0032_sync 366 r
+2011_09_26/2011_09_26_drive_0019_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 460 r
+2011_10_03/2011_10_03_drive_0034_sync 754 r
+2011_09_29/2011_09_29_drive_0026_sync 2 r
+2011_09_29/2011_09_29_drive_0026_sync 108 r
+2011_09_26/2011_09_26_drive_0022_sync 174 l
+2011_09_26/2011_09_26_drive_0022_sync 466 l
+2011_09_29/2011_09_29_drive_0004_sync 158 r
+2011_09_30/2011_09_30_drive_0020_sync 160 r
+2011_09_30/2011_09_30_drive_0020_sync 735 r
+2011_09_30/2011_09_30_drive_0020_sync 1056 r
+2011_09_26/2011_09_26_drive_0032_sync 142 l
+2011_10_03/2011_10_03_drive_0034_sync 3899 r
+2011_09_30/2011_09_30_drive_0028_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 270 r
+2011_09_26/2011_09_26_drive_0005_sync 99 r
+2011_09_30/2011_09_30_drive_0033_sync 304 r
+2011_09_26/2011_09_26_drive_0079_sync 7 l
+2011_09_30/2011_09_30_drive_0034_sync 611 l
+2011_09_30/2011_09_30_drive_0033_sync 1164 l
+2011_10_03/2011_10_03_drive_0034_sync 3601 r
+2011_09_26/2011_09_26_drive_0015_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 2364 l
+2011_10_03/2011_10_03_drive_0034_sync 3068 l
+2011_09_26/2011_09_26_drive_0087_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 2590 r
+2011_09_30/2011_09_30_drive_0028_sync 1600 l
+2011_09_26/2011_09_26_drive_0087_sync 712 r
+2011_09_30/2011_09_30_drive_0028_sync 275 l
+2011_09_30/2011_09_30_drive_0028_sync 3561 r
+2011_09_26/2011_09_26_drive_0035_sync 129 r
+2011_09_26/2011_09_26_drive_0039_sync 195 r
+2011_09_30/2011_09_30_drive_0028_sync 3510 r
+2011_09_26/2011_09_26_drive_0028_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3575 r
+2011_09_30/2011_09_30_drive_0028_sync 845 r
+2011_09_30/2011_09_30_drive_0028_sync 1365 l
+2011_09_26/2011_09_26_drive_0035_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 4418 r
+2011_09_30/2011_09_30_drive_0028_sync 525 l
+2011_09_26/2011_09_26_drive_0014_sync 122 r
+2011_09_26/2011_09_26_drive_0032_sync 228 l
+2011_09_26/2011_09_26_drive_0028_sync 106 r
+2011_09_30/2011_09_30_drive_0033_sync 1185 l
+2011_09_30/2011_09_30_drive_0028_sync 5038 l
+2011_09_26/2011_09_26_drive_0022_sync 591 l
+2011_09_30/2011_09_30_drive_0028_sync 1703 r
+2011_09_30/2011_09_30_drive_0020_sync 912 l
+2011_09_26/2011_09_26_drive_0022_sync 564 r
+2011_09_26/2011_09_26_drive_0091_sync 220 r
+2011_09_26/2011_09_26_drive_0039_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 2239 l
+2011_09_30/2011_09_30_drive_0028_sync 2150 l
+2011_10_03/2011_10_03_drive_0034_sync 1839 r
+2011_09_30/2011_09_30_drive_0028_sync 2235 r
+2011_09_26/2011_09_26_drive_0015_sync 23 r
+2011_09_26/2011_09_26_drive_0018_sync 80 l
+2011_10_03/2011_10_03_drive_0042_sync 211 r
+2011_09_30/2011_09_30_drive_0034_sync 916 r
+2011_09_26/2011_09_26_drive_0022_sync 740 l
+2011_09_26/2011_09_26_drive_0032_sync 22 r
+2011_09_30/2011_09_30_drive_0020_sync 27 r
+2011_10_03/2011_10_03_drive_0042_sync 1010 r
+2011_09_26/2011_09_26_drive_0032_sync 281 l
+2011_10_03/2011_10_03_drive_0034_sync 4301 l
+2011_09_26/2011_09_26_drive_0022_sync 699 l
+2011_09_29/2011_09_29_drive_0004_sync 271 r
+2011_09_26/2011_09_26_drive_0032_sync 27 r
+2011_10_03/2011_10_03_drive_0034_sync 4343 l
+2011_09_26/2011_09_26_drive_0022_sync 268 r
+2011_09_26/2011_09_26_drive_0022_sync 748 l
+2011_09_30/2011_09_30_drive_0033_sync 971 r
+2011_09_26/2011_09_26_drive_0061_sync 25 l
+2011_09_26/2011_09_26_drive_0087_sync 534 l
+2011_09_26/2011_09_26_drive_0035_sync 46 r
+2011_09_26/2011_09_26_drive_0070_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 4247 l
+2011_09_30/2011_09_30_drive_0028_sync 3589 r
+2011_10_03/2011_10_03_drive_0034_sync 1546 r
+2011_10_03/2011_10_03_drive_0034_sync 2885 r
+2011_09_26/2011_09_26_drive_0032_sync 333 r
+2011_09_30/2011_09_30_drive_0034_sync 262 l
+2011_10_03/2011_10_03_drive_0034_sync 307 l
+2011_09_30/2011_09_30_drive_0028_sync 4087 l
+2011_09_30/2011_09_30_drive_0028_sync 2832 r
+2011_09_26/2011_09_26_drive_0087_sync 294 l
+2011_09_26/2011_09_26_drive_0104_sync 125 l
+2011_09_30/2011_09_30_drive_0033_sync 456 r
+2011_09_30/2011_09_30_drive_0028_sync 2379 l
+2011_09_26/2011_09_26_drive_0015_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 1760 l
+2011_10_03/2011_10_03_drive_0034_sync 2182 r
+2011_09_30/2011_09_30_drive_0020_sync 930 l
+2011_10_03/2011_10_03_drive_0042_sync 658 r
+2011_09_26/2011_09_26_drive_0057_sync 151 l
+2011_09_30/2011_09_30_drive_0020_sync 997 r
+2011_10_03/2011_10_03_drive_0034_sync 3540 r
+2011_10_03/2011_10_03_drive_0042_sync 303 l
+2011_09_30/2011_09_30_drive_0020_sync 769 l
+2011_09_30/2011_09_30_drive_0020_sync 399 r
+2011_09_26/2011_09_26_drive_0011_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 4265 r
+2011_09_30/2011_09_30_drive_0028_sync 4232 l
+2011_10_03/2011_10_03_drive_0042_sync 946 l
+2011_09_30/2011_09_30_drive_0034_sync 122 l
+2011_09_26/2011_09_26_drive_0070_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 201 l
+2011_09_26/2011_09_26_drive_0015_sync 117 l
+2011_09_30/2011_09_30_drive_0020_sync 728 l
+2011_10_03/2011_10_03_drive_0034_sync 3206 r
+2011_09_30/2011_09_30_drive_0020_sync 570 r
+2011_09_30/2011_09_30_drive_0028_sync 2162 l
+2011_09_30/2011_09_30_drive_0028_sync 468 r
+2011_10_03/2011_10_03_drive_0034_sync 2592 r
+2011_09_26/2011_09_26_drive_0005_sync 102 l
+2011_10_03/2011_10_03_drive_0034_sync 2160 r
+2011_09_26/2011_09_26_drive_0039_sync 176 l
+2011_10_03/2011_10_03_drive_0034_sync 4298 r
+2011_09_26/2011_09_26_drive_0061_sync 647 r
+2011_09_30/2011_09_30_drive_0028_sync 11 l
+2011_09_26/2011_09_26_drive_0018_sync 73 l
+2011_09_30/2011_09_30_drive_0028_sync 3063 r
+2011_09_26/2011_09_26_drive_0019_sync 303 r
+2011_10_03/2011_10_03_drive_0034_sync 2974 r
+2011_09_26/2011_09_26_drive_0087_sync 510 l
+2011_09_30/2011_09_30_drive_0034_sync 750 r
+2011_10_03/2011_10_03_drive_0034_sync 3636 r
+2011_09_30/2011_09_30_drive_0028_sync 3755 l
+2011_09_30/2011_09_30_drive_0028_sync 4167 r
+2011_10_03/2011_10_03_drive_0034_sync 1286 r
+2011_10_03/2011_10_03_drive_0034_sync 73 r
+2011_09_30/2011_09_30_drive_0028_sync 880 l
+2011_09_30/2011_09_30_drive_0033_sync 358 l
+2011_09_30/2011_09_30_drive_0034_sync 654 r
+2011_09_26/2011_09_26_drive_0070_sync 338 l
+2011_09_30/2011_09_30_drive_0020_sync 1103 r
+2011_09_26/2011_09_26_drive_0032_sync 18 r
+2011_09_26/2011_09_26_drive_0087_sync 265 r
+2011_09_30/2011_09_30_drive_0028_sync 1534 l
+2011_10_03/2011_10_03_drive_0034_sync 510 r
+2011_10_03/2011_10_03_drive_0034_sync 2497 l
+2011_09_26/2011_09_26_drive_0051_sync 339 r
+2011_09_30/2011_09_30_drive_0028_sync 823 r
+2011_10_03/2011_10_03_drive_0034_sync 1698 r
+2011_09_30/2011_09_30_drive_0028_sync 984 l
+2011_10_03/2011_10_03_drive_0034_sync 19 l
+2011_09_26/2011_09_26_drive_0087_sync 619 r
+2011_09_26/2011_09_26_drive_0113_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 4082 r
+2011_09_30/2011_09_30_drive_0028_sync 4925 l
+2011_09_30/2011_09_30_drive_0028_sync 4364 r
+2011_09_30/2011_09_30_drive_0028_sync 3084 l
+2011_09_26/2011_09_26_drive_0104_sync 231 r
+2011_09_30/2011_09_30_drive_0034_sync 788 l
+2011_09_30/2011_09_30_drive_0028_sync 3784 l
+2011_10_03/2011_10_03_drive_0034_sync 3633 l
+2011_09_30/2011_09_30_drive_0028_sync 376 l
+2011_10_03/2011_10_03_drive_0034_sync 308 r
+2011_10_03/2011_10_03_drive_0042_sync 305 r
+2011_10_03/2011_10_03_drive_0034_sync 247 r
+2011_09_30/2011_09_30_drive_0033_sync 504 r
+2011_09_30/2011_09_30_drive_0028_sync 199 r
+2011_09_26/2011_09_26_drive_0057_sync 360 r
+2011_09_26/2011_09_26_drive_0019_sync 83 l
+2011_09_26/2011_09_26_drive_0014_sync 205 l
+2011_10_03/2011_10_03_drive_0034_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 48 r
+2011_09_26/2011_09_26_drive_0022_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 4856 l
+2011_09_30/2011_09_30_drive_0028_sync 4108 l
+2011_09_26/2011_09_26_drive_0039_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 4586 r
+2011_10_03/2011_10_03_drive_0034_sync 4607 r
+2011_09_26/2011_09_26_drive_0035_sync 4 r
+2011_09_30/2011_09_30_drive_0033_sync 1007 r
+2011_10_03/2011_10_03_drive_0034_sync 3463 r
+2011_10_03/2011_10_03_drive_0034_sync 3534 l
+2011_10_03/2011_10_03_drive_0034_sync 2779 r
+2011_09_26/2011_09_26_drive_0039_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 4892 r
+2011_09_26/2011_09_26_drive_0057_sync 96 r
+2011_09_26/2011_09_26_drive_0087_sync 331 r
+2011_09_26/2011_09_26_drive_0028_sync 130 l
+2011_09_26/2011_09_26_drive_0028_sync 232 r
+2011_10_03/2011_10_03_drive_0042_sync 566 l
+2011_09_29/2011_09_29_drive_0026_sync 145 r
+2011_10_03/2011_10_03_drive_0042_sync 309 r
+2011_09_30/2011_09_30_drive_0034_sync 95 r
+2011_09_26/2011_09_26_drive_0017_sync 20 l
+2011_09_26/2011_09_26_drive_0070_sync 161 r
+2011_09_30/2011_09_30_drive_0028_sync 938 r
+2011_09_26/2011_09_26_drive_0070_sync 285 r
+2011_10_03/2011_10_03_drive_0034_sync 559 l
+2011_09_30/2011_09_30_drive_0028_sync 519 l
+2011_09_26/2011_09_26_drive_0087_sync 690 r
+2011_09_30/2011_09_30_drive_0028_sync 1575 l
+2011_09_30/2011_09_30_drive_0020_sync 1018 l
+2011_09_30/2011_09_30_drive_0028_sync 4455 r
+2011_09_26/2011_09_26_drive_0057_sync 103 l
+2011_09_30/2011_09_30_drive_0020_sync 478 l
+2011_09_26/2011_09_26_drive_0104_sync 149 r
+2011_09_30/2011_09_30_drive_0020_sync 290 l
+2011_09_30/2011_09_30_drive_0034_sync 152 r
+2011_10_03/2011_10_03_drive_0034_sync 1049 r
+2011_09_26/2011_09_26_drive_0032_sync 167 r
+2011_10_03/2011_10_03_drive_0034_sync 4181 l
+2011_09_26/2011_09_26_drive_0022_sync 241 r
+2011_09_30/2011_09_30_drive_0034_sync 241 l
+2011_09_26/2011_09_26_drive_0061_sync 414 r
+2011_10_03/2011_10_03_drive_0034_sync 4383 r
+2011_09_26/2011_09_26_drive_0061_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 3064 l
+2011_10_03/2011_10_03_drive_0042_sync 246 r
+2011_09_26/2011_09_26_drive_0087_sync 660 r
+2011_09_26/2011_09_26_drive_0022_sync 231 r
+2011_10_03/2011_10_03_drive_0034_sync 3822 r
+2011_09_30/2011_09_30_drive_0028_sync 1050 l
+2011_09_26/2011_09_26_drive_0095_sync 142 r
+2011_09_26/2011_09_26_drive_0061_sync 82 r
+2011_09_26/2011_09_26_drive_0087_sync 553 r
+2011_09_26/2011_09_26_drive_0022_sync 710 r
+2011_10_03/2011_10_03_drive_0042_sync 145 r
+2011_09_26/2011_09_26_drive_0104_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 3455 l
+2011_09_30/2011_09_30_drive_0028_sync 120 r
+2011_09_30/2011_09_30_drive_0028_sync 1847 l
+2011_09_26/2011_09_26_drive_0051_sync 417 l
+2011_09_30/2011_09_30_drive_0028_sync 259 l
+2011_09_30/2011_09_30_drive_0033_sync 1147 l
+2011_09_30/2011_09_30_drive_0034_sync 946 r
+2011_09_26/2011_09_26_drive_0018_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 4296 l
+2011_09_26/2011_09_26_drive_0070_sync 59 r
+2011_09_30/2011_09_30_drive_0034_sync 3 l
+2011_09_26/2011_09_26_drive_0022_sync 708 r
+2011_09_26/2011_09_26_drive_0057_sync 50 r
+2011_09_26/2011_09_26_drive_0061_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 4596 l
+2011_09_30/2011_09_30_drive_0028_sync 4429 r
+2011_09_26/2011_09_26_drive_0061_sync 245 l
+2011_09_26/2011_09_26_drive_0051_sync 124 r
+2011_10_03/2011_10_03_drive_0034_sync 615 l
+2011_09_26/2011_09_26_drive_0061_sync 213 r
+2011_09_30/2011_09_30_drive_0028_sync 1256 r
+2011_10_03/2011_10_03_drive_0034_sync 4095 r
+2011_09_26/2011_09_26_drive_0057_sync 350 l
+2011_09_26/2011_09_26_drive_0087_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 3790 r
+2011_09_30/2011_09_30_drive_0028_sync 616 l
+2011_09_30/2011_09_30_drive_0028_sync 3242 r
+2011_09_30/2011_09_30_drive_0028_sync 2266 l
+2011_09_30/2011_09_30_drive_0020_sync 751 r
+2011_09_26/2011_09_26_drive_0061_sync 78 l
+2011_09_30/2011_09_30_drive_0034_sync 682 l
+2011_09_26/2011_09_26_drive_0070_sync 382 l
+2011_09_30/2011_09_30_drive_0028_sync 1755 r
+2011_10_03/2011_10_03_drive_0034_sync 1273 r
+2011_09_30/2011_09_30_drive_0028_sync 1133 l
+2011_09_26/2011_09_26_drive_0051_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 908 l
+2011_09_26/2011_09_26_drive_0061_sync 295 l
+2011_09_30/2011_09_30_drive_0028_sync 804 r
+2011_10_03/2011_10_03_drive_0034_sync 2781 l
+2011_09_30/2011_09_30_drive_0028_sync 3738 r
+2011_10_03/2011_10_03_drive_0034_sync 860 l
+2011_10_03/2011_10_03_drive_0034_sync 128 r
+2011_09_30/2011_09_30_drive_0034_sync 1083 l
+2011_09_26/2011_09_26_drive_0051_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 2251 l
+2011_09_30/2011_09_30_drive_0028_sync 2925 r
+2011_09_26/2011_09_26_drive_0104_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 1797 l
+2011_09_29/2011_09_29_drive_0004_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 4210 l
+2011_09_26/2011_09_26_drive_0022_sync 624 l
+2011_09_26/2011_09_26_drive_0019_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 1339 l
+2011_09_26/2011_09_26_drive_0091_sync 302 l
+2011_09_30/2011_09_30_drive_0033_sync 713 r
+2011_09_26/2011_09_26_drive_0061_sync 158 l
+2011_09_30/2011_09_30_drive_0020_sync 79 l
+2011_09_30/2011_09_30_drive_0033_sync 782 l
+2011_09_26/2011_09_26_drive_0087_sync 227 r
+2011_09_30/2011_09_30_drive_0028_sync 1359 l
+2011_09_29/2011_09_29_drive_0026_sync 116 r
+2011_09_26/2011_09_26_drive_0060_sync 5 l
+2011_10_03/2011_10_03_drive_0034_sync 852 r
+2011_09_26/2011_09_26_drive_0104_sync 190 l
+2011_09_26/2011_09_26_drive_0032_sync 25 r
+2011_09_30/2011_09_30_drive_0028_sync 3004 l
+2011_09_30/2011_09_30_drive_0028_sync 1170 l
+2011_09_30/2011_09_30_drive_0028_sync 2080 r
+2011_09_26/2011_09_26_drive_0095_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 4014 r
+2011_09_30/2011_09_30_drive_0028_sync 123 r
+2011_09_30/2011_09_30_drive_0028_sync 3834 r
+2011_10_03/2011_10_03_drive_0034_sync 3966 l
+2011_10_03/2011_10_03_drive_0034_sync 176 r
+2011_09_29/2011_09_29_drive_0026_sync 10 r
+2011_10_03/2011_10_03_drive_0034_sync 384 r
+2011_09_30/2011_09_30_drive_0028_sync 4288 l
+2011_09_26/2011_09_26_drive_0070_sync 239 l
+2011_10_03/2011_10_03_drive_0034_sync 2883 l
+2011_09_26/2011_09_26_drive_0061_sync 308 l
+2011_10_03/2011_10_03_drive_0034_sync 715 l
+2011_09_30/2011_09_30_drive_0020_sync 593 l
+2011_09_26/2011_09_26_drive_0028_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 2218 l
+2011_09_26/2011_09_26_drive_0019_sync 443 r
+2011_09_26/2011_09_26_drive_0061_sync 527 l
+2011_09_26/2011_09_26_drive_0014_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 1824 r
+2011_09_30/2011_09_30_drive_0033_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 2213 l
+2011_09_30/2011_09_30_drive_0033_sync 1103 r
+2011_10_03/2011_10_03_drive_0034_sync 2664 l
+2011_09_26/2011_09_26_drive_0091_sync 141 r
+2011_09_26/2011_09_26_drive_0060_sync 69 l
+2011_09_29/2011_09_29_drive_0004_sync 312 l
+2011_10_03/2011_10_03_drive_0042_sync 849 r
+2011_09_30/2011_09_30_drive_0028_sync 887 r
+2011_09_30/2011_09_30_drive_0028_sync 2205 r
+2011_09_29/2011_09_29_drive_0026_sync 52 l
+2011_09_30/2011_09_30_drive_0020_sync 578 r
+2011_09_30/2011_09_30_drive_0028_sync 3079 r
+2011_09_26/2011_09_26_drive_0011_sync 139 r
+2011_09_30/2011_09_30_drive_0028_sync 2219 l
+2011_09_26/2011_09_26_drive_0051_sync 346 l
+2011_10_03/2011_10_03_drive_0034_sync 665 r
+2011_09_26/2011_09_26_drive_0039_sync 350 l
+2011_09_30/2011_09_30_drive_0028_sync 2556 l
+2011_10_03/2011_10_03_drive_0034_sync 36 l
+2011_10_03/2011_10_03_drive_0042_sync 50 r
+2011_09_30/2011_09_30_drive_0033_sync 965 l
+2011_09_30/2011_09_30_drive_0028_sync 5009 r
+2011_09_30/2011_09_30_drive_0028_sync 3110 r
+2011_09_30/2011_09_30_drive_0028_sync 4697 r
+2011_09_30/2011_09_30_drive_0033_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 342 l
+2011_09_30/2011_09_30_drive_0020_sync 28 l
+2011_09_30/2011_09_30_drive_0034_sync 789 r
+2011_09_26/2011_09_26_drive_0028_sync 118 l
+2011_09_30/2011_09_30_drive_0028_sync 2934 l
+2011_09_26/2011_09_26_drive_0039_sync 142 l
+2011_09_26/2011_09_26_drive_0011_sync 173 l
+2011_09_30/2011_09_30_drive_0028_sync 3773 r
+2011_09_30/2011_09_30_drive_0033_sync 311 l
+2011_09_26/2011_09_26_drive_0039_sync 275 l
+2011_09_26/2011_09_26_drive_0019_sync 454 r
+2011_09_26/2011_09_26_drive_0019_sync 77 l
+2011_09_26/2011_09_26_drive_0087_sync 679 l
+2011_09_30/2011_09_30_drive_0028_sync 3743 r
+2011_09_26/2011_09_26_drive_0028_sync 157 l
+2011_09_26/2011_09_26_drive_0061_sync 441 r
+2011_09_30/2011_09_30_drive_0028_sync 5037 r
+2011_10_03/2011_10_03_drive_0034_sync 3123 l
+2011_10_03/2011_10_03_drive_0034_sync 883 l
+2011_09_26/2011_09_26_drive_0011_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 3042 r
+2011_10_03/2011_10_03_drive_0034_sync 1566 l
+2011_10_03/2011_10_03_drive_0034_sync 2362 r
+2011_09_26/2011_09_26_drive_0039_sync 53 l
+2011_09_26/2011_09_26_drive_0014_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 440 r
+2011_09_26/2011_09_26_drive_0061_sync 361 r
+2011_10_03/2011_10_03_drive_0042_sync 683 r
+2011_09_26/2011_09_26_drive_0028_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 1383 l
+2011_09_30/2011_09_30_drive_0028_sync 2719 r
+2011_09_26/2011_09_26_drive_0091_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 885 r
+2011_09_30/2011_09_30_drive_0028_sync 1894 r
+2011_09_30/2011_09_30_drive_0020_sync 97 r
+2011_10_03/2011_10_03_drive_0034_sync 3346 l
+2011_09_30/2011_09_30_drive_0028_sync 16 l
+2011_09_30/2011_09_30_drive_0033_sync 628 l
+2011_09_30/2011_09_30_drive_0028_sync 846 l
+2011_09_30/2011_09_30_drive_0034_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 1706 l
+2011_09_26/2011_09_26_drive_0091_sync 167 r
+2011_10_03/2011_10_03_drive_0034_sync 4167 l
+2011_09_30/2011_09_30_drive_0028_sync 981 r
+2011_10_03/2011_10_03_drive_0042_sync 424 r
+2011_09_30/2011_09_30_drive_0034_sync 823 r
+2011_10_03/2011_10_03_drive_0034_sync 3211 r
+2011_10_03/2011_10_03_drive_0034_sync 4069 r
+2011_09_30/2011_09_30_drive_0020_sync 882 l
+2011_09_30/2011_09_30_drive_0034_sync 382 r
+2011_10_03/2011_10_03_drive_0042_sync 614 l
+2011_10_03/2011_10_03_drive_0042_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 47 r
+2011_09_26/2011_09_26_drive_0087_sync 211 l
+2011_09_30/2011_09_30_drive_0033_sync 868 l
+2011_10_03/2011_10_03_drive_0034_sync 4454 l
+2011_09_26/2011_09_26_drive_0022_sync 20 l
+2011_09_26/2011_09_26_drive_0051_sync 396 r
+2011_09_26/2011_09_26_drive_0018_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 1541 l
+2011_09_30/2011_09_30_drive_0020_sync 461 r
+2011_09_30/2011_09_30_drive_0033_sync 901 r
+2011_09_26/2011_09_26_drive_0104_sync 82 r
+2011_10_03/2011_10_03_drive_0034_sync 974 l
+2011_09_30/2011_09_30_drive_0020_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 1462 l
+2011_09_30/2011_09_30_drive_0028_sync 2960 l
+2011_10_03/2011_10_03_drive_0034_sync 1556 r
+2011_09_30/2011_09_30_drive_0028_sync 2718 l
+2011_09_26/2011_09_26_drive_0051_sync 216 l
+2011_09_26/2011_09_26_drive_0019_sync 264 r
+2011_10_03/2011_10_03_drive_0042_sync 259 r
+2011_09_26/2011_09_26_drive_0087_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 278 l
+2011_09_26/2011_09_26_drive_0087_sync 624 l
+2011_10_03/2011_10_03_drive_0034_sync 2095 l
+2011_10_03/2011_10_03_drive_0034_sync 3397 l
+2011_09_26/2011_09_26_drive_0039_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 2455 l
+2011_09_26/2011_09_26_drive_0087_sync 198 r
+2011_09_26/2011_09_26_drive_0028_sync 208 l
+2011_09_26/2011_09_26_drive_0061_sync 699 r
+2011_10_03/2011_10_03_drive_0042_sync 143 r
+2011_10_03/2011_10_03_drive_0042_sync 347 l
+2011_10_03/2011_10_03_drive_0034_sync 1506 l
+2011_10_03/2011_10_03_drive_0034_sync 1583 r
+2011_10_03/2011_10_03_drive_0042_sync 854 l
+2011_10_03/2011_10_03_drive_0034_sync 2108 r
+2011_09_30/2011_09_30_drive_0028_sync 230 l
+2011_10_03/2011_10_03_drive_0034_sync 4485 r
+2011_10_03/2011_10_03_drive_0042_sync 623 l
+2011_09_30/2011_09_30_drive_0028_sync 4522 l
+2011_10_03/2011_10_03_drive_0034_sync 3515 r
+2011_09_26/2011_09_26_drive_0022_sync 541 l
+2011_09_26/2011_09_26_drive_0091_sync 82 r
+2011_09_26/2011_09_26_drive_0104_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 3711 r
+2011_10_03/2011_10_03_drive_0034_sync 3209 l
+2011_09_30/2011_09_30_drive_0034_sync 638 r
+2011_09_30/2011_09_30_drive_0020_sync 1103 l
+2011_09_30/2011_09_30_drive_0020_sync 132 r
+2011_09_26/2011_09_26_drive_0022_sync 501 r
+2011_09_26/2011_09_26_drive_0039_sync 163 l
+2011_09_30/2011_09_30_drive_0034_sync 118 r
+2011_09_26/2011_09_26_drive_0087_sync 702 l
+2011_09_30/2011_09_30_drive_0020_sync 532 r
+2011_09_30/2011_09_30_drive_0034_sync 1088 r
+2011_09_30/2011_09_30_drive_0033_sync 338 r
+2011_09_30/2011_09_30_drive_0028_sync 450 l
+2011_09_30/2011_09_30_drive_0033_sync 1105 l
+2011_09_26/2011_09_26_drive_0091_sync 201 l
+2011_09_26/2011_09_26_drive_0019_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 3169 l
+2011_09_30/2011_09_30_drive_0028_sync 2788 l
+2011_09_26/2011_09_26_drive_0005_sync 88 l
+2011_10_03/2011_10_03_drive_0042_sync 345 r
+2011_09_26/2011_09_26_drive_0014_sync 302 l
+2011_10_03/2011_10_03_drive_0034_sync 1363 r
+2011_09_30/2011_09_30_drive_0028_sync 703 r
+2011_09_28/2011_09_28_drive_0001_sync 47 r
+2011_09_30/2011_09_30_drive_0033_sync 1175 r
+2011_10_03/2011_10_03_drive_0034_sync 1768 l
+2011_09_30/2011_09_30_drive_0028_sync 3551 l
+2011_09_30/2011_09_30_drive_0033_sync 789 l
+2011_10_03/2011_10_03_drive_0034_sync 2365 l
+2011_10_03/2011_10_03_drive_0034_sync 2338 l
+2011_09_26/2011_09_26_drive_0061_sync 110 l
+2011_09_26/2011_09_26_drive_0104_sync 134 l
+2011_09_26/2011_09_26_drive_0061_sync 221 l
+2011_09_26/2011_09_26_drive_0039_sync 293 r
+2011_09_29/2011_09_29_drive_0004_sync 319 r
+2011_09_30/2011_09_30_drive_0020_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 4242 r
+2011_10_03/2011_10_03_drive_0034_sync 4026 l
+2011_09_26/2011_09_26_drive_0087_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 533 r
+2011_09_30/2011_09_30_drive_0033_sync 1127 r
+2011_09_26/2011_09_26_drive_0087_sync 569 r
+2011_09_30/2011_09_30_drive_0028_sync 737 l
+2011_10_03/2011_10_03_drive_0034_sync 3786 r
+2011_10_03/2011_10_03_drive_0034_sync 3554 l
+2011_10_03/2011_10_03_drive_0042_sync 786 l
+2011_10_03/2011_10_03_drive_0034_sync 3351 r
+2011_10_03/2011_10_03_drive_0034_sync 1315 r
+2011_09_30/2011_09_30_drive_0033_sync 4 r
+2011_09_26/2011_09_26_drive_0032_sync 339 r
+2011_09_30/2011_09_30_drive_0034_sync 909 r
+2011_09_26/2011_09_26_drive_0019_sync 308 l
+2011_09_26/2011_09_26_drive_0091_sync 101 r
+2011_09_26/2011_09_26_drive_0061_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 1890 l
+2011_10_03/2011_10_03_drive_0042_sync 239 r
+2011_09_30/2011_09_30_drive_0028_sync 578 r
+2011_09_26/2011_09_26_drive_0061_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 989 l
+2011_09_30/2011_09_30_drive_0034_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 3292 l
+2011_10_03/2011_10_03_drive_0034_sync 2981 r
+2011_09_30/2011_09_30_drive_0028_sync 3217 l
+2011_10_03/2011_10_03_drive_0034_sync 2252 r
+2011_09_30/2011_09_30_drive_0020_sync 475 l
+2011_09_30/2011_09_30_drive_0033_sync 1552 l
+2011_10_03/2011_10_03_drive_0042_sync 465 l
+2011_09_26/2011_09_26_drive_0087_sync 417 l
+2011_10_03/2011_10_03_drive_0034_sync 4498 r
+2011_09_30/2011_09_30_drive_0028_sync 5029 r
+2011_09_30/2011_09_30_drive_0034_sync 642 l
+2011_10_03/2011_10_03_drive_0034_sync 3994 r
+2011_09_30/2011_09_30_drive_0028_sync 67 r
+2011_09_26/2011_09_26_drive_0022_sync 301 l
+2011_09_30/2011_09_30_drive_0020_sync 194 l
+2011_09_30/2011_09_30_drive_0033_sync 193 r
+2011_10_03/2011_10_03_drive_0034_sync 2967 r
+2011_10_03/2011_10_03_drive_0034_sync 3485 r
+2011_10_03/2011_10_03_drive_0034_sync 475 l
+2011_09_30/2011_09_30_drive_0034_sync 1023 l
+2011_09_30/2011_09_30_drive_0034_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 1252 l
+2011_09_26/2011_09_26_drive_0015_sync 60 l
+2011_09_30/2011_09_30_drive_0020_sync 396 r
+2011_09_30/2011_09_30_drive_0028_sync 3470 r
+2011_09_30/2011_09_30_drive_0028_sync 482 r
+2011_09_26/2011_09_26_drive_0014_sync 179 r
+2011_09_29/2011_09_29_drive_0026_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 1149 l
+2011_09_30/2011_09_30_drive_0020_sync 653 l
+2011_10_03/2011_10_03_drive_0034_sync 3795 l
+2011_09_30/2011_09_30_drive_0028_sync 2246 l
+2011_09_30/2011_09_30_drive_0028_sync 3363 r
+2011_09_30/2011_09_30_drive_0020_sync 786 r
+2011_10_03/2011_10_03_drive_0042_sync 863 r
+2011_09_30/2011_09_30_drive_0020_sync 195 r
+2011_09_26/2011_09_26_drive_0019_sync 390 r
+2011_09_26/2011_09_26_drive_0051_sync 41 r
+2011_09_29/2011_09_29_drive_0026_sync 146 r
+2011_10_03/2011_10_03_drive_0042_sync 224 l
+2011_09_30/2011_09_30_drive_0033_sync 1054 r
+2011_10_03/2011_10_03_drive_0042_sync 477 r
+2011_09_26/2011_09_26_drive_0018_sync 57 r
+2011_09_26/2011_09_26_drive_0087_sync 615 r
+2011_10_03/2011_10_03_drive_0034_sync 2693 l
+2011_09_26/2011_09_26_drive_0032_sync 162 l
+2011_09_26/2011_09_26_drive_0087_sync 259 l
+2011_09_30/2011_09_30_drive_0028_sync 682 r
+2011_09_26/2011_09_26_drive_0057_sync 0 r
+2011_09_26/2011_09_26_drive_0104_sync 68 l
+2011_09_26/2011_09_26_drive_0061_sync 84 l
+2011_09_30/2011_09_30_drive_0033_sync 633 l
+2011_09_26/2011_09_26_drive_0104_sync 132 l
+2011_09_30/2011_09_30_drive_0028_sync 4318 r
+2011_10_03/2011_10_03_drive_0034_sync 500 r
+2011_09_26/2011_09_26_drive_0011_sync 51 l
+2011_09_30/2011_09_30_drive_0020_sync 917 r
+2011_10_03/2011_10_03_drive_0034_sync 2377 r
+2011_09_26/2011_09_26_drive_0061_sync 510 r
+2011_09_30/2011_09_30_drive_0033_sync 868 r
+2011_10_03/2011_10_03_drive_0034_sync 2531 l
+2011_09_26/2011_09_26_drive_0113_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 3373 r
+2011_09_30/2011_09_30_drive_0034_sync 711 r
+2011_09_30/2011_09_30_drive_0028_sync 3034 r
+2011_09_30/2011_09_30_drive_0033_sync 1086 r
+2011_09_30/2011_09_30_drive_0034_sync 647 l
+2011_09_26/2011_09_26_drive_0051_sync 255 l
+2011_09_30/2011_09_30_drive_0033_sync 531 l
+2011_09_26/2011_09_26_drive_0028_sync 309 l
+2011_10_03/2011_10_03_drive_0042_sync 225 l
+2011_09_30/2011_09_30_drive_0028_sync 3445 l
+2011_09_30/2011_09_30_drive_0028_sync 1294 l
+2011_09_30/2011_09_30_drive_0028_sync 3015 l
+2011_10_03/2011_10_03_drive_0034_sync 1169 r
+2011_10_03/2011_10_03_drive_0034_sync 549 r
+2011_09_30/2011_09_30_drive_0020_sync 903 l
+2011_09_30/2011_09_30_drive_0034_sync 1128 l
+2011_10_03/2011_10_03_drive_0034_sync 3038 r
+2011_09_26/2011_09_26_drive_0015_sync 58 l
+2011_09_26/2011_09_26_drive_0070_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 4159 l
+2011_09_30/2011_09_30_drive_0033_sync 892 l
+2011_10_03/2011_10_03_drive_0034_sync 4087 l
+2011_09_30/2011_09_30_drive_0028_sync 2469 l
+2011_09_26/2011_09_26_drive_0113_sync 71 r
+2011_09_30/2011_09_30_drive_0034_sync 96 l
+2011_09_26/2011_09_26_drive_0070_sync 416 r
+2011_10_03/2011_10_03_drive_0034_sync 2770 l
+2011_10_03/2011_10_03_drive_0034_sync 3596 l
+2011_09_26/2011_09_26_drive_0091_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 4720 r
+2011_09_30/2011_09_30_drive_0034_sync 1072 l
+2011_10_03/2011_10_03_drive_0034_sync 745 r
+2011_10_03/2011_10_03_drive_0034_sync 3378 l
+2011_09_30/2011_09_30_drive_0028_sync 635 r
+2011_09_30/2011_09_30_drive_0028_sync 3949 l
+2011_09_26/2011_09_26_drive_0060_sync 15 r
+2011_09_26/2011_09_26_drive_0061_sync 447 r
+2011_09_30/2011_09_30_drive_0033_sync 976 l
+2011_09_30/2011_09_30_drive_0028_sync 4210 r
+2011_09_26/2011_09_26_drive_0061_sync 60 l
+2011_09_30/2011_09_30_drive_0028_sync 2355 r
+2011_09_26/2011_09_26_drive_0039_sync 119 l
+2011_09_30/2011_09_30_drive_0033_sync 1005 l
+2011_09_30/2011_09_30_drive_0034_sync 880 r
+2011_09_26/2011_09_26_drive_0005_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 3334 l
+2011_09_26/2011_09_26_drive_0022_sync 197 l
+2011_10_03/2011_10_03_drive_0034_sync 3987 r
+2011_09_26/2011_09_26_drive_0022_sync 452 r
+2011_09_26/2011_09_26_drive_0057_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 3334 l
+2011_09_26/2011_09_26_drive_0019_sync 414 r
+2011_10_03/2011_10_03_drive_0034_sync 814 l
+2011_09_26/2011_09_26_drive_0091_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 3227 l
+2011_09_26/2011_09_26_drive_0095_sync 107 l
+2011_09_26/2011_09_26_drive_0014_sync 249 r
+2011_09_26/2011_09_26_drive_0061_sync 69 r
+2011_09_26/2011_09_26_drive_0001_sync 38 r
+2011_09_30/2011_09_30_drive_0020_sync 705 l
+2011_09_30/2011_09_30_drive_0028_sync 4786 l
+2011_09_30/2011_09_30_drive_0028_sync 626 l
+2011_09_26/2011_09_26_drive_0014_sync 101 r
+2011_09_30/2011_09_30_drive_0028_sync 4304 l
+2011_09_26/2011_09_26_drive_0022_sync 122 r
+2011_10_03/2011_10_03_drive_0034_sync 235 l
+2011_09_30/2011_09_30_drive_0028_sync 5014 r
+2011_09_30/2011_09_30_drive_0028_sync 2797 r
+2011_09_30/2011_09_30_drive_0033_sync 125 l
+2011_10_03/2011_10_03_drive_0034_sync 3769 r
+2011_09_26/2011_09_26_drive_0039_sync 310 l
+2011_09_26/2011_09_26_drive_0022_sync 242 l
+2011_09_26/2011_09_26_drive_0011_sync 204 r
+2011_10_03/2011_10_03_drive_0034_sync 4660 l
+2011_09_26/2011_09_26_drive_0061_sync 397 l
+2011_10_03/2011_10_03_drive_0042_sync 104 l
+2011_09_26/2011_09_26_drive_0018_sync 149 r
+2011_09_26/2011_09_26_drive_0057_sync 126 l
+2011_09_30/2011_09_30_drive_0020_sync 505 r
+2011_09_26/2011_09_26_drive_0057_sync 272 l
+2011_09_26/2011_09_26_drive_0032_sync 264 l
+2011_09_30/2011_09_30_drive_0028_sync 3393 l
+2011_10_03/2011_10_03_drive_0034_sync 2354 r
+2011_09_26/2011_09_26_drive_0091_sync 310 r
+2011_09_30/2011_09_30_drive_0028_sync 2822 l
+2011_09_29/2011_09_29_drive_0004_sync 147 l
+2011_09_26/2011_09_26_drive_0018_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 3449 l
+2011_09_30/2011_09_30_drive_0028_sync 4432 r
+2011_09_30/2011_09_30_drive_0020_sync 68 r
+2011_09_26/2011_09_26_drive_0011_sync 94 l
+2011_09_26/2011_09_26_drive_0011_sync 101 l
+2011_09_26/2011_09_26_drive_0051_sync 314 l
+2011_10_03/2011_10_03_drive_0042_sync 557 r
+2011_10_03/2011_10_03_drive_0034_sync 2458 l
+2011_09_26/2011_09_26_drive_0061_sync 664 r
+2011_09_26/2011_09_26_drive_0032_sync 95 r
+2011_09_26/2011_09_26_drive_0061_sync 370 l
+2011_09_30/2011_09_30_drive_0028_sync 3875 l
+2011_09_30/2011_09_30_drive_0028_sync 4928 l
+2011_09_30/2011_09_30_drive_0033_sync 724 r
+2011_09_30/2011_09_30_drive_0028_sync 4478 l
+2011_10_03/2011_10_03_drive_0034_sync 1474 r
+2011_10_03/2011_10_03_drive_0034_sync 4325 l
+2011_09_26/2011_09_26_drive_0014_sync 263 l
+2011_10_03/2011_10_03_drive_0034_sync 2902 l
+2011_09_30/2011_09_30_drive_0033_sync 26 r
+2011_09_26/2011_09_26_drive_0104_sync 261 l
+2011_09_29/2011_09_29_drive_0004_sync 126 r
+2011_09_26/2011_09_26_drive_0018_sync 141 r
+2011_09_26/2011_09_26_drive_0028_sync 233 r
+2011_09_26/2011_09_26_drive_0019_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 1345 r
+2011_09_26/2011_09_26_drive_0057_sync 134 r
+2011_09_26/2011_09_26_drive_0017_sync 5 r
+2011_09_26/2011_09_26_drive_0051_sync 397 r
+2011_10_03/2011_10_03_drive_0034_sync 1302 r
+2011_09_30/2011_09_30_drive_0034_sync 1043 r
+2011_09_30/2011_09_30_drive_0028_sync 4212 l
+2011_09_30/2011_09_30_drive_0028_sync 2316 l
+2011_10_03/2011_10_03_drive_0034_sync 4416 l
+2011_09_30/2011_09_30_drive_0028_sync 1275 r
+2011_09_26/2011_09_26_drive_0079_sync 40 l
+2011_09_26/2011_09_26_drive_0087_sync 480 l
+2011_09_30/2011_09_30_drive_0020_sync 426 l
+2011_09_26/2011_09_26_drive_0061_sync 238 l
+2011_10_03/2011_10_03_drive_0034_sync 1564 l
+2011_09_26/2011_09_26_drive_0079_sync 99 r
+2011_09_26/2011_09_26_drive_0087_sync 443 l
+2011_09_30/2011_09_30_drive_0028_sync 2311 r
+2011_09_26/2011_09_26_drive_0005_sync 98 l
+2011_09_26/2011_09_26_drive_0018_sync 202 l
+2011_09_26/2011_09_26_drive_0028_sync 390 r
+2011_09_30/2011_09_30_drive_0028_sync 337 r
+2011_10_03/2011_10_03_drive_0034_sync 446 r
+2011_09_26/2011_09_26_drive_0039_sync 77 r
+2011_09_26/2011_09_26_drive_0019_sync 170 r
+2011_10_03/2011_10_03_drive_0034_sync 480 l
+2011_09_30/2011_09_30_drive_0033_sync 893 r
+2011_09_30/2011_09_30_drive_0028_sync 4148 l
+2011_09_26/2011_09_26_drive_0014_sync 266 l
+2011_09_30/2011_09_30_drive_0028_sync 4223 r
+2011_09_30/2011_09_30_drive_0028_sync 2648 l
+2011_09_30/2011_09_30_drive_0028_sync 3722 r
+2011_10_03/2011_10_03_drive_0042_sync 1044 l
+2011_09_26/2011_09_26_drive_0022_sync 759 r
+2011_09_30/2011_09_30_drive_0028_sync 2582 r
+2011_09_30/2011_09_30_drive_0028_sync 1363 l
+2011_09_30/2011_09_30_drive_0020_sync 293 r
+2011_09_30/2011_09_30_drive_0034_sync 744 r
+2011_09_30/2011_09_30_drive_0028_sync 3991 r
+2011_09_30/2011_09_30_drive_0034_sync 87 l
+2011_09_26/2011_09_26_drive_0019_sync 159 r
+2011_09_30/2011_09_30_drive_0028_sync 832 r
+2011_09_26/2011_09_26_drive_0019_sync 372 l
+2011_09_26/2011_09_26_drive_0087_sync 258 r
+2011_10_03/2011_10_03_drive_0042_sync 483 l
+2011_09_30/2011_09_30_drive_0033_sync 1289 r
+2011_09_26/2011_09_26_drive_0005_sync 145 l
+2011_10_03/2011_10_03_drive_0034_sync 1680 l
+2011_09_26/2011_09_26_drive_0019_sync 117 l
+2011_09_30/2011_09_30_drive_0033_sync 470 r
+2011_09_30/2011_09_30_drive_0028_sync 4269 r
+2011_09_26/2011_09_26_drive_0019_sync 192 l
+2011_09_30/2011_09_30_drive_0033_sync 1219 l
+2011_09_29/2011_09_29_drive_0004_sync 27 l
+2011_09_26/2011_09_26_drive_0011_sync 196 l
+2011_09_30/2011_09_30_drive_0033_sync 276 l
+2011_09_26/2011_09_26_drive_0019_sync 322 r
+2011_09_26/2011_09_26_drive_0018_sync 107 l
+2011_09_30/2011_09_30_drive_0028_sync 2776 r
+2011_09_30/2011_09_30_drive_0033_sync 1561 r
+2011_10_03/2011_10_03_drive_0034_sync 484 r
+2011_09_30/2011_09_30_drive_0028_sync 3234 l
+2011_09_26/2011_09_26_drive_0087_sync 110 l
+2011_09_30/2011_09_30_drive_0034_sync 448 r
+2011_09_30/2011_09_30_drive_0028_sync 2843 r
+2011_10_03/2011_10_03_drive_0034_sync 3056 r
+2011_09_26/2011_09_26_drive_0015_sync 118 r
+2011_09_26/2011_09_26_drive_0051_sync 71 l
+2011_10_03/2011_10_03_drive_0042_sync 654 l
+2011_09_30/2011_09_30_drive_0020_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 426 r
+2011_09_26/2011_09_26_drive_0022_sync 769 r
+2011_09_26/2011_09_26_drive_0022_sync 64 r
+2011_09_30/2011_09_30_drive_0033_sync 598 l
+2011_10_03/2011_10_03_drive_0034_sync 3362 r
+2011_09_30/2011_09_30_drive_0028_sync 5118 l
+2011_09_30/2011_09_30_drive_0033_sync 629 r
+2011_09_30/2011_09_30_drive_0028_sync 585 l
+2011_09_30/2011_09_30_drive_0028_sync 428 l
+2011_09_30/2011_09_30_drive_0028_sync 1883 r
+2011_09_30/2011_09_30_drive_0028_sync 4408 l
+2011_09_30/2011_09_30_drive_0028_sync 2714 l
+2011_10_03/2011_10_03_drive_0034_sync 2224 r
+2011_09_30/2011_09_30_drive_0028_sync 1288 r
+2011_09_30/2011_09_30_drive_0033_sync 1558 r
+2011_09_26/2011_09_26_drive_0001_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 336 l
+2011_09_26/2011_09_26_drive_0057_sync 169 l
+2011_09_30/2011_09_30_drive_0034_sync 1086 r
+2011_09_30/2011_09_30_drive_0033_sync 208 r
+2011_09_26/2011_09_26_drive_0011_sync 200 r
+2011_09_30/2011_09_30_drive_0033_sync 808 r
+2011_09_26/2011_09_26_drive_0039_sync 162 r
+2011_09_30/2011_09_30_drive_0034_sync 46 r
+2011_09_26/2011_09_26_drive_0104_sync 201 r
+2011_09_26/2011_09_26_drive_0018_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 2589 l
+2011_09_30/2011_09_30_drive_0034_sync 1058 r
+2011_09_26/2011_09_26_drive_0028_sync 157 r
+2011_10_03/2011_10_03_drive_0042_sync 1104 l
+2011_10_03/2011_10_03_drive_0034_sync 4358 r
+2011_09_26/2011_09_26_drive_0070_sync 417 l
+2011_09_30/2011_09_30_drive_0020_sync 1030 r
+2011_09_26/2011_09_26_drive_0022_sync 383 l
+2011_09_26/2011_09_26_drive_0070_sync 341 l
+2011_09_30/2011_09_30_drive_0028_sync 3653 l
+2011_09_30/2011_09_30_drive_0034_sync 10 l
+2011_09_29/2011_09_29_drive_0026_sync 0 l
+2011_09_29/2011_09_29_drive_0026_sync 90 r
+2011_09_26/2011_09_26_drive_0061_sync 170 r
+2011_09_26/2011_09_26_drive_0032_sync 51 r
+2011_09_26/2011_09_26_drive_0019_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 212 l
+2011_09_30/2011_09_30_drive_0020_sync 183 l
+2011_10_03/2011_10_03_drive_0034_sync 978 r
+2011_09_26/2011_09_26_drive_0070_sync 210 r
+2011_09_30/2011_09_30_drive_0028_sync 1925 r
+2011_09_30/2011_09_30_drive_0033_sync 1545 l
+2011_09_30/2011_09_30_drive_0033_sync 70 r
+2011_09_26/2011_09_26_drive_0022_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 813 r
+2011_09_26/2011_09_26_drive_0039_sync 68 l
+2011_09_30/2011_09_30_drive_0028_sync 2755 l
+2011_09_26/2011_09_26_drive_0017_sync 69 r
+2011_09_26/2011_09_26_drive_0070_sync 409 r
+2011_09_26/2011_09_26_drive_0018_sync 163 l
+2011_09_30/2011_09_30_drive_0020_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 2100 r
+2011_09_30/2011_09_30_drive_0034_sync 1013 r
+2011_10_03/2011_10_03_drive_0034_sync 1117 l
+2011_09_26/2011_09_26_drive_0019_sync 250 l
+2011_09_30/2011_09_30_drive_0020_sync 1005 r
+2011_09_30/2011_09_30_drive_0033_sync 1279 r
+2011_09_30/2011_09_30_drive_0028_sync 189 r
+2011_10_03/2011_10_03_drive_0034_sync 1003 r
+2011_10_03/2011_10_03_drive_0034_sync 435 l
+2011_09_30/2011_09_30_drive_0033_sync 38 r
+2011_09_26/2011_09_26_drive_0022_sync 596 l
+2011_09_30/2011_09_30_drive_0028_sync 4975 l
+2011_09_30/2011_09_30_drive_0028_sync 521 r
+2011_10_03/2011_10_03_drive_0042_sync 932 l
+2011_09_30/2011_09_30_drive_0028_sync 727 l
+2011_09_26/2011_09_26_drive_0032_sync 120 l
+2011_09_30/2011_09_30_drive_0020_sync 899 l
+2011_09_26/2011_09_26_drive_0032_sync 384 l
+2011_09_30/2011_09_30_drive_0028_sync 2844 r
+2011_10_03/2011_10_03_drive_0034_sync 437 r
+2011_09_30/2011_09_30_drive_0033_sync 30 r
+2011_10_03/2011_10_03_drive_0034_sync 4178 r
+2011_09_26/2011_09_26_drive_0070_sync 211 l
+2011_10_03/2011_10_03_drive_0034_sync 3412 r
+2011_09_30/2011_09_30_drive_0033_sync 642 l
+2011_10_03/2011_10_03_drive_0034_sync 323 r
+2011_10_03/2011_10_03_drive_0034_sync 2689 l
+2011_10_03/2011_10_03_drive_0034_sync 3788 r
+2011_09_26/2011_09_26_drive_0039_sync 114 l
+2011_09_30/2011_09_30_drive_0033_sync 963 r
+2011_09_30/2011_09_30_drive_0020_sync 678 l
+2011_09_26/2011_09_26_drive_0015_sync 269 r
+2011_09_29/2011_09_29_drive_0004_sync 183 r
+2011_09_30/2011_09_30_drive_0020_sync 49 l
+2011_09_26/2011_09_26_drive_0104_sync 214 r
+2011_09_26/2011_09_26_drive_0019_sync 236 r
+2011_10_03/2011_10_03_drive_0034_sync 2701 l
+2011_09_26/2011_09_26_drive_0017_sync 88 l
+2011_09_30/2011_09_30_drive_0034_sync 865 l
+2011_10_03/2011_10_03_drive_0034_sync 2122 r
+2011_09_30/2011_09_30_drive_0020_sync 453 r
+2011_10_03/2011_10_03_drive_0034_sync 1029 l
+2011_09_26/2011_09_26_drive_0039_sync 136 r
+2011_10_03/2011_10_03_drive_0034_sync 2034 l
+2011_09_30/2011_09_30_drive_0028_sync 1453 r
+2011_09_26/2011_09_26_drive_0095_sync 97 r
+2011_09_30/2011_09_30_drive_0034_sync 906 r
+2011_09_26/2011_09_26_drive_0079_sync 7 r
+2011_09_26/2011_09_26_drive_0070_sync 120 r
+2011_09_30/2011_09_30_drive_0033_sync 1395 r
+2011_09_26/2011_09_26_drive_0061_sync 154 l
+2011_09_30/2011_09_30_drive_0028_sync 5149 r
+2011_09_26/2011_09_26_drive_0018_sync 58 l
+2011_10_03/2011_10_03_drive_0034_sync 869 l
+2011_09_30/2011_09_30_drive_0028_sync 1709 l
+2011_09_30/2011_09_30_drive_0034_sync 907 l
+2011_10_03/2011_10_03_drive_0042_sync 733 l
+2011_09_26/2011_09_26_drive_0019_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 4959 r
+2011_09_30/2011_09_30_drive_0028_sync 2824 l
+2011_09_30/2011_09_30_drive_0020_sync 622 l
+2011_09_26/2011_09_26_drive_0028_sync 308 r
+2011_10_03/2011_10_03_drive_0034_sync 3539 l
+2011_09_26/2011_09_26_drive_0019_sync 72 l
+2011_10_03/2011_10_03_drive_0034_sync 4369 l
+2011_10_03/2011_10_03_drive_0034_sync 58 l
+2011_09_26/2011_09_26_drive_0014_sync 91 l
+2011_09_26/2011_09_26_drive_0113_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 1767 l
+2011_09_30/2011_09_30_drive_0034_sync 896 l
+2011_09_30/2011_09_30_drive_0034_sync 29 r
+2011_09_26/2011_09_26_drive_0022_sync 448 r
+2011_09_30/2011_09_30_drive_0028_sync 4722 r
+2011_10_03/2011_10_03_drive_0034_sync 4094 r
+2011_10_03/2011_10_03_drive_0034_sync 948 l
+2011_09_30/2011_09_30_drive_0028_sync 1981 l
+2011_10_03/2011_10_03_drive_0034_sync 1507 r
+2011_09_30/2011_09_30_drive_0028_sync 402 r
+2011_09_26/2011_09_26_drive_0061_sync 370 r
+2011_09_30/2011_09_30_drive_0034_sync 1082 r
+2011_10_03/2011_10_03_drive_0034_sync 4393 l
+2011_09_30/2011_09_30_drive_0028_sync 1704 l
+2011_09_30/2011_09_30_drive_0033_sync 1030 l
+2011_09_29/2011_09_29_drive_0004_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 2513 r
+2011_10_03/2011_10_03_drive_0034_sync 4050 r
+2011_09_30/2011_09_30_drive_0020_sync 212 r
+2011_09_26/2011_09_26_drive_0039_sync 355 l
+2011_09_30/2011_09_30_drive_0020_sync 1056 l
+2011_09_26/2011_09_26_drive_0061_sync 630 r
+2011_09_26/2011_09_26_drive_0070_sync 87 l
+2011_10_03/2011_10_03_drive_0034_sync 686 l
+2011_09_26/2011_09_26_drive_0022_sync 430 r
+2011_09_26/2011_09_26_drive_0079_sync 93 r
+2011_09_26/2011_09_26_drive_0070_sync 186 r
+2011_09_30/2011_09_30_drive_0028_sync 1650 l
+2011_09_26/2011_09_26_drive_0017_sync 91 r
+2011_09_26/2011_09_26_drive_0018_sync 242 l
+2011_09_26/2011_09_26_drive_0032_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 2837 l
+2011_09_26/2011_09_26_drive_0057_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 1431 l
+2011_09_30/2011_09_30_drive_0020_sync 1050 l
+2011_09_26/2011_09_26_drive_0019_sync 15 l
+2011_09_30/2011_09_30_drive_0020_sync 906 l
+2011_10_03/2011_10_03_drive_0034_sync 3491 r
+2011_09_26/2011_09_26_drive_0087_sync 107 r
+2011_10_03/2011_10_03_drive_0034_sync 2155 l
+2011_09_26/2011_09_26_drive_0060_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 1802 r
+2011_10_03/2011_10_03_drive_0042_sync 1095 l
+2011_09_26/2011_09_26_drive_0022_sync 692 l
+2011_09_30/2011_09_30_drive_0028_sync 4513 r
+2011_10_03/2011_10_03_drive_0034_sync 4654 r
+2011_10_03/2011_10_03_drive_0034_sync 3245 r
+2011_10_03/2011_10_03_drive_0034_sync 2018 l
+2011_09_26/2011_09_26_drive_0022_sync 706 l
+2011_09_30/2011_09_30_drive_0020_sync 790 l
+2011_09_26/2011_09_26_drive_0028_sync 188 l
+2011_09_30/2011_09_30_drive_0028_sync 1221 r
+2011_09_30/2011_09_30_drive_0020_sync 381 l
+2011_09_26/2011_09_26_drive_0015_sync 268 l
+2011_09_30/2011_09_30_drive_0028_sync 3028 l
+2011_09_30/2011_09_30_drive_0028_sync 1872 l
+2011_09_30/2011_09_30_drive_0028_sync 3970 r
+2011_09_29/2011_09_29_drive_0004_sync 38 l
+2011_09_26/2011_09_26_drive_0028_sync 381 r
+2011_10_03/2011_10_03_drive_0042_sync 430 r
+2011_10_03/2011_10_03_drive_0034_sync 3684 r
+2011_09_26/2011_09_26_drive_0104_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 640 l
+2011_10_03/2011_10_03_drive_0034_sync 2537 l
+2011_09_30/2011_09_30_drive_0033_sync 1296 r
+2011_09_30/2011_09_30_drive_0028_sync 2820 l
+2011_09_26/2011_09_26_drive_0070_sync 394 r
+2011_09_26/2011_09_26_drive_0079_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 833 l
+2011_09_30/2011_09_30_drive_0028_sync 5111 l
+2011_09_30/2011_09_30_drive_0033_sync 519 l
+2011_09_26/2011_09_26_drive_0039_sync 49 l
+2011_09_30/2011_09_30_drive_0020_sync 904 l
+2011_09_30/2011_09_30_drive_0020_sync 84 r
+2011_09_30/2011_09_30_drive_0028_sync 3592 l
+2011_09_30/2011_09_30_drive_0034_sync 274 r
+2011_09_26/2011_09_26_drive_0060_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 3789 l
+2011_09_26/2011_09_26_drive_0087_sync 463 l
+2011_09_26/2011_09_26_drive_0015_sync 163 r
+2011_09_26/2011_09_26_drive_0039_sync 160 r
+2011_09_30/2011_09_30_drive_0028_sync 4553 l
+2011_09_26/2011_09_26_drive_0028_sync 254 l
+2011_09_26/2011_09_26_drive_0032_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 3889 r
+2011_09_30/2011_09_30_drive_0028_sync 1526 l
+2011_09_26/2011_09_26_drive_0061_sync 677 r
+2011_09_26/2011_09_26_drive_0104_sync 199 l
+2011_09_26/2011_09_26_drive_0015_sync 209 r
+2011_10_03/2011_10_03_drive_0042_sync 970 r
+2011_09_26/2011_09_26_drive_0057_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 1388 r
+2011_09_26/2011_09_26_drive_0018_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 4122 l
+2011_09_30/2011_09_30_drive_0028_sync 4259 r
+2011_09_30/2011_09_30_drive_0028_sync 4271 r
+2011_09_30/2011_09_30_drive_0028_sync 2599 r
+2011_09_26/2011_09_26_drive_0005_sync 19 l
+2011_09_30/2011_09_30_drive_0033_sync 958 r
+2011_09_26/2011_09_26_drive_0091_sync 174 l
+2011_09_26/2011_09_26_drive_0028_sync 179 l
+2011_09_26/2011_09_26_drive_0019_sync 62 r
+2011_09_26/2011_09_26_drive_0104_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 4659 l
+2011_09_30/2011_09_30_drive_0033_sync 937 r
+2011_10_03/2011_10_03_drive_0034_sync 3386 r
+2011_09_30/2011_09_30_drive_0028_sync 743 l
+2011_09_30/2011_09_30_drive_0028_sync 1835 l
+2011_09_26/2011_09_26_drive_0061_sync 268 r
+2011_09_30/2011_09_30_drive_0034_sync 130 l
+2011_09_30/2011_09_30_drive_0033_sync 1591 l
+2011_09_30/2011_09_30_drive_0033_sync 580 l
+2011_09_26/2011_09_26_drive_0014_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 2623 r
+2011_10_03/2011_10_03_drive_0034_sync 1368 r
+2011_09_30/2011_09_30_drive_0033_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 2978 l
+2011_09_26/2011_09_26_drive_0017_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 4199 l
+2011_10_03/2011_10_03_drive_0034_sync 3281 l
+2011_09_26/2011_09_26_drive_0014_sync 7 r
+2011_09_26/2011_09_26_drive_0035_sync 106 l
+2011_09_30/2011_09_30_drive_0034_sync 654 l
+2011_09_30/2011_09_30_drive_0033_sync 146 l
+2011_10_03/2011_10_03_drive_0034_sync 2489 r
+2011_09_28/2011_09_28_drive_0001_sync 45 r
+2011_09_26/2011_09_26_drive_0022_sync 305 l
+2011_10_03/2011_10_03_drive_0034_sync 870 r
+2011_09_30/2011_09_30_drive_0028_sync 4978 r
+2011_09_30/2011_09_30_drive_0034_sync 493 r
+2011_09_26/2011_09_26_drive_0032_sync 304 r
+2011_09_26/2011_09_26_drive_0061_sync 507 r
+2011_09_26/2011_09_26_drive_0019_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 3878 r
+2011_09_26/2011_09_26_drive_0095_sync 207 l
+2011_09_30/2011_09_30_drive_0034_sync 1146 l
+2011_10_03/2011_10_03_drive_0042_sync 568 r
+2011_09_30/2011_09_30_drive_0028_sync 3144 r
+2011_09_30/2011_09_30_drive_0028_sync 3559 r
+2011_09_30/2011_09_30_drive_0020_sync 411 r
+2011_09_30/2011_09_30_drive_0028_sync 709 l
+2011_10_03/2011_10_03_drive_0034_sync 873 r
+2011_09_26/2011_09_26_drive_0104_sync 274 r
+2011_09_26/2011_09_26_drive_0057_sync 324 r
+2011_09_30/2011_09_30_drive_0034_sync 1004 l
+2011_09_30/2011_09_30_drive_0020_sync 191 r
+2011_09_26/2011_09_26_drive_0087_sync 483 l
+2011_09_26/2011_09_26_drive_0015_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 3302 r
+2011_09_30/2011_09_30_drive_0028_sync 4216 r
+2011_09_30/2011_09_30_drive_0028_sync 2683 l
+2011_09_29/2011_09_29_drive_0004_sync 149 l
+2011_10_03/2011_10_03_drive_0034_sync 132 r
+2011_09_30/2011_09_30_drive_0034_sync 93 l
+2011_09_30/2011_09_30_drive_0034_sync 744 l
+2011_09_30/2011_09_30_drive_0020_sync 1066 l
+2011_09_30/2011_09_30_drive_0028_sync 2991 l
+2011_09_30/2011_09_30_drive_0028_sync 996 l
+2011_09_26/2011_09_26_drive_0087_sync 338 r
+2011_09_26/2011_09_26_drive_0095_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 1765 r
+2011_09_30/2011_09_30_drive_0034_sync 971 r
+2011_10_03/2011_10_03_drive_0042_sync 408 r
+2011_10_03/2011_10_03_drive_0034_sync 1288 l
+2011_09_30/2011_09_30_drive_0034_sync 1206 l
+2011_09_30/2011_09_30_drive_0028_sync 4514 l
+2011_09_26/2011_09_26_drive_0091_sync 215 l
+2011_09_30/2011_09_30_drive_0028_sync 3396 r
+2011_10_03/2011_10_03_drive_0034_sync 1375 l
+2011_09_30/2011_09_30_drive_0033_sync 235 l
+2011_09_30/2011_09_30_drive_0028_sync 2983 l
+2011_10_03/2011_10_03_drive_0042_sync 14 r
+2011_09_26/2011_09_26_drive_0051_sync 227 l
+2011_09_26/2011_09_26_drive_0022_sync 353 l
+2011_09_26/2011_09_26_drive_0091_sync 34 r
+2011_09_26/2011_09_26_drive_0019_sync 438 r
+2011_09_30/2011_09_30_drive_0028_sync 3406 l
+2011_09_26/2011_09_26_drive_0015_sync 99 r
+2011_09_30/2011_09_30_drive_0020_sync 492 l
+2011_09_26/2011_09_26_drive_0091_sync 215 r
+2011_09_30/2011_09_30_drive_0033_sync 1054 l
+2011_09_30/2011_09_30_drive_0020_sync 871 r
+2011_10_03/2011_10_03_drive_0034_sync 3245 l
+2011_09_30/2011_09_30_drive_0028_sync 3233 l
+2011_09_30/2011_09_30_drive_0028_sync 2816 r
+2011_09_26/2011_09_26_drive_0028_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 3774 r
+2011_09_26/2011_09_26_drive_0051_sync 398 r
+2011_09_30/2011_09_30_drive_0028_sync 391 r
+2011_09_30/2011_09_30_drive_0033_sync 1527 l
+2011_09_30/2011_09_30_drive_0028_sync 4473 l
+2011_10_03/2011_10_03_drive_0034_sync 4649 r
+2011_10_03/2011_10_03_drive_0034_sync 2514 l
+2011_09_30/2011_09_30_drive_0028_sync 4851 r
+2011_09_26/2011_09_26_drive_0001_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 3643 l
+2011_09_30/2011_09_30_drive_0028_sync 4641 l
+2011_09_26/2011_09_26_drive_0028_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 3088 l
+2011_09_29/2011_09_29_drive_0026_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1940 l
+2011_09_26/2011_09_26_drive_0087_sync 250 r
+2011_09_30/2011_09_30_drive_0034_sync 560 r
+2011_10_03/2011_10_03_drive_0042_sync 621 r
+2011_09_26/2011_09_26_drive_0039_sync 287 r
+2011_09_30/2011_09_30_drive_0033_sync 146 r
+2011_09_26/2011_09_26_drive_0087_sync 520 l
+2011_10_03/2011_10_03_drive_0034_sync 3243 r
+2011_09_26/2011_09_26_drive_0015_sync 32 l
+2011_09_30/2011_09_30_drive_0028_sync 2086 l
+2011_09_26/2011_09_26_drive_0032_sync 22 l
+2011_09_26/2011_09_26_drive_0051_sync 138 l
+2011_10_03/2011_10_03_drive_0034_sync 1151 r
+2011_09_30/2011_09_30_drive_0034_sync 1160 l
+2011_09_26/2011_09_26_drive_0022_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 904 r
+2011_09_26/2011_09_26_drive_0095_sync 22 l
+2011_09_30/2011_09_30_drive_0033_sync 1411 l
+2011_10_03/2011_10_03_drive_0034_sync 403 l
+2011_09_30/2011_09_30_drive_0028_sync 539 l
+2011_09_28/2011_09_28_drive_0001_sync 74 r
+2011_10_03/2011_10_03_drive_0042_sync 130 l
+2011_10_03/2011_10_03_drive_0034_sync 1443 l
+2011_09_26/2011_09_26_drive_0019_sync 328 r
+2011_09_30/2011_09_30_drive_0020_sync 447 l
+2011_09_30/2011_09_30_drive_0028_sync 2816 l
+2011_10_03/2011_10_03_drive_0042_sync 508 l
+2011_09_26/2011_09_26_drive_0022_sync 514 r
+2011_10_03/2011_10_03_drive_0042_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 4387 l
+2011_10_03/2011_10_03_drive_0034_sync 1416 l
+2011_09_29/2011_09_29_drive_0004_sync 66 r
+2011_10_03/2011_10_03_drive_0034_sync 394 r
+2011_09_30/2011_09_30_drive_0028_sync 236 l
+2011_10_03/2011_10_03_drive_0034_sync 2969 l
+2011_09_26/2011_09_26_drive_0057_sync 66 l
+2011_09_30/2011_09_30_drive_0028_sync 2817 r
+2011_10_03/2011_10_03_drive_0034_sync 3641 r
+2011_10_03/2011_10_03_drive_0034_sync 1948 r
+2011_10_03/2011_10_03_drive_0034_sync 3936 l
+2011_10_03/2011_10_03_drive_0034_sync 4116 r
+2011_09_26/2011_09_26_drive_0005_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 3865 l
+2011_10_03/2011_10_03_drive_0034_sync 2649 r
+2011_09_30/2011_09_30_drive_0028_sync 1857 l
+2011_09_30/2011_09_30_drive_0033_sync 395 r
+2011_09_26/2011_09_26_drive_0014_sync 297 r
+2011_10_03/2011_10_03_drive_0034_sync 1277 l
+2011_09_26/2011_09_26_drive_0061_sync 144 l
+2011_09_30/2011_09_30_drive_0028_sync 762 r
+2011_09_30/2011_09_30_drive_0028_sync 4246 l
+2011_10_03/2011_10_03_drive_0034_sync 2420 l
+2011_09_26/2011_09_26_drive_0014_sync 193 r
+2011_09_30/2011_09_30_drive_0028_sync 3123 l
+2011_09_26/2011_09_26_drive_0015_sync 250 l
+2011_09_26/2011_09_26_drive_0019_sync 92 r
+2011_09_30/2011_09_30_drive_0028_sync 2814 r
+2011_10_03/2011_10_03_drive_0034_sync 2989 r
+2011_10_03/2011_10_03_drive_0034_sync 2698 r
+2011_10_03/2011_10_03_drive_0034_sync 1879 r
+2011_09_26/2011_09_26_drive_0051_sync 28 l
+2011_09_26/2011_09_26_drive_0091_sync 246 r
+2011_10_03/2011_10_03_drive_0034_sync 247 l
+2011_09_30/2011_09_30_drive_0028_sync 1085 l
+2011_10_03/2011_10_03_drive_0034_sync 2825 r
+2011_09_26/2011_09_26_drive_0061_sync 454 r
+2011_09_26/2011_09_26_drive_0018_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 613 r
+2011_09_30/2011_09_30_drive_0028_sync 927 r
+2011_09_26/2011_09_26_drive_0061_sync 471 l
+2011_09_30/2011_09_30_drive_0028_sync 4104 r
+2011_09_30/2011_09_30_drive_0034_sync 729 l
+2011_09_30/2011_09_30_drive_0034_sync 677 l
+2011_09_26/2011_09_26_drive_0014_sync 224 r
+2011_09_30/2011_09_30_drive_0033_sync 1222 l
+2011_10_03/2011_10_03_drive_0034_sync 1836 r
+2011_09_30/2011_09_30_drive_0033_sync 494 l
+2011_09_30/2011_09_30_drive_0028_sync 5094 l
+2011_09_28/2011_09_28_drive_0001_sync 54 l
+2011_09_30/2011_09_30_drive_0034_sync 620 r
+2011_09_26/2011_09_26_drive_0019_sync 118 r
+2011_09_26/2011_09_26_drive_0087_sync 558 l
+2011_09_30/2011_09_30_drive_0033_sync 256 l
+2011_09_30/2011_09_30_drive_0028_sync 3147 l
+2011_10_03/2011_10_03_drive_0034_sync 2709 l
+2011_09_30/2011_09_30_drive_0020_sync 854 l
+2011_09_30/2011_09_30_drive_0028_sync 5073 l
+2011_09_30/2011_09_30_drive_0034_sync 13 l
+2011_10_03/2011_10_03_drive_0042_sync 434 l
+2011_09_30/2011_09_30_drive_0028_sync 4561 r
+2011_09_30/2011_09_30_drive_0028_sync 2717 l
+2011_09_26/2011_09_26_drive_0095_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 1075 r
+2011_10_03/2011_10_03_drive_0034_sync 3745 r
+2011_10_03/2011_10_03_drive_0034_sync 933 r
+2011_09_26/2011_09_26_drive_0019_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 2744 r
+2011_09_26/2011_09_26_drive_0028_sync 113 l
+2011_09_26/2011_09_26_drive_0039_sync 11 r
+2011_09_26/2011_09_26_drive_0028_sync 331 l
+2011_10_03/2011_10_03_drive_0034_sync 1211 r
+2011_09_26/2011_09_26_drive_0061_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 3379 r
+2011_09_30/2011_09_30_drive_0033_sync 474 l
+2011_09_26/2011_09_26_drive_0018_sync 78 l
+2011_09_26/2011_09_26_drive_0019_sync 222 r
+2011_10_03/2011_10_03_drive_0042_sync 72 l
+2011_09_30/2011_09_30_drive_0028_sync 666 l
+2011_10_03/2011_10_03_drive_0034_sync 4374 l
+2011_09_26/2011_09_26_drive_0070_sync 247 r
+2011_09_30/2011_09_30_drive_0033_sync 474 r
+2011_09_30/2011_09_30_drive_0028_sync 3473 r
+2011_10_03/2011_10_03_drive_0042_sync 537 r
+2011_09_26/2011_09_26_drive_0022_sync 297 r
+2011_10_03/2011_10_03_drive_0034_sync 542 r
+2011_10_03/2011_10_03_drive_0034_sync 1425 l
+2011_09_30/2011_09_30_drive_0028_sync 3856 r
+2011_09_26/2011_09_26_drive_0095_sync 251 l
+2011_09_26/2011_09_26_drive_0018_sync 254 r
+2011_09_26/2011_09_26_drive_0061_sync 255 l
+2011_09_30/2011_09_30_drive_0034_sync 733 l
+2011_09_26/2011_09_26_drive_0032_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 3359 r
+2011_09_30/2011_09_30_drive_0020_sync 277 l
+2011_10_03/2011_10_03_drive_0034_sync 3173 r
+2011_09_30/2011_09_30_drive_0028_sync 4323 l
+2011_09_26/2011_09_26_drive_0019_sync 5 r
+2011_09_30/2011_09_30_drive_0034_sync 1031 l
+2011_09_26/2011_09_26_drive_0079_sync 4 l
+2011_09_26/2011_09_26_drive_0022_sync 207 r
+2011_09_26/2011_09_26_drive_0014_sync 255 r
+2011_09_30/2011_09_30_drive_0028_sync 3930 l
+2011_09_30/2011_09_30_drive_0028_sync 4939 l
+2011_10_03/2011_10_03_drive_0042_sync 464 r
+2011_09_30/2011_09_30_drive_0028_sync 142 l
+2011_09_30/2011_09_30_drive_0034_sync 968 l
+2011_10_03/2011_10_03_drive_0034_sync 3432 l
+2011_09_30/2011_09_30_drive_0028_sync 4106 l
+2011_09_30/2011_09_30_drive_0020_sync 46 l
+2011_09_26/2011_09_26_drive_0015_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 2390 l
+2011_10_03/2011_10_03_drive_0042_sync 946 r
+2011_10_03/2011_10_03_drive_0034_sync 1257 l
+2011_09_26/2011_09_26_drive_0014_sync 278 l
+2011_09_30/2011_09_30_drive_0033_sync 182 l
+2011_09_26/2011_09_26_drive_0018_sync 177 l
+2011_10_03/2011_10_03_drive_0034_sync 1872 r
+2011_09_26/2011_09_26_drive_0017_sync 3 r
+2011_10_03/2011_10_03_drive_0034_sync 4084 l
+2011_09_26/2011_09_26_drive_0104_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 2872 l
+2011_10_03/2011_10_03_drive_0034_sync 1004 r
+2011_10_03/2011_10_03_drive_0042_sync 373 r
+2011_09_26/2011_09_26_drive_0060_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 3966 l
+2011_09_30/2011_09_30_drive_0033_sync 667 l
+2011_09_26/2011_09_26_drive_0061_sync 327 r
+2011_10_03/2011_10_03_drive_0042_sync 1075 r
+2011_10_03/2011_10_03_drive_0034_sync 2851 r
+2011_09_30/2011_09_30_drive_0028_sync 2921 l
+2011_09_26/2011_09_26_drive_0032_sync 121 l
+2011_09_30/2011_09_30_drive_0028_sync 1759 l
+2011_09_30/2011_09_30_drive_0028_sync 839 r
+2011_09_26/2011_09_26_drive_0091_sync 10 r
+2011_09_26/2011_09_26_drive_0087_sync 180 l
+2011_09_26/2011_09_26_drive_0039_sync 193 l
+2011_09_26/2011_09_26_drive_0061_sync 320 l
+2011_09_30/2011_09_30_drive_0028_sync 1090 r
+2011_09_30/2011_09_30_drive_0033_sync 1214 l
+2011_09_30/2011_09_30_drive_0033_sync 1392 r
+2011_09_30/2011_09_30_drive_0034_sync 838 r
+2011_09_30/2011_09_30_drive_0033_sync 994 l
+2011_09_30/2011_09_30_drive_0028_sync 1793 r
+2011_09_30/2011_09_30_drive_0034_sync 405 r
+2011_09_30/2011_09_30_drive_0028_sync 659 r
+2011_10_03/2011_10_03_drive_0034_sync 2655 r
+2011_09_30/2011_09_30_drive_0028_sync 1950 r
+2011_10_03/2011_10_03_drive_0034_sync 3807 r
+2011_09_30/2011_09_30_drive_0028_sync 2447 l
+2011_09_30/2011_09_30_drive_0028_sync 1874 r
+2011_09_30/2011_09_30_drive_0028_sync 1508 r
+2011_09_26/2011_09_26_drive_0091_sync 336 r
+2011_09_26/2011_09_26_drive_0051_sync 53 r
+2011_09_26/2011_09_26_drive_0018_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 3260 l
+2011_09_26/2011_09_26_drive_0022_sync 309 l
+2011_09_26/2011_09_26_drive_0070_sync 296 r
+2011_09_26/2011_09_26_drive_0015_sync 154 l
+2011_09_30/2011_09_30_drive_0028_sync 1953 r
+2011_09_29/2011_09_29_drive_0026_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 1 l
+2011_09_26/2011_09_26_drive_0070_sync 320 l
+2011_09_30/2011_09_30_drive_0028_sync 2037 r
+2011_09_30/2011_09_30_drive_0020_sync 293 l
+2011_09_26/2011_09_26_drive_0051_sync 402 l
+2011_09_26/2011_09_26_drive_0018_sync 190 l
+2011_09_30/2011_09_30_drive_0033_sync 540 r
+2011_09_26/2011_09_26_drive_0035_sync 52 r
+2011_09_30/2011_09_30_drive_0034_sync 964 r
+2011_09_30/2011_09_30_drive_0034_sync 1196 l
+2011_10_03/2011_10_03_drive_0034_sync 788 r
+2011_10_03/2011_10_03_drive_0042_sync 875 l
+2011_09_26/2011_09_26_drive_0017_sync 90 r
+2011_09_30/2011_09_30_drive_0033_sync 199 r
+2011_09_30/2011_09_30_drive_0033_sync 898 l
+2011_09_30/2011_09_30_drive_0028_sync 1921 l
+2011_10_03/2011_10_03_drive_0034_sync 299 l
+2011_09_26/2011_09_26_drive_0061_sync 55 r
+2011_10_03/2011_10_03_drive_0042_sync 1002 r
+2011_10_03/2011_10_03_drive_0042_sync 187 l
+2011_09_26/2011_09_26_drive_0032_sync 113 r
+2011_09_26/2011_09_26_drive_0022_sync 641 l
+2011_09_30/2011_09_30_drive_0034_sync 78 r
+2011_09_26/2011_09_26_drive_0095_sync 156 r
+2011_09_30/2011_09_30_drive_0020_sync 467 r
+2011_09_30/2011_09_30_drive_0028_sync 3145 r
+2011_09_30/2011_09_30_drive_0034_sync 399 r
+2011_09_30/2011_09_30_drive_0033_sync 740 l
+2011_09_26/2011_09_26_drive_0011_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 872 r
+2011_09_30/2011_09_30_drive_0028_sync 2585 l
+2011_09_30/2011_09_30_drive_0020_sync 254 l
+2011_10_03/2011_10_03_drive_0034_sync 2938 r
+2011_10_03/2011_10_03_drive_0042_sync 566 r
+2011_09_30/2011_09_30_drive_0028_sync 3651 r
+2011_09_26/2011_09_26_drive_0022_sync 626 r
+2011_10_03/2011_10_03_drive_0034_sync 2618 l
+2011_09_30/2011_09_30_drive_0033_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 2625 l
+2011_09_30/2011_09_30_drive_0033_sync 510 l
+2011_09_26/2011_09_26_drive_0015_sync 50 r
+2011_09_26/2011_09_26_drive_0001_sync 64 r
+2011_09_30/2011_09_30_drive_0034_sync 651 r
+2011_09_30/2011_09_30_drive_0034_sync 926 r
+2011_09_26/2011_09_26_drive_0091_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 3575 l
+2011_09_26/2011_09_26_drive_0019_sync 420 r
+2011_09_26/2011_09_26_drive_0014_sync 263 r
+2011_09_30/2011_09_30_drive_0028_sync 1913 l
+2011_09_29/2011_09_29_drive_0004_sync 322 r
+2011_09_26/2011_09_26_drive_0022_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 3024 r
+2011_09_30/2011_09_30_drive_0020_sync 65 r
+2011_09_26/2011_09_26_drive_0057_sync 332 r
+2011_09_30/2011_09_30_drive_0034_sync 925 r
+2011_09_30/2011_09_30_drive_0028_sync 4365 r
+2011_09_26/2011_09_26_drive_0087_sync 199 r
+2011_09_26/2011_09_26_drive_0057_sync 275 l
+2011_10_03/2011_10_03_drive_0034_sync 3946 l
+2011_09_30/2011_09_30_drive_0034_sync 740 r
+2011_09_30/2011_09_30_drive_0028_sync 5071 r
+2011_09_26/2011_09_26_drive_0087_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 2234 r
+2011_09_26/2011_09_26_drive_0070_sync 362 l
+2011_09_26/2011_09_26_drive_0032_sync 111 r
+2011_09_26/2011_09_26_drive_0061_sync 624 r
+2011_09_30/2011_09_30_drive_0033_sync 35 r
+2011_10_03/2011_10_03_drive_0034_sync 3136 l
+2011_09_26/2011_09_26_drive_0104_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 2137 r
+2011_09_30/2011_09_30_drive_0028_sync 4929 l
+2011_09_26/2011_09_26_drive_0039_sync 328 l
+2011_09_26/2011_09_26_drive_0014_sync 67 r
+2011_09_26/2011_09_26_drive_0095_sync 146 l
+2011_10_03/2011_10_03_drive_0034_sync 1854 r
+2011_09_30/2011_09_30_drive_0028_sync 2225 l
+2011_09_26/2011_09_26_drive_0028_sync 428 l
+2011_09_26/2011_09_26_drive_0039_sync 295 l
+2011_09_30/2011_09_30_drive_0028_sync 1878 r
+2011_09_30/2011_09_30_drive_0033_sync 989 l
+2011_09_26/2011_09_26_drive_0095_sync 98 l
+2011_09_26/2011_09_26_drive_0051_sync 75 r
+2011_09_26/2011_09_26_drive_0022_sync 752 r
+2011_10_03/2011_10_03_drive_0042_sync 384 r
+2011_09_30/2011_09_30_drive_0028_sync 4535 r
+2011_09_26/2011_09_26_drive_0104_sync 155 r
+2011_09_30/2011_09_30_drive_0028_sync 2022 l
+2011_09_26/2011_09_26_drive_0095_sync 114 r
+2011_09_26/2011_09_26_drive_0022_sync 86 r
+2011_09_30/2011_09_30_drive_0033_sync 944 r
+2011_09_30/2011_09_30_drive_0033_sync 370 r
+2011_09_30/2011_09_30_drive_0028_sync 2189 r
+2011_09_30/2011_09_30_drive_0033_sync 1206 l
+2011_09_26/2011_09_26_drive_0019_sync 242 r
+2011_09_30/2011_09_30_drive_0028_sync 321 r
+2011_09_30/2011_09_30_drive_0034_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 1678 l
+2011_10_03/2011_10_03_drive_0034_sync 1752 l
+2011_09_26/2011_09_26_drive_0057_sync 354 l
+2011_09_26/2011_09_26_drive_0070_sync 336 r
+2011_10_03/2011_10_03_drive_0034_sync 1198 r
+2011_09_30/2011_09_30_drive_0028_sync 3866 r
+2011_09_30/2011_09_30_drive_0020_sync 1059 r
+2011_09_30/2011_09_30_drive_0033_sync 1176 r
+2011_09_26/2011_09_26_drive_0057_sync 227 l
+2011_09_26/2011_09_26_drive_0061_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 2149 l
+2011_09_30/2011_09_30_drive_0033_sync 526 l
+2011_09_26/2011_09_26_drive_0022_sync 95 l
+2011_10_03/2011_10_03_drive_0034_sync 2449 r
+2011_09_30/2011_09_30_drive_0020_sync 179 l
+2011_09_26/2011_09_26_drive_0087_sync 407 r
+2011_09_30/2011_09_30_drive_0028_sync 2114 l
+2011_10_03/2011_10_03_drive_0034_sync 2547 l
+2011_09_26/2011_09_26_drive_0087_sync 559 r
+2011_09_30/2011_09_30_drive_0028_sync 625 r
+2011_10_03/2011_10_03_drive_0034_sync 1881 r
+2011_09_26/2011_09_26_drive_0032_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 61 l
+2011_09_26/2011_09_26_drive_0028_sync 169 r
+2011_09_26/2011_09_26_drive_0019_sync 217 r
+2011_09_30/2011_09_30_drive_0034_sync 1048 r
+2011_09_26/2011_09_26_drive_0051_sync 41 l
+2011_09_30/2011_09_30_drive_0028_sync 1601 r
+2011_09_30/2011_09_30_drive_0028_sync 2058 l
+2011_10_03/2011_10_03_drive_0042_sync 742 l
+2011_09_26/2011_09_26_drive_0028_sync 198 r
+2011_10_03/2011_10_03_drive_0034_sync 126 r
+2011_10_03/2011_10_03_drive_0042_sync 209 r
+2011_09_26/2011_09_26_drive_0015_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 2315 r
+2011_09_30/2011_09_30_drive_0028_sync 3246 r
+2011_09_26/2011_09_26_drive_0019_sync 20 l
+2011_09_26/2011_09_26_drive_0061_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 3441 r
+2011_09_30/2011_09_30_drive_0034_sync 789 l
+2011_09_30/2011_09_30_drive_0028_sync 2191 r
+2011_09_30/2011_09_30_drive_0033_sync 501 r
+2011_10_03/2011_10_03_drive_0034_sync 3776 l
+2011_09_26/2011_09_26_drive_0015_sync 290 r
+2011_10_03/2011_10_03_drive_0034_sync 902 l
+2011_09_30/2011_09_30_drive_0020_sync 311 l
+2011_09_30/2011_09_30_drive_0034_sync 331 r
+2011_09_30/2011_09_30_drive_0028_sync 434 r
+2011_09_30/2011_09_30_drive_0028_sync 2997 l
+2011_09_26/2011_09_26_drive_0039_sync 0 l
+2011_09_30/2011_09_30_drive_0033_sync 1139 r
+2011_09_30/2011_09_30_drive_0034_sync 164 r
+2011_09_26/2011_09_26_drive_0014_sync 112 r
+2011_09_26/2011_09_26_drive_0019_sync 148 l
+2011_10_03/2011_10_03_drive_0034_sync 1384 l
+2011_09_29/2011_09_29_drive_0026_sync 5 r
+2011_09_30/2011_09_30_drive_0034_sync 865 r
+2011_09_26/2011_09_26_drive_0087_sync 718 r
+2011_09_30/2011_09_30_drive_0033_sync 1173 l
+2011_10_03/2011_10_03_drive_0034_sync 4223 r
+2011_09_26/2011_09_26_drive_0022_sync 365 l
+2011_09_26/2011_09_26_drive_0051_sync 243 l
+2011_09_26/2011_09_26_drive_0051_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 930 l
+2011_09_26/2011_09_26_drive_0018_sync 5 l
+2011_09_30/2011_09_30_drive_0034_sync 786 r
+2011_09_26/2011_09_26_drive_0061_sync 323 l
+2011_10_03/2011_10_03_drive_0042_sync 1117 l
+2011_09_30/2011_09_30_drive_0033_sync 1491 l
+2011_09_26/2011_09_26_drive_0087_sync 586 r
+2011_09_30/2011_09_30_drive_0020_sync 359 l
+2011_09_30/2011_09_30_drive_0033_sync 1289 l
+2011_09_30/2011_09_30_drive_0033_sync 972 l
+2011_10_03/2011_10_03_drive_0034_sync 4545 r
+2011_09_26/2011_09_26_drive_0070_sync 330 l
+2011_09_30/2011_09_30_drive_0028_sync 2121 l
+2011_09_26/2011_09_26_drive_0061_sync 119 r
+2011_09_26/2011_09_26_drive_0104_sync 197 l
+2011_09_26/2011_09_26_drive_0022_sync 777 l
+2011_09_26/2011_09_26_drive_0022_sync 289 r
+2011_09_26/2011_09_26_drive_0051_sync 318 l
+2011_10_03/2011_10_03_drive_0042_sync 732 r
+2011_10_03/2011_10_03_drive_0034_sync 886 l
+2011_10_03/2011_10_03_drive_0034_sync 2888 r
+2011_09_30/2011_09_30_drive_0020_sync 953 r
+2011_09_30/2011_09_30_drive_0028_sync 4191 r
+2011_09_30/2011_09_30_drive_0034_sync 878 r
+2011_09_26/2011_09_26_drive_0028_sync 43 l
+2011_09_30/2011_09_30_drive_0034_sync 971 l
+2011_09_26/2011_09_26_drive_0019_sync 187 l
+2011_09_29/2011_09_29_drive_0004_sync 289 r
+2011_09_26/2011_09_26_drive_0014_sync 129 r
+2011_09_30/2011_09_30_drive_0028_sync 4484 l
+2011_09_30/2011_09_30_drive_0020_sync 820 r
+2011_09_26/2011_09_26_drive_0095_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 2789 r
+2011_10_03/2011_10_03_drive_0034_sync 2667 l
+2011_09_26/2011_09_26_drive_0035_sync 35 l
+2011_09_26/2011_09_26_drive_0087_sync 701 r
+2011_10_03/2011_10_03_drive_0034_sync 2146 l
+2011_09_30/2011_09_30_drive_0028_sync 3422 l
+2011_09_30/2011_09_30_drive_0028_sync 660 r
+2011_10_03/2011_10_03_drive_0034_sync 3289 r
+2011_09_30/2011_09_30_drive_0028_sync 2222 r
+2011_09_26/2011_09_26_drive_0051_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 4177 l
+2011_09_30/2011_09_30_drive_0028_sync 4362 r
+2011_10_03/2011_10_03_drive_0042_sync 594 l
+2011_10_03/2011_10_03_drive_0034_sync 3176 r
+2011_10_03/2011_10_03_drive_0034_sync 4378 r
+2011_10_03/2011_10_03_drive_0042_sync 148 l
+2011_09_29/2011_09_29_drive_0004_sync 35 l
+2011_09_30/2011_09_30_drive_0028_sync 3960 r
+2011_09_26/2011_09_26_drive_0015_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 1002 l
+2011_10_03/2011_10_03_drive_0034_sync 4244 l
+2011_09_26/2011_09_26_drive_0061_sync 337 r
+2011_09_30/2011_09_30_drive_0034_sync 753 r
+2011_09_26/2011_09_26_drive_0104_sync 25 r
+2011_09_30/2011_09_30_drive_0028_sync 2901 l
+2011_09_30/2011_09_30_drive_0028_sync 4034 r
+2011_09_30/2011_09_30_drive_0020_sync 739 l
+2011_09_30/2011_09_30_drive_0020_sync 989 l
+2011_10_03/2011_10_03_drive_0042_sync 150 l
+2011_09_30/2011_09_30_drive_0028_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 4539 r
+2011_09_29/2011_09_29_drive_0026_sync 84 l
+2011_09_26/2011_09_26_drive_0070_sync 156 l
+2011_09_26/2011_09_26_drive_0095_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 436 l
+2011_09_30/2011_09_30_drive_0028_sync 1119 l
+2011_09_26/2011_09_26_drive_0051_sync 250 l
+2011_10_03/2011_10_03_drive_0042_sync 1084 l
+2011_09_30/2011_09_30_drive_0034_sync 730 r
+2011_09_30/2011_09_30_drive_0034_sync 1090 r
+2011_09_30/2011_09_30_drive_0033_sync 1403 l
+2011_09_30/2011_09_30_drive_0033_sync 71 r
+2011_09_26/2011_09_26_drive_0015_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 2449 l
+2011_10_03/2011_10_03_drive_0034_sync 4551 l
+2011_10_03/2011_10_03_drive_0042_sync 1046 l
+2011_09_30/2011_09_30_drive_0028_sync 886 l
+2011_09_26/2011_09_26_drive_0095_sync 147 l
+2011_09_26/2011_09_26_drive_0061_sync 543 r
+2011_10_03/2011_10_03_drive_0034_sync 171 r
+2011_09_30/2011_09_30_drive_0028_sync 1556 r
+2011_09_30/2011_09_30_drive_0033_sync 207 l
+2011_09_30/2011_09_30_drive_0028_sync 4577 r
+2011_09_30/2011_09_30_drive_0028_sync 3609 l
+2011_09_26/2011_09_26_drive_0104_sync 230 l
+2011_09_30/2011_09_30_drive_0034_sync 847 l
+2011_09_30/2011_09_30_drive_0028_sync 2493 l
+2011_09_30/2011_09_30_drive_0028_sync 4029 l
+2011_10_03/2011_10_03_drive_0034_sync 1601 l
+2011_09_30/2011_09_30_drive_0028_sync 2911 r
+2011_10_03/2011_10_03_drive_0034_sync 1362 l
+2011_09_26/2011_09_26_drive_0022_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 1244 r
+2011_10_03/2011_10_03_drive_0034_sync 1381 r
+2011_09_29/2011_09_29_drive_0026_sync 13 r
+2011_09_26/2011_09_26_drive_0061_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 3672 l
+2011_09_30/2011_09_30_drive_0028_sync 828 r
+2011_10_03/2011_10_03_drive_0034_sync 1146 l
+2011_09_26/2011_09_26_drive_0061_sync 559 r
+2011_09_30/2011_09_30_drive_0028_sync 3428 r
+2011_09_30/2011_09_30_drive_0034_sync 983 l
+2011_10_03/2011_10_03_drive_0034_sync 1559 l
+2011_09_30/2011_09_30_drive_0028_sync 416 l
+2011_09_26/2011_09_26_drive_0057_sync 354 r
+2011_10_03/2011_10_03_drive_0034_sync 1143 l
+2011_09_30/2011_09_30_drive_0034_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 2300 r
+2011_09_26/2011_09_26_drive_0011_sync 83 l
+2011_09_26/2011_09_26_drive_0019_sync 76 l
+2011_10_03/2011_10_03_drive_0034_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 377 l
+2011_09_26/2011_09_26_drive_0028_sync 367 r
+2011_10_03/2011_10_03_drive_0042_sync 470 l
+2011_09_29/2011_09_29_drive_0004_sync 164 l
+2011_09_26/2011_09_26_drive_0014_sync 138 r
+2011_09_30/2011_09_30_drive_0034_sync 104 l
+2011_09_30/2011_09_30_drive_0028_sync 4092 r
+2011_09_26/2011_09_26_drive_0022_sync 191 l
+2011_09_30/2011_09_30_drive_0028_sync 2821 r
+2011_09_29/2011_09_29_drive_0004_sync 54 r
+2011_09_30/2011_09_30_drive_0028_sync 4131 r
+2011_09_30/2011_09_30_drive_0033_sync 1411 r
+2011_09_30/2011_09_30_drive_0028_sync 2391 l
+2011_09_30/2011_09_30_drive_0028_sync 1413 l
+2011_09_30/2011_09_30_drive_0028_sync 3354 l
+2011_10_03/2011_10_03_drive_0042_sync 365 l
+2011_09_30/2011_09_30_drive_0028_sync 3043 l
+2011_09_30/2011_09_30_drive_0028_sync 4621 r
+2011_10_03/2011_10_03_drive_0042_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 1583 l
+2011_09_26/2011_09_26_drive_0070_sync 65 r
+2011_09_30/2011_09_30_drive_0034_sync 1182 r
+2011_09_30/2011_09_30_drive_0020_sync 337 r
+2011_09_30/2011_09_30_drive_0028_sync 2096 l
+2011_09_26/2011_09_26_drive_0070_sync 242 r
+2011_10_03/2011_10_03_drive_0034_sync 4124 r
+2011_09_30/2011_09_30_drive_0028_sync 2452 r
+2011_09_26/2011_09_26_drive_0035_sync 79 r
+2011_09_30/2011_09_30_drive_0028_sync 54 l
+2011_09_30/2011_09_30_drive_0020_sync 531 r
+2011_10_03/2011_10_03_drive_0034_sync 400 r
+2011_09_30/2011_09_30_drive_0028_sync 2087 l
+2011_09_26/2011_09_26_drive_0087_sync 159 r
+2011_09_26/2011_09_26_drive_0051_sync 238 r
+2011_09_26/2011_09_26_drive_0039_sync 322 l
+2011_09_30/2011_09_30_drive_0028_sync 4335 l
+2011_09_26/2011_09_26_drive_0091_sync 99 l
+2011_09_26/2011_09_26_drive_0061_sync 503 l
+2011_09_30/2011_09_30_drive_0028_sync 3608 l
+2011_09_26/2011_09_26_drive_0014_sync 246 l
+2011_09_30/2011_09_30_drive_0028_sync 4102 l
+2011_09_30/2011_09_30_drive_0034_sync 258 r
+2011_09_26/2011_09_26_drive_0061_sync 538 l
+2011_09_26/2011_09_26_drive_0022_sync 105 r
+2011_10_03/2011_10_03_drive_0034_sync 3015 r
+2011_10_03/2011_10_03_drive_0034_sync 2686 r
+2011_10_03/2011_10_03_drive_0034_sync 3685 r
+2011_09_30/2011_09_30_drive_0028_sync 2660 l
+2011_09_26/2011_09_26_drive_0028_sync 198 l
+2011_09_30/2011_09_30_drive_0034_sync 1012 l
+2011_09_30/2011_09_30_drive_0028_sync 1807 r
+2011_09_30/2011_09_30_drive_0020_sync 170 l
+2011_09_30/2011_09_30_drive_0034_sync 885 l
+2011_09_26/2011_09_26_drive_0051_sync 403 l
+2011_10_03/2011_10_03_drive_0034_sync 314 r
+2011_09_26/2011_09_26_drive_0019_sync 63 r
+2011_09_30/2011_09_30_drive_0033_sync 377 r
+2011_09_26/2011_09_26_drive_0087_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 2404 r
+2011_10_03/2011_10_03_drive_0034_sync 1739 r
+2011_09_26/2011_09_26_drive_0057_sync 288 r
+2011_09_30/2011_09_30_drive_0034_sync 1147 r
+2011_10_03/2011_10_03_drive_0034_sync 3155 l
+2011_09_26/2011_09_26_drive_0014_sync 44 l
+2011_09_26/2011_09_26_drive_0022_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 1699 l
+2011_09_26/2011_09_26_drive_0005_sync 50 l
+2011_09_26/2011_09_26_drive_0015_sync 96 l
+2011_10_03/2011_10_03_drive_0034_sync 1720 r
+2011_09_30/2011_09_30_drive_0028_sync 5136 r
+2011_09_30/2011_09_30_drive_0034_sync 1095 r
+2011_10_03/2011_10_03_drive_0034_sync 2285 l
+2011_09_30/2011_09_30_drive_0028_sync 1058 r
+2011_10_03/2011_10_03_drive_0042_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 5073 r
+2011_09_26/2011_09_26_drive_0039_sync 239 r
+2011_09_30/2011_09_30_drive_0033_sync 1070 r
+2011_09_30/2011_09_30_drive_0028_sync 415 l
+2011_09_30/2011_09_30_drive_0028_sync 2207 r
+2011_09_26/2011_09_26_drive_0022_sync 367 l
+2011_10_03/2011_10_03_drive_0034_sync 3595 r
+2011_09_30/2011_09_30_drive_0020_sync 840 l
+2011_09_26/2011_09_26_drive_0061_sync 432 l
+2011_09_30/2011_09_30_drive_0028_sync 3680 l
+2011_09_26/2011_09_26_drive_0061_sync 500 r
+2011_09_30/2011_09_30_drive_0020_sync 804 r
+2011_09_26/2011_09_26_drive_0060_sync 37 r
+2011_09_26/2011_09_26_drive_0011_sync 131 r
+2011_10_03/2011_10_03_drive_0042_sync 761 r
+2011_10_03/2011_10_03_drive_0034_sync 3389 r
+2011_09_26/2011_09_26_drive_0028_sync 377 r
+2011_10_03/2011_10_03_drive_0034_sync 3658 l
+2011_10_03/2011_10_03_drive_0034_sync 3927 l
+2011_09_26/2011_09_26_drive_0070_sync 100 l
+2011_09_30/2011_09_30_drive_0020_sync 739 r
+2011_09_26/2011_09_26_drive_0039_sync 218 r
+2011_09_30/2011_09_30_drive_0034_sync 658 l
+2011_09_26/2011_09_26_drive_0001_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 348 l
+2011_10_03/2011_10_03_drive_0042_sync 899 l
+2011_09_26/2011_09_26_drive_0039_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 4861 l
+2011_09_26/2011_09_26_drive_0061_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 1994 r
+2011_10_03/2011_10_03_drive_0042_sync 914 l
+2011_09_26/2011_09_26_drive_0061_sync 250 l
+2011_10_03/2011_10_03_drive_0034_sync 960 r
+2011_09_26/2011_09_26_drive_0001_sync 70 l
+2011_09_30/2011_09_30_drive_0020_sync 328 r
+2011_10_03/2011_10_03_drive_0034_sync 3129 l
+2011_09_30/2011_09_30_drive_0034_sync 260 r
+2011_09_26/2011_09_26_drive_0095_sync 58 l
+2011_09_26/2011_09_26_drive_0051_sync 327 r
+2011_10_03/2011_10_03_drive_0034_sync 1662 l
+2011_09_26/2011_09_26_drive_0057_sync 174 l
+2011_09_26/2011_09_26_drive_0022_sync 663 l
+2011_09_26/2011_09_26_drive_0057_sync 176 r
+2011_09_30/2011_09_30_drive_0020_sync 1 l
+2011_10_03/2011_10_03_drive_0042_sync 738 l
+2011_09_30/2011_09_30_drive_0028_sync 509 r
+2011_10_03/2011_10_03_drive_0042_sync 120 r
+2011_09_30/2011_09_30_drive_0034_sync 612 r
+2011_09_26/2011_09_26_drive_0095_sync 194 r
+2011_09_26/2011_09_26_drive_0028_sync 334 r
+2011_09_26/2011_09_26_drive_0015_sync 293 r
+2011_09_30/2011_09_30_drive_0033_sync 230 r
+2011_09_26/2011_09_26_drive_0051_sync 424 l
+2011_09_26/2011_09_26_drive_0028_sync 360 l
+2011_09_26/2011_09_26_drive_0095_sync 71 l
+2011_09_30/2011_09_30_drive_0028_sync 345 l
+2011_09_26/2011_09_26_drive_0032_sync 44 r
+2011_09_26/2011_09_26_drive_0028_sync 379 l
+2011_09_30/2011_09_30_drive_0033_sync 1494 r
+2011_09_26/2011_09_26_drive_0018_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 210 l
+2011_10_03/2011_10_03_drive_0034_sync 4055 r
+2011_09_26/2011_09_26_drive_0095_sync 255 r
+2011_09_26/2011_09_26_drive_0087_sync 90 l
+2011_09_30/2011_09_30_drive_0020_sync 833 l
+2011_09_26/2011_09_26_drive_0087_sync 464 l
+2011_09_26/2011_09_26_drive_0035_sync 107 r
+2011_10_03/2011_10_03_drive_0034_sync 1130 r
+2011_09_30/2011_09_30_drive_0020_sync 449 r
+2011_09_26/2011_09_26_drive_0091_sync 229 l
+2011_09_26/2011_09_26_drive_0018_sync 192 l
+2011_09_30/2011_09_30_drive_0028_sync 1733 r
+2011_09_30/2011_09_30_drive_0028_sync 1724 r
+2011_09_30/2011_09_30_drive_0033_sync 463 l
+2011_10_03/2011_10_03_drive_0034_sync 3503 l
+2011_09_26/2011_09_26_drive_0087_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 263 r
+2011_10_03/2011_10_03_drive_0034_sync 2928 r
+2011_10_03/2011_10_03_drive_0042_sync 375 r
+2011_09_26/2011_09_26_drive_0019_sync 169 l
+2011_09_30/2011_09_30_drive_0020_sync 283 r
+2011_09_30/2011_09_30_drive_0028_sync 835 r
+2011_09_30/2011_09_30_drive_0028_sync 2906 l
+2011_09_30/2011_09_30_drive_0028_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 4039 l
+2011_09_26/2011_09_26_drive_0018_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 4442 r
+2011_09_26/2011_09_26_drive_0028_sync 398 r
+2011_09_30/2011_09_30_drive_0028_sync 1695 l
+2011_09_30/2011_09_30_drive_0028_sync 3850 r
+2011_09_26/2011_09_26_drive_0087_sync 683 r
+2011_10_03/2011_10_03_drive_0034_sync 845 r
+2011_09_30/2011_09_30_drive_0034_sync 771 r
+2011_09_26/2011_09_26_drive_0091_sync 9 r
+2011_09_26/2011_09_26_drive_0014_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 1798 r
+2011_10_03/2011_10_03_drive_0034_sync 250 r
+2011_09_30/2011_09_30_drive_0028_sync 321 l
+2011_09_26/2011_09_26_drive_0061_sync 270 l
+2011_09_30/2011_09_30_drive_0020_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 598 r
+2011_10_03/2011_10_03_drive_0034_sync 3088 r
+2011_09_26/2011_09_26_drive_0061_sync 688 r
+2011_10_03/2011_10_03_drive_0042_sync 295 l
+2011_09_30/2011_09_30_drive_0028_sync 726 l
+2011_09_26/2011_09_26_drive_0022_sync 112 r
+2011_09_26/2011_09_26_drive_0113_sync 4 l
+2011_09_26/2011_09_26_drive_0104_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 1232 r
+2011_09_30/2011_09_30_drive_0020_sync 946 r
+2011_09_26/2011_09_26_drive_0022_sync 791 l
+2011_09_30/2011_09_30_drive_0028_sync 4186 l
+2011_10_03/2011_10_03_drive_0034_sync 547 r
+2011_09_26/2011_09_26_drive_0061_sync 131 l
+2011_09_26/2011_09_26_drive_0061_sync 461 l
+2011_09_30/2011_09_30_drive_0034_sync 624 r
+2011_10_03/2011_10_03_drive_0034_sync 4263 l
+2011_09_30/2011_09_30_drive_0028_sync 1352 l
+2011_09_26/2011_09_26_drive_0022_sync 235 r
+2011_09_26/2011_09_26_drive_0019_sync 54 r
+2011_09_30/2011_09_30_drive_0034_sync 1075 l
+2011_09_30/2011_09_30_drive_0034_sync 131 r
+2011_10_03/2011_10_03_drive_0034_sync 4170 l
+2011_09_26/2011_09_26_drive_0104_sync 237 l
+2011_09_26/2011_09_26_drive_0061_sync 573 r
+2011_10_03/2011_10_03_drive_0034_sync 1208 r
+2011_09_30/2011_09_30_drive_0028_sync 2401 l
+2011_09_30/2011_09_30_drive_0028_sync 2549 r
+2011_09_30/2011_09_30_drive_0034_sync 177 l
+2011_09_26/2011_09_26_drive_0061_sync 636 l
+2011_10_03/2011_10_03_drive_0042_sync 1052 r
+2011_10_03/2011_10_03_drive_0034_sync 486 r
+2011_09_29/2011_09_29_drive_0026_sync 91 r
+2011_09_30/2011_09_30_drive_0028_sync 3201 r
+2011_10_03/2011_10_03_drive_0042_sync 947 l
+2011_09_30/2011_09_30_drive_0033_sync 974 r
+2011_09_26/2011_09_26_drive_0070_sync 385 l
+2011_09_29/2011_09_29_drive_0004_sync 6 l
+2011_09_26/2011_09_26_drive_0087_sync 497 l
+2011_09_30/2011_09_30_drive_0020_sync 444 l
+2011_09_26/2011_09_26_drive_0022_sync 551 r
+2011_09_30/2011_09_30_drive_0028_sync 1086 r
+2011_09_29/2011_09_29_drive_0004_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 1304 r
+2011_10_03/2011_10_03_drive_0034_sync 1491 r
+2011_09_30/2011_09_30_drive_0028_sync 4789 l
+2011_09_26/2011_09_26_drive_0011_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 151 r
+2011_09_26/2011_09_26_drive_0014_sync 152 r
+2011_09_30/2011_09_30_drive_0028_sync 1589 r
+2011_09_30/2011_09_30_drive_0034_sync 344 r
+2011_09_26/2011_09_26_drive_0070_sync 294 r
+2011_09_26/2011_09_26_drive_0061_sync 21 l
+2011_09_26/2011_09_26_drive_0001_sync 94 r
+2011_10_03/2011_10_03_drive_0034_sync 3272 r
+2011_10_03/2011_10_03_drive_0034_sync 4469 r
+2011_09_30/2011_09_30_drive_0028_sync 859 l
+2011_09_26/2011_09_26_drive_0018_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 1901 r
+2011_09_30/2011_09_30_drive_0028_sync 919 l
+2011_09_30/2011_09_30_drive_0034_sync 325 r
+2011_09_30/2011_09_30_drive_0033_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 2091 l
+2011_09_26/2011_09_26_drive_0028_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 4313 l
+2011_09_26/2011_09_26_drive_0015_sync 63 r
+2011_10_03/2011_10_03_drive_0034_sync 3636 l
+2011_09_26/2011_09_26_drive_0057_sync 172 l
+2011_10_03/2011_10_03_drive_0034_sync 609 l
+2011_09_26/2011_09_26_drive_0032_sync 353 l
+2011_10_03/2011_10_03_drive_0034_sync 2934 r
+2011_09_26/2011_09_26_drive_0015_sync 135 r
+2011_09_30/2011_09_30_drive_0028_sync 244 r
+2011_09_30/2011_09_30_drive_0028_sync 3857 r
+2011_10_03/2011_10_03_drive_0034_sync 4441 r
+2011_09_26/2011_09_26_drive_0028_sync 144 l
+2011_09_30/2011_09_30_drive_0034_sync 222 l
+2011_09_26/2011_09_26_drive_0032_sync 48 r
+2011_09_26/2011_09_26_drive_0028_sync 413 r
+2011_09_26/2011_09_26_drive_0019_sync 332 l
+2011_09_26/2011_09_26_drive_0032_sync 35 r
+2011_09_26/2011_09_26_drive_0032_sync 159 l
+2011_09_26/2011_09_26_drive_0113_sync 44 r
+2011_09_26/2011_09_26_drive_0061_sync 363 r
+2011_10_03/2011_10_03_drive_0034_sync 1437 r
+2011_10_03/2011_10_03_drive_0034_sync 1331 r
+2011_09_30/2011_09_30_drive_0020_sync 584 r
+2011_09_30/2011_09_30_drive_0020_sync 386 l
+2011_09_26/2011_09_26_drive_0039_sync 252 l
+2011_09_26/2011_09_26_drive_0028_sync 120 l
+2011_10_03/2011_10_03_drive_0042_sync 236 l
+2011_09_30/2011_09_30_drive_0020_sync 786 l
+2011_10_03/2011_10_03_drive_0042_sync 216 r
+2011_09_26/2011_09_26_drive_0019_sync 144 r
+2011_09_26/2011_09_26_drive_0091_sync 274 l
+2011_09_26/2011_09_26_drive_0017_sync 0 r
+2011_09_26/2011_09_26_drive_0095_sync 145 r
+2011_09_26/2011_09_26_drive_0104_sync 77 r
+2011_09_26/2011_09_26_drive_0095_sync 16 r
+2011_09_29/2011_09_29_drive_0004_sync 209 r
+2011_09_26/2011_09_26_drive_0015_sync 26 r
+2011_09_26/2011_09_26_drive_0022_sync 117 r
+2011_09_30/2011_09_30_drive_0033_sync 719 r
+2011_09_30/2011_09_30_drive_0028_sync 2224 l
+2011_10_03/2011_10_03_drive_0034_sync 1364 r
+2011_10_03/2011_10_03_drive_0034_sync 4045 l
+2011_09_30/2011_09_30_drive_0028_sync 4344 r
+2011_09_26/2011_09_26_drive_0060_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 3559 r
+2011_09_30/2011_09_30_drive_0034_sync 362 l
+2011_09_26/2011_09_26_drive_0032_sync 325 r
+2011_09_26/2011_09_26_drive_0019_sync 446 r
+2011_09_26/2011_09_26_drive_0014_sync 229 l
+2011_09_26/2011_09_26_drive_0001_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 4411 r
+2011_09_26/2011_09_26_drive_0070_sync 361 l
+2011_09_30/2011_09_30_drive_0028_sync 3319 r
+2011_10_03/2011_10_03_drive_0034_sync 671 r
+2011_09_26/2011_09_26_drive_0014_sync 79 r
+2011_10_03/2011_10_03_drive_0042_sync 832 l
+2011_09_26/2011_09_26_drive_0113_sync 62 r
+2011_09_29/2011_09_29_drive_0004_sync 49 l
+2011_09_30/2011_09_30_drive_0034_sync 723 l
+2011_09_26/2011_09_26_drive_0017_sync 4 r
+2011_10_03/2011_10_03_drive_0034_sync 1373 r
+2011_09_30/2011_09_30_drive_0033_sync 505 r
+2011_09_26/2011_09_26_drive_0014_sync 206 l
+2011_10_03/2011_10_03_drive_0042_sync 900 r
+2011_10_03/2011_10_03_drive_0034_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 2149 l
+2011_09_30/2011_09_30_drive_0028_sync 2957 l
+2011_09_26/2011_09_26_drive_0079_sync 17 r
+2011_10_03/2011_10_03_drive_0034_sync 1176 r
+2011_09_26/2011_09_26_drive_0001_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 3473 l
+2011_09_26/2011_09_26_drive_0095_sync 52 l
+2011_09_26/2011_09_26_drive_0005_sync 144 l
+2011_09_30/2011_09_30_drive_0033_sync 915 r
+2011_09_26/2011_09_26_drive_0091_sync 15 l
+2011_09_26/2011_09_26_drive_0061_sync 61 l
+2011_09_30/2011_09_30_drive_0020_sync 251 r
+2011_09_30/2011_09_30_drive_0028_sync 1918 r
+2011_09_26/2011_09_26_drive_0104_sync 172 r
+2011_09_26/2011_09_26_drive_0061_sync 638 r
+2011_10_03/2011_10_03_drive_0034_sync 1710 l
+2011_09_26/2011_09_26_drive_0032_sync 250 l
+2011_09_26/2011_09_26_drive_0087_sync 344 r
+2011_10_03/2011_10_03_drive_0042_sync 531 r
+2011_09_26/2011_09_26_drive_0019_sync 404 r
+2011_09_26/2011_09_26_drive_0028_sync 3 r
+2011_09_26/2011_09_26_drive_0022_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 2343 l
+2011_09_30/2011_09_30_drive_0028_sync 167 l
+2011_09_30/2011_09_30_drive_0020_sync 1069 l
+2011_09_30/2011_09_30_drive_0034_sync 4 r
+2011_09_26/2011_09_26_drive_0051_sync 261 l
+2011_09_26/2011_09_26_drive_0091_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 1161 r
+2011_09_26/2011_09_26_drive_0015_sync 109 l
+2011_09_26/2011_09_26_drive_0019_sync 266 l
+2011_09_30/2011_09_30_drive_0028_sync 1028 l
+2011_09_30/2011_09_30_drive_0028_sync 4021 l
+2011_09_30/2011_09_30_drive_0028_sync 477 r
+2011_10_03/2011_10_03_drive_0034_sync 2897 l
+2011_09_30/2011_09_30_drive_0034_sync 1020 r
+2011_10_03/2011_10_03_drive_0034_sync 4402 l
+2011_09_30/2011_09_30_drive_0033_sync 34 r
+2011_09_26/2011_09_26_drive_0091_sync 280 l
+2011_09_30/2011_09_30_drive_0028_sync 2134 r
+2011_10_03/2011_10_03_drive_0034_sync 3506 r
+2011_09_30/2011_09_30_drive_0028_sync 4252 r
+2011_09_30/2011_09_30_drive_0034_sync 877 l
+2011_10_03/2011_10_03_drive_0034_sync 1033 l
+2011_09_30/2011_09_30_drive_0028_sync 3763 r
+2011_10_03/2011_10_03_drive_0042_sync 962 r
+2011_09_26/2011_09_26_drive_0022_sync 368 r
+2011_10_03/2011_10_03_drive_0034_sync 3659 l
+2011_09_30/2011_09_30_drive_0034_sync 986 r
+2011_09_30/2011_09_30_drive_0028_sync 799 r
+2011_09_30/2011_09_30_drive_0028_sync 1109 r
+2011_09_30/2011_09_30_drive_0033_sync 1154 r
+2011_09_26/2011_09_26_drive_0022_sync 796 l
+2011_09_26/2011_09_26_drive_0035_sync 50 l
+2011_09_26/2011_09_26_drive_0104_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 2045 l
+2011_09_30/2011_09_30_drive_0028_sync 4326 l
+2011_09_26/2011_09_26_drive_0005_sync 29 l
+2011_09_30/2011_09_30_drive_0033_sync 767 r
+2011_09_26/2011_09_26_drive_0022_sync 459 r
+2011_09_30/2011_09_30_drive_0033_sync 64 r
+2011_09_26/2011_09_26_drive_0057_sync 238 l
+2011_09_26/2011_09_26_drive_0113_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 2605 l
+2011_10_03/2011_10_03_drive_0034_sync 1878 l
+2011_10_03/2011_10_03_drive_0034_sync 3858 l
+2011_09_26/2011_09_26_drive_0070_sync 369 l
+2011_09_30/2011_09_30_drive_0028_sync 1154 r
+2011_09_26/2011_09_26_drive_0057_sync 195 r
+2011_09_30/2011_09_30_drive_0033_sync 781 r
+2011_10_03/2011_10_03_drive_0042_sync 888 l
+2011_09_30/2011_09_30_drive_0028_sync 3013 r
+2011_09_30/2011_09_30_drive_0028_sync 3108 r
+2011_09_30/2011_09_30_drive_0028_sync 1987 l
+2011_09_26/2011_09_26_drive_0014_sync 294 l
+2011_09_30/2011_09_30_drive_0033_sync 1558 l
+2011_09_30/2011_09_30_drive_0028_sync 2336 r
+2011_10_03/2011_10_03_drive_0034_sync 2171 l
+2011_10_03/2011_10_03_drive_0034_sync 3828 r
+2011_09_30/2011_09_30_drive_0034_sync 625 l
+2011_09_30/2011_09_30_drive_0033_sync 184 r
+2011_09_26/2011_09_26_drive_0070_sync 177 l
+2011_09_30/2011_09_30_drive_0028_sync 1811 l
+2011_09_26/2011_09_26_drive_0017_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 58 r
+2011_10_03/2011_10_03_drive_0042_sync 57 l
+2011_09_30/2011_09_30_drive_0034_sync 798 l
+2011_09_26/2011_09_26_drive_0015_sync 47 r
+2011_09_30/2011_09_30_drive_0028_sync 4550 l
+2011_09_29/2011_09_29_drive_0004_sync 329 l
+2011_09_30/2011_09_30_drive_0028_sync 705 r
+2011_10_03/2011_10_03_drive_0034_sync 1671 l
+2011_09_26/2011_09_26_drive_0061_sync 540 l
+2011_09_30/2011_09_30_drive_0033_sync 705 r
+2011_09_26/2011_09_26_drive_0061_sync 145 r
+2011_10_03/2011_10_03_drive_0034_sync 3122 r
+2011_09_26/2011_09_26_drive_0087_sync 573 l
+2011_09_26/2011_09_26_drive_0014_sync 29 l
+2011_10_03/2011_10_03_drive_0034_sync 3049 l
+2011_09_30/2011_09_30_drive_0028_sync 3286 r
+2011_10_03/2011_10_03_drive_0034_sync 4129 l
+2011_09_26/2011_09_26_drive_0095_sync 93 l
+2011_10_03/2011_10_03_drive_0034_sync 2336 l
+2011_09_30/2011_09_30_drive_0028_sync 2854 r
+2011_09_26/2011_09_26_drive_0028_sync 188 r
+2011_09_26/2011_09_26_drive_0057_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 847 l
+2011_10_03/2011_10_03_drive_0034_sync 1116 l
+2011_10_03/2011_10_03_drive_0034_sync 1900 l
+2011_09_30/2011_09_30_drive_0028_sync 894 l
+2011_09_30/2011_09_30_drive_0020_sync 306 r
+2011_09_30/2011_09_30_drive_0020_sync 571 r
+2011_09_26/2011_09_26_drive_0022_sync 498 l
+2011_09_30/2011_09_30_drive_0028_sync 3224 r
+2011_09_26/2011_09_26_drive_0091_sync 180 r
+2011_09_26/2011_09_26_drive_0014_sync 159 r
+2011_09_26/2011_09_26_drive_0104_sync 83 r
+2011_09_30/2011_09_30_drive_0034_sync 355 l
+2011_09_26/2011_09_26_drive_0051_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 2574 l
+2011_09_29/2011_09_29_drive_0004_sync 251 l
+2011_09_26/2011_09_26_drive_0001_sync 74 l
+2011_09_26/2011_09_26_drive_0087_sync 678 l
+2011_09_30/2011_09_30_drive_0020_sync 532 l
+2011_09_30/2011_09_30_drive_0033_sync 825 r
+2011_09_26/2011_09_26_drive_0018_sync 233 l
+2011_10_03/2011_10_03_drive_0034_sync 4437 r
+2011_09_30/2011_09_30_drive_0033_sync 136 l
+2011_10_03/2011_10_03_drive_0042_sync 131 l
+2011_09_30/2011_09_30_drive_0028_sync 3282 l
+2011_09_30/2011_09_30_drive_0033_sync 302 l
+2011_09_30/2011_09_30_drive_0028_sync 917 l
+2011_09_26/2011_09_26_drive_0051_sync 374 l
+2011_09_26/2011_09_26_drive_0087_sync 363 l
+2011_09_30/2011_09_30_drive_0034_sync 185 l
+2011_09_30/2011_09_30_drive_0028_sync 4613 l
+2011_09_30/2011_09_30_drive_0028_sync 806 l
+2011_09_26/2011_09_26_drive_0015_sync 157 l
+2011_09_30/2011_09_30_drive_0028_sync 1995 l
+2011_09_26/2011_09_26_drive_0057_sync 251 l
+2011_09_26/2011_09_26_drive_0051_sync 147 l
+2011_09_26/2011_09_26_drive_0011_sync 149 l
+2011_09_26/2011_09_26_drive_0022_sync 402 r
+2011_09_26/2011_09_26_drive_0039_sync 226 r
+2011_09_26/2011_09_26_drive_0079_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 2827 r
+2011_10_03/2011_10_03_drive_0034_sync 115 l
+2011_10_03/2011_10_03_drive_0042_sync 339 l
+2011_09_30/2011_09_30_drive_0028_sync 3614 r
+2011_09_30/2011_09_30_drive_0028_sync 1964 l
+2011_09_30/2011_09_30_drive_0033_sync 1115 r
+2011_09_26/2011_09_26_drive_0095_sync 111 l
+2011_09_26/2011_09_26_drive_0028_sync 357 l
+2011_09_26/2011_09_26_drive_0019_sync 210 l
+2011_10_03/2011_10_03_drive_0042_sync 459 l
+2011_09_30/2011_09_30_drive_0028_sync 1494 l
+2011_09_30/2011_09_30_drive_0028_sync 715 r
+2011_09_26/2011_09_26_drive_0061_sync 165 r
+2011_09_30/2011_09_30_drive_0028_sync 4032 r
+2011_09_26/2011_09_26_drive_0011_sync 43 r
+2011_09_26/2011_09_26_drive_0060_sync 77 l
+2011_09_30/2011_09_30_drive_0028_sync 1270 r
+2011_09_28/2011_09_28_drive_0001_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 472 l
+2011_10_03/2011_10_03_drive_0034_sync 827 r
+2011_09_30/2011_09_30_drive_0034_sync 882 l
+2011_10_03/2011_10_03_drive_0034_sync 752 l
+2011_10_03/2011_10_03_drive_0034_sync 709 r
+2011_09_26/2011_09_26_drive_0087_sync 88 l
+2011_09_30/2011_09_30_drive_0020_sync 536 r
+2011_09_30/2011_09_30_drive_0028_sync 2504 l
+2011_10_03/2011_10_03_drive_0034_sync 2583 r
+2011_10_03/2011_10_03_drive_0034_sync 1056 r
+2011_09_26/2011_09_26_drive_0019_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 4831 r
+2011_09_26/2011_09_26_drive_0060_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 2874 r
+2011_09_26/2011_09_26_drive_0061_sync 556 l
+2011_09_30/2011_09_30_drive_0033_sync 535 l
+2011_09_30/2011_09_30_drive_0028_sync 2919 r
+2011_10_03/2011_10_03_drive_0034_sync 771 r
+2011_09_30/2011_09_30_drive_0028_sync 5098 r
+2011_09_30/2011_09_30_drive_0033_sync 1563 r
+2011_09_30/2011_09_30_drive_0028_sync 603 l
+2011_09_26/2011_09_26_drive_0095_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 4563 l
+2011_09_26/2011_09_26_drive_0061_sync 182 r
+2011_09_26/2011_09_26_drive_0014_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 833 r
+2011_09_30/2011_09_30_drive_0028_sync 474 l
+2011_10_03/2011_10_03_drive_0034_sync 4601 r
+2011_09_30/2011_09_30_drive_0028_sync 4100 r
+2011_10_03/2011_10_03_drive_0034_sync 2142 l
+2011_09_26/2011_09_26_drive_0011_sync 117 l
+2011_09_30/2011_09_30_drive_0034_sync 99 l
+2011_09_30/2011_09_30_drive_0028_sync 2551 r
+2011_10_03/2011_10_03_drive_0034_sync 3796 r
+2011_10_03/2011_10_03_drive_0034_sync 2974 l
+2011_09_26/2011_09_26_drive_0070_sync 382 r
+2011_10_03/2011_10_03_drive_0034_sync 1065 r
+2011_09_30/2011_09_30_drive_0028_sync 395 l
+2011_10_03/2011_10_03_drive_0034_sync 442 l
+2011_09_26/2011_09_26_drive_0061_sync 326 r
+2011_09_30/2011_09_30_drive_0028_sync 4160 l
+2011_09_30/2011_09_30_drive_0033_sync 684 r
+2011_09_26/2011_09_26_drive_0001_sync 81 l
+2011_10_03/2011_10_03_drive_0042_sync 346 r
+2011_09_30/2011_09_30_drive_0033_sync 1010 r
+2011_10_03/2011_10_03_drive_0034_sync 1911 l
+2011_10_03/2011_10_03_drive_0034_sync 1006 r
+2011_09_30/2011_09_30_drive_0028_sync 2662 l
+2011_09_28/2011_09_28_drive_0001_sync 73 r
+2011_09_30/2011_09_30_drive_0028_sync 2965 l
+2011_10_03/2011_10_03_drive_0034_sync 3480 r
+2011_10_03/2011_10_03_drive_0042_sync 833 l
+2011_09_26/2011_09_26_drive_0087_sync 94 l
+2011_09_30/2011_09_30_drive_0028_sync 3549 r
+2011_09_26/2011_09_26_drive_0015_sync 290 l
+2011_09_26/2011_09_26_drive_0022_sync 37 r
+2011_10_03/2011_10_03_drive_0042_sync 650 l
+2011_09_30/2011_09_30_drive_0033_sync 1307 l
+2011_09_30/2011_09_30_drive_0028_sync 4682 r
+2011_10_03/2011_10_03_drive_0034_sync 1371 r
+2011_09_30/2011_09_30_drive_0028_sync 3631 r
+2011_09_30/2011_09_30_drive_0020_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 3839 r
+2011_10_03/2011_10_03_drive_0042_sync 626 r
+2011_09_26/2011_09_26_drive_0051_sync 274 r
+2011_09_26/2011_09_26_drive_0019_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 2673 l
+2011_09_30/2011_09_30_drive_0028_sync 786 r
+2011_09_30/2011_09_30_drive_0020_sync 57 l
+2011_09_26/2011_09_26_drive_0014_sync 131 l
+2011_09_26/2011_09_26_drive_0028_sync 418 r
+2011_09_30/2011_09_30_drive_0028_sync 1831 r
+2011_09_30/2011_09_30_drive_0028_sync 4938 l
+2011_10_03/2011_10_03_drive_0034_sync 4237 r
+2011_09_30/2011_09_30_drive_0028_sync 1876 r
+2011_09_26/2011_09_26_drive_0022_sync 258 l
+2011_09_26/2011_09_26_drive_0018_sync 185 r
+2011_09_26/2011_09_26_drive_0057_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 3815 r
+2011_10_03/2011_10_03_drive_0034_sync 1936 r
+2011_09_30/2011_09_30_drive_0028_sync 4584 l
+2011_10_03/2011_10_03_drive_0034_sync 4574 l
+2011_10_03/2011_10_03_drive_0034_sync 3176 l
+2011_09_26/2011_09_26_drive_0104_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 5160 l
+2011_09_26/2011_09_26_drive_0104_sync 257 l
+2011_09_30/2011_09_30_drive_0028_sync 1988 l
+2011_10_03/2011_10_03_drive_0034_sync 303 r
+2011_09_30/2011_09_30_drive_0028_sync 236 r
+2011_09_29/2011_09_29_drive_0026_sync 35 r
+2011_10_03/2011_10_03_drive_0042_sync 1134 l
+2011_09_26/2011_09_26_drive_0015_sync 185 l
+2011_09_30/2011_09_30_drive_0034_sync 434 r
+2011_09_30/2011_09_30_drive_0028_sync 145 l
+2011_09_26/2011_09_26_drive_0070_sync 374 l
+2011_09_26/2011_09_26_drive_0035_sync 22 r
+2011_09_26/2011_09_26_drive_0057_sync 99 r
+2011_09_26/2011_09_26_drive_0087_sync 635 r
+2011_09_30/2011_09_30_drive_0028_sync 4874 l
+2011_09_26/2011_09_26_drive_0061_sync 691 l
+2011_09_30/2011_09_30_drive_0028_sync 4751 r
+2011_09_30/2011_09_30_drive_0028_sync 4293 l
+2011_10_03/2011_10_03_drive_0034_sync 906 l
+2011_09_30/2011_09_30_drive_0028_sync 577 l
+2011_09_26/2011_09_26_drive_0014_sync 85 r
+2011_10_03/2011_10_03_drive_0034_sync 3864 l
+2011_09_26/2011_09_26_drive_0011_sync 160 l
+2011_10_03/2011_10_03_drive_0034_sync 3939 l
+2011_09_30/2011_09_30_drive_0020_sync 798 r
+2011_10_03/2011_10_03_drive_0034_sync 3763 r
+2011_09_29/2011_09_29_drive_0004_sync 315 l
+2011_10_03/2011_10_03_drive_0034_sync 1179 r
+2011_10_03/2011_10_03_drive_0034_sync 4365 r
+2011_10_03/2011_10_03_drive_0034_sync 4274 r
+2011_09_30/2011_09_30_drive_0028_sync 1823 l
+2011_09_30/2011_09_30_drive_0028_sync 1249 r
+2011_10_03/2011_10_03_drive_0034_sync 238 r
+2011_09_30/2011_09_30_drive_0033_sync 508 r
+2011_09_26/2011_09_26_drive_0087_sync 394 r
+2011_09_29/2011_09_29_drive_0004_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 1180 l
+2011_09_26/2011_09_26_drive_0032_sync 308 r
+2011_09_26/2011_09_26_drive_0032_sync 307 l
+2011_09_26/2011_09_26_drive_0018_sync 10 r
+2011_09_30/2011_09_30_drive_0028_sync 3165 l
+2011_10_03/2011_10_03_drive_0034_sync 1300 l
+2011_09_30/2011_09_30_drive_0020_sync 172 r
+2011_09_26/2011_09_26_drive_0051_sync 240 l
+2011_09_26/2011_09_26_drive_0032_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 2943 l
+2011_10_03/2011_10_03_drive_0034_sync 383 r
+2011_09_30/2011_09_30_drive_0033_sync 1407 l
+2011_09_26/2011_09_26_drive_0070_sync 62 l
+2011_09_30/2011_09_30_drive_0033_sync 1365 r
+2011_10_03/2011_10_03_drive_0034_sync 3565 l
+2011_09_26/2011_09_26_drive_0015_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 2036 r
+2011_10_03/2011_10_03_drive_0034_sync 584 l
+2011_09_30/2011_09_30_drive_0028_sync 4255 l
+2011_09_30/2011_09_30_drive_0033_sync 1346 r
+2011_09_26/2011_09_26_drive_0057_sync 115 l
+2011_09_30/2011_09_30_drive_0028_sync 792 l
+2011_09_30/2011_09_30_drive_0028_sync 3257 r
+2011_09_30/2011_09_30_drive_0020_sync 838 l
+2011_09_30/2011_09_30_drive_0020_sync 329 l
+2011_09_26/2011_09_26_drive_0018_sync 60 l
+2011_09_26/2011_09_26_drive_0087_sync 717 r
+2011_10_03/2011_10_03_drive_0034_sync 82 r
+2011_09_26/2011_09_26_drive_0015_sync 180 l
+2011_09_30/2011_09_30_drive_0033_sync 525 l
+2011_10_03/2011_10_03_drive_0034_sync 1007 r
+2011_09_26/2011_09_26_drive_0022_sync 325 r
+2011_10_03/2011_10_03_drive_0042_sync 1165 r
+2011_09_26/2011_09_26_drive_0087_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 1630 r
+2011_09_30/2011_09_30_drive_0028_sync 4749 r
+2011_09_26/2011_09_26_drive_0019_sync 423 l
+2011_10_03/2011_10_03_drive_0034_sync 945 r
+2011_09_26/2011_09_26_drive_0070_sync 418 l
+2011_09_29/2011_09_29_drive_0026_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 4353 r
+2011_09_30/2011_09_30_drive_0033_sync 999 r
+2011_09_26/2011_09_26_drive_0051_sync 417 r
+2011_09_26/2011_09_26_drive_0095_sync 172 l
+2011_09_26/2011_09_26_drive_0011_sync 1 l
+2011_09_26/2011_09_26_drive_0028_sync 260 l
+2011_09_26/2011_09_26_drive_0028_sync 112 r
+2011_09_30/2011_09_30_drive_0033_sync 1569 l
+2011_10_03/2011_10_03_drive_0034_sync 1689 l
+2011_09_26/2011_09_26_drive_0015_sync 247 l
+2011_09_30/2011_09_30_drive_0020_sync 513 l
+2011_09_30/2011_09_30_drive_0028_sync 1230 l
+2011_09_26/2011_09_26_drive_0035_sync 13 r
+2011_09_30/2011_09_30_drive_0033_sync 787 r
+2011_10_03/2011_10_03_drive_0034_sync 1486 r
+2011_09_30/2011_09_30_drive_0028_sync 4009 l
+2011_09_26/2011_09_26_drive_0032_sync 329 r
+2011_10_03/2011_10_03_drive_0042_sync 922 r
+2011_10_03/2011_10_03_drive_0034_sync 269 l
+2011_09_26/2011_09_26_drive_0039_sync 21 r
+2011_10_03/2011_10_03_drive_0034_sync 1033 r
+2011_09_26/2011_09_26_drive_0104_sync 247 l
+2011_09_26/2011_09_26_drive_0070_sync 404 l
+2011_09_26/2011_09_26_drive_0022_sync 399 l
+2011_10_03/2011_10_03_drive_0034_sync 4226 r
+2011_10_03/2011_10_03_drive_0034_sync 14 l
+2011_09_30/2011_09_30_drive_0033_sync 826 r
+2011_09_26/2011_09_26_drive_0028_sync 110 l
+2011_09_26/2011_09_26_drive_0011_sync 31 r
+2011_09_26/2011_09_26_drive_0070_sync 323 r
+2011_10_03/2011_10_03_drive_0034_sync 2626 l
+2011_09_26/2011_09_26_drive_0051_sync 325 l
+2011_10_03/2011_10_03_drive_0034_sync 177 r
+2011_09_30/2011_09_30_drive_0028_sync 1210 l
+2011_10_03/2011_10_03_drive_0034_sync 568 r
+2011_10_03/2011_10_03_drive_0034_sync 976 l
+2011_09_26/2011_09_26_drive_0022_sync 237 l
+2011_09_29/2011_09_29_drive_0004_sync 268 l
+2011_09_26/2011_09_26_drive_0104_sync 289 r
+2011_09_26/2011_09_26_drive_0022_sync 251 r
+2011_09_26/2011_09_26_drive_0104_sync 295 l
+2011_09_26/2011_09_26_drive_0061_sync 650 r
+2011_10_03/2011_10_03_drive_0034_sync 3340 r
+2011_10_03/2011_10_03_drive_0034_sync 3722 l
+2011_10_03/2011_10_03_drive_0034_sync 3105 r
+2011_10_03/2011_10_03_drive_0042_sync 586 r
+2011_09_26/2011_09_26_drive_0022_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 4136 l
+2011_09_26/2011_09_26_drive_0001_sync 62 r
+2011_09_30/2011_09_30_drive_0028_sync 144 r
+2011_09_26/2011_09_26_drive_0060_sync 23 l
+2011_09_30/2011_09_30_drive_0034_sync 704 l
+2011_10_03/2011_10_03_drive_0034_sync 1074 r
+2011_09_26/2011_09_26_drive_0039_sync 98 r
+2011_09_26/2011_09_26_drive_0104_sync 292 l
+2011_09_28/2011_09_28_drive_0001_sync 86 l
+2011_09_30/2011_09_30_drive_0020_sync 672 l
+2011_10_03/2011_10_03_drive_0042_sync 140 l
+2011_09_26/2011_09_26_drive_0032_sync 8 r
+2011_09_26/2011_09_26_drive_0104_sync 287 l
+2011_09_26/2011_09_26_drive_0104_sync 152 l
+2011_09_30/2011_09_30_drive_0028_sync 3594 r
+2011_10_03/2011_10_03_drive_0034_sync 4573 r
+2011_09_30/2011_09_30_drive_0034_sync 1180 l
+2011_09_26/2011_09_26_drive_0060_sync 3 l
+2011_09_26/2011_09_26_drive_0032_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 2042 r
+2011_09_26/2011_09_26_drive_0028_sync 348 l
+2011_09_26/2011_09_26_drive_0014_sync 308 l
+2011_09_30/2011_09_30_drive_0034_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 1762 l
+2011_09_26/2011_09_26_drive_0022_sync 573 r
+2011_09_30/2011_09_30_drive_0033_sync 1377 r
+2011_10_03/2011_10_03_drive_0042_sync 296 r
+2011_10_03/2011_10_03_drive_0034_sync 2664 r
+2011_10_03/2011_10_03_drive_0034_sync 1032 l
+2011_09_30/2011_09_30_drive_0028_sync 3651 l
+2011_10_03/2011_10_03_drive_0034_sync 2532 r
+2011_10_03/2011_10_03_drive_0034_sync 2613 r
+2011_09_26/2011_09_26_drive_0022_sync 321 r
+2011_09_30/2011_09_30_drive_0028_sync 3385 r
+2011_09_26/2011_09_26_drive_0061_sync 99 r
+2011_09_26/2011_09_26_drive_0057_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 3213 r
+2011_09_30/2011_09_30_drive_0034_sync 52 l
+2011_09_26/2011_09_26_drive_0087_sync 106 r
+2011_09_30/2011_09_30_drive_0033_sync 1187 l
+2011_09_30/2011_09_30_drive_0034_sync 775 r
+2011_09_29/2011_09_29_drive_0004_sync 10 l
+2011_09_30/2011_09_30_drive_0020_sync 968 r
+2011_09_30/2011_09_30_drive_0034_sync 16 l
+2011_09_26/2011_09_26_drive_0039_sync 347 r
+2011_09_30/2011_09_30_drive_0034_sync 452 r
+2011_09_26/2011_09_26_drive_0070_sync 110 l
+2011_09_26/2011_09_26_drive_0061_sync 289 l
+2011_10_03/2011_10_03_drive_0034_sync 4504 r
+2011_10_03/2011_10_03_drive_0034_sync 685 r
+2011_09_30/2011_09_30_drive_0033_sync 1398 r
+2011_09_28/2011_09_28_drive_0001_sync 84 l
+2011_09_26/2011_09_26_drive_0095_sync 140 l
+2011_10_03/2011_10_03_drive_0034_sync 2140 l
+2011_10_03/2011_10_03_drive_0034_sync 300 l
+2011_09_26/2011_09_26_drive_0070_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 4007 r
+2011_09_26/2011_09_26_drive_0019_sync 422 r
+2011_09_30/2011_09_30_drive_0028_sync 4620 l
+2011_09_30/2011_09_30_drive_0028_sync 3507 r
+2011_09_30/2011_09_30_drive_0020_sync 445 l
+2011_09_26/2011_09_26_drive_0079_sync 10 l
+2011_09_26/2011_09_26_drive_0051_sync 284 l
+2011_09_26/2011_09_26_drive_0057_sync 167 l
+2011_09_30/2011_09_30_drive_0034_sync 14 l
+2011_10_03/2011_10_03_drive_0042_sync 762 l
+2011_10_03/2011_10_03_drive_0034_sync 773 l
+2011_09_30/2011_09_30_drive_0028_sync 1337 r
+2011_09_30/2011_09_30_drive_0034_sync 510 r
+2011_10_03/2011_10_03_drive_0034_sync 3445 r
+2011_09_30/2011_09_30_drive_0020_sync 684 l
+2011_09_26/2011_09_26_drive_0057_sync 250 r
+2011_10_03/2011_10_03_drive_0034_sync 1164 l
+2011_09_26/2011_09_26_drive_0091_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 281 r
+2011_10_03/2011_10_03_drive_0034_sync 2637 r
+2011_09_29/2011_09_29_drive_0004_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 593 r
+2011_09_30/2011_09_30_drive_0028_sync 1331 r
+2011_09_26/2011_09_26_drive_0022_sync 651 r
+2011_10_03/2011_10_03_drive_0042_sync 1136 r
+2011_09_26/2011_09_26_drive_0014_sync 286 l
+2011_10_03/2011_10_03_drive_0034_sync 3555 l
+2011_09_26/2011_09_26_drive_0087_sync 56 l
+2011_09_26/2011_09_26_drive_0087_sync 568 l
+2011_09_30/2011_09_30_drive_0028_sync 261 l
+2011_09_26/2011_09_26_drive_0032_sync 368 l
+2011_10_03/2011_10_03_drive_0042_sync 605 r
+2011_10_03/2011_10_03_drive_0042_sync 364 r
+2011_10_03/2011_10_03_drive_0034_sync 1632 l
+2011_10_03/2011_10_03_drive_0034_sync 511 l
+2011_10_03/2011_10_03_drive_0034_sync 1214 r
+2011_09_26/2011_09_26_drive_0022_sync 352 l
+2011_10_03/2011_10_03_drive_0034_sync 4268 l
+2011_09_26/2011_09_26_drive_0095_sync 73 l
+2011_09_26/2011_09_26_drive_0028_sync 345 r
+2011_10_03/2011_10_03_drive_0034_sync 698 r
+2011_09_30/2011_09_30_drive_0028_sync 1672 r
+2011_10_03/2011_10_03_drive_0034_sync 4183 r
+2011_10_03/2011_10_03_drive_0034_sync 3248 l
+2011_09_26/2011_09_26_drive_0095_sync 229 r
+2011_09_26/2011_09_26_drive_0051_sync 35 r
+2011_09_26/2011_09_26_drive_0091_sync 77 l
+2011_09_26/2011_09_26_drive_0022_sync 396 l
+2011_09_30/2011_09_30_drive_0020_sync 897 r
+2011_10_03/2011_10_03_drive_0034_sync 734 r
+2011_09_29/2011_09_29_drive_0026_sync 150 r
+2011_09_30/2011_09_30_drive_0034_sync 1215 r
+2011_10_03/2011_10_03_drive_0034_sync 3094 r
+2011_09_30/2011_09_30_drive_0034_sync 1111 r
+2011_10_03/2011_10_03_drive_0034_sync 1933 l
+2011_09_30/2011_09_30_drive_0034_sync 803 l
+2011_09_26/2011_09_26_drive_0087_sync 511 r
+2011_10_03/2011_10_03_drive_0034_sync 3552 l
+2011_09_29/2011_09_29_drive_0026_sync 125 l
+2011_10_03/2011_10_03_drive_0042_sync 567 l
+2011_09_30/2011_09_30_drive_0033_sync 1281 l
+2011_10_03/2011_10_03_drive_0034_sync 673 l
+2011_09_26/2011_09_26_drive_0015_sync 184 l
+2011_09_26/2011_09_26_drive_0028_sync 147 l
+2011_09_30/2011_09_30_drive_0028_sync 2937 l
+2011_09_30/2011_09_30_drive_0033_sync 1171 r
+2011_09_26/2011_09_26_drive_0091_sync 310 l
+2011_09_30/2011_09_30_drive_0034_sync 849 r
+2011_09_26/2011_09_26_drive_0060_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 2653 r
+2011_10_03/2011_10_03_drive_0034_sync 696 r
+2011_09_26/2011_09_26_drive_0087_sync 211 r
+2011_09_26/2011_09_26_drive_0032_sync 289 r
+2011_09_30/2011_09_30_drive_0034_sync 183 l
+2011_09_26/2011_09_26_drive_0028_sync 142 r
+2011_10_03/2011_10_03_drive_0034_sync 3021 r
+2011_09_30/2011_09_30_drive_0033_sync 952 l
+2011_09_26/2011_09_26_drive_0022_sync 650 l
+2011_09_26/2011_09_26_drive_0087_sync 403 r
+2011_10_03/2011_10_03_drive_0034_sync 319 l
+2011_09_26/2011_09_26_drive_0087_sync 283 r
+2011_09_26/2011_09_26_drive_0032_sync 37 l
+2011_09_26/2011_09_26_drive_0018_sync 135 r
+2011_09_26/2011_09_26_drive_0011_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 3717 l
+2011_09_30/2011_09_30_drive_0033_sync 955 l
+2011_10_03/2011_10_03_drive_0034_sync 2968 r
+2011_09_30/2011_09_30_drive_0028_sync 73 r
+2011_09_26/2011_09_26_drive_0017_sync 9 l
+2011_09_26/2011_09_26_drive_0113_sync 12 l
+2011_10_03/2011_10_03_drive_0034_sync 4396 r
+2011_09_26/2011_09_26_drive_0035_sync 50 r
+2011_09_30/2011_09_30_drive_0033_sync 547 l
+2011_09_30/2011_09_30_drive_0028_sync 1452 r
+2011_10_03/2011_10_03_drive_0034_sync 453 l
+2011_09_26/2011_09_26_drive_0061_sync 615 l
+2011_09_30/2011_09_30_drive_0028_sync 3313 l
+2011_09_30/2011_09_30_drive_0033_sync 1456 l
+2011_10_03/2011_10_03_drive_0042_sync 401 l
+2011_09_26/2011_09_26_drive_0032_sync 150 r
+2011_09_26/2011_09_26_drive_0014_sync 211 r
+2011_09_30/2011_09_30_drive_0033_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 1047 l
+2011_09_26/2011_09_26_drive_0091_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 792 r
+2011_10_03/2011_10_03_drive_0034_sync 4589 l
+2011_09_30/2011_09_30_drive_0028_sync 2319 l
+2011_10_03/2011_10_03_drive_0042_sync 319 r
+2011_10_03/2011_10_03_drive_0034_sync 4077 r
+2011_10_03/2011_10_03_drive_0034_sync 816 r
+2011_09_26/2011_09_26_drive_0032_sync 268 l
+2011_09_26/2011_09_26_drive_0022_sync 493 l
+2011_09_26/2011_09_26_drive_0087_sync 130 l
+2011_09_26/2011_09_26_drive_0070_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 3953 l
+2011_09_30/2011_09_30_drive_0028_sync 4952 l
+2011_09_26/2011_09_26_drive_0087_sync 637 l
+2011_10_03/2011_10_03_drive_0034_sync 3609 l
+2011_09_26/2011_09_26_drive_0039_sync 370 r
+2011_09_30/2011_09_30_drive_0033_sync 1102 l
+2011_09_30/2011_09_30_drive_0028_sync 3974 r
+2011_09_30/2011_09_30_drive_0034_sync 906 l
+2011_09_30/2011_09_30_drive_0028_sync 3838 l
+2011_10_03/2011_10_03_drive_0034_sync 3322 r
+2011_10_03/2011_10_03_drive_0034_sync 1778 r
+2011_10_03/2011_10_03_drive_0034_sync 353 r
+2011_10_03/2011_10_03_drive_0034_sync 1933 r
+2011_10_03/2011_10_03_drive_0034_sync 4244 r
+2011_09_26/2011_09_26_drive_0061_sync 283 r
+2011_10_03/2011_10_03_drive_0042_sync 935 l
+2011_10_03/2011_10_03_drive_0034_sync 727 r
+2011_09_30/2011_09_30_drive_0028_sync 1317 l
+2011_09_26/2011_09_26_drive_0091_sync 233 r
+2011_10_03/2011_10_03_drive_0034_sync 1357 l
+2011_09_30/2011_09_30_drive_0033_sync 371 l
+2011_09_26/2011_09_26_drive_0061_sync 369 l
+2011_09_26/2011_09_26_drive_0014_sync 187 r
+2011_10_03/2011_10_03_drive_0034_sync 3829 l
+2011_10_03/2011_10_03_drive_0034_sync 1764 r
+2011_09_30/2011_09_30_drive_0028_sync 4206 l
+2011_09_26/2011_09_26_drive_0017_sync 26 r
+2011_09_26/2011_09_26_drive_0051_sync 98 r
+2011_09_26/2011_09_26_drive_0061_sync 566 r
+2011_09_26/2011_09_26_drive_0022_sync 717 r
+2011_09_26/2011_09_26_drive_0022_sync 589 r
+2011_09_30/2011_09_30_drive_0033_sync 386 l
+2011_09_30/2011_09_30_drive_0028_sync 4291 l
+2011_09_26/2011_09_26_drive_0014_sync 42 l
+2011_09_30/2011_09_30_drive_0028_sync 4552 r
+2011_10_03/2011_10_03_drive_0034_sync 1479 l
+2011_09_26/2011_09_26_drive_0070_sync 287 r
+2011_09_26/2011_09_26_drive_0022_sync 780 l
+2011_09_30/2011_09_30_drive_0028_sync 794 l
+2011_09_30/2011_09_30_drive_0028_sync 3155 r
+2011_09_30/2011_09_30_drive_0028_sync 3788 r
+2011_09_30/2011_09_30_drive_0028_sync 2856 r
+2011_09_26/2011_09_26_drive_0091_sync 39 r
+2011_09_26/2011_09_26_drive_0028_sync 275 r
+2011_09_30/2011_09_30_drive_0033_sync 221 r
+2011_09_26/2011_09_26_drive_0019_sync 249 r
+2011_09_26/2011_09_26_drive_0022_sync 517 r
+2011_10_03/2011_10_03_drive_0034_sync 3477 r
+2011_09_26/2011_09_26_drive_0022_sync 354 r
+2011_09_26/2011_09_26_drive_0019_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 984 r
+2011_09_26/2011_09_26_drive_0104_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 2338 r
+2011_09_26/2011_09_26_drive_0019_sync 84 l
+2011_09_30/2011_09_30_drive_0020_sync 948 l
+2011_09_30/2011_09_30_drive_0020_sync 591 r
+2011_09_26/2011_09_26_drive_0051_sync 306 r
+2011_09_30/2011_09_30_drive_0033_sync 865 l
+2011_10_03/2011_10_03_drive_0034_sync 2386 r
+2011_10_03/2011_10_03_drive_0034_sync 3345 r
+2011_09_30/2011_09_30_drive_0028_sync 3714 r
+2011_09_30/2011_09_30_drive_0028_sync 3089 l
+2011_09_26/2011_09_26_drive_0032_sync 186 l
+2011_09_30/2011_09_30_drive_0028_sync 4727 l
+2011_10_03/2011_10_03_drive_0042_sync 680 r
+2011_09_30/2011_09_30_drive_0033_sync 1162 l
+2011_09_26/2011_09_26_drive_0028_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 587 l
+2011_09_26/2011_09_26_drive_0028_sync 425 l
+2011_10_03/2011_10_03_drive_0034_sync 50 r
+2011_10_03/2011_10_03_drive_0034_sync 354 l
+2011_09_30/2011_09_30_drive_0028_sync 3684 l
+2011_09_26/2011_09_26_drive_0070_sync 233 l
+2011_09_26/2011_09_26_drive_0022_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 3464 l
+2011_10_03/2011_10_03_drive_0034_sync 4049 l
+2011_10_03/2011_10_03_drive_0034_sync 3996 l
+2011_09_26/2011_09_26_drive_0019_sync 428 l
+2011_09_26/2011_09_26_drive_0057_sync 228 r
+2011_09_30/2011_09_30_drive_0028_sync 3480 l
+2011_09_26/2011_09_26_drive_0057_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 3844 l
+2011_10_03/2011_10_03_drive_0034_sync 26 r
+2011_10_03/2011_10_03_drive_0042_sync 625 r
+2011_09_30/2011_09_30_drive_0028_sync 3050 l
+2011_09_26/2011_09_26_drive_0039_sync 314 l
+2011_09_26/2011_09_26_drive_0039_sync 234 r
+2011_09_26/2011_09_26_drive_0070_sync 335 r
+2011_09_30/2011_09_30_drive_0028_sync 2793 l
+2011_09_26/2011_09_26_drive_0070_sync 247 l
+2011_09_30/2011_09_30_drive_0028_sync 4302 r
+2011_09_30/2011_09_30_drive_0034_sync 1127 l
+2011_09_26/2011_09_26_drive_0070_sync 19 r
+2011_10_03/2011_10_03_drive_0034_sync 2922 r
+2011_10_03/2011_10_03_drive_0042_sync 24 l
+2011_09_26/2011_09_26_drive_0011_sync 4 r
+2011_09_30/2011_09_30_drive_0028_sync 4249 l
+2011_09_30/2011_09_30_drive_0034_sync 1167 l
+2011_09_26/2011_09_26_drive_0019_sync 14 r
+2011_09_26/2011_09_26_drive_0061_sync 576 l
+2011_10_03/2011_10_03_drive_0034_sync 1388 l
+2011_09_30/2011_09_30_drive_0028_sync 910 r
+2011_09_30/2011_09_30_drive_0028_sync 3899 r
+2011_10_03/2011_10_03_drive_0034_sync 2211 l
+2011_09_29/2011_09_29_drive_0004_sync 169 r
+2011_10_03/2011_10_03_drive_0034_sync 1642 l
+2011_09_30/2011_09_30_drive_0020_sync 29 l
+2011_09_26/2011_09_26_drive_0011_sync 145 l
+2011_10_03/2011_10_03_drive_0034_sync 2376 r
+2011_10_03/2011_10_03_drive_0034_sync 46 l
+2011_10_03/2011_10_03_drive_0042_sync 746 l
+2011_10_03/2011_10_03_drive_0034_sync 2856 l
+2011_10_03/2011_10_03_drive_0042_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 2783 r
+2011_09_26/2011_09_26_drive_0091_sync 338 r
+2011_09_26/2011_09_26_drive_0032_sync 205 r
+2011_09_30/2011_09_30_drive_0020_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 657 l
+2011_09_26/2011_09_26_drive_0019_sync 348 r
+2011_10_03/2011_10_03_drive_0034_sync 3749 l
+2011_09_30/2011_09_30_drive_0033_sync 848 l
+2011_09_26/2011_09_26_drive_0022_sync 73 l
+2011_10_03/2011_10_03_drive_0034_sync 2890 r
+2011_09_26/2011_09_26_drive_0104_sync 246 l
+2011_10_03/2011_10_03_drive_0034_sync 571 r
+2011_10_03/2011_10_03_drive_0034_sync 2261 l
+2011_09_26/2011_09_26_drive_0091_sync 38 r
+2011_09_26/2011_09_26_drive_0032_sync 324 l
+2011_09_30/2011_09_30_drive_0028_sync 3463 l
+2011_10_03/2011_10_03_drive_0034_sync 1171 l
+2011_09_26/2011_09_26_drive_0019_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 4012 r
+2011_09_30/2011_09_30_drive_0033_sync 1479 r
+2011_09_26/2011_09_26_drive_0061_sync 597 r
+2011_09_26/2011_09_26_drive_0011_sync 111 r
+2011_09_30/2011_09_30_drive_0020_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 2019 r
+2011_09_26/2011_09_26_drive_0051_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 492 r
+2011_10_03/2011_10_03_drive_0034_sync 4144 l
+2011_10_03/2011_10_03_drive_0034_sync 1939 l
+2011_09_30/2011_09_30_drive_0033_sync 597 r
+2011_09_30/2011_09_30_drive_0034_sync 257 l
+2011_10_03/2011_10_03_drive_0034_sync 2326 r
+2011_09_30/2011_09_30_drive_0020_sync 59 r
+2011_10_03/2011_10_03_drive_0034_sync 4456 r
+2011_09_26/2011_09_26_drive_0032_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 4361 l
+2011_10_03/2011_10_03_drive_0034_sync 2089 r
+2011_10_03/2011_10_03_drive_0034_sync 4342 l
+2011_09_30/2011_09_30_drive_0028_sync 512 r
+2011_09_30/2011_09_30_drive_0028_sync 3239 r
+2011_09_26/2011_09_26_drive_0022_sync 775 r
+2011_09_26/2011_09_26_drive_0091_sync 255 r
+2011_10_03/2011_10_03_drive_0042_sync 115 l
+2011_09_30/2011_09_30_drive_0028_sync 2981 l
+2011_10_03/2011_10_03_drive_0034_sync 2386 l
+2011_09_30/2011_09_30_drive_0028_sync 3655 l
+2011_10_03/2011_10_03_drive_0034_sync 1932 l
+2011_09_30/2011_09_30_drive_0020_sync 503 r
+2011_09_26/2011_09_26_drive_0051_sync 119 l
+2011_10_03/2011_10_03_drive_0034_sync 1251 r
+2011_10_03/2011_10_03_drive_0034_sync 4629 r
+2011_09_28/2011_09_28_drive_0001_sync 58 r
+2011_09_30/2011_09_30_drive_0028_sync 698 r
+2011_10_03/2011_10_03_drive_0042_sync 890 r
+2011_09_26/2011_09_26_drive_0087_sync 535 l
+2011_10_03/2011_10_03_drive_0042_sync 652 r
+2011_10_03/2011_10_03_drive_0034_sync 4481 l
+2011_09_30/2011_09_30_drive_0028_sync 4627 r
+2011_10_03/2011_10_03_drive_0042_sync 959 l
+2011_09_30/2011_09_30_drive_0034_sync 1098 r
+2011_10_03/2011_10_03_drive_0042_sync 949 r
+2011_09_30/2011_09_30_drive_0033_sync 1519 l
+2011_10_03/2011_10_03_drive_0034_sync 3458 r
+2011_09_30/2011_09_30_drive_0033_sync 437 l
+2011_09_26/2011_09_26_drive_0061_sync 165 l
+2011_09_30/2011_09_30_drive_0028_sync 149 r
+2011_09_26/2011_09_26_drive_0091_sync 88 r
+2011_09_30/2011_09_30_drive_0028_sync 1947 l
+2011_09_26/2011_09_26_drive_0022_sync 461 l
+2011_09_26/2011_09_26_drive_0015_sync 88 l
+2011_10_03/2011_10_03_drive_0034_sync 3770 r
+2011_09_26/2011_09_26_drive_0060_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 1484 l
+2011_09_30/2011_09_30_drive_0020_sync 1013 r
+2011_09_26/2011_09_26_drive_0022_sync 573 l
+2011_09_26/2011_09_26_drive_0070_sync 88 r
+2011_09_26/2011_09_26_drive_0057_sync 355 r
+2011_09_30/2011_09_30_drive_0028_sync 1287 l
+2011_10_03/2011_10_03_drive_0034_sync 3515 l
+2011_09_26/2011_09_26_drive_0087_sync 232 r
+2011_09_30/2011_09_30_drive_0033_sync 350 r
+2011_09_30/2011_09_30_drive_0020_sync 541 l
+2011_09_26/2011_09_26_drive_0022_sync 256 r
+2011_09_30/2011_09_30_drive_0028_sync 3869 r
+2011_09_29/2011_09_29_drive_0026_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 4635 r
+2011_10_03/2011_10_03_drive_0034_sync 3498 r
+2011_10_03/2011_10_03_drive_0034_sync 1492 l
+2011_09_30/2011_09_30_drive_0028_sync 1551 r
+2011_09_26/2011_09_26_drive_0035_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 1792 r
+2011_09_30/2011_09_30_drive_0028_sync 4340 l
+2011_09_26/2011_09_26_drive_0019_sync 33 l
+2011_09_30/2011_09_30_drive_0028_sync 3291 l
+2011_09_30/2011_09_30_drive_0028_sync 1367 l
+2011_09_26/2011_09_26_drive_0022_sync 43 r
+2011_09_30/2011_09_30_drive_0020_sync 479 l
+2011_09_30/2011_09_30_drive_0028_sync 3554 l
+2011_09_30/2011_09_30_drive_0028_sync 3461 l
+2011_09_26/2011_09_26_drive_0091_sync 123 l
+2011_10_03/2011_10_03_drive_0034_sync 3836 r
+2011_09_26/2011_09_26_drive_0005_sync 54 r
+2011_09_30/2011_09_30_drive_0020_sync 362 r
+2011_09_26/2011_09_26_drive_0022_sync 679 l
+2011_09_26/2011_09_26_drive_0104_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 3059 r
+2011_09_26/2011_09_26_drive_0022_sync 49 r
+2011_09_30/2011_09_30_drive_0028_sync 1992 r
+2011_09_26/2011_09_26_drive_0091_sync 296 l
+2011_09_26/2011_09_26_drive_0039_sync 91 l
+2011_09_26/2011_09_26_drive_0022_sync 430 l
+2011_09_26/2011_09_26_drive_0070_sync 379 l
+2011_09_30/2011_09_30_drive_0020_sync 248 l
+2011_09_26/2011_09_26_drive_0005_sync 10 r
+2011_09_30/2011_09_30_drive_0033_sync 1299 r
+2011_10_03/2011_10_03_drive_0034_sync 1632 r
+2011_10_03/2011_10_03_drive_0034_sync 3954 l
+2011_09_30/2011_09_30_drive_0028_sync 1742 l
+2011_09_29/2011_09_29_drive_0026_sync 115 l
+2011_10_03/2011_10_03_drive_0034_sync 3407 r
+2011_09_26/2011_09_26_drive_0070_sync 200 l
+2011_09_26/2011_09_26_drive_0018_sync 185 l
+2011_09_26/2011_09_26_drive_0061_sync 594 r
+2011_09_26/2011_09_26_drive_0070_sync 278 r
+2011_09_30/2011_09_30_drive_0034_sync 88 l
+2011_09_30/2011_09_30_drive_0028_sync 3053 r
+2011_09_30/2011_09_30_drive_0028_sync 2806 l
+2011_09_30/2011_09_30_drive_0033_sync 224 r
+2011_09_30/2011_09_30_drive_0033_sync 1535 l
+2011_09_30/2011_09_30_drive_0028_sync 1834 r
+2011_09_26/2011_09_26_drive_0091_sync 31 l
+2011_10_03/2011_10_03_drive_0042_sync 312 l
+2011_09_26/2011_09_26_drive_0087_sync 369 r
+2011_09_30/2011_09_30_drive_0033_sync 789 r
+2011_10_03/2011_10_03_drive_0034_sync 1984 l
+2011_09_26/2011_09_26_drive_0061_sync 474 l
+2011_09_30/2011_09_30_drive_0020_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 1468 l
+2011_10_03/2011_10_03_drive_0034_sync 1924 r
+2011_09_30/2011_09_30_drive_0028_sync 2936 r
+2011_10_03/2011_10_03_drive_0034_sync 4175 r
+2011_09_30/2011_09_30_drive_0028_sync 3641 r
+2011_09_30/2011_09_30_drive_0034_sync 943 l
+2011_09_30/2011_09_30_drive_0033_sync 720 l
+2011_09_30/2011_09_30_drive_0028_sync 2983 r
+2011_09_30/2011_09_30_drive_0033_sync 477 l
+2011_10_03/2011_10_03_drive_0034_sync 3544 l
+2011_09_26/2011_09_26_drive_0019_sync 1 r
+2011_10_03/2011_10_03_drive_0034_sync 473 r
+2011_10_03/2011_10_03_drive_0034_sync 4110 l
+2011_09_30/2011_09_30_drive_0028_sync 982 l
+2011_09_30/2011_09_30_drive_0028_sync 3468 r
+2011_10_03/2011_10_03_drive_0034_sync 236 l
+2011_09_30/2011_09_30_drive_0033_sync 1534 r
+2011_09_30/2011_09_30_drive_0033_sync 1426 r
+2011_10_03/2011_10_03_drive_0034_sync 2722 r
+2011_09_30/2011_09_30_drive_0028_sync 3852 l
+2011_09_26/2011_09_26_drive_0070_sync 246 l
+2011_09_30/2011_09_30_drive_0033_sync 536 l
+2011_10_03/2011_10_03_drive_0034_sync 1262 r
+2011_09_26/2011_09_26_drive_0039_sync 35 l
+2011_09_30/2011_09_30_drive_0033_sync 1117 r
+2011_09_26/2011_09_26_drive_0061_sync 78 r
+2011_09_30/2011_09_30_drive_0034_sync 1165 r
+2011_10_03/2011_10_03_drive_0034_sync 3921 r
+2011_10_03/2011_10_03_drive_0034_sync 2851 l
+2011_09_30/2011_09_30_drive_0020_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 4716 r
+2011_09_30/2011_09_30_drive_0028_sync 4489 l
+2011_09_26/2011_09_26_drive_0022_sync 46 l
+2011_10_03/2011_10_03_drive_0034_sync 4538 r
+2011_09_30/2011_09_30_drive_0033_sync 1193 l
+2011_09_26/2011_09_26_drive_0028_sync 36 l
+2011_10_03/2011_10_03_drive_0042_sync 791 l
+2011_10_03/2011_10_03_drive_0034_sync 3416 r
+2011_09_30/2011_09_30_drive_0028_sync 2588 r
+2011_09_26/2011_09_26_drive_0051_sync 32 r
+2011_09_26/2011_09_26_drive_0057_sync 213 r
+2011_09_30/2011_09_30_drive_0033_sync 1329 r
+2011_09_30/2011_09_30_drive_0028_sync 2391 r
+2011_09_30/2011_09_30_drive_0028_sync 4466 l
+2011_09_26/2011_09_26_drive_0061_sync 134 r
+2011_09_26/2011_09_26_drive_0087_sync 155 r
+2011_09_26/2011_09_26_drive_0018_sync 55 r
+2011_09_30/2011_09_30_drive_0033_sync 266 r
+2011_09_26/2011_09_26_drive_0017_sync 84 l
+2011_10_03/2011_10_03_drive_0034_sync 3509 r
+2011_10_03/2011_10_03_drive_0034_sync 2104 r
+2011_09_26/2011_09_26_drive_0015_sync 174 l
+2011_09_30/2011_09_30_drive_0028_sync 1655 l
+2011_09_26/2011_09_26_drive_0057_sync 192 l
+2011_09_26/2011_09_26_drive_0028_sync 151 r
+2011_10_03/2011_10_03_drive_0034_sync 4365 l
+2011_09_30/2011_09_30_drive_0020_sync 701 l
+2011_09_30/2011_09_30_drive_0028_sync 1017 l
+2011_09_30/2011_09_30_drive_0028_sync 4662 r
+2011_09_30/2011_09_30_drive_0034_sync 1207 l
+2011_09_26/2011_09_26_drive_0091_sync 291 r
+2011_09_30/2011_09_30_drive_0034_sync 992 r
+2011_09_30/2011_09_30_drive_0028_sync 4042 l
+2011_09_26/2011_09_26_drive_0022_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 4885 l
+2011_10_03/2011_10_03_drive_0034_sync 1265 r
+2011_10_03/2011_10_03_drive_0034_sync 3471 r
+2011_09_26/2011_09_26_drive_0095_sync 19 r
+2011_09_30/2011_09_30_drive_0020_sync 677 l
+2011_09_26/2011_09_26_drive_0091_sync 263 r
+2011_09_30/2011_09_30_drive_0028_sync 4851 l
+2011_09_30/2011_09_30_drive_0028_sync 5164 l
+2011_09_26/2011_09_26_drive_0005_sync 3 l
+2011_10_03/2011_10_03_drive_0034_sync 3071 r
+2011_09_30/2011_09_30_drive_0034_sync 907 r
+2011_09_26/2011_09_26_drive_0019_sync 448 r
+2011_09_26/2011_09_26_drive_0087_sync 478 r
+2011_09_26/2011_09_26_drive_0019_sync 111 l
+2011_09_30/2011_09_30_drive_0020_sync 230 l
+2011_10_03/2011_10_03_drive_0034_sync 2785 l
+2011_09_30/2011_09_30_drive_0028_sync 2329 r
+2011_10_03/2011_10_03_drive_0034_sync 3371 l
+2011_09_30/2011_09_30_drive_0028_sync 2534 l
+2011_09_30/2011_09_30_drive_0028_sync 2751 l
+2011_10_03/2011_10_03_drive_0034_sync 930 l
+2011_09_26/2011_09_26_drive_0019_sync 52 r
+2011_10_03/2011_10_03_drive_0042_sync 412 l
+2011_10_03/2011_10_03_drive_0034_sync 4016 r
+2011_09_30/2011_09_30_drive_0033_sync 467 l
+2011_09_26/2011_09_26_drive_0035_sync 22 l
+2011_09_26/2011_09_26_drive_0057_sync 164 r
+2011_09_30/2011_09_30_drive_0034_sync 656 r
+2011_09_26/2011_09_26_drive_0017_sync 22 l
+2011_09_30/2011_09_30_drive_0020_sync 546 r
+2011_09_30/2011_09_30_drive_0028_sync 1169 l
+2011_09_30/2011_09_30_drive_0028_sync 5071 l
+2011_09_26/2011_09_26_drive_0015_sync 83 r
+2011_09_30/2011_09_30_drive_0034_sync 593 l
+2011_09_30/2011_09_30_drive_0028_sync 4857 r
+2011_09_30/2011_09_30_drive_0028_sync 2909 l
+2011_10_03/2011_10_03_drive_0034_sync 1400 l
+2011_09_26/2011_09_26_drive_0070_sync 215 r
+2011_09_26/2011_09_26_drive_0028_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 877 l
+2011_09_26/2011_09_26_drive_0057_sync 305 l
+2011_09_26/2011_09_26_drive_0028_sync 196 l
+2011_09_26/2011_09_26_drive_0022_sync 239 r
+2011_09_30/2011_09_30_drive_0028_sync 5097 r
+2011_10_03/2011_10_03_drive_0034_sync 2118 l
+2011_10_03/2011_10_03_drive_0042_sync 581 r
+2011_09_30/2011_09_30_drive_0028_sync 3679 l
+2011_09_30/2011_09_30_drive_0028_sync 3750 l
+2011_09_26/2011_09_26_drive_0015_sync 263 r
+2011_09_26/2011_09_26_drive_0057_sync 57 r
+2011_09_30/2011_09_30_drive_0028_sync 5125 r
+2011_10_03/2011_10_03_drive_0034_sync 1673 r
+2011_09_30/2011_09_30_drive_0020_sync 344 r
+2011_10_03/2011_10_03_drive_0034_sync 2759 l
+2011_10_03/2011_10_03_drive_0034_sync 1409 r
+2011_09_30/2011_09_30_drive_0020_sync 114 r
+2011_09_30/2011_09_30_drive_0034_sync 603 r
+2011_09_26/2011_09_26_drive_0022_sync 670 l
+2011_10_03/2011_10_03_drive_0034_sync 2853 l
+2011_09_30/2011_09_30_drive_0020_sync 362 l
+2011_10_03/2011_10_03_drive_0034_sync 1866 l
+2011_09_30/2011_09_30_drive_0028_sync 1338 r
+2011_09_29/2011_09_29_drive_0004_sync 338 r
+2011_09_30/2011_09_30_drive_0028_sync 4492 r
+2011_09_30/2011_09_30_drive_0028_sync 4064 r
+2011_09_26/2011_09_26_drive_0015_sync 245 l
+2011_09_30/2011_09_30_drive_0028_sync 380 r
+2011_09_30/2011_09_30_drive_0020_sync 707 l
+2011_10_03/2011_10_03_drive_0034_sync 1731 r
+2011_09_30/2011_09_30_drive_0020_sync 653 r
+2011_09_30/2011_09_30_drive_0033_sync 1304 r
+2011_09_26/2011_09_26_drive_0015_sync 223 r
+2011_09_30/2011_09_30_drive_0028_sync 1405 l
+2011_09_26/2011_09_26_drive_0015_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 1391 l
+2011_10_03/2011_10_03_drive_0034_sync 1707 r
+2011_09_26/2011_09_26_drive_0018_sync 257 r
+2011_09_30/2011_09_30_drive_0033_sync 664 r
+2011_09_26/2011_09_26_drive_0087_sync 627 r
+2011_09_26/2011_09_26_drive_0060_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 4132 l
+2011_09_30/2011_09_30_drive_0034_sync 389 r
+2011_09_30/2011_09_30_drive_0033_sync 1357 l
+2011_09_30/2011_09_30_drive_0028_sync 994 l
+2011_09_30/2011_09_30_drive_0028_sync 5130 l
+2011_09_26/2011_09_26_drive_0070_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 3053 r
+2011_09_30/2011_09_30_drive_0033_sync 241 r
+2011_10_03/2011_10_03_drive_0034_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 3846 r
+2011_09_26/2011_09_26_drive_0087_sync 639 r
+2011_09_30/2011_09_30_drive_0028_sync 2910 r
+2011_09_30/2011_09_30_drive_0028_sync 1280 r
+2011_10_03/2011_10_03_drive_0034_sync 3759 r
+2011_09_30/2011_09_30_drive_0034_sync 231 l
+2011_09_26/2011_09_26_drive_0019_sync 433 l
+2011_10_03/2011_10_03_drive_0042_sync 202 l
+2011_09_26/2011_09_26_drive_0022_sync 382 l
+2011_09_30/2011_09_30_drive_0028_sync 1685 l
+2011_09_30/2011_09_30_drive_0034_sync 718 r
+2011_09_26/2011_09_26_drive_0032_sync 380 r
+2011_09_26/2011_09_26_drive_0015_sync 49 l
+2011_09_30/2011_09_30_drive_0028_sync 4639 r
+2011_09_26/2011_09_26_drive_0087_sync 583 l
+2011_09_30/2011_09_30_drive_0028_sync 3105 l
+2011_10_03/2011_10_03_drive_0042_sync 312 r
+2011_09_26/2011_09_26_drive_0022_sync 285 r
+2011_09_28/2011_09_28_drive_0001_sync 35 l
+2011_10_03/2011_10_03_drive_0034_sync 3448 l
+2011_09_26/2011_09_26_drive_0019_sync 220 r
+2011_09_30/2011_09_30_drive_0028_sync 1568 l
+2011_10_03/2011_10_03_drive_0034_sync 3903 r
+2011_09_30/2011_09_30_drive_0020_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 2615 r
+2011_09_30/2011_09_30_drive_0020_sync 825 r
+2011_09_30/2011_09_30_drive_0028_sync 1103 l
+2011_10_03/2011_10_03_drive_0042_sync 219 r
+2011_10_03/2011_10_03_drive_0034_sync 2352 l
+2011_09_30/2011_09_30_drive_0028_sync 97 l
+2011_09_30/2011_09_30_drive_0028_sync 4072 l
+2011_09_26/2011_09_26_drive_0061_sync 489 r
+2011_09_30/2011_09_30_drive_0034_sync 1092 l
+2011_09_30/2011_09_30_drive_0028_sync 1792 r
+2011_09_30/2011_09_30_drive_0028_sync 1837 l
+2011_09_30/2011_09_30_drive_0033_sync 1442 l
+2011_10_03/2011_10_03_drive_0034_sync 1401 r
+2011_10_03/2011_10_03_drive_0034_sync 960 l
+2011_10_03/2011_10_03_drive_0034_sync 1652 l
+2011_10_03/2011_10_03_drive_0034_sync 1325 l
+2011_09_30/2011_09_30_drive_0033_sync 364 l
+2011_09_30/2011_09_30_drive_0028_sync 1689 l
+2011_10_03/2011_10_03_drive_0034_sync 2035 r
+2011_10_03/2011_10_03_drive_0034_sync 1300 r
+2011_09_26/2011_09_26_drive_0057_sync 13 l
+2011_09_30/2011_09_30_drive_0034_sync 429 l
+2011_10_03/2011_10_03_drive_0034_sync 3039 l
+2011_10_03/2011_10_03_drive_0034_sync 3138 r
+2011_10_03/2011_10_03_drive_0042_sync 293 l
+2011_09_26/2011_09_26_drive_0028_sync 113 r
+2011_09_30/2011_09_30_drive_0033_sync 1223 r
+2011_10_03/2011_10_03_drive_0034_sync 4142 r
+2011_09_30/2011_09_30_drive_0028_sync 4569 l
+2011_09_30/2011_09_30_drive_0033_sync 320 r
+2011_10_03/2011_10_03_drive_0034_sync 4430 l
+2011_09_26/2011_09_26_drive_0061_sync 347 r
+2011_09_26/2011_09_26_drive_0028_sync 288 r
+2011_10_03/2011_10_03_drive_0034_sync 3958 l
+2011_09_30/2011_09_30_drive_0028_sync 1482 l
+2011_09_30/2011_09_30_drive_0028_sync 3810 r
+2011_09_30/2011_09_30_drive_0033_sync 1467 r
+2011_09_26/2011_09_26_drive_0005_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 1596 r
+2011_10_03/2011_10_03_drive_0034_sync 1966 l
+2011_09_30/2011_09_30_drive_0028_sync 3940 r
+2011_10_03/2011_10_03_drive_0034_sync 3025 l
+2011_09_26/2011_09_26_drive_0104_sync 191 l
+2011_09_30/2011_09_30_drive_0028_sync 511 l
+2011_09_26/2011_09_26_drive_0057_sync 33 l
+2011_09_30/2011_09_30_drive_0034_sync 245 r
+2011_09_30/2011_09_30_drive_0033_sync 629 l
+2011_09_30/2011_09_30_drive_0028_sync 4168 r
+2011_09_26/2011_09_26_drive_0087_sync 368 r
+2011_09_30/2011_09_30_drive_0028_sync 2943 r
+2011_09_26/2011_09_26_drive_0039_sync 359 l
+2011_10_03/2011_10_03_drive_0034_sync 1660 r
+2011_09_30/2011_09_30_drive_0028_sync 3499 r
+2011_09_30/2011_09_30_drive_0028_sync 2170 l
+2011_09_26/2011_09_26_drive_0022_sync 357 l
+2011_10_03/2011_10_03_drive_0034_sync 1269 r
+2011_09_29/2011_09_29_drive_0004_sync 276 r
+2011_09_26/2011_09_26_drive_0051_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 4122 r
+2011_10_03/2011_10_03_drive_0034_sync 4035 l
+2011_09_30/2011_09_30_drive_0020_sync 795 l
+2011_09_30/2011_09_30_drive_0028_sync 4390 r
+2011_09_26/2011_09_26_drive_0022_sync 64 l
+2011_09_30/2011_09_30_drive_0033_sync 1579 r
+2011_09_30/2011_09_30_drive_0028_sync 2137 r
+2011_09_30/2011_09_30_drive_0028_sync 4576 r
+2011_09_30/2011_09_30_drive_0034_sync 411 r
+2011_09_30/2011_09_30_drive_0028_sync 2008 l
+2011_09_30/2011_09_30_drive_0028_sync 3134 l
+2011_09_26/2011_09_26_drive_0087_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 3332 r
+2011_09_30/2011_09_30_drive_0020_sync 725 r
+2011_09_26/2011_09_26_drive_0057_sync 137 r
+2011_09_30/2011_09_30_drive_0028_sync 5133 l
+2011_10_03/2011_10_03_drive_0034_sync 2488 r
+2011_09_26/2011_09_26_drive_0091_sync 182 r
+2011_09_26/2011_09_26_drive_0061_sync 231 l
+2011_10_03/2011_10_03_drive_0034_sync 3525 r
+2011_10_03/2011_10_03_drive_0034_sync 4559 r
+2011_09_26/2011_09_26_drive_0022_sync 627 l
+2011_09_26/2011_09_26_drive_0015_sync 163 l
+2011_09_26/2011_09_26_drive_0087_sync 460 l
+2011_09_26/2011_09_26_drive_0061_sync 406 r
+2011_09_26/2011_09_26_drive_0057_sync 22 l
+2011_10_03/2011_10_03_drive_0034_sync 2708 r
+2011_10_03/2011_10_03_drive_0034_sync 114 l
+2011_09_30/2011_09_30_drive_0033_sync 236 r
+2011_09_30/2011_09_30_drive_0033_sync 634 l
+2011_09_26/2011_09_26_drive_0028_sync 17 r
+2011_09_26/2011_09_26_drive_0039_sync 143 l
+2011_09_30/2011_09_30_drive_0020_sync 516 r
+2011_10_03/2011_10_03_drive_0034_sync 4444 l
+2011_10_03/2011_10_03_drive_0034_sync 2430 r
+2011_09_26/2011_09_26_drive_0070_sync 304 l
+2011_09_30/2011_09_30_drive_0028_sync 1587 l
+2011_09_30/2011_09_30_drive_0028_sync 2911 l
+2011_09_26/2011_09_26_drive_0087_sync 295 r
+2011_09_30/2011_09_30_drive_0034_sync 785 r
+2011_09_26/2011_09_26_drive_0039_sync 139 r
+2011_09_30/2011_09_30_drive_0028_sync 2532 l
+2011_10_03/2011_10_03_drive_0034_sync 3783 l
+2011_09_30/2011_09_30_drive_0034_sync 785 l
+2011_10_03/2011_10_03_drive_0042_sync 197 r
+2011_09_26/2011_09_26_drive_0001_sync 92 r
+2011_09_30/2011_09_30_drive_0033_sync 1159 l
+2011_09_26/2011_09_26_drive_0028_sync 210 l
+2011_09_30/2011_09_30_drive_0020_sync 1005 l
+2011_09_30/2011_09_30_drive_0028_sync 524 r
+2011_10_03/2011_10_03_drive_0034_sync 4277 r
+2011_10_03/2011_10_03_drive_0034_sync 1991 l
+2011_09_26/2011_09_26_drive_0028_sync 375 l
+2011_09_26/2011_09_26_drive_0087_sync 275 r
+2011_09_30/2011_09_30_drive_0033_sync 1239 l
+2011_10_03/2011_10_03_drive_0034_sync 2881 l
+2011_09_30/2011_09_30_drive_0034_sync 33 r
+2011_09_30/2011_09_30_drive_0020_sync 1058 l
+2011_10_03/2011_10_03_drive_0034_sync 1456 l
+2011_09_26/2011_09_26_drive_0032_sync 24 r
+2011_10_03/2011_10_03_drive_0034_sync 4422 r
+2011_09_30/2011_09_30_drive_0028_sync 3914 r
+2011_10_03/2011_10_03_drive_0034_sync 1153 l
+2011_09_26/2011_09_26_drive_0091_sync 166 r
+2011_09_26/2011_09_26_drive_0087_sync 383 l
+2011_09_26/2011_09_26_drive_0018_sync 263 r
+2011_09_30/2011_09_30_drive_0028_sync 1504 r
+2011_09_30/2011_09_30_drive_0033_sync 374 r
+2011_10_03/2011_10_03_drive_0034_sync 1483 r
+2011_09_26/2011_09_26_drive_0017_sync 87 r
+2011_09_30/2011_09_30_drive_0028_sync 1644 l
+2011_09_30/2011_09_30_drive_0034_sync 1139 r
+2011_09_30/2011_09_30_drive_0034_sync 366 l
+2011_09_26/2011_09_26_drive_0091_sync 260 r
+2011_09_30/2011_09_30_drive_0034_sync 562 l
+2011_09_30/2011_09_30_drive_0034_sync 889 r
+2011_10_03/2011_10_03_drive_0042_sync 1161 r
+2011_09_26/2011_09_26_drive_0028_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 1157 l
+2011_09_30/2011_09_30_drive_0028_sync 997 l
+2011_09_30/2011_09_30_drive_0028_sync 470 l
+2011_09_26/2011_09_26_drive_0061_sync 617 l
+2011_09_26/2011_09_26_drive_0022_sync 370 r
+2011_09_26/2011_09_26_drive_0070_sync 112 r
+2011_10_03/2011_10_03_drive_0034_sync 4041 r
+2011_09_30/2011_09_30_drive_0028_sync 4100 l
+2011_09_30/2011_09_30_drive_0034_sync 550 r
+2011_10_03/2011_10_03_drive_0034_sync 488 l
+2011_10_03/2011_10_03_drive_0042_sync 8 r
+2011_09_26/2011_09_26_drive_0091_sync 269 r
+2011_09_26/2011_09_26_drive_0061_sync 588 r
+2011_10_03/2011_10_03_drive_0034_sync 1973 r
+2011_09_30/2011_09_30_drive_0033_sync 1454 l
+2011_10_03/2011_10_03_drive_0034_sync 2299 l
+2011_10_03/2011_10_03_drive_0034_sync 3270 r
+2011_09_26/2011_09_26_drive_0018_sync 125 l
+2011_09_26/2011_09_26_drive_0104_sync 91 l
+2011_09_26/2011_09_26_drive_0011_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 1852 r
+2011_10_03/2011_10_03_drive_0034_sync 533 l
+2011_09_30/2011_09_30_drive_0034_sync 317 r
+2011_09_30/2011_09_30_drive_0028_sync 5069 l
+2011_10_03/2011_10_03_drive_0042_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 2695 r
+2011_09_26/2011_09_26_drive_0087_sync 363 r
+2011_09_30/2011_09_30_drive_0020_sync 694 r
+2011_09_30/2011_09_30_drive_0028_sync 86 r
+2011_09_26/2011_09_26_drive_0057_sync 34 l
+2011_09_26/2011_09_26_drive_0011_sync 155 l
+2011_09_26/2011_09_26_drive_0028_sync 327 r
+2011_09_30/2011_09_30_drive_0028_sync 3586 l
+2011_10_03/2011_10_03_drive_0034_sync 3510 l
+2011_10_03/2011_10_03_drive_0034_sync 2415 l
+2011_09_30/2011_09_30_drive_0034_sync 380 r
+2011_09_26/2011_09_26_drive_0028_sync 396 l
+2011_09_30/2011_09_30_drive_0028_sync 4419 r
+2011_09_30/2011_09_30_drive_0020_sync 119 r
+2011_10_03/2011_10_03_drive_0034_sync 3701 l
+2011_09_26/2011_09_26_drive_0035_sync 31 r
+2011_10_03/2011_10_03_drive_0034_sync 3552 r
+2011_10_03/2011_10_03_drive_0034_sync 1685 r
+2011_09_26/2011_09_26_drive_0051_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 4143 l
+2011_09_30/2011_09_30_drive_0034_sync 594 l
+2011_09_30/2011_09_30_drive_0033_sync 406 r
+2011_09_26/2011_09_26_drive_0087_sync 68 l
+2011_09_30/2011_09_30_drive_0034_sync 878 l
+2011_09_30/2011_09_30_drive_0028_sync 4833 l
+2011_09_30/2011_09_30_drive_0020_sync 448 r
+2011_09_26/2011_09_26_drive_0039_sync 331 l
+2011_09_26/2011_09_26_drive_0005_sync 114 r
+2011_09_26/2011_09_26_drive_0061_sync 528 r
+2011_10_03/2011_10_03_drive_0034_sync 3620 l
+2011_09_26/2011_09_26_drive_0087_sync 326 l
+2011_09_26/2011_09_26_drive_0070_sync 235 l
+2011_10_03/2011_10_03_drive_0034_sync 868 l
+2011_09_30/2011_09_30_drive_0028_sync 2872 l
+2011_09_30/2011_09_30_drive_0028_sync 3515 r
+2011_10_03/2011_10_03_drive_0034_sync 2518 l
+2011_09_26/2011_09_26_drive_0015_sync 256 l
+2011_09_26/2011_09_26_drive_0113_sync 0 r
+2011_10_03/2011_10_03_drive_0034_sync 2078 l
+2011_10_03/2011_10_03_drive_0034_sync 3191 r
+2011_09_26/2011_09_26_drive_0070_sync 79 l
+2011_09_26/2011_09_26_drive_0028_sync 343 l
+2011_10_03/2011_10_03_drive_0034_sync 88 l
+2011_10_03/2011_10_03_drive_0034_sync 2206 r
+2011_10_03/2011_10_03_drive_0034_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 241 r
+2011_09_26/2011_09_26_drive_0019_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 476 r
+2011_10_03/2011_10_03_drive_0034_sync 525 r
+2011_09_26/2011_09_26_drive_0022_sync 794 l
+2011_09_30/2011_09_30_drive_0033_sync 950 r
+2011_09_30/2011_09_30_drive_0033_sync 448 l
+2011_09_26/2011_09_26_drive_0028_sync 270 r
+2011_09_26/2011_09_26_drive_0032_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 3656 l
+2011_09_30/2011_09_30_drive_0028_sync 1512 r
+2011_10_03/2011_10_03_drive_0034_sync 3965 l
+2011_09_30/2011_09_30_drive_0028_sync 2600 r
+2011_09_26/2011_09_26_drive_0057_sync 31 r
+2011_09_29/2011_09_29_drive_0026_sync 93 l
+2011_09_26/2011_09_26_drive_0087_sync 606 r
+2011_09_26/2011_09_26_drive_0061_sync 500 l
+2011_09_26/2011_09_26_drive_0014_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 1471 r
+2011_09_30/2011_09_30_drive_0028_sync 2584 l
+2011_09_26/2011_09_26_drive_0022_sync 223 r
+2011_09_26/2011_09_26_drive_0039_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 4903 r
+2011_09_30/2011_09_30_drive_0028_sync 2800 r
+2011_09_26/2011_09_26_drive_0035_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 284 l
+2011_09_26/2011_09_26_drive_0057_sync 340 r
+2011_09_30/2011_09_30_drive_0033_sync 620 l
+2011_09_30/2011_09_30_drive_0020_sync 867 l
+2011_09_30/2011_09_30_drive_0028_sync 1223 l
+2011_09_26/2011_09_26_drive_0022_sync 203 r
+2011_09_26/2011_09_26_drive_0087_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 2838 r
+2011_09_30/2011_09_30_drive_0028_sync 5175 r
+2011_09_30/2011_09_30_drive_0028_sync 4868 l
+2011_09_30/2011_09_30_drive_0020_sync 232 l
+2011_09_30/2011_09_30_drive_0033_sync 1145 l
+2011_10_03/2011_10_03_drive_0034_sync 3027 r
+2011_09_30/2011_09_30_drive_0033_sync 662 l
+2011_09_26/2011_09_26_drive_0005_sync 143 l
+2011_09_26/2011_09_26_drive_0061_sync 548 r
+2011_09_30/2011_09_30_drive_0028_sync 3060 l
+2011_09_30/2011_09_30_drive_0020_sync 656 r
+2011_09_30/2011_09_30_drive_0034_sync 43 l
+2011_09_30/2011_09_30_drive_0033_sync 906 r
+2011_09_30/2011_09_30_drive_0020_sync 656 l
+2011_09_30/2011_09_30_drive_0034_sync 732 r
+2011_09_26/2011_09_26_drive_0032_sync 281 r
+2011_09_30/2011_09_30_drive_0028_sync 288 l
+2011_09_26/2011_09_26_drive_0060_sync 76 r
+2011_09_26/2011_09_26_drive_0061_sync 510 l
+2011_09_26/2011_09_26_drive_0087_sync 62 r
+2011_09_26/2011_09_26_drive_0039_sync 304 r
+2011_10_03/2011_10_03_drive_0034_sync 3360 l
+2011_09_26/2011_09_26_drive_0014_sync 99 r
+2011_09_30/2011_09_30_drive_0033_sync 1484 l
+2011_09_30/2011_09_30_drive_0028_sync 1286 r
+2011_09_26/2011_09_26_drive_0022_sync 453 r
+2011_09_26/2011_09_26_drive_0005_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 2785 l
+2011_09_26/2011_09_26_drive_0087_sync 86 r
+2011_09_26/2011_09_26_drive_0070_sync 277 l
+2011_09_26/2011_09_26_drive_0011_sync 145 r
+2011_09_26/2011_09_26_drive_0022_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 3168 r
+2011_09_26/2011_09_26_drive_0022_sync 530 l
+2011_09_26/2011_09_26_drive_0091_sync 196 r
+2011_10_03/2011_10_03_drive_0034_sync 388 l
+2011_09_30/2011_09_30_drive_0028_sync 4539 l
+2011_09_30/2011_09_30_drive_0028_sync 2388 l
+2011_09_30/2011_09_30_drive_0020_sync 714 l
+2011_10_03/2011_10_03_drive_0034_sync 712 r
+2011_09_30/2011_09_30_drive_0028_sync 3334 r
+2011_10_03/2011_10_03_drive_0034_sync 3999 r
+2011_10_03/2011_10_03_drive_0034_sync 205 l
+2011_10_03/2011_10_03_drive_0034_sync 2317 l
+2011_09_30/2011_09_30_drive_0028_sync 4636 r
+2011_10_03/2011_10_03_drive_0042_sync 706 r
+2011_09_30/2011_09_30_drive_0028_sync 1274 l
+2011_10_03/2011_10_03_drive_0042_sync 1090 l
+2011_09_30/2011_09_30_drive_0020_sync 823 r
+2011_09_26/2011_09_26_drive_0039_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 3435 r
+2011_09_30/2011_09_30_drive_0028_sync 3728 r
+2011_09_30/2011_09_30_drive_0028_sync 141 r
+2011_09_30/2011_09_30_drive_0028_sync 4732 r
+2011_09_30/2011_09_30_drive_0034_sync 700 r
+2011_09_29/2011_09_29_drive_0004_sync 298 r
+2011_09_30/2011_09_30_drive_0020_sync 860 l
+2011_10_03/2011_10_03_drive_0034_sync 558 l
+2011_10_03/2011_10_03_drive_0034_sync 2954 l
+2011_10_03/2011_10_03_drive_0034_sync 4325 r
+2011_09_30/2011_09_30_drive_0034_sync 69 r
+2011_09_26/2011_09_26_drive_0087_sync 275 l
+2011_09_30/2011_09_30_drive_0028_sync 4139 l
+2011_09_30/2011_09_30_drive_0020_sync 637 l
+2011_09_30/2011_09_30_drive_0028_sync 3348 r
+2011_10_03/2011_10_03_drive_0034_sync 399 r
+2011_09_29/2011_09_29_drive_0004_sync 1 l
+2011_09_26/2011_09_26_drive_0032_sync 121 r
+2011_09_26/2011_09_26_drive_0095_sync 243 l
+2011_09_30/2011_09_30_drive_0028_sync 4352 r
+2011_10_03/2011_10_03_drive_0034_sync 3919 l
+2011_10_03/2011_10_03_drive_0042_sync 369 l
+2011_10_03/2011_10_03_drive_0034_sync 1222 l
+2011_10_03/2011_10_03_drive_0034_sync 2469 r
+2011_09_26/2011_09_26_drive_0022_sync 575 r
+2011_09_26/2011_09_26_drive_0051_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 1087 r
+2011_09_26/2011_09_26_drive_0087_sync 523 r
+2011_10_03/2011_10_03_drive_0042_sync 295 r
+2011_09_26/2011_09_26_drive_0022_sync 372 l
+2011_09_26/2011_09_26_drive_0070_sync 248 l
+2011_09_30/2011_09_30_drive_0034_sync 950 l
+2011_09_30/2011_09_30_drive_0033_sync 1327 l
+2011_09_26/2011_09_26_drive_0061_sync 157 r
+2011_09_30/2011_09_30_drive_0028_sync 3342 l
+2011_09_26/2011_09_26_drive_0087_sync 692 r
+2011_09_30/2011_09_30_drive_0028_sync 821 r
+2011_09_30/2011_09_30_drive_0028_sync 2074 r
+2011_09_30/2011_09_30_drive_0028_sync 3271 l
+2011_10_03/2011_10_03_drive_0034_sync 4157 r
+2011_09_30/2011_09_30_drive_0028_sync 2358 r
+2011_09_26/2011_09_26_drive_0019_sync 377 r
+2011_09_30/2011_09_30_drive_0020_sync 100 l
+2011_09_26/2011_09_26_drive_0061_sync 230 r
+2011_09_30/2011_09_30_drive_0033_sync 1178 r
+2011_10_03/2011_10_03_drive_0034_sync 1101 r
+2011_09_30/2011_09_30_drive_0028_sync 1695 r
+2011_09_30/2011_09_30_drive_0028_sync 2534 r
+2011_09_26/2011_09_26_drive_0039_sync 10 l
+2011_09_26/2011_09_26_drive_0091_sync 312 r
+2011_10_03/2011_10_03_drive_0042_sync 501 l
+2011_09_30/2011_09_30_drive_0028_sync 2137 l
+2011_09_30/2011_09_30_drive_0033_sync 408 r
+2011_09_30/2011_09_30_drive_0034_sync 502 r
+2011_09_30/2011_09_30_drive_0028_sync 2107 l
+2011_10_03/2011_10_03_drive_0042_sync 754 r
+2011_10_03/2011_10_03_drive_0034_sync 1646 l
+2011_09_30/2011_09_30_drive_0028_sync 4633 r
+2011_09_26/2011_09_26_drive_0022_sync 225 r
+2011_09_26/2011_09_26_drive_0015_sync 229 r
+2011_09_30/2011_09_30_drive_0034_sync 1168 l
+2011_09_26/2011_09_26_drive_0091_sync 279 r
+2011_09_30/2011_09_30_drive_0028_sync 1747 l
+2011_09_30/2011_09_30_drive_0028_sync 739 l
+2011_09_30/2011_09_30_drive_0028_sync 2532 r
+2011_09_26/2011_09_26_drive_0061_sync 569 r
+2011_09_30/2011_09_30_drive_0028_sync 4339 r
+2011_09_26/2011_09_26_drive_0022_sync 60 r
+2011_09_30/2011_09_30_drive_0028_sync 1042 l
+2011_09_30/2011_09_30_drive_0020_sync 1038 l
+2011_09_30/2011_09_30_drive_0034_sync 824 r
+2011_09_30/2011_09_30_drive_0020_sync 492 r
+2011_09_26/2011_09_26_drive_0051_sync 330 l
+2011_09_26/2011_09_26_drive_0057_sync 179 l
+2011_10_03/2011_10_03_drive_0034_sync 2152 r
+2011_09_30/2011_09_30_drive_0028_sync 5159 l
+2011_09_30/2011_09_30_drive_0028_sync 539 r
+2011_10_03/2011_10_03_drive_0034_sync 3177 r
+2011_09_26/2011_09_26_drive_0019_sync 375 r
+2011_10_03/2011_10_03_drive_0034_sync 1464 l
+2011_09_30/2011_09_30_drive_0033_sync 1046 l
+2011_09_30/2011_09_30_drive_0028_sync 3671 l
+2011_09_30/2011_09_30_drive_0028_sync 2520 l
+2011_10_03/2011_10_03_drive_0042_sync 1034 r
+2011_09_30/2011_09_30_drive_0028_sync 664 l
+2011_09_26/2011_09_26_drive_0011_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 1998 l
+2011_09_26/2011_09_26_drive_0079_sync 28 l
+2011_09_26/2011_09_26_drive_0057_sync 118 r
+2011_09_26/2011_09_26_drive_0019_sync 303 l
+2011_09_30/2011_09_30_drive_0034_sync 640 r
+2011_10_03/2011_10_03_drive_0034_sync 2992 r
+2011_09_30/2011_09_30_drive_0028_sync 2694 l
+2011_09_26/2011_09_26_drive_0095_sync 86 l
+2011_09_30/2011_09_30_drive_0020_sync 422 r
+2011_10_03/2011_10_03_drive_0034_sync 4093 l
+2011_09_30/2011_09_30_drive_0028_sync 2715 l
+2011_09_26/2011_09_26_drive_0061_sync 313 l
+2011_09_30/2011_09_30_drive_0028_sync 4581 l
+2011_09_26/2011_09_26_drive_0087_sync 649 l
+2011_10_03/2011_10_03_drive_0034_sync 4172 l
+2011_09_26/2011_09_26_drive_0091_sync 293 r
+2011_09_26/2011_09_26_drive_0039_sync 124 l
+2011_10_03/2011_10_03_drive_0042_sync 284 l
+2011_10_03/2011_10_03_drive_0034_sync 2672 r
+2011_09_26/2011_09_26_drive_0095_sync 153 r
+2011_09_30/2011_09_30_drive_0028_sync 2186 l
+2011_09_30/2011_09_30_drive_0028_sync 305 r
+2011_09_29/2011_09_29_drive_0026_sync 107 r
+2011_10_03/2011_10_03_drive_0034_sync 3942 r
+2011_09_26/2011_09_26_drive_0091_sync 26 r
+2011_10_03/2011_10_03_drive_0042_sync 795 r
+2011_09_26/2011_09_26_drive_0022_sync 359 l
+2011_10_03/2011_10_03_drive_0042_sync 850 r
+2011_09_30/2011_09_30_drive_0034_sync 268 r
+2011_09_30/2011_09_30_drive_0028_sync 683 r
+2011_10_03/2011_10_03_drive_0034_sync 3395 r
+2011_09_30/2011_09_30_drive_0028_sync 2929 r
+2011_09_30/2011_09_30_drive_0034_sync 626 r
+2011_09_26/2011_09_26_drive_0061_sync 321 l
+2011_09_30/2011_09_30_drive_0033_sync 430 l
+2011_09_26/2011_09_26_drive_0011_sync 163 r
+2011_09_30/2011_09_30_drive_0034_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 3001 l
+2011_10_03/2011_10_03_drive_0034_sync 4127 r
+2011_09_26/2011_09_26_drive_0022_sync 408 r
+2011_09_30/2011_09_30_drive_0028_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 1891 r
+2011_09_30/2011_09_30_drive_0020_sync 661 l
+2011_09_26/2011_09_26_drive_0022_sync 6 l
+2011_10_03/2011_10_03_drive_0034_sync 4439 l
+2011_09_30/2011_09_30_drive_0028_sync 1627 r
+2011_09_30/2011_09_30_drive_0028_sync 3184 l
+2011_09_26/2011_09_26_drive_0061_sync 480 r
+2011_10_03/2011_10_03_drive_0042_sync 1028 r
+2011_10_03/2011_10_03_drive_0042_sync 663 r
+2011_09_30/2011_09_30_drive_0028_sync 2670 l
+2011_09_26/2011_09_26_drive_0061_sync 96 l
+2011_10_03/2011_10_03_drive_0034_sync 2746 l
+2011_09_26/2011_09_26_drive_0087_sync 682 r
+2011_09_26/2011_09_26_drive_0051_sync 184 r
+2011_10_03/2011_10_03_drive_0034_sync 465 r
+2011_09_30/2011_09_30_drive_0020_sync 252 r
+2011_09_26/2011_09_26_drive_0011_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 684 l
+2011_10_03/2011_10_03_drive_0034_sync 540 r
+2011_09_30/2011_09_30_drive_0028_sync 1042 r
+2011_09_30/2011_09_30_drive_0028_sync 2881 r
+2011_10_03/2011_10_03_drive_0034_sync 3688 l
+2011_09_30/2011_09_30_drive_0033_sync 1152 r
+2011_09_30/2011_09_30_drive_0028_sync 808 l
+2011_09_30/2011_09_30_drive_0028_sync 1604 l
+2011_09_26/2011_09_26_drive_0022_sync 436 l
+2011_09_26/2011_09_26_drive_0001_sync 64 l
+2011_09_26/2011_09_26_drive_0039_sync 64 l
+2011_09_26/2011_09_26_drive_0087_sync 407 l
+2011_09_26/2011_09_26_drive_0039_sync 106 r
+2011_10_03/2011_10_03_drive_0034_sync 3721 l
+2011_09_26/2011_09_26_drive_0051_sync 54 r
+2011_10_03/2011_10_03_drive_0042_sync 1037 l
+2011_09_30/2011_09_30_drive_0020_sync 176 r
+2011_09_30/2011_09_30_drive_0028_sync 2808 l
+2011_10_03/2011_10_03_drive_0042_sync 1094 l
+2011_10_03/2011_10_03_drive_0034_sync 926 l
+2011_10_03/2011_10_03_drive_0034_sync 2840 r
+2011_09_30/2011_09_30_drive_0028_sync 2501 r
+2011_09_30/2011_09_30_drive_0028_sync 4908 r
+2011_09_26/2011_09_26_drive_0087_sync 554 l
+2011_09_30/2011_09_30_drive_0028_sync 479 r
+2011_09_26/2011_09_26_drive_0015_sync 162 l
+2011_09_26/2011_09_26_drive_0104_sync 155 l
+2011_09_26/2011_09_26_drive_0018_sync 256 r
+2011_09_28/2011_09_28_drive_0001_sync 51 l
+2011_09_26/2011_09_26_drive_0019_sync 247 l
+2011_09_30/2011_09_30_drive_0033_sync 141 r
+2011_10_03/2011_10_03_drive_0034_sync 4162 r
+2011_10_03/2011_10_03_drive_0034_sync 3481 l
+2011_10_03/2011_10_03_drive_0034_sync 2574 r
+2011_09_26/2011_09_26_drive_0019_sync 467 r
+2011_09_26/2011_09_26_drive_0014_sync 144 l
+2011_10_03/2011_10_03_drive_0034_sync 3729 l
+2011_09_26/2011_09_26_drive_0087_sync 548 l
+2011_10_03/2011_10_03_drive_0034_sync 4038 r
+2011_09_26/2011_09_26_drive_0087_sync 183 l
+2011_09_26/2011_09_26_drive_0018_sync 31 r
+2011_10_03/2011_10_03_drive_0034_sync 4256 l
+2011_09_30/2011_09_30_drive_0020_sync 483 r
+2011_09_26/2011_09_26_drive_0022_sync 140 r
+2011_09_26/2011_09_26_drive_0061_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 4443 r
+2011_09_30/2011_09_30_drive_0033_sync 433 l
+2011_10_03/2011_10_03_drive_0034_sync 1828 r
+2011_09_26/2011_09_26_drive_0057_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 3106 l
+2011_09_26/2011_09_26_drive_0018_sync 95 r
+2011_09_30/2011_09_30_drive_0020_sync 121 r
+2011_09_30/2011_09_30_drive_0028_sync 5050 r
+2011_09_26/2011_09_26_drive_0022_sync 697 r
+2011_09_26/2011_09_26_drive_0035_sync 127 l
+2011_09_26/2011_09_26_drive_0022_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 2414 r
+2011_09_30/2011_09_30_drive_0033_sync 985 l
+2011_09_26/2011_09_26_drive_0061_sync 67 l
+2011_09_30/2011_09_30_drive_0033_sync 1158 l
+2011_09_30/2011_09_30_drive_0028_sync 5090 r
+2011_09_26/2011_09_26_drive_0104_sync 206 l
+2011_09_26/2011_09_26_drive_0039_sync 38 r
+2011_09_26/2011_09_26_drive_0019_sync 305 r
+2011_10_03/2011_10_03_drive_0042_sync 730 r
+2011_09_26/2011_09_26_drive_0104_sync 175 l
+2011_10_03/2011_10_03_drive_0042_sync 1096 r
+2011_09_30/2011_09_30_drive_0028_sync 3838 r
+2011_10_03/2011_10_03_drive_0034_sync 2972 l
+2011_09_30/2011_09_30_drive_0028_sync 2956 l
+2011_09_30/2011_09_30_drive_0020_sync 1102 l
+2011_09_30/2011_09_30_drive_0028_sync 1116 l
+2011_09_30/2011_09_30_drive_0033_sync 772 l
+2011_09_26/2011_09_26_drive_0104_sync 122 r
+2011_09_28/2011_09_28_drive_0001_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 767 l
+2011_09_26/2011_09_26_drive_0113_sync 66 l
+2011_09_30/2011_09_30_drive_0020_sync 464 l
+2011_09_26/2011_09_26_drive_0061_sync 394 r
+2011_09_30/2011_09_30_drive_0028_sync 5043 r
+2011_10_03/2011_10_03_drive_0034_sync 4140 l
+2011_09_30/2011_09_30_drive_0028_sync 719 r
+2011_09_29/2011_09_29_drive_0004_sync 5 r
+2011_10_03/2011_10_03_drive_0034_sync 3374 l
+2011_09_26/2011_09_26_drive_0032_sync 250 r
+2011_09_30/2011_09_30_drive_0028_sync 3682 r
+2011_09_26/2011_09_26_drive_0005_sync 22 l
+2011_09_30/2011_09_30_drive_0034_sync 1177 r
+2011_10_03/2011_10_03_drive_0034_sync 774 l
+2011_10_03/2011_10_03_drive_0042_sync 975 r
+2011_10_03/2011_10_03_drive_0034_sync 1354 l
+2011_09_30/2011_09_30_drive_0033_sync 414 l
+2011_09_30/2011_09_30_drive_0028_sync 1929 l
+2011_10_03/2011_10_03_drive_0042_sync 1026 l
+2011_09_26/2011_09_26_drive_0051_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 4464 r
+2011_10_03/2011_10_03_drive_0034_sync 2096 r
+2011_10_03/2011_10_03_drive_0042_sync 454 l
+2011_09_30/2011_09_30_drive_0028_sync 637 l
+2011_09_26/2011_09_26_drive_0051_sync 437 l
+2011_10_03/2011_10_03_drive_0034_sync 3365 l
+2011_10_03/2011_10_03_drive_0034_sync 4463 l
+2011_09_29/2011_09_29_drive_0004_sync 277 r
+2011_10_03/2011_10_03_drive_0042_sync 1069 r
+2011_09_26/2011_09_26_drive_0061_sync 388 r
+2011_10_03/2011_10_03_drive_0034_sync 321 l
+2011_09_30/2011_09_30_drive_0028_sync 5057 r
+2011_09_26/2011_09_26_drive_0022_sync 402 l
+2011_09_26/2011_09_26_drive_0019_sync 425 r
+2011_09_29/2011_09_29_drive_0004_sync 269 l
+2011_09_26/2011_09_26_drive_0001_sync 43 r
+2011_09_26/2011_09_26_drive_0051_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 5116 l
+2011_09_30/2011_09_30_drive_0028_sync 1819 r
+2011_09_30/2011_09_30_drive_0020_sync 59 l
+2011_09_30/2011_09_30_drive_0028_sync 2427 l
+2011_09_26/2011_09_26_drive_0028_sync 118 r
+2011_09_26/2011_09_26_drive_0001_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 4155 l
+2011_09_26/2011_09_26_drive_0039_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 2907 l
+2011_10_03/2011_10_03_drive_0034_sync 1588 r
+2011_09_26/2011_09_26_drive_0091_sync 259 r
+2011_09_26/2011_09_26_drive_0061_sync 679 l
+2011_09_30/2011_09_30_drive_0028_sync 2401 r
+2011_09_30/2011_09_30_drive_0033_sync 83 r
+2011_09_30/2011_09_30_drive_0033_sync 1524 r
+2011_09_30/2011_09_30_drive_0034_sync 456 r
+2011_09_26/2011_09_26_drive_0001_sync 49 r
+2011_10_03/2011_10_03_drive_0034_sync 2641 r
+2011_10_03/2011_10_03_drive_0034_sync 474 r
+2011_09_30/2011_09_30_drive_0020_sync 843 l
+2011_09_26/2011_09_26_drive_0095_sync 173 r
+2011_10_03/2011_10_03_drive_0042_sync 532 l
+2011_10_03/2011_10_03_drive_0042_sync 1164 l
+2011_09_26/2011_09_26_drive_0011_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 1892 l
+2011_09_30/2011_09_30_drive_0028_sync 2134 l
+2011_09_26/2011_09_26_drive_0011_sync 225 r
+2011_10_03/2011_10_03_drive_0034_sync 1326 r
+2011_10_03/2011_10_03_drive_0034_sync 2194 r
+2011_09_26/2011_09_26_drive_0087_sync 659 l
+2011_09_30/2011_09_30_drive_0028_sync 466 l
+2011_09_26/2011_09_26_drive_0015_sync 235 l
+2011_09_26/2011_09_26_drive_0051_sync 172 r
+2011_09_29/2011_09_29_drive_0004_sync 125 l
+2011_10_03/2011_10_03_drive_0034_sync 3704 l
+2011_10_03/2011_10_03_drive_0034_sync 1356 r
+2011_09_30/2011_09_30_drive_0034_sync 669 r
+2011_10_03/2011_10_03_drive_0034_sync 3815 l
+2011_09_30/2011_09_30_drive_0033_sync 1440 l
+2011_10_03/2011_10_03_drive_0034_sync 3642 r
+2011_09_26/2011_09_26_drive_0015_sync 230 r
+2011_09_26/2011_09_26_drive_0015_sync 173 l
+2011_09_26/2011_09_26_drive_0061_sync 643 l
+2011_10_03/2011_10_03_drive_0034_sync 2904 l
+2011_09_30/2011_09_30_drive_0034_sync 519 r
+2011_09_26/2011_09_26_drive_0087_sync 594 l
+2011_09_30/2011_09_30_drive_0028_sync 1361 r
+2011_10_03/2011_10_03_drive_0034_sync 2539 l
+2011_09_26/2011_09_26_drive_0091_sync 74 l
+2011_09_30/2011_09_30_drive_0028_sync 1584 r
+2011_09_26/2011_09_26_drive_0070_sync 406 l
+2011_10_03/2011_10_03_drive_0034_sync 4040 r
+2011_09_30/2011_09_30_drive_0028_sync 349 l
+2011_09_26/2011_09_26_drive_0070_sync 219 l
+2011_09_26/2011_09_26_drive_0028_sync 155 r
+2011_09_30/2011_09_30_drive_0020_sync 431 l
+2011_09_30/2011_09_30_drive_0028_sync 4020 r
+2011_09_26/2011_09_26_drive_0018_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 4038 r
+2011_09_26/2011_09_26_drive_0104_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 2341 r
+2011_09_30/2011_09_30_drive_0028_sync 3510 l
+2011_09_26/2011_09_26_drive_0091_sync 299 r
+2011_09_26/2011_09_26_drive_0014_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 324 r
+2011_09_30/2011_09_30_drive_0028_sync 1983 l
+2011_09_26/2011_09_26_drive_0070_sync 41 r
+2011_09_26/2011_09_26_drive_0061_sync 561 r
+2011_09_30/2011_09_30_drive_0033_sync 1366 l
+2011_09_29/2011_09_29_drive_0026_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 944 l
+2011_09_26/2011_09_26_drive_0028_sync 295 l
+2011_09_30/2011_09_30_drive_0033_sync 939 l
+2011_09_26/2011_09_26_drive_0015_sync 62 l
+2011_10_03/2011_10_03_drive_0034_sync 52 r
+2011_09_30/2011_09_30_drive_0034_sync 868 l
+2011_09_30/2011_09_30_drive_0028_sync 933 r
+2011_09_26/2011_09_26_drive_0022_sync 329 r
+2011_10_03/2011_10_03_drive_0034_sync 2191 r
+2011_09_26/2011_09_26_drive_0039_sync 203 l
+2011_10_03/2011_10_03_drive_0042_sync 620 r
+2011_09_28/2011_09_28_drive_0001_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 1665 l
+2011_09_26/2011_09_26_drive_0018_sync 108 r
+2011_09_26/2011_09_26_drive_0022_sync 678 l
+2011_10_03/2011_10_03_drive_0034_sync 3388 r
+2011_09_30/2011_09_30_drive_0020_sync 126 l
+2011_10_03/2011_10_03_drive_0042_sync 834 l
+2011_09_26/2011_09_26_drive_0039_sync 148 r
+2011_09_30/2011_09_30_drive_0033_sync 1252 l
+2011_09_26/2011_09_26_drive_0022_sync 605 l
+2011_10_03/2011_10_03_drive_0034_sync 2856 r
+2011_09_30/2011_09_30_drive_0020_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 3059 l
+2011_09_30/2011_09_30_drive_0033_sync 863 l
+2011_09_26/2011_09_26_drive_0095_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 1302 l
+2011_09_26/2011_09_26_drive_0039_sync 245 l
+2011_09_30/2011_09_30_drive_0028_sync 2341 l
+2011_09_26/2011_09_26_drive_0057_sync 238 r
+2011_09_30/2011_09_30_drive_0028_sync 4205 r
+2011_10_03/2011_10_03_drive_0042_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 3677 r
+2011_10_03/2011_10_03_drive_0042_sync 1020 r
+2011_10_03/2011_10_03_drive_0034_sync 3655 r
+2011_09_26/2011_09_26_drive_0022_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 5051 l
+2011_09_30/2011_09_30_drive_0034_sync 300 r
+2011_10_03/2011_10_03_drive_0034_sync 575 l
+2011_09_26/2011_09_26_drive_0061_sync 677 l
+2011_09_30/2011_09_30_drive_0028_sync 112 r
+2011_09_30/2011_09_30_drive_0028_sync 3799 r
+2011_09_30/2011_09_30_drive_0028_sync 5160 r
+2011_10_03/2011_10_03_drive_0042_sync 330 r
+2011_10_03/2011_10_03_drive_0034_sync 3813 l
+2011_09_26/2011_09_26_drive_0028_sync 234 r
+2011_09_26/2011_09_26_drive_0087_sync 379 r
+2011_09_26/2011_09_26_drive_0104_sync 274 l
+2011_09_30/2011_09_30_drive_0020_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 4243 r
+2011_10_03/2011_10_03_drive_0034_sync 482 r
+2011_10_03/2011_10_03_drive_0034_sync 4629 l
+2011_09_26/2011_09_26_drive_0039_sync 204 r
+2011_09_26/2011_09_26_drive_0051_sync 221 r
+2011_10_03/2011_10_03_drive_0034_sync 1128 l
+2011_10_03/2011_10_03_drive_0034_sync 3744 l
+2011_09_30/2011_09_30_drive_0020_sync 633 l
+2011_09_30/2011_09_30_drive_0028_sync 2327 l
+2011_09_26/2011_09_26_drive_0061_sync 17 l
+2011_09_26/2011_09_26_drive_0091_sync 168 r
+2011_09_26/2011_09_26_drive_0022_sync 474 l
+2011_09_26/2011_09_26_drive_0022_sync 606 r
+2011_09_30/2011_09_30_drive_0028_sync 2619 l
+2011_09_26/2011_09_26_drive_0091_sync 295 r
+2011_09_30/2011_09_30_drive_0028_sync 1283 l
+2011_09_26/2011_09_26_drive_0022_sync 636 l
+2011_10_03/2011_10_03_drive_0042_sync 94 l
+2011_09_26/2011_09_26_drive_0019_sync 439 r
+2011_10_03/2011_10_03_drive_0034_sync 3226 l
+2011_09_29/2011_09_29_drive_0026_sync 157 r
+2011_10_03/2011_10_03_drive_0034_sync 2387 r
+2011_10_03/2011_10_03_drive_0042_sync 490 r
+2011_09_26/2011_09_26_drive_0091_sync 148 l
+2011_10_03/2011_10_03_drive_0042_sync 1065 r
+2011_10_03/2011_10_03_drive_0042_sync 828 l
+2011_09_30/2011_09_30_drive_0033_sync 535 r
+2011_10_03/2011_10_03_drive_0034_sync 4518 r
+2011_09_30/2011_09_30_drive_0028_sync 2672 r
+2011_09_26/2011_09_26_drive_0028_sync 312 l
+2011_09_26/2011_09_26_drive_0022_sync 40 l
+2011_09_26/2011_09_26_drive_0087_sync 633 l
+2011_10_03/2011_10_03_drive_0034_sync 3665 r
+2011_10_03/2011_10_03_drive_0034_sync 2260 r
+2011_10_03/2011_10_03_drive_0034_sync 3333 l
+2011_09_30/2011_09_30_drive_0028_sync 1880 l
+2011_09_26/2011_09_26_drive_0032_sync 135 r
+2011_09_26/2011_09_26_drive_0091_sync 266 l
+2011_09_26/2011_09_26_drive_0061_sync 71 r
+2011_09_30/2011_09_30_drive_0020_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 3051 r
+2011_09_30/2011_09_30_drive_0028_sync 1049 l
+2011_09_30/2011_09_30_drive_0028_sync 3460 r
+2011_09_26/2011_09_26_drive_0014_sync 119 r
+2011_09_26/2011_09_26_drive_0051_sync 68 r
+2011_09_26/2011_09_26_drive_0028_sync 131 r
+2011_09_26/2011_09_26_drive_0079_sync 42 l
+2011_09_26/2011_09_26_drive_0061_sync 476 r
+2011_09_30/2011_09_30_drive_0028_sync 5165 l
+2011_10_03/2011_10_03_drive_0042_sync 769 r
+2011_09_30/2011_09_30_drive_0028_sync 817 l
+2011_09_26/2011_09_26_drive_0057_sync 254 l
+2011_09_30/2011_09_30_drive_0028_sync 2449 l
+2011_09_30/2011_09_30_drive_0033_sync 111 l
+2011_10_03/2011_10_03_drive_0034_sync 732 l
+2011_09_30/2011_09_30_drive_0028_sync 3917 r
+2011_09_30/2011_09_30_drive_0028_sync 580 r
+2011_09_26/2011_09_26_drive_0022_sync 637 l
+2011_09_30/2011_09_30_drive_0034_sync 334 l
+2011_10_03/2011_10_03_drive_0034_sync 1228 r
+2011_09_26/2011_09_26_drive_0022_sync 611 r
+2011_09_26/2011_09_26_drive_0104_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 1268 r
+2011_09_26/2011_09_26_drive_0019_sync 434 l
+2011_09_30/2011_09_30_drive_0020_sync 562 l
+2011_09_29/2011_09_29_drive_0026_sync 155 l
+2011_09_30/2011_09_30_drive_0028_sync 3248 r
+2011_09_30/2011_09_30_drive_0028_sync 599 r
+2011_09_26/2011_09_26_drive_0061_sync 97 l
+2011_09_30/2011_09_30_drive_0028_sync 4905 r
+2011_09_26/2011_09_26_drive_0061_sync 533 r
+2011_09_26/2011_09_26_drive_0022_sync 711 l
+2011_09_30/2011_09_30_drive_0020_sync 78 l
+2011_09_30/2011_09_30_drive_0034_sync 732 l
+2011_09_30/2011_09_30_drive_0033_sync 258 l
+2011_10_03/2011_10_03_drive_0034_sync 377 r
+2011_09_26/2011_09_26_drive_0070_sync 63 r
+2011_09_30/2011_09_30_drive_0034_sync 107 l
+2011_10_03/2011_10_03_drive_0034_sync 2274 r
+2011_09_30/2011_09_30_drive_0028_sync 4023 l
+2011_09_26/2011_09_26_drive_0061_sync 108 l
+2011_09_26/2011_09_26_drive_0104_sync 196 l
+2011_09_26/2011_09_26_drive_0035_sync 27 r
+2011_09_26/2011_09_26_drive_0032_sync 38 r
+2011_09_26/2011_09_26_drive_0022_sync 363 l
+2011_09_30/2011_09_30_drive_0033_sync 415 l
+2011_09_26/2011_09_26_drive_0104_sync 305 l
+2011_10_03/2011_10_03_drive_0034_sync 3629 r
+2011_09_26/2011_09_26_drive_0028_sync 403 l
+2011_09_26/2011_09_26_drive_0091_sync 291 l
+2011_09_26/2011_09_26_drive_0051_sync 394 r
+2011_10_03/2011_10_03_drive_0034_sync 335 l
+2011_10_03/2011_10_03_drive_0034_sync 4331 l
+2011_09_30/2011_09_30_drive_0028_sync 4985 l
+2011_09_30/2011_09_30_drive_0028_sync 4688 r
+2011_10_03/2011_10_03_drive_0042_sync 1032 r
+2011_09_29/2011_09_29_drive_0004_sync 320 r
+2011_09_26/2011_09_26_drive_0061_sync 623 r
+2011_09_26/2011_09_26_drive_0015_sync 10 l
+2011_09_26/2011_09_26_drive_0019_sync 290 l
+2011_09_26/2011_09_26_drive_0091_sync 240 l
+2011_09_30/2011_09_30_drive_0034_sync 387 r
+2011_09_26/2011_09_26_drive_0091_sync 208 l
+2011_09_30/2011_09_30_drive_0034_sync 1092 r
+2011_09_26/2011_09_26_drive_0091_sync 117 r
+2011_09_26/2011_09_26_drive_0061_sync 70 l
+2011_09_30/2011_09_30_drive_0033_sync 736 r
+2011_09_30/2011_09_30_drive_0033_sync 168 r
+2011_09_26/2011_09_26_drive_0091_sync 54 l
+2011_09_26/2011_09_26_drive_0061_sync 584 l
+2011_10_03/2011_10_03_drive_0034_sync 4332 l
+2011_10_03/2011_10_03_drive_0034_sync 2110 l
+2011_09_26/2011_09_26_drive_0035_sync 10 l
+2011_09_26/2011_09_26_drive_0070_sync 411 r
+2011_09_30/2011_09_30_drive_0034_sync 787 l
+2011_09_26/2011_09_26_drive_0039_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 1999 l
+2011_09_30/2011_09_30_drive_0028_sync 1822 l
+2011_09_26/2011_09_26_drive_0057_sync 320 r
+2011_09_26/2011_09_26_drive_0018_sync 209 l
+2011_09_30/2011_09_30_drive_0034_sync 328 l
+2011_10_03/2011_10_03_drive_0034_sync 3318 l
+2011_09_30/2011_09_30_drive_0028_sync 3280 r
+2011_09_26/2011_09_26_drive_0057_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 4693 l
+2011_10_03/2011_10_03_drive_0042_sync 649 r
+2011_10_03/2011_10_03_drive_0034_sync 1047 l
+2011_10_03/2011_10_03_drive_0034_sync 3935 r
+2011_09_30/2011_09_30_drive_0028_sync 1089 l
+2011_09_26/2011_09_26_drive_0018_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 5002 r
+2011_09_26/2011_09_26_drive_0028_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 1600 r
+2011_10_03/2011_10_03_drive_0034_sync 3931 r
+2011_09_30/2011_09_30_drive_0033_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 2144 l
+2011_09_30/2011_09_30_drive_0028_sync 599 l
+2011_09_26/2011_09_26_drive_0028_sync 122 r
+2011_10_03/2011_10_03_drive_0034_sync 669 l
+2011_09_29/2011_09_29_drive_0026_sync 38 l
+2011_09_26/2011_09_26_drive_0039_sync 207 l
+2011_10_03/2011_10_03_drive_0042_sync 56 r
+2011_09_30/2011_09_30_drive_0028_sync 3946 r
+2011_09_26/2011_09_26_drive_0018_sync 216 r
+2011_10_03/2011_10_03_drive_0034_sync 1706 l
+2011_09_30/2011_09_30_drive_0028_sync 1917 r
+2011_09_30/2011_09_30_drive_0028_sync 2994 r
+2011_09_30/2011_09_30_drive_0033_sync 1056 r
+2011_09_30/2011_09_30_drive_0033_sync 1419 l
+2011_09_26/2011_09_26_drive_0005_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 1586 r
+2011_09_30/2011_09_30_drive_0028_sync 243 l
+2011_09_30/2011_09_30_drive_0033_sync 1529 l
+2011_09_30/2011_09_30_drive_0033_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 4078 r
+2011_09_26/2011_09_26_drive_0011_sync 111 l
+2011_09_30/2011_09_30_drive_0033_sync 974 l
+2011_09_26/2011_09_26_drive_0028_sync 178 l
+2011_09_30/2011_09_30_drive_0020_sync 904 r
+2011_10_03/2011_10_03_drive_0034_sync 1299 r
+2011_10_03/2011_10_03_drive_0034_sync 3158 l
+2011_09_26/2011_09_26_drive_0057_sync 34 r
+2011_09_26/2011_09_26_drive_0011_sync 151 r
+2011_09_29/2011_09_29_drive_0026_sync 144 l
+2011_09_30/2011_09_30_drive_0034_sync 1162 r
+2011_09_30/2011_09_30_drive_0028_sync 3843 r
+2011_09_26/2011_09_26_drive_0061_sync 193 r
+2011_09_26/2011_09_26_drive_0061_sync 528 l
+2011_09_26/2011_09_26_drive_0028_sync 31 r
+2011_09_30/2011_09_30_drive_0034_sync 1064 r
+2011_09_26/2011_09_26_drive_0022_sync 3 l
+2011_09_30/2011_09_30_drive_0028_sync 3073 r
+2011_10_03/2011_10_03_drive_0034_sync 3866 l
+2011_09_26/2011_09_26_drive_0018_sync 107 r
+2011_10_03/2011_10_03_drive_0042_sync 827 l
+2011_09_28/2011_09_28_drive_0001_sync 89 l
+2011_09_26/2011_09_26_drive_0005_sync 27 r
+2011_09_26/2011_09_26_drive_0028_sync 237 l
+2011_09_26/2011_09_26_drive_0057_sync 247 r
+2011_09_30/2011_09_30_drive_0034_sync 548 l
+2011_09_30/2011_09_30_drive_0028_sync 4456 r
+2011_09_26/2011_09_26_drive_0051_sync 278 r
+2011_09_30/2011_09_30_drive_0033_sync 827 r
+2011_10_03/2011_10_03_drive_0042_sync 840 l
+2011_09_26/2011_09_26_drive_0070_sync 276 r
+2011_09_26/2011_09_26_drive_0039_sync 45 l
+2011_09_30/2011_09_30_drive_0033_sync 681 l
+2011_10_03/2011_10_03_drive_0034_sync 4536 l
+2011_09_26/2011_09_26_drive_0019_sync 16 l
+2011_09_26/2011_09_26_drive_0061_sync 439 r
+2011_09_30/2011_09_30_drive_0028_sync 2191 l
+2011_09_26/2011_09_26_drive_0014_sync 180 l
+2011_10_03/2011_10_03_drive_0034_sync 3244 r
+2011_10_03/2011_10_03_drive_0034_sync 579 r
+2011_09_30/2011_09_30_drive_0028_sync 529 r
+2011_10_03/2011_10_03_drive_0034_sync 4203 l
+2011_10_03/2011_10_03_drive_0034_sync 1833 l
+2011_09_26/2011_09_26_drive_0005_sync 66 r
+2011_09_30/2011_09_30_drive_0028_sync 392 l
+2011_10_03/2011_10_03_drive_0042_sync 1039 l
+2011_10_03/2011_10_03_drive_0034_sync 2078 r
+2011_10_03/2011_10_03_drive_0034_sync 3804 l
+2011_09_30/2011_09_30_drive_0033_sync 778 l
+2011_09_26/2011_09_26_drive_0022_sync 153 r
+2011_09_26/2011_09_26_drive_0104_sync 6 l
+2011_09_26/2011_09_26_drive_0015_sync 45 r
+2011_09_26/2011_09_26_drive_0061_sync 249 r
+2011_09_26/2011_09_26_drive_0079_sync 74 l
+2011_09_26/2011_09_26_drive_0091_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 1848 r
+2011_09_30/2011_09_30_drive_0028_sync 2851 r
+2011_09_30/2011_09_30_drive_0034_sync 887 r
+2011_10_03/2011_10_03_drive_0042_sync 524 r
+2011_09_29/2011_09_29_drive_0004_sync 264 r
+2011_09_30/2011_09_30_drive_0033_sync 1582 r
+2011_09_30/2011_09_30_drive_0028_sync 4845 l
+2011_09_30/2011_09_30_drive_0033_sync 631 r
+2011_09_30/2011_09_30_drive_0020_sync 86 l
+2011_09_26/2011_09_26_drive_0087_sync 690 l
+2011_10_03/2011_10_03_drive_0042_sync 786 r
+2011_09_26/2011_09_26_drive_0028_sync 79 r
+2011_09_26/2011_09_26_drive_0061_sync 425 l
+2011_09_30/2011_09_30_drive_0028_sync 575 r
+2011_09_30/2011_09_30_drive_0028_sync 654 r
+2011_09_30/2011_09_30_drive_0028_sync 4588 r
+2011_09_26/2011_09_26_drive_0087_sync 285 l
+2011_09_26/2011_09_26_drive_0087_sync 634 r
+2011_09_26/2011_09_26_drive_0019_sync 306 l
+2011_09_30/2011_09_30_drive_0028_sync 2645 r
+2011_09_30/2011_09_30_drive_0033_sync 7 l
+2011_09_30/2011_09_30_drive_0028_sync 3889 l
+2011_09_26/2011_09_26_drive_0087_sync 726 l
+2011_09_30/2011_09_30_drive_0034_sync 963 l
+2011_09_30/2011_09_30_drive_0028_sync 1386 l
+2011_09_30/2011_09_30_drive_0028_sync 4234 l
+2011_09_30/2011_09_30_drive_0028_sync 2456 r
+2011_09_30/2011_09_30_drive_0028_sync 1848 l
+2011_09_26/2011_09_26_drive_0014_sync 174 r
+2011_10_03/2011_10_03_drive_0042_sync 189 l
+2011_09_26/2011_09_26_drive_0005_sync 15 l
+2011_09_26/2011_09_26_drive_0028_sync 290 r
+2011_09_26/2011_09_26_drive_0032_sync 377 r
+2011_09_26/2011_09_26_drive_0091_sync 230 r
+2011_09_30/2011_09_30_drive_0028_sync 849 r
+2011_09_26/2011_09_26_drive_0051_sync 205 l
+2011_09_26/2011_09_26_drive_0091_sync 40 l
+2011_09_26/2011_09_26_drive_0104_sync 186 r
+2011_09_30/2011_09_30_drive_0020_sync 846 r
+2011_09_30/2011_09_30_drive_0028_sync 4128 r
+2011_09_29/2011_09_29_drive_0004_sync 83 r
+2011_09_26/2011_09_26_drive_0019_sync 145 r
+2011_10_03/2011_10_03_drive_0042_sync 809 r
+2011_09_30/2011_09_30_drive_0028_sync 3934 l
+2011_09_26/2011_09_26_drive_0060_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 3965 r
+2011_09_26/2011_09_26_drive_0091_sync 84 l
+2011_09_30/2011_09_30_drive_0028_sync 1027 r
+2011_09_30/2011_09_30_drive_0028_sync 368 l
+2011_09_30/2011_09_30_drive_0028_sync 2662 r
+2011_10_03/2011_10_03_drive_0034_sync 3808 l
+2011_10_03/2011_10_03_drive_0034_sync 3831 r
+2011_09_29/2011_09_29_drive_0026_sync 105 r
+2011_09_30/2011_09_30_drive_0034_sync 637 r
+2011_09_30/2011_09_30_drive_0028_sync 4365 l
+2011_09_26/2011_09_26_drive_0022_sync 506 r
+2011_09_30/2011_09_30_drive_0028_sync 4139 r
+2011_09_30/2011_09_30_drive_0028_sync 1764 r
+2011_09_26/2011_09_26_drive_0011_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 1001 l
+2011_09_26/2011_09_26_drive_0051_sync 316 r
+2011_10_03/2011_10_03_drive_0042_sync 553 l
+2011_10_03/2011_10_03_drive_0034_sync 1085 r
+2011_09_26/2011_09_26_drive_0022_sync 530 r
+2011_09_26/2011_09_26_drive_0095_sync 158 l
+2011_09_30/2011_09_30_drive_0034_sync 1043 l
+2011_09_26/2011_09_26_drive_0039_sync 78 r
+2011_09_30/2011_09_30_drive_0034_sync 652 l
+2011_10_03/2011_10_03_drive_0042_sync 370 l
+2011_09_30/2011_09_30_drive_0033_sync 1527 r
+2011_09_26/2011_09_26_drive_0018_sync 240 l
+2011_09_30/2011_09_30_drive_0034_sync 22 r
+2011_09_26/2011_09_26_drive_0061_sync 535 r
+2011_09_30/2011_09_30_drive_0034_sync 306 l
+2011_09_30/2011_09_30_drive_0034_sync 983 r
+2011_09_30/2011_09_30_drive_0034_sync 151 r
+2011_09_30/2011_09_30_drive_0033_sync 1042 r
+2011_09_26/2011_09_26_drive_0022_sync 543 l
+2011_09_26/2011_09_26_drive_0011_sync 63 l
+2011_09_30/2011_09_30_drive_0028_sync 2196 l
+2011_09_30/2011_09_30_drive_0028_sync 4151 l
+2011_10_03/2011_10_03_drive_0034_sync 661 r
+2011_09_30/2011_09_30_drive_0028_sync 3136 l
+2011_09_30/2011_09_30_drive_0034_sync 774 r
+2011_10_03/2011_10_03_drive_0034_sync 2270 r
+2011_09_30/2011_09_30_drive_0028_sync 4538 r
+2011_09_30/2011_09_30_drive_0020_sync 297 l
+2011_09_30/2011_09_30_drive_0028_sync 3848 r
+2011_10_03/2011_10_03_drive_0034_sync 1008 r
+2011_09_30/2011_09_30_drive_0028_sync 3382 l
+2011_09_30/2011_09_30_drive_0028_sync 1157 r
+2011_10_03/2011_10_03_drive_0034_sync 2074 r
+2011_09_30/2011_09_30_drive_0028_sync 4624 r
+2011_09_26/2011_09_26_drive_0051_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 1278 r
+2011_09_30/2011_09_30_drive_0033_sync 814 r
+2011_10_03/2011_10_03_drive_0034_sync 4583 l
+2011_10_03/2011_10_03_drive_0034_sync 1689 r
+2011_09_30/2011_09_30_drive_0028_sync 3536 r
+2011_10_03/2011_10_03_drive_0034_sync 89 r
+2011_09_26/2011_09_26_drive_0051_sync 359 r
+2011_09_30/2011_09_30_drive_0028_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 313 r
+2011_09_30/2011_09_30_drive_0028_sync 3275 r
+2011_10_03/2011_10_03_drive_0042_sync 577 l
+2011_09_26/2011_09_26_drive_0051_sync 429 l
+2011_10_03/2011_10_03_drive_0034_sync 2524 l
+2011_10_03/2011_10_03_drive_0034_sync 1942 l
+2011_09_26/2011_09_26_drive_0061_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 4216 l
+2011_09_26/2011_09_26_drive_0014_sync 175 l
+2011_09_30/2011_09_30_drive_0028_sync 4578 l
+2011_09_30/2011_09_30_drive_0034_sync 409 l
+2011_09_30/2011_09_30_drive_0028_sync 4902 r
+2011_09_30/2011_09_30_drive_0028_sync 1723 r
+2011_09_26/2011_09_26_drive_0001_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 2715 r
+2011_09_26/2011_09_26_drive_0039_sync 387 r
+2011_09_26/2011_09_26_drive_0022_sync 313 l
+2011_09_26/2011_09_26_drive_0061_sync 696 l
+2011_10_03/2011_10_03_drive_0034_sync 23 r
+2011_09_30/2011_09_30_drive_0028_sync 2412 l
+2011_09_30/2011_09_30_drive_0033_sync 1452 r
+2011_09_30/2011_09_30_drive_0028_sync 1958 r
+2011_09_26/2011_09_26_drive_0091_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 1544 r
+2011_10_03/2011_10_03_drive_0034_sync 4621 l
+2011_09_26/2011_09_26_drive_0018_sync 91 l
+2011_09_30/2011_09_30_drive_0033_sync 1340 r
+2011_09_26/2011_09_26_drive_0019_sync 64 r
+2011_10_03/2011_10_03_drive_0034_sync 2219 r
+2011_10_03/2011_10_03_drive_0034_sync 3537 r
+2011_09_26/2011_09_26_drive_0061_sync 0 l
+2011_10_03/2011_10_03_drive_0034_sync 3088 l
+2011_09_26/2011_09_26_drive_0057_sync 142 r
+2011_09_30/2011_09_30_drive_0020_sync 202 l
+2011_10_03/2011_10_03_drive_0034_sync 3868 r
+2011_09_26/2011_09_26_drive_0095_sync 145 l
+2011_09_30/2011_09_30_drive_0020_sync 678 r
+2011_09_26/2011_09_26_drive_0028_sync 362 l
+2011_09_30/2011_09_30_drive_0034_sync 687 r
+2011_09_30/2011_09_30_drive_0033_sync 322 l
+2011_09_30/2011_09_30_drive_0028_sync 1814 l
+2011_10_03/2011_10_03_drive_0034_sync 2809 l
+2011_09_30/2011_09_30_drive_0028_sync 1522 l
+2011_09_30/2011_09_30_drive_0033_sync 12 r
+2011_09_26/2011_09_26_drive_0022_sync 66 l
+2011_09_26/2011_09_26_drive_0095_sync 258 l
+2011_09_30/2011_09_30_drive_0028_sync 772 l
+2011_09_30/2011_09_30_drive_0028_sync 3509 l
+2011_09_30/2011_09_30_drive_0028_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 1306 l
+2011_09_26/2011_09_26_drive_0061_sync 464 r
+2011_09_30/2011_09_30_drive_0028_sync 4173 l
+2011_09_30/2011_09_30_drive_0028_sync 1256 l
+2011_09_26/2011_09_26_drive_0022_sync 760 l
+2011_10_03/2011_10_03_drive_0034_sync 1174 r
+2011_10_03/2011_10_03_drive_0034_sync 2538 r
+2011_09_30/2011_09_30_drive_0028_sync 3170 r
+2011_09_30/2011_09_30_drive_0028_sync 3094 r
+2011_09_30/2011_09_30_drive_0028_sync 3206 l
+2011_09_30/2011_09_30_drive_0028_sync 2453 r
+2011_09_29/2011_09_29_drive_0004_sync 7 r
+2011_09_30/2011_09_30_drive_0033_sync 905 r
+2011_09_30/2011_09_30_drive_0028_sync 2886 r
+2011_09_30/2011_09_30_drive_0034_sync 209 r
+2011_10_03/2011_10_03_drive_0034_sync 679 l
+2011_09_26/2011_09_26_drive_0104_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 3809 l
+2011_09_26/2011_09_26_drive_0060_sync 13 l
+2011_09_26/2011_09_26_drive_0039_sync 116 r
+2011_10_03/2011_10_03_drive_0034_sync 192 l
+2011_09_26/2011_09_26_drive_0091_sync 55 l
+2011_09_30/2011_09_30_drive_0033_sync 644 r
+2011_09_30/2011_09_30_drive_0028_sync 4006 l
+2011_10_03/2011_10_03_drive_0034_sync 2141 l
+2011_10_03/2011_10_03_drive_0042_sync 429 r
+2011_10_03/2011_10_03_drive_0034_sync 1699 r
+2011_10_03/2011_10_03_drive_0034_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 2019 l
+2011_10_03/2011_10_03_drive_0034_sync 2954 r
+2011_10_03/2011_10_03_drive_0034_sync 177 l
+2011_09_26/2011_09_26_drive_0087_sync 462 r
+2011_09_29/2011_09_29_drive_0004_sync 242 l
+2011_09_30/2011_09_30_drive_0028_sync 2706 r
+2011_09_30/2011_09_30_drive_0028_sync 3729 r
+2011_09_30/2011_09_30_drive_0028_sync 3053 l
+2011_10_03/2011_10_03_drive_0034_sync 3444 l
+2011_09_26/2011_09_26_drive_0022_sync 412 l
+2011_09_26/2011_09_26_drive_0095_sync 18 l
+2011_09_26/2011_09_26_drive_0022_sync 723 l
+2011_09_30/2011_09_30_drive_0028_sync 976 l
+2011_09_30/2011_09_30_drive_0028_sync 2465 l
+2011_09_30/2011_09_30_drive_0028_sync 826 l
+2011_10_03/2011_10_03_drive_0034_sync 3556 r
+2011_09_30/2011_09_30_drive_0020_sync 1024 r
+2011_09_30/2011_09_30_drive_0028_sync 3831 r
+2011_09_30/2011_09_30_drive_0034_sync 1081 r
+2011_09_30/2011_09_30_drive_0028_sync 3718 l
+2011_09_26/2011_09_26_drive_0039_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 2402 r
+2011_09_26/2011_09_26_drive_0061_sync 435 l
+2011_09_30/2011_09_30_drive_0028_sync 2984 r
+2011_10_03/2011_10_03_drive_0034_sync 1727 r
+2011_09_30/2011_09_30_drive_0028_sync 4311 r
+2011_09_30/2011_09_30_drive_0034_sync 1117 r
+2011_09_26/2011_09_26_drive_0051_sync 103 r
+2011_10_03/2011_10_03_drive_0042_sync 699 r
+2011_09_30/2011_09_30_drive_0033_sync 312 r
+2011_09_26/2011_09_26_drive_0087_sync 718 l
+2011_09_29/2011_09_29_drive_0026_sync 50 l
+2011_09_26/2011_09_26_drive_0057_sync 280 l
+2011_09_30/2011_09_30_drive_0020_sync 605 l
+2011_09_26/2011_09_26_drive_0015_sync 18 r
+2011_09_26/2011_09_26_drive_0032_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 2990 r
+2011_09_30/2011_09_30_drive_0028_sync 4793 l
+2011_09_29/2011_09_29_drive_0004_sync 140 r
+2011_09_26/2011_09_26_drive_0022_sync 444 l
+2011_10_03/2011_10_03_drive_0034_sync 2965 r
+2011_09_30/2011_09_30_drive_0028_sync 4645 l
+2011_09_30/2011_09_30_drive_0028_sync 2243 r
+2011_09_26/2011_09_26_drive_0022_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 1194 l
+2011_09_30/2011_09_30_drive_0020_sync 238 l
+2011_09_30/2011_09_30_drive_0034_sync 917 r
+2011_09_26/2011_09_26_drive_0005_sync 86 l
+2011_09_30/2011_09_30_drive_0033_sync 676 r
+2011_09_30/2011_09_30_drive_0028_sync 2492 r
+2011_09_30/2011_09_30_drive_0020_sync 421 r
+2011_09_30/2011_09_30_drive_0028_sync 3192 l
+2011_09_30/2011_09_30_drive_0033_sync 845 r
+2011_09_30/2011_09_30_drive_0033_sync 1371 l
+2011_09_26/2011_09_26_drive_0035_sync 21 l
+2011_09_26/2011_09_26_drive_0061_sync 663 r
+2011_09_26/2011_09_26_drive_0087_sync 359 r
+2011_10_03/2011_10_03_drive_0034_sync 136 r
+2011_09_30/2011_09_30_drive_0028_sync 373 r
+2011_09_26/2011_09_26_drive_0018_sync 251 r
+2011_09_26/2011_09_26_drive_0079_sync 14 l
+2011_09_30/2011_09_30_drive_0028_sync 631 l
+2011_09_26/2011_09_26_drive_0032_sync 362 r
+2011_09_30/2011_09_30_drive_0028_sync 4370 l
+2011_10_03/2011_10_03_drive_0042_sync 881 l
+2011_09_26/2011_09_26_drive_0028_sync 90 l
+2011_09_30/2011_09_30_drive_0033_sync 1348 r
+2011_09_30/2011_09_30_drive_0033_sync 1120 l
+2011_09_26/2011_09_26_drive_0087_sync 418 r
+2011_09_30/2011_09_30_drive_0028_sync 3353 r
+2011_09_26/2011_09_26_drive_0005_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 813 l
+2011_09_26/2011_09_26_drive_0022_sync 461 r
+2011_09_26/2011_09_26_drive_0070_sync 62 r
+2011_09_26/2011_09_26_drive_0014_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 918 l
+2011_09_30/2011_09_30_drive_0033_sync 1391 l
+2011_09_29/2011_09_29_drive_0004_sync 317 r
+2011_09_30/2011_09_30_drive_0034_sync 717 r
+2011_10_03/2011_10_03_drive_0042_sync 1081 l
+2011_09_30/2011_09_30_drive_0028_sync 2110 r
+2011_09_30/2011_09_30_drive_0028_sync 2430 l
+2011_09_30/2011_09_30_drive_0028_sync 3517 l
+2011_09_30/2011_09_30_drive_0020_sync 243 r
+2011_09_30/2011_09_30_drive_0034_sync 736 r
+2011_10_03/2011_10_03_drive_0034_sync 878 l
+2011_09_30/2011_09_30_drive_0028_sync 2893 r
+2011_09_26/2011_09_26_drive_0015_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 1103 l
+2011_09_30/2011_09_30_drive_0028_sync 4190 r
+2011_09_28/2011_09_28_drive_0001_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 800 r
+2011_09_30/2011_09_30_drive_0028_sync 2234 l
+2011_10_03/2011_10_03_drive_0034_sync 3041 r
+2011_10_03/2011_10_03_drive_0034_sync 3213 r
+2011_09_26/2011_09_26_drive_0061_sync 517 r
+2011_09_30/2011_09_30_drive_0020_sync 776 r
+2011_09_30/2011_09_30_drive_0028_sync 4144 r
+2011_10_03/2011_10_03_drive_0034_sync 2796 l
+2011_09_26/2011_09_26_drive_0032_sync 15 l
+2011_09_29/2011_09_29_drive_0026_sync 23 l
+2011_09_26/2011_09_26_drive_0057_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 2450 r
+2011_09_30/2011_09_30_drive_0028_sync 471 l
+2011_10_03/2011_10_03_drive_0034_sync 3988 l
+2011_09_26/2011_09_26_drive_0014_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 3143 l
+2011_10_03/2011_10_03_drive_0034_sync 767 r
+2011_09_26/2011_09_26_drive_0051_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 3741 r
+2011_09_30/2011_09_30_drive_0034_sync 840 l
+2011_09_26/2011_09_26_drive_0039_sync 20 r
+2011_09_26/2011_09_26_drive_0014_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 452 r
+2011_09_30/2011_09_30_drive_0028_sync 2944 l
+2011_09_30/2011_09_30_drive_0020_sync 712 r
+2011_10_03/2011_10_03_drive_0034_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 1205 l
+2011_10_03/2011_10_03_drive_0034_sync 2873 r
+2011_09_26/2011_09_26_drive_0061_sync 299 l
+2011_10_03/2011_10_03_drive_0034_sync 3662 r
+2011_09_30/2011_09_30_drive_0034_sync 797 r
+2011_09_30/2011_09_30_drive_0033_sync 1391 r
+2011_10_03/2011_10_03_drive_0042_sync 823 r
+2011_10_03/2011_10_03_drive_0042_sync 523 l
+2011_10_03/2011_10_03_drive_0034_sync 3402 l
+2011_10_03/2011_10_03_drive_0034_sync 1324 r
+2011_09_26/2011_09_26_drive_0061_sync 28 r
+2011_09_26/2011_09_26_drive_0028_sync 386 r
+2011_09_30/2011_09_30_drive_0028_sync 1673 l
+2011_09_26/2011_09_26_drive_0104_sync 49 l
+2011_09_26/2011_09_26_drive_0022_sync 773 l
+2011_09_30/2011_09_30_drive_0028_sync 2394 l
+2011_10_03/2011_10_03_drive_0034_sync 1939 r
+2011_09_30/2011_09_30_drive_0033_sync 1034 r
+2011_09_26/2011_09_26_drive_0015_sync 152 r
+2011_09_26/2011_09_26_drive_0039_sync 371 r
+2011_10_03/2011_10_03_drive_0034_sync 855 l
+2011_09_26/2011_09_26_drive_0028_sync 339 r
+2011_10_03/2011_10_03_drive_0034_sync 4596 r
+2011_09_30/2011_09_30_drive_0028_sync 2208 r
+2011_10_03/2011_10_03_drive_0034_sync 116 l
+2011_10_03/2011_10_03_drive_0034_sync 623 l
+2011_09_30/2011_09_30_drive_0020_sync 705 r
+2011_10_03/2011_10_03_drive_0034_sync 3071 l
+2011_10_03/2011_10_03_drive_0034_sync 1831 r
+2011_09_26/2011_09_26_drive_0070_sync 86 r
+2011_09_30/2011_09_30_drive_0028_sync 3189 r
+2011_09_30/2011_09_30_drive_0028_sync 5049 l
+2011_09_26/2011_09_26_drive_0087_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 3062 l
+2011_09_26/2011_09_26_drive_0022_sync 604 l
+2011_09_26/2011_09_26_drive_0035_sync 48 l
+2011_10_03/2011_10_03_drive_0042_sync 780 l
+2011_09_30/2011_09_30_drive_0034_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 4957 r
+2011_09_26/2011_09_26_drive_0070_sync 391 l
+2011_09_26/2011_09_26_drive_0022_sync 787 r
+2011_09_30/2011_09_30_drive_0028_sync 4942 r
+2011_09_26/2011_09_26_drive_0032_sync 344 l
+2011_09_30/2011_09_30_drive_0028_sync 4581 r
+2011_09_26/2011_09_26_drive_0091_sync 46 r
+2011_10_03/2011_10_03_drive_0034_sync 4158 r
+2011_10_03/2011_10_03_drive_0034_sync 90 r
+2011_09_30/2011_09_30_drive_0020_sync 862 l
+2011_09_30/2011_09_30_drive_0028_sync 1141 l
+2011_09_26/2011_09_26_drive_0070_sync 407 r
+2011_09_26/2011_09_26_drive_0087_sync 318 l
+2011_10_03/2011_10_03_drive_0034_sync 2130 r
+2011_10_03/2011_10_03_drive_0042_sync 475 l
+2011_10_03/2011_10_03_drive_0042_sync 910 l
+2011_09_30/2011_09_30_drive_0028_sync 1728 r
+2011_10_03/2011_10_03_drive_0034_sync 3709 l
+2011_09_30/2011_09_30_drive_0028_sync 1562 r
+2011_10_03/2011_10_03_drive_0042_sync 452 r
+2011_09_26/2011_09_26_drive_0019_sync 185 r
+2011_09_30/2011_09_30_drive_0028_sync 2387 l
+2011_09_26/2011_09_26_drive_0070_sync 338 r
+2011_09_30/2011_09_30_drive_0034_sync 1170 r
+2011_09_30/2011_09_30_drive_0028_sync 2614 r
+2011_09_26/2011_09_26_drive_0057_sync 113 l
+2011_10_03/2011_10_03_drive_0034_sync 3524 l
+2011_10_03/2011_10_03_drive_0034_sync 2944 l
+2011_09_26/2011_09_26_drive_0014_sync 109 l
+2011_10_03/2011_10_03_drive_0034_sync 699 r
+2011_09_30/2011_09_30_drive_0028_sync 5108 r
+2011_09_26/2011_09_26_drive_0018_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 2497 l
+2011_09_30/2011_09_30_drive_0034_sync 1220 l
+2011_09_26/2011_09_26_drive_0079_sync 65 r
+2011_09_26/2011_09_26_drive_0087_sync 687 r
+2011_09_30/2011_09_30_drive_0020_sync 387 l
+2011_09_30/2011_09_30_drive_0028_sync 4230 r
+2011_09_26/2011_09_26_drive_0028_sync 54 l
+2011_09_30/2011_09_30_drive_0028_sync 2372 r
+2011_09_30/2011_09_30_drive_0033_sync 269 l
+2011_09_26/2011_09_26_drive_0014_sync 76 r
+2011_09_26/2011_09_26_drive_0061_sync 692 r
+2011_09_26/2011_09_26_drive_0104_sync 4 l
+2011_10_03/2011_10_03_drive_0034_sync 592 r
+2011_10_03/2011_10_03_drive_0034_sync 725 r
+2011_09_30/2011_09_30_drive_0028_sync 4698 r
+2011_09_26/2011_09_26_drive_0060_sync 39 l
+2011_09_26/2011_09_26_drive_0087_sync 351 l
+2011_10_03/2011_10_03_drive_0034_sync 1817 l
+2011_09_29/2011_09_29_drive_0004_sync 18 l
+2011_10_03/2011_10_03_drive_0034_sync 1036 r
+2011_09_26/2011_09_26_drive_0087_sync 171 r
+2011_09_26/2011_09_26_drive_0079_sync 30 r
+2011_09_30/2011_09_30_drive_0033_sync 1358 l
+2011_09_26/2011_09_26_drive_0028_sync 240 r
+2011_09_30/2011_09_30_drive_0028_sync 2568 l
+2011_09_30/2011_09_30_drive_0033_sync 560 l
+2011_09_29/2011_09_29_drive_0004_sync 8 l
+2011_09_26/2011_09_26_drive_0087_sync 498 l
+2011_10_03/2011_10_03_drive_0034_sync 2907 r
+2011_10_03/2011_10_03_drive_0034_sync 3567 r
+2011_10_03/2011_10_03_drive_0034_sync 3955 r
+2011_09_26/2011_09_26_drive_0032_sync 245 l
+2011_09_26/2011_09_26_drive_0087_sync 143 r
+2011_09_30/2011_09_30_drive_0028_sync 2559 r
+2011_09_26/2011_09_26_drive_0087_sync 16 l
+2011_10_03/2011_10_03_drive_0042_sync 387 r
+2011_09_26/2011_09_26_drive_0032_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 1595 r
+2011_09_26/2011_09_26_drive_0019_sync 325 l
+2011_10_03/2011_10_03_drive_0034_sync 4170 r
+2011_09_30/2011_09_30_drive_0028_sync 4052 l
+2011_10_03/2011_10_03_drive_0034_sync 3854 l
+2011_10_03/2011_10_03_drive_0034_sync 785 r
+2011_09_30/2011_09_30_drive_0028_sync 2429 l
+2011_09_26/2011_09_26_drive_0087_sync 461 r
+2011_10_03/2011_10_03_drive_0034_sync 1612 r
+2011_09_30/2011_09_30_drive_0028_sync 2902 l
+2011_09_30/2011_09_30_drive_0028_sync 5070 l
+2011_10_03/2011_10_03_drive_0034_sync 806 r
+2011_09_26/2011_09_26_drive_0028_sync 366 r
+2011_09_26/2011_09_26_drive_0032_sync 115 r
+2011_09_30/2011_09_30_drive_0034_sync 229 l
+2011_09_30/2011_09_30_drive_0020_sync 211 l
+2011_09_30/2011_09_30_drive_0028_sync 4910 r
+2011_09_30/2011_09_30_drive_0034_sync 841 r
+2011_10_03/2011_10_03_drive_0034_sync 4239 l
+2011_09_30/2011_09_30_drive_0028_sync 1063 l
+2011_09_26/2011_09_26_drive_0014_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 194 l
+2011_09_29/2011_09_29_drive_0004_sync 290 r
+2011_09_30/2011_09_30_drive_0020_sync 650 l
+2011_10_03/2011_10_03_drive_0034_sync 794 r
+2011_09_26/2011_09_26_drive_0019_sync 297 l
+2011_09_26/2011_09_26_drive_0022_sync 129 r
+2011_10_03/2011_10_03_drive_0034_sync 4147 l
+2011_09_26/2011_09_26_drive_0018_sync 128 l
+2011_09_30/2011_09_30_drive_0028_sync 4628 l
+2011_10_03/2011_10_03_drive_0034_sync 4283 r
+2011_09_30/2011_09_30_drive_0028_sync 711 l
+2011_10_03/2011_10_03_drive_0042_sync 860 r
+2011_09_30/2011_09_30_drive_0033_sync 841 l
+2011_09_30/2011_09_30_drive_0028_sync 620 l
+2011_09_26/2011_09_26_drive_0014_sync 178 l
+2011_09_26/2011_09_26_drive_0057_sync 278 l
+2011_09_30/2011_09_30_drive_0028_sync 2692 l
+2011_09_26/2011_09_26_drive_0022_sync 466 r
+2011_09_30/2011_09_30_drive_0034_sync 631 r
+2011_10_03/2011_10_03_drive_0034_sync 3771 l
+2011_09_26/2011_09_26_drive_0018_sync 30 l
+2011_09_30/2011_09_30_drive_0033_sync 775 l
+2011_09_26/2011_09_26_drive_0087_sync 525 l
+2011_09_30/2011_09_30_drive_0033_sync 214 r
+2011_09_30/2011_09_30_drive_0028_sync 1966 l
+2011_09_30/2011_09_30_drive_0020_sync 48 l
+2011_09_26/2011_09_26_drive_0028_sync 86 r
+2011_09_26/2011_09_26_drive_0091_sync 103 l
+2011_10_03/2011_10_03_drive_0034_sync 3581 r
+2011_09_26/2011_09_26_drive_0087_sync 629 r
+2011_10_03/2011_10_03_drive_0042_sync 425 l
+2011_09_29/2011_09_29_drive_0004_sync 105 l
+2011_09_26/2011_09_26_drive_0022_sync 143 r
+2011_09_26/2011_09_26_drive_0017_sync 96 l
+2011_09_26/2011_09_26_drive_0061_sync 452 r
+2011_09_30/2011_09_30_drive_0028_sync 2567 r
+2011_09_26/2011_09_26_drive_0091_sync 217 r
+2011_10_03/2011_10_03_drive_0042_sync 543 l
+2011_10_03/2011_10_03_drive_0034_sync 1399 l
+2011_10_03/2011_10_03_drive_0034_sync 417 r
+2011_10_03/2011_10_03_drive_0042_sync 90 r
+2011_09_26/2011_09_26_drive_0104_sync 24 r
+2011_09_26/2011_09_26_drive_0113_sync 33 l
+2011_09_26/2011_09_26_drive_0022_sync 575 l
+2011_10_03/2011_10_03_drive_0034_sync 721 r
+2011_09_26/2011_09_26_drive_0014_sync 253 l
+2011_09_26/2011_09_26_drive_0011_sync 120 r
+2011_09_30/2011_09_30_drive_0020_sync 495 r
+2011_10_03/2011_10_03_drive_0034_sync 2007 l
+2011_09_30/2011_09_30_drive_0028_sync 1054 r
+2011_09_30/2011_09_30_drive_0028_sync 748 r
+2011_09_30/2011_09_30_drive_0028_sync 3455 r
+2011_10_03/2011_10_03_drive_0034_sync 2680 r
+2011_09_26/2011_09_26_drive_0061_sync 504 r
+2011_10_03/2011_10_03_drive_0042_sync 1118 l
+2011_09_26/2011_09_26_drive_0051_sync 50 l
+2011_09_30/2011_09_30_drive_0028_sync 613 l
+2011_09_26/2011_09_26_drive_0017_sync 56 l
+2011_09_30/2011_09_30_drive_0020_sync 57 r
+2011_09_26/2011_09_26_drive_0022_sync 576 l
+2011_09_26/2011_09_26_drive_0005_sync 80 l
+2011_09_26/2011_09_26_drive_0061_sync 479 l
+2011_09_30/2011_09_30_drive_0020_sync 600 r
+2011_09_26/2011_09_26_drive_0022_sync 681 r
+2011_10_03/2011_10_03_drive_0042_sync 529 r
+2011_09_30/2011_09_30_drive_0028_sync 1416 r
+2011_10_03/2011_10_03_drive_0034_sync 1652 r
+2011_09_29/2011_09_29_drive_0004_sync 148 r
+2011_10_03/2011_10_03_drive_0034_sync 1203 r
+2011_10_03/2011_10_03_drive_0042_sync 248 r
+2011_09_26/2011_09_26_drive_0022_sync 240 l
+2011_10_03/2011_10_03_drive_0034_sync 922 l
+2011_09_30/2011_09_30_drive_0028_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 2368 l
+2011_10_03/2011_10_03_drive_0034_sync 1064 l
+2011_09_26/2011_09_26_drive_0070_sync 164 l
+2011_10_03/2011_10_03_drive_0034_sync 745 l
+2011_09_26/2011_09_26_drive_0014_sync 58 l
+2011_09_26/2011_09_26_drive_0091_sync 146 l
+2011_09_30/2011_09_30_drive_0028_sync 2802 l
+2011_10_03/2011_10_03_drive_0034_sync 3446 l
+2011_10_03/2011_10_03_drive_0042_sync 306 l
+2011_09_30/2011_09_30_drive_0020_sync 534 r
+2011_10_03/2011_10_03_drive_0034_sync 2572 l
+2011_09_26/2011_09_26_drive_0014_sync 52 l
+2011_09_30/2011_09_30_drive_0028_sync 3340 r
+2011_09_30/2011_09_30_drive_0020_sync 382 r
+2011_09_30/2011_09_30_drive_0028_sync 536 l
+2011_09_30/2011_09_30_drive_0028_sync 2434 r
+2011_09_30/2011_09_30_drive_0020_sync 297 r
+2011_09_30/2011_09_30_drive_0020_sync 1000 l
+2011_09_30/2011_09_30_drive_0028_sync 2033 l
+2011_10_03/2011_10_03_drive_0034_sync 3275 r
+2011_09_26/2011_09_26_drive_0060_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 3541 l
+2011_10_03/2011_10_03_drive_0042_sync 408 l
+2011_09_30/2011_09_30_drive_0028_sync 289 r
+2011_09_30/2011_09_30_drive_0028_sync 4819 l
+2011_09_26/2011_09_26_drive_0011_sync 91 l
+2011_09_30/2011_09_30_drive_0034_sync 438 r
+2011_09_30/2011_09_30_drive_0028_sync 2434 l
+2011_10_03/2011_10_03_drive_0034_sync 4146 l
+2011_09_30/2011_09_30_drive_0028_sync 1182 l
+2011_10_03/2011_10_03_drive_0034_sync 1127 l
+2011_09_26/2011_09_26_drive_0014_sync 36 r
+2011_09_30/2011_09_30_drive_0028_sync 99 l
+2011_09_26/2011_09_26_drive_0070_sync 298 r
+2011_09_30/2011_09_30_drive_0028_sync 4532 l
+2011_10_03/2011_10_03_drive_0042_sync 448 r
+2011_09_26/2011_09_26_drive_0015_sync 180 r
+2011_09_30/2011_09_30_drive_0034_sync 1187 l
+2011_10_03/2011_10_03_drive_0034_sync 3044 l
+2011_09_30/2011_09_30_drive_0028_sync 4047 r
+2011_09_26/2011_09_26_drive_0022_sync 793 r
+2011_09_30/2011_09_30_drive_0020_sync 331 l
+2011_10_03/2011_10_03_drive_0034_sync 2256 r
+2011_09_26/2011_09_26_drive_0014_sync 228 l
+2011_09_30/2011_09_30_drive_0020_sync 649 r
+2011_09_30/2011_09_30_drive_0028_sync 4310 r
+2011_09_28/2011_09_28_drive_0001_sync 64 l
+2011_09_30/2011_09_30_drive_0028_sync 2244 l
+2011_09_26/2011_09_26_drive_0032_sync 72 l
+2011_09_26/2011_09_26_drive_0091_sync 87 r
+2011_09_30/2011_09_30_drive_0020_sync 939 r
+2011_09_26/2011_09_26_drive_0039_sync 235 l
+2011_09_29/2011_09_29_drive_0004_sync 4 r
+2011_09_26/2011_09_26_drive_0091_sync 263 l
+2011_10_03/2011_10_03_drive_0034_sync 83 l
+2011_09_26/2011_09_26_drive_0014_sync 11 r
+2011_10_03/2011_10_03_drive_0034_sync 2579 r
+2011_09_26/2011_09_26_drive_0014_sync 312 r
+2011_09_30/2011_09_30_drive_0028_sync 4981 r
+2011_09_30/2011_09_30_drive_0028_sync 55 r
+2011_09_26/2011_09_26_drive_0061_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 1806 l
+2011_09_30/2011_09_30_drive_0028_sync 2298 r
+2011_09_30/2011_09_30_drive_0033_sync 610 l
+2011_09_29/2011_09_29_drive_0004_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 3613 l
+2011_09_29/2011_09_29_drive_0004_sync 200 r
+2011_09_26/2011_09_26_drive_0057_sync 175 r
+2011_09_26/2011_09_26_drive_0005_sync 6 r
+2011_09_26/2011_09_26_drive_0017_sync 74 l
+2011_09_26/2011_09_26_drive_0061_sync 374 r
+2011_09_26/2011_09_26_drive_0070_sync 14 r
+2011_09_30/2011_09_30_drive_0034_sync 296 r
+2011_09_30/2011_09_30_drive_0028_sync 1537 l
+2011_09_26/2011_09_26_drive_0087_sync 646 l
+2011_09_26/2011_09_26_drive_0079_sync 97 l
+2011_10_03/2011_10_03_drive_0034_sync 3593 l
+2011_09_29/2011_09_29_drive_0004_sync 280 r
+2011_09_26/2011_09_26_drive_0019_sync 168 l
+2011_10_03/2011_10_03_drive_0034_sync 2462 r
+2011_10_03/2011_10_03_drive_0042_sync 702 l
+2011_09_30/2011_09_30_drive_0034_sync 433 l
+2011_09_26/2011_09_26_drive_0019_sync 232 l
+2011_09_30/2011_09_30_drive_0028_sync 8 l
+2011_09_26/2011_09_26_drive_0095_sync 157 r
+2011_09_30/2011_09_30_drive_0028_sync 3262 r
+2011_09_30/2011_09_30_drive_0028_sync 3918 r
+2011_10_03/2011_10_03_drive_0034_sync 1296 l
+2011_10_03/2011_10_03_drive_0034_sync 2086 r
+2011_09_26/2011_09_26_drive_0018_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 3237 l
+2011_09_26/2011_09_26_drive_0019_sync 467 l
+2011_09_26/2011_09_26_drive_0015_sync 47 l
+2011_09_26/2011_09_26_drive_0095_sync 198 l
+2011_09_30/2011_09_30_drive_0034_sync 868 r
+2011_09_30/2011_09_30_drive_0028_sync 2799 r
+2011_09_30/2011_09_30_drive_0020_sync 1090 l
+2011_10_03/2011_10_03_drive_0034_sync 2016 r
+2011_09_30/2011_09_30_drive_0020_sync 630 r
+2011_09_26/2011_09_26_drive_0091_sync 109 l
+2011_09_30/2011_09_30_drive_0020_sync 481 l
+2011_10_03/2011_10_03_drive_0034_sync 1645 r
+2011_09_26/2011_09_26_drive_0061_sync 226 l
+2011_09_30/2011_09_30_drive_0028_sync 433 r
+2011_09_30/2011_09_30_drive_0020_sync 1064 r
+2011_09_30/2011_09_30_drive_0020_sync 415 l
+2011_09_26/2011_09_26_drive_0091_sync 61 l
+2011_09_30/2011_09_30_drive_0028_sync 4391 r
+2011_09_30/2011_09_30_drive_0028_sync 3196 l
+2011_09_26/2011_09_26_drive_0011_sync 153 r
+2011_10_03/2011_10_03_drive_0042_sync 555 r
+2011_10_03/2011_10_03_drive_0034_sync 3461 r
+2011_09_26/2011_09_26_drive_0087_sync 154 r
+2011_09_30/2011_09_30_drive_0028_sync 2226 r
+2011_09_30/2011_09_30_drive_0020_sync 379 r
+2011_09_30/2011_09_30_drive_0028_sync 2077 r
+2011_09_26/2011_09_26_drive_0070_sync 53 l
+2011_09_26/2011_09_26_drive_0001_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 985 l
+2011_09_29/2011_09_29_drive_0026_sync 4 r
+2011_09_30/2011_09_30_drive_0033_sync 108 r
+2011_09_30/2011_09_30_drive_0028_sync 1782 r
+2011_09_30/2011_09_30_drive_0020_sync 1010 l
+2011_09_30/2011_09_30_drive_0028_sync 2065 r
+2011_09_26/2011_09_26_drive_0087_sync 534 r
+2011_09_26/2011_09_26_drive_0087_sync 361 l
+2011_09_26/2011_09_26_drive_0014_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 2138 l
+2011_09_30/2011_09_30_drive_0028_sync 4226 l
+2011_10_03/2011_10_03_drive_0042_sync 511 l
+2011_09_30/2011_09_30_drive_0028_sync 2229 l
+2011_09_30/2011_09_30_drive_0033_sync 622 r
+2011_09_30/2011_09_30_drive_0028_sync 4312 r
+2011_09_30/2011_09_30_drive_0028_sync 4617 l
+2011_09_30/2011_09_30_drive_0033_sync 1549 r
+2011_10_03/2011_10_03_drive_0034_sync 634 r
+2011_09_26/2011_09_26_drive_0070_sync 288 l
+2011_10_03/2011_10_03_drive_0034_sync 3519 l
+2011_09_26/2011_09_26_drive_0061_sync 465 l
+2011_09_30/2011_09_30_drive_0020_sync 408 r
+2011_09_30/2011_09_30_drive_0028_sync 3276 r
+2011_09_26/2011_09_26_drive_0091_sync 339 l
+2011_09_30/2011_09_30_drive_0028_sync 273 l
+2011_09_26/2011_09_26_drive_0011_sync 48 l
+2011_09_26/2011_09_26_drive_0051_sync 428 l
+2011_10_03/2011_10_03_drive_0034_sync 1524 r
+2011_10_03/2011_10_03_drive_0042_sync 839 r
+2011_09_30/2011_09_30_drive_0028_sync 877 r
+2011_09_30/2011_09_30_drive_0028_sync 3840 l
+2011_10_03/2011_10_03_drive_0034_sync 412 l
+2011_09_30/2011_09_30_drive_0033_sync 797 r
+2011_10_03/2011_10_03_drive_0034_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 4766 r
+2011_09_26/2011_09_26_drive_0011_sync 134 l
+2011_09_26/2011_09_26_drive_0035_sync 85 r
+2011_09_30/2011_09_30_drive_0034_sync 1197 l
+2011_09_26/2011_09_26_drive_0018_sync 246 l
+2011_09_30/2011_09_30_drive_0028_sync 2121 r
+2011_09_30/2011_09_30_drive_0028_sync 4945 r
+2011_09_30/2011_09_30_drive_0028_sync 605 r
+2011_09_26/2011_09_26_drive_0061_sync 631 l
+2011_09_30/2011_09_30_drive_0028_sync 95 l
+2011_10_03/2011_10_03_drive_0034_sync 311 l
+2011_10_03/2011_10_03_drive_0034_sync 920 l
+2011_09_30/2011_09_30_drive_0020_sync 206 l
+2011_09_30/2011_09_30_drive_0028_sync 4854 l
+2011_09_30/2011_09_30_drive_0020_sync 768 l
+2011_09_30/2011_09_30_drive_0033_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 4285 r
+2011_09_30/2011_09_30_drive_0033_sync 705 l
+2011_09_26/2011_09_26_drive_0087_sync 418 l
+2011_10_03/2011_10_03_drive_0034_sync 1544 r
+2011_09_26/2011_09_26_drive_0022_sync 680 r
+2011_09_30/2011_09_30_drive_0033_sync 157 r
+2011_09_26/2011_09_26_drive_0095_sync 22 r
+2011_09_26/2011_09_26_drive_0022_sync 62 r
+2011_09_26/2011_09_26_drive_0019_sync 444 r
+2011_09_30/2011_09_30_drive_0033_sync 261 l
+2011_09_26/2011_09_26_drive_0017_sync 92 l
+2011_09_26/2011_09_26_drive_0104_sync 298 r
+2011_09_26/2011_09_26_drive_0018_sync 200 r
+2011_09_26/2011_09_26_drive_0022_sync 40 r
+2011_09_26/2011_09_26_drive_0019_sync 147 r
+2011_09_30/2011_09_30_drive_0028_sync 4906 l
+2011_09_26/2011_09_26_drive_0032_sync 263 r
+2011_09_26/2011_09_26_drive_0022_sync 111 r
+2011_09_26/2011_09_26_drive_0019_sync 150 r
+2011_09_26/2011_09_26_drive_0019_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 4801 r
+2011_09_26/2011_09_26_drive_0087_sync 391 l
+2011_09_26/2011_09_26_drive_0015_sync 12 l
+2011_09_30/2011_09_30_drive_0033_sync 1055 r
+2011_09_30/2011_09_30_drive_0028_sync 5080 l
+2011_09_30/2011_09_30_drive_0028_sync 2656 l
+2011_10_03/2011_10_03_drive_0034_sync 254 l
+2011_09_30/2011_09_30_drive_0034_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 1432 r
+2011_10_03/2011_10_03_drive_0034_sync 3157 r
+2011_09_30/2011_09_30_drive_0034_sync 977 l
+2011_09_30/2011_09_30_drive_0028_sync 3136 r
+2011_10_03/2011_10_03_drive_0034_sync 2782 r
+2011_09_30/2011_09_30_drive_0028_sync 2792 l
+2011_10_03/2011_10_03_drive_0034_sync 2193 r
+2011_09_30/2011_09_30_drive_0033_sync 288 l
+2011_09_30/2011_09_30_drive_0028_sync 2698 l
+2011_09_26/2011_09_26_drive_0039_sync 157 r
+2011_09_26/2011_09_26_drive_0051_sync 222 l
+2011_09_30/2011_09_30_drive_0028_sync 3120 l
+2011_09_26/2011_09_26_drive_0028_sync 199 r
+2011_09_30/2011_09_30_drive_0028_sync 1866 r
+2011_10_03/2011_10_03_drive_0034_sync 1445 r
+2011_09_29/2011_09_29_drive_0026_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 658 r
+2011_09_30/2011_09_30_drive_0028_sync 1812 l
+2011_09_30/2011_09_30_drive_0020_sync 547 r
+2011_09_26/2011_09_26_drive_0022_sync 126 r
+2011_09_26/2011_09_26_drive_0028_sync 280 r
+2011_10_03/2011_10_03_drive_0034_sync 2126 l
+2011_09_30/2011_09_30_drive_0034_sync 175 l
+2011_10_03/2011_10_03_drive_0034_sync 2796 r
+2011_09_30/2011_09_30_drive_0020_sync 726 l
+2011_09_30/2011_09_30_drive_0033_sync 1342 r
+2011_09_30/2011_09_30_drive_0020_sync 822 l
+2011_09_28/2011_09_28_drive_0001_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 366 r
+2011_09_30/2011_09_30_drive_0028_sync 4210 l
+2011_10_03/2011_10_03_drive_0034_sync 871 l
+2011_09_26/2011_09_26_drive_0057_sync 148 l
+2011_09_30/2011_09_30_drive_0028_sync 3191 r
+2011_09_30/2011_09_30_drive_0034_sync 473 l
+2011_10_03/2011_10_03_drive_0034_sync 1266 l
+2011_10_03/2011_10_03_drive_0042_sync 1110 r
+2011_09_26/2011_09_26_drive_0070_sync 100 r
+2011_09_26/2011_09_26_drive_0022_sync 39 r
+2011_09_30/2011_09_30_drive_0034_sync 748 r
+2011_10_03/2011_10_03_drive_0034_sync 469 r
+2011_09_26/2011_09_26_drive_0015_sync 265 l
+2011_09_30/2011_09_30_drive_0020_sync 804 l
+2011_09_30/2011_09_30_drive_0028_sync 53 r
+2011_10_03/2011_10_03_drive_0034_sync 655 r
+2011_09_30/2011_09_30_drive_0028_sync 3880 r
+2011_09_30/2011_09_30_drive_0033_sync 211 r
+2011_10_03/2011_10_03_drive_0034_sync 394 l
+2011_09_26/2011_09_26_drive_0019_sync 449 r
+2011_10_03/2011_10_03_drive_0034_sync 4287 l
+2011_09_30/2011_09_30_drive_0028_sync 1841 l
+2011_09_26/2011_09_26_drive_0032_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 2454 r
+2011_10_03/2011_10_03_drive_0034_sync 467 l
+2011_09_26/2011_09_26_drive_0032_sync 321 l
+2011_09_30/2011_09_30_drive_0028_sync 1215 r
+2011_09_26/2011_09_26_drive_0051_sync 93 l
+2011_09_30/2011_09_30_drive_0028_sync 326 r
+2011_09_30/2011_09_30_drive_0034_sync 792 l
+2011_09_30/2011_09_30_drive_0028_sync 786 l
+2011_10_03/2011_10_03_drive_0034_sync 779 l
+2011_09_30/2011_09_30_drive_0034_sync 465 l
+2011_09_26/2011_09_26_drive_0018_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 2411 l
+2011_10_03/2011_10_03_drive_0034_sync 486 l
+2011_09_26/2011_09_26_drive_0095_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 5055 l
+2011_09_30/2011_09_30_drive_0028_sync 2581 l
+2011_09_30/2011_09_30_drive_0028_sync 2435 r
+2011_09_30/2011_09_30_drive_0020_sync 355 r
+2011_09_26/2011_09_26_drive_0022_sync 108 r
+2011_09_26/2011_09_26_drive_0060_sync 27 r
+2011_09_26/2011_09_26_drive_0035_sync 1 r
+2011_09_26/2011_09_26_drive_0057_sync 67 r
+2011_09_26/2011_09_26_drive_0011_sync 58 r
+2011_10_03/2011_10_03_drive_0042_sync 627 l
+2011_09_26/2011_09_26_drive_0051_sync 215 l
+2011_09_26/2011_09_26_drive_0061_sync 116 l
+2011_09_30/2011_09_30_drive_0033_sync 1547 r
+2011_09_30/2011_09_30_drive_0028_sync 4778 r
+2011_10_03/2011_10_03_drive_0034_sync 1853 l
+2011_10_03/2011_10_03_drive_0034_sync 3532 l
+2011_09_30/2011_09_30_drive_0033_sync 750 l
+2011_09_26/2011_09_26_drive_0087_sync 172 l
+2011_09_30/2011_09_30_drive_0028_sync 4388 l
+2011_09_26/2011_09_26_drive_0087_sync 298 l
+2011_09_30/2011_09_30_drive_0033_sync 1244 r
+2011_10_03/2011_10_03_drive_0034_sync 2237 l
+2011_09_30/2011_09_30_drive_0028_sync 2520 r
+2011_09_26/2011_09_26_drive_0087_sync 436 l
+2011_10_03/2011_10_03_drive_0034_sync 803 l
+2011_10_03/2011_10_03_drive_0034_sync 1818 l
+2011_09_26/2011_09_26_drive_0051_sync 140 r
+2011_09_30/2011_09_30_drive_0033_sync 1350 r
+2011_10_03/2011_10_03_drive_0034_sync 2877 l
+2011_09_26/2011_09_26_drive_0095_sync 60 l
+2011_10_03/2011_10_03_drive_0034_sync 3137 r
+2011_09_30/2011_09_30_drive_0028_sync 1794 l
+2011_09_26/2011_09_26_drive_0070_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 1905 l
+2011_09_30/2011_09_30_drive_0028_sync 2305 l
+2011_10_03/2011_10_03_drive_0034_sync 109 r
+2011_09_26/2011_09_26_drive_0061_sync 668 l
+2011_09_26/2011_09_26_drive_0061_sync 170 l
+2011_09_30/2011_09_30_drive_0020_sync 263 l
+2011_09_26/2011_09_26_drive_0070_sync 69 l
+2011_10_03/2011_10_03_drive_0042_sync 821 l
+2011_09_30/2011_09_30_drive_0028_sync 1096 l
+2011_10_03/2011_10_03_drive_0042_sync 1126 l
+2011_09_30/2011_09_30_drive_0034_sync 724 l
+2011_09_26/2011_09_26_drive_0035_sync 113 l
+2011_09_26/2011_09_26_drive_0019_sync 320 l
+2011_09_26/2011_09_26_drive_0091_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1756 l
+2011_09_26/2011_09_26_drive_0028_sync 364 r
+2011_09_30/2011_09_30_drive_0033_sync 194 l
+2011_09_30/2011_09_30_drive_0020_sync 450 r
+2011_09_30/2011_09_30_drive_0028_sync 3454 l
+2011_09_26/2011_09_26_drive_0057_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 592 l
+2011_09_26/2011_09_26_drive_0032_sync 201 r
+2011_10_03/2011_10_03_drive_0034_sync 692 l
+2011_10_03/2011_10_03_drive_0034_sync 279 r
+2011_09_30/2011_09_30_drive_0020_sync 207 l
+2011_09_26/2011_09_26_drive_0051_sync 394 l
+2011_09_30/2011_09_30_drive_0028_sync 4293 r
+2011_10_03/2011_10_03_drive_0034_sync 385 r
+2011_09_26/2011_09_26_drive_0087_sync 39 r
+2011_09_30/2011_09_30_drive_0028_sync 962 l
+2011_09_30/2011_09_30_drive_0028_sync 2566 l
+2011_10_03/2011_10_03_drive_0034_sync 4262 l
+2011_09_26/2011_09_26_drive_0087_sync 35 r
+2011_10_03/2011_10_03_drive_0042_sync 289 l
+2011_09_26/2011_09_26_drive_0022_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 4183 r
+2011_09_26/2011_09_26_drive_0061_sync 175 l
+2011_09_30/2011_09_30_drive_0033_sync 354 r
+2011_09_30/2011_09_30_drive_0028_sync 2446 r
+2011_09_26/2011_09_26_drive_0019_sync 230 l
+2011_09_26/2011_09_26_drive_0015_sync 33 l
+2011_09_26/2011_09_26_drive_0001_sync 8 r
+2011_10_03/2011_10_03_drive_0034_sync 3754 r
+2011_09_30/2011_09_30_drive_0028_sync 1408 l
+2011_09_30/2011_09_30_drive_0028_sync 2107 r
+2011_09_26/2011_09_26_drive_0005_sync 107 r
+2011_09_26/2011_09_26_drive_0104_sync 5 r
+2011_09_30/2011_09_30_drive_0033_sync 277 r
+2011_09_26/2011_09_26_drive_0022_sync 258 r
+2011_09_30/2011_09_30_drive_0028_sync 2020 l
+2011_09_30/2011_09_30_drive_0028_sync 184 l
+2011_09_30/2011_09_30_drive_0020_sync 940 l
+2011_09_29/2011_09_29_drive_0004_sync 109 l
+2011_09_30/2011_09_30_drive_0034_sync 1064 l
+2011_09_26/2011_09_26_drive_0019_sync 465 r
+2011_09_30/2011_09_30_drive_0028_sync 3762 l
+2011_10_03/2011_10_03_drive_0034_sync 1674 l
+2011_09_26/2011_09_26_drive_0014_sync 69 r
+2011_10_03/2011_10_03_drive_0034_sync 3744 r
+2011_09_30/2011_09_30_drive_0034_sync 508 l
+2011_09_26/2011_09_26_drive_0014_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 2281 r
+2011_09_30/2011_09_30_drive_0034_sync 772 r
+2011_09_26/2011_09_26_drive_0087_sync 446 r
+2011_09_26/2011_09_26_drive_0061_sync 23 l
+2011_09_30/2011_09_30_drive_0033_sync 410 r
+2011_09_30/2011_09_30_drive_0028_sync 5048 l
+2011_09_30/2011_09_30_drive_0028_sync 2621 l
+2011_09_30/2011_09_30_drive_0028_sync 705 l
+2011_10_03/2011_10_03_drive_0034_sync 408 l
+2011_09_26/2011_09_26_drive_0014_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 3328 r
+2011_09_26/2011_09_26_drive_0039_sync 306 r
+2011_10_03/2011_10_03_drive_0042_sync 308 l
+2011_09_26/2011_09_26_drive_0015_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 281 l
+2011_09_30/2011_09_30_drive_0028_sync 3528 r
+2011_09_30/2011_09_30_drive_0028_sync 4078 l
+2011_10_03/2011_10_03_drive_0034_sync 4075 r
+2011_10_03/2011_10_03_drive_0034_sync 1913 l
+2011_09_26/2011_09_26_drive_0019_sync 164 l
+2011_09_26/2011_09_26_drive_0061_sync 649 r
+2011_09_30/2011_09_30_drive_0020_sync 833 r
+2011_09_30/2011_09_30_drive_0028_sync 1116 r
+2011_09_30/2011_09_30_drive_0033_sync 1001 r
+2011_09_26/2011_09_26_drive_0051_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 5090 l
+2011_09_30/2011_09_30_drive_0028_sync 960 l
+2011_09_30/2011_09_30_drive_0028_sync 2199 l
+2011_10_03/2011_10_03_drive_0034_sync 741 r
+2011_10_03/2011_10_03_drive_0034_sync 4248 r
+2011_09_30/2011_09_30_drive_0028_sync 1862 l
+2011_10_03/2011_10_03_drive_0034_sync 783 l
+2011_09_26/2011_09_26_drive_0022_sync 403 r
+2011_10_03/2011_10_03_drive_0042_sync 591 r
+2011_09_26/2011_09_26_drive_0019_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 2437 l
+2011_10_03/2011_10_03_drive_0034_sync 2516 r
+2011_10_03/2011_10_03_drive_0042_sync 404 r
+2011_09_30/2011_09_30_drive_0020_sync 314 r
+2011_09_30/2011_09_30_drive_0033_sync 313 l
+2011_09_26/2011_09_26_drive_0061_sync 467 l
+2011_09_30/2011_09_30_drive_0028_sync 3805 l
+2011_09_30/2011_09_30_drive_0033_sync 605 r
+2011_09_26/2011_09_26_drive_0051_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 665 r
+2011_09_30/2011_09_30_drive_0033_sync 1118 r
+2011_09_30/2011_09_30_drive_0033_sync 451 r
+2011_10_03/2011_10_03_drive_0034_sync 2103 l
+2011_09_30/2011_09_30_drive_0028_sync 610 r
+2011_09_26/2011_09_26_drive_0087_sync 146 r
+2011_10_03/2011_10_03_drive_0034_sync 1298 r
+2011_09_26/2011_09_26_drive_0061_sync 366 r
+2011_09_30/2011_09_30_drive_0020_sync 103 r
+2011_09_30/2011_09_30_drive_0028_sync 4178 l
+2011_09_30/2011_09_30_drive_0028_sync 2618 l
+2011_09_30/2011_09_30_drive_0028_sync 4782 r
+2011_10_03/2011_10_03_drive_0034_sync 3437 l
+2011_10_03/2011_10_03_drive_0034_sync 71 r
+2011_09_26/2011_09_26_drive_0070_sync 400 l
+2011_09_26/2011_09_26_drive_0087_sync 45 l
+2011_10_03/2011_10_03_drive_0034_sync 3385 l
+2011_09_26/2011_09_26_drive_0005_sync 124 r
+2011_09_30/2011_09_30_drive_0028_sync 3871 r
+2011_09_30/2011_09_30_drive_0028_sync 242 r
+2011_09_26/2011_09_26_drive_0028_sync 185 r
+2011_09_26/2011_09_26_drive_0087_sync 2 l
+2011_09_26/2011_09_26_drive_0015_sync 197 r
+2011_10_03/2011_10_03_drive_0034_sync 3709 r
+2011_09_26/2011_09_26_drive_0087_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 4460 l
+2011_09_26/2011_09_26_drive_0039_sync 302 l
+2011_09_26/2011_09_26_drive_0014_sync 75 l
+2011_09_30/2011_09_30_drive_0028_sync 2147 r
+2011_10_03/2011_10_03_drive_0034_sync 3658 r
+2011_09_26/2011_09_26_drive_0095_sync 99 l
+2011_10_03/2011_10_03_drive_0034_sync 3070 l
+2011_09_30/2011_09_30_drive_0020_sync 763 r
+2011_09_26/2011_09_26_drive_0019_sync 436 l
+2011_09_30/2011_09_30_drive_0028_sync 3346 l
+2011_09_26/2011_09_26_drive_0070_sync 126 l
+2011_09_26/2011_09_26_drive_0061_sync 331 l
+2011_10_03/2011_10_03_drive_0034_sync 2482 r
+2011_09_30/2011_09_30_drive_0028_sync 1740 r
+2011_09_30/2011_09_30_drive_0028_sync 3913 l
+2011_10_03/2011_10_03_drive_0034_sync 2133 l
+2011_09_30/2011_09_30_drive_0033_sync 1385 l
+2011_09_26/2011_09_26_drive_0104_sync 30 l
+2011_10_03/2011_10_03_drive_0034_sync 4106 r
+2011_09_26/2011_09_26_drive_0087_sync 374 r
+2011_09_26/2011_09_26_drive_0014_sync 265 r
+2011_10_03/2011_10_03_drive_0034_sync 1800 l
+2011_09_26/2011_09_26_drive_0057_sync 297 r
+2011_10_03/2011_10_03_drive_0042_sync 288 l
+2011_09_30/2011_09_30_drive_0020_sync 1037 r
+2011_10_03/2011_10_03_drive_0034_sync 1094 r
+2011_09_26/2011_09_26_drive_0022_sync 686 r
+2011_09_30/2011_09_30_drive_0028_sync 4574 r
+2011_10_03/2011_10_03_drive_0034_sync 2631 l
+2011_09_26/2011_09_26_drive_0011_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 125 l
+2011_09_26/2011_09_26_drive_0022_sync 419 r
+2011_09_30/2011_09_30_drive_0034_sync 524 r
+2011_09_26/2011_09_26_drive_0039_sync 370 l
+2011_10_03/2011_10_03_drive_0034_sync 4044 r
+2011_09_30/2011_09_30_drive_0020_sync 98 l
+2011_10_03/2011_10_03_drive_0034_sync 1438 r
+2011_09_26/2011_09_26_drive_0015_sync 94 r
+2011_09_26/2011_09_26_drive_0018_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 1589 l
+2011_09_30/2011_09_30_drive_0028_sync 4679 l
+2011_09_30/2011_09_30_drive_0028_sync 1419 r
+2011_09_26/2011_09_26_drive_0011_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 3626 l
+2011_09_26/2011_09_26_drive_0019_sync 364 l
+2011_09_30/2011_09_30_drive_0020_sync 828 r
+2011_09_29/2011_09_29_drive_0026_sync 11 r
+2011_09_30/2011_09_30_drive_0033_sync 207 r
+2011_09_30/2011_09_30_drive_0028_sync 1646 r
+2011_09_26/2011_09_26_drive_0061_sync 279 l
+2011_09_26/2011_09_26_drive_0017_sync 98 l
+2011_09_30/2011_09_30_drive_0028_sync 2321 r
+2011_10_03/2011_10_03_drive_0042_sync 237 r
+2011_09_30/2011_09_30_drive_0028_sync 2849 r
+2011_09_26/2011_09_26_drive_0032_sync 126 l
+2011_10_03/2011_10_03_drive_0034_sync 3460 r
+2011_09_26/2011_09_26_drive_0032_sync 337 l
+2011_10_03/2011_10_03_drive_0034_sync 3877 l
+2011_09_26/2011_09_26_drive_0028_sync 314 l
+2011_10_03/2011_10_03_drive_0034_sync 3908 r
+2011_09_26/2011_09_26_drive_0032_sync 97 r
+2011_10_03/2011_10_03_drive_0042_sync 570 r
+2011_09_30/2011_09_30_drive_0028_sync 1703 l
+2011_09_26/2011_09_26_drive_0061_sync 72 l
+2011_09_26/2011_09_26_drive_0104_sync 249 r
+2011_09_30/2011_09_30_drive_0028_sync 1163 l
+2011_09_26/2011_09_26_drive_0018_sync 124 r
+2011_09_26/2011_09_26_drive_0022_sync 169 l
+2011_09_30/2011_09_30_drive_0034_sync 237 l
+2011_09_30/2011_09_30_drive_0028_sync 3754 l
+2011_09_26/2011_09_26_drive_0015_sync 171 r
+2011_09_26/2011_09_26_drive_0014_sync 26 l
+2011_09_26/2011_09_26_drive_0113_sync 67 r
+2011_10_03/2011_10_03_drive_0042_sync 1006 r
+2011_10_03/2011_10_03_drive_0042_sync 713 l
+2011_09_30/2011_09_30_drive_0034_sync 124 r
+2011_10_03/2011_10_03_drive_0042_sync 573 l
+2011_09_30/2011_09_30_drive_0033_sync 1140 r
+2011_10_03/2011_10_03_drive_0034_sync 1016 l
+2011_09_30/2011_09_30_drive_0028_sync 4522 r
+2011_09_30/2011_09_30_drive_0028_sync 722 r
+2011_09_26/2011_09_26_drive_0039_sync 71 r
+2011_09_30/2011_09_30_drive_0033_sync 618 l
+2011_09_28/2011_09_28_drive_0001_sync 40 l
+2011_10_03/2011_10_03_drive_0034_sync 2334 l
+2011_10_03/2011_10_03_drive_0034_sync 4626 r
+2011_09_26/2011_09_26_drive_0039_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 1099 r
+2011_09_26/2011_09_26_drive_0001_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 1426 l
+2011_09_30/2011_09_30_drive_0028_sync 1097 r
+2011_09_30/2011_09_30_drive_0020_sync 1032 l
+2011_09_30/2011_09_30_drive_0034_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 959 r
+2011_09_26/2011_09_26_drive_0061_sync 59 l
+2011_10_03/2011_10_03_drive_0042_sync 105 r
+2011_09_26/2011_09_26_drive_0001_sync 104 l
+2011_09_26/2011_09_26_drive_0035_sync 54 r
+2011_09_26/2011_09_26_drive_0070_sync 123 r
+2011_09_30/2011_09_30_drive_0033_sync 1458 r
+2011_09_30/2011_09_30_drive_0028_sync 89 l
+2011_09_26/2011_09_26_drive_0061_sync 404 r
+2011_09_26/2011_09_26_drive_0070_sync 332 r
+2011_09_26/2011_09_26_drive_0001_sync 61 r
+2011_09_26/2011_09_26_drive_0028_sync 368 l
+2011_09_26/2011_09_26_drive_0001_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 1865 r
+2011_10_03/2011_10_03_drive_0034_sync 1266 r
+2011_09_26/2011_09_26_drive_0035_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 2350 l
+2011_09_30/2011_09_30_drive_0028_sync 1105 r
+2011_09_30/2011_09_30_drive_0028_sync 2858 l
+2011_09_30/2011_09_30_drive_0028_sync 2070 l
+2011_09_30/2011_09_30_drive_0028_sync 2521 r
+2011_09_26/2011_09_26_drive_0039_sync 174 r
+2011_09_30/2011_09_30_drive_0028_sync 2765 r
+2011_09_30/2011_09_30_drive_0028_sync 1806 l
+2011_09_26/2011_09_26_drive_0070_sync 258 r
+2011_09_29/2011_09_29_drive_0026_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 2279 l
+2011_09_30/2011_09_30_drive_0033_sync 84 l
+2011_10_03/2011_10_03_drive_0034_sync 2511 l
+2011_09_26/2011_09_26_drive_0057_sync 95 r
+2011_09_28/2011_09_28_drive_0001_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 1584 l
+2011_10_03/2011_10_03_drive_0034_sync 2196 l
+2011_10_03/2011_10_03_drive_0034_sync 1293 r
+2011_09_26/2011_09_26_drive_0022_sync 23 r
+2011_09_26/2011_09_26_drive_0061_sync 632 l
+2011_09_30/2011_09_30_drive_0028_sync 4096 r
+2011_09_26/2011_09_26_drive_0015_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 4103 r
+2011_09_30/2011_09_30_drive_0028_sync 1197 l
+2011_09_26/2011_09_26_drive_0087_sync 485 r
+2011_09_26/2011_09_26_drive_0095_sync 211 l
+2011_09_30/2011_09_30_drive_0033_sync 1280 r
+2011_09_30/2011_09_30_drive_0033_sync 1125 l
+2011_09_30/2011_09_30_drive_0034_sync 1145 l
+2011_09_26/2011_09_26_drive_0018_sync 161 r
+2011_10_03/2011_10_03_drive_0034_sync 147 r
+2011_10_03/2011_10_03_drive_0042_sync 785 r
+2011_10_03/2011_10_03_drive_0034_sync 1198 l
+2011_09_26/2011_09_26_drive_0014_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 4273 l
+2011_09_30/2011_09_30_drive_0034_sync 445 r
+2011_09_26/2011_09_26_drive_0022_sync 342 r
+2011_09_30/2011_09_30_drive_0028_sync 2950 r
+2011_10_03/2011_10_03_drive_0034_sync 2964 r
+2011_10_03/2011_10_03_drive_0034_sync 348 l
+2011_09_26/2011_09_26_drive_0018_sync 22 l
+2011_09_26/2011_09_26_drive_0061_sync 563 r
+2011_09_30/2011_09_30_drive_0033_sync 500 l
+2011_10_03/2011_10_03_drive_0034_sync 879 l
+2011_09_29/2011_09_29_drive_0026_sync 64 r
+2011_09_26/2011_09_26_drive_0005_sync 16 r
+2011_09_29/2011_09_29_drive_0004_sync 317 l
+2011_09_26/2011_09_26_drive_0028_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 332 r
+2011_10_03/2011_10_03_drive_0034_sync 1345 l
+2011_09_26/2011_09_26_drive_0022_sync 111 l
+2011_09_30/2011_09_30_drive_0028_sync 692 l
+2011_09_26/2011_09_26_drive_0018_sync 230 l
+2011_10_03/2011_10_03_drive_0034_sync 2403 r
+2011_09_26/2011_09_26_drive_0087_sync 644 r
+2011_10_03/2011_10_03_drive_0034_sync 2505 l
+2011_10_03/2011_10_03_drive_0042_sync 62 r
+2011_10_03/2011_10_03_drive_0042_sync 652 l
+2011_10_03/2011_10_03_drive_0042_sync 970 l
+2011_09_30/2011_09_30_drive_0028_sync 2046 r
+2011_09_30/2011_09_30_drive_0028_sync 4434 r
+2011_10_03/2011_10_03_drive_0042_sync 464 l
+2011_09_26/2011_09_26_drive_0051_sync 67 r
+2011_09_26/2011_09_26_drive_0057_sync 76 r
+2011_09_30/2011_09_30_drive_0028_sync 3753 r
+2011_10_03/2011_10_03_drive_0034_sync 3307 l
+2011_09_30/2011_09_30_drive_0034_sync 899 r
+2011_09_26/2011_09_26_drive_0070_sync 231 r
+2011_09_26/2011_09_26_drive_0032_sync 344 r
+2011_09_30/2011_09_30_drive_0020_sync 916 l
+2011_09_30/2011_09_30_drive_0028_sync 91 r
+2011_10_03/2011_10_03_drive_0034_sync 1376 l
+2011_09_30/2011_09_30_drive_0033_sync 577 r
+2011_10_03/2011_10_03_drive_0034_sync 3366 l
+2011_10_03/2011_10_03_drive_0042_sync 234 l
+2011_09_26/2011_09_26_drive_0019_sync 49 r
+2011_09_26/2011_09_26_drive_0032_sync 32 l
+2011_10_03/2011_10_03_drive_0034_sync 1219 r
+2011_09_26/2011_09_26_drive_0087_sync 562 l
+2011_09_30/2011_09_30_drive_0028_sync 3503 l
+2011_09_26/2011_09_26_drive_0061_sync 457 l
+2011_09_26/2011_09_26_drive_0017_sync 26 l
+2011_10_03/2011_10_03_drive_0034_sync 579 l
+2011_09_30/2011_09_30_drive_0020_sync 32 l
+2011_09_26/2011_09_26_drive_0051_sync 376 l
+2011_09_30/2011_09_30_drive_0034_sync 2 l
+2011_09_30/2011_09_30_drive_0033_sync 459 r
+2011_09_30/2011_09_30_drive_0028_sync 4041 l
+2011_09_26/2011_09_26_drive_0091_sync 133 r
+2011_09_26/2011_09_26_drive_0022_sync 580 r
+2011_09_30/2011_09_30_drive_0020_sync 1019 r
+2011_09_26/2011_09_26_drive_0104_sync 113 l
+2011_09_26/2011_09_26_drive_0039_sync 164 r
+2011_09_26/2011_09_26_drive_0022_sync 294 r
+2011_09_26/2011_09_26_drive_0087_sync 648 r
+2011_09_30/2011_09_30_drive_0033_sync 1170 l
+2011_09_30/2011_09_30_drive_0034_sync 866 r
+2011_09_26/2011_09_26_drive_0022_sync 559 l
+2011_09_26/2011_09_26_drive_0079_sync 62 l
+2011_09_26/2011_09_26_drive_0011_sync 82 l
+2011_10_03/2011_10_03_drive_0042_sync 191 l
+2011_09_29/2011_09_29_drive_0004_sync 327 l
+2011_10_03/2011_10_03_drive_0042_sync 1067 r
+2011_09_26/2011_09_26_drive_0095_sync 123 l
+2011_09_30/2011_09_30_drive_0034_sync 521 r
+2011_09_30/2011_09_30_drive_0020_sync 530 l
+2011_09_30/2011_09_30_drive_0034_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 4194 r
+2011_09_26/2011_09_26_drive_0095_sync 224 r
+2011_09_26/2011_09_26_drive_0104_sync 24 l
+2011_09_30/2011_09_30_drive_0028_sync 3835 r
+2011_09_26/2011_09_26_drive_0022_sync 509 l
+2011_09_30/2011_09_30_drive_0028_sync 1267 r
+2011_09_26/2011_09_26_drive_0095_sync 164 l
+2011_09_26/2011_09_26_drive_0104_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 4414 l
+2011_09_29/2011_09_29_drive_0004_sync 309 r
+2011_10_03/2011_10_03_drive_0034_sync 2268 l
+2011_09_29/2011_09_29_drive_0004_sync 206 l
+2011_09_30/2011_09_30_drive_0028_sync 3465 r
+2011_10_03/2011_10_03_drive_0034_sync 4206 r
+2011_09_30/2011_09_30_drive_0033_sync 983 l
+2011_09_26/2011_09_26_drive_0095_sync 191 l
+2011_09_26/2011_09_26_drive_0028_sync 167 r
+2011_09_26/2011_09_26_drive_0113_sync 63 l
+2011_09_26/2011_09_26_drive_0022_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 2423 l
+2011_09_26/2011_09_26_drive_0104_sync 186 l
+2011_09_30/2011_09_30_drive_0033_sync 343 r
+2011_09_26/2011_09_26_drive_0039_sync 393 l
+2011_09_30/2011_09_30_drive_0028_sync 4083 r
+2011_09_26/2011_09_26_drive_0022_sync 462 r
+2011_09_30/2011_09_30_drive_0028_sync 2172 l
+2011_10_03/2011_10_03_drive_0034_sync 2270 l
+2011_09_30/2011_09_30_drive_0028_sync 3957 r
+2011_09_29/2011_09_29_drive_0004_sync 255 r
+2011_09_26/2011_09_26_drive_0039_sync 244 l
+2011_10_03/2011_10_03_drive_0034_sync 2699 l
+2011_09_30/2011_09_30_drive_0028_sync 1464 r
+2011_10_03/2011_10_03_drive_0042_sync 740 l
+2011_10_03/2011_10_03_drive_0034_sync 1743 l
+2011_10_03/2011_10_03_drive_0034_sync 1714 l
+2011_10_03/2011_10_03_drive_0042_sync 812 r
+2011_09_30/2011_09_30_drive_0028_sync 1316 l
+2011_10_03/2011_10_03_drive_0034_sync 4169 r
+2011_09_29/2011_09_29_drive_0004_sync 48 l
+2011_09_30/2011_09_30_drive_0033_sync 1047 r
+2011_09_30/2011_09_30_drive_0028_sync 3029 r
+2011_09_29/2011_09_29_drive_0004_sync 235 l
+2011_10_03/2011_10_03_drive_0042_sync 399 l
+2011_09_30/2011_09_30_drive_0033_sync 587 r
+2011_09_26/2011_09_26_drive_0051_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 2132 l
+2011_10_03/2011_10_03_drive_0034_sync 628 r
+2011_09_26/2011_09_26_drive_0015_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 3459 l
+2011_09_26/2011_09_26_drive_0039_sync 343 r
+2011_09_26/2011_09_26_drive_0087_sync 43 l
+2011_09_30/2011_09_30_drive_0033_sync 1320 l
+2011_10_03/2011_10_03_drive_0034_sync 4607 l
+2011_10_03/2011_10_03_drive_0034_sync 1209 r
+2011_10_03/2011_10_03_drive_0034_sync 4632 l
+2011_09_26/2011_09_26_drive_0087_sync 218 l
+2011_09_30/2011_09_30_drive_0020_sync 322 l
+2011_09_30/2011_09_30_drive_0033_sync 94 l
+2011_10_03/2011_10_03_drive_0034_sync 3437 r
+2011_09_30/2011_09_30_drive_0033_sync 542 r
+2011_10_03/2011_10_03_drive_0034_sync 2608 r
+2011_09_30/2011_09_30_drive_0033_sync 376 r
+2011_09_30/2011_09_30_drive_0028_sync 2047 l
+2011_09_26/2011_09_26_drive_0057_sync 135 l
+2011_09_26/2011_09_26_drive_0091_sync 140 r
+2011_09_30/2011_09_30_drive_0028_sync 3758 l
+2011_09_30/2011_09_30_drive_0034_sync 584 l
+2011_09_26/2011_09_26_drive_0057_sync 219 l
+2011_09_26/2011_09_26_drive_0057_sync 6 r
+2011_09_30/2011_09_30_drive_0034_sync 120 r
+2011_10_03/2011_10_03_drive_0034_sync 3501 l
+2011_09_30/2011_09_30_drive_0033_sync 1585 l
+2011_10_03/2011_10_03_drive_0034_sync 3267 l
+2011_09_30/2011_09_30_drive_0028_sync 2127 l
+2011_09_26/2011_09_26_drive_0039_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 16 r
+2011_09_30/2011_09_30_drive_0028_sync 318 l
+2011_09_30/2011_09_30_drive_0028_sync 3023 l
+2011_09_30/2011_09_30_drive_0033_sync 1024 l
+2011_10_03/2011_10_03_drive_0034_sync 963 r
+2011_09_30/2011_09_30_drive_0020_sync 693 r
+2011_09_30/2011_09_30_drive_0028_sync 3618 l
+2011_09_30/2011_09_30_drive_0034_sync 398 r
+2011_09_26/2011_09_26_drive_0087_sync 189 l
+2011_09_30/2011_09_30_drive_0028_sync 5166 r
+2011_10_03/2011_10_03_drive_0034_sync 2830 l
+2011_09_30/2011_09_30_drive_0028_sync 2171 r
+2011_09_30/2011_09_30_drive_0028_sync 307 r
+2011_09_26/2011_09_26_drive_0018_sync 17 l
+2011_09_30/2011_09_30_drive_0020_sync 750 r
+2011_10_03/2011_10_03_drive_0034_sync 2179 r
+2011_09_30/2011_09_30_drive_0028_sync 555 l
+2011_09_26/2011_09_26_drive_0070_sync 261 l
+2011_09_26/2011_09_26_drive_0087_sync 631 r
+2011_09_30/2011_09_30_drive_0028_sync 829 l
+2011_10_03/2011_10_03_drive_0034_sync 2503 l
+2011_10_03/2011_10_03_drive_0034_sync 3879 l
+2011_09_26/2011_09_26_drive_0057_sync 116 l
+2011_09_26/2011_09_26_drive_0061_sync 196 r
+2011_09_30/2011_09_30_drive_0034_sync 307 r
+2011_09_30/2011_09_30_drive_0028_sync 2186 r
+2011_09_30/2011_09_30_drive_0034_sync 1051 l
+2011_09_26/2011_09_26_drive_0087_sync 496 l
+2011_10_03/2011_10_03_drive_0034_sync 3913 r
+2011_09_30/2011_09_30_drive_0028_sync 4352 l
+2011_09_26/2011_09_26_drive_0051_sync 79 r
+2011_09_26/2011_09_26_drive_0087_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 3146 r
+2011_09_30/2011_09_30_drive_0028_sync 3101 l
+2011_10_03/2011_10_03_drive_0034_sync 1542 r
+2011_10_03/2011_10_03_drive_0034_sync 618 l
+2011_09_26/2011_09_26_drive_0019_sync 60 l
+2011_09_30/2011_09_30_drive_0028_sync 4181 r
+2011_10_03/2011_10_03_drive_0034_sync 2247 l
+2011_09_26/2011_09_26_drive_0051_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 3978 l
+2011_10_03/2011_10_03_drive_0034_sync 4028 l
+2011_09_30/2011_09_30_drive_0028_sync 4175 l
+2011_09_30/2011_09_30_drive_0028_sync 3907 l
+2011_09_29/2011_09_29_drive_0004_sync 191 l
+2011_09_30/2011_09_30_drive_0033_sync 1578 r
+2011_09_29/2011_09_29_drive_0004_sync 338 l
+2011_10_03/2011_10_03_drive_0034_sync 4008 r
+2011_10_03/2011_10_03_drive_0034_sync 3953 l
+2011_09_26/2011_09_26_drive_0061_sync 348 r
+2011_09_30/2011_09_30_drive_0020_sync 42 r
+2011_09_30/2011_09_30_drive_0028_sync 1514 l
+2011_09_26/2011_09_26_drive_0039_sync 177 l
+2011_09_30/2011_09_30_drive_0028_sync 1860 r
+2011_09_30/2011_09_30_drive_0028_sync 1687 l
+2011_09_26/2011_09_26_drive_0039_sync 199 l
+2011_09_30/2011_09_30_drive_0020_sync 126 r
+2011_09_26/2011_09_26_drive_0057_sync 268 l
+2011_09_30/2011_09_30_drive_0034_sync 543 l
+2011_10_03/2011_10_03_drive_0034_sync 2756 r
+2011_09_30/2011_09_30_drive_0034_sync 1083 r
+2011_09_30/2011_09_30_drive_0028_sync 5148 l
+2011_09_26/2011_09_26_drive_0019_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 426 r
+2011_09_30/2011_09_30_drive_0020_sync 321 r
+2011_09_26/2011_09_26_drive_0015_sync 214 r
+2011_10_03/2011_10_03_drive_0034_sync 898 r
+2011_09_30/2011_09_30_drive_0033_sync 130 l
+2011_09_26/2011_09_26_drive_0005_sync 96 r
+2011_09_30/2011_09_30_drive_0028_sync 139 r
+2011_10_03/2011_10_03_drive_0034_sync 2740 r
+2011_09_30/2011_09_30_drive_0028_sync 1652 r
+2011_09_30/2011_09_30_drive_0034_sync 450 r
+2011_10_03/2011_10_03_drive_0034_sync 1812 l
+2011_09_26/2011_09_26_drive_0015_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 932 r
+2011_10_03/2011_10_03_drive_0034_sync 638 r
+2011_09_26/2011_09_26_drive_0019_sync 130 r
+2011_10_03/2011_10_03_drive_0034_sync 510 l
+2011_09_30/2011_09_30_drive_0033_sync 506 l
+2011_09_26/2011_09_26_drive_0061_sync 66 r
+2011_09_26/2011_09_26_drive_0057_sync 216 r
+2011_09_30/2011_09_30_drive_0028_sync 4638 r
+2011_09_26/2011_09_26_drive_0014_sync 47 r
+2011_09_26/2011_09_26_drive_0039_sync 194 l
+2011_09_30/2011_09_30_drive_0028_sync 177 r
+2011_09_26/2011_09_26_drive_0104_sync 45 l
+2011_09_30/2011_09_30_drive_0020_sync 1034 l
+2011_09_30/2011_09_30_drive_0028_sync 1918 l
+2011_10_03/2011_10_03_drive_0042_sync 824 l
+2011_09_30/2011_09_30_drive_0028_sync 2370 l
+2011_09_30/2011_09_30_drive_0034_sync 1136 l
+2011_09_30/2011_09_30_drive_0033_sync 447 l
+2011_09_26/2011_09_26_drive_0028_sync 58 l
+2011_10_03/2011_10_03_drive_0034_sync 854 l
+2011_09_26/2011_09_26_drive_0001_sync 51 l
+2011_09_26/2011_09_26_drive_0057_sync 297 l
+2011_09_30/2011_09_30_drive_0033_sync 1077 r
+2011_09_26/2011_09_26_drive_0087_sync 527 l
+2011_09_26/2011_09_26_drive_0032_sync 98 r
+2011_09_30/2011_09_30_drive_0020_sync 908 l
+2011_09_30/2011_09_30_drive_0020_sync 880 l
+2011_09_30/2011_09_30_drive_0020_sync 517 l
+2011_09_30/2011_09_30_drive_0028_sync 1783 r
+2011_09_26/2011_09_26_drive_0017_sync 47 l
+2011_09_30/2011_09_30_drive_0020_sync 19 l
+2011_09_30/2011_09_30_drive_0033_sync 431 l
+2011_09_26/2011_09_26_drive_0057_sync 284 r
+2011_09_30/2011_09_30_drive_0028_sync 43 r
+2011_09_26/2011_09_26_drive_0057_sync 3 r
+2011_10_03/2011_10_03_drive_0042_sync 483 r
+2011_09_30/2011_09_30_drive_0028_sync 3607 l
+2011_09_26/2011_09_26_drive_0039_sync 375 l
+2011_10_03/2011_10_03_drive_0042_sync 961 l
+2011_09_30/2011_09_30_drive_0028_sync 1462 l
+2011_10_03/2011_10_03_drive_0034_sync 1279 r
+2011_09_26/2011_09_26_drive_0028_sync 78 l
+2011_10_03/2011_10_03_drive_0034_sync 1666 l
+2011_10_03/2011_10_03_drive_0042_sync 83 r
+2011_09_26/2011_09_26_drive_0019_sync 165 l
+2011_10_03/2011_10_03_drive_0034_sync 2402 l
+2011_09_26/2011_09_26_drive_0022_sync 732 l
+2011_10_03/2011_10_03_drive_0034_sync 3335 r
+2011_09_26/2011_09_26_drive_0087_sync 446 l
+2011_09_26/2011_09_26_drive_0061_sync 174 l
+2011_10_03/2011_10_03_drive_0034_sync 2941 l
+2011_10_03/2011_10_03_drive_0034_sync 408 r
+2011_10_03/2011_10_03_drive_0034_sync 2862 r
+2011_10_03/2011_10_03_drive_0034_sync 1246 l
+2011_10_03/2011_10_03_drive_0034_sync 1074 l
+2011_10_03/2011_10_03_drive_0034_sync 329 r
+2011_10_03/2011_10_03_drive_0034_sync 2746 r
+2011_09_26/2011_09_26_drive_0070_sync 387 l
+2011_09_30/2011_09_30_drive_0034_sync 644 r
+2011_10_03/2011_10_03_drive_0034_sync 4073 r
+2011_10_03/2011_10_03_drive_0034_sync 4537 r
+2011_10_03/2011_10_03_drive_0034_sync 3329 r
+2011_09_26/2011_09_26_drive_0014_sync 163 l
+2011_09_26/2011_09_26_drive_0011_sync 72 r
+2011_09_26/2011_09_26_drive_0028_sync 80 r
+2011_10_03/2011_10_03_drive_0034_sync 3956 l
+2011_09_30/2011_09_30_drive_0033_sync 788 r
+2011_10_03/2011_10_03_drive_0034_sync 3291 r
+2011_09_30/2011_09_30_drive_0028_sync 2930 l
+2011_09_30/2011_09_30_drive_0028_sync 2717 r
+2011_09_30/2011_09_30_drive_0028_sync 4829 l
+2011_09_26/2011_09_26_drive_0005_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 1219 l
+2011_09_30/2011_09_30_drive_0034_sync 952 r
+2011_09_30/2011_09_30_drive_0034_sync 345 l
+2011_09_30/2011_09_30_drive_0028_sync 3189 l
+2011_09_30/2011_09_30_drive_0028_sync 367 r
+2011_10_03/2011_10_03_drive_0034_sync 3273 l
+2011_09_26/2011_09_26_drive_0035_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 427 r
+2011_09_30/2011_09_30_drive_0033_sync 1121 r
+2011_10_03/2011_10_03_drive_0034_sync 749 l
+2011_09_30/2011_09_30_drive_0034_sync 1222 r
+2011_09_30/2011_09_30_drive_0034_sync 1028 r
+2011_10_03/2011_10_03_drive_0042_sync 880 l
+2011_10_03/2011_10_03_drive_0034_sync 3600 r
+2011_09_29/2011_09_29_drive_0026_sync 9 r
+2011_09_26/2011_09_26_drive_0104_sync 83 l
+2011_10_03/2011_10_03_drive_0042_sync 33 l
+2011_09_26/2011_09_26_drive_0051_sync 198 r
+2011_09_30/2011_09_30_drive_0034_sync 570 l
+2011_09_26/2011_09_26_drive_0104_sync 205 l
+2011_09_26/2011_09_26_drive_0095_sync 205 l
+2011_10_03/2011_10_03_drive_0042_sync 1060 l
+2011_10_03/2011_10_03_drive_0042_sync 822 l
+2011_09_26/2011_09_26_drive_0087_sync 33 r
+2011_09_26/2011_09_26_drive_0070_sync 97 r
+2011_09_30/2011_09_30_drive_0028_sync 2521 l
+2011_09_26/2011_09_26_drive_0022_sync 433 l
+2011_10_03/2011_10_03_drive_0034_sync 1838 l
+2011_09_26/2011_09_26_drive_0095_sync 118 r
+2011_09_26/2011_09_26_drive_0032_sync 125 l
+2011_09_30/2011_09_30_drive_0033_sync 1468 l
+2011_09_26/2011_09_26_drive_0022_sync 678 r
+2011_09_30/2011_09_30_drive_0028_sync 3007 r
+2011_09_30/2011_09_30_drive_0028_sync 4746 r
+2011_09_26/2011_09_26_drive_0022_sync 373 r
+2011_09_26/2011_09_26_drive_0039_sync 20 l
+2011_09_26/2011_09_26_drive_0039_sync 107 l
+2011_09_26/2011_09_26_drive_0061_sync 622 r
+2011_09_30/2011_09_30_drive_0028_sync 1239 r
+2011_09_30/2011_09_30_drive_0033_sync 1167 l
+2011_09_30/2011_09_30_drive_0028_sync 4772 r
+2011_10_03/2011_10_03_drive_0034_sync 3843 r
+2011_09_26/2011_09_26_drive_0061_sync 413 l
+2011_09_30/2011_09_30_drive_0033_sync 420 l
+2011_09_26/2011_09_26_drive_0032_sync 209 l
+2011_09_26/2011_09_26_drive_0051_sync 286 r
+2011_09_30/2011_09_30_drive_0028_sync 3807 r
+2011_10_03/2011_10_03_drive_0034_sync 610 l
+2011_09_26/2011_09_26_drive_0014_sync 165 r
+2011_09_26/2011_09_26_drive_0079_sync 78 r
+2011_09_26/2011_09_26_drive_0087_sync 569 l
+2011_09_30/2011_09_30_drive_0028_sync 4507 l
+2011_09_26/2011_09_26_drive_0015_sync 140 r
+2011_10_03/2011_10_03_drive_0034_sync 2567 l
+2011_09_30/2011_09_30_drive_0033_sync 1431 l
+2011_09_26/2011_09_26_drive_0035_sync 78 r
+2011_10_03/2011_10_03_drive_0034_sync 429 r
+2011_10_03/2011_10_03_drive_0034_sync 204 r
+2011_09_30/2011_09_30_drive_0028_sync 3092 l
+2011_10_03/2011_10_03_drive_0042_sync 229 l
+2011_09_26/2011_09_26_drive_0057_sync 31 l
+2011_09_30/2011_09_30_drive_0034_sync 301 r
+2011_09_26/2011_09_26_drive_0113_sync 26 r
+2011_09_26/2011_09_26_drive_0087_sync 562 r
+2011_09_26/2011_09_26_drive_0022_sync 262 r
+2011_09_30/2011_09_30_drive_0028_sync 3102 r
+2011_10_03/2011_10_03_drive_0034_sync 1771 r
+2011_09_29/2011_09_29_drive_0004_sync 63 r
+2011_09_26/2011_09_26_drive_0061_sync 280 l
+2011_09_26/2011_09_26_drive_0011_sync 22 l
+2011_10_03/2011_10_03_drive_0034_sync 3797 l
+2011_09_26/2011_09_26_drive_0015_sync 181 l
+2011_10_03/2011_10_03_drive_0042_sync 6 r
+2011_10_03/2011_10_03_drive_0034_sync 516 l
+2011_09_30/2011_09_30_drive_0028_sync 1584 l
+2011_09_26/2011_09_26_drive_0018_sync 6 l
+2011_09_30/2011_09_30_drive_0028_sync 773 l
+2011_09_26/2011_09_26_drive_0011_sync 112 r
+2011_10_03/2011_10_03_drive_0034_sync 1661 r
+2011_10_03/2011_10_03_drive_0034_sync 1673 l
+2011_10_03/2011_10_03_drive_0034_sync 3220 l
+2011_10_03/2011_10_03_drive_0034_sync 699 l
+2011_09_26/2011_09_26_drive_0104_sync 299 r
+2011_09_26/2011_09_26_drive_0022_sync 686 l
+2011_10_03/2011_10_03_drive_0042_sync 372 l
+2011_09_29/2011_09_29_drive_0004_sync 10 r
+2011_09_30/2011_09_30_drive_0020_sync 652 l
+2011_09_26/2011_09_26_drive_0079_sync 95 r
+2011_09_30/2011_09_30_drive_0028_sync 632 r
+2011_09_26/2011_09_26_drive_0022_sync 728 l
+2011_09_30/2011_09_30_drive_0028_sync 3267 l
+2011_09_30/2011_09_30_drive_0028_sync 2627 r
+2011_09_30/2011_09_30_drive_0028_sync 3450 l
+2011_09_30/2011_09_30_drive_0028_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 4634 l
+2011_09_26/2011_09_26_drive_0039_sync 132 r
+2011_09_26/2011_09_26_drive_0051_sync 260 l
+2011_09_26/2011_09_26_drive_0061_sync 179 r
+2011_10_03/2011_10_03_drive_0034_sync 2243 l
+2011_10_03/2011_10_03_drive_0034_sync 2483 r
+2011_09_30/2011_09_30_drive_0028_sync 789 l
+2011_09_30/2011_09_30_drive_0028_sync 5059 l
+2011_09_30/2011_09_30_drive_0028_sync 1949 r
+2011_10_03/2011_10_03_drive_0034_sync 865 r
+2011_09_30/2011_09_30_drive_0033_sync 518 l
+2011_10_03/2011_10_03_drive_0034_sync 3203 r
+2011_09_26/2011_09_26_drive_0014_sync 43 l
+2011_10_03/2011_10_03_drive_0034_sync 633 l
+2011_09_30/2011_09_30_drive_0028_sync 4097 r
+2011_09_30/2011_09_30_drive_0028_sync 2719 l
+2011_10_03/2011_10_03_drive_0034_sync 3840 l
+2011_09_29/2011_09_29_drive_0004_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 1854 r
+2011_09_28/2011_09_28_drive_0001_sync 6 l
+2011_09_30/2011_09_30_drive_0033_sync 807 r
+2011_10_03/2011_10_03_drive_0034_sync 1704 l
+2011_09_26/2011_09_26_drive_0022_sync 149 l
+2011_09_30/2011_09_30_drive_0020_sync 721 r
+2011_09_30/2011_09_30_drive_0028_sync 3277 r
+2011_09_26/2011_09_26_drive_0057_sync 82 r
+2011_09_30/2011_09_30_drive_0034_sync 1094 r
+2011_09_30/2011_09_30_drive_0028_sync 4265 r
+2011_09_26/2011_09_26_drive_0070_sync 226 r
+2011_09_30/2011_09_30_drive_0028_sync 1031 l
+2011_09_26/2011_09_26_drive_0061_sync 475 r
+2011_09_30/2011_09_30_drive_0028_sync 1705 r
+2011_09_30/2011_09_30_drive_0028_sync 4128 l
+2011_10_03/2011_10_03_drive_0034_sync 1586 r
+2011_09_29/2011_09_29_drive_0004_sync 85 l
+2011_09_26/2011_09_26_drive_0061_sync 183 r
+2011_10_03/2011_10_03_drive_0034_sync 2942 r
+2011_09_30/2011_09_30_drive_0028_sync 4508 l
+2011_09_26/2011_09_26_drive_0070_sync 349 r
+2011_10_03/2011_10_03_drive_0042_sync 560 l
+2011_09_26/2011_09_26_drive_0057_sync 27 r
+2011_09_26/2011_09_26_drive_0019_sync 456 l
+2011_09_26/2011_09_26_drive_0014_sync 130 r
+2011_09_26/2011_09_26_drive_0087_sync 515 r
+2011_09_26/2011_09_26_drive_0087_sync 288 l
+2011_10_03/2011_10_03_drive_0042_sync 886 r
+2011_09_26/2011_09_26_drive_0028_sync 55 l
+2011_09_26/2011_09_26_drive_0091_sync 146 r
+2011_09_26/2011_09_26_drive_0022_sync 304 r
+2011_09_26/2011_09_26_drive_0022_sync 48 l
+2011_10_03/2011_10_03_drive_0034_sync 3878 r
+2011_09_26/2011_09_26_drive_0011_sync 205 r
+2011_10_03/2011_10_03_drive_0034_sync 4025 r
+2011_09_30/2011_09_30_drive_0028_sync 2799 l
+2011_10_03/2011_10_03_drive_0034_sync 1952 l
+2011_09_26/2011_09_26_drive_0104_sync 296 r
+2011_09_30/2011_09_30_drive_0033_sync 1255 r
+2011_10_03/2011_10_03_drive_0034_sync 3472 r
+2011_10_03/2011_10_03_drive_0034_sync 4323 r
+2011_09_30/2011_09_30_drive_0028_sync 4664 r
+2011_09_26/2011_09_26_drive_0011_sync 35 r
+2011_09_30/2011_09_30_drive_0028_sync 3506 r
+2011_09_26/2011_09_26_drive_0057_sync 235 l
+2011_09_30/2011_09_30_drive_0028_sync 3403 r
+2011_09_26/2011_09_26_drive_0022_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 2128 l
+2011_10_03/2011_10_03_drive_0034_sync 15 r
+2011_10_03/2011_10_03_drive_0034_sync 630 r
+2011_10_03/2011_10_03_drive_0034_sync 31 l
+2011_09_30/2011_09_30_drive_0034_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 3816 l
+2011_09_30/2011_09_30_drive_0028_sync 3030 l
+2011_09_26/2011_09_26_drive_0019_sync 11 l
+2011_09_29/2011_09_29_drive_0004_sync 118 r
+2011_09_30/2011_09_30_drive_0028_sync 370 l
+2011_09_30/2011_09_30_drive_0033_sync 1153 l
+2011_09_28/2011_09_28_drive_0001_sync 82 r
+2011_09_30/2011_09_30_drive_0034_sync 109 l
+2011_09_30/2011_09_30_drive_0033_sync 1331 l
+2011_09_30/2011_09_30_drive_0034_sync 745 l
+2011_09_30/2011_09_30_drive_0028_sync 1314 r
+2011_09_30/2011_09_30_drive_0020_sync 502 r
+2011_09_30/2011_09_30_drive_0033_sync 1491 r
+2011_09_26/2011_09_26_drive_0039_sync 88 r
+2011_10_03/2011_10_03_drive_0034_sync 396 r
+2011_09_30/2011_09_30_drive_0028_sync 3197 r
+2011_10_03/2011_10_03_drive_0034_sync 4267 r
+2011_09_26/2011_09_26_drive_0014_sync 70 r
+2011_09_26/2011_09_26_drive_0022_sync 524 l
+2011_09_26/2011_09_26_drive_0018_sync 28 r
+2011_10_03/2011_10_03_drive_0034_sync 3983 l
+2011_09_26/2011_09_26_drive_0091_sync 3 r
+2011_10_03/2011_10_03_drive_0034_sync 1738 r
+2011_09_26/2011_09_26_drive_0014_sync 121 l
+2011_10_03/2011_10_03_drive_0034_sync 4093 r
+2011_09_30/2011_09_30_drive_0028_sync 5055 r
+2011_09_30/2011_09_30_drive_0028_sync 2214 r
+2011_10_03/2011_10_03_drive_0034_sync 951 r
+2011_09_30/2011_09_30_drive_0033_sync 466 l
+2011_09_30/2011_09_30_drive_0028_sync 483 l
+2011_09_30/2011_09_30_drive_0028_sync 542 r
+2011_09_30/2011_09_30_drive_0028_sync 3928 r
+2011_09_30/2011_09_30_drive_0028_sync 2416 r
+2011_09_30/2011_09_30_drive_0034_sync 1065 r
+2011_09_26/2011_09_26_drive_0051_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 4597 l
+2011_10_03/2011_10_03_drive_0042_sync 413 r
+2011_10_03/2011_10_03_drive_0042_sync 309 l
+2011_09_26/2011_09_26_drive_0019_sync 114 l
+2011_09_30/2011_09_30_drive_0028_sync 1370 l
+2011_10_03/2011_10_03_drive_0034_sync 3413 l
+2011_10_03/2011_10_03_drive_0034_sync 3190 l
+2011_10_03/2011_10_03_drive_0034_sync 2577 l
+2011_09_30/2011_09_30_drive_0028_sync 2952 r
+2011_10_03/2011_10_03_drive_0042_sync 369 r
+2011_09_30/2011_09_30_drive_0033_sync 1587 l
+2011_09_26/2011_09_26_drive_0061_sync 557 r
+2011_09_26/2011_09_26_drive_0011_sync 148 r
+2011_09_30/2011_09_30_drive_0028_sync 312 l
+2011_09_30/2011_09_30_drive_0033_sync 485 r
+2011_10_03/2011_10_03_drive_0034_sync 1474 l
+2011_09_30/2011_09_30_drive_0028_sync 1721 l
+2011_10_03/2011_10_03_drive_0034_sync 1601 r
+2011_09_30/2011_09_30_drive_0020_sync 861 r
+2011_09_30/2011_09_30_drive_0020_sync 730 l
+2011_10_03/2011_10_03_drive_0034_sync 1172 r
+2011_09_26/2011_09_26_drive_0087_sync 232 l
+2011_09_30/2011_09_30_drive_0034_sync 287 r
+2011_09_26/2011_09_26_drive_0087_sync 669 l
+2011_09_26/2011_09_26_drive_0011_sync 124 l
+2011_10_03/2011_10_03_drive_0034_sync 2964 l
+2011_09_26/2011_09_26_drive_0070_sync 359 r
+2011_10_03/2011_10_03_drive_0042_sync 1044 r
+2011_10_03/2011_10_03_drive_0034_sync 3723 r
+2011_09_26/2011_09_26_drive_0039_sync 219 l
+2011_09_30/2011_09_30_drive_0020_sync 710 r
+2011_09_26/2011_09_26_drive_0087_sync 608 r
+2011_09_26/2011_09_26_drive_0022_sync 296 l
+2011_09_30/2011_09_30_drive_0028_sync 2313 r
+2011_09_30/2011_09_30_drive_0028_sync 296 r
+2011_09_30/2011_09_30_drive_0020_sync 1014 l
+2011_10_03/2011_10_03_drive_0042_sync 844 l
+2011_10_03/2011_10_03_drive_0042_sync 1116 l
+2011_10_03/2011_10_03_drive_0034_sync 1048 l
+2011_09_30/2011_09_30_drive_0034_sync 453 l
+2011_09_30/2011_09_30_drive_0028_sync 1315 l
+2011_09_26/2011_09_26_drive_0070_sync 217 r
+2011_10_03/2011_10_03_drive_0034_sync 455 l
+2011_09_30/2011_09_30_drive_0028_sync 110 l
+2011_09_26/2011_09_26_drive_0095_sync 154 l
+2011_10_03/2011_10_03_drive_0034_sync 1901 l
+2011_09_30/2011_09_30_drive_0033_sync 1580 l
+2011_09_30/2011_09_30_drive_0033_sync 609 l
+2011_09_30/2011_09_30_drive_0028_sync 895 r
+2011_10_03/2011_10_03_drive_0034_sync 3914 r
+2011_10_03/2011_10_03_drive_0034_sync 4135 l
+2011_09_30/2011_09_30_drive_0033_sync 1490 l
+2011_09_26/2011_09_26_drive_0051_sync 78 r
+2011_10_03/2011_10_03_drive_0034_sync 3580 r
+2011_09_29/2011_09_29_drive_0026_sync 129 l
+2011_09_30/2011_09_30_drive_0020_sync 886 r
+2011_09_30/2011_09_30_drive_0020_sync 646 l
+2011_09_30/2011_09_30_drive_0020_sync 606 r
+2011_10_03/2011_10_03_drive_0034_sync 485 r
+2011_10_03/2011_10_03_drive_0034_sync 35 l
+2011_09_26/2011_09_26_drive_0039_sync 13 l
+2011_09_30/2011_09_30_drive_0034_sync 975 r
+2011_09_26/2011_09_26_drive_0022_sync 601 l
+2011_09_30/2011_09_30_drive_0028_sync 2543 r
+2011_09_30/2011_09_30_drive_0020_sync 643 r
+2011_09_30/2011_09_30_drive_0028_sync 965 r
+2011_09_30/2011_09_30_drive_0028_sync 4646 r
+2011_10_03/2011_10_03_drive_0034_sync 3891 r
+2011_09_26/2011_09_26_drive_0001_sync 56 l
+2011_09_30/2011_09_30_drive_0028_sync 2859 l
+2011_10_03/2011_10_03_drive_0034_sync 2159 r
+2011_09_26/2011_09_26_drive_0061_sync 226 r
+2011_09_30/2011_09_30_drive_0033_sync 269 r
+2011_10_03/2011_10_03_drive_0034_sync 849 l
+2011_09_30/2011_09_30_drive_0033_sync 983 r
+2011_09_26/2011_09_26_drive_0014_sync 169 l
+2011_10_03/2011_10_03_drive_0034_sync 367 r
+2011_09_30/2011_09_30_drive_0020_sync 410 r
+2011_09_30/2011_09_30_drive_0028_sync 5146 l
+2011_09_26/2011_09_26_drive_0079_sync 57 r
+2011_09_30/2011_09_30_drive_0033_sync 128 r
+2011_09_26/2011_09_26_drive_0022_sync 175 r
+2011_09_26/2011_09_26_drive_0095_sync 14 r
+2011_09_26/2011_09_26_drive_0017_sync 36 l
+2011_09_30/2011_09_30_drive_0028_sync 1303 r
+2011_09_26/2011_09_26_drive_0018_sync 219 l
+2011_10_03/2011_10_03_drive_0034_sync 4356 l
+2011_10_03/2011_10_03_drive_0034_sync 2832 l
+2011_09_26/2011_09_26_drive_0061_sync 440 l
+2011_09_26/2011_09_26_drive_0057_sync 132 l
+2011_09_26/2011_09_26_drive_0091_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 1355 r
+2011_10_03/2011_10_03_drive_0034_sync 2765 l
+2011_09_30/2011_09_30_drive_0033_sync 130 r
+2011_10_03/2011_10_03_drive_0034_sync 1193 l
+2011_09_26/2011_09_26_drive_0051_sync 247 r
+2011_09_26/2011_09_26_drive_0005_sync 5 r
+2011_10_03/2011_10_03_drive_0034_sync 984 l
+2011_09_26/2011_09_26_drive_0028_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 4872 l
+2011_09_30/2011_09_30_drive_0028_sync 1447 r
+2011_09_30/2011_09_30_drive_0028_sync 529 l
+2011_09_30/2011_09_30_drive_0034_sync 931 l
+2011_09_30/2011_09_30_drive_0028_sync 312 r
+2011_10_03/2011_10_03_drive_0034_sync 2768 r
+2011_09_30/2011_09_30_drive_0020_sync 390 l
+2011_09_26/2011_09_26_drive_0087_sync 618 r
+2011_10_03/2011_10_03_drive_0034_sync 4217 r
+2011_09_30/2011_09_30_drive_0028_sync 4997 l
+2011_09_30/2011_09_30_drive_0028_sync 4229 l
+2011_09_30/2011_09_30_drive_0020_sync 474 r
+2011_09_30/2011_09_30_drive_0028_sync 1039 l
+2011_09_30/2011_09_30_drive_0028_sync 292 l
+2011_09_30/2011_09_30_drive_0034_sync 1120 r
+2011_10_03/2011_10_03_drive_0034_sync 3528 r
+2011_10_03/2011_10_03_drive_0034_sync 2959 r
+2011_09_30/2011_09_30_drive_0033_sync 792 r
+2011_10_03/2011_10_03_drive_0034_sync 3369 r
+2011_09_30/2011_09_30_drive_0034_sync 537 l
+2011_10_03/2011_10_03_drive_0034_sync 1615 l
+2011_09_30/2011_09_30_drive_0033_sync 27 r
+2011_09_30/2011_09_30_drive_0028_sync 4908 l
+2011_09_26/2011_09_26_drive_0018_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 1873 r
+2011_10_03/2011_10_03_drive_0034_sync 4546 r
+2011_10_03/2011_10_03_drive_0034_sync 3766 l
+2011_09_30/2011_09_30_drive_0028_sync 1436 r
+2011_09_30/2011_09_30_drive_0033_sync 441 l
+2011_09_26/2011_09_26_drive_0070_sync 301 r
+2011_10_03/2011_10_03_drive_0034_sync 1291 r
+2011_09_26/2011_09_26_drive_0070_sync 101 r
+2011_09_26/2011_09_26_drive_0095_sync 34 l
+2011_09_30/2011_09_30_drive_0033_sync 1459 l
+2011_09_30/2011_09_30_drive_0033_sync 321 r
+2011_09_26/2011_09_26_drive_0022_sync 789 l
+2011_10_03/2011_10_03_drive_0034_sync 3114 l
+2011_09_26/2011_09_26_drive_0061_sync 564 r
+2011_09_26/2011_09_26_drive_0018_sync 214 r
+2011_09_26/2011_09_26_drive_0039_sync 224 r
+2011_09_26/2011_09_26_drive_0039_sync 26 l
+2011_09_26/2011_09_26_drive_0028_sync 114 l
+2011_09_26/2011_09_26_drive_0039_sync 14 r
+2011_10_03/2011_10_03_drive_0034_sync 3240 r
+2011_09_26/2011_09_26_drive_0070_sync 377 l
+2011_10_03/2011_10_03_drive_0042_sync 476 l
+2011_09_26/2011_09_26_drive_0051_sync 264 r
+2011_09_26/2011_09_26_drive_0028_sync 200 l
+2011_09_26/2011_09_26_drive_0018_sync 162 l
+2011_09_30/2011_09_30_drive_0028_sync 3993 r
+2011_09_30/2011_09_30_drive_0033_sync 155 l
+2011_09_30/2011_09_30_drive_0020_sync 610 r
+2011_09_26/2011_09_26_drive_0035_sync 57 l
+2011_10_03/2011_10_03_drive_0034_sync 3405 r
+2011_10_03/2011_10_03_drive_0034_sync 4549 r
+2011_09_30/2011_09_30_drive_0028_sync 1835 r
+2011_09_30/2011_09_30_drive_0020_sync 482 l
+2011_09_29/2011_09_29_drive_0004_sync 234 l
+2011_09_26/2011_09_26_drive_0061_sync 55 l
+2011_09_30/2011_09_30_drive_0028_sync 324 l
+2011_09_30/2011_09_30_drive_0028_sync 1160 l
+2011_10_03/2011_10_03_drive_0034_sync 759 l
+2011_09_26/2011_09_26_drive_0018_sync 267 l
+2011_09_26/2011_09_26_drive_0018_sync 212 r
+2011_09_26/2011_09_26_drive_0057_sync 207 l
+2011_09_26/2011_09_26_drive_0022_sync 279 r
+2011_09_30/2011_09_30_drive_0034_sync 265 l
+2011_09_26/2011_09_26_drive_0015_sync 175 r
+2011_09_30/2011_09_30_drive_0033_sync 735 l
+2011_09_26/2011_09_26_drive_0061_sync 411 l
+2011_09_26/2011_09_26_drive_0019_sync 376 l
+2011_09_30/2011_09_30_drive_0028_sync 4862 r
+2011_10_03/2011_10_03_drive_0034_sync 3111 l
+2011_09_30/2011_09_30_drive_0028_sync 2269 l
+2011_10_03/2011_10_03_drive_0034_sync 2247 r
+2011_10_03/2011_10_03_drive_0034_sync 3832 l
+2011_09_30/2011_09_30_drive_0028_sync 839 l
+2011_10_03/2011_10_03_drive_0034_sync 377 l
+2011_10_03/2011_10_03_drive_0034_sync 2802 l
+2011_09_30/2011_09_30_drive_0028_sync 2373 l
+2011_09_30/2011_09_30_drive_0028_sync 1286 l
+2011_09_26/2011_09_26_drive_0039_sync 94 r
+2011_10_03/2011_10_03_drive_0042_sync 723 l
+2011_09_30/2011_09_30_drive_0028_sync 4989 l
+2011_09_30/2011_09_30_drive_0028_sync 2049 r
+2011_09_30/2011_09_30_drive_0033_sync 632 l
+2011_09_30/2011_09_30_drive_0028_sync 821 l
+2011_09_30/2011_09_30_drive_0028_sync 2873 r
+2011_09_26/2011_09_26_drive_0095_sync 181 r
+2011_09_30/2011_09_30_drive_0020_sync 805 l
+2011_10_03/2011_10_03_drive_0034_sync 2831 l
+2011_09_26/2011_09_26_drive_0014_sync 268 l
+2011_10_03/2011_10_03_drive_0034_sync 2612 l
+2011_10_03/2011_10_03_drive_0034_sync 20 r
+2011_09_30/2011_09_30_drive_0028_sync 114 l
+2011_09_30/2011_09_30_drive_0033_sync 1023 r
+2011_09_26/2011_09_26_drive_0104_sync 273 l
+2011_09_30/2011_09_30_drive_0034_sync 45 r
+2011_09_26/2011_09_26_drive_0011_sync 134 r
+2011_10_03/2011_10_03_drive_0042_sync 336 l
+2011_09_26/2011_09_26_drive_0039_sync 108 r
+2011_09_26/2011_09_26_drive_0091_sync 320 r
+2011_09_26/2011_09_26_drive_0032_sync 179 r
+2011_09_30/2011_09_30_drive_0034_sync 347 r
+2011_09_26/2011_09_26_drive_0070_sync 192 r
+2011_10_03/2011_10_03_drive_0034_sync 1528 r
+2011_09_26/2011_09_26_drive_0018_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 2227 l
+2011_10_03/2011_10_03_drive_0034_sync 3423 l
+2011_10_03/2011_10_03_drive_0042_sync 768 r
+2011_09_30/2011_09_30_drive_0028_sync 5097 l
+2011_10_03/2011_10_03_drive_0034_sync 4114 r
+2011_09_30/2011_09_30_drive_0028_sync 2753 r
+2011_09_26/2011_09_26_drive_0019_sync 120 r
+2011_10_03/2011_10_03_drive_0042_sync 685 l
+2011_10_03/2011_10_03_drive_0034_sync 1498 r
+2011_09_30/2011_09_30_drive_0028_sync 2284 l
+2011_10_03/2011_10_03_drive_0042_sync 134 r
+2011_09_30/2011_09_30_drive_0020_sync 469 r
+2011_09_26/2011_09_26_drive_0022_sync 683 l
+2011_09_30/2011_09_30_drive_0028_sync 1274 r
+2011_09_26/2011_09_26_drive_0087_sync 194 l
+2011_09_26/2011_09_26_drive_0061_sync 315 r
+2011_09_30/2011_09_30_drive_0033_sync 291 r
+2011_10_03/2011_10_03_drive_0034_sync 2896 l
+2011_09_28/2011_09_28_drive_0001_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 4373 l
+2011_09_26/2011_09_26_drive_0104_sync 95 r
+2011_09_30/2011_09_30_drive_0033_sync 1512 l
+2011_09_26/2011_09_26_drive_0057_sync 246 r
+2011_09_30/2011_09_30_drive_0034_sync 1223 l
+2011_09_30/2011_09_30_drive_0033_sync 1305 l
+2011_09_30/2011_09_30_drive_0028_sync 1229 l
+2011_09_26/2011_09_26_drive_0022_sync 681 l
+2011_10_03/2011_10_03_drive_0042_sync 1056 r
+2011_09_26/2011_09_26_drive_0057_sync 253 l
+2011_09_26/2011_09_26_drive_0035_sync 117 r
+2011_09_30/2011_09_30_drive_0034_sync 302 r
+2011_09_26/2011_09_26_drive_0061_sync 501 r
+2011_09_30/2011_09_30_drive_0028_sync 2355 l
+2011_09_26/2011_09_26_drive_0014_sync 184 l
+2011_10_03/2011_10_03_drive_0034_sync 4622 r
+2011_10_03/2011_10_03_drive_0042_sync 457 l
+2011_09_30/2011_09_30_drive_0033_sync 109 r
+2011_09_26/2011_09_26_drive_0018_sync 117 r
+2011_10_03/2011_10_03_drive_0034_sync 1402 l
+2011_09_26/2011_09_26_drive_0051_sync 220 l
+2011_09_26/2011_09_26_drive_0057_sync 127 r
+2011_10_03/2011_10_03_drive_0034_sync 1692 l
+2011_09_30/2011_09_30_drive_0028_sync 1698 r
+2011_09_26/2011_09_26_drive_0022_sync 373 l
+2011_09_26/2011_09_26_drive_0087_sync 563 r
+2011_10_03/2011_10_03_drive_0034_sync 1992 l
+2011_09_26/2011_09_26_drive_0028_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 2538 l
+2011_09_29/2011_09_29_drive_0026_sync 72 r
+2011_10_03/2011_10_03_drive_0042_sync 392 r
+2011_09_30/2011_09_30_drive_0033_sync 491 l
+2011_09_30/2011_09_30_drive_0028_sync 496 r
+2011_09_30/2011_09_30_drive_0034_sync 557 l
+2011_09_26/2011_09_26_drive_0011_sync 37 r
+2011_10_03/2011_10_03_drive_0042_sync 1071 r
+2011_09_26/2011_09_26_drive_0104_sync 283 l
+2011_10_03/2011_10_03_drive_0042_sync 926 l
+2011_09_30/2011_09_30_drive_0034_sync 491 r
+2011_09_26/2011_09_26_drive_0005_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 3382 r
+2011_09_30/2011_09_30_drive_0034_sync 801 l
+2011_09_30/2011_09_30_drive_0028_sync 770 l
+2011_09_30/2011_09_30_drive_0028_sync 176 l
+2011_09_26/2011_09_26_drive_0087_sync 715 r
+2011_09_30/2011_09_30_drive_0033_sync 1556 l
+2011_09_29/2011_09_29_drive_0004_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 4153 r
+2011_09_30/2011_09_30_drive_0020_sync 1055 r
+2011_09_26/2011_09_26_drive_0032_sync 380 l
+2011_09_26/2011_09_26_drive_0022_sync 763 l
+2011_10_03/2011_10_03_drive_0034_sync 503 r
+2011_09_30/2011_09_30_drive_0028_sync 4106 r
+2011_09_26/2011_09_26_drive_0051_sync 153 l
+2011_09_30/2011_09_30_drive_0028_sync 4542 l
+2011_10_03/2011_10_03_drive_0034_sync 1059 r
+2011_09_30/2011_09_30_drive_0028_sync 2438 r
+2011_09_30/2011_09_30_drive_0034_sync 541 l
+2011_09_26/2011_09_26_drive_0005_sync 86 r
+2011_09_26/2011_09_26_drive_0019_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 1740 l
+2011_09_26/2011_09_26_drive_0051_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 4859 r
+2011_09_26/2011_09_26_drive_0087_sync 505 r
+2011_09_26/2011_09_26_drive_0022_sync 137 l
+2011_09_26/2011_09_26_drive_0018_sync 144 l
+2011_09_26/2011_09_26_drive_0022_sync 477 r
+2011_10_03/2011_10_03_drive_0034_sync 627 r
+2011_09_30/2011_09_30_drive_0020_sync 742 l
+2011_09_26/2011_09_26_drive_0001_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 4063 r
+2011_09_26/2011_09_26_drive_0087_sync 310 l
+2011_10_03/2011_10_03_drive_0034_sync 1255 l
+2011_10_03/2011_10_03_drive_0034_sync 4380 r
+2011_10_03/2011_10_03_drive_0042_sync 182 r
+2011_10_03/2011_10_03_drive_0034_sync 3705 r
+2011_09_30/2011_09_30_drive_0028_sync 4523 l
+2011_10_03/2011_10_03_drive_0034_sync 834 r
+2011_10_03/2011_10_03_drive_0034_sync 557 l
+2011_09_26/2011_09_26_drive_0039_sync 97 r
+2011_09_26/2011_09_26_drive_0022_sync 624 r
+2011_09_26/2011_09_26_drive_0028_sync 108 l
+2011_09_26/2011_09_26_drive_0022_sync 675 r
+2011_09_30/2011_09_30_drive_0020_sync 133 l
+2011_09_30/2011_09_30_drive_0028_sync 3476 r
+2011_09_26/2011_09_26_drive_0019_sync 9 l
+2011_10_03/2011_10_03_drive_0034_sync 1761 r
+2011_10_03/2011_10_03_drive_0034_sync 2552 r
+2011_09_26/2011_09_26_drive_0018_sync 70 r
+2011_09_30/2011_09_30_drive_0028_sync 1599 l
+2011_10_03/2011_10_03_drive_0034_sync 4552 l
+2011_09_26/2011_09_26_drive_0104_sync 74 r
+2011_09_26/2011_09_26_drive_0035_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 3121 l
+2011_09_30/2011_09_30_drive_0028_sync 715 l
+2011_09_30/2011_09_30_drive_0028_sync 3340 l
+2011_10_03/2011_10_03_drive_0034_sync 1079 r
+2011_09_30/2011_09_30_drive_0028_sync 1580 l
+2011_09_29/2011_09_29_drive_0026_sync 26 r
+2011_10_03/2011_10_03_drive_0042_sync 322 l
+2011_09_26/2011_09_26_drive_0087_sync 30 l
+2011_09_26/2011_09_26_drive_0061_sync 658 l
+2011_09_26/2011_09_26_drive_0057_sync 245 r
+2011_10_03/2011_10_03_drive_0034_sync 57 r
+2011_09_26/2011_09_26_drive_0091_sync 249 l
+2011_10_03/2011_10_03_drive_0042_sync 967 l
+2011_09_26/2011_09_26_drive_0070_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 3268 l
+2011_09_26/2011_09_26_drive_0022_sync 384 l
+2011_09_30/2011_09_30_drive_0028_sync 1392 l
+2011_09_30/2011_09_30_drive_0034_sync 266 r
+2011_09_26/2011_09_26_drive_0061_sync 305 l
+2011_09_26/2011_09_26_drive_0057_sync 208 r
+2011_10_03/2011_10_03_drive_0034_sync 1143 r
+2011_10_03/2011_10_03_drive_0034_sync 3644 r
+2011_09_26/2011_09_26_drive_0061_sync 409 r
+2011_09_26/2011_09_26_drive_0039_sync 334 l
+2011_09_30/2011_09_30_drive_0034_sync 796 r
+2011_09_30/2011_09_30_drive_0020_sync 846 l
+2011_09_26/2011_09_26_drive_0022_sync 780 r
+2011_09_26/2011_09_26_drive_0087_sync 521 l
+2011_09_30/2011_09_30_drive_0028_sync 2179 r
+2011_10_03/2011_10_03_drive_0042_sync 535 r
+2011_09_29/2011_09_29_drive_0004_sync 253 r
+2011_09_26/2011_09_26_drive_0028_sync 245 r
+2011_09_30/2011_09_30_drive_0028_sync 2169 r
+2011_09_30/2011_09_30_drive_0020_sync 615 l
+2011_10_03/2011_10_03_drive_0042_sync 908 l
+2011_10_03/2011_10_03_drive_0034_sync 3102 l
+2011_09_30/2011_09_30_drive_0028_sync 3021 r
+2011_09_30/2011_09_30_drive_0028_sync 4398 l
+2011_10_03/2011_10_03_drive_0034_sync 185 r
+2011_10_03/2011_10_03_drive_0034_sync 2447 l
+2011_09_26/2011_09_26_drive_0039_sync 278 l
+2011_09_30/2011_09_30_drive_0020_sync 1026 l
+2011_09_26/2011_09_26_drive_0051_sync 423 r
+2011_10_03/2011_10_03_drive_0034_sync 2474 r
+2011_09_30/2011_09_30_drive_0028_sync 3442 r
+2011_09_30/2011_09_30_drive_0028_sync 1843 l
+2011_09_26/2011_09_26_drive_0019_sync 175 l
+2011_10_03/2011_10_03_drive_0042_sync 35 l
+2011_09_26/2011_09_26_drive_0051_sync 395 r
+2011_09_26/2011_09_26_drive_0091_sync 337 r
+2011_09_30/2011_09_30_drive_0033_sync 1238 l
+2011_09_26/2011_09_26_drive_0014_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 764 l
+2011_09_30/2011_09_30_drive_0020_sync 403 r
+2011_09_30/2011_09_30_drive_0033_sync 1408 r
+2011_09_30/2011_09_30_drive_0034_sync 1067 l
+2011_09_30/2011_09_30_drive_0034_sync 901 l
+2011_10_03/2011_10_03_drive_0034_sync 1500 r
+2011_09_30/2011_09_30_drive_0028_sync 418 l
+2011_10_03/2011_10_03_drive_0034_sync 3910 l
+2011_09_26/2011_09_26_drive_0015_sync 152 l
+2011_10_03/2011_10_03_drive_0034_sync 4324 r
+2011_10_03/2011_10_03_drive_0034_sync 1949 r
+2011_09_26/2011_09_26_drive_0019_sync 176 l
+2011_09_29/2011_09_29_drive_0026_sync 156 l
+2011_09_30/2011_09_30_drive_0028_sync 4756 l
+2011_10_03/2011_10_03_drive_0034_sync 3484 r
+2011_09_30/2011_09_30_drive_0028_sync 2622 l
+2011_09_30/2011_09_30_drive_0020_sync 577 r
+2011_09_30/2011_09_30_drive_0020_sync 873 l
+2011_09_26/2011_09_26_drive_0019_sync 19 l
+2011_09_26/2011_09_26_drive_0019_sync 61 r
+2011_09_26/2011_09_26_drive_0011_sync 90 r
+2011_10_03/2011_10_03_drive_0034_sync 416 r
+2011_09_30/2011_09_30_drive_0028_sync 3044 r
+2011_09_26/2011_09_26_drive_0005_sync 25 r
+2011_09_26/2011_09_26_drive_0028_sync 182 r
+2011_09_30/2011_09_30_drive_0028_sync 4166 r
+2011_09_30/2011_09_30_drive_0028_sync 1619 l
+2011_09_30/2011_09_30_drive_0028_sync 1559 r
+2011_09_30/2011_09_30_drive_0028_sync 4279 l
+2011_09_30/2011_09_30_drive_0020_sync 622 r
+2011_10_03/2011_10_03_drive_0034_sync 398 l
+2011_09_30/2011_09_30_drive_0034_sync 1011 r
+2011_09_26/2011_09_26_drive_0022_sync 269 r
+2011_09_30/2011_09_30_drive_0020_sync 911 r
+2011_09_30/2011_09_30_drive_0028_sync 2952 l
+2011_09_30/2011_09_30_drive_0028_sync 4015 r
+2011_09_26/2011_09_26_drive_0104_sync 67 r
+2011_09_29/2011_09_29_drive_0004_sync 220 l
+2011_10_03/2011_10_03_drive_0042_sync 1157 r
+2011_09_30/2011_09_30_drive_0028_sync 5115 l
+2011_09_30/2011_09_30_drive_0028_sync 4708 r
+2011_09_26/2011_09_26_drive_0104_sync 139 l
+2011_09_30/2011_09_30_drive_0033_sync 550 l
+2011_10_03/2011_10_03_drive_0034_sync 1010 l
+2011_09_30/2011_09_30_drive_0028_sync 1808 r
+2011_09_30/2011_09_30_drive_0028_sync 1563 r
+2011_10_03/2011_10_03_drive_0034_sync 2781 r
+2011_09_26/2011_09_26_drive_0095_sync 91 r
+2011_09_26/2011_09_26_drive_0035_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 4550 r
+2011_09_30/2011_09_30_drive_0028_sync 3679 r
+2011_09_30/2011_09_30_drive_0028_sync 1676 r
+2011_09_30/2011_09_30_drive_0020_sync 827 r
+2011_09_26/2011_09_26_drive_0011_sync 17 l
+2011_09_30/2011_09_30_drive_0028_sync 4914 r
+2011_10_03/2011_10_03_drive_0034_sync 2827 r
+2011_09_26/2011_09_26_drive_0061_sync 101 l
+2011_09_30/2011_09_30_drive_0034_sync 226 r
+2011_09_30/2011_09_30_drive_0028_sync 828 l
+2011_09_26/2011_09_26_drive_0070_sync 194 l
+2011_09_26/2011_09_26_drive_0022_sync 343 l
+2011_09_26/2011_09_26_drive_0051_sync 127 r
+2011_09_30/2011_09_30_drive_0034_sync 661 r
+2011_09_30/2011_09_30_drive_0020_sync 812 r
+2011_09_30/2011_09_30_drive_0028_sync 2433 r
+2011_09_29/2011_09_29_drive_0026_sync 79 r
+2011_09_26/2011_09_26_drive_0070_sync 185 r
+2011_09_26/2011_09_26_drive_0028_sync 223 l
+2011_09_30/2011_09_30_drive_0028_sync 1952 r
+2011_09_30/2011_09_30_drive_0033_sync 1489 r
+2011_09_26/2011_09_26_drive_0032_sync 193 l
+2011_09_30/2011_09_30_drive_0033_sync 982 l
+2011_09_26/2011_09_26_drive_0095_sync 251 r
+2011_09_26/2011_09_26_drive_0095_sync 50 l
+2011_09_30/2011_09_30_drive_0020_sync 498 l
+2011_09_30/2011_09_30_drive_0028_sync 570 r
+2011_09_29/2011_09_29_drive_0026_sync 49 r
+2011_09_30/2011_09_30_drive_0033_sync 1382 r
+2011_09_26/2011_09_26_drive_0039_sync 159 l
+2011_09_29/2011_09_29_drive_0004_sync 133 r
+2011_09_26/2011_09_26_drive_0104_sync 81 r
+2011_09_30/2011_09_30_drive_0028_sync 3989 l
+2011_10_03/2011_10_03_drive_0034_sync 919 r
+2011_10_03/2011_10_03_drive_0042_sync 473 l
+2011_09_26/2011_09_26_drive_0070_sync 126 r
+2011_09_30/2011_09_30_drive_0028_sync 3045 r
+2011_09_30/2011_09_30_drive_0033_sync 1261 l
+2011_09_30/2011_09_30_drive_0028_sync 1387 r
+2011_10_03/2011_10_03_drive_0034_sync 3184 l
+2011_10_03/2011_10_03_drive_0042_sync 70 l
+2011_09_30/2011_09_30_drive_0034_sync 779 l
+2011_10_03/2011_10_03_drive_0042_sync 987 r
+2011_09_30/2011_09_30_drive_0028_sync 1773 l
+2011_09_30/2011_09_30_drive_0020_sync 109 l
+2011_09_26/2011_09_26_drive_0019_sync 110 l
+2011_09_30/2011_09_30_drive_0028_sync 4963 r
+2011_09_26/2011_09_26_drive_0022_sync 121 l
+2011_09_26/2011_09_26_drive_0104_sync 226 l
+2011_09_26/2011_09_26_drive_0070_sync 238 l
+2011_10_03/2011_10_03_drive_0034_sync 3619 r
+2011_09_26/2011_09_26_drive_0022_sync 798 r
+2011_10_03/2011_10_03_drive_0034_sync 12 r
+2011_09_30/2011_09_30_drive_0028_sync 3660 l
+2011_09_30/2011_09_30_drive_0028_sync 564 r
+2011_10_03/2011_10_03_drive_0042_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 459 r
+2011_10_03/2011_10_03_drive_0034_sync 1919 r
+2011_09_26/2011_09_26_drive_0104_sync 14 r
+2011_09_26/2011_09_26_drive_0057_sync 162 r
+2011_09_26/2011_09_26_drive_0039_sync 328 r
+2011_10_03/2011_10_03_drive_0034_sync 1591 l
+2011_09_30/2011_09_30_drive_0028_sync 132 l
+2011_10_03/2011_10_03_drive_0042_sync 679 r
+2011_09_30/2011_09_30_drive_0033_sync 436 r
+2011_09_30/2011_09_30_drive_0028_sync 3687 l
+2011_09_30/2011_09_30_drive_0028_sync 2282 r
+2011_09_30/2011_09_30_drive_0034_sync 329 r
+2011_09_30/2011_09_30_drive_0033_sync 396 l
+2011_10_03/2011_10_03_drive_0034_sync 150 r
+2011_09_30/2011_09_30_drive_0033_sync 1352 l
+2011_10_03/2011_10_03_drive_0034_sync 1568 l
+2011_09_30/2011_09_30_drive_0034_sync 27 l
+2011_10_03/2011_10_03_drive_0034_sync 169 r
+2011_09_30/2011_09_30_drive_0028_sync 2684 r
+2011_09_26/2011_09_26_drive_0019_sync 273 r
+2011_09_26/2011_09_26_drive_0095_sync 101 r
+2011_09_26/2011_09_26_drive_0032_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 873 l
+2011_09_26/2011_09_26_drive_0061_sync 466 l
+2011_09_30/2011_09_30_drive_0028_sync 2318 r
+2011_09_30/2011_09_30_drive_0028_sync 581 r
+2011_09_26/2011_09_26_drive_0051_sync 377 r
+2011_09_26/2011_09_26_drive_0018_sync 148 l
+2011_09_26/2011_09_26_drive_0011_sync 189 r
+2011_09_30/2011_09_30_drive_0028_sync 3016 l
+2011_10_03/2011_10_03_drive_0034_sync 2399 r
+2011_10_03/2011_10_03_drive_0034_sync 1067 l
+2011_10_03/2011_10_03_drive_0034_sync 4295 r
+2011_09_26/2011_09_26_drive_0022_sync 635 r
+2011_09_30/2011_09_30_drive_0034_sync 541 r
+2011_09_26/2011_09_26_drive_0070_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 750 r
+2011_10_03/2011_10_03_drive_0034_sync 2147 r
+2011_09_26/2011_09_26_drive_0015_sync 79 l
+2011_09_30/2011_09_30_drive_0028_sync 3386 l
+2011_09_30/2011_09_30_drive_0028_sync 2560 r
+2011_10_03/2011_10_03_drive_0034_sync 4304 r
+2011_09_30/2011_09_30_drive_0033_sync 261 r
+2011_09_30/2011_09_30_drive_0028_sync 1979 r
+2011_09_30/2011_09_30_drive_0034_sync 42 l
+2011_09_26/2011_09_26_drive_0019_sync 367 r
+2011_09_30/2011_09_30_drive_0020_sync 169 l
+2011_09_26/2011_09_26_drive_0015_sync 80 r
+2011_09_30/2011_09_30_drive_0033_sync 847 l
+2011_10_03/2011_10_03_drive_0034_sync 4636 r
+2011_10_03/2011_10_03_drive_0042_sync 472 l
+2011_10_03/2011_10_03_drive_0042_sync 240 r
+2011_10_03/2011_10_03_drive_0034_sync 666 r
+2011_10_03/2011_10_03_drive_0034_sync 1241 r
+2011_09_26/2011_09_26_drive_0061_sync 259 l
+2011_09_30/2011_09_30_drive_0033_sync 244 l
+2011_09_30/2011_09_30_drive_0034_sync 615 r
+2011_10_03/2011_10_03_drive_0042_sync 583 l
+2011_10_03/2011_10_03_drive_0034_sync 2153 r
+2011_09_26/2011_09_26_drive_0051_sync 281 l
+2011_09_26/2011_09_26_drive_0011_sync 156 r
+2011_09_26/2011_09_26_drive_0032_sync 97 l
+2011_09_30/2011_09_30_drive_0028_sync 1580 r
+2011_10_03/2011_10_03_drive_0042_sync 815 l
+2011_10_03/2011_10_03_drive_0042_sync 333 r
+2011_10_03/2011_10_03_drive_0034_sync 2824 l
+2011_09_30/2011_09_30_drive_0020_sync 177 l
+2011_10_03/2011_10_03_drive_0042_sync 528 r
+2011_09_30/2011_09_30_drive_0028_sync 2500 l
+2011_10_03/2011_10_03_drive_0034_sync 3981 r
+2011_09_26/2011_09_26_drive_0022_sync 413 r
+2011_09_26/2011_09_26_drive_0091_sync 167 l
+2011_09_30/2011_09_30_drive_0028_sync 3933 l
+2011_09_30/2011_09_30_drive_0034_sync 1039 r
+2011_09_30/2011_09_30_drive_0033_sync 335 r
+2011_10_03/2011_10_03_drive_0042_sync 498 l
+2011_10_03/2011_10_03_drive_0034_sync 2834 r
+2011_09_30/2011_09_30_drive_0028_sync 1369 l
+2011_10_03/2011_10_03_drive_0034_sync 3304 r
+2011_09_30/2011_09_30_drive_0028_sync 2118 l
+2011_09_26/2011_09_26_drive_0015_sync 199 l
+2011_10_03/2011_10_03_drive_0042_sync 5 r
+2011_09_30/2011_09_30_drive_0034_sync 694 l
+2011_09_26/2011_09_26_drive_0028_sync 301 r
+2011_09_26/2011_09_26_drive_0022_sync 508 r
+2011_09_30/2011_09_30_drive_0028_sync 1669 r
+2011_10_03/2011_10_03_drive_0034_sync 961 r
+2011_09_26/2011_09_26_drive_0028_sync 156 r
+2011_09_30/2011_09_30_drive_0033_sync 525 r
+2011_09_30/2011_09_30_drive_0034_sync 811 l
+2011_09_26/2011_09_26_drive_0032_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 4983 r
+2011_10_03/2011_10_03_drive_0034_sync 624 l
+2011_10_03/2011_10_03_drive_0034_sync 2397 l
+2011_09_30/2011_09_30_drive_0028_sync 746 l
+2011_09_26/2011_09_26_drive_0035_sync 31 l
+2011_09_26/2011_09_26_drive_0014_sync 122 l
+2011_09_26/2011_09_26_drive_0061_sync 354 r
+2011_09_30/2011_09_30_drive_0020_sync 868 l
+2011_09_26/2011_09_26_drive_0017_sync 72 r
+2011_09_30/2011_09_30_drive_0028_sync 1515 r
+2011_09_30/2011_09_30_drive_0028_sync 4530 r
+2011_09_30/2011_09_30_drive_0033_sync 1059 r
+2011_09_30/2011_09_30_drive_0020_sync 592 l
+2011_10_03/2011_10_03_drive_0042_sync 641 l
+2011_09_26/2011_09_26_drive_0032_sync 337 r
+2011_09_29/2011_09_29_drive_0026_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 464 r
+2011_09_26/2011_09_26_drive_0051_sync 125 l
+2011_09_26/2011_09_26_drive_0087_sync 671 l
+2011_09_29/2011_09_29_drive_0004_sync 28 l
+2011_10_03/2011_10_03_drive_0034_sync 1120 r
+2011_09_30/2011_09_30_drive_0028_sync 2105 l
+2011_10_03/2011_10_03_drive_0042_sync 1028 l
+2011_09_26/2011_09_26_drive_0022_sync 30 l
+2011_09_26/2011_09_26_drive_0032_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 234 l
+2011_09_30/2011_09_30_drive_0028_sync 406 l
+2011_10_03/2011_10_03_drive_0034_sync 2758 r
+2011_09_26/2011_09_26_drive_0022_sync 490 l
+2011_09_30/2011_09_30_drive_0028_sync 1607 l
+2011_09_30/2011_09_30_drive_0034_sync 748 l
+2011_09_26/2011_09_26_drive_0057_sync 154 l
+2011_09_26/2011_09_26_drive_0022_sync 491 l
+2011_09_26/2011_09_26_drive_0019_sync 440 l
+2011_09_26/2011_09_26_drive_0022_sync 724 r
+2011_09_30/2011_09_30_drive_0020_sync 982 l
+2011_10_03/2011_10_03_drive_0034_sync 1478 l
+2011_10_03/2011_10_03_drive_0042_sync 109 l
+2011_09_30/2011_09_30_drive_0033_sync 160 l
+2011_09_30/2011_09_30_drive_0028_sync 1569 l
+2011_09_30/2011_09_30_drive_0028_sync 4284 l
+2011_10_03/2011_10_03_drive_0034_sync 3251 l
+2011_09_26/2011_09_26_drive_0095_sync 122 r
+2011_09_26/2011_09_26_drive_0022_sync 164 l
+2011_10_03/2011_10_03_drive_0042_sync 379 l
+2011_09_26/2011_09_26_drive_0091_sync 1 l
+2011_10_03/2011_10_03_drive_0034_sync 4425 l
+2011_10_03/2011_10_03_drive_0034_sync 1328 r
+2011_09_26/2011_09_26_drive_0018_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 5151 r
+2011_10_03/2011_10_03_drive_0042_sync 159 l
+2011_09_30/2011_09_30_drive_0028_sync 3550 l
+2011_10_03/2011_10_03_drive_0042_sync 1015 r
+2011_09_26/2011_09_26_drive_0087_sync 251 r
+2011_09_26/2011_09_26_drive_0015_sync 3 r
+2011_09_26/2011_09_26_drive_0087_sync 667 r
+2011_09_30/2011_09_30_drive_0034_sync 1124 l
+2011_09_26/2011_09_26_drive_0022_sync 193 l
+2011_10_03/2011_10_03_drive_0034_sync 4033 r
+2011_09_26/2011_09_26_drive_0070_sync 122 l
+2011_09_26/2011_09_26_drive_0091_sync 149 l
+2011_09_30/2011_09_30_drive_0028_sync 4557 l
+2011_09_26/2011_09_26_drive_0087_sync 595 l
+2011_10_03/2011_10_03_drive_0034_sync 2300 r
+2011_09_30/2011_09_30_drive_0033_sync 206 l
+2011_10_03/2011_10_03_drive_0042_sync 515 l
+2011_09_30/2011_09_30_drive_0020_sync 817 l
+2011_10_03/2011_10_03_drive_0042_sync 184 r
+2011_09_30/2011_09_30_drive_0028_sync 960 r
+2011_09_30/2011_09_30_drive_0028_sync 2318 l
+2011_10_03/2011_10_03_drive_0034_sync 2444 r
+2011_09_30/2011_09_30_drive_0020_sync 818 l
+2011_10_03/2011_10_03_drive_0042_sync 203 r
+2011_09_30/2011_09_30_drive_0028_sync 1131 r
+2011_09_30/2011_09_30_drive_0033_sync 287 l
+2011_09_30/2011_09_30_drive_0028_sync 1941 r
+2011_09_30/2011_09_30_drive_0033_sync 1399 r
+2011_10_03/2011_10_03_drive_0042_sync 307 l
+2011_10_03/2011_10_03_drive_0034_sync 4468 r
+2011_10_03/2011_10_03_drive_0034_sync 3421 r
+2011_09_30/2011_09_30_drive_0028_sync 5172 r
+2011_09_26/2011_09_26_drive_0032_sync 10 l
+2011_10_03/2011_10_03_drive_0042_sync 688 r
+2011_10_03/2011_10_03_drive_0034_sync 3456 r
+2011_09_26/2011_09_26_drive_0095_sync 69 l
+2011_10_03/2011_10_03_drive_0034_sync 989 l
+2011_09_26/2011_09_26_drive_0035_sync 6 r
+2011_09_26/2011_09_26_drive_0019_sync 429 l
+2011_09_30/2011_09_30_drive_0033_sync 820 r
+2011_10_03/2011_10_03_drive_0034_sync 70 l
+2011_10_03/2011_10_03_drive_0042_sync 578 l
+2011_09_30/2011_09_30_drive_0028_sync 1190 r
+2011_09_26/2011_09_26_drive_0091_sync 160 l
+2011_09_26/2011_09_26_drive_0022_sync 348 l
+2011_09_26/2011_09_26_drive_0061_sync 235 l
+2011_09_29/2011_09_29_drive_0026_sync 51 r
+2011_09_29/2011_09_29_drive_0004_sync 135 l
+2011_10_03/2011_10_03_drive_0034_sync 1467 r
+2011_09_26/2011_09_26_drive_0051_sync 254 l
+2011_09_26/2011_09_26_drive_0022_sync 401 r
+2011_09_26/2011_09_26_drive_0011_sync 190 l
+2011_10_03/2011_10_03_drive_0042_sync 332 l
+2011_10_03/2011_10_03_drive_0034_sync 2717 r
+2011_09_26/2011_09_26_drive_0028_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 2794 l
+2011_09_26/2011_09_26_drive_0079_sync 84 r
+2011_10_03/2011_10_03_drive_0042_sync 940 r
+2011_10_03/2011_10_03_drive_0034_sync 3303 r
+2011_09_26/2011_09_26_drive_0104_sync 164 r
+2011_09_26/2011_09_26_drive_0061_sync 592 l
+2011_09_26/2011_09_26_drive_0022_sync 240 r
+2011_09_30/2011_09_30_drive_0033_sync 572 r
+2011_10_03/2011_10_03_drive_0042_sync 701 l
+2011_10_03/2011_10_03_drive_0034_sync 3760 l
+2011_09_30/2011_09_30_drive_0028_sync 3629 l
+2011_09_26/2011_09_26_drive_0039_sync 360 l
+2011_09_26/2011_09_26_drive_0039_sync 178 r
+2011_09_30/2011_09_30_drive_0033_sync 1522 l
+2011_09_30/2011_09_30_drive_0028_sync 180 l
+2011_09_26/2011_09_26_drive_0095_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 4105 r
+2011_10_03/2011_10_03_drive_0034_sync 1657 r
+2011_09_26/2011_09_26_drive_0022_sync 654 r
+2011_09_26/2011_09_26_drive_0039_sync 297 l
+2011_09_30/2011_09_30_drive_0033_sync 876 l
+2011_09_26/2011_09_26_drive_0087_sync 655 l
+2011_09_30/2011_09_30_drive_0020_sync 981 r
+2011_09_26/2011_09_26_drive_0039_sync 60 l
+2011_09_30/2011_09_30_drive_0034_sync 949 l
+2011_09_30/2011_09_30_drive_0028_sync 2332 l
+2011_09_26/2011_09_26_drive_0051_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 1494 r
+2011_10_03/2011_10_03_drive_0034_sync 858 l
+2011_10_03/2011_10_03_drive_0034_sync 2203 l
+2011_10_03/2011_10_03_drive_0042_sync 112 r
+2011_09_30/2011_09_30_drive_0020_sync 101 r
+2011_09_26/2011_09_26_drive_0070_sync 155 r
+2011_09_26/2011_09_26_drive_0032_sync 106 r
+2011_09_30/2011_09_30_drive_0034_sync 1151 l
+2011_09_26/2011_09_26_drive_0057_sync 151 r
+2011_09_30/2011_09_30_drive_0020_sync 898 l
+2011_10_03/2011_10_03_drive_0034_sync 4008 l
+2011_09_26/2011_09_26_drive_0061_sync 599 l
+2011_09_30/2011_09_30_drive_0033_sync 1354 l
+2011_09_26/2011_09_26_drive_0018_sync 88 r
+2011_09_26/2011_09_26_drive_0087_sync 424 r
+2011_09_26/2011_09_26_drive_0070_sync 415 l
+2011_10_03/2011_10_03_drive_0042_sync 292 l
+2011_10_03/2011_10_03_drive_0034_sync 4428 l
+2011_10_03/2011_10_03_drive_0042_sync 50 l
+2011_10_03/2011_10_03_drive_0034_sync 3706 l
+2011_09_26/2011_09_26_drive_0032_sync 56 l
+2011_10_03/2011_10_03_drive_0042_sync 1119 l
+2011_09_30/2011_09_30_drive_0020_sync 665 l
+2011_10_03/2011_10_03_drive_0034_sync 341 r
+2011_09_26/2011_09_26_drive_0001_sync 76 l
+2011_09_26/2011_09_26_drive_0032_sync 137 r
+2011_10_03/2011_10_03_drive_0034_sync 4655 l
+2011_09_30/2011_09_30_drive_0028_sync 415 r
+2011_09_30/2011_09_30_drive_0034_sync 1141 r
+2011_10_03/2011_10_03_drive_0034_sync 4065 r
+2011_09_26/2011_09_26_drive_0095_sync 33 r
+2011_09_30/2011_09_30_drive_0028_sync 523 r
+2011_10_03/2011_10_03_drive_0034_sync 1076 l
+2011_10_03/2011_10_03_drive_0034_sync 3712 r
+2011_09_26/2011_09_26_drive_0022_sync 216 r
+2011_09_30/2011_09_30_drive_0034_sync 781 l
+2011_09_30/2011_09_30_drive_0028_sync 1241 r
+2011_09_26/2011_09_26_drive_0087_sync 465 r
+2011_09_26/2011_09_26_drive_0014_sync 271 r
+2011_09_30/2011_09_30_drive_0033_sync 2 r
+2011_10_03/2011_10_03_drive_0042_sync 281 l
+2011_09_30/2011_09_30_drive_0033_sync 226 l
+2011_09_26/2011_09_26_drive_0091_sync 42 r
+2011_09_26/2011_09_26_drive_0015_sync 264 r
+2011_09_26/2011_09_26_drive_0057_sync 166 l
+2011_09_26/2011_09_26_drive_0011_sync 65 r
+2011_09_30/2011_09_30_drive_0028_sync 2258 r
+2011_10_03/2011_10_03_drive_0034_sync 919 l
+2011_09_30/2011_09_30_drive_0028_sync 2248 r
+2011_09_30/2011_09_30_drive_0028_sync 3431 r
+2011_09_30/2011_09_30_drive_0034_sync 136 r
+2011_09_26/2011_09_26_drive_0017_sync 32 r
+2011_09_26/2011_09_26_drive_0051_sync 121 r
+2011_09_26/2011_09_26_drive_0005_sync 25 l
+2011_10_03/2011_10_03_drive_0042_sync 556 l
+2011_09_26/2011_09_26_drive_0051_sync 376 r
+2011_10_03/2011_10_03_drive_0034_sync 1911 r
+2011_10_03/2011_10_03_drive_0034_sync 4012 l
+2011_09_30/2011_09_30_drive_0028_sync 197 l
+2011_09_30/2011_09_30_drive_0033_sync 883 r
+2011_09_30/2011_09_30_drive_0033_sync 232 l
+2011_10_03/2011_10_03_drive_0034_sync 1449 l
+2011_10_03/2011_10_03_drive_0034_sync 3250 r
+2011_09_30/2011_09_30_drive_0028_sync 268 r
+2011_10_03/2011_10_03_drive_0034_sync 34 l
+2011_09_26/2011_09_26_drive_0070_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 629 r
+2011_09_30/2011_09_30_drive_0028_sync 3097 r
+2011_09_26/2011_09_26_drive_0091_sync 139 l
+2011_09_30/2011_09_30_drive_0033_sync 379 r
+2011_09_26/2011_09_26_drive_0018_sync 203 l
+2011_09_26/2011_09_26_drive_0011_sync 84 r
+2011_09_26/2011_09_26_drive_0032_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 1561 l
+2011_09_30/2011_09_30_drive_0034_sync 497 r
+2011_09_30/2011_09_30_drive_0028_sync 5123 l
+2011_09_30/2011_09_30_drive_0034_sync 808 r
+2011_09_26/2011_09_26_drive_0070_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 426 l
+2011_09_30/2011_09_30_drive_0028_sync 544 l
+2011_09_26/2011_09_26_drive_0015_sync 24 l
+2011_09_26/2011_09_26_drive_0057_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 2611 r
+2011_09_30/2011_09_30_drive_0028_sync 5077 r
+2011_10_03/2011_10_03_drive_0034_sync 3028 r
+2011_09_26/2011_09_26_drive_0032_sync 363 l
+2011_09_26/2011_09_26_drive_0032_sync 64 r
+2011_09_30/2011_09_30_drive_0028_sync 5005 l
+2011_10_03/2011_10_03_drive_0034_sync 1923 r
+2011_09_26/2011_09_26_drive_0019_sync 319 l
+2011_09_30/2011_09_30_drive_0028_sync 4153 r
+2011_09_30/2011_09_30_drive_0033_sync 191 l
+2011_09_26/2011_09_26_drive_0022_sync 96 l
+2011_09_26/2011_09_26_drive_0039_sync 314 r
+2011_09_30/2011_09_30_drive_0028_sync 1975 r
+2011_09_30/2011_09_30_drive_0034_sync 527 l
+2011_09_30/2011_09_30_drive_0028_sync 2229 r
+2011_09_30/2011_09_30_drive_0028_sync 2927 r
+2011_09_30/2011_09_30_drive_0028_sync 247 l
+2011_09_26/2011_09_26_drive_0022_sync 492 r
+2011_09_26/2011_09_26_drive_0018_sync 122 l
+2011_09_30/2011_09_30_drive_0028_sync 4075 r
+2011_09_26/2011_09_26_drive_0017_sync 101 l
+2011_09_26/2011_09_26_drive_0087_sync 269 r
+2011_09_26/2011_09_26_drive_0091_sync 212 r
+2011_09_30/2011_09_30_drive_0028_sync 4835 l
+2011_10_03/2011_10_03_drive_0034_sync 4034 r
+2011_09_30/2011_09_30_drive_0028_sync 4427 l
+2011_09_30/2011_09_30_drive_0028_sync 2946 r
+2011_09_26/2011_09_26_drive_0057_sync 136 r
+2011_09_26/2011_09_26_drive_0022_sync 610 r
+2011_10_03/2011_10_03_drive_0034_sync 4098 r
+2011_09_26/2011_09_26_drive_0061_sync 526 r
+2011_09_26/2011_09_26_drive_0022_sync 484 l
+2011_10_03/2011_10_03_drive_0034_sync 2431 l
+2011_10_03/2011_10_03_drive_0034_sync 520 r
+2011_09_30/2011_09_30_drive_0033_sync 895 l
+2011_09_26/2011_09_26_drive_0032_sync 312 r
+2011_09_30/2011_09_30_drive_0033_sync 1541 l
+2011_09_30/2011_09_30_drive_0033_sync 145 r
+2011_09_30/2011_09_30_drive_0020_sync 724 r
+2011_09_29/2011_09_29_drive_0004_sync 223 r
+2011_10_03/2011_10_03_drive_0042_sync 694 r
+2011_10_03/2011_10_03_drive_0034_sync 1787 l
+2011_09_30/2011_09_30_drive_0034_sync 350 r
+2011_09_26/2011_09_26_drive_0061_sync 219 r
+2011_09_26/2011_09_26_drive_0070_sync 112 l
+2011_10_03/2011_10_03_drive_0034_sync 832 l
+2011_10_03/2011_10_03_drive_0042_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 2056 r
+2011_09_30/2011_09_30_drive_0033_sync 627 l
+2011_10_03/2011_10_03_drive_0034_sync 1586 l
+2011_09_26/2011_09_26_drive_0022_sync 78 r
+2011_09_26/2011_09_26_drive_0061_sync 594 l
+2011_09_30/2011_09_30_drive_0020_sync 847 l
+2011_10_03/2011_10_03_drive_0034_sync 2003 r
+2011_10_03/2011_10_03_drive_0034_sync 146 r
+2011_09_30/2011_09_30_drive_0028_sync 638 l
+2011_09_26/2011_09_26_drive_0104_sync 116 r
+2011_09_26/2011_09_26_drive_0087_sync 398 r
+2011_10_03/2011_10_03_drive_0034_sync 544 l
+2011_09_30/2011_09_30_drive_0020_sync 424 r
+2011_09_26/2011_09_26_drive_0051_sync 57 r
+2011_10_03/2011_10_03_drive_0042_sync 985 l
+2011_10_03/2011_10_03_drive_0034_sync 2215 r
+2011_09_26/2011_09_26_drive_0057_sync 108 l
+2011_09_30/2011_09_30_drive_0028_sync 4802 l
+2011_09_30/2011_09_30_drive_0028_sync 3613 l
+2011_09_26/2011_09_26_drive_0028_sync 89 r
+2011_10_03/2011_10_03_drive_0034_sync 266 l
+2011_10_03/2011_10_03_drive_0034_sync 1358 l
+2011_09_30/2011_09_30_drive_0033_sync 1467 l
+2011_10_03/2011_10_03_drive_0034_sync 1220 l
+2011_10_03/2011_10_03_drive_0034_sync 1993 r
+2011_09_30/2011_09_30_drive_0028_sync 187 l
+2011_09_26/2011_09_26_drive_0022_sync 226 l
+2011_10_03/2011_10_03_drive_0034_sync 1536 r
+2011_09_30/2011_09_30_drive_0028_sync 3707 l
+2011_09_26/2011_09_26_drive_0028_sync 111 l
+2011_09_30/2011_09_30_drive_0034_sync 180 r
+2011_09_30/2011_09_30_drive_0028_sync 5028 l
+2011_09_30/2011_09_30_drive_0033_sync 478 r
+2011_10_03/2011_10_03_drive_0034_sync 973 l
+2011_09_30/2011_09_30_drive_0033_sync 749 l
+2011_09_26/2011_09_26_drive_0032_sync 256 l
+2011_09_28/2011_09_28_drive_0001_sync 100 r
+2011_10_03/2011_10_03_drive_0034_sync 1573 r
+2011_09_30/2011_09_30_drive_0028_sync 4672 l
+2011_10_03/2011_10_03_drive_0034_sync 1229 r
+2011_10_03/2011_10_03_drive_0034_sync 4308 r
+2011_09_30/2011_09_30_drive_0034_sync 520 r
+2011_10_03/2011_10_03_drive_0034_sync 187 r
+2011_09_29/2011_09_29_drive_0026_sync 124 r
+2011_09_30/2011_09_30_drive_0034_sync 701 l
+2011_09_30/2011_09_30_drive_0020_sync 145 l
+2011_09_26/2011_09_26_drive_0017_sync 98 r
+2011_10_03/2011_10_03_drive_0034_sync 2075 r
+2011_09_26/2011_09_26_drive_0015_sync 73 l
+2011_09_30/2011_09_30_drive_0033_sync 1575 l
+2011_09_30/2011_09_30_drive_0028_sync 3698 r
+2011_09_30/2011_09_30_drive_0020_sync 892 r
+2011_09_30/2011_09_30_drive_0028_sync 1255 l
+2011_09_30/2011_09_30_drive_0034_sync 178 r
+2011_10_03/2011_10_03_drive_0034_sync 2726 r
+2011_09_26/2011_09_26_drive_0019_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 2406 r
+2011_09_26/2011_09_26_drive_0061_sync 16 r
+2011_09_30/2011_09_30_drive_0020_sync 132 l
+2011_10_03/2011_10_03_drive_0034_sync 3689 r
+2011_09_30/2011_09_30_drive_0028_sync 4704 r
+2011_09_30/2011_09_30_drive_0034_sync 234 l
+2011_09_30/2011_09_30_drive_0020_sync 274 l
+2011_09_30/2011_09_30_drive_0033_sync 845 l
+2011_09_26/2011_09_26_drive_0011_sync 156 l
+2011_09_26/2011_09_26_drive_0018_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 4321 l
+2011_09_26/2011_09_26_drive_0022_sync 473 r
+2011_10_03/2011_10_03_drive_0034_sync 3237 r
+2011_09_30/2011_09_30_drive_0028_sync 3183 l
+2011_09_30/2011_09_30_drive_0028_sync 3535 r
+2011_10_03/2011_10_03_drive_0034_sync 2666 r
+2011_09_30/2011_09_30_drive_0033_sync 438 l
+2011_09_30/2011_09_30_drive_0028_sync 568 r
+2011_10_03/2011_10_03_drive_0034_sync 1983 r
+2011_09_30/2011_09_30_drive_0028_sync 1210 r
+2011_10_03/2011_10_03_drive_0034_sync 1093 r
+2011_09_30/2011_09_30_drive_0034_sync 410 r
+2011_09_26/2011_09_26_drive_0022_sync 367 r
+2011_09_30/2011_09_30_drive_0028_sync 3846 l
+2011_09_30/2011_09_30_drive_0028_sync 2644 r
+2011_09_30/2011_09_30_drive_0028_sync 3637 l
+2011_09_26/2011_09_26_drive_0005_sync 54 l
+2011_09_30/2011_09_30_drive_0033_sync 1454 r
+2011_09_30/2011_09_30_drive_0028_sync 2077 l
+2011_09_30/2011_09_30_drive_0028_sync 3009 r
+2011_09_30/2011_09_30_drive_0034_sync 212 r
+2011_09_30/2011_09_30_drive_0028_sync 2841 r
+2011_09_26/2011_09_26_drive_0001_sync 57 l
+2011_09_26/2011_09_26_drive_0095_sync 166 r
+2011_09_26/2011_09_26_drive_0061_sync 366 l
+2011_09_30/2011_09_30_drive_0033_sync 150 r
+2011_09_26/2011_09_26_drive_0061_sync 438 l
+2011_09_30/2011_09_30_drive_0028_sync 4006 r
+2011_10_03/2011_10_03_drive_0034_sync 1472 r
+2011_09_30/2011_09_30_drive_0028_sync 4394 l
+2011_10_03/2011_10_03_drive_0034_sync 1213 r
+2011_09_26/2011_09_26_drive_0070_sync 419 l
+2011_09_30/2011_09_30_drive_0033_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 634 l
+2011_09_26/2011_09_26_drive_0019_sync 263 l
+2011_09_30/2011_09_30_drive_0028_sync 3018 l
+2011_09_30/2011_09_30_drive_0033_sync 333 r
+2011_10_03/2011_10_03_drive_0042_sync 491 r
+2011_09_26/2011_09_26_drive_0061_sync 697 l
+2011_09_26/2011_09_26_drive_0015_sync 194 r
+2011_09_30/2011_09_30_drive_0028_sync 3337 l
+2011_09_26/2011_09_26_drive_0051_sync 101 r
+2011_09_26/2011_09_26_drive_0032_sync 108 l
+2011_10_03/2011_10_03_drive_0034_sync 163 l
+2011_10_03/2011_10_03_drive_0034_sync 1460 l
+2011_09_26/2011_09_26_drive_0015_sync 52 l
+2011_10_03/2011_10_03_drive_0034_sync 2062 r
+2011_09_26/2011_09_26_drive_0014_sync 28 l
+2011_09_26/2011_09_26_drive_0035_sync 93 l
+2011_09_30/2011_09_30_drive_0020_sync 465 l
+2011_10_03/2011_10_03_drive_0042_sync 842 r
+2011_09_30/2011_09_30_drive_0028_sync 4826 r
+2011_10_03/2011_10_03_drive_0042_sync 271 r
+2011_09_30/2011_09_30_drive_0028_sync 4900 r
+2011_09_30/2011_09_30_drive_0033_sync 409 r
+2011_10_03/2011_10_03_drive_0034_sync 1120 l
+2011_09_26/2011_09_26_drive_0091_sync 70 l
+2011_10_03/2011_10_03_drive_0042_sync 846 r
+2011_09_30/2011_09_30_drive_0033_sync 602 l
+2011_10_03/2011_10_03_drive_0034_sync 299 r
+2011_09_26/2011_09_26_drive_0022_sync 390 l
+2011_09_30/2011_09_30_drive_0028_sync 3615 r
+2011_09_26/2011_09_26_drive_0104_sync 10 l
+2011_09_26/2011_09_26_drive_0022_sync 119 l
+2011_09_30/2011_09_30_drive_0033_sync 180 l
+2011_09_26/2011_09_26_drive_0011_sync 172 l
+2011_10_03/2011_10_03_drive_0034_sync 3579 l
+2011_09_26/2011_09_26_drive_0091_sync 294 r
+2011_09_26/2011_09_26_drive_0014_sync 247 l
+2011_09_26/2011_09_26_drive_0057_sync 204 l
+2011_09_26/2011_09_26_drive_0104_sync 188 l
+2011_09_26/2011_09_26_drive_0022_sync 234 r
+2011_09_30/2011_09_30_drive_0028_sync 1464 l
+2011_10_03/2011_10_03_drive_0034_sync 2925 l
+2011_10_03/2011_10_03_drive_0034_sync 1615 r
+2011_09_26/2011_09_26_drive_0022_sync 431 l
+2011_09_30/2011_09_30_drive_0020_sync 807 r
+2011_09_30/2011_09_30_drive_0033_sync 1528 l
+2011_09_26/2011_09_26_drive_0091_sync 252 r
+2011_09_26/2011_09_26_drive_0051_sync 338 l
+2011_09_30/2011_09_30_drive_0028_sync 3836 r
+2011_10_03/2011_10_03_drive_0034_sync 2812 r
+2011_09_30/2011_09_30_drive_0033_sync 316 r
+2011_09_30/2011_09_30_drive_0034_sync 693 l
+2011_09_30/2011_09_30_drive_0028_sync 1254 l
+2011_10_03/2011_10_03_drive_0034_sync 4345 r
+2011_09_30/2011_09_30_drive_0034_sync 903 l
+2011_09_30/2011_09_30_drive_0028_sync 175 l
+2011_09_26/2011_09_26_drive_0061_sync 481 l
+2011_09_30/2011_09_30_drive_0028_sync 2663 r
+2011_10_03/2011_10_03_drive_0034_sync 3279 r
+2011_09_30/2011_09_30_drive_0028_sync 5001 l
+2011_09_30/2011_09_30_drive_0028_sync 1358 l
+2011_09_30/2011_09_30_drive_0028_sync 3814 r
+2011_09_26/2011_09_26_drive_0087_sync 9 r
+2011_09_26/2011_09_26_drive_0019_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 3654 r
+2011_09_30/2011_09_30_drive_0020_sync 556 l
+2011_09_30/2011_09_30_drive_0033_sync 1062 r
+2011_09_30/2011_09_30_drive_0028_sync 2843 l
+2011_09_26/2011_09_26_drive_0057_sync 164 l
+2011_09_26/2011_09_26_drive_0091_sync 159 l
+2011_09_26/2011_09_26_drive_0022_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 1831 l
+2011_09_26/2011_09_26_drive_0001_sync 52 r
+2011_09_26/2011_09_26_drive_0019_sync 256 r
+2011_09_26/2011_09_26_drive_0015_sync 243 l
+2011_09_26/2011_09_26_drive_0017_sync 101 r
+2011_09_30/2011_09_30_drive_0033_sync 1422 l
+2011_10_03/2011_10_03_drive_0042_sync 536 r
+2011_09_26/2011_09_26_drive_0005_sync 72 l
+2011_09_26/2011_09_26_drive_0032_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 745 l
+2011_09_30/2011_09_30_drive_0028_sync 4741 r
+2011_09_26/2011_09_26_drive_0019_sync 357 r
+2011_09_30/2011_09_30_drive_0028_sync 3190 l
+2011_09_26/2011_09_26_drive_0057_sync 293 r
+2011_10_03/2011_10_03_drive_0034_sync 122 r
+2011_09_30/2011_09_30_drive_0028_sync 3938 l
+2011_09_30/2011_09_30_drive_0028_sync 149 l
+2011_10_03/2011_10_03_drive_0034_sync 4462 r
+2011_10_03/2011_10_03_drive_0034_sync 3639 l
+2011_09_26/2011_09_26_drive_0104_sync 295 r
+2011_09_26/2011_09_26_drive_0087_sync 441 r
+2011_09_30/2011_09_30_drive_0020_sync 507 r
+2011_09_30/2011_09_30_drive_0028_sync 1242 l
+2011_09_30/2011_09_30_drive_0033_sync 698 l
+2011_10_03/2011_10_03_drive_0034_sync 3309 r
+2011_10_03/2011_10_03_drive_0034_sync 3982 r
+2011_09_30/2011_09_30_drive_0028_sync 4565 r
+2011_09_30/2011_09_30_drive_0033_sync 301 r
+2011_09_30/2011_09_30_drive_0034_sync 1011 l
+2011_10_03/2011_10_03_drive_0034_sync 333 r
+2011_09_30/2011_09_30_drive_0034_sync 318 r
+2011_09_30/2011_09_30_drive_0028_sync 2337 l
+2011_09_30/2011_09_30_drive_0028_sync 2167 r
+2011_09_26/2011_09_26_drive_0051_sync 234 r
+2011_09_26/2011_09_26_drive_0022_sync 499 l
+2011_10_03/2011_10_03_drive_0034_sync 907 l
+2011_10_03/2011_10_03_drive_0034_sync 1628 r
+2011_09_26/2011_09_26_drive_0019_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 1060 l
+2011_10_03/2011_10_03_drive_0034_sync 328 r
+2011_09_30/2011_09_30_drive_0028_sync 34 r
+2011_09_30/2011_09_30_drive_0034_sync 1105 r
+2011_09_26/2011_09_26_drive_0019_sync 277 l
+2011_09_26/2011_09_26_drive_0022_sync 93 r
+2011_10_03/2011_10_03_drive_0042_sync 436 r
+2011_09_26/2011_09_26_drive_0051_sync 158 r
+2011_09_30/2011_09_30_drive_0028_sync 4674 l
+2011_10_03/2011_10_03_drive_0034_sync 841 l
+2011_09_26/2011_09_26_drive_0039_sync 133 l
+2011_09_26/2011_09_26_drive_0022_sync 634 l
+2011_10_03/2011_10_03_drive_0034_sync 2861 l
+2011_09_26/2011_09_26_drive_0057_sync 135 r
+2011_09_30/2011_09_30_drive_0033_sync 1077 l
+2011_10_03/2011_10_03_drive_0034_sync 1395 r
+2011_10_03/2011_10_03_drive_0042_sync 724 r
+2011_09_30/2011_09_30_drive_0033_sync 264 r
+2011_10_03/2011_10_03_drive_0034_sync 3489 l
+2011_10_03/2011_10_03_drive_0042_sync 909 r
+2011_10_03/2011_10_03_drive_0034_sync 2205 l
+2011_09_30/2011_09_30_drive_0033_sync 872 r
+2011_10_03/2011_10_03_drive_0042_sync 374 l
+2011_09_30/2011_09_30_drive_0028_sync 2853 l
+2011_10_03/2011_10_03_drive_0034_sync 4083 l
+2011_09_26/2011_09_26_drive_0032_sync 0 r
+2011_10_03/2011_10_03_drive_0034_sync 1882 r
+2011_09_30/2011_09_30_drive_0028_sync 3077 r
+2011_09_30/2011_09_30_drive_0028_sync 2345 r
+2011_09_26/2011_09_26_drive_0057_sync 231 l
+2011_09_30/2011_09_30_drive_0033_sync 1556 r
+2011_09_26/2011_09_26_drive_0035_sync 51 l
+2011_09_30/2011_09_30_drive_0028_sync 4479 r
+2011_10_03/2011_10_03_drive_0034_sync 3750 r
+2011_10_03/2011_10_03_drive_0034_sync 2798 l
+2011_09_30/2011_09_30_drive_0034_sync 1093 r
+2011_09_26/2011_09_26_drive_0087_sync 519 l
+2011_09_26/2011_09_26_drive_0017_sync 39 l
+2011_09_30/2011_09_30_drive_0028_sync 2865 r
+2011_09_26/2011_09_26_drive_0087_sync 509 r
+2011_09_26/2011_09_26_drive_0051_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 3822 l
+2011_10_03/2011_10_03_drive_0034_sync 950 r
+2011_09_26/2011_09_26_drive_0015_sync 225 l
+2011_09_30/2011_09_30_drive_0028_sync 3316 l
+2011_09_30/2011_09_30_drive_0028_sync 1124 r
+2011_09_30/2011_09_30_drive_0033_sync 1155 r
+2011_10_03/2011_10_03_drive_0034_sync 1445 l
+2011_09_26/2011_09_26_drive_0022_sync 666 l
+2011_09_26/2011_09_26_drive_0051_sync 267 l
+2011_09_30/2011_09_30_drive_0034_sync 942 l
+2011_10_03/2011_10_03_drive_0034_sync 471 r
+2011_10_03/2011_10_03_drive_0042_sync 552 r
+2011_09_30/2011_09_30_drive_0028_sync 3816 r
+2011_09_30/2011_09_30_drive_0028_sync 4276 r
+2011_09_30/2011_09_30_drive_0020_sync 528 r
+2011_09_30/2011_09_30_drive_0028_sync 210 r
+2011_10_03/2011_10_03_drive_0034_sync 838 r
+2011_09_30/2011_09_30_drive_0033_sync 357 l
+2011_09_30/2011_09_30_drive_0034_sync 164 l
+2011_09_30/2011_09_30_drive_0020_sync 373 r
+2011_10_03/2011_10_03_drive_0034_sync 2457 r
+2011_09_30/2011_09_30_drive_0028_sync 1227 r
+2011_09_30/2011_09_30_drive_0020_sync 164 l
+2011_09_29/2011_09_29_drive_0004_sync 36 r
+2011_10_03/2011_10_03_drive_0042_sync 119 r
+2011_09_26/2011_09_26_drive_0061_sync 277 l
+2011_09_30/2011_09_30_drive_0028_sync 2531 r
+2011_10_03/2011_10_03_drive_0034_sync 751 l
+2011_09_26/2011_09_26_drive_0104_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 3918 l
+2011_09_26/2011_09_26_drive_0039_sync 15 l
+2011_09_26/2011_09_26_drive_0001_sync 59 r
+2011_09_26/2011_09_26_drive_0022_sync 312 r
+2011_09_26/2011_09_26_drive_0061_sync 648 l
+2011_09_26/2011_09_26_drive_0032_sync 60 l
+2011_09_26/2011_09_26_drive_0015_sync 118 l
+2011_09_26/2011_09_26_drive_0087_sync 524 l
+2011_09_30/2011_09_30_drive_0028_sync 4265 l
+2011_09_30/2011_09_30_drive_0028_sync 763 l
+2011_09_26/2011_09_26_drive_0011_sync 64 l
+2011_09_26/2011_09_26_drive_0018_sync 171 l
+2011_09_30/2011_09_30_drive_0033_sync 1047 l
+2011_09_26/2011_09_26_drive_0051_sync 95 r
+2011_10_03/2011_10_03_drive_0034_sync 3316 r
+2011_09_30/2011_09_30_drive_0033_sync 1401 l
+2011_09_30/2011_09_30_drive_0033_sync 841 r
+2011_09_30/2011_09_30_drive_0028_sync 4074 r
+2011_09_30/2011_09_30_drive_0033_sync 1456 r
+2011_09_29/2011_09_29_drive_0004_sync 250 l
+2011_09_30/2011_09_30_drive_0033_sync 1245 r
+2011_09_30/2011_09_30_drive_0028_sync 3011 l
+2011_09_26/2011_09_26_drive_0087_sync 304 r
+2011_09_29/2011_09_29_drive_0026_sync 22 l
+2011_09_30/2011_09_30_drive_0028_sync 4772 l
+2011_09_30/2011_09_30_drive_0033_sync 802 l
+2011_09_26/2011_09_26_drive_0070_sync 241 l
+2011_09_26/2011_09_26_drive_0019_sync 255 r
+2011_09_26/2011_09_26_drive_0015_sync 221 l
+2011_10_03/2011_10_03_drive_0034_sync 2995 r
+2011_10_03/2011_10_03_drive_0042_sync 944 r
+2011_10_03/2011_10_03_drive_0034_sync 3442 l
+2011_09_26/2011_09_26_drive_0028_sync 230 r
+2011_09_28/2011_09_28_drive_0001_sync 0 r
+2011_09_26/2011_09_26_drive_0022_sync 106 l
+2011_09_26/2011_09_26_drive_0061_sync 29 r
+2011_10_03/2011_10_03_drive_0034_sync 1722 l
+2011_09_30/2011_09_30_drive_0028_sync 921 r
+2011_09_26/2011_09_26_drive_0095_sync 21 r
+2011_09_26/2011_09_26_drive_0028_sync 344 l
+2011_09_26/2011_09_26_drive_0035_sync 127 r
+2011_09_26/2011_09_26_drive_0019_sync 24 r
+2011_09_26/2011_09_26_drive_0095_sync 57 r
+2011_09_26/2011_09_26_drive_0022_sync 9 r
+2011_09_30/2011_09_30_drive_0034_sync 308 r
+2011_09_26/2011_09_26_drive_0091_sync 148 r
+2011_09_26/2011_09_26_drive_0061_sync 646 l
+2011_09_26/2011_09_26_drive_0015_sync 281 r
+2011_10_03/2011_10_03_drive_0034_sync 3493 l
+2011_10_03/2011_10_03_drive_0034_sync 1448 l
+2011_09_26/2011_09_26_drive_0091_sync 28 r
+2011_09_30/2011_09_30_drive_0020_sync 46 r
+2011_09_26/2011_09_26_drive_0028_sync 200 r
+2011_09_26/2011_09_26_drive_0061_sync 79 r
+2011_10_03/2011_10_03_drive_0034_sync 4042 r
+2011_10_03/2011_10_03_drive_0042_sync 968 l
+2011_09_30/2011_09_30_drive_0020_sync 600 l
+2011_09_30/2011_09_30_drive_0020_sync 324 l
+2011_09_30/2011_09_30_drive_0033_sync 142 r
+2011_10_03/2011_10_03_drive_0042_sync 923 l
+2011_10_03/2011_10_03_drive_0034_sync 1330 r
+2011_09_26/2011_09_26_drive_0061_sync 307 l
+2011_10_03/2011_10_03_drive_0034_sync 1715 r
+2011_09_30/2011_09_30_drive_0028_sync 1578 r
+2011_09_26/2011_09_26_drive_0017_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 3292 r
+2011_09_26/2011_09_26_drive_0113_sync 77 r
+2011_09_30/2011_09_30_drive_0028_sync 3106 r
+2011_09_30/2011_09_30_drive_0028_sync 2693 r
+2011_09_30/2011_09_30_drive_0028_sync 3545 l
+2011_09_26/2011_09_26_drive_0051_sync 226 r
+2011_09_30/2011_09_30_drive_0034_sync 592 l
+2011_09_30/2011_09_30_drive_0028_sync 69 l
+2011_09_26/2011_09_26_drive_0051_sync 401 r
+2011_09_26/2011_09_26_drive_0095_sync 111 r
+2011_09_26/2011_09_26_drive_0005_sync 100 l
+2011_09_26/2011_09_26_drive_0035_sync 129 l
+2011_09_30/2011_09_30_drive_0028_sync 5147 l
+2011_10_03/2011_10_03_drive_0042_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 1492 l
+2011_09_30/2011_09_30_drive_0034_sync 507 r
+2011_09_30/2011_09_30_drive_0034_sync 400 r
+2011_09_26/2011_09_26_drive_0061_sync 399 r
+2011_09_30/2011_09_30_drive_0020_sync 617 l
+2011_09_30/2011_09_30_drive_0033_sync 179 l
+2011_09_26/2011_09_26_drive_0019_sync 91 r
+2011_10_03/2011_10_03_drive_0042_sync 767 r
+2011_09_26/2011_09_26_drive_0022_sync 161 l
+2011_10_03/2011_10_03_drive_0034_sync 3134 r
+2011_09_26/2011_09_26_drive_0019_sync 304 r
+2011_09_26/2011_09_26_drive_0032_sync 39 r
+2011_09_26/2011_09_26_drive_0087_sync 208 l
+2011_09_26/2011_09_26_drive_0104_sync 62 r
+2011_09_26/2011_09_26_drive_0028_sync 298 r
+2011_09_26/2011_09_26_drive_0028_sync 74 r
+2011_09_26/2011_09_26_drive_0019_sync 417 r
+2011_09_30/2011_09_30_drive_0034_sync 430 l
+2011_09_30/2011_09_30_drive_0033_sync 1533 r
+2011_09_26/2011_09_26_drive_0039_sync 132 l
+2011_09_26/2011_09_26_drive_0061_sync 209 l
+2011_09_30/2011_09_30_drive_0034_sync 644 l
+2011_09_26/2011_09_26_drive_0022_sync 786 r
+2011_10_03/2011_10_03_drive_0034_sync 4556 l
+2011_10_03/2011_10_03_drive_0034_sync 468 l
+2011_09_30/2011_09_30_drive_0028_sync 4269 l
+2011_10_03/2011_10_03_drive_0034_sync 898 l
+2011_09_26/2011_09_26_drive_0061_sync 339 l
+2011_10_03/2011_10_03_drive_0034_sync 3508 r
+2011_10_03/2011_10_03_drive_0034_sync 4020 r
+2011_10_03/2011_10_03_drive_0042_sync 794 l
+2011_09_30/2011_09_30_drive_0028_sync 1398 r
+2011_09_30/2011_09_30_drive_0033_sync 710 l
+2011_09_26/2011_09_26_drive_0014_sync 225 l
+2011_09_30/2011_09_30_drive_0028_sync 3427 r
+2011_09_30/2011_09_30_drive_0028_sync 803 l
+2011_10_03/2011_10_03_drive_0034_sync 3040 l
+2011_09_26/2011_09_26_drive_0022_sync 274 l
+2011_10_03/2011_10_03_drive_0034_sync 1951 r
+2011_10_03/2011_10_03_drive_0042_sync 451 l
+2011_10_03/2011_10_03_drive_0034_sync 2950 l
+2011_09_30/2011_09_30_drive_0033_sync 1303 r
+2011_09_30/2011_09_30_drive_0028_sync 4969 r
+2011_10_03/2011_10_03_drive_0034_sync 3253 l
+2011_09_30/2011_09_30_drive_0028_sync 3314 l
+2011_09_26/2011_09_26_drive_0091_sync 150 l
+2011_09_26/2011_09_26_drive_0022_sync 761 r
+2011_09_30/2011_09_30_drive_0034_sync 81 r
+2011_09_26/2011_09_26_drive_0095_sync 220 r
+2011_09_30/2011_09_30_drive_0033_sync 384 r
+2011_09_26/2011_09_26_drive_0104_sync 192 r
+2011_09_30/2011_09_30_drive_0033_sync 23 r
+2011_09_30/2011_09_30_drive_0034_sync 585 l
+2011_09_30/2011_09_30_drive_0028_sync 4222 l
+2011_10_03/2011_10_03_drive_0034_sync 1374 r
+2011_09_30/2011_09_30_drive_0034_sync 713 l
+2011_09_30/2011_09_30_drive_0028_sync 251 l
+2011_09_26/2011_09_26_drive_0061_sync 347 l
+2011_09_30/2011_09_30_drive_0033_sync 936 r
+2011_09_26/2011_09_26_drive_0032_sync 63 l
+2011_09_30/2011_09_30_drive_0033_sync 931 r
+2011_10_03/2011_10_03_drive_0034_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 431 l
+2011_09_26/2011_09_26_drive_0087_sync 544 l
+2011_10_03/2011_10_03_drive_0034_sync 2891 r
+2011_09_30/2011_09_30_drive_0034_sync 18 l
+2011_09_30/2011_09_30_drive_0028_sync 546 r
+2011_09_26/2011_09_26_drive_0019_sync 44 l
+2011_09_26/2011_09_26_drive_0014_sync 147 l
+2011_09_26/2011_09_26_drive_0051_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 1214 l
+2011_09_26/2011_09_26_drive_0061_sync 634 l
+2011_10_03/2011_10_03_drive_0034_sync 3133 l
+2011_09_29/2011_09_29_drive_0004_sync 216 l
+2011_09_30/2011_09_30_drive_0033_sync 1052 r
+2011_09_26/2011_09_26_drive_0022_sync 791 r
+2011_10_03/2011_10_03_drive_0042_sync 713 r
+2011_10_03/2011_10_03_drive_0034_sync 3626 r
+2011_09_30/2011_09_30_drive_0034_sync 393 l
+2011_10_03/2011_10_03_drive_0034_sync 4405 r
+2011_09_30/2011_09_30_drive_0028_sync 1777 r
+2011_09_26/2011_09_26_drive_0032_sync 144 l
+2011_10_03/2011_10_03_drive_0034_sync 3318 r
+2011_10_03/2011_10_03_drive_0034_sync 3193 l
+2011_09_28/2011_09_28_drive_0001_sync 97 r
+2011_09_26/2011_09_26_drive_0022_sync 535 r
+2011_09_30/2011_09_30_drive_0034_sync 263 r
+2011_09_26/2011_09_26_drive_0095_sync 227 r
+2011_09_26/2011_09_26_drive_0070_sync 269 r
+2011_09_26/2011_09_26_drive_0039_sync 303 l
+2011_09_26/2011_09_26_drive_0032_sync 382 r
+2011_09_26/2011_09_26_drive_0019_sync 123 r
+2011_09_26/2011_09_26_drive_0113_sync 29 r
+2011_10_03/2011_10_03_drive_0034_sync 1712 l
+2011_09_30/2011_09_30_drive_0028_sync 1095 r
+2011_09_30/2011_09_30_drive_0028_sync 5011 l
+2011_10_03/2011_10_03_drive_0034_sync 3354 l
+2011_09_30/2011_09_30_drive_0033_sync 848 r
+2011_09_29/2011_09_29_drive_0004_sync 155 l
+2011_10_03/2011_10_03_drive_0034_sync 3409 l
+2011_09_26/2011_09_26_drive_0019_sync 361 l
+2011_09_30/2011_09_30_drive_0033_sync 160 r
+2011_10_03/2011_10_03_drive_0034_sync 2591 r
+2011_09_30/2011_09_30_drive_0028_sync 646 r
+2011_09_30/2011_09_30_drive_0028_sync 374 r
+2011_09_30/2011_09_30_drive_0028_sync 1029 l
+2011_09_26/2011_09_26_drive_0087_sync 671 r
+2011_09_26/2011_09_26_drive_0091_sync 83 l
+2011_09_26/2011_09_26_drive_0022_sync 148 l
+2011_09_30/2011_09_30_drive_0034_sync 220 l
+2011_10_03/2011_10_03_drive_0034_sync 410 r
+2011_09_30/2011_09_30_drive_0034_sync 1035 r
+2011_10_03/2011_10_03_drive_0034_sync 621 r
+2011_10_03/2011_10_03_drive_0034_sync 1007 l
+2011_10_03/2011_10_03_drive_0034_sync 1932 r
+2011_10_03/2011_10_03_drive_0034_sync 3875 l
+2011_09_30/2011_09_30_drive_0034_sync 1023 r
+2011_10_03/2011_10_03_drive_0034_sync 277 r
+2011_09_30/2011_09_30_drive_0033_sync 1061 r
+2011_10_03/2011_10_03_drive_0034_sync 1106 l
+2011_09_30/2011_09_30_drive_0034_sync 551 l
+2011_09_26/2011_09_26_drive_0028_sync 242 r
+2011_09_26/2011_09_26_drive_0022_sync 486 l
+2011_09_26/2011_09_26_drive_0091_sync 187 l
+2011_09_26/2011_09_26_drive_0015_sync 260 r
+2011_09_26/2011_09_26_drive_0028_sync 383 r
+2011_09_26/2011_09_26_drive_0022_sync 784 l
+2011_10_03/2011_10_03_drive_0042_sync 607 l
+2011_10_03/2011_10_03_drive_0034_sync 2952 l
+2011_09_30/2011_09_30_drive_0034_sync 1133 r
+2011_10_03/2011_10_03_drive_0042_sync 2 l
+2011_09_30/2011_09_30_drive_0028_sync 914 l
+2011_09_30/2011_09_30_drive_0028_sync 249 l
+2011_10_03/2011_10_03_drive_0034_sync 3081 l
+2011_09_30/2011_09_30_drive_0028_sync 4511 l
+2011_09_30/2011_09_30_drive_0033_sync 1406 l
+2011_09_26/2011_09_26_drive_0087_sync 342 r
+2011_09_30/2011_09_30_drive_0028_sync 3470 l
+2011_10_03/2011_10_03_drive_0034_sync 4141 r
+2011_09_30/2011_09_30_drive_0028_sync 3873 r
+2011_10_03/2011_10_03_drive_0034_sync 3886 r
+2011_10_03/2011_10_03_drive_0034_sync 849 r
+2011_09_30/2011_09_30_drive_0028_sync 4096 l
+2011_09_30/2011_09_30_drive_0020_sync 314 l
+2011_09_29/2011_09_29_drive_0004_sync 259 l
+2011_10_03/2011_10_03_drive_0034_sync 3480 l
+2011_10_03/2011_10_03_drive_0034_sync 903 r
+2011_09_30/2011_09_30_drive_0028_sync 1416 l
+2011_09_30/2011_09_30_drive_0028_sync 3264 r
+2011_10_03/2011_10_03_drive_0034_sync 4498 l
+2011_09_26/2011_09_26_drive_0022_sync 682 r
+2011_09_30/2011_09_30_drive_0034_sync 774 l
+2011_09_30/2011_09_30_drive_0020_sync 89 l
+2011_09_30/2011_09_30_drive_0033_sync 362 l
+2011_10_03/2011_10_03_drive_0034_sync 2967 l
+2011_10_03/2011_10_03_drive_0034_sync 1167 r
+2011_09_30/2011_09_30_drive_0028_sync 4912 r
+2011_09_26/2011_09_26_drive_0019_sync 50 r
+2011_10_03/2011_10_03_drive_0034_sync 2814 l
+2011_10_03/2011_10_03_drive_0042_sync 1043 r
+2011_09_26/2011_09_26_drive_0011_sync 100 l
+2011_09_30/2011_09_30_drive_0028_sync 3488 r
+2011_09_30/2011_09_30_drive_0020_sync 813 r
+2011_09_30/2011_09_30_drive_0028_sync 2011 r
+2011_09_30/2011_09_30_drive_0033_sync 968 r
+2011_09_30/2011_09_30_drive_0028_sync 292 r
+2011_09_26/2011_09_26_drive_0032_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 853 l
+2011_09_26/2011_09_26_drive_0019_sync 213 r
+2011_09_26/2011_09_26_drive_0032_sync 351 r
+2011_09_30/2011_09_30_drive_0028_sync 2132 l
+2011_09_30/2011_09_30_drive_0028_sync 1281 l
+2011_09_30/2011_09_30_drive_0028_sync 4526 r
+2011_09_26/2011_09_26_drive_0051_sync 23 l
+2011_09_26/2011_09_26_drive_0011_sync 46 r
+2011_09_26/2011_09_26_drive_0061_sync 655 l
+2011_09_30/2011_09_30_drive_0020_sync 310 r
+2011_09_30/2011_09_30_drive_0028_sync 423 l
+2011_09_30/2011_09_30_drive_0028_sync 4155 r
+2011_10_03/2011_10_03_drive_0042_sync 791 r
+2011_10_03/2011_10_03_drive_0034_sync 3212 l
+2011_09_26/2011_09_26_drive_0087_sync 343 l
+2011_09_26/2011_09_26_drive_0022_sync 494 r
+2011_09_30/2011_09_30_drive_0034_sync 203 l
+2011_09_26/2011_09_26_drive_0019_sync 0 r
+2011_09_26/2011_09_26_drive_0022_sync 486 r
+2011_10_03/2011_10_03_drive_0034_sync 1014 r
+2011_09_30/2011_09_30_drive_0028_sync 60 r
+2011_10_03/2011_10_03_drive_0034_sync 2540 l
+2011_09_26/2011_09_26_drive_0028_sync 38 r
+2011_09_26/2011_09_26_drive_0014_sync 250 r
+2011_09_30/2011_09_30_drive_0020_sync 442 r
+2011_09_26/2011_09_26_drive_0087_sync 139 l
+2011_09_30/2011_09_30_drive_0028_sync 4687 r
+2011_09_30/2011_09_30_drive_0028_sync 3619 l
+2011_09_30/2011_09_30_drive_0033_sync 387 r
+2011_09_30/2011_09_30_drive_0028_sync 3250 l
+2011_09_26/2011_09_26_drive_0087_sync 709 r
+2011_10_03/2011_10_03_drive_0042_sync 1040 r
+2011_10_03/2011_10_03_drive_0034_sync 3785 r
+2011_09_30/2011_09_30_drive_0028_sync 4762 r
+2011_10_03/2011_10_03_drive_0034_sync 4421 r
+2011_10_03/2011_10_03_drive_0034_sync 3984 l
+2011_09_30/2011_09_30_drive_0034_sync 464 r
+2011_09_30/2011_09_30_drive_0034_sync 60 r
+2011_09_29/2011_09_29_drive_0004_sync 49 r
+2011_09_26/2011_09_26_drive_0087_sync 584 l
+2011_10_03/2011_10_03_drive_0034_sync 3820 l
+2011_09_26/2011_09_26_drive_0022_sync 338 l
+2011_09_30/2011_09_30_drive_0028_sync 4231 l
+2011_09_30/2011_09_30_drive_0028_sync 435 l
+2011_10_03/2011_10_03_drive_0034_sync 104 r
+2011_09_26/2011_09_26_drive_0015_sync 207 l
+2011_09_26/2011_09_26_drive_0039_sync 64 r
+2011_10_03/2011_10_03_drive_0042_sync 731 l
+2011_09_26/2011_09_26_drive_0028_sync 13 r
+2011_09_30/2011_09_30_drive_0028_sync 269 r
+2011_09_30/2011_09_30_drive_0028_sync 2463 r
+2011_10_03/2011_10_03_drive_0042_sync 349 r
+2011_10_03/2011_10_03_drive_0034_sync 1477 l
+2011_09_26/2011_09_26_drive_0095_sync 45 l
+2011_09_30/2011_09_30_drive_0028_sync 2900 r
+2011_09_30/2011_09_30_drive_0028_sync 4683 r
+2011_09_30/2011_09_30_drive_0028_sync 4663 r
+2011_09_30/2011_09_30_drive_0028_sync 3133 r
+2011_09_30/2011_09_30_drive_0033_sync 408 l
+2011_09_26/2011_09_26_drive_0061_sync 419 l
+2011_09_26/2011_09_26_drive_0039_sync 209 r
+2011_09_26/2011_09_26_drive_0018_sync 242 r
+2011_09_26/2011_09_26_drive_0028_sync 253 l
+2011_09_26/2011_09_26_drive_0087_sync 371 r
+2011_09_30/2011_09_30_drive_0033_sync 458 l
+2011_09_29/2011_09_29_drive_0026_sync 67 r
+2011_09_30/2011_09_30_drive_0028_sync 733 l
+2011_09_30/2011_09_30_drive_0028_sync 1162 l
+2011_10_03/2011_10_03_drive_0034_sync 1796 r
+2011_09_26/2011_09_26_drive_0028_sync 271 l
+2011_10_03/2011_10_03_drive_0042_sync 558 l
+2011_09_30/2011_09_30_drive_0034_sync 324 r
+2011_09_26/2011_09_26_drive_0005_sync 20 r
+2011_10_03/2011_10_03_drive_0034_sync 178 l
+2011_09_30/2011_09_30_drive_0034_sync 15 l
+2011_10_03/2011_10_03_drive_0034_sync 567 l
+2011_10_03/2011_10_03_drive_0042_sync 157 l
+2011_09_30/2011_09_30_drive_0028_sync 4494 r
+2011_10_03/2011_10_03_drive_0034_sync 3068 r
+2011_09_30/2011_09_30_drive_0020_sync 1031 r
+2011_10_03/2011_10_03_drive_0034_sync 1142 r
+2011_09_26/2011_09_26_drive_0087_sync 428 l
+2011_10_03/2011_10_03_drive_0034_sync 2089 l
+2011_10_03/2011_10_03_drive_0034_sync 3885 r
+2011_09_26/2011_09_26_drive_0011_sync 2 l
+2011_09_30/2011_09_30_drive_0033_sync 501 l
+2011_10_03/2011_10_03_drive_0034_sync 2902 r
+2011_09_26/2011_09_26_drive_0087_sync 253 r
+2011_09_29/2011_09_29_drive_0004_sync 105 r
+2011_09_26/2011_09_26_drive_0079_sync 71 r
+2011_10_03/2011_10_03_drive_0034_sync 147 l
+2011_10_03/2011_10_03_drive_0042_sync 403 l
+2011_09_30/2011_09_30_drive_0034_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 2494 r
+2011_10_03/2011_10_03_drive_0042_sync 1129 l
+2011_10_03/2011_10_03_drive_0034_sync 2499 l
+2011_09_26/2011_09_26_drive_0019_sync 290 r
+2011_09_26/2011_09_26_drive_0087_sync 576 r
+2011_09_30/2011_09_30_drive_0028_sync 3905 r
+2011_09_30/2011_09_30_drive_0034_sync 156 l
+2011_09_30/2011_09_30_drive_0028_sync 2421 l
+2011_09_30/2011_09_30_drive_0020_sync 711 r
+2011_09_30/2011_09_30_drive_0033_sync 184 l
+2011_09_30/2011_09_30_drive_0028_sync 2777 l
+2011_10_03/2011_10_03_drive_0042_sync 449 l
+2011_09_30/2011_09_30_drive_0034_sync 490 r
+2011_09_30/2011_09_30_drive_0034_sync 350 l
+2011_09_26/2011_09_26_drive_0022_sync 507 r
+2011_09_26/2011_09_26_drive_0032_sync 347 l
+2011_10_03/2011_10_03_drive_0042_sync 1097 l
+2011_10_03/2011_10_03_drive_0042_sync 232 r
+2011_10_03/2011_10_03_drive_0034_sync 4388 r
+2011_09_30/2011_09_30_drive_0028_sync 113 r
+2011_09_30/2011_09_30_drive_0028_sync 4801 l
+2011_09_28/2011_09_28_drive_0001_sync 26 l
+2011_09_26/2011_09_26_drive_0011_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 3929 l
+2011_09_30/2011_09_30_drive_0033_sync 1190 r
+2011_09_28/2011_09_28_drive_0001_sync 91 r
+2011_09_30/2011_09_30_drive_0034_sync 634 r
+2011_09_30/2011_09_30_drive_0033_sync 1542 r
+2011_10_03/2011_10_03_drive_0034_sync 2525 l
+2011_09_30/2011_09_30_drive_0034_sync 1089 l
+2011_09_30/2011_09_30_drive_0028_sync 4147 l
+2011_09_26/2011_09_26_drive_0095_sync 161 r
+2011_09_26/2011_09_26_drive_0035_sync 20 l
+2011_09_26/2011_09_26_drive_0095_sync 141 l
+2011_10_03/2011_10_03_drive_0034_sync 4391 r
+2011_09_26/2011_09_26_drive_0057_sync 109 r
+2011_10_03/2011_10_03_drive_0034_sync 3993 l
+2011_10_03/2011_10_03_drive_0034_sync 3883 l
+2011_09_26/2011_09_26_drive_0039_sync 69 r
+2011_09_30/2011_09_30_drive_0028_sync 2709 r
+2011_10_03/2011_10_03_drive_0034_sync 442 r
+2011_10_03/2011_10_03_drive_0034_sync 4076 r
+2011_09_30/2011_09_30_drive_0028_sync 4024 l
+2011_09_26/2011_09_26_drive_0051_sync 292 l
+2011_09_30/2011_09_30_drive_0034_sync 1015 l
+2011_09_26/2011_09_26_drive_0022_sync 322 l
+2011_10_03/2011_10_03_drive_0042_sync 779 l
+2011_09_30/2011_09_30_drive_0028_sync 4182 l
+2011_10_03/2011_10_03_drive_0034_sync 1488 l
+2011_09_30/2011_09_30_drive_0028_sync 4983 l
+2011_09_26/2011_09_26_drive_0051_sync 61 l
+2011_10_03/2011_10_03_drive_0034_sync 4100 r
+2011_09_30/2011_09_30_drive_0034_sync 474 r
+2011_10_03/2011_10_03_drive_0034_sync 1675 l
+2011_09_26/2011_09_26_drive_0019_sync 294 r
+2011_10_03/2011_10_03_drive_0034_sync 1756 r
+2011_09_26/2011_09_26_drive_0061_sync 304 l
+2011_09_26/2011_09_26_drive_0087_sync 709 l
+2011_09_26/2011_09_26_drive_0022_sync 435 r
+2011_10_03/2011_10_03_drive_0034_sync 3874 l
+2011_09_30/2011_09_30_drive_0028_sync 829 r
+2011_10_03/2011_10_03_drive_0034_sync 63 r
+2011_09_26/2011_09_26_drive_0032_sync 270 l
+2011_09_26/2011_09_26_drive_0057_sync 318 l
+2011_09_30/2011_09_30_drive_0034_sync 505 l
+2011_10_03/2011_10_03_drive_0042_sync 442 l
+2011_10_03/2011_10_03_drive_0042_sync 89 l
+2011_09_26/2011_09_26_drive_0011_sync 228 l
+2011_09_26/2011_09_26_drive_0051_sync 337 l
+2011_09_30/2011_09_30_drive_0028_sync 1153 r
+2011_09_30/2011_09_30_drive_0033_sync 699 r
+2011_09_30/2011_09_30_drive_0028_sync 3855 l
+2011_09_30/2011_09_30_drive_0028_sync 2335 r
+2011_09_30/2011_09_30_drive_0028_sync 4811 l
+2011_09_30/2011_09_30_drive_0034_sync 465 r
+2011_09_30/2011_09_30_drive_0028_sync 5063 l
+2011_09_30/2011_09_30_drive_0020_sync 429 r
+2011_10_03/2011_10_03_drive_0034_sync 1022 l
+2011_10_03/2011_10_03_drive_0034_sync 3258 l
+2011_09_26/2011_09_26_drive_0061_sync 652 l
+2011_09_30/2011_09_30_drive_0034_sync 956 l
+2011_09_26/2011_09_26_drive_0079_sync 87 l
+2011_09_30/2011_09_30_drive_0028_sync 2033 r
+2011_09_30/2011_09_30_drive_0034_sync 576 r
+2011_09_26/2011_09_26_drive_0087_sync 205 r
+2011_09_26/2011_09_26_drive_0005_sync 1 l
+2011_09_30/2011_09_30_drive_0028_sync 4674 r
+2011_09_29/2011_09_29_drive_0004_sync 214 l
+2011_09_30/2011_09_30_drive_0028_sync 4380 r
+2011_09_26/2011_09_26_drive_0091_sync 134 l
+2011_09_30/2011_09_30_drive_0020_sync 1026 r
+2011_10_03/2011_10_03_drive_0034_sync 2642 l
+2011_09_30/2011_09_30_drive_0028_sync 2419 l
+2011_09_26/2011_09_26_drive_0051_sync 108 r
+2011_10_03/2011_10_03_drive_0042_sync 693 r
+2011_09_26/2011_09_26_drive_0015_sync 268 r
+2011_09_26/2011_09_26_drive_0087_sync 557 l
+2011_09_26/2011_09_26_drive_0087_sync 178 r
+2011_09_26/2011_09_26_drive_0039_sync 297 r
+2011_09_26/2011_09_26_drive_0035_sync 25 r
+2011_09_26/2011_09_26_drive_0022_sync 549 l
+2011_09_26/2011_09_26_drive_0022_sync 437 l
+2011_09_30/2011_09_30_drive_0020_sync 962 r
+2011_09_26/2011_09_26_drive_0061_sync 322 r
+2011_09_26/2011_09_26_drive_0014_sync 29 r
+2011_09_26/2011_09_26_drive_0022_sync 613 l
+2011_09_26/2011_09_26_drive_0032_sync 275 r
+2011_09_30/2011_09_30_drive_0028_sync 387 r
+2011_09_30/2011_09_30_drive_0028_sync 3916 r
+2011_09_26/2011_09_26_drive_0095_sync 236 l
+2011_09_30/2011_09_30_drive_0028_sync 547 r
+2011_10_03/2011_10_03_drive_0034_sync 1516 l
+2011_09_26/2011_09_26_drive_0015_sync 117 r
+2011_09_30/2011_09_30_drive_0028_sync 32 l
+2011_09_26/2011_09_26_drive_0019_sync 161 l
+2011_09_26/2011_09_26_drive_0087_sync 694 r
+2011_09_29/2011_09_29_drive_0026_sync 23 r
+2011_09_26/2011_09_26_drive_0087_sync 215 r
+2011_10_03/2011_10_03_drive_0034_sync 593 l
+2011_09_30/2011_09_30_drive_0028_sync 2888 l
+2011_09_30/2011_09_30_drive_0034_sync 91 r
+2011_09_26/2011_09_26_drive_0028_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 2745 r
+2011_09_30/2011_09_30_drive_0028_sync 433 l
+2011_09_26/2011_09_26_drive_0095_sync 185 r
+2011_09_30/2011_09_30_drive_0020_sync 863 l
+2011_09_30/2011_09_30_drive_0020_sync 528 l
+2011_09_30/2011_09_30_drive_0028_sync 3112 l
+2011_09_30/2011_09_30_drive_0028_sync 688 r
+2011_09_30/2011_09_30_drive_0028_sync 2164 l
+2011_09_26/2011_09_26_drive_0061_sync 386 l
+2011_09_30/2011_09_30_drive_0028_sync 2399 r
+2011_09_30/2011_09_30_drive_0028_sync 4061 r
+2011_10_03/2011_10_03_drive_0034_sync 3774 l
+2011_09_30/2011_09_30_drive_0028_sync 2282 l
+2011_10_03/2011_10_03_drive_0034_sync 3541 l
+2011_09_30/2011_09_30_drive_0028_sync 1595 r
+2011_10_03/2011_10_03_drive_0034_sync 219 r
+2011_09_26/2011_09_26_drive_0001_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1356 r
+2011_09_30/2011_09_30_drive_0028_sync 1972 l
+2011_09_26/2011_09_26_drive_0039_sync 197 r
+2011_09_30/2011_09_30_drive_0033_sync 487 l
+2011_09_30/2011_09_30_drive_0033_sync 1510 l
+2011_09_30/2011_09_30_drive_0033_sync 1256 l
+2011_09_30/2011_09_30_drive_0028_sync 1278 r
+2011_09_30/2011_09_30_drive_0033_sync 1526 r
+2011_09_26/2011_09_26_drive_0022_sync 521 r
+2011_09_26/2011_09_26_drive_0070_sync 283 r
+2011_09_30/2011_09_30_drive_0034_sync 126 l
+2011_09_30/2011_09_30_drive_0020_sync 383 l
+2011_10_03/2011_10_03_drive_0042_sync 422 l
+2011_10_03/2011_10_03_drive_0034_sync 3625 l
+2011_09_30/2011_09_30_drive_0028_sync 2959 l
+2011_09_26/2011_09_26_drive_0104_sync 150 r
+2011_10_03/2011_10_03_drive_0034_sync 409 r
+2011_09_30/2011_09_30_drive_0033_sync 805 r
+2011_10_03/2011_10_03_drive_0034_sync 979 r
+2011_10_03/2011_10_03_drive_0034_sync 616 r
+2011_09_26/2011_09_26_drive_0018_sync 42 r
+2011_10_03/2011_10_03_drive_0034_sync 2110 r
+2011_09_26/2011_09_26_drive_0022_sync 187 r
+2011_09_26/2011_09_26_drive_0061_sync 701 r
+2011_09_29/2011_09_29_drive_0026_sync 36 l
+2011_09_26/2011_09_26_drive_0014_sync 124 r
+2011_09_30/2011_09_30_drive_0020_sync 1063 l
+2011_09_30/2011_09_30_drive_0028_sync 3069 r
+2011_09_30/2011_09_30_drive_0020_sync 661 r
+2011_09_30/2011_09_30_drive_0020_sync 700 l
+2011_10_03/2011_10_03_drive_0034_sync 4166 l
+2011_09_30/2011_09_30_drive_0034_sync 951 r
+2011_09_30/2011_09_30_drive_0028_sync 253 l
+2011_10_03/2011_10_03_drive_0034_sync 4641 r
+2011_09_29/2011_09_29_drive_0004_sync 22 r
+2011_10_03/2011_10_03_drive_0034_sync 2788 l
+2011_10_03/2011_10_03_drive_0042_sync 904 l
+2011_09_30/2011_09_30_drive_0020_sync 34 l
+2011_10_03/2011_10_03_drive_0034_sync 1099 r
+2011_09_26/2011_09_26_drive_0022_sync 560 l
+2011_09_30/2011_09_30_drive_0028_sync 3996 l
+2011_09_29/2011_09_29_drive_0026_sync 120 l
+2011_10_03/2011_10_03_drive_0034_sync 1501 r
+2011_09_30/2011_09_30_drive_0034_sync 294 l
+2011_09_29/2011_09_29_drive_0004_sync 218 l
+2011_09_30/2011_09_30_drive_0033_sync 512 r
+2011_10_03/2011_10_03_drive_0034_sync 2983 r
+2011_09_30/2011_09_30_drive_0028_sync 3288 l
+2011_09_30/2011_09_30_drive_0028_sync 4158 r
+2011_09_30/2011_09_30_drive_0028_sync 1022 l
+2011_09_26/2011_09_26_drive_0051_sync 154 r
+2011_09_26/2011_09_26_drive_0022_sync 207 l
+2011_10_03/2011_10_03_drive_0034_sync 43 r
+2011_09_26/2011_09_26_drive_0104_sync 243 r
+2011_09_30/2011_09_30_drive_0034_sync 255 l
+2011_10_03/2011_10_03_drive_0042_sync 594 r
+2011_09_30/2011_09_30_drive_0033_sync 720 r
+2011_09_26/2011_09_26_drive_0091_sync 237 r
+2011_09_26/2011_09_26_drive_0079_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 504 r
+2011_10_03/2011_10_03_drive_0034_sync 3226 r
+2011_09_26/2011_09_26_drive_0079_sync 68 r
+2011_09_26/2011_09_26_drive_0091_sync 59 r
+2011_09_30/2011_09_30_drive_0028_sync 3967 l
+2011_09_30/2011_09_30_drive_0028_sync 1790 r
+2011_09_26/2011_09_26_drive_0091_sync 257 l
+2011_10_03/2011_10_03_drive_0042_sync 775 l
+2011_09_30/2011_09_30_drive_0028_sync 1198 r
+2011_09_30/2011_09_30_drive_0028_sync 1866 l
+2011_10_03/2011_10_03_drive_0034_sync 1011 l
+2011_10_03/2011_10_03_drive_0034_sync 664 r
+2011_09_26/2011_09_26_drive_0091_sync 169 l
+2011_09_29/2011_09_29_drive_0004_sync 67 l
+2011_09_30/2011_09_30_drive_0028_sync 4805 r
+2011_10_03/2011_10_03_drive_0042_sync 1025 r
+2011_09_30/2011_09_30_drive_0033_sync 62 l
+2011_09_29/2011_09_29_drive_0004_sync 228 l
+2011_10_03/2011_10_03_drive_0034_sync 565 l
+2011_09_26/2011_09_26_drive_0019_sync 12 r
+2011_09_26/2011_09_26_drive_0061_sync 346 r
+2011_09_30/2011_09_30_drive_0028_sync 596 r
+2011_09_30/2011_09_30_drive_0033_sync 1365 l
+2011_09_29/2011_09_29_drive_0004_sync 153 l
+2011_09_30/2011_09_30_drive_0034_sync 672 l
+2011_09_26/2011_09_26_drive_0070_sync 190 r
+2011_09_30/2011_09_30_drive_0028_sync 389 r
+2011_09_30/2011_09_30_drive_0020_sync 180 r
+2011_10_03/2011_10_03_drive_0034_sync 3900 l
+2011_09_26/2011_09_26_drive_0061_sync 233 r
+2011_10_03/2011_10_03_drive_0034_sync 811 r
+2011_09_26/2011_09_26_drive_0091_sync 84 r
+2011_09_26/2011_09_26_drive_0061_sync 336 l
+2011_09_30/2011_09_30_drive_0033_sync 534 l
+2011_10_03/2011_10_03_drive_0034_sync 604 l
+2011_10_03/2011_10_03_drive_0042_sync 484 r
+2011_10_03/2011_10_03_drive_0034_sync 4463 r
+2011_10_03/2011_10_03_drive_0034_sync 2259 r
+2011_10_03/2011_10_03_drive_0034_sync 4611 r
+2011_09_30/2011_09_30_drive_0028_sync 792 r
+2011_09_29/2011_09_29_drive_0026_sync 123 r
+2011_09_30/2011_09_30_drive_0033_sync 1041 l
+2011_09_30/2011_09_30_drive_0028_sync 3520 l
+2011_10_03/2011_10_03_drive_0034_sync 4509 l
+2011_09_30/2011_09_30_drive_0033_sync 721 l
+2011_10_03/2011_10_03_drive_0042_sync 765 l
+2011_09_26/2011_09_26_drive_0011_sync 98 l
+2011_09_30/2011_09_30_drive_0033_sync 414 r
+2011_09_30/2011_09_30_drive_0033_sync 1037 r
+2011_09_29/2011_09_29_drive_0026_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 4620 r
+2011_09_26/2011_09_26_drive_0011_sync 104 l
+2011_10_03/2011_10_03_drive_0034_sync 127 l
+2011_09_26/2011_09_26_drive_0051_sync 408 l
+2011_09_26/2011_09_26_drive_0061_sync 281 r
+2011_10_03/2011_10_03_drive_0034_sync 1450 r
+2011_09_30/2011_09_30_drive_0028_sync 4419 l
+2011_09_29/2011_09_29_drive_0004_sync 252 l
+2011_09_26/2011_09_26_drive_0005_sync 78 l
+2011_09_30/2011_09_30_drive_0020_sync 125 l
+2011_10_03/2011_10_03_drive_0034_sync 438 r
+2011_09_26/2011_09_26_drive_0087_sync 609 l
+2011_09_30/2011_09_30_drive_0028_sync 1829 r
+2011_09_26/2011_09_26_drive_0018_sync 136 l
+2011_09_30/2011_09_30_drive_0028_sync 2 r
+2011_09_26/2011_09_26_drive_0039_sync 261 r
+2011_09_26/2011_09_26_drive_0001_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 994 l
+2011_10_03/2011_10_03_drive_0042_sync 737 l
+2011_09_30/2011_09_30_drive_0033_sync 1396 r
+2011_09_29/2011_09_29_drive_0004_sync 114 r
+2011_09_30/2011_09_30_drive_0028_sync 3906 l
+2011_09_30/2011_09_30_drive_0028_sync 2810 l
+2011_10_03/2011_10_03_drive_0034_sync 1951 l
+2011_09_30/2011_09_30_drive_0033_sync 1278 r
+2011_09_30/2011_09_30_drive_0028_sync 667 r
+2011_09_26/2011_09_26_drive_0011_sync 32 r
+2011_09_30/2011_09_30_drive_0033_sync 254 l
+2011_10_03/2011_10_03_drive_0034_sync 4645 r
+2011_09_30/2011_09_30_drive_0028_sync 3975 r
+2011_09_26/2011_09_26_drive_0051_sync 2 l
+2011_09_26/2011_09_26_drive_0087_sync 448 r
+2011_09_26/2011_09_26_drive_0018_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 4356 r
+2011_09_26/2011_09_26_drive_0051_sync 55 l
+2011_09_26/2011_09_26_drive_0028_sync 18 l
+2011_09_26/2011_09_26_drive_0051_sync 76 l
+2011_09_30/2011_09_30_drive_0028_sync 3255 l
+2011_09_30/2011_09_30_drive_0028_sync 1921 r
+2011_10_03/2011_10_03_drive_0034_sync 1061 r
+2011_09_26/2011_09_26_drive_0028_sync 212 l
+2011_09_30/2011_09_30_drive_0028_sync 66 l
+2011_09_26/2011_09_26_drive_0087_sync 343 r
+2011_09_30/2011_09_30_drive_0034_sync 1215 l
+2011_09_26/2011_09_26_drive_0015_sync 44 l
+2011_10_03/2011_10_03_drive_0042_sync 179 r
+2011_09_30/2011_09_30_drive_0020_sync 175 r
+2011_10_03/2011_10_03_drive_0034_sync 3426 r
+2011_10_03/2011_10_03_drive_0034_sync 4191 l
+2011_09_26/2011_09_26_drive_0087_sync 650 l
+2011_09_30/2011_09_30_drive_0020_sync 584 l
+2011_09_26/2011_09_26_drive_0070_sync 195 l
+2011_09_30/2011_09_30_drive_0034_sync 511 r
+2011_09_30/2011_09_30_drive_0033_sync 536 r
+2011_09_30/2011_09_30_drive_0028_sync 3463 r
+2011_10_03/2011_10_03_drive_0034_sync 1260 r
+2011_10_03/2011_10_03_drive_0034_sync 2030 r
+2011_09_29/2011_09_29_drive_0004_sync 103 r
+2011_09_26/2011_09_26_drive_0019_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 2796 r
+2011_09_26/2011_09_26_drive_0032_sync 6 r
+2011_09_30/2011_09_30_drive_0028_sync 4509 r
+2011_09_26/2011_09_26_drive_0022_sync 447 r
+2011_10_03/2011_10_03_drive_0042_sync 286 r
+2011_09_26/2011_09_26_drive_0018_sync 4 l
+2011_09_29/2011_09_29_drive_0004_sync 269 r
+2011_09_30/2011_09_30_drive_0033_sync 1402 r
+2011_10_03/2011_10_03_drive_0042_sync 551 l
+2011_10_03/2011_10_03_drive_0034_sync 2548 r
+2011_09_26/2011_09_26_drive_0019_sync 447 l
+2011_09_26/2011_09_26_drive_0014_sync 59 l
+2011_10_03/2011_10_03_drive_0034_sync 2521 l
+2011_09_26/2011_09_26_drive_0051_sync 3 r
+2011_09_30/2011_09_30_drive_0033_sync 1420 r
+2011_09_30/2011_09_30_drive_0028_sync 1639 r
+2011_09_30/2011_09_30_drive_0033_sync 661 r
+2011_10_03/2011_10_03_drive_0042_sync 25 r
+2011_09_26/2011_09_26_drive_0028_sync 230 l
+2011_10_03/2011_10_03_drive_0034_sync 1431 l
+2011_09_26/2011_09_26_drive_0070_sync 40 r
+2011_09_26/2011_09_26_drive_0001_sync 68 r
+2011_09_30/2011_09_30_drive_0033_sync 716 r
+2011_09_29/2011_09_29_drive_0026_sync 98 l
+2011_09_26/2011_09_26_drive_0011_sync 183 r
+2011_10_03/2011_10_03_drive_0034_sync 4457 l
+2011_09_26/2011_09_26_drive_0113_sync 82 r
+2011_09_30/2011_09_30_drive_0033_sync 1496 l
+2011_09_29/2011_09_29_drive_0026_sync 72 l
+2011_09_30/2011_09_30_drive_0020_sync 1049 l
+2011_09_29/2011_09_29_drive_0004_sync 220 r
+2011_09_26/2011_09_26_drive_0039_sync 110 r
+2011_10_03/2011_10_03_drive_0034_sync 1088 r
+2011_09_30/2011_09_30_drive_0028_sync 4273 r
\ No newline at end of file
diff --git a/finetune/Metric3D/training/kitti_json_files/eigen_val.txt b/finetune/Metric3D/training/kitti_json_files/eigen_val.txt
new file mode 100644
index 0000000000000000000000000000000000000000..26a8732a3a148dce7a9eef509f29c9bc2714ce1d
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/eigen_val.txt
@@ -0,0 +1,1776 @@
+2011_09_26/2011_09_26_drive_0011_sync 21 r
+2011_09_26/2011_09_26_drive_0104_sync 120 r
+2011_10_03/2011_10_03_drive_0034_sync 2533 r
+2011_09_30/2011_09_30_drive_0034_sync 778 l
+2011_10_03/2011_10_03_drive_0042_sync 155 l
+2011_09_26/2011_09_26_drive_0039_sync 172 l
+2011_09_30/2011_09_30_drive_0034_sync 485 r
+2011_09_26/2011_09_26_drive_0061_sync 166 l
+2011_09_28/2011_09_28_drive_0001_sync 4 r
+2011_09_26/2011_09_26_drive_0095_sync 84 r
+2011_10_03/2011_10_03_drive_0034_sync 2879 r
+2011_09_30/2011_09_30_drive_0028_sync 2451 l
+2011_09_26/2011_09_26_drive_0011_sync 25 r
+2011_10_03/2011_10_03_drive_0034_sync 2373 l
+2011_09_30/2011_09_30_drive_0028_sync 2303 r
+2011_09_29/2011_09_29_drive_0026_sync 154 l
+2011_09_26/2011_09_26_drive_0022_sync 98 r
+2011_09_30/2011_09_30_drive_0028_sync 3487 r
+2011_09_30/2011_09_30_drive_0034_sync 663 l
+2011_09_26/2011_09_26_drive_0015_sync 0 l
+2011_09_30/2011_09_30_drive_0028_sync 3272 r
+2011_09_30/2011_09_30_drive_0028_sync 771 r
+2011_09_26/2011_09_26_drive_0087_sync 74 l
+2011_09_26/2011_09_26_drive_0035_sync 40 l
+2011_09_30/2011_09_30_drive_0028_sync 4503 r
+2011_09_26/2011_09_26_drive_0061_sync 106 r
+2011_09_26/2011_09_26_drive_0113_sync 75 r
+2011_09_30/2011_09_30_drive_0028_sync 1739 r
+2011_10_03/2011_10_03_drive_0042_sync 563 l
+2011_09_26/2011_09_26_drive_0001_sync 71 l
+2011_10_03/2011_10_03_drive_0034_sync 2662 l
+2011_10_03/2011_10_03_drive_0042_sync 753 r
+2011_10_03/2011_10_03_drive_0034_sync 1289 l
+2011_09_30/2011_09_30_drive_0020_sync 235 l
+2011_10_03/2011_10_03_drive_0034_sync 2879 l
+2011_09_26/2011_09_26_drive_0028_sync 423 l
+2011_10_03/2011_10_03_drive_0034_sync 3091 l
+2011_10_03/2011_10_03_drive_0034_sync 1540 l
+2011_10_03/2011_10_03_drive_0034_sync 4612 r
+2011_10_03/2011_10_03_drive_0042_sync 27 r
+2011_09_26/2011_09_26_drive_0095_sync 1 l
+2011_09_26/2011_09_26_drive_0061_sync 114 r
+2011_10_03/2011_10_03_drive_0034_sync 4592 l
+2011_10_03/2011_10_03_drive_0042_sync 718 l
+2011_09_30/2011_09_30_drive_0033_sync 1531 l
+2011_09_26/2011_09_26_drive_0018_sync 227 r
+2011_09_26/2011_09_26_drive_0022_sync 113 l
+2011_09_30/2011_09_30_drive_0033_sync 77 l
+2011_10_03/2011_10_03_drive_0034_sync 1916 r
+2011_09_30/2011_09_30_drive_0034_sync 420 l
+2011_10_03/2011_10_03_drive_0034_sync 1916 l
+2011_09_26/2011_09_26_drive_0032_sync 65 l
+2011_09_26/2011_09_26_drive_0015_sync 156 r
+2011_09_30/2011_09_30_drive_0028_sync 5096 r
+2011_09_26/2011_09_26_drive_0104_sync 252 l
+2011_09_30/2011_09_30_drive_0034_sync 62 l
+2011_09_30/2011_09_30_drive_0028_sync 4896 l
+2011_09_26/2011_09_26_drive_0022_sync 779 r
+2011_09_26/2011_09_26_drive_0019_sync 224 r
+2011_09_26/2011_09_26_drive_0104_sync 171 l
+2011_09_26/2011_09_26_drive_0019_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 980 l
+2011_09_30/2011_09_30_drive_0034_sync 969 l
+2011_09_30/2011_09_30_drive_0028_sync 3634 l
+2011_10_03/2011_10_03_drive_0034_sync 1212 l
+2011_09_26/2011_09_26_drive_0057_sync 260 l
+2011_09_30/2011_09_30_drive_0028_sync 4656 r
+2011_09_26/2011_09_26_drive_0032_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 1889 l
+2011_09_30/2011_09_30_drive_0028_sync 4804 l
+2011_10_03/2011_10_03_drive_0034_sync 3543 l
+2011_09_26/2011_09_26_drive_0035_sync 119 r
+2011_10_03/2011_10_03_drive_0034_sync 1118 l
+2011_09_30/2011_09_30_drive_0020_sync 389 l
+2011_09_26/2011_09_26_drive_0061_sync 38 l
+2011_09_30/2011_09_30_drive_0028_sync 3426 l
+2011_09_30/2011_09_30_drive_0020_sync 137 r
+2011_09_26/2011_09_26_drive_0051_sync 233 l
+2011_09_30/2011_09_30_drive_0028_sync 2988 r
+2011_09_26/2011_09_26_drive_0060_sync 53 l
+2011_10_03/2011_10_03_drive_0034_sync 2677 r
+2011_09_30/2011_09_30_drive_0028_sync 5143 l
+2011_10_03/2011_10_03_drive_0034_sync 876 l
+2011_10_03/2011_10_03_drive_0034_sync 924 l
+2011_09_30/2011_09_30_drive_0034_sync 110 l
+2011_10_03/2011_10_03_drive_0034_sync 729 r
+2011_10_03/2011_10_03_drive_0042_sync 793 r
+2011_09_26/2011_09_26_drive_0061_sync 246 l
+2011_09_26/2011_09_26_drive_0039_sync 105 r
+2011_09_26/2011_09_26_drive_0087_sync 549 r
+2011_10_03/2011_10_03_drive_0034_sync 3163 r
+2011_09_26/2011_09_26_drive_0001_sync 86 r
+2011_10_03/2011_10_03_drive_0034_sync 112 l
+2011_09_30/2011_09_30_drive_0028_sync 2362 l
+2011_10_03/2011_10_03_drive_0034_sync 1041 r
+2011_10_03/2011_10_03_drive_0034_sync 790 l
+2011_09_30/2011_09_30_drive_0028_sync 1332 r
+2011_09_30/2011_09_30_drive_0028_sync 3574 r
+2011_09_30/2011_09_30_drive_0028_sync 2833 l
+2011_09_26/2011_09_26_drive_0039_sync 254 l
+2011_09_26/2011_09_26_drive_0039_sync 56 l
+2011_09_26/2011_09_26_drive_0022_sync 616 r
+2011_09_30/2011_09_30_drive_0028_sync 4737 r
+2011_09_30/2011_09_30_drive_0028_sync 4174 l
+2011_09_30/2011_09_30_drive_0033_sync 527 r
+2011_09_30/2011_09_30_drive_0028_sync 3537 r
+2011_09_26/2011_09_26_drive_0079_sync 41 l
+2011_09_26/2011_09_26_drive_0022_sync 232 l
+2011_09_30/2011_09_30_drive_0020_sync 1016 l
+2011_09_26/2011_09_26_drive_0113_sync 30 l
+2011_09_30/2011_09_30_drive_0028_sync 1576 r
+2011_09_26/2011_09_26_drive_0019_sync 224 l
+2011_10_03/2011_10_03_drive_0034_sync 548 l
+2011_09_26/2011_09_26_drive_0019_sync 321 l
+2011_10_03/2011_10_03_drive_0042_sync 335 r
+2011_09_30/2011_09_30_drive_0034_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 4424 l
+2011_10_03/2011_10_03_drive_0034_sync 790 r
+2011_10_03/2011_10_03_drive_0034_sync 1037 l
+2011_10_03/2011_10_03_drive_0034_sync 3422 l
+2011_10_03/2011_10_03_drive_0034_sync 2143 l
+2011_10_03/2011_10_03_drive_0034_sync 2004 r
+2011_10_03/2011_10_03_drive_0042_sync 973 l
+2011_10_03/2011_10_03_drive_0034_sync 1889 r
+2011_09_30/2011_09_30_drive_0028_sync 1052 l
+2011_09_26/2011_09_26_drive_0039_sync 149 l
+2011_09_26/2011_09_26_drive_0061_sync 379 l
+2011_09_30/2011_09_30_drive_0028_sync 456 r
+2011_09_30/2011_09_30_drive_0028_sync 1907 r
+2011_09_30/2011_09_30_drive_0020_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 2381 r
+2011_10_03/2011_10_03_drive_0034_sync 1730 l
+2011_09_26/2011_09_26_drive_0032_sync 55 l
+2011_09_30/2011_09_30_drive_0033_sync 1300 r
+2011_10_03/2011_10_03_drive_0042_sync 927 r
+2011_09_26/2011_09_26_drive_0022_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 2830 r
+2011_09_30/2011_09_30_drive_0020_sync 869 l
+2011_10_03/2011_10_03_drive_0034_sync 2895 r
+2011_09_26/2011_09_26_drive_0087_sync 437 r
+2011_09_26/2011_09_26_drive_0032_sync 77 r
+2011_10_03/2011_10_03_drive_0034_sync 3465 l
+2011_09_30/2011_09_30_drive_0028_sync 621 r
+2011_09_30/2011_09_30_drive_0028_sync 3237 l
+2011_09_26/2011_09_26_drive_0011_sync 21 l
+2011_10_03/2011_10_03_drive_0034_sync 4452 r
+2011_09_30/2011_09_30_drive_0034_sync 835 r
+2011_09_30/2011_09_30_drive_0033_sync 1053 l
+2011_09_26/2011_09_26_drive_0060_sync 19 r
+2011_09_26/2011_09_26_drive_0061_sync 274 r
+2011_10_03/2011_10_03_drive_0034_sync 548 r
+2011_09_30/2011_09_30_drive_0028_sync 3487 l
+2011_10_03/2011_10_03_drive_0034_sync 3188 r
+2011_09_30/2011_09_30_drive_0028_sync 3580 r
+2011_10_03/2011_10_03_drive_0034_sync 645 l
+2011_10_03/2011_10_03_drive_0034_sync 2174 l
+2011_09_30/2011_09_30_drive_0033_sync 1053 r
+2011_09_28/2011_09_28_drive_0001_sync 13 r
+2011_09_26/2011_09_26_drive_0061_sync 4 r
+2011_09_26/2011_09_26_drive_0014_sync 41 r
+2011_09_30/2011_09_30_drive_0028_sync 75 l
+2011_09_30/2011_09_30_drive_0033_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 2477 l
+2011_09_30/2011_09_30_drive_0028_sync 4737 l
+2011_10_03/2011_10_03_drive_0042_sync 27 l
+2011_09_30/2011_09_30_drive_0028_sync 1576 l
+2011_10_03/2011_10_03_drive_0034_sync 3003 l
+2011_09_30/2011_09_30_drive_0020_sync 619 l
+2011_09_30/2011_09_30_drive_0034_sync 340 r
+2011_09_30/2011_09_30_drive_0028_sync 1166 l
+2011_09_26/2011_09_26_drive_0035_sync 90 r
+2011_09_30/2011_09_30_drive_0033_sync 641 r
+2011_10_03/2011_10_03_drive_0034_sync 1189 l
+2011_09_30/2011_09_30_drive_0028_sync 934 l
+2011_09_26/2011_09_26_drive_0018_sync 84 r
+2011_09_30/2011_09_30_drive_0033_sync 1045 l
+2011_09_26/2011_09_26_drive_0061_sync 7 l
+2011_09_30/2011_09_30_drive_0028_sync 3820 r
+2011_09_30/2011_09_30_drive_0033_sync 660 l
+2011_09_26/2011_09_26_drive_0060_sync 18 r
+2011_09_26/2011_09_26_drive_0061_sync 607 l
+2011_09_30/2011_09_30_drive_0033_sync 37 r
+2011_09_26/2011_09_26_drive_0001_sync 100 r
+2011_09_30/2011_09_30_drive_0028_sync 961 r
+2011_09_26/2011_09_26_drive_0014_sync 142 r
+2011_09_26/2011_09_26_drive_0061_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 3650 l
+2011_10_03/2011_10_03_drive_0034_sync 2932 l
+2011_09_30/2011_09_30_drive_0020_sync 389 r
+2011_09_26/2011_09_26_drive_0061_sync 600 r
+2011_09_30/2011_09_30_drive_0028_sync 3581 r
+2011_09_30/2011_09_30_drive_0028_sync 2592 r
+2011_09_30/2011_09_30_drive_0028_sync 621 l
+2011_09_29/2011_09_29_drive_0004_sync 81 r
+2011_09_26/2011_09_26_drive_0057_sync 170 r
+2011_09_30/2011_09_30_drive_0028_sync 2920 l
+2011_09_26/2011_09_26_drive_0087_sync 566 l
+2011_09_26/2011_09_26_drive_0028_sync 363 r
+2011_10_03/2011_10_03_drive_0042_sync 974 l
+2011_09_26/2011_09_26_drive_0019_sync 78 l
+2011_09_30/2011_09_30_drive_0028_sync 3669 l
+2011_09_30/2011_09_30_drive_0028_sync 1628 l
+2011_09_26/2011_09_26_drive_0087_sync 437 l
+2011_09_30/2011_09_30_drive_0028_sync 2174 r
+2011_10_03/2011_10_03_drive_0042_sync 1150 l
+2011_09_30/2011_09_30_drive_0028_sync 3408 r
+2011_09_30/2011_09_30_drive_0034_sync 195 l
+2011_09_26/2011_09_26_drive_0005_sync 26 r
+2011_09_26/2011_09_26_drive_0061_sync 521 l
+2011_09_26/2011_09_26_drive_0032_sync 61 l
+2011_09_30/2011_09_30_drive_0033_sync 243 l
+2011_09_30/2011_09_30_drive_0028_sync 456 l
+2011_09_26/2011_09_26_drive_0095_sync 177 r
+2011_10_03/2011_10_03_drive_0034_sync 2360 r
+2011_10_03/2011_10_03_drive_0034_sync 2630 r
+2011_09_29/2011_09_29_drive_0004_sync 224 r
+2011_09_30/2011_09_30_drive_0034_sync 56 l
+2011_09_30/2011_09_30_drive_0034_sync 319 r
+2011_09_29/2011_09_29_drive_0004_sync 17 l
+2011_09_30/2011_09_30_drive_0034_sync 132 l
+2011_09_26/2011_09_26_drive_0051_sync 17 r
+2011_09_26/2011_09_26_drive_0011_sync 181 l
+2011_09_30/2011_09_30_drive_0028_sync 3012 r
+2011_09_26/2011_09_26_drive_0070_sync 67 l
+2011_10_03/2011_10_03_drive_0034_sync 2632 r
+2011_09_26/2011_09_26_drive_0018_sync 227 l
+2011_10_03/2011_10_03_drive_0034_sync 4529 r
+2011_09_26/2011_09_26_drive_0087_sync 617 l
+2011_09_30/2011_09_30_drive_0028_sync 672 r
+2011_09_26/2011_09_26_drive_0051_sync 39 r
+2011_10_03/2011_10_03_drive_0034_sync 2647 r
+2011_09_30/2011_09_30_drive_0034_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 258 r
+2011_10_03/2011_10_03_drive_0034_sync 2221 l
+2011_09_26/2011_09_26_drive_0039_sync 379 r
+2011_10_03/2011_10_03_drive_0042_sync 53 l
+2011_09_30/2011_09_30_drive_0028_sync 4927 l
+2011_10_03/2011_10_03_drive_0034_sync 3079 r
+2011_09_26/2011_09_26_drive_0014_sync 142 l
+2011_09_30/2011_09_30_drive_0028_sync 1634 r
+2011_10_03/2011_10_03_drive_0034_sync 2677 l
+2011_09_30/2011_09_30_drive_0033_sync 687 r
+2011_10_03/2011_10_03_drive_0034_sync 3860 l
+2011_10_03/2011_10_03_drive_0034_sync 2337 l
+2011_09_26/2011_09_26_drive_0095_sync 64 l
+2011_09_26/2011_09_26_drive_0061_sync 579 l
+2011_09_26/2011_09_26_drive_0087_sync 316 l
+2011_09_30/2011_09_30_drive_0020_sync 222 l
+2011_09_26/2011_09_26_drive_0018_sync 15 r
+2011_09_30/2011_09_30_drive_0028_sync 3638 l
+2011_09_26/2011_09_26_drive_0014_sync 256 r
+2011_10_03/2011_10_03_drive_0034_sync 3401 l
+2011_09_26/2011_09_26_drive_0039_sync 291 r
+2011_09_26/2011_09_26_drive_0011_sync 27 r
+2011_10_03/2011_10_03_drive_0042_sync 718 r
+2011_09_30/2011_09_30_drive_0028_sync 5032 l
+2011_09_26/2011_09_26_drive_0087_sync 452 l
+2011_09_26/2011_09_26_drive_0070_sync 198 r
+2011_09_26/2011_09_26_drive_0022_sync 568 l
+2011_10_03/2011_10_03_drive_0034_sync 1873 r
+2011_09_26/2011_09_26_drive_0028_sync 48 l
+2011_09_26/2011_09_26_drive_0028_sync 48 r
+2011_09_30/2011_09_30_drive_0028_sync 4534 l
+2011_10_03/2011_10_03_drive_0034_sync 2381 l
+2011_09_30/2011_09_30_drive_0028_sync 4998 r
+2011_09_26/2011_09_26_drive_0095_sync 28 r
+2011_09_30/2011_09_30_drive_0028_sync 4534 r
+2011_09_30/2011_09_30_drive_0028_sync 3647 r
+2011_10_03/2011_10_03_drive_0034_sync 2105 l
+2011_09_26/2011_09_26_drive_0061_sync 420 r
+2011_09_30/2011_09_30_drive_0020_sync 320 l
+2011_09_26/2011_09_26_drive_0019_sync 78 r
+2011_09_30/2011_09_30_drive_0028_sync 2862 r
+2011_09_30/2011_09_30_drive_0034_sync 485 l
+2011_09_26/2011_09_26_drive_0104_sync 232 l
+2011_09_30/2011_09_30_drive_0028_sync 4085 l
+2011_09_26/2011_09_26_drive_0018_sync 234 l
+2011_10_03/2011_10_03_drive_0042_sync 793 l
+2011_09_30/2011_09_30_drive_0028_sync 3625 l
+2011_09_26/2011_09_26_drive_0061_sync 423 l
+2011_09_29/2011_09_29_drive_0026_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 2439 r
+2011_09_26/2011_09_26_drive_0061_sync 684 l
+2011_09_30/2011_09_30_drive_0028_sync 4825 r
+2011_10_03/2011_10_03_drive_0034_sync 1523 r
+2011_10_03/2011_10_03_drive_0034_sync 1679 l
+2011_09_30/2011_09_30_drive_0034_sync 167 l
+2011_09_26/2011_09_26_drive_0022_sync 614 r
+2011_09_26/2011_09_26_drive_0061_sync 637 l
+2011_09_26/2011_09_26_drive_0005_sync 26 l
+2011_09_30/2011_09_30_drive_0028_sync 4048 r
+2011_09_30/2011_09_30_drive_0020_sync 608 r
+2011_09_26/2011_09_26_drive_0051_sync 231 r
+2011_09_30/2011_09_30_drive_0028_sync 4562 l
+2011_09_26/2011_09_26_drive_0070_sync 280 r
+2011_09_26/2011_09_26_drive_0051_sync 322 r
+2011_09_30/2011_09_30_drive_0033_sync 660 r
+2011_09_30/2011_09_30_drive_0020_sync 942 l
+2011_10_03/2011_10_03_drive_0034_sync 2461 r
+2011_09_30/2011_09_30_drive_0034_sync 11 r
+2011_09_30/2011_09_30_drive_0028_sync 3766 l
+2011_09_30/2011_09_30_drive_0028_sync 4813 l
+2011_09_29/2011_09_29_drive_0004_sync 321 l
+2011_09_26/2011_09_26_drive_0091_sync 258 r
+2011_09_26/2011_09_26_drive_0019_sync 280 l
+2011_09_26/2011_09_26_drive_0039_sync 151 l
+2011_09_30/2011_09_30_drive_0028_sync 2738 l
+2011_09_26/2011_09_26_drive_0014_sync 22 l
+2011_10_03/2011_10_03_drive_0034_sync 4627 l
+2011_09_26/2011_09_26_drive_0051_sync 17 l
+2011_09_26/2011_09_26_drive_0019_sync 288 l
+2011_10_03/2011_10_03_drive_0042_sync 512 l
+2011_09_26/2011_09_26_drive_0104_sync 227 r
+2011_10_03/2011_10_03_drive_0034_sync 2360 l
+2011_09_30/2011_09_30_drive_0028_sync 993 l
+2011_09_26/2011_09_26_drive_0035_sync 119 l
+2011_09_26/2011_09_26_drive_0104_sync 270 r
+2011_10_03/2011_10_03_drive_0034_sync 3422 r
+2011_09_30/2011_09_30_drive_0028_sync 62 r
+2011_09_26/2011_09_26_drive_0018_sync 34 l
+2011_09_26/2011_09_26_drive_0001_sync 3 r
+2011_09_30/2011_09_30_drive_0028_sync 4626 r
+2011_09_26/2011_09_26_drive_0051_sync 433 l
+2011_09_30/2011_09_30_drive_0028_sync 2759 l
+2011_09_30/2011_09_30_drive_0028_sync 2363 r
+2011_09_26/2011_09_26_drive_0014_sync 46 r
+2011_09_30/2011_09_30_drive_0028_sync 4053 r
+2011_09_26/2011_09_26_drive_0022_sync 400 l
+2011_09_26/2011_09_26_drive_0028_sync 12 l
+2011_09_30/2011_09_30_drive_0028_sync 3330 r
+2011_09_26/2011_09_26_drive_0070_sync 175 r
+2011_09_26/2011_09_26_drive_0061_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 3860 l
+2011_09_26/2011_09_26_drive_0014_sync 281 l
+2011_10_03/2011_10_03_drive_0034_sync 3731 r
+2011_09_26/2011_09_26_drive_0061_sync 544 l
+2011_09_30/2011_09_30_drive_0028_sync 3281 l
+2011_10_03/2011_10_03_drive_0034_sync 3277 r
+2011_10_03/2011_10_03_drive_0042_sync 676 r
+2011_09_30/2011_09_30_drive_0028_sync 514 l
+2011_10_03/2011_10_03_drive_0042_sync 458 l
+2011_09_30/2011_09_30_drive_0028_sync 588 r
+2011_09_30/2011_09_30_drive_0028_sync 4117 l
+2011_09_30/2011_09_30_drive_0028_sync 822 l
+2011_09_30/2011_09_30_drive_0028_sync 3625 r
+2011_09_30/2011_09_30_drive_0028_sync 1199 r
+2011_09_26/2011_09_26_drive_0104_sync 272 l
+2011_09_30/2011_09_30_drive_0020_sync 941 r
+2011_10_03/2011_10_03_drive_0042_sync 934 r
+2011_10_03/2011_10_03_drive_0034_sync 395 l
+2011_09_26/2011_09_26_drive_0011_sync 224 r
+2011_09_30/2011_09_30_drive_0034_sync 422 r
+2011_10_03/2011_10_03_drive_0042_sync 979 r
+2011_10_03/2011_10_03_drive_0034_sync 3367 r
+2011_09_26/2011_09_26_drive_0087_sync 605 l
+2011_09_30/2011_09_30_drive_0034_sync 467 r
+2011_10_03/2011_10_03_drive_0034_sync 2675 l
+2011_09_30/2011_09_30_drive_0028_sync 2382 l
+2011_09_26/2011_09_26_drive_0022_sync 227 l
+2011_10_03/2011_10_03_drive_0034_sync 3208 r
+2011_09_26/2011_09_26_drive_0091_sync 165 r
+2011_09_26/2011_09_26_drive_0087_sync 31 l
+2011_09_26/2011_09_26_drive_0005_sync 47 l
+2011_10_03/2011_10_03_drive_0034_sync 3163 l
+2011_09_26/2011_09_26_drive_0032_sync 316 l
+2011_09_26/2011_09_26_drive_0061_sync 437 r
+2011_09_26/2011_09_26_drive_0079_sync 59 r
+2011_09_30/2011_09_30_drive_0020_sync 13 l
+2011_09_30/2011_09_30_drive_0028_sync 461 l
+2011_09_26/2011_09_26_drive_0032_sync 293 r
+2011_09_30/2011_09_30_drive_0028_sync 730 l
+2011_10_03/2011_10_03_drive_0034_sync 2294 r
+2011_09_26/2011_09_26_drive_0070_sync 280 l
+2011_09_30/2011_09_30_drive_0034_sync 1000 r
+2011_10_03/2011_10_03_drive_0042_sync 1141 r
+2011_09_30/2011_09_30_drive_0028_sync 3114 r
+2011_10_03/2011_10_03_drive_0034_sync 1994 r
+2011_09_26/2011_09_26_drive_0051_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 876 r
+2011_09_26/2011_09_26_drive_0051_sync 386 r
+2011_09_26/2011_09_26_drive_0087_sync 605 r
+2011_09_30/2011_09_30_drive_0028_sync 4626 l
+2011_10_03/2011_10_03_drive_0034_sync 3091 r
+2011_09_30/2011_09_30_drive_0028_sync 3446 l
+2011_09_30/2011_09_30_drive_0028_sync 4048 l
+2011_09_26/2011_09_26_drive_0028_sync 323 r
+2011_10_03/2011_10_03_drive_0034_sync 264 r
+2011_09_30/2011_09_30_drive_0028_sync 1137 l
+2011_10_03/2011_10_03_drive_0042_sync 85 l
+2011_10_03/2011_10_03_drive_0034_sync 2221 r
+2011_09_26/2011_09_26_drive_0011_sync 6 r
+2011_09_26/2011_09_26_drive_0087_sync 546 l
+2011_10_03/2011_10_03_drive_0034_sync 3635 r
+2011_09_26/2011_09_26_drive_0019_sync 269 r
+2011_09_26/2011_09_26_drive_0060_sync 16 l
+2011_10_03/2011_10_03_drive_0034_sync 2766 l
+2011_09_30/2011_09_30_drive_0028_sync 1052 r
+2011_09_30/2011_09_30_drive_0028_sync 1404 l
+2011_10_03/2011_10_03_drive_0034_sync 2051 r
+2011_09_30/2011_09_30_drive_0020_sync 1017 r
+2011_10_03/2011_10_03_drive_0034_sync 2994 r
+2011_09_26/2011_09_26_drive_0011_sync 171 l
+2011_09_30/2011_09_30_drive_0034_sync 924 r
+2011_09_26/2011_09_26_drive_0039_sync 105 l
+2011_09_26/2011_09_26_drive_0039_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 916 r
+2011_09_30/2011_09_30_drive_0028_sync 3178 l
+2011_09_30/2011_09_30_drive_0028_sync 2988 l
+2011_09_30/2011_09_30_drive_0028_sync 4300 l
+2011_09_26/2011_09_26_drive_0001_sync 71 r
+2011_09_30/2011_09_30_drive_0028_sync 4562 r
+2011_10_03/2011_10_03_drive_0034_sync 1070 l
+2011_10_03/2011_10_03_drive_0042_sync 656 r
+2011_09_30/2011_09_30_drive_0034_sync 778 r
+2011_10_03/2011_10_03_drive_0034_sync 680 r
+2011_10_03/2011_10_03_drive_0042_sync 1151 r
+2011_09_30/2011_09_30_drive_0028_sync 4053 l
+2011_09_26/2011_09_26_drive_0061_sync 8 r
+2011_09_26/2011_09_26_drive_0061_sync 306 r
+2011_09_26/2011_09_26_drive_0039_sync 72 l
+2011_09_26/2011_09_26_drive_0022_sync 614 l
+2011_09_26/2011_09_26_drive_0087_sync 31 r
+2011_10_03/2011_10_03_drive_0042_sync 634 l
+2011_09_26/2011_09_26_drive_0022_sync 480 l
+2011_09_29/2011_09_29_drive_0026_sync 154 r
+2011_10_03/2011_10_03_drive_0034_sync 3274 r
+2011_09_26/2011_09_26_drive_0057_sync 80 r
+2011_09_30/2011_09_30_drive_0028_sync 747 l
+2011_10_03/2011_10_03_drive_0034_sync 654 r
+2011_09_30/2011_09_30_drive_0028_sync 1348 r
+2011_09_26/2011_09_26_drive_0070_sync 150 l
+2011_10_03/2011_10_03_drive_0034_sync 1998 l
+2011_09_30/2011_09_30_drive_0033_sync 267 l
+2011_09_30/2011_09_30_drive_0028_sync 1397 l
+2011_10_03/2011_10_03_drive_0042_sync 85 r
+2011_09_30/2011_09_30_drive_0033_sync 1400 r
+2011_09_30/2011_09_30_drive_0034_sync 528 r
+2011_09_29/2011_09_29_drive_0004_sync 274 l
+2011_09_30/2011_09_30_drive_0033_sync 613 r
+2011_09_26/2011_09_26_drive_0061_sync 306 l
+2011_09_26/2011_09_26_drive_0061_sync 130 l
+2011_09_30/2011_09_30_drive_0028_sync 966 r
+2011_09_30/2011_09_30_drive_0028_sync 1593 l
+2011_09_30/2011_09_30_drive_0033_sync 1573 r
+2011_10_03/2011_10_03_drive_0034_sync 2477 l
+2011_09_26/2011_09_26_drive_0091_sync 190 l
+2011_09_30/2011_09_30_drive_0028_sync 329 l
+2011_10_03/2011_10_03_drive_0034_sync 2460 l
+2011_10_03/2011_10_03_drive_0034_sync 3450 r
+2011_09_30/2011_09_30_drive_0028_sync 2133 r
+2011_09_26/2011_09_26_drive_0019_sync 280 r
+2011_09_26/2011_09_26_drive_0005_sync 142 r
+2011_09_30/2011_09_30_drive_0028_sync 1145 r
+2011_09_30/2011_09_30_drive_0033_sync 641 l
+2011_10_03/2011_10_03_drive_0042_sync 656 l
+2011_09_26/2011_09_26_drive_0019_sync 457 r
+2011_09_26/2011_09_26_drive_0091_sync 311 r
+2011_09_30/2011_09_30_drive_0033_sync 617 l
+2011_09_30/2011_09_30_drive_0028_sync 2630 l
+2011_09_26/2011_09_26_drive_0022_sync 472 r
+2011_09_26/2011_09_26_drive_0011_sync 42 r
+2011_09_30/2011_09_30_drive_0020_sync 869 r
+2011_09_30/2011_09_30_drive_0034_sync 65 l
+2011_09_26/2011_09_26_drive_0091_sync 190 r
+2011_09_26/2011_09_26_drive_0015_sync 51 r
+2011_10_03/2011_10_03_drive_0034_sync 2143 r
+2011_09_30/2011_09_30_drive_0033_sync 934 r
+2011_09_30/2011_09_30_drive_0028_sync 2133 l
+2011_09_30/2011_09_30_drive_0028_sync 993 r
+2011_09_26/2011_09_26_drive_0017_sync 102 l
+2011_09_26/2011_09_26_drive_0011_sync 6 l
+2011_09_26/2011_09_26_drive_0061_sync 142 r
+2011_09_30/2011_09_30_drive_0034_sync 282 l
+2011_10_03/2011_10_03_drive_0034_sync 3327 l
+2011_10_03/2011_10_03_drive_0034_sync 3296 r
+2011_09_30/2011_09_30_drive_0033_sync 1557 l
+2011_10_03/2011_10_03_drive_0034_sync 2473 l
+2011_09_26/2011_09_26_drive_0001_sync 75 r
+2011_10_03/2011_10_03_drive_0034_sync 1317 r
+2011_09_30/2011_09_30_drive_0034_sync 142 r
+2011_09_26/2011_09_26_drive_0087_sync 486 l
+2011_10_03/2011_10_03_drive_0042_sync 1169 l
+2011_09_30/2011_09_30_drive_0034_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 463 l
+2011_09_30/2011_09_30_drive_0034_sync 454 r
+2011_10_03/2011_10_03_drive_0034_sync 2501 l
+2011_09_30/2011_09_30_drive_0033_sync 1020 r
+2011_09_26/2011_09_26_drive_0014_sync 195 l
+2011_10_03/2011_10_03_drive_0034_sync 1041 l
+2011_10_03/2011_10_03_drive_0034_sync 3355 r
+2011_09_26/2011_09_26_drive_0039_sync 336 r
+2011_09_30/2011_09_30_drive_0028_sync 528 l
+2011_09_26/2011_09_26_drive_0104_sync 73 l
+2011_09_30/2011_09_30_drive_0020_sync 942 r
+2011_09_26/2011_09_26_drive_0032_sync 66 r
+2011_09_26/2011_09_26_drive_0028_sync 66 l
+2011_10_03/2011_10_03_drive_0034_sync 3355 l
+2011_09_26/2011_09_26_drive_0087_sync 636 r
+2011_09_26/2011_09_26_drive_0035_sync 29 r
+2011_09_26/2011_09_26_drive_0091_sync 258 l
+2011_10_03/2011_10_03_drive_0034_sync 3860 r
+2011_10_03/2011_10_03_drive_0034_sync 3777 r
+2011_09_26/2011_09_26_drive_0039_sync 249 l
+2011_09_30/2011_09_30_drive_0028_sync 966 l
+2011_09_26/2011_09_26_drive_0057_sync 202 l
+2011_09_26/2011_09_26_drive_0061_sync 24 l
+2011_09_26/2011_09_26_drive_0087_sync 105 l
+2011_10_03/2011_10_03_drive_0042_sync 753 l
+2011_09_30/2011_09_30_drive_0028_sync 868 r
+2011_09_30/2011_09_30_drive_0034_sync 494 r
+2011_09_30/2011_09_30_drive_0028_sync 2477 r
+2011_09_30/2011_09_30_drive_0034_sync 1202 r
+2011_09_26/2011_09_26_drive_0017_sync 29 r
+2011_09_26/2011_09_26_drive_0087_sync 566 r
+2011_09_26/2011_09_26_drive_0039_sync 19 l
+2011_09_30/2011_09_30_drive_0028_sync 1332 l
+2011_09_26/2011_09_26_drive_0079_sync 41 r
+2011_09_26/2011_09_26_drive_0057_sync 9 r
+2011_10_03/2011_10_03_drive_0034_sync 2675 r
+2011_09_30/2011_09_30_drive_0033_sync 1149 l
+2011_09_30/2011_09_30_drive_0028_sync 4998 l
+2011_09_30/2011_09_30_drive_0028_sync 2587 l
+2011_09_26/2011_09_26_drive_0022_sync 471 r
+2011_09_26/2011_09_26_drive_0087_sync 725 l
+2011_09_26/2011_09_26_drive_0035_sync 58 l
+2011_09_30/2011_09_30_drive_0028_sync 4283 r
+2011_09_30/2011_09_30_drive_0028_sync 3760 r
+2011_09_30/2011_09_30_drive_0028_sync 3820 l
+2011_09_30/2011_09_30_drive_0028_sync 357 l
+2011_09_26/2011_09_26_drive_0087_sync 607 l
+2011_10_03/2011_10_03_drive_0034_sync 3450 l
+2011_09_30/2011_09_30_drive_0033_sync 912 l
+2011_09_26/2011_09_26_drive_0005_sync 47 r
+2011_09_26/2011_09_26_drive_0039_sync 386 r
+2011_09_26/2011_09_26_drive_0070_sync 343 r
+2011_10_03/2011_10_03_drive_0042_sync 294 l
+2011_09_30/2011_09_30_drive_0028_sync 1561 r
+2011_09_26/2011_09_26_drive_0057_sync 55 l
+2011_09_26/2011_09_26_drive_0015_sync 11 l
+2011_09_30/2011_09_30_drive_0028_sync 1573 l
+2011_09_29/2011_09_29_drive_0004_sync 2 l
+2011_10_03/2011_10_03_drive_0034_sync 2730 l
+2011_09_26/2011_09_26_drive_0061_sync 437 l
+2011_09_26/2011_09_26_drive_0070_sync 67 r
+2011_09_26/2011_09_26_drive_0015_sync 11 r
+2011_09_26/2011_09_26_drive_0091_sync 226 l
+2011_09_26/2011_09_26_drive_0022_sync 746 l
+2011_09_29/2011_09_29_drive_0004_sync 81 l
+2011_09_30/2011_09_30_drive_0028_sync 4254 r
+2011_09_30/2011_09_30_drive_0028_sync 2611 l
+2011_09_26/2011_09_26_drive_0051_sync 386 l
+2011_09_30/2011_09_30_drive_0034_sync 663 r
+2011_09_26/2011_09_26_drive_0022_sync 252 l
+2011_09_30/2011_09_30_drive_0028_sync 2920 r
+2011_09_30/2011_09_30_drive_0028_sync 1168 r
+2011_09_26/2011_09_26_drive_0095_sync 95 r
+2011_09_26/2011_09_26_drive_0011_sync 122 l
+2011_10_03/2011_10_03_drive_0034_sync 1118 r
+2011_09_30/2011_09_30_drive_0020_sync 165 r
+2011_09_30/2011_09_30_drive_0034_sync 835 l
+2011_09_30/2011_09_30_drive_0028_sync 838 l
+2011_09_30/2011_09_30_drive_0033_sync 738 r
+2011_09_26/2011_09_26_drive_0022_sync 480 r
+2011_09_26/2011_09_26_drive_0022_sync 656 l
+2011_09_30/2011_09_30_drive_0033_sync 687 l
+2011_09_30/2011_09_30_drive_0020_sync 392 l
+2011_09_30/2011_09_30_drive_0028_sync 4424 r
+2011_10_03/2011_10_03_drive_0034_sync 4612 l
+2011_09_30/2011_09_30_drive_0028_sync 528 r
+2011_10_03/2011_10_03_drive_0042_sync 807 r
+2011_09_30/2011_09_30_drive_0028_sync 5066 l
+2011_10_03/2011_10_03_drive_0034_sync 3296 l
+2011_09_26/2011_09_26_drive_0028_sync 44 l
+2011_10_03/2011_10_03_drive_0034_sync 916 l
+2011_09_30/2011_09_30_drive_0034_sync 1009 l
+2011_09_26/2011_09_26_drive_0011_sync 224 l
+2011_10_03/2011_10_03_drive_0034_sync 2769 l
+2011_09_30/2011_09_30_drive_0034_sync 454 l
+2011_09_26/2011_09_26_drive_0091_sync 165 l
+2011_09_30/2011_09_30_drive_0033_sync 1020 l
+2011_09_26/2011_09_26_drive_0091_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 1115 l
+2011_09_26/2011_09_26_drive_0015_sync 108 r
+2011_10_03/2011_10_03_drive_0042_sync 787 l
+2011_10_03/2011_10_03_drive_0034_sync 4117 r
+2011_09_26/2011_09_26_drive_0095_sync 138 l
+2011_09_30/2011_09_30_drive_0033_sync 216 l
+2011_09_26/2011_09_26_drive_0051_sync 413 l
+2011_09_26/2011_09_26_drive_0014_sync 281 r
+2011_09_26/2011_09_26_drive_0032_sync 66 l
+2011_09_30/2011_09_30_drive_0028_sync 4337 r
+2011_09_29/2011_09_29_drive_0004_sync 57 l
+2011_09_30/2011_09_30_drive_0028_sync 2941 r
+2011_10_03/2011_10_03_drive_0042_sync 1053 r
+2011_09_26/2011_09_26_drive_0051_sync 37 r
+2011_10_03/2011_10_03_drive_0034_sync 4057 l
+2011_09_30/2011_09_30_drive_0028_sync 3114 l
+2011_09_30/2011_09_30_drive_0028_sync 2295 l
+2011_09_26/2011_09_26_drive_0014_sync 195 r
+2011_10_03/2011_10_03_drive_0034_sync 4057 r
+2011_09_26/2011_09_26_drive_0019_sync 112 r
+2011_09_26/2011_09_26_drive_0061_sync 518 r
+2011_10_03/2011_10_03_drive_0042_sync 175 l
+2011_09_26/2011_09_26_drive_0070_sync 8 r
+2011_09_26/2011_09_26_drive_0057_sync 276 r
+2011_10_03/2011_10_03_drive_0034_sync 130 r
+2011_09_30/2011_09_30_drive_0028_sync 2985 l
+2011_09_30/2011_09_30_drive_0028_sync 2076 r
+2011_10_03/2011_10_03_drive_0034_sync 463 r
+2011_09_26/2011_09_26_drive_0028_sync 65 l
+2011_10_03/2011_10_03_drive_0034_sync 3882 l
+2011_10_03/2011_10_03_drive_0034_sync 2401 l
+2011_10_03/2011_10_03_drive_0034_sync 3394 l
+2011_10_03/2011_10_03_drive_0034_sync 3628 r
+2011_09_30/2011_09_30_drive_0028_sync 5000 r
+2011_09_26/2011_09_26_drive_0087_sync 377 r
+2011_10_03/2011_10_03_drive_0034_sync 2253 l
+2011_10_03/2011_10_03_drive_0034_sync 4400 r
+2011_09_26/2011_09_26_drive_0019_sync 112 l
+2011_09_30/2011_09_30_drive_0033_sync 527 l
+2011_09_30/2011_09_30_drive_0028_sync 1801 r
+2011_09_30/2011_09_30_drive_0020_sync 13 r
+2011_09_26/2011_09_26_drive_0051_sync 175 r
+2011_09_26/2011_09_26_drive_0104_sync 227 l
+2011_09_26/2011_09_26_drive_0015_sync 61 r
+2011_10_03/2011_10_03_drive_0034_sync 4570 r
+2011_10_03/2011_10_03_drive_0034_sync 3735 l
+2011_09_26/2011_09_26_drive_0057_sync 90 l
+2011_09_30/2011_09_30_drive_0028_sync 1930 r
+2011_10_03/2011_10_03_drive_0034_sync 4288 l
+2011_10_03/2011_10_03_drive_0034_sync 955 r
+2011_09_30/2011_09_30_drive_0028_sync 1021 l
+2011_09_26/2011_09_26_drive_0070_sync 77 r
+2011_09_26/2011_09_26_drive_0061_sync 166 r
+2011_09_26/2011_09_26_drive_0011_sync 181 r
+2011_09_26/2011_09_26_drive_0001_sync 3 l
+2011_10_03/2011_10_03_drive_0042_sync 830 r
+2011_10_03/2011_10_03_drive_0034_sync 1679 r
+2011_09_26/2011_09_26_drive_0011_sync 27 l
+2011_09_30/2011_09_30_drive_0020_sync 715 r
+2011_09_26/2011_09_26_drive_0087_sync 72 l
+2011_09_26/2011_09_26_drive_0032_sync 148 r
+2011_09_30/2011_09_30_drive_0020_sync 696 l
+2011_09_26/2011_09_26_drive_0091_sync 235 l
+2011_10_03/2011_10_03_drive_0034_sync 1189 r
+2011_09_26/2011_09_26_drive_0057_sync 180 l
+2011_09_26/2011_09_26_drive_0070_sync 8 l
+2011_09_30/2011_09_30_drive_0028_sync 3860 r
+2011_09_30/2011_09_30_drive_0028_sync 2426 r
+2011_09_30/2011_09_30_drive_0033_sync 738 l
+2011_09_30/2011_09_30_drive_0028_sync 3638 r
+2011_09_30/2011_09_30_drive_0033_sync 424 l
+2011_09_26/2011_09_26_drive_0039_sync 104 r
+2011_10_03/2011_10_03_drive_0034_sync 2244 l
+2011_09_26/2011_09_26_drive_0022_sync 779 l
+2011_09_26/2011_09_26_drive_0017_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 425 l
+2011_09_30/2011_09_30_drive_0028_sync 85 r
+2011_09_30/2011_09_30_drive_0020_sync 839 l
+2011_09_26/2011_09_26_drive_0104_sync 277 l
+2011_10_03/2011_10_03_drive_0042_sync 204 r
+2011_09_30/2011_09_30_drive_0033_sync 309 r
+2011_09_30/2011_09_30_drive_0028_sync 2904 l
+2011_10_03/2011_10_03_drive_0034_sync 2730 r
+2011_09_26/2011_09_26_drive_0019_sync 321 r
+2011_09_26/2011_09_26_drive_0032_sync 77 l
+2011_09_30/2011_09_30_drive_0034_sync 65 r
+2011_10_03/2011_10_03_drive_0042_sync 819 r
+2011_10_03/2011_10_03_drive_0034_sync 2501 r
+2011_09_26/2011_09_26_drive_0011_sync 122 r
+2011_09_26/2011_09_26_drive_0039_sync 227 r
+2011_09_26/2011_09_26_drive_0087_sync 370 r
+2011_09_30/2011_09_30_drive_0028_sync 3272 l
+2011_09_26/2011_09_26_drive_0051_sync 321 l
+2011_09_30/2011_09_30_drive_0020_sync 347 r
+2011_09_26/2011_09_26_drive_0019_sync 288 r
+2011_09_30/2011_09_30_drive_0028_sync 2382 r
+2011_09_26/2011_09_26_drive_0087_sync 661 l
+2011_09_30/2011_09_30_drive_0033_sync 1400 l
+2011_10_03/2011_10_03_drive_0034_sync 4570 l
+2011_09_26/2011_09_26_drive_0032_sync 195 l
+2011_09_26/2011_09_26_drive_0022_sync 615 r
+2011_09_26/2011_09_26_drive_0014_sync 274 r
+2011_09_30/2011_09_30_drive_0028_sync 4283 l
+2011_10_03/2011_10_03_drive_0034_sync 2467 r
+2011_09_26/2011_09_26_drive_0095_sync 1 r
+2011_09_30/2011_09_30_drive_0028_sync 771 l
+2011_09_30/2011_09_30_drive_0028_sync 1376 l
+2011_09_30/2011_09_30_drive_0028_sync 1634 l
+2011_10_03/2011_10_03_drive_0034_sync 1811 l
+2011_09_26/2011_09_26_drive_0087_sync 72 r
+2011_10_03/2011_10_03_drive_0034_sync 2410 l
+2011_09_30/2011_09_30_drive_0028_sync 980 r
+2011_09_30/2011_09_30_drive_0033_sync 342 r
+2011_09_26/2011_09_26_drive_0087_sync 628 r
+2011_09_30/2011_09_30_drive_0028_sync 3408 l
+2011_09_26/2011_09_26_drive_0057_sync 123 l
+2011_09_30/2011_09_30_drive_0028_sync 4207 l
+2011_10_03/2011_10_03_drive_0042_sync 1154 l
+2011_09_30/2011_09_30_drive_0020_sync 90 r
+2011_09_26/2011_09_26_drive_0022_sync 24 l
+2011_10_03/2011_10_03_drive_0034_sync 3005 l
+2011_10_03/2011_10_03_drive_0042_sync 672 l
+2011_09_26/2011_09_26_drive_0014_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 5000 l
+2011_10_03/2011_10_03_drive_0034_sync 3978 l
+2011_09_30/2011_09_30_drive_0034_sync 780 r
+2011_09_30/2011_09_30_drive_0028_sync 838 r
+2011_09_26/2011_09_26_drive_0061_sync 579 r
+2011_09_26/2011_09_26_drive_0087_sync 187 l
+2011_09_30/2011_09_30_drive_0028_sync 3925 r
+2011_09_30/2011_09_30_drive_0033_sync 1116 r
+2011_09_26/2011_09_26_drive_0051_sync 399 l
+2011_09_30/2011_09_30_drive_0033_sync 13 r
+2011_09_26/2011_09_26_drive_0028_sync 211 l
+2011_09_30/2011_09_30_drive_0028_sync 1021 r
+2011_09_30/2011_09_30_drive_0028_sync 2833 r
+2011_09_30/2011_09_30_drive_0020_sync 347 l
+2011_09_30/2011_09_30_drive_0033_sync 1045 r
+2011_09_26/2011_09_26_drive_0035_sync 84 r
+2011_09_30/2011_09_30_drive_0028_sync 669 r
+2011_09_26/2011_09_26_drive_0087_sync 182 l
+2011_09_26/2011_09_26_drive_0032_sync 385 r
+2011_10_03/2011_10_03_drive_0034_sync 1517 l
+2011_10_03/2011_10_03_drive_0042_sync 1154 r
+2011_10_03/2011_10_03_drive_0042_sync 571 l
+2011_10_03/2011_10_03_drive_0042_sync 1169 r
+2011_09_30/2011_09_30_drive_0020_sync 190 r
+2011_09_26/2011_09_26_drive_0104_sync 279 l
+2011_09_30/2011_09_30_drive_0028_sync 1450 r
+2011_09_26/2011_09_26_drive_0060_sync 45 l
+2011_09_30/2011_09_30_drive_0033_sync 76 l
+2011_09_26/2011_09_26_drive_0022_sync 615 l
+2011_09_30/2011_09_30_drive_0028_sync 967 r
+2011_10_03/2011_10_03_drive_0034_sync 4149 l
+2011_09_30/2011_09_30_drive_0034_sync 1000 l
+2011_09_30/2011_09_30_drive_0028_sync 3580 l
+2011_09_30/2011_09_30_drive_0028_sync 861 l
+2011_09_26/2011_09_26_drive_0060_sync 16 r
+2011_10_03/2011_10_03_drive_0034_sync 2769 r
+2011_09_26/2011_09_26_drive_0039_sync 379 l
+2011_09_30/2011_09_30_drive_0028_sync 2376 l
+2011_09_30/2011_09_30_drive_0034_sync 769 r
+2011_10_03/2011_10_03_drive_0034_sync 130 l
+2011_09_26/2011_09_26_drive_0014_sync 219 r
+2011_09_28/2011_09_28_drive_0001_sync 95 l
+2011_10_03/2011_10_03_drive_0042_sync 580 l
+2011_09_30/2011_09_30_drive_0028_sync 4337 l
+2011_09_30/2011_09_30_drive_0028_sync 4403 l
+2011_09_26/2011_09_26_drive_0022_sync 245 l
+2011_10_03/2011_10_03_drive_0034_sync 3394 r
+2011_09_30/2011_09_30_drive_0034_sync 703 l
+2011_10_03/2011_10_03_drive_0034_sync 3944 r
+2011_10_03/2011_10_03_drive_0034_sync 1811 r
+2011_09_30/2011_09_30_drive_0020_sync 339 r
+2011_10_03/2011_10_03_drive_0042_sync 244 r
+2011_09_26/2011_09_26_drive_0104_sync 120 l
+2011_09_30/2011_09_30_drive_0028_sync 4896 r
+2011_10_03/2011_10_03_drive_0034_sync 3926 l
+2011_10_03/2011_10_03_drive_0042_sync 696 l
+2011_10_03/2011_10_03_drive_0042_sync 851 l
+2011_09_26/2011_09_26_drive_0019_sync 32 l
+2011_09_26/2011_09_26_drive_0001_sync 0 r
+2011_10_03/2011_10_03_drive_0034_sync 2051 l
+2011_09_30/2011_09_30_drive_0028_sync 2879 r
+2011_09_26/2011_09_26_drive_0104_sync 279 r
+2011_09_30/2011_09_30_drive_0028_sync 3151 l
+2011_09_26/2011_09_26_drive_0018_sync 37 r
+2011_09_30/2011_09_30_drive_0034_sync 441 r
+2011_09_30/2011_09_30_drive_0033_sync 31 l
+2011_09_26/2011_09_26_drive_0070_sync 350 l
+2011_10_03/2011_10_03_drive_0034_sync 289 r
+2011_10_03/2011_10_03_drive_0034_sync 521 r
+2011_09_26/2011_09_26_drive_0019_sync 32 r
+2011_09_26/2011_09_26_drive_0070_sync 343 l
+2011_09_26/2011_09_26_drive_0032_sync 43 r
+2011_10_03/2011_10_03_drive_0034_sync 1540 r
+2011_09_26/2011_09_26_drive_0061_sync 673 l
+2011_09_26/2011_09_26_drive_0015_sync 125 r
+2011_09_30/2011_09_30_drive_0028_sync 4369 r
+2011_09_30/2011_09_30_drive_0028_sync 2985 r
+2011_10_03/2011_10_03_drive_0042_sync 455 r
+2011_09_30/2011_09_30_drive_0033_sync 583 r
+2011_09_26/2011_09_26_drive_0028_sync 342 r
+2011_09_30/2011_09_30_drive_0028_sync 961 l
+2011_10_03/2011_10_03_drive_0042_sync 512 r
+2011_09_29/2011_09_29_drive_0004_sync 321 r
+2011_09_30/2011_09_30_drive_0033_sync 520 l
+2011_09_26/2011_09_26_drive_0018_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 605 r
+2011_10_03/2011_10_03_drive_0034_sync 3188 l
+2011_09_30/2011_09_30_drive_0028_sync 2361 l
+2011_09_30/2011_09_30_drive_0020_sync 619 r
+2011_09_26/2011_09_26_drive_0022_sync 616 l
+2011_09_26/2011_09_26_drive_0061_sync 24 r
+2011_09_26/2011_09_26_drive_0087_sync 543 l
+2011_09_26/2011_09_26_drive_0051_sync 322 l
+2011_10_03/2011_10_03_drive_0034_sync 2244 r
+2011_09_26/2011_09_26_drive_0087_sync 666 l
+2011_09_26/2011_09_26_drive_0014_sync 183 r
+2011_09_30/2011_09_30_drive_0028_sync 2941 l
+2011_09_26/2011_09_26_drive_0032_sync 134 l
+2011_09_30/2011_09_30_drive_0033_sync 259 l
+2011_09_28/2011_09_28_drive_0001_sync 13 l
+2011_10_03/2011_10_03_drive_0034_sync 914 l
+2011_09_30/2011_09_30_drive_0033_sync 216 r
+2011_09_26/2011_09_26_drive_0087_sync 452 r
+2011_10_03/2011_10_03_drive_0034_sync 4627 r
+2011_10_03/2011_10_03_drive_0034_sync 441 l
+2011_10_03/2011_10_03_drive_0034_sync 1070 r
+2011_09_26/2011_09_26_drive_0014_sync 96 l
+2011_09_30/2011_09_30_drive_0028_sync 4199 l
+2011_10_03/2011_10_03_drive_0034_sync 4478 l
+2011_09_26/2011_09_26_drive_0035_sync 90 l
+2011_09_30/2011_09_30_drive_0034_sync 354 l
+2011_09_30/2011_09_30_drive_0028_sync 2605 r
+2011_09_30/2011_09_30_drive_0028_sync 3853 l
+2011_09_26/2011_09_26_drive_0015_sync 51 l
+2011_09_30/2011_09_30_drive_0033_sync 349 l
+2011_09_26/2011_09_26_drive_0032_sync 61 r
+2011_09_26/2011_09_26_drive_0017_sync 23 r
+2011_10_03/2011_10_03_drive_0034_sync 578 l
+2011_09_26/2011_09_26_drive_0022_sync 471 l
+2011_09_30/2011_09_30_drive_0033_sync 1332 l
+2011_09_30/2011_09_30_drive_0028_sync 4491 l
+2011_09_30/2011_09_30_drive_0028_sync 62 l
+2011_09_26/2011_09_26_drive_0011_sync 216 r
+2011_09_28/2011_09_28_drive_0001_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 1093 r
+2011_09_30/2011_09_30_drive_0028_sync 3365 r
+2011_09_30/2011_09_30_drive_0020_sync 305 r
+2011_09_30/2011_09_30_drive_0020_sync 154 r
+2011_09_26/2011_09_26_drive_0051_sync 251 l
+2011_10_03/2011_10_03_drive_0042_sync 807 l
+2011_09_30/2011_09_30_drive_0033_sync 737 l
+2011_09_26/2011_09_26_drive_0028_sync 211 r
+2011_09_26/2011_09_26_drive_0018_sync 127 r
+2011_09_30/2011_09_30_drive_0028_sync 701 l
+2011_09_30/2011_09_30_drive_0028_sync 3863 l
+2011_09_30/2011_09_30_drive_0028_sync 493 l
+2011_09_26/2011_09_26_drive_0019_sync 474 r
+2011_09_30/2011_09_30_drive_0028_sync 2274 r
+2011_09_30/2011_09_30_drive_0033_sync 143 l
+2011_09_26/2011_09_26_drive_0022_sync 440 r
+2011_09_30/2011_09_30_drive_0020_sync 231 l
+2011_09_30/2011_09_30_drive_0033_sync 1436 l
+2011_10_03/2011_10_03_drive_0042_sync 777 l
+2011_09_30/2011_09_30_drive_0028_sync 2879 l
+2011_09_30/2011_09_30_drive_0028_sync 436 l
+2011_09_30/2011_09_30_drive_0033_sync 803 l
+2011_09_30/2011_09_30_drive_0020_sync 224 r
+2011_09_30/2011_09_30_drive_0028_sync 2805 r
+2011_10_03/2011_10_03_drive_0042_sync 580 r
+2011_09_30/2011_09_30_drive_0028_sync 4503 l
+2011_09_30/2011_09_30_drive_0033_sync 1493 l
+2011_09_26/2011_09_26_drive_0087_sync 607 r
+2011_10_03/2011_10_03_drive_0034_sync 3747 l
+2011_10_03/2011_10_03_drive_0042_sync 851 r
+2011_09_26/2011_09_26_drive_0015_sync 61 l
+2011_09_30/2011_09_30_drive_0033_sync 737 r
+2011_10_03/2011_10_03_drive_0034_sync 4051 r
+2011_10_03/2011_10_03_drive_0042_sync 1085 l
+2011_10_03/2011_10_03_drive_0034_sync 4452 l
+2011_09_30/2011_09_30_drive_0028_sync 697 l
+2011_09_30/2011_09_30_drive_0033_sync 1531 r
+2011_10_03/2011_10_03_drive_0034_sync 1577 l
+2011_10_03/2011_10_03_drive_0042_sync 1151 l
+2011_09_26/2011_09_26_drive_0022_sync 440 l
+2011_10_03/2011_10_03_drive_0042_sync 1109 r
+2011_09_26/2011_09_26_drive_0022_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 1550 l
+2011_09_30/2011_09_30_drive_0028_sync 308 r
+2011_09_30/2011_09_30_drive_0034_sync 851 l
+2011_09_26/2011_09_26_drive_0028_sync 66 r
+2011_09_26/2011_09_26_drive_0017_sync 29 l
+2011_09_26/2011_09_26_drive_0014_sync 251 l
+2011_09_30/2011_09_30_drive_0028_sync 5141 r
+2011_09_26/2011_09_26_drive_0061_sync 687 r
+2011_09_30/2011_09_30_drive_0020_sync 715 l
+2011_09_30/2011_09_30_drive_0034_sync 236 r
+2011_09_30/2011_09_30_drive_0034_sync 1024 l
+2011_09_26/2011_09_26_drive_0061_sync 106 l
+2011_09_30/2011_09_30_drive_0034_sync 996 r
+2011_09_30/2011_09_30_drive_0028_sync 588 l
+2011_10_03/2011_10_03_drive_0042_sync 879 r
+2011_09_26/2011_09_26_drive_0057_sync 9 l
+2011_10_03/2011_10_03_drive_0034_sync 386 r
+2011_09_30/2011_09_30_drive_0033_sync 421 l
+2011_10_03/2011_10_03_drive_0034_sync 2508 l
+2011_10_03/2011_10_03_drive_0034_sync 1499 l
+2011_09_30/2011_09_30_drive_0028_sync 702 l
+2011_10_03/2011_10_03_drive_0042_sync 174 l
+2011_09_30/2011_09_30_drive_0028_sync 5066 r
+2011_10_03/2011_10_03_drive_0034_sync 955 l
+2011_09_30/2011_09_30_drive_0034_sync 697 r
+2011_10_03/2011_10_03_drive_0034_sync 645 r
+2011_10_03/2011_10_03_drive_0034_sync 762 l
+2011_09_30/2011_09_30_drive_0028_sync 333 l
+2011_09_30/2011_09_30_drive_0033_sync 200 r
+2011_09_30/2011_09_30_drive_0028_sync 4085 r
+2011_09_30/2011_09_30_drive_0028_sync 2625 l
+2011_09_26/2011_09_26_drive_0039_sync 151 r
+2011_09_30/2011_09_30_drive_0033_sync 31 r
+2011_09_30/2011_09_30_drive_0028_sync 2362 r
+2011_09_26/2011_09_26_drive_0022_sync 400 r
+2011_09_30/2011_09_30_drive_0028_sync 2676 l
+2011_09_26/2011_09_26_drive_0014_sync 46 l
+2011_09_26/2011_09_26_drive_0015_sync 108 l
+2011_09_26/2011_09_26_drive_0061_sync 379 r
+2011_09_26/2011_09_26_drive_0039_sync 336 l
+2011_09_30/2011_09_30_drive_0028_sync 1093 l
+2011_09_30/2011_09_30_drive_0028_sync 2630 r
+2011_09_26/2011_09_26_drive_0091_sync 322 l
+2011_09_26/2011_09_26_drive_0057_sync 123 r
+2011_09_30/2011_09_30_drive_0028_sync 5168 r
+2011_09_30/2011_09_30_drive_0034_sync 1047 l
+2011_09_26/2011_09_26_drive_0014_sync 22 r
+2011_09_30/2011_09_30_drive_0034_sync 571 r
+2011_10_03/2011_10_03_drive_0034_sync 3909 r
+2011_09_30/2011_09_30_drive_0028_sync 2625 r
+2011_09_30/2011_09_30_drive_0034_sync 1009 r
+2011_09_30/2011_09_30_drive_0028_sync 1820 l
+2011_10_03/2011_10_03_drive_0034_sync 2473 r
+2011_10_03/2011_10_03_drive_0034_sync 880 r
+2011_09_30/2011_09_30_drive_0028_sync 1885 r
+2011_10_03/2011_10_03_drive_0034_sync 4592 r
+2011_09_26/2011_09_26_drive_0061_sync 562 l
+2011_09_26/2011_09_26_drive_0087_sync 255 l
+2011_09_26/2011_09_26_drive_0019_sync 207 l
+2011_09_29/2011_09_29_drive_0004_sync 2 r
+2011_09_30/2011_09_30_drive_0033_sync 1436 r
+2011_09_30/2011_09_30_drive_0033_sync 259 r
+2011_09_30/2011_09_30_drive_0028_sync 3051 r
+2011_09_26/2011_09_26_drive_0057_sync 299 r
+2011_10_03/2011_10_03_drive_0034_sync 3718 r
+2011_09_30/2011_09_30_drive_0033_sync 912 r
+2011_09_26/2011_09_26_drive_0039_sync 249 r
+2011_09_30/2011_09_30_drive_0020_sync 955 l
+2011_09_26/2011_09_26_drive_0104_sync 270 l
+2011_10_03/2011_10_03_drive_0034_sync 2932 r
+2011_10_03/2011_10_03_drive_0034_sync 4196 r
+2011_09_30/2011_09_30_drive_0034_sync 1047 r
+2011_09_26/2011_09_26_drive_0087_sync 105 r
+2011_10_03/2011_10_03_drive_0042_sync 273 l
+2011_10_03/2011_10_03_drive_0042_sync 201 r
+2011_09_30/2011_09_30_drive_0028_sync 755 l
+2011_09_30/2011_09_30_drive_0028_sync 1438 r
+2011_09_30/2011_09_30_drive_0028_sync 3634 r
+2011_09_30/2011_09_30_drive_0028_sync 697 r
+2011_09_30/2011_09_30_drive_0028_sync 1573 r
+2011_10_03/2011_10_03_drive_0034_sync 2460 r
+2011_09_26/2011_09_26_drive_0104_sync 73 r
+2011_10_03/2011_10_03_drive_0034_sync 1577 r
+2011_09_30/2011_09_30_drive_0028_sync 3925 l
+2011_10_03/2011_10_03_drive_0034_sync 4014 l
+2011_09_30/2011_09_30_drive_0033_sync 243 r
+2011_09_30/2011_09_30_drive_0034_sync 316 r
+2011_09_30/2011_09_30_drive_0028_sync 4403 r
+2011_09_26/2011_09_26_drive_0014_sync 251 r
+2011_09_26/2011_09_26_drive_0032_sync 147 l
+2011_09_26/2011_09_26_drive_0014_sync 182 l
+2011_10_03/2011_10_03_drive_0034_sync 1873 l
+2011_10_03/2011_10_03_drive_0034_sync 2439 l
+2011_09_26/2011_09_26_drive_0051_sync 229 l
+2011_10_03/2011_10_03_drive_0042_sync 294 r
+2011_09_30/2011_09_30_drive_0028_sync 4865 l
+2011_10_03/2011_10_03_drive_0034_sync 2565 l
+2011_09_26/2011_09_26_drive_0057_sync 307 r
+2011_10_03/2011_10_03_drive_0034_sync 4227 r
+2011_09_26/2011_09_26_drive_0095_sync 28 l
+2011_09_30/2011_09_30_drive_0028_sync 3581 l
+2011_09_30/2011_09_30_drive_0028_sync 822 r
+2011_09_26/2011_09_26_drive_0051_sync 248 l
+2011_10_03/2011_10_03_drive_0034_sync 2353 r
+2011_10_03/2011_10_03_drive_0042_sync 563 r
+2011_09_26/2011_09_26_drive_0019_sync 45 l
+2011_10_03/2011_10_03_drive_0042_sync 830 l
+2011_09_26/2011_09_26_drive_0057_sync 80 l
+2011_09_26/2011_09_26_drive_0032_sync 338 l
+2011_09_26/2011_09_26_drive_0057_sync 299 l
+2011_09_26/2011_09_26_drive_0057_sync 180 r
+2011_09_30/2011_09_30_drive_0033_sync 77 r
+2011_10_03/2011_10_03_drive_0042_sync 715 l
+2011_09_26/2011_09_26_drive_0057_sync 202 r
+2011_09_26/2011_09_26_drive_0014_sync 183 l
+2011_09_30/2011_09_30_drive_0028_sync 3281 r
+2011_09_30/2011_09_30_drive_0028_sync 2587 r
+2011_09_26/2011_09_26_drive_0104_sync 260 l
+2011_10_03/2011_10_03_drive_0034_sync 1523 l
+2011_10_03/2011_10_03_drive_0034_sync 4400 l
+2011_09_30/2011_09_30_drive_0028_sync 2786 l
+2011_09_26/2011_09_26_drive_0019_sync 457 l
+2011_09_29/2011_09_29_drive_0004_sync 189 l
+2011_10_03/2011_10_03_drive_0034_sync 3819 r
+2011_09_29/2011_09_29_drive_0004_sync 274 r
+2011_09_26/2011_09_26_drive_0070_sync 116 l
+2011_09_30/2011_09_30_drive_0028_sync 4381 l
+2011_09_30/2011_09_30_drive_0028_sync 2676 r
+2011_09_26/2011_09_26_drive_0022_sync 252 r
+2011_10_03/2011_10_03_drive_0034_sync 521 l
+2011_10_03/2011_10_03_drive_0042_sync 676 l
+2011_09_30/2011_09_30_drive_0028_sync 4656 l
+2011_09_26/2011_09_26_drive_0015_sync 156 l
+2011_09_30/2011_09_30_drive_0028_sync 4399 l
+2011_09_30/2011_09_30_drive_0020_sync 608 l
+2011_09_30/2011_09_30_drive_0028_sync 4439 r
+2011_09_26/2011_09_26_drive_0051_sync 233 r
+2011_09_30/2011_09_30_drive_0028_sync 1696 r
+2011_10_03/2011_10_03_drive_0034_sync 1484 r
+2011_09_30/2011_09_30_drive_0028_sync 669 l
+2011_10_03/2011_10_03_drive_0034_sync 1037 r
+2011_09_26/2011_09_26_drive_0087_sync 546 r
+2011_09_26/2011_09_26_drive_0022_sync 726 r
+2011_09_30/2011_09_30_drive_0028_sync 861 r
+2011_09_30/2011_09_30_drive_0033_sync 1433 r
+2011_09_26/2011_09_26_drive_0087_sync 543 r
+2011_09_30/2011_09_30_drive_0033_sync 1332 r
+2011_09_26/2011_09_26_drive_0057_sync 276 l
+2011_09_30/2011_09_30_drive_0028_sync 75 r
+2011_09_30/2011_09_30_drive_0034_sync 441 l
+2011_09_30/2011_09_30_drive_0028_sync 3175 l
+2011_10_03/2011_10_03_drive_0034_sync 2723 l
+2011_09_26/2011_09_26_drive_0019_sync 207 r
+2011_09_26/2011_09_26_drive_0070_sync 77 l
+2011_10_03/2011_10_03_drive_0042_sync 300 l
+2011_09_30/2011_09_30_drive_0028_sync 747 r
+2011_09_26/2011_09_26_drive_0061_sync 578 r
+2011_09_30/2011_09_30_drive_0028_sync 5096 l
+2011_09_26/2011_09_26_drive_0015_sync 0 r
+2011_09_26/2011_09_26_drive_0014_sync 19 l
+2011_09_26/2011_09_26_drive_0011_sync 25 l
+2011_09_30/2011_09_30_drive_0028_sync 3827 r
+2011_09_30/2011_09_30_drive_0033_sync 857 l
+2011_09_30/2011_09_30_drive_0028_sync 3151 r
+2011_10_03/2011_10_03_drive_0034_sync 264 l
+2011_10_03/2011_10_03_drive_0034_sync 2766 r
+2011_09_30/2011_09_30_drive_0020_sync 696 r
+2011_09_30/2011_09_30_drive_0028_sync 2363 l
+2011_09_30/2011_09_30_drive_0028_sync 3574 l
+2011_09_30/2011_09_30_drive_0020_sync 766 l
+2011_09_26/2011_09_26_drive_0061_sync 130 r
+2011_10_03/2011_10_03_drive_0034_sync 3735 r
+2011_09_26/2011_09_26_drive_0001_sync 0 l
+2011_09_26/2011_09_26_drive_0011_sync 216 l
+2011_10_03/2011_10_03_drive_0034_sync 4014 r
+2011_09_26/2011_09_26_drive_0051_sync 175 l
+2011_09_26/2011_09_26_drive_0051_sync 39 l
+2011_10_03/2011_10_03_drive_0034_sync 4227 l
+2011_09_26/2011_09_26_drive_0032_sync 338 r
+2011_09_26/2011_09_26_drive_0051_sync 251 r
+2011_09_26/2011_09_26_drive_0057_sync 55 r
+2011_09_29/2011_09_29_drive_0004_sync 325 l
+2011_09_29/2011_09_29_drive_0004_sync 68 l
+2011_10_03/2011_10_03_drive_0034_sync 1653 r
+2011_09_30/2011_09_30_drive_0028_sync 5141 l
+2011_10_03/2011_10_03_drive_0034_sync 3012 r
+2011_09_26/2011_09_26_drive_0061_sync 8 l
+2011_10_03/2011_10_03_drive_0034_sync 3367 l
+2011_10_03/2011_10_03_drive_0042_sync 162 r
+2011_09_30/2011_09_30_drive_0028_sync 1628 r
+2011_09_26/2011_09_26_drive_0022_sync 232 r
+2011_09_26/2011_09_26_drive_0028_sync 4 l
+2011_09_26/2011_09_26_drive_0051_sync 34 l
+2011_09_30/2011_09_30_drive_0028_sync 258 l
+2011_09_28/2011_09_28_drive_0001_sync 95 r
+2011_09_26/2011_09_26_drive_0087_sync 305 r
+2011_09_30/2011_09_30_drive_0028_sync 4810 r
+2011_09_30/2011_09_30_drive_0034_sync 924 l
+2011_10_03/2011_10_03_drive_0034_sync 2373 r
+2011_10_03/2011_10_03_drive_0034_sync 613 l
+2011_09_26/2011_09_26_drive_0061_sync 246 r
+2011_09_30/2011_09_30_drive_0028_sync 4504 r
+2011_10_03/2011_10_03_drive_0042_sync 458 r
+2011_10_03/2011_10_03_drive_0042_sync 102 l
+2011_09_30/2011_09_30_drive_0028_sync 1739 l
+2011_09_30/2011_09_30_drive_0028_sync 357 r
+2011_09_26/2011_09_26_drive_0051_sync 399 r
+2011_10_03/2011_10_03_drive_0034_sync 4529 l
+2011_09_28/2011_09_28_drive_0001_sync 79 l
+2011_10_03/2011_10_03_drive_0034_sync 924 r
+2011_09_30/2011_09_30_drive_0028_sync 4115 r
+2011_09_26/2011_09_26_drive_0087_sync 313 l
+2011_09_26/2011_09_26_drive_0087_sync 386 r
+2011_09_30/2011_09_30_drive_0028_sync 2361 r
+2011_09_30/2011_09_30_drive_0028_sync 2024 r
+2011_09_30/2011_09_30_drive_0028_sync 3766 r
+2011_09_26/2011_09_26_drive_0061_sync 637 r
+2011_09_30/2011_09_30_drive_0034_sync 1024 r
+2011_10_03/2011_10_03_drive_0042_sync 608 l
+2011_09_30/2011_09_30_drive_0020_sync 235 r
+2011_09_29/2011_09_29_drive_0004_sync 189 r
+2011_09_30/2011_09_30_drive_0028_sync 942 r
+2011_09_30/2011_09_30_drive_0034_sync 790 r
+2011_10_03/2011_10_03_drive_0034_sync 3079 l
+2011_09_30/2011_09_30_drive_0020_sync 839 r
+2011_09_30/2011_09_30_drive_0033_sync 342 l
+2011_09_30/2011_09_30_drive_0028_sync 3330 l
+2011_09_30/2011_09_30_drive_0034_sync 495 r
+2011_09_26/2011_09_26_drive_0104_sync 171 r
+2011_10_03/2011_10_03_drive_0034_sync 302 l
+2011_09_26/2011_09_26_drive_0039_sync 227 l
+2011_09_26/2011_09_26_drive_0061_sync 600 l
+2011_09_26/2011_09_26_drive_0051_sync 413 r
+2011_09_26/2011_09_26_drive_0019_sync 86 l
+2011_09_26/2011_09_26_drive_0028_sync 323 l
+2011_09_30/2011_09_30_drive_0028_sync 182 l
+2011_09_30/2011_09_30_drive_0020_sync 222 r
+2011_09_30/2011_09_30_drive_0028_sync 1234 r
+2011_10_03/2011_10_03_drive_0034_sync 3731 l
+2011_10_03/2011_10_03_drive_0034_sync 1653 l
+2011_09_26/2011_09_26_drive_0005_sync 83 r
+2011_10_03/2011_10_03_drive_0034_sync 729 l
+2011_09_26/2011_09_26_drive_0095_sync 48 r
+2011_09_26/2011_09_26_drive_0087_sync 187 r
+2011_09_30/2011_09_30_drive_0028_sync 1450 l
+2011_10_03/2011_10_03_drive_0042_sync 549 r
+2011_09_30/2011_09_30_drive_0028_sync 3811 l
+2011_09_26/2011_09_26_drive_0087_sync 636 l
+2011_09_26/2011_09_26_drive_0057_sync 292 l
+2011_10_03/2011_10_03_drive_0042_sync 826 r
+2011_10_03/2011_10_03_drive_0034_sync 228 l
+2011_10_03/2011_10_03_drive_0042_sync 787 r
+2011_09_26/2011_09_26_drive_0028_sync 44 r
+2011_10_03/2011_10_03_drive_0034_sync 3978 r
+2011_09_26/2011_09_26_drive_0057_sync 101 l
+2011_09_30/2011_09_30_drive_0028_sync 3827 l
+2011_10_03/2011_10_03_drive_0034_sync 2421 r
+2011_09_30/2011_09_30_drive_0033_sync 520 r
+2011_09_30/2011_09_30_drive_0034_sync 56 r
+2011_09_26/2011_09_26_drive_0039_sync 386 l
+2011_09_26/2011_09_26_drive_0032_sync 148 l
+2011_09_26/2011_09_26_drive_0032_sync 166 l
+2011_09_26/2011_09_26_drive_0028_sync 370 l
+2011_10_03/2011_10_03_drive_0042_sync 53 r
+2011_09_26/2011_09_26_drive_0060_sync 45 r
+2011_09_26/2011_09_26_drive_0091_sync 322 r
+2011_10_03/2011_10_03_drive_0034_sync 463 l
+2011_10_03/2011_10_03_drive_0034_sync 578 r
+2011_09_30/2011_09_30_drive_0020_sync 305 l
+2011_09_30/2011_09_30_drive_0020_sync 224 l
+2011_09_30/2011_09_30_drive_0034_sync 236 l
+2011_09_26/2011_09_26_drive_0087_sync 101 l
+2011_10_03/2011_10_03_drive_0034_sync 2337 r
+2011_09_26/2011_09_26_drive_0022_sync 568 r
+2011_09_26/2011_09_26_drive_0091_sync 272 l
+2011_10_03/2011_10_03_drive_0042_sync 1150 r
+2011_09_26/2011_09_26_drive_0070_sync 23 l
+2011_09_26/2011_09_26_drive_0018_sync 15 l
+2011_10_03/2011_10_03_drive_0042_sync 1031 l
+2011_10_03/2011_10_03_drive_0034_sync 2704 r
+2011_09_30/2011_09_30_drive_0028_sync 2767 l
+2011_09_30/2011_09_30_drive_0020_sync 392 r
+2011_10_03/2011_10_03_drive_0034_sync 650 l
+2011_09_30/2011_09_30_drive_0034_sync 996 l
+2011_10_03/2011_10_03_drive_0034_sync 3277 l
+2011_09_30/2011_09_30_drive_0028_sync 1376 r
+2011_09_30/2011_09_30_drive_0028_sync 909 l
+2011_09_30/2011_09_30_drive_0028_sync 4300 r
+2011_09_30/2011_09_30_drive_0033_sync 309 l
+2011_09_30/2011_09_30_drive_0028_sync 2109 r
+2011_10_03/2011_10_03_drive_0034_sync 1994 l
+2011_09_30/2011_09_30_drive_0034_sync 354 r
+2011_09_26/2011_09_26_drive_0035_sync 91 r
+2011_09_26/2011_09_26_drive_0095_sync 244 l
+2011_10_03/2011_10_03_drive_0042_sync 335 l
+2011_10_03/2011_10_03_drive_0042_sync 162 l
+2011_09_30/2011_09_30_drive_0034_sync 319 l
+2011_09_26/2011_09_26_drive_0087_sync 714 r
+2011_10_03/2011_10_03_drive_0034_sync 2253 r
+2011_09_30/2011_09_30_drive_0028_sync 1150 l
+2011_09_30/2011_09_30_drive_0028_sync 2725 l
+2011_09_26/2011_09_26_drive_0032_sync 55 r
+2011_09_26/2011_09_26_drive_0039_sync 378 l
+2011_09_30/2011_09_30_drive_0033_sync 613 l
+2011_09_30/2011_09_30_drive_0028_sync 1016 r
+2011_09_30/2011_09_30_drive_0020_sync 1035 l
+2011_10_03/2011_10_03_drive_0034_sync 228 r
+2011_10_03/2011_10_03_drive_0034_sync 3628 l
+2011_09_30/2011_09_30_drive_0028_sync 3447 r
+2011_09_26/2011_09_26_drive_0104_sync 232 r
+2011_09_30/2011_09_30_drive_0028_sync 2749 r
+2011_09_26/2011_09_26_drive_0087_sync 410 r
+2011_10_03/2011_10_03_drive_0034_sync 2467 l
+2011_09_30/2011_09_30_drive_0028_sync 3863 r
+2011_09_30/2011_09_30_drive_0033_sync 1108 l
+2011_09_26/2011_09_26_drive_0019_sync 218 l
+2011_09_26/2011_09_26_drive_0091_sync 242 r
+2011_09_30/2011_09_30_drive_0034_sync 703 r
+2011_09_26/2011_09_26_drive_0015_sync 4 r
+2011_10_03/2011_10_03_drive_0042_sync 102 r
+2011_09_30/2011_09_30_drive_0028_sync 1137 r
+2011_09_26/2011_09_26_drive_0087_sync 617 r
+2011_09_30/2011_09_30_drive_0033_sync 1363 r
+2011_10_03/2011_10_03_drive_0034_sync 2105 r
+2011_09_26/2011_09_26_drive_0087_sync 161 r
+2011_10_03/2011_10_03_drive_0042_sync 163 r
+2011_10_03/2011_10_03_drive_0034_sync 1822 r
+2011_09_30/2011_09_30_drive_0034_sync 132 r
+2011_10_03/2011_10_03_drive_0034_sync 302 r
+2011_09_30/2011_09_30_drive_0033_sync 1518 l
+2011_09_30/2011_09_30_drive_0034_sync 467 l
+2011_10_03/2011_10_03_drive_0034_sync 605 l
+2011_09_26/2011_09_26_drive_0095_sync 177 l
+2011_09_29/2011_09_29_drive_0026_sync 58 l
+2011_09_30/2011_09_30_drive_0033_sync 1108 r
+2011_10_03/2011_10_03_drive_0034_sync 244 r
+2011_09_30/2011_09_30_drive_0028_sync 1696 l
+2011_09_29/2011_09_29_drive_0004_sync 57 r
+2011_09_30/2011_09_30_drive_0020_sync 994 r
+2011_09_26/2011_09_26_drive_0014_sync 19 r
+2011_09_30/2011_09_30_drive_0034_sync 282 r
+2011_09_26/2011_09_26_drive_0035_sync 84 l
+2011_09_26/2011_09_26_drive_0032_sync 134 r
+2011_09_26/2011_09_26_drive_0022_sync 561 r
+2011_09_30/2011_09_30_drive_0034_sync 110 r
+2011_09_26/2011_09_26_drive_0087_sync 255 r
+2011_09_30/2011_09_30_drive_0028_sync 1895 r
+2011_09_30/2011_09_30_drive_0028_sync 461 r
+2011_09_30/2011_09_30_drive_0020_sync 190 l
+2011_10_03/2011_10_03_drive_0034_sync 2895 l
+2011_10_03/2011_10_03_drive_0034_sync 3747 r
+2011_09_28/2011_09_28_drive_0001_sync 4 l
+2011_09_30/2011_09_30_drive_0034_sync 316 l
+2011_09_26/2011_09_26_drive_0051_sync 231 l
+2011_09_30/2011_09_30_drive_0020_sync 560 r
+2011_09_30/2011_09_30_drive_0028_sync 5143 r
+2011_09_26/2011_09_26_drive_0091_sync 145 r
+2011_09_26/2011_09_26_drive_0061_sync 687 l
+2011_09_26/2011_09_26_drive_0014_sync 256 l
+2011_09_30/2011_09_30_drive_0020_sync 870 r
+2011_09_26/2011_09_26_drive_0087_sync 486 r
+2011_09_26/2011_09_26_drive_0022_sync 227 r
+2011_09_26/2011_09_26_drive_0051_sync 204 r
+2011_09_30/2011_09_30_drive_0033_sync 381 r
+2011_09_30/2011_09_30_drive_0028_sync 3039 r
+2011_09_26/2011_09_26_drive_0061_sync 684 r
+2011_10_03/2011_10_03_drive_0042_sync 672 r
+2011_09_30/2011_09_30_drive_0034_sync 941 l
+2011_10_03/2011_10_03_drive_0034_sync 880 l
+2011_09_26/2011_09_26_drive_0032_sync 385 l
+2011_09_26/2011_09_26_drive_0005_sync 83 l
+2011_09_30/2011_09_30_drive_0028_sync 436 r
+2011_10_03/2011_10_03_drive_0034_sync 2176 l
+2011_09_26/2011_09_26_drive_0061_sync 172 r
+2011_09_26/2011_09_26_drive_0019_sync 45 r
+2011_09_26/2011_09_26_drive_0001_sync 7 r
+2011_09_30/2011_09_30_drive_0033_sync 308 r
+2011_09_30/2011_09_30_drive_0028_sync 1801 l
+2011_09_26/2011_09_26_drive_0001_sync 7 l
+2011_10_03/2011_10_03_drive_0034_sync 3819 l
+2011_09_26/2011_09_26_drive_0095_sync 64 r
+2011_09_26/2011_09_26_drive_0051_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 701 r
+2011_09_30/2011_09_30_drive_0028_sync 868 l
+2011_09_26/2011_09_26_drive_0028_sync 337 l
+2011_09_30/2011_09_30_drive_0028_sync 755 r
+2011_09_26/2011_09_26_drive_0018_sync 94 l
+2011_09_26/2011_09_26_drive_0060_sync 53 r
+2011_09_30/2011_09_30_drive_0020_sync 1035 r
+2011_10_03/2011_10_03_drive_0034_sync 2477 r
+2011_10_03/2011_10_03_drive_0042_sync 973 r
+2011_09_26/2011_09_26_drive_0022_sync 726 l
+2011_09_26/2011_09_26_drive_0035_sync 58 r
+2011_09_26/2011_09_26_drive_0087_sync 549 l
+2011_09_26/2011_09_26_drive_0039_sync 149 r
+2011_09_30/2011_09_30_drive_0028_sync 1820 r
+2011_09_30/2011_09_30_drive_0033_sync 694 r
+2011_10_03/2011_10_03_drive_0034_sync 3944 l
+2011_09_30/2011_09_30_drive_0033_sync 855 r
+2011_09_26/2011_09_26_drive_0051_sync 229 r
+2011_09_30/2011_09_30_drive_0028_sync 934 r
+2011_09_26/2011_09_26_drive_0015_sync 125 l
+2011_09_26/2011_09_26_drive_0032_sync 43 l
+2011_09_30/2011_09_30_drive_0028_sync 1307 r
+2011_10_03/2011_10_03_drive_0042_sync 927 l
+2011_10_03/2011_10_03_drive_0034_sync 2401 r
+2011_09_30/2011_09_30_drive_0028_sync 2862 l
+2011_09_26/2011_09_26_drive_0095_sync 9 l
+2011_10_03/2011_10_03_drive_0034_sync 2113 l
+2011_09_30/2011_09_30_drive_0033_sync 308 l
+2011_09_26/2011_09_26_drive_0035_sync 91 l
+2011_09_30/2011_09_30_drive_0028_sync 1150 r
+2011_09_29/2011_09_29_drive_0004_sync 295 l
+2011_10_03/2011_10_03_drive_0034_sync 371 r
+2011_10_03/2011_10_03_drive_0034_sync 3274 l
+2011_09_30/2011_09_30_drive_0033_sync 381 l
+2011_10_03/2011_10_03_drive_0034_sync 762 r
+2011_09_30/2011_09_30_drive_0033_sync 1124 r
+2011_09_26/2011_09_26_drive_0113_sync 40 l
+2011_09_26/2011_09_26_drive_0032_sync 293 l
+2011_09_26/2011_09_26_drive_0032_sync 78 r
+2011_09_30/2011_09_30_drive_0034_sync 340 l
+2011_10_03/2011_10_03_drive_0042_sync 244 l
+2011_10_03/2011_10_03_drive_0042_sync 327 l
+2011_09_30/2011_09_30_drive_0028_sync 4199 r
+2011_09_26/2011_09_26_drive_0060_sync 18 l
+2011_09_26/2011_09_26_drive_0087_sync 174 l
+2011_09_26/2011_09_26_drive_0095_sync 9 r
+2011_09_30/2011_09_30_drive_0028_sync 3426 r
+2011_09_26/2011_09_26_drive_0014_sync 5 r
+2011_09_30/2011_09_30_drive_0028_sync 2592 l
+2011_09_26/2011_09_26_drive_0005_sync 142 l
+2011_09_26/2011_09_26_drive_0061_sync 549 l
+2011_09_30/2011_09_30_drive_0028_sync 1593 r
+2011_10_03/2011_10_03_drive_0034_sync 30 l
+2011_09_26/2011_09_26_drive_0061_sync 578 l
+2011_09_26/2011_09_26_drive_0061_sync 172 l
+2011_09_30/2011_09_30_drive_0033_sync 855 l
+2011_09_30/2011_09_30_drive_0034_sync 336 r
+2011_09_30/2011_09_30_drive_0028_sync 3635 r
+2011_10_03/2011_10_03_drive_0034_sync 2704 l
+2011_09_26/2011_09_26_drive_0018_sync 37 l
+2011_10_03/2011_10_03_drive_0034_sync 3005 r
+2011_09_30/2011_09_30_drive_0028_sync 84 l
+2011_09_26/2011_09_26_drive_0087_sync 661 r
+2011_09_30/2011_09_30_drive_0028_sync 3669 r
+2011_10_03/2011_10_03_drive_0034_sync 30 r
+2011_09_26/2011_09_26_drive_0014_sync 96 r
+2011_09_30/2011_09_30_drive_0033_sync 1573 l
+2011_09_30/2011_09_30_drive_0028_sync 942 l
+2011_10_03/2011_10_03_drive_0034_sync 2004 l
+2011_09_26/2011_09_26_drive_0051_sync 204 l
+2011_09_26/2011_09_26_drive_0051_sync 321 r
+2011_09_30/2011_09_30_drive_0034_sync 659 r
+2011_10_03/2011_10_03_drive_0034_sync 317 l
+2011_09_30/2011_09_30_drive_0028_sync 4927 r
+2011_09_26/2011_09_26_drive_0001_sync 86 l
+2011_10_03/2011_10_03_drive_0042_sync 3 r
+2011_10_03/2011_10_03_drive_0034_sync 4149 r
+2011_09_30/2011_09_30_drive_0034_sync 495 l
+2011_10_03/2011_10_03_drive_0034_sync 1511 l
+2011_09_26/2011_09_26_drive_0039_sync 378 r
+2011_09_30/2011_09_30_drive_0028_sync 3760 l
+2011_10_03/2011_10_03_drive_0034_sync 2533 l
+2011_09_30/2011_09_30_drive_0028_sync 1115 r
+2011_09_26/2011_09_26_drive_0061_sync 420 l
+2011_10_03/2011_10_03_drive_0034_sync 3465 r
+2011_09_29/2011_09_29_drive_0004_sync 44 r
+2011_09_26/2011_09_26_drive_0057_sync 260 r
+2011_09_26/2011_09_26_drive_0060_sync 19 l
+2011_10_03/2011_10_03_drive_0034_sync 2630 l
+2011_09_30/2011_09_30_drive_0020_sync 941 l
+2011_10_03/2011_10_03_drive_0042_sync 300 r
+2011_09_30/2011_09_30_drive_0028_sync 1234 l
+2011_09_30/2011_09_30_drive_0034_sync 780 l
+2011_09_30/2011_09_30_drive_0033_sync 1116 l
+2011_09_26/2011_09_26_drive_0022_sync 98 l
+2011_09_26/2011_09_26_drive_0091_sync 311 l
+2011_09_30/2011_09_30_drive_0028_sync 2767 r
+2011_10_03/2011_10_03_drive_0034_sync 3084 l
+2011_09_30/2011_09_30_drive_0033_sync 1433 l
+2011_10_03/2011_10_03_drive_0034_sync 2565 r
+2011_09_30/2011_09_30_drive_0028_sync 2611 r
+2011_09_29/2011_09_29_drive_0004_sync 90 r
+2011_09_26/2011_09_26_drive_0091_sync 90 l
+2011_10_03/2011_10_03_drive_0034_sync 244 l
+2011_09_30/2011_09_30_drive_0028_sync 1016 l
+2011_10_03/2011_10_03_drive_0042_sync 204 l
+2011_09_30/2011_09_30_drive_0028_sync 1561 l
+2011_09_30/2011_09_30_drive_0028_sync 2830 l
+2011_10_03/2011_10_03_drive_0034_sync 2723 r
+2011_09_26/2011_09_26_drive_0087_sync 37 r
+2011_09_29/2011_09_29_drive_0004_sync 41 l
+2011_10_03/2011_10_03_drive_0034_sync 980 r
+2011_09_30/2011_09_30_drive_0020_sync 21 r
+2011_09_30/2011_09_30_drive_0028_sync 2561 r
+2011_09_26/2011_09_26_drive_0014_sync 274 l
+2011_09_30/2011_09_30_drive_0028_sync 308 l
+2011_09_30/2011_09_30_drive_0028_sync 1307 l
+2011_10_03/2011_10_03_drive_0034_sync 1484 l
+2011_10_03/2011_10_03_drive_0034_sync 4196 l
+2011_10_03/2011_10_03_drive_0034_sync 1517 r
+2011_09_30/2011_09_30_drive_0033_sync 934 l
+2011_10_03/2011_10_03_drive_0034_sync 4288 r
+2011_09_26/2011_09_26_drive_0061_sync 549 r
+2011_09_30/2011_09_30_drive_0033_sync 37 l
+2011_09_26/2011_09_26_drive_0070_sync 350 r
+2011_09_30/2011_09_30_drive_0028_sync 1397 r
+2011_09_30/2011_09_30_drive_0033_sync 583 l
+2011_09_30/2011_09_30_drive_0034_sync 420 r
+2011_10_03/2011_10_03_drive_0034_sync 3926 r
+2011_09_30/2011_09_30_drive_0028_sync 3635 l
+2011_09_26/2011_09_26_drive_0087_sync 725 r
+2011_09_30/2011_09_30_drive_0034_sync 82 r
+2011_09_26/2011_09_26_drive_0022_sync 168 r
+2011_09_30/2011_09_30_drive_0028_sync 84 r
+2011_09_26/2011_09_26_drive_0095_sync 84 l
+2011_09_30/2011_09_30_drive_0020_sync 231 r
+2011_09_26/2011_09_26_drive_0035_sync 104 l
+2011_10_03/2011_10_03_drive_0042_sync 826 l
+2011_09_30/2011_09_30_drive_0033_sync 857 r
+2011_09_26/2011_09_26_drive_0001_sync 75 l
+2011_10_03/2011_10_03_drive_0034_sync 4279 l
+2011_10_03/2011_10_03_drive_0042_sync 201 l
+2011_09_30/2011_09_30_drive_0020_sync 766 r
+2011_09_26/2011_09_26_drive_0087_sync 182 r
+2011_09_26/2011_09_26_drive_0061_sync 241 r
+2011_09_30/2011_09_30_drive_0028_sync 2494 l
+2011_09_30/2011_09_30_drive_0028_sync 2786 r
+2011_10_03/2011_10_03_drive_0034_sync 929 r
+2011_10_03/2011_10_03_drive_0042_sync 174 r
+2011_10_03/2011_10_03_drive_0034_sync 386 l
+2011_10_03/2011_10_03_drive_0034_sync 289 l
+2011_10_03/2011_10_03_drive_0042_sync 1053 l
+2011_09_30/2011_09_30_drive_0028_sync 463 r
+2011_09_26/2011_09_26_drive_0061_sync 114 l
+2011_10_03/2011_10_03_drive_0034_sync 85 r
+2011_10_03/2011_10_03_drive_0034_sync 1730 r
+2011_09_26/2011_09_26_drive_0032_sync 166 r
+2011_10_03/2011_10_03_drive_0034_sync 1998 r
+2011_09_30/2011_09_30_drive_0034_sync 416 l
+2011_09_26/2011_09_26_drive_0039_sync 125 l
+2011_09_30/2011_09_30_drive_0020_sync 21 l
+2011_09_30/2011_09_30_drive_0033_sync 1557 r
+2011_09_26/2011_09_26_drive_0032_sync 78 l
+2011_10_03/2011_10_03_drive_0042_sync 549 l
+2011_09_30/2011_09_30_drive_0028_sync 4491 r
+2011_09_26/2011_09_26_drive_0039_sync 172 r
+2011_10_03/2011_10_03_drive_0034_sync 85 l
+2011_09_26/2011_09_26_drive_0028_sync 423 r
+2011_09_30/2011_09_30_drive_0028_sync 4825 l
+2011_09_30/2011_09_30_drive_0028_sync 2759 r
+2011_10_03/2011_10_03_drive_0042_sync 327 r
+2011_10_03/2011_10_03_drive_0042_sync 3 l
+2011_09_30/2011_09_30_drive_0034_sync 659 l
+2011_09_26/2011_09_26_drive_0091_sync 235 r
+2011_10_03/2011_10_03_drive_0034_sync 613 r
+2011_09_26/2011_09_26_drive_0061_sync 521 r
+2011_09_30/2011_09_30_drive_0033_sync 349 r
+2011_09_30/2011_09_30_drive_0028_sync 2303 l
+2011_09_30/2011_09_30_drive_0028_sync 2524 r
+2011_10_03/2011_10_03_drive_0034_sync 3718 l
+2011_09_30/2011_09_30_drive_0028_sync 3012 l
+2011_10_03/2011_10_03_drive_0034_sync 2176 r
+2011_10_03/2011_10_03_drive_0034_sync 2421 l
+2011_09_26/2011_09_26_drive_0017_sync 24 l
+2011_09_26/2011_09_26_drive_0005_sync 92 l
+2011_09_30/2011_09_30_drive_0028_sync 1438 l
+2011_09_26/2011_09_26_drive_0018_sync 165 r
+2011_09_30/2011_09_30_drive_0028_sync 1168 l
+2011_09_26/2011_09_26_drive_0018_sync 34 r
+2011_10_03/2011_10_03_drive_0034_sync 650 r
+2011_09_26/2011_09_26_drive_0061_sync 4 l
+2011_09_30/2011_09_30_drive_0028_sync 4117 r
+2011_09_26/2011_09_26_drive_0087_sync 305 l
+2011_10_03/2011_10_03_drive_0042_sync 1141 l
+2011_09_30/2011_09_30_drive_0020_sync 955 r
+2011_09_30/2011_09_30_drive_0028_sync 3650 r
+2011_09_26/2011_09_26_drive_0057_sync 170 l
+2011_09_30/2011_09_30_drive_0033_sync 1493 r
+2011_09_26/2011_09_26_drive_0087_sync 74 r
+2011_09_26/2011_09_26_drive_0014_sync 218 l
+2011_09_29/2011_09_29_drive_0004_sync 325 r
+2011_09_30/2011_09_30_drive_0028_sync 1895 l
+2011_10_03/2011_10_03_drive_0042_sync 933 l
+2011_09_26/2011_09_26_drive_0039_sync 125 r
+2011_10_03/2011_10_03_drive_0042_sync 979 l
+2011_10_03/2011_10_03_drive_0042_sync 879 l
+2011_09_26/2011_09_26_drive_0035_sync 104 r
+2011_09_30/2011_09_30_drive_0028_sync 2904 r
+2011_09_29/2011_09_29_drive_0004_sync 295 r
+2011_09_26/2011_09_26_drive_0018_sync 234 r
+2011_10_03/2011_10_03_drive_0034_sync 2328 r
+2011_09_30/2011_09_30_drive_0033_sync 694 l
+2011_10_03/2011_10_03_drive_0034_sync 395 r
+2011_09_30/2011_09_30_drive_0034_sync 11 l
+2011_09_26/2011_09_26_drive_0087_sync 377 l
+2011_09_26/2011_09_26_drive_0039_sync 56 r
+2011_10_03/2011_10_03_drive_0034_sync 3084 r
+2011_09_26/2011_09_26_drive_0018_sync 84 l
+2011_09_26/2011_09_26_drive_0091_sync 226 r
+2011_09_30/2011_09_30_drive_0034_sync 299 l
+2011_09_26/2011_09_26_drive_0028_sync 337 r
+2011_09_30/2011_09_30_drive_0034_sync 333 r
+2011_09_30/2011_09_30_drive_0034_sync 494 l
+2011_10_03/2011_10_03_drive_0034_sync 371 l
+2011_09_26/2011_09_26_drive_0087_sync 714 l
+2011_09_30/2011_09_30_drive_0033_sync 267 r
+2011_09_26/2011_09_26_drive_0019_sync 218 r
+2011_09_30/2011_09_30_drive_0028_sync 4504 l
+2011_09_30/2011_09_30_drive_0020_sync 598 r
+2011_10_03/2011_10_03_drive_0034_sync 2294 l
+2011_09_30/2011_09_30_drive_0034_sync 416 r
+2011_09_29/2011_09_29_drive_0004_sync 17 r
+2011_09_30/2011_09_30_drive_0028_sync 2274 l
+2011_09_26/2011_09_26_drive_0022_sync 472 l
+2011_09_26/2011_09_26_drive_0032_sync 316 r
+2011_09_26/2011_09_26_drive_0032_sync 128 l
+2011_09_26/2011_09_26_drive_0087_sync 273 l
+2011_09_30/2011_09_30_drive_0028_sync 4174 r
+2011_09_30/2011_09_30_drive_0028_sync 980 l
+2011_09_30/2011_09_30_drive_0028_sync 2561 l
+2011_10_03/2011_10_03_drive_0042_sync 608 r
+2011_09_26/2011_09_26_drive_0028_sync 4 r
+2011_09_26/2011_09_26_drive_0087_sync 410 l
+2011_10_03/2011_10_03_drive_0034_sync 1212 r
+2011_10_03/2011_10_03_drive_0034_sync 2410 r
+2011_10_03/2011_10_03_drive_0042_sync 696 r
+2011_10_03/2011_10_03_drive_0034_sync 3012 l
+2011_10_03/2011_10_03_drive_0042_sync 1085 r
+2011_10_03/2011_10_03_drive_0042_sync 666 l
+2011_09_26/2011_09_26_drive_0011_sync 171 r
+2011_09_26/2011_09_26_drive_0070_sync 23 r
+2011_10_03/2011_10_03_drive_0042_sync 571 r
+2011_09_26/2011_09_26_drive_0035_sync 29 l
+2011_09_30/2011_09_30_drive_0028_sync 225 r
+2011_09_30/2011_09_30_drive_0020_sync 339 l
+2011_09_26/2011_09_26_drive_0113_sync 75 l
+2011_09_29/2011_09_29_drive_0026_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 225 l
+2011_10_03/2011_10_03_drive_0034_sync 2508 r
+2011_09_30/2011_09_30_drive_0028_sync 4813 r
+2011_09_30/2011_09_30_drive_0028_sync 4207 r
+2011_09_30/2011_09_30_drive_0033_sync 200 l
+2011_09_30/2011_09_30_drive_0020_sync 154 l
+2011_09_30/2011_09_30_drive_0028_sync 1885 l
+2011_09_26/2011_09_26_drive_0022_sync 311 r
+2011_09_30/2011_09_30_drive_0028_sync 1174 r
+2011_09_30/2011_09_30_drive_0028_sync 2738 r
+2011_10_03/2011_10_03_drive_0042_sync 819 l
+2011_10_03/2011_10_03_drive_0042_sync 163 l
+2011_09_30/2011_09_30_drive_0028_sync 2605 l
+2011_09_30/2011_09_30_drive_0028_sync 967 l
+2011_09_30/2011_09_30_drive_0028_sync 425 r
+2011_10_03/2011_10_03_drive_0042_sync 155 r
+2011_10_03/2011_10_03_drive_0034_sync 3882 r
+2011_09_30/2011_09_30_drive_0034_sync 675 r
+2011_09_30/2011_09_30_drive_0028_sync 4254 l
+2011_09_26/2011_09_26_drive_0039_sync 134 r
+2011_09_30/2011_09_30_drive_0028_sync 85 l
+2011_10_03/2011_10_03_drive_0042_sync 195 l
+2011_09_26/2011_09_26_drive_0061_sync 673 r
+2011_09_30/2011_09_30_drive_0033_sync 421 r
+2011_09_26/2011_09_26_drive_0091_sync 145 l
+2011_09_30/2011_09_30_drive_0028_sync 672 l
+2011_10_03/2011_10_03_drive_0042_sync 175 r
+2011_09_30/2011_09_30_drive_0028_sync 2295 r
+2011_09_26/2011_09_26_drive_0028_sync 370 r
+2011_09_29/2011_09_29_drive_0026_sync 7 r
+2011_09_30/2011_09_30_drive_0028_sync 2805 l
+2011_09_30/2011_09_30_drive_0028_sync 3365 l
+2011_09_26/2011_09_26_drive_0095_sync 48 l
+2011_09_30/2011_09_30_drive_0028_sync 182 r
+2011_09_30/2011_09_30_drive_0033_sync 424 r
+2011_09_26/2011_09_26_drive_0113_sync 70 r
+2011_10_03/2011_10_03_drive_0034_sync 2353 l
+2011_09_26/2011_09_26_drive_0018_sync 165 l
+2011_10_03/2011_10_03_drive_0042_sync 934 l
+2011_09_30/2011_09_30_drive_0028_sync 1348 l
+2011_09_26/2011_09_26_drive_0087_sync 628 l
+2011_09_30/2011_09_30_drive_0028_sync 5032 r
+2011_09_30/2011_09_30_drive_0028_sync 3039 l
+2011_09_26/2011_09_26_drive_0022_sync 113 r
+2011_10_03/2011_10_03_drive_0034_sync 481 l
+2011_09_30/2011_09_30_drive_0028_sync 4381 r
+2011_10_03/2011_10_03_drive_0034_sync 4051 l
+2011_09_26/2011_09_26_drive_0061_sync 7 r
+2011_10_03/2011_10_03_drive_0034_sync 1511 r
+2011_09_30/2011_09_30_drive_0034_sync 769 l
+2011_09_29/2011_09_29_drive_0026_sync 134 l
+2011_09_30/2011_09_30_drive_0028_sync 1550 r
+2011_09_30/2011_09_30_drive_0028_sync 4810 l
+2011_09_26/2011_09_26_drive_0018_sync 94 r
+2011_09_30/2011_09_30_drive_0034_sync 851 r
+2011_09_26/2011_09_26_drive_0087_sync 666 r
+2011_10_03/2011_10_03_drive_0034_sync 2113 r
+2011_09_30/2011_09_30_drive_0028_sync 166 l
+2011_09_30/2011_09_30_drive_0028_sync 2524 l
+2011_09_29/2011_09_29_drive_0004_sync 44 l
+2011_09_30/2011_09_30_drive_0020_sync 320 r
+2011_09_26/2011_09_26_drive_0061_sync 607 r
+2011_09_26/2011_09_26_drive_0032_sync 128 r
+2011_09_30/2011_09_30_drive_0028_sync 329 r
+2011_10_03/2011_10_03_drive_0034_sync 2647 l
+2011_09_30/2011_09_30_drive_0028_sync 5168 l
+2011_09_30/2011_09_30_drive_0034_sync 305 l
+2011_09_30/2011_09_30_drive_0034_sync 82 l
+2011_09_30/2011_09_30_drive_0028_sync 1930 l
+2011_09_26/2011_09_26_drive_0057_sync 101 r
+2011_09_30/2011_09_30_drive_0033_sync 1097 l
+2011_10_03/2011_10_03_drive_0042_sync 1109 l
+2011_09_26/2011_09_26_drive_0087_sync 174 r
+2011_09_30/2011_09_30_drive_0033_sync 1149 r
+2011_09_30/2011_09_30_drive_0020_sync 137 l
+2011_09_26/2011_09_26_drive_0104_sync 272 r
+2011_10_03/2011_10_03_drive_0034_sync 2257 r
+2011_09_26/2011_09_26_drive_0017_sync 23 l
+2011_10_03/2011_10_03_drive_0034_sync 3543 r
+2011_09_30/2011_09_30_drive_0033_sync 48 l
+2011_09_30/2011_09_30_drive_0033_sync 143 r
+2011_09_30/2011_09_30_drive_0034_sync 1202 l
+2011_09_30/2011_09_30_drive_0020_sync 165 l
+2011_09_26/2011_09_26_drive_0035_sync 40 r
+2011_09_30/2011_09_30_drive_0034_sync 299 r
+2011_09_26/2011_09_26_drive_0061_sync 127 l
+2011_10_03/2011_10_03_drive_0034_sync 1317 l
+2011_09_30/2011_09_30_drive_0033_sync 1124 l
+2011_09_26/2011_09_26_drive_0070_sync 175 l
+2011_10_03/2011_10_03_drive_0034_sync 112 r
+2011_09_30/2011_09_30_drive_0034_sync 167 r
+2011_09_26/2011_09_26_drive_0039_sync 19 r
+2011_09_30/2011_09_30_drive_0028_sync 1166 r
+2011_09_26/2011_09_26_drive_0051_sync 248 r
+2011_09_30/2011_09_30_drive_0028_sync 166 r
+2011_10_03/2011_10_03_drive_0034_sync 3401 r
+2011_09_26/2011_09_26_drive_0022_sync 561 l
+2011_09_26/2011_09_26_drive_0061_sync 38 r
+2011_10_03/2011_10_03_drive_0042_sync 1031 r
+2011_09_30/2011_09_30_drive_0034_sync 697 l
+2011_10_03/2011_10_03_drive_0034_sync 2662 r
+2011_09_30/2011_09_30_drive_0028_sync 1907 l
+2011_09_30/2011_09_30_drive_0028_sync 1404 r
+2011_09_30/2011_09_30_drive_0028_sync 3178 r
+2011_09_26/2011_09_26_drive_0014_sync 5 l
+2011_10_03/2011_10_03_drive_0042_sync 455 l
+2011_10_03/2011_10_03_drive_0034_sync 2994 l
+2011_09_26/2011_09_26_drive_0061_sync 241 l
+2011_09_26/2011_09_26_drive_0032_sync 65 r
+2011_09_29/2011_09_29_drive_0004_sync 68 r
+2011_09_26/2011_09_26_drive_0005_sync 92 r
+2011_09_26/2011_09_26_drive_0091_sync 272 r
+2011_09_30/2011_09_30_drive_0028_sync 3853 r
+2011_09_26/2011_09_26_drive_0087_sync 313 r
+2011_10_03/2011_10_03_drive_0034_sync 2461 l
+2011_09_30/2011_09_30_drive_0034_sync 195 r
+2011_09_30/2011_09_30_drive_0028_sync 1199 l
+2011_10_03/2011_10_03_drive_0042_sync 933 r
+2011_10_03/2011_10_03_drive_0034_sync 2632 l
+2011_10_03/2011_10_03_drive_0034_sync 3909 l
+2011_09_26/2011_09_26_drive_0028_sync 363 l
+2011_09_26/2011_09_26_drive_0019_sync 474 l
+2011_09_30/2011_09_30_drive_0033_sync 1363 l
+2011_09_30/2011_09_30_drive_0028_sync 4399 r
+2011_09_30/2011_09_30_drive_0028_sync 3237 r
+2011_09_30/2011_09_30_drive_0028_sync 1145 l
+2011_09_28/2011_09_28_drive_0001_sync 31 l
+2011_09_26/2011_09_26_drive_0087_sync 370 l
+2011_09_26/2011_09_26_drive_0104_sync 260 r
+2011_09_30/2011_09_30_drive_0028_sync 3447 l
+2011_09_30/2011_09_30_drive_0028_sync 2024 l
+2011_09_26/2011_09_26_drive_0039_sync 134 l
+2011_09_30/2011_09_30_drive_0033_sync 803 r
+2011_09_30/2011_09_30_drive_0034_sync 62 r
+2011_09_30/2011_09_30_drive_0028_sync 2109 l
+2011_09_29/2011_09_29_drive_0026_sync 58 r
+2011_10_03/2011_10_03_drive_0034_sync 2257 l
+2011_09_26/2011_09_26_drive_0091_sync 242 l
+2011_09_30/2011_09_30_drive_0034_sync 675 l
+2011_10_03/2011_10_03_drive_0034_sync 3635 l
+2011_09_26/2011_09_26_drive_0079_sync 59 l
+2011_09_26/2011_09_26_drive_0087_sync 386 l
+2011_09_26/2011_09_26_drive_0095_sync 244 r
+2011_09_26/2011_09_26_drive_0057_sync 292 r
+2011_09_30/2011_09_30_drive_0028_sync 2725 r
+2011_09_26/2011_09_26_drive_0022_sync 123 r
+2011_10_03/2011_10_03_drive_0034_sync 1822 l
+2011_10_03/2011_10_03_drive_0042_sync 666 r
+2011_09_26/2011_09_26_drive_0019_sync 269 l
+2011_09_26/2011_09_26_drive_0061_sync 562 r
+2011_09_26/2011_09_26_drive_0087_sync 316 r
+2011_10_03/2011_10_03_drive_0034_sync 3327 r
+2011_09_30/2011_09_30_drive_0028_sync 730 r
+2011_10_03/2011_10_03_drive_0034_sync 2174 r
+2011_09_30/2011_09_30_drive_0028_sync 1906 r
+2011_09_26/2011_09_26_drive_0087_sync 273 r
+2011_09_26/2011_09_26_drive_0039_sync 291 l
+2011_09_26/2011_09_26_drive_0061_sync 274 l
+2011_09_30/2011_09_30_drive_0034_sync 333 l
+2011_09_26/2011_09_26_drive_0022_sync 168 l
+2011_10_03/2011_10_03_drive_0042_sync 715 r
+2011_09_30/2011_09_30_drive_0028_sync 3811 r
+2011_09_26/2011_09_26_drive_0017_sync 24 r
+2011_09_30/2011_09_30_drive_0028_sync 3647 l
+2011_09_26/2011_09_26_drive_0061_sync 127 r
+2011_09_26/2011_09_26_drive_0113_sync 30 r
+2011_09_30/2011_09_30_drive_0028_sync 3175 r
+2011_09_30/2011_09_30_drive_0028_sync 702 r
+2011_10_03/2011_10_03_drive_0034_sync 3003 r
+2011_09_30/2011_09_30_drive_0028_sync 333 r
+2011_09_30/2011_09_30_drive_0028_sync 3537 l
+2011_10_03/2011_10_03_drive_0034_sync 680 l
+2011_09_26/2011_09_26_drive_0061_sync 518 l
+2011_09_26/2011_09_26_drive_0057_sync 90 r
+2011_09_30/2011_09_30_drive_0028_sync 1174 l
+2011_09_26/2011_09_26_drive_0022_sync 245 r
+2011_09_26/2011_09_26_drive_0104_sync 252 r
+2011_09_26/2011_09_26_drive_0087_sync 161 l
+2011_10_03/2011_10_03_drive_0042_sync 777 r
+2011_09_26/2011_09_26_drive_0001_sync 100 l
+2011_10_03/2011_10_03_drive_0034_sync 4279 r
+2011_10_03/2011_10_03_drive_0042_sync 273 r
+2011_09_26/2011_09_26_drive_0095_sync 95 l
+2011_09_26/2011_09_26_drive_0070_sync 116 r
+2011_09_30/2011_09_30_drive_0028_sync 493 r
+2011_09_29/2011_09_29_drive_0004_sync 41 r
+2011_10_03/2011_10_03_drive_0034_sync 914 r
+2011_10_03/2011_10_03_drive_0034_sync 1289 r
+2011_10_03/2011_10_03_drive_0034_sync 317 r
+2011_09_30/2011_09_30_drive_0028_sync 4865 r
+2011_10_03/2011_10_03_drive_0034_sync 4478 r
+2011_09_26/2011_09_26_drive_0070_sync 198 l
+2011_10_03/2011_10_03_drive_0034_sync 654 l
+2011_09_30/2011_09_30_drive_0034_sync 528 l
+2011_09_26/2011_09_26_drive_0028_sync 342 l
+2011_09_30/2011_09_30_drive_0033_sync 617 r
+2011_09_30/2011_09_30_drive_0033_sync 1300 l
+2011_10_03/2011_10_03_drive_0034_sync 929 l
+2011_09_26/2011_09_26_drive_0014_sync 219 l
+2011_09_30/2011_09_30_drive_0028_sync 4439 l
+2011_09_30/2011_09_30_drive_0028_sync 909 r
+2011_10_03/2011_10_03_drive_0034_sync 3208 l
+2011_10_03/2011_10_03_drive_0034_sync 3384 r
+2011_10_03/2011_10_03_drive_0034_sync 2328 l
+2011_10_03/2011_10_03_drive_0034_sync 1499 r
+2011_09_26/2011_09_26_drive_0028_sync 65 r
+2011_09_26/2011_09_26_drive_0087_sync 37 l
+2011_09_30/2011_09_30_drive_0028_sync 1906 l
+2011_09_30/2011_09_30_drive_0020_sync 870 l
+2011_10_03/2011_10_03_drive_0042_sync 195 r
+2011_09_30/2011_09_30_drive_0020_sync 1016 r
+2011_09_26/2011_09_26_drive_0070_sync 150 r
+2011_09_30/2011_09_30_drive_0028_sync 4369 l
+2011_09_30/2011_09_30_drive_0028_sync 3446 r
+2011_09_30/2011_09_30_drive_0020_sync 994 l
+2011_09_26/2011_09_26_drive_0095_sync 138 r
+2011_09_26/2011_09_26_drive_0087_sync 101 r
+2011_09_30/2011_09_30_drive_0034_sync 422 l
+2011_09_30/2011_09_30_drive_0034_sync 941 r
+2011_09_26/2011_09_26_drive_0028_sync 12 r
+2011_09_30/2011_09_30_drive_0028_sync 2494 r
+2011_09_30/2011_09_30_drive_0033_sync 1097 r
+2011_09_26/2011_09_26_drive_0061_sync 544 r
+2011_10_03/2011_10_03_drive_0042_sync 634 r
+2011_09_30/2011_09_30_drive_0028_sync 3051 l
+2011_10_03/2011_10_03_drive_0042_sync 974 r
+2011_10_03/2011_10_03_drive_0034_sync 3777 l
+2011_09_30/2011_09_30_drive_0028_sync 2451 r
+2011_09_30/2011_09_30_drive_0034_sync 969 r
+2011_09_30/2011_09_30_drive_0028_sync 514 r
+2011_09_30/2011_09_30_drive_0033_sync 76 r
+2011_10_03/2011_10_03_drive_0034_sync 3384 l
+2011_09_26/2011_09_26_drive_0113_sync 40 r
+2011_09_30/2011_09_30_drive_0020_sync 560 l
+2011_09_26/2011_09_26_drive_0014_sync 41 l
+2011_09_26/2011_09_26_drive_0104_sync 277 r
+2011_09_26/2011_09_26_drive_0113_sync 70 l
+2011_09_30/2011_09_30_drive_0028_sync 4804 r
+2011_09_30/2011_09_30_drive_0034_sync 790 l
+2011_09_26/2011_09_26_drive_0039_sync 104 l
+2011_09_30/2011_09_30_drive_0028_sync 2076 l
+2011_09_26/2011_09_26_drive_0011_sync 42 l
+2011_09_26/2011_09_26_drive_0015_sync 4 l
+2011_09_30/2011_09_30_drive_0033_sync 48 r
+2011_10_03/2011_10_03_drive_0034_sync 481 r
+2011_09_26/2011_09_26_drive_0039_sync 254 r
+2011_10_03/2011_10_03_drive_0034_sync 4117 l
+2011_09_30/2011_09_30_drive_0028_sync 2426 l
+2011_09_30/2011_09_30_drive_0028_sync 4115 l
+2011_09_26/2011_09_26_drive_0022_sync 123 l
+2011_09_26/2011_09_26_drive_0022_sync 746 r
+2011_09_30/2011_09_30_drive_0028_sync 2376 r
+2011_09_29/2011_09_29_drive_0004_sync 90 l
+2011_09_29/2011_09_29_drive_0004_sync 224 l
+2011_09_26/2011_09_26_drive_0057_sync 307 l
+2011_09_30/2011_09_30_drive_0020_sync 598 l
+2011_09_28/2011_09_28_drive_0001_sync 79 r
+2011_09_30/2011_09_30_drive_0034_sync 571 l
+2011_09_26/2011_09_26_drive_0022_sync 656 r
+2011_09_30/2011_09_30_drive_0020_sync 1017 l
+2011_09_26/2011_09_26_drive_0032_sync 147 r
+2011_10_03/2011_10_03_drive_0034_sync 441 r
+2011_09_26/2011_09_26_drive_0014_sync 182 r
+2011_09_30/2011_09_30_drive_0033_sync 1518 r
+2011_09_30/2011_09_30_drive_0028_sync 2174 l
+2011_09_26/2011_09_26_drive_0051_sync 433 r
+2011_09_30/2011_09_30_drive_0028_sync 2749 l
\ No newline at end of file
diff --git a/finetune/Metric3D/training/kitti_json_files/generate_json.py b/finetune/Metric3D/training/kitti_json_files/generate_json.py
new file mode 100644
index 0000000000000000000000000000000000000000..da28d91ea1feceef258c2265a9de23359049b703
--- /dev/null
+++ b/finetune/Metric3D/training/kitti_json_files/generate_json.py
@@ -0,0 +1,85 @@
+import os
+import json
+
+common_root = 'd:/Datasets'
+depth_root = 'kitti/kitti_depth/depth/data_depth_annotated'
+raw_root = 'kitti_raw/kitti_raw'
+
+#print(os.listdir(os.path.join(common_root, raw_root)))
+
+mid = 'proj_depth/groundtruth'
+mid_raw = 'data'
+
+test_file_dict = {}
+test_file_list = []
+train_file_dict = {}
+
+
+with open('D:/Datasets/eigen_train.txt') as f:
+ lines_train = f.readlines()
+
+cnt = 0
+invalid_cnt = 0
+
+if True:
+ lines = lines_train
+
+ for l in lines:
+ l_ls = l.split(' ')
+ scene = l_ls[0]
+ date = scene.split('/')[0]
+ scene_no_date = scene.split('/')[1]
+ frame = l_ls[1]
+ frame = frame.zfill(10)
+
+ if 'l' in l_ls[2]:
+ cam = 'image_02'
+ P_str = 'P_rect_02'
+ elif 'r' in l_ls[2]:
+ cam = 'image_03'
+ P_str = 'P_rect_03'
+ else:
+ raise NotImplementedError()
+
+ depth_train = os.path.join(depth_root, 'train', scene_no_date, mid, cam , frame + '.png')
+ depth_val = os.path.join(depth_root, 'val', scene_no_date, mid, cam, frame+'.png')
+ rgb = os.path.join(raw_root, scene, cam, mid_raw, frame+'.png')
+
+ with open(os.path.join(common_root, raw_root, date, 'calib_cam_to_cam.txt')) as c:
+ lines_c = c.readlines()
+
+ for l_c in lines_c:
+ if P_str in l_c:
+ k_str = l_c.split(':')[1:]
+ k = k_str[0].split(' ')
+ cam_in = [float(k[1]), float(k[6]), float(k[3]), float(k[7])]
+
+ rgb_path = os.path.join(common_root, rgb)
+ assert os.path.join(common_root, rgb_path)
+
+ if os.path.exists(os.path.join(common_root, depth_train)):
+ depth_path = os.path.join(common_root, depth_train)
+ depth_rel = depth_train
+
+ else:
+ depth_path = os.path.join(common_root, depth_val)
+ depth_rel = depth_val
+
+ try:
+ assert os.path.exists(depth_path)
+ cnt += 1
+ except:
+ invalid_cnt += 1
+ continue
+
+ curr_file = [{'rgb':rgb.replace("\\", '/'), 'depth':depth_rel.replace("\\", '/'), 'cam_in':cam_in}]
+ test_file_list = test_file_list + curr_file
+
+ if ((cnt + invalid_cnt) % 1000 == 0):
+ print(cnt + invalid_cnt)
+
+print(cnt, invalid_cnt)
+
+train_file_dict['files'] = test_file_list
+with open('eigen_train.json', 'w') as fj:
+ json.dump(train_file_dict, fj)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/__init__.py b/finetune/Metric3D/training/mono/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.kitti.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.kitti.py
new file mode 100644
index 0000000000000000000000000000000000000000..5b6a7202ddeb34e49ca742282bab357bba5dc26d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.kitti.py
@@ -0,0 +1,132 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/kitti.py'
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=0.1),
+ dict(type='GRUSequenceLoss', loss_weight=1.0, loss_gamma=0.9, stereo_sup=0),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.001, loss_fn='CEL', scale=2)
+ ],
+)
+
+data_array = [
+
+ [
+ dict(KITTI='KITTI_dataset'),
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+#log_interval = 100
+
+interval = 4000
+log_interval = 100
+evaluation = dict(
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=20010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+ encoder=dict(lr=5e-7, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ decoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ strict_match = True
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=20,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-8, by_epoch=False)
+
+acc_batch = 1
+batchsize_per_gpu = 2
+thread_per_gpu = 2
+
+KITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.nyu.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.nyu.py
new file mode 100644
index 0000000000000000000000000000000000000000..c59676811aec1a05917adeca2c1f43a46e9bec88
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.nyu.py
@@ -0,0 +1,136 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/kitti.py'
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='GRUSequenceLoss', loss_weight=1.0, loss_gamma=0.9, stereo_sup=0),
+ dict(type='NormalBranchLoss', loss_weight=1.5, loss_fn='NLL_ours_GRU'),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.001, loss_fn='CEL', scale=2),
+ dict(type='HDNRandomLoss', loss_weight=0.5, random_num=10),
+ dict(type='HDSNRandomLoss', loss_weight=0.5, random_num=20, batch_limit=4),
+ dict(type='PWNPlanesLoss', loss_weight=1),
+ ],
+)
+
+data_array = [
+
+ [
+ dict(NYU='NYU_dataset'),
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+#log_interval = 100
+
+interval = 4000
+log_interval = 200
+evaluation = dict(
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=20010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+ encoder=dict(lr=5e-7, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ decoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ strict_match = True
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=20,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-8, by_epoch=False)
+
+acc_batch = 1
+batchsize_per_gpu = 2
+thread_per_gpu = 2
+
+NYU_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.py
new file mode 100644
index 0000000000000000000000000000000000000000..fef5d6177d199f8f2c5b03b254b74d47d6c34bc2
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.giant2.py
@@ -0,0 +1,1048 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/datasets/argovers2.py',
+ '../_base_/datasets/cityscapes.py',
+ '../_base_/datasets/drivingstereo.py',
+ '../_base_/datasets/dsec.py',
+ '../_base_/datasets/lyft.py',
+ '../_base_/datasets/mapillary_psd.py',
+ '../_base_/datasets/diml.py',
+ '../_base_/datasets/taskonomy.py',
+ '../_base_/datasets/uasol.py',
+ '../_base_/datasets/pandaset.py',
+ '../_base_/datasets/waymo.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py',
+
+ '../_base_/datasets/hm3d.py',
+ '../_base_/datasets/matterport3d.py',
+ '../_base_/datasets/replica.py',
+ '../_base_/datasets/vkitti.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='GRUSequenceLoss', loss_weight=0.5, loss_gamma=0.9, stereo_sup=0.0),
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ dict(type='HDNRandomLoss', loss_weight=0.5, random_num=10),
+ dict(type='HDSNRandomLoss', loss_weight=0.5, random_num=20, batch_limit=4),
+ dict(type='PWNPlanesLoss', loss_weight=1),
+ dict(type='NormalBranchLoss', loss_weight=1.5, loss_fn='NLL_ours_GRU'),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.01, loss_fn='CEL', scale=2, depth_detach=True)
+ ],
+ gru_losses=[
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ ],
+)
+
+data_array = [
+ # Outdoor 1
+ [
+ dict(UASOL='UASOL_dataset'), #13.6w
+ dict(Cityscapes_trainextra='Cityscapes_dataset'), #1.8w
+ dict(Cityscapes_sequence='Cityscapes_dataset'), #13.5w
+ dict(DIML='DIML_dataset'), # 12.2w
+ dict(Waymo='Waymo_dataset'), # 99w
+ ],
+ # Outdoor 2
+ [
+ dict(DSEC='DSEC_dataset'),
+ dict(Mapillary_PSD='MapillaryPSD_dataset'), # 74.2w
+ dict(DrivingStereo='DrivingStereo_dataset'), # 17.6w
+ dict(Argovers2='Argovers2_dataset'), # 285.6w
+ ],
+ # Outdoor 3
+ [
+ dict(Lyft='Lyft_dataset'), #15.8w
+ dict(DDAD='DDAD_dataset'), #7.4w
+ dict(Pandaset='Pandaset_dataset'), #3.8w
+ dict(Virtual_KITTI='VKITTI_dataset'), # 3.7w # syn
+ ],
+ #Indoor 1
+ [
+ dict(Replica='Replica_dataset'), # 5.6w # syn
+ dict(Replica_gso='Replica_dataset'), # 10.7w # syn
+ dict(Hypersim='Hypersim_dataset'), # 2.4w
+ dict(ScanNetAll='ScanNetAll_dataset'),
+ ],
+ # Indoor 2
+ [
+ dict(Taskonomy='Taskonomy_dataset'), #447.2w
+ dict(Matterport3D='Matterport3D_dataset'), #14.4w
+ dict(HM3D='HM3D_dataset'), # 200w, very noisy, sampled some data
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+log_interval = 100
+acc_batch = 1
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+interval = 40000
+evaluation = dict(
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=800010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+# encoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+ encoder=dict(lr=8e-6, betas=(0.9, 0.999), weight_decay=1e-3, eps=1e-6),
+ decoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+ #strict_match=True
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=1000,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-6, by_epoch=False)
+
+batchsize_per_gpu = 3
+thread_per_gpu = 1
+
+Argovers2_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Cityscapes_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DIML_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Lyft_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DDAD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ # sample_size = 1200,
+ ),
+ ))
+DSEC_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DrivingStereo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+MapillaryPSD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Pandaset_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Taskonomy_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+UASOL_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Waymo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Matterport3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Replica_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+VKITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+HM3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+BlendedMVG_omni_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ ))
+ScanNetAll_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Hypersim_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.kitti.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.kitti.py
new file mode 100644
index 0000000000000000000000000000000000000000..7870c9760a79a2634542a188cccfe7fc0571bab1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.kitti.py
@@ -0,0 +1,132 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/kitti.py'
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=0.1),
+ dict(type='GRUSequenceLoss', loss_weight=1.0, loss_gamma=0.9, stereo_sup=0),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.001, loss_fn='CEL', scale=2)
+ ],
+)
+
+data_array = [
+
+ [
+ dict(KITTI='KITTI_dataset'),
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+#log_interval = 100
+
+interval = 4000
+log_interval = 100
+evaluation = dict(
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=20010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+ encoder=dict(lr=5e-7, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ decoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=0, eps=1e-10),
+ strict_match = True
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=20,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-8, by_epoch=False)
+
+acc_batch = 1
+batchsize_per_gpu = 2
+thread_per_gpu = 2
+
+KITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.py
new file mode 100644
index 0000000000000000000000000000000000000000..645d24d76e2078bb3806b0bc9d68c0b4add814aa
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.large.py
@@ -0,0 +1,1047 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/datasets/argovers2.py',
+ '../_base_/datasets/cityscapes.py',
+ '../_base_/datasets/drivingstereo.py',
+ '../_base_/datasets/dsec.py',
+ '../_base_/datasets/lyft.py',
+ '../_base_/datasets/mapillary_psd.py',
+ '../_base_/datasets/diml.py',
+ '../_base_/datasets/taskonomy.py',
+ '../_base_/datasets/uasol.py',
+ '../_base_/datasets/pandaset.py',
+ '../_base_/datasets/waymo.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py',
+
+ '../_base_/datasets/hm3d.py',
+ '../_base_/datasets/matterport3d.py',
+ '../_base_/datasets/replica.py',
+ '../_base_/datasets/vkitti.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='GRUSequenceLoss', loss_weight=0.5, loss_gamma=0.9, stereo_sup=0.0),
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ dict(type='HDNRandomLoss', loss_weight=0.5, random_num=10),
+ dict(type='HDSNRandomLoss', loss_weight=0.5, random_num=20, batch_limit=4),
+ dict(type='PWNPlanesLoss', loss_weight=1),
+ dict(type='NormalBranchLoss', loss_weight=1.0, loss_fn='NLL_ours_GRU'),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.01, loss_fn='CEL', scale=2, depth_detach=True)
+ ],
+ gru_losses=[
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ ],
+)
+
+data_array = [
+ # Outdoor 1
+ [
+ dict(UASOL='UASOL_dataset'), #13.6w
+ dict(Cityscapes_trainextra='Cityscapes_dataset'), #1.8w
+ dict(Cityscapes_sequence='Cityscapes_dataset'), #13.5w
+ dict(DIML='DIML_dataset'), # 12.2w
+ dict(Waymo='Waymo_dataset'), # 99w
+ ],
+ # Outdoor 2
+ [
+ dict(DSEC='DSEC_dataset'),
+ dict(Mapillary_PSD='MapillaryPSD_dataset'), # 74.2w
+ dict(DrivingStereo='DrivingStereo_dataset'), # 17.6w
+ dict(Argovers2='Argovers2_dataset'), # 285.6w
+ ],
+ # Outdoor 3
+ [
+ dict(Lyft='Lyft_dataset'), #15.8w
+ dict(DDAD='DDAD_dataset'), #7.4w
+ dict(Pandaset='Pandaset_dataset'), #3.8w
+ dict(Virtual_KITTI='VKITTI_dataset'), # 3.7w # syn
+ ],
+ #Indoor 1
+ [
+ dict(Replica='Replica_dataset'), # 5.6w # syn
+ dict(Replica_gso='Replica_dataset'), # 10.7w # syn
+ dict(Hypersim='Hypersim_dataset'), # 2.4w
+ dict(ScanNetAll='ScanNetAll_dataset'),
+ ],
+ # Indoor 2
+ [
+ dict(Taskonomy='Taskonomy_dataset'), #447.2w
+ dict(Matterport3D='Matterport3D_dataset'), #14.4w
+ dict(HM3D='HM3D_dataset'), # 200w, very noisy, sampled some data
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+log_interval = 100
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+interval = 20000
+evaluation = dict(
+ #online_eval=True,
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=800010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+# encoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+ encoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=1e-3, eps=1e-6),
+ decoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=500,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-6, by_epoch=False)
+
+batchsize_per_gpu = 4
+thread_per_gpu = 4
+
+Argovers2_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Cityscapes_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DIML_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Lyft_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DDAD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ # sample_size = 1200,
+ ),
+ ))
+DSEC_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DrivingStereo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+MapillaryPSD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Pandaset_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Taskonomy_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+UASOL_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Waymo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Matterport3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Replica_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+VKITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+HM3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+BlendedMVG_omni_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ ))
+ScanNetAll_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Hypersim_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.py
new file mode 100644
index 0000000000000000000000000000000000000000..484e1df74f598faf4bd08c9698ab512f92ebb3f5
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.py
@@ -0,0 +1,1047 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/datasets/argovers2.py',
+ '../_base_/datasets/cityscapes.py',
+ '../_base_/datasets/drivingstereo.py',
+ '../_base_/datasets/dsec.py',
+ '../_base_/datasets/lyft.py',
+ '../_base_/datasets/mapillary_psd.py',
+ '../_base_/datasets/diml.py',
+ '../_base_/datasets/taskonomy.py',
+ '../_base_/datasets/uasol.py',
+ '../_base_/datasets/pandaset.py',
+ '../_base_/datasets/waymo.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py',
+
+ '../_base_/datasets/hm3d.py',
+ '../_base_/datasets/matterport3d.py',
+ '../_base_/datasets/replica.py',
+ '../_base_/datasets/vkitti.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='GRUSequenceLoss', loss_weight=0.5, loss_gamma=0.9, stereo_sup=0.0),
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ dict(type='HDNRandomLoss', loss_weight=0.5, random_num=10),
+ dict(type='HDSNRandomLoss', loss_weight=0.5, random_num=20, batch_limit=4),
+ dict(type='PWNPlanesLoss', loss_weight=1),
+ dict(type='NormalBranchLoss', loss_weight=1.0, loss_fn='NLL_ours_GRU'),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.01, loss_fn='CEL', scale=2, depth_detach=True)
+ ],
+ gru_losses=[
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ ],
+)
+
+data_array = [
+ # Outdoor 1
+ [
+ dict(UASOL='UASOL_dataset'), #13.6w
+ dict(Cityscapes_trainextra='Cityscapes_dataset'), #1.8w
+ dict(Cityscapes_sequence='Cityscapes_dataset'), #13.5w
+ dict(DIML='DIML_dataset'), # 12.2w
+ dict(Waymo='Waymo_dataset'), # 99w
+ ],
+ # Outdoor 2
+ [
+ dict(DSEC='DSEC_dataset'),
+ dict(Mapillary_PSD='MapillaryPSD_dataset'), # 74.2w
+ dict(DrivingStereo='DrivingStereo_dataset'), # 17.6w
+ dict(Argovers2='Argovers2_dataset'), # 285.6w
+ ],
+ # Outdoor 3
+ [
+ dict(Lyft='Lyft_dataset'), #15.8w
+ dict(DDAD='DDAD_dataset'), #7.4w
+ dict(Pandaset='Pandaset_dataset'), #3.8w
+ dict(Virtual_KITTI='VKITTI_dataset'), # 3.7w # syn
+ ],
+ #Indoor 1
+ [
+ dict(Replica='Replica_dataset'), # 5.6w # syn
+ dict(Replica_gso='Replica_dataset'), # 10.7w # syn
+ dict(Hypersim='Hypersim_dataset'), # 2.4w
+ dict(ScanNetAll='ScanNetAll_dataset'),
+ ],
+ # Indoor 2
+ [
+ dict(Taskonomy='Taskonomy_dataset'), #447.2w
+ dict(Matterport3D='Matterport3D_dataset'), #14.4w
+ dict(HM3D='HM3D_dataset'), # 200w, very noisy, sampled some data
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+log_interval = 100
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+interval = 20000
+evaluation = dict(
+ #online_eval=True,
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+ exclude=['DIML_indoor', 'GL3D', 'Tourism', 'MegaDepth'],
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=800010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+# encoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+ encoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=1e-3, eps=1e-6),
+ decoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=500,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-6, by_epoch=False)
+
+batchsize_per_gpu = 6
+thread_per_gpu = 4
+
+Argovers2_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Cityscapes_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DIML_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Lyft_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DDAD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ # sample_size = 1200,
+ ),
+ ))
+DSEC_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DrivingStereo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+MapillaryPSD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Pandaset_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Taskonomy_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+UASOL_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Waymo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Matterport3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Replica_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+VKITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+HM3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+BlendedMVG_omni_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ ))
+ScanNetAll_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Hypersim_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.sanity_check.py b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.sanity_check.py
new file mode 100644
index 0000000000000000000000000000000000000000..a882418caeeb35a0778c526ed81a771306a775db
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/RAFTDecoder/vit.raft5.small.sanity_check.py
@@ -0,0 +1,1014 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+ '../_base_/datasets/argovers2.py',
+ '../_base_/datasets/cityscapes.py',
+ '../_base_/datasets/drivingstereo.py',
+ '../_base_/datasets/dsec.py',
+ '../_base_/datasets/lyft.py',
+ '../_base_/datasets/mapillary_psd.py',
+ '../_base_/datasets/diml.py',
+ '../_base_/datasets/taskonomy.py',
+ '../_base_/datasets/uasol.py',
+ '../_base_/datasets/pandaset.py',
+ '../_base_/datasets/waymo.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py',
+
+ '../_base_/datasets/hm3d.py',
+ '../_base_/datasets/matterport3d.py',
+ '../_base_/datasets/replica.py',
+ '../_base_/datasets/vkitti.py',
+ ]
+
+import numpy as np
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ ),
+)
+
+# loss method
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='GRUSequenceLoss', loss_weight=0.5, loss_gamma=0.9, stereo_sup=0.0),
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ dict(type='HDNRandomLoss', loss_weight=0.5, random_num=10),
+ dict(type='HDSNRandomLoss', loss_weight=0.5, random_num=20, batch_limit=4),
+ dict(type='PWNPlanesLoss', loss_weight=1),
+ dict(type='NormalBranchLoss', loss_weight=1.0, loss_fn='NLL_ours_GRU'),
+ dict(type='DeNoConsistencyLoss', loss_weight=0.01, loss_fn='CEL', scale=2, depth_detach=True)
+ ],
+ gru_losses=[
+ dict(type='SkyRegularizationLoss', loss_weight=0.001, sample_ratio=0.4, regress_value=200, normal_regress=[0, 0, -1]),
+ ],
+)
+
+data_array = [
+ [
+ dict(Matterport3D='Matterport3D_dataset'), #14.4w
+ ],
+]
+
+
+
+# configs of the canonical space
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),
+# crop_size=(544, 1216),
+# crop_size = (544, 992),
+ crop_size = (616, 1064), # %28 = 0
+)
+
+log_interval = 100
+# online evaluation
+# evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1', 'rmse'], multi_dataset_eval=True)
+interval = 20000
+evaluation = dict(
+ #online_eval=True,
+ online_eval=False,
+ interval=interval,
+ metrics=['abs_rel', 'delta1', 'rmse', 'normal_mean', 'normal_rmse', 'normal_a1'],
+ multi_dataset_eval=True,
+)
+
+# save checkpoint during training, with '*_AMP' is employing the automatic mix precision training
+checkpoint_config = dict(by_epoch=False, interval=interval)
+runner = dict(type='IterBasedRunner_AMP', max_iters=800010)
+
+# optimizer
+optimizer = dict(
+ type='AdamW',
+# encoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+ encoder=dict(lr=1e-5, betas=(0.9, 0.999), weight_decay=1e-3, eps=1e-6),
+ decoder=dict(lr=1e-4, betas=(0.9, 0.999), weight_decay=0.01, eps=1e-6),
+)
+# schedule
+lr_config = dict(policy='poly',
+ warmup='linear',
+ warmup_iters=500,
+ warmup_ratio=1e-6,
+ power=0.9, min_lr=1e-6, by_epoch=False)
+
+batchsize_per_gpu = 3
+thread_per_gpu = 4
+
+Argovers2_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Cityscapes_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DIML_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Lyft_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DDAD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ # sample_size = 1200,
+ ),
+ ))
+DSEC_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+DrivingStereo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+MapillaryPSD_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Pandaset_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Taskonomy_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+UASOL_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Waymo_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=True),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Matterport3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Replica_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+VKITTI_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+HM3D_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+BlendedMVG_omni_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.75, 1.3),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ ),
+ ))
+ScanNetAll_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
+Hypersim_dataset=dict(
+ data = dict(
+ train=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomResize',
+ prob=0.5,
+ ratio_range=(0.85, 1.15),
+ is_lidar=False),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.05),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ #sample_size = 10000,
+ ),
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_size = 1200,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/__init__.py b/finetune/Metric3D/training/mono/configs/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/__init__.py
@@ -0,0 +1 @@
+
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/7scenes.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/7scenes.py
new file mode 100644
index 0000000000000000000000000000000000000000..2d2e42a9bdd2c9e8c2ffb8a6f637c617e978b875
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/7scenes.py
@@ -0,0 +1,83 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+SevenScenes_dataset=dict(
+ lib = 'SevenScenesDataset',
+ data_root = 'data/public_datasets',
+ data_name = '7Scenes',
+ transfer_to_canonical = True,
+ metric_scale = 1000.0,
+ original_focal_length = 500,
+ original_size = (480, 640),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='AdjustSize',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/_data_base_.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/_data_base_.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f1d339ad89ad1c9a0fec6c5bee928a2462b2eb1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/_data_base_.py
@@ -0,0 +1,12 @@
+# canonical camera setting and basic data setting
+
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1196.0,
+ ),
+ depth_range=(0.9, 150),
+ depth_normalize=(0.006, 1.001),
+ crop_size = (512, 960),
+ clip_depth_range=(0.1, 200),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/argovers2.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/argovers2.py
new file mode 100644
index 0000000000000000000000000000000000000000..158841701fa3cf2ddbb8092f9d6992dc760d4735
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/argovers2.py
@@ -0,0 +1,74 @@
+# dataset settings
+
+Argovers2_dataset=dict(
+ lib = 'Argovers2Dataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Argovers2',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (1688.844624443858, 1776.8498213965734),
+ original_size = (1550, 2048),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Argovers2/annotations/train_annotations_wneigh.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Argovers2/annotations/val_annotations_wneigh.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Argovers2/annotations/test_annotations_wneigh.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 6000,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/blended_mvg.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/blended_mvg.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ee6b8dce6c132dc9293dc7319517e56fe315f43
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/blended_mvg.py
@@ -0,0 +1,78 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+BlendedMVG_omni_dataset=dict(
+ lib = 'BlendedMVGOmniDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'BlendedMVG_omni',
+ transfer_to_canonical = True,
+ metric_scale = 512.0,
+ original_focal_length = 575.6656,
+ original_size = (576, 768),
+ data_type='denselidar_nometric',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='BlendedMVG/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='BlendedMVG/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 5,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='BlendedMVG/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[123.675, 116.28, 103.53]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/cityscapes.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/cityscapes.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff3721ce6751bf159cc929351902730adccedec0
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/cityscapes.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+Cityscapes_dataset=dict(
+ lib = 'CityscapesDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Cityscapes',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (2263.9108952994275, 2263.9108952994275),
+ original_size = (1024, 2048),
+ data_type='stereo',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Cityscapes_sequence/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Cityscapes_sequence/annotations/val.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Cityscapes_sequence/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad.py
new file mode 100644
index 0000000000000000000000000000000000000000..522dc563fb639d3254eb116f247aecdce0e79c7d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad.py
@@ -0,0 +1,80 @@
+# dataset settings
+
+DDAD_dataset=dict(
+ lib = 'DDADDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DDAD',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (2181, 1060),
+ original_size = (1216, 1936),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DDAD/annotations/train_annotations.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DDAD/annotations/val_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DDAD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ # dict(type='LabelScaleCononical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960), #(1216, 1952), #
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 800,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad_any.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad_any.py
new file mode 100644
index 0000000000000000000000000000000000000000..3dc24d84df26cd4b778f21ab65775abd453853d1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/ddad_any.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+DDADAny_dataset=dict(
+ lib = 'AnyDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DDAD',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (2181, 1060),
+ original_size = (1216, 1936),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DDAD/annotations/train_annotations.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DDAD/annotations/val_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DDAD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 6000,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/diml.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/diml.py
new file mode 100644
index 0000000000000000000000000000000000000000..71fe2a7741f9a0871b184eb722f3906bd7860202
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/diml.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+DIML_dataset=dict(
+ lib = 'DIMLDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DIML',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (1398.402, ),
+ original_size = (1080, 1920),
+ data_type='stereo',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DIML/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DIML/annotations/val.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DIML/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/diml_indoor.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/diml_indoor.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c2721effc6317c402c289a803dfa591b440970e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/diml_indoor.py
@@ -0,0 +1,76 @@
+# dataset settings
+
+DIML_indoor_dataset=dict(
+ lib = 'DIMLDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DIML_indoor',
+ metric_scale = 1000.0,
+ data_type='stereo_nocamera',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DIML/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DIML/annotations/val.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DIML/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/diode.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/diode.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6a8de74e6f3101e7d9a39721dbe6eb132c68eed
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/diode.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+DIODE_dataset=dict(
+ lib = 'DIODEDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DIODE',
+ transfer_to_canonical = True,
+ metric_scale = 1.0,
+ original_focal_length = 886.81,
+ original_size = (764, 1024),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DIODE/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DIODE/annotations/val.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 50,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DIODE/annotations/test_annotations_new.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/drivingstereo.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/drivingstereo.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f770a7adb692a28dd621eb174361cd46e13d20a
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/drivingstereo.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+DrivingStereo_dataset=dict(
+ lib = 'DrivingStereoDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DrivingStereo',
+ transfer_to_canonical = True,
+ metric_scale = 256.0,
+ original_focal_length = (1006.938, 1003.556),
+ original_size = (400, 881),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DrivingStereo/annotations/train_annotations.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DrivingStereo/annotations/val_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DrivingStereo/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/dsec.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/dsec.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d1bbcd05f6194f583d39d7b26193860f966faf8
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/dsec.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+DSEC_dataset=dict(
+ lib = 'DSECDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'DSEC',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (1150.8943600390282, ),
+ original_size = (1080, 1440),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='DSEC/annotations/train_annotations_wtmpl.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='DSEC/annotations/val_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='DSEC/annotations/test_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/eth3d.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/eth3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..660db92b301cf48f800b1551ed268b7169dec64a
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/eth3d.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+ETH3D_dataset=dict(
+ lib = 'ETH3DDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'ETH3D',
+ transfer_to_canonical = True,
+ metric_scale = 1.0,
+ original_focal_length = 886.81,
+ original_size = (764, 1024),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='ETH3D/annotations/test_annotations_new.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/hm3d.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/hm3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..c800a616668066b1a8feeaeffdadd6a0e4cd2298
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/hm3d.py
@@ -0,0 +1,78 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+HM3D_dataset=dict(
+ lib = 'HM3DDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'HM3D',
+ transfer_to_canonical = True,
+ metric_scale = 512.0,
+ original_focal_length = 575.6656,
+ original_size = (512, 512),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='HM3D/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.2)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.0,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='HM3D/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='HM3D/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/hypersim.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/hypersim.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6cf4e2ad272d110f2b4b275a31b0683cefc715e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/hypersim.py
@@ -0,0 +1,71 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+Hypersim_dataset=dict(
+ lib = 'HypersimDataset',
+ data_name = 'Hypersim',
+ metric_scale = 1.0,
+ data_type='denselidar_syn',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.3)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.0,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 200,),
+ # configs for the training pipeline
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 2000,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/ibims.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/ibims.py
new file mode 100644
index 0000000000000000000000000000000000000000..0851029095748b90bf9d1b6c4b7cd03b17f2f345
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/ibims.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+IBIMS_dataset=dict(
+ lib = 'IBIMSDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'IBIMS',
+ transfer_to_canonical = True,
+ metric_scale = 1000.0,
+ original_focal_length = 518.857,
+ original_size = (480, 640),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='IBIMS/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='IBIMS/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='IBIMS/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/kitti.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/kitti.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d68f806bea0333c6b6eecfb99c9384adfef2023
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/kitti.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+KITTI_dataset=dict(
+ lib = 'KITTIDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'KITTI',
+ transfer_to_canonical = True,
+ metric_scale = 256.0,
+ original_focal_length = 518.857,
+ original_size = (480, 640),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='KITTI/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='KITTI/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='KITTI/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/leddarpixset.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/leddarpixset.py
new file mode 100644
index 0000000000000000000000000000000000000000..27eb3e6d04397792c9a5ed3e3afc9b6c5b827b00
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/leddarpixset.py
@@ -0,0 +1,80 @@
+# dataset settings
+
+LeddarPixSet_dataset=dict(
+ lib = 'LeddarPixSetDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'LeddarPixSet',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (2181, 1060),
+ original_size = (1080, 1440),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='LeddarPixSet/annotations/train_annotations.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='LeddarPixSet/annotations/val_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 50,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='LeddarPixSet/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ # dict(type='LabelScaleCononical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960), #(1216, 1952), #
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft.py
new file mode 100644
index 0000000000000000000000000000000000000000..5917ec9fb5e820834257615267360337c7530b4b
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+Lyft_dataset=dict(
+ lib = 'LyftDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Lyft',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (877.406430795, 3416.79, 1108.782, 3986.358, 3427.04, ),
+ original_size = (1024, 1224),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Lyft/annotations/train_annotations_wtmpl.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Lyft/annotations/val_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Lyft/annotations/test_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 6000,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft_any.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft_any.py
new file mode 100644
index 0000000000000000000000000000000000000000..5775563e8462922168257b240b0d2c2ce9d22214
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/lyft_any.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+LyftAny_dataset=dict(
+ lib = 'AnyDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Lyft',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (877.406430795, 880.82631362),
+ original_size = (1024, 1224),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Lyft/annotations/train_annotations_wtmpl.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Lyft/annotations/val_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Lyft/annotations/test_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[123.675, 116.28, 103.53]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 6000,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/mapillary_psd.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/mapillary_psd.py
new file mode 100644
index 0000000000000000000000000000000000000000..744e246d4e7832fd60eb9695d33dd873205cae5d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/mapillary_psd.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+MapillaryPSD_dataset=dict(
+ lib = 'MapillaryPSDDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'MapillaryPSD',
+ transfer_to_canonical = True,
+ metric_scale = 256.0,
+ original_focal_length = (1664.38, 1725.494, 1231.4812, 2576.447),
+ original_size = (1536, 2048),
+ data_type='sfm',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Mapillary_PSD/annotations/train_annotations.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriten by data_basic configs
+ crop_type='rand', # center, rand, rand_in_field
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Mapillary_PSD/annotations/val_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Mapillary_PSD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/matterport3d.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/matterport3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..c1d3b5a8da21720850b77705c9488a5adef5d741
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/matterport3d.py
@@ -0,0 +1,78 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+Matterport3D_dataset=dict(
+ lib = 'Matterport3DDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Matterport3D',
+ transfer_to_canonical = True,
+ metric_scale = 4000.0,
+ original_focal_length = 575.6656,
+ original_size = (1024, 1280),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Matterport3D/annotations/test.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Matterport3D/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Matterport3D/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d47b3937d501929c1efdba25030ef4e6744feb4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+NuScenes_dataset=dict(
+ lib = 'NuScenesDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'NuScenes',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (877.406430795, 1200.82631362),
+ original_size = (1024, 1224),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='NuScenes/annotations/train_annotations_wtmpl.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='NuScenes/annotations/val_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='NuScenes/annotations/test_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes_any.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes_any.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b1af09a1eecd9a3db11bc9596a439cecc4e58fb
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/nuscenes_any.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+NuScenesAny_dataset=dict(
+ lib = 'AnyDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'NuScenes',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (877.406430795, 1200.82631362),
+ original_size = (1024, 1224),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='NuScenes/annotations/train_annotations_wtmpl.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='NuScenes/annotations/val_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='NuScenes/annotations/test_annotations_wtmpl.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/nyu.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/nyu.py
new file mode 100644
index 0000000000000000000000000000000000000000..f5e81e07893e30daf05ba5ce644e3c9ab6000330
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/nyu.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+NYU_dataset=dict(
+ lib = 'NYUDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'NYU',
+ transfer_to_canonical = True,
+ metric_scale = 6000.0,
+ original_focal_length = 518.857,
+ original_size = (480, 640),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='NYU/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='NYU/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='NYU/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/pandaset.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/pandaset.py
new file mode 100644
index 0000000000000000000000000000000000000000..0e59ed9fc9a9676f42abe2e6665ce6a801e4f9d0
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/pandaset.py
@@ -0,0 +1,79 @@
+# dataset settings
+
+Pandaset_dataset=dict(
+ lib = 'PandasetDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Pandaset',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (1970.01, 930.45, 929.84),
+ original_size = (1080, 1920),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Pandaset/annotations/annotations_train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Pandaset/annotations/annotations_val.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Pandaset/annotations/annotations_test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 800,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/replica.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/replica.py
new file mode 100644
index 0000000000000000000000000000000000000000..2bd849813ea0894875aee1c51d36a9bd269ab3d6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/replica.py
@@ -0,0 +1,78 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+Replica_dataset=dict(
+ lib = 'ReplicaDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Replica',
+ transfer_to_canonical = True,
+ metric_scale = 512.0,
+ original_focal_length = 575.6656,
+ original_size = (512, 512),
+ data_type='denselidar_syn',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Replica/annotations/test.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Replica/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 50,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Replica/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 2000,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ce2390bb1e4444cf6c24d75f4a04ef1407fd1b1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+ScanNet_dataset=dict(
+ lib = 'ScanNetDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'ScanNet',
+ transfer_to_canonical = True,
+ metric_scale = 1000.0,
+ original_focal_length = 1165.371094,
+ original_size = (968, 1296),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='ScanNet/annotations/test.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='ScanNet/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='ScanNet/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet_all.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet_all.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa1e025af160f18b617a1a6c8c02fd1c5f773655
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/scannet_all.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+ScanNetAll_dataset=dict(
+ lib = 'ScanNetDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'ScanNetAll',
+ transfer_to_canonical = True,
+ metric_scale = 1000.0,
+ original_focal_length = 1165.371094,
+ original_size = (968, 1296),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='ScanNet/annotations/test.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='ScanNet/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='ScanNet/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/taskonomy.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/taskonomy.py
new file mode 100644
index 0000000000000000000000000000000000000000..b7ad3f1053ae4556905403b76a8d810c4d787afc
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/taskonomy.py
@@ -0,0 +1,78 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+Taskonomy_dataset=dict(
+ lib = 'TaskonomyDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Taskonomy',
+ transfer_to_canonical = True,
+ metric_scale = 512.0,
+ original_focal_length = 575.6656,
+ original_size = (512, 512),
+ data_type='denselidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Taskonomy/annotations/test.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.3)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.0,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.1,
+ distortion_prob=0.05,),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 50)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Taskonomy/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 20,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Taskonomy/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 2000,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/uasol.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/uasol.py
new file mode 100644
index 0000000000000000000000000000000000000000..b80efd1c60ccf252d92ce946728ba8c5fc0a83a9
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/uasol.py
@@ -0,0 +1,74 @@
+# dataset settings
+
+UASOL_dataset=dict(
+ lib = 'UASOLDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'UASOL',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = (2263.9108952994275, 2263.9108952994275),
+ original_size = (1024, 2048),
+ data_type='stereo',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='UASOL/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='UASOL/annotations/test_all.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 100,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='UASOL/annotations/test_all.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/vkitti.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/vkitti.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2f7b5b39d0ab7237f0b64fecc4190fa8ac497d5
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/vkitti.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+VKITTI_dataset=dict(
+ lib = 'VKITTIDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'VKITTI',
+ transfer_to_canonical = True,
+ metric_scale = 100.0,
+ original_focal_length = 725.0087,
+ original_size = (375, 1242),
+ data_type='denselidar_syn',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='VKITTI/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='VKITTI/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 50,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='VKITTI/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/datasets/waymo.py b/finetune/Metric3D/training/mono/configs/_base_/datasets/waymo.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ac9d95fc15a9be431a044d0fad7d391b6d6ab10
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/datasets/waymo.py
@@ -0,0 +1,80 @@
+# dataset settings
+# data will resized/cropped to the canonical size, refer to ._data_base_.py
+
+Waymo_dataset=dict(
+ lib = 'WaymoDataset',
+ data_root = 'data/public_datasets',
+ data_name = 'Waymo',
+ transfer_to_canonical = True,
+ metric_scale = 200.0,
+ original_focal_length = 2000.8,
+ original_size = (2000, 2000),
+ data_type='lidar',
+ data = dict(
+ # configs for the training pipeline
+ train=dict(
+ anno_path='Waymo/annotations/train.json',
+ sample_ratio = 1.0,
+ sample_size = -1,
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(0.9, 1.4)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='rand',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='RandomEdgeMask',
+ mask_maxsize=50,
+ prob=0.2,
+ rgb_invalid=[0,0,0],
+ label_invalid=-1,),
+ dict(type='RandomHorizontalFlip',
+ prob=0.4),
+ dict(type='PhotoMetricDistortion',
+ to_gray_prob=0.2,
+ distortion_prob=0.1,),
+ dict(type='Weather',
+ prob=0.1),
+ dict(type='RandomBlur',
+ prob=0.05),
+ dict(type='RGBCompresion', prob=0.1, compression=(0, 40)),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],),
+
+ # configs for the training pipeline
+ val=dict(
+ anno_path='Waymo/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='ResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='RandomCrop',
+ crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ crop_type='center',
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 50,),
+ # configs for the training pipeline
+ test=dict(
+ anno_path='Waymo/annotations/test.json',
+ pipeline=[dict(type='BGR2RGB'),
+ # dict(type='LiDarResizeCanonical', ratio_range=(1.0, 1.0)),
+ dict(type='ResizeKeepRatio',
+ resize_size=(512, 960),
+ ignore_label=-1,
+ padding=[0, 0, 0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0), # crop_size will be overwriteen by data_basic configs
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0, 0, 0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,),
+ ),
+)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/default_runtime.py b/finetune/Metric3D/training/mono/configs/_base_/default_runtime.py
new file mode 100644
index 0000000000000000000000000000000000000000..4815a5c0c6bce22f2b8a499f033de971f146aeda
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/default_runtime.py
@@ -0,0 +1,23 @@
+# distributed training configs, if dist_url == 'env://'('tcp://127.0.0.1:6795'), nodes related configs should be set in the shell
+dist_params = dict(port=None, backend='nccl', dist_url='env://')
+
+log_name = 'tbd'
+log_file = 'out.log'
+
+load_from = None
+resume_from = None
+
+#workflow = [('train', 1)]
+cudnn_benchmark = True
+log_interval = 20
+
+use_tensorboard = True
+
+evaluation = dict(online_eval=True, interval=1000, metrics=['abs_rel', 'delta1'])
+checkpoint_config = dict(by_epoch=False, interval=16000)
+
+
+# runtime settings, IterBasedRunner or EpochBasedRunner, e.g. runner = dict(type='EpochBasedRunner', max_epoches=100)
+runner = dict(type='IterBasedRunner', max_iters=160000)
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'sq_rel']
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/_base_/losses/all_losses.py b/finetune/Metric3D/training/mono/configs/_base_/losses/all_losses.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0ad857e7b2f859e72f9bf4556a97e3d6bed6326
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/losses/all_losses.py
@@ -0,0 +1,26 @@
+"""
+There are multiple losses can be applied.
+
+dict(type='GradientLoss_Li', scale_num=4, loss_weight=1.0),
+dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+dict(type='SilogLoss', variance_focus=0.5, loss_weight=1.0),
+dict(type='WCELoss', loss_weight=1.0, depth_normalize=(0.1, 1), bins_num=200)
+dict(type='RegularizationLoss', loss_weight=0.1)
+dict(type='EdgeguidedRankingLoss', loss_weight=1.0)
+Note that out_channel and depth_normalize will be overwriten by configs in data_basic.
+"""
+
+# loss_decode=[dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+# #dict(type='SilogLoss', variance_focus=0.5, loss_weight=1.0),
+# dict(type='WCELoss', loss_weight=1.0, depth_normalize=(0, 0), out_channel=0)]
+
+# loss_auxi = [#dict(type='WCELoss', loss_weight=1.0, depth_normalize=(0.1, 1), out_channel=200),
+# ]
+losses=dict(
+ decoder_losses=[
+ dict(type='VNLoss', sample_ratio=0.2, loss_weight=1.0),
+ dict(type='WCELoss', loss_weight=1.0, depth_normalize=(0, 0), out_channel=0),
+ ],
+ auxi_losses=[],
+ pose_losses=[],
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c1ebc96ceaa32ad9310d3b84d55d252be843c46
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_giant2_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_giant2_reg',
+ prefix='backbones.',
+ out_channels=[1536, 1536, 1536, 1536],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_large_reg.py b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_large_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..25e96747d459d42df299f8a6a1e14044a0e56164
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_large_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_large_reg',
+ prefix='backbones.',
+ out_channels=[1024, 1024, 1024, 1024],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_small_reg.py b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_small_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c8bd97dccb9cdee7517250f40e01bb3124144e6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/backbones/dino_vit_small_reg.py
@@ -0,0 +1,7 @@
+model = dict(
+ backbone=dict(
+ type='vit_small_reg',
+ prefix='backbones.',
+ out_channels=[384, 384, 384, 384],
+ drop_path_rate = 0.0),
+ )
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..73702d298c05979bcdf013e9c30ec56f4e36665b
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_giant2_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[1536, 1536, 1536, 1536],
+ use_cls_token=True,
+ feature_channels = [384, 768, 1536, 1536], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [192, 384, 768, 1536, 1536], # [4/7, 2/7, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[192, 192, 192, 192], # [x_4, x_8, x_16, x_32] [192, 384, 768, 1536]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..26ab6dc090e9cdb840d84fab10587becb536dbb8
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_large_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[1024, 1024, 1024, 1024],
+ use_cls_token=True,
+ feature_channels = [256, 512, 1024, 1024], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [128, 256, 512, 1024, 1024], # [4/7, 2/7, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[128, 128, 128, 128], # [x_4, x_8, x_16, x_32] [192, 384, 768, 1536]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..19466c191e9f2a83903e55ca4fc0827d9a11bcb9
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py
@@ -0,0 +1,19 @@
+# model settings
+_base_ = ['../backbones/dino_vit_small_reg.py']
+model = dict(
+ type='DensePredModel',
+ decode_head=dict(
+ type='RAFTDepthDPT',
+ in_channels=[384, 384, 384, 384],
+ use_cls_token=True,
+ feature_channels = [96, 192, 384, 768], # [2/7, 1/7, 1/14, 1/14]
+ decoder_channels = [48, 96, 192, 384, 384], # [-, 1/4, 1/7, 1/14, 1/14]
+ up_scale = 7,
+ hidden_channels=[48, 48, 48, 48], # [x_4, x_8, x_16, x_32] [1/4, 1/7, 1/14, -]
+ n_gru_layers=3,
+ n_downsample=2,
+ iters=3,
+ slow_fast_gru=True,
+ num_register_tokens=4,
+ prefix='decode_heads.'),
+)
diff --git a/finetune/Metric3D/training/mono/configs/_base_/schedules/schedule_1m.py b/finetune/Metric3D/training/mono/configs/_base_/schedules/schedule_1m.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b347f377bbe5751d8b24919d0e3eeb98b7d3900
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/_base_/schedules/schedule_1m.py
@@ -0,0 +1,9 @@
+optimizer = dict(
+ type='SGD',
+ encoder=dict(lr=0.01, ),
+ decoder=dict(lr=0.01, ),
+)
+# learning policy
+lr_config = dict(policy='poly',) #dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False)
+
+
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/ddad.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/ddad.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..8451071744d8f0cd0b1e7dcaaf4a7ce48f9157b0
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/ddad.vit.dpt.raft.py
@@ -0,0 +1,94 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(DDAD='DDAD_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+DDAD_dataset=dict(
+ data = dict(
+ test=dict(
+ anno_path='DDAD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/diode.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/diode.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..88e40fac91d4c36f87dbfe9394cfbdbfaea4dbc1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/diode.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/diode.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(DIODE='DIODE_dataset'),
+ #dict(DIODE_indoor='DIODE_dataset')
+ #dict(DIODE_outdoor='DIODE_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ # crop_size = (512, 960),
+ clip_depth_range=(0.1, 150),
+)
+
+
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_median' , 'normal_mean', 'normal_rmse', 'normal_a1', 'normal_a2', 'normal_a3', 'normal_a4', 'normal_a5']
+DIODE_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/eth3d.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/eth3d.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..a65ee5d3c1320916f0200fe071cc6e586f128ae5
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/eth3d.vit.dpt.raft.py
@@ -0,0 +1,70 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/eth3d.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(ETH3D='ETH3D_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a1']
+ETH3D_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/ibims.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/ibims.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..411ed1b5777d272816c7846564f23256e7dca222
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/ibims.vit.dpt.raft.py
@@ -0,0 +1,71 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/ibims.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(IBIMS='IBIMS_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 10),
+ vit_size=(616,1064),
+)
+clip_depth = True
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a3', 'normal_a4', 'normal_a5', 'normal_median']
+IBIMS_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/kitti.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/kitti.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..da061756ccdad39dd5a5748a21d94ba97bef8b66
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/kitti.vit.dpt.raft.py
@@ -0,0 +1,82 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/kitti.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(KITTI='KITTI_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 80),
+ vit_size=(616,1064),
+)
+
+clip_depth = True
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log',
+ 'log10']
+KITTI_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(416, 1248), #(480, 1216), #(512, 1088), #(512, 1312), #(480, 1248), # #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/nuscenes.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/nuscenes.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..c81aebc1da766c67db1fc3cda9421a3fe4f6ade3
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/nuscenes.vit.dpt.raft.py
@@ -0,0 +1,93 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/nuscenes.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NuScenes='NuScenes_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+NuScenes_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/nyu.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/nyu.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ea74f5c4515c3db46fcba51c645aa4f847c7bcd
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/nyu.vit.dpt.raft.py
@@ -0,0 +1,64 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NYU='NYU_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 10),
+ vit_size=(616,1064),
+)
+clip_depth = True
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+NYU_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/replica.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/replica.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..6843c92ed9877e5e24b49b575f0780b81f1583b7
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/replica.vit.dpt.raft.py
@@ -0,0 +1,64 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/replica.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(Replica='Replica_dataset'), # 5.6w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ # crop_size = (512, 960),
+ clip_depth_range=(0.1, 200),
+)
+
+
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_median' , 'normal_mean', 'normal_rmse', 'normal_a1', 'normal_a2', 'normal_a3', 'normal_a4', 'normal_a5']
+Replica_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit/scannet.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit/scannet.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..6524815ef16402869c57a9df1423a8b442c7fb25
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit/scannet.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/scannet.py',
+ '../_base_/datasets/scannet_all.py',
+ #'../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ #dict(ScanNet='ScanNet_dataset'),
+ dict(ScanNetAll='ScanNetAll_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+ScanNetAll_dataset=dict(
+#ScanNet_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ddad.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ddad.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..e10f34d62e9c26180cac7ecdc681f8f961a3a162
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ddad.vit.dpt.raft.py
@@ -0,0 +1,94 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(DDAD='DDAD_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+DDAD_dataset=dict(
+ data = dict(
+ test=dict(
+ anno_path='DDAD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/diode.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/diode.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..cf203976e9ac02fa32bd501e61908c876ec74b7c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/diode.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/diode.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ #dict(DIODE='DIODE_dataset'),
+ #dict(DIODE_indoor='DIODE_dataset')
+ dict(DIODE_outdoor='DIODE_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ # crop_size = (512, 960),
+ clip_depth_range=(0.1, 150),
+)
+
+
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a1']
+DIODE_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/dsec.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/dsec.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..a12a59c3aea652bd85ae036c1991355c92bff757
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/dsec.vit.dpt.raft.py
@@ -0,0 +1,95 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/dsec.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(DSEC='DSEC_dataset'),
+ ],
+]
+
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+DSEC_dataset=dict(
+ data = dict(
+ test=dict(
+ anno_path='DSEC/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/eth3d.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/eth3d.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..4fb27193e8e6a608a7a187866455150824b4fbf8
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/eth3d.vit.dpt.raft.py
@@ -0,0 +1,70 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/eth3d.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(ETH3D='ETH3D_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a1']
+ETH3D_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ibims.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ibims.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..4523fb35a715bfb7f4c63ca93e3ea4e934eb604c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/ibims.vit.dpt.raft.py
@@ -0,0 +1,71 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/ibims.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(IBIMS='IBIMS_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 10),
+ vit_size=(616,1064),
+)
+clip_depth = True
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a3', 'normal_a4', 'normal_a5', 'normal_median']
+IBIMS_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/kitti.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/kitti.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..4807c46ff1478c956991222a7389742b50f0560f
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/kitti.vit.dpt.raft.py
@@ -0,0 +1,82 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/kitti.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(KITTI='KITTI_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 80),
+ vit_size=(616,1064),
+)
+
+clip_depth = False
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log',
+ 'log10']
+KITTI_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(416, 1248), #(480, 1216), #(512, 1088), #(512, 1312), #(480, 1248), # #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nuscenes.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nuscenes.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..d783a19447b03af1a62c92b0898d182c25fb641e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nuscenes.vit.dpt.raft.py
@@ -0,0 +1,93 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/nuscenes.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NuScenes='NuScenes_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+NuScenes_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nyu.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nyu.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..80f75f8a6c6a009294e8818f9d8d780e54f1f277
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/nyu.vit.dpt.raft.py
@@ -0,0 +1,64 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NYU='NYU_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 10),
+ vit_size=(616,1064),
+)
+clip_depth = True
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+NYU_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/scannet.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/scannet.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..7c556d92cc21cb877251d378e66f1cc0475f0430
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/scannet.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/scannet.py',
+ '../_base_/datasets/scannet_all.py',
+ #'../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ #dict(ScanNet='ScanNet_dataset'),
+ dict(ScanNetAll='ScanNetAll_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+ScanNetAll_dataset=dict(
+#ScanNet_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/waymo.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/waymo.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0a425d3f89f6215d51528a783e6a2b47f22480c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_giant2/waymo.vit.dpt.raft.py
@@ -0,0 +1,95 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_giant2_reg.dpt_raft.py',
+
+ '../_base_/datasets/waymo.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=8,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(Waymo='Waymo_dataset'),
+ ],
+]
+
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+Waymo_dataset=dict(
+ data = dict(
+ test=dict(
+ anno_path='Waymo/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ddad.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ddad.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..ebf6bb7cc90136cfe0485d8c6171816f12d98e40
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ddad.vit.dpt.raft.py
@@ -0,0 +1,94 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/ddad.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(DDAD='DDAD_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+DDAD_dataset=dict(
+ data = dict(
+ test=dict(
+ anno_path='DDAD/annotations/test_annotations.json',
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/diode.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/diode.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..545911616d74712e121196d1893c383a3ec233da
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/diode.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/diode.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model=dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ #dict(DIODE='DIODE_dataset'),
+ #dict(DIODE_indoor='DIODE_dataset')
+ dict(DIODE_outdoor='DIODE_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ # crop_size = (512, 960),
+ clip_depth_range=(0.1, 150),
+)
+
+
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_median' , 'normal_mean', 'normal_rmse', 'normal_a1', 'normal_a2', 'normal_a3', 'normal_a4', 'normal_a5']
+DIODE_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/eth3d.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/eth3d.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a9c035bc3fcdfb64657a2ef459d193f2c8c530c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/eth3d.vit.dpt.raft.py
@@ -0,0 +1,70 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/eth3d.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(ETH3D='ETH3D_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a1']
+ETH3D_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ibims.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ibims.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4732570df5f65bfed63f0459a50719d44efff77
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/ibims.vit.dpt.raft.py
@@ -0,0 +1,70 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_large_reg.dpt_raft.py',
+
+ '../_base_/datasets/ibims.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(IBIMS='IBIMS_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_a3', 'normal_a4', 'normal_a5', 'normal_median']
+IBIMS_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/kitti.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/kitti.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..8966f5c7dcfcc791bbc192231337b8e36f509eb2
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/kitti.vit.dpt.raft.py
@@ -0,0 +1,81 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/kitti.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(KITTI='KITTI_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log',
+ 'log10']
+KITTI_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(416, 1248), #(480, 1216), #(512, 1088), #(512, 1312), #(480, 1248), # #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nuscenes.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nuscenes.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..25f9e065b05930e6512e373b7068e1bbf9ae9d8a
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nuscenes.vit.dpt.raft.py
@@ -0,0 +1,93 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/nuscenes.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NuScenes='NuScenes_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3']
+NuScenes_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(1216, 1952), #(544, 992), #
+ # resize_size=(560, 1008),
+ # resize_size=(840, 1512),
+ resize_size=(616,1064),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='ResizeKeepRatio',
+ # resize_size=(1120, 2016),
+ # ignore_label=-1,
+ # padding=[0,0,0],
+ # keep_gt=True),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
+
+# DDAD_dataset=dict(
+# data = dict(
+# test=dict(
+# anno_path='DDAD/annotations/test_annotations.json',
+# pipeline=[dict(type='BGR2RGB'),
+# dict(type='KeepResizeCanoSize',
+# resize_size=(640, 1088), #(1216, 1952), #(512, 960), #
+# ignore_label=-1,
+# padding=[0, 0, 0]),
+# dict(type='ToTensor'),
+# dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+# ],
+# sample_ratio = 1.0,
+# sample_size = 80,
+# ),
+# ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nyu.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nyu.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..c3f23c53a158d103bb479967c7981e81f8c9fd49
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/nyu.vit.dpt.raft.py
@@ -0,0 +1,63 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/nyu.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(NYU='NYU_dataset'),
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+NYU_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = -1,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/scannet.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/scannet.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc5308680a13074702799c67a06160f1c007dca4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/scannet.vit.dpt.raft.py
@@ -0,0 +1,66 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/scannet.py',
+ '../_base_/datasets/scannet_all.py',
+ #'../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ #dict(ScanNet='ScanNet_dataset'),
+ dict(ScanNetAll='ScanNetAll_dataset')
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0,1),
+ depth_normalize=(0.1, 200),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'rmse_log', 'log10', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+ScanNetAll_dataset=dict(
+#ScanNet_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ resize_size=(616, 1064), #(544, 992), #(480, 1216), #(480, 640), #
+ ignore_label=-1,
+ padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/configs/test_configs_vit_small/taskonomy.vit.dpt.raft.py b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/taskonomy.vit.dpt.raft.py
new file mode 100644
index 0000000000000000000000000000000000000000..638c945b32bc013f7d13cdf636587fe2643ece39
--- /dev/null
+++ b/finetune/Metric3D/training/mono/configs/test_configs_vit_small/taskonomy.vit.dpt.raft.py
@@ -0,0 +1,70 @@
+_base_=['../_base_/losses/all_losses.py',
+ '../_base_/models/encoder_decoder/dino_vit_small_reg.dpt_raft.py',
+
+ '../_base_/datasets/taskonomy.py',
+ '../_base_/datasets/_data_base_.py',
+
+ '../_base_/default_runtime.py',
+ '../_base_/schedules/schedule_1m.py'
+ ]
+
+import numpy as np
+
+model = dict(
+ decode_head=dict(
+ type='RAFTDepthNormalDPT5',
+ iters=4,
+ n_downsample=2,
+ detach=False,
+ )
+)
+
+# model settings
+find_unused_parameters = True
+
+
+
+# data configs, some similar data are merged together
+data_array = [
+ # group 1
+ [
+ dict(Taskonomy='Taskonomy_dataset'), #447.2w
+ ],
+]
+data_basic=dict(
+ canonical_space = dict(
+ # img_size=(540, 960),
+ focal_length=1000.0,
+ ),
+ depth_range=(0, 1),
+ depth_normalize=(0.1, 200),# (0.3, 160),
+ crop_size = (1120, 2016),
+ clip_depth_range=(0.1, 200),
+ vit_size=(616,1064),
+)
+
+# indoor (544, 928), outdoor: (768, 1088)
+test_metrics = ['abs_rel', 'rmse', 'silog', 'delta1', 'delta2', 'delta3', 'normal_mean', 'normal_rmse', 'normal_median', 'normal_a3', 'normal_a4', 'normal_a5']
+Taskonomy_dataset=dict(
+ data = dict(
+ test=dict(
+ pipeline=[dict(type='BGR2RGB'),
+ dict(type='LabelScaleCononical'),
+ dict(type='ResizeKeepRatio',
+ # resize_size=(512, 512), #(768, 1088), #(768, 1120), # (768, 1216), #(768, 1024), # (768, 1216), #(768, 1312), # (512, 512)
+ resize_size=(616,1064),
+ # resize_size=(1120, 2016),
+ ignore_label=-1,
+ padding=[0,0,0]),
+ # dict(type='RandomCrop',
+ # crop_size=(0,0),
+ # crop_type='center',
+ # ignore_label=-1,
+ # padding=[0,0,0]),
+ dict(type='ToTensor'),
+ dict(type='Normalize', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]),
+ ],
+ sample_ratio = 1.0,
+ sample_size = 500,
+ ),
+ ))
diff --git a/finetune/Metric3D/training/mono/datasets/__base_dataset__.py b/finetune/Metric3D/training/mono/datasets/__base_dataset__.py
new file mode 100644
index 0000000000000000000000000000000000000000..a138759c4a022fe403a4b15fc80e436a71ed49b1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/__base_dataset__.py
@@ -0,0 +1,586 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+import mono.utils.transform as img_transform
+import copy
+from mono.utils.comm import get_func
+import pickle
+import logging
+import multiprocessing as mp
+import ctypes
+"""
+Dataset annotations are saved in a Json file. All data, including rgb, depth, pose, and so on, captured within the same frame are saved in the same dict.
+All frames are organized in a list. In each frame, it may contains the some or all of following data format.
+
+# Annotations for the current central RGB/depth cameras.
+
+'rgb': rgb image in the current frame.
+'depth': depth map in the current frame.
+'sem': semantic mask in the current frame.
+'cam_in': camera intrinsic parameters of the current rgb camera.
+'cam_ex': camera extrinsic parameters of the current rgb camera.
+'cam_ex_path': path to the extrinsic parameters.
+'pose': pose in current frame.
+'timestamp_rgb': time stamp of current rgb image.
+
+# Annotations for the left hand RGB/depth cameras.
+
+'rgb_l': rgb image of the left hand camera in the current frame.
+'depth_l': depth map of the left hand camera in the current frame.
+'sem_l': semantic mask of the left hand camera in the current frame.
+'cam_in_l': camera intrinsic parameters of the left hand rgb camera in the current frame.
+'cam_ex_l': camera extrinsic parameters of the left hand rgb camera in the current frame.
+'cam_ex_path': path to the extrinsic parameters.
+'pose_l': pose of the left hand camera in the incurrent frame.
+'timestamp_rgb_l': time stamp of the rgb img captured by the left hand camera.
+
+# Annotations for the right RGB/depth cameras, which is on the left hand of the current central cameras.
+
+'rgb_r': rgb image of the right hand camera in the current frame.
+'depth_r': depth map of the right hand camera in the current frame.
+'sem_r': semantic mask of the right hand camera in the current frame.
+'cam_in_r': camera intrinsic parameters of the right hand rgb camera in the current frame.
+'cam_ex_r': camera extrinsic parameters of the right hand rgb camera in the current frame.
+'cam_ex_path_r': path to the extrinsic parameters.
+'pose_r': pose of the right hand camera in the incurrent frame.
+'timestamp_rgb_r': time stamp of the rgb img captured by the right hand camera.
+
+# Annotations for the central RGB/depth cameras in the last frame.
+
+'rgb_pre': rgb image of the central camera in the last frame.
+'depth_pre': depth map of the central camera in the last frame.
+'sem_pre': semantic mask of the central camera in the last frame.
+'cam_in_pre': camera intrinsic parameters of the central rgb camera in the last frame.
+'cam_ex_pre': camera extrinsic parameters of the central rgb camera in the last frame.
+'cam_ex_path_pre': path to the extrinsic parameters.
+'pose_pre': pose of the central camera in the last frame.
+'timestamp_rgb_pre': time stamp of the rgb img captured by the central camera.
+
+# Annotations for the central RGB/depth cameras in the next frame.
+
+'rgb_next': rgb image of the central camera in the next frame.
+'depth_next': depth map of the central camera in the next frame.
+'sem_next': semantic mask of the central camera in the next frame.
+'cam_in_next': camera intrinsic parameters of the central rgb camera in the next frame.
+'cam_ex_next': camera extrinsic parameters of the central rgb camera in the next frame.
+'cam_ex_path_next': path to the extrinsic parameters.
+'pose_next': pose of the central camera in the next frame.
+'timestamp_rgb_next': time stamp of the rgb img captured by the central camera.
+"""
+
+class BaseDataset(Dataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(BaseDataset, self).__init__()
+ self.cfg = cfg
+ self.phase = phase
+ self.db_info = kwargs['db_info']
+
+ # root dir for data
+ self.data_root = os.path.join(self.db_info['db_root'], self.db_info['data_root'])
+ # depth/disp data root
+ disp_root = self.db_info['disp_root'] if 'disp_root' in self.db_info else None
+ self.disp_root = os.path.join(self.db_info['db_root'], disp_root) if disp_root is not None else None
+ depth_root = self.db_info['depth_root'] if 'depth_root' in self.db_info else None
+ self.depth_root = os.path.join(self.db_info['db_root'], depth_root) if depth_root is not None \
+ else self.data_root
+ # meta data root
+ meta_data_root = self.db_info['meta_data_root'] if 'meta_data_root' in self.db_info else None
+ self.meta_data_root = os.path.join(self.db_info['db_root'], meta_data_root) if meta_data_root is not None \
+ else None
+ # semantic segmentation labels root
+ sem_root = self.db_info['semantic_root'] if 'semantic_root' in self.db_info else None
+ self.sem_root = os.path.join(self.db_info['db_root'], sem_root) if sem_root is not None \
+ else None
+ # depth valid mask labels root
+ depth_mask_root = self.db_info['depth_mask_root'] if 'depth_mask_root' in self.db_info else None
+ self.depth_mask_root = os.path.join(self.db_info['db_root'], depth_mask_root) if depth_mask_root is not None \
+ else None
+ # surface normal labels root
+ norm_root = self.db_info['normal_root'] if 'normal_root' in self.db_info else None
+ self.norm_root = os.path.join(self.db_info['db_root'], norm_root) if norm_root is not None \
+ else None
+ # data annotations path
+ self.data_annos_path = os.path.join(self.db_info['db_root'], self.db_info['%s_annotations_path' % phase])
+
+ # load annotations
+ self.data_info = self.load_annotations()
+ whole_data_size = len(self.data_info['files'])
+
+ # sample a subset for training/validation/testing
+ # such method is deprecated, each training may get different sample list
+
+ cfg_sample_ratio = cfg.data[phase].sample_ratio
+ cfg_sample_size = int(cfg.data[phase].sample_size)
+ self.sample_size = int(whole_data_size * cfg_sample_ratio) if cfg_sample_size == -1 \
+ else (cfg_sample_size if cfg_sample_size < whole_data_size else whole_data_size)
+ random.seed(100) # set the random seed
+ sample_list_of_whole_data = random.sample(list(range(whole_data_size)), self.sample_size)
+
+ self.data_size = self.sample_size
+ self.annotations = {'files': [self.data_info['files'][i] for i in sample_list_of_whole_data]}
+ self.sample_list = list(range(self.data_size))
+
+ # config transforms for the input and label
+ self.transforms_cfg = cfg.data[phase]['pipeline']
+ self.transforms_lib = 'mono.utils.transform.'
+
+ self.img_file_type = ['.png', '.jpg', '.jpeg', '.bmp', '.tif']
+ self.np_file_type = ['.npz', '.npy']
+
+ # update canonical sparce information
+ self.data_basic = copy.deepcopy(kwargs)
+ canonical = self.data_basic.pop('canonical_space')
+ self.data_basic.update(canonical)
+ self.disp_scale = 10.0
+ self.depth_range = kwargs['depth_range'] # predefined depth range for the network
+ self.clip_depth_range = kwargs['clip_depth_range'] # predefined depth range for data processing
+ self.depth_normalize = kwargs['depth_normalize']
+
+ self.img_transforms = img_transform.Compose(self.build_data_transforms())
+ self.EPS = 1e-6
+
+ # self.tmpl_info = ['rgb_sr', 'rgb_pre', 'rgb_next']
+ # self.tgt2ref_pose_lookup = {'rgb_sr': 'cam_ex', 'rgb_pre': 'pose_pre', 'rgb_next': 'pose_next'}
+
+ # dataset info
+ self.data_name = cfg.data_name
+ self.data_type = cfg.data_type # there are mainly four types, i.e. ['rel', 'sfm', 'stereo', 'lidar']
+ self.logger = logging.getLogger()
+ self.logger.info(f'{self.data_name} in {self.phase} whole data size: {whole_data_size}')
+
+ # random crop size for training
+ crop_size = kwargs['crop_size']
+ shared_array_base = mp.Array(ctypes.c_int32, 2)
+ shared_array = np.ctypeslib.as_array(shared_array_base.get_obj())
+ shared_array[0] = crop_size[0]
+ shared_array[1] = crop_size[1]
+ # self.random_crop_size = torch.from_numpy(np.array([0,0])) #torch.from_numpy(shared_array)
+ self.random_crop_size = torch.from_numpy(shared_array)
+
+
+ def __name__(self):
+ return self.data_name
+
+ def __len__(self):
+ return self.data_size
+
+ def load_annotations(self):
+ if not os.path.exists(self.data_annos_path):
+ raise RuntimeError(f'Cannot find {self.data_annos_path} annotations.')
+
+ with open(self.data_annos_path, 'r') as f:
+ annos = json.load(f)
+ return annos
+
+ def build_data_transforms(self):
+ transforms_list = []
+ for transform in self.transforms_cfg:
+ args = copy.deepcopy(transform)
+ # insert the canonical space configs
+ args.update(self.data_basic)
+
+ obj_name = args.pop('type')
+ obj_path = self.transforms_lib + obj_name
+ obj_cls = get_func(obj_path)
+
+ obj = obj_cls(**args)
+ transforms_list.append(obj)
+ return transforms_list
+
+
+ def load_data(self, path: str, is_rgb_img: bool=False):
+ if not os.path.exists(path):
+ self.logger.info(f'>>>>{path} does not exist.')
+ # raise RuntimeError(f'{path} does not exist.')
+
+ data_type = os.path.splitext(path)[-1]
+ if data_type in self.img_file_type:
+ if is_rgb_img:
+ data = cv2.imread(path)
+ else:
+ data = cv2.imread(path, -1)
+ elif data_type in self.np_file_type:
+ data = np.load(path)
+ else:
+ raise RuntimeError(f'{data_type} is not supported in current version.')
+
+ try:
+ return data.squeeze()
+ except:
+ temp = 1
+ raise RuntimeError(f'{path} is not successfully loaded.')
+
+ def __getitem__(self, idx: int) -> dict:
+ if self.phase == 'test':
+ return self.get_data_for_test(idx)
+ else:
+ return self.get_data_for_trainval(idx)
+
+ def get_data_for_trainval(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ # if data_path['sem_path'] is not None:
+ # print(self.data_name)
+
+ curr_rgb, curr_depth, curr_normal, curr_sem, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_sem'], data_batch['curr_cam_model']
+ #curr_stereo_depth = data_batch['curr_stereo_depth']
+
+ # A patch for stereo depth dataloader (no need to modify specific datasets)
+ if 'curr_stereo_depth' in data_batch.keys():
+ curr_stereo_depth = data_batch['curr_stereo_depth']
+ else:
+ curr_stereo_depth = self.load_stereo_depth_label(None, H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ curr_intrinsic = meta_data['cam_in']
+ # data augmentation
+ transform_paras = dict(random_crop_size = self.random_crop_size) # dict()
+ assert curr_rgb.shape[:2] == curr_depth.shape == curr_normal.shape[:2] == curr_sem.shape
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ other_labels=[curr_sem, curr_stereo_depth],
+ transform_paras=transform_paras)
+ # process sky masks
+ sem_mask = other_labels[0].int()
+ # clip depth map
+ depth_out = self.normalize_depth(depths[0])
+ # set the depth of sky region to the invalid
+ depth_out[sem_mask==142] = -1 # self.depth_normalize[1] - 1e-6
+ # get inverse depth
+ inv_depth = self.depth2invdepth(depth_out, sem_mask==142)
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+
+ # stereo_depth
+ if 'label_scale_factor' not in transform_paras.keys():
+ transform_paras['label_scale_factor'] = 1
+ stereo_depth_pre_trans = other_labels[1] * (other_labels[1] > 0.3) * (other_labels[1] < 200)
+ stereo_depth = stereo_depth_pre_trans * transform_paras['label_scale_factor']
+ stereo_depth = self.normalize_depth(stereo_depth)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=torch.tensor(pad),
+ data_type=[self.data_type, ],
+ sem_mask=sem_mask.int(),
+ stereo_depth= stereo_depth,
+ normal=normals[0],
+ inv_depth=inv_depth,
+ scale=transform_paras['label_scale_factor'])
+ return data
+
+ def get_data_for_test(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ # load data
+ curr_rgb, curr_depth, curr_normal, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_cam_model']
+ ori_curr_intrinsic = meta_data['cam_in']
+
+ # get crop size
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], #+ tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+ inv_depth = self.depth2invdepth(depth_out, np.zeros_like(depth_out, dtype=np.bool))
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ ori_curr_intrinsic_mat = self.intrinsics_list2mat(ori_curr_intrinsic)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ curr_normal = torch.from_numpy(curr_normal.transpose((2,0,1)))
+
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ sample_id=idx,
+ data_path=meta_data['rgb'],
+ inv_depth=inv_depth,
+ normal=curr_normal,
+ )
+ return data
+
+ def load_data_path(self, meta_data):
+ curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ curr_sem_path = os.path.join(self.sem_root, meta_data['sem']) \
+ if self.sem_root is not None and ('sem' in meta_data) and (meta_data['sem'] is not None) \
+ else None
+ # matterport3d separates xyz into three images
+ if ('normal' in meta_data) and (meta_data['normal'] is not None) and (self.norm_root is not None):
+ if isinstance(meta_data['normal'], dict):
+ curr_norm_path = {}
+ for k,v in meta_data['normal'].items():
+ curr_norm_path[k] = os.path.join(self.norm_root, v)
+ else:
+ curr_norm_path = os.path.join(self.norm_root, meta_data['normal'])
+ else:
+ curr_norm_path = None
+ curr_depth_mask_path = os.path.join(self.depth_mask_root, meta_data['depth_mask']) \
+ if self.depth_mask_root is not None and ('depth_mask' in meta_data) and (meta_data['depth_mask'] is not None) \
+ else None
+
+ if ('disp' in meta_data) and (meta_data['disp'] is not None) and (self.disp_root is not None):
+ if isinstance(meta_data['disp'], dict):
+ curr_disp_path = {}
+ for k,v in meta_data['disp'].items():
+ curr_disp_path[k] = os.path.join(self.disp_root, v)
+ else:
+ curr_disp_path = os.path.join(self.disp_root, meta_data['disp'])
+ else:
+ curr_disp_path = None
+
+ data_path=dict(
+ rgb_path=curr_rgb_path,
+ depth_path=curr_depth_path,
+ sem_path=curr_sem_path,
+ normal_path=curr_norm_path,
+ disp_path=curr_disp_path,
+ depth_mask_path=curr_depth_mask_path,
+ )
+ return data_path
+
+ def load_batch(self, meta_data, data_path):
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'])
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])
+ curr_depth[~depth_mask] = -1
+ # get stereo depth
+ curr_stereo_depth = self.load_stereo_depth_label(data_path['disp_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ curr_stereo_depth=curr_stereo_depth,
+ )
+ return data_batch
+
+
+ def clip_depth(self, depth: np.array) -> np.array:
+ depth[(depth>self.clip_depth_range[1]) | (depth np.array:
+ depth /= self.depth_range[1]
+ depth[depth np.array:
+ """
+ Encode the camera model (focal length and principle point) to a 4-channel map.
+ """
+ fx, fy, u0, v0 = intrinsics
+ f = (fx + fy) / 2.0
+ # principle point location
+ x_row = np.arange(0, W).astype(np.float32)
+ x_row_center_norm = (x_row - u0) / W
+ x_center = np.tile(x_row_center_norm, (H, 1)) # [H, W]
+
+ y_col = np.arange(0, H).astype(np.float32)
+ y_col_center_norm = (y_col - v0) / H
+ y_center = np.tile(y_col_center_norm, (W, 1)).T
+
+ # FoV
+ fov_x = np.arctan(x_center / (f / W))
+ fov_y = np.arctan(y_center/ (f / H))
+
+ cam_model = np.stack([x_center, y_center, fov_x, fov_y], axis=2)
+ return cam_model
+
+ def check_data(self, data_dict : dict):
+ for k, v in data_dict.items():
+ if v is None:
+ # print(f'{self.data_name}, {k} cannot be read!')
+ self.logger.info(f'{self.data_name}, {k} cannot be read!')
+
+ def intrinsics_list2mat(self, intrinsics: torch.tensor) -> torch.tensor:
+ """
+ Create camera intrinsic matrix.
+ Args:
+ intrinsics (torch.tensor, [4,]): list of camera intrinsic parameters.
+ returns:
+ intrinsics_mat (torch.tensor, [3x3]): camera intrinsic parameters matrix.
+ """
+ intrinsics_mat = torch.zeros((3,3)).float()
+ intrinsics_mat[0, 0] = intrinsics[0]
+ intrinsics_mat[1, 1] = intrinsics[1]
+ intrinsics_mat[0, 2] = intrinsics[2]
+ intrinsics_mat[1, 2] = intrinsics[3]
+ intrinsics_mat[2, 2] = 1.0
+ return intrinsics_mat
+
+ # def load_tmpl_image(self, curr_rgb: np.array, meta_data: dict) -> dict:
+ # """
+ # Load consecutive RGB frames.
+ # Args:
+ # anno: the annotation for this group.
+ # curr_rgb: rgb image of the current frame.
+ # meta_data: meta data information.
+ # Returns:
+ # tmpl_annos: temporal rgbs.
+ # """
+ # w_tmpl = False
+
+ # tmpl_list = []
+ # # organize temporal annotations
+ # for i in self.tmpl_info:
+ # if (i in meta_data) and (meta_data[i] is not None) and os.path.exists(os.path.join(self.data_root, meta_data[i])):
+ # tmpl_list.append(os.path.join(self.data_root, meta_data[i]))
+
+ # if len(tmpl_list) == 0:
+ # rgb_tmpl = curr_rgb.copy()
+ # else:
+ # id = np.random.randint(len(tmpl_list))
+ # rgb_tmpl = self.load_data(tmpl_list[id], is_rgb_img=True)
+ # w_tmpl = True
+
+ # tmpl_annos = dict(
+ # tmpl_rgb_list = [rgb_tmpl,],
+ # w_tmpl = w_tmpl
+ # )
+ # return tmpl_annos
+
+ def load_meta_data(self, anno: dict) -> dict:
+ """
+ Load meta data information.
+ """
+ if self.meta_data_root is not None and ('meta_data' in anno or 'meta' in anno):
+ meta_data_path = os.path.join(self.meta_data_root, anno['meta_data']) if 'meta_data' in anno else os.path.join(self.meta_data_root, anno['meta'])
+ with open(meta_data_path, 'rb') as f:
+ meta_data = pickle.load(f)
+ meta_data.update(anno)
+ else:
+ meta_data = anno
+ return meta_data
+
+ def load_rgb_depth(self, rgb_path: str, depth_path: str):
+ """
+ Load the rgb and depth map with the paths.
+ """
+ rgb = self.load_data(rgb_path, is_rgb_img=True)
+ if rgb is None:
+ self.logger.info(f'>>>>{rgb_path} has errors.')
+
+ depth = self.load_data(depth_path)
+ if depth is None:
+ self.logger.info(f'{depth_path} has errors.')
+
+ # self.check_data(dict(
+ # rgb_path=rgb,
+ # depth_path=depth,
+ # ))
+ depth = depth.astype(np.float)
+ # if depth.shape != rgb.shape[:2]:
+ # print(f'no-equal in {self.data_name}')
+ # depth = cv2.resize(depth, rgb.shape[::-1][1:])
+
+ depth = self.process_depth(depth, rgb)
+ return rgb, depth
+
+ def load_sem_label(self, sem_path, depth=None, sky_id=142) -> np.array:
+ H, W = depth.shape
+ # if sem_path is not None:
+ # print(self.data_name)
+ sem_label = cv2.imread(sem_path, 0) if sem_path is not None \
+ else np.ones((H, W), dtype=np.int) * -1
+ if sem_label is None:
+ sem_label = np.ones((H, W), dtype=np.int) * -1
+ # set dtype to int before
+ sem_label = sem_label.astype(np.int)
+ sem_label[sem_label==255] = -1
+
+ # mask invalid sky region
+ mask_depth_valid = depth > 1e-8
+ invalid_sky_region = (sem_label==142) & (mask_depth_valid)
+ if self.data_type in ['lidar', 'sfm', 'denselidar', 'denselidar_nometric']:
+ sem_label[invalid_sky_region] = -1
+ return sem_label
+
+ def load_depth_valid_mask(self, depth_mask_path, depth=None) -> np.array:
+ if depth_mask_path is None:
+ return np.ones_like(depth, dtype=np.bool)
+ data_type = os.path.splitext(depth_mask_path)[-1]
+ if data_type in self.img_file_type:
+ data = cv2.imread(depth_mask_path, -1)
+ elif data_type in self.np_file_type:
+ data = np.load(depth_mask_path)
+ else:
+ raise RuntimeError(f'{data_type} is not supported in current version.')
+ data = data.astype(np.bool)
+ return data
+
+ def load_norm_label(self, norm_path, H, W):
+ norm_gt = np.zeros((H, W, 3)).astype(np.float32)
+ return norm_gt
+
+ def load_stereo_depth_label(self, disp_path, H, W):
+ stereo_depth_gt = np.zeros((H, W, 1)).astype(np.float32)
+ return stereo_depth_gt
+
+ def depth2invdepth(self, depth, sky_mask):
+ inv_depth = 1.0 / depth * self.disp_scale
+ inv_depth[depth<1e-6] = -1.0
+ inv_depth[inv_depth < 0] = -1.0
+ inv_depth[sky_mask] = 0
+ return inv_depth
+
+
+ def set_random_crop_size(self, random_crop_size):
+ self.random_crop_size[0] = random_crop_size[0]
+ self.random_crop_size[1] = random_crop_size[1]
diff --git a/finetune/Metric3D/training/mono/datasets/__init__.py b/finetune/Metric3D/training/mono/datasets/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e3a5259334828e21090987a151d2ff83fc0d2fc3
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/__init__.py
@@ -0,0 +1,38 @@
+from .__base_dataset__ import BaseDataset
+from .ddad_dataset import DDADDataset
+from .mapillary_psd_dataset import MapillaryPSDDataset
+from .argovers2_dataset import Argovers2Dataset
+from .cityscapes_dataset import CityscapesDataset
+from .drivingstereo_dataset import DrivingStereoDataset
+from .dsec_dataset import DSECDataset
+from .lyft_dataset import LyftDataset
+from .diml_dataset import DIMLDataset
+from .any_dataset import AnyDataset
+from .nyu_dataset import NYUDataset
+from .scannet_dataset import ScanNetDataset
+from .diode_dataset import DIODEDataset
+from .kitti_dataset import KITTIDataset
+from .pandaset_dataset import PandasetDataset
+from .taskonomy_dataset import TaskonomyDataset
+from .uasol_dataset import UASOLDataset
+from .nuscenes_dataset import NuScenesDataset
+from .eth3d_dataset import ETH3DDataset
+from .waymo_dataset import WaymoDataset
+from .ibims_dataset import IBIMSDataset
+
+from .replica_dataset import ReplicaDataset
+from .hm3d_dataset import HM3DDataset
+from .matterport3d_dataset import Matterport3DDataset
+from .virtualkitti_dataset import VKITTIDataset
+from .blendedmvg_omni_dataset import BlendedMVGOmniDataset
+from .hypersim_dataset import HypersimDataset
+
+__all__ = ['BaseDataset', 'DDADDataset', 'MapillaryPSDDataset',
+'Argovers2Dataset', 'CityscapesDataset', 'DrivingStereoDataset', 'DSECDataset', 'LyftDataset', 'DIMLDataset', 'AnyDataset',
+'NYUDataset', 'ScanNetDataset', 'DIODEDataset', 'KITTIDataset', 'PandasetDataset', 'SUNRGBDDataset',
+'TaskonomyDataset',
+'UASOLDataset', 'NuScenesDataset',
+'G8V1Dataset', 'ETH3DDataset', 'WaymoDataset',
+'IBIMSDataset',
+'ReplicaDataset', 'HM3DDataset', 'Matterport3DDataset', 'VKITTIDataset',
+'BlendedMVGOmniDataset']
diff --git a/finetune/Metric3D/training/mono/datasets/any_dataset.py b/finetune/Metric3D/training/mono/datasets/any_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..63b3f82e48afb7fec3b4c2592df72bb24287de5f
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/any_dataset.py
@@ -0,0 +1,152 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+import copy
+from .__base_dataset__ import BaseDataset
+import mono.utils.transform as img_transform
+
+
+class AnyDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(AnyDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+
+ self.cfg = cfg
+ self.phase = phase
+ self.mldb_info = kwargs['mldb_info']
+
+ # root dir for data
+ self.data_root = os.path.join(self.mldb_info['mldb_root'], self.mldb_info['data_root'])
+ # depth/disp data root
+ disp_root = self.mldb_info['disp_root'] if 'disp_root' in self.mldb_info else None
+ self.disp_root = os.path.join(self.mldb_info['mldb_root'], disp_root) if disp_root is not None else None
+ depth_root = self.mldb_info['depth_root'] if 'depth_root' in self.mldb_info else None
+ self.depth_root = os.path.join(self.mldb_info['mldb_root'], depth_root) if depth_root is not None \
+ else self.data_root
+ # meta data root
+ meta_data_root = self.mldb_info['meta_data_root'] if 'meta_data_root' in self.mldb_info else None
+ self.meta_data_root = os.path.join(self.mldb_info['mldb_root'], meta_data_root) if meta_data_root is not None \
+ else None
+ # semantic segmentation labels root
+ sem_root = self.mldb_info['semantic_root'] if 'semantic_root' in self.mldb_info else None
+ self.sem_root = os.path.join(self.mldb_info['mldb_root'], sem_root) if sem_root is not None \
+ else None
+
+ # data annotations path
+ self.data_annos_path = '/yvan1/data/NuScenes/NuScenes/annotations/train_ring_annotations.json' # fill this
+
+ # load annotations
+ annotations = self.load_annotations()
+ whole_data_size = len(annotations['files'])
+
+ cfg_sample_ratio = cfg.data[phase].sample_ratio
+ cfg_sample_size = int(cfg.data[phase].sample_size)
+ self.sample_size = int(whole_data_size * cfg_sample_ratio) if cfg_sample_size == -1 \
+ else (cfg_sample_size if cfg_sample_size < whole_data_size else whole_data_size)
+ sample_list_of_whole_data = list(range(whole_data_size))[:self.sample_size]
+ self.data_size = self.sample_size
+ sample_list_of_whole_data = random.sample(list(range(whole_data_size)), whole_data_size)
+ self.annotations = {'files': [annotations['files'][i] for i in sample_list_of_whole_data]}
+ self.sample_list = list(range(self.data_size))
+
+ # config transforms for the input and label
+ self.transforms_cfg = cfg.data[phase]['pipeline']
+ self.transforms_lib = 'mono.utils.transform.'
+
+ self.img_file_type = ['.png', '.jpg', '.jpeg', '.bmp', '.tif']
+ self.np_file_type = ['.npz', '.npy']
+
+ # update canonical sparce information
+ self.data_basic = copy.deepcopy(kwargs)
+ canonical = self.data_basic.pop('canonical_space')
+ self.data_basic.update(canonical)
+ self.depth_range = kwargs['depth_range'] # predefined depth range for the network
+ self.clip_depth_range = kwargs['clip_depth_range'] # predefined depth range for data processing
+ self.depth_normalize = kwargs['depth_normalize']
+
+ self.img_transforms = img_transform.Compose(self.build_data_transforms())
+ self.EPS = 1e-8
+
+ self.tmpl_info = ['rgb_sr', 'rgb_pre', 'rgb_next']
+
+ # dataset info
+ self.data_name = cfg.data_name
+ self.data_type = cfg.data_type # there are mainly four types, i.e. ['rel', 'sfm', 'stereo', 'lidar']
+
+ def __getitem__(self, idx: int) -> dict:
+ return self.get_data_for_test(idx)
+
+ def get_data_for_test(self, idx: int):
+ # basic info
+ anno = self.annotations['files'][idx]
+ curr_rgb_path = os.path.join(self.data_root, anno['CAM_FRONT_RIGHT']['rgb']) # Lyft: CAM_FRONT_LEFT
+ curr_depth_path = os.path.join(self.depth_root, anno['CAM_FRONT_RIGHT']['depth'])
+ meta_data = self.load_meta_data(anno['CAM_FRONT_RIGHT'])
+ ori_curr_intrinsic = meta_data['cam_in']
+
+ curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ ori_h, ori_w, _ = curr_rgb.shape
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+ # load tmpl rgb info
+ # tmpl_annos = self.load_tmpl_annos(anno, curr_rgb, meta_data)
+ # tmpl_rgb = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in augmented size
+ # depth_out = self.clip_depth(depths[0])
+ # depth in original size
+ #depth_out = self.clip_depth(curr_depth)
+ depth_out = curr_depth
+
+ filename = os.path.basename(curr_rgb_path)
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ # ref_input=rgbs[1:],
+ # tmpl_flg=tmpl_annos['w_tmpl'],
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb)
+ return data
+
+
+ def process_depth(self, depth):
+ depth[depth>65500] = 0
+ depth /= 200.0
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/argovers2_dataset.py b/finetune/Metric3D/training/mono/datasets/argovers2_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..4963a07bb905a2d5df67ca95358bdcc8bbdd91be
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/argovers2_dataset.py
@@ -0,0 +1,33 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import pickle
+
+class Argovers2Dataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(Argovers2Dataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/blendedmvg_omni_dataset.py b/finetune/Metric3D/training/mono/datasets/blendedmvg_omni_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..b96d7fd9865f8940c5ecc410485bcd88e0436e45
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/blendedmvg_omni_dataset.py
@@ -0,0 +1,32 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class BlendedMVGOmniDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(BlendedMVGOmniDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+
+ # def __getitem__(self, idx: int) -> dict:
+ # if self.phase == 'test':
+ # return self.get_data_for_test(idx)
+ # else:
+ # return self.get_data_for_trainval(idx)
+
+
+ def process_depth(self, depth: np.array, rgb: np.array) -> np.array:
+ depth[depth>60000] = 0
+ depth = depth / self.metric_scale
+ return depth
diff --git a/finetune/Metric3D/training/mono/datasets/cityscapes_dataset.py b/finetune/Metric3D/training/mono/datasets/cityscapes_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..61d1bddfe85708ad49f968d35767b41990a131ca
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/cityscapes_dataset.py
@@ -0,0 +1,33 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class CityscapesDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(CityscapesDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/ddad_dataset.py b/finetune/Metric3D/training/mono/datasets/ddad_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..d913c034cb9d00aac295c68346e1a9ad3ad4117c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/ddad_dataset.py
@@ -0,0 +1,37 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class DDADDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(DDADDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= 200.0
+ # depth[(depth>self.cap_range[1]) | (depth dict:
+ """
+ Load meta data information.
+ """
+ if self.meta_data_root is not None and ('meta_data' in anno or 'meta' in anno):
+ meta_data_path = os.path.join(self.meta_data_root, anno['meta_data']) if 'meta_data' in anno else os.path.join(self.meta_data_root, anno['meta'])
+ with open(meta_data_path, 'rb') as f:
+ meta_data = pickle.load(f)
+ meta_data.update(anno)
+ else:
+ meta_data = anno
+
+ # DIML_indoor has no cam_in
+ if 'cam_in' not in meta_data:
+ meta_data['cam_in'] = [1081, 1081, 704, 396]
+ return meta_data
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ h, w, _ = rgb.shape # to rgb size
+ depth_resize = cv2.resize(depth, (w, h), interpolation=cv2.INTER_NEAREST)
+ return depth_resize
+
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = DIMLDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/diode_dataset.py b/finetune/Metric3D/training/mono/datasets/diode_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..d18541b4029474b3e99b5ee5dcde89d040a5e806
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/diode_dataset.py
@@ -0,0 +1,273 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+def creat_uv_mesh(H, W):
+ y, x = np.meshgrid(np.arange(0, H, dtype=np.float), np.arange(0, W, dtype=np.float), indexing='ij')
+ meshgrid = np.stack((x,y))
+ ones = np.ones((1,H*W), dtype=np.float)
+ xy = meshgrid.reshape(2, -1)
+ return np.concatenate([xy, ones], axis=0)
+
+class DIODEDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(DIODEDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ # meshgrid for depth reprojection
+ self.xy = creat_uv_mesh(768, 1024)
+
+ def get_data_for_test(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ # load data
+ curr_rgb, curr_depth, curr_normal, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_cam_model']
+ ori_curr_intrinsic = meta_data['cam_in']
+
+ # get crop size
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], #+ tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+ inv_depth = self.depth2invdepth(depth_out, np.zeros_like(depth_out, dtype=np.bool))
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ ori_curr_intrinsic_mat = self.intrinsics_list2mat(ori_curr_intrinsic)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ curr_normal = torch.from_numpy(curr_normal.transpose((2,0,1)))
+
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ sample_id=idx,
+ data_path=meta_data['rgb'],
+ inv_depth=inv_depth,
+ normal=curr_normal,
+ )
+ return data
+
+
+ # def get_data_for_trainval(self, idx: int):
+ # anno = self.annotations['files'][idx]
+ # meta_data = self.load_meta_data(anno)
+
+ # # curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ # # curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ # # curr_sem_path = os.path.join(self.sem_root, meta_data['sem']) if self.sem_root is not None and ('sem' in meta_data) and (meta_data['sem'] is not None) else None
+ # # curr_depth_mask_path = os.path.join(self.depth_mask_root, meta_data['depth_mask']) if self.depth_mask_root is not None and ('depth_mask' in meta_data) and (meta_data['depth_mask'] is not None) else None
+ # data_path = self.load_data_path(meta_data)
+ # data_batch = self.load_batch(meta_data, data_path)
+
+ # curr_rgb, curr_depth, curr_normal, curr_sem, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_sem'], data_batch['curr_cam_model']
+
+ # # load data
+ # # curr_intrinsic = meta_data['cam_in']
+ # # curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+
+ # # # mask the depth
+ # # curr_depth = curr_depth.squeeze()
+ # # depth_mask = self.load_depth_valid_mask(curr_depth_mask_path, curr_depth)
+ # # curr_depth[~depth_mask] = -1
+
+
+ # # # get semantic labels
+ # # curr_sem = self.load_sem_label(curr_sem_path, curr_depth)
+ # # # create camera model
+ # # curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+
+ # # get crop size
+ # transform_paras = dict(random_crop_size = self.random_crop_size)
+ # rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ # images=[curr_rgb, ],
+ # labels=[curr_depth, ],
+ # intrinsics=[curr_intrinsic,],
+ # cam_models=[curr_cam_model, ],
+ # other_labels=[curr_sem, ],
+ # transform_paras=transform_paras)
+ # # process sky masks
+ # sem_mask = other_labels[0].int()
+
+ # # clip depth map
+ # depth_out = self.normalize_depth(depths[0])
+ # # set the depth in sky region to the maximum depth
+ # depth_out[sem_mask==142] = -1 #self.depth_normalize[1] - 1e-6
+ # filename = os.path.basename(meta_data['rgb'])
+ # curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ # cam_models_stacks = [
+ # torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ # for i in [2, 4, 8, 16, 32]
+ # ]
+ # pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ # data = dict(input=rgbs[0],
+ # target=depth_out,
+ # intrinsic=curr_intrinsic_mat,
+ # filename=filename,
+ # dataset=self.data_name,
+ # cam_model=cam_models_stacks,
+ # #ref_input=rgbs[1:],
+ # # tmpl_flg=tmpl_annos['w_tmpl'],
+ # pad=torch.tensor(pad),
+ # data_type=[self.data_type, ],
+ # sem_mask=sem_mask.int())
+ # return data
+
+ # def get_data_for_test(self, idx: int):
+ # anno = self.annotations['files'][idx]
+ # meta_data = self.load_meta_data(anno)
+ # curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ # curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ # curr_depth_mask_path = os.path.join(self.depth_mask_root, meta_data['depth_mask']) if self.depth_mask_root is not None and ('depth_mask' in meta_data) and (meta_data['depth_mask'] is not None) else None
+
+ # # load data
+ # ori_curr_intrinsic = meta_data['cam_in']
+ # curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+
+ # # mask the depth
+ # curr_depth = curr_depth.squeeze()
+ # depth_mask = self.load_depth_valid_mask(curr_depth_mask_path, curr_depth)
+ # curr_depth[~depth_mask] = -1
+
+ # ori_h, ori_w, _ = curr_rgb.shape
+ # # create camera model
+ # curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+
+ # # get crop size
+ # transform_paras = dict()
+ # rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ # images=[curr_rgb,], #+ tmpl_rgbs,
+ # labels=[curr_depth, ],
+ # intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ # cam_models=[curr_cam_model, ],
+ # transform_paras=transform_paras)
+ # # depth in original size and orignial metric***
+ # depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+
+ # filename = os.path.basename(meta_data['rgb'])
+ # curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ # pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ # scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ # cam_models_stacks = [
+ # torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ # for i in [2, 4, 8, 16, 32]
+ # ]
+ # raw_rgb = torch.from_numpy(curr_rgb)
+ # # rel_pose = torch.from_numpy(tmpl_annos['tmpl_pose_list'][0])
+
+ # data = dict(input=rgbs[0],
+ # target=depth_out,
+ # intrinsic=curr_intrinsic_mat,
+ # filename=filename,
+ # dataset=self.data_name,
+ # cam_model=cam_models_stacks,
+ # pad=pad,
+ # scale=scale_ratio,
+ # raw_rgb=raw_rgb,
+ # sample_id=idx,
+ # data_path=meta_data['rgb'],
+ # )
+ # return data
+
+
+ def load_batch(self, meta_data, data_path):
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'])
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+
+ try:
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1], depth=curr_depth, K=curr_intrinsic) # !!! this is diff of BaseDataset
+ except:
+ curr_normal = np.zeros_like(curr_rgb)
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])
+ curr_depth[~depth_mask] = -1
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ )
+ return data_batch
+
+
+ def load_norm_label(self, norm_path, H, W, depth, K):
+ normal = np.load(norm_path)
+ normal[:,:,1:] *= -1
+ normal = self.align_normal(normal, depth, K, H, W)
+
+ return normal
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>150] = 0
+ depth[depth<0.1] = 0
+ depth /= self.metric_scale
+ return depth
+
+ def align_normal(self, normal, depth, K, H, W):
+ # inv K
+ K = np.array([[K[0], 0 ,K[2]],
+ [0, K[1], K[3]],
+ [0, 0, 1]])
+ inv_K = np.linalg.inv(K)
+ # reprojection depth to camera points
+ if H == 768 and W == 1024:
+ xy = self.xy
+ else:
+ print('img size no-equal 768x1024')
+ xy = creat_uv_mesh(H, W)
+ points = np.matmul(inv_K[:3, :3], xy).reshape(3, H, W)
+ points = depth * points
+ points = points.transpose((1,2,0))
+
+ # align normal
+ orient_mask = np.sum(normal * points, axis=2) > 0
+ normal[orient_mask] *= -1
+
+ return normal
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = DIODEDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/distributed_sampler.py b/finetune/Metric3D/training/mono/datasets/distributed_sampler.py
new file mode 100644
index 0000000000000000000000000000000000000000..da3639964f4391b7b5b308bec64ca1be1f2d45e4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/distributed_sampler.py
@@ -0,0 +1,275 @@
+import numpy as np
+import logging
+import torch.distributed as dist
+import math
+import os
+from mono.utils.comm import get_func, main_process
+from torch.utils.data import ConcatDataset, DataLoader
+import random
+import copy
+import torch
+import logging
+
+
+def build_dataset_n_sampler_with_cfg(cfg, phase):
+ # build data array, similar datasets are organized in the same group
+ datasets_array = build_data_array(cfg, phase)
+ # concatenate datasets with torch.utils.data.ConcatDataset methods
+ dataset_merge = concatenate_datasets(datasets_array)
+ # customerize sampler
+ custom_sampler = CustomerMultiDataSampler(cfg, dataset_merge, phase)
+ return dataset_merge, custom_sampler
+
+class CustomerMultiDataSampler(torch.utils.data.Sampler):
+ """
+ Customerize a sampler method. During this process, the size of some datasets will be tailored or expanded.
+ Such process aims to ensure each group has the same data size.
+ e.g. dataset_list: [[A, B, C], [E, F], M], then group 'A,B,C' (Size(A) + Size(B) + Size(C)) has the same size
+ as to group 'E,F' (Size(E) + Size(F)), so as to 'M'.
+ args:
+ @ cfg: configs for each dataset.
+ @ dataset_merge: merged multiple datasets with the torch.utils.data.ConcatDataset method.
+ @ phase: train/val/test phase.
+ """
+
+ def __init__(self, cfg, dataset_merge, phase):
+ self.cfg = cfg
+ self.world_size = int(os.environ['WORLD_SIZE'])
+ self.phase = phase
+ self.global_rank = cfg.dist_params.global_rank
+ self.dataset_merge = dataset_merge
+ self.logger = logging.getLogger()
+ if main_process():
+ self.logger.info(f'Initilized CustomerMultiDataSampler for {phase}.')
+ self.random_seed = 136
+ self.random_seed_cp = 639
+
+ def __iter__(self):
+ self.create_samplers()
+ self.logger.info("Sample list of {} in rank {} is: {}".format(self.phase, self.global_rank, ' '.join(map(str, self.sample_indices_array[-20: -10]))))
+ # subsample, each rank sample a subset for training.
+ rank_offset = self.each_gpu_size * self.global_rank
+ rank_indices = self.sample_indices_array[rank_offset : rank_offset + self.each_gpu_size]
+
+ assert rank_indices.size == self.each_gpu_size
+
+ for id in rank_indices:
+ yield id
+
+ def __len__(self):
+ return self.total_dist_size
+
+ def create_samplers(self):
+ # sample idx for each dataset, idx value should not exceed the size of data,
+ # i.e. 0 <= idx < len(data_size)
+ #self.samples_mat = []
+ self.indices_mat = []
+ # size expanded, idx cumulative aggregrated for calling
+ self.indices_expand_mat = []
+
+ # max group size, each group may consists of multiple similar datasets
+ max_group_size = max([len(i) for i in self.dataset_merge.datasets])
+
+ dataset_cumulative_sizes = [0] + self.dataset_merge.cumulative_sizes
+
+ for gi, dataset_group in enumerate(self.dataset_merge.datasets):
+ # the merged dataset consists of multiple grouped datasets
+ samples_group = []
+ indices_expand_group = []
+ indices_group = []
+
+ # to ensure each group has the same size, group with less data has to duplicate its sample list for 'cp_times' times
+ cp_times = max_group_size / len(dataset_group)
+
+ # adjust each group to ensure they have the same data size
+ group_cumulative_sizes = [0] + dataset_group.cumulative_sizes
+ expand_indices_sizes = (np.array(group_cumulative_sizes) * cp_times).astype(np.int)
+ expand_indices_sizes[-1] = max_group_size
+ # datasets in the same group have to expand its sample list
+ expand_indices_sizes = expand_indices_sizes[1:] - expand_indices_sizes[:-1]
+
+ for di, dataset_i in enumerate(dataset_group.datasets):
+ # datasets residing in each group may have similar features
+ # samples indices list
+ dataset_i_ori_sample_list = self.dataset_merge.datasets[gi].datasets[di].sample_list
+ if self.phase == 'train':
+ #sample_list_i = random.sample(dataset_i_ori_sample_list, len(dataset_i_ori_sample_list))
+ sample_list_i = dataset_i_ori_sample_list
+ else:
+ # no shuffle in val or test
+ sample_list_i = dataset_i_ori_sample_list
+ #samples_group.append(sample_list_i)
+
+ # expand the sample list for each dataset
+ expand_size_i = expand_indices_sizes[di]
+ indices_expand_list = copy.deepcopy(sample_list_i)
+
+ for i in range(int(cp_times)-1):
+ #indices_expand_list += random.sample(sample_list_i, len(dataset_i))
+ indices_expand_list += sample_list_i
+ random.seed(self.random_seed_cp)
+ indices_expand_list += random.sample(sample_list_i, len(dataset_i))[:expand_size_i % len(dataset_i)]
+ # adjust indices value
+ indices_expand_list = np.array(indices_expand_list) + dataset_cumulative_sizes[gi] + group_cumulative_sizes[di]
+ indices_list = np.array(sample_list_i) + dataset_cumulative_sizes[gi] + group_cumulative_sizes[di]
+
+ # the expanded sample list for dataset_i
+ indices_expand_group.append(indices_expand_list)
+ # the original sample list for the dataset_i
+ indices_group.append(indices_list)
+
+ if main_process():
+ self.logger.info(f'"{dataset_i.data_name}", {self.phase} set in group {gi}: ' +
+ f'expand size {len(sample_list_i)} --->>>---, {expand_size_i}')
+
+ concat_group = np.concatenate(indices_expand_group)
+ # shuffle the grouped datasets samples, e.g. each group data is [a1, a2, a3, b1, b2, b3, b4, c1, c2], the shuffled one, maybe, is [a3, b1, b2, b3, b4, c1,...]
+ np.random.seed(self.random_seed)
+ if self.phase == 'train':
+ np.random.shuffle(concat_group)
+ self.indices_expand_mat.append(concat_group)
+ self.indices_mat.append(np.concatenate(indices_group))
+
+ # create sample list
+ if "train" in self.phase:
+ # data groups are cross sorted, i.e. [A, B, C, A, B, C....]
+ self.sample_indices_array = np.array(self.indices_expand_mat).transpose(1, 0).reshape(-1)
+ self.total_indices_size = max_group_size * len(self.dataset_merge.datasets)
+ else:
+ self.sample_indices_array = np.concatenate(self.indices_mat[:])
+ self.total_indices_size = self.sample_indices_array.size
+
+ self.total_sample_size = len(self.dataset_merge)
+ self.each_gpu_size = int(np.ceil(self.total_indices_size * 1.0 / self.world_size)) # ignore some residual samples
+ self.total_dist_size = self.each_gpu_size * self.world_size
+ # add extra samples to make it evenly divisible
+ diff_size = int(self.total_dist_size - self.total_indices_size) # int(self.total_dist_size - self.total_sample_size)
+ if diff_size > 0:
+ self.sample_indices_array = np.append(self.sample_indices_array, self.sample_indices_array[:diff_size])
+ #if main_process():
+ self.logger.info(f'Expanded data size in merged dataset: {self.total_sample_size}, adjusted data size for distributed running: {self.total_dist_size}')
+ self.random_seed += 413
+ self.random_seed_cp += 377
+
+
+def build_data_array(cfg, phase):
+ """
+ Construct data repo with cfg. In cfg, there is a data name array, which encloses the name of each data.
+ Each data name links to a data config file. With this config file, dataset can be constructed.
+ e.g. [['A', 'B', 'C'], ['E', 'F'], 'M']. Each letter indicates a dataset.
+ """
+
+ datasets_array = []
+ data_array_names_for_log = []
+
+ dataname_array = cfg.data_array
+ for group_i in dataname_array:
+ dataset_group_i = []
+ data_group_i_names_for_log = []
+ if not isinstance(group_i, list):
+ group_i = [group_i, ]
+ for data_i in group_i:
+ if not isinstance(data_i, dict):
+ raise TypeError(f'data name must be a dict, but got {type(data_i)}')
+ # each data only can employ a single dataset config
+ assert len(data_i.values()) == 1
+ if list(data_i.values())[0] not in cfg:
+ raise RuntimeError(f'cannot find the data config for {data_i}')
+
+ # dataset configure for data i
+ #data_i_cfg = cfg[data_i]
+ args = copy.deepcopy(cfg) #data_i_cfg.copy()
+ data_i_cfg_name = list(data_i.values())[0]
+ data_i_db_info_name = list(data_i.keys())[0]
+ data_i_db_info = cfg.db_info[data_i_db_info_name]
+
+ # Online evaluation using only metric datasets
+ # if phase == 'val' and 'exclude' in cfg.evaluation \
+ # and data_i_db_info_name in cfg.evaluation.exclude:
+ # continue
+
+ # dataset lib name
+ obj_name = cfg[data_i_cfg_name]['lib']
+ obj_path = os.path.dirname(__file__).split(os.getcwd() + '/')[-1].replace('/', '.') + '.' + obj_name
+ obj_cls = get_func(obj_path)
+ if obj_cls is None:
+ raise KeyError(f'{obj_name} is not in .data')
+
+ dataset_i = obj_cls(
+ args[data_i_cfg_name],
+ phase,
+ db_info=data_i_db_info,
+ **cfg.data_basic)
+ # if 'Taskonomy' not in data_i:
+ # print('>>>>>>>>>>ditributed_sampler LN189', dataset_i.data_name, dataset_i.annotations['files'][0]['rgb'].split('/')[-1],
+ # dataset_i.annotations['files'][1000]['rgb'].split('/')[-1], dataset_i.annotations['files'][3000]['rgb'].split('/')[-1])
+ # else:
+ # print('>>>>>>>>>>ditributed_sampler LN189', dataset_i.data_name, dataset_i.annotations['files'][0]['meta_data'].split('/')[-1],
+ # dataset_i.annotations['files'][1000]['meta_data'].split('/')[-1], dataset_i.annotations['files'][3000]['meta_data'].split('/')[-1])
+ dataset_group_i.append(dataset_i)
+ # get data name for log
+ data_group_i_names_for_log.append(data_i_db_info_name)
+
+ datasets_array.append(dataset_group_i)
+ data_array_names_for_log.append(data_group_i_names_for_log)
+
+ if main_process():
+ logger = logging.getLogger()
+ logger.info(f'{phase}: data array ({data_array_names_for_log}) has been constructed.')
+ return datasets_array
+
+def concatenate_datasets(datasets_array):
+ """
+ Merge grouped datasets to a single one.
+ args:
+ @ dataset_list: the list of constructed dataset.
+ """
+ #max_size = 0
+ dataset_merge = []
+ for group in datasets_array:
+ group_dataset = ConcatDataset(group)
+ group_size = len(group_dataset)
+ #max_size = max_size if group_size < max_size else group_size
+ dataset_merge.append(group_dataset)
+ return ConcatDataset(dataset_merge)
+
+
+def log_canonical_transfer_info(cfg):
+ logger = logging.getLogger()
+ data = []
+ canonical_focal_length = cfg.data_basic.canonical_space.focal_length
+ canonical_size = cfg.data_basic.canonical_space.img_size
+ for group_i in cfg.data_array:
+ if not isinstance(group_i, list):
+ group_i = [group_i, ]
+ for data_i in group_i:
+ if not isinstance(data_i, dict):
+ raise TypeError(f'data name must be a dict, but got {type(data_i)}')
+ assert len(data_i.values()) == 1
+ if list(data_i.values())[0] not in cfg:
+ raise RuntimeError(f'cannot find the data config for {data_i.values()}')
+ if list(data_i.values())[0] not in data:
+ data.append(list(data_i.values())[0])
+
+ logger.info('>>>>>>>>>>>>>>Some data transfer details during augmentation.>>>>>>>>>>>>>>')
+ for data_i in data:
+ data_i_cfg = cfg[data_i]
+ if type(data_i_cfg.original_focal_length) != tuple:
+ ori_focal = (data_i_cfg.original_focal_length, )
+ else:
+ ori_focal = data_i_cfg.original_focal_length
+
+ log_str = '%s transfer details: \n' % data_i
+ for ori_f in ori_focal:
+ # to canonical space
+ scalor = canonical_focal_length / ori_f
+ img_size = (data_i_cfg.original_size[0]*scalor, data_i_cfg.original_size[1]*scalor)
+ log_str += 'To canonical space: focal length, %f -> %f; size, %s -> %s\n' %(ori_f, canonical_focal_length, data_i_cfg.original_size, img_size)
+
+ # random resize in augmentaiton
+ resize_range = data_i_cfg.data.train.pipeline[1].ratio_range
+ resize_low = (img_size[0]*resize_range[0], img_size[1]*resize_range[0])
+ resize_up = (img_size[0]*resize_range[1], img_size[1]*resize_range[1])
+ log_str += 'Random resize bound: %s ~ %s; \n' %(resize_low, resize_up)
+
+ logger.info(log_str)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/drivingstereo_dataset.py b/finetune/Metric3D/training/mono/datasets/drivingstereo_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce6aa79bb3054a4909e87fe010ef22fe01736b71
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/drivingstereo_dataset.py
@@ -0,0 +1,35 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class DrivingStereoDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(DrivingStereoDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/dsec_dataset.py b/finetune/Metric3D/training/mono/datasets/dsec_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..1029c71c69c2af99a0c9c119332a4d7ee29dd366
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/dsec_dataset.py
@@ -0,0 +1,35 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class DSECDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(DSECDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/eth3d_dataset.py b/finetune/Metric3D/training/mono/datasets/eth3d_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..380e6fd6138ea05841efd886cbafd75d0f37adb7
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/eth3d_dataset.py
@@ -0,0 +1,94 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class ETH3DDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(ETH3DDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def __getitem__(self, idx):
+ anno = self.annotations['files'][idx]
+ curr_rgb_path = os.path.join(self.data_root, anno['rgb_path'])
+ curr_depth_path = os.path.join(self.depth_root, anno['depth_path'])
+ meta_data = self.load_meta_data(anno)
+ ori_curr_intrinsic = [2000, 2000, 3024, 2016] #meta_data['cam_in']
+
+ curr_rgb = cv2.imread(curr_rgb_path) # [r, g, b]
+ with open(curr_depth_path, 'r') as f:
+ imgfile = np.fromfile(f, np.float32)
+ curr_depth = imgfile.reshape((4032, 6048))
+ curr_depth[curr_depth>100] = 0
+
+ #curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ # curr_rgb = cv2.resize(curr_rgb, dsize=(3024, 2016), interpolation=cv2.INTER_LINEAR)
+ # curr_depth = cv2.resize(curr_depth, dsize=(3024, 2016), interpolation=cv2.INTER_LINEAR)
+ # ori_curr_intrinsic = [i//2 for i in ori_curr_intrinsic]
+
+ ori_h, ori_w, _ = curr_rgb.shape
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+ # load tmpl rgb info
+ # tmpl_annos = self.load_tmpl_annos(anno, curr_rgb, meta_data)
+ # tmpl_rgb = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in original size
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1]
+
+ filename = os.path.basename(anno['rgb_path'])
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ ref_input=rgbs[1:],
+ tmpl_flg=False,
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ normal = np.zeros_like(curr_rgb.transpose((2,0,1))),
+ #stereo_depth=torch.zeros_like(depth_out)
+ )
+ return data
+
+ def process_depth(self, depth):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = NYUDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/fisheye_dataset.py b/finetune/Metric3D/training/mono/datasets/fisheye_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..a9c2d75851451ea3a6dbd5e5c79cc44a80fe7402
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/fisheye_dataset.py
@@ -0,0 +1,76 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class FisheyeDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(FisheyeDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def load_data(self, path: str, is_rgb_img: bool=False):
+ if not os.path.exists(path):
+ self.logger.info(f'>>>>{path} does not exist.')
+ # raise RuntimeError(f'{path} does not exist.')
+
+ data_type = os.path.splitext(path)[-1]
+ if data_type in self.img_file_type:
+ if is_rgb_img:
+ data = cv2.imread(path)
+ else:
+ data = cv2.imread(path, -1)
+ data[data>65500] = 0
+ data &= 0x7FFF
+
+ elif data_type in self.np_file_type:
+ data = np.load(path)
+ else:
+ raise RuntimeError(f'{data_type} is not supported in current version.')
+
+ return data.squeeze()
+
+ def load_batch(self, meta_data, data_path):
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'])
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])[:, :, :]
+
+ # with masks from andy
+ curr_depth[~(depth_mask[:, :, 0])] = -1
+ curr_rgb[~(depth_mask[:, :, :])] = 0
+
+ # get stereo depth
+ curr_stereo_depth = self.load_stereo_depth_label(data_path['disp_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ curr_stereo_depth=curr_stereo_depth,
+ )
+ return data_batch
+
+
+ def process_depth(self, depth, rgb):
+
+ depth /= self.metric_scale
+ return depth
diff --git a/finetune/Metric3D/training/mono/datasets/hm3d_dataset.py b/finetune/Metric3D/training/mono/datasets/hm3d_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..d143453c9e16f19bfe778a1d358207e9bd2b8d57
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/hm3d_dataset.py
@@ -0,0 +1,35 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from PIL import Image
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class HM3DDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(HM3DDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+
+ def load_norm_label(self, norm_path, H, W):
+ with open(norm_path, 'rb') as f:
+ normal = Image.open(f)
+ normal = np.array(normal.convert(normal.mode), dtype=np.uint8)
+ invalid_mask = np.all(normal == 128, axis=2)
+ normal = normal.astype(np.float64) / 255.0 * 2 - 1
+ normal[invalid_mask, :] = 0
+ return normal
+
+ def process_depth(self, depth: np.array, rgb: np.array) -> np.array:
+ depth[depth>60000] = 0
+ depth = depth / self.metric_scale
+ return depth
diff --git a/finetune/Metric3D/training/mono/datasets/hypersim_dataset.py b/finetune/Metric3D/training/mono/datasets/hypersim_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..d255fceb11f7e93edf910431f73942367ce0642c
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/hypersim_dataset.py
@@ -0,0 +1,141 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from PIL import Image
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import h5py
+
+def creat_uv_mesh(H, W):
+ y, x = np.meshgrid(np.arange(0, H, dtype=np.float), np.arange(0, W, dtype=np.float), indexing='ij')
+ meshgrid = np.stack((x,y))
+ ones = np.ones((1,H*W), dtype=np.float)
+ xy = meshgrid.reshape(2, -1)
+ return np.concatenate([xy, ones], axis=0)
+
+class HypersimDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(HypersimDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+ # init uv
+
+ # meshgrid for depth reprojection
+ self.xy = creat_uv_mesh(768, 1024)
+
+ def load_batch(self, meta_data, data_path):
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'])
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1], depth=curr_depth, K=curr_intrinsic) # !!! this is diff of BaseDataset
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])
+ curr_depth[~depth_mask] = -1
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ )
+ return data_batch
+
+ def load_data_path(self, meta_data):
+ # 'rgbs': {'rgb_color': 'Hypersim/data/ai_001_001/images/scene_cam_00_final_preview/frame.0008.color.jpg',
+ # 'rgb_gamma': 'Hypersim/data/ai_001_001/images/scene_cam_00_final_preview/frame.0008.gamma.jpg',
+ # 'rgb_tonemap': 'Hypersim/data/ai_001_001/images/scene_cam_00_final_preview/frame.0008.tonemap.jpg',
+ # 'rgb_raw': 'Hypersim/data/ai_001_001/images/scene_cam_00_final_hdf5/frame.0008.color.hdf5'}
+ meta_data['rgb'] = meta_data['rgbs']['rgb_color'] # this is diff of BaseDataset
+ curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ curr_sem_path = os.path.join(self.sem_root, meta_data['sem']) \
+ if self.sem_root is not None and ('sem' in meta_data) and (meta_data['sem'] is not None) \
+ else None
+ curr_norm_path = os.path.join(self.norm_root, meta_data['normal']) \
+ if ('normal' in meta_data) and (meta_data['normal'] is not None) and (self.norm_root is not None) \
+ else None
+ curr_depth_mask_path = os.path.join(self.depth_mask_root, meta_data['depth_mask']) \
+ if self.depth_mask_root is not None and ('depth_mask' in meta_data) and (meta_data['depth_mask'] is not None) \
+ else None
+
+ data_path=dict(
+ rgb_path=curr_rgb_path,
+ depth_path=curr_depth_path,
+ sem_path=curr_sem_path,
+ normal_path=curr_norm_path,
+ depth_mask_path=curr_depth_mask_path,
+ )
+ return data_path
+
+ def load_rgb_depth(self, rgb_path: str, depth_path: str):
+ """
+ Load the rgb and depth map with the paths.
+ """
+ rgb = self.load_data(rgb_path, is_rgb_img=True)
+ if rgb is None:
+ self.logger.info(f'>>>>{rgb_path} has errors.')
+
+ # depth = self.load_data(depth_path)
+ with h5py.File(depth_path, "r") as f: depth = f["dataset"][:]
+ np.nan_to_num(depth, copy=False, nan=0) # fill nan in gt
+ if depth is None:
+ self.logger.info(f'{depth_path} has errors.')
+
+ depth = depth.astype(np.float)
+
+ depth = self.process_depth(depth, rgb)
+ return rgb, depth
+
+
+ def load_norm_label(self, norm_path, H, W, depth, K):
+ with h5py.File(norm_path, "r") as f:
+ normal = f["dataset"][:]
+ np.nan_to_num(normal, copy=False, nan=0)
+ normal[:,:,1:] *= -1
+ normal = normal.astype(np.float)
+
+ return self.align_normal(normal, depth, K, H, W)
+
+ def process_depth(self, depth: np.array, rgb: np.array) -> np.array:
+ depth[depth>60000] = 0
+ depth = depth / self.metric_scale
+ return depth
+
+ def align_normal(self, normal, depth, K, H, W):
+ '''
+ Orientation of surface normals in hypersim is not always consistent
+ see https://github.com/apple/ml-hypersim/issues/26
+ '''
+ # inv K
+ K = np.array([[K[0], 0 ,K[2]],
+ [0, K[1], K[3]],
+ [0, 0, 1]])
+ inv_K = np.linalg.inv(K)
+ # reprojection depth to camera points
+ if H == 768 and W == 1024:
+ xy = self.xy
+ else:
+ print('img size no-equal 768x1024')
+ xy = creat_uv_mesh(H, W)
+ points = np.matmul(inv_K[:3, :3], xy).reshape(3, H, W)
+ points = depth * points
+ points = points.transpose((1,2,0))
+
+ # align normal
+ orient_mask = np.sum(normal * points, axis=2) > 0
+ normal[orient_mask] *= -1
+
+ return normal
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/ibims_dataset.py b/finetune/Metric3D/training/mono/datasets/ibims_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..50a5318ce7e75afa18df9ec19360bd50eada5fdf
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/ibims_dataset.py
@@ -0,0 +1,92 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class IBIMSDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(IBIMSDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ self.avg = torch.nn.AvgPool2d(kernel_size=7, stride=1, ceil_mode=False, count_include_pad=True, divisor_override=None)
+ self.unfold = torch.nn.Unfold(kernel_size=7, dilation=1, padding=0, stride=1)
+ self.pad = torch.nn.ZeroPad2d(3)
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>50000] = 0
+ depth /= self.metric_scale
+ return depth
+
+ def load_batch(self, meta_data, data_path):
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'])
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1], depth=curr_depth, K=curr_intrinsic) # !!! this is diff of BaseDataset
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])
+ curr_depth[~depth_mask] = -1
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ )
+ return data_batch
+
+ def load_norm_label(self, norm_path, H, W, depth, K):
+ depth = torch.from_numpy(depth).squeeze()
+ K = torch.Tensor([[K[0], 0 ,K[2]],
+ [0, K[1], K[3]],
+ [0, 0, 1]])
+ K_inv = K.inverse()
+
+ y, x = torch.meshgrid([torch.arange(0, 480, dtype=torch.float32),
+ torch.arange(0, 640, dtype=torch.float32)], indexing='ij')
+ x = x.reshape(1, 480*640)
+ y = y.reshape(1, 480*640)
+ ones = torch.ones_like(x)
+ coord_2d = torch.cat((x, y, ones), dim=0)
+
+ coord_3d = torch.matmul(K_inv, coord_2d).view(3, 480, 640)
+ coord_3d = (coord_3d * depth[None, :])[None, :]
+ coord_3d_mean = self.avg(coord_3d)
+
+ uf_coord_3d = self.unfold(coord_3d.permute(1, 0, 2, 3))
+ coord_3d_decenter = uf_coord_3d - coord_3d_mean.view(3, 1, (480-6)*(640-6))
+ coord_3d_decenter = coord_3d_decenter.permute(2, 0, 1)
+ cov = torch.bmm(coord_3d_decenter, coord_3d_decenter.permute(0, 2, 1))
+
+ eig = torch.linalg.eigh(cov)
+ #svd = torch.linalg.svd(coord_3d_decenter)
+ normal = (eig[1])[:, :, 0].float()
+ #normal = (svd[1])[:, 2, :]
+ normal = self.pad(normal.permute(1, 0).view(1, 3, (480-6), (640-6)))
+
+ orient_mask = (torch.sum(normal * coord_3d, axis=1) < 0).unsqueeze(1)
+ normal = normal * orient_mask - normal * (~orient_mask)
+ gt_normal = normal.squeeze().permute(1, 2, 0).numpy()
+ return gt_normal
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = IBIMSDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/kitti_dataset.py b/finetune/Metric3D/training/mono/datasets/kitti_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..2962f712ab348af8d2d3b46a2412b565a5446be2
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/kitti_dataset.py
@@ -0,0 +1,190 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class KITTIDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(KITTIDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def get_data_for_trainval(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ # if data_path['sem_path'] is not None:
+ # print(self.data_name)
+
+ curr_rgb, curr_depth, curr_normal, curr_sem, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_sem'], data_batch['curr_cam_model']
+ #curr_stereo_depth = data_batch['curr_stereo_depth']
+
+ th = 352 # target size for bottom cropping, a common practice for kitti training
+ tw = 1216
+
+ ch = curr_rgb.shape[0]
+ cw = curr_rgb.shape[1]
+
+ h_start = ch - th
+ w_start = (cw - tw) // 2
+ w_end = w_start + tw
+
+ curr_intrinsic = meta_data['cam_in']
+
+ curr_rgb = curr_rgb[h_start:, w_start:w_end, :]
+ curr_depth = curr_depth[h_start:, w_start:w_end]
+
+ curr_normal = curr_normal[h_start:, w_start:w_end, :]
+ curr_sem = curr_sem[h_start:, w_start:w_end]
+
+ curr_intrinsic[2] = curr_intrinsic[2] - w_start # cw
+ curr_intrinsic[3] = curr_intrinsic[3] - h_start # ch
+
+ # A patch for stereo depth dataloader (no need to modify specific datasets)
+ if 'curr_stereo_depth' in data_batch.keys():
+ curr_stereo_depth = data_batch['curr_stereo_depth']
+ else:
+ curr_stereo_depth = self.load_stereo_depth_label(None, H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+
+ # data augmentation
+ transform_paras = dict(random_crop_size = self.random_crop_size) # dict()
+ assert curr_rgb.shape[:2] == curr_depth.shape == curr_normal.shape[:2] == curr_sem.shape
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ other_labels=[curr_sem, curr_stereo_depth],
+ transform_paras=transform_paras)
+ # process sky masks
+ sem_mask = other_labels[0].int()
+ # clip depth map
+ depth_out = self.normalize_depth(depths[0])
+ # set the depth of sky region to the invalid
+ depth_out[sem_mask==142] = -1 # self.depth_normalize[1] - 1e-6
+ # get inverse depth
+ inv_depth = self.depth2invdepth(depth_out, sem_mask==142)
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+
+ # stereo_depth
+ stereo_depth_pre_trans = other_labels[1] * (other_labels[1] > 0.3) * (other_labels[1] < 200)
+ stereo_depth = stereo_depth_pre_trans * transform_paras['label_scale_factor']
+ stereo_depth = self.normalize_depth(stereo_depth)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=torch.tensor(pad),
+ data_type=[self.data_type, ],
+ sem_mask=sem_mask.int(),
+ stereo_depth= stereo_depth,
+ normal=normals[0],
+ inv_depth=inv_depth,
+ scale=transform_paras['label_scale_factor'])
+ return data
+
+
+ def get_data_for_test(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ # load data
+ ori_curr_intrinsic = meta_data['cam_in']
+ curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ # crop rgb/depth
+ curr_rgb = curr_rgb[:, 43: 1197, :]
+ curr_depth = curr_depth[:, 43: 1197]
+
+ ori_h, ori_w, _ = curr_rgb.shape
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+ # load tmpl rgb info
+ # tmpl_annos = self.load_tmpl_image_pose(curr_rgb, meta_data)
+ # tmpl_rgbs = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ # get crop size
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], #+ tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+
+ filename = os.path.basename(meta_data['rgb'])
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ # rel_pose = torch.from_numpy(tmpl_annos['tmpl_pose_list'][0])
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ # ref_input=rgbs[1:],
+ # tmpl_flg=tmpl_annos['w_tmpl'],
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ normal = np.zeros_like(curr_rgb.transpose((2,0,1))),
+ # rel_pose=rel_pose,
+ )
+ return data
+
+ def process_depth(self, depth, rgb):
+ new_depth = np.zeros_like(depth)
+ H, W = depth.shape
+ crop_h_up = int(0.3324324 * H)
+ crop_h_down = int(0.91351351 * H)
+ crop_w_left = int(0.0359477 * W)
+ crop_w_right = int(0.96405229 * W)
+
+ new_depth[crop_h_up:crop_h_down, crop_w_left: crop_w_right] = depth[crop_h_up:crop_h_down, crop_w_left: crop_w_right]
+ new_depth[new_depth>65500] = 0
+ new_depth /= self.metric_scale
+ #print('image size', new_depth.shape, crop_h_up, crop_h_down, crop_w_left, crop_w_right)
+ #self.logger.info('image size, {new_depth.shape}, {crop_h_up}, {crop_h_down}, {crop_w_left}, {crop_w_right}')
+ return new_depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = KITTIDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/lyft_dataset.py b/finetune/Metric3D/training/mono/datasets/lyft_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..e007d100917b0023291a07c9fb4a9427244c7cbe
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/lyft_dataset.py
@@ -0,0 +1,34 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import pickle
+
+class LyftDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(LyftDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/mapillary_psd_dataset.py b/finetune/Metric3D/training/mono/datasets/mapillary_psd_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..1f10899c7c7362d005ffeacf79aa2ce288fff1d4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/mapillary_psd_dataset.py
@@ -0,0 +1,35 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import matplotlib.pyplot as plt
+
+class MapillaryPSDDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(MapillaryPSDDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ h, w, _ = rgb.shape # to rgb size
+ depth_resize = cv2.resize(depth, (w, h), interpolation=cv2.INTER_NEAREST)
+ return depth_resize
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = MapillaryDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/matterport3d_dataset.py b/finetune/Metric3D/training/mono/datasets/matterport3d_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..27afefb74ed699ed9756f3ce3c3c5530a3dcb94b
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/matterport3d_dataset.py
@@ -0,0 +1,44 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from PIL import Image
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class Matterport3DDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(Matterport3DDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+
+ def load_norm_label(self, norm_path, H, W):
+ normal_x = cv2.imread(norm_path['x'], cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
+ normal_y = cv2.imread(norm_path['y'], cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
+ normal_z = cv2.imread(norm_path['z'], cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
+ raw_normal = np.array([normal_x, normal_y, normal_z])
+ invalid_mask = np.all(raw_normal == 0, axis=0)
+
+ ego_normal = raw_normal.astype(np.float64) / 32768.0 - 1
+ ego2cam = np.array([[1,0,0],
+ [0,-1,0],
+ [0,0,-1]])
+ normal = (ego2cam @ ego_normal.reshape(3,-1)).reshape(ego_normal.shape)
+ normal[:,invalid_mask] = 0
+ normal = normal.transpose((1,2,0))
+ if normal.shape[0] != H or normal.shape[1] != W:
+ normal = cv2.resize(normal, [W,H], interpolation=cv2.INTER_NEAREST)
+ return normal
+
+ def process_depth(self, depth: np.array, rgb: np.array) -> np.array:
+ depth[depth>65500] = 0
+ depth = depth / self.metric_scale
+ return depth
diff --git a/finetune/Metric3D/training/mono/datasets/nuscenes_dataset.py b/finetune/Metric3D/training/mono/datasets/nuscenes_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..b72e1c073bad9aeb8b237a1d8c33eec55fefe0be
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/nuscenes_dataset.py
@@ -0,0 +1,34 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import pickle
+
+class NuScenesDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(NuScenesDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/nyu_dataset.py b/finetune/Metric3D/training/mono/datasets/nyu_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..3ad8a1a0b84a1abd1dd055f385db2322fa8d0cb9
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/nyu_dataset.py
@@ -0,0 +1,195 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class NYUDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(NYUDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ def get_data_for_trainval(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ # if data_path['sem_path'] is not None:
+ # print(self.data_name)
+
+ curr_rgb, curr_depth, curr_normal, curr_sem, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_sem'], data_batch['curr_cam_model']
+ #curr_stereo_depth = data_batch['curr_stereo_depth']
+ new_rgb = np.zeros_like(curr_rgb)
+ new_rgb[6:-6, 6:-6, :] = curr_rgb[6:-6, 6:-6, :]
+ curr_rgb = new_rgb
+
+ # A patch for stereo depth dataloader (no need to modify specific datasets)
+ if 'curr_stereo_depth' in data_batch.keys():
+ curr_stereo_depth = data_batch['curr_stereo_depth']
+ else:
+ curr_stereo_depth = self.load_stereo_depth_label(None, H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ curr_intrinsic = meta_data['cam_in']
+ # data augmentation
+ transform_paras = dict(random_crop_size = self.random_crop_size) # dict()
+ assert curr_rgb.shape[:2] == curr_depth.shape == curr_normal.shape[:2] == curr_sem.shape
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ other_labels=[curr_sem, curr_stereo_depth],
+ transform_paras=transform_paras)
+ # process sky masks
+ sem_mask = other_labels[0].int()
+ # clip depth map
+ depth_out = self.normalize_depth(depths[0])
+ # set the depth of sky region to the invalid
+ depth_out[sem_mask==142] = -1 # self.depth_normalize[1] - 1e-6
+ # get inverse depth
+ inv_depth = self.depth2invdepth(depth_out, sem_mask==142)
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+
+ # stereo_depth
+ stereo_depth_pre_trans = other_labels[1] * (other_labels[1] > 0.3) * (other_labels[1] < 200)
+ stereo_depth = stereo_depth_pre_trans * transform_paras['label_scale_factor']
+ stereo_depth = self.normalize_depth(stereo_depth)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=torch.tensor(pad),
+ data_type=[self.data_type, ],
+ sem_mask=sem_mask.int(),
+ stereo_depth= stereo_depth,
+ normal=normals[0],
+ inv_depth=inv_depth,
+ scale=transform_paras['label_scale_factor'])
+ return data
+
+ def get_data_for_test(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+ # load data
+ ori_curr_intrinsic = meta_data['cam_in']
+ curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ # crop rgb/depth
+ new_rgb = np.zeros_like(curr_rgb)
+ new_rgb[6:-6, 6:-6, :] = curr_rgb[6:-6, 6:-6, :]
+ curr_rgb = new_rgb
+
+ ori_h, ori_w, _ = curr_rgb.shape
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+
+ if 'normal' in meta_data.keys():
+ normal_path = os.path.join(self.data_root, meta_data['normal'])
+ else:
+ normal_path = None
+
+ curr_normal = self.load_norm_label(normal_path, H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+ # load tmpl rgb info
+ # tmpl_annos = self.load_tmpl_image_pose(curr_rgb, meta_data)
+ # tmpl_rgbs = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ # get crop size
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], #+ tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ transform_paras=transform_paras)
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+
+ filename = os.path.basename(meta_data['rgb'])
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ # rel_pose = torch.from_numpy(tmpl_annos['tmpl_pose_list'][0])
+ curr_normal = torch.from_numpy(curr_normal.transpose((2,0,1)))
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ # ref_input=rgbs[1:],
+ # tmpl_flg=tmpl_annos['w_tmpl'],
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ # rel_pose=rel_pose,
+ normal=curr_normal
+ #normal=np.zeros_like(curr_rgb.transpose((2,0,1))),
+ )
+ return data
+
+ def load_norm_label(self, norm_path, H, W):
+ if norm_path is None:
+ norm_gt = np.zeros((H, W, 3)).astype(np.float32)
+ else:
+ norm_gt = cv2.imread(norm_path)
+
+ norm_gt = np.array(norm_gt).astype(np.uint8)
+ norm_valid_mask = np.logical_not(
+ np.logical_and(
+ np.logical_and(
+ norm_gt[:, :, 0] == 0, norm_gt[:, :, 1] == 0),
+ norm_gt[:, :, 2] == 0))
+ norm_valid_mask = norm_valid_mask[:, :, np.newaxis]
+
+ norm_gt = ((norm_gt.astype(np.float32) / 255.0) * 2.0) - 1.0
+ norm_gt = norm_gt * norm_valid_mask * -1
+
+ return norm_gt
+
+ def process_depth(self, depth, rgb):
+ # eign crop
+ new_depth = np.zeros_like(depth)
+ new_depth[45:471, 41:601] = depth[45:471, 41:601]
+
+ new_depth[new_depth>65500] = 0
+ new_depth /= self.metric_scale
+ return new_depth
+
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = NYUDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/pandaset_dataset.py b/finetune/Metric3D/training/mono/datasets/pandaset_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..a6defd829967d97650f6131764da275828579a25
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/pandaset_dataset.py
@@ -0,0 +1,36 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class PandasetDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(PandasetDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ # depth[(depth>self.cap_range[1]) | (depth np.array:
+ depth[depth>60000] = 0
+ depth = depth / self.metric_scale
+ return depth
diff --git a/finetune/Metric3D/training/mono/datasets/scannet_dataset.py b/finetune/Metric3D/training/mono/datasets/scannet_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..8e51cd3fa686656c2d1c5d535358d0d9c471a35d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/scannet_dataset.py
@@ -0,0 +1,295 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class ScanNetDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(ScanNetDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+ # def get_data_for_test(self, idx):
+ # anno = self.annotations['files'][idx]
+ # curr_rgb_path = os.path.join(self.data_root, anno['rgb'])
+ # curr_depth_path = os.path.join(self.depth_root, anno['depth'])
+ # meta_data = self.load_meta_data(anno)
+ # ori_curr_intrinsic = meta_data['cam_in']
+
+ # curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ # # curr_rgb = cv2.resize(curr_rgb, dsize=(640, 480), interpolation=cv2.INTER_LINEAR)
+ # ori_h, ori_w, _ = curr_rgb.shape
+ # # create camera model
+ # curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+ # # load tmpl rgb info
+ # # tmpl_annos = self.load_tmpl_annos(anno, curr_rgb, meta_data)
+ # # tmpl_rgb = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ # transform_paras = dict()
+ # rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ # images=[curr_rgb, ],
+ # labels=[curr_depth, ],
+ # intrinsics=[ori_curr_intrinsic,],
+ # cam_models=[curr_cam_model, ],
+ # transform_paras=transform_paras)
+ # # depth in original size
+ # depth_out = self.clip_depth(curr_depth) * self.depth_range[1]
+
+ # filename = os.path.basename(anno['rgb'])
+ # curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ # pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ # scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ # cam_models_stacks = [
+ # torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ # for i in [2, 4, 8, 16, 32]
+ # ]
+ # raw_rgb = torch.from_numpy(curr_rgb)
+ # data = dict(input=rgbs[0],
+ # target=depth_out,
+ # intrinsic=curr_intrinsic_mat,
+ # filename=filename,
+ # dataset=self.data_name,
+ # cam_model=cam_models_stacks,
+ # ref_input=rgbs[1:],
+ # tmpl_flg=False,
+ # pad=pad,
+ # scale=scale_ratio,
+ # raw_rgb=raw_rgb,
+ # normal =np.zeros_like(curr_rgb.transpose((2,0,1))),
+ # )
+ # return data
+
+ def get_data_for_test(self, idx: int, test_mode=True):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path, test_mode)
+ # load data
+ curr_rgb, curr_depth, curr_normal, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_cam_model']
+ ori_curr_intrinsic = meta_data['cam_in']
+
+ # get crop size
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], #+ tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1] # self.clip_depth(depths[0]) #
+ inv_depth = self.depth2invdepth(depth_out, np.zeros_like(depth_out, dtype=np.bool))
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ curr_normal = torch.from_numpy(curr_normal.transpose((2,0,1)))
+
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ sample_id=idx,
+ data_path=meta_data['rgb'],
+ inv_depth=inv_depth,
+ normal=curr_normal,
+ )
+ return data
+
+ def get_data_for_trainval(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path, test_mode=False)
+
+ # if data_path['sem_path'] is not None:
+ # print(self.data_name)
+
+ curr_rgb, curr_depth, curr_normal, curr_sem, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_sem'], data_batch['curr_cam_model']
+ #curr_stereo_depth = data_batch['curr_stereo_depth']
+
+ # A patch for stereo depth dataloader (no need to modify specific datasets)
+ if 'curr_stereo_depth' in data_batch.keys():
+ curr_stereo_depth = data_batch['curr_stereo_depth']
+ else:
+ curr_stereo_depth = self.load_stereo_depth_label(None, H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ curr_intrinsic = meta_data['cam_in']
+ # data augmentation
+ transform_paras = dict(random_crop_size = self.random_crop_size) # dict()
+ assert curr_rgb.shape[:2] == curr_depth.shape == curr_normal.shape[:2] == curr_sem.shape
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ other_labels=[curr_sem, curr_stereo_depth],
+ transform_paras=transform_paras)
+ # process sky masks
+ sem_mask = other_labels[0].int()
+ # clip depth map
+ depth_out = self.normalize_depth(depths[0])
+ # set the depth of sky region to the invalid
+ depth_out[sem_mask==142] = -1 # self.depth_normalize[1] - 1e-6
+ # get inverse depth
+ inv_depth = self.depth2invdepth(depth_out, sem_mask==142)
+ filename = os.path.basename(meta_data['rgb'])[:-4] + '.jpg'
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+
+ # stereo_depth
+ stereo_depth_pre_trans = other_labels[1] * (other_labels[1] > 0.3) * (other_labels[1] < 200)
+ stereo_depth = stereo_depth_pre_trans * transform_paras['label_scale_factor']
+ stereo_depth = self.normalize_depth(stereo_depth)
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=torch.tensor(pad),
+ data_type=[self.data_type, ],
+ sem_mask=sem_mask.int(),
+ stereo_depth= stereo_depth,
+ normal=normals[0],
+ inv_depth=inv_depth,
+ scale=transform_paras['label_scale_factor'])
+ return data
+
+ def load_batch(self, meta_data, data_path, test_mode):
+
+ # print('############')
+ # print(data_path['rgb_path'])
+ # print(data_path['normal_path'])
+ # print('############')
+
+ curr_intrinsic = meta_data['cam_in']
+ # load rgb/depth
+ curr_rgb, curr_depth = self.load_rgb_depth(data_path['rgb_path'], data_path['depth_path'], test_mode)
+ # get semantic labels
+ curr_sem = self.load_sem_label(data_path['sem_path'], curr_depth)
+ # create camera model
+ curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], curr_intrinsic)
+ # get normal labels
+ curr_normal = self.load_norm_label(data_path['normal_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1], test_mode=test_mode)
+ # get depth mask
+ depth_mask = self.load_depth_valid_mask(data_path['depth_mask_path'])
+ curr_depth[~depth_mask] = -1
+ # get stereo depth
+ curr_stereo_depth = self.load_stereo_depth_label(data_path['disp_path'], H=curr_rgb.shape[0], W=curr_rgb.shape[1])
+
+ data_batch = dict(
+ curr_rgb = curr_rgb,
+ curr_depth = curr_depth,
+ curr_sem = curr_sem,
+ curr_normal = curr_normal,
+ curr_cam_model=curr_cam_model,
+ curr_stereo_depth=curr_stereo_depth,
+ )
+ return data_batch
+
+ def load_rgb_depth(self, rgb_path: str, depth_path: str, test_mode: bool):
+ """
+ Load the rgb and depth map with the paths.
+ """
+ rgb = self.load_data(rgb_path, is_rgb_img=True)
+ if rgb is None:
+ self.logger.info(f'>>>>{rgb_path} has errors.')
+
+ depth = self.load_data(depth_path)
+ if depth is None:
+ self.logger.info(f'{depth_path} has errors.')
+
+ # self.check_data(dict(
+ # rgb_path=rgb,
+ # depth_path=depth,
+ # ))
+ depth = depth.astype(np.float)
+ # if depth.shape != rgb.shape[:2]:
+ # print(f'no-equal in {self.data_name}')
+ # depth = cv2.resize(depth, rgb.shape[::-1][1:])
+
+ depth = self.process_depth(depth, rgb, test_mode)
+ return rgb, depth
+
+ def process_depth(self, depth, rgb, test_mode=False):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ h, w, _ = rgb.shape # to rgb size
+ if test_mode==False:
+ depth = cv2.resize(depth, (w, h), interpolation=cv2.INTER_NEAREST)
+ return depth
+
+ def load_norm_label(self, norm_path, H, W, test_mode):
+
+ if norm_path is None:
+ norm_gt = np.zeros((H, W, 3)).astype(np.float32)
+ else:
+ norm_gt = cv2.imread(norm_path)
+ norm_gt = cv2.cvtColor(norm_gt, cv2.COLOR_BGR2RGB)
+
+ norm_gt = np.array(norm_gt).astype(np.uint8)
+
+ mask_path = 'orient-mask'.join(norm_path.rsplit('normal', 1))
+ mask_gt = cv2.imread(mask_path)
+ mask_gt = np.array(mask_gt).astype(np.uint8)
+ valid_mask = np.logical_not(
+ np.logical_and(
+ np.logical_and(
+ mask_gt[:, :, 0] == 0, mask_gt[:, :, 1] == 0),
+ mask_gt[:, :, 2] == 0))
+ valid_mask = valid_mask[:, :, np.newaxis]
+
+ # norm_valid_mask = np.logical_not(
+ # np.logical_and(
+ # np.logical_and(
+ # norm_gt[:, :, 0] == 0, norm_gt[:, :, 1] == 0),
+ # norm_gt[:, :, 2] == 0))
+ # norm_valid_mask = norm_valid_mask[:, :, np.newaxis]
+
+ norm_gt = ((norm_gt.astype(np.float32) / 255.0) * 2.0) - 1.0
+ norm_valid_mask = (np.linalg.norm(norm_gt, axis=2, keepdims=True) > 0.5) * valid_mask
+ norm_gt = norm_gt * norm_valid_mask
+
+ if test_mode==False:
+ norm_gt = cv2.resize(norm_gt, (W, H), interpolation=cv2.INTER_NEAREST)
+
+ return norm_gt
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = NYUDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/taskonomy_dataset.py b/finetune/Metric3D/training/mono/datasets/taskonomy_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..0f0982108f45fc77a72dcd05287841de5c89a9d4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/taskonomy_dataset.py
@@ -0,0 +1,190 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from PIL import Image
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+import pickle
+
+
+class TaskonomyDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(TaskonomyDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+ #self.cap_range = self.depth_range # in meter
+
+ def __getitem__(self, idx: int) -> dict:
+ if self.phase == 'test':
+ return self.get_data_for_test(idx)
+ else:
+ return self.get_data_for_trainval(idx)
+
+ def load_meta_data(self, anno: dict) -> dict:
+ """
+ Load meta data information.
+ """
+ if self.meta_data_root is not None and ('meta_data' in anno or 'meta' in anno):
+ meta_data_path = os.path.join(self.meta_data_root, anno['meta_data']) if 'meta_data' in anno else os.path.join(self.meta_data_root, anno['meta'])
+ with open(meta_data_path, 'rb') as f:
+ meta_data = pickle.load(f)
+ meta_data.update(anno)
+ else:
+ meta_data = anno
+ u0, v0, fx, fy = meta_data['cam_in']
+ meta_data['cam_in'] = [fx, fy, u0, v0] # fix data bugs
+ return meta_data
+
+ def get_data_for_trainval(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+ curr_rgb, curr_depth, curr_normal, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_cam_model']
+ curr_intrinsic = meta_data['cam_in']
+
+ ins_planes_path = os.path.join(self.data_root, meta_data['ins_planes']) if ('ins_planes' in meta_data) and (meta_data['ins_planes'] is not None) else None
+ # get instance planes
+ ins_planes = self.load_ins_planes(curr_depth, ins_planes_path)
+
+ # load data
+ # u0, v0, fx, fy = meta_data['cam_in'] # this is
+ # ori_curr_intrinsic = [fx, fy, u0, v0]
+ # curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+
+ # get crop size
+ # transform_paras = dict()
+ transform_paras = dict(random_crop_size = self.random_crop_size)
+ rgbs, depths, intrinsics, cam_models, normals, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb, ],
+ labels=[curr_depth, ],
+ intrinsics=[curr_intrinsic,],
+ cam_models=[curr_cam_model, ],
+ normals = [curr_normal, ],
+ other_labels=[ins_planes, ],
+ transform_paras=transform_paras)
+ # process instance planes
+ ins_planes = other_labels[0].int()
+
+ # clip depth map
+ depth_out = self.normalize_depth(depths[0])
+ # get inverse depth
+ inv_depth = self.depth2invdepth(depth_out, torch.zeros_like(depth_out, dtype=torch.bool))
+ filename = os.path.basename(meta_data['rgb'])
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=torch.tensor(pad),
+ data_type=[self.data_type, ],
+ sem_mask=ins_planes,
+ normal=normals[0],
+ inv_depth=inv_depth,
+ stereo_depth=torch.zeros_like(inv_depth),
+ scale= transform_paras['label_scale_factor'])
+ return data
+
+ def get_data_for_test(self, idx: int):
+ anno = self.annotations['files'][idx]
+ meta_data = self.load_meta_data(anno)
+ data_path = self.load_data_path(meta_data)
+ data_batch = self.load_batch(meta_data, data_path)
+
+ curr_rgb, curr_depth, curr_normal, curr_cam_model = data_batch['curr_rgb'], data_batch['curr_depth'], data_batch['curr_normal'], data_batch['curr_cam_model']
+ ori_curr_intrinsic = meta_data['cam_in']
+
+ # curr_rgb_path = os.path.join(self.data_root, meta_data['rgb'])
+ # curr_depth_path = os.path.join(self.depth_root, meta_data['depth'])
+
+ # curr_rgb, curr_depth = self.load_rgb_depth(curr_rgb_path, curr_depth_path)
+ # ori_h, ori_w, _ = curr_rgb.shape
+ # # create camera model
+ # curr_cam_model = self.create_cam_model(curr_rgb.shape[0], curr_rgb.shape[1], ori_curr_intrinsic)
+ # load tmpl rgb info
+ # tmpl_annos = self.load_tmpl_image_pose(curr_rgb, meta_data)
+ # tmpl_rgbs = tmpl_annos['tmpl_rgb_list'] # list of reference rgbs
+
+ transform_paras = dict()
+ rgbs, depths, intrinsics, cam_models, _, other_labels, transform_paras = self.img_transforms(
+ images=[curr_rgb,], # + tmpl_rgbs,
+ labels=[curr_depth, ],
+ intrinsics=[ori_curr_intrinsic, ], # * (len(tmpl_rgbs) + 1),
+ cam_models=[curr_cam_model, ],
+ transform_paras=transform_paras)
+ # depth in original size and orignial metric***
+ depth_out = self.clip_depth(curr_depth) * self.depth_range[1]
+ inv_depth = self.depth2invdepth(depth_out, np.zeros_like(depth_out, dtype=np.bool))
+
+ filename = os.path.basename(meta_data['rgb'])
+ curr_intrinsic_mat = self.intrinsics_list2mat(intrinsics[0])
+
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ scale_ratio = transform_paras['label_scale_factor'] if 'label_scale_factor' in transform_paras else 1.0
+ cam_models_stacks = [
+ torch.nn.functional.interpolate(cam_models[0][None, :, :, :], size=(cam_models[0].shape[1]//i, cam_models[0].shape[2]//i), mode='bilinear', align_corners=False).squeeze()
+ for i in [2, 4, 8, 16, 32]
+ ]
+ raw_rgb = torch.from_numpy(curr_rgb)
+ curr_normal = torch.from_numpy(curr_normal.transpose((2,0,1)))
+
+ data = dict(input=rgbs[0],
+ target=depth_out,
+ intrinsic=curr_intrinsic_mat,
+ filename=filename,
+ dataset=self.data_name,
+ cam_model=cam_models_stacks,
+ pad=pad,
+ scale=scale_ratio,
+ raw_rgb=raw_rgb,
+ sample_id=idx,
+ data_path=meta_data['rgb'],
+ inv_depth=inv_depth,
+ normal=curr_normal,
+ )
+ return data
+
+ def load_norm_label(self, norm_path, H, W):
+ with open(norm_path, 'rb') as f:
+ normal = Image.open(f)
+ normal = np.array(normal.convert(normal.mode), dtype=np.uint8)
+ invalid_mask = np.all(normal == 128, axis=2)
+ normal = normal.astype(np.float64) / 255.0 * 2 - 1
+ normal[invalid_mask, :] = 0
+ return normal
+
+ def process_depth(self, depth: np.array, rgb: np.array) -> np.array:
+ depth[depth>60000] = 0
+ depth = depth / self.metric_scale
+ return depth
+
+ def load_ins_planes(self, depth: np.array, ins_planes_path: str) -> np.array:
+ if ins_planes_path is not None:
+ ins_planes = cv2.imread(ins_planes_path, -1)
+ else:
+ ins_planes = np.zeros_like(depth)
+ return ins_planes
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/uasol_dataset.py b/finetune/Metric3D/training/mono/datasets/uasol_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..e1ccab0240a747bbf070f02d4da60f7703975dd3
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/uasol_dataset.py
@@ -0,0 +1,52 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class UASOLDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(UASOLDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= self.metric_scale
+ return depth
+
+ def load_rgb_depth(self, rgb_path: str, depth_path: str) -> (np.array, np.array):
+ """
+ Load the rgb and depth map with the paths.
+ """
+ rgb = self.load_data(rgb_path, is_rgb_img=True)
+ if rgb is None:
+ self.logger.info(f'>>>>{rgb_path} has errors.')
+
+ depth = self.load_data(depth_path)
+ if depth is None:
+ self.logger.info(f'{depth_path} has errors.')
+
+ depth = depth.astype(np.float)
+
+ depth = self.process_depth(depth, rgb)
+ depth = depth[1:-1, ...]
+ return rgb, depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = UASOLDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/virtualkitti_dataset.py b/finetune/Metric3D/training/mono/datasets/virtualkitti_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ac6b76fc97cabfb46d8c814767af27cb062b6d6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/virtualkitti_dataset.py
@@ -0,0 +1,65 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class VKITTIDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(VKITTIDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>(150 * self.metric_scale)] = 0
+ depth /= self.metric_scale
+
+ return depth
+
+ def load_sem_label(self, sem_path, depth=None, sky_id=142) -> np.array:
+ """
+ Category r g b
+ Terrain 210 0 200
+ Sky 90 200 255
+ Tree 0 199 0
+ Vegetation 90 240 0
+ Building 140 140 140
+ Road 100 60 100
+ GuardRail 250 100 255
+ TrafficSign 255 255 0
+ TrafficLight 200 200 0
+ Pole 255 130 0
+ Misc 80 80 80
+ Truck 160 60 60
+ Car 255 127 80
+ Van 0 139 139
+ """
+ H, W = depth.shape
+ sem_label = np.ones((H, W), dtype=np.int) * -1
+ sem = cv2.imread(sem_path)[:, :, ::-1]
+ if sem is None:
+ return sem_label
+
+ sky_color = [90, 200, 255]
+ sky_mask = (sem == sky_color).all(axis=2)
+ sem_label[sky_mask] = 142 # set sky region to 142
+ return sem_label
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/datasets/waymo_dataset.py b/finetune/Metric3D/training/mono/datasets/waymo_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..5611f5a3dbf2bdf266f506f3cbb762dc8d7e1025
--- /dev/null
+++ b/finetune/Metric3D/training/mono/datasets/waymo_dataset.py
@@ -0,0 +1,34 @@
+import os
+import json
+import torch
+import torchvision.transforms as transforms
+import os.path
+import numpy as np
+import cv2
+from torch.utils.data import Dataset
+import random
+from .__base_dataset__ import BaseDataset
+
+
+class WaymoDataset(BaseDataset):
+ def __init__(self, cfg, phase, **kwargs):
+ super(WaymoDataset, self).__init__(
+ cfg=cfg,
+ phase=phase,
+ **kwargs)
+ self.metric_scale = cfg.metric_scale
+
+
+ def process_depth(self, depth, rgb):
+ depth[depth>65500] = 0
+ depth /= 200.0
+ return depth
+
+
+
+if __name__ == '__main__':
+ from mmcv.utils import Config
+ cfg = Config.fromfile('mono/configs/Apolloscape_DDAD/convnext_base.cascade.1m.sgd.mae.py')
+ dataset_i = ApolloscapeDataset(cfg['Apolloscape'], 'train', **cfg.data_basic)
+ print(dataset_i)
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/__base_model__.py b/finetune/Metric3D/training/mono/model/__base_model__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0b483c8cc179d2aeac9fafda68ec945123b6229
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/__base_model__.py
@@ -0,0 +1,288 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+import numpy as np
+import torch.nn.functional as F
+
+
+class BaseDepthModel(nn.Module):
+ def __init__(self, cfg, criterions, **kwards):
+ super(BaseDepthModel, self).__init__()
+ model_type = cfg.model.type
+ self.depth_model = get_func('mono.model.model_pipelines.' + model_type)(cfg)
+
+ self.criterions_main = criterions['decoder_losses'] if criterions and 'decoder_losses' in criterions else None
+ self.criterions_auxi = criterions['auxi_losses'] if criterions and 'auxi_losses' in criterions else None
+ self.criterions_pose = criterions['pose_losses'] if criterions and 'pose_losses' in criterions else None
+ self.criterions_gru = criterions['gru_losses'] if criterions and 'gru_losses' in criterions else None
+ try:
+ self.downsample = cfg.prediction_downsample
+ except:
+ self.downsample = None
+
+ self.training = True
+
+ def forward(self, data):
+ if self.downsample != None:
+ self.label_downsample(self.downsample, data)
+
+ output = self.depth_model(**data)
+
+ losses_dict = {}
+ if self.training:
+ output.update(data)
+ losses_dict = self.get_loss(output)
+
+ if self.downsample != None:
+ self.pred_upsample(self.downsample, output)
+
+ return output['prediction'], losses_dict, output['confidence']
+
+ def inference(self, data):
+ with torch.no_grad():
+ output = self.depth_model(**data)
+ output.update(data)
+
+ if self.downsample != None:
+ self.pred_upsample(self.downsample, output)
+
+ output['dataset'] = 'wild'
+ return output
+
+ def get_loss(self, paras):
+ losses_dict = {}
+ # Losses for training
+ if self.training:
+ # decode branch
+ losses_dict.update(self.compute_decoder_loss(paras))
+ # auxilary branch
+ losses_dict.update(self.compute_auxi_loss(paras))
+ # pose branch
+ losses_dict.update(self.compute_pose_loss(paras))
+ # GRU sequence branch
+ losses_dict.update(self.compute_gru_loss(paras))
+
+ total_loss = sum(losses_dict.values())
+ losses_dict['total_loss'] = total_loss
+ return losses_dict
+
+ def compute_gru_loss(self, paras_):
+ losses_dict = {}
+ if self.criterions_gru is None or len(self.criterions_gru) == 0:
+ return losses_dict
+ paras = {k:v for k,v in paras_.items() if k!='prediction' and k!='prediction_normal'}
+ n_predictions = len(paras['predictions_list'])
+ for i, pre in enumerate(paras['predictions_list']):
+ if i == n_predictions-1:
+ break
+ #if i % 3 != 0:
+ #continue
+ if 'normal_out_list' in paras.keys():
+ pre_normal = paras['normal_out_list'][i]
+ else:
+ pre_normal = None
+ iter_dict = self.branch_loss(
+ prediction=pre,
+ prediction_normal=pre_normal,
+ criterions=self.criterions_gru,
+ branch=f'gru_{i}',
+ **paras
+ )
+ # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+ adjusted_loss_gamma = 0.9**(15/(n_predictions - 1))
+ i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+ iter_dict = {k:v*i_weight for k,v in iter_dict.items()}
+ losses_dict.update(iter_dict)
+ return losses_dict
+
+ def compute_decoder_loss(self, paras):
+ losses_dict = {}
+ decode_losses_dict = self.branch_loss(
+ criterions=self.criterions_main,
+ branch='decode',
+ **paras
+ )
+ return decode_losses_dict
+
+ def compute_auxi_loss(self, paras):
+ losses_dict = {}
+ if len(self.criterions_auxi) == 0:
+ return losses_dict
+ args = dict(
+ target=paras['target'],
+ data_type=paras['data_type'],
+ sem_mask=paras['sem_mask'],
+ )
+ for i, auxi_logit in enumerate(paras['auxi_logit_list']):
+ auxi_losses_dict = self.branch_loss(
+ prediction=paras['auxi_pred'][i],
+ criterions=self.criterions_auxi,
+ pred_logit=auxi_logit,
+ branch=f'auxi_{i}',
+ **args
+ )
+ losses_dict.update(auxi_losses_dict)
+ return losses_dict
+
+ def compute_pose_loss(self, paras):
+ losses_dict = {}
+ if self.criterions_pose is None or len(self.criterions_pose) == 0:
+ return losses_dict
+ # valid_flg = paras['tmpl_flg']
+ # if torch.sum(valid_flg) == 0:
+ # return losses_dict
+ # else:
+ # # sample valid batch
+ # samples = {}
+ # for k, v in paras.items():
+ # if isinstance(v, torch.Tensor):
+ # samples.update({k: v[valid_flg]})
+ # elif isinstance(v, list) and isinstance(v[0], torch.Tensor):
+ # samples.update({k: [i[valid_flg] for i in v]})
+ for loss_method in self.criterions_pose:
+ loss_tmp = loss_method(**paras)
+ losses_dict['pose_' + loss_method._get_name()] = loss_tmp
+ return losses_dict
+
+ def branch_loss(self, prediction, pred_logit, criterions, branch='decode', **kwargs):
+ B, _, _, _ = prediction.shape
+ losses_dict = {}
+ args = dict(pred_logit=pred_logit)
+
+ target = kwargs.pop('target')
+ args.update(kwargs)
+
+ # data type for each batch
+ batches_data_type = np.array(kwargs['data_type'])
+ # batches_data_names = np.array(kwargs['dataset'])
+
+ # resize the target
+ # if target.shape[2] != prediction.shape[2] and target.shape[3] != prediction.shape[3]:
+ # _, _, H, W = prediction.shape
+ # target = nn.functional.interpolate(target, (H,W), mode='nearest')
+
+ mask = target > 1e-8
+ for loss_method in criterions:
+ # sample batches, which satisfy the loss requirement for data types
+ new_mask = self.create_mask_as_loss(loss_method, mask, batches_data_type)
+
+ loss_tmp = loss_method(
+ prediction=prediction,
+ target=target,
+ mask=new_mask,
+ **args)
+ losses_dict[branch + '_' + loss_method._get_name()] = loss_tmp
+ return losses_dict
+
+ def create_mask_as_loss(self, loss_method, mask, batches_data_type):
+ data_type_req = np.array(loss_method.data_type)[:, None]
+ batch_mask = torch.tensor(np.any(data_type_req == batches_data_type, axis=0), device="cuda") #torch.from_numpy(np.any(data_type_req == batches_data_type, axis=0)).cuda()
+ new_mask = mask * batch_mask[:, None, None, None]
+ return new_mask
+
+ def label_downsample(self, downsample_factor, data_dict):
+ scale_factor = float(1.0 / downsample_factor)
+ downsample_target = F.interpolate(data_dict['target'], scale_factor=scale_factor)
+ downsample_stereo_depth = F.interpolate(data_dict['stereo_depth'], scale_factor=scale_factor)
+
+ data_dict['target'] = downsample_target
+ data_dict['stereo_depth'] = downsample_stereo_depth
+
+ return data_dict
+
+ def pred_upsample(self, downsample_factor, data_dict):
+ scale_factor = float(downsample_factor)
+ upsample_prediction = F.interpolate(data_dict['prediction'], scale_factor=scale_factor).detach()
+ upsample_confidence = F.interpolate(data_dict['confidence'], scale_factor=scale_factor).detach()
+
+ data_dict['prediction'] = upsample_prediction
+ data_dict['confidence'] = upsample_confidence
+
+ return data_dict
+
+
+
+
+ # def mask_batches(self, prediction, target, mask, batches_data_names, data_type_req):
+ # """
+ # Mask the data samples that satify the loss requirement.
+ # Args:
+ # data_type_req (str): the data type required by a loss.
+ # batches_data_names (list): the list of data types in a batch.
+ # """
+ # batch_mask = np.any(data_type_req == batches_data_names, axis=0)
+ # prediction = prediction[batch_mask]
+ # target = target[batch_mask]
+ # mask = mask[batch_mask]
+ # return prediction, target, mask, batch_mask
+
+ # def update_mask_g8(self, target, mask, prediction, batches_data_names, absRel=0.5):
+ # data_type_req=np.array(['Golf8_others'])[:, None]
+
+ # pred, target, mask_sample, batch_mask = self.mask_batches(prediction, target, mask, batches_data_names, data_type_req)
+ # if pred.numel() == 0:
+ # return mask
+ # scale_batch = []
+ # for i in range(mask_sample.shape[0]):
+ # scale = torch.median(target[mask_sample]) / (torch.median(pred[mask_sample]) + 1e-8)
+ # abs_rel = torch.abs(pred[i:i+1, ...] * scale - target[i:i+1, ...]) / (pred[i:i+1, ...] * scale + 1e-6)
+ # if target[i, ...][target[i, ...]>0].min() < 0.041:
+ # mask_valid_i = ((abs_rel < absRel) | ((target[i:i+1, ...]<0.02) & (target[i:i+1, ...]>1e-6))) & mask_sample[i:i+1, ...]
+ # else:
+ # mask_valid_i = mask_sample[i:i+1, ...]
+ # mask_sample[i:i+1, ...] = mask_valid_i
+ # # print(target.max(), target[target>0].min())
+ # # self.visual_g8(target, mask_valid_i)
+ # mask[batch_mask] = mask_sample
+ # return mask
+
+ # def update_mask_g8_v2(self, target, mask, prediction, batches_data_names,):
+ # data_type_req=np.array(['Golf8_others'])[:, None]
+
+ # pred, target, mask_sample, batch_mask = self.mask_batches(prediction, target, mask, batches_data_names, data_type_req)
+ # if pred.numel() == 0:
+ # return mask
+
+ # raw_invalid_mask = target < 1e-8
+ # target[raw_invalid_mask] = 1e8
+ # kernal = 31
+ # pool = min_pool2d(target, kernal)
+ # diff = target- pool
+ # valid_mask = (diff < 0.02) & mask_sample & (target<0.3)
+ # target_min = target.view(target.shape[0], -1).min(dim=1)[0]
+ # w_close = target_min < 0.04
+ # valid_mask[~w_close] = mask_sample[~w_close]
+ # mask[batch_mask]= valid_mask
+
+ # target[raw_invalid_mask] = -1
+ # #self.visual_g8(target, mask[batch_mask])
+ # return mask
+
+ # def visual_g8(self, gt, mask):
+ # import matplotlib.pyplot as plt
+ # from mono.utils.transform import gray_to_colormap
+ # gt = gt.cpu().numpy().squeeze()
+ # mask = mask.cpu().numpy().squeeze()
+ # if gt.ndim >2:
+ # gt = gt[0, ...]
+ # mask = mask[0, ...]
+ # name = np.random.randint(1000000)
+ # print(gt.max(), gt[gt>0].min(), name)
+ # gt_filter = gt.copy()
+ # gt_filter[~mask] = 0
+ # out = np.concatenate([gt, gt_filter], axis=0)
+ # out[out<0] = 0
+ # o = gray_to_colormap(out)
+ # o[out<1e-8]=0
+
+ # plt.imsave(f'./tmp/{name}.png', o)
+
+
+
+
+
+def min_pool2d(tensor, kernel, stride=1):
+ tensor = tensor * -1.0
+ tensor = F.max_pool2d(tensor, kernel, padding=kernel//2, stride=stride)
+ tensor = -1.0 * tensor
+ return tensor
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/__init__.py b/finetune/Metric3D/training/mono/model/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..ca10dcd6c22af3f61832b621c0b05663d629e0b8
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/__init__.py
@@ -0,0 +1,6 @@
+from .monodepth_model import DepthModel
+from .criterion import build_criterions
+from .__base_model__ import BaseDepthModel
+
+
+__all__ = ['DepthModel', 'BaseDepthModel']
diff --git a/finetune/Metric3D/training/mono/model/backbones/ConvNeXt.py b/finetune/Metric3D/training/mono/model/backbones/ConvNeXt.py
new file mode 100644
index 0000000000000000000000000000000000000000..04d92cdad9c8cbbe9fd448c6c72ecf12e5ec7614
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/backbones/ConvNeXt.py
@@ -0,0 +1,271 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from timm.models.layers import trunc_normal_, DropPath
+from timm.models.registry import register_model
+
+class Block(nn.Module):
+ r""" ConvNeXt Block. There are two equivalent implementations:
+ (1) DwConv -> LayerNorm (channels_first) -> 1x1 Conv -> GELU -> 1x1 Conv; all in (N, C, H, W)
+ (2) DwConv -> Permute to (N, H, W, C); LayerNorm (channels_last) -> Linear -> GELU -> Linear; Permute back
+ We use (2) as we find it slightly faster in PyTorch
+
+ Args:
+ dim (int): Number of input channels.
+ drop_path (float): Stochastic depth rate. Default: 0.0
+ layer_scale_init_value (float): Init value for Layer Scale. Default: 1e-6.
+ """
+ def __init__(self, dim, drop_path=0., layer_scale_init_value=1e-6):
+ super().__init__()
+ self.dwconv = nn.Conv2d(dim, dim, kernel_size=7, padding=3, groups=dim) # depthwise conv
+ self.norm = LayerNorm(dim, eps=1e-6)
+ self.pwconv1 = nn.Linear(dim, 4 * dim) # pointwise/1x1 convs, implemented with linear layers
+ self.act = nn.GELU()
+ self.pwconv2 = nn.Linear(4 * dim, dim)
+ self.gamma = nn.Parameter(layer_scale_init_value * torch.ones((dim)),
+ requires_grad=True) if layer_scale_init_value > 0 else None
+ self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
+
+ def forward(self, x):
+ input = x
+ x = self.dwconv(x)
+ x = x.permute(0, 2, 3, 1) # (N, C, H, W) -> (N, H, W, C)
+ x = self.norm(x)
+ x = self.pwconv1(x)
+ x = self.act(x)
+ x = self.pwconv2(x)
+ if self.gamma is not None:
+ x = self.gamma * x
+ x = x.permute(0, 3, 1, 2) # (N, H, W, C) -> (N, C, H, W)
+
+ x = input + self.drop_path(x)
+ return x
+
+class ConvNeXt(nn.Module):
+ r""" ConvNeXt
+ A PyTorch impl of : `A ConvNet for the 2020s` -
+ https://arxiv.org/pdf/2201.03545.pdf
+ Args:
+ in_chans (int): Number of input image channels. Default: 3
+ num_classes (int): Number of classes for classification head. Default: 1000
+ depths (tuple(int)): Number of blocks at each stage. Default: [3, 3, 9, 3]
+ dims (int): Feature dimension at each stage. Default: [96, 192, 384, 768]
+ drop_path_rate (float): Stochastic depth rate. Default: 0.
+ layer_scale_init_value (float): Init value for Layer Scale. Default: 1e-6.
+ head_init_scale (float): Init scaling value for classifier weights and biases. Default: 1.
+ """
+ def __init__(self, in_chans=3, num_classes=1000,
+ depths=[3, 3, 9, 3], dims=[96, 192, 384, 768], drop_path_rate=0.,
+ layer_scale_init_value=1e-6, head_init_scale=1.,
+ **kwargs,):
+ super().__init__()
+
+ self.downsample_layers = nn.ModuleList() # stem and 3 intermediate downsampling conv layers
+ stem = nn.Sequential(
+ nn.Conv2d(in_chans, dims[0], kernel_size=4, stride=4),
+ LayerNorm(dims[0], eps=1e-6, data_format="channels_first")
+ )
+ self.downsample_layers.append(stem)
+ for i in range(3):
+ downsample_layer = nn.Sequential(
+ LayerNorm(dims[i], eps=1e-6, data_format="channels_first"),
+ nn.Conv2d(dims[i], dims[i+1], kernel_size=2, stride=2),
+ )
+ self.downsample_layers.append(downsample_layer)
+
+ self.stages = nn.ModuleList() # 4 feature resolution stages, each consisting of multiple residual blocks
+ dp_rates=[x.item() for x in torch.linspace(0, drop_path_rate, sum(depths))]
+ cur = 0
+ for i in range(4):
+ stage = nn.Sequential(
+ *[Block(dim=dims[i], drop_path=dp_rates[cur + j],
+ layer_scale_init_value=layer_scale_init_value) for j in range(depths[i])]
+ )
+ self.stages.append(stage)
+ cur += depths[i]
+
+ #self.norm = nn.LayerNorm(dims[-1], eps=1e-6) # final norm layer
+ #self.head = nn.Linear(dims[-1], num_classes)
+
+ self.apply(self._init_weights)
+ #self.head.weight.data.mul_(head_init_scale)
+ #self.head.bias.data.mul_(head_init_scale)
+
+ def _init_weights(self, m):
+ if isinstance(m, (nn.Conv2d, nn.Linear)):
+ trunc_normal_(m.weight, std=.02)
+ nn.init.constant_(m.bias, 0)
+
+ def forward_features(self, x):
+ features = []
+ for i in range(4):
+ x = self.downsample_layers[i](x)
+ x = self.stages[i](x)
+ features.append(x)
+ return features # global average pooling, (N, C, H, W) -> (N, C)
+
+ def forward(self, x):
+ #x = self.forward_features(x)
+ #x = self.head(x)
+ features = self.forward_features(x)
+ return features
+
+class LayerNorm(nn.Module):
+ r""" LayerNorm that supports two data formats: channels_last (default) or channels_first.
+ The ordering of the dimensions in the inputs. channels_last corresponds to inputs with
+ shape (batch_size, height, width, channels) while channels_first corresponds to inputs
+ with shape (batch_size, channels, height, width).
+ """
+ def __init__(self, normalized_shape, eps=1e-6, data_format="channels_last"):
+ super().__init__()
+ self.weight = nn.Parameter(torch.ones(normalized_shape))
+ self.bias = nn.Parameter(torch.zeros(normalized_shape))
+ self.eps = eps
+ self.data_format = data_format
+ if self.data_format not in ["channels_last", "channels_first"]:
+ raise NotImplementedError
+ self.normalized_shape = (normalized_shape, )
+
+ def forward(self, x):
+ if self.data_format == "channels_last":
+ return F.layer_norm(x, self.normalized_shape, self.weight, self.bias, self.eps)
+ elif self.data_format == "channels_first":
+ u = x.mean(1, keepdim=True)
+ s = (x - u).pow(2).mean(1, keepdim=True)
+ x = (x - u) / torch.sqrt(s + self.eps)
+ x = self.weight[:, None, None] * x + self.bias[:, None, None]
+ return x
+
+
+model_urls = {
+ "convnext_tiny_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pth",
+ "convnext_small_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224_ema.pth",
+ "convnext_base_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224_ema.pth",
+ "convnext_large_1k": "https://dl.fbaipublicfiles.com/convnext/convnext_large_1k_224_ema.pth",
+ "convnext_tiny_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_tiny_22k_224.pth",
+ "convnext_small_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_small_22k_224.pth",
+ "convnext_base_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_224.pth",
+ "convnext_large_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth",
+ "convnext_xlarge_22k": "https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_224.pth",
+}
+
+def convnext_tiny(pretrained=True,in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 9, 3], dims=[96, 192, 384, 768], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_tiny_22k'] if in_22k else model_urls['convnext_tiny_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu", check_hash=True)
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d paras, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are:', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_small(pretrained=True,in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[96, 192, 384, 768], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_small_22k'] if in_22k else model_urls['convnext_small_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d paras, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are:', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_base(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[128, 256, 512, 1024], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_base_22k'] if in_22k else model_urls['convnext_base_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d paras, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are:', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_large(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[192, 384, 768, 1536], **kwargs)
+ if pretrained:
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_large_22k'] if in_22k else model_urls['convnext_large_1k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d paras, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are:', unmatched_pretrained_dict.keys())
+ return model
+
+def convnext_xlarge(pretrained=True, in_22k=False, **kwargs):
+ model = ConvNeXt(depths=[3, 3, 27, 3], dims=[256, 512, 1024, 2048], **kwargs)
+ if pretrained:
+ assert in_22k, "only ImageNet-22K pre-trained ConvNeXt-XL is available; please set in_22k=True"
+ checkpoint = torch.load(kwargs['checkpoint'], map_location="cpu")
+ #url = model_urls['convnext_xlarge_22k']
+ #checkpoint = torch.hub.load_state_dict_from_url(url=url, map_location="cpu")
+ model_dict = model.state_dict()
+ pretrained_dict = {}
+ unmatched_pretrained_dict = {}
+ for k, v in checkpoint['model'].items():
+ if k in model_dict:
+ pretrained_dict[k] = v
+ else:
+ unmatched_pretrained_dict[k] = v
+ model_dict.update(pretrained_dict)
+ model.load_state_dict(model_dict)
+ print(
+ 'Successfully loaded pretrained %d paras, and %d paras are unmatched.'
+ %(len(pretrained_dict.keys()), len(unmatched_pretrained_dict.keys())))
+ print('Unmatched pretrained paras are:', unmatched_pretrained_dict.keys())
+ return model
+
+if __name__ == '__main__':
+ import torch
+ model = convnext_base(True, in_22k=False).cuda()
+
+ rgb = torch.rand((2, 3, 256, 256)).cuda()
+ out = model(rgb)
+ print(len(out))
+ for i, ft in enumerate(out):
+ print(i, ft.shape)
diff --git a/finetune/Metric3D/training/mono/model/backbones/ViT_DINO.py b/finetune/Metric3D/training/mono/model/backbones/ViT_DINO.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ba2d39360674924303e6e0354dfb02742ea25c9
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/backbones/ViT_DINO.py
@@ -0,0 +1,1504 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+# All rights reserved.
+#
+# This source code is licensed under the license found in the
+# LICENSE file in the root directory of this source tree.
+
+# References:
+# https://github.com/facebookresearch/dino/blob/main/vision_transformer.py
+# https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py
+
+from functools import partial
+import math
+import logging
+from typing import Sequence, Tuple, Union, Callable, Optional, Dict, Any, List
+
+import torch
+import torch.nn as nn
+from torch import Tensor
+import torch.utils.checkpoint
+from torch.nn.init import trunc_normal_
+
+#from dinov2.layers import Mlp, PatchEmbed, SwiGLUFFNFused, MemEffAttention, NestedTensorBlock as Block
+
+logger = logging.getLogger("dinov2")
+
+class ConvBlock(nn.Module):
+ def __init__(self, channels):
+ super(ConvBlock, self).__init__()
+
+ self.act = nn.ReLU(inplace=True)
+ self.conv1 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm1 = nn.BatchNorm2d(channels)
+ self.conv2 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm2 = nn.BatchNorm2d(channels)
+
+ def forward(self, x):
+
+ out = self.norm1(x)
+ out = self.act(out)
+ out = self.conv1(out)
+ out = self.norm2(out)
+ out = self.act(out)
+ out = self.conv2(out)
+ return x + out
+
+def make_2tuple(x):
+ if isinstance(x, tuple):
+ assert len(x) == 2
+ return x
+
+ assert isinstance(x, int)
+ return (x, x)
+
+def drop_path(x, drop_prob: float = 0.0, training: bool = False):
+ if drop_prob == 0.0 or not training:
+ return x
+ keep_prob = 1 - drop_prob
+ shape = (x.shape[0],) + (1,) * (x.ndim - 1) # work with diff dim tensors, not just 2D ConvNets
+ random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
+ if keep_prob > 0.0:
+ random_tensor.div_(keep_prob)
+ output = x * random_tensor
+ return output
+
+class DropPath(nn.Module):
+ """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""
+
+ def __init__(self, drop_prob=None):
+ super(DropPath, self).__init__()
+ self.drop_prob = drop_prob
+
+ def forward(self, x):
+ return drop_path(x, self.drop_prob, self.training)
+
+class LayerScale(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ init_values: Union[float, Tensor] = 1e-5,
+ inplace: bool = False,
+ ) -> None:
+ super().__init__()
+ self.inplace = inplace
+ self.gamma = nn.Parameter(init_values * torch.ones(dim))
+
+ def forward(self, x: Tensor) -> Tensor:
+ return x.mul_(self.gamma) if self.inplace else x * self.gamma
+
+
+class PatchEmbed(nn.Module):
+ """
+ 2D image to patch embedding: (B,C,H,W) -> (B,N,D)
+
+ Args:
+ img_size: Image size.
+ patch_size: Patch token size.
+ in_chans: Number of input image channels.
+ embed_dim: Number of linear projection output channels.
+ norm_layer: Normalization layer.
+ """
+
+ def __init__(
+ self,
+ img_size: Union[int, Tuple[int, int]] = 224,
+ patch_size: Union[int, Tuple[int, int]] = 16,
+ in_chans: int = 3,
+ embed_dim: int = 768,
+ norm_layer: Optional[Callable] = None,
+ flatten_embedding: bool = True,
+ ) -> None:
+ super().__init__()
+
+ image_HW = make_2tuple(img_size)
+ patch_HW = make_2tuple(patch_size)
+ patch_grid_size = (
+ image_HW[0] // patch_HW[0],
+ image_HW[1] // patch_HW[1],
+ )
+
+ self.img_size = image_HW
+ self.patch_size = patch_HW
+ self.patches_resolution = patch_grid_size
+ self.num_patches = patch_grid_size[0] * patch_grid_size[1]
+
+ self.in_chans = in_chans
+ self.embed_dim = embed_dim
+
+ self.flatten_embedding = flatten_embedding
+
+ self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_HW, stride=patch_HW)
+ self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()
+
+ def forward(self, x: Tensor) -> Tensor:
+ _, _, H, W = x.shape
+ patch_H, patch_W = self.patch_size
+
+ assert H % patch_H == 0, f"Input image height {H} is not a multiple of patch height {patch_H}"
+ assert W % patch_W == 0, f"Input image width {W} is not a multiple of patch width: {patch_W}"
+
+ x = self.proj(x) # B C H W
+ H, W = x.size(2), x.size(3)
+ x = x.flatten(2).transpose(1, 2) # B HW C
+ x = self.norm(x)
+ if not self.flatten_embedding:
+ x = x.reshape(-1, H, W, self.embed_dim) # B H W C
+ return x
+
+ def flops(self) -> float:
+ Ho, Wo = self.patches_resolution
+ flops = Ho * Wo * self.embed_dim * self.in_chans * (self.patch_size[0] * self.patch_size[1])
+ if self.norm is not None:
+ flops += Ho * Wo * self.embed_dim
+ return flops
+
+class Mlp(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.fc1 = nn.Linear(in_features, hidden_features, bias=bias)
+ self.act = act_layer()
+ self.fc2 = nn.Linear(hidden_features, out_features, bias=bias)
+ self.drop = nn.Dropout(drop)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x = self.fc1(x)
+ x = self.act(x)
+ x = self.drop(x)
+ x = self.fc2(x)
+ x = self.drop(x)
+ return x
+
+
+class SwiGLUFFN(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.w12 = nn.Linear(in_features, 2 * hidden_features, bias=bias)
+ self.w3 = nn.Linear(hidden_features, out_features, bias=bias)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x12 = self.w12(x)
+ x1, x2 = x12.chunk(2, dim=-1)
+ hidden = F.silu(x1) * x2
+ return self.w3(hidden)
+
+
+try:
+ from xformers.ops import SwiGLU
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ SwiGLU = SwiGLUFFN
+ XFORMERS_AVAILABLE = False
+
+class SwiGLUFFNFused(SwiGLU):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
+ super().__init__(
+ in_features=in_features,
+ hidden_features=hidden_features,
+ out_features=out_features,
+ bias=bias,
+ )
+
+
+try:
+ from xformers.ops import memory_efficient_attention, unbind, fmha
+ from xformers.components.attention import ScaledDotProduct
+ from xformers.components import MultiHeadDispatch
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+
+class Attention(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int = 8,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ attn_drop: float = 0.0,
+ proj_drop: float = 0.0,
+ window_size: int = 0,
+ ) -> None:
+ super().__init__()
+ self.num_heads = num_heads
+ head_dim = dim // num_heads
+ self.scale = head_dim**-0.5
+
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
+ self.attn_drop = nn.Dropout(attn_drop)
+ self.proj = nn.Linear(dim, dim, bias=proj_bias)
+ self.proj_drop = nn.Dropout(proj_drop)
+
+ #if not self.training:
+ #
+ # self.attn = ScaledDotProduct()
+ #self.attn = MultiHeadDispatch(dim_model=EMB, residual_dropout=DROPOUT, num_heads=HEADS, attention=attn)
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
+
+ q, k, v = qkv[0] * self.scale, qkv[1], qkv[2]
+ attn = q @ k.transpose(-2, -1)
+
+ if attn_bias is not None:
+ attn = attn + attn_bias[:, :, :N]
+
+ attn = attn.softmax(dim=-1)
+ attn = self.attn_drop(attn)
+
+ x = (attn @ v).transpose(1, 2).reshape(B, N, C)
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+
+class MemEffAttention(Attention):
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ if not XFORMERS_AVAILABLE:
+ #if True:
+ assert attn_bias is None, "xFormers is required for nested tensors usage"
+ return super().forward(x, attn_bias)
+
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads)
+
+ q, k, v = unbind(qkv, 2)
+ if attn_bias is not None:
+ x = memory_efficient_attention(q, k, v, attn_bias=attn_bias[:, :, :N])
+ else:
+ x = memory_efficient_attention(q, k, v)
+ x = x.reshape([B, N, C])
+
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+try:
+ from xformers.ops import fmha
+ from xformers.ops import scaled_index_add, index_select_cat
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+class Block(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int,
+ mlp_ratio: float = 4.0,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ ffn_bias: bool = True,
+ drop: float = 0.0,
+ attn_drop: float = 0.0,
+ init_values = None,
+ drop_path: float = 0.0,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ norm_layer: Callable[..., nn.Module] = nn.LayerNorm,
+ attn_class: Callable[..., nn.Module] = Attention,
+ ffn_layer: Callable[..., nn.Module] = Mlp,
+ ) -> None:
+ super().__init__()
+ # print(f"biases: qkv: {qkv_bias}, proj: {proj_bias}, ffn: {ffn_bias}")
+ self.norm1 = norm_layer(dim)
+ self.attn = attn_class(
+ dim,
+ num_heads=num_heads,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ attn_drop=attn_drop,
+ proj_drop=drop,
+ )
+ self.ls1 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path1 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.norm2 = norm_layer(dim)
+ mlp_hidden_dim = int(dim * mlp_ratio)
+ self.mlp = ffn_layer(
+ in_features=dim,
+ hidden_features=mlp_hidden_dim,
+ act_layer=act_layer,
+ drop=drop,
+ bias=ffn_bias,
+ )
+ self.ls2 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path2 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.sample_drop_ratio = drop_path
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ def attn_residual_func(x: Tensor, attn_bias) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias))
+
+ def ffn_residual_func(x: Tensor) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ if self.training and self.sample_drop_ratio > 0.1:
+ # the overhead is compensated only for a drop path rate larger than 0.1
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ attn_bias=attn_bias
+ )
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ )
+ elif self.training and self.sample_drop_ratio > 0.0:
+ x = x + self.drop_path1(attn_residual_func(x, attn_bias))
+ x = x + self.drop_path1(ffn_residual_func(x)) # FIXME: drop_path2
+ else:
+ x = x + attn_residual_func(x, attn_bias)
+ x = x + ffn_residual_func(x)
+ return x
+
+
+def drop_add_residual_stochastic_depth(
+ x: Tensor,
+ residual_func: Callable[[Tensor], Tensor],
+ sample_drop_ratio: float = 0.0, attn_bias=None
+) -> Tensor:
+ # 1) extract subset using permutation
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ x_subset = x[brange]
+
+ # 2) apply residual_func to get residual
+ residual = residual_func(x_subset, attn_bias)
+
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+
+ residual_scale_factor = b / sample_subset_size
+
+ # 3) add the residual
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ return x_plus_residual.view_as(x)
+
+
+def get_branges_scales(x, sample_drop_ratio=0.0):
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ residual_scale_factor = b / sample_subset_size
+ return brange, residual_scale_factor
+
+
+def add_residual(x, brange, residual, residual_scale_factor, scaling_vector=None):
+ if scaling_vector is None:
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ else:
+ x_plus_residual = scaled_index_add(
+ x, brange, residual.to(dtype=x.dtype), scaling=scaling_vector, alpha=residual_scale_factor
+ )
+ return x_plus_residual
+
+
+attn_bias_cache: Dict[Tuple, Any] = {}
+
+
+def get_attn_bias_and_cat(x_list, branges=None):
+ """
+ this will perform the index select, cat the tensors, and provide the attn_bias from cache
+ """
+ batch_sizes = [b.shape[0] for b in branges] if branges is not None else [x.shape[0] for x in x_list]
+ all_shapes = tuple((b, x.shape[1]) for b, x in zip(batch_sizes, x_list))
+ if all_shapes not in attn_bias_cache.keys():
+ seqlens = []
+ for b, x in zip(batch_sizes, x_list):
+ for _ in range(b):
+ seqlens.append(x.shape[1])
+ attn_bias = fmha.BlockDiagonalMask.from_seqlens(seqlens)
+ attn_bias._batch_sizes = batch_sizes
+ attn_bias_cache[all_shapes] = attn_bias
+
+ if branges is not None:
+ cat_tensors = index_select_cat([x.flatten(1) for x in x_list], branges).view(1, -1, x_list[0].shape[-1])
+ else:
+ tensors_bs1 = tuple(x.reshape([1, -1, *x.shape[2:]]) for x in x_list)
+ cat_tensors = torch.cat(tensors_bs1, dim=1)
+
+ return attn_bias_cache[all_shapes], cat_tensors
+
+
+def drop_add_residual_stochastic_depth_list(
+ x_list: List[Tensor],
+ residual_func: Callable[[Tensor, Any], Tensor],
+ sample_drop_ratio: float = 0.0,
+ scaling_vector=None,
+) -> Tensor:
+ # 1) generate random set of indices for dropping samples in the batch
+ branges_scales = [get_branges_scales(x, sample_drop_ratio=sample_drop_ratio) for x in x_list]
+ branges = [s[0] for s in branges_scales]
+ residual_scale_factors = [s[1] for s in branges_scales]
+
+ # 2) get attention bias and index+concat the tensors
+ attn_bias, x_cat = get_attn_bias_and_cat(x_list, branges)
+
+ # 3) apply residual_func to get residual, and split the result
+ residual_list = attn_bias.split(residual_func(x_cat, attn_bias=attn_bias)) # type: ignore
+
+ outputs = []
+ for x, brange, residual, residual_scale_factor in zip(x_list, branges, residual_list, residual_scale_factors):
+ outputs.append(add_residual(x, brange, residual, residual_scale_factor, scaling_vector).view_as(x))
+ return outputs
+
+
+class NestedTensorBlock(Block):
+ def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
+ """
+ x_list contains a list of tensors to nest together and run
+ """
+ assert isinstance(self.attn, MemEffAttention)
+
+ if self.training and self.sample_drop_ratio > 0.0:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.attn(self.norm1(x), attn_bias=attn_bias)
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.mlp(self.norm2(x))
+
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls1.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls2.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ return x_list
+ else:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias=attn_bias))
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ attn_bias, x = get_attn_bias_and_cat(x_list)
+ x = x + attn_residual_func(x, attn_bias=attn_bias)
+ x = x + ffn_residual_func(x)
+ return attn_bias.split(x)
+
+ def forward(self, x_or_x_list, attn_bias=None):
+ if isinstance(x_or_x_list, Tensor):
+ return super().forward(x_or_x_list, attn_bias)
+ elif isinstance(x_or_x_list, list):
+ assert XFORMERS_AVAILABLE, "Please install xFormers for nested tensors usage"
+ return self.forward_nested(x_or_x_list)
+ else:
+ raise AssertionError
+
+
+def named_apply(fn: Callable, module: nn.Module, name="", depth_first=True, include_root=False) -> nn.Module:
+ if not depth_first and include_root:
+ fn(module=module, name=name)
+ for child_name, child_module in module.named_children():
+ child_name = ".".join((name, child_name)) if name else child_name
+ named_apply(fn=fn, module=child_module, name=child_name, depth_first=depth_first, include_root=True)
+ if depth_first and include_root:
+ fn(module=module, name=name)
+ return module
+
+
+class BlockChunk(nn.ModuleList):
+ def forward(self, x, others=None):
+ for b in self:
+ if others == None:
+ x = b(x)
+ else:
+ x = b(x, others)
+ return x
+
+
+class DinoVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=224,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ #init_values=None, # for layerscale: None or 0 => no layerscale
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=NestedTensorBlock,
+ ffn_layer="mlp",
+ block_chunks=1,
+ window_size=37,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+ self.window_size = window_size
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
+ num_patches = self.patch_embed.num_patches
+
+ self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.init_weights()
+
+ def init_weights(self):
+ trunc_normal_(self.pos_embed, std=0.02)
+ nn.init.normal_(self.cls_token, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ npatch = x.shape[1] - 1
+ N = self.pos_embed.shape[1] - 1
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ class_pos_embed = pos_embed[:, 0]
+ patch_pos_embed = pos_embed[:, 1:]
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + 0.1, h0 + 0.1
+
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(math.sqrt(N)), int(math.sqrt(N)), dim).permute(0, 3, 1, 2),
+ scale_factor=(w0 / math.sqrt(N), h0 / math.sqrt(N)),
+ mode="bicubic",
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2] and int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def prepare_tokens_with_masks(self, x, masks=None):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ x = x + self.interpolate_pos_encoding(x, w, h)
+
+ return x
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_patchtokens": x_norm[:, 1:],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ x = self.prepare_tokens_with_masks(x, masks)
+
+ features = []
+ for blk in self.blocks:
+ x = blk(x)
+ # for idx in range(len(self.blocks[0])):
+ # x = self.blocks[0][idx](x)
+ # if (idx + 1) % (len(self.blocks[0]) // 4) == 0:
+ # features.append(x)
+
+ #return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ x_norm = self.norm(x)
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_patchtokens": x_norm[:, 1:],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+class PosConv(nn.Module):
+ # PEG from https://arxiv.org/abs/2102.10882
+ def __init__(self, in_chans, embed_dim=768, stride=1):
+ super(PosConv, self).__init__()
+ self.proj = nn.Sequential(
+ nn.Conv2d(in_chans, embed_dim, 37, stride, 18, bias=True, groups=embed_dim),
+ )
+ self.stride = stride
+
+ def forward(self, x, size):
+ B, N, C = x.shape
+ cnn_feat_token = x.transpose(1, 2).view(B, C, *size)
+ x = self.proj(cnn_feat_token)
+ if self.stride == 1:
+ x += cnn_feat_token
+ x = x.flatten(2).transpose(1, 2)
+ return x
+
+ #def no_weight_decay(self):
+ #return ['proj.%d.weight' % i for i in range(4)]
+
+class DinoWindowVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=224,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ #init_values=None, # for layerscale: None or 0 => no layerscale
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=NestedTensorBlock,
+ ffn_layer="mlp",
+ block_chunks=1,
+ window_size=7,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
+ num_patches = self.patch_embed.num_patches
+
+ #self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ #self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches, embed_dim))
+
+ self.pos_conv = PosConv(self.embed_dim, self.embed_dim)
+
+ self.window_size = window_size
+ #self.conv_block = nn.ModuleList([ConvBlock(embed_dim) for i in range(4)])
+ #self.conv_block = nn.ModuleList([nn.Identity() for i in range(4)])
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.nh = -1
+ self.nw = -1
+ try:
+ H = cfg.data_basic['crop_size'][0]
+ W = cfg.data_basic['crop_size'][1]
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ self.nh = (H + pad_h) // self.patch_size
+ self.nw = (W + pad_w) // self.patch_size
+ self.prepare_attn_bias((self.nh, self.nw))
+ except:
+ pass
+ self.init_weights()
+
+ self.total_step = 10000 # For PE -> GPE transfer
+ self.start_step = 2000
+ self.current_step = 20000
+
+ def init_weights(self):
+ #trunc_normal_(self.pos_embed, std=0.02)
+ #nn.init.normal_(self.cls_token, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+ for i in range(4):
+ try:
+ nn.init.constant_(self.conv_block[i].conv2.weight, 0.0)
+ except:
+ pass
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ #npatch = x.shape[1] - 1
+ #N = self.pos_embed.shape[1] - 1
+ npatch = x.shape[1]
+ N = self.pos_embed.shape[1]
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ #class_pos_embed = pos_embed[:, 0]
+ #patch_pos_embed = pos_embed[:, 1:]
+ patch_pos_embed = pos_embed
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + 0.1, h0 + 0.1
+
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(math.sqrt(N)), int(math.sqrt(N)), dim).permute(0, 3, 1, 2),
+ scale_factor=(w0 / math.sqrt(N), h0 / math.sqrt(N)),
+ mode="bicubic",
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2] and int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return patch_pos_embed.to(previous_dtype)
+ #return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def window_partition(self, x: torch.Tensor, window_size: int, hw: Tuple[int, int], conv_feature=False) -> Tuple[torch.Tensor, Tuple[int, int]]:
+ """
+ Partition into non-overlapping windows with padding if needed.
+ Args:
+ x (tensor): input tokens with [B, H, W, C].
+ window_size (int): window size.
+
+ Returns:
+ windows: windows after partition with [B * num_windows, window_size, window_size, C].
+ (Hp, Wp): padded height and width before partition
+ """
+ if conv_feature == False:
+ B, N, C = x.shape
+ H, W = hw[0], hw[1]
+
+ x = x.view(B, H // window_size, window_size, W // window_size, window_size, C)
+
+ windows = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(-1, window_size * window_size, C)
+ else:
+ B, C, H, W = x.shape
+
+ x = x.view(B, C, H // window_size, window_size, W // window_size, window_size)
+
+ windows = x.permute(0, 2, 4, 3, 5, 1).contiguous().view(-1, window_size * window_size, C)
+
+ #y = torch.cat((x_cls, windows), dim=1)
+ return windows #, (Hp, Wp)
+
+
+ def window_unpartition(self,
+ windows: torch.Tensor, window_size: int, hw: Tuple[int, int], conv_feature=False
+ ) -> torch.Tensor:
+ """
+ Window unpartition into original sequences and removing padding.
+ Args:
+ windows (tensor): input tokens with [B * num_windows, window_size, window_size, C].
+ window_size (int): window size.
+ pad_hw (Tuple): padded height and width (Hp, Wp).
+ hw (Tuple): original height and width (H, W) before padding.
+
+ Returns:
+ x: unpartitioned sequences with [B, H, W, C].
+ """
+ H, W = hw
+
+ B = windows.shape[0] // (H * W // window_size // window_size)
+ x = windows.view(B, H // window_size, W // window_size, window_size, window_size, -1)
+
+ if conv_feature == False:
+ x = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(B, Hp * Wp, -1)
+ else:
+ C = windows.shape[-1]
+ x = x.permute(0, 5, 1, 3, 2, 4).contiguous().view(B, C, H, W)
+
+ # if Hp > H or Wp > W:
+ # x = x[:, :H, :W, :].contiguous()
+ return x
+
+ def prepare_tokens_with_masks(self, x, masks=None, step=-1):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ #x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ if step == -1:
+ step = self.current_step
+ else:
+ self.current_step = step
+
+ if step < self.start_step:
+ coef = 0.0
+ elif step < self.total_step:
+ coef = (step - self.start_step) / (self.total_step - self.start_step)
+ else:
+ coef = 1.0
+
+ x = x + (1 - coef) * self.interpolate_pos_encoding(x, w, h) + coef * self.pos_conv(x, (self.nh, self.nw))
+
+ return x
+
+ def prepare_attn_bias(self, shape):
+ window_size = self.window_size
+ if window_size <= 0:
+ return
+
+ import xformers.components.attention.attention_patterns as AP
+
+ nh, nw = shape
+ radius = (window_size-1)//2
+ mask_ori = AP.local_2d_pattern(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+
+ pad = (8 - (nh * nw) % 8)
+ if pad == 8:
+ pad = 0
+ mask_pad = nn.functional.pad(mask_ori, (0, pad)).contiguous()
+ if pad > 0:
+ mask = mask_pad[:, :-pad].view(nh, nw, nh, nw)
+ else:
+ mask = mask_pad[:, :].view(nh, nw, nh, nw)
+
+ # angle
+ mask[:radius+1, :radius+1, :window_size, :window_size] = True
+ mask[:radius+1, -radius-1:, :window_size, -window_size:] = True
+ mask[-radius-1:, :radius+1, -window_size:, :window_size] = True
+ mask[-radius-1:, -radius-1:, -window_size:, -window_size:] = True
+
+ # edge
+ mask[radius+1:-radius-1, :radius+1, :, :] = mask[radius+1:-radius-1, radius:radius+1, :, :]
+ mask[radius+1:-radius-1, -radius-1:, :, :] = mask[radius+1:-radius-1, -radius-1:-radius, :, :]
+ mask[:radius+1, radius+1:-radius-1, :, :] = mask[radius:radius+1, radius+1:-radius-1, :, :]
+ mask[-radius-1:, radius+1:-radius-1, :, :] = mask[-radius-1:-radius, radius+1:-radius-1, :, :]
+
+ mask = mask.view(nh*nw, nh*nw)
+ bias_pad = torch.log(mask_pad)
+ #bias = bias_pad[:, :-pad]
+ self.register_buffer('attn_bias', bias_pad)
+
+ return bias_pad
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_patchtokens": x_norm[:, 1:],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None, **kwargs):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ nh = (H+pad_h)//self.patch_size
+ nw = (W+pad_w)//self.patch_size
+
+ if self.window_size > 0:
+ if nh == self.nh and nw == self.nw:
+ attn_bias = self.attn_bias
+ else:
+ attn_bias = self.prepare_attn_bias(((H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size))
+ self.nh = nh
+ self.nw = nw
+ attn_bias = attn_bias.unsqueeze(0).repeat(B * self.num_heads, 1, 1)
+ else:
+ attn_bias = None
+
+ x = self.prepare_tokens_with_masks(x, masks)
+ #x = self.patch_embed(x)
+
+ features = []
+ #x = self.window_partition(x, self.window_size, (H // self.patch_size, W // self.patch_size))
+ for blk in self.blocks:
+ x = blk(x, attn_bias)
+ #x = self.window_unpartition(x, self.window_size, (H // self.patch_size, W // self.patch_size))
+
+ # for idx in range(len(self.blocks[0])):
+ # x = self.blocks[0][idx](x, attn_bias)
+
+ # if (idx + 1) % (len(self.blocks[0]) // 4) == 0:
+ # x = self.window_unpartition(x, self.window_size, (H // self.patch_size, W // self.patch_size), conv_feature=True)
+ # x = self.conv_block[idx // (len(self.blocks[0]) // 4)](x)
+ # if idx + 1 != len(self.blocks[0]):
+ # x = self.window_partition(x, self.window_size, (H // self.patch_size, W // self.patch_size), conv_feature=True)
+ # else:
+ # b, c, h, w = x.size()
+ # x = x.permute(0, 2, 3, 1).contiguous().view(b, h, w, c)
+ #features.append(x)
+
+ #return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ x_norm = self.norm(x)
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_patchtokens": x_norm[:, 1:],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W)]
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+
+
+def init_weights_vit_timm(module: nn.Module, name: str = ""):
+ """ViT weight initialization, original timm impl (for reproducibility)"""
+ if isinstance(module, nn.Linear):
+ trunc_normal_(module.weight, std=0.02)
+ if module.bias is not None:
+ nn.init.zeros_(module.bias)
+
+
+def vit_small(patch_size=14, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+
+def vit_base(patch_size=14, **kwargs):
+ model = DinoWindowVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+
+def vit_large(patch_size=14, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ img_size = 518,
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ **kwargs,
+ )
+
+ if checkpoint is not None:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ #del model.norm
+ del model.mask_token
+ return model
+
+ # model = DinoWindowVisionTransformer(
+ # img_size = 518,
+ # patch_size=patch_size,
+ # embed_dim=1024,
+ # depth=24,
+ # num_heads=16,
+ # mlp_ratio=4,
+ # block_fn=partial(NestedTensorBlock, attn_class=MemEffAttention),
+ # window_size=37,
+ # **kwargs,
+ # )
+
+ # if checkpoint is not None:
+ # with open(checkpoint, "rb") as f:
+ # state_dict = torch.load(f)
+ # try:
+ # model.load_state_dict(state_dict, strict=True)
+ # except:
+ # new_state_dict = {}
+ # for key, value in state_dict.items():
+ # if 'blocks' in key:
+ # key_new = 'blocks.0' + key[len('blocks'):]
+ # else:
+ # key_new = key
+ # if 'pos_embed' in key:
+ # value = value[:, 1:, :]
+ # new_state_dict[key_new] = value
+
+ # model.load_state_dict(new_state_dict, strict=False)
+ # #del model.norm
+ # del model.mask_token
+ return model
+
+
+def vit_giant2(patch_size=16, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ **kwargs,
+ )
+ return model
+
+if __name__ == '__main__':
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+
+ #rgb = torch.rand((2, 3, 518, 518)).cuda()
+
+ #cfg.data_basic['crop_size']['0']
+ #cfg.data_basic['crop_size']['1']
+ cfg = Config.fromfile('mu.hu/monodepth/mono/configs/HourglassDecoder/pub12.convlarge.0.3_150.py')
+
+ #rgb = torch.arange(0, 2*3*1036*1036, 1).cuda().float().view(2, 3, 1036, 1036)
+ rgb = torch.zeros(1, 3, 1400, 1680).cuda()
+ model = vit_large(checkpoint="pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth", kwarg=cfg).cuda()
+
+ #import timm
+ #model2 = timm.models.vision_transformer.vit_large_patch14_dinov2().cuda()
+ #timm.models.load_checkpoint(model2, '/cpfs02/shared/public/yvan/pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth', filter_fn=timm.models.vision_transformer.checkpoint_filter_fn)
+
+ out1 = model(rgb)
+ #out2 = model2(rgb)
+ temp = 0
+
+
+
+# import time
+# window_size = 37
+# def prepare_window_masks(shape):
+# if window_size <= 0:
+# return None
+# import xformers.components.attention.attention_patterns as AP
+
+# B, nh, nw, _, _ = shape
+# radius = (window_size-1)//2
+# #time0 = time.time()
+# d = AP.local_nd_distance(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+# #mask = AP.local_2d_pattern(nh, nw, distance = radius + 0.1, p=torch.inf).cuda()
+# # mask = mask.view(nh, nw, nh, nw)
+# # #time1 = time.time() - time0
+
+# # # angle
+# # mask[:radius+1, :radius+1, :window_size, :window_size] = True
+# # mask[:radius+1, -radius-1:, :window_size, -window_size:] = True
+# # mask[-radius-1:, :radius+1, -window_size:, :window_size] = True
+# # mask[-radius-1:, -radius-1:, -window_size:, -window_size:] = True
+# # time2 = time.time() - time0 - time1
+
+# # # edge
+# # mask[radius+1:-radius-1, :radius+1, :, :] = mask[radius+1:-radius-1, radius:radius+1, :, :]
+# # mask[radius+1:-radius-1, -radius-1:, :, :] = mask[radius+1:-radius-1, -radius-1:-radius, :, :]
+# # mask[:radius+1, radius+1:-radius-1, :, :] = mask[radius:radius+1, radius+1:-radius-1, :, :]
+# # mask[-radius-1:, radius+1:-radius-1, :, :] = mask[-radius-1:-radius, radius+1:-radius-1, :, :]
+# # time3 = time.time() - time0 - time2
+# # print(time1, time2, time3)
+
+# # return mask.view(nw*nw, nh*nw).unsqueeze(0).repeat(B, 1)
+
+# shape = (1, 55, 55, None, None)
+# mask = prepare_window_masks(shape)
+# # temp = 1
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/backbones/ViT_DINO_reg.py b/finetune/Metric3D/training/mono/model/backbones/ViT_DINO_reg.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c276241977df73493585078b4d0295a32dbfea2
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/backbones/ViT_DINO_reg.py
@@ -0,0 +1,1099 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+# All rights reserved.
+#
+# This source code is licensed under the license found in the
+# LICENSE file in the root directory of this source tree.
+
+# References:
+# https://github.com/facebookresearch/dino/blob/main/vision_transformer.py
+# https://github.com/rwightman/pytorch-image-models/tree/master/timm/models/vision_transformer.py
+
+from functools import partial
+import math
+import logging
+from typing import Sequence, Tuple, Union, Callable, Optional, Dict, Any, List
+
+import torch
+import torch.nn as nn
+from torch import Tensor
+import torch.utils.checkpoint
+from torch.nn.init import trunc_normal_
+
+#from dinov2.layers import Mlp, PatchEmbed, SwiGLUFFNFused, MemEffAttention, NestedTensorBlock as Block
+
+logger = logging.getLogger("dinov2")
+
+class ConvBlock(nn.Module):
+ def __init__(self, channels):
+ super(ConvBlock, self).__init__()
+
+ self.act = nn.ReLU(inplace=True)
+ self.conv1 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm1 = nn.BatchNorm2d(channels)
+ self.conv2 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.norm2 = nn.BatchNorm2d(channels)
+
+ def forward(self, x):
+
+ out = self.norm1(x)
+ out = self.act(out)
+ out = self.conv1(out)
+ out = self.norm2(out)
+ out = self.act(out)
+ out = self.conv2(out)
+ return x + out
+
+def make_2tuple(x):
+ if isinstance(x, tuple):
+ assert len(x) == 2
+ return x
+
+ assert isinstance(x, int)
+ return (x, x)
+
+def drop_path(x, drop_prob: float = 0.0, training: bool = False):
+ if drop_prob == 0.0 or not training:
+ return x
+ keep_prob = 1 - drop_prob
+ shape = (x.shape[0],) + (1,) * (x.ndim - 1) # work with diff dim tensors, not just 2D ConvNets
+ random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
+ if keep_prob > 0.0:
+ random_tensor.div_(keep_prob)
+ output = x * random_tensor
+ return output
+
+class DropPath(nn.Module):
+ """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""
+
+ def __init__(self, drop_prob=None):
+ super(DropPath, self).__init__()
+ self.drop_prob = drop_prob
+
+ def forward(self, x):
+ return drop_path(x, self.drop_prob, self.training)
+
+class LayerScale(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ init_values: Union[float, Tensor] = 1e-5,
+ inplace: bool = False,
+ ) -> None:
+ super().__init__()
+ self.inplace = inplace
+ self.gamma = nn.Parameter(init_values * torch.ones(dim))
+
+ def forward(self, x: Tensor) -> Tensor:
+ return x.mul_(self.gamma) if self.inplace else x * self.gamma
+
+
+class PatchEmbed(nn.Module):
+ """
+ 2D image to patch embedding: (B,C,H,W) -> (B,N,D)
+
+ Args:
+ img_size: Image size.
+ patch_size: Patch token size.
+ in_chans: Number of input image channels.
+ embed_dim: Number of linear projection output channels.
+ norm_layer: Normalization layer.
+ """
+
+ def __init__(
+ self,
+ img_size: Union[int, Tuple[int, int]] = 224,
+ patch_size: Union[int, Tuple[int, int]] = 16,
+ in_chans: int = 3,
+ embed_dim: int = 768,
+ norm_layer: Optional[Callable] = None,
+ flatten_embedding: bool = True,
+ ) -> None:
+ super().__init__()
+
+ image_HW = make_2tuple(img_size)
+ patch_HW = make_2tuple(patch_size)
+ patch_grid_size = (
+ image_HW[0] // patch_HW[0],
+ image_HW[1] // patch_HW[1],
+ )
+
+ self.img_size = image_HW
+ self.patch_size = patch_HW
+ self.patches_resolution = patch_grid_size
+ self.num_patches = patch_grid_size[0] * patch_grid_size[1]
+
+ self.in_chans = in_chans
+ self.embed_dim = embed_dim
+
+ self.flatten_embedding = flatten_embedding
+
+ self.proj = nn.Conv2d(in_chans, embed_dim, kernel_size=patch_HW, stride=patch_HW)
+ self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()
+
+ def forward(self, x: Tensor) -> Tensor:
+ _, _, H, W = x.shape
+ patch_H, patch_W = self.patch_size
+
+ assert H % patch_H == 0, f"Input image height {H} is not a multiple of patch height {patch_H}"
+ assert W % patch_W == 0, f"Input image width {W} is not a multiple of patch width: {patch_W}"
+
+ x = self.proj(x) # B C H W
+ H, W = x.size(2), x.size(3)
+ x = x.flatten(2).transpose(1, 2) # B HW C
+ x = self.norm(x)
+ if not self.flatten_embedding:
+ x = x.reshape(-1, H, W, self.embed_dim) # B H W C
+ return x
+
+ def flops(self) -> float:
+ Ho, Wo = self.patches_resolution
+ flops = Ho * Wo * self.embed_dim * self.in_chans * (self.patch_size[0] * self.patch_size[1])
+ if self.norm is not None:
+ flops += Ho * Wo * self.embed_dim
+ return flops
+
+class Mlp(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.fc1 = nn.Linear(in_features, hidden_features, bias=bias)
+ self.act = act_layer()
+ self.fc2 = nn.Linear(hidden_features, out_features, bias=bias)
+ self.drop = nn.Dropout(drop)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x = self.fc1(x)
+ x = self.act(x)
+ x = self.drop(x)
+ x = self.fc2(x)
+ x = self.drop(x)
+ return x
+
+
+class SwiGLUFFN(nn.Module):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ self.w12 = nn.Linear(in_features, 2 * hidden_features, bias=bias)
+ self.w3 = nn.Linear(hidden_features, out_features, bias=bias)
+
+ def forward(self, x: Tensor) -> Tensor:
+ x12 = self.w12(x)
+ x1, x2 = x12.chunk(2, dim=-1)
+ hidden = F.silu(x1) * x2
+ return self.w3(hidden)
+
+
+try:
+ from xformers.ops import SwiGLU
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ SwiGLU = SwiGLUFFN
+ XFORMERS_AVAILABLE = False
+
+class SwiGLUFFNFused(SwiGLU):
+ def __init__(
+ self,
+ in_features: int,
+ hidden_features: Optional[int] = None,
+ out_features: Optional[int] = None,
+ act_layer: Callable[..., nn.Module] = None,
+ drop: float = 0.0,
+ bias: bool = True,
+ ) -> None:
+ out_features = out_features or in_features
+ hidden_features = hidden_features or in_features
+ hidden_features = (int(hidden_features * 2 / 3) + 7) // 8 * 8
+ super().__init__(
+ in_features=in_features,
+ hidden_features=hidden_features,
+ out_features=out_features,
+ bias=bias,
+ )
+
+
+try:
+ from xformers.ops import memory_efficient_attention, unbind, fmha
+ from xformers.components.attention import ScaledDotProduct
+ from xformers.components import MultiHeadDispatch
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+
+class Attention(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int = 8,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ attn_drop: float = 0.0,
+ proj_drop: float = 0.0,
+ window_size: int = 0,
+ ) -> None:
+ super().__init__()
+ self.num_heads = num_heads
+ head_dim = dim // num_heads
+ self.scale = head_dim**-0.5
+
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
+ self.attn_drop = nn.Dropout(attn_drop)
+ self.proj = nn.Linear(dim, dim, bias=proj_bias)
+ self.proj_drop = nn.Dropout(proj_drop)
+
+ #if not self.training:
+ #
+ # self.attn = ScaledDotProduct()
+ #self.attn = MultiHeadDispatch(dim_model=EMB, residual_dropout=DROPOUT, num_heads=HEADS, attention=attn)
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
+
+ q, k, v = qkv[0] * self.scale, qkv[1], qkv[2]
+ attn = q @ k.transpose(-2, -1)
+
+ if attn_bias is not None:
+ attn = attn + attn_bias[:, :, :N]
+
+ attn = attn.softmax(dim=-1)
+ attn = self.attn_drop(attn)
+
+ x = (attn @ v).transpose(1, 2).reshape(B, N, C)
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+
+class MemEffAttention(Attention):
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ if not XFORMERS_AVAILABLE:
+ #if True:
+ assert attn_bias is None, "xFormers is required for nested tensors usage"
+ return super().forward(x, attn_bias)
+
+ B, N, C = x.shape
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads)
+
+ q, k, v = unbind(qkv, 2)
+ if attn_bias is not None:
+ x = memory_efficient_attention(q, k, v, attn_bias=attn_bias[:, :, :N])
+ else:
+ x = memory_efficient_attention(q, k, v)
+ x = x.reshape([B, N, C])
+
+ x = self.proj(x)
+ x = self.proj_drop(x)
+ return x
+
+try:
+ from xformers.ops import fmha
+ from xformers.ops import scaled_index_add, index_select_cat
+ #import numpy.bool
+ XFORMERS_AVAILABLE = True
+except ImportError:
+ logger.warning("xFormers not available")
+ XFORMERS_AVAILABLE = False
+
+class Block(nn.Module):
+ def __init__(
+ self,
+ dim: int,
+ num_heads: int,
+ mlp_ratio: float = 4.0,
+ qkv_bias: bool = False,
+ proj_bias: bool = True,
+ ffn_bias: bool = True,
+ drop: float = 0.0,
+ attn_drop: float = 0.0,
+ init_values = None,
+ drop_path: float = 0.0,
+ act_layer: Callable[..., nn.Module] = nn.GELU,
+ norm_layer: Callable[..., nn.Module] = nn.LayerNorm,
+ attn_class: Callable[..., nn.Module] = Attention,
+ ffn_layer: Callable[..., nn.Module] = Mlp,
+ ) -> None:
+ super().__init__()
+ # print(f"biases: qkv: {qkv_bias}, proj: {proj_bias}, ffn: {ffn_bias}")
+ self.norm1 = norm_layer(dim)
+ self.attn = attn_class(
+ dim,
+ num_heads=num_heads,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ attn_drop=attn_drop,
+ proj_drop=drop,
+ )
+ self.ls1 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path1 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.norm2 = norm_layer(dim)
+ mlp_hidden_dim = int(dim * mlp_ratio)
+ self.mlp = ffn_layer(
+ in_features=dim,
+ hidden_features=mlp_hidden_dim,
+ act_layer=act_layer,
+ drop=drop,
+ bias=ffn_bias,
+ )
+ self.ls2 = LayerScale(dim, init_values=init_values) if init_values else nn.Identity()
+ self.drop_path2 = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
+
+ self.sample_drop_ratio = drop_path
+
+ def forward(self, x: Tensor, attn_bias=None) -> Tensor:
+ def attn_residual_func(x: Tensor, attn_bias) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias))
+
+ def ffn_residual_func(x: Tensor) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ if self.training and self.sample_drop_ratio > 0.1:
+ # the overhead is compensated only for a drop path rate larger than 0.1
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ attn_bias=attn_bias
+ )
+ x = drop_add_residual_stochastic_depth(
+ x,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ )
+ elif self.training and self.sample_drop_ratio > 0.0:
+ x = x + self.drop_path1(attn_residual_func(x, attn_bias))
+ x = x + self.drop_path1(ffn_residual_func(x)) # FIXME: drop_path2
+ else:
+ x = x + attn_residual_func(x, attn_bias)
+ x = x + ffn_residual_func(x)
+ return x
+
+
+def drop_add_residual_stochastic_depth(
+ x: Tensor,
+ residual_func: Callable[[Tensor], Tensor],
+ sample_drop_ratio: float = 0.0, attn_bias=None
+) -> Tensor:
+ # 1) extract subset using permutation
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ x_subset = x[brange]
+
+ # 2) apply residual_func to get residual
+ residual = residual_func(x_subset, attn_bias)
+
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+
+ residual_scale_factor = b / sample_subset_size
+
+ # 3) add the residual
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ return x_plus_residual.view_as(x)
+
+
+def get_branges_scales(x, sample_drop_ratio=0.0):
+ b, n, d = x.shape
+ sample_subset_size = max(int(b * (1 - sample_drop_ratio)), 1)
+ brange = (torch.randperm(b, device=x.device))[:sample_subset_size]
+ residual_scale_factor = b / sample_subset_size
+ return brange, residual_scale_factor
+
+
+def add_residual(x, brange, residual, residual_scale_factor, scaling_vector=None):
+ if scaling_vector is None:
+ x_flat = x.flatten(1)
+ residual = residual.flatten(1)
+ x_plus_residual = torch.index_add(x_flat, 0, brange, residual.to(dtype=x.dtype), alpha=residual_scale_factor)
+ else:
+ x_plus_residual = scaled_index_add(
+ x, brange, residual.to(dtype=x.dtype), scaling=scaling_vector, alpha=residual_scale_factor
+ )
+ return x_plus_residual
+
+
+attn_bias_cache: Dict[Tuple, Any] = {}
+
+
+def get_attn_bias_and_cat(x_list, branges=None):
+ """
+ this will perform the index select, cat the tensors, and provide the attn_bias from cache
+ """
+ batch_sizes = [b.shape[0] for b in branges] if branges is not None else [x.shape[0] for x in x_list]
+ all_shapes = tuple((b, x.shape[1]) for b, x in zip(batch_sizes, x_list))
+ if all_shapes not in attn_bias_cache.keys():
+ seqlens = []
+ for b, x in zip(batch_sizes, x_list):
+ for _ in range(b):
+ seqlens.append(x.shape[1])
+ attn_bias = fmha.BlockDiagonalMask.from_seqlens(seqlens)
+ attn_bias._batch_sizes = batch_sizes
+ attn_bias_cache[all_shapes] = attn_bias
+
+ if branges is not None:
+ cat_tensors = index_select_cat([x.flatten(1) for x in x_list], branges).view(1, -1, x_list[0].shape[-1])
+ else:
+ tensors_bs1 = tuple(x.reshape([1, -1, *x.shape[2:]]) for x in x_list)
+ cat_tensors = torch.cat(tensors_bs1, dim=1)
+
+ return attn_bias_cache[all_shapes], cat_tensors
+
+
+def drop_add_residual_stochastic_depth_list(
+ x_list: List[Tensor],
+ residual_func: Callable[[Tensor, Any], Tensor],
+ sample_drop_ratio: float = 0.0,
+ scaling_vector=None,
+) -> Tensor:
+ # 1) generate random set of indices for dropping samples in the batch
+ branges_scales = [get_branges_scales(x, sample_drop_ratio=sample_drop_ratio) for x in x_list]
+ branges = [s[0] for s in branges_scales]
+ residual_scale_factors = [s[1] for s in branges_scales]
+
+ # 2) get attention bias and index+concat the tensors
+ attn_bias, x_cat = get_attn_bias_and_cat(x_list, branges)
+
+ # 3) apply residual_func to get residual, and split the result
+ residual_list = attn_bias.split(residual_func(x_cat, attn_bias=attn_bias)) # type: ignore
+
+ outputs = []
+ for x, brange, residual, residual_scale_factor in zip(x_list, branges, residual_list, residual_scale_factors):
+ outputs.append(add_residual(x, brange, residual, residual_scale_factor, scaling_vector).view_as(x))
+ return outputs
+
+
+class NestedTensorBlock(Block):
+ def forward_nested(self, x_list: List[Tensor]) -> List[Tensor]:
+ """
+ x_list contains a list of tensors to nest together and run
+ """
+ assert isinstance(self.attn, MemEffAttention)
+
+ if self.training and self.sample_drop_ratio > 0.0:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.attn(self.norm1(x), attn_bias=attn_bias)
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.mlp(self.norm2(x))
+
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=attn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls1.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ x_list = drop_add_residual_stochastic_depth_list(
+ x_list,
+ residual_func=ffn_residual_func,
+ sample_drop_ratio=self.sample_drop_ratio,
+ scaling_vector=self.ls2.gamma if isinstance(self.ls1, LayerScale) else None,
+ )
+ return x_list
+ else:
+
+ def attn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls1(self.attn(self.norm1(x), attn_bias=attn_bias))
+
+ def ffn_residual_func(x: Tensor, attn_bias=None) -> Tensor:
+ return self.ls2(self.mlp(self.norm2(x)))
+
+ attn_bias, x = get_attn_bias_and_cat(x_list)
+ x = x + attn_residual_func(x, attn_bias=attn_bias)
+ x = x + ffn_residual_func(x)
+ return attn_bias.split(x)
+
+ def forward(self, x_or_x_list, attn_bias=None):
+ if isinstance(x_or_x_list, Tensor):
+ return super().forward(x_or_x_list, attn_bias)
+ elif isinstance(x_or_x_list, list):
+ assert XFORMERS_AVAILABLE, "Please install xFormers for nested tensors usage"
+ return self.forward_nested(x_or_x_list)
+ else:
+ raise AssertionError
+
+
+def named_apply(fn: Callable, module: nn.Module, name="", depth_first=True, include_root=False) -> nn.Module:
+ if not depth_first and include_root:
+ fn(module=module, name=name)
+ for child_name, child_module in module.named_children():
+ child_name = ".".join((name, child_name)) if name else child_name
+ named_apply(fn=fn, module=child_module, name=child_name, depth_first=depth_first, include_root=True)
+ if depth_first and include_root:
+ fn(module=module, name=name)
+ return module
+
+
+class BlockChunk(nn.ModuleList):
+ def forward(self, x, others=None):
+ for b in self:
+ if others == None:
+ x = b(x)
+ else:
+ x = b(x, others)
+ return x
+
+
+class DinoVisionTransformer(nn.Module):
+ def __init__(
+ self,
+ img_size=518,
+ patch_size=16,
+ in_chans=3,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4.0,
+ qkv_bias=True,
+ ffn_bias=True,
+ proj_bias=True,
+ drop_path_rate=0.0,
+ drop_path_uniform=False,
+ init_values=1e-5, # for layerscale: None or 0 => no layerscale
+ embed_layer=PatchEmbed,
+ act_layer=nn.GELU,
+ block_fn=Block,
+ ffn_layer="mlp",
+ block_chunks=1,
+ num_register_tokens=0,
+ interpolate_antialias=False,
+ interpolate_offset=0.1,
+ multi_output=False,
+ **kwargs
+ ):
+ """
+ Args:
+ img_size (int, tuple): input image size
+ patch_size (int, tuple): patch size
+ in_chans (int): number of input channels
+ embed_dim (int): embedding dimension
+ depth (int): depth of transformer
+ num_heads (int): number of attention heads
+ mlp_ratio (int): ratio of mlp hidden dim to embedding dim
+ qkv_bias (bool): enable bias for qkv if True
+ proj_bias (bool): enable bias for proj in attn if True
+ ffn_bias (bool): enable bias for ffn if True
+ drop_path_rate (float): stochastic depth rate
+ drop_path_uniform (bool): apply uniform drop rate across blocks
+ weight_init (str): weight init scheme
+ init_values (float): layer-scale init values
+ embed_layer (nn.Module): patch embedding layer
+ act_layer (nn.Module): MLP activation layer
+ block_fn (nn.Module): transformer block class
+ ffn_layer (str): "mlp", "swiglu", "swiglufused" or "identity"
+ block_chunks: (int) split block sequence into block_chunks units for FSDP wrap
+ num_register_tokens: (int) number of extra cls tokens (so-called "registers")
+ interpolate_antialias: (str) flag to apply anti-aliasing when interpolating positional embeddings
+ interpolate_offset: (float) work-around offset to apply when interpolating positional embeddings
+ """
+ super().__init__()
+ norm_layer = partial(nn.LayerNorm, eps=1e-6)
+
+ self.num_features = self.embed_dim = embed_dim # num_features for consistency with other models
+ self.num_tokens = 1
+ self.n_blocks = depth
+ self.num_heads = num_heads
+ self.patch_size = patch_size
+ self.num_register_tokens = num_register_tokens
+ self.interpolate_antialias = interpolate_antialias
+ self.interpolate_offset = interpolate_offset
+
+ self.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim)
+ num_patches = self.patch_embed.num_patches
+
+ self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))
+ self.multi_output = multi_output
+ assert num_register_tokens >= 0
+ self.register_tokens = (
+ nn.Parameter(torch.zeros(1, num_register_tokens, embed_dim)) if num_register_tokens else None
+ )
+
+ if drop_path_uniform is True:
+ dpr = [drop_path_rate] * depth
+ else:
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)] # stochastic depth decay rule
+
+ if ffn_layer == "mlp":
+ logger.info("using MLP layer as FFN")
+ ffn_layer = Mlp
+ elif ffn_layer == "swiglufused" or ffn_layer == "swiglu":
+ logger.info("using SwiGLU layer as FFN")
+ ffn_layer = SwiGLUFFNFused
+ elif ffn_layer == "identity":
+ logger.info("using Identity layer as FFN")
+
+ def f(*args, **kwargs):
+ return nn.Identity()
+
+ ffn_layer = f
+ else:
+ raise NotImplementedError
+
+ blocks_list = [
+ block_fn(
+ dim=embed_dim,
+ num_heads=num_heads,
+ mlp_ratio=mlp_ratio,
+ qkv_bias=qkv_bias,
+ proj_bias=proj_bias,
+ ffn_bias=ffn_bias,
+ drop_path=dpr[i],
+ norm_layer=norm_layer,
+ act_layer=act_layer,
+ ffn_layer=ffn_layer,
+ init_values=init_values,
+ )
+ for i in range(depth)
+ ]
+ if block_chunks > 0:
+ self.chunked_blocks = True
+ chunked_blocks = []
+ chunksize = depth // block_chunks
+ for i in range(0, depth, chunksize):
+ # this is to keep the block index consistent if we chunk the block list
+ chunked_blocks.append([nn.Identity()] * i + blocks_list[i : i + chunksize])
+ self.blocks = nn.ModuleList([BlockChunk(p) for p in chunked_blocks])
+ else:
+ self.chunked_blocks = False
+ self.blocks = nn.ModuleList(blocks_list)
+
+ self.norm = norm_layer(embed_dim)
+ self.head = nn.Identity()
+
+ self.mask_token = nn.Parameter(torch.zeros(1, embed_dim))
+
+ self.init_weights()
+
+ def init_weights(self):
+ trunc_normal_(self.pos_embed, std=0.02)
+ nn.init.normal_(self.cls_token, std=1e-6)
+ if self.register_tokens is not None:
+ nn.init.normal_(self.register_tokens, std=1e-6)
+ named_apply(init_weights_vit_timm, self)
+
+ def interpolate_pos_encoding(self, x, w, h):
+ previous_dtype = x.dtype
+ npatch = x.shape[1] - 1
+ N = self.pos_embed.shape[1] - 1
+ if npatch == N and w == h:
+ return self.pos_embed
+ pos_embed = self.pos_embed.float()
+ class_pos_embed = pos_embed[:, 0]
+ patch_pos_embed = pos_embed[:, 1:]
+ dim = x.shape[-1]
+ w0 = w // self.patch_size
+ h0 = h // self.patch_size
+ # we add a small number to avoid floating point error in the interpolation
+ # see discussion at https://github.com/facebookresearch/dino/issues/8
+ w0, h0 = w0 + self.interpolate_offset, h0 + self.interpolate_offset
+
+ sqrt_N = math.sqrt(N)
+ sx, sy = float(w0) / sqrt_N, float(h0) / sqrt_N
+ patch_pos_embed = nn.functional.interpolate(
+ patch_pos_embed.reshape(1, int(sqrt_N), int(sqrt_N), dim).permute(0, 3, 1, 2),
+ scale_factor=(sx, sy),
+ mode="bicubic",
+ antialias=self.interpolate_antialias,
+ )
+
+ assert int(w0) == patch_pos_embed.shape[-2]
+ assert int(h0) == patch_pos_embed.shape[-1]
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
+ return torch.cat((class_pos_embed.unsqueeze(0), patch_pos_embed), dim=1).to(previous_dtype)
+
+ def prepare_tokens_with_masks(self, x, masks=None):
+ B, nc, w, h = x.shape
+ x = self.patch_embed(x)
+ if masks is not None:
+ x = torch.where(masks.unsqueeze(-1), self.mask_token.to(x.dtype).unsqueeze(0), x)
+
+ x = torch.cat((self.cls_token.expand(x.shape[0], -1, -1), x), dim=1)
+ x = x + self.interpolate_pos_encoding(x, w, h)
+
+ if self.register_tokens is not None:
+ x = torch.cat(
+ (
+ x[:, :1],
+ self.register_tokens.expand(x.shape[0], -1, -1),
+ x[:, 1:],
+ ),
+ dim=1,
+ )
+
+ return x
+
+ def forward_features_list(self, x_list, masks_list):
+ x = [self.prepare_tokens_with_masks(x, masks) for x, masks in zip(x_list, masks_list)]
+ for blk in self.blocks:
+ x = blk(x)
+
+ all_x = x
+ output = []
+ for x, masks in zip(all_x, masks_list):
+ x_norm = self.norm(x)
+ output.append(
+ {
+ "x_norm_clstoken": x_norm[:, 0],
+ "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
+ "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
+ "x_prenorm": x,
+ "masks": masks,
+ }
+ )
+ return output
+
+ def forward_features(self, x, masks=None):
+ if isinstance(x, list):
+ return self.forward_features_list(x, masks)
+
+ B, C, H, W = x.size()
+ pad_h = (self.patch_size - H % self.patch_size)
+ pad_w = (self.patch_size - W % self.patch_size)
+ if pad_h == self.patch_size:
+ pad_h = 0
+ if pad_w == self.patch_size:
+ pad_w = 0
+ #x = nn.functional.pad(x, (pad_h//2, pad_h-pad_h//2, pad_w//2, pad_w-pad_w//2))
+ if pad_h + pad_w > 0:
+ x = torch.nn.functional.interpolate(x, (H+pad_h, W+pad_w), mode='bilinear')
+
+ x = self.prepare_tokens_with_masks(x, masks)
+
+ # return {
+ # "x_norm_clstoken": x_norm[:, 0],
+ # "x_norm_regtokens": x_norm[:, 1 : self.num_register_tokens + 1],
+ # "x_norm_patchtokens": x_norm[:, self.num_register_tokens + 1 :],
+ # "x_prenorm": x,
+ # "masks": masks,
+ # }
+ if self.multi_output == False:
+ for blk in self.blocks:
+ x = blk(x)
+ x_norm = self.norm(x)
+ features = []
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ features.append(x_norm)
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W, self.num_register_tokens)]
+ else:
+ features = []
+ for blk in self.blocks:
+ for idx, sub_blk in enumerate(blk):
+ x = sub_blk(x)
+ if (idx + 1) % (len(blk) // 4) == 0:
+ features.append(x)
+
+ return [features, (B, (H+pad_h)//self.patch_size, (W+pad_w)//self.patch_size, H, W, self.num_register_tokens)]
+
+
+ def _get_intermediate_layers_not_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ # If n is an int, take the n last blocks. If it's a list, take them
+ output, total_block_len = [], len(self.blocks)
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for i, blk in enumerate(self.blocks):
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def _get_intermediate_layers_chunked(self, x, n=1):
+ x = self.prepare_tokens_with_masks(x)
+ output, i, total_block_len = [], 0, len(self.blocks[-1])
+ # If n is an int, take the n last blocks. If it's a list, take them
+ blocks_to_take = range(total_block_len - n, total_block_len) if isinstance(n, int) else n
+ for block_chunk in self.blocks:
+ for blk in block_chunk[i:]: # Passing the nn.Identity()
+ x = blk(x)
+ if i in blocks_to_take:
+ output.append(x)
+ i += 1
+ assert len(output) == len(blocks_to_take), f"only {len(output)} / {len(blocks_to_take)} blocks found"
+ return output
+
+ def get_intermediate_layers(
+ self,
+ x: torch.Tensor,
+ n: Union[int, Sequence] = 1, # Layers or n last layers to take
+ reshape: bool = False,
+ return_class_token: bool = False,
+ norm=True,
+ ) -> Tuple[Union[torch.Tensor, Tuple[torch.Tensor]]]:
+ if self.chunked_blocks:
+ outputs = self._get_intermediate_layers_chunked(x, n)
+ else:
+ outputs = self._get_intermediate_layers_not_chunked(x, n)
+ if norm:
+ outputs = [self.norm(out) for out in outputs]
+ class_tokens = [out[:, 0] for out in outputs]
+ outputs = [out[:, 1:] for out in outputs]
+ if reshape:
+ B, _, w, h = x.shape
+ outputs = [
+ out.reshape(B, w // self.patch_size, h // self.patch_size, -1).permute(0, 3, 1, 2).contiguous()
+ for out in outputs
+ ]
+ if return_class_token:
+ return tuple(zip(outputs, class_tokens))
+ return tuple(outputs)
+
+ def forward(self, *args, is_training=False, **kwargs):
+ ret = self.forward_features(*args, **kwargs)
+ return ret
+ # if is_training:
+ # return ret
+ # else:
+ # return self.head(ret["x_norm_clstoken"])
+
+
+def init_weights_vit_timm(module: nn.Module, name: str = ""):
+ """ViT weight initialization, original timm impl (for reproducibility)"""
+ if isinstance(module, nn.Linear):
+ trunc_normal_(module.weight, std=0.02)
+ if module.bias is not None:
+ nn.init.zeros_(module.bias)
+
+
+def load_ckpt_dino(checkpoint, model, reserve_norm=True):
+ if checkpoint is not None:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ del model.mask_token
+ if reserve_norm == False:
+ del model.norm
+ return
+ else:
+ return
+
+
+def vit_small(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_base(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+ return model
+
+
+def vit_large(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ if checkpoint is not None:
+ with open(checkpoint, "rb") as f:
+ state_dict = torch.load(f)
+ try:
+ model.load_state_dict(state_dict, strict=True)
+ except:
+ new_state_dict = {}
+ for key, value in state_dict.items():
+ if 'blocks' in key:
+ key_new = 'blocks.0' + key[len('blocks'):]
+ else:
+ key_new = key
+ new_state_dict[key_new] = value
+
+ model.load_state_dict(new_state_dict, strict=True)
+ del model.mask_token
+ return model
+
+
+def vit_giant2(patch_size=14, num_register_tokens=0, checkpoint=None, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ ffn_layer='swiglu',
+ **kwargs,
+ )
+ return model
+
+
+
+def vit_small_reg(patch_size=14, num_register_tokens=4, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=384,
+ depth=12,
+ num_heads=6,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_base_reg(patch_size=14, num_register_tokens=4, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=768,
+ depth=12,
+ num_heads=12,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_large_reg(patch_size=14, num_register_tokens=4, checkpoint=None, **kwargs):
+ model = DinoVisionTransformer(
+ img_size = 518,
+ patch_size=patch_size,
+ embed_dim=1024,
+ depth=24,
+ num_heads=16,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model)
+
+ return model
+
+
+def vit_giant2_reg(patch_size=14, num_register_tokens=4, checkpoint=None, **kwargs):
+ """
+ Close to ViT-giant, with embed-dim 1536 and 24 heads => embed-dim per head 64
+ """
+ model = DinoVisionTransformer(
+ patch_size=patch_size,
+ embed_dim=1536,
+ depth=40,
+ num_heads=24,
+ mlp_ratio=4,
+ block_fn=partial(Block, attn_class=MemEffAttention),
+ num_register_tokens=num_register_tokens,
+ ffn_layer='swiglu',
+ multi_output=True,
+ **kwargs,
+ )
+
+ load_ckpt_dino(checkpoint, model, reserve_norm=False)
+
+ return model
+
+if __name__ == '__main__':
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+
+ #rgb = torch.rand((2, 3, 518, 518)).cuda()
+
+ #cfg.data_basic['crop_size']['0']
+ #cfg.data_basic['crop_size']['1']
+ cfg = Config.fromfile('mu.hu/monodepth/mono/configs/RAFTDecoder/vit.raft.full2t.py')
+
+ #rgb = torch.arange(0, 2*3*1036*1036, 1).cuda().float().view(2, 3, 1036, 1036)
+ rgb = torch.zeros(1, 3, 616, 1064).cuda()
+ #model = vit_large_reg(checkpoint="/cpfs02/shared/public/groups/local_map/yvan/pretrained_weight_repo/vit/dinov2_vitl14_reg4_pretrain.pth", kwarg=cfg).cuda()
+ model = vit_giant2_reg(checkpoint="pretrained_weight_repo/vit/dinov2_vitg14_reg4_pretrain.pth", kwarg=cfg).cuda()
+
+ #import timm
+ #model2 = timm.models.vision_transformer.vit_large_patch14_dinov2().cuda()
+ #timm.models.load_checkpoint(model2, '/cpfs02/shared/public/yvan/pretrained_weight_repo/vit/dinov2_vitl14_pretrain.pth', filter_fn=timm.models.vision_transformer.checkpoint_filter_fn)
+
+ out1 = model(rgb)
+ #out2 = model2(rgb)
+ temp = 0
+
+
diff --git a/finetune/Metric3D/training/mono/model/backbones/__init__.py b/finetune/Metric3D/training/mono/model/backbones/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..51577dcd12c51c16191080c0c5954e0bcd3896c4
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/backbones/__init__.py
@@ -0,0 +1,8 @@
+from .ViT_DINO import vit_large
+from .ViT_DINO_reg import vit_small_reg, vit_large_reg, vit_giant2_reg
+
+__all__ = [
+ "vit_small_reg",
+ "vit_large_reg",
+ "vit_giant2_reg",
+]
diff --git a/finetune/Metric3D/training/mono/model/criterion.py b/finetune/Metric3D/training/mono/model/criterion.py
new file mode 100644
index 0000000000000000000000000000000000000000..4185dcc1912b249bd2bd3a77ff078103867e8501
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/criterion.py
@@ -0,0 +1,62 @@
+from .losses import *
+from mono.utils.comm import get_func
+import os
+
+def build_from_cfg(cfg, default_args=None):
+ """Build a module from config dict.
+ Args:
+ cfg (dict): Config dict. It should at least contain the key "type".
+ default_args (dict, optional): Default initialization arguments.
+ Returns:
+ object: The constructed object.
+ """
+ if not isinstance(cfg, dict):
+ raise TypeError(f'cfg must be a dict, but got {type(cfg)}')
+ if 'type' not in cfg:
+ raise RuntimeError('should contain the loss name')
+ args = cfg.copy()
+
+ obj_name = args.pop('type')
+ obj_path = os.path.dirname(__file__).split(os.getcwd() + '/')[-1].replace('/', '.') + '.losses.' + obj_name
+
+ obj_cls = get_func(obj_path)(**args)
+
+ if obj_cls is None:
+ raise KeyError(f'cannot find {obj_name}.')
+ return obj_cls
+
+
+
+
+def build_criterions(cfg):
+ if 'losses' not in cfg:
+ raise RuntimeError('Losses have not been configured.')
+ cfg_data_basic = cfg.data_basic
+
+ criterions = dict()
+ losses = cfg.losses
+ if not isinstance(losses, dict):
+ raise RuntimeError(f'Cannot initial losses with the type {type(losses)}')
+ for key, loss_list in losses.items():
+ criterions[key] = []
+ for loss_cfg_i in loss_list:
+ # update the canonical_space configs to the current loss cfg
+ loss_cfg_i.update(cfg_data_basic)
+ if 'out_channel' in loss_cfg_i:
+ loss_cfg_i.update(out_channel=cfg.out_channel) # classification loss need to update the channels
+ obj_cls = build_from_cfg(loss_cfg_i)
+ criterions[key].append(obj_cls)
+ return criterions
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/finetune/Metric3D/training/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py b/finetune/Metric3D/training/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py
new file mode 100644
index 0000000000000000000000000000000000000000..06dee21536ef05194be5eff07c64d7ec5e3459f3
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/decode_heads/RAFTDepthNormalDPTDecoder5.py
@@ -0,0 +1,818 @@
+import torch
+import torch.nn as nn
+import numpy as np
+import math
+import torch.nn.functional as F
+
+def compute_depth_expectation(prob, depth_values):
+ depth_values = depth_values.view(*depth_values.shape, 1, 1)
+ depth = torch.sum(prob * depth_values, 1)
+ return depth
+
+def interpolate_float32(x, size=None, scale_factor=None, mode='nearest', align_corners=None):
+ with torch.autocast(device_type='cuda', dtype=torch.bfloat16, enabled=False):
+ return F.interpolate(x.float(), size=size, scale_factor=scale_factor, mode=mode, align_corners=align_corners)
+
+# def upflow8(flow, mode='bilinear'):
+# new_size = (8 * flow.shape[2], 8 * flow.shape[3])
+# return 8 * F.interpolate(flow, size=new_size, mode=mode, align_corners=True)
+
+def upflow4(flow, mode='bilinear'):
+ new_size = (4 * flow.shape[2], 4 * flow.shape[3])
+ with torch.autocast(device_type='cuda', dtype=torch.bfloat16, enabled=False):
+ return F.interpolate(flow, size=new_size, mode=mode, align_corners=True)
+
+def coords_grid(batch, ht, wd):
+ # coords = torch.meshgrid(torch.arange(ht), torch.arange(wd))
+ coords = (torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)), torch.zeros((ht, wd)))
+ coords = torch.stack(coords[::-1], dim=0).float()
+ return coords[None].repeat(batch, 1, 1, 1)
+
+def norm_normalize(norm_out):
+ min_kappa = 0.01
+ norm_x, norm_y, norm_z, kappa = torch.split(norm_out, 1, dim=1)
+ norm = torch.sqrt(norm_x ** 2.0 + norm_y ** 2.0 + norm_z ** 2.0) + 1e-10
+ kappa = F.elu(kappa) + 1.0 + min_kappa
+ final_out = torch.cat([norm_x / norm, norm_y / norm, norm_z / norm, kappa], dim=1)
+ return final_out
+
+# uncertainty-guided sampling (only used during training)
+@torch.no_grad()
+def sample_points(init_normal, gt_norm_mask, sampling_ratio, beta):
+ device = init_normal.device
+ B, _, H, W = init_normal.shape
+ N = int(sampling_ratio * H * W)
+ beta = beta
+
+ # uncertainty map
+ uncertainty_map = -1 * init_normal[:, -1, :, :] # B, H, W
+
+ # gt_invalid_mask (B, H, W)
+ if gt_norm_mask is not None:
+ gt_invalid_mask = F.interpolate(gt_norm_mask.float(), size=[H, W], mode='nearest')
+ gt_invalid_mask = gt_invalid_mask[:, 0, :, :] < 0.5
+ uncertainty_map[gt_invalid_mask] = -1e4
+
+ # (B, H*W)
+ _, idx = uncertainty_map.view(B, -1).sort(1, descending=True)
+
+ # importance sampling
+ if int(beta * N) > 0:
+ importance = idx[:, :int(beta * N)] # B, beta*N
+
+ # remaining
+ remaining = idx[:, int(beta * N):] # B, H*W - beta*N
+
+ # coverage
+ num_coverage = N - int(beta * N)
+
+ if num_coverage <= 0:
+ samples = importance
+ else:
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = torch.cat((importance, coverage), dim=1) # B, N
+
+ else:
+ # remaining
+ remaining = idx[:, :] # B, H*W
+
+ # coverage
+ num_coverage = N
+
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = coverage
+
+ # point coordinates
+ rows_int = samples // W # 0 for first row, H-1 for last row
+ rows_float = rows_int / float(H-1) # 0 to 1.0
+ rows_float = (rows_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ cols_int = samples % W # 0 for first column, W-1 for last column
+ cols_float = cols_int / float(W-1) # 0 to 1.0
+ cols_float = (cols_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ point_coords = torch.zeros(B, 1, N, 2)
+ point_coords[:, 0, :, 0] = cols_float # x coord
+ point_coords[:, 0, :, 1] = rows_float # y coord
+ point_coords = point_coords.to(device)
+ return point_coords, rows_int, cols_int
+
+class FlowHead(nn.Module):
+ def __init__(self, input_dim=128, hidden_dim=256, output_dim_depth=2, output_dim_norm=4):
+ super(FlowHead, self).__init__()
+ self.conv1d = nn.Conv2d(input_dim, hidden_dim // 2, 3, padding=1)
+ self.conv2d = nn.Conv2d(hidden_dim // 2, output_dim_depth, 3, padding=1)
+
+ self.conv1n = nn.Conv2d(input_dim, hidden_dim // 2, 3, padding=1)
+ self.conv2n = nn.Conv2d(hidden_dim // 2, output_dim_norm, 3, padding=1)
+ self.relu = nn.ReLU(inplace=True)
+
+ def forward(self, x):
+ depth = self.conv2d(self.relu(self.conv1d(x)))
+ normal = self.conv2n(self.relu(self.conv1n(x)))
+ return torch.cat((depth, normal), dim=1)
+
+
+class ConvGRU(nn.Module):
+ def __init__(self, hidden_dim, input_dim, kernel_size=3):
+ super(ConvGRU, self).__init__()
+ self.convz = nn.Conv2d(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2)
+ self.convr = nn.Conv2d(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2)
+ self.convq = nn.Conv2d(hidden_dim+input_dim, hidden_dim, kernel_size, padding=kernel_size//2)
+
+ def forward(self, h, cz, cr, cq, *x_list):
+ x = torch.cat(x_list, dim=1)
+ hx = torch.cat([h, x], dim=1)
+
+ z = torch.sigmoid((self.convz(hx) + cz))
+ r = torch.sigmoid((self.convr(hx) + cr))
+ q = torch.tanh((self.convq(torch.cat([r*h, x], dim=1)) + cq))
+
+ # z = torch.sigmoid((self.convz(hx) + cz).float())
+ # r = torch.sigmoid((self.convr(hx) + cr).float())
+ # q = torch.tanh((self.convq(torch.cat([r*h, x], dim=1)) + cq).float())
+
+ h = (1-z) * h + z * q
+ return h
+
+def pool2x(x):
+ return F.avg_pool2d(x, 3, stride=2, padding=1)
+
+def pool4x(x):
+ return F.avg_pool2d(x, 5, stride=4, padding=1)
+
+def interp(x, dest):
+ interp_args = {'mode': 'bilinear', 'align_corners': True}
+ return interpolate_float32(x, dest.shape[2:], **interp_args)
+
+class BasicMultiUpdateBlock(nn.Module):
+ def __init__(self, args, hidden_dims=[], out_dims=2):
+ super().__init__()
+ self.args = args
+ self.n_gru_layers = args.model.decode_head.n_gru_layers # 3
+ self.n_downsample = args.model.decode_head.n_downsample # 3, resolution of the disparity field (1/2^K)
+
+ # self.encoder = BasicMotionEncoder(args)
+ # encoder_output_dim = 128 # if there is corr volume
+ encoder_output_dim = 6 # no corr volume
+
+ self.gru08 = ConvGRU(hidden_dims[2], encoder_output_dim + hidden_dims[1] * (self.n_gru_layers > 1))
+ self.gru16 = ConvGRU(hidden_dims[1], hidden_dims[0] * (self.n_gru_layers == 3) + hidden_dims[2])
+ self.gru32 = ConvGRU(hidden_dims[0], hidden_dims[1])
+ self.flow_head = FlowHead(hidden_dims[2], hidden_dim=2*hidden_dims[2])
+ factor = 2**self.n_downsample
+
+ self.mask = nn.Sequential(
+ nn.Conv2d(hidden_dims[2], hidden_dims[2], 3, padding=1),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(hidden_dims[2], (factor**2)*9, 1, padding=0))
+
+ def forward(self, net, inp, corr=None, flow=None, iter08=True, iter16=True, iter32=True, update=True):
+
+ if iter32:
+ net[2] = self.gru32(net[2], *(inp[2]), pool2x(net[1]))
+ if iter16:
+ if self.n_gru_layers > 2:
+ net[1] = self.gru16(net[1], *(inp[1]), interp(pool2x(net[0]), net[1]), interp(net[2], net[1]))
+ else:
+ net[1] = self.gru16(net[1], *(inp[1]), interp(pool2x(net[0]), net[1]))
+ if iter08:
+ if corr is not None:
+ motion_features = self.encoder(flow, corr)
+ else:
+ motion_features = flow
+ if self.n_gru_layers > 1:
+ net[0] = self.gru08(net[0], *(inp[0]), motion_features, interp(net[1], net[0]))
+ else:
+ net[0] = self.gru08(net[0], *(inp[0]), motion_features)
+
+ if not update:
+ return net
+
+ delta_flow = self.flow_head(net[0])
+
+ # scale mask to balence gradients
+ mask = .25 * self.mask(net[0])
+ return net, mask, delta_flow
+
+class LayerNorm2d(nn.LayerNorm):
+ def __init__(self, dim):
+ super(LayerNorm2d, self).__init__(dim)
+
+ def forward(self, x):
+ x = x.permute(0, 2, 3, 1).contiguous()
+ x = super(LayerNorm2d, self).forward(x)
+ x = x.permute(0, 3, 1, 2).contiguous()
+ return x
+
+class ResidualBlock(nn.Module):
+ def __init__(self, in_planes, planes, norm_fn='group', stride=1):
+ super(ResidualBlock, self).__init__()
+
+ self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=3, padding=1, stride=stride)
+ self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, padding=1)
+ self.relu = nn.ReLU(inplace=True)
+
+ num_groups = planes // 8
+
+ if norm_fn == 'group':
+ self.norm1 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+ self.norm2 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.GroupNorm(num_groups=num_groups, num_channels=planes)
+
+ elif norm_fn == 'batch':
+ self.norm1 = nn.BatchNorm2d(planes)
+ self.norm2 = nn.BatchNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.BatchNorm2d(planes)
+
+ elif norm_fn == 'instance':
+ self.norm1 = nn.InstanceNorm2d(planes)
+ self.norm2 = nn.InstanceNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.InstanceNorm2d(planes)
+
+ elif norm_fn == 'layer':
+ self.norm1 = LayerNorm2d(planes)
+ self.norm2 = LayerNorm2d(planes)
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = LayerNorm2d(planes)
+
+ elif norm_fn == 'none':
+ self.norm1 = nn.Sequential()
+ self.norm2 = nn.Sequential()
+ if not (stride == 1 and in_planes == planes):
+ self.norm3 = nn.Sequential()
+
+ if stride == 1 and in_planes == planes:
+ self.downsample = None
+
+ else:
+ self.downsample = nn.Sequential(
+ nn.Conv2d(in_planes, planes, kernel_size=1, stride=stride), self.norm3)
+
+ def forward(self, x):
+ y = x
+ y = self.conv1(y)
+ y = self.norm1(y)
+ y = self.relu(y)
+ y = self.conv2(y)
+ y = self.norm2(y)
+ y = self.relu(y)
+
+ if self.downsample is not None:
+ x = self.downsample(x)
+
+ return self.relu(x+y)
+
+
+class ContextFeatureEncoder(nn.Module):
+ '''
+ Encoder features are used to:
+ 1. initialize the hidden state of the update operator
+ 2. and also injected into the GRU during each iteration of the update operator
+ '''
+ def __init__(self, in_dim, output_dim):
+ '''
+ in_dim = [x4, x8, x16, x32]
+ output_dim = [hindden_dims, context_dims]
+ [[x4,x8,x16,x32],[x4,x8,x16,x32]]
+ '''
+ super().__init__()
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[0], dim[0], 'layer', stride=1),
+ nn.Conv2d(dim[0], dim[0], 3, padding=1))
+ output_list.append(conv_out)
+
+ self.outputs04 = nn.ModuleList(output_list)
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[1], dim[1], 'layer', stride=1),
+ nn.Conv2d(dim[1], dim[1], 3, padding=1))
+ output_list.append(conv_out)
+
+ self.outputs08 = nn.ModuleList(output_list)
+
+ output_list = []
+ for dim in output_dim:
+ conv_out = nn.Sequential(
+ ResidualBlock(in_dim[2], dim[2], 'layer', stride=1),
+ nn.Conv2d(dim[2], dim[2], 3, padding=1))
+ output_list.append(conv_out)
+
+ self.outputs16 = nn.ModuleList(output_list)
+
+ # output_list = []
+ # for dim in output_dim:
+ # conv_out = nn.Conv2d(in_dim[3], dim[3], 3, padding=1)
+ # output_list.append(conv_out)
+
+ # self.outputs32 = nn.ModuleList(output_list)
+
+ def forward(self, encoder_features):
+ x_4, x_8, x_16, x_32 = encoder_features
+
+ outputs04 = [f(x_4) for f in self.outputs04]
+ outputs08 = [f(x_8) for f in self.outputs08]
+ outputs16 = [f(x_16)for f in self.outputs16]
+ # outputs32 = [f(x_32) for f in self.outputs32]
+
+ return (outputs04, outputs08, outputs16)
+
+class ConvBlock(nn.Module):
+ # reimplementation of DPT
+ def __init__(self, channels):
+ super(ConvBlock, self).__init__()
+
+ self.act = nn.ReLU(inplace=True)
+ self.conv1 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+ self.conv2 = nn.Conv2d(
+ channels,
+ channels,
+ kernel_size=3,
+ stride=1,
+ padding=1
+ )
+
+ def forward(self, x):
+ out = self.act(x)
+ out = self.conv1(out)
+ out = self.act(out)
+ out = self.conv2(out)
+ return x + out
+
+class FuseBlock(nn.Module):
+ # reimplementation of DPT
+ def __init__(self, in_channels, out_channels, fuse=True, upsample=True, scale_factor=2):
+ super(FuseBlock, self).__init__()
+
+ self.fuse = fuse
+ self.scale_factor = scale_factor
+ self.way_trunk = ConvBlock(in_channels)
+ if self.fuse:
+ self.way_branch = ConvBlock(in_channels)
+
+ self.out_conv = nn.Conv2d(
+ in_channels,
+ out_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0,
+ )
+ self.upsample = upsample
+
+ def forward(self, x1, x2=None):
+ if x2 is not None:
+ x2 = self.way_branch(x2)
+ x1 = x1 + x2
+
+ out = self.way_trunk(x1)
+
+ if self.upsample:
+ out = interpolate_float32(
+ out, scale_factor=self.scale_factor, mode="bilinear", align_corners=True
+ )
+ out = self.out_conv(out)
+ return out
+
+class Readout(nn.Module):
+ # From DPT
+ def __init__(self, in_features, use_cls_token=True, num_register_tokens=0):
+ super(Readout, self).__init__()
+ self.use_cls_token = use_cls_token
+ if self.use_cls_token == True:
+ self.project_patch = nn.Linear(in_features, in_features)
+ self.project_learn = nn.Linear((1 + num_register_tokens) * in_features, in_features, bias=False)
+ self.act = nn.GELU()
+ else:
+ self.project = nn.Identity()
+
+ def forward(self, x):
+
+ if self.use_cls_token == True:
+ x_patch = self.project_patch(x[0])
+ x_learn = self.project_learn(x[1])
+ x_learn = x_learn.expand_as(x_patch).contiguous()
+ features = x_patch + x_learn
+ return self.act(features)
+ else:
+ return self.project(x)
+
+class Token2Feature(nn.Module):
+ # From DPT
+ def __init__(self, vit_channel, feature_channel, scale_factor, use_cls_token=True, num_register_tokens=0):
+ super(Token2Feature, self).__init__()
+ self.scale_factor = scale_factor
+ self.readoper = Readout(in_features=vit_channel, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens)
+ if scale_factor > 1 and isinstance(scale_factor, int):
+ self.sample = nn.ConvTranspose2d(
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=scale_factor,
+ stride=scale_factor,
+ padding=0,
+ )
+
+ elif scale_factor > 1:
+ self.sample = nn.Sequential(
+ # Upsample2(upscale=scale_factor),
+ # nn.Upsample(scale_factor=scale_factor),
+ nn.Conv2d(
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=1,
+ stride=1,
+ padding=0,
+ ),
+ )
+
+
+ elif scale_factor < 1:
+ scale_factor = int(1.0 / scale_factor)
+ self.sample = nn.Conv2d(
+ in_channels=vit_channel,
+ out_channels=feature_channel,
+ kernel_size=scale_factor+1,
+ stride=scale_factor,
+ padding=1,
+ )
+
+ else:
+ self.sample = nn.Identity()
+
+ def forward(self, x):
+ x = self.readoper(x)
+ #if use_cls_token == True:
+ x = x.permute(0, 3, 1, 2).contiguous()
+ if isinstance(self.scale_factor, float):
+ x = interpolate_float32(x.float(), scale_factor=self.scale_factor, mode='nearest')
+ x = self.sample(x)
+ return x
+
+class EncoderFeature(nn.Module):
+ def __init__(self, vit_channel, num_ch_dec=[256, 512, 1024, 1024], use_cls_token=True, num_register_tokens=0):
+ super(EncoderFeature, self).__init__()
+ self.vit_channel = vit_channel
+ self.num_ch_dec = num_ch_dec
+
+ self.read_3 = Token2Feature(self.vit_channel, self.num_ch_dec[3], scale_factor=1, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens)
+ self.read_2 = Token2Feature(self.vit_channel, self.num_ch_dec[2], scale_factor=1, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens)
+ self.read_1 = Token2Feature(self.vit_channel, self.num_ch_dec[1], scale_factor=2, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens)
+ self.read_0 = Token2Feature(self.vit_channel, self.num_ch_dec[0], scale_factor=7/2, use_cls_token=use_cls_token, num_register_tokens=num_register_tokens)
+
+ def forward(self, ref_feature):
+ x = self.read_3(ref_feature[3]) # 1/14
+ x2 = self.read_2(ref_feature[2]) # 1/14
+ x1 = self.read_1(ref_feature[1]) # 1/7
+ x0 = self.read_0(ref_feature[0]) # 1/4
+
+ return x, x2, x1, x0
+
+class DecoderFeature(nn.Module):
+ def __init__(self, vit_channel, num_ch_dec=[128, 256, 512, 1024, 1024], use_cls_token=True):
+ super(DecoderFeature, self).__init__()
+ self.vit_channel = vit_channel
+ self.num_ch_dec = num_ch_dec
+
+ self.upconv_3 = FuseBlock(
+ self.num_ch_dec[4],
+ self.num_ch_dec[3],
+ fuse=False, upsample=False)
+
+ self.upconv_2 = FuseBlock(
+ self.num_ch_dec[3],
+ self.num_ch_dec[2],
+ )
+
+ self.upconv_1 = FuseBlock(
+ self.num_ch_dec[2],
+ self.num_ch_dec[1] + 2,
+ scale_factor=7/4
+ )
+
+ # self.upconv_0 = FuseBlock(
+ # self.num_ch_dec[1],
+ # self.num_ch_dec[0] + 1,
+ # )
+
+ def forward(self, ref_feature):
+ x, x2, x1, x0 = ref_feature # 1/14 1/14 1/7 1/4
+
+ x = self.upconv_3(x) # 1/14
+ x = self.upconv_2(x, x2) # 1/7
+ x = self.upconv_1(x, x1) # 1/4
+ # x = self.upconv_0(x, x0) # 4/7
+ return x
+
+class RAFTDepthNormalDPT5(nn.Module):
+ def __init__(self, cfg):
+ super().__init__()
+ self.in_channels = cfg.model.decode_head.in_channels # [1024, 1024, 1024, 1024]
+ self.feature_channels = cfg.model.decode_head.feature_channels # [256, 512, 1024, 1024] [2/7, 1/7, 1/14, 1/14]
+ self.decoder_channels = cfg.model.decode_head.decoder_channels # [128, 256, 512, 1024, 1024] [-, 1/4, 1/7, 1/14, 1/14]
+ self.use_cls_token = cfg.model.decode_head.use_cls_token
+ self.up_scale = cfg.model.decode_head.up_scale
+ self.num_register_tokens = cfg.model.decode_head.num_register_tokens
+ self.min_val = cfg.data_basic.depth_normalize[0]
+ self.max_val = cfg.data_basic.depth_normalize[1]
+ self.regress_scale = 100.0
+
+ self.hidden_dims = self.context_dims = cfg.model.decode_head.hidden_channels # [128, 128, 128, 128]
+ self.n_gru_layers = cfg.model.decode_head.n_gru_layers # 3
+ self.n_downsample = cfg.model.decode_head.n_downsample # 3, resolution of the disparity field (1/2^K)
+ self.iters = cfg.model.decode_head.iters # 22
+ self.slow_fast_gru = cfg.model.decode_head.slow_fast_gru # True
+
+ self.num_depth_regressor_anchor = 256 # 512
+ self.used_res_channel = self.decoder_channels[1] # now, use 2/7 res
+ self.token2feature = EncoderFeature(self.in_channels[0], self.feature_channels, self.use_cls_token, self.num_register_tokens)
+ self.decoder_mono = DecoderFeature(self.in_channels, self.decoder_channels)
+ self.depth_regressor = nn.Sequential(
+ nn.Conv2d(self.used_res_channel,
+ self.num_depth_regressor_anchor,
+ kernel_size=3,
+ padding=1),
+ # nn.BatchNorm2d(self.num_depth_regressor_anchor),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(self.num_depth_regressor_anchor,
+ self.num_depth_regressor_anchor,
+ kernel_size=1),
+ )
+ self.normal_predictor = nn.Sequential(
+ nn.Conv2d(self.used_res_channel,
+ 128,
+ kernel_size=3,
+ padding=1),
+ # nn.BatchNorm2d(128),
+ nn.ReLU(inplace=True),
+ nn.Conv2d(128, 128, kernel_size=1), nn.ReLU(inplace=True),
+ nn.Conv2d(128, 128, kernel_size=1), nn.ReLU(inplace=True),
+ nn.Conv2d(128, 3, kernel_size=1),
+ )
+
+ self.context_feature_encoder = ContextFeatureEncoder(self.feature_channels, [self.hidden_dims, self.context_dims])
+ self.context_zqr_convs = nn.ModuleList([nn.Conv2d(self.context_dims[i], self.hidden_dims[i]*3, 3, padding=3//2) for i in range(self.n_gru_layers)])
+ self.update_block = BasicMultiUpdateBlock(cfg, hidden_dims=self.hidden_dims, out_dims=6)
+
+ self.relu = nn.ReLU(inplace=True)
+
+ def get_bins(self, bins_num):
+ depth_bins_vec = torch.linspace(math.log(self.min_val), math.log(self.max_val), bins_num, device="cuda")
+ depth_bins_vec = torch.exp(depth_bins_vec)
+ return depth_bins_vec
+
+ def register_depth_expectation_anchor(self, bins_num, B):
+ depth_bins_vec = self.get_bins(bins_num)
+ depth_bins_vec = depth_bins_vec.unsqueeze(0).repeat(B, 1)
+ self.register_buffer('depth_expectation_anchor', depth_bins_vec, persistent=False)
+
+ def clamp(self, x):
+ y = self.relu(x - self.min_val) + self.min_val
+ y = self.max_val - self.relu(self.max_val - y)
+ return y
+
+ def regress_depth(self, feature_map_d):
+ prob_feature = self.depth_regressor(feature_map_d)
+ prob = prob_feature.softmax(dim=1)
+ #prob = prob_feature.float().softmax(dim=1)
+
+ ## Error logging
+ if torch.isnan(prob).any():
+ print('prob_feat_nan!!!')
+ if torch.isinf(prob).any():
+ print('prob_feat_inf!!!')
+
+ # h = prob[0,:,0,0].cpu().numpy().reshape(-1)
+ # import matplotlib.pyplot as plt
+ # plt.bar(range(len(h)), h)
+ B = prob.shape[0]
+ if "depth_expectation_anchor" not in self._buffers:
+ self.register_depth_expectation_anchor(self.num_depth_regressor_anchor, B)
+ d = compute_depth_expectation(
+ prob,
+ self.depth_expectation_anchor[:B, ...]).unsqueeze(1)
+
+ ## Error logging
+ if torch.isnan(d ).any():
+ print('d_nan!!!')
+ if torch.isinf(d ).any():
+ print('d_inf!!!')
+
+ return (self.clamp(d) - self.max_val)/ self.regress_scale, prob_feature
+
+ def pred_normal(self, feature_map, confidence):
+ normal_out = self.normal_predictor(feature_map)
+
+ ## Error logging
+ if torch.isnan(normal_out).any():
+ print('norm_nan!!!')
+ if torch.isinf(normal_out).any():
+ print('norm_feat_inf!!!')
+
+ return norm_normalize(torch.cat([normal_out, confidence], dim=1))
+ #return norm_normalize(torch.cat([normal_out, confidence], dim=1).float())
+
+ def create_mesh_grid(self, height, width, batch, device="cuda", set_buffer=True):
+ y, x = torch.meshgrid([torch.arange(0, height, dtype=torch.float32, device=device),
+ torch.arange(0, width, dtype=torch.float32, device=device)], indexing='ij')
+ meshgrid = torch.stack((x, y))
+ meshgrid = meshgrid.unsqueeze(0).repeat(batch, 1, 1, 1)
+ #self.register_buffer('meshgrid', meshgrid, persistent=False)
+ return meshgrid
+
+ def upsample_flow(self, flow, mask):
+ """ Upsample flow field [H/8, W/8, 2] -> [H, W, 2] using convex combination """
+ N, D, H, W = flow.shape
+ factor = 2 ** self.n_downsample
+ mask = mask.view(N, 1, 9, factor, factor, H, W)
+ mask = torch.softmax(mask, dim=2)
+ #mask = torch.softmax(mask.float(), dim=2)
+
+ #up_flow = F.unfold(factor * flow, [3,3], padding=1)
+ up_flow = F.unfold(flow, [3,3], padding=1)
+ up_flow = up_flow.view(N, D, 9, 1, 1, H, W)
+
+ up_flow = torch.sum(mask * up_flow, dim=2)
+ up_flow = up_flow.permute(0, 1, 4, 2, 5, 3)
+ return up_flow.reshape(N, D, factor*H, factor*W)
+
+ def initialize_flow(self, img):
+ """ Flow is represented as difference between two coordinate grids flow = coords1 - coords0"""
+ N, _, H, W = img.shape
+
+ coords0 = coords_grid(N, H, W).to(img.device)
+ coords1 = coords_grid(N, H, W).to(img.device)
+
+ return coords0, coords1
+
+ def upsample(self, x, scale_factor=2):
+ """Upsample input tensor by a factor of 2
+ """
+ return interpolate_float32(x, scale_factor=scale_factor*self.up_scale/8, mode="nearest")
+
+ def forward(self, vit_features, **kwargs):
+ ## read vit token to multi-scale features
+ B, H, W, _, _, num_register_tokens = vit_features[1]
+ vit_features = vit_features[0]
+
+ ## Error logging
+ if torch.isnan(vit_features[0]).any():
+ print('vit_feature_nan!!!')
+ if torch.isinf(vit_features[0]).any():
+ print('vit_feature_inf!!!')
+
+ if self.use_cls_token == True:
+ vit_features = [[ft[:, 1+num_register_tokens:, :].view(B, H, W, self.in_channels[0]), \
+ ft[:, 0:1+num_register_tokens, :].view(B, 1, 1, self.in_channels[0] * (1+num_register_tokens))] for ft in vit_features]
+ else:
+ vit_features = [ft.view(B, H, W, self.in_channels[0]) for ft in vit_features]
+ encoder_features = self.token2feature(vit_features) # 1/14, 1/14, 1/7, 1/4
+
+ ## Error logging
+ for en_ft in encoder_features:
+ if torch.isnan(en_ft).any():
+ print('decoder_feature_nan!!!')
+ print(en_ft.shape)
+ if torch.isinf(en_ft).any():
+ print('decoder_feature_inf!!!')
+ print(en_ft.shape)
+
+ ## decode features to init-depth (and confidence)
+ ref_feat= self.decoder_mono(encoder_features) # now, 1/4 for depth
+
+ ## Error logging
+ if torch.isnan(ref_feat).any():
+ print('ref_feat_nan!!!')
+ if torch.isinf(ref_feat).any():
+ print('ref_feat_inf!!!')
+
+ feature_map = ref_feat[:, :-2, :, :] # feature map share of depth and normal prediction
+ depth_confidence_map = ref_feat[:, -2:-1, :, :]
+ normal_confidence_map = ref_feat[:, -1:, :, :]
+ depth_pred, binmap = self.regress_depth(feature_map) # regress bin for depth
+ normal_pred = self.pred_normal(feature_map, normal_confidence_map) # mlp for normal
+
+ depth_init = torch.cat((depth_pred, depth_confidence_map, normal_pred), dim=1) # (N, 1+1+4, H, W)
+
+ ## encoder features to context-feature for init-hidden-state and contex-features
+ cnet_list = self.context_feature_encoder(encoder_features[::-1])
+ net_list = [torch.tanh(x[0]) for x in cnet_list] # x_4, x_8, x_16 of hidden state
+ inp_list = [torch.relu(x[1]) for x in cnet_list] # x_4, x_8, x_16 context features
+
+ # Rather than running the GRU's conv layers on the context features multiple times, we do it once at the beginning
+ inp_list = [list(conv(i).split(split_size=conv.out_channels//3, dim=1)) for i,conv in zip(inp_list, self.context_zqr_convs)]
+
+ coords0, coords1 = self.initialize_flow(net_list[0])
+ if depth_init is not None:
+ coords1 = coords1 + depth_init
+
+ if self.training:
+ low_resolution_init = [self.clamp(depth_init[:,:1] * self.regress_scale + self.max_val), depth_init[:,1:2], norm_normalize(depth_init[:,2:].clone())]
+ init_depth = upflow4(depth_init)
+ flow_predictions = [self.clamp(init_depth[:,:1] * self.regress_scale + self.max_val)]
+ conf_predictions = [init_depth[:,1:2]]
+ normal_outs = [norm_normalize(init_depth[:,2:].clone())]
+
+ else:
+ flow_predictions = []
+ conf_predictions = []
+ samples_pred_list = []
+ coord_list = []
+ normal_outs = []
+ low_resolution_init = []
+
+ for itr in range(self.iters):
+ # coords1 = coords1.detach()
+ flow = coords1 - coords0
+ if self.n_gru_layers == 3 and self.slow_fast_gru: # Update low-res GRU
+ net_list = self.update_block(net_list, inp_list, iter32=True, iter16=False, iter08=False, update=False)
+ if self.n_gru_layers >= 2 and self.slow_fast_gru:# Update low-res GRU and mid-res GRU
+ net_list = self.update_block(net_list, inp_list, iter32=self.n_gru_layers==3, iter16=True, iter08=False, update=False)
+ net_list, up_mask, delta_flow = self.update_block(net_list, inp_list, None, flow, iter32=self.n_gru_layers==3, iter16=self.n_gru_layers>=2)
+
+ # F(t+1) = F(t) + \Delta(t)
+ coords1 = coords1 + delta_flow
+
+ # We do not need to upsample or output intermediate results in test_mode
+ #if (not self.training) and itr < self.iters-1:
+ #continue
+
+ # upsample predictions
+ if up_mask is None:
+ flow_up = self.upsample(coords1-coords0, 4)
+ else:
+ flow_up = self.upsample_flow(coords1 - coords0, up_mask)
+ # flow_up = self.upsample(coords1-coords0, 4)
+
+ flow_predictions.append(self.clamp(flow_up[:,:1] * self.regress_scale + self.max_val))
+ conf_predictions.append(flow_up[:,1:2])
+ normal_outs.append(norm_normalize(flow_up[:,2:].clone()))
+
+ outputs=dict(
+ prediction=flow_predictions[-1],
+ predictions_list=flow_predictions,
+ confidence=conf_predictions[-1],
+ confidence_list=conf_predictions,
+ pred_logit=None,
+ # samples_pred_list=samples_pred_list,
+ # coord_list=coord_list,
+ prediction_normal=normal_outs[-1],
+ normal_out_list=normal_outs,
+ low_resolution_init=low_resolution_init,
+ )
+
+ return outputs
+
+
+if __name__ == "__main__":
+ try:
+ from mmcv.utils import Config
+ except:
+ from mmengine import Config
+ cfg = Config.fromfile('/mu.hu/monodepth/mono/configs/RAFTDecoder/vit.raft.full2t.py')
+ cfg.model.decode_head.in_channels = [384, 384, 384, 384]
+ cfg.model.decode_head.feature_channels = [96, 192, 384, 768]
+ cfg.model.decode_head.decoder_channels = [48, 96, 192, 384, 384]
+ cfg.model.decode_head.hidden_channels = [48, 48, 48, 48, 48]
+ cfg.model.decode_head.up_scale = 7
+
+ # cfg.model.decode_head.use_cls_token = True
+ # vit_feature = [[torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()], \
+ # [torch.rand((2, 20, 60, 384)).cuda(), torch.rand(2, 384).cuda()]]
+
+ cfg.model.decode_head.use_cls_token = True
+ cfg.model.decode_head.num_register_tokens = 4
+ vit_feature = [[torch.rand((2, (74 * 74) + 5, 384)).cuda(),\
+ torch.rand((2, (74 * 74) + 5, 384)).cuda(), \
+ torch.rand((2, (74 * 74) + 5, 384)).cuda(), \
+ torch.rand((2, (74 * 74) + 5, 384)).cuda()], (2, 74, 74, 1036, 1036, 4)]
+
+ decoder = RAFTDepthNormalDPT5(cfg).cuda()
+ output = decoder(vit_feature)
+ temp = 1
+
+
+
+
diff --git a/finetune/Metric3D/training/mono/model/decode_heads/__init__.py b/finetune/Metric3D/training/mono/model/decode_heads/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2453f91e124ca62437be8b9d3b7e270ceae34384
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/decode_heads/__init__.py
@@ -0,0 +1,4 @@
+from .RAFTDepthNormalDPTDecoder5 import RAFTDepthNormalDPT5
+
+__all__=['RAFTDepthNormalDPT5'
+]
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/AdabinsLoss.py b/finetune/Metric3D/training/mono/model/losses/AdabinsLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..9dbed8db40a1d8062c3d9872581fc83339f4bbef
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/AdabinsLoss.py
@@ -0,0 +1,101 @@
+import numpy as np
+import torch
+import torch.nn as nn
+from torch.nn.utils.rnn import pad_sequence
+#from pytorch3d.loss import chamfer_distance
+
+class AdabinsLoss(nn.Module):
+ """
+ Losses employed in Adabins.
+ """
+ def __init__(self, depth_normalize, variance_focus=0.85, loss_weight=1, out_channel=100, data_type=['stereo', 'lidar'], w_ce=False, w_chamber=False, **kwargs):
+ super(AdabinsLoss, self).__init__()
+ self.variance_focus = variance_focus
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ #self.bins_num = out_channel
+ #self.cel = nn.CrossEntropyLoss(ignore_index=self.bins_num + 1)
+ self.depth_min = depth_normalize[0]
+ self.depth_max = depth_normalize[1]
+ self.w_ce = w_ce
+ self.eps = 1e-6
+
+ def silog_loss(self, prediction, target, mask):
+ d = torch.log(prediction[mask]) - torch.log(target[mask])
+ d_square_mean = torch.sum(d ** 2) / (d.numel() + self.eps)
+ d_mean = torch.sum(d) / (d.numel() + self.eps)
+ loss = torch.sqrt(d_square_mean - self.variance_focus * (d_mean ** 2))
+ return loss
+
+ def chamfer_distance_loss(self, bins, target_depth_maps, mask):
+ bin_centers = 0.5 * (bins[:, 1:] + bins[:, :-1])
+ n, p = bin_centers.shape
+ input_points = bin_centers.view(n, p, 1) # .shape = n, p, 1
+ # n, c, h, w = target_depth_maps.shape
+
+ target_points = target_depth_maps.flatten(1) # n, hwc
+ #mask = target_points.ge(1e-3) # only valid ground truth points
+ target_points = [p[m] for p, m in zip(target_depth_maps, mask)]
+ target_lengths = torch.Tensor([len(t) for t in target_points], dtype=torch.long, device="cuda")
+ target_points = pad_sequence(target_points, batch_first=True).unsqueeze(2) # .shape = n, T, 1
+
+ loss, _ = chamfer_distance(x=input_points, y=target_points, y_lengths=target_lengths)
+ return loss
+
+ # def depth_to_bins(self, depth, mask, depth_edges, size_limite=(512, 960)):
+ # """
+ # Discretize depth into depth bins. Predefined bins edges are provided.
+ # Mark invalid padding area as bins_num + 1
+ # Args:
+ # @depth: 1-channel depth, [B, 1, h, w]
+ # return: depth bins [B, C, h, w]
+ # """
+ # def _depth_to_bins_block_(depth, mask, depth_edges):
+ # bins_id = torch.sum(depth_edges[:, None, None, None, :] < torch.abs(depth)[:, :, :, :, None], dim=-1)
+ # bins_id = bins_id - 1
+ # invalid_mask = ~mask
+ # mask_lower = (depth <= self.depth_min)
+ # mask_higher = (depth >= self.depth_max)
+
+ # bins_id[mask_lower] = 0
+ # bins_id[mask_higher] = self.bins_num - 1
+ # bins_id[bins_id == self.bins_num] = self.bins_num - 1
+
+ # bins_id[invalid_mask] = self.bins_num + 1
+ # return bins_id
+ # # _, _, H, W = depth.shape
+ # # bins = mask.clone().long()
+ # # h_blocks = np.ceil(H / size_limite[0]).astype(np.int)
+ # # w_blocks = np.ceil(W/ size_limite[1]).astype(np.int)
+ # # for i in range(h_blocks):
+ # # for j in range(w_blocks):
+ # # h_start = i*size_limite[0]
+ # # h_end_proposal = (i + 1) * size_limite[0]
+ # # h_end = h_end_proposal if h_end_proposal < H else H
+ # # w_start = j*size_limite[1]
+ # # w_end_proposal = (j + 1) * size_limite[1]
+ # # w_end = w_end_proposal if w_end_proposal < W else W
+ # # bins_ij = _depth_to_bins_block_(
+ # # depth[:, :, h_start:h_end, w_start:w_end],
+ # # mask[:, :, h_start:h_end, w_start:w_end],
+ # # depth_edges
+ # # )
+ # # bins[:, :, h_start:h_end, w_start:w_end] = bins_ij
+ # bins = _depth_to_bins_block_(depth, mask, depth_edges)
+ # return bins
+
+ # def ce_loss(self, pred_logit, target, mask, bins_edges):
+ # target_depth_bins = self.depth_to_bins(target, mask, bins_edges)
+ # loss = self.cel(pred_logit, target_depth_bins.squeeze().long())
+ # return loss
+
+
+ def forward(self, prediction, target, bins_edges, mask=None, **kwargs):
+ silog_loss = self.silog_loss(prediction=prediction, target=target, mask=mask)
+ #cf_loss = self.chamfer_distance_loss(bins=bins_edges, target_depth_maps=target, mask=mask)
+ loss = silog_loss * 10 #+ 0.1 * cf_loss
+ # if self.w_ce:
+ # loss = loss + self.ce_loss(kwargs['pred_logit'], target, mask, bins_edges)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'Adabins loss error, {loss}')
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/ConfidenceGuideLoss.py b/finetune/Metric3D/training/mono/model/losses/ConfidenceGuideLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..6c1d9cc4829e44423850826a3ef5bccfc7a49835
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/ConfidenceGuideLoss.py
@@ -0,0 +1,54 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+class ConfidenceGuideLoss(nn.Module):
+ """
+ confidence guide depth loss.
+ """
+ def __init__(self, loss_weight=1, data_type=['stereo', 'lidar', 'denselidar'], loss_gamma=0.9, conf_loss=True, **kwargs):
+ super(ConfidenceGuideLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+ self.loss_gamma = loss_gamma
+ self.conf_loss = conf_loss
+
+ def forward(self, samples_pred_list, target, coord_list, mask=None, **kwargs):
+ loss = 0.0
+ n_predictions = len(samples_pred_list)
+ for i, (pred, coord) in enumerate(zip(samples_pred_list, coord_list)):
+ # coord: B, 1, N, 2
+ # pred: B, 2, N
+ gt_depth_ = F.grid_sample(target, coord, mode='nearest', align_corners=True) # (B, 1, 1, N)
+ gt_depth_mask_ = F.grid_sample(mask.float(), coord, mode='nearest', align_corners=True) # (B, 1, 1, N)
+ gt_depth_ = gt_depth_[:, :, 0, :]
+ gt_depth_mask_ = gt_depth_mask_[:, :, 0, :] > 0.5
+
+ pred_depth, pred_conf = pred[:, :1, :], pred[:, 1:, :]
+
+ # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+ adjusted_loss_gamma = self.loss_gamma**(15/(n_predictions - 1))
+ i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+
+ # depth L1 loss
+ diff = torch.abs(pred_depth - gt_depth_) * gt_depth_mask_
+ curr_loss = torch.sum(diff) / (torch.sum(gt_depth_mask_) + self.eps)
+ if torch.isnan(curr_loss).item() | torch.isinf(curr_loss).item():
+ curr_loss = 0 * torch.sum(pred_depth)
+ print(f'GRUSequenceLoss-depth NAN error, {loss}')
+
+ # confidence L1 loss
+ conf_loss = 0.0
+ if self.conf_loss:
+ conf_mask = torch.abs(gt_depth_ - pred_depth) < gt_depth_
+ conf_mask = conf_mask & gt_depth_mask_
+ gt_confidence = (1 - torch.abs((pred_depth - gt_depth_) / gt_depth_)) * conf_mask
+ conf_loss = torch.sum(torch.abs(pred_conf - gt_confidence) * conf_mask) / (torch.sum(conf_mask) + self.eps)
+ if torch.isnan(conf_loss).item() | torch.isinf(conf_loss).item():
+ conf_loss = 0 * torch.sum(pred_conf)
+ print(f'GRUSequenceLoss-confidence NAN error, {conf_loss}')
+
+ loss += (conf_loss + curr_loss) * i_weight
+
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/ConfidenceLoss.py b/finetune/Metric3D/training/mono/model/losses/ConfidenceLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..c8ed6d7d7eadf0e1c1be009f88335a04a04e3d2d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/ConfidenceLoss.py
@@ -0,0 +1,22 @@
+import torch
+import torch.nn as nn
+
+class ConfidenceLoss(nn.Module):
+ """
+ confidence loss.
+ """
+ def __init__(self, loss_weight=1, data_type=['stereo', 'lidar', 'denselidar'], **kwargs):
+ super(ConfidenceLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, confidence, mask=None, **kwargs):
+ conf_mask = torch.abs(target - prediction) < target
+ conf_mask = conf_mask & mask
+ gt_confidence = (1 - torch.abs((prediction - target) / target)) * conf_mask
+ loss = torch.sum(torch.abs(confidence - gt_confidence) * conf_mask) / (torch.sum(conf_mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(confidence)
+ print(f'ConfidenceLoss NAN error, {loss}')
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/GRUSequenceLoss.py b/finetune/Metric3D/training/mono/model/losses/GRUSequenceLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d829f2874dc007260be349955b7bea62debd8ae
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/GRUSequenceLoss.py
@@ -0,0 +1,181 @@
+import torch
+import torch.nn as nn
+
+class GRUSequenceLoss(nn.Module):
+ """
+ Loss function defined over sequence of depth predictions
+ """
+ def __init__(self, loss_weight=1, data_type=['lidar', 'denselidar', 'stereo', 'denselidar_syn'], loss_gamma=0.9, silog=False, stereo_sup=0.001, stereo_dataset=['KITTI', 'NYU'], **kwargs):
+ super(GRUSequenceLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+ self.loss_gamma = loss_gamma
+ self.silog = silog
+ self.variance_focus = 0.5
+ self.stereo_sup = stereo_sup
+ self.stereo_dataset = stereo_dataset
+
+ # assert stereo_mode in ['stereo', 'self_sup']
+ # self.stereo_mode = stereo_mode
+ # self.stereo_max = stereo_max
+
+ def silog_loss(self, prediction, target, mask):
+ mask = mask & (prediction > 0.01) & (target > 0.01)
+ d = torch.log(prediction[mask]) - torch.log(target[mask])
+ # d_square_mean = torch.sum(d ** 2) / (d.numel() + self.eps)
+ # d_mean = torch.sum(d) / (d.numel() + self.eps)
+ # loss = d_square_mean - self.variance_focus * (d_mean ** 2)
+ loss = torch.sum(torch.abs(d)) / (d.numel() + self.eps)
+ print("new log l1 loss")
+ return loss
+
+ def conf_loss(self, confidence, prediction, target, mask):
+ conf_mask = torch.abs(target - prediction) < target
+ conf_mask = conf_mask & mask
+ gt_confidence = (1 - torch.abs((prediction - target) / target)) * conf_mask
+ loss = torch.sum(torch.abs(confidence - gt_confidence) * conf_mask) / (torch.sum(conf_mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ print(f'GRUSequenceLoss-confidence NAN error, {loss}')
+ loss = 0 * torch.sum(confidence)
+ return loss
+
+ def forward(self, predictions_list, target, stereo_depth, confidence_list=None, mask=None, **kwargs):
+ device = target.device
+
+ batches_dataset = kwargs['dataset']
+ self.batch_with_stereo = torch.tensor([1 if batch_dataset in self.stereo_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+ n_predictions = len(predictions_list)
+ assert n_predictions >= 1
+ loss = 0.0
+
+ for i, prediction in enumerate(predictions_list):
+ # if self.stereo_mode == 'self_sup' and self.stereo_sup > 1e-8:
+ # B, C, H, W = target.shape
+ # prediction_nan = prediction.clone().detach()
+ # target_nan = target.clone()
+ # prediction_nan[~mask] = float('nan')
+ # target_nan[~mask] = float('nan')
+ # gt_median = target_nan.reshape((B, C,-1)).nanmedian(2)[0][:, :, None, None]
+
+ # pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2)[0][:, :, None, None]
+ # scale = gt_median / (pred_median + 1e-8)
+
+ # stereo_depth = (0.0 * stereo_depth + scale * prediction * (prediction < (self.stereo_max - 1)) + \
+ # prediction * (prediction > (self.stereo_max - 1))).detach()
+
+ # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+ adjusted_loss_gamma = self.loss_gamma**(15/(n_predictions - 1))
+ i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+
+ # depth L1 loss
+ if self.silog and mask.sum() > 0:
+ curr_loss = self.silog_loss(prediction, target, mask)
+ else:
+ diff = torch.abs(prediction - target) * mask
+ #diff = diff + diff * diff * 1.0
+ curr_loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+ if torch.isnan(curr_loss).item() | torch.isinf(curr_loss).item():
+ print(f'GRUSequenceLoss-depth NAN error, {curr_loss}')
+ curr_loss = 0 * torch.sum(prediction)
+
+ # confidence L1 loss
+ conf_loss = 0
+ if confidence_list is not None:
+ conf_loss = self.conf_loss(confidence_list[i], prediction, target, mask)
+
+ # stereo depth loss
+ mask_stereo = 1 + torch.nn.functional.max_pool2d(\
+ - torch.nn.functional.max_pool2d(mask * 1.0, 3, stride=1, padding=1, dilation=1), 3, stride=1, padding=1, dilation=1)
+
+ stereo_diff = torch.abs(prediction - stereo_depth) * mask_stereo
+ #stereo_diff = stereo_diff + stereo_diff * stereo_diff * 1.0
+ stereo_depth_loss = torch.sum(self.batch_with_stereo * stereo_diff * mask_stereo) / (torch.sum(mask_stereo) + self.eps)
+ stereo_depth_loss = self.stereo_sup * stereo_depth_loss
+
+ loss += (conf_loss + curr_loss + stereo_depth_loss) * i_weight
+ #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
+
+# import torch
+# import torch.nn as nn
+
+# class GRUSequenceLoss(nn.Module):
+# """
+# Loss function defined over sequence of depth predictions
+# """
+# def __init__(self, loss_weight=1, data_type=['lidar', 'denselidar', 'stereo', 'denselidar_syn'], loss_gamma=0.9, silog=False, stereo_sup=0.001, stereo_dataset=['BigData'], **kwargs):
+# super(GRUSequenceLoss, self).__init__()
+# self.loss_weight = loss_weight
+# self.data_type = data_type
+# self.eps = 1e-6
+# self.loss_gamma = loss_gamma
+# self.silog = silog
+# self.variance_focus = 0.5
+# self.stereo_sup = stereo_sup
+# self.stereo_dataset = stereo_dataset
+
+# def silog_loss(self, prediction, target, mask):
+# mask = mask & (prediction > 0.01) & (target > 0.01)
+# d = torch.log(prediction[mask]) - torch.log(target[mask])
+# # d_square_mean = torch.sum(d ** 2) / (d.numel() + self.eps)
+# # d_mean = torch.sum(d) / (d.numel() + self.eps)
+# # loss = d_square_mean - self.variance_focus * (d_mean ** 2)
+# loss = torch.sum(torch.abs(d)) / (d.numel() + self.eps)
+# print("new log l1 loss")
+# return loss
+
+# def conf_loss(self, confidence, prediction, target, mask):
+# conf_mask = torch.abs(target - prediction) < target
+# conf_mask = conf_mask & mask
+# gt_confidence = (1 - torch.abs((prediction - target) / target)) * conf_mask
+# loss = torch.sum(torch.abs(confidence - gt_confidence) * conf_mask) / (torch.sum(conf_mask) + self.eps)
+# if torch.isnan(loss).item() | torch.isinf(loss).item():
+# print(f'GRUSequenceLoss-confidence NAN error, {loss}')
+# loss = 0 * torch.sum(confidence)
+# return loss
+
+# def forward(self, predictions_list, target, stereo_depth, confidence_list=None, mask=None, **kwargs):
+# device = target.device
+
+# batches_dataset = kwargs['dataset']
+# self.batch_with_stereo = torch.tensor([1 if batch_dataset in self.stereo_dataset else 0 \
+# for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+# n_predictions = len(predictions_list)
+# assert n_predictions >= 1
+# loss = 0.0
+
+# for i, prediction in enumerate(predictions_list):
+# # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+# adjusted_loss_gamma = self.loss_gamma**(15/(n_predictions - 1))
+# i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+
+# # depth L1 loss
+# if self.silog and mask.sum() > 0:
+# curr_loss = self.silog_loss(prediction, target, mask)
+# else:
+# diff = torch.abs(prediction - target) * mask
+# curr_loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+# if torch.isnan(curr_loss).item() | torch.isinf(curr_loss).item():
+# print(f'GRUSequenceLoss-depth NAN error, {curr_loss}')
+# curr_loss = 0 * torch.sum(prediction)
+
+# # confidence L1 loss
+# conf_loss = 0
+# if confidence_list is not None:
+# conf_loss = self.conf_loss(confidence_list[i], prediction, target, mask)
+
+# # stereo depth loss
+# mask_stereo = 1 + torch.nn.functional.max_pool2d(\
+# - torch.nn.functional.max_pool2d(mask * 1.0, 5, stride=1, padding=2, dilation=1), 5, stride=1, padding=2, dilation=1)
+
+# stereo_diff = torch.abs(prediction - stereo_depth) * mask_stereo
+# stereo_depth_loss = torch.sum(self.batch_with_stereo * stereo_diff * mask_stereo) / (torch.sum(mask_stereo) + self.eps)
+# stereo_depth_loss = self.stereo_sup * stereo_depth_loss
+
+# loss += (conf_loss + curr_loss + stereo_depth_loss) * i_weight
+# #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+# return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/Gradient.py b/finetune/Metric3D/training/mono/model/losses/Gradient.py
new file mode 100644
index 0000000000000000000000000000000000000000..1b730917acc4dde1b74000b40e2a2aceb81d2aed
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/Gradient.py
@@ -0,0 +1,121 @@
+import torch
+import torch.nn as nn
+
+EPSILON = 1e-6
+"""
+ # @Zhengqi Li version.
+ def GradientLoss(self, log_prediction_d, mask, log_gt):
+ log_d_diff = log_prediction_d - log_gt
+
+ v_gradient = torch.abs(log_d_diff[:, :-2, :] - log_d_diff[:, 2:, :])
+ v_mask = torch.mul(mask[:, :-2, :], mask[:, 2:, :])
+ v_gradient = torch.mul(v_gradient, v_mask)
+
+ h_gradient = torch.abs(log_d_diff[:, :, :-2] - log_d_diff[:, :, 2:])
+ h_mask = torch.mul(mask[:, :, :-2], mask[:, :, 2:])
+ h_gradient = torch.mul(h_gradient, h_mask)
+
+ N = torch.sum(h_mask) + torch.sum(v_mask) + EPSILON
+
+ gradient_loss = torch.sum(h_gradient) + torch.sum(v_gradient)
+ gradient_loss = gradient_loss / N
+
+ return gradient_loss
+"""
+def gradient_log_loss(log_prediction_d, log_gt, mask):
+ log_d_diff = log_prediction_d - log_gt
+
+ v_gradient = torch.abs(log_d_diff[:, :, :-2, :] - log_d_diff[:, :, 2:, :])
+ v_mask = torch.mul(mask[:, :, :-2, :], mask[:, :, 2:, :])
+ v_gradient = torch.mul(v_gradient, v_mask)
+
+ h_gradient = torch.abs(log_d_diff[:, :, :, :-2] - log_d_diff[:, :, :, 2:])
+ h_mask = torch.mul(mask[:, :, :, :-2], mask[:, :, :, 2:])
+ h_gradient = torch.mul(h_gradient, h_mask)
+
+ N = torch.sum(h_mask) + torch.sum(v_mask) + EPSILON
+
+ gradient_loss = torch.sum(h_gradient) + torch.sum(v_gradient)
+ gradient_loss = gradient_loss / N
+
+ return gradient_loss
+
+class GradientLoss_Li(nn.Module):
+ def __init__(self, scale_num=1, loss_weight=1, data_type = ['lidar', 'stereo'], **kwargs):
+ super(GradientLoss_Li, self).__init__()
+ self.__scales = scale_num
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, mask, **kwargs):
+ total = 0
+ target_trans = target + (~mask) * 100
+ pred_log = torch.log(prediction)
+ gt_log = torch.log(target_trans)
+ for scale in range(self.__scales):
+ step = pow(2, scale)
+
+ total += gradient_log_loss(pred_log[:, ::step, ::step], gt_log[:, ::step, ::step], mask[:, ::step, ::step])
+ loss = total / self.__scales
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'VNL error, {loss}')
+ return loss * self.loss_weight
+
+######################################################
+# Multi-scale gradient matching loss, @Ke Xian implementation.
+#####################################################
+def gradient_loss(prediction, target, mask):
+ M = torch.sum(mask, (1, 2))
+
+ diff = prediction - target
+ diff = torch.mul(mask, diff)
+
+ grad_x = torch.abs(diff[:, :, 1:] - diff[:, :, :-1])
+ mask_x = torch.mul(mask[:, :, 1:], mask[:, :, :-1])
+ grad_x = torch.mul(mask_x, grad_x)
+
+ grad_y = torch.abs(diff[:, 1:, :] - diff[:, :-1, :])
+ mask_y = torch.mul(mask[:, 1:, :], mask[:, :-1, :])
+ grad_y = torch.mul(mask_y, grad_y)
+
+ image_loss = torch.sum(grad_x, (1, 2)) + torch.sum(grad_y, (1, 2))
+ valid = M.nonzero()
+ if image_loss[valid].numel() > 0:
+ image_loss[valid] = image_loss[valid] / M[valid]
+ loss = torch.mean(image_loss)
+ else:
+ loss = 0 * torch.sum(prediction)
+
+ return loss
+
+
+class GradientLoss(nn.Module):
+ def __init__(self, scale_num=4, loss_weight=1, **kwargs):
+ super(GradientLoss, self).__init__()
+ self.__scales = scale_num
+ self.loss_weight = loss_weight
+ def forward(self, prediction, target, mask, **kwargs):
+ total = 0
+ for scale in range(self.__scales):
+ step = pow(2, scale)
+ total += gradient_loss(prediction[:, ::step, ::step], target[:, ::step, ::step], mask[:, ::step, ::step])
+
+ return total * self.loss_weight
+
+
+if __name__ == '__main__':
+ import numpy as np
+ gradient = GradientLoss_Li(4)
+
+ pred_depth = np.random.random([2, 1, 480, 640])
+ gt_depth = np.ones_like(pred_depth) * (-1) #np.random.random([2, 1, 480, 640]) - 0.5 #
+ #gt_depth = np.abs(gt_depth)
+ intrinsic = [[100, 100, 200, 200], [200, 200, 300, 300]]
+
+ pred = torch.from_numpy(pred_depth).cuda()
+ gt = torch.from_numpy(gt_depth).cuda()
+ mask = gt > 0
+
+ loss = gradient(gt, gt, mask)
+ print(loss)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/HDNL.py b/finetune/Metric3D/training/mono/model/losses/HDNL.py
new file mode 100644
index 0000000000000000000000000000000000000000..db2e95caf1f87e836581d41517e1db21935eda08
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/HDNL.py
@@ -0,0 +1,95 @@
+import torch
+import torch.nn as nn
+
+class HDNLoss(nn.Module):
+ """
+ Hieratical depth normalization loss.
+ loss = MAE((d-median(d)/s - (d'-median(d'))/s'), s = mean(d- median(d))
+ """
+ def __init__(self, loss_weight=1, grid=3, data_type=['sfm', 'stereo', 'lidar'], **kwargs):
+ super(HDNLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.grid = grid
+ self.data_type = data_type
+
+ def get_hierachy_masks(self, grid, depth_gt, mask_valid):
+
+ batch_map_grid = []
+ for mask_index in range(depth_gt.shape[0]):
+ depth_map = depth_gt[mask_index]
+ valid_map = mask_valid[mask_index]
+
+ # print (depth_map[valid_map].view(-1).shape)
+ if depth_map[valid_map].numel() == 0:
+ map_grid_list = [valid_map for _ in range(2 ** (grid) - 1)]
+ else:
+ valid_values = depth_map[valid_map]
+
+ max_d = valid_values.max()
+ min_d = valid_values.min()
+
+ anchor_power = [(1 / 2) ** (i) for i in range(grid)]
+ anchor_power.reverse()
+
+ map_grid_list = []
+ for anchor in anchor_power:
+ # range
+ for i in range(int(1 / anchor)):
+ mask_new = (depth_map >= min_d + (max_d - min_d) * i * anchor) & (
+ depth_map < min_d + (max_d - min_d) * (i + 1) * anchor+1e-30)
+ # print (f'[{i*anchor},{(i+1)*anchor}]')
+ mask_new = mask_new & valid_map
+ map_grid_list.append(mask_new)
+ map_grid_list = torch.stack(map_grid_list, dim=0)
+ batch_map_grid.append(map_grid_list)
+ batch_map_grid = torch.stack(batch_map_grid, dim=1)
+ return batch_map_grid
+
+ def ssi_mae(self, prediction, target, mask_valid):
+ B, C, H, W = target.shape
+ prediction_nan = prediction.clone()
+ target_nan = target.clone()
+ prediction_nan[~mask_valid] = float('nan')
+ target_nan[~mask_valid] = float('nan')
+
+ valid_pixs = mask_valid.reshape((B, C,-1)).sum(dim=2, keepdims=True) + 1e-10
+ valid_pixs = valid_pixs[:, :, :, None]
+
+ gt_median = target_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ gt_median[torch.isnan(gt_median)] = 0
+ gt_diff = (torch.abs(target - gt_median) * mask_valid).reshape((B, C, -1))
+ gt_s = gt_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ gt_trans = (target - gt_median) / (gt_s + 1e-8)
+
+ pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ pred_median[torch.isnan(pred_median)] = 0
+ pred_diff = (torch.abs(prediction - pred_median) * mask_valid).reshape((B, C, -1))
+ pred_s = pred_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ pred_trans = (prediction - pred_median) / (pred_s + 1e-8)
+
+ loss = torch.sum(torch.abs(gt_trans - pred_trans)*mask_valid) / (torch.sum(mask_valid) + 1e-8)
+ return pred_trans, gt_trans, loss
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ """
+ Calculate loss.
+ """
+ B, C, H, W = target.shape
+ hierachy_masks = self.get_hierachy_masks(self.grid, target, mask)
+ hierachy_masks_shape = hierachy_masks.reshape(-1, C, H, W)
+ prediction_hie = prediction.unsqueeze(0).repeat(hierachy_masks.shape[0], 1, 1, 1, 1).reshape(-1, C, H, W)
+
+ target_hie = target.unsqueeze(0).repeat(hierachy_masks.shape[0], 1, 1, 1, 1).reshape(-1, C, H, W)
+
+ #_, _, loss = self.ssi_mae(prediction, target, mask)
+ _, _, loss = self.ssi_mae(prediction_hie, target_hie, hierachy_masks_shape)
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ ssil = HDNLoss()
+ pred = torch.rand((2, 1, 256, 256)).cuda()
+ gt = torch.rand((2, 1, 256, 256)).cuda()#torch.zeros_like(pred).cuda() #
+ gt[:, :, 100:256, 0:100] = -1
+ mask = gt > 0
+ out = ssil(pred, gt, mask)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/HDNL_random.py b/finetune/Metric3D/training/mono/model/losses/HDNL_random.py
new file mode 100644
index 0000000000000000000000000000000000000000..d0b40eb0d0652ceb012ae89bf78db8f2d763720a
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/HDNL_random.py
@@ -0,0 +1,104 @@
+import torch
+import torch.nn as nn
+import numpy as np
+
+class HDNRandomLoss(nn.Module):
+ """
+ Hieratical depth normalization loss. Replace the original hieratical depth ranges with randomly sampled ranges.
+ loss = MAE((d-median(d)/s - (d'-median(d'))/s'), s = mean(d- median(d))
+ """
+ def __init__(self, loss_weight=1, random_num=32, data_type=['sfm', 'stereo', 'lidar', 'denselidar', 'denselidar_nometric', 'denselidar_syn'], norm_dataset=['Taskonomy', 'Matterport3D', 'Replica', 'Hypersim'], disable_dataset=['MapillaryPSD'], **kwargs):
+ super(HDNRandomLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.random_num = random_num
+ self.eps = 1e-6
+ self.data_type = data_type
+ self.disable_dataset = disable_dataset
+
+ def get_random_masks_for_batch(self, depth_gt: torch.Tensor, mask_valid: torch.Tensor)-> torch.Tensor:
+ valid_values = depth_gt[mask_valid]
+ max_d = valid_values.max().item() if valid_values.numel() > 0 else 0.0
+ min_d = valid_values.min().item() if valid_values.numel() > 0 else 0.0
+
+ sample_min_d = np.random.uniform(0, 0.75, self.random_num) * (max_d - min_d) + min_d
+ sample_max_d = np.random.uniform(sample_min_d + 0.1, 1-self.eps, self.random_num) * (max_d - min_d) + min_d
+
+ mask_new = [(depth_gt >= sample_min_d[i]) & (depth_gt < sample_max_d[i] + 1e-30) & mask_valid for i in range(self.random_num)]
+ mask_new = torch.stack(mask_new, dim=0).cuda() #[N, 1, H, W]
+ return mask_new
+
+ def ssi_mae(self, prediction, target, mask_valid):
+ B, C, H, W = target.shape
+ prediction_nan = prediction.clone().detach()
+ target_nan = target.clone()
+ prediction_nan[~mask_valid] = float('nan')
+ target_nan[~mask_valid] = float('nan')
+
+ valid_pixs = mask_valid.reshape((B, C,-1)).sum(dim=2, keepdims=True) + self.eps
+ valid_pixs = valid_pixs[:, :, :, None]
+
+ gt_median = target_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ gt_median[torch.isnan(gt_median)] = 0
+ gt_diff = (torch.abs(target - gt_median) * mask_valid).reshape((B, C, -1))
+ gt_s = gt_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ gt_trans = (target - gt_median) / (gt_s + self.eps)
+
+ pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ pred_median[torch.isnan(pred_median)] = 0
+ pred_diff = (torch.abs(prediction - pred_median) * mask_valid).reshape((B, C, -1))
+ pred_s = pred_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ pred_trans = (prediction - pred_median) / (pred_s + self.eps)
+
+ loss_sum = torch.sum(torch.abs(gt_trans - pred_trans)*mask_valid)
+ return loss_sum
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ """
+ Calculate loss.
+ """
+ B, C, H, W = target.shape
+
+ loss = 0.0
+ valid_pix = 0.0
+
+ device = target.device
+
+ batches_dataset = kwargs['dataset']
+ self.batch_valid = torch.tensor([1 if batch_dataset not in self.disable_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+ batch_limit = 4
+ loops = int(np.ceil(self.random_num / batch_limit))
+ for i in range(B):
+ mask_i = mask[i, ...] #[1, H, W]
+
+ if self.batch_valid[i, ...] < 0.5:
+ loss += 0 * torch.sum(prediction[i, ...])
+ valid_pix += 0 * torch.sum(mask_i)
+ continue
+
+ pred_i = prediction[i, ...].unsqueeze(0).repeat(batch_limit, 1, 1, 1)
+ target_i = target[i, ...].unsqueeze(0).repeat(batch_limit, 1, 1, 1)
+ mask_random_drange = self.get_random_masks_for_batch(target[i, ...], mask_i) # [N, 1, H, W]
+ for j in range(loops):
+ mask_random_loopi = mask_random_drange[j*batch_limit:(j+1)*batch_limit, ...]
+ loss += self.ssi_mae(
+ prediction=pred_i[:mask_random_loopi.shape[0], ...],
+ target=target_i[:mask_random_loopi.shape[0], ...],
+ mask_valid=mask_random_loopi)
+ valid_pix += torch.sum(mask_random_loopi)
+
+ loss = loss / (valid_pix + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'HDNL NAN error, {loss}, valid pix: {valid_pix}')
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ ssil = HDNRandomLoss()
+ pred = torch.rand((2, 1, 256, 256)).cuda()
+ gt = - torch.rand((2, 1, 256, 256)).cuda()#torch.zeros_like(pred).cuda() #
+ gt[:, :, 100:256, 0:100] = -1
+ mask = gt > 0
+ out = ssil(pred, gt, mask)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/HDSNL.py b/finetune/Metric3D/training/mono/model/losses/HDSNL.py
new file mode 100644
index 0000000000000000000000000000000000000000..250671b5ad52faf8f3d1e5bac41ad898ca3967a2
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/HDSNL.py
@@ -0,0 +1,82 @@
+import torch
+import torch.nn as nn
+
+class HDSNLoss(nn.Module):
+ """
+ Hieratical depth spatial normalization loss.
+ loss = MAE((d-median(d)/s - (d'-median(d'))/s'), s = mean(d- median(d))
+ """
+ def __init__(self, loss_weight=1.0, grid=3, data_type=['sfm', 'stereo', 'lidar'], **kwargs):
+ super(HDSNLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.grid = grid
+ self.data_type = data_type
+
+ def get_hierachy_masks(self, batch, image_size, mask):
+ height, width = image_size
+ anchor_power = [(1 / 2) ** (i) for i in range(self.grid)]
+ anchor_power.reverse()
+
+ map_grid_list = []
+ for anchor in anchor_power: # e.g. 1/8
+ for h in range(int(1 / anchor)):
+ for w in range(int(1 / anchor)):
+ mask_new = torch.zeros((batch, 1, height, width), dtype=torch.bool).cuda()
+ mask_new[:, :, int(h * anchor * height):int((h + 1) * anchor * height),
+ int(w * anchor * width):int((w + 1) * anchor * width)] = True
+ mask_new = mask & mask_new
+ map_grid_list.append(mask_new)
+ batch_map_grid=torch.stack(map_grid_list,dim=0) # [N, B, 1, H, W]
+
+ return batch_map_grid
+
+ def ssi_mae(self, prediction, target, mask_valid):
+ B, C, H, W = target.shape
+ prediction_nan = prediction.clone()
+ target_nan = target.clone()
+ prediction_nan[~mask_valid] = float('nan')
+ target_nan[~mask_valid] = float('nan')
+
+ valid_pixs = mask_valid.reshape((B, C,-1)).sum(dim=2, keepdims=True) + 1e-10
+ valid_pixs = valid_pixs[:, :, :, None]
+
+ gt_median = target_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ gt_median[torch.isnan(gt_median)] = 0
+ gt_diff = (torch.abs(target - gt_median) * mask_valid).reshape((B, C, -1))
+ gt_s = gt_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ gt_trans = (target - gt_median) / (gt_s + 1e-8)
+
+ pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ pred_median[torch.isnan(pred_median)] = 0
+ pred_diff = (torch.abs(prediction - pred_median) * mask_valid).reshape((B, C, -1))
+ pred_s = pred_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ pred_trans = (prediction - pred_median) / (pred_s + 1e-8)
+
+ loss = torch.sum(torch.abs(gt_trans - pred_trans)*mask_valid) / (torch.sum(mask_valid) + 1e-8)
+ return pred_trans, gt_trans, loss
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ """
+ Calculate loss.
+ """
+ B, C, H, W = target.shape
+ hierachy_masks = self.get_hierachy_masks(B, (H, W), mask) # [N, B, 1, H, W]
+ hierachy_masks_shape = hierachy_masks.reshape(-1, C, H, W)
+ prediction_hie = prediction.unsqueeze(0).repeat(hierachy_masks.shape[0], 1, 1, 1, 1).reshape(-1, C, H, W)
+
+ target_hie = target.unsqueeze(0).repeat(hierachy_masks.shape[0], 1, 1, 1, 1).reshape(-1, C, H, W)
+
+ #_, _, loss = self.ssi_mae(prediction, target, mask)
+ _, _, loss = self.ssi_mae(prediction_hie, target_hie, hierachy_masks_shape)
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ torch.manual_seed(1)
+ torch.cuda.manual_seed_all(1)
+ ssil = HDSNLoss()
+ pred = torch.rand((2, 1, 256, 256)).cuda()
+ gt = torch.rand((2, 1, 256, 256)).cuda()#torch.zeros_like(pred).cuda() #
+ gt[:, :, 100:256, 0:100] = -1
+ mask = gt > 0
+ out = ssil(pred, gt, mask)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/HDSNL_random.py b/finetune/Metric3D/training/mono/model/losses/HDSNL_random.py
new file mode 100644
index 0000000000000000000000000000000000000000..28dde298f3e3c44a1980cc513a2f8e191d5de2bb
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/HDSNL_random.py
@@ -0,0 +1,230 @@
+import torch
+import torch.nn as nn
+import numpy as np
+#from numba import jit
+
+class HDSNRandomLoss(nn.Module):
+ """
+ Hieratical depth spatial normalization loss.
+ Replace the original grid masks with the random created masks.
+ loss = MAE((d-median(d)/s - (d'-median(d'))/s'), s = mean(d- median(d))
+ """
+ def __init__(self, loss_weight=1.0, random_num=32, data_type=['sfm', 'stereo', 'lidar', 'denselidar', 'denselidar_nometric','denselidar_syn'], disable_dataset=['MapillaryPSD'], sky_id=142, batch_limit=8, **kwargs):
+ super(HDSNRandomLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.random_num = random_num
+ self.data_type = data_type
+ self.sky_id = sky_id
+ self.batch_limit = batch_limit
+ self.eps = 1e-6
+ self.disable_dataset = disable_dataset
+
+ def get_random_masks_for_batch(self, image_size: list)-> torch.Tensor:
+ height, width = image_size
+ crop_h_min = int(0.125 * height)
+ crop_h_max = int(0.5 * height)
+ crop_w_min = int(0.125 * width)
+ crop_w_max = int(0.5 * width)
+ h_max = height - crop_h_min
+ w_max = width - crop_w_min
+ crop_height = np.random.choice(np.arange(crop_h_min, crop_h_max), self.random_num, replace=False)
+ crop_width = np.random.choice(np.arange(crop_w_min, crop_w_max), self.random_num, replace=False)
+ crop_y = np.random.choice(h_max, self.random_num, replace=False)
+ crop_x = np.random.choice(w_max, self.random_num, replace=False)
+ crop_y_end = crop_height + crop_y
+ crop_y_end[crop_y_end>=height] = height
+ crop_x_end = crop_width + crop_x
+ crop_x_end[crop_x_end>=width] = width
+
+ mask_new = torch.zeros((self.random_num, height, width), dtype=torch.bool, device="cuda") #.cuda() #[N, H, W]
+ for i in range(self.random_num):
+ mask_new[i, crop_y[i]:crop_y_end[i], crop_x[i]:crop_x_end[i]] = True
+
+ return mask_new
+ #return crop_y, crop_y_end, crop_x, crop_x_end
+
+ def reorder_sem_masks(self, sem_label):
+ # reorder the semantic mask of a batch
+ assert sem_label.ndim == 3
+ semantic_ids = torch.unique(sem_label[(sem_label>0) & (sem_label != self.sky_id)])
+ sem_masks = [sem_label == id for id in semantic_ids]
+ if len(sem_masks) == 0:
+ # no valid semantic labels
+ out = sem_label > 0
+ return out
+
+ sem_masks = torch.cat(sem_masks, dim=0)
+ mask_batch = torch.sum(sem_masks.reshape(sem_masks.shape[0], -1), dim=1) > 500
+ sem_masks = sem_masks[mask_batch]
+ if sem_masks.shape[0] > self.random_num:
+ balance_samples = np.random.choice(sem_masks.shape[0], self.random_num, replace=False)
+ sem_masks = sem_masks[balance_samples, ...]
+
+ if sem_masks.shape[0] == 0:
+ # no valid semantic labels
+ out = sem_label > 0
+ return out
+
+ if sem_masks.ndim == 2:
+ sem_masks = sem_masks[None, :, :]
+ return sem_masks
+
+ def ssi_mae(self, prediction, target, mask_valid):
+ B, C, H, W = target.shape
+ prediction_nan = prediction.clone().detach()
+ target_nan = target.clone()
+ prediction_nan[~mask_valid] = float('nan')
+ target_nan[~mask_valid] = float('nan')
+
+ valid_pixs = mask_valid.reshape((B, C,-1)).sum(dim=2, keepdims=True) + 1e-10
+ valid_pixs = valid_pixs[:, :, :, None]
+
+ gt_median = target_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ gt_median[torch.isnan(gt_median)] = 0
+ gt_diff = (torch.abs(target - gt_median) ).reshape((B, C, -1))
+ gt_s = gt_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ gt_trans = (target - gt_median) / (gt_s + self.eps)
+
+ pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ pred_median[torch.isnan(pred_median)] = 0
+ pred_diff = (torch.abs(prediction - pred_median)).reshape((B, C, -1))
+ pred_s = pred_diff.sum(dim=2)[:, :, None, None] / valid_pixs
+ pred_trans = (prediction - pred_median) / (pred_s + self.eps)
+
+ loss_sum = torch.sum(torch.abs(gt_trans - pred_trans)*mask_valid)
+ return loss_sum
+
+ def conditional_ssi_mae(self, prediction, target, mask_valid):
+ B, C, H, W = target.shape
+ conditional_rank_ids = np.random.choice(B, B, replace=False)
+
+ prediction_nan = prediction.clone()
+ target_nan = target.clone()
+ prediction_nan[~mask_valid] = float('nan')
+ target_nan[~mask_valid] = float('nan')
+
+ valid_pixs = mask_valid.reshape((B, C,-1)).sum(dim=2, keepdims=True) + self.eps
+ valid_pixs = valid_pixs[:, :, :, None].contiguous()
+
+ gt_median = target_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ gt_median[torch.isnan(gt_median)] = 0
+ gt_diff = (torch.abs(target - gt_median) * mask_valid).reshape((B, C,-1))
+ gt_s = gt_diff.sum(dim=2)[:, :, None, None].contiguous() / valid_pixs
+
+ # in case some batches have no valid pixels
+ gt_s_small_mask = gt_s < (torch.mean(gt_s)*0.1)
+ gt_s[gt_s_small_mask] = torch.mean(gt_s)
+ gt_trans = (target - gt_median[conditional_rank_ids]) / (gt_s[conditional_rank_ids] + self.eps)
+
+ pred_median = prediction_nan.reshape((B, C,-1)).nanmedian(2, keepdims=True)[0].unsqueeze(-1) # [b,c,h,w]
+ pred_median[torch.isnan(pred_median)] = 0
+ pred_diff = (torch.abs(prediction - pred_median) * mask_valid).reshape((B, C,-1))
+ pred_s = pred_diff.sum(dim=2)[:, :, None, None].contiguous() / valid_pixs
+ pred_s[gt_s_small_mask] = torch.mean(pred_s)
+ pred_trans = (prediction - pred_median[conditional_rank_ids]) / (pred_s[conditional_rank_ids] + self.eps)
+
+ loss_sum = torch.sum(torch.abs(gt_trans - pred_trans)*mask_valid)
+ # print(torch.abs(gt_trans - pred_trans)[mask_valid])
+ return loss_sum
+
+
+ def forward(self, prediction, target, mask=None, sem_mask=None, **kwargs):
+ """
+ Calculate loss.
+ """
+ B, C, H, W = target.shape
+
+ loss = 0.0
+ valid_pix = 0.0
+
+ device = target.device
+
+ batches_dataset = kwargs['dataset']
+ self.batch_valid = torch.tensor([1 if batch_dataset not in self.disable_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+ batch_limit = self.batch_limit
+
+ random_sample_masks = self.get_random_masks_for_batch((H, W)) # [N, H, W]
+ for i in range(B):
+ # each batch
+ mask_i = mask[i, ...] #[1, H, W]
+ if self.batch_valid[i, ...] < 0.5:
+ loss += 0 * torch.sum(prediction[i, ...])
+ valid_pix += 0 * torch.sum(mask_i)
+ continue
+
+ pred_i = prediction[i, ...].unsqueeze(0).repeat(batch_limit, 1, 1, 1)
+ target_i = target[i, ...].unsqueeze(0).repeat(batch_limit, 1, 1, 1)
+
+ # get semantic masks
+ sem_label_i = sem_mask[i, ...] if sem_mask is not None else None
+ if sem_label_i is not None:
+ sem_masks = self.reorder_sem_masks(sem_label_i) # [N, H, W]
+ random_sem_masks = torch.cat([random_sample_masks, sem_masks], dim=0)
+ else:
+ random_sem_masks = random_sample_masks
+ #random_sem_masks = random_sample_masks
+
+
+ sampled_masks_num = random_sem_masks.shape[0]
+ loops = int(np.ceil(sampled_masks_num / batch_limit))
+ conditional_rank_ids = np.random.choice(sampled_masks_num, sampled_masks_num, replace=False)
+
+ for j in range(loops):
+ mask_random_sem_loopi = random_sem_masks[j*batch_limit:(j+1)*batch_limit, ...]
+ mask_sample = (mask_i & mask_random_sem_loopi).unsqueeze(1) # [N, 1, H, W]
+ loss += self.ssi_mae(
+ prediction=pred_i[:mask_sample.shape[0], ...],
+ target=target_i[:mask_sample.shape[0], ...],
+ mask_valid=mask_sample)
+ valid_pix += torch.sum(mask_sample)
+
+ # conditional ssi loss
+ # rerank_mask_random_sem_loopi = random_sem_masks[conditional_rank_ids, ...][j*batch_limit:(j+1)*batch_limit, ...]
+ # rerank_mask_sample = (mask_i & rerank_mask_random_sem_loopi).unsqueeze(1) # [N, 1, H, W]
+ # loss_cond = self.conditional_ssi_mae(
+ # prediction=pred_i[:rerank_mask_sample.shape[0], ...],
+ # target=target_i[:rerank_mask_sample.shape[0], ...],
+ # mask_valid=rerank_mask_sample)
+ # print(loss_cond / (torch.sum(rerank_mask_sample) + 1e-10), loss_cond, torch.sum(rerank_mask_sample))
+ # loss += loss_cond
+ # valid_pix += torch.sum(rerank_mask_sample)
+
+ # crop_y, crop_y_end, crop_x, crop_x_end = self.get_random_masks_for_batch((H, W)) # [N,]
+ # for j in range(B):
+ # for i in range(self.random_num):
+ # mask_crop = mask[j, :, crop_y[i]:crop_y_end[i], crop_x[i]:crop_x_end[i]][None, ...] #[1, 1, crop_h, crop_w]
+ # target_crop = target[j, :, crop_y[i]:crop_y_end[i], crop_x[i]:crop_x_end[i]][None, ...]
+ # pred_crop = prediction[j, :, crop_y[i]:crop_y_end[i], crop_x[i]:crop_x_end[i]][None, ...]
+ # loss += self.ssi_mae(prediction=pred_crop, target=target_crop, mask_valid=mask_crop)
+ # valid_pix += torch.sum(mask_crop)
+
+ # the whole image
+ mask = mask * self.batch_valid.bool()
+ loss += self.ssi_mae(
+ prediction=prediction,
+ target=target,
+ mask_valid=mask)
+ valid_pix += torch.sum(mask)
+ loss = loss / (valid_pix + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'HDSNL NAN error, {loss}, valid pix: {valid_pix}')
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ torch.manual_seed(1)
+ torch.cuda.manual_seed_all(1)
+ ssil = HDSNRandomLoss()
+ pred = torch.rand((8, 1, 256, 512)).cuda()
+ gt = torch.rand((8, 1, 256, 512)).cuda()#torch.zeros_like(pred).cuda() #
+ gt[1:, :, 100:256, 100:350] = -1
+ gt[:2, ...] = -1
+ mask = gt > 0
+ sem_mask = np.random.randint(-1, 200, (8, 1, 256, 512))
+ sem_mask[sem_mask>0] = -1
+ sem_mask_torch = torch.from_numpy(sem_mask).cuda()
+
+ out = ssil(pred, gt, mask, sem_mask_torch)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/L1.py b/finetune/Metric3D/training/mono/model/losses/L1.py
new file mode 100644
index 0000000000000000000000000000000000000000..9646e85f313432153cfd10ff746dd61817347be0
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/L1.py
@@ -0,0 +1,63 @@
+import torch
+import torch.nn as nn
+
+class L1Loss(nn.Module):
+ """
+ Compute L1 loss.
+ """
+ def __init__(self, loss_weight=1, data_type=['lidar', 'denselidar', 'stereo', 'denselidar_syn'], **kwargs):
+ super(L1Loss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ diff = torch.abs(prediction - target)* mask
+ loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'L1 NAN error, {loss}')
+ #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
+
+class L1DispLoss(nn.Module):
+ """
+ Compute L1 disparity loss of disparity.
+ """
+ def __init__(self, loss_weight=1, data_type=['lidar', 'denselidar', 'stereo', 'denselidar_syn'], **kwargs):
+ super(L1DispLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction_disp, inv_depth, mask=None, **kwargs):
+ # gt_disp_mask = ~torch.all(inv_depth == 0, dim=1, keepdim=True)
+ # if mask is None:
+ # mask = gt_disp_mask
+ diff = torch.abs(prediction_disp - inv_depth)* mask
+ loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction_disp)
+ #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
+
+class L1InverseLoss(nn.Module):
+ """
+ Compute L1 disparity loss of disparity.
+ """
+ def __init__(self, loss_weight=1, data_type=['lidar', 'denselidar', 'stereo'], **kwargs):
+ super(L1InverseLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, inv_depth, mask=None, **kwargs):
+ mask = torch.logical_and(mask, inv_depth>0)
+ inv_pred = 1.0 / prediction * 10.0
+ inv_pred[~mask] = -1
+ diff = torch.abs(inv_pred - inv_depth)* mask
+ loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(inv_pred)
+ #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/NormalBranchLoss.py b/finetune/Metric3D/training/mono/model/losses/NormalBranchLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4ecd2ec2ebb0ab10fc4305b80bb2e527b220c6d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/NormalBranchLoss.py
@@ -0,0 +1,732 @@
+import torch
+import torch.nn as nn
+import numpy as np
+import torch.nn.functional as F
+from .depth_to_normal import Depth2Normal
+
+# compute loss
+class NormalBranchLoss(nn.Module):
+ def __init__(self, loss_weight=1.0, data_type=['sfm', 'stereo', 'denselidar', 'denselidar_syn'], d2n_dataset=['ScanNetAll'], loss_fn='UG_NLL_ours', **kwargs):
+ """loss_fn can be one of following:
+ - L1 - L1 loss (no uncertainty)
+ - L2 - L2 loss (no uncertainty)
+ - AL - Angular loss (no uncertainty)
+ - NLL_vMF - NLL of vonMF distribution
+ - NLL_ours - NLL of Angular vonMF distribution
+ - UG_NLL_vMF - NLL of vonMF distribution (+ pixel-wise MLP + uncertainty-guided sampling)
+ - UG_NLL_ours - NLL of Angular vonMF distribution (+ pixel-wise MLP + uncertainty-guided sampling)
+ - NLL_ours_GRU - NLL of Angular vonMF distribution for GRU sequence
+ """
+ super(NormalBranchLoss, self).__init__()
+ self.loss_type = loss_fn
+ if self.loss_type in ['L1', 'L2', 'AL', 'NLL_vMF', 'NLL_ours']:
+ # self.loss_fn = self.forward_R
+ raise NotImplementedError
+ elif self.loss_type in ['UG_NLL_vMF']:
+ # self.loss_fn = self.forward_UG
+ raise NotImplementedError
+ elif self.loss_type in ['UG_NLL_ours']:
+ self.loss_fn = self.forward_UG
+ elif self.loss_type in ['NLL_ours_GRU', 'NLL_ours_GRU_auxi']:
+ self.loss_type = 'NLL_ours'
+ self.loss_fn = self.forward_GRU
+ self.loss_gamma = 0.9
+ try:
+ self.loss_weight_auxi = kwargs['loss_weight_auxi']
+ except:
+ self.loss_weight_auxi = 0.0
+ else:
+ raise Exception('invalid loss type')
+
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+
+ #self.d2n_dataset = d2n_dataset
+ #self.depth2normal = Depth2Normal()
+
+
+
+ def forward(self, **kwargs):
+ # device = kwargs['mask'].device
+ # B, _, H, W = kwargs['mask'].shape
+ # pad_mask = torch.zeros_like(kwargs['mask'], device=device)
+ # for b in range(B):
+ # pad = kwargs['pad'][b].squeeze()
+ # pad_mask[b, :, pad[0]:H-pad[1], pad[2]:W-pad[3]] = True
+
+ # loss = self.loss_fn(pad_mask=pad_mask, **kwargs)
+ loss = self.loss_fn(**kwargs)
+
+ return loss * self.loss_weight
+
+
+ def forward_GRU(self, normal_out_list, normal, target, mask, intrinsic, pad_mask=None, auxi_normal=None, **kwargs):
+ n_predictions = len(normal_out_list)
+ assert n_predictions >= 1
+ loss = 0.0
+
+ # device = pad_mask.device
+ # batches_dataset = kwargs['dataset']
+ # self.batch_with_d2n = torch.tensor([0 if batch_dataset not in self.d2n_dataset else 1 \
+ # for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+ # scale = kwargs['scale'][:, None, None].float()
+ # normal_d2n, new_mask_d2n = self.depth2normal(target, intrinsic, pad_mask, scale)
+
+ gt_normal_mask = ~torch.all(normal == 0, dim=1, keepdim=True) & mask
+
+ if auxi_normal != None:
+ auxi_normal_mask = ~gt_normal_mask
+
+ #normal = normal * (1 - self.batch_with_d2n) + normal_d2n * self.batch_with_d2n
+ # gt_normal_mask = gt_normal_mask * (1 - self.batch_with_d2n) + mask * new_mask_d2n * self.batch_with_d2n
+
+ if gt_normal_mask.sum() < 10:
+ if auxi_normal == None:
+ for norm_out in normal_out_list:
+ loss += norm_out.sum() * 0
+ return loss
+
+ for i, norm_out in enumerate(normal_out_list):
+ # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+ adjusted_loss_gamma = self.loss_gamma**(15/(n_predictions - 1))
+ i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+
+ curr_loss = self.forward_R(norm_out.clone(), normal, gt_normal_mask)
+ if auxi_normal != None:
+ auxi_loss = self.forward_R(norm_out.clone(), auxi_normal[:, :3], auxi_normal_mask)
+ curr_loss = curr_loss + self.loss_weight_auxi * auxi_loss
+
+ if torch.isnan(curr_loss).item() | torch.isinf(curr_loss).item():
+ curr_loss = 0 * torch.sum(norm_out)
+ print(f'NormalBranchLoss forward_GRU NAN error, {curr_loss}')
+
+ loss += curr_loss * i_weight
+
+ return loss
+
+ def forward_R(self, norm_out, gt_norm, gt_norm_mask):
+ pred_norm, pred_kappa = norm_out[:, 0:3, :, :], norm_out[:, 3:, :, :]
+
+ if self.loss_type == 'L1':
+ l1 = torch.sum(torch.abs(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l1[gt_norm_mask])
+
+ elif self.loss_type == 'L2':
+ l2 = torch.sum(torch.square(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l2[gt_norm_mask])
+
+ elif self.loss_type == 'AL':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ al = torch.acos(dot[valid_mask])
+ loss = torch.mean(al)
+
+ elif self.loss_type == 'NLL_vMF':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ loss_pixelwise = - torch.log(kappa) \
+ - (kappa * (dot - 1)) \
+ + torch.log(1 - torch.exp(- 2 * kappa))
+ loss = torch.mean(loss_pixelwise)
+
+ elif self.loss_type == 'NLL_ours':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.5
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ loss_pixelwise = - torch.log(torch.square(kappa) + 1) \
+ + kappa * torch.acos(dot) \
+ + torch.log(1 + torch.exp(-kappa * np.pi))
+ loss = torch.mean(loss_pixelwise)
+
+ else:
+ raise Exception('invalid loss type')
+
+ return loss
+
+
+ def forward_UG(self, normal_pred_list, normal_coord_list, normal, mask, **kwargs):
+ gt_normal_mask = ~torch.all(normal == 0, dim=1, keepdim=True) & mask
+
+ # gt_norm = norms[0]
+ # gt_normal_mask = (gt_norm[:, 0:1, :, :] == 0) & (gt_norm[:, 1:2, :, :] == 0) & (gt_norm[:, 2:3, :, :] == 0)
+ # gt_normal_mask = ~gt_normal_mask
+ loss = 0.0
+
+ if gt_normal_mask[gt_normal_mask].numel() < 10:
+ for (pred, coord) in zip(normal_pred_list, normal_coord_list):
+ if pred is not None:
+ loss += pred.sum() * 0.
+ if coord is not None:
+ loss += coord.sum() * 0.
+ return loss
+
+
+ for (pred, coord) in zip(normal_pred_list, normal_coord_list):
+ if coord is None:
+ pred = F.interpolate(pred, size=[normal.size(2), normal.size(3)], mode='bilinear', align_corners=True)
+ pred_norm, pred_kappa = pred[:, 0:3, :, :], pred[:, 3:, :, :]
+
+ # if self.loss_type == 'UG_NLL_vMF':
+ # dot = torch.cosine_similarity(pred_norm, normal, dim=1)
+
+ # valid_mask = normal_mask[:, 0, :, :].float() \
+ # * (dot.detach() < 0.999).float() \
+ # * (dot.detach() > -0.999).float()
+ # valid_mask = valid_mask > 0.5
+
+ # # mask
+ # dot = dot[valid_mask]
+ # kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ # loss_pixelwise = - torch.log(kappa) \
+ # - (kappa * (dot - 1)) \
+ # + torch.log(1 - torch.exp(- 2 * kappa))
+ # loss = loss + torch.mean(loss_pixelwise)
+
+ if self.loss_type == 'UG_NLL_ours':
+ dot = torch.cosine_similarity(pred_norm, normal, dim=1)
+
+ valid_mask = gt_normal_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.5
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ loss_pixelwise = - torch.log(torch.square(kappa) + 1) \
+ + kappa * torch.acos(dot) \
+ + torch.log(1 + torch.exp(-kappa * np.pi))
+ loss = loss + torch.mean(loss_pixelwise)
+
+ else:
+ raise Exception
+
+ else:
+ # coord: B, 1, N, 2
+ # pred: B, 4, N
+ gt_norm_ = F.grid_sample(normal, coord, mode='nearest', align_corners=True) # (B, 3, 1, N)
+ gt_norm_mask_ = F.grid_sample(gt_normal_mask.float(), coord, mode='nearest', align_corners=True) # (B, 1, 1, N)
+ gt_norm_ = gt_norm_[:, :, 0, :] # (B, 3, N)
+ gt_norm_mask_ = gt_norm_mask_[:, :, 0, :] > 0.5 # (B, 1, N)
+
+ pred_norm, pred_kappa = pred[:, 0:3, :], pred[:, 3:, :]
+
+ # if self.loss_type == 'UG_NLL_vMF':
+ # dot = torch.cosine_similarity(pred_norm, gt_norm_, dim=1) # (B, N)
+
+ # valid_mask = gt_norm_mask_[:, 0, :].float() \
+ # * (dot.detach() < 0.999).float() \
+ # * (dot.detach() > -0.999).float()
+ # valid_mask = valid_mask > 0.5
+
+ # dot = dot[valid_mask]
+ # kappa = pred_kappa[:, 0, :][valid_mask]
+
+ # loss_pixelwise = - torch.log(kappa) \
+ # - (kappa * (dot - 1)) \
+ # + torch.log(1 - torch.exp(- 2 * kappa))
+ # loss = loss + torch.mean(loss_pixelwise)
+
+ if self.loss_type == 'UG_NLL_ours':
+ dot = torch.cosine_similarity(pred_norm, gt_norm_, dim=1) # (B, N)
+
+ valid_mask = gt_norm_mask_[:, 0, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.5
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :][valid_mask]
+
+ loss_pixelwise = - torch.log(torch.square(kappa) + 1) \
+ + kappa * torch.acos(dot) \
+ + torch.log(1 + torch.exp(-kappa * np.pi))
+ loss = loss + torch.mean(loss_pixelwise)
+
+ else:
+ raise Exception
+ return loss
+
+
+
+
+# confidence-guided sampling
+@torch.no_grad()
+def sample_points(init_normal, confidence_map, gt_norm_mask, sampling_ratio, beta=1):
+ device = init_normal.device
+ B, _, H, W = init_normal.shape
+ N = int(sampling_ratio * H * W)
+ beta = beta
+
+ # confidence map
+ # confidence_map = init_normal[:, 3, :, :] # B, H, W
+
+ # gt_invalid_mask (B, H, W)
+ if gt_norm_mask is not None:
+ gt_invalid_mask = F.interpolate(gt_norm_mask.float(), size=[H, W], mode='nearest')
+ gt_invalid_mask = gt_invalid_mask < 0.5
+ confidence_map[gt_invalid_mask] = -1e4
+
+ # (B, H*W)
+ _, idx = confidence_map.view(B, -1).sort(1, descending=True)
+
+ # confidence sampling
+ if int(beta * N) > 0:
+ importance = idx[:, :int(beta * N)] # B, beta*N
+
+ # remaining
+ remaining = idx[:, int(beta * N):] # B, H*W - beta*N
+
+ # coverage
+ num_coverage = N - int(beta * N)
+
+ if num_coverage <= 0:
+ samples = importance
+ else:
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = torch.cat((importance, coverage), dim=1) # B, N
+
+ else:
+ # remaining
+ remaining = idx[:, :] # B, H*W
+
+ # coverage
+ num_coverage = N
+
+ coverage_list = []
+ for i in range(B):
+ idx_c = torch.randperm(remaining.size()[1]) # shuffles "H*W - beta*N"
+ coverage_list.append(remaining[i, :][idx_c[:num_coverage]].view(1, -1)) # 1, N-beta*N
+ coverage = torch.cat(coverage_list, dim=0) # B, N-beta*N
+ samples = coverage
+
+ # point coordinates
+ rows_int = samples // W # 0 for first row, H-1 for last row
+ # rows_float = rows_int / float(H-1) # 0 to 1.0
+ # rows_float = (rows_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ cols_int = samples % W # 0 for first column, W-1 for last column
+ # cols_float = cols_int / float(W-1) # 0 to 1.0
+ # cols_float = (cols_float * 2.0) - 1.0 # -1.0 to 1.0
+
+ # point_coords = torch.zeros(B, 1, N, 2)
+ # point_coords[:, 0, :, 0] = cols_float # x coord
+ # point_coords[:, 0, :, 1] = rows_float # y coord
+ # point_coords = point_coords.to(device)
+ # return point_coords, rows_int, cols_int
+
+ sample_mask = torch.zeros((B,1,H,W), dtype=torch.bool, device=device)
+ for i in range(B):
+ sample_mask[i, :, rows_int[i,:], cols_int[i,:]] = True
+ return sample_mask
+
+# depth-normal consistency loss
+class DeNoConsistencyLoss(nn.Module):
+ def __init__(self, loss_weight=1.0, data_type=['stereo', 'lidar', 'denselidar', 'denselidar_nometric', 'denselidar_syn'], loss_fn='NLL_ours', \
+ sky_id=142, scale=1, norm_dataset=['Taskonomy', 'Matterport3D', 'Replica', 'Hypersim', 'NYU'], no_sky_dataset=['BigData', 'DIODE', 'Completion', 'Matterport3D'], disable_dataset=[], depth_detach=False, **kwargs):
+ """loss_fn can be one of following:
+ - L1 - L1 loss (no uncertainty)
+ - L2 - L2 loss (no uncertainty)
+ - AL - Angular loss (no uncertainty)
+ - NLL_vMF - NLL of vonMF distribution
+ - NLL_ours - NLL of Angular vonMF distribution
+ - UG_NLL_vMF - NLL of vonMF distribution (+ pixel-wise MLP + uncertainty-guided sampling)
+ - UG_NLL_ours - NLL of Angular vonMF distribution (+ pixel-wise MLP + uncertainty-guided sampling)
+ - NLL_ours_GRU - NLL of Angular vonMF distribution for GRU sequence
+ - CEL - cosine embedding loss
+ - CEL_GRU
+ """
+ super(DeNoConsistencyLoss, self).__init__()
+ self.loss_type = loss_fn
+ if self.loss_type in ['L1', 'L2', 'NLL_vMF']:
+ # self.loss_fn = self.forward_R
+ raise NotImplementedError
+ elif self.loss_type in ['UG_NLL_vMF']:
+ # self.loss_fn = self.forward_UG
+ raise NotImplementedError
+ elif self.loss_type in ['UG_NLL_ours']:
+ # self.loss_fn = self.forward_UG
+ raise NotImplementedError
+ elif self.loss_type in ['NLL_ours']:
+ self.loss_fn = self.forward_J # confidence Joint optimization
+ self.loss_gamma = 0.9
+ elif self.loss_type in ['AL', 'CEL', 'CEL_L2']:
+ self.loss_fn = self.forward_S # confidence Sample
+ elif self.loss_type in ['CEL_GRU']:
+ self.loss_fn = self.forward_S_GRU # gru
+ self.loss_gamma = 0.9
+ elif 'Search' in self.loss_type:
+ self.loss_fn = self.forward_S_Search
+ else:
+ raise Exception('invalid loss type')
+
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.sky_id = sky_id
+
+ # For datasets without surface normal gt, enhance its weight (decrease the weight of the dataset with gt).
+ self.nonorm_data_scale = scale
+ self.norm_dataset = norm_dataset
+ self.no_sky_dataset = no_sky_dataset
+ self.disable_dataset = disable_dataset
+
+ self.depth_detach = depth_detach
+ self.depth2normal = Depth2Normal()
+
+ def forward(self, **kwargs):
+ device = kwargs['mask'].device
+
+ batches_dataset = kwargs['dataset']
+ self.batch_with_norm = torch.tensor([self.nonorm_data_scale if batch_dataset not in self.norm_dataset else 1 \
+ for batch_dataset in batches_dataset], device=device)[:,None,None,None]
+
+ self.batch_enabled= torch.tensor([1 if batch_dataset not in self.disable_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device, dtype=torch.bool)[:,None,None,None]
+ self.batch_with_norm = self.batch_with_norm * self.batch_enabled
+
+
+ self.batch_with_norm_sky = torch.tensor([1 if batch_dataset not in self.no_sky_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device, dtype=torch.bool)[:,None,None,None]
+
+ B, _, H, W = kwargs['mask'].shape
+ pad_mask = torch.zeros_like(kwargs['mask'], device=device)
+ for b in range(B):
+ pad = kwargs['pad'][b].squeeze()
+ pad_mask[b, :, pad[0]:H-pad[1], pad[2]:W-pad[3]] = True
+
+ loss = self.loss_fn(pad_mask=pad_mask, **kwargs)
+ return loss * self.loss_weight
+
+
+ def forward_J(self, prediction, confidence, normal_out_list, intrinsic, pad_mask, sem_mask=None, **kwargs):
+ prediction_normal = normal_out_list[-1].clone()
+
+ # get normal from depth-prediction
+ normal, new_mask = self.depth2normal(prediction.detach() if self.depth_detach else prediction, intrinsic, pad_mask)
+ # mask sky
+ sky_mask = sem_mask != self.sky_id
+ new_mask = new_mask & sky_mask
+ # normal = normal * (~sky_mask)
+ # normal[:,1:2,:,:][sky_mask] = 1
+ # confidence sampling (sample good depth -> good normal -> to )
+ sample_mask_d = sample_points(prediction, confidence, new_mask, sampling_ratio=0.7)
+
+ # all mask
+ normal_mask = ~torch.all(normal == 0, dim=1, keepdim=True) & new_mask & sample_mask_d
+ if normal_mask.sum() < 10:
+ return 0 * prediction_normal.sum()
+
+ loss = self.forward_R(prediction_normal, normal, normal_mask)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction_normal)
+ print(f'NormalBranchLoss forward_GRU NAN error, {loss}')
+
+ return loss
+
+ #def forward_S(self, prediction, confidence, normal_out_list, intrinsic, pad_mask, sem_mask=None, **kwargs):
+ def forward_S(self, prediction, confidence, intrinsic, pad_mask, normal_pred=None, sem_mask=None, target=None, is_initial_pair=False, **kwargs):
+
+ if normal_pred is None:
+ prediction_normal = kwargs['normal_out_list'][-1]
+ else:
+ prediction_normal = normal_pred
+
+ # get normal from depth-prediction
+ #try:
+ scale = kwargs['scale'][:, None, None].float()
+ #except:
+ #scale = 1.0
+ normal, new_mask = self.depth2normal(prediction.detach() if self.depth_detach else prediction, intrinsic, pad_mask, scale)
+
+ sky_mask = sem_mask != self.sky_id
+ if target != None:
+ sampling_ratio = 0.7
+ target_mask = (target > 0)
+ if is_initial_pair == False:
+ pass
+ # mask sky
+ else:
+ sky_mask = torch.nn.functional.interpolate(sky_mask.float(), scale_factor=0.25).bool()
+ target_mask = torch.nn.functional.interpolate(target_mask.float(), scale_factor=0.25).bool()
+ new_mask = new_mask & ((sky_mask & self.batch_with_norm_sky) | target_mask)
+ else:
+ new_mask = torch.ones_like(prediction).bool()
+ sampling_ratio = 0.5
+
+ # normal = normal * (~sky_mask)
+ # normal[:,1:2,:,:][sky_mask] = 1
+
+ # dual sampling
+ confidence_normal = prediction_normal[:, 3:, :, :]
+ sample_mask_n = sample_points(prediction_normal, confidence_normal, new_mask, sampling_ratio=sampling_ratio)
+ sample_mask_d = sample_points(prediction, confidence, new_mask, sampling_ratio=sampling_ratio)
+ conf_mask = confidence > 0.5
+
+ # all mask
+ normal_mask = ~torch.all(normal == 0, dim=1, keepdim=True) & new_mask & sample_mask_n & sample_mask_d & conf_mask
+ if normal_mask.sum() < 10:
+ return 0 * prediction_normal.sum()
+
+ loss = self.forward_R(prediction_normal, normal, normal_mask)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction_normal)
+ print(f'NormalBranchLoss forward_GRU NAN error, {loss}')
+
+ return loss
+
+ def forward_S_GRU(self, predictions_list, confidence_list, normal_out_list, intrinsic, pad_mask, sem_mask, target, low_resolution_init, **kwargs):
+ n_predictions = len(normal_out_list)
+ assert n_predictions >= 1
+ loss = 0.0
+
+ for i, (norm, conf, depth) in enumerate(zip(normal_out_list, confidence_list, predictions_list)):
+ # We adjust the loss_gamma so it is consistent for any number of RAFT-Stereo iterations
+ adjusted_loss_gamma = self.loss_gamma**(15/(n_predictions - 1))
+ i_weight = adjusted_loss_gamma**(n_predictions - i - 1)
+
+ if i == 0:
+ is_initial_pair = True
+ new_intrinsic = torch.cat((intrinsic[:, :2, :]/4, intrinsic[:, 2:3, :]), dim=1)
+ curr_loss = self.forward_S(low_resolution_init[0], low_resolution_init[1], new_intrinsic, torch.nn.functional.interpolate(pad_mask.float(), scale_factor=0.25).bool(), low_resolution_init[2], sem_mask, target, is_initial_pair, scale=kwargs['scale'])
+ else:
+ is_initial_pair = False
+ curr_loss = self.forward_S(depth, conf, intrinsic, pad_mask, norm, sem_mask, target, is_initial_pair, scale=kwargs['scale'])
+
+ if torch.isnan(curr_loss).item() | torch.isinf(curr_loss).item():
+ curr_loss = 0 * torch.sum(norm)
+ print(f'NormalBranchLoss forward_GRU NAN error, {curr_loss}')
+
+ loss += curr_loss * i_weight
+
+ return loss
+
+
+ def forward_R(self, norm_out, gt_norm, gt_norm_mask, pred_kappa=None):
+ pred_norm = norm_out[:, 0:3, :, :]
+ if pred_kappa is None:
+ pred_kappa = norm_out[:, 3:, :, :]
+
+ if self.loss_type == 'L1':
+ l1 = torch.sum(torch.abs(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l1[gt_norm_mask])
+
+ elif self.loss_type == 'L2' or self.loss_type == 'CEL_L2':
+ l2 = torch.sum(torch.square(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l2[gt_norm_mask])
+
+ elif self.loss_type == 'AL':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ al = torch.acos(dot * valid_mask)
+ al = al * self.batch_with_norm[:, 0, :, :]
+ loss = torch.mean(al)
+
+ elif self.loss_type == 'CEL' or self.loss_type == 'CEL_GRU':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ al = 1 - dot * valid_mask
+ al = al * self.batch_with_norm[:, 0, :, :]
+ loss = torch.mean(al)
+
+ elif self.loss_type == 'NLL_vMF':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ loss_pixelwise = - torch.log(kappa) \
+ - (kappa * (dot - 1)) \
+ + torch.log(1 - torch.exp(- 2 * kappa))
+ loss = torch.mean(loss_pixelwise)
+
+ elif self.loss_type == 'NLL_ours':
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.5
+
+ dot = dot * valid_mask
+ kappa = pred_kappa[:, 0, :, :] * valid_mask
+
+ loss_pixelwise = - torch.log(torch.square(kappa) + 1) \
+ + kappa * torch.acos(dot) \
+ + torch.log(1 + torch.exp(-kappa * np.pi))
+ loss_pixelwise = loss_pixelwise * self.batch_with_norm[:, 0, :, :]
+ loss = torch.mean(loss_pixelwise)
+
+ else:
+ raise Exception('invalid loss type')
+
+ return loss
+
+ def forward_S_Search(self, prediction, confidence, intrinsic, pad_mask, normal_pred=None, sem_mask=None, target=None, is_initial_pair=False, **kwargs):
+
+ if normal_pred is None:
+ prediction_normal = kwargs['normal_out_list'][-1]
+ else:
+ prediction_normal = normal_pred
+
+ # get normal from depth-prediction
+ scale = kwargs['scale'][:, None, None].float()
+ candidate_scale = kwargs['candidate_scale'][:, None, None, None].float()
+ normal, new_mask = self.depth2normal(prediction.detach() if self.depth_detach else prediction, intrinsic, pad_mask, scale)
+
+ sky_mask = sem_mask != self.sky_id
+ if target != None:
+ sampling_ratio = 0.7
+ target_mask = (target > 0)
+ if is_initial_pair == False:
+ pass
+ # mask sky
+ else:
+ sky_mask = torch.nn.functional.interpolate(sky_mask.float(), scale_factor=0.25).bool()
+ target_mask = torch.nn.functional.interpolate(target_mask.float(), scale_factor=0.25).bool()
+ new_mask = new_mask & ((sky_mask & self.batch_with_norm_sky) | target_mask)
+ else:
+ new_mask = torch.ones_like(prediction).bool()
+ sampling_ratio = 0.5
+
+ # normal = normal * (~sky_mask)
+ # normal[:,1:2,:,:][sky_mask] = 1
+
+ # dual sampling
+ confidence_normal = prediction_normal[:, 3:, :, :]
+ sample_mask_n = sample_points(prediction_normal, confidence_normal, new_mask, sampling_ratio=sampling_ratio)
+ sample_mask_d = sample_points(prediction, confidence, new_mask, sampling_ratio=sampling_ratio)
+ conf_mask = confidence > 0.5
+
+ # all mask
+ normal_mask = ~torch.all(normal == 0, dim=1, keepdim=True) & new_mask & sample_mask_n & sample_mask_d & conf_mask
+ if normal_mask.sum() < 10:
+ return 0 * prediction_normal.sum()
+
+ prediction_normal = torch.cat((prediction_normal[:,:2]*torch.ones_like(candidate_scale), prediction_normal[:,2:3]*candidate_scale, prediction_normal[:,3:4]*torch.ones_like(candidate_scale)), dim=1)
+
+ norm_x = prediction_normal[:,0:1]
+ norm_y = prediction_normal[:,1:2]
+ norm_z = prediction_normal[:,2:3]
+
+ prediction_normal[:,:3] = prediction_normal[:,:3] / (torch.sqrt(norm_x ** 2.0 + norm_y ** 2.0 + norm_z ** 2.0) + 1e-10)
+
+ loss = self.forward_R_Search(prediction_normal, normal, normal_mask)
+ #if torch.isnan(loss).item() | torch.isinf(loss).item():
+ #loss = 0 * torch.sum(prediction_normal)
+ #print(f'NormalBranchLoss forward_GRU NAN error, {loss}')
+
+ return loss
+
+
+ def forward_R_Search(self, norm_out, gt_norm, gt_norm_mask, pred_kappa=None):
+ pred_norm = norm_out[:, 0:3, :, :]
+ if pred_kappa is None:
+ pred_kappa = norm_out[:, 3:, :, :]
+
+ if 'L1' in self.loss_type:
+ l1 = torch.sum(torch.abs(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l1*gt_norm_mask, dim=[1, 2, 3])
+
+ elif 'L2' in self.loss_type:
+ l2 = torch.sum(torch.square(gt_norm - pred_norm), dim=1, keepdim=True)
+ loss = torch.mean(l2*gt_norm_mask, dim=[1, 2, 3])
+
+ elif 'AL' in self.loss_type:
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ al = torch.acos(dot * valid_mask)
+ loss = torch.mean(al, dim=[1, 2])
+
+ elif 'CEL' in self.loss_type:
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ al = 1 - dot * valid_mask
+ loss = torch.mean(al, dim=[1, 2])
+
+ elif 'NLL_vMF' in self.loss_type:
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.0
+
+ dot = dot[valid_mask]
+ kappa = pred_kappa[:, 0, :, :][valid_mask]
+
+ loss_pixelwise = - torch.log(kappa) \
+ - (kappa * (dot - 1)) \
+ + torch.log(1 - torch.exp(- 2 * kappa))
+ loss = torch.mean(loss_pixelwise, dim=[1, 2])
+
+ elif 'NLL_ours' in self.loss_type:
+ dot = torch.cosine_similarity(pred_norm, gt_norm, dim=1)
+
+ valid_mask = gt_norm_mask[:, 0, :, :].float() \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+ valid_mask = valid_mask > 0.5
+
+ dot = dot * valid_mask
+ kappa = pred_kappa[:, 0, :, :] * valid_mask
+
+ loss_pixelwise = - torch.log(torch.square(kappa) + 1) \
+ + kappa * torch.acos(dot) \
+ + torch.log(1 + torch.exp(-kappa * np.pi))
+ loss = torch.mean(loss_pixelwise, dim=[1, 2])
+
+ else:
+ raise Exception('invalid loss type')
+
+ return loss
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/NormalRegression.py b/finetune/Metric3D/training/mono/model/losses/NormalRegression.py
new file mode 100644
index 0000000000000000000000000000000000000000..00b7169de6f6c5753224d0cdd6ad57d5397505a6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/NormalRegression.py
@@ -0,0 +1,418 @@
+import torch
+from torch import nn
+import numpy as np
+import torch.nn.functional as F
+from .depth_to_normal import Depth2Normal
+"""
+Sampling strategies: RS (Random Sampling), EGS (Edge-Guided Sampling), and IGS (Instance-Guided Sampling)
+"""
+###########
+# RANDOM SAMPLING
+# input:
+# inputs[i,:], targets[i, :], masks[i, :], self.mask_value, self.point_pairs
+# return:
+# inputs_A, inputs_B, targets_A, targets_B, consistent_masks_A, consistent_masks_B
+###########
+def randomSamplingNormal(inputs, targets, masks, sample_num):
+
+ # find A-B point pairs from prediction
+ num_effect_pixels = torch.sum(masks)
+ shuffle_effect_pixels = torch.randperm(num_effect_pixels, device="cuda")
+ valid_inputs = inputs[:, masks]
+ valid_targes = targets[:, masks]
+ inputs_A = valid_inputs[:, shuffle_effect_pixels[0 : sample_num * 2 : 2]]
+ inputs_B = valid_inputs[:, shuffle_effect_pixels[1 : sample_num * 2 : 2]]
+ # find corresponding pairs from GT
+ targets_A = valid_targes[:, shuffle_effect_pixels[0 : sample_num * 2 : 2]]
+ targets_B = valid_targes[:, shuffle_effect_pixels[1 : sample_num * 2 : 2]]
+ if inputs_A.shape[1] != inputs_B.shape[1]:
+ num_min = min(targets_A.shape[1], targets_B.shape[1])
+ inputs_A = inputs_A[:, :num_min]
+ inputs_B = inputs_B[:, :num_min]
+ targets_A = targets_A[:, :num_min]
+ targets_B = targets_B[:, :num_min]
+ return inputs_A, inputs_B, targets_A, targets_B
+
+
+###########
+# EDGE-GUIDED SAMPLING
+# input:
+# inputs[i,:], targets[i, :], masks[i, :], edges_img[i], thetas_img[i], masks[i, :], h, w
+# return:
+# inputs_A, inputs_B, targets_A, targets_B, masks_A, masks_B
+###########
+def ind2sub(idx, cols):
+ r = torch.div(idx, cols, rounding_mode='floor')
+ c = idx - r * cols
+ return r, c
+
+
+def sub2ind(r, c, cols):
+ idx = r * cols + c
+ return idx
+
+
+def edgeGuidedSampling(inputs, targets, edges_img, thetas_img, masks, h, w):
+ # find edges
+ edges_max = edges_img.max()
+ edges_min = edges_img.min()
+ edges_mask = edges_img.ge(edges_max * 0.1)
+ edges_loc = edges_mask.nonzero(as_tuple=False)
+
+ thetas_edge = torch.masked_select(thetas_img, edges_mask)
+ minlen = thetas_edge.size()[0]
+
+ # find anchor points (i.e, edge points)
+ sample_num = minlen
+ index_anchors = torch.randint(0, minlen, (sample_num,), dtype=torch.long, device="cuda")
+ theta_anchors = torch.gather(thetas_edge, 0, index_anchors)
+ row_anchors, col_anchors = ind2sub(edges_loc[index_anchors].squeeze(1), w)
+ ## compute the coordinates of 4-points, distances are from [2, 30]
+ distance_matrix = torch.randint(3, 20, (4, sample_num), device="cuda")
+ pos_or_neg = torch.ones(4, sample_num, device="cuda")
+ pos_or_neg[:2, :] = -pos_or_neg[:2, :]
+ distance_matrix = distance_matrix.float() * pos_or_neg
+ col = (
+ col_anchors.unsqueeze(0).expand(4, sample_num).long()
+ + torch.round(
+ distance_matrix.float() * torch.abs(torch.cos(theta_anchors)).unsqueeze(0)
+ ).long()
+ )
+ row = (
+ row_anchors.unsqueeze(0).expand(4, sample_num).long()
+ + torch.round(
+ distance_matrix.float() * torch.abs(torch.sin(theta_anchors)).unsqueeze(0)
+ ).long()
+ )
+
+ # constrain 0= w - 1] = w - 1
+ row[row < 0] = 0
+ row[row > h - 1] = h - 1
+
+ # a-b, b-c, c-d
+ a = sub2ind(row[0, :], col[0, :], w)
+ b = sub2ind(row[1, :], col[1, :], w)
+ c = sub2ind(row[2, :], col[2, :], w)
+ d = sub2ind(row[3, :], col[3, :], w)
+ A = torch.cat((a, b, c), 0)
+ B = torch.cat((b, c, d), 0)
+
+
+
+ inputs_A = inputs[:, A]
+ inputs_B = inputs[:, B]
+ targets_A = targets[:, A]
+ targets_B = targets[:, B]
+ masks_A = torch.gather(masks, 0, A.long())
+ masks_B = torch.gather(masks, 0, B.long())
+
+ # create A, B, C, D mask for visualization
+ # vis_mask = masks.reshape(h, w).cpu().numpy()
+ # vis_row = row.cpu()
+ # vis_col = col.cpu()
+ # visual_A = np.zeros((h, w)).astype(np.bool)
+ # visual_B = np.zeros_like(visual_A)
+ # visual_C = np.zeros_like(visual_A)
+ # visual_D = np.zeros_like(visual_A)
+ # visual_A[vis_row[0, :], vis_col[0, :]] = True
+ # visual_B[vis_row[1, :], vis_col[1, :]] = True
+ # visual_C[vis_row[2, :], vis_col[2, :]] = True
+ # visual_D[vis_row[3, :], vis_col[3, :]] = True
+ # visual_ABCD = [visual_A & vis_mask, visual_B & vis_mask,
+ # visual_C& vis_mask, visual_D& vis_mask]
+ return (
+ inputs_A,
+ inputs_B,
+ targets_A,
+ targets_B,
+ masks_A,
+ masks_B,
+ sample_num,
+ row,
+ col,
+ )
+
+
+######################################################
+# EdgeguidedNormalRankingLoss
+#####################################################
+class EdgeguidedNormalLoss(nn.Module):
+ def __init__(
+ self,
+ point_pairs=10000,
+ cos_theta1=0.25,
+ cos_theta2=0.98,
+ cos_theta3=0.5,
+ cos_theta4=0.86,
+ mask_value=1e-8,
+ loss_weight=1.0,
+ data_type=['stereo', 'denselidar', 'denselidar_nometric','denselidar_syn'],
+ **kwargs
+ ):
+ super(EdgeguidedNormalLoss, self).__init__()
+ self.point_pairs = point_pairs # number of point pairs
+ self.mask_value = mask_value
+ self.cos_theta1 = cos_theta1 # 75 degree
+ self.cos_theta2 = cos_theta2 # 10 degree
+ self.cos_theta3 = cos_theta3 # 60 degree
+ self.cos_theta4 = cos_theta4 # 30 degree
+ # self.kernel = torch.tensor(
+ # np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], dtype=np.float32),
+ # requires_grad=False,
+ # )[None, None, :, :].cuda()
+ self.depth2normal = Depth2Normal()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+
+ def getEdge(self, images):
+ n, c, h, w = images.size()
+ a = (
+ torch.tensor([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], dtype=torch.float32, device="cuda")
+ .contiguous()
+ .view((1, 1, 3, 3))
+ .repeat(1, 1, 1, 1)
+ )
+ b = (
+ torch.tensor([[1, 2, 1], [0, 0, 0], [-1, -2, -1]], dtype=torch.float32, device="cuda")
+ .contiguous()
+ .view((1, 1, 3, 3))
+ .repeat(1, 1, 1, 1)
+ )
+ if c == 3:
+ gradient_x = F.conv2d(images[:, 0, :, :].unsqueeze(1), a)
+ gradient_y = F.conv2d(images[:, 0, :, :].unsqueeze(1), b)
+ else:
+ gradient_x = F.conv2d(images, a)
+ gradient_y = F.conv2d(images, b)
+ edges = torch.sqrt(torch.pow(gradient_x, 2) + torch.pow(gradient_y, 2))
+ edges = F.pad(edges, (1, 1, 1, 1), "constant", 0)
+ thetas = torch.atan2(gradient_y, gradient_x)
+ thetas = F.pad(thetas, (1, 1, 1, 1), "constant", 0)
+ return edges, thetas
+
+ def getNormalEdge(self, normals):
+ n, c, h, w = normals.size()
+ a = (
+ torch.Tensor([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], dtype=torch.float32, device="cuda")
+ .contiguous()
+ .view((1, 1, 3, 3))
+ .repeat(3, 1, 1, 1)
+ )
+ b = (
+ torch.Tensor([[1, 2, 1], [0, 0, 0], [-1, -2, -1]], dtype=torch.float32, device="cuda")
+ .contiguous()
+ .view((1, 1, 3, 3))
+ .repeat(3, 1, 1, 1)
+ )
+ gradient_x = torch.abs(F.conv2d(normals, a, groups=c))
+ gradient_y = torch.abs(F.conv2d(normals, b, groups=c))
+ gradient_x = gradient_x.mean(dim=1, keepdim=True)
+ gradient_y = gradient_y.mean(dim=1, keepdim=True)
+ edges = torch.sqrt(torch.pow(gradient_x, 2) + torch.pow(gradient_y, 2))
+ edges = F.pad(edges, (1, 1, 1, 1), "constant", 0)
+ thetas = torch.atan2(gradient_y, gradient_x)
+ thetas = F.pad(thetas, (1, 1, 1, 1), "constant", 0)
+ return edges, thetas
+
+ def visual_check(self, rgb, samples):
+ import os
+ import matplotlib.pyplot as plt
+ rgb = rgb.cpu().squeeze().numpy()
+
+ mean = np.array([123.675, 116.28, 103.53])[:, np.newaxis, np.newaxis]
+ std= np.array([58.395, 57.12, 57.375])[:, np.newaxis, np.newaxis]
+
+ rgb = ((rgb * std) + mean).astype(np.uint8).transpose((1, 2, 0))
+ mask_A, mask_B, mask_C, mask_D = samples
+ rgb[mask_A.astype(np.bool)] = [255, 0, 0]
+ rgb[mask_B.astype(np.bool)] = [0, 255, 0]
+ rgb[mask_C.astype(np.bool)] = [0, 0, 255]
+ rgb[mask_D.astype(np.bool)] = [255, 255, 0]
+
+ filename = str(np.random.randint(10000))
+ save_path = os.path.join('test_ranking', filename + '.png')
+ os.makedirs(os.path.dirname(save_path), exist_ok=True)
+ plt.imsave(save_path, rgb)
+
+ def forward(self, prediction, target, mask, input, intrinsic, **kwargs):
+ loss = self.get_loss(prediction, target, mask, input, intrinsic, **kwargs)
+ return loss
+
+ def get_loss(self, prediction, target, mask, input, intrinsic, **kwargs):
+ """
+ input and target: surface normal input
+ input: rgb images
+ """
+ gt_depths = target
+
+ if 'predictions_normals' not in kwargs:
+ predictions_normals, _ = self.depth2normal(prediction, intrinsic, mask)
+ targets_normals, targets_normals_masks = self.depth2normal(target, intrinsic, mask)
+ else:
+ predictions_normals = kwargs['predictions_normals']
+ targets_normals = kwargs['targets_normals']
+ targets_normals_masks = kwargs['targets_normals_masks']
+ masks_normals = mask & targets_normals_masks
+
+ # find edges from RGB
+ edges_img, thetas_img = self.getEdge(input)
+
+ # find edges from normals
+ # edges_normal, thetas_normal = self.getNormalEdge(targets_normals)
+ #mask_img_border = torch.ones_like(edges_normal) # normals on the borders
+ #mask_img_border[:, :, 5:-5, 5:-5] = 0
+ # edges_normal[~targets_normals_masks] = 0
+
+ # find edges from depth
+ edges_depth, thetas_depth = self.getEdge(gt_depths)
+ # edges_depth_mask = edges_depth.ge(edges_depth.max() * 0.1)
+ # edges_mask_dilate = torch.clamp(
+ # torch.nn.functional.conv2d(
+ # edges_depth_mask.float(), self.kernel, padding=(1, 1)
+ # ),
+ # 0,
+ # 1,
+ # ).bool()
+ # edges_normal[edges_mask_dilate] = 0
+ # edges_img[edges_mask_dilate] = 0
+
+ # =============================
+ n, c, h, w = targets_normals.size()
+
+ predictions_normals = predictions_normals.contiguous().view(n, c, -1)
+ targets_normals = targets_normals.contiguous().view(n, c, -1)
+ masks_normals = masks_normals.contiguous().view(n, -1)
+ edges_img = edges_img.contiguous().view(n, -1)
+ thetas_img = thetas_img.contiguous().view(n, -1)
+ # edges_normal = edges_normal.view(n, -1)
+ # thetas_normal = thetas_normal.view(n, -1)
+ edges_depth = edges_depth.contiguous().view(n, -1)
+ thetas_depth = thetas_depth.contiguous().view(n, -1)
+
+ # # initialization
+ losses = 0.0
+ valid_samples = 0.0
+ for i in range(n):
+ # Edge-Guided sampling
+ (
+ inputs_A,
+ inputs_B,
+ targets_A,
+ targets_B,
+ masks_A,
+ masks_B,
+ sample_num,
+ row_img,
+ col_img,
+ ) = edgeGuidedSampling(
+ predictions_normals[i, :],
+ targets_normals[i, :],
+ edges_img[i],
+ thetas_img[i],
+ masks_normals[i, :],
+ h,
+ w,
+ )
+ # Depth-Guided sampling
+ # (
+ # depth_inputs_A,
+ # depth_inputs_B,
+ # depth_targets_A,
+ # depth_targets_B,
+ # depth_masks_A,
+ # depth_masks_B,
+ # depth_sample_num,
+ # row_img,
+ # col_img,
+ # ) = edgeGuidedSampling(
+ # predictions_normals[i, :],
+ # targets_normals[i, :],
+ # edges_depth[i],
+ # thetas_depth[i],
+ # masks_normals[i, :],
+ # h,
+ # w,
+ # )
+ # Normal-Guided sampling
+ # (
+ # normal_inputs_A,
+ # normal_inputs_B,
+ # normal_targets_A,
+ # normal_targets_B,
+ # normal_masks_A,
+ # normal_masks_B,
+ # normal_sample_num,
+ # row_normal,
+ # col_normal,
+ # ) = edgeGuidedSampling(
+ # predictions_normals[i, :],
+ # targets_normals[i, :],
+ # edges_normal[i],
+ # thetas_normal[i],
+ # masks_normals[i, :],
+ # h,
+ # w,
+ # )
+
+ # Combine EGS + DEGS
+ # inputs_A = torch.cat((inputs_A, depth_inputs_A), 1) #normal_inputs_A
+ # inputs_B = torch.cat((inputs_B, depth_inputs_B), 1) # normal_inputs_B
+ # targets_A = torch.cat((targets_A, depth_targets_A), 1) #normal_targets_A
+ # targets_B = torch.cat((targets_B, depth_targets_B), 1) #normal_targets_B
+ # masks_A = torch.cat((masks_A, depth_masks_A), 0) #normal_masks_A
+ # masks_B = torch.cat((masks_B, depth_masks_B), 0) #normal_masks_B
+
+ # consider forward-backward consistency checking, i.e, only compute losses of point pairs with valid GT
+ consistency_mask = masks_A & masks_B
+
+ # GT ordinal relationship
+ target_cos = torch.sum(targets_A * targets_B, dim=0)
+ input_cos = torch.sum(inputs_A * inputs_B, dim=0)
+
+ losses += torch.sum(torch.abs(torch.ones_like(target_cos)-input_cos) * consistency_mask.float())
+ valid_samples += torch.sum(consistency_mask.float())
+
+ loss = (losses / (valid_samples + self.eps)) * self.loss_weight
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'Pair-wise Normal Regression Loss NAN error, {loss}, valid pix: {valid_samples}')
+ return loss
+
+def tmp_check_normal(normals, masks, depth):
+ import matplotlib.pyplot as plt
+ import os
+ import cv2
+ from mono.utils.visualization import vis_surface_normal
+ vis_normal1 = vis_surface_normal(normals[0, ...].permute(1, 2, 0).detach(), masks[0,...].detach().squeeze())
+ vis_normal2 = vis_surface_normal(normals[1, ...].permute(1, 2, 0).detach(), masks[1,...].detach().squeeze())
+ vis_depth1 = depth[0, ...].detach().cpu().squeeze().numpy()
+ vis_depth2 = depth[1, ...].detach().cpu().squeeze().numpy()
+
+ name = np.random.randint(100000)
+ os.makedirs('test_normal', exist_ok=True)
+ cv2.imwrite(f'test_normal/{name}.png', vis_normal1)
+ cv2.imwrite(f'test_normal/{name + 1}.png', vis_normal2)
+ plt.imsave(f'test_normal/{name}_d.png', vis_depth1)
+ plt.imsave(f'test_normal/{name + 1}_d.png', vis_depth2)
+
+if __name__ == '__main__':
+ ENL = EdgeguidedNormalLoss()
+ depth = np.random.randn(2, 1, 20, 22)
+ intrin = np.array([[300, 0, 10], [0, 300, 10], [0,0,1]])
+ prediction = np.random.randn(2, 1, 20, 22)
+ imgs = np.random.randn(2, 3, 20, 22)
+ intrinsics = np.stack([intrin, intrin], axis=0)
+
+ depth_t = torch.from_numpy(depth).cuda().float()
+ prediction = torch.from_numpy(prediction).cuda().float()
+ intrinsics = torch.from_numpy(intrinsics).cuda().float()
+ imgs = torch.from_numpy(imgs).cuda().float()
+ depth_t = -1 * torch.abs(depth_t)
+
+ loss = ENL(prediction, depth_t, masks=depth_t>0, images=imgs, intrinsic=intrinsics)
+ print(loss)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/PWN_Planes.py b/finetune/Metric3D/training/mono/model/losses/PWN_Planes.py
new file mode 100644
index 0000000000000000000000000000000000000000..2151f677d0fb0a5a920c13a5b46eda4a0f768f92
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/PWN_Planes.py
@@ -0,0 +1,291 @@
+import torch
+import torch.nn as nn
+import numpy as np
+
+
+class PWNPlanesLoss(nn.Module):
+ """
+ Virtual Normal Loss Function.
+ """
+ def __init__(self, delta_cos=0.867, delta_diff_x=0.007,
+ delta_diff_y=0.007, sample_groups=5000, loss_weight=1.0, data_type=['lidar', 'denselidar'], **kwargs):
+ """
+ Virtual normal planes loss, which constrain points to be on the same 3D plane.
+ :para focal_x: folcal length fx
+ :para focal_y: folcal length fy
+ :para input_size: input image size
+ :para delta_cos: a threshold for the angle among three point, three points should not be on the same plane
+ :para delta_diff_x: a threshold for the distance among three points along the x axis
+ :para delta_diff_y: a threshold for the distance among three points along the y axis
+ :para sample_groups: sample groups number, each group with 3 points can construct a plane
+ """
+ super(PWNPlanesLoss, self).__init__()
+ self.delta_cos = delta_cos
+ self.delta_diff_x = delta_diff_x
+ self.delta_diff_y = delta_diff_y
+ self.sample_groups = sample_groups
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+
+ def init_image_coor(self, B, H, W):
+ u = torch.arange(0, H, dtype=torch.float32, device="cuda").contiguous().view(1, H, 1).expand(1, H, W) # [1, H, W]
+ v = torch.arange(0, W, dtype=torch.float32, device="cuda").contiguous().view(1, 1, W).expand(1, H, W) # [1, H, W]
+ ones = torch.ones((1, H, W), dtype=torch.float32, device="cuda")
+ pixel_coords = torch.stack((u, v, ones), dim=1).expand(B, 3, H, W) # [B, 3, H, W]
+ # self.register_buffer('uv', pixel_coords, persistent=False)
+ self.uv = pixel_coords
+
+ def upproj_pcd(self, depth, intrinsics_inv):
+ """Transform coordinates in the pixel frame to the camera frame.
+ Args:
+ depth: depth maps -- [B, 1, H, W]
+ intrinsics_inv: intrinsics_inv matrix for each element of batch -- [B, 3, 3]
+ Returns:
+ array of (u,v,1) cam coordinates -- [B, 3, H, W]
+ """
+ b, _, h, w = depth.size()
+ assert self.uv.shape[0] == b
+ current_pixel_coords = self.uv.reshape(b, 3, -1) # [B, 3, H*W]
+ cam_coords = (intrinsics_inv @ current_pixel_coords)
+ cam_coords = cam_coords.reshape(b, 3, h, w)
+ out = depth * cam_coords
+ return out
+
+ # def transfer_xyz(self, depth):
+ # x = self.u_u0 * torch.abs(depth) / self.focal_length
+ # y = self.v_v0 * torch.abs(depth) / self.focal_length
+ # z = depth
+ # pw = torch.cat([x, y, z], 1).permute(0, 2, 3, 1).contiguous() # [b, h, w, c]
+ # return pw
+
+ # def transfer_uvz(self, depth):
+ # max_uv = self.u_u0.max()
+ # u = self.u_u0.repeat((depth.shape[0], 1, 1, 1)) / max_uv
+ # v = self.v_v0.repeat((depth.shape[0], 1, 1, 1)) / max_uv
+ # z = depth
+ # pw = torch.cat([u, v, z], 1).permute(0, 2, 3, 1).contiguous() # [b, h, w, c]
+ # return pw
+
+ def select_index(self, mask_kp):
+ x, _, h, w = mask_kp.shape
+
+ select_size = int(3 * self.sample_groups)
+ p1_x = []
+ p1_y = []
+ p2_x = []
+ p2_y = []
+ p3_x = []
+ p3_y = []
+ valid_batch = torch.ones((x, 1), dtype=torch.bool, device="cuda")
+ for i in range(x):
+ mask_kp_i = mask_kp[i, 0, :, :]
+ valid_points = torch.nonzero(mask_kp_i)
+
+ if valid_points.shape[0] < select_size * 0.6:
+ valid_points = torch.nonzero(~mask_kp_i.to(torch.uint8))
+ valid_batch[i, :] = False
+ elif valid_points.shape[0] < select_size:
+ repeat_idx = torch.randperm(valid_points.shape[0], device="cuda")[:select_size - valid_points.shape[0]]
+ valid_repeat = valid_points[repeat_idx]
+ valid_points = torch.cat((valid_points, valid_repeat), 0)
+ else:
+ valid_points = valid_points
+ """
+
+ if valid_points.shape[0] <= select_size:
+ valid_points = torch.nonzero(~mask_kp_i.to(torch.uint8))
+ valid_batch[i, :] = False
+ """
+ select_indx = torch.randperm(valid_points.size(0), device="cuda")
+
+ p1 = valid_points[select_indx[0:select_size:3]]
+ p2 = valid_points[select_indx[1:select_size:3]]
+ p3 = valid_points[select_indx[2:select_size:3]]
+
+ p1_x.append(p1[:, 1])
+ p1_y.append(p1[:, 0])
+
+ p2_x.append(p2[:, 1])
+ p2_y.append(p2[:, 0])
+
+ p3_x.append(p3[:, 1])
+ p3_y.append(p3[:, 0])
+ p123 = {'p1_x': torch.stack(p1_x), 'p1_y': torch.stack(p1_y),
+ 'p2_x': torch.stack(p2_x), 'p2_y': torch.stack(p2_y),
+ 'p3_x': torch.stack(p3_x), 'p3_y': torch.stack(p3_y),
+ 'valid_batch': valid_batch}
+ return p123
+
+ def form_pw_groups(self, p123, pw):
+ """
+ Form 3D points groups, with 3 points in each grouup.
+ :param p123: points index
+ :param pw: 3D points, # [1, h, w, c]
+ :return:
+ """
+ p1_x = p123['p1_x']
+ p1_y = p123['p1_y']
+ p2_x = p123['p2_x']
+ p2_y = p123['p2_y']
+ p3_x = p123['p3_x']
+ p3_y = p123['p3_y']
+ batch_list = torch.arange(0, p1_x.shape[0], device="cuda")[:, None]
+ pw = pw.repeat((p1_x.shape[0], 1, 1, 1))
+ pw1 = pw[batch_list, p1_y, p1_x, :]
+ pw2 = pw[batch_list, p2_y, p2_x, :]
+ pw3 = pw[batch_list, p3_y, p3_x, :]
+
+ # [B, N, 3(x,y,z), 3(p1,p2,p3)]
+ pw_groups = torch.cat([pw1[:, :, :, None], pw2[:, :, :, None], pw3[:, :, :, None]], 3)
+ return pw_groups
+
+ def filter_mask(self, pw_pred):
+ """
+ :param pw_pred: constructed 3d vector (x, y, disp), [B, N, 3(x,y,z), 3(p1,p2,p3)]
+ """
+ xy12 = pw_pred[:, :, 0:2, 1] - pw_pred[:, :, 0:2, 0]
+ xy13 = pw_pred[:, :, 0:2, 2] - pw_pred[:, :, 0:2, 0]
+ xy23 = pw_pred[:, :, 0:2, 2] - pw_pred[:, :, 0:2, 1]
+ # Ignore linear
+ xy_diff = torch.cat([xy12[:, :, :, np.newaxis], xy13[:, :, :, np.newaxis], xy23[:, :, :, np.newaxis]],
+ 3) # [b, n, 2(xy), 3]
+ m_batchsize, groups, coords, index = xy_diff.shape
+ proj_query = xy_diff.contiguous().view(m_batchsize * groups, -1, index).permute(0, 2, 1).contiguous() # [bn, 3(p123), 2(xy)]
+ proj_key = xy_diff.contiguous().view(m_batchsize * groups, -1, index) # [bn, 2(xy), 3(p123)]
+ q_norm = proj_query.norm(2, dim=2) # [bn, 3(p123)]
+ nm = torch.bmm(q_norm.contiguous().view(m_batchsize * groups, index, 1), q_norm.contiguous().view(m_batchsize * groups, 1, index)) # []
+ energy = torch.bmm(proj_query, proj_key) # transpose check [bn, 3(p123), 3(p123)]
+ norm_energy = energy / (nm + 1e-8)
+ norm_energy = norm_energy.contiguous().view(m_batchsize * groups, -1) # [bn, 9(p123)]
+ mask_cos = torch.sum((norm_energy > self.delta_cos) + (norm_energy < -self.delta_cos), 1) > 3 # igonre
+ mask_cos = mask_cos.contiguous().view(m_batchsize, groups) # [b, n] # igonre
+
+ #ignore near
+ mask_x = torch.sum(torch.abs(xy_diff[:, :, 0, :]) < self.delta_diff_x, 2) > 0
+ mask_y = torch.sum(torch.abs(xy_diff[:, :, 1, :]) < self.delta_diff_y, 2) > 0
+ mask_near = mask_x & mask_y
+ mask_valid_pts = ~(mask_cos | mask_near)
+ return mask_valid_pts
+
+ def select_points_groups(self, pcd_bi, mask_kp):
+ p123 = self.select_index(mask_kp) # p1_x: [x, n]
+ pcd_bi = pcd_bi.permute((0, 2, 3, 1)).contiguous() #[1, h, w, 3(xyz)]
+ groups_pred = self.form_pw_groups(p123, pcd_bi) # [x, N, 3(x,y,z), 3(p1,p2,p3)]
+
+ # mask:[x, n]
+ mask_valid_pts = (self.filter_mask(groups_pred)).to(torch.bool) # [x, n]
+ mask_valid_batch = p123['valid_batch'].repeat(1, mask_valid_pts.shape[1]) # [x, n]
+ mask_valid = mask_valid_pts & mask_valid_batch # [x, n]
+ return groups_pred, mask_valid
+
+ def constrain_a_plane_loss(self, pw_groups_pre_i, mask_valid_i):
+ """
+ pw_groups_pre: selected points groups for the i-th plane, [N, 3(x,y,z), 3(p1,p2,p3)]
+ """
+ if torch.sum(mask_valid_i) < 2:
+ return 0.0 * torch.sum(pw_groups_pre_i), 0
+ pw_groups_pred_i = pw_groups_pre_i[mask_valid_i] # [n, 3, 3]
+ p12 = pw_groups_pred_i[:, :, 1] - pw_groups_pred_i[:, :, 0]
+ p13 = pw_groups_pred_i[:, :, 2] - pw_groups_pred_i[:, :, 0]
+ virtual_normal = torch.cross(p12, p13, dim=1) # [n, 3]
+ norm = torch.norm(virtual_normal, 2, dim=1, keepdim=True)
+ virtual_normal = virtual_normal / (norm + 1e-8)
+
+ # re-orient normals consistently
+ orient_mask = torch.sum(torch.squeeze(virtual_normal) * torch.squeeze(pw_groups_pred_i[:, :, 0]), dim=1) > 0
+ virtual_normal[orient_mask] *= -1
+ #direct = virtual_normal[:, 2] / torch.abs(virtual_normal[:, 2])
+ #virtual_normal = virtual_normal / direct[:, None] # [n, 3]
+
+ aver_normal = torch.sum(virtual_normal, dim=0)
+ aver_norm = torch.norm(aver_normal, 2, dim=0, keepdim=True)
+ aver_normal = aver_normal / (aver_norm + 1e-5) # [3]
+
+ cos_diff = 1.0 - torch.sum(virtual_normal * aver_normal, dim=1)
+ loss_sum = torch.sum(cos_diff, dim=0)
+ valid_num = cos_diff.numel()
+ return loss_sum, valid_num
+
+ def get_loss(self, pred_depth, gt_depth, ins_planes_mask, intrinsic=None):
+ """
+ Co-plane loss. Enforce points residing on the same instance plane to be co-plane.
+ :param pred_depth: predicted depth map, [B,C,H,W]
+ :param mask: mask for planes, each plane is noted with a value, [B, C, H, W]
+ :param focal_length: focal length
+ """
+ if pred_depth.ndim==3:
+ pred_depth = pred_depth[None, ...]
+ if gt_depth.ndim == 3:
+ gt_depth = gt_depth[None, ...]
+ if ins_planes_mask.ndim == 3:
+ ins_planes_mask = ins_planes_mask[None, ...]
+
+ B, _, H, W = pred_depth.shape
+ loss_sum = torch.tensor(0.0, device="cuda")
+ valid_planes_num = 0
+
+ #if 'uv' not in self._buffers or ('uv' in self._buffers and self.uv.shape[0] != B):
+ self.init_image_coor(B, H, W)
+ pcd = self.upproj_pcd(pred_depth, intrinsic.inverse())
+
+ for i in range(B):
+ mask_i = ins_planes_mask[i, :][None, :, :]
+ unique_planes = torch.unique(mask_i)
+ planes = [mask_i == m for m in unique_planes if m != 0] #[x, 1, h, w] x is the planes number
+ if len(planes) == 0:
+ continue
+ mask_planes = torch.cat(planes, dim=0) #torch.stack(planes, dim=0) #
+ pcd_grops_pred, mask_valid = self.select_points_groups(pcd[i, ...][None, :, :, :], mask_planes) # [x, N, 3(x,y,z), 3(p1,p2,p3)]
+
+ for j in range(unique_planes.numel()-1):
+ mask_valid_j = mask_valid[j, :]
+ pcd_grops_pred_j = pcd_grops_pred[j, :]
+ loss_tmp, valid_angles = self.constrain_a_plane_loss(pcd_grops_pred_j, mask_valid_j)
+ valid_planes_num += valid_angles
+ loss_sum += loss_tmp
+
+ loss = loss_sum / (valid_planes_num + 1e-6) * self.loss_weight
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = torch.sum(pred_depth) * 0
+ print(f'PWNPlane NAN error, {loss}')
+ return loss
+
+ def forward(self, prediction, target, mask, intrinsic, **kwargs): #gt_depth, pred_depth, select=True):
+ """
+ Virtual normal loss.
+ :param prediction: predicted depth map, [B,W,H,C]
+ :param data: target label, ground truth depth, [B, W, H, C], padding region [padding_up, padding_down]
+ :return:
+ """
+ dataset = kwargs['dataset']
+ batch_mask = np.array(dataset) == 'Taskonomy'
+ if np.sum(batch_mask) == 0:
+ return torch.sum(prediction) * 0.0
+ ins_planes_mask = kwargs['sem_mask'] #
+ assert ins_planes_mask.ndim == 4
+ loss = self.get_loss(
+ prediction[batch_mask],
+ target[batch_mask],
+ ins_planes_mask[batch_mask],
+ intrinsic[batch_mask],
+ )
+ return loss
+
+
+if __name__ == '__main__':
+ import cv2
+ vnl_loss = PWNPlanesLoss()
+ pred_depth = torch.rand([2, 1, 385, 513]).cuda()
+ gt_depth = torch.rand([2, 1, 385, 513]).cuda()
+ gt_depth[:, :, 3:20, 40:60] = 0
+ mask_kp1 = pred_depth > 0.9
+ mask_kp2 = pred_depth < 0.5
+ mask = torch.zeros_like(gt_depth, dtype=torch.uint8)
+ mask = 1*mask_kp1 + 2* mask_kp2
+ mask[1,...] = 0
+
+
+ intrinsic = torch.tensor([[100, 0, 50], [0, 100, 50,], [0,0,1]]).cuda().float()
+ intrins = torch.stack([intrinsic, intrinsic], dim=0)
+ loss = vnl_loss(gt_depth, gt_depth, mask, intrins, dataset=np.array(['Taskonomy', 'Taskonomy']))
+ print(loss)
diff --git a/finetune/Metric3D/training/mono/model/losses/Ranking.py b/finetune/Metric3D/training/mono/model/losses/Ranking.py
new file mode 100644
index 0000000000000000000000000000000000000000..9cb1eecb2ea5fbfe3b73aa49afa54adf574cb02e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/Ranking.py
@@ -0,0 +1,342 @@
+import torch
+from torch import nn
+import numpy as np
+import torch.nn.functional as F
+import matplotlib.pyplot as plt
+import os
+
+"""
+Sampling strategies: RS (Random Sampling), EGS (Edge-Guided Sampling), and IGS (Instance-Guided Sampling)
+"""
+###########
+# RANDOM SAMPLING
+# input:
+# predictions[i,:], targets[i, :], masks[i, :], self.mask_value, self.point_pairs
+# return:
+# inputs_A, inputs_B, targets_A, targets_B, consistent_masks_A, consistent_masks_B
+###########
+def randomSampling(predictions, targets, masks, threshold, sample_num):
+
+ # find A-B point pairs from predictions
+ inputs_index = torch.masked_select(predictions, targets.gt(threshold))
+ num_effect_pixels = len(inputs_index)
+ shuffle_effect_pixels = torch.randperm(num_effect_pixels, device="cuda")
+ inputs_A = inputs_index[shuffle_effect_pixels[0:sample_num*2:2]]
+ inputs_B = inputs_index[shuffle_effect_pixels[1:sample_num*2:2]]
+ # find corresponding pairs from GT
+ target_index = torch.masked_select(targets, targets.gt(threshold))
+ targets_A = target_index[shuffle_effect_pixels[0:sample_num*2:2]]
+ targets_B = target_index[shuffle_effect_pixels[1:sample_num*2:2]]
+ # only compute the losses of point pairs with valid GT
+ consistent_masks_index = torch.masked_select(masks, targets.gt(threshold))
+ consistent_masks_A = consistent_masks_index[shuffle_effect_pixels[0:sample_num*2:2]]
+ consistent_masks_B = consistent_masks_index[shuffle_effect_pixels[1:sample_num*2:2]]
+
+ # The amount of A and B should be the same!!
+ if len(targets_A) > len(targets_B):
+ targets_A = targets_A[:-1]
+ inputs_A = inputs_A[:-1]
+ consistent_masks_A = consistent_masks_A[:-1]
+
+ return inputs_A, inputs_B, targets_A, targets_B, consistent_masks_A, consistent_masks_B
+
+###########
+# EDGE-GUIDED SAMPLING
+# input:
+# predictions[i,:], targets[i, :], masks[i, :], edges_img[i], thetas_img[i], masks[i, :], h, w
+# return:
+# inputs_A, inputs_B, targets_A, targets_B, masks_A, masks_B
+###########
+def ind2sub(idx, cols):
+ r = torch.div(idx, cols, rounding_mode='floor') #idx // cols
+ c = idx % cols
+ return r, c
+
+def sub2ind(r, c, cols):
+ idx = (r * cols + c).int()
+ return idx
+
+def edgeGuidedSampling(predictions, targets, edges_img, thetas_img, masks, h, w):
+
+ # find edges
+ edges_max = edges_img.max()
+ edges_mask = edges_img.ge(edges_max*0.1)
+ edges_loc = edges_mask.nonzero()
+
+ inputs_edge = torch.masked_select(predictions, edges_mask)
+ targets_edge = torch.masked_select(targets, edges_mask)
+ thetas_edge = torch.masked_select(thetas_img, edges_mask)
+ minlen = inputs_edge.size()[0]
+
+ # find anchor points (i.e, edge points)
+ sample_num = minlen
+ index_anchors = torch.randint(0, minlen, (sample_num,), dtype=torch.long, device="cuda")
+ anchors = torch.gather(inputs_edge, 0, index_anchors)
+ theta_anchors = torch.gather(thetas_edge, 0, index_anchors)
+ row_anchors, col_anchors = ind2sub(edges_loc[index_anchors].squeeze(1), w)
+ ## compute the coordinates of 4-points, distances are from [2, 30]
+ distance_matrix = torch.randint(2, 40, (4,sample_num), device="cuda")
+ pos_or_neg = torch.ones(4, sample_num, device="cuda")
+ pos_or_neg[:2,:] = -pos_or_neg[:2,:]
+ distance_matrix = distance_matrix.float() * pos_or_neg
+ col = col_anchors.unsqueeze(0).expand(4, sample_num).long() + torch.round(distance_matrix.float() * torch.abs(torch.cos(theta_anchors)).unsqueeze(0)).long()
+ row = row_anchors.unsqueeze(0).expand(4, sample_num).long() + torch.round(distance_matrix.float() * torch.abs(torch.sin(theta_anchors)).unsqueeze(0)).long()
+
+ # constrain 0=w-1] = w-1
+ row[row<0] = 0
+ row[row>h-1] = h-1
+
+ # a-b, b-c, c-d
+ a = sub2ind(row[0,:], col[0,:], w)
+ b = sub2ind(row[1,:], col[1,:], w)
+ c = sub2ind(row[2,:], col[2,:], w)
+ d = sub2ind(row[3,:], col[3,:], w)
+ A = torch.cat((a,b,c), 0)
+ B = torch.cat((b,c,d), 0)
+
+ inputs_A = torch.gather(predictions, 0, A.long())
+ inputs_B = torch.gather(predictions, 0, B.long())
+ targets_A = torch.gather(targets, 0, A.long())
+ targets_B = torch.gather(targets, 0, B.long())
+ masks_A = torch.gather(masks, 0, A.long())
+ masks_B = torch.gather(masks, 0, B.long())
+
+ # create A, B, C, D mask for visualization
+ # vis_mask = masks.reshape(h, w).cpu().numpy()
+ # vis_row = row.cpu()
+ # vis_col = col.cpu()
+ # visual_A = np.zeros((h, w)).astype(np.bool)
+ # visual_B = np.zeros_like(visual_A)
+ # visual_C = np.zeros_like(visual_A)
+ # visual_D = np.zeros_like(visual_A)
+ # visual_A[vis_row[0, :], vis_col[0, :]] = True
+ # visual_B[vis_row[1, :], vis_col[1, :]] = True
+ # visual_C[vis_row[2, :], vis_col[2, :]] = True
+ # visual_D[vis_row[3, :], vis_col[3, :]] = True
+ # visual_ABCD = [visual_A & vis_mask, visual_B & vis_mask,
+ # visual_C& vis_mask, visual_D& vis_mask]
+ return inputs_A, inputs_B, targets_A, targets_B, masks_A, masks_B, sample_num
+
+
+######################################################
+# Ranking loss (Random sampling)
+#####################################################
+class RankingLoss(nn.Module):
+ def __init__(self, point_pairs=5000, sigma=0.03, alpha=1.0, mask_value=-1e-8, loss_weight=1, **kwargs):
+ super(RankingLoss, self).__init__()
+ self.point_pairs = point_pairs # number of point pairs
+ self.sigma = sigma # used for determining the ordinal relationship between a selected pair
+ self.alpha = alpha # used for balancing the effect of = and (<,>)
+ self.mask_value = mask_value
+ self.loss_weight = loss_weight
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ n,c,h,w = target.size()
+ if mask == None:
+ mask = target > self.mask_value
+ if n != 1:
+ prediction = prediction.view(n, -1)#.double()
+ target = target.view(n, -1)#.double()
+ mask = mask.view(n, -1)#.double()
+ else:
+ prediction = prediction.contiguous().view(1, -1)#.double()
+ target = target.contiguous().view(1, -1)#.double()
+ mask = mask.contiguous().view(1, -1)#.double()
+
+ loss = 0.0 #torch.tensor([0.0]).cuda()
+ valid_samples = 0
+ for i in range(n):
+ # find A-B point pairs
+ inputs_A, inputs_B, targets_A, targets_B, consistent_masks_A, consistent_masks_B = randomSampling(prediction[i,:], target[i, :], mask[i, :], self.mask_value, self.point_pairs)
+
+ #GT ordinal relationship
+ target_ratio = torch.div(targets_A, targets_B+self.eps)
+ mask_eq = target_ratio.lt(1.0 + self.sigma) * target_ratio.gt(1.0/(1.0+self.sigma))
+ labels = torch.zeros_like(target_ratio)
+ labels[target_ratio.ge(1.0 + self.sigma)] = 1
+ labels[target_ratio.le(1.0/(1.0+self.sigma))] = -1
+
+ # consider forward-backward consistency checking, only compute the losses of point pairs with valid GT
+ consistency_mask = consistent_masks_A & consistent_masks_B
+
+ # compute loss
+ equal_loss = (inputs_A - inputs_B).pow(2)[mask_eq & consistency_mask]
+ unequal_loss = torch.log(1 + torch.exp((-inputs_A + inputs_B) * labels))[(~mask_eq) & consistency_mask]
+
+ loss = loss + self.alpha * equal_loss.sum() + unequal_loss.sum()
+ valid_samples = valid_samples + unequal_loss.numel() + equal_loss.numel()
+ loss = loss / (valid_samples + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'VNL error, {loss}')
+ return loss * self.loss_weight
+
+
+
+
+
+######################################################
+# EdgeguidedRankingLoss (with regularization term)
+# Please comment regularization_loss if you don't want to use multi-scale gradient matching term
+#####################################################
+class EdgeguidedRankingLoss(nn.Module):
+ def __init__(self, point_pairs=5000, sigma=0.03, alpha=1.0, mask_value=1e-6, loss_weight=1.0, data_type=['rel', 'sfm', 'stereo', 'lidar'], **kwargs):
+ super(EdgeguidedRankingLoss, self).__init__()
+ self.point_pairs = point_pairs # number of point pairs
+ self.sigma = sigma # used for determining the ordinal relationship between a selected pair
+ self.alpha = alpha # used for balancing the effect of = and (<,>)
+ self.mask_value = mask_value
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def getEdge(self, images):
+ n,c,h,w = images.size()
+ a = torch.tensor([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], dtype=torch.float32, device="cuda").view((1,1,3,3)).repeat(1, 1, 1, 1)
+ b = torch.tensor([[1, 2, 1], [0, 0, 0], [-1, -2, -1]], dtype=torch.float32, device="cuda").view((1,1,3,3)).repeat(1, 1, 1, 1)
+ if c == 3:
+ gradient_x = F.conv2d(images[:,0,:,:].unsqueeze(1), a)
+ gradient_y = F.conv2d(images[:,0,:,:].unsqueeze(1), b)
+ else:
+ gradient_x = F.conv2d(images, a)
+ gradient_y = F.conv2d(images, b)
+ edges = torch.sqrt(torch.pow(gradient_x,2)+ torch.pow(gradient_y,2))
+ edges = F.pad(edges, (1,1,1,1), "constant", 0)
+ thetas = torch.atan2(gradient_y, gradient_x)
+ thetas = F.pad(thetas, (1,1,1,1), "constant", 0)
+
+ return edges, thetas
+
+ def visual_check(self, rgb, samples):
+ rgb = rgb.cpu().squeeze().numpy()
+
+ mean = np.array([123.675, 116.28, 103.53])[:, np.newaxis, np.newaxis]
+ std= np.array([58.395, 57.12, 57.375])[:, np.newaxis, np.newaxis]
+
+ rgb = ((rgb * std) + mean).astype(np.uint8).transpose((1, 2, 0))
+ mask_A, mask_B, mask_C, mask_D = samples
+ rgb[mask_A.astype(np.bool)] = [255, 0, 0]
+ rgb[mask_B.astype(np.bool)] = [0, 255, 0]
+ rgb[mask_C.astype(np.bool)] = [0, 0, 255]
+ rgb[mask_D.astype(np.bool)] = [255, 255, 0]
+
+ filename = str(np.random.randint(10000))
+ save_path = os.path.join('test_ranking', filename + '.png')
+ os.makedirs(os.path.dirname(save_path), exist_ok=True)
+ plt.imsave(save_path, rgb)
+
+ def forward(self, prediction, target, mask=None, input=None, **kwargs):
+ loss = self.get_loss(prediction, target, mask, input, **kwargs)
+ return loss
+
+ def get_loss(self, prediction, target, mask=None, input=None, **kwargs):
+ if mask == None:
+ mask = target > self.mask_value
+ # find edges from RGB
+ edges_img, thetas_img = self.getEdge(input)
+ # find edges from target depths
+ edges_depth, thetas_depth = self.getEdge(target)
+
+ #=============================
+ n,c,h,w = target.size()
+ if n != 1:
+ prediction = prediction.view(n, -1)#.double()
+ target = target.view(n, -1)#.double()
+ mask = mask.view(n, -1)#.double()
+ edges_img = edges_img.view(n, -1)#.double()
+ thetas_img = thetas_img.view(n, -1)#.double()
+ edges_depth = edges_depth.view(n, -1)#.double()
+ thetas_depth = thetas_depth.view(n, -1)#.double()
+ else:
+ prediction = prediction.contiguous().view(1, -1)#.double()
+ target = target.contiguous().view(1, -1)#.double()
+ mask = mask.contiguous().view(1, -1)#.double()
+ edges_img = edges_img.contiguous().view(1, -1)#.double()
+ thetas_img = thetas_img.contiguous().view(1, -1)#.double()
+ edges_depth = edges_depth.view(1, -1)#.double()
+ thetas_depth = thetas_depth.view(1, -1)#.double()
+
+ # initialization
+ loss = 0.0 #torch.tensor([0.0]).cuda()
+ valid_samples = 0
+
+ for i in range(n):
+ # Edge-Guided sampling from RGB predictions, targets, edges_img, thetas_img, masks, h, w
+ inputs_A, inputs_B, targets_A, targets_B, masks_A, masks_B, sample_num = edgeGuidedSampling(
+ prediction[i,:],
+ target[i, :],
+ edges_img[i],
+ thetas_img[i],
+ mask[i, :],
+ h,
+ w
+ )
+ # # Edge-Guided sampling from depth
+ # inputs_A_depth, inputs_B_depth, targets_A_depth, targets_B_depth, masks_A_depth, masks_B_depth, sample_num_depth = edgeGuidedSampling(
+ # prediction[i,:],
+ # target[i, :],
+ # edges_depth[i],
+ # thetas_depth[i],
+ # mask[i, :],
+ # h,
+ # w
+ # )
+
+ # Random Sampling predictions, targets, masks, threshold, sample_num
+ random_sample_num = sample_num
+ random_inputs_A, random_inputs_B, random_targets_A, random_targets_B, random_masks_A, random_masks_B = randomSampling(
+ prediction[i,:],
+ target[i, :],
+ mask[i, :],
+ self.mask_value,
+ random_sample_num
+ )
+
+ # Combine EGS + RS + EGS_depth
+ inputs_A_merge = torch.cat((inputs_A, random_inputs_A,), 0)
+ inputs_B_merge = torch.cat((inputs_B, random_inputs_B,), 0)
+ targets_A_merge = torch.cat((targets_A, random_targets_A,), 0)
+ targets_B_merge = torch.cat((targets_B, random_targets_B,), 0)
+ masks_A_merge = torch.cat((masks_A, random_masks_A,), 0)
+ masks_B_merge = torch.cat((masks_B, random_masks_B,), 0)
+
+ #GT ordinal relationship
+ target_ratio = torch.div(targets_A_merge + 1e-6, targets_B_merge + 1e-6)
+ mask_eq = target_ratio.lt(1.0 + self.sigma) & target_ratio.gt(1.0/(1.0+self.sigma))
+ labels = torch.zeros_like(target_ratio)
+ labels[target_ratio.ge(1.0 + self.sigma)] = 1
+ labels[target_ratio.le(1.0/(1.0+self.sigma))] = -1
+
+ # consider forward-backward consistency checking, i.e, only compute losses of point pairs with valid GT
+ consistency_mask = masks_A_merge & masks_B_merge
+
+ equal_loss = (inputs_A_merge - inputs_B_merge).pow(2)[mask_eq & consistency_mask]
+ unequal_loss = torch.log(1 + torch.exp((-inputs_A_merge + inputs_B_merge) * labels))[(~mask_eq) & consistency_mask]
+
+ loss = loss + self.alpha * torch.sum(equal_loss) + torch.sum(unequal_loss)
+ valid_samples = valid_samples + equal_loss.numel()
+ valid_samples = valid_samples + unequal_loss.numel()
+ loss = loss / (valid_samples + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'VNL error, {loss}')
+ return loss * self.loss_weight
+
+
+if __name__ == '__main__':
+ import cv2
+
+ rank_loss = EdgeguidedRankingLoss()
+ pred_depth = np.random.randn(2, 1, 480, 640)
+ gt_depth = np.ones((2, 1, 480, 640)) #np.random.randn(2, 1, 480, 640)
+ # gt_depth = cv2.imread('/hardware/yifanliu/SUNRGBD/sunrgbd-meta-data/sunrgbd_test_depth/2.png', -1)
+ # gt_depth = gt_depth[None, :, :, None]
+ # pred_depth = gt_depth[:, :, ::-1, :]
+ gt_depth = torch.tensor(np.asarray(gt_depth, np.float32)).cuda()
+ pred_depth = torch.tensor(np.asarray(pred_depth, np.float32)).cuda()
+ input = np.random.randn(2, 3, 480, 640)
+ input_torch = torch.tensor(np.asarray(input, np.float32)).cuda()
+ loss = rank_loss(gt_depth, gt_depth, gt_depth>0, input=input_torch)
+ print(loss)
diff --git a/finetune/Metric3D/training/mono/model/losses/Regularization.py b/finetune/Metric3D/training/mono/model/losses/Regularization.py
new file mode 100644
index 0000000000000000000000000000000000000000..f493d1117e707b786e63a92482aabbaf8c79643b
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/Regularization.py
@@ -0,0 +1,18 @@
+import torch
+import torch.nn as nn
+
+class RegularizationLoss(nn.Module):
+ """
+ Enforce losses on pixels without any gts.
+ """
+ def __init__(self, loss_weight=0.1, data_type=['sfm', 'stereo', 'lidar'], **kwargs):
+ super(RegularizationLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ pred_wo_gt = prediction[~mask]
+ #loss = - torch.sum(pred_wo_gt) / (pred_wo_gt.numel() + 1e-8)
+ loss = 1/ (torch.sum(pred_wo_gt) / (pred_wo_gt.numel() + self.eps))
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/SSIL.py b/finetune/Metric3D/training/mono/model/losses/SSIL.py
new file mode 100644
index 0000000000000000000000000000000000000000..38135d3a90481f209eaac22aa8cbe1cac8a80990
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/SSIL.py
@@ -0,0 +1,56 @@
+import torch
+import torch.nn as nn
+
+class SSILoss(nn.Module):
+ """
+ Scale shift invariant MAE loss.
+ loss = MAE((d-median(d)/s - (d'-median(d'))/s'), s = mean(d- median(d))
+ """
+ def __init__(self, loss_weight=1, data_type=['sfm', 'stereo', 'lidar'], **kwargs):
+ super(SSILoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def ssi_mae(self, target, prediction, mask):
+ valid_pixes = torch.sum(mask) + self.eps
+
+ gt_median = torch.median(target) if target.numel() else 0
+ gt_s = torch.abs(target - gt_median).sum() / valid_pixes
+ gt_trans = (target - gt_median) / (gt_s + self.eps)
+
+ pred_median = torch.median(prediction) if prediction.numel() else 0
+ pred_s = torch.abs(prediction - pred_median).sum() / valid_pixes
+ pred_trans = (prediction - pred_median) / (pred_s + self.eps)
+
+ ssi_mae_sum = torch.sum(torch.abs(gt_trans - pred_trans))
+ return ssi_mae_sum, valid_pixes
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ """
+ Calculate loss.
+ """
+ B, C, H, W = prediction.shape
+ loss = 0
+ valid_pix = 0
+ for i in range(B):
+ mask_i = mask[i, ...]
+ gt_depth_i = target[i, ...][mask_i]
+ pred_depth_i = prediction[i, ...][mask_i]
+ ssi_sum, valid_pix_i = self.ssi_mae(pred_depth_i, gt_depth_i, mask_i)
+ loss += ssi_sum
+ valid_pix += valid_pix_i
+ loss /= (valid_pix + self.eps)
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ torch.manual_seed(1)
+ torch.cuda.manual_seed_all(1)
+
+ ssil = SSILoss()
+ pred = torch.rand((2, 1, 256, 256)).cuda()
+ gt = torch.rand((2, 1, 256, 256)).cuda()#torch.zeros_like(pred).cuda() #
+ gt[:, :, 100:256, 0:100] = -1
+ mask = gt > 0
+ out = ssil(pred, gt, mask)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/ScaleAlignLoss.py b/finetune/Metric3D/training/mono/model/losses/ScaleAlignLoss.py
new file mode 100644
index 0000000000000000000000000000000000000000..ded0509e2d8f971a0093eca3819dbdb6b96f43e7
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/ScaleAlignLoss.py
@@ -0,0 +1,57 @@
+import torch
+import torch.nn as nn
+
+class ScaleAlignLoss(nn.Module):
+ """
+ Loss function defined over sequence of depth predictions
+ """
+ def __init__(self, data_type=['lidar', 'denselidar', 'stereo', 'denselidar_syn'], loss_weight=1.0, disable_dataset=['MapillaryPSD'], **kwargs):
+ super(ScaleAlignLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.disable_dataset = disable_dataset
+
+ def forward(self, prediction, target, mask, scale, **kwargs):
+ device = target.device
+
+ B, C, H, W = prediction.shape
+
+
+ # median_pred, _ = torch.median(prediction.view(B, C*H*W), 1)
+ # median_pred = median_pred.detach()
+
+ # scale_factor = torch.zeros_like(scale).squeeze(3).squeeze(2).squeeze(1)
+ # for i in range(B):
+ # mask_i = mask[i, ...]
+ # if torch.sum(mask_i) > 10:
+ # scale_factor[i] = torch.median(target[i, ...][mask_i]) / (torch.median(prediction[i, ...][mask_i]) + 1e-8)
+ # else:
+ # scale_factor[i] = 0
+
+ # target_scale = (median_pred * scale_factor)
+
+ # batches_dataset = kwargs['dataset']
+ # self.batch_valid = torch.tensor([1 if batch_dataset not in self.disable_dataset else 0 \
+ # for batch_dataset in batches_dataset], device=device)
+
+ # batch_valid = self.batch_valid * (scale_factor > 1e-8)
+
+ # scale_diff = torch.abs(scale.squeeze(3).squeeze(2).squeeze(1) - scale_factor * median_pred)
+
+ batches_dataset = kwargs['dataset']
+ self.batch_valid = torch.tensor([1 if batch_dataset not in self.disable_dataset else 0 \
+ for batch_dataset in batches_dataset], device=device)
+
+ scale_tgt = torch.zeros_like(scale).squeeze(3).squeeze(2).squeeze(1)
+ for i in range(B):
+ mask_i = mask[i, ...]
+ if torch.sum(mask_i) > 10:
+ scale_tgt[i] = torch.median(target[i, ...][mask_i])
+ else:
+ scale_tgt[i] = 0
+
+ batch_valid = self.batch_valid * (scale_tgt > 1e-8)
+ scale_diff = torch.abs(scale.squeeze(3).squeeze(2).squeeze(1) - scale_tgt)
+ loss = torch.sum(scale_diff * batch_valid) / (torch.sum(batch_valid) + 1e-8)
+
+ return loss * self.loss_weight
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/ScaleInvL1.py b/finetune/Metric3D/training/mono/model/losses/ScaleInvL1.py
new file mode 100644
index 0000000000000000000000000000000000000000..fad42d54015a6102c41ae5292141bb0f9d5d3f5e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/ScaleInvL1.py
@@ -0,0 +1,35 @@
+import torch
+import torch.nn as nn
+
+class ScaleInvL1Loss(nn.Module):
+ """
+ Compute scale-invariant L1 loss.
+ """
+ def __init__(self, loss_weight=1, data_type=['sfm', 'denselidar_nometric', 'denselidar_syn'], **kwargs):
+ super(ScaleInvL1Loss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ B, _, _, _ = target.shape
+ target_nan = target.clone()
+ target_nan[~mask] = torch.nan
+ median_target = torch.nanmedian(target_nan.view(B, -1), dim=1)[0]
+ prediction_nan = prediction.clone().detach()
+ prediction_nan[~mask] = torch.nan
+ median_prediction = torch.nanmedian(prediction_nan.view(B, -1), dim=1)[0]
+ scale = median_target / median_prediction
+ scale[torch.isnan(scale)] = 0
+ pred_scale = prediction * scale[:, None, None, None]
+
+ target_valid = target * mask
+ pred_valid = pred_scale * mask
+ diff = torch.abs(pred_valid - target_valid)
+ # disp_diff = diff / (target_valid + self.eps)
+ loss = torch.sum(diff) / (torch.sum(mask) + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'Scale-invariant L1 NAN error, {loss}')
+ #raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
diff --git a/finetune/Metric3D/training/mono/model/losses/SiLog.py b/finetune/Metric3D/training/mono/model/losses/SiLog.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce336f9f9a5aea56ad78b29861afb4ae3b0302e6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/SiLog.py
@@ -0,0 +1,38 @@
+import torch
+import torch.nn as nn
+
+class SilogLoss(nn.Module):
+ """
+ Compute SILog loss. See https://papers.nips.cc/paper/2014/file/7bccfde7714a1ebadf06c5f4cea752c1-Paper.pdf for
+ more information about scale-invariant loss.
+ """
+ def __init__(self, variance_focus=0.5, loss_weight=1, data_type=['stereo', 'lidar'], **kwargs):
+ super(SilogLoss, self).__init__()
+ self.variance_focus = variance_focus
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def silog_loss(self, prediction, target, mask):
+ d = torch.log(prediction[mask]) - torch.log(target[mask])
+ d_square_mean = torch.sum(d ** 2) / (d.numel() + self.eps)
+ d_mean = torch.sum(d) / (d.numel() + self.eps)
+ loss = d_square_mean - self.variance_focus * (d_mean ** 2)
+ return loss
+
+ def forward(self, prediction, target, mask=None, **kwargs):
+ if target[mask].numel() > 0:
+ loss = self.silog_loss(prediction, target, mask)
+ else:
+ loss = 0 * torch.sum(prediction)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'Silog error, {loss}, d_square_mean: {d_square_mean}, d_mean: {d_mean}')
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ silog = SilogLoss()
+ pred = torch.rand((2, 3, 256, 256)).cuda()
+ gt = torch.zeros_like(pred) #torch.rand((2, 3, 256, 256)).cuda()
+ mask = gt > 0
+ out = silog(pred, gt, mask)
+ print(out)
diff --git a/finetune/Metric3D/training/mono/model/losses/SkyRegularization.py b/finetune/Metric3D/training/mono/model/losses/SkyRegularization.py
new file mode 100644
index 0000000000000000000000000000000000000000..a548fcc1aefae0cd201cb99956acfee3bb2bc1a7
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/SkyRegularization.py
@@ -0,0 +1,79 @@
+import numpy as np
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+class SkyRegularizationLoss(nn.Module):
+ """
+ Enforce losses on pixels without any gts.
+ """
+ def __init__(self, loss_weight=0.1, data_type=['sfm', 'stereo', 'lidar', 'denselidar', 'denselidar_nometric', 'denselidar_syn'], sky_id=142, sample_ratio=0.4, regress_value=1.8, normal_regress=None, normal_weight=1.0, **kwargs):
+ super(SkyRegularizationLoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.sky_id = sky_id
+ self.sample_ratio = sample_ratio
+ self.eps = 1e-6
+ self.regress_value = regress_value
+ self.normal_regress = normal_regress
+ self.normal_weight = normal_weight
+
+ def loss1(self, pred_sky):
+ loss = 1/ torch.exp((torch.sum(pred_sky) / (pred_sky.numel() + self.eps)))
+ return loss
+
+ def loss2(self, pred_sky):
+ loss = torch.sum(torch.abs(pred_sky - self.regress_value)) / (pred_sky.numel() + self.eps)
+ return loss
+
+ def loss_norm(self, pred_norm, sky_mask):
+ sky_norm = torch.FloatTensor(self.normal_regress).cuda()
+ sky_norm = sky_norm.unsqueeze(0).unsqueeze(2).unsqueeze(3)
+ dot = torch.cosine_similarity(pred_norm[:, :3, :, :].clone(), sky_norm, dim=1)
+
+ sky_mask_float = sky_mask.float().squeeze()
+ valid_mask = sky_mask_float \
+ * (dot.detach() < 0.999).float() \
+ * (dot.detach() > -0.999).float()
+
+ al = (1 - dot) * valid_mask
+ loss = torch.sum(al) / (torch.sum(sky_mask_float) + self.eps)
+ return loss
+
+ def forward(self, prediction, target, prediction_normal=None, mask=None, sem_mask=None, **kwargs):
+ sky_mask = sem_mask == self.sky_id
+ pred_sky = prediction[sky_mask]
+ pred_sky_numel = pred_sky.numel()
+
+ if pred_sky.numel() > 50:
+ samples = np.random.choice(pred_sky_numel, int(pred_sky_numel*self.sample_ratio), replace=False)
+
+ if pred_sky.numel() > 0:
+ #loss = - torch.sum(pred_wo_gt) / (pred_wo_gt.numel() + 1e-8)
+ loss = self.loss2(pred_sky)
+
+ if (prediction_normal != None) and (self.normal_regress != None):
+ loss_normal = self.loss_norm(prediction_normal, sky_mask)
+ loss = loss + loss_normal * self.normal_weight
+
+ else:
+ loss = torch.sum(prediction) * 0
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = torch.sum(prediction) * 0
+ print(f'SkyRegularization NAN error, {loss}')
+ # raise RuntimeError(f'Sky Loss error, {loss}')
+
+ return loss * self.loss_weight
+
+if __name__ == '__main__':
+ import cv2
+ sky = SkyRegularizationLoss()
+ pred_depth = np.random.random([2, 1, 480, 640])
+ gt_depth = np.zeros_like(pred_depth) #np.random.random([2, 1, 480, 640])
+ intrinsic = [[[100, 0, 200], [0, 100, 200], [0, 0, 1]], [[100, 0, 200], [0, 100, 200], [0, 0, 1]],]
+ gt_depth = torch.tensor(np.array(gt_depth, np.float32)).cuda()
+ pred_depth = torch.tensor(np.array(pred_depth, np.float32)).cuda()
+ intrinsic = torch.tensor(np.array(intrinsic, np.float32)).cuda()
+ mask = gt_depth > 0
+ loss1 = sky(pred_depth, gt_depth, mask, mask, intrinsic)
+ print(loss1)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/VNL.py b/finetune/Metric3D/training/mono/model/losses/VNL.py
new file mode 100644
index 0000000000000000000000000000000000000000..111b1ae690709417b2d9d15e6d930bfa69d4465e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/VNL.py
@@ -0,0 +1,260 @@
+import torch
+import torch.nn as nn
+import numpy as np
+
+
+class VNLoss(nn.Module):
+ """
+ Virtual Normal Loss.
+ """
+ def __init__(self,
+ delta_cos=0.867, delta_diff_x=0.01,
+ delta_diff_y=0.01, delta_diff_z=0.01,
+ delta_z=1e-5, sample_ratio=0.15,
+ loss_weight=1.0, data_type=['sfm', 'stereo', 'lidar', 'denselidar', 'denselidar_nometric', 'denselidar_syn'], **kwargs):
+ super(VNLoss, self).__init__()
+ self.delta_cos = delta_cos
+ self.delta_diff_x = delta_diff_x
+ self.delta_diff_y = delta_diff_y
+ self.delta_diff_z = delta_diff_z
+ self.delta_z = delta_z
+ self.sample_ratio = sample_ratio
+ self.loss_weight = loss_weight
+ self.data_type = data_type
+ self.eps = 1e-6
+
+
+ def init_image_coor(self, intrinsic, height, width):
+ # x_row = torch.arange(0, W, device="cuda")
+ # x = torch.tile(x_row, (H, 1))
+ # x = x.to(torch.float32)
+ # u_m_u0 = x[None, None, :, :] - u0
+ # self.register_buffer('u_m_u0', u_m_u0, persistent=False)
+
+ # y_col = torch.arange(0, H, device="cuda") # y_col = np.arange(0, height)
+ # y = torch.transpose(torch.tile(y_col, (W, 1)), 1, 0)
+ # y = y.to(torch.float32)
+ # v_m_v0 = y[None, None, :, :] - v0
+ # self.register_buffer('v_m_v0', v_m_v0, persistent=False)
+
+ # pix_idx_mat = torch.arange(H*W, device="cuda").reshape((H, W))
+ # self.register_buffer('pix_idx_mat', pix_idx_mat, persistent=False)
+ #self.pix_idx_mat = torch.arange(height*width, device="cuda").reshape((height, width))
+
+ u0 = intrinsic[:, 0, 2][:, None, None, None]
+ v0 = intrinsic[:, 1, 2][:, None, None, None]
+ y, x = torch.meshgrid([torch.arange(0, height, dtype=torch.float32, device="cuda"),
+ torch.arange(0, width, dtype=torch.float32, device="cuda")], indexing='ij')
+ u_m_u0 = x[None, None, :, :] - u0
+ v_m_v0 = y[None, None, :, :] - v0
+ # return u_m_u0, v_m_v0
+ self.register_buffer('v_m_v0', v_m_v0, persistent=False)
+ self.register_buffer('u_m_u0', u_m_u0, persistent=False)
+
+ def transfer_xyz(self, depth, focal_length, u_m_u0, v_m_v0):
+ x = u_m_u0 * depth / focal_length
+ y = v_m_v0 * depth / focal_length
+ z = depth
+ pw = torch.cat([x, y, z], 1).permute(0, 2, 3, 1).contiguous() # [b, h, w, c]
+ return pw
+
+ def select_index(self, B, H, W, mask):
+ """
+
+ """
+ p1 = []
+ p2 = []
+ p3 = []
+ pix_idx_mat = torch.arange(H*W, device="cuda").reshape((H, W))
+ for i in range(B):
+ inputs_index = torch.masked_select(pix_idx_mat, mask[i, ...].gt(self.eps))
+ num_effect_pixels = len(inputs_index)
+
+ intend_sample_num = int(H * W * self.sample_ratio)
+ sample_num = intend_sample_num if num_effect_pixels >= intend_sample_num else num_effect_pixels
+
+ shuffle_effect_pixels = torch.randperm(num_effect_pixels, device="cuda")
+ p1i = inputs_index[shuffle_effect_pixels[:sample_num]]
+ shuffle_effect_pixels = torch.randperm(num_effect_pixels, device="cuda")
+ p2i = inputs_index[shuffle_effect_pixels[:sample_num]]
+ shuffle_effect_pixels = torch.randperm(num_effect_pixels, device="cuda")
+ p3i = inputs_index[shuffle_effect_pixels[:sample_num]]
+
+ cat_null = torch.tensor(([0,] * (intend_sample_num - sample_num)), dtype=torch.long, device="cuda")
+ p1i = torch.cat([p1i, cat_null])
+ p2i = torch.cat([p2i, cat_null])
+ p3i = torch.cat([p3i, cat_null])
+
+ p1.append(p1i)
+ p2.append(p2i)
+ p3.append(p3i)
+
+ p1 = torch.stack(p1, dim=0)
+ p2 = torch.stack(p2, dim=0)
+ p3 = torch.stack(p3, dim=0)
+
+ p1_x = p1 % W
+ p1_y = torch.div(p1, W, rounding_mode='trunc').long() # p1 // W
+
+ p2_x = p2 % W
+ p2_y = torch.div(p2, W, rounding_mode='trunc').long() # p2 // W
+
+ p3_x = p3 % W
+ p3_y = torch.div(p3, W, rounding_mode='trunc').long() # p3 // W
+ p123 = {'p1_x': p1_x, 'p1_y': p1_y, 'p2_x': p2_x, 'p2_y': p2_y, 'p3_x': p3_x, 'p3_y': p3_y}
+ return p123
+
+ def form_pw_groups(self, p123, pw):
+ """
+ Form 3D points groups, with 3 points in each grouup.
+ :param p123: points index
+ :param pw: 3D points
+ :return:
+ """
+ B, _, _, _ = pw.shape
+ p1_x = p123['p1_x']
+ p1_y = p123['p1_y']
+ p2_x = p123['p2_x']
+ p2_y = p123['p2_y']
+ p3_x = p123['p3_x']
+ p3_y = p123['p3_y']
+
+ pw_groups = []
+ for i in range(B):
+ pw1 = pw[i, p1_y[i], p1_x[i], :]
+ pw2 = pw[i, p2_y[i], p2_x[i], :]
+ pw3 = pw[i, p3_y[i], p3_x[i], :]
+ pw_bi = torch.stack([pw1, pw2, pw3], dim=2)
+ pw_groups.append(pw_bi)
+ # [B, N, 3(x,y,z), 3(p1,p2,p3)]
+ pw_groups = torch.stack(pw_groups, dim=0)
+ return pw_groups
+
+ def filter_mask(self, p123, gt_xyz, delta_cos=0.867,
+ delta_diff_x=0.005,
+ delta_diff_y=0.005,
+ delta_diff_z=0.005):
+ pw = self.form_pw_groups(p123, gt_xyz)
+ pw12 = pw[:, :, :, 1] - pw[:, :, :, 0]
+ pw13 = pw[:, :, :, 2] - pw[:, :, :, 0]
+ pw23 = pw[:, :, :, 2] - pw[:, :, :, 1]
+ ###ignore linear
+ pw_diff = torch.cat([pw12[:, :, :, np.newaxis], pw13[:, :, :, np.newaxis], pw23[:, :, :, np.newaxis]],
+ 3) # [b, n, 3, 3]
+ m_batchsize, groups, coords, index = pw_diff.shape
+ proj_query = pw_diff.view(m_batchsize * groups, -1, index).permute(0, 2, 1).contiguous() # (B* X CX(3)) [bn, 3(p123), 3(xyz)]
+ proj_key = pw_diff.contiguous().view(m_batchsize * groups, -1, index) # B X (3)*C [bn, 3(xyz), 3(p123)]
+ q_norm = proj_query.norm(2, dim=2)
+ nm = torch.bmm(q_norm.contiguous().view(m_batchsize * groups, index, 1), q_norm.view(m_batchsize * groups, 1, index)) #[]
+ energy = torch.bmm(proj_query, proj_key) # transpose check [bn, 3(p123), 3(p123)]
+ norm_energy = energy / (nm + self.eps)
+ norm_energy = norm_energy.contiguous().view(m_batchsize * groups, -1)
+ mask_cos = torch.sum((norm_energy > delta_cos) + (norm_energy < -delta_cos), 1) > 3 # igonre
+ mask_cos = mask_cos.contiguous().view(m_batchsize, groups)
+ ##ignore padding and invilid depth
+ mask_pad = torch.sum(pw[:, :, 2, :] > self.delta_z, 2) == 3
+
+ ###ignore near
+ mask_x = torch.sum(torch.abs(pw_diff[:, :, 0, :]) < delta_diff_x, 2) > 0
+ mask_y = torch.sum(torch.abs(pw_diff[:, :, 1, :]) < delta_diff_y, 2) > 0
+ mask_z = torch.sum(torch.abs(pw_diff[:, :, 2, :]) < delta_diff_z, 2) > 0
+
+ mask_ignore = (mask_x & mask_y & mask_z) | mask_cos
+ mask_near = ~mask_ignore
+ mask = mask_pad & mask_near
+
+ return mask, pw
+
+ def select_points_groups(self, gt_depth, pred_depth, intrinsic, mask):
+ B, C, H, W = gt_depth.shape
+ focal_length = intrinsic[:, 0, 0][:, None, None, None]
+ u_m_u0, v_m_v0 = self.u_m_u0, self.v_m_v0 # self.init_image_coor(intrinsic, height=H, width=W)
+
+ pw_gt = self.transfer_xyz(gt_depth, focal_length, u_m_u0, v_m_v0)
+ pw_pred = self.transfer_xyz(pred_depth, focal_length, u_m_u0, v_m_v0)
+
+ p123 = self.select_index(B, H, W, mask)
+ # mask:[b, n], pw_groups_gt: [b, n, 3(x,y,z), 3(p1,p2,p3)]
+ mask, pw_groups_gt = self.filter_mask(p123, pw_gt,
+ delta_cos=0.867,
+ delta_diff_x=0.005,
+ delta_diff_y=0.005,
+ delta_diff_z=0.005)
+
+ # [b, n, 3, 3]
+ pw_groups_pred = self.form_pw_groups(p123, pw_pred)
+ pw_groups_pred[pw_groups_pred[:, :, 2, :] == 0] = 0.0001
+ mask_broadcast = mask.repeat(1, 9).reshape(B, 3, 3, -1).permute(0, 3, 1, 2).contiguous()
+ pw_groups_pred_not_ignore = pw_groups_pred[mask_broadcast].reshape(1, -1, 3, 3)
+ pw_groups_gt_not_ignore = pw_groups_gt[mask_broadcast].reshape(1, -1, 3, 3)
+
+ return pw_groups_gt_not_ignore, pw_groups_pred_not_ignore
+
+ def forward(self, prediction, target, mask, intrinsic, select=True, **kwargs): #gt_depth, pred_depth, select=True):
+ """
+ Virtual normal loss.
+ :param prediction: predicted depth map, [B,W,H,C]
+ :param data: target label, ground truth depth, [B, W, H, C], padding region [padding_up, padding_down]
+ :return:
+ """
+ loss = self.get_loss(prediction, target, mask, intrinsic, select, **kwargs)
+ return loss
+
+
+ def get_loss(self, prediction, target, mask, intrinsic, select=True, **kwargs):
+ # configs for the cameras
+ # focal_length = intrinsic[:, 0, 0][:, None, None, None]
+ # u0 = intrinsic[:, 0, 2][:, None, None, None]
+ # v0 = intrinsic[:, 1, 2][:, None, None, None]
+ B, _, H, W = target.shape
+ if 'u_m_u0' not in self._buffers or 'v_m_v0' not in self._buffers \
+ or self.u_m_u0.shape != torch.Size([B,1,H,W]) or self.v_m_v0.shape != torch.Size([B,1,H,W]):
+ self.init_image_coor(intrinsic, H, W)
+
+
+ gt_points, pred_points = self.select_points_groups(target, prediction, intrinsic, mask)
+
+ gt_p12 = gt_points[:, :, :, 1] - gt_points[:, :, :, 0]
+ gt_p13 = gt_points[:, :, :, 2] - gt_points[:, :, :, 0]
+ pred_p12 = pred_points[:, :, :, 1] - pred_points[:, :, :, 0]
+ pred_p13 = pred_points[:, :, :, 2] - pred_points[:, :, :, 0]
+
+ gt_normal = torch.cross(gt_p12, gt_p13, dim=2)
+ pred_normal = torch.cross(pred_p12, pred_p13, dim=2)
+ pred_norm = torch.norm(pred_normal, 2, dim=2, keepdim=True)
+ gt_norm = torch.norm(gt_normal, 2, dim=2, keepdim=True)
+ pred_mask = pred_norm == 0.0
+ gt_mask = gt_norm == 0.0
+ pred_mask = pred_mask.to(torch.float32)
+ gt_mask = gt_mask.to(torch.float32)
+ pred_mask *= self.eps
+ gt_mask *= self.eps
+ gt_norm = gt_norm + gt_mask
+ pred_norm = pred_norm + pred_mask
+ gt_normal = gt_normal / gt_norm
+ pred_normal = pred_normal / pred_norm
+ loss = torch.abs(gt_normal - pred_normal)
+ loss = torch.sum(torch.sum(loss, dim=2), dim=0)
+ if select:
+ loss, indices = torch.sort(loss, dim=0, descending=False)
+ loss = loss[int(loss.size(0) * 0.25):]
+ loss = torch.sum(loss) / (loss.numel() + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ loss = 0 * torch.sum(prediction)
+ print(f'VNL NAN error, {loss}')
+ return loss * self.loss_weight
+
+
+if __name__ == '__main__':
+ import cv2
+ vnl_loss = VNLoss()
+ pred_depth = np.random.random([2, 1, 480, 640])
+ gt_depth = np.zeros_like(pred_depth) #np.random.random([2, 1, 480, 640])
+ intrinsic = [[[100, 0, 200], [0, 100, 200], [0, 0, 1]], [[100, 0, 200], [0, 100, 200], [0, 0, 1]],]
+ gt_depth = torch.tensor(np.array(gt_depth, np.float32)).cuda()
+ pred_depth = torch.tensor(np.array(pred_depth, np.float32)).cuda()
+ intrinsic = torch.tensor(np.array(intrinsic, np.float32)).cuda()
+ mask = gt_depth > 0
+ loss1 = vnl_loss(pred_depth, gt_depth, mask, intrinsic)
+ loss2 = vnl_loss(pred_depth, gt_depth, mask, intrinsic)
+ print(loss1, loss2)
diff --git a/finetune/Metric3D/training/mono/model/losses/WCEL.py b/finetune/Metric3D/training/mono/model/losses/WCEL.py
new file mode 100644
index 0000000000000000000000000000000000000000..a60c5e60a0f4500b42163645e60d3554d119adfa
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/WCEL.py
@@ -0,0 +1,157 @@
+import torch
+import torch.nn as nn
+import numpy as np
+
+
+class WCELoss(nn.Module):
+ """
+ Weighted Cross-entropy Loss Function.
+ """
+ def __init__(self, depth_normalize, out_channel=200, loss_weight=1.0, data_type=['stereo', 'lidar'], **kwargs):
+ super(WCELoss, self).__init__()
+ self.loss_weight = loss_weight
+ self.depth_min = depth_normalize[0]
+ self.depth_max = depth_normalize[1]
+ self.bins_num = out_channel
+ self.depth_min_log = torch.log10(torch.tensor(self.depth_min))
+
+ self.alpha = 2 #0.2
+ self.config_bins()
+ self.noise_sample_ratio = 0.9 #kwargs['noise_sample_ratio'] if 'noise_sample_ratio' in kwargs else 1.0
+ self.data_type = data_type
+ self.eps = 1e-6
+
+ def config_bins(self):
+ # Modify some configs
+ self.depth_bins_interval = (torch.log10(torch.tensor(self.depth_max)) -
+ self.depth_min_log) / self.bins_num
+ bins_edges_in_log = self.depth_min_log + self.depth_bins_interval * torch.tensor(list(range(self.bins_num)) + [self.bins_num,])
+ #bins_edges_in_log = torch.from_numpy(bins_edges_in_log)
+ # The boundary of each bin
+ # bins_edges_in_log = np.array([self.depth_min_log + self.depth_bins_interval * (i + 0.5)
+ # for i in range(self.bins_num)])
+ bins_weight = torch.tensor([[np.exp(-self.alpha * (i - j) ** 2) for i in range(self.bins_num )]
+ for j in np.arange(self.bins_num )]).cuda()
+ self.register_buffer("bins_weight", bins_weight.float(), persistent=False)
+ self.register_buffer("bins_edges_in_log", bins_edges_in_log.float(), persistent=False)
+
+ def depth_to_bins_in_log(self, depth, mask):
+ """
+ Discretize depth into depth bins. Predefined bins edges are in log space.
+ Mark invalid padding area as bins_num + 1
+ Args:
+ @depth: 1-channel depth, [B, 1, h, w]
+ return: depth bins [B, C, h, w]
+ """
+ invalid_mask = ~mask
+ #depth[depth < self.depth_min] = self.depth_min
+ #depth[depth > self.depth_max] = self.depth_max
+ mask_lower = (depth <= self.depth_min)
+ mask_higher = (depth >= self.depth_max)
+ depth_bins_log = ((torch.log10(torch.abs(depth)) - self.depth_min_log) / self.depth_bins_interval).to(torch.int)
+
+ depth_bins_log[mask_lower] = 0
+ depth_bins_log[mask_higher] = self.bins_num - 1
+ depth_bins_log[depth_bins_log == self.bins_num] = self.bins_num - 1
+
+ depth_bins_log[invalid_mask] = self.bins_num + 1
+ return depth_bins_log
+
+ def depth_to_bins(self, depth, mask, depth_edges, size_limite=(300, 300)):
+ """
+ Discretize depth into depth bins. Predefined bins edges are provided.
+ Mark invalid padding area as bins_num + 1
+ Args:
+ @depth: 1-channel depth, [B, 1, h, w]
+ return: depth bins [B, C, h, w]
+ """
+ def _depth_to_bins_block_(depth, mask, depth_edges):
+ bins_id = torch.sum(depth_edges[:, None, None, None, :] < torch.abs(depth)[:, :, :, :, None], dim=-1)
+ bins_id = bins_id - 1
+ invalid_mask = ~mask
+ mask_lower = (depth <= self.depth_min)
+ mask_higher = (depth >= self.depth_max)
+
+ bins_id[mask_lower] = 0
+ bins_id[mask_higher] = self.bins_num - 1
+ bins_id[bins_id == self.bins_num] = self.bins_num - 1
+
+ bins_id[invalid_mask] = self.bins_num + 1
+ return bins_id
+ _, _, H, W = depth.shape
+ bins = mask.clone().long()
+ h_blocks = np.ceil(H / size_limite[0]).astype(np.int)
+ w_blocks = np.ceil(W/ size_limite[1]).astype(np.int)
+ for i in range(h_blocks):
+ for j in range(w_blocks):
+ h_start = i*size_limite[0]
+ h_end_proposal = (i + 1) * size_limite[0]
+ h_end = h_end_proposal if h_end_proposal < H else H
+ w_start = j*size_limite[1]
+ w_end_proposal = (j + 1) * size_limite[1]
+ w_end = w_end_proposal if w_end_proposal < W else W
+ bins_ij = _depth_to_bins_block_(
+ depth[:, :, h_start:h_end, w_start:w_end],
+ mask[:, :, h_start:h_end, w_start:w_end],
+ depth_edges
+ )
+ bins[:, :, h_start:h_end, w_start:w_end] = bins_ij
+ return bins
+
+
+ # def mask_maximum_loss(self, loss_pixels, mask):
+ # mask = mask.reshape(mask.size(0), -1)
+ # valid_pix_bt = torch.sum(mask, dim=1)
+ # mask_noise_num = (valid_pix_bt * self.noise_sample_ratio).int()
+
+ # loss_sample = []
+ # for i in range(loss_pixels.size(0)):
+ # sorted_losses, _ = torch.sort(loss_pixels[i, :][mask[i, ...]])
+ # loss_sample.append(torch.sum(sorted_losses[:mask_noise_num[i]]))
+
+ # return torch.tensor(loss_sample), mask_noise_num
+
+
+ def forward(self, prediction, target, mask=None, pred_logit=None, **kwargs): #pred_logit, gt_bins, gt):
+ B, _, H, W = target.shape
+ if 'bins_edges' not in kwargs or kwargs['bins_edges'] is None:
+ # predefined depth bins in log space
+ gt_bins = self.depth_to_bins_in_log(target, mask)
+ else:
+ bins_edges = kwargs['bins_edges']
+ gt_bins = self.depth_to_bins(target, mask, bins_edges)
+
+ classes_range = torch.arange(self.bins_num, device=gt_bins.device, dtype=gt_bins.dtype)
+ log_pred = torch.nn.functional.log_softmax(pred_logit, 1)
+ log_pred = log_pred.reshape(B, log_pred.size(1), -1).permute((0, 2, 1))
+ gt_reshape = gt_bins.reshape((B, -1))[:, :, None]
+ one_hot = (gt_reshape == classes_range).to(dtype=torch.float, device=pred_logit.device)
+ weight = torch.matmul(one_hot, self.bins_weight)
+ weight_log_pred = weight * log_pred
+ loss_pixeles = - torch.sum(weight_log_pred, dim=2)
+
+ valid_pixels = torch.sum(mask).to(dtype=torch.float, device=pred_logit.device)
+ loss = torch.sum(loss_pixeles) / (valid_pixels + self.eps)
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'WCEL error, {loss}')
+ return loss * self.loss_weight
+
+
+
+if __name__ == '__main__':
+ import cv2
+ wcel = WCELoss((0.0004, 1))
+ pred_depth = np.abs(np.random.random([2, 1, 480, 640]))
+ pred_logit = np.random.random([2, 200, 480, 640])
+ gt_depth = np.random.random([2, 1, 480, 640]) - 0.5 #np.zeros_like(pred_depth) #
+ intrinsic = [[100, 100, 200, 200], [200, 200, 300, 300]]
+ gt_depth = torch.tensor(np.array(gt_depth, np.float32)).cuda()
+ pred_depth = torch.tensor(np.array(pred_depth, np.float32)).cuda()
+ intrinsic = torch.tensor(np.array(intrinsic, np.float32)).cuda()
+ pred_logit = torch.tensor(np.array(pred_logit, np.float32)).cuda()
+
+
+ mask = gt_depth > 0
+ loss1 = wcel(gt_depth, gt_depth, mask, intrinsic=intrinsic, pred_logit=pred_logit)
+ loss2 = wcel(gt_depth, gt_depth, mask, intrinsic=intrinsic, pred_logit=pred_logit)
+ print(loss1, loss2)
diff --git a/finetune/Metric3D/training/mono/model/losses/__init__.py b/finetune/Metric3D/training/mono/model/losses/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..97df57e14af288adea69c2a2df237da7ae580787
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/__init__.py
@@ -0,0 +1,32 @@
+from .SiLog import SilogLoss
+from .WCEL import WCELoss
+from .VNL import VNLoss
+from .Gradient import GradientLoss_Li, GradientLoss
+from .Ranking import EdgeguidedRankingLoss, RankingLoss
+from .Regularization import RegularizationLoss
+from .SSIL import SSILoss
+from .HDNL import HDNLoss
+from .HDSNL import HDSNLoss
+from .NormalRegression import EdgeguidedNormalLoss
+from .depth_to_normal import Depth2Normal
+from .photometric_loss_functions import PhotometricGeometricLoss
+from .HDSNL_random import HDSNRandomLoss
+from .HDNL_random import HDNRandomLoss
+from .AdabinsLoss import AdabinsLoss
+from .SkyRegularization import SkyRegularizationLoss
+from .PWN_Planes import PWNPlanesLoss
+from .L1 import L1Loss, L1DispLoss, L1InverseLoss
+from .ConfidenceLoss import ConfidenceLoss
+from .ScaleInvL1 import ScaleInvL1Loss
+from .NormalBranchLoss import NormalBranchLoss, DeNoConsistencyLoss
+from .GRUSequenceLoss import GRUSequenceLoss
+from .ConfidenceGuideLoss import ConfidenceGuideLoss
+from .ScaleAlignLoss import ScaleAlignLoss
+
+__all__ = [
+ 'SilogLoss', 'WCELoss', 'VNLoss', 'GradientLoss_Li', 'GradientLoss', 'EdgeguidedRankingLoss',
+ 'RankingLoss', 'RegularizationLoss', 'SSILoss', 'HDNLoss', 'HDSNLoss', 'EdgeguidedNormalLoss', 'Depth2Normal',
+ 'PhotometricGeometricLoss', 'HDSNRandomLoss', 'HDNRandomLoss', 'AdabinsLoss', 'SkyRegularizationLoss',
+ 'PWNPlanesLoss', 'L1Loss',
+ 'ConfidenceLoss', 'ScaleInvL1Loss', 'L1DispLoss', 'NormalBranchLoss', 'L1InverseLoss', 'GRUSequenceLoss', 'ConfidenceGuideLoss', 'DeNoConsistencyLoss', 'ScaleAlignLoss'
+]
diff --git a/finetune/Metric3D/training/mono/model/losses/depth_to_normal.py b/finetune/Metric3D/training/mono/model/losses/depth_to_normal.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0b1892ad35a964673bd550e73c255ca530fc2dd
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/depth_to_normal.py
@@ -0,0 +1,302 @@
+import numpy as np
+import torch
+import torch.nn as nn
+
+class Backprojection(nn.Module):
+ """Layer to backproject a depth image given the camera intrinsics
+ Attributes
+ xy (Nx3x(HxW)): homogeneous pixel coordinates on regular grid
+ """
+ def __init__(self, height, width):
+ """
+ Args:
+ height (int): image height
+ width (int): image width
+ """
+ super(Backprojection, self).__init__()
+
+ self.height = height
+ self.width = width
+
+ # generate regular grid
+ meshgrid = np.meshgrid(range(self.width), range(self.height), indexing='xy')
+ id_coords = np.stack(meshgrid, axis=0).astype(np.float32)
+ id_coords = torch.tensor(id_coords, device="cuda")
+
+ # generate homogeneous pixel coordinates
+ # self.ones = nn.Parameter(torch.ones(1, 1, self.height * self.width),
+ # requires_grad=False)
+ ones = torch.ones(1, 1, self.height * self.width, device="cuda")
+ xy = torch.unsqueeze(
+ torch.stack([id_coords[0].view(-1), id_coords[1].view(-1)], 0),
+ 0
+ )
+ xy = torch.cat([xy, ones], 1)
+ #self.xy = nn.Parameter(self.xy, requires_grad=False)
+ self.register_buffer('xy', xy, persistent=False)
+ self.register_buffer('ones', ones, persistent=False)
+
+ # for virtual camera only
+ horizontal_angle_range=[195.0, -15.0]
+ vertical_angle_range=[150.0, 0.0]
+
+ horizontal_sample_num=641
+ vertical_sample_num=481
+
+ self.horizontal_angle_range = horizontal_angle_range
+ self.vertical_angle_range = vertical_angle_range
+ self.horizontal_sample_num = horizontal_sample_num
+ self.vertical_sample_num = vertical_sample_num
+
+ self.horizontal_step = (self.horizontal_angle_range[1] - self.horizontal_angle_range[0]) / (
+ self.horizontal_sample_num - 1)
+ self.vertical_step = (self.vertical_angle_range[1] - self.vertical_angle_range[0]) / (
+ self.vertical_sample_num - 1)
+
+ self.horizontal_samples = np.arange(self.horizontal_angle_range[0], self.horizontal_angle_range[1],
+ self.horizontal_step)
+ self.vertical_samples = np.arange(self.vertical_angle_range[0], self.vertical_angle_range[1],
+ self.vertical_step)
+
+ horizontal_samples_in_rad = self.horizontal_samples / 180.0 * np.pi
+ vertical_samples_in_rad = self.vertical_samples / 180.0 * np.pi
+
+ virt_H = len(self.vertical_samples)
+ virt_W = len(self.horizontal_samples)
+
+ self.virt_H, self.virt_W = virt_H, virt_W
+
+ cos_theta = np.tile(np.cos(vertical_samples_in_rad).reshape(-1, 1), (1, virt_W))
+ sin_theta = np.tile(np.sin(vertical_samples_in_rad).reshape(-1, 1), (1, virt_W))
+ cos_phi = np.tile(np.cos(horizontal_samples_in_rad).reshape(1, -1), (virt_H, 1))
+ sin_phi = np.tile(np.sin(horizontal_samples_in_rad).reshape(1, -1), (virt_H, 1))
+
+ x = (sin_theta * cos_phi).reshape(1, virt_H, virt_W)
+ y = cos_theta.reshape(1, virt_H, virt_W)
+ z = (sin_theta * sin_phi).reshape(1, virt_H, virt_W)
+
+ self.dir_in_virt_cam = np.concatenate((x, y, z), axis=0)
+ self.dir_in_virt_cam = self.dir_in_virt_cam.reshape(3, self.virt_H * self.virt_W)
+
+
+ def forward(self, depth, inv_K, img_like_out=False):
+ """
+ Args:
+ depth (Nx1xHxW): depth map
+ inv_K (Nx4x4): inverse camera intrinsics
+ img_like_out (bool): if True, the output shape is Nx4xHxW; else Nx4x(HxW)
+ Returns:
+ points (Nx4x(HxW)): 3D points in homogeneous coordinates
+ """
+ depth = depth.contiguous()
+
+ xy = self.xy.repeat(depth.shape[0], 1, 1)
+ ones = self.ones.repeat(depth.shape[0],1,1)
+
+ points = torch.matmul(inv_K[:, :3, :3], xy)
+ points = depth.view(depth.shape[0], 1, -1) * points
+ points = torch.cat([points, ones], 1)
+
+ if img_like_out:
+ points = points.reshape(depth.shape[0], 4, self.height, self.width)
+ return points
+
+
+def get_surface_normalv2(xyz, patch_size=5, mask_valid=None):
+ """
+ xyz: xyz coordinates, in [b, h, w, c]
+ patch: [p1, p2, p3,
+ p4, p5, p6,
+ p7, p8, p9]
+ surface_normal = [(p9-p1) x (p3-p7)] + [(p6-p4) - (p8-p2)]
+ return: normal [h, w, 3, b]
+ """
+ b, h, w, c = xyz.shape
+ half_patch = patch_size // 2
+
+ if mask_valid == None:
+ mask_valid = xyz[:, :, :, 2] > 0 # [b, h, w]
+ mask_pad = torch.zeros((b, h + patch_size - 1, w + patch_size - 1), device=mask_valid.device).bool()
+ mask_pad[:, half_patch:-half_patch, half_patch:-half_patch] = mask_valid
+
+ xyz_pad = torch.zeros((b, h + patch_size - 1, w + patch_size - 1, c), dtype=xyz.dtype, device=xyz.device)
+ xyz_pad[:, half_patch:-half_patch, half_patch:-half_patch, :] = xyz
+
+ xyz_left = xyz_pad[:, half_patch:half_patch + h, :w, :] # p4
+ xyz_right = xyz_pad[:, half_patch:half_patch + h, -w:, :] # p6
+ xyz_top = xyz_pad[:, :h, half_patch:half_patch + w, :] # p2
+ xyz_bottom = xyz_pad[:, -h:, half_patch:half_patch + w, :] # p8
+ xyz_horizon = xyz_left - xyz_right # p4p6
+ xyz_vertical = xyz_top - xyz_bottom # p2p8
+
+ xyz_left_in = xyz_pad[:, half_patch:half_patch + h, 1:w+1, :] # p4
+ xyz_right_in = xyz_pad[:, half_patch:half_patch + h, patch_size-1:patch_size-1+w, :] # p6
+ xyz_top_in = xyz_pad[:, 1:h+1, half_patch:half_patch + w, :] # p2
+ xyz_bottom_in = xyz_pad[:, patch_size-1:patch_size-1+h, half_patch:half_patch + w, :] # p8
+ xyz_horizon_in = xyz_left_in - xyz_right_in # p4p6
+ xyz_vertical_in = xyz_top_in - xyz_bottom_in # p2p8
+
+ n_img_1 = torch.cross(xyz_horizon_in, xyz_vertical_in, dim=3)
+ n_img_2 = torch.cross(xyz_horizon, xyz_vertical, dim=3)
+
+ # re-orient normals consistently
+ orient_mask = torch.sum(n_img_1 * xyz, dim=3) > 0
+ n_img_1[orient_mask] *= -1
+ orient_mask = torch.sum(n_img_2 * xyz, dim=3) > 0
+ n_img_2[orient_mask] *= -1
+
+ n_img1_L2 = torch.sqrt(torch.sum(n_img_1 ** 2, dim=3, keepdim=True) + 1e-4)
+ n_img1_norm = n_img_1 / (n_img1_L2 + 1e-8)
+
+ n_img2_L2 = torch.sqrt(torch.sum(n_img_2 ** 2, dim=3, keepdim=True) + 1e-4)
+ n_img2_norm = n_img_2 / (n_img2_L2 + 1e-8)
+
+ # average 2 norms
+ n_img_aver = n_img1_norm + n_img2_norm
+ n_img_aver_L2 = torch.sqrt(torch.sum(n_img_aver ** 2, dim=3, keepdim=True) + 1e-4)
+ n_img_aver_norm = n_img_aver / (n_img_aver_L2 + 1e-8)
+ # re-orient normals consistently
+ orient_mask = torch.sum(n_img_aver_norm * xyz, dim=3) > 0
+ n_img_aver_norm[orient_mask] *= -1
+ #n_img_aver_norm_out = n_img_aver_norm.permute((1, 2, 3, 0)) # [h, w, c, b]
+
+ # get mask for normals
+ mask_p4p6 = mask_pad[:, half_patch:half_patch + h, :w] & mask_pad[:, half_patch:half_patch + h, -w:]
+ mask_p2p8 = mask_pad[:, :h, half_patch:half_patch + w] & mask_pad[:, -h:, half_patch:half_patch + w]
+ mask_normal = mask_p2p8 & mask_p4p6
+ n_img_aver_norm[~mask_normal] = 0
+
+ # a = torch.sum(n_img1_norm_out*n_img2_norm_out, dim=2).cpu().numpy().squeeze()
+ # plt.imshow(np.abs(a), cmap='rainbow')
+ # plt.show()
+ return n_img_aver_norm.permute(0, 3, 1, 2).contiguous(), mask_normal[:, None, :, :] # [b, h, w, 3]
+
+class Depth2Normal(nn.Module):
+ """Layer to compute surface normal from depth map
+ """
+ def __init__(self,):
+ """
+ Args:
+ height (int): image height
+ width (int): image width
+ """
+ super(Depth2Normal, self).__init__()
+
+ def init_img_coor(self, height, width):
+ """
+ Args:
+ height (int): image height
+ width (int): image width
+ """
+ y, x = torch.meshgrid([torch.arange(0, height, dtype=torch.float32, device="cuda"),
+ torch.arange(0, width, dtype=torch.float32, device="cuda")], indexing='ij')
+ meshgrid = torch.stack((x, y))
+
+ # # generate regular grid
+ # meshgrid = np.meshgrid(range(width), range(height), indexing='xy')
+ # id_coords = np.stack(meshgrid, axis=0).astype(np.float32)
+ # id_coords = torch.tensor(id_coords)
+
+ # generate homogeneous pixel coordinates
+ ones = torch.ones((1, 1, height * width), device="cuda")
+ # xy = torch.unsqueeze(
+ # torch.stack([x.reshape(-1), y.reshape(-1)], 0),
+ # 0
+ # )
+ xy = meshgrid.reshape(2, -1).unsqueeze(0)
+ xy = torch.cat([xy, ones], 1)
+
+ self.register_buffer('xy', xy, persistent=False)
+
+ def back_projection(self, depth, inv_K, img_like_out=False, scale=1.0):
+ """
+ Args:
+ depth (Nx1xHxW): depth map
+ inv_K (Nx4x4): inverse camera intrinsics
+ img_like_out (bool): if True, the output shape is Nx4xHxW; else Nx4x(HxW)
+ Returns:
+ points (Nx4x(HxW)): 3D points in homogeneous coordinates
+ """
+ B, C, H, W = depth.shape
+ depth = depth.contiguous()
+ # xy = self.init_img_coor(height=H, width=W)
+ xy = self.xy # xy.repeat(depth.shape[0], 1, 1)
+ #ones = self.ones.repeat(depth.shape[0],1,1)
+
+ points = torch.matmul(inv_K[:, :3, :3], xy)
+ points = depth.view(depth.shape[0], 1, -1) * points
+ depth_descale = points[:, 2:3, :] / scale
+ points = torch.cat((points[:, 0:2, :], depth_descale), dim=1)
+ #points = torch.cat([points, ones], 1)
+
+ if img_like_out:
+ points = points.reshape(depth.shape[0], 3, H, W)
+ return points
+
+ # def transfer_xyz(self, u0, v0, H, W, depth, focal_length):
+ # x_row = np.arange(0, W)
+ # x = np.tile(x_row, (H, 1))
+ # x = x.astype(np.float32)
+ # x = torch.from_numpy(x.copy()).cuda()
+ # u_m_u0 = x[None, None, :, :] - u0
+ # self.register_buffer('u_m_u0', u_m_u0, persistent=False)
+
+ # y_col = np.arange(0, H) # y_col = np.arange(0, height)
+ # y = np.tile(y_col, (W, 1)).T
+ # y = y.astype(np.float32)
+ # y = torch.from_numpy(y.copy()).cuda()
+ # v_m_v0 = y[None, None, :, :] - v0
+ # self.register_buffer('v_m_v0', v_m_v0, persistent=False)
+
+ # pix_idx_mat = torch.arange(H*W).reshape((H, W)).cuda()
+ # self.register_buffer('pix_idx_mat', pix_idx_mat, persistent=False)
+
+ # x = self.u_m_u0 * depth / focal_length
+ # y = self.v_m_v0 * depth / focal_length
+ # z = depth
+ # pw = torch.cat([x, y, z], 1).permute(0, 2, 3, 1) # [b, h, w, c]
+ # return pw
+
+ def forward(self, depth, intrinsics, masks, scale):
+ """
+ Args:
+ depth (Nx1xHxW): depth map
+ #inv_K (Nx4x4): inverse camera intrinsics
+ intrinsics (Nx4): camera intrinsics
+ Returns:
+ normal (Nx3xHxW): normalized surface normal
+ mask (Nx1xHxW): valid mask for surface normal
+ """
+ B, C, H, W = depth.shape
+ if 'xy' not in self._buffers or self.xy.shape[-1] != H*W:
+ self.init_img_coor(height=H, width=W)
+ # Compute 3D point cloud
+ inv_K = intrinsics.inverse()
+
+ xyz = self.back_projection(depth, inv_K, scale=scale) # [N, 4, HxW]
+
+ xyz = xyz.view(depth.shape[0], 3, H, W)
+ xyz = xyz[:,:3].permute(0, 2, 3, 1).contiguous() # [b, h, w, c]
+
+ # focal_length = intrinsics[:, 0, 0][:, None, None, None]
+ # u0 = intrinsics[:, 0, 2][:, None, None, None]
+ # v0 = intrinsics[:, 1, 2][:, None, None, None]
+ # xyz2 = self.transfer_xyz(u0, v0, H, W, depth, focal_length)
+
+ normals, normal_masks = get_surface_normalv2(xyz, mask_valid=masks.squeeze())
+ normal_masks = normal_masks & masks
+ return normals, normal_masks
+
+
+
+if __name__ == '__main__':
+ d2n = Depth2Normal()
+ depth = np.random.randn(2, 1, 20, 22)
+ intrin = np.array([[300, 0, 10], [0, 300, 10], [0,0,1]])
+ intrinsics = np.stack([intrin, intrin], axis=0)
+
+ depth_t = torch.from_numpy(depth).cuda().float()
+ intrinsics = torch.from_numpy(intrinsics).cuda().float()
+ normal = d2n(depth_t, intrinsics)
+ normal2 = d2n(depth_t, intrinsics)
+ print(normal)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/losses/photometric_loss_functions.py b/finetune/Metric3D/training/mono/model/losses/photometric_loss_functions.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f6d16723574e0d1e48ad4c3b398a3dbb8939ca1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/losses/photometric_loss_functions.py
@@ -0,0 +1,300 @@
+import torch
+from torch import nn
+import torch.nn.functional as F
+import numpy as np
+
+from mono.utils.inverse_warp import inverse_warp2
+
+#device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
+
+
+class SSIM(nn.Module):
+ """Layer to compute the SSIM loss between a pair of images
+ """
+ def __init__(self):
+ super(SSIM, self).__init__()
+ k = 7
+ self.mu_x_pool = nn.AvgPool2d(k, 1)
+ self.mu_y_pool = nn.AvgPool2d(k, 1)
+ self.sig_x_pool = nn.AvgPool2d(k, 1)
+ self.sig_y_pool = nn.AvgPool2d(k, 1)
+ self.sig_xy_pool = nn.AvgPool2d(k, 1)
+
+ self.refl = nn.ReflectionPad2d(k//2)
+
+ self.C1 = 0.01 ** 2
+ self.C2 = 0.03 ** 2
+
+ def forward(self, x, y):
+ x = self.refl(x)
+ y = self.refl(y)
+
+ mu_x = self.mu_x_pool(x)
+ mu_y = self.mu_y_pool(y)
+
+ sigma_x = self.sig_x_pool(x ** 2) - mu_x ** 2
+ sigma_y = self.sig_y_pool(y ** 2) - mu_y ** 2
+ sigma_xy = self.sig_xy_pool(x * y) - mu_x * mu_y
+
+ SSIM_n = (2 * mu_x * mu_y + self.C1) * (2 * sigma_xy + self.C2)
+ SSIM_d = (mu_x ** 2 + mu_y ** 2 + self.C1) * (sigma_x + sigma_y + self.C2)
+
+ return torch.clamp((1 - SSIM_n / SSIM_d) / 2, 0, 1)
+
+
+class PhotometricGeometricLoss(nn.Module):
+ """The photometric and geometric loss between target and reference frames."""
+ def __init__(self, loss_weight=1.0, data_type=['sfm', 'stereo', 'lidar'], **kwargs):
+ super(PhotometricGeometricLoss, self).__init__()
+ self.no_min_optimize = False
+ self.no_auto_mask = False
+ self.return_dynamic_mask = True
+ self.ssim_loss = SSIM()
+ self.no_ssim = False
+ self.no_dynamic_mask = False
+ self.loss_weight_photo = 1.0
+ self.loss_weight_geometry = 0.5
+ self.total_loss_weight = loss_weight
+ self.data_type = data_type
+
+
+ def photo_and_geometry_loss(self, tgt_img, ref_imgs, tgt_depth, ref_depths, intrinsics, poses, poses_inv):
+
+ diff_img_list = []
+ diff_color_list = []
+ diff_depth_list = []
+ valid_mask_list = []
+ auto_mask_list = []
+
+ for ref_img, ref_depth, pose, pose_inv in zip(ref_imgs, ref_depths, poses, poses_inv):
+ (
+ diff_img_tmp1,
+ diff_color_tmp1,
+ diff_depth_tmp1,
+ valid_mask_tmp1,
+ auto_mask_tmp1
+ ) = self.compute_pairwise_loss(
+ tgt_img,
+ ref_img,
+ tgt_depth,
+ ref_depth,
+ pose,
+ intrinsics,
+ )
+
+ (
+ diff_img_tmp2,
+ diff_color_tmp2,
+ diff_depth_tmp2,
+ valid_mask_tmp2,
+ auto_mask_tmp2
+ ) = self.compute_pairwise_loss(
+ ref_img,
+ tgt_img,
+ ref_depth,
+ tgt_depth,
+ pose_inv,
+ intrinsics,
+ )
+
+ diff_img_list += [diff_img_tmp1, diff_img_tmp2]
+ diff_color_list += [diff_color_tmp1, diff_color_tmp2]
+ diff_depth_list += [diff_depth_tmp1, diff_depth_tmp2]
+ valid_mask_list += [valid_mask_tmp1, valid_mask_tmp2]
+ auto_mask_list += [auto_mask_tmp1, auto_mask_tmp2]
+
+ diff_img = torch.cat(diff_img_list, dim=1)
+ diff_color = torch.cat(diff_color_list, dim=1)
+ diff_depth = torch.cat(diff_depth_list, dim=1)
+ valid_mask = torch.cat(valid_mask_list, dim=1)
+ auto_mask = torch.cat(auto_mask_list, dim=1)
+
+ # using photo loss to select best match in multiple views
+ if not self.no_min_optimize:
+ indices = torch.argmin(diff_color, dim=1, keepdim=True)
+
+ diff_img = torch.gather(diff_img, 1, indices)
+ diff_depth = torch.gather(diff_depth, 1, indices)
+ valid_mask = torch.gather(valid_mask, 1, indices)
+ auto_mask = torch.gather(auto_mask, 1, indices)
+
+ if not self.no_auto_mask:
+ photo_loss = self.mean_on_mask(diff_img, valid_mask * auto_mask)
+ geometry_loss = self.mean_on_mask(diff_depth, valid_mask * auto_mask)
+ else:
+ photo_loss = self.mean_on_mask(diff_img, valid_mask)
+ geometry_loss = self.mean_on_mask(diff_depth, valid_mask)
+
+ dynamic_mask = None
+ if self.return_dynamic_mask:
+ # get dynamic mask for tgt image
+ dynamic_mask_list = []
+ for i in range(0, len(diff_depth_list), 2):
+ tmp = diff_depth_list[i]
+ tmp[valid_mask_list[1]<1] = 0
+ dynamic_mask_list += [1-tmp]
+
+ dynamic_mask = torch.cat(dynamic_mask_list, dim=1).mean(dim=1, keepdim=True)
+
+ return photo_loss, geometry_loss, dynamic_mask
+
+
+ def compute_pairwise_loss(self, tgt_img, ref_img, tgt_depth, ref_depth, pose, intrinsic):
+
+ ref_img_warped, projected_depth, computed_depth = inverse_warp2(ref_img, tgt_depth, ref_depth, pose, intrinsic, padding_mode='zeros')
+
+
+ diff_depth = (computed_depth-projected_depth).abs()/(computed_depth+projected_depth)
+
+ # masking zero values
+ valid_mask_ref = (ref_img_warped.abs().mean(dim=1, keepdim=True) > 1e-3).float()
+ valid_mask_tgt = (tgt_img.abs().mean(dim=1, keepdim=True) > 1e-3).float()
+ valid_mask = valid_mask_tgt * valid_mask_ref
+
+ diff_color = (tgt_img-ref_img_warped).abs().mean(dim=1, keepdim=True)
+ identity_warp_err = (tgt_img-ref_img).abs().mean(dim=1, keepdim=True)
+ auto_mask = (diff_color 100:
+ # mean_value = (diff * mask).sum() / mask.sum()
+ # else:
+ # mean_value = torch.tensor(0).float().to(device)
+ mean_value = (diff * mask).sum() / (mask.sum() + 1e-6)
+ return mean_value
+
+
+ def forward(self, input, ref_input, prediction, ref_prediction, intrinsic, **kwargs):
+ photo_loss, geometry_loss, dynamic_mask = self.photo_and_geometry_loss(
+ tgt_img=input,
+ ref_imgs=ref_input,
+ tgt_depth=prediction,
+ ref_depths=ref_prediction,
+ intrinsics=intrinsic,
+ poses=kwargs['pose'],
+ poses_inv=kwargs['inv_pose'])
+ loss = self.loss_weight_geometry * geometry_loss + self.loss_weight_photo * photo_loss
+ if torch.isnan(loss).item() | torch.isinf(loss).item():
+ raise RuntimeError(f'VNL error, {loss}')
+ return loss * self.total_loss_weight
+
+
+
+
+
+
+
+
+# def compute_smooth_loss(tgt_depth, tgt_img):
+# def get_smooth_loss(disp, img):
+# """
+# Computes the smoothness loss for a disparity image
+# The color image is used for edge-aware smoothness
+# """
+
+# # normalize
+# mean_disp = disp.mean(2, True).mean(3, True)
+# norm_disp = disp / (mean_disp + 1e-7)
+# disp = norm_disp
+
+# grad_disp_x = torch.abs(disp[:, :, :, :-1] - disp[:, :, :, 1:])
+# grad_disp_y = torch.abs(disp[:, :, :-1, :] - disp[:, :, 1:, :])
+
+# grad_img_x = torch.mean(torch.abs(img[:, :, :, :-1] - img[:, :, :, 1:]), 1, keepdim=True)
+# grad_img_y = torch.mean(torch.abs(img[:, :, :-1, :] - img[:, :, 1:, :]), 1, keepdim=True)
+
+# grad_disp_x *= torch.exp(-grad_img_x)
+# grad_disp_y *= torch.exp(-grad_img_y)
+
+# return grad_disp_x.mean() + grad_disp_y.mean()
+
+# loss = get_smooth_loss(tgt_depth, tgt_img)
+
+# return loss
+
+
+# @torch.no_grad()
+# def compute_errors(gt, pred, dataset):
+# # pred : b c h w
+# # gt: b h w
+
+# abs_diff = abs_rel = sq_rel = log10 = rmse = rmse_log = a1 = a2 = a3 = 0.0
+
+# batch_size, h, w = gt.size()
+
+# if pred.nelement() != gt.nelement():
+# pred = F.interpolate(pred, [h,w], mode='bilinear', align_corners=False)
+# # pred = F.interpolate(pred, [h,w], mode='nearest')
+
+# pred = pred.view(batch_size, h, w)
+
+# if dataset == 'kitti':
+# crop_mask = gt[0] != gt[0]
+# y1, y2 = int(0.40810811 * gt.size(1)), int(0.99189189 * gt.size(1))
+# x1, x2 = int(0.03594771 * gt.size(2)), int(0.96405229 * gt.size(2))
+# crop_mask[y1:y2, x1:x2] = 1
+# max_depth = 80
+
+# if dataset == 'cs':
+# crop_mask = gt[0] != gt[0]
+# crop_mask[256:, 192:1856] = 1
+# max_depth = 80
+
+# if dataset == 'nyu':
+# crop_mask = gt[0] != gt[0]
+# crop = np.array([45, 471, 41, 601]).astype(np.int32)
+# crop_mask[crop[0]:crop[1], crop[2]:crop[3]] = 1
+# max_depth = 10
+
+# if dataset == 'bonn':
+# crop_mask = gt[0] != gt[0]
+# crop_mask[:,:] = 1
+# max_depth = 10
+
+# if dataset == 'ddad':
+# crop_mask = gt[0] != gt[0]
+# crop_mask[:,:] = 1
+# max_depth = 200
+
+# min_depth = 1e-3
+# for current_gt, current_pred in zip(gt, pred):
+# valid = (current_gt > min_depth) & (current_gt < max_depth)
+# valid = valid & crop_mask
+
+# valid_gt = current_gt[valid]
+# valid_pred = current_pred[valid]
+
+# # align scale
+# valid_pred = valid_pred * torch.median(valid_gt)/torch.median(valid_pred)
+
+# valid_pred = valid_pred.clamp(min_depth, max_depth)
+
+# thresh = torch.max((valid_gt / valid_pred), (valid_pred / valid_gt))
+# a1 += (thresh < 1.25).float().mean()
+# a2 += (thresh < 1.25 ** 2).float().mean()
+# a3 += (thresh < 1.25 ** 3).float().mean()
+
+# diff_i = valid_gt - valid_pred
+# abs_diff += torch.mean(torch.abs(diff_i))
+# abs_rel += torch.mean(torch.abs(diff_i) / valid_gt)
+# sq_rel += torch.mean(((diff_i)**2) / valid_gt)
+# rmse += torch.sqrt(torch.mean(diff_i ** 2))
+# rmse_log += torch.sqrt(torch.mean((torch.log(valid_gt) - torch.log(valid_pred)) ** 2))
+# log10 += torch.mean(torch.abs((torch.log10(valid_gt) - torch.log10(valid_pred))))
+
+# return [metric.item() / batch_size for metric in [abs_diff, abs_rel, sq_rel, log10, rmse, rmse_log, a1, a2, a3]]
diff --git a/finetune/Metric3D/training/mono/model/model_pipelines/__init__.py b/finetune/Metric3D/training/mono/model/model_pipelines/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..33a66928649795f129f58cdf8aec685d0a5bb77d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/model_pipelines/__init__.py
@@ -0,0 +1,6 @@
+from .model_pipeline import EncoderDecoder
+from .dense_pipeline import DensePredModel
+
+__all__ = [
+ 'EncoderDecoder', 'DensePredModel'
+]
diff --git a/finetune/Metric3D/training/mono/model/model_pipelines/dense_pipeline.py b/finetune/Metric3D/training/mono/model/model_pipelines/dense_pipeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..6cf7d653e0f19ab30fded0d548a282c539861d7d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/model_pipelines/dense_pipeline.py
@@ -0,0 +1,27 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+
+
+class DensePredModel(nn.Module):
+ def __init__(self, cfg):
+ super(DensePredModel, self).__init__()
+
+ self.encoder = get_func('mono.model.' + cfg.model.backbone.prefix + cfg.model.backbone.type)(**cfg.model.backbone)
+ self.decoder = get_func('mono.model.' + cfg.model.decode_head.prefix + cfg.model.decode_head.type)(cfg)
+ # try:
+ # decoder_compiled = torch.compile(decoder, mode='max-autotune')
+ # "Decoder compile finished"
+ # self.decoder = decoder_compiled
+ # except:
+ # "Decoder compile failed, use default setting"
+ # self.decoder = decoder
+
+ self.training = True
+
+ def forward(self, input, **kwargs):
+ # [f_32, f_16, f_8, f_4]
+ features = self.encoder(input)
+ # [x_32, x_16, x_8, x_4, x, ...]
+ out = self.decoder(features, **kwargs)
+ return out
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/model_pipelines/model_pipeline.py b/finetune/Metric3D/training/mono/model/model_pipelines/model_pipeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..8e294d9505db1bf0134adb106f239d0df2a59c76
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/model_pipelines/model_pipeline.py
@@ -0,0 +1,34 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+
+
+class EncoderDecoder(nn.Module):
+ def __init__(self, cfg):
+ super(EncoderDecoder, self).__init__()
+
+ self.encoder = get_func('mono.model.' + cfg.model.backbone.prefix + cfg.model.backbone.type)(**cfg.model.backbone)
+ self.decoder = get_func('mono.model.' + cfg.model.decode_head.prefix + cfg.model.decode_head.type)(cfg)
+
+ self.depth_out_head = DepthOutHead(method=cfg.model.depth_out_head.method, **cfg)
+ self.training = True
+
+ def forward(self, input, **kwargs):
+ # [f_32, f_16, f_8, f_4]
+ features = self.encoder(input)
+ # [x_32, x_16, x_8, x_4, x, ...]
+ decode_list = self.decoder(features)
+
+ pred, conf, logit, bins_edges = self.depth_out_head([decode_list[4], ])
+
+ auxi_preds = None
+ auxi_logits = None
+ out = dict(
+ prediction=pred[0],
+ confidence=conf[0],
+ pred_logit=logit[0],
+ auxi_pred=auxi_preds,
+ auxi_logit_list=auxi_logits,
+ bins_edges=bins_edges[0],
+ )
+ return out
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/model/monodepth_model.py b/finetune/Metric3D/training/mono/model/monodepth_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ffa0acb5d20fad5df78b33c818f0c30e290b235
--- /dev/null
+++ b/finetune/Metric3D/training/mono/model/monodepth_model.py
@@ -0,0 +1,45 @@
+import torch
+import torch.nn as nn
+from mono.utils.comm import get_func
+from .__base_model__ import BaseDepthModel
+
+class DepthModel(BaseDepthModel):
+ def __init__(self, cfg, criterions, **kwards):
+ super(DepthModel, self).__init__(cfg, criterions)
+ model_type = cfg.model.type
+ self.training = True
+
+ # def inference(self, data):
+ # with torch.no_grad():
+ # pred_depth, _, confidence = self.inference(data)
+ # return pred_depth, confidence
+
+
+def get_monodepth_model(
+ cfg : dict,
+ criterions: dict,
+ **kwargs
+ ) -> nn.Module:
+ # config depth model
+ model = DepthModel(cfg, criterions, **kwargs)
+ #model.init_weights(load_imagenet_model, imagenet_ckpt_fpath)
+ assert isinstance(model, nn.Module)
+ return model
+
+
+def get_configured_monodepth_model(
+ cfg: dict,
+ criterions: dict,
+ ) -> nn.Module:
+ """
+ Args:
+ @ configs: configures for the network.
+ @ load_imagenet_model: whether to initialize from ImageNet-pretrained model.
+ @ imagenet_ckpt_fpath: string representing path to file with weights to initialize model with.
+ Returns:
+ # model: depth model.
+ """
+ model = get_monodepth_model(cfg, criterions)
+ return model
+
+
diff --git a/finetune/Metric3D/training/mono/scripts/test_scripts/test_vit.sh b/finetune/Metric3D/training/mono/scripts/test_scripts/test_vit.sh
new file mode 100644
index 0000000000000000000000000000000000000000..df29a45aa90b02d45be580030ab739cf11611381
--- /dev/null
+++ b/finetune/Metric3D/training/mono/scripts/test_scripts/test_vit.sh
@@ -0,0 +1,5 @@
+cd ../../../
+
+python mono/tools/test.py \
+ mono/configs/test_configs_vit_small/ibims.vit.dpt.raft.py \
+ --load-from vit_small_step00800000.pth
diff --git a/finetune/Metric3D/training/mono/scripts/train_scripts/train.sh b/finetune/Metric3D/training/mono/scripts/train_scripts/train.sh
new file mode 100644
index 0000000000000000000000000000000000000000..35d7552397944839584a0ca6928a12b8306c63f3
--- /dev/null
+++ b/finetune/Metric3D/training/mono/scripts/train_scripts/train.sh
@@ -0,0 +1,7 @@
+cd ../../../
+
+python mono/tools/train.py \
+ mono/configs/RAFTDecoder/vit.raft5.small.sanity_check.py \
+ --use-tensorboard \
+ --launcher slurm \
+ --experiment_name set1
diff --git a/finetune/Metric3D/training/mono/scripts/train_scripts/train_kitti.sh b/finetune/Metric3D/training/mono/scripts/train_scripts/train_kitti.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8c56d3d768b8b658d0a1b2fdc6bba6a0e4c8f75e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/scripts/train_scripts/train_kitti.sh
@@ -0,0 +1,8 @@
+cd ../../../
+
+python mono/tools/train.py \
+ mono/configs/RAFTDecoder/vit.raft5.large.kitti.py \
+ --use-tensorboard \
+ --launcher slurm \
+ --load-from Path_to_Checkpoint.pth \
+ --experiment_name set1
diff --git a/finetune/Metric3D/training/mono/tools/test.py b/finetune/Metric3D/training/mono/tools/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..688a2b3d00c33ebdeefd5e4ef4530c2a3d46bd2b
--- /dev/null
+++ b/finetune/Metric3D/training/mono/tools/test.py
@@ -0,0 +1,165 @@
+import os
+import os.path as osp
+import time
+import sys
+CODE_SPACE=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+sys.path.append(CODE_SPACE)
+#os.chdir(CODE_SPACE)
+import argparse
+import mmcv
+import torch
+import torch.distributed as dist
+import torch.multiprocessing as mp
+
+try:
+ from mmcv.utils import Config, DictAction
+except:
+ from mmengine import Config, DictAction
+from datetime import timedelta
+import random
+import numpy as np
+
+from mono.datasets.distributed_sampler import log_canonical_transfer_info
+from mono.utils.comm import init_env
+from mono.utils.logger import setup_logger
+from mono.utils.db import load_data_info, reset_ckpt_path
+from mono.model.monodepth_model import get_configured_monodepth_model
+from mono.datasets.distributed_sampler import build_dataset_n_sampler_with_cfg
+from mono.utils.running import load_ckpt
+from mono.utils.do_test import do_test_with_dataloader, do_test_check_data
+
+def parse_args():
+ parser = argparse.ArgumentParser(description='Train a segmentor')
+ parser.add_argument('config', help='train config file path')
+ parser.add_argument('--show-dir', help='the dir to save logs and visualization results')
+ parser.add_argument(
+ '--load-from', help='the checkpoint file to load weights from')
+ parser.add_argument('--node_rank', type=int, default=0)
+ parser.add_argument('--nnodes',
+ type=int,
+ default=1,
+ help='number of nodes')
+ parser.add_argument(
+ '--options', nargs='+', action=DictAction, help='custom options')
+ parser.add_argument(
+ '--launcher', choices=['None', 'pytorch', 'slurm'], default='slurm',
+ help='job launcher')
+ args = parser.parse_args()
+ return args
+
+
+def main(args):
+ os.chdir(CODE_SPACE)
+ cfg = Config.fromfile(args.config)
+ cfg.dist_params.nnodes = args.nnodes
+ cfg.dist_params.node_rank = args.node_rank
+
+ if args.options is not None:
+ cfg.merge_from_dict(args.options)
+ # set cudnn_benchmark
+ #if cfg.get('cudnn_benchmark', False) and args.launcher != 'ror':
+ # torch.backends.cudnn.benchmark = True
+
+ # show_dir is determined in this priority: CLI > segment in file > filename
+ if args.show_dir is not None:
+ # update configs according to CLI args if args.show_dir is not None
+ cfg.show_dir = args.show_dir
+ elif cfg.get('show_dir', None) is None:
+ # use config filename + timestamp as default show_dir if cfg.show_dir is None
+ cfg.show_dir = osp.join('./show_dirs',
+ osp.splitext(osp.basename(args.config))[0],
+ args.timestamp)
+
+ # ckpt path
+ if args.load_from is None:
+ raise RuntimeError('Please set model path!')
+ cfg.load_from = args.load_from
+
+ # create show dir
+ os.makedirs(osp.abspath(cfg.show_dir), exist_ok=True)
+
+ # init the logger before other steps
+ cfg.log_file = osp.join(cfg.show_dir, f'{args.timestamp}.log')
+ logger = setup_logger(cfg.log_file)
+
+ # log some basic info
+ logger.info(f'Config:\n{cfg.pretty_text}')
+
+ # load db_info for data
+ # load data info
+ data_info = {}
+ load_data_info('data_server_info', data_info=data_info)
+ cfg.db_info = data_info
+ # update check point info
+ reset_ckpt_path(cfg.model, data_info)
+
+ # log data transfer to canonical space info
+ # log_canonical_transfer_info(cfg)
+
+ # init distributed env first, since logger depends on the dist info.
+ if args.launcher == 'none':
+ cfg.distributed = False
+ else:
+ cfg.distributed = True
+ init_env(args.launcher, cfg)
+ logger.info(f'Distributed training: {cfg.distributed}')
+
+ # dump config
+ cfg.dump(osp.join(cfg.show_dir, osp.basename(args.config)))
+
+ if not cfg.distributed:
+ main_worker(0, cfg, args.launcher)
+ else:
+ mp.spawn(main_worker, nprocs=cfg.dist_params.num_gpus_per_node, args=(cfg, args.launcher))
+
+def main_worker(local_rank: int, cfg: dict, launcher: str):
+ if cfg.distributed:
+ cfg.dist_params.global_rank = cfg.dist_params.node_rank * cfg.dist_params.num_gpus_per_node + local_rank
+ cfg.dist_params.local_rank = local_rank
+
+ torch.cuda.set_device(local_rank)
+ default_timeout = timedelta(minutes=30)
+ dist.init_process_group(backend=cfg.dist_params.backend,
+ init_method=cfg.dist_params.dist_url,
+ world_size=cfg.dist_params.world_size,
+ rank=cfg.dist_params.global_rank,
+ timeout=default_timeout,)
+
+ logger = setup_logger(cfg.log_file)
+ # build model
+ model = get_configured_monodepth_model(cfg,
+ None,
+ )
+
+ # build datasets
+ test_dataset, test_sampler = build_dataset_n_sampler_with_cfg(cfg, 'test')
+ # build data loaders
+ test_dataloader = torch.utils.data.DataLoader(dataset=test_dataset,
+ batch_size=1,
+ num_workers=1,
+ sampler=test_sampler,
+ drop_last=False)
+
+
+ # config distributed training
+ if cfg.distributed:
+ model = torch.nn.parallel.DistributedDataParallel(model.cuda(),
+ device_ids=[local_rank],
+ output_device=local_rank,
+ find_unused_parameters=True)
+ else:
+ model = torch.nn.DataParallel(model.cuda())
+
+ # load ckpt
+ #model, _, _, _ = load_ckpt(cfg.load_from, model, strict_match=False)
+ model.eval()
+ do_test_with_dataloader(model, cfg, test_dataloader, logger=logger, is_distributed=cfg.distributed)
+ # do_test_check_data(model, cfg, test_dataloader, logger=logger, is_distributed=cfg.distributed, local_rank=local_rank)
+
+
+if __name__=='__main__':
+ # load args
+ args = parse_args()
+ timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime())
+ args.timestamp = timestamp
+ main(args)
diff --git a/finetune/Metric3D/training/mono/tools/train.py b/finetune/Metric3D/training/mono/tools/train.py
new file mode 100644
index 0000000000000000000000000000000000000000..598bb79567e632dbea5dae593a8d5c74ad66668e
--- /dev/null
+++ b/finetune/Metric3D/training/mono/tools/train.py
@@ -0,0 +1,254 @@
+import os
+import os.path as osp
+import time
+import sys
+CODE_SPACE=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+sys.path.append(CODE_SPACE)
+#os.chdir(CODE_SPACE)
+import argparse
+import copy
+import mmcv
+import torch
+import torch.distributed as dist
+import torch.multiprocessing as mp
+
+try:
+ from mmcv.utils import Config, DictAction
+except:
+ from mmengine import Config, DictAction
+import socket
+import subprocess
+from datetime import timedelta
+import random
+import numpy as np
+import logging
+
+from mono.datasets.distributed_sampler import log_canonical_transfer_info
+from mono.utils.comm import init_env, collect_env
+from mono.utils.logger import setup_logger
+from mono.utils.db import load_data_info, reset_ckpt_path
+from mono.utils.do_train import do_train
+
+
+def parse_args():
+ parser = argparse.ArgumentParser(description='Train a segmentor')
+ parser.add_argument('config', help='train config file path')
+ parser.add_argument('--work-dir', help='the dir to save logs and models')
+ parser.add_argument('--tensorboard-dir', help='the dir to save tensorboard logs')
+ parser.add_argument(
+ '--load-from', help='the checkpoint file to load weights from')
+ parser.add_argument(
+ '--resume-from', help='the checkpoint file to resume from')
+ parser.add_argument(
+ '--no-validate',
+ action='store_true',
+ help='whether not to evaluate the checkpoint during training')
+ parser.add_argument(
+ '--gpu-ids',
+ type=int,
+ nargs='+',
+ help='ids of gpus to use '
+ '(only applicable to non-distributed training)')
+ parser.add_argument('--seed', type=int, default=88, help='random seed')
+ parser.add_argument(
+ '--deterministic',
+ action='store_true',
+ help='whether to set deterministic options for CUDNN backend.')
+ parser.add_argument(
+ '--use-tensorboard',
+ action='store_true',
+ help='whether to set deterministic options for CUDNN backend.')
+ parser.add_argument(
+ '--options', nargs='+', action=DictAction, help='custom options')
+ parser.add_argument('--node_rank', type=int, default=0)
+ parser.add_argument('--nnodes',
+ type=int,
+ default=1,
+ help='number of nodes')
+ parser.add_argument(
+ '--launcher', choices=['None', 'pytorch', 'slurm', 'mpi', 'ror'], default='slurm',
+ help='job launcher')
+ parser.add_argument('--local_rank',
+ type=int,
+ default=0,
+ help='rank')
+ parser.add_argument('--experiment_name', default='debug', help='the experiment name for mlflow')
+ args = parser.parse_args()
+ return args
+
+
+def set_random_seed(seed, deterministic=False):
+ """Set random seed.
+ Args:
+ @seed (int): Seed to be used.
+ @deterministic (bool): Whether to set the deterministic option for
+ CUDNN backend, i.e., set `torch.backends.cudnn.deterministic`
+ to True and `torch.backends.cudnn.benchmark` to False.
+ Default: False.
+ """
+ random.seed(seed)
+ np.random.seed(seed)
+ torch.manual_seed(seed)
+ torch.cuda.manual_seed_all(seed)
+ #if deterministic:
+ # torch.backends.cudnn.deterministic = True
+ # torch.backends.cudnn.benchmark = False
+
+def main(args):
+ os.chdir(CODE_SPACE)
+ cfg = Config.fromfile(args.config)
+ cfg.dist_params.nnodes = args.nnodes
+ cfg.dist_params.node_rank = args.node_rank
+ cfg.deterministic = args.deterministic
+ if args.options is not None:
+ cfg.merge_from_dict(args.options)
+ # set cudnn_benchmark
+ #if cfg.get('cudnn_benchmark', False) and args.launcher != 'ror':
+ # torch.backends.cudnn.benchmark = True
+ # The flag below controls whether to allow TF32 on matmul. This flag defaults to False
+ # in PyTorch 1.12 and later.
+ # torch.backends.cuda.matmul.allow_tf32 = False
+ # The flag below controls whether to allow TF32 on cuDNN. This flag defaults to True.
+ # torch.backends.cudnn.allow_tf32 = False
+
+ # work_dir is determined in this priority: CLI > segment in file > filename
+ if args.work_dir is not None:
+ # update configs according to CLI args if args.work_dir is not None
+ cfg.work_dir = args.work_dir
+ elif cfg.get('work_dir', None) is None:
+ # use config filename + timestamp as default work_dir if cfg.work_dir is None
+ cfg.work_dir = osp.join('./work_dirs',
+ osp.splitext(osp.basename(args.config))[0],
+ args.timestamp)
+ # tensorboard_dir is determined in this priority: CLI > segment in file > filename
+ if args.tensorboard_dir is not None:
+ cfg.tensorboard_dir = args.tensorboard_dir
+ elif cfg.get('tensorboard_dir', None) is None:
+ # use cfg.work_dir + 'tensorboard' as default tensorboard_dir if cfg.tensorboard_dir is None
+ cfg.tensorboard_dir = osp.join(cfg.work_dir, 'tensorboard')
+
+ # ckpt path
+ if args.load_from is not None:
+ cfg.load_from = args.load_from
+ # resume training
+ if args.resume_from is not None:
+ cfg.resume_from = args.resume_from
+
+ # create work_dir and tensorboard_dir
+ os.makedirs(osp.abspath(cfg.work_dir), exist_ok=True)
+ os.makedirs(os.path.abspath(cfg.tensorboard_dir), exist_ok=True)
+
+ # init the logger before other steps
+ cfg.log_file = osp.join(cfg.work_dir, f'{args.timestamp}.log')
+ logger = setup_logger(cfg.log_file)
+
+ # init the meta dict to record some important information such as
+ # environment info and seed, which will be logged
+ meta = dict()
+ # log env info
+ env_info_dict = collect_env()
+ env_info = '\n'.join([f'{k}: {v}' for k, v in env_info_dict.items()])
+ dash_line = '-' * 60 + '\n'
+ logger.info('Environment info:\n' + dash_line + env_info + '\n' +
+ dash_line)
+ meta['env_info'] = env_info
+
+ # log some basic info
+ # logger.info(f'Config:\n{cfg.pretty_text}')
+
+ # mute online evaluation
+ if args.no_validate:
+ cfg.evaluation.online_eval = False
+
+
+ cfg.seed = args.seed
+ meta['seed'] = args.seed
+ meta['exp_name'] = osp.basename(args.config)
+
+ # load data info
+ data_info = {}
+ load_data_info('data_server_info', data_info=data_info)
+ cfg.db_info = data_info
+ # update check point info
+ reset_ckpt_path(cfg.model, data_info)
+
+ # log data transfer to canonical space info``
+ # log_canonical_transfer_info(cfg)
+
+ # init distributed env first, since logger depends on the dist info.
+ if args.launcher == 'None':
+ cfg.distributed = False
+ else:
+ cfg.distributed = True
+ init_env(args.launcher, cfg)
+ logger.info(f'Distributed training: {cfg.distributed}')
+ logger.info(cfg.dist_params)
+ # dump config
+ cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config)))
+
+ cfg.experiment_name = args.experiment_name
+
+ if not cfg.distributed:
+ main_worker(0, cfg)
+ else:
+ # distributed training
+ if args.launcher == 'slurm':
+ mp.spawn(main_worker, nprocs=cfg.dist_params.num_gpus_per_node, args=(cfg, args.launcher))
+ elif args.launcher == 'pytorch':
+ main_worker(args.local_rank, cfg, args.launcher)
+
+def main_worker(local_rank: int, cfg: dict, launcher: str='slurm'):
+ logger = setup_logger(cfg.log_file)
+ if cfg.distributed:
+ if launcher == 'slurm':
+ torch.set_num_threads(8) # without it, the spawn method is much slower than the launch method
+ cfg.dist_params.global_rank = cfg.dist_params.node_rank * cfg.dist_params.num_gpus_per_node + local_rank
+ cfg.dist_params.local_rank = local_rank
+ os.environ['RANK']=str(cfg.dist_params.global_rank)
+ else:
+ torch.set_num_threads(1)
+
+ torch.cuda.set_device(local_rank)
+ default_timeout = timedelta(minutes=10)
+ dist.init_process_group(
+ backend=cfg.dist_params.backend,
+ init_method=cfg.dist_params.dist_url,
+ world_size=cfg.dist_params.world_size,
+ rank=cfg.dist_params.global_rank,)
+ #timeout=default_timeout,)
+ dist.barrier()
+
+ # if cfg.distributed:
+
+ # cfg.dist_params.global_rank = cfg.dist_params.node_rank * cfg.dist_params.num_gpus_per_node + local_rank
+ # cfg.dist_params.local_rank = local_rank
+ # os.environ['RANK']=str(cfg.dist_params.global_rank)
+
+ # if launcher == 'ror':
+ # init_torch_process_group(use_hvd=False)
+ # else:
+ # #torch.set_num_threads(4) # without it, the spawn method maybe much slower than the launch method
+ # torch.cuda.set_device(local_rank)
+ # default_timeout = timedelta(minutes=30)
+ # dist.init_process_group(
+ # backend=cfg.dist_params.backend,
+ # init_method=cfg.dist_params.dist_url,
+ # world_size=cfg.dist_params.world_size,
+ # rank=cfg.dist_params.global_rank,)
+ # #timeout=default_timeout,)
+
+ # set random seeds
+ if cfg.seed is not None:
+ logger.info(f'Set random seed to {cfg.seed}, deterministic: 'f'{cfg.deterministic}')
+ set_random_seed(cfg.seed, deterministic=cfg.deterministic)
+ # with torch.autograd.set_detect_anomaly(True):
+ do_train(local_rank, cfg)
+
+
+if __name__=='__main__':
+ # load args
+ args = parse_args()
+ timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime())
+ args.timestamp = timestamp
+ print(args.work_dir, args.tensorboard_dir)
+ main(args)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/__init__.py b/finetune/Metric3D/training/mono/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/__init__.py
@@ -0,0 +1 @@
+
diff --git a/finetune/Metric3D/training/mono/utils/avg_meter.py b/finetune/Metric3D/training/mono/utils/avg_meter.py
new file mode 100644
index 0000000000000000000000000000000000000000..d7321dd4e222dd0d02d84cc5aa31bdeab24007be
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/avg_meter.py
@@ -0,0 +1,561 @@
+import numpy as np
+import torch
+import torch.distributed as dist
+from .inverse_warp import pixel2cam, cam2pixel2
+import torch.nn.functional as F
+import matplotlib.pyplot as plt
+
+class AverageMeter(object):
+ """Computes and stores the average and current value"""
+ def __init__(self) -> None:
+ self.reset()
+
+ def reset(self) -> None:
+ self.val = np.longdouble(0.0)
+ self.avg = np.longdouble(0.0)
+ self.sum = np.longdouble(0.0)
+ self.count = np.longdouble(0.0)
+
+ def update(self, val, n: float = 1) -> None:
+ self.val = val
+ self.sum += val
+ self.count += n
+ self.avg = self.sum / (self.count + 1e-6)
+
+class MetricAverageMeter(AverageMeter):
+ """
+ An AverageMeter designed specifically for evaluating segmentation results.
+ """
+ def __init__(self, metrics: list) -> None:
+ """ Initialize object. """
+ # average meters for metrics
+ self.abs_rel = AverageMeter()
+ self.rmse = AverageMeter()
+ self.silog = AverageMeter()
+ self.delta1 = AverageMeter()
+ self.delta2 = AverageMeter()
+ self.delta3 = AverageMeter()
+
+ self.metrics = metrics
+
+ self.consistency = AverageMeter()
+ self.log10 = AverageMeter()
+ self.rmse_log = AverageMeter()
+ self.sq_rel = AverageMeter()
+
+ # normal
+ self.normal_mean = AverageMeter()
+ self.normal_rmse = AverageMeter()
+ self.normal_a1 = AverageMeter()
+ self.normal_a2 = AverageMeter()
+
+ self.normal_median = AverageMeter()
+ self.normal_a3 = AverageMeter()
+ self.normal_a4 = AverageMeter()
+ self.normal_a5 = AverageMeter()
+
+
+ def update_metrics_cpu(self,
+ pred: torch.Tensor,
+ target: torch.Tensor,
+ mask: torch.Tensor,):
+ """
+ Update metrics on cpu
+ """
+
+ assert pred.shape == target.shape
+
+ if len(pred.shape) == 3:
+ pred = pred[:, None, :, :]
+ target = target[:, None, :, :]
+ mask = mask[:, None, :, :]
+ elif len(pred.shape) == 2:
+ pred = pred[None, None, :, :]
+ target = target[None, None, :, :]
+ mask = mask[None, None, :, :]
+
+
+ # Absolute relative error
+ abs_rel_sum, valid_pics = get_absrel_err(pred, target, mask)
+ abs_rel_sum = abs_rel_sum.numpy()
+ valid_pics = valid_pics.numpy()
+ self.abs_rel.update(abs_rel_sum, valid_pics)
+
+ # squared relative error
+ sqrel_sum, _ = get_sqrel_err(pred, target, mask)
+ sqrel_sum = sqrel_sum.numpy()
+ self.sq_rel.update(sqrel_sum, valid_pics)
+
+ # root mean squared error
+ rmse_sum, _ = get_rmse_err(pred, target, mask)
+ rmse_sum = rmse_sum.numpy()
+ self.rmse.update(rmse_sum, valid_pics)
+
+ # log root mean squared error
+ log_rmse_sum, _ = get_rmse_log_err(pred, target, mask)
+ log_rmse_sum = log_rmse_sum.numpy()
+ self.rmse.update(log_rmse_sum, valid_pics)
+
+ # log10 error
+ log10_sum, _ = get_log10_err(pred, target, mask)
+ log10_sum = log10_sum.numpy()
+ self.rmse.update(log10_sum, valid_pics)
+
+ # scale-invariant root mean squared error in log space
+ silog_sum, _ = get_silog_err(pred, target, mask)
+ silog_sum = silog_sum.numpy()
+ self.silog.update(silog_sum, valid_pics)
+
+ # ratio error, delta1, ....
+ delta1_sum, delta2_sum, delta3_sum, _ = get_ratio_error(pred, target, mask)
+ delta1_sum = delta1_sum.numpy()
+ delta2_sum = delta2_sum.numpy()
+ delta3_sum = delta3_sum.numpy()
+
+ self.delta1.update(delta1_sum, valid_pics)
+ self.delta2.update(delta1_sum, valid_pics)
+ self.delta3.update(delta1_sum, valid_pics)
+
+
+ def update_metrics_gpu(
+ self,
+ pred: torch.Tensor,
+ target: torch.Tensor,
+ mask: torch.Tensor,
+ is_distributed: bool,
+ pred_next: torch.tensor = None,
+ pose_f1_to_f2: torch.tensor = None,
+ intrinsic: torch.tensor = None):
+ """
+ Update metric on GPU. It supports distributed processing. If multiple machines are employed, please
+ set 'is_distributed' as True.
+ """
+ assert pred.shape == target.shape
+
+ if len(pred.shape) == 3:
+ pred = pred[:, None, :, :]
+ target = target[:, None, :, :]
+ mask = mask[:, None, :, :]
+ elif len(pred.shape) == 2:
+ pred = pred[None, None, :, :]
+ target = target[None, None, :, :]
+ mask = mask[None, None, :, :]
+
+
+ # Absolute relative error
+ abs_rel_sum, valid_pics = get_absrel_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(abs_rel_sum), dist.all_reduce(valid_pics)
+ abs_rel_sum = abs_rel_sum.cpu().numpy()
+ valid_pics = int(valid_pics)
+ self.abs_rel.update(abs_rel_sum, valid_pics)
+
+ # root mean squared error
+ rmse_sum, _ = get_rmse_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(rmse_sum)
+ rmse_sum = rmse_sum.cpu().numpy()
+ self.rmse.update(rmse_sum, valid_pics)
+
+ # log root mean squared error
+ log_rmse_sum, _ = get_rmse_log_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(log_rmse_sum)
+ log_rmse_sum = log_rmse_sum.cpu().numpy()
+ self.rmse_log.update(log_rmse_sum, valid_pics)
+
+ # log10 error
+ log10_sum, _ = get_log10_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(log10_sum)
+ log10_sum = log10_sum.cpu().numpy()
+ self.log10.update(log10_sum, valid_pics)
+
+ # scale-invariant root mean squared error in log space
+ silog_sum, _ = get_silog_err(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(silog_sum)
+ silog_sum = silog_sum.cpu().numpy()
+ self.silog.update(silog_sum, valid_pics)
+
+ # ratio error, delta1, ....
+ delta1_sum, delta2_sum, delta3_sum, _ = get_ratio_error(pred, target, mask)
+ if is_distributed:
+ dist.all_reduce(delta1_sum), dist.all_reduce(delta2_sum), dist.all_reduce(delta3_sum)
+ delta1_sum = delta1_sum.cpu().numpy()
+ delta2_sum = delta2_sum.cpu().numpy()
+ delta3_sum = delta3_sum.cpu().numpy()
+
+ self.delta1.update(delta1_sum, valid_pics)
+ self.delta2.update(delta2_sum, valid_pics)
+ self.delta3.update(delta3_sum, valid_pics)
+
+ # video consistency error
+ consistency_rel_sum, valid_warps = get_video_consistency_err(pred, pred_next, pose_f1_to_f2, intrinsic)
+ if is_distributed:
+ dist.all_reduce(consistency_rel_sum), dist.all_reduce(valid_warps)
+ consistency_rel_sum = consistency_rel_sum.cpu().numpy()
+ valid_warps = int(valid_warps)
+ self.consistency.update(consistency_rel_sum, valid_warps)
+
+ ## for surface normal
+ def update_normal_metrics_gpu(
+ self,
+ pred: torch.Tensor, # (B, 3, H, W)
+ target: torch.Tensor, # (B, 3, H, W)
+ mask: torch.Tensor, # (B, 1, H, W)
+ is_distributed: bool,
+ ):
+ """
+ Update metric on GPU. It supports distributed processing. If multiple machines are employed, please
+ set 'is_distributed' as True.
+ """
+ assert pred.shape == target.shape
+
+ valid_pics = torch.sum(mask, dtype=torch.float32) + 1e-6
+
+ if valid_pics < 10:
+ return
+
+ mean_error = rmse_error = a1_error = a2_error = dist_node_cnt = valid_pics
+ normal_error = torch.cosine_similarity(pred, target, dim=1)
+ normal_error = torch.clamp(normal_error, min=-1.0, max=1.0)
+ angle_error = torch.acos(normal_error) * 180.0 / torch.pi
+ angle_error = angle_error[:, None, :, :]
+ angle_error = angle_error[mask]
+ # Calculation error
+ mean_error = angle_error.sum() / valid_pics
+ rmse_error = torch.sqrt( torch.sum(torch.square(angle_error)) / valid_pics )
+ median_error = angle_error.median()
+ a1_error = 100.0 * (torch.sum(angle_error < 5) / valid_pics)
+ a2_error = 100.0 * (torch.sum(angle_error < 7.5) / valid_pics)
+
+ a3_error = 100.0 * (torch.sum(angle_error < 11.25) / valid_pics)
+ a4_error = 100.0 * (torch.sum(angle_error < 22.5) / valid_pics)
+ a5_error = 100.0 * (torch.sum(angle_error < 30) / valid_pics)
+
+ # if valid_pics > 1e-5:
+ # If the current node gets data with valid normal
+ dist_node_cnt = (valid_pics - 1e-6) / valid_pics
+
+ if is_distributed:
+ dist.all_reduce(dist_node_cnt)
+ dist.all_reduce(mean_error)
+ dist.all_reduce(rmse_error)
+ dist.all_reduce(a1_error)
+ dist.all_reduce(a2_error)
+
+ dist.all_reduce(a3_error)
+ dist.all_reduce(a4_error)
+ dist.all_reduce(a5_error)
+
+ dist_node_cnt = dist_node_cnt.cpu().numpy()
+ self.normal_mean.update(mean_error.cpu().numpy(), dist_node_cnt)
+ self.normal_rmse.update(rmse_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a1.update(a1_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a2.update(a2_error.cpu().numpy(), dist_node_cnt)
+
+ self.normal_median.update(median_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a3.update(a3_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a4.update(a4_error.cpu().numpy(), dist_node_cnt)
+ self.normal_a5.update(a5_error.cpu().numpy(), dist_node_cnt)
+
+
+ def get_metrics(self,):
+ """
+ """
+ metrics_dict = {}
+ for metric in self.metrics:
+ metrics_dict[metric] = self.__getattribute__(metric).avg
+ return metrics_dict
+
+
+ def get_metrics(self,):
+ """
+ """
+ metrics_dict = {}
+ for metric in self.metrics:
+ metrics_dict[metric] = self.__getattribute__(metric).avg
+ return metrics_dict
+
+
+def get_absrel_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes absolute relative error.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ #Mean Absolute Relative Error
+ rel = torch.abs(t_m - p_m) / (t_m + 1e-10) # compute errors
+ abs_rel_sum = torch.sum(rel.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ abs_err = abs_rel_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(abs_err), valid_pics
+
+def get_sqrel_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes squared relative error.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ #Mean Absolute Relative Error
+ sq_rel = torch.abs(t_m - p_m)**2 / (t_m + 1e-10) # compute errors
+ sq_rel_sum = torch.sum(sq_rel.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ sqrel_err = sq_rel_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(sqrel_err), valid_pics
+
+def get_log10_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes log10 error.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log10(p_m+1e-10) - torch.log10(t_m+1e-10)) * mask
+ log10_diff = torch.abs(diff_log) # compute errors
+ log10_sum = torch.sum(log10_diff.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ abs_err = log10_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(abs_err), valid_pics
+
+def get_rmse_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes log root mean squared error.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ square = (t_m - p_m) ** 2
+ rmse_sum = torch.sum(square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ rmse = torch.sqrt(rmse_sum / (num + 1e-10))
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(rmse), valid_pics
+
+def get_rmse_log_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes root mean squared error.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log(p_m+1e-10) - torch.log(t_m+1e-10)) * mask
+ square = diff_log ** 2
+ rmse_sum = torch.sum(square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ rmse = torch.sqrt(rmse_sum / (num + 1e-10))
+ valid_pics = torch.sum(num > 0)
+ return torch.sum(rmse), valid_pics
+
+
+def get_silog_err(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes scale invariant loss based on differences of logs of depth maps.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred * mask
+
+ diff_log = (torch.log(p_m+1e-10) - torch.log(t_m+1e-10)) * mask
+ diff_log_sum = torch.sum(diff_log.reshape((b, c, -1)), dim=2) # [b, c]
+ diff_log_square = diff_log ** 2
+ diff_log_square_sum = torch.sum(diff_log_square.reshape((b, c, -1)), dim=2) # [b, c]
+ num = torch.sum(mask.reshape((b, c, -1)), dim=2) # [b, c]
+ silog = torch.sqrt(diff_log_square_sum / (num + 1e-10) - (diff_log_sum / (num + 1e-10)) **2 )
+ valid_pics = torch.sum(num > 0)
+ if torch.isnan(torch.sum(silog)):
+ print('None in silog')
+ return torch.sum(silog), valid_pics
+
+
+def get_ratio_error(pred: torch.tensor,
+ target: torch.tensor,
+ mask: torch.tensor):
+ """
+ Computes the percentage of pixels for which the ratio of the two depth maps is less than a given threshold.
+ Takes preprocessed depths (no nans, infs and non-positive values).
+ pred, target, and mask should be in the shape of [b, c, h, w]
+ """
+ assert len(pred.shape) == 4, len(target.shape) == 4
+ b, c, h, w = pred.shape
+ mask = mask.to(torch.float)
+ t_m = target * mask
+ p_m = pred
+
+ gt_pred = t_m / (p_m + 1e-10)
+ pred_gt = p_m / (t_m + 1e-10)
+ gt_pred = gt_pred.reshape((b, c, -1))
+ pred_gt = pred_gt.reshape((b, c, -1))
+ gt_pred_gt = torch.cat((gt_pred, pred_gt), axis=1)
+ ratio_max = torch.amax(gt_pred_gt, axis=1)
+
+ mask = mask.reshape((b, -1))
+ delta_1_sum = torch.sum((ratio_max < 1.25) * mask, dim=1) # [b, ]
+ delta_2_sum = torch.sum((ratio_max < 1.25**2) * mask, dim=1) # [b,]
+ delta_3_sum = torch.sum((ratio_max < 1.25**3) * mask, dim=1) # [b, ]
+ num = torch.sum(mask, dim=1) # [b, ]
+
+ delta_1 = delta_1_sum / (num + 1e-10)
+ delta_2 = delta_2_sum / (num + 1e-10)
+ delta_3 = delta_3_sum / (num + 1e-10)
+ valid_pics = torch.sum(num > 0)
+
+ return torch.sum(delta_1), torch.sum(delta_2), torch.sum(delta_3), valid_pics
+
+def unproj_pcd(
+ depth: torch.tensor,
+ intrinsic: torch.tensor
+ ):
+ depth = depth.squeeze(1) # [B, H, W]
+ b, h, w = depth.size()
+ v = torch.arange(0, h).view(1, h, 1).expand(b, h, w).type_as(depth) # [B, H, W]
+ u = torch.arange(0, w).view(1, 1, w).expand(b, h, w).type_as(depth) # [B, H, W]
+ x = (u - intrinsic[:, 0, 2]) / intrinsic[:, 0, 0] * depth # [B, H, W]
+ y = (v - intrinsic[:, 1, 2]) / intrinsic[:, 0, 0] * depth # [B, H, W]
+ pcd = torch.stack([x, y, depth], dim=1)
+ return pcd
+
+def forward_warp(
+ depth: torch.tensor,
+ intrinsic: torch.tensor,
+ pose: torch.tensor,
+ ):
+ """
+ Warp the depth with the provided pose.
+ Args:
+ depth: depth map of the target image -- [B, 1, H, W]
+ intrinsic: camera intrinsic parameters -- [B, 3, 3]
+ pose: the camera pose -- [B, 4, 4]
+ """
+ B, _, H, W = depth.shape
+ pcd = unproj_pcd(depth.float(), intrinsic.float())
+ pcd = pcd.reshape(B, 3, -1) # [B, 3, H*W]
+ rot, tr = pose[:, :3, :3], pose[:, :3, -1:]
+ proj_pcd = rot @ pcd + tr
+
+ img_coors = intrinsic @ proj_pcd
+
+ X = img_coors[:, 0, :]
+ Y = img_coors[:, 1, :]
+ Z = img_coors[:, 2, :].clamp(min=1e-3)
+
+ x_img_coor = (X/Z + 0.5).long()
+ y_img_coor = (Y/Z + 0.5).long()
+
+ X_mask = ((x_img_coor >=0) & (x_img_coor < W))
+ Y_mask = ((y_img_coor >=0) & (y_img_coor < H))
+ mask = X_mask & Y_mask
+
+ proj_depth = torch.zeros_like(Z).reshape(B, 1, H, W)
+ for i in range(B):
+ proj_depth[i, :, y_img_coor[i,...][mask[i,...]], x_img_coor[i,...][mask[i,...]]] = Z[i,...][mask[i,...]]
+ plt.imsave('warp2.png', proj_depth.squeeze().cpu().numpy(), cmap='rainbow')
+ return proj_depth
+
+
+def get_video_consistency_err(
+ pred_f1: torch.tensor,
+ pred_f2: torch.tensor,
+ ego_pose_f1_to_f2: torch.tensor,
+ intrinsic: torch.tensor,
+ ):
+ """
+ Compute consistency error between consecutive frames.
+ """
+ if pred_f2 is None or ego_pose_f1_to_f2 is None or intrinsic is None:
+ return torch.zeros_like(pred_f1).sum(), torch.zeros_like(pred_f1).sum()
+ ego_pose_f1_to_f2 = ego_pose_f1_to_f2.float()
+ pred_f2 = pred_f2.float()
+
+ pred_f1 = pred_f1[:, None, :, :] if pred_f1.ndim == 3 else pred_f1
+ pred_f2 = pred_f2[:, None, :, :] if pred_f2.ndim == 3 else pred_f2
+ pred_f1 = pred_f1[None, None, :, :] if pred_f1.ndim == 2 else pred_f1
+ pred_f2 = pred_f2[None, None, :, :] if pred_f2.ndim == 2 else pred_f2
+
+ B, _, H, W = pred_f1.shape
+ # Get projection matrix for tgt camera frame to source pixel frame
+ cam_coords = pixel2cam(pred_f1.squeeze(1).float(), intrinsic.inverse().float()) # [B,3,H,W]
+ #proj_depth_my = forward_warp(pred_f1, intrinsic, ego_pose_f1_to_f2)
+
+ proj_f1_to_f2 = intrinsic @ ego_pose_f1_to_f2[:, :3, :] # [B, 3, 4]
+ rot, tr = proj_f1_to_f2[:, :, :3], proj_f1_to_f2[:, :, -1:]
+ f2_pixel_coords, warped_depth_f1_to_f2 = cam2pixel2(cam_coords, rot, tr, padding_mode="zeros") # [B,H,W,2]
+
+ projected_depth = F.grid_sample(pred_f2, f2_pixel_coords, padding_mode="zeros", align_corners=False)
+
+ mask_valid = (projected_depth > 1e-6) & (warped_depth_f1_to_f2 > 1e-6)
+
+ # plt.imsave('f1.png', pred_f1.squeeze().cpu().numpy(), cmap='rainbow')
+ # plt.imsave('f2.png', pred_f2.squeeze().cpu().numpy(), cmap='rainbow')
+ # plt.imsave('warp.png', warped_depth_f1_to_f2.squeeze().cpu().numpy(), cmap='rainbow')
+ # plt.imsave('proj.png', projected_depth.squeeze().cpu().numpy(), cmap='rainbow')
+
+ consistency_rel_err, valid_pix = get_absrel_err(warped_depth_f1_to_f2, projected_depth, mask_valid)
+ return consistency_rel_err, valid_pix
+
+
+if __name__ == '__main__':
+ cfg = ['abs_rel', 'delta1']
+ dam = MetricAverageMeter(cfg)
+
+ pred_depth = np.random.random([2, 480, 640])
+ gt_depth = np.random.random([2, 480, 640]) - 0.5 #np.ones_like(pred_depth) * (-1) #
+ intrinsic = [[100, 100, 200, 200], [200, 200, 300, 300]]
+
+ pred = torch.from_numpy(pred_depth).cuda()
+ gt = torch.from_numpy(gt_depth).cuda()
+
+ mask = gt > 0
+ dam.update_metrics_gpu(pred, pred, mask, False)
+ eval_error = dam.get_metrics()
+ print(eval_error)
diff --git a/finetune/Metric3D/training/mono/utils/comm.py b/finetune/Metric3D/training/mono/utils/comm.py
new file mode 100644
index 0000000000000000000000000000000000000000..11227f5c569c0839f9c1239a046b389a29272a65
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/comm.py
@@ -0,0 +1,343 @@
+import importlib
+import torch
+import torch.distributed as dist
+from .avg_meter import AverageMeter
+from collections import defaultdict, OrderedDict
+import os
+import socket
+from mmcv.utils import collect_env as collect_base_env
+try:
+ from mmcv.utils import get_git_hash
+except:
+ from mmengine import get_git_hash
+#import mono.mmseg as mmseg
+import mmseg
+import time
+import datetime
+import logging
+
+
+def main_process() -> bool:
+ return get_rank() == 0
+ #return not cfg.distributed or \
+ # (cfg.distributed and cfg.local_rank == 0)
+
+def get_world_size() -> int:
+ if not dist.is_available():
+ return 1
+ if not dist.is_initialized():
+ return 1
+ return dist.get_world_size()
+
+def get_rank() -> int:
+ if not dist.is_available():
+ return 0
+ if not dist.is_initialized():
+ return 0
+ return dist.get_rank()
+
+def _find_free_port():
+ # refer to https://github.com/facebookresearch/detectron2/blob/main/detectron2/engine/launch.py # noqa: E501
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ # Binding to port 0 will cause the OS to find an available port for us
+ sock.bind(('', 0))
+ port = sock.getsockname()[1]
+ sock.close()
+ # NOTE: there is still a chance the port could be taken by other processes.
+ return port
+
+def _is_free_port(port):
+ ips = socket.gethostbyname_ex(socket.gethostname())[-1]
+ ips.append('localhost')
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
+ return all(s.connect_ex((ip, port)) != 0 for ip in ips)
+
+
+def collect_env():
+ """Collect the information of the running environments."""
+ env_info = collect_base_env()
+ env_info['MMSegmentation'] = f'{mmseg.__version__}+{get_git_hash()[:7]}'
+
+ return env_info
+
+def init_env(launcher, cfg):
+ """Initialize distributed training environment.
+ If argument ``cfg.dist_params.dist_url`` is specified as 'env://', then the master port will be system
+ environment variable ``MASTER_PORT``. If ``MASTER_PORT`` is not in system
+ environment variable, then a default port ``29500`` will be used.
+ """
+ if launcher == 'slurm':
+ _init_dist_slurm(cfg)
+ elif launcher == 'ror':
+ _init_dist_ror(cfg)
+ elif launcher == 'None':
+ _init_none_dist(cfg)
+ elif launcher == 'pytorch':
+ _init_dist_pytorch(cfg)
+ else:
+ raise RuntimeError(f'{cfg.launcher} has not been supported!')
+
+def _init_none_dist(cfg):
+ cfg.dist_params.num_gpus_per_node = 1
+ cfg.dist_params.world_size = 1
+ cfg.dist_params.nnodes = 1
+ cfg.dist_params.node_rank = 0
+ cfg.dist_params.global_rank = 0
+ cfg.dist_params.local_rank = 0
+ os.environ["WORLD_SIZE"] = str(1)
+
+def _init_dist_ror(cfg):
+ from ac2.ror.comm import get_local_rank, get_world_rank, get_local_size, get_node_rank, get_world_size
+ cfg.dist_params.num_gpus_per_node = get_local_size()
+ cfg.dist_params.world_size = get_world_size()
+ cfg.dist_params.nnodes = (get_world_size()) // (get_local_size())
+ cfg.dist_params.node_rank = get_node_rank()
+ cfg.dist_params.global_rank = get_world_rank()
+ cfg.dist_params.local_rank = get_local_rank()
+ os.environ["WORLD_SIZE"] = str(get_world_size())
+
+
+def _init_dist_pytorch(cfg):
+ # load env. paras.
+ local_rank = int(os.environ['LOCAL_RANK'])
+ world_size = int(os.environ['WORLD_SIZE'])
+ global_rank = int(os.environ['RANK'])
+ num_gpus = torch.cuda.device_count()
+
+ cfg.dist_params.num_gpus_per_node = num_gpus
+ cfg.dist_params.world_size = world_size
+ cfg.dist_params.nnodes = int(world_size // num_gpus)
+ cfg.dist_params.node_rank = int(global_rank % num_gpus)
+ cfg.dist_params.global_rank = global_rank
+
+ os.environ['NODE_RANK'] = str(cfg.dist_params.node_rank)
+ # set dist_url to 'env://'
+ cfg.dist_params.dist_url = 'env://' #f"{master_addr}:{master_port}"
+
+
+def _init_dist_slurm(cfg):
+ if 'NNODES' not in os.environ:
+ os.environ['NNODES'] = str(cfg.dist_params.nnodes)
+ if 'NODE_RANK' not in os.environ:
+ os.environ['NODE_RANK'] = str(cfg.dist_params.node_rank)
+
+ #cfg.dist_params.
+ num_gpus = torch.cuda.device_count()
+ world_size = int(os.environ['NNODES']) * num_gpus
+ os.environ['WORLD_SIZE'] = str(world_size)
+
+ # config port
+ if 'MASTER_PORT' in os.environ:
+ master_port = str(os.environ['MASTER_PORT']) # use MASTER_PORT in the environment variable
+ else:
+ # if torch.distributed default port(29500) is available
+ # then use it, else find a free port
+ if _is_free_port(16500):
+ master_port = '16500'
+ else:
+ master_port = str(_find_free_port())
+ os.environ['MASTER_PORT'] = master_port
+
+ # config addr
+ if 'MASTER_ADDR' in os.environ:
+ master_addr = str(os.environ['MASTER_PORT']) # use MASTER_PORT in the environment variable
+ # elif cfg.dist_params.dist_url is not None:
+ # master_addr = ':'.join(str(cfg.dist_params.dist_url).split(':')[:2])
+ else:
+ master_addr = '127.0.0.1' #'tcp://127.0.0.1'
+ os.environ['MASTER_ADDR'] = master_addr
+
+ # set dist_url to 'env://'
+ cfg.dist_params.dist_url = 'env://' #f"{master_addr}:{master_port}"
+
+ cfg.dist_params.num_gpus_per_node = num_gpus
+ cfg.dist_params.world_size = world_size
+ cfg.dist_params.nnodes = int(os.environ['NNODES'])
+ cfg.dist_params.node_rank = int(os.environ['NODE_RANK'])
+
+ # if int(os.environ['NNODES']) > 1 and cfg.dist_params.dist_url.startswith("file://"):
+ # raise Warning("file:// is not a reliable init_method in multi-machine jobs. Prefer tcp://")
+
+
+def get_func(func_name):
+ """
+ Helper to return a function object by name. func_name must identify
+ a function in this module or the path to a function relative to the base
+ module.
+ @ func_name: function name.
+ """
+ if func_name == '':
+ return None
+ try:
+ parts = func_name.split('.')
+ # Refers to a function in this module
+ if len(parts) == 1:
+ return globals()[parts[0]]
+ # Otherwise, assume we're referencing a module under modeling
+ module_name = '.'.join(parts[:-1])
+ module = importlib.import_module(module_name)
+ return getattr(module, parts[-1])
+ except:
+ raise RuntimeError(f'Failed to find function: {func_name}')
+
+class Timer(object):
+ """A simple timer."""
+
+ def __init__(self):
+ self.reset()
+
+ def tic(self):
+ # using time.time instead of time.clock because time time.clock
+ # does not normalize for multithreading
+ self.start_time = time.time()
+
+ def toc(self, average=True):
+ self.diff = time.time() - self.start_time
+ self.total_time += self.diff
+ self.calls += 1
+ self.average_time = self.total_time / self.calls
+ if average:
+ return self.average_time
+ else:
+ return self.diff
+
+ def reset(self):
+ self.total_time = 0.
+ self.calls = 0
+ self.start_time = 0.
+ self.diff = 0.
+ self.average_time = 0.
+
+class TrainingStats(object):
+ """Track vital training statistics."""
+ def __init__(self, log_period, tensorboard_logger=None):
+ self.log_period = log_period
+ self.tblogger = tensorboard_logger
+ self.tb_ignored_keys = ['iter', 'eta', 'epoch', 'time', 'val_err']
+ self.iter_timer = Timer()
+ # Window size for smoothing tracked values (with median filtering)
+ self.filter_size = log_period
+ def create_smoothed_value():
+ return AverageMeter()
+ self.smoothed_losses = defaultdict(create_smoothed_value)
+ #self.smoothed_metrics = defaultdict(create_smoothed_value)
+ #self.smoothed_total_loss = AverageMeter()
+
+
+ def IterTic(self):
+ self.iter_timer.tic()
+
+ def IterToc(self):
+ return self.iter_timer.toc(average=False)
+
+ def reset_iter_time(self):
+ self.iter_timer.reset()
+
+ def update_iter_stats(self, losses_dict):
+ """Update tracked iteration statistics."""
+ for k, v in losses_dict.items():
+ self.smoothed_losses[k].update(float(v), 1)
+
+ def log_iter_stats(self, cur_iter, optimizer, max_iters, val_err={}):
+ """Log the tracked statistics."""
+ if (cur_iter % self.log_period == 0):
+ stats = self.get_stats(cur_iter, optimizer, max_iters, val_err)
+ log_stats(stats)
+ if self.tblogger:
+ self.tb_log_stats(stats, cur_iter)
+ for k, v in self.smoothed_losses.items():
+ v.reset()
+ self.iter_timer.reset() # reset time counting every log period
+
+ def tb_log_stats(self, stats, cur_iter):
+ """Log the tracked statistics to tensorboard"""
+ for k in stats:
+ # ignore some logs
+ if k not in self.tb_ignored_keys:
+ v = stats[k]
+ if isinstance(v, dict):
+ self.tb_log_stats(v, cur_iter)
+ else:
+ self.tblogger.add_scalar(k, v, cur_iter)
+
+
+ def get_stats(self, cur_iter, optimizer, max_iters, val_err = {}):
+ eta_seconds = self.iter_timer.average_time * (max_iters - cur_iter)
+
+ eta = str(datetime.timedelta(seconds=int(eta_seconds)))
+ stats = OrderedDict(
+ iter=cur_iter, # 1-indexed
+ time=self.iter_timer.average_time,
+ eta=eta,
+ )
+ optimizer_state_dict = optimizer.state_dict()
+ lr = {}
+ for i in range(len(optimizer_state_dict['param_groups'])):
+ lr_name = 'group%d_lr' % i
+ lr[lr_name] = optimizer_state_dict['param_groups'][i]['lr']
+
+ stats['lr'] = OrderedDict(lr)
+ for k, v in self.smoothed_losses.items():
+ stats[k] = v.avg
+
+ stats['val_err'] = OrderedDict(val_err)
+ stats['max_iters'] = max_iters
+ return stats
+
+
+def reduce_dict(input_dict, average=True):
+ """
+ Reduce the values in the dictionary from all processes so that process with rank
+ 0 has the reduced results.
+ Args:
+ @input_dict (dict): inputs to be reduced. All the values must be scalar CUDA Tensor.
+ @average (bool): whether to do average or sum
+ Returns:
+ a dict with the same keys as input_dict, after reduction.
+ """
+ world_size = get_world_size()
+ if world_size < 2:
+ return input_dict
+ with torch.no_grad():
+ names = []
+ values = []
+ # sort the keys so that they are consistent across processes
+ for k in sorted(input_dict.keys()):
+ names.append(k)
+ values.append(input_dict[k])
+ values = torch.stack(values, dim=0)
+ dist.reduce(values, dst=0)
+ if dist.get_rank() == 0 and average:
+ # only main process gets accumulated, so only divide by
+ # world_size in this case
+ values /= world_size
+ reduced_dict = {k: v for k, v in zip(names, values)}
+ return reduced_dict
+
+
+def log_stats(stats):
+ logger = logging.getLogger()
+ """Log training statistics to terminal"""
+ lines = "[Step %d/%d]\n" % (
+ stats['iter'], stats['max_iters'])
+
+ lines += "\t\tloss: %.3f, time: %.6f, eta: %s\n" % (
+ stats['total_loss'], stats['time'], stats['eta'])
+
+ # log loss
+ lines += "\t\t"
+ for k, v in stats.items():
+ if 'loss' in k.lower() and 'total_loss' not in k.lower():
+ lines += "%s: %.3f" % (k, v) + ", "
+ lines = lines[:-3]
+ lines += '\n'
+
+ # validate criteria
+ lines += "\t\tlast val err:" + ", ".join("%s: %.6f" % (k, v) for k, v in stats['val_err'].items()) + ", "
+ lines += '\n'
+
+ # lr in different groups
+ lines += "\t\t" + ", ".join("%s: %.8f" % (k, v) for k, v in stats['lr'].items())
+ lines += '\n'
+ logger.info(lines[:-1]) # remove last new linen_pxl
+
diff --git a/finetune/Metric3D/training/mono/utils/db.py b/finetune/Metric3D/training/mono/utils/db.py
new file mode 100644
index 0000000000000000000000000000000000000000..164d9acaccd9cab6b4b3def26bc78cc692acd0a5
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/db.py
@@ -0,0 +1,36 @@
+from types import ModuleType
+import data_server_info # data infomation on some server
+
+def load_data_info(module_name, data_info={}, db_type='db_info', module=None):
+ if module is None:
+ module = globals().get(module_name, None)
+ if module:
+ for key, value in module.__dict__.items():
+
+ if not (key.startswith('__')) and not (key.startswith('_')):
+ if key == 'db_info':
+ data_info.update(value)
+ elif isinstance(value, ModuleType):
+ load_data_info(module_name + '.' + key, data_info, module=value)
+ else:
+ raise RuntimeError(f'Try to access "db_info", but cannot find {module_name} module.')
+
+def reset_ckpt_path(cfg, data_info):
+ if isinstance(cfg, dict):
+ for key in cfg.keys():
+ if key == 'backbone':
+ new_ckpt_path = data_info['checkpoint']['db_root'] + '/' + data_info['checkpoint'][cfg.backbone.type]
+ cfg.backbone.update(checkpoint=new_ckpt_path)
+ continue
+ elif isinstance(cfg.get(key), dict):
+ reset_ckpt_path(cfg.get(key), data_info)
+ else:
+ continue
+ else:
+ return
+
+if __name__ == '__main__':
+ db_info_tmp = {}
+ load_data_info('db_data_info', db_info_tmp)
+ print('results', db_info_tmp.keys())
+
diff --git a/finetune/Metric3D/training/mono/utils/do_test.py b/finetune/Metric3D/training/mono/utils/do_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..e34fc2daabf21bd3774fcdeb5f08a749a1f57823
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/do_test.py
@@ -0,0 +1,245 @@
+import torch
+import logging
+import os
+from mono.utils.avg_meter import MetricAverageMeter
+from mono.utils.visualization import save_val_imgs, visual_train_data, create_html, save_raw_imgs, save_normal_val_imgs
+import cv2
+from tqdm import tqdm
+import numpy as np
+from mono.utils.logger import setup_logger
+from mono.utils.comm import main_process
+#from scipy.optimize import minimize
+#from torchmin import minimize
+import torch.optim as optim
+from torch.autograd import Variable
+
+
+def to_cuda(data: dict):
+ for k, v in data.items():
+ if isinstance(v, torch.Tensor):
+ data[k] = v.cuda(non_blocking=True)
+ if isinstance(v, list) and len(v)>=1 and isinstance(v[0], torch.Tensor):
+ for i, l_i in enumerate(v):
+ data[k][i] = l_i.cuda(non_blocking=True)
+ return data
+
+def align_scale(pred: torch.tensor, target: torch.tensor):
+ mask = target > 0
+ if torch.sum(mask) > 10:
+ scale = torch.median(target[mask]) / (torch.median(pred[mask]) + 1e-8)
+ else:
+ scale = 1
+ pred_scale = pred * scale
+ return pred_scale, scale
+
+def align_shift(pred: torch.tensor, target: torch.tensor):
+ mask = target > 0
+ if torch.sum(mask) > 10:
+ shift = torch.median(target[mask]) - (torch.median(pred[mask]) + 1e-8)
+ else:
+ shift = 0
+ pred_shift = pred + shift
+ return pred_shift, shift
+
+def align_scale_shift(pred: torch.tensor, target: torch.tensor):
+ mask = target > 0
+ target_mask = target[mask].cpu().numpy()
+ pred_mask = pred[mask].cpu().numpy()
+ if torch.sum(mask) > 10:
+ scale, shift = np.polyfit(pred_mask, target_mask, deg=1)
+ if scale < 0:
+ scale = torch.median(target[mask]) / (torch.median(pred[mask]) + 1e-8)
+ shift = 0
+ else:
+ scale = 1
+ shift = 0
+ pred = pred * scale + shift
+ return pred, scale
+
+def get_prediction(
+ model: torch.nn.Module,
+ input: torch.tensor,
+ cam_model: torch.tensor,
+ pad_info: torch.tensor,
+ scale_info: torch.tensor,
+ gt_depth: torch.tensor,
+ normalize_scale: float,
+ intrinsic = None,
+ clip_range = None,
+ flip_aug = False):
+ #clip_range = [0, 10],
+ #flip_aug = True):
+
+ data = dict(
+ input=input,
+ #ref_input=ref_input,
+ cam_model=cam_model
+ )
+ #output = model.module.inference(data)
+ output = model.module.inference(data)
+ pred_depth, confidence = output['prediction'], output['confidence']
+ pred_depth = torch.abs(pred_depth)
+ pred_depth = pred_depth.squeeze()
+
+ if flip_aug == True:
+ output_flip = model.module.inference(dict(
+ input=torch.flip(input, [3]),
+ #ref_input=ref_input,
+ cam_model=cam_model
+ ))
+
+ if clip_range != None:
+ output['prediction'] = torch.clamp(output['prediction'], clip_range[0], clip_range[1])
+ output_flip['prediction'] = torch.clamp(output_flip['prediction'], clip_range[0] / normalize_scale * scale_info , clip_range[1] / normalize_scale * scale_info)
+
+ output['prediction'] = 0.5 * (output['prediction'] + torch.flip(output_flip['prediction'], [3]))
+ output['confidence'] = 0.5 * (output['confidence'] + torch.flip(output_flip['confidence'], [3]))
+
+ output['pad'] = torch.Tensor(pad_info).cuda().unsqueeze(0).int()
+ output['mask'] = torch.ones_like(pred_depth).bool().unsqueeze(0).unsqueeze(1)
+ output['scale_info'] = scale_info
+ if intrinsic is not None:
+ output['intrinsic'] = intrinsic
+
+ pred_depth = pred_depth[pad_info[0]: pred_depth.shape[0]-pad_info[1], pad_info[2]: pred_depth.shape[1]-pad_info[3]]
+ pred_depth = torch.nn.functional.interpolate(pred_depth[None, None, :, :], gt_depth.shape, mode='bilinear').squeeze() # to orginal size
+ pred_depth = pred_depth * normalize_scale / scale_info
+
+ if clip_range != None:
+ pred_depth = torch.clamp(pred_depth, clip_range[0], clip_range[1])
+
+ pred_depth_scale, scale = align_scale(pred_depth, gt_depth) #align_scale_shift(pred_depth, gt_depth)
+
+ if clip_range != None:
+ pred_depth_scale = torch.clamp(pred_depth_scale, clip_range[0], clip_range[1])
+
+ return pred_depth, pred_depth_scale, scale, output
+
+
+# def depth_normal_consistency_optimization(output_dict, consistency_fn):
+# s = torch.zeros_like(output_dict['scale_info'])
+# def closure(x):
+# output_dict['scale'] = torch.exp(x) * output_dict['scale_info']
+# error = consistency_fn(**output_dict)
+# return error + x * x
+
+# result = minimize(closure, s, method='newton-exact', disp=1, options={'max_iter':10, 'lr':0.1})
+# return float(torch.exp(-result.x))
+
+
+def do_test_with_dataloader(
+ model: torch.nn.Module,
+ cfg: dict,
+ dataloader: torch.utils.data,
+ logger: logging.RootLogger,
+ is_distributed: bool = True,
+ local_rank: int = 0):
+
+ show_dir = cfg.show_dir
+ save_interval = 100
+ save_html_path = show_dir + '/index.html'
+ save_imgs_dir = show_dir + '/vis'
+ os.makedirs(save_imgs_dir, exist_ok=True)
+ save_raw_dir = show_dir + '/raw'
+ os.makedirs(save_raw_dir, exist_ok=True)
+
+ normalize_scale = cfg.data_basic.depth_range[1]
+
+ dam = MetricAverageMeter(cfg.test_metrics)
+ dam_scale = MetricAverageMeter(cfg.test_metrics)
+
+ try:
+ depth_range = cfg.data_basic.clip_depth_range if cfg.clip_depth else None
+ except:
+ depth_range = None
+
+ for i, data in enumerate(tqdm(dataloader)):
+
+ # logger.info(f'{local_rank}: {i}/{len(dataloader)}')
+ data = to_cuda(data)
+ gt_depth = data['target'].squeeze()
+ mask = gt_depth > 1e-6
+ pad_info = data['pad']
+ pred_depth, pred_depth_scale, scale, output = get_prediction(
+ model,
+ data['input'],
+ data['cam_model'],
+ pad_info,
+ data['scale'],
+ gt_depth,
+ normalize_scale,
+ data['intrinsic'],
+ )
+
+ logger.info(f'{data["filename"]}: {scale}')
+
+ # optimization
+ #if "normal_out_list" in output.keys():
+ #scale_opt = depth_normal_consistency_optimization(output, consistency_loss)
+ #print('scale', scale_opt, float(scale))
+ scale_opt = 1.0
+
+ # update depth metrics
+ dam_scale.update_metrics_gpu(pred_depth_scale, gt_depth, mask, is_distributed)
+ dam.update_metrics_gpu(pred_depth, gt_depth, mask, is_distributed)
+
+ # save evaluation results
+ if i % save_interval == 0:
+ # save
+ rgb = data['input'][:, :, pad_info[0]: data['input'].shape[2]-pad_info[1], pad_info[2]: data['input'].shape[3]-pad_info[3]]
+ rgb = torch.nn.functional.interpolate(rgb, gt_depth.shape, mode='bilinear').squeeze()
+ max_scale = save_val_imgs(i,
+ pred_depth,
+ gt_depth,
+ rgb,
+ data['filename'][0],
+ save_imgs_dir,
+ )
+ logger.info(f'{data["filename"]}, {"max_scale"}: {max_scale}')
+
+ # # save original depth/rgb
+ # save_raw_imgs(
+ # pred_depth.cpu().squeeze().numpy(),
+ # data['raw_rgb'].cpu().squeeze().numpy(),
+ # data['filename'][0],
+ # save_raw_dir,
+ # )
+
+
+ # surface normal metrics
+ if "normal_out_list" in output.keys():
+ normal_out_list = output['normal_out_list']
+ gt_normal = data['normal']
+
+ pred_normal = normal_out_list[-1][:, :3, :, :] # (B, 3, H, W)
+ H, W = pred_normal.shape[2:]
+ pred_normal = pred_normal[:, :, pad_info[0]:H-pad_info[1], pad_info[2]:W-pad_info[3]]
+ pred_normal = torch.nn.functional.interpolate(pred_normal, size=gt_normal.shape[2:], mode='bilinear', align_corners=True)
+
+ gt_normal_mask = ~torch.all(gt_normal == 0, dim=1, keepdim=True)
+ dam.update_normal_metrics_gpu(pred_normal, gt_normal, gt_normal_mask, cfg.distributed)# save valiad normal
+
+ if i % save_interval == 0:
+ save_normal_val_imgs(iter,
+ pred_normal,
+ gt_normal,
+ rgb, # data['input'],
+ 'normal_' + data['filename'][0],
+ save_imgs_dir,
+ )
+
+ # get validation error
+ if main_process():
+ eval_error = dam.get_metrics()
+ print('>>>>>W/o scale: ', eval_error)
+ eval_error_scale = dam_scale.get_metrics()
+ print('>>>>>W scale: ', eval_error_scale)
+ # disp_eval_error = dam_disp.get_metrics()
+ # print('>>>>>Disp to depth: ', disp_eval_error)
+ # for i, dam in enumerate(dams):
+ # print(f'>>>>>W/o scale gru{i}: ', dam.get_metrics())
+
+ logger.info(eval_error)
+ logger.info(eval_error_scale)
+ # logger.info(disp_eval_error)
+ # [logger.info(dam.get_metrics()) for dam in dams]
diff --git a/finetune/Metric3D/training/mono/utils/do_train.py b/finetune/Metric3D/training/mono/utils/do_train.py
new file mode 100644
index 0000000000000000000000000000000000000000..69bb1e009418d832ae27033f0a7532a003492e59
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/do_train.py
@@ -0,0 +1,529 @@
+import os
+import torch
+import matplotlib.pyplot as plt
+from mono.model.monodepth_model import get_configured_monodepth_model
+from tensorboardX import SummaryWriter
+from mono.utils.comm import TrainingStats
+from mono.utils.avg_meter import MetricAverageMeter
+from mono.utils.running import build_lr_schedule_with_cfg, build_optimizer_with_cfg, load_ckpt, save_ckpt
+from mono.utils.comm import reduce_dict, main_process, get_rank
+from mono.utils.visualization import save_val_imgs, visual_train_data, create_html, save_normal_val_imgs
+import traceback
+from mono.utils.visualization import create_dir_for_validate_meta
+from mono.model.criterion import build_criterions
+from mono.datasets.distributed_sampler import build_dataset_n_sampler_with_cfg, build_data_array
+from mono.utils.logger import setup_logger
+import logging
+from .misc import NativeScalerWithGradNormCount, is_bf16_supported
+import math
+import sys
+import random
+import numpy as np
+import torch.distributed as dist
+import torch.nn.functional as F
+from contextlib import nullcontext
+
+def to_cuda(data):
+ for k, v in data.items():
+ if isinstance(v, torch.Tensor):
+ data[k] = v.cuda(non_blocking=True)
+ if isinstance(v, list) and len(v)>1 and isinstance(v[0], torch.Tensor):
+ for i, l_i in enumerate(v):
+ data[k][i] = l_i.cuda(non_blocking=True)
+ return data
+
+def do_train(local_rank: int, cfg: dict):
+
+ logger = setup_logger(cfg.log_file)
+
+ # build criterions
+ criterions = build_criterions(cfg)
+
+ # build model
+ model = get_configured_monodepth_model(cfg,
+ criterions,
+ )
+
+ # log model state_dict
+ if main_process():
+ logger.info(model.state_dict().keys())
+
+ # build datasets
+ train_dataset, train_sampler = build_dataset_n_sampler_with_cfg(cfg, 'train')
+ if 'multi_dataset_eval' in cfg.evaluation and cfg.evaluation.multi_dataset_eval:
+ val_dataset = build_data_array(cfg, 'val')
+ else:
+ val_dataset, val_sampler = build_dataset_n_sampler_with_cfg(cfg, 'val')
+ # build data loaders
+ g = torch.Generator()
+ g.manual_seed(cfg.seed + cfg.dist_params.global_rank)
+ train_dataloader = torch.utils.data.DataLoader(dataset=train_dataset,
+ batch_size=cfg.batchsize_per_gpu,
+ num_workers=cfg.thread_per_gpu,
+ sampler=train_sampler,
+ drop_last=True,
+ pin_memory=True,
+ generator=g,)
+ # collate_fn=collate_fn)
+ if isinstance(val_dataset, list):
+ val_dataloader = [torch.utils.data.DataLoader(dataset=val_dataset,
+ batch_size=1,
+ num_workers=0,
+ sampler=torch.utils.data.distributed.DistributedSampler(val_dataset, shuffle=False),
+ drop_last=True,
+ pin_memory=True,) for val_group in val_dataset for val_dataset in val_group]
+ else:
+ val_dataloader = torch.utils.data.DataLoader(dataset=val_dataset,
+ batch_size=1,
+ num_workers=0,
+ sampler=val_sampler,
+ drop_last=True,
+ pin_memory=True,)
+
+ # build schedule
+ lr_scheduler = build_lr_schedule_with_cfg(cfg)
+ optimizer = build_optimizer_with_cfg(cfg, model)
+
+ # config distributed training
+ if cfg.distributed:
+ model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model)
+ model = torch.nn.parallel.DistributedDataParallel(model.cuda(),
+ device_ids=[local_rank],
+ output_device=local_rank,
+ find_unused_parameters=False)
+ else:
+ model = torch.nn.DataParallel(model.cuda())
+
+ # init automatic mix precision training
+ # if 'AMP' in cfg.runner.type:
+ # loss_scaler = NativeScalerWithGradNormCount()
+ # else:
+ # loss_scaler = None
+ loss_scaler = None
+
+ # load ckpt
+ if cfg.load_from and cfg.resume_from is None:
+ model, _, _, loss_scaler = load_ckpt(cfg.load_from, model, optimizer=None, scheduler=None, strict_match=False, loss_scaler=loss_scaler)
+ elif cfg.resume_from:
+ model, optimizer, lr_scheduler, loss_scaler = load_ckpt(
+ cfg.resume_from,
+ model,
+ optimizer=optimizer,
+ scheduler=lr_scheduler,
+ strict_match=False,
+ loss_scaler=loss_scaler)
+
+ if cfg.runner.type == 'IterBasedRunner':
+ train_by_iters(cfg,
+ model,
+ optimizer,
+ lr_scheduler,
+ train_dataloader,
+ val_dataloader,
+ )
+ elif cfg.runner.type == 'IterBasedRunner_MultiSize':
+ train_by_iters_multisize(cfg,
+ model,
+ optimizer,
+ lr_scheduler,
+ train_dataloader,
+ val_dataloader,
+ )
+ elif cfg.runner.type == 'IterBasedRunner_AMP':
+ train_by_iters_amp(
+ cfg = cfg,
+ model=model,
+ optimizer=optimizer,
+ lr_scheduler=lr_scheduler,
+ train_dataloader=train_dataloader,
+ val_dataloader=val_dataloader,
+ loss_scaler=loss_scaler
+ )
+ elif cfg.runner.type == 'IterBasedRunner_AMP_MultiSize':
+ train_by_iters_amp_multisize(
+ cfg = cfg,
+ model=model,
+ optimizer=optimizer,
+ lr_scheduler=lr_scheduler,
+ train_dataloader=train_dataloader,
+ val_dataloader=val_dataloader,
+ loss_scaler=loss_scaler
+ )
+ elif cfg.runner.type == 'EpochBasedRunner':
+ raise RuntimeError('It is not supported currently. :)')
+ else:
+ raise RuntimeError('It is not supported currently. :)')
+
+
+def train_by_iters(cfg, model, optimizer, lr_scheduler, train_dataloader, val_dataloader):
+ """
+ Do the training by iterations.
+ """
+ logger = logging.getLogger()
+ tb_logger = None
+ if cfg.use_tensorboard and main_process():
+ tb_logger = SummaryWriter(cfg.tensorboard_dir)
+ if main_process():
+ training_stats = TrainingStats(log_period=cfg.log_interval, tensorboard_logger=tb_logger)
+
+ lr_scheduler.before_run(optimizer)
+
+ # set training steps
+ max_iters = cfg.runner.max_iters
+ start_iter = lr_scheduler._step_count
+
+ save_interval = cfg.checkpoint_config.interval
+ eval_interval = cfg.evaluation.interval
+ epoch = 0
+ logger.info('Create iterator.')
+ dataloader_iterator = iter(train_dataloader)
+
+ val_err = {}
+ logger.info('Start training.')
+
+ try:
+ # for step in range(start_iter, max_iters):
+ # keep same step in all processes, avoid stuck during eval barrier
+ step = start_iter
+ while step < max_iters:
+ if main_process():
+ training_stats.IterTic()
+
+ # get the data batch
+ try:
+ data = next(dataloader_iterator)
+ except StopIteration:
+ dataloader_iterator = iter(train_dataloader)
+ data = next(dataloader_iterator)
+ except Exception as e:
+ logger.info('When load training data: ', e)
+ continue
+ except:
+ logger.info('Some training data errors exist in the current iter!')
+ continue
+ data = to_cuda(data)
+ # set random crop size
+ # if step % 10 == 0:
+ # set_random_crop_size_for_iter(train_dataloader, step, size_sample_list[step])
+
+ # check training data
+ #for i in range(data['target'].shape[0]):
+ # if 'DDAD' in data['dataset'][i] or \
+ # 'Lyft' in data['dataset'][i] or \
+ # 'DSEC' in data['dataset'][i] or \
+ # 'Argovers2' in data['dataset'][i]:
+ # replace = True
+ # else:
+ # replace = False
+ #visual_train_data(data['target'][i, ...], data['input'][i,...], data['filename'][i], cfg.work_dir, replace=replace)
+
+ # forward
+ pred_depth, losses_dict, conf = model(data)
+
+ optimizer.zero_grad()
+ losses_dict['total_loss'].backward()
+ # if step > 100 and step % 10 == 0:
+ # for param in model.parameters():
+ # print(param.grad.max(), torch.norm(param.grad))
+ torch.nn.utils.clip_grad_norm_(model.parameters(), 10)
+ optimizer.step()
+
+ # reduce losses over all GPUs for logging purposes
+ loss_dict_reduced = reduce_dict(losses_dict)
+
+ lr_scheduler.after_train_iter(optimizer)
+ if main_process():
+ training_stats.update_iter_stats(loss_dict_reduced)
+ training_stats.IterToc()
+ training_stats.log_iter_stats(step, optimizer, max_iters, val_err)
+
+ # validate the model
+ if cfg.evaluation.online_eval and \
+ (step+1) % eval_interval == 0 and \
+ val_dataloader is not None:
+ if isinstance(val_dataloader, list):
+ val_err = validate_multiple_dataset(cfg, step+1, model, val_dataloader, tb_logger)
+ else:
+ val_err = validate(cfg, step+1, model, val_dataloader, tb_logger)
+ if main_process():
+ training_stats.tb_log_stats(val_err, step)
+
+ # save checkpoint
+ if main_process():
+ if ((step+1) % save_interval == 0) or ((step+1)==max_iters):
+ save_ckpt(cfg, model, optimizer, lr_scheduler, step+1, epoch)
+
+ step += 1
+
+ except (RuntimeError, KeyboardInterrupt):
+ stack_trace = traceback.format_exc()
+ print(stack_trace)
+
+def train_by_iters_amp(cfg, model, optimizer, lr_scheduler, train_dataloader, val_dataloader, loss_scaler):
+ """
+ Do the training by iterations.
+ Mix precision is employed.
+ """
+ # set up logger
+ tb_logger = None
+ if cfg.use_tensorboard and main_process():
+ tb_logger = SummaryWriter(cfg.tensorboard_dir)
+ logger = logging.getLogger()
+ # training status
+ if main_process():
+ training_stats = TrainingStats(log_period=cfg.log_interval, tensorboard_logger=tb_logger)
+
+ # learning schedule
+ lr_scheduler.before_run(optimizer)
+
+ # set training steps
+ max_iters = cfg.runner.max_iters
+ start_iter = lr_scheduler._step_count
+
+ save_interval = cfg.checkpoint_config.interval
+ eval_interval = cfg.evaluation.interval
+ epoch = 0
+
+ # If it's too slow try lowering num_worker
+ # see https://discuss.pytorch.org/t/define-iterator-on-dataloader-is-very-slow/52238
+ logger.info('Create iterator.')
+ dataloader_iterator = iter(train_dataloader)
+
+ val_err = {}
+ # torch.cuda.empty_cache()
+ logger.info('Start training.')
+
+ try:
+ acc_batch = cfg.acc_batch
+ except:
+ acc_batch = 1
+
+ try:
+ # for step in range(start_iter, max_iters):
+ # keep same step in all processes, avoid stuck during eval barrier
+ step = start_iter * acc_batch
+ #while step < max_iters:
+ while True:
+
+ if main_process():
+ training_stats.IterTic()
+
+ # get the data batch
+ try:
+ data = next(dataloader_iterator)
+ except StopIteration:
+ dataloader_iterator = iter(train_dataloader)
+ data = next(dataloader_iterator)
+ except Exception as e:
+ logger.info('When load training data: ', e)
+ continue
+ except:
+ logger.info('Some training data errors exist in the current iter!')
+ continue
+
+ data = to_cuda(data)
+
+ with torch.cuda.amp.autocast(dtype=torch.bfloat16):
+ pred_depth, losses_dict, conf = model(data)
+
+ total_loss = losses_dict['total_loss'] / acc_batch
+
+ if not math.isfinite(total_loss):
+ logger.info("Loss is {}, skiping this batch training".format(total_loss))
+ continue
+
+ # optimize, backward
+ if (step+1-start_iter) % acc_batch == 0:
+ optimizer.zero_grad()
+ if loss_scaler == None:
+ total_loss.backward()
+ try:
+ if (step+1-start_iter) % acc_batch == 0:
+ torch.nn.utils.clip_grad_norm_(model.parameters(), 2.5, error_if_nonfinite=True)
+ optimizer.step()
+ except:
+ print('NAN gradient, skipping optimizer.step() for this round...')
+ else:
+ loss_scaler(total_loss, optimizer, clip_grad=5, parameters=model.parameters(), update_grad=True)
+
+ # reduce losses over all GPUs for logging purposes
+ if (step+1-start_iter) % acc_batch == 0:
+ loss_dict_reduced = reduce_dict(losses_dict)
+ lr_scheduler.after_train_iter(optimizer)
+
+ if main_process():
+ training_stats.update_iter_stats(loss_dict_reduced)
+ training_stats.IterToc()
+ training_stats.log_iter_stats(step//acc_batch, optimizer, max_iters, val_err)
+
+ # validate the model
+ if cfg.evaluation.online_eval and \
+ ((step+acc_batch)//acc_batch) % eval_interval == 0 and \
+ val_dataloader is not None:
+ # if True:
+ if isinstance(val_dataloader, list):
+ val_err = validate_multiple_dataset(cfg, ((step+acc_batch)//acc_batch), model, val_dataloader, tb_logger)
+ else:
+ val_err = validate(cfg, ((step+acc_batch)//acc_batch), model, val_dataloader, tb_logger)
+ if main_process():
+ training_stats.tb_log_stats(val_err, step)
+
+ # save checkpoint
+ if main_process():
+ if (((step+acc_batch)//acc_batch) % save_interval == 0) or (((step+acc_batch)//acc_batch)==max_iters):
+ save_ckpt(cfg, model, optimizer, lr_scheduler, ((step+acc_batch)//acc_batch), epoch, loss_scaler=loss_scaler)
+
+ step += 1
+
+
+ except (RuntimeError, KeyboardInterrupt):
+ stack_trace = traceback.format_exc()
+ print(stack_trace)
+
+def validate_multiple_dataset(cfg, iter, model, val_dataloaders, tb_logger):
+ val_errs = {}
+ for val_dataloader in val_dataloaders:
+ val_err = validate(cfg, iter, model, val_dataloader, tb_logger)
+ val_errs.update(val_err)
+ # mean of all dataset
+ mean_val_err = {}
+ for k, v in val_errs.items():
+ metric = 'AllData_eval/' + k.split('/')[-1]
+ if metric not in mean_val_err.keys():
+ mean_val_err[metric] = 0
+ mean_val_err[metric] += v / len(val_dataloaders)
+ val_errs.update(mean_val_err)
+
+ return val_errs
+
+
+def validate(cfg, iter, model, val_dataloader, tb_logger):
+ """
+ Validate the model on single dataset
+ """
+ model.eval()
+ dist.barrier()
+ logger = logging.getLogger()
+ # prepare dir for visualization data
+ save_val_meta_data_dir = create_dir_for_validate_meta(cfg.work_dir, iter)
+ # save_html_path = save_val_meta_data_dir + '.html'
+ dataset_name = val_dataloader.dataset.data_name
+
+ save_point = max(int(len(val_dataloader) / 5), 1)
+ # save_point = 2
+ # depth metric meter
+ dam = MetricAverageMeter(cfg.evaluation.metrics)
+ # dam_disp = MetricAverageMeter([m for m in cfg.evaluation.metrics if m[:6]!='normal'])
+ for i, data in enumerate(val_dataloader):
+ if i % 10 == 0:
+ logger.info(f'Validation step on {dataset_name}: {i}')
+ data = to_cuda(data)
+ output = model.module.inference(data)
+ pred_depth = output['prediction']
+ pred_depth = pred_depth.squeeze()
+ gt_depth = data['target'].cuda(non_blocking=True).squeeze()
+
+ pad = data['pad'].squeeze()
+ H, W = pred_depth.shape
+ pred_depth = pred_depth[pad[0]:H-pad[1], pad[2]:W-pad[3]]
+ gt_depth = gt_depth[pad[0]:H-pad[1], pad[2]:W-pad[3]]
+ rgb = data['input'][0, :, pad[0]:H-pad[1], pad[2]:W-pad[3]]
+ mask = gt_depth > 0
+ #pred_depth_resize = cv2.resize(pred_depth.cpu().numpy(), (torch.squeeze(data['B_raw']).shape[1], torch.squeeze(data['B_raw']).shape[0]))
+ dam.update_metrics_gpu(pred_depth, gt_depth, mask, cfg.distributed)
+
+ # save evaluation results
+ if i%save_point == 0 and main_process():
+ save_val_imgs(iter,
+ pred_depth,
+ gt_depth,
+ rgb, # data['input'],
+ dataset_name + '_' + data['filename'][0],
+ save_val_meta_data_dir,
+ tb_logger=tb_logger)
+
+ ## surface normal
+ if "normal_out_list" in output.keys():
+ normal_out_list = output['normal_out_list']
+ pred_normal = normal_out_list[-1][:, :3, :, :] # (B, 3, H, W)
+ gt_normal = data['normal'].cuda(non_blocking=True)
+ # if pred_normal.shape != gt_normal.shape:
+ # pred_normal = F.interpolate(pred_normal, size=[gt_normal.size(2), gt_normal.size(3)], mode='bilinear', align_corners=True)
+
+ H, W = pred_normal.shape[2:]
+ pred_normal = pred_normal[:, :, pad[0]:H-pad[1], pad[2]:W-pad[3]]
+ gt_normal = gt_normal[:, :, pad[0]:H-pad[1], pad[2]:W-pad[3]]
+ gt_normal_mask = ~torch.all(gt_normal == 0, dim=1, keepdim=True)
+ dam.update_normal_metrics_gpu(pred_normal, gt_normal, gt_normal_mask, cfg.distributed)
+
+ # save valiad normal
+ if i%save_point == 0 and main_process():
+ save_normal_val_imgs(iter,
+ pred_normal,
+ gt_normal,
+ rgb, # data['input'],
+ dataset_name + '_normal_' + data['filename'][0],
+ save_val_meta_data_dir,
+ tb_logger=tb_logger)
+
+ # create html for visualization
+ merged_rgb_pred_gt = os.path.join(save_val_meta_data_dir, '*_merge.jpg')
+ name2path = dict(merg=merged_rgb_pred_gt) #dict(rgbs=rgbs, pred=pred, gt=gt)
+ # if main_process():
+ # create_html(name2path, save_path=save_html_path, size=(256*3, 512))
+
+ # get validation error
+ eval_error = dam.get_metrics()
+ eval_error = {f'{dataset_name}_eval/{k}': v for k,v in eval_error.items()}
+ # eval_disp_error = {f'{dataset_name}_eval/disp_{k}': v for k,v in dam_disp.get_metrics().items()}
+ # eval_error.update(eval_disp_error)
+
+ model.train()
+
+ if 'exclude' in cfg.evaluation and dataset_name in cfg.evaluation.exclude:
+ return {}
+ return eval_error
+
+def set_random_crop_size_for_iter(dataloader: torch.utils.data.dataloader.DataLoader, iter: int, size_pool=None):
+ if size_pool is None:
+ size_pool = [
+ # [504, 504], [560, 1008], [840, 1512], [1120, 2016],
+ [560, 1008], [840, 1512], [1120, 2016],
+ # [480, 768], [480, 960],
+ # [480, 992], [480, 1024],
+ # [480, 1120],
+ # [480, 1280],
+ # [480, 1312],
+ # [512, 512], [512, 640],
+ # [512, 960],
+ # [512, 992],
+ # [512, 1024], [512, 1120],
+ # [512, 1216],
+ # [512, 1280],
+ # [576, 640], [576, 960],
+ # [576, 992],
+ # [576, 1024],
+ # [608, 608], [608, 640],
+ # [608, 960], [608, 1024],
+ ]
+ random.seed(iter)
+ sample = random.choice(size_pool)
+ # idx = (iter // 10) % len(size_pool)
+ #sample = size_pool[size_idx]
+
+ # random.seed(iter)
+ # flg = random.random() <= 1.0
+ # if flg:
+ crop_size = sample
+ # else:
+ # crop_size = [sample[1], sample[0]]
+
+ # set crop size for each dataset
+ datasets_groups = len(dataloader.dataset.datasets)
+ for i in range(datasets_groups):
+ for j in range(len(dataloader.dataset.datasets[i].datasets)):
+ dataloader.dataset.datasets[i].datasets[j].set_random_crop_size(crop_size)
+ return crop_size
+
+
+
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/inverse_warp.py b/finetune/Metric3D/training/mono/utils/inverse_warp.py
new file mode 100644
index 0000000000000000000000000000000000000000..9511b77e99988a9e9f7a2af766d5bedc47ce1aa7
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/inverse_warp.py
@@ -0,0 +1,316 @@
+import torch
+import torch.nn.functional as F
+
+pixel_coords = None
+
+def set_id_grid(depth):
+ global pixel_coords
+ b, h, w = depth.size()
+ i_range = torch.arange(0, h).view(1, h, 1).expand(
+ 1, h, w).type_as(depth) # [1, H, W]
+ j_range = torch.arange(0, w).view(1, 1, w).expand(
+ 1, h, w).type_as(depth) # [1, H, W]
+ ones = torch.ones(1, h, w).type_as(depth)
+
+ pixel_coords = torch.stack((j_range, i_range, ones), dim=1) # [1, 3, H, W]
+
+
+def check_sizes(input, input_name, expected):
+ condition = [input.ndimension() == len(expected)]
+ for i, size in enumerate(expected):
+ if size.isdigit():
+ condition.append(input.size(i) == int(size))
+ assert(all(condition)), "wrong size for {}, expected {}, got {}".format(
+ input_name, 'x'.join(expected), list(input.size()))
+
+
+def pixel2cam(depth, intrinsics_inv):
+ global pixel_coords
+ """Transform coordinates in the pixel frame to the camera frame.
+ Args:
+ depth: depth maps -- [B, H, W]
+ intrinsics_inv: intrinsics_inv matrix for each element of batch -- [B, 3, 3]
+ Returns:
+ array of (u,v,1) cam coordinates -- [B, 3, H, W]
+ """
+ b, h, w = depth.size()
+ if (pixel_coords is None) or pixel_coords.size(2) < h:
+ set_id_grid(depth)
+ current_pixel_coords = pixel_coords[:, :, :h, :w].expand(
+ b, 3, h, w).reshape(b, 3, -1) # [B, 3, H*W]
+ cam_coords = (intrinsics_inv @ current_pixel_coords).reshape(b, 3, h, w)
+ out = depth.unsqueeze(1) * cam_coords
+ return out
+
+
+def cam2pixel(cam_coords, proj_c2p_rot, proj_c2p_tr, padding_mode):
+ """Transform coordinates in the camera frame to the pixel frame.
+ Args:
+ cam_coords: pixel coordinates defined in the first camera coordinates system -- [B, 4, H, W]
+ proj_c2p_rot: rotation matrix of cameras -- [B, 3, 4]
+ proj_c2p_tr: translation vectors of cameras -- [B, 3, 1]
+ Returns:
+ array of [-1,1] coordinates -- [B, 2, H, W]
+ """
+ b, _, h, w = cam_coords.size()
+ cam_coords_flat = cam_coords.reshape(b, 3, -1) # [B, 3, H*W]
+ if proj_c2p_rot is not None:
+ pcoords = proj_c2p_rot @ cam_coords_flat
+ else:
+ pcoords = cam_coords_flat
+
+ if proj_c2p_tr is not None:
+ pcoords = pcoords + proj_c2p_tr # [B, 3, H*W]
+ X = pcoords[:, 0]
+ Y = pcoords[:, 1]
+ Z = pcoords[:, 2].clamp(min=1e-3)
+
+ # Normalized, -1 if on extreme left, 1 if on extreme right (x = w-1) [B, H*W]
+ X_norm = 2*(X / Z)/(w-1) - 1
+ Y_norm = 2*(Y / Z)/(h-1) - 1 # Idem [B, H*W]
+
+ pixel_coords = torch.stack([X_norm, Y_norm], dim=2) # [B, H*W, 2]
+ return pixel_coords.reshape(b, h, w, 2)
+
+
+def euler2mat(angle):
+ """Convert euler angles to rotation matrix.
+ Reference: https://github.com/pulkitag/pycaffe-utils/blob/master/rot_utils.py#L174
+ Args:
+ angle: rotation angle along 3 axis (in radians) -- size = [B, 3]
+ Returns:
+ Rotation matrix corresponding to the euler angles -- size = [B, 3, 3]
+ """
+ B = angle.size(0)
+ x, y, z = angle[:, 0], angle[:, 1], angle[:, 2]
+
+ cosz = torch.cos(z)
+ sinz = torch.sin(z)
+
+ zeros = z.detach()*0
+ ones = zeros.detach()+1
+ zmat = torch.stack([cosz, -sinz, zeros,
+ sinz, cosz, zeros,
+ zeros, zeros, ones], dim=1).reshape(B, 3, 3)
+
+ cosy = torch.cos(y)
+ siny = torch.sin(y)
+
+ ymat = torch.stack([cosy, zeros, siny,
+ zeros, ones, zeros,
+ -siny, zeros, cosy], dim=1).reshape(B, 3, 3)
+
+ cosx = torch.cos(x)
+ sinx = torch.sin(x)
+
+ xmat = torch.stack([ones, zeros, zeros,
+ zeros, cosx, -sinx,
+ zeros, sinx, cosx], dim=1).reshape(B, 3, 3)
+
+ rotMat = xmat @ ymat @ zmat
+ return rotMat
+
+
+def quat2mat(quat):
+ """Convert quaternion coefficients to rotation matrix.
+ Args:
+ quat: first three coeff of quaternion of rotation. fourht is then computed to have a norm of 1 -- size = [B, 3]
+ Returns:
+ Rotation matrix corresponding to the quaternion -- size = [B, 3, 3]
+ """
+ norm_quat = torch.cat([quat[:, :1].detach()*0 + 1, quat], dim=1)
+ norm_quat = norm_quat/norm_quat.norm(p=2, dim=1, keepdim=True)
+ w, x, y, z = norm_quat[:, 0], norm_quat[:,
+ 1], norm_quat[:, 2], norm_quat[:, 3]
+
+ B = quat.size(0)
+
+ w2, x2, y2, z2 = w.pow(2), x.pow(2), y.pow(2), z.pow(2)
+ wx, wy, wz = w*x, w*y, w*z
+ xy, xz, yz = x*y, x*z, y*z
+
+ rotMat = torch.stack([w2 + x2 - y2 - z2, 2*xy - 2*wz, 2*wy + 2*xz,
+ 2*wz + 2*xy, w2 - x2 + y2 - z2, 2*yz - 2*wx,
+ 2*xz - 2*wy, 2*wx + 2*yz, w2 - x2 - y2 + z2], dim=1).reshape(B, 3, 3)
+ return rotMat
+
+
+def pose_vec2mat(vec, rotation_mode='euler'):
+ """
+ Convert 6DoF parameters to transformation matrix.
+ Args:s
+ vec: 6DoF parameters in the order of tx, ty, tz, rx, ry, rz -- [B, 6]
+ Returns:
+ A transformation matrix -- [B, 3, 4]
+ """
+ translation = vec[:, :3].unsqueeze(-1) # [B, 3, 1]
+ rot = vec[:, 3:]
+ if rotation_mode == 'euler':
+ rot_mat = euler2mat(rot) # [B, 3, 3]
+ elif rotation_mode == 'quat':
+ rot_mat = quat2mat(rot) # [B, 3, 3]
+ transform_mat = torch.cat([rot_mat, translation], dim=2) # [B, 3, 4]
+ return transform_mat
+
+
+def inverse_warp(img, depth, pose, intrinsics, rotation_mode='euler', padding_mode='zeros'):
+ """
+ Inverse warp a source image to the target image plane.
+ Args:
+ img: the source image (where to sample pixels) -- [B, 3, H, W]
+ depth: depth map of the target image -- [B, H, W]
+ pose: 6DoF pose parameters from target to source -- [B, 6]
+ intrinsics: camera intrinsic matrix -- [B, 3, 3]
+ Returns:
+ projected_img: Source image warped to the target image plane
+ valid_points: Boolean array indicating point validity
+ """
+ check_sizes(img, 'img', 'B3HW')
+ check_sizes(depth, 'depth', 'BHW')
+ check_sizes(pose, 'pose', 'B6')
+ check_sizes(intrinsics, 'intrinsics', 'B33')
+
+ batch_size, _, img_height, img_width = img.size()
+
+ cam_coords = pixel2cam(depth, intrinsics.inverse()) # [B,3,H,W]
+
+ pose_mat = pose_vec2mat(pose, rotation_mode) # [B,3,4]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics @ pose_mat # [B, 3, 4]
+
+ rot, tr = proj_cam_to_src_pixel[:, :, :3], proj_cam_to_src_pixel[:, :, -1:]
+ src_pixel_coords = cam2pixel(
+ cam_coords, rot, tr, padding_mode) # [B,H,W,2]
+ projected_img = F.grid_sample(
+ img, src_pixel_coords, padding_mode=padding_mode)
+
+ valid_points = src_pixel_coords.abs().max(dim=-1)[0] <= 1
+
+ return projected_img, valid_points
+
+
+def cam2pixel2(cam_coords, proj_c2p_rot, proj_c2p_tr, padding_mode):
+ """Transform coordinates in the camera frame to the pixel frame.
+ Args:
+ cam_coords: pixel coordinates defined in the first camera coordinates system -- [B, 4, H, W]
+ proj_c2p_rot: rotation matrix of cameras -- [B, 3, 4]
+ proj_c2p_tr: translation vectors of cameras -- [B, 3, 1]
+ Returns:
+ array of [-1,1] coordinates -- [B, 2, H, W]
+ """
+ b, _, h, w = cam_coords.size()
+ cam_coords_flat = cam_coords.reshape(b, 3, -1) # [B, 3, H*W]
+ if proj_c2p_rot is not None:
+ pcoords = proj_c2p_rot @ cam_coords_flat
+ else:
+ pcoords = cam_coords_flat
+
+ if proj_c2p_tr is not None:
+ pcoords = pcoords + proj_c2p_tr # [B, 3, H*W]
+ X = pcoords[:, 0]
+ Y = pcoords[:, 1]
+ Z = pcoords[:, 2].clamp(min=1e-3)
+
+ # Normalized, -1 if on extreme left, 1 if on extreme right (x = w-1) [B, H*W]
+ X_norm = 2*(X / Z)/(w-1) - 1
+ Y_norm = 2*(Y / Z)/(h-1) - 1 # Idem [B, H*W]
+ if padding_mode == 'zeros':
+ X_mask = ((X_norm > 1)+(X_norm < -1)).detach()
+ # make sure that no point in warped image is a combinaison of im and gray
+ X_norm[X_mask] = 2
+ Y_mask = ((Y_norm > 1)+(Y_norm < -1)).detach()
+ Y_norm[Y_mask] = 2
+
+ pixel_coords = torch.stack([X_norm, Y_norm], dim=2) # [B, H*W, 2]
+ return pixel_coords.reshape(b, h, w, 2), Z.reshape(b, 1, h, w)
+
+
+def inverse_warp2(img, depth, ref_depth, pose, intrinsics, padding_mode='zeros'):
+ """
+ Inverse warp a source image to the target image plane.
+ Args:
+ img: the source image (where to sample pixels) -- [B, 3, H, W]
+ depth: depth map of the target image -- [B, 1, H, W]
+ ref_depth: the source depth map (where to sample depth) -- [B, 1, H, W]
+ pose: 6DoF pose parameters from target to source -- [B, 6]
+ intrinsics: camera intrinsic matrix -- [B, 3, 3]
+ Returns:
+ projected_img: Source image warped to the target image plane
+ valid_mask: Float array indicating point validity
+ projected_depth: sampled depth from source image
+ computed_depth: computed depth of source image using the target depth
+ """
+ check_sizes(img, 'img', 'B3HW')
+ check_sizes(depth, 'depth', 'B1HW')
+ check_sizes(ref_depth, 'ref_depth', 'B1HW')
+ check_sizes(pose, 'pose', 'B6')
+ check_sizes(intrinsics, 'intrinsics', 'B33')
+
+ batch_size, _, img_height, img_width = img.size()
+
+ cam_coords = pixel2cam(depth.squeeze(1), intrinsics.inverse()) # [B,3,H,W]
+
+ pose_mat = pose_vec2mat(pose) # [B,3,4]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics @ pose_mat # [B, 3, 4]
+
+ rot, tr = proj_cam_to_src_pixel[:, :, :3], proj_cam_to_src_pixel[:, :, -1:]
+ src_pixel_coords, computed_depth = cam2pixel2(cam_coords, rot, tr, padding_mode) # [B,H,W,2]
+ projected_img = F.grid_sample(img, src_pixel_coords, padding_mode=padding_mode, align_corners=False)
+
+ projected_depth = F.grid_sample(ref_depth, src_pixel_coords, padding_mode=padding_mode, align_corners=False)
+
+ return projected_img, projected_depth, computed_depth
+
+
+def inverse_rotation_warp(img, rot, intrinsics, padding_mode='zeros'):
+
+ b, _, h, w = img.size()
+ cam_coords = pixel2cam(torch.ones(b, h, w).type_as(img), intrinsics.inverse()) # [B,3,H,W]
+
+ rot_mat = euler2mat(rot) # [B, 3, 3]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics @ rot_mat # [B, 3, 3]
+
+ src_pixel_coords, computed_depth = cam2pixel2(cam_coords, proj_cam_to_src_pixel, None, padding_mode) # [B,H,W,2]
+ projected_img = F.grid_sample(img, src_pixel_coords, padding_mode=padding_mode, align_corners=True)
+
+ return projected_img
+
+def grid_to_flow(grid):
+ b, h, w, _ = grid.size()
+ i_range = torch.arange(0, h).view(1, h, 1).expand(1, h, w).type_as(grid) # [1, H, W]
+ j_range = torch.arange(0, w).view(1, 1, w).expand(1, h, w).type_as(grid) # [1, H, W]
+ image_coords = torch.stack((j_range, i_range), dim=1) # [1, 2, H, W]
+
+ flow = torch.zeros_like(grid).type_as(grid)
+ flow[:, :, :, 0] = (grid[:, :, :, 0]+1) / 2 * (w-1)
+ flow[:, :, :, 1] = (grid[:, :, :, 1]+1) / 2 * (h-1)
+ flow = flow.permute([0, 3, 1, 2])
+
+ flow -= image_coords
+
+ return flow
+
+def compute_translation_flow(depth, pose, intrinsics):
+ cam_coords = pixel2cam(depth.squeeze(1), intrinsics.inverse()) # [B,3,H,W]
+
+ pose_mat = pose_vec2mat(pose) # [B,3,4]
+
+ # Get projection matrix for tgt camera frame to source pixel frame
+ proj_cam_to_src_pixel = intrinsics @ pose_mat # [B, 3, 4]
+
+ rot, tr = proj_cam_to_src_pixel[:, :, :3], proj_cam_to_src_pixel[:, :, -1:]
+
+ grid_all, _ = cam2pixel2(cam_coords, rot, tr, padding_mode='zeros') # [B,H,W,2]
+ grid_rot, _ = cam2pixel2(cam_coords, rot, None, padding_mode='zeros') # [B,H,W,2]
+
+ flow_all = grid_to_flow(grid_all)
+ flow_rot = grid_to_flow(grid_rot)
+ flow_tr = (flow_all - flow_rot)
+
+ return flow_tr
+
diff --git a/finetune/Metric3D/training/mono/utils/logger.py b/finetune/Metric3D/training/mono/utils/logger.py
new file mode 100644
index 0000000000000000000000000000000000000000..2a15e3233680d964551e98d95db83e9194a943ed
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/logger.py
@@ -0,0 +1,105 @@
+import atexit
+import logging
+import os
+import sys
+import time
+import torch
+from termcolor import colored
+
+__all__ = ["setup_logger", ]
+
+class _ColorfulFormatter(logging.Formatter):
+ def __init__(self, *args, **kwargs):
+ self._root_name = kwargs.pop("root_name") + "."
+ self._abbrev_name = kwargs.pop("abbrev_name", "")
+ if len(self._abbrev_name):
+ self._abbrev_name = self._abbrev_name + "."
+ super(_ColorfulFormatter, self).__init__(*args, **kwargs)
+
+ def formatMessage(self, record):
+ record.name = record.name.replace(self._root_name, self._abbrev_name)
+ log = super(_ColorfulFormatter, self).formatMessage(record)
+ if record.levelno == logging.WARNING:
+ prefix = colored("WARNING", "red", attrs=["blink"])
+ elif record.levelno == logging.ERROR or record.levelno == logging.CRITICAL:
+ prefix = colored("ERROR", "red", attrs=["blink", "underline"])
+ else:
+ return log
+ return prefix + " " + log
+
+
+def setup_logger(
+ output=None, distributed_rank=0, *, name='mono@YvanYin', color=True, abbrev_name=None
+):
+ """
+ Initialize the detectron2 logger and set its verbosity level to "DEBUG".
+ Args:
+ output (str): a file name or a directory to save log. If None, will not save log file.
+ If ends with ".txt" or ".log", assumed to be a file name.
+ Otherwise, logs will be saved to `output/log.txt`.
+ abbrev_name (str): an abbreviation of the module, to avoid long names in logs.
+ Set to "" to not log the root module in logs.
+ By default, will abbreviate "detectron2" to "d2" and leave other
+ modules unchanged.
+ Returns:
+ logging.Logger: a logger
+ """
+ logger = logging.getLogger()
+ logger.setLevel(logging.DEBUG)
+ logger.propagate = False
+
+ if abbrev_name is None:
+ abbrev_name = "d2"
+
+ plain_formatter = logging.Formatter(
+ "[%(asctime)s] %(name)s %(levelname)s: %(message)s", datefmt="%m/%d %H:%M:%S"
+ )
+ # stdout logging: master only
+ if distributed_rank == 0:
+ ch = logging.StreamHandler(stream=sys.stdout)
+ ch.setLevel(logging.DEBUG)
+ if color:
+ formatter = _ColorfulFormatter(
+ colored("[%(asctime)s %(name)s]: ", "green") + "%(message)s",
+ datefmt="%m/%d %H:%M:%S",
+ root_name=name,
+ abbrev_name=str(abbrev_name),
+ )
+ else:
+ formatter = plain_formatter
+ ch.setFormatter(formatter)
+ logger.addHandler(ch)
+
+ # file logging: all workers
+ if output is not None:
+ if output.endswith(".txt") or output.endswith(".log"):
+ filename = output
+ else:
+ filename = os.path.join(output, "log.txt")
+ if distributed_rank > 0:
+ filename = filename + ".rank{}".format(distributed_rank)
+ os.makedirs(os.path.dirname(filename), exist_ok=True)
+
+ # fh = logging.FileHandler(output, 'w')
+ fh = logging.StreamHandler(_cached_log_stream(filename))
+ fh.setLevel(logging.DEBUG)
+ fh.setFormatter(plain_formatter)
+ logger.addHandler(fh)
+
+
+ return logger
+
+
+from iopath.common.file_io import PathManager as PathManagerBase
+
+
+
+PathManager = PathManagerBase()
+
+# cache the opened file object, so that different calls to `setup_logger`
+# with the same file name can safely write to the same file.
+def _cached_log_stream(filename):
+ # use 1K buffer if writing to cloud storage
+ io = PathManager.open(filename, "a", buffering=1024 if "://" in filename else -1)
+ atexit.register(io.close)
+ return io
diff --git a/finetune/Metric3D/training/mono/utils/logit_to_depth.py b/finetune/Metric3D/training/mono/utils/logit_to_depth.py
new file mode 100644
index 0000000000000000000000000000000000000000..30dea4ee2d5a1b2da715e0900c65ae8c309f6eb5
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/logit_to_depth.py
@@ -0,0 +1,58 @@
+import torch
+import torch.nn as nn
+
+class SoftWeight(nn.Module):
+ """
+ Transfer n-channel discrete depth bins to a depth map.
+ Args:
+ @depth_bin: n-channel output of the network, [b, c, h, w]
+ Return: 1-channel depth, [b, 1, h, w]
+ """
+ def __init__(self, depth_bins_border):
+ super(SoftWeight, self).__init__()
+ self.register_buffer("depth_bins_border", torch.tensor(depth_bins_border), persistent=False)
+
+ def forward(self, pred_logit):
+ if type(pred_logit).__module__ != torch.__name__:
+ pred_logit = torch.tensor(pred_logit, dtype=torch.float32, device="cuda")
+ pred_score = nn.functional.softmax(pred_logit, dim=1)
+ pred_score_ch = pred_score.permute(0, 2, 3, 1) #[b, h, w, c]
+ pred_score_weight = pred_score_ch * self.depth_bins_border
+ depth_log = torch.sum(pred_score_weight, dim=3, dtype=torch.float32, keepdim=True)
+ depth = 10 ** depth_log
+ depth = depth.permute(0, 3, 1, 2) # [b, 1, h, w]
+ confidence, _ = torch.max(pred_logit, dim=1, keepdim=True)
+ return depth, confidence
+
+def soft_weight(pred_logit, depth_bins_border):
+ """
+ Transfer n-channel discrete depth bins to depth map.
+ Args:
+ @depth_bin: n-channel output of the network, [b, c, h, w]
+ Return: 1-channel depth, [b, 1, h, w]
+ """
+ if type(pred_logit).__module__ != torch.__name__:
+ pred_logit = torch.tensor(pred_logit, dtype=torch.float32, device="cuda")
+ if type(depth_bins_border).__module__ != torch.__name__:
+ depth_bins_border = torch.tensor(depth_bins_border, dtype=torch.float32, device="cuda")
+
+ pred_score = nn.functional.softmax(pred_logit, dim=1)
+ depth_bins_ch = pred_score.permute(0, 2, 3, 1) #[b, h, w, c] depth = torch.sum(depth, dim=3, dtype=torch.float32, keepdim=True)
+ depth = 10 ** depth
+ depth = depth.permute(0, 3, 1, 2) # [b, 1, h, w]
+
+ confidence, _ = torch.max(pred_logit, dim=1, keepdim=True)
+ return depth, confidence
+
+
+
+if __name__ == '__main__':
+ import numpy as np
+ depth_max = 100
+ depth_min = 0.5
+
+ depth_bin_interval = (np.log10(depth_max) - np.log10(depth_min)) / 200
+ depth_bins_border = [np.log10(depth_min) + depth_bin_interval * (i + 0.5)
+ for i in range(200)]
+
+ sw = SoftWeight(depth_bins_border)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/misc.py b/finetune/Metric3D/training/mono/utils/misc.py
new file mode 100644
index 0000000000000000000000000000000000000000..2947c2cd92cd91f8f5f8e1b692edd49f4bfad58f
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/misc.py
@@ -0,0 +1,67 @@
+
+
+
+import os
+import torch
+try:
+ from torch._six import inf
+except:
+ from torch import inf
+
+
+class NativeScalerWithGradNormCount:
+ state_dict_key = "amp_scaler"
+
+ def __init__(self):
+ #self._scaler = torch.cuda.amp.GradScaler(init_scale=16384) #init_scale=4096.0
+ self._scaler = torch.cuda.amp.GradScaler(init_scale=1)
+
+ def __call__(self, loss, optimizer, clip_grad=None, parameters=None, create_graph=False, update_grad=True):
+ self._scaler.scale(loss).backward(create_graph=create_graph)
+ if update_grad:
+ if clip_grad is not None:
+ assert parameters is not None
+ self._scaler.unscale_(optimizer) # unscale the gradients of optimizer's assigned params in-place
+ try:
+ norm = torch.nn.utils.clip_grad_norm_(parameters, clip_grad, error_if_nonfinite=True)
+ except:
+ print('NAN gradient ....')
+ else:
+ raise NotImplementedError
+ self._scaler.unscale_(optimizer)
+ norm = get_grad_norm_(parameters)
+ self._scaler.step(optimizer)
+ self._scaler.update()
+ else:
+ norm = None
+ return True
+ #return norm
+
+ def state_dict(self):
+ return self._scaler.state_dict()
+
+ def load_state_dict(self, state_dict):
+ self._scaler.load_state_dict(state_dict)
+
+def get_grad_norm_(parameters, norm_type: float = 2.0) -> torch.Tensor:
+ if isinstance(parameters, torch.Tensor):
+ parameters = [parameters]
+ parameters = [p for p in parameters if p.grad is not None]
+ norm_type = float(norm_type)
+ if len(parameters) == 0:
+ return torch.tensor(0.)
+ device = parameters[0].grad.device
+ if norm_type == inf:
+ total_norm = max(p.grad.detach().abs().max().to(device) for p in parameters)
+ else:
+ total_norm = torch.norm(torch.stack([torch.norm(p.grad.detach(), norm_type).to(device) for p in parameters]), norm_type)
+ return total_norm
+
+def is_bf16_supported():
+ """Returns a bool indicating if the current CUDA device supports dtype bfloat16"""
+ cu_vers = torch.version.cuda
+ if cu_vers is not None:
+ cuda_maj_decide = int(cu_vers.split('.')[0]) >= 11
+ else:
+ cuda_maj_decide = False
+ return torch.cuda.get_device_properties(torch.cuda.current_device()).major >= 8 and cuda_maj_decide
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/pcd_utils.py b/finetune/Metric3D/training/mono/utils/pcd_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d409764e35fda2a3fda2c771a4cfdc613e603da
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/pcd_utils.py
@@ -0,0 +1,52 @@
+import os
+import numpy as np
+from plyfile import PlyData, PlyElement
+
+
+def save_point_cloud(pcd, rgb, filename, binary=True):
+ """Save an RGB point cloud as a PLY file.
+ :paras
+ @pcd: Nx3 matrix, the XYZ coordinates
+ @rgb: NX3 matrix, the rgb colors for each 3D point
+ """
+ assert pcd.shape[0] == rgb.shape[0]
+
+ if rgb is None:
+ gray_concat = np.tile(np.array([128], dtype=np.uint8), (pcd.shape[0], 3))
+ points_3d = np.hstack((pcd, gray_concat))
+ else:
+ points_3d = np.hstack((pcd, rgb))
+ python_types = (float, float, float, int, int, int)
+ npy_types = [('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'),
+ ('blue', 'u1')]
+ if binary is True:
+ # Format into NumPy structured array
+ vertices = []
+ for row_idx in range(points_3d.shape[0]):
+ cur_point = points_3d[row_idx]
+ vertices.append(tuple(dtype(point) for dtype, point in zip(python_types, cur_point)))
+ vertices_array = np.array(vertices, dtype=npy_types)
+ el = PlyElement.describe(vertices_array, 'vertex')
+
+ # Write
+ PlyData([el]).write(filename)
+ else:
+ x = np.squeeze(points_3d[:, 0])
+ y = np.squeeze(points_3d[:, 1])
+ z = np.squeeze(points_3d[:, 2])
+ r = np.squeeze(points_3d[:, 3])
+ g = np.squeeze(points_3d[:, 4])
+ b = np.squeeze(points_3d[:, 5])
+
+ ply_head = 'ply\n' \
+ 'format ascii 1.0\n' \
+ 'element vertex %d\n' \
+ 'property float x\n' \
+ 'property float y\n' \
+ 'property float z\n' \
+ 'property uchar red\n' \
+ 'property uchar green\n' \
+ 'property uchar blue\n' \
+ 'end_header' % r.shape[0]
+ # ---- Save ply data to disk
+ np.savetxt(filename, np.column_stack((x, y, z, r, g, b)), fmt="%d %d %d %d %d %d", header=ply_head, comments='')
diff --git a/finetune/Metric3D/training/mono/utils/raindropper/__init__.py b/finetune/Metric3D/training/mono/utils/raindropper/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/finetune/Metric3D/training/mono/utils/raindropper/config.py b/finetune/Metric3D/training/mono/utils/raindropper/config.py
new file mode 100644
index 0000000000000000000000000000000000000000..06b1f211dbcbe37699b96ac2e2bbf60e79c24dda
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/raindropper/config.py
@@ -0,0 +1,24 @@
+"""
+Arguments:
+maxR -- maximum drop radius
+minR -- minimum drop radius
+maxDrops -- maximum number of drops in the image
+minDrops -- minimum number of drops in the image
+edge_darkratio -- brightness reduction factor for drops edges
+return_label -- flag defining whether a label will be returned or just an image with generated raindrops
+A, B, C, D -- in this code are useless, old version is used for control bezeir
+"""
+
+cfg = {
+ 'maxR': 35, # max not more then 150
+ 'minR': 10,
+ 'maxDrops': 50,
+ 'minDrops': 15,
+ 'edge_darkratio': 1.0,
+ 'return_label': True,
+ 'label_thres': 128,
+ 'A': (1, 4.5),
+ 'B': (3, 1),
+ 'C': (1, 3),
+ 'D': (3, 3)
+}
diff --git a/finetune/Metric3D/training/mono/utils/raindropper/dropgenerator.py b/finetune/Metric3D/training/mono/utils/raindropper/dropgenerator.py
new file mode 100644
index 0000000000000000000000000000000000000000..39b72c787316520af784655a61962b08b039c6c1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/raindropper/dropgenerator.py
@@ -0,0 +1,425 @@
+# change rainy drop func from
+# https://github.com/EvoCargo/RaindropsOnWindshield/blob/main/raindrops_generator/raindrop/dropgenerator.py
+
+import math
+import random
+from random import randint
+
+import cv2
+import numpy as np
+from PIL import Image, ImageDraw, ImageEnhance
+from skimage.measure import label as skimage_label
+
+from .raindrop import Raindrop, make_bezier
+
+
+def CheckCollision(DropList):
+ """This function handle the collision of the drops.
+
+ :param DropList: list of raindrop class objects
+ """
+ listFinalDrops = []
+ Checked_list = []
+ list_len = len(DropList)
+ # because latter raindrops in raindrop list should has more colision information
+ # so reverse list
+ DropList.reverse()
+ drop_key = 1
+ for drop in DropList:
+ # if the drop has not been handle
+ if drop.getKey() not in Checked_list:
+ # if drop has collision with other drops
+ if drop.getIfColli():
+ # get collision list
+ collision_list = drop.getCollisionList()
+ # first get radius and center to decide how will the collision do
+ final_x = drop.getCenters()[0] * drop.getRadius()
+ final_y = drop.getCenters()[1] * drop.getRadius()
+ tmp_devide = drop.getRadius()
+ final_R = drop.getRadius() * drop.getRadius()
+ for col_id in collision_list:
+ col_id = int(col_id)
+ Checked_list.append(col_id)
+ # list start from 0
+ final_x += DropList[list_len - col_id].getRadius() * DropList[list_len - col_id].getCenters()[0]
+ final_y += DropList[list_len - col_id].getRadius() * DropList[list_len - col_id].getCenters()[1]
+ tmp_devide += DropList[list_len - col_id].getRadius()
+ final_R += DropList[list_len - col_id].getRadius() * DropList[list_len - col_id].getRadius()
+ final_x = int(round(final_x / tmp_devide))
+ final_y = int(round(final_y / tmp_devide))
+ final_R = int(round(math.sqrt(final_R)))
+ # rebuild drop after handled the collisions
+ newDrop = Raindrop(drop_key, (final_x, final_y), final_R)
+ drop_key = drop_key + 1
+ listFinalDrops.append(newDrop)
+ # no collision
+ else:
+ drop.setKey(drop_key)
+ drop_key = drop_key + 1
+ listFinalDrops.append(drop)
+
+ return listFinalDrops
+
+
+def generate_label(h, w, cfg):
+ """This function generate list of raindrop class objects and label map of
+ this drops in the image.
+
+ :param h: image height
+ :param w: image width
+ :param cfg: config with global constants
+ :param shape: int from 0 to 2 defining raindrop shape type
+ """
+ maxDrop = cfg['maxDrops']
+ minDrop = cfg['minDrops']
+ maxR = cfg['maxR']
+ minR = cfg['minR']
+ drop_num = randint(minDrop, maxDrop)
+ imgh = h
+ imgw = w
+ # random drops position
+ ran_pos = [(int(random.random() * imgw), int(random.random() * imgh)) for _ in range(drop_num)]
+ listRainDrops = []
+ listFinalDrops = []
+ for key, pos in enumerate(ran_pos):
+ key = key + 1
+ radius = random.randint(minR, maxR)
+ shape = random.randint(1, 1)
+ drop = Raindrop(key, pos, radius, shape)
+ listRainDrops.append(drop)
+# to check if collision or not
+ label_map = np.zeros([h, w])
+ collisionNum = len(listRainDrops)
+ listFinalDrops = list(listRainDrops)
+ loop = 0
+ while collisionNum > 0:
+ loop = loop + 1
+ listFinalDrops = list(listFinalDrops)
+ collisionNum = len(listFinalDrops)
+ label_map = np.zeros_like(label_map)
+ # Check Collision
+ for drop in listFinalDrops:
+ # check the bounding
+ (ix, iy) = drop.getCenters()
+ radius = drop.getRadius()
+ ROI_WL = 2 * radius
+ ROI_WR = 2 * radius
+ ROI_HU = 3 * radius
+ ROI_HD = 2 * radius
+ if (iy - 3 * radius) < 0:
+ ROI_HU = iy
+ if (iy + 2 * radius) > imgh:
+ ROI_HD = imgh - iy
+ if (ix - 2 * radius) < 0:
+ ROI_WL = ix
+ if (ix + 2 * radius) > imgw:
+ ROI_WR = imgw - ix
+
+
+# apply raindrop label map to Image's label map
+ drop_label = drop.getLabelMap()
+ # check if center has already has drops
+ if (label_map[iy, ix] > 0):
+ col_ids = np.unique(label_map[iy - ROI_HU:iy + ROI_HD, ix - ROI_WL:ix + ROI_WR])
+ col_ids = col_ids[col_ids != 0]
+ drop.setCollision(True, col_ids)
+ label_map[iy - ROI_HU:iy + ROI_HD,
+ ix - ROI_WL:ix + ROI_WR] = drop_label[3 * radius - ROI_HU:3 * radius + ROI_HD, 2 * radius -
+ ROI_WL:2 * radius + ROI_WR] * drop.getKey()
+ else:
+ label_map[iy - ROI_HU:iy + ROI_HD,
+ ix - ROI_WL:ix + ROI_WR] = drop_label[3 * radius - ROI_HU:3 * radius + ROI_HD, 2 * radius -
+ ROI_WL:2 * radius + ROI_WR] * drop.getKey()
+ # no collision
+ collisionNum = collisionNum - 1
+
+ if collisionNum > 0:
+ listFinalDrops = CheckCollision(listFinalDrops)
+ return listFinalDrops, label_map
+
+
+def generateDrops(imagePath, cfg, listFinalDrops):
+ """Generate raindrops on the image.
+
+ :param imagePath: path to the image on which you want to generate drops
+ :param cfg: config with global constants
+ :param listFinalDrops: final list of raindrop class objects after handling collisions
+ :param label_map: general label map of all drops in the image
+ """
+ ifReturnLabel = cfg['return_label']
+ edge_ratio = cfg['edge_darkratio']
+
+ PIL_bg_img = Image.open(imagePath).convert('RGB')
+ bg_img = np.asarray(PIL_bg_img)
+ label_map = np.zeros_like(bg_img)[:, :, 0]
+ imgh, imgw, _ = bg_img.shape
+
+ A = cfg['A']
+ B = cfg['B']
+ C = cfg['C']
+ D = cfg['D']
+
+ alpha_map = np.zeros_like(label_map).astype(np.float64)
+
+ for drop in listFinalDrops:
+ (ix, iy) = drop.getCenters()
+ radius = drop.getRadius()
+ ROI_WL = 2 * radius
+ ROI_WR = 2 * radius
+ ROI_HU = 3 * radius
+ ROI_HD = 2 * radius
+ if (iy - 3 * radius) < 0:
+ ROI_HU = iy
+ if (iy + 2 * radius) > imgh:
+ ROI_HD = imgh - iy
+ if (ix - 2 * radius) < 0:
+ ROI_WL = ix
+ if (ix + 2 * radius) > imgw:
+ ROI_WR = imgw - ix
+
+ drop_alpha = drop.getAlphaMap()
+ alpha_map[iy - ROI_HU:iy + ROI_HD,
+ ix - ROI_WL:ix + ROI_WR] += drop_alpha[3 * radius - ROI_HU:3 * radius + ROI_HD,
+ 2 * radius - ROI_WL:2 * radius + ROI_WR]
+
+ alpha_map = alpha_map / np.max(alpha_map) * 255.0
+
+ PIL_bg_img = Image.open(imagePath)
+ for idx, drop in enumerate(listFinalDrops):
+ (ix, iy) = drop.getCenters()
+ radius = drop.getRadius()
+ ROIU = iy - 3 * radius
+ ROID = iy + 2 * radius
+ ROIL = ix - 2 * radius
+ ROIR = ix + 2 * radius
+ if (iy - 3 * radius) < 0:
+ ROIU = 0
+ ROID = 5 * radius
+ if (iy + 2 * radius) > imgh:
+ ROIU = imgh - 5 * radius
+ ROID = imgh
+ if (ix - 2 * radius) < 0:
+ ROIL = 0
+ ROIR = 4 * radius
+ if (ix + 2 * radius) > imgw:
+ ROIL = imgw - 4 * radius
+ ROIR = imgw
+
+ tmp_bg = bg_img[ROIU:ROID, ROIL:ROIR, :]
+ try:
+ drop.updateTexture(tmp_bg)
+ except Exception:
+ del listFinalDrops[idx]
+ continue
+ tmp_alpha_map = alpha_map[ROIU:ROID, ROIL:ROIR]
+
+ output = drop.getTexture()
+ tmp_output = np.asarray(output).astype(np.float)[:, :, -1]
+ tmp_alpha_map = tmp_alpha_map * (tmp_output / 255)
+ tmp_alpha_map = Image.fromarray(tmp_alpha_map.astype('uint8'))
+
+ edge = ImageEnhance.Brightness(output)
+ edge = edge.enhance(edge_ratio)
+
+ PIL_bg_img.paste(edge, (ix - 2 * radius, iy - 3 * radius), output)
+ PIL_bg_img.paste(output, (ix - 2 * radius, iy - 3 * radius), output)
+
+ mask = np.zeros_like(bg_img)
+
+ if len(listFinalDrops) > 0:
+ # make circles and elipses
+ for drop in listFinalDrops:
+ if (drop.shape == 0):
+ cv2.circle(mask, drop.center, drop.radius, (255, 255, 255), -1)
+ if (drop.shape == 1):
+ cv2.circle(mask, drop.center, drop.radius, (255, 255, 255), -1)
+ cv2.ellipse(mask, drop.center, (drop.radius, int(1.3 * math.sqrt(3) * drop.radius)), 0, 180, 360,
+ (255, 255, 255), -1)
+
+ img = Image.fromarray(np.uint8(mask[:, :, 0]), 'L')
+ # make beziers
+ for drop in listFinalDrops:
+ if (drop.shape == 2):
+ img = Image.fromarray(np.uint8(img), 'L')
+ draw = ImageDraw.Draw(img)
+ ts = [t / 100.0 for t in range(101)]
+ xys = [(drop.radius * C[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * C[1] - 3 * drop.radius + drop.center[1]),
+ (drop.radius * B[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * B[1] - 3 * drop.radius + drop.center[1]),
+ (drop.radius * D[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * D[1] - 3 * drop.radius + drop.center[1])]
+ bezier = make_bezier(xys)
+ points = bezier(ts)
+
+ xys = [(drop.radius * C[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * C[1] - 3 * drop.radius + drop.center[1]),
+ (drop.radius * A[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * A[1] - 3 * drop.radius + drop.center[1]),
+ (drop.radius * D[0] - 2 * drop.radius + drop.center[0],
+ drop.radius * D[1] - 3 * drop.radius + drop.center[1])]
+ bezier = make_bezier(xys)
+ points.extend(bezier(ts))
+ draw.polygon(points, fill='white')
+ mask = np.array(img)
+
+ im_mask = Image.fromarray(mask.astype('uint8'))
+
+ if ifReturnLabel:
+ output_label = np.array(alpha_map)
+ output_label.flags.writeable = True
+ output_label[output_label > 0] = 1
+ output_label = Image.fromarray(output_label.astype('uint8'))
+ return PIL_bg_img, output_label, im_mask
+
+ return PIL_bg_img
+
+
+def generateDrops_np(img_np, cfg, listFinalDrops):
+ """Generate raindrops on the image.
+
+ :param imgs: numpy imgs shape -> [B, H, W, C], type -> np.uint8
+ :param cfg: config with global constants
+ :param listFinalDrops: final list of raindrop class objects after handling collisions
+ :param label_map: general label map of all drops in the image
+ """
+ ifReturnLabel = cfg['return_label']
+ edge_ratio = cfg['edge_darkratio']
+
+ # PIL_bg_img = Image.open(imagePath)
+ # label_map = np.zeros_like(bg_img)[:,:,0]
+ # imgh, imgw, _ = bg_img.shape
+ bg_img = img_np
+ label_map = np.zeros_like(bg_img)[:, :, 0] # [H, W]
+ imgh, imgw, _ = bg_img.shape
+
+ A = cfg['A']
+ B = cfg['B']
+ C = cfg['C']
+ D = cfg['D']
+
+ # 0. generate alpha change map by generated list raindrops
+ alpha_map = np.zeros_like(label_map).astype(np.float64) # [H, W]
+
+ for drop in listFinalDrops:
+ (ix, iy) = drop.getCenters()
+ radius = drop.getRadius()
+ ROI_WL = 2 * radius
+ ROI_WR = 2 * radius
+ ROI_HU = 3 * radius
+ ROI_HD = 2 * radius
+ if (iy - 3 * radius) < 0:
+ ROI_HU = iy
+ if (iy + 2 * radius) > imgh:
+ ROI_HD = imgh - iy
+ if (ix - 2 * radius) < 0:
+ ROI_WL = ix
+ if (ix + 2 * radius) > imgw:
+ ROI_WR = imgw - ix
+
+ drop_alpha = drop.getAlphaMap()
+
+ alpha_map[iy - ROI_HU:iy + ROI_HD,
+ ix - ROI_WL:ix + ROI_WR] += drop_alpha[3 * radius - ROI_HU:3 * radius + ROI_HD,
+ 2 * radius - ROI_WL:2 * radius + ROI_WR]
+
+ alpha_map = alpha_map / np.max(alpha_map) * 255.0
+
+ PIL_bg_img = Image.fromarray(np.uint8(bg_img)).convert('RGB')
+ # convert
+ for idx, drop in enumerate(listFinalDrops):
+ (ix, iy) = drop.getCenters()
+ radius = drop.getRadius()
+ ROIU = iy - 3 * radius
+ ROID = iy + 2 * radius
+ ROIL = ix - 2 * radius
+ ROIR = ix + 2 * radius
+ if (iy - 3 * radius) < 0:
+ ROIU = 0
+ ROID = 5 * radius
+ if (iy + 2 * radius) > imgh:
+ ROIU = imgh - 5 * radius
+ ROID = imgh
+ if (ix - 2 * radius) < 0:
+ ROIL = 0
+ ROIR = 4 * radius
+ if (ix + 2 * radius) > imgw:
+ ROIL = imgw - 4 * radius
+ ROIR = imgw
+
+ tmp_bg = bg_img[ROIU:ROID, ROIL:ROIR]
+ try:
+ drop.updateTexture(tmp_bg)
+ except Exception:
+ del listFinalDrops[idx]
+ continue
+ tmp_alpha_map = alpha_map[ROIU:ROID, ROIL:ROIR]
+
+ output = drop.getTexture()
+ tmp_output = np.asarray(output).astype(np.float)[:, :, -1]
+ tmp_alpha_map = tmp_alpha_map * (tmp_output / 255)
+ tmp_alpha_map = Image.fromarray(tmp_alpha_map.astype('uint8'))
+
+ edge = ImageEnhance.Brightness(output)
+ edge = edge.enhance(edge_ratio)
+
+ # PIL_bg_img.paste(edge, (ix-2*radius, iy-3*radius), output)
+ # PIL_bg_img.paste(output, (ix-2*radius, iy-3*radius), output)
+ PIL_bg_img.paste(edge, (ROIL, ROIU), output)
+ PIL_bg_img.paste(output, (ROIL, ROIU), output)
+
+
+# mask process part
+ mask = np.zeros_like(bg_img)
+
+ if len(listFinalDrops) > 0:
+ # make circles and elipses
+ for drop in listFinalDrops:
+ if (drop.shape == 0):
+ cv2.circle(mask, drop.center, drop.radius, (255, 255, 255), -1)
+ if (drop.shape == 1):
+ cv2.circle(mask, drop.center, drop.radius, (255, 255, 255), -1)
+ cv2.ellipse(mask, drop.center, (drop.radius, int(1.3 * math.sqrt(3) * drop.radius)), 0, 180, 360,
+ (255, 255, 255), -1)
+
+ img = Image.fromarray(np.uint8(mask[:, :, 0]), 'L')
+ # make beziers
+ for drop in listFinalDrops:
+ if (drop.shape == 2):
+ img = Image.fromarray(np.uint8(img), 'L')
+ draw = ImageDraw.Draw(img)
+ ts = [t / 100.0 for t in range(101)]
+ A0, A1 = drop.control_point['A'][0], drop.control_point['A'][1]
+ B0, B1 = drop.control_point['B'][0], drop.control_point['B'][1]
+ C0, C1 = drop.control_point['C'][0], drop.control_point['C'][1]
+ D0, D1 = drop.control_point['D'][0], drop.control_point['D'][1]
+ xys = [(drop.radius * C0 - 2 * drop.radius + drop.center[0],
+ drop.radius * C1 - 3 * drop.radius + drop.center[1]),
+ (drop.radius * B0 - 2 * drop.radius + drop.center[0],
+ drop.radius * B1 - 3 * drop.radius + drop.center[1]),
+ (drop.radius * D0 - 2 * drop.radius + drop.center[0],
+ drop.radius * D1 - 3 * drop.radius + drop.center[1])]
+ bezier = make_bezier(xys)
+ points = bezier(ts)
+
+ xys = [(drop.radius * C0 - 2 * drop.radius + drop.center[0],
+ drop.radius * C1 - 3 * drop.radius + drop.center[1]),
+ (drop.radius * A0 - 2 * drop.radius + drop.center[0],
+ drop.radius * A1 - 3 * drop.radius + drop.center[1]),
+ (drop.radius * D0 - 2 * drop.radius + drop.center[0],
+ drop.radius * D1 - 3 * drop.radius + drop.center[1])]
+ bezier = make_bezier(xys)
+ points.extend(bezier(ts))
+ draw.polygon(points, fill='white')
+ mask = np.array(img)
+
+ im_mask = Image.fromarray(mask.astype('uint8'))
+
+ if ifReturnLabel:
+ output_label = np.array(alpha_map)
+ output_label.flags.writeable = True
+ output_label[output_label > 0] = 1
+ output_label = Image.fromarray(output_label.astype('uint8'))
+ return PIL_bg_img, output_label, im_mask
+
+ return PIL_bg_img
diff --git a/finetune/Metric3D/training/mono/utils/raindropper/raindrop.py b/finetune/Metric3D/training/mono/utils/raindropper/raindrop.py
new file mode 100644
index 0000000000000000000000000000000000000000..ae7b66c1f5f1a6280b8898b06206131c8a6e289f
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/raindropper/raindrop.py
@@ -0,0 +1,194 @@
+# change rainy drop func from
+# https://github.com/EvoCargo/RaindropsOnWindshield/blob/main/raindrops_generator/raindrop/raindrop.py
+
+import math
+import random
+from random import randint
+
+import cv2
+import numpy as np
+from PIL import Image, ImageDraw, ImageFilter
+from raindropper.config import cfg
+
+
+def make_bezier(xys):
+ # xys should be a sequence of 2-tuples (Bezier control points)
+ n = len(xys)
+ combinations = pascal_row(n - 1)
+
+ def bezier(ts):
+ # This uses the generalized formula for bezier curves
+ # http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Generalization
+ result = []
+ for t in ts:
+ tpowers = (t**i for i in range(n))
+ upowers = reversed([(1 - t)**i for i in range(n)])
+ coefs = [c * a * b for c, a, b in zip(combinations, tpowers, upowers)]
+ result.append(tuple(sum([coef * p for coef, p in zip(coefs, ps)]) for ps in zip(*xys)))
+ return result
+
+ return bezier
+
+
+def pascal_row(n, memo={}):
+ # This returns the nth row of Pascal Triangle
+ if n in memo:
+ return memo[n]
+ result = [1]
+ x, numerator = 1, n
+ for denominator in range(1, n // 2 + 1):
+ x *= numerator
+ x /= denominator
+ result.append(x)
+ numerator -= 1
+ if n & 1 == 0:
+ result.extend(reversed(result[:-1]))
+ else:
+ result.extend(reversed(result))
+ memo[n] = result
+ return result
+
+
+class Raindrop():
+
+ def __init__(self, key, centerxy=None, radius=None, shape=None):
+ # param key: a unique key identifying a drop
+ # param centerxy: tuple defining coordinates of raindrop center in the image
+ # param radius: radius of a drop
+ # param shape: int from 0 to 2 defining raindrop shape type
+ self.key = key
+ self.ifcol = False
+ self.col_with = []
+ self.center = centerxy
+ self.radius = radius
+ # self.blur_coeff = max(int(self.radius/3), 1)
+ # self.blur_coeff = max(int(cfg["maxR"] / self.radius), 1)
+ self.blur_coeff = 3
+ self.shape = shape
+ self.type = 'default'
+ # label map's WxH = 4*R , 5*R
+ self.labelmap = np.zeros((self.radius * 5, self.radius * 4))
+ self.alphamap = np.zeros((self.radius * 5, self.radius * 4))
+ self.background = None
+ self.texture = None
+ self.control_point = {}
+ self._create_label()
+ self.use_label = False
+
+ def setCollision(self, col, col_with):
+ self.ifcol = col
+ self.col_with = col_with
+
+ def updateTexture(self, bg):
+ # gaussian blur radius may be 1, 3, 5
+ radius_array = [1, 3]
+ blur_radius_idx = randint(0, 1)
+ blur_radius = radius_array[blur_radius_idx]
+ fg = (Image.fromarray(np.uint8(bg))).filter(ImageFilter.GaussianBlur(radius=blur_radius))
+ fg = np.asarray(fg)
+
+ # add fish eye effect to simulate the background
+ K = np.array([[30 * self.radius, 0, 2 * self.radius], [0., 20 * self.radius, 3 * self.radius], [0., 0., 1]])
+ D = np.array([0.0, 0.0, 0.0, 0.0])
+ Knew = K.copy()
+
+ Knew[(0, 1), (0, 1)] = math.pow(self.radius, 1 / 500) * 2 * Knew[(0, 1), (0, 1)]
+ fisheye = cv2.fisheye.undistortImage(fg, K, D=D, Knew=Knew)
+
+ tmp = np.expand_dims(self.alphamap, axis=-1)
+ tmp = np.concatenate((fisheye, tmp), axis=2)
+
+ self.texture = Image.fromarray(tmp.astype('uint8'), 'RGBA')
+
+ def _create_label(self):
+ self._createDefaultDrop()
+
+ def _createDefaultDrop(self):
+ """create the raindrop Alpha Map according to its shape type update
+ raindrop label."""
+ if (self.shape == 0):
+ cv2.circle(self.labelmap, (self.radius * 2, self.radius * 3), int(self.radius), 128, -1)
+ self.alphamap = (Image.fromarray(np.uint8(self.labelmap))).filter(
+ ImageFilter.GaussianBlur(radius=self.blur_coeff))
+ self.alphamap = np.asarray(self.alphamap).astype(np.float)
+ self.alphamap = self.alphamap / np.max(self.alphamap) * 255.0
+ # set label map
+ self.labelmap[self.labelmap > 0] = 1
+
+ if (self.shape == 1):
+ cv2.circle(self.labelmap, (self.radius * 2, self.radius * 3), int(self.radius), 128, -1)
+ cv2.ellipse(self.labelmap, (self.radius * 2, self.radius * 3),
+ (self.radius, int(1.3 * math.sqrt(3) * self.radius)), 0, 180, 360, 128, -1)
+
+ self.alphamap = (Image.fromarray(np.uint8(self.labelmap))).filter(
+ ImageFilter.GaussianBlur(radius=self.blur_coeff))
+ self.alphamap = np.asarray(self.alphamap).astype(np.float)
+ self.alphamap = self.alphamap / np.max(self.alphamap) * 255.0
+ # set label map
+ self.labelmap[self.labelmap > 0] = 1
+
+ if (self.shape == 2):
+ C0 = random.uniform(0, 1)
+ C1 = random.uniform(0, 1)
+ A0 = random.uniform(0, 1)
+ A1 = random.uniform(2, 3)
+ D0 = random.uniform(2, 3)
+ D1 = random.uniform(2, 3)
+ B0 = random.uniform(2, 3)
+ B1 = random.uniform(0, 1)
+
+ self.control_point['A'] = (A0, A1)
+ self.control_point['B'] = (B0, B1)
+ self.control_point['C'] = (C0, C1)
+ self.control_point['D'] = (D0, D1)
+
+ img = Image.fromarray(np.uint8(self.labelmap), 'L')
+ draw = ImageDraw.Draw(img)
+ ts = [t / 100.0 for t in range(101)]
+ xys = [(self.radius * C0, self.radius * C1), (self.radius * B0, self.radius * B1),
+ (self.radius * D0, self.radius * D1)]
+ bezier = make_bezier(xys)
+ points = bezier(ts)
+
+ xys = [(self.radius * C0, self.radius * C1), (self.radius * A0, self.radius * A1),
+ (self.radius * D0, self.radius * D1)]
+ bezier = make_bezier(xys)
+ points.extend(bezier(ts))
+ draw.polygon(points, fill='gray')
+
+ self.alphamap = img.filter(ImageFilter.GaussianBlur(radius=self.blur_coeff))
+ self.alphamap = np.asarray(self.alphamap).astype(np.float)
+ self.alphamap = self.alphamap / np.max(self.alphamap) * 255.0
+
+ # set label map
+ self.labelmap[self.labelmap > 0] = 1
+
+ def setKey(self, key):
+ self.key = key
+
+ def getLabelMap(self):
+ return self.labelmap
+
+ def getAlphaMap(self):
+ return self.alphamap
+
+ def getTexture(self):
+ return self.texture
+
+ def getCenters(self):
+ return self.center
+
+ def getRadius(self):
+ return self.radius
+
+ def getKey(self):
+ return self.key
+
+ def getIfColli(self):
+ return self.ifcol
+
+ def getCollisionList(self):
+ return self.col_with
+
+ def getUseLabel(self):
+ return self.use_label
diff --git a/finetune/Metric3D/training/mono/utils/raindropper/raindrop_augmentor.py b/finetune/Metric3D/training/mono/utils/raindropper/raindrop_augmentor.py
new file mode 100644
index 0000000000000000000000000000000000000000..c160359cee94128cb644ee886231d3d45367fdb0
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/raindropper/raindrop_augmentor.py
@@ -0,0 +1,30 @@
+import numpy as np
+
+from .config import cfg
+from .dropgenerator import generate_label, generateDrops_np
+
+
+class RainDrop_Augmentor():
+
+ def __init__(self, height, width):
+ drops_list, label_map = generate_label(height, width, cfg)
+ self.drops_list = drops_list
+ self.label_map = label_map
+
+ def generate_one(self, img_np, mode='rgb'):
+
+ assert mode in ['gray', 'rgb']
+
+ # requirement input [H, W, 3]
+ if (mode == 'gray'):
+ img_np = np.squeeze(img_np)
+ img_np = np.expand_dims(img_np, axis=-1)
+ img_np = np.repeat(img_np, 3, axis=-1)
+
+ output_img, output_label, mask = generateDrops_np(img_np, cfg, self.drops_list)
+ output_img = np.asarray(output_img)
+
+ if (mode == 'gray'):
+ output_img = output_img[:, :, 0]
+
+ return output_img
diff --git a/finetune/Metric3D/training/mono/utils/running.py b/finetune/Metric3D/training/mono/utils/running.py
new file mode 100644
index 0000000000000000000000000000000000000000..df0efc0b29b8c72411fd27bb374c2782f513c51f
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/running.py
@@ -0,0 +1,374 @@
+import os
+import torch
+import torch.nn as nn
+from mono.utils.comm import main_process
+import copy
+import inspect
+import logging
+import glob
+
+class LrUpdater():
+ """Refer to LR Scheduler in MMCV.
+ Args:
+ @by_epoch (bool): LR changes epoch by epoch
+ @warmup (string): Type of warmup used. It can be None(use no warmup),
+ 'constant', 'linear' or 'exp'
+ @warmup_iters (int): The number of iterations or epochs that warmup
+ lasts. Note when by_epoch == True, warmup_iters means the number
+ of epochs that warmup lasts, otherwise means the number of
+ iteration that warmup lasts
+ @warmup_ratio (float): LR used at the beginning of warmup equals to
+ warmup_ratio * initial_lr
+ @runner (dict): Configs for running. Run by epoches or iters.
+ """
+
+ def __init__(self,
+ by_epoch: bool=True,
+ warmup: str=None,
+ warmup_iters: int=0,
+ warmup_ratio: float=0.1,
+ runner: dict={}):
+ # validate the "warmup" argument
+ if warmup is not None:
+ if warmup not in ['constant', 'linear', 'exp']:
+ raise ValueError(
+ f'"{warmup}" is not a supported type for warming up, valid'
+ ' types are "constant" and "linear"')
+ if warmup is not None:
+ assert warmup_iters > 0, \
+ '"warmup_iters" must be a positive integer'
+ assert 0 < warmup_ratio <= 1.0, \
+ '"warmup_ratio" must be in range (0,1]'
+
+ if runner is None:
+ raise RuntimeError('runner should be set.')
+
+ self.by_epoch = by_epoch
+ self.warmup = warmup
+ self.warmup_iters = warmup_iters
+ self.warmup_ratio = warmup_ratio
+ self.runner = runner
+
+ self.max_iters = None
+ self.max_epoches = None
+ if 'IterBasedRunner' in self.runner.type:
+ self.max_iters = self.runner.max_iters
+ assert self.by_epoch==False
+ self.warmup_by_epoch = False
+ elif 'EpochBasedRunner' in self.runner.type:
+ self.max_epoches = self.runner.max_epoches
+ assert self.by_epoch==True
+ self.warmup_by_epoch = True
+ else:
+ raise ValueError(f'{self.runner.type} is not a supported type for running.')
+
+ if self.warmup_by_epoch:
+ self.warmup_epochs = self.warmup_iters
+ self.warmup_iters = None
+ else:
+ self.warmup_epochs = None
+
+ self.base_lr = [] # initial lr for all param groups
+ self.regular_lr = [] # expected lr if no warming up is performed
+ self._step_count = 0
+
+ def _set_lr(self, optimizer, lr_groups):
+ if isinstance(optimizer, dict):
+ for k, optim in optimizer.items():
+ for param_group, lr in zip(optim.param_groups, lr_groups[k]):
+ param_group['lr'] = lr
+ else:
+ for param_group, lr in zip(optimizer.param_groups,
+ lr_groups):
+ param_group['lr'] = lr
+
+ def get_lr(self, _iter, max_iter, base_lr):
+ raise NotImplementedError
+
+ def get_regular_lr(self, _iter, optimizer):
+ max_iters = self.max_iters if not self.by_epoch else self.max_epoches
+
+ if isinstance(optimizer, dict):
+ lr_groups = {}
+ for k in optimizer.keys():
+ _lr_group = [
+ self.get_lr(_iter, max_iters, _base_lr)
+ for _base_lr in self.base_lr[k]
+ ]
+ lr_groups.update({k: _lr_group})
+
+ return lr_groups
+ else:
+ return [self.get_lr(_iter, max_iters, _base_lr) for _base_lr in self.base_lr]
+
+ def get_warmup_lr(self, cur_iters):
+
+ def _get_warmup_lr(cur_iters, regular_lr):
+ if self.warmup == 'constant':
+ warmup_lr = [_lr * self.warmup_ratio for _lr in regular_lr]
+ elif self.warmup == 'linear':
+ k = (1 - cur_iters / self.warmup_iters) * (1 -
+ self.warmup_ratio)
+ warmup_lr = [_lr * (1 - k) for _lr in regular_lr]
+ elif self.warmup == 'exp':
+ k = self.warmup_ratio**(1 - cur_iters / self.warmup_iters)
+ warmup_lr = [_lr * k for _lr in regular_lr]
+ return warmup_lr
+
+ if isinstance(self.regular_lr, dict):
+ lr_groups = {}
+ for key, regular_lr in self.regular_lr.items():
+ lr_groups[key] = _get_warmup_lr(cur_iters, regular_lr)
+ return lr_groups
+ else:
+ return _get_warmup_lr(cur_iters, self.regular_lr)
+
+ def before_run(self, optimizer):
+ # NOTE: when resuming from a checkpoint, if 'initial_lr' is not saved,
+ # it will be set according to the optimizer params
+ if isinstance(optimizer, dict):
+ self.base_lr = {}
+ for k, optim in optimizer.items():
+ for group in optim.param_groups:
+ group.setdefault('initial_lr', group['lr'])
+ _base_lr = [
+ group['initial_lr'] for group in optim.param_groups
+ ]
+ self.base_lr.update({k: _base_lr})
+ else:
+ for group in optimizer.param_groups:
+ group.setdefault('initial_lr', group['lr'])
+ self.base_lr = [
+ group['initial_lr'] for group in optimizer.param_groups
+ ]
+
+ def after_train_epoch(self, optimizer):
+ self._step_count += 1
+ curr_epoch = self._step_count
+ self.regular_lr = self.get_regular_lr(curr_epoch, optimizer)
+ if self.warmup is None or curr_epoch > self.warmup_epoches:
+ self._set_lr(optimizer, self.regular_lr)
+ else:
+ #self.warmup_iters = int(self.warmup_epochs * epoch_len)
+ warmup_lr = self.get_warmup_lr(curr_epoch)
+ self._set_lr(optimizer, warmup_lr)
+
+ def after_train_iter(self, optimizer):
+ self._step_count += 1
+ cur_iter = self._step_count
+ self.regular_lr = self.get_regular_lr(cur_iter, optimizer)
+ if self.warmup is None or cur_iter >= self.warmup_iters:
+ self._set_lr(optimizer, self.regular_lr)
+ else:
+ warmup_lr = self.get_warmup_lr(cur_iter)
+ self._set_lr(optimizer, warmup_lr)
+
+ def get_curr_lr(self, cur_iter):
+ if self.warmup is None or cur_iter >= self.warmup_iters:
+ return self.regular_lr
+ else:
+ return self.get_warmup_lr(cur_iter)
+
+ def state_dict(self):
+ """
+ Returns the state of the scheduler as a :class:`dict`.
+ It contains an entry for every variable in self.__dict__ which
+ is not the optimizer.
+ """
+ return {key: value for key, value in self.__dict__.items() if key != 'optimizer'}
+
+ def load_state_dict(self, state_dict):
+ """Loads the schedulers state.
+
+ Args:
+ @state_dict (dict): scheduler state. Should be an object returned
+ from a call to :meth:`state_dict`.
+ """
+ self.__dict__.update(state_dict)
+
+
+class PolyLrUpdater(LrUpdater):
+
+ def __init__(self, power=1., min_lr=0., **kwargs):
+ self.power = power
+ self.min_lr = min_lr
+ super(PolyLrUpdater, self).__init__(**kwargs)
+
+ def get_lr(self, _iter, max_iters, base_lr):
+ progress = _iter
+ max_progress = max_iters
+ coeff = (1 - progress / max_progress)**self.power
+ return (base_lr - self.min_lr) * coeff + self.min_lr
+
+
+def build_lr_schedule_with_cfg(cfg):
+ # build learning rate schedule with config.
+ lr_config = copy.deepcopy(cfg.lr_config)
+ policy = lr_config.pop('policy')
+ if cfg.lr_config.policy == 'poly':
+ schedule = PolyLrUpdater(runner=cfg.runner, **lr_config)
+ else:
+ raise RuntimeError(f'{cfg.lr_config.policy} \
+ is not supported in this framework.')
+ return schedule
+
+
+#def step_learning_rate(base_lr, epoch, step_epoch, multiplier=0.1):
+# """Sets the learning rate to the base LR decayed by 10 every step epochs"""
+# lr = base_lr * (multiplier ** (epoch // step_epoch))
+# return lr
+
+def register_torch_optimizers():
+ torch_optimizers = {}
+ for module_name in dir(torch.optim):
+ if module_name.startswith('__'):
+ continue
+ _optim = getattr(torch.optim, module_name)
+ if inspect.isclass(_optim) and issubclass(_optim,
+ torch.optim.Optimizer):
+ torch_optimizers[module_name] = _optim
+ return torch_optimizers
+
+
+TORCH_OPTIMIZER = register_torch_optimizers()
+
+def build_optimizer_with_cfg(cfg, model):
+ # encoder_parameters = []
+ # decoder_parameters = []
+ # nongrad_parameters = []
+ # for key, value in dict(model.named_parameters()).items():
+ # if value.requires_grad:
+ # if 'encoder' in key:
+ # encoder_parameters.append(value)
+ # else:
+ # decoder_parameters.append(value)
+ # else:
+ # nongrad_parameters.append(value)
+
+ #params = [{"params": filter(lambda p: p.requires_grad, model.parameters())}]
+ optim_cfg = copy.deepcopy(cfg.optimizer)
+ optim_type = optim_cfg.pop('type', None)
+
+ if optim_type is None:
+ raise RuntimeError(f'{optim_type} is not set')
+ if optim_type not in TORCH_OPTIMIZER:
+ raise RuntimeError(f'{optim_type} is not supported in torch {torch.__version__}')
+ if 'others' not in optim_cfg:
+ optim_cfg['others'] = optim_cfg['decoder']
+
+ def match(key1, key_list, strict_match=False):
+ if not strict_match:
+ for k in key_list:
+ if k in key1:
+ return k
+ else:
+ for k in key_list:
+ if k == key1.split('.')[1]:
+ return k
+ return None
+ optim_obj = TORCH_OPTIMIZER[optim_type]
+ matching_type = optim_cfg.pop('strict_match', False)
+
+ module_names = optim_cfg.keys()
+ model_parameters = {i: [] for i in module_names}
+ model_parameters['others'] = []
+ nongrad_parameters = []
+ for key, value in dict(model.named_parameters()).items():
+ if value.requires_grad:
+ match_key = match(key, module_names, matching_type)
+ # if optim_cfg[match_key]['lr'] == 0:
+ # value.requires_grad=False
+ # continue
+ if match_key is None:
+ model_parameters['others'].append(value)
+ else:
+ model_parameters[match_key].append(value)
+ else:
+ nongrad_parameters.append(value)
+
+ optims = [{'params':model_parameters[k], **optim_cfg[k]} for k in optim_cfg.keys()]
+ optimizer = optim_obj(optims)
+ # optim_args_encoder = optim_cfg.optimizer.encoder
+ # optim_args_decoder = optim_cfg.optimizer.decoder
+ # optimizer = optim_obj(
+ # [{'params':encoder_parameters, **optim_args_encoder},
+ # {'params':decoder_parameters, **optim_args_decoder},
+ # ])
+
+ return optimizer
+
+
+def load_ckpt(load_path, model, optimizer=None, scheduler=None, strict_match=True, loss_scaler=None):
+ """
+ Load the check point for resuming training or finetuning.
+ """
+ logger = logging.getLogger()
+ if os.path.isfile(load_path):
+ if main_process():
+ logger.info(f"Loading weight '{load_path}'")
+ checkpoint = torch.load(load_path, map_location="cpu")
+ ckpt_state_dict = checkpoint['model_state_dict']
+ model.module.load_state_dict(ckpt_state_dict, strict=strict_match)
+
+ if optimizer is not None:
+ optimizer.load_state_dict(checkpoint['optimizer'])
+ if scheduler is not None:
+ scheduler.load_state_dict(checkpoint['scheduler'])
+ if loss_scaler is not None and 'scaler' in checkpoint:
+ loss_scaler.load_state_dict(checkpoint['scaler'])
+ print('Loss scaler loaded', loss_scaler)
+ del ckpt_state_dict
+ del checkpoint
+ if main_process():
+ logger.info(f"Successfully loaded weight: '{load_path}'")
+ if scheduler is not None and optimizer is not None:
+ logger.info(f"Resume training from: '{load_path}'")
+ else:
+ if main_process():
+ raise RuntimeError(f"No weight found at '{load_path}'")
+ return model, optimizer, scheduler, loss_scaler
+
+
+def save_ckpt(cfg, model, optimizer, scheduler, curr_iter=0, curr_epoch=None, loss_scaler=None):
+ """
+ Save the model, optimizer, lr scheduler.
+ """
+ logger = logging.getLogger()
+
+ if 'IterBasedRunner' in cfg.runner.type:
+ max_iters = cfg.runner.max_iters
+ elif 'EpochBasedRunner' in cfg.runner.type:
+ max_iters = cfg.runner.max_epoches
+ else:
+ raise TypeError(f'{cfg.runner.type} is not supported')
+
+ ckpt = dict(model_state_dict=model.module.state_dict(),
+ optimizer=optimizer.state_dict(),
+ max_iter=cfg.runner.max_iters if 'max_iters' in cfg.runner \
+ else cfg.runner.max_epoches,
+ scheduler=scheduler.state_dict(),
+ # current_iter=curr_iter,
+ # current_epoch=curr_epoch,
+ )
+ if loss_scaler is not None:
+ # amp state_dict
+ ckpt.update(dict(scaler=loss_scaler.state_dict()))
+
+ ckpt_dir = os.path.join(cfg.work_dir, 'ckpt')
+ os.makedirs(ckpt_dir, exist_ok=True)
+
+ save_name = os.path.join(ckpt_dir, 'step%08d.pth' % curr_iter)
+ saved_ckpts = glob.glob(ckpt_dir + '/step*.pth')
+ torch.save(ckpt, save_name)
+
+ # keep the last 8 ckpts
+ if len(saved_ckpts) > 8:
+ saved_ckpts.sort()
+ os.remove(saved_ckpts.pop(0))
+
+ logger.info(f'Save model: {save_name}')
+
+
+
+if __name__ == '__main__':
+ print(TORCH_OPTIMIZER)
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/transform.py b/finetune/Metric3D/training/mono/utils/transform.py
new file mode 100644
index 0000000000000000000000000000000000000000..40f1956fb5505159367f8927e5f7d044c10f42d1
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/transform.py
@@ -0,0 +1,1491 @@
+#import collections
+import collections.abc as collections
+import cv2
+import math
+import numpy as np
+import numbers
+import random
+import torch
+from imgaug import augmenters as iaa
+import matplotlib
+import matplotlib.cm
+import mono.utils.weather_aug_utils as wa
+
+"""
+Provides a set of Pytorch transforms that use OpenCV instead of PIL (Pytorch default)
+for image manipulation.
+"""
+
+class Compose(object):
+ # Composes transforms: transforms.Compose([transforms.RandScale([0.5, 2.0]), transforms.ToTensor()])
+ def __init__(self, transforms):
+ self.transforms = transforms
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ for t in self.transforms:
+ images, labels, intrinsics, cam_models, normals, other_labels, transform_paras = t(images, labels, intrinsics, cam_models, normals, other_labels, transform_paras)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class ToTensor(object):
+ # Converts numpy.ndarray (H x W x C) to a torch.FloatTensor of shape (C x H x W).
+ def __init__(self, **kwargs):
+ return
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ if not isinstance(images, list) or not isinstance(labels, list) or not isinstance(intrinsics, list):
+ raise (RuntimeError("transform.ToTensor() only handle inputs/labels/intrinsics lists."))
+ if len(images) != len(intrinsics):
+ raise (RuntimeError("Numbers of images and intrinsics are not matched."))
+ if not isinstance(images[0], np.ndarray) or not isinstance(labels[0], np.ndarray):
+ raise (RuntimeError("transform.ToTensor() only handle np.ndarray for the input and label."
+ "[eg: data readed by cv2.imread()].\n"))
+ if not isinstance(intrinsics[0], list):
+ raise (RuntimeError("transform.ToTensor() only handle list for the camera intrinsics"))
+
+ if len(images[0].shape) > 3 or len(images[0].shape) < 2:
+ raise (RuntimeError("transform.ToTensor() only handle image(np.ndarray) with 3 dims or 2 dims.\n"))
+ if len(labels[0].shape) > 3 or len(labels[0].shape) < 2:
+ raise (RuntimeError("transform.ToTensor() only handle label(np.ndarray) with 3 dims or 2 dims.\n"))
+
+ if len(intrinsics[0]) >4 or len(intrinsics[0]) < 3:
+ raise (RuntimeError("transform.ToTensor() only handle intrinsic(list) with 3 sizes or 4 sizes.\n"))
+
+ for i, img in enumerate(images):
+ if len(img.shape) == 2:
+ img = np.expand_dims(img, axis=2)
+ images[i] = torch.from_numpy(img.transpose((2, 0, 1))).float()
+ for i, lab in enumerate(labels):
+ if len(lab.shape) == 2:
+ lab = np.expand_dims(lab, axis=0)
+ labels[i] = torch.from_numpy(lab).float()
+ for i, intrinsic in enumerate(intrinsics):
+ if len(intrinsic) == 3:
+ intrinsic = [intrinsic[0],] + intrinsic
+ intrinsics[i] = torch.tensor(intrinsic, dtype=torch.float)
+ if cam_models is not None:
+ for i, cam_model in enumerate(cam_models):
+ cam_models[i] = torch.from_numpy(cam_model.transpose((2, 0, 1))).float() if cam_model is not None else None
+ if normals is not None:
+ for i, normal in enumerate(normals):
+ normals[i] = torch.from_numpy(normal.transpose((2, 0, 1))).float()
+ if other_labels is not None:
+ for i, lab in enumerate(other_labels):
+ if len(lab.shape) == 2:
+ lab = np.expand_dims(lab, axis=0)
+ other_labels[i] = torch.from_numpy(lab).float()
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class Normalize(object):
+ # Normalize tensor with mean and standard deviation along channel: channel = (channel - mean) / std
+ def __init__(self, mean, std=None, **kwargs):
+ if std is None:
+ assert len(mean) > 0
+ else:
+ assert len(mean) == len(std)
+ self.mean = torch.tensor(mean).float()[:, None, None]
+ self.std = torch.tensor(std).float()[:, None, None] if std is not None \
+ else torch.tensor([1.0, 1.0, 1.0]).float()[:, None, None]
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ # if self.std is None:
+ # # for t, m in zip(image, self.mean):
+ # # t.sub(m)
+ # image = image - self.mean
+ # if ref_images is not None:
+ # for i, ref_i in enumerate(ref_images):
+ # ref_images[i] = ref_i - self.mean
+ # else:
+ # # for t, m, s in zip(image, self.mean, self.std):
+ # # t.sub(m).div(s)
+ # image = (image - self.mean) / self.std
+ # if ref_images is not None:
+ # for i, ref_i in enumerate(ref_images):
+ # ref_images[i] = (ref_i - self.mean) / self.std
+ for i, img in enumerate(images):
+ img = torch.div((img - self.mean), self.std)
+ images[i] = img
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class ResizeCanonical(object):
+ """
+ Resize the input to the canonical space first, then resize the input with random sampled size.
+ In the first stage, we assume the distance holds while the camera model varies.
+ In the second stage, we aim to simulate the observation in different distance. The camera will move along the optical axis.
+ Args:
+ images: list of RGB images.
+ labels: list of depth/disparity labels.
+ other labels: other labels, such as instance segmentations, semantic segmentations...
+ """
+ def __init__(self, **kwargs):
+ self.ratio_range = kwargs['ratio_range']
+ self.canonical_focal = kwargs['focal_length']
+ self.crop_size = kwargs['crop_size']
+
+ def random_on_canonical_transform(self, image, label, intrinsic, cam_model, to_random_ratio):
+ ori_h, ori_w, _ = image.shape
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2.0
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+ to_scale_ratio = to_random_ratio
+ resize_ratio = to_canonical_ratio * to_random_ratio
+ reshape_h = int(ori_h * resize_ratio + 0.5)
+ reshape_w = int(ori_w * resize_ratio + 0.5)
+
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ if intrinsic is not None:
+ intrinsic = [self.canonical_focal, self.canonical_focal, intrinsic[2]*resize_ratio, intrinsic[3]*resize_ratio]
+ if label is not None:
+ # number of other labels may be less than that of image
+ label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # scale the label and camera intrinsics
+ label = label / to_scale_ratio
+
+ if cam_model is not None:
+ # Should not directly resize the cam_model.
+ # Camera model should be resized in 'to canonical' stage, while it holds in 'random resizing' stage.
+ # cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+
+ return image, label, intrinsic, cam_model, to_scale_ratio
+
+ def random_on_crop_transform(self, image, label, intrinsic, cam_model, to_random_ratio):
+ ori_h, ori_w, _ = image.shape
+ crop_h, crop_w = self.crop_size
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2.0
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+
+ # random resize based on the last crop size
+ proposal_reshape_h = int(crop_h * to_random_ratio + 0.5)
+ proposal_reshape_w = int(crop_w * to_random_ratio + 0.5)
+ resize_ratio_h = proposal_reshape_h / ori_h
+ resize_ratio_w = proposal_reshape_w / ori_w
+ resize_ratio = min(resize_ratio_h, resize_ratio_w) # resize based on the long edge
+ reshape_h = int(ori_h * resize_ratio + 0.5)
+ reshape_w = int(ori_w * resize_ratio + 0.5)
+
+ to_scale_ratio = resize_ratio / to_canonical_ratio
+
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ if intrinsic is not None:
+ intrinsic = [self.canonical_focal, self.canonical_focal, intrinsic[2]*resize_ratio, intrinsic[3]*resize_ratio]
+ if label is not None:
+ # number of other labels may be less than that of image
+ label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # scale the label and camera intrinsics
+ label = label / to_scale_ratio
+
+ if cam_model is not None:
+ # Should not directly resize the cam_model.
+ # Camera model should be resized in 'to canonical' stage, while it holds in 'random resizing' stage.
+ # cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ return image, label, intrinsic, cam_model, to_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ assert labels[0].dtype == np.float
+ target_focal = (intrinsics[0][0] + intrinsics[0][1]) / 2.0
+ target_to_canonical_ratio = self.canonical_focal / target_focal
+ target_img_shape = images[0].shape
+ to_random_ratio = random.uniform(self.ratio_range[0], self.ratio_range[1])
+ to_scale_ratio = 0.0
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model, to_scale_ratio = self.random_on_canonical_transform(
+ img, label, intrinsic, cam_model, to_random_ratio)
+
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if normals != None:
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, normal in enumerate(normals):
+ normals[i] = cv2.resize(normal, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+ if other_labels != None:
+ # other labels are like semantic segmentations, instance segmentations, instance planes segmentations...
+ #resize_ratio = target_to_canonical_ratio * to_scale_ratio
+ #reshape_h = int(target_img_shape[0] * resize_ratio + 0.5)
+ #reshape_w = int(target_img_shape[1] * resize_ratio + 0.5)
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, other_label_i in enumerate(other_labels):
+ other_labels[i] = cv2.resize(other_label_i, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+ if transform_paras is not None:
+ transform_paras.update(label_scale_factor = 1.0/to_scale_ratio)
+
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class LabelScaleCononical(object):
+ """
+ To solve the ambiguity observation for the mono branch, i.e. different focal length (object size) with the same depth, cameras are
+ mapped to a cononical space. To mimic this, we set the focal length to a canonical one and scale the depth value. NOTE: resize the image based on the ratio can also solve this ambiguity.
+ Args:
+ images: list of RGB images.
+ labels: list of depth/disparity labels.
+ other labels: other labels, such as instance segmentations, semantic segmentations...
+ """
+ def __init__(self, **kwargs):
+ self.canonical_focal = kwargs['focal_length']
+
+ def _get_scale_ratio(self, intrinsic):
+ target_focal_x = intrinsic[0]
+ label_scale_ratio = self.canonical_focal / target_focal_x
+ pose_scale_ratio = 1.0
+ return label_scale_ratio, pose_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ #assert labels[0].dtype == np.float
+
+ label_scale_ratio = None
+ pose_scale_ratio = None
+
+ for i in range(len(intrinsics)):
+ img_i = images[i]
+ label_i = labels[i] if i < len(labels) else None
+ intrinsic_i = intrinsics[i].copy()
+ cam_model_i = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+
+ label_scale_ratio, pose_scale_ratio = self._get_scale_ratio(intrinsic_i)
+
+ # adjust the focal length, map the current camera to the canonical space
+ intrinsics[i] = [intrinsic_i[0]*label_scale_ratio, intrinsic_i[1]*label_scale_ratio, intrinsic_i[2], intrinsic_i[3]]
+
+ # scale the label to the canonical space
+ if label_i is not None:
+ labels[i] = label_i * label_scale_ratio
+
+ if cam_model_i is not None:
+ # As the focal length is adjusted (canonical focal length), the camera model should be re-built.
+ ori_h, ori_w, _ = img_i.shape
+ cam_models[i] = build_camera_model(ori_h, ori_w, intrinsics[i])
+
+
+ if transform_paras is not None:
+ transform_paras.update(label_scale_factor = label_scale_ratio)
+
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+
+class ResizeKeepRatio(object):
+ """
+ Resize and pad to a given size. Hold the aspect ratio.
+ This resizing assumes that the camera model remains unchanged.
+ Args:
+ resize_size: predefined output size.
+ """
+ def __init__(self, resize_size, padding=None, ignore_label=-1, **kwargs):
+ if isinstance(resize_size, int):
+ self.resize_h = resize_size
+ self.resize_w = resize_size
+ elif isinstance(resize_size, collections.Iterable) and len(resize_size) == 2 \
+ and isinstance(resize_size[0], int) and isinstance(resize_size[1], int) \
+ and resize_size[0] > 0 and resize_size[1] > 0:
+ self.resize_h = resize_size[0]
+ self.resize_w = resize_size[1]
+ else:
+ raise (RuntimeError("crop size error.\n"))
+ if padding is None:
+ self.padding = padding
+ elif isinstance(padding, list):
+ if all(isinstance(i, numbers.Number) for i in padding):
+ self.padding = padding
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if len(padding) != 3:
+ raise (RuntimeError("padding channel is not equal with 3\n"))
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if isinstance(ignore_label, int):
+ self.ignore_label = ignore_label
+ else:
+ raise (RuntimeError("ignore_label should be an integer number\n"))
+ self.crop_size = kwargs['crop_size']
+ self.canonical_focal = kwargs['focal_length']
+
+ def main_data_transform(self, image, label, intrinsic, cam_model, resize_ratio, padding, to_scale_ratio):
+ """
+ Resize data first and then do the padding.
+ 'label' will be scaled.
+ """
+ h, w, _ = image.shape
+ reshape_h = int(resize_ratio * h)
+ reshape_w = int(resize_ratio * w)
+
+ pad_h, pad_w, pad_h_half, pad_w_half = padding
+
+ # resize
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ # padding
+ image = cv2.copyMakeBorder(
+ image,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.padding)
+
+ if label is not None:
+ # label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ label = cv2.copyMakeBorder(
+ label,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+ # scale the label
+ label = label / to_scale_ratio
+
+ # Resize, adjust principle point
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] * resize_ratio
+ intrinsic[3] = intrinsic[3] * resize_ratio
+
+ if cam_model is not None:
+ #cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ cam_model = cv2.copyMakeBorder(
+ cam_model,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+ # Pad, adjust the principle point
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] + pad_w_half
+ intrinsic[3] = intrinsic[3] + pad_h_half
+ return image, label, intrinsic, cam_model
+
+ def get_label_scale_factor(self, image, intrinsic, resize_ratio):
+ ori_h, ori_w, _ = image.shape
+ crop_h, crop_w = self.crop_size
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2.0 #intrinsic[0] #
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+ to_scale_ratio = resize_ratio / to_canonical_ratio
+ return to_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ target_h, target_w, _ = images[0].shape
+ resize_ratio_h = self.resize_h / target_h
+ resize_ratio_w = self.resize_w / target_w
+ resize_ratio = min(resize_ratio_h, resize_ratio_w)
+ reshape_h = int(resize_ratio * target_h)
+ reshape_w = int(resize_ratio * target_w)
+ pad_h = max(self.resize_h - reshape_h, 0)
+ pad_w = max(self.resize_w - reshape_w, 0)
+ pad_h_half = int(pad_h / 2)
+ pad_w_half = int(pad_w / 2)
+
+ pad_info = [pad_h, pad_w, pad_h_half, pad_w_half]
+ to_scale_ratio = self.get_label_scale_factor(images[0], intrinsics[0], resize_ratio)
+
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model = self.main_data_transform(
+ img, label, intrinsic, cam_model, resize_ratio, pad_info, to_scale_ratio)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if normals is not None:
+ for i, normal in enumerate(normals):
+ normal = cv2.resize(normal, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # pad
+ normals[i] = cv2.copyMakeBorder(
+ normal,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=0)
+
+ if other_labels is not None:
+
+ for i, other_lab in enumerate(other_labels):
+ # resize
+ other_lab = cv2.resize(other_lab, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # pad
+ other_labels[i] = cv2.copyMakeBorder(
+ other_lab,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+
+ if transform_paras is not None:
+ transform_paras.update(pad=[pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half])
+ if 'label_scale_factor' in transform_paras:
+ transform_paras['label_scale_factor'] = transform_paras['label_scale_factor'] * 1.0 / to_scale_ratio
+ else:
+ transform_paras.update(label_scale_factor=1.0/to_scale_ratio)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class KeepResizeCanoSize(object):
+ """
+ Resize and pad to a given size. Hold the aspect ratio.
+ This resizing assumes that the camera model remains unchanged.
+ Args:
+ resize_size: predefined output size.
+ """
+ def __init__(self, resize_size, padding=None, ignore_label=-1, **kwargs):
+ if isinstance(resize_size, int):
+ self.resize_h = resize_size
+ self.resize_w = resize_size
+ elif isinstance(resize_size, collections.Iterable) and len(resize_size) == 2 \
+ and isinstance(resize_size[0], int) and isinstance(resize_size[1], int) \
+ and resize_size[0] > 0 and resize_size[1] > 0:
+ self.resize_h = resize_size[0]
+ self.resize_w = resize_size[1]
+ else:
+ raise (RuntimeError("crop size error.\n"))
+ if padding is None:
+ self.padding = padding
+ elif isinstance(padding, list):
+ if all(isinstance(i, numbers.Number) for i in padding):
+ self.padding = padding
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if len(padding) != 3:
+ raise (RuntimeError("padding channel is not equal with 3\n"))
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if isinstance(ignore_label, int):
+ self.ignore_label = ignore_label
+ else:
+ raise (RuntimeError("ignore_label should be an integer number\n"))
+ self.crop_size = kwargs['crop_size']
+ self.canonical_focal = kwargs['focal_length']
+
+ def main_data_transform(self, image, label, intrinsic, cam_model, resize_ratio, padding, to_scale_ratio):
+ """
+ Resize data first and then do the padding.
+ 'label' will be scaled.
+ """
+ h, w, _ = image.shape
+ reshape_h = int(resize_ratio * h)
+ reshape_w = int(resize_ratio * w)
+
+ pad_h, pad_w, pad_h_half, pad_w_half = padding
+
+ # resize
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ # padding
+ image = cv2.copyMakeBorder(
+ image,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.padding)
+
+ if label is not None:
+ # label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ label = cv2.copyMakeBorder(
+ label,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+ # scale the label
+ label = label / to_scale_ratio
+
+ # Resize, adjust principle point
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] * resize_ratio
+ intrinsic[3] = intrinsic[3] * resize_ratio
+
+ if cam_model is not None:
+ #cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ cam_model = cv2.copyMakeBorder(
+ cam_model,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+ # Pad, adjust the principle point
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] + pad_w_half
+ intrinsic[3] = intrinsic[3] + pad_h_half
+ return image, label, intrinsic, cam_model
+
+ # def get_label_scale_factor(self, image, intrinsic, resize_ratio):
+ # ori_h, ori_w, _ = image.shape
+ # crop_h, crop_w = self.crop_size
+ # ori_focal = intrinsic[0] #(intrinsic[0] + intrinsic[1]) / 2.0
+
+ # to_canonical_ratio = self.canonical_focal / ori_focal
+ # to_scale_ratio = resize_ratio / to_canonical_ratio
+ # return to_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ target_h, target_w, _ = images[0].shape
+ ori_focal = intrinsics[0][0]
+ to_canonical_ratio = self.canonical_focal / ori_focal
+
+ resize_ratio = to_canonical_ratio
+ reshape_h = int(resize_ratio * target_h)
+ reshape_w = int(resize_ratio * target_w)
+
+ pad_h = 32 - reshape_h % 32
+ pad_w = 32 - reshape_w % 32
+ pad_h_half = int(pad_h / 2)
+ pad_w_half = int(pad_w / 2)
+
+ pad_info = [pad_h, pad_w, pad_h_half, pad_w_half]
+ to_scale_ratio = 1.0
+
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model = self.main_data_transform(
+ img, label, intrinsic, cam_model, resize_ratio, pad_info, to_scale_ratio)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if normals is not None:
+
+ for i, normal in enumerate(normals):
+ # resize
+ normal = cv2.resize(normal, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # pad
+ normals[i] = cv2.copyMakeBorder(
+ normal,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=0)
+
+ if other_labels is not None:
+
+ for i, other_lab in enumerate(other_labels):
+ # resize
+ other_lab = cv2.resize(other_lab, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # pad
+ other_labels[i] = cv2.copyMakeBorder(
+ other_lab,
+ pad_h_half,
+ pad_h - pad_h_half,
+ pad_w_half,
+ pad_w - pad_w_half,
+ cv2.BORDER_CONSTANT,
+ value=self.ignore_label)
+
+
+ if transform_paras is not None:
+ transform_paras.update(pad=[pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half])
+ if 'label_scale_factor' in transform_paras:
+ transform_paras['label_scale_factor'] = transform_paras['label_scale_factor'] * 1.0 / to_scale_ratio
+ else:
+ transform_paras.update(label_scale_factor=1.0/to_scale_ratio)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class RandomCrop(object):
+ """Crops the given ndarray image (H*W*C or H*W).
+ Args:
+ size (sequence or int): Desired output size of the crop. If size is an
+ int instead of sequence like (h, w), a square crop (size, size) is made.
+ """
+ def __init__(self, crop_size, crop_type='center', padding=None, ignore_label=-1, **kwargs):
+ if isinstance(crop_size, int):
+ self.crop_h = crop_size
+ self.crop_w = crop_size
+ elif isinstance(crop_size, collections.Iterable) and len(crop_size) == 2 \
+ and isinstance(crop_size[0], int) and isinstance(crop_size[1], int) \
+ and crop_size[0] > 0 and crop_size[1] > 0:
+ self.crop_h = crop_size[0]
+ self.crop_w = crop_size[1]
+ else:
+ raise (RuntimeError("crop size error.\n"))
+ if crop_type == 'center' or crop_type == 'rand' or crop_type=='rand_in_field':
+ self.crop_type = crop_type
+ else:
+ raise (RuntimeError("crop type error: rand | center | rand_in_field \n"))
+ if padding is None:
+ self.padding = padding
+ elif isinstance(padding, list):
+ if all(isinstance(i, numbers.Number) for i in padding):
+ self.padding = padding
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if len(padding) != 3:
+ raise (RuntimeError("padding channel is not equal with 3\n"))
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if isinstance(ignore_label, int):
+ self.ignore_label = ignore_label
+ else:
+ raise (RuntimeError("ignore_label should be an integer number\n"))
+
+
+ def cal_padding_paras(self, h, w):
+ # padding if current size is not satisfied
+ pad_h = max(self.crop_h - h, 0)
+ pad_w = max(self.crop_w - w, 0)
+ pad_h_half = int(pad_h / 2)
+ pad_w_half = int(pad_w / 2)
+ return pad_h, pad_w, pad_h_half, pad_w_half
+
+ def cal_cropping_paras(self, h, w, intrinsic):
+ u0 = intrinsic[2]
+ v0 = intrinsic[3]
+ if self.crop_type == 'rand':
+ h_min = 0
+ h_max = h - self.crop_h
+ w_min = 0
+ w_max = w - self.crop_w
+ elif self.crop_type == 'center':
+ h_min = (h - self.crop_h) / 2
+ h_max = (h - self.crop_h) / 2
+ w_min = (w - self.crop_w) / 2
+ w_max = (w - self.crop_w) / 2
+ else: # rand in field
+ h_min = min(max(0, v0 - 0.75*self.crop_h), h-self.crop_h)
+ h_max = min(max(v0 - 0.25*self.crop_h, 0), h-self.crop_h)
+ w_min = min(max(0, u0 - 0.75*self.crop_w), w-self.crop_w)
+ w_max = min(max(u0 - 0.25*self.crop_w, 0), w-self.crop_w)
+
+ h_off = random.randint(int(h_min), int(h_max))
+ w_off = random.randint(int(w_min), int(w_max))
+ return h_off, w_off
+
+ def main_data_transform(self, image, label, intrinsic, cam_model,
+ pad_h, pad_w, pad_h_half, pad_w_half, h_off, w_off):
+
+ # padding if current size is not satisfied
+ if pad_h > 0 or pad_w > 0:
+ if self.padding is None:
+ raise (RuntimeError("depthtransform.Crop() need padding while padding argument is None\n"))
+ image = cv2.copyMakeBorder(image, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.padding)
+ if label is not None:
+ label = cv2.copyMakeBorder(label, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+ if cam_model is not None:
+ cam_model = cv2.copyMakeBorder(cam_model, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+
+ # cropping
+ image = image[h_off:h_off+self.crop_h, w_off:w_off+self.crop_w]
+ if label is not None:
+ label = label[h_off:h_off+self.crop_h, w_off:w_off+self.crop_w]
+ if cam_model is not None:
+ cam_model = cam_model[h_off:h_off+self.crop_h, w_off:w_off+self.crop_w]
+
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] + pad_w_half - w_off
+ intrinsic[3] = intrinsic[3] + pad_h_half - h_off
+ return image, label, intrinsic, cam_model
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ if 'random_crop_size' in transform_paras and transform_paras['random_crop_size'] is not None \
+ and (transform_paras['random_crop_size'][0] + transform_paras['random_crop_size'][1] > 500):
+ self.crop_h = int(transform_paras['random_crop_size'][0].item())
+ self.crop_w = int(transform_paras['random_crop_size'][1].item())
+ target_img = images[0]
+ target_h, target_w, _ = target_img.shape
+ target_intrinsic = intrinsics[0]
+ pad_h, pad_w, pad_h_half, pad_w_half = self.cal_padding_paras(target_h, target_w)
+ h_off, w_off = self.cal_cropping_paras(target_h+pad_h, target_w+pad_w, target_intrinsic)
+
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i].copy() if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model = self.main_data_transform(
+ img, label, intrinsic, cam_model,
+ pad_h, pad_w, pad_h_half, pad_w_half, h_off, w_off)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+ pad=[pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+ if normals is not None:
+ for i, normal in enumerate(normals):
+ # padding if current size is not satisfied
+ normal = cv2.copyMakeBorder(normal, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=0)
+ normals[i] = normal[h_off:h_off+self.crop_h, w_off:w_off+self.crop_w]
+ if other_labels is not None:
+ for i, other_lab in enumerate(other_labels):
+ # padding if current size is not satisfied
+ other_lab = cv2.copyMakeBorder(other_lab, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+ other_labels[i] = other_lab[h_off:h_off+self.crop_h, w_off:w_off+self.crop_w]
+ if transform_paras is not None:
+ transform_paras.update(dict(pad=pad))
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class RandomResize(object):
+ """
+ Random resize the image. During this process, the camera model is hold, and thus the depth label is scaled.
+ Args:
+ images: list of RGB images.
+ labels: list of depth/disparity labels.
+ other labels: other labels, such as instance segmentations, semantic segmentations...
+ """
+ def __init__(self, ratio_range=(0.85, 1.15), prob=0.5, is_lidar=True, **kwargs):
+ self.ratio_range = ratio_range
+ self.is_lidar = is_lidar
+ self.prob = prob
+
+ def random_resize(self, image, label, intrinsic, cam_model, to_random_ratio):
+ ori_h, ori_w, _ = image.shape
+
+ resize_ratio = to_random_ratio
+ label_scale_ratio = 1.0 / resize_ratio
+ reshape_h = int(ori_h * resize_ratio + 0.5)
+ reshape_w = int(ori_w * resize_ratio + 0.5)
+
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ if intrinsic is not None:
+ intrinsic = [intrinsic[0], intrinsic[1], intrinsic[2]*resize_ratio, intrinsic[3]*resize_ratio]
+ if label is not None:
+ if self.is_lidar:
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ else:
+ label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ # scale the label
+ label = label * label_scale_ratio
+
+ if cam_model is not None:
+ # Should not directly resize the cam_model.
+ # Camera model should be resized in 'to canonical' stage, while it holds in 'random resizing' stage.
+ # cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+
+ return image, label, intrinsic, cam_model, label_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ assert labels[0].dtype == np.float
+ # target_focal = (intrinsics[0][0] + intrinsics[0][1]) / 2.0
+ # target_to_canonical_ratio = self.canonical_focal / target_focal
+ # target_img_shape = images[0].shape
+ prob = random.uniform(0, 1)
+ if prob < self.prob:
+ to_random_ratio = random.uniform(self.ratio_range[0], self.ratio_range[1])
+ else:
+ to_random_ratio = 1.0
+ label_scale_ratio = 0.0
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i].copy() if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model, label_scale_ratio = self.random_resize(
+ img, label, intrinsic, cam_model, to_random_ratio)
+
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic.copy()
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if normals != None:
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, norm in enumerate(normals):
+ normals[i] = cv2.resize(norm, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+
+ if other_labels != None:
+ # other labels are like semantic segmentations, instance segmentations, instance planes segmentations...
+ #resize_ratio = target_to_canonical_ratio * to_scale_ratio
+ #reshape_h = int(target_img_shape[0] * resize_ratio + 0.5)
+ #reshape_w = int(target_img_shape[1] * resize_ratio + 0.5)
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, other_label_i in enumerate(other_labels):
+ other_labels[i] = cv2.resize(other_label_i, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+ if transform_paras is not None:
+ if 'label_scale_factor' in transform_paras:
+ transform_paras['label_scale_factor'] = transform_paras['label_scale_factor'] * label_scale_ratio
+ else:
+ transform_paras.update(label_scale_factor = label_scale_ratio)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class RandomEdgeMask(object):
+ """
+ Random mask the input and labels.
+ Args:
+ images: list of RGB images.
+ labels: list of depth/disparity labels.
+ other labels: other labels, such as instance segmentations, semantic segmentations...
+ """
+ def __init__(self, mask_maxsize=32, prob=0.5, rgb_invalid=[0,0,0], label_invalid=-1,**kwargs):
+ self.mask_maxsize = mask_maxsize
+ self.prob = prob
+ self.rgb_invalid = rgb_invalid
+ self.label_invalid = label_invalid
+
+ def mask_edge(self, image, mask_edgesize, mask_value):
+ H, W = image.shape[0], image.shape[1]
+ # up
+ image[0:mask_edgesize[0], :, ...] = mask_value
+ # down
+ image[H-mask_edgesize[1]:H, :, ...] = mask_value
+ # left
+ image[:, 0:mask_edgesize[2], ...] = mask_value
+ # right
+ image[:, W-mask_edgesize[3]:W, ...] = mask_value
+
+ return image
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ assert labels[0].dtype == np.float
+
+ prob = random.uniform(0, 1)
+ if prob > self.prob:
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+ mask_edgesize = random.sample(range(self.mask_maxsize), 4) #[up, down, left, right]
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ img = self.mask_edge(img, mask_edgesize, self.rgb_invalid)
+
+ images[i] = img
+ if label is not None:
+ label = self.mask_edge(label, mask_edgesize, self.label_invalid)
+ labels[i] = label
+
+ if normals != None:
+ for i, normal in enumerate(normals):
+ normals[i] = self.mask_edge(normal, mask_edgesize, mask_value=0)
+
+ if other_labels != None:
+ # other labels are like semantic segmentations, instance segmentations, instance planes segmentations...
+ for i, other_label_i in enumerate(other_labels):
+ other_labels[i] = self.mask_edge(other_label_i, mask_edgesize, self.label_invalid)
+
+ if transform_paras is not None:
+ pad = transform_paras['pad'] if 'pad' in transform_paras else [0,0,0,0]
+ new_pad = [max(mask_edgesize[0], pad[0]), max(mask_edgesize[1], pad[1]), max(mask_edgesize[2], pad[2]), max(mask_edgesize[3], pad[3])]
+ transform_paras.update(dict(pad=new_pad))
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class AdjustSize(object):
+ """Crops the given ndarray image (H*W*C or H*W).
+ Args:
+ size (sequence or int): Desired output size of the crop. If size is an
+ int instead of sequence like (h, w), a square crop (size, size) is made.
+ """
+ def __init__(self, padding=None, ignore_label=-1, **kwargs):
+
+ if padding is None:
+ self.padding = padding
+ elif isinstance(padding, list):
+ if all(isinstance(i, numbers.Number) for i in padding):
+ self.padding = padding
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if len(padding) != 3:
+ raise (RuntimeError("padding channel is not equal with 3\n"))
+ else:
+ raise (RuntimeError("padding in Crop() should be a number list\n"))
+ if isinstance(ignore_label, int):
+ self.ignore_label = ignore_label
+ else:
+ raise (RuntimeError("ignore_label should be an integer number\n"))
+
+ def get_pad_paras(self, h, w):
+ pad_h = 32 - h % 32 if h %32 != 0 else 0
+ pad_w = 32 - w % 32 if w %32 != 0 else 0
+ pad_h_half = int(pad_h // 2)
+ pad_w_half = int(pad_w // 2)
+ return pad_h, pad_w, pad_h_half, pad_w_half
+
+ def main_data_transform(self, image, label, intrinsic, cam_model):
+ h, w, _ = image.shape
+ pad_h, pad_w, pad_h_half, pad_w_half = self.get_pad_paras(h=h, w=w)
+ if pad_h > 0 or pad_w > 0:
+ if self.padding is None:
+ raise (RuntimeError("depthtransform.Crop() need padding while padding argument is None\n"))
+ image = cv2.copyMakeBorder(image, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.padding)
+ if label is not None:
+ label = cv2.copyMakeBorder(label, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+ if cam_model is not None:
+ cam_model = cv2.copyMakeBorder(cam_model, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+
+ if intrinsic is not None:
+ intrinsic[2] = intrinsic[2] + pad_w_half
+ intrinsic[3] = intrinsic[3] + pad_h_half
+ pad=[pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half]
+ return image, label, intrinsic, cam_model, pad
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ target_img = images[0]
+ target_h, target_w, _ = target_img.shape
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model, pad = self.main_data_transform(
+ img, label, intrinsic, cam_model)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+
+ if transform_paras is not None:
+ transform_paras.update(dict(pad=pad))
+ if normals is not None:
+ pad_h, pad_w, pad_h_half, pad_w_half = self.get_pad_paras(h=target_h, w=target_w)
+ for i, normal in enumerate(normals):
+ normals[i] = cv2.copyMakeBorder(normal, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=0)
+
+ if other_labels is not None:
+ pad_h, pad_w, pad_h_half, pad_w_half = self.get_pad_paras(h=target_h, w=target_w)
+ for i, other_lab in enumerate(other_labels):
+ other_labels[i] = cv2.copyMakeBorder(other_lab, pad_h_half, pad_h - pad_h_half, pad_w_half, pad_w - pad_w_half, cv2.BORDER_CONSTANT, value=self.ignore_label)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class RandomHorizontalFlip(object):
+ def __init__(self, prob=0.5, **kwargs):
+ self.p = prob
+
+ def main_data_transform(self, image, label, intrinsic, cam_model, rotate):
+ if rotate:
+ image = cv2.flip(image, 1)
+ if label is not None:
+ label = cv2.flip(label, 1)
+ if intrinsic is not None:
+ h, w, _ = image.shape
+ intrinsic[2] = w - intrinsic[2]
+ intrinsic[3] = h - intrinsic[3]
+ if cam_model is not None:
+ cam_model = cv2.flip(cam_model, 1)
+ cam_model[:, :, 0] = cam_model[:, :, 0] * -1
+ cam_model[:, :, 2] = cam_model[:, :, 2] * -1
+ return image, label, intrinsic, cam_model
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ rotate = random.random() > self.p
+
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model = self.main_data_transform(
+ img, label, intrinsic, cam_model, rotate)
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+ if normals is not None:
+ for i, normal in enumerate(normals):
+ if rotate:
+ normal = cv2.flip(normal, 1)
+ normal[:, :, 0] = -normal[:, :, 0] # NOTE: check the direction of normal coordinates axis, this is used in https://github.com/baegwangbin/surface_normal_uncertainty
+ normals[i] = normal
+
+ if other_labels is not None:
+ for i, other_lab in enumerate(other_labels):
+ if rotate:
+ other_lab = cv2.flip(other_lab, 1)
+ other_labels[i] = other_lab
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class RandomBlur(object):
+ def __init__(self,
+ aver_kernal=(2, 10),
+ motion_kernal=(5, 15),
+ angle=[-80, 80],
+ prob=0.3,
+ **kwargs):
+
+ gaussian_blur = iaa.AverageBlur(k=aver_kernal)
+ motion_blur = iaa.MotionBlur(k=motion_kernal, angle=angle)
+ zoom_blur = iaa.imgcorruptlike.ZoomBlur(severity=1)
+ self.prob = prob
+ self.blurs = [gaussian_blur, motion_blur, zoom_blur]
+
+ def blur(self, imgs, id):
+ blur_mtd = self.blurs[id]
+ return blur_mtd(images=imgs)
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ prob = random.random()
+ if prob < self.prob:
+ id = random.randint(0, len(self.blurs)-1)
+ images = self.blur(images, id)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class RGBCompresion(object):
+ def __init__(self, prob=0.1, compression=(0, 50), **kwargs):
+ self.rgb_compress = iaa.Sequential(
+ [
+ iaa.JpegCompression(compression=compression),
+ ],
+ random_order=True,
+ )
+ self.prob = prob
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ if random.random() < self.prob:
+ images = self.rgb_compress(images=images)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class RGB2BGR(object):
+ # Converts image from RGB order to BGR order, for model initialized from Caffe
+ def __init__(self, **kwargs):
+ return
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ for i, img in enumerate(images):
+ images[i] = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class BGR2RGB(object):
+ # Converts image from BGR order to RGB order, for model initialized from Pytorch
+ def __init__(self, **kwargs):
+ return
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ for i, img in enumerate(images):
+ images[i] = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+class PhotoMetricDistortion(object):
+ """Apply photometric distortion to image sequentially, every transformation
+ is applied with a probability of 0.5. The position of random contrast is in
+ second or second to last.
+ 1. random brightness
+ 2. random contrast (mode 0)
+ 3. convert color from BGR to HSV
+ 4. random saturation
+ 5. random hue
+ 6. convert color from HSV to BGR
+ 7. random contrast (mode 1)
+ Args:
+ brightness_delta (int): delta of brightness.
+ contrast_range (tuple): range of contrast.
+ saturation_range (tuple): range of saturation.
+ hue_delta (int): delta of hue.
+ """
+
+ def __init__(self,
+ brightness_delta=32,
+ contrast_range=(0.5, 1.5),
+ saturation_range=(0.5, 1.5),
+ hue_delta=18,
+ to_gray_prob=0.3,
+ distortion_prob=0.3,
+ **kwargs):
+ self.brightness_delta = brightness_delta
+ self.contrast_lower, self.contrast_upper = contrast_range
+ self.saturation_lower, self.saturation_upper = saturation_range
+ self.hue_delta = hue_delta
+ self.gray_aug = iaa.Grayscale(alpha=(0.8, 1.0))
+ self.to_gray_prob = to_gray_prob
+ self.distortion_prob = distortion_prob
+
+ def convert(self, img, alpha=1.0, beta=0.0):
+ """Multiple with alpha and add beat with clip."""
+ img = img.astype(np.float32) * alpha + beta
+ img = np.clip(img, 0, 255)
+ return img.astype(np.uint8)
+
+ def brightness(self, img, beta, do):
+ """Brightness distortion."""
+ if do:
+ # beta = random.uniform(-self.brightness_delta,
+ # self.brightness_delta)
+ img = self.convert(
+ img,
+ beta=beta)
+ return img
+
+ def contrast(self, img, alpha, do):
+ """Contrast distortion."""
+ if do:
+ #alpha = random.uniform(self.contrast_lower, self.contrast_upper)
+ img = self.convert(
+ img,
+ alpha=alpha)
+ return img
+
+ def saturation(self, img, alpha, do):
+ """Saturation distortion."""
+ if do:
+ # alpha = random.uniform(self.saturation_lower,
+ # self.saturation_upper)
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
+ img[:, :, 1] = self.convert(
+ img[:, :, 1],
+ alpha=alpha)
+ img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
+ return img
+
+ def hue(self, img, rand_hue, do):
+ """Hue distortion."""
+ if do:
+ # rand_hue = random.randint(-self.hue_delta, self.hue_delta)
+ img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
+ img[:, :, 0] = (img[:, :, 0].astype(int) + rand_hue) % 180
+ img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
+ return img
+
+ def rgb2gray(self, img):
+ img = self.gray_aug(image=img)
+ return img
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ """Call function to perform photometric distortion on images.
+ Args:
+ results (dict): Result dict from loading pipeline.
+ Returns:
+ dict: Result dict with images distorted.
+ """
+ brightness_beta = random.uniform(-self.brightness_delta, self.brightness_delta)
+ brightness_do = random.random() < self.distortion_prob
+
+ contrast_alpha = random.uniform(self.contrast_lower, self.contrast_upper)
+ contrast_do = random.random() < self.distortion_prob
+
+ saturate_alpha = random.uniform(self.saturation_lower, self.saturation_upper)
+ saturate_do = random.random() < self.distortion_prob
+
+ rand_hue = random.randint(-self.hue_delta, self.hue_delta)
+ rand_hue_do = random.random() < self.distortion_prob
+
+ # mode == 0 --> do random contrast first
+ # mode == 1 --> do random contrast last
+ mode = 1 if random.random() > 0.5 else 2
+ for i, img in enumerate(images):
+ if random.random() < self.to_gray_prob:
+ img = self.rgb2gray(img)
+ else:
+ # random brightness
+ img = self.brightness(img, brightness_beta, brightness_do)
+
+ if mode == 1:
+ img = self.contrast(img, contrast_alpha, contrast_do)
+
+ # random saturation
+ img = self.saturation(img, saturate_alpha, saturate_do)
+
+ # random hue
+ img = self.hue(img, rand_hue, rand_hue_do)
+
+ # random contrast
+ if mode == 0:
+ img = self.contrast(img, contrast_alpha, contrast_do)
+ images[i] = img
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+class Weather(object):
+ """Apply the following weather augmentations to data.
+ Args:
+ prob (float): probability to enforce the weather augmentation.
+ """
+
+ def __init__(self,
+ prob=0.3,
+ **kwargs):
+ snow = iaa.FastSnowyLandscape(
+ lightness_threshold=[50, 100],
+ lightness_multiplier=(1.2, 2)
+ )
+ cloud = iaa.Clouds()
+ fog = iaa.Fog()
+ snow_flakes = iaa.Snowflakes(flake_size=(0.2, 0.4), speed=(0.001, 0.03)) #iaa.imgcorruptlike.Snow(severity=2)#
+ rain = iaa.Rain(speed=(0.1, 0.3), drop_size=(0.1, 0.3))
+ # rain_drops = RainDrop_Augmentor()
+ self.aug_list = [
+ snow, cloud, fog, snow_flakes, rain,
+ #wa.add_sun_flare, wa.darken, wa.random_brightness,
+ ]
+ self.prob = prob
+
+ def aug_with_weather(self, imgs, id):
+ weather = self.aug_list[id]
+ if id <5:
+ return weather(images=imgs)
+ else:
+ return weather(imgs)
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ """Call function to perform photometric distortion on images.
+ Args:
+ results (dict): Result dict from loading pipeline.
+ Returns:
+ dict: Result dict with images distorted.
+ """
+ if random.random() < self.prob:
+ select_id = np.random.randint(0, high=len(self.aug_list))
+ images = self.aug_with_weather(images, select_id)
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+def resize_depth_preserve(depth, shape):
+ """
+ Resizes depth map preserving all valid depth pixels
+ Multiple downsampled points can be assigned to the same pixel.
+
+ Parameters
+ ----------
+ depth : np.array [h,w]
+ Depth map
+ shape : tuple (H,W)
+ Output shape
+
+ Returns
+ -------
+ depth : np.array [H,W,1]
+ Resized depth map
+ """
+ # Store dimensions and reshapes to single column
+ depth = np.squeeze(depth)
+ h, w = depth.shape
+ x = depth.reshape(-1)
+ # Create coordinate grid
+ uv = np.mgrid[:h, :w].transpose(1, 2, 0).reshape(-1, 2)
+ # Filters valid points
+ idx = x > 0
+ crd, val = uv[idx], x[idx]
+ # Downsamples coordinates
+ crd[:, 0] = (crd[:, 0] * (shape[0] / h) + 0.5).astype(np.int32)
+ crd[:, 1] = (crd[:, 1] * (shape[1] / w) + 0.5).astype(np.int32)
+ # Filters points inside image
+ idx = (crd[:, 0] < shape[0]) & (crd[:, 1] < shape[1])
+ crd, val = crd[idx], val[idx]
+ # Creates downsampled depth image and assigns points
+ depth = np.zeros(shape)
+ depth[crd[:, 0], crd[:, 1]] = val
+ # Return resized depth map
+ return depth
+
+
+def gray_to_colormap(img, cmap='rainbow', max_value=None):
+ """
+ Transfer gray map to matplotlib colormap
+ """
+ assert img.ndim == 2
+
+ img[img<0] = 0
+ mask_invalid = img < 1e-10
+ if max_value == None:
+ img = img / (img.max() + 1e-8)
+ else:
+ img = img / (max_value + 1e-8)
+ norm = matplotlib.colors.Normalize(vmin=0, vmax=1.1)
+ cmap_m = matplotlib.cm.get_cmap(cmap)
+ map = matplotlib.cm.ScalarMappable(norm=norm, cmap=cmap_m)
+ colormap = (map.to_rgba(img)[:, :, :3] * 255).astype(np.uint8)
+ colormap[mask_invalid] = 0
+ return colormap
+
+
+class LiDarResizeCanonical(object):
+ """
+ Resize the input to the canonical space first, then resize the input with random sampled size.
+ In the first stage, we assume the distance holds while the camera model varies.
+ In the second stage, we aim to simulate the observation in different distance. The camera will move along the optical axis.
+ """
+ def __init__(self, **kwargs):
+ self.ratio_range = kwargs['ratio_range']
+ self.canonical_focal = kwargs['focal_length']
+ self.crop_size = kwargs['crop_size']
+
+ def random_on_canonical_transform(self, image, label, intrinsic, cam_model, to_random_ratio):
+ ori_h, ori_w, _ = image.shape
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2.0
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+ to_scale_ratio = to_random_ratio
+ resize_ratio = to_canonical_ratio * to_random_ratio
+ reshape_h = int(ori_h * resize_ratio + 0.5)
+ reshape_w = int(ori_w * resize_ratio + 0.5)
+
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ if intrinsic is not None:
+ intrinsic = [self.canonical_focal, self.canonical_focal, intrinsic[2]*resize_ratio, intrinsic[3]*resize_ratio]
+ if label is not None:
+ # number of other labels may be less than that of image
+ #label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ # scale the label and camera intrinsics
+ label = label / to_scale_ratio
+
+ if cam_model is not None:
+ # Should not directly resize the cam_model.
+ # Camera model should be resized in 'to canonical' stage, while it holds in 'random resizing' stage.
+ # cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ return image, label, intrinsic, cam_model, to_scale_ratio
+
+ def random_on_crop_transform(self, image, label, intrinsic, cam_model, to_random_ratio):
+ ori_h, ori_w, _ = image.shape
+ crop_h, crop_w = self.crop_size
+ ori_focal = (intrinsic[0] + intrinsic[1]) / 2.0
+
+ to_canonical_ratio = self.canonical_focal / ori_focal
+
+ # random resize based on the last crop size
+ proposal_reshape_h = int(crop_h * to_random_ratio + 0.5)
+ proposal_reshape_w = int(crop_w * to_random_ratio + 0.5)
+ resize_ratio_h = proposal_reshape_h / ori_h
+ resize_ratio_w = proposal_reshape_w / ori_w
+ resize_ratio = min(resize_ratio_h, resize_ratio_w) # resize based on the long edge
+ reshape_h = int(ori_h * resize_ratio + 0.5)
+ reshape_w = int(ori_w * resize_ratio + 0.5)
+
+ to_scale_ratio = resize_ratio / to_canonical_ratio
+
+ image = cv2.resize(image, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ if intrinsic is not None:
+ intrinsic = [self.canonical_focal, self.canonical_focal, intrinsic[2]*resize_ratio, intrinsic[3]*resize_ratio]
+ if label is not None:
+ # number of other labels may be less than that of image
+ # label = cv2.resize(label, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+ label = resize_depth_preserve(label, (reshape_h, reshape_w))
+ # scale the label and camera intrinsics
+ label = label / to_scale_ratio
+
+ if cam_model is not None:
+ # Should not directly resize the cam_model.
+ # Camera model should be resized in 'to canonical' stage, while it holds in 'random resizing' stage.
+ # cam_model = cv2.resize(cam_model, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_LINEAR)
+ cam_model = build_camera_model(reshape_h, reshape_w, intrinsic)
+ return image, label, intrinsic, cam_model, to_scale_ratio
+
+ def __call__(self, images, labels, intrinsics, cam_models=None, normals=None, other_labels=None, transform_paras=None):
+ assert len(images[0].shape) == 3 and len(labels[0].shape) == 2
+ assert labels[0].dtype == np.float
+ target_focal = (intrinsics[0][0] + intrinsics[0][1]) / 2.0
+ target_to_canonical_ratio = self.canonical_focal / target_focal
+ target_img_shape = images[0].shape
+ to_random_ratio = random.uniform(self.ratio_range[0], self.ratio_range[1])
+ to_scale_ratio = 0
+ for i in range(len(images)):
+ img = images[i]
+ label = labels[i] if i < len(labels) else None
+ intrinsic = intrinsics[i] if i < len(intrinsics) else None
+ cam_model = cam_models[i] if cam_models is not None and i < len(cam_models) else None
+ img, label, intrinsic, cam_model, to_scale_ratio = self.random_on_canonical_transform(
+ img, label, intrinsic, cam_model, to_random_ratio)
+
+ images[i] = img
+ if label is not None:
+ labels[i] = label
+ if intrinsic is not None:
+ intrinsics[i] = intrinsic
+ if cam_model is not None:
+ cam_models[i] = cam_model
+ if normals != None:
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, normal in enumerate(normals):
+ normals[i] = cv2.resize(normal, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+ if other_labels != None:
+ # other labels are like semantic segmentations, instance segmentations, instance planes segmentations...
+ # resize_ratio = target_to_canonical_ratio * to_random_ratio
+ # reshape_h = int(target_img_shape[0] * resize_ratio + 0.5)
+ # reshape_w = int(target_img_shape[1] * resize_ratio + 0.5)
+ reshape_h, reshape_w, _ = images[0].shape
+ for i, other_label_i in enumerate(other_labels):
+ other_labels[i] = cv2.resize(other_label_i, dsize=(reshape_w, reshape_h), interpolation=cv2.INTER_NEAREST)
+
+ if transform_paras is not None:
+ transform_paras.update(label_scale_factor = 1.0/to_scale_ratio)
+
+ return images, labels, intrinsics, cam_models, normals, other_labels, transform_paras
+
+
+
+def build_camera_model(H : int, W : int, intrinsics : list) -> np.array:
+ """
+ Encode the camera intrinsic parameters (focal length and principle point) to a 4-channel map.
+ """
+ fx, fy, u0, v0 = intrinsics
+ f = (fx + fy) / 2.0
+ # principle point location
+ x_row = np.arange(0, W).astype(np.float32)
+ x_row_center_norm = (x_row - u0) / W
+ x_center = np.tile(x_row_center_norm, (H, 1)) # [H, W]
+
+ y_col = np.arange(0, H).astype(np.float32)
+ y_col_center_norm = (y_col - v0) / H
+ y_center = np.tile(y_col_center_norm, (W, 1)).T
+
+ # FoV
+ fov_x = np.arctan(x_center / (f / W))
+ fov_y = np.arctan(y_center/ (f / H))
+
+ cam_model = np.stack([x_center, y_center, fov_x, fov_y], axis=2)
+ return cam_model
+
+
+if __name__ == '__main__':
+ img = cv2.imread('/mnt/mldb/raw/62b3ed3455e805efcb28c74b/NuScenes/data_test/samples/CAM_FRONT/n008-2018-08-01-15-34-25-0400__CAM_FRONT__1533152214512404.jpg', -1)
+ H, W, _ = img.shape
+ label = img[:, :, 0]
+ intrinsic = [1000, 1000, W//2, H//2]
+ for i in range(20):
+ weather_aug = Weather(prob=1.0)
+ img_aug, label, intrinsic, cam_model, ref_images, transform_paras = weather_aug([img, ], [label,], [intrinsic,])
+ cv2.imwrite(f'test_aug_{i}.jpg', img_aug[0])
+
+ print('Done')
diff --git a/finetune/Metric3D/training/mono/utils/unproj_pcd.py b/finetune/Metric3D/training/mono/utils/unproj_pcd.py
new file mode 100644
index 0000000000000000000000000000000000000000..6f2b67167c138a12884b36bdb18cc86cbdca2de6
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/unproj_pcd.py
@@ -0,0 +1,82 @@
+import numpy as np
+import torch
+from plyfile import PlyData, PlyElement
+import cv2
+
+def get_pcd_base(H, W, u0, v0, focal_length):
+ x_row = np.arange(0, W)
+ x = np.tile(x_row, (H, 1))
+ x = x.astype(np.float32)
+ u_m_u0 = x - u0
+
+ y_col = np.arange(0, H) # y_col = np.arange(0, height)
+ y = np.tile(y_col, (W, 1)).T
+ y = y.astype(np.float32)
+ v_m_v0 = y - v0
+
+ x = u_m_u0 / focal_length
+ y = v_m_v0 / focal_length
+ z = np.ones_like(x)
+ pw = np.stack([x, y, z], 2) # [h, w, c]
+ return pw
+
+def reconstruct_pcd(depth, focal_length, u0, v0, pcd_base=None, mask=None):
+ if type(depth) == torch.__name__:
+ depth = depth.cpu().numpy().squeeze()
+ depth = cv2.medianBlur(depth, 5)
+ if pcd_base is None:
+ H, W = depth.shape
+ pcd_base = get_pcd_base(H, W, u0, v0, focal_length)
+ pcd = depth[:, :, None] * pcd_base
+ if mask:
+ pcd[mask] = 0
+ return pcd
+
+
+def save_point_cloud(pcd, rgb, filename, binary=True):
+ """Save an RGB point cloud as a PLY file.
+ :paras
+ @pcd: Nx3 matrix, the XYZ coordinates
+ @rgb: NX3 matrix, the rgb colors for each 3D point
+ """
+ assert pcd.shape[0] == rgb.shape[0]
+
+ if rgb is None:
+ gray_concat = np.tile(np.array([128], dtype=np.uint8), (pcd.shape[0], 3))
+ points_3d = np.hstack((pcd, gray_concat))
+ else:
+ points_3d = np.hstack((pcd, rgb))
+ python_types = (float, float, float, int, int, int)
+ npy_types = [('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'),
+ ('blue', 'u1')]
+ if binary is True:
+ # Format into NumPy structured array
+ vertices = []
+ for row_idx in range(points_3d.shape[0]):
+ cur_point = points_3d[row_idx]
+ vertices.append(tuple(dtype(point) for dtype, point in zip(python_types, cur_point)))
+ vertices_array = np.array(vertices, dtype=npy_types)
+ el = PlyElement.describe(vertices_array, 'vertex')
+
+ # Write
+ PlyData([el]).write(filename)
+ else:
+ x = np.squeeze(points_3d[:, 0])
+ y = np.squeeze(points_3d[:, 1])
+ z = np.squeeze(points_3d[:, 2])
+ r = np.squeeze(points_3d[:, 3])
+ g = np.squeeze(points_3d[:, 4])
+ b = np.squeeze(points_3d[:, 5])
+
+ ply_head = 'ply\n' \
+ 'format ascii 1.0\n' \
+ 'element vertex %d\n' \
+ 'property float x\n' \
+ 'property float y\n' \
+ 'property float z\n' \
+ 'property uchar red\n' \
+ 'property uchar green\n' \
+ 'property uchar blue\n' \
+ 'end_header' % r.shape[0]
+ # ---- Save ply data to disk
+ np.savetxt(filename, np.column_stack((x, y, z, r, g, b)), fmt="%d %d %d %d %d %d", header=ply_head, comments='')
diff --git a/finetune/Metric3D/training/mono/utils/visualization.py b/finetune/Metric3D/training/mono/utils/visualization.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ed4c734981b416396c111fa0615bc0f4a6e8a7d
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/visualization.py
@@ -0,0 +1,209 @@
+import matplotlib.pyplot as plt
+import os, cv2
+import numpy as np
+from mono.utils.transform import gray_to_colormap
+import shutil
+import glob
+from mono.utils.running import main_process
+import torch
+from html4vision import Col, imagetable
+
+def save_raw_imgs(
+ pred: torch.tensor,
+ rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ scale: float=1000.0,
+ target: torch.tensor=None,
+ ):
+ """
+ Save raw GT, predictions, RGB in the same file.
+ """
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_rgb.jpg'), rgb)
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_gt.png'), (pred*scale).astype(np.uint16))
+ if target is not None:
+ cv2.imwrite(os.path.join(save_dir, filename[:-4]+'_gt.png'), (target*scale).astype(np.uint16))
+
+def save_normal_val_imgs(
+ iter: int,
+ pred: torch.tensor,
+ #targ: torch.tensor,
+ #rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ tb_logger=None,
+ mask=None,
+ ):
+ """
+ Save GT, predictions, RGB in the same file.
+ """
+ mean = np.array([123.675, 116.28, 103.53])[np.newaxis, np.newaxis, :]
+ std= np.array([58.395, 57.12, 57.375])[np.newaxis, np.newaxis, :]
+ pred = pred.squeeze()
+
+ # if pred.size(0) == 3:
+ # pred = pred.permute(1,2,0)
+ # pred_color = vis_surface_normal(pred, mask)
+
+ # #save one image only
+ # plt.imsave(os.path.join(save_dir, filename[:-4]+'.jpg'), pred_color)
+
+ targ = targ.squeeze()
+ rgb = rgb.squeeze()
+
+ if pred.size(0) == 3:
+ pred = pred.permute(1,2,0)
+ if targ.size(0) == 3:
+ targ = targ.permute(1,2,0)
+ if rgb.size(0) == 3:
+ rgb = rgb.permute(1,2,0)
+
+ pred_color = vis_surface_normal(pred, mask)
+ targ_color = vis_surface_normal(targ, mask)
+ rgb_color = ((rgb.cpu().numpy() * std) + mean).astype(np.uint8)
+
+ try:
+ cat_img = np.concatenate([rgb_color, pred_color, targ_color], axis=0)
+ except:
+ pred_color = cv2.resize(pred_color, (rgb.shape[1], rgb.shape[0]))
+ targ_color = cv2.resize(targ_color, (rgb.shape[1], rgb.shape[0]))
+ cat_img = np.concatenate([rgb_color, pred_color, targ_color], axis=0)
+
+ plt.imsave(os.path.join(save_dir, filename[:-4]+'_merge.jpg'), cat_img)
+ # cv2.imwrite(os.path.join(save_dir, filename[:-4]+'.jpg'), pred_color)
+ # save to tensorboard
+ if tb_logger is not None:
+ tb_logger.add_image(f'{filename[:-4]}_merge.jpg', cat_img.transpose((2, 0, 1)), iter)
+
+
+
+
+def save_val_imgs(
+ iter: int,
+ pred: torch.tensor,
+ target: torch.tensor,
+ rgb: torch.tensor,
+ filename: str,
+ save_dir: str,
+ tb_logger=None
+ ):
+ """
+ Save GT, predictions, RGB in the same file.
+ """
+ rgb, pred_scale, target_scale, pred_color, target_color, max_scale = get_data_for_log(pred, target, rgb)
+ rgb = rgb.transpose((1, 2, 0))
+ # plt.imsave(os.path.join(save_dir, filename[:-4]+'_rgb.jpg'), rgb)
+ # plt.imsave(os.path.join(save_dir, filename[:-4]+'_pred.png'), pred_scale, cmap='rainbow')
+ # plt.imsave(os.path.join(save_dir, filename[:-4]+'_gt.png'), target_scale, cmap='rainbow')
+ cat_img = np.concatenate([rgb, pred_color, target_color], axis=0)
+ plt.imsave(os.path.join(save_dir, filename[:-4]+'_merge.jpg'), cat_img)
+
+ # save to tensorboard
+ if tb_logger is not None:
+ # tb_logger.add_image(f'{filename[:-4]}_rgb.jpg', rgb, iter)
+ # tb_logger.add_image(f'{filename[:-4]}_pred.jpg', gray_to_colormap(pred_scale).transpose((2, 0, 1)), iter)
+ # tb_logger.add_image(f'{filename[:-4]}_gt.jpg', gray_to_colormap(target_scale).transpose((2, 0, 1)), iter)
+ tb_logger.add_image(f'{filename[:-4]}_merge.jpg', cat_img.transpose((2, 0, 1)), iter)
+ return max_scale
+
+def get_data_for_log(pred: torch.tensor, target: torch.tensor, rgb: torch.tensor):
+ mean = np.array([123.675, 116.28, 103.53])[:, np.newaxis, np.newaxis]
+ std= np.array([58.395, 57.12, 57.375])[:, np.newaxis, np.newaxis]
+
+ pred = pred.squeeze().cpu().numpy()
+ target = target.squeeze().cpu().numpy()
+ rgb = rgb.squeeze().cpu().numpy()
+
+ pred[pred<0] = 0
+ target[target<0] = 0
+ #max_scale = max(pred.max(), target.max())
+ max_scale = min(2.0 * target.max(), pred.max())
+ pred[pred > max_scale] = max_scale
+
+ pred_scale = (pred/max_scale * 10000).astype(np.uint16)
+ target_scale = (target/max_scale * 10000).astype(np.uint16)
+ pred_color = gray_to_colormap(pred, max_value=max_scale)
+ target_color = gray_to_colormap(target, max_value=max_scale)
+
+ dilate = True
+ if dilate == True:
+ k=np.ones((3,3),np.uint8)
+ target_color=cv2.dilate(target_color,k,iterations=1)
+
+ pred_color = cv2.resize(pred_color, (rgb.shape[2], rgb.shape[1]))
+ target_color = cv2.resize(target_color, (rgb.shape[2], rgb.shape[1]))
+
+ rgb = ((rgb * std) + mean).astype(np.uint8)
+ return rgb, pred_scale, target_scale, pred_color, target_color, max_scale
+
+
+def create_html(name2path, save_path='index.html', size=(256, 384)):
+ # table description
+ cols = []
+ for k, v in name2path.items():
+ col_i = Col('img', k, v) # specify image content for column
+ cols.append(col_i)
+ # html table generation
+ imagetable(cols, out_file=save_path, imsize=size)
+
+
+def visual_train_data(gt_depth, rgb, filename, wkdir, replace=False, pred=None):
+ gt_depth = gt_depth.cpu().squeeze().numpy()
+ rgb = rgb.cpu().squeeze().numpy()
+
+ mean = np.array([123.675, 116.28, 103.53])[:, np.newaxis, np.newaxis]
+ std= np.array([58.395, 57.12, 57.375])[:, np.newaxis, np.newaxis]
+ mask = gt_depth > 0
+
+ rgb = ((rgb * std) + mean).astype(np.uint8).transpose((1, 2, 0))
+ gt_vis = gray_to_colormap(gt_depth)
+ if replace:
+ rgb[mask] = gt_vis[mask]
+
+ if pred is not None:
+ pred_depth = pred.detach().cpu().squeeze().numpy()
+ pred_vis = gray_to_colormap(pred_depth)
+
+ merge = np.concatenate([rgb, gt_vis, pred_vis], axis=0)
+
+ save_path = os.path.join(wkdir, 'test_train', filename)
+ os.makedirs(os.path.dirname(save_path), exist_ok=True)
+ plt.imsave(save_path, merge)
+
+
+def create_dir_for_validate_meta(work_dir, iter_id):
+ curr_folders = glob.glob(work_dir + '/online_val/*0')
+ curr_folders = [i for i in curr_folders if os.path.isdir(i)]
+ if len(curr_folders) > 8:
+ curr_folders.sort()
+ del_foler = curr_folders.pop(0)
+ print(del_foler)
+ if main_process():
+ # only rank==0 do it
+ if os.path.exists(del_foler):
+ shutil.rmtree(del_foler)
+ if os.path.exists(del_foler + '.html'):
+ os.remove(del_foler + '.html')
+
+ save_val_meta_data_dir = os.path.join(work_dir, 'online_val', '%08d'%iter_id)
+ os.makedirs(save_val_meta_data_dir, exist_ok=True)
+ return save_val_meta_data_dir
+
+
+def vis_surface_normal(normal: torch.tensor, mask: torch.tensor=None) -> np.array:
+ """
+ Visualize surface normal. Transfer surface normal value from [-1, 1] to [0, 255]
+ Aargs:
+ normal (torch.tensor, [h, w, 3]): surface normal
+ mask (torch.tensor, [h, w]): valid masks
+ """
+ normal = normal.cpu().numpy().squeeze()
+ n_img_L2 = np.sqrt(np.sum(normal ** 2, axis=2, keepdims=True))
+ n_img_norm = normal / (n_img_L2 + 1e-8)
+ normal_vis = n_img_norm * 127
+ normal_vis += 128
+ normal_vis = normal_vis.astype(np.uint8)
+ if mask is not None:
+ mask = mask.cpu().numpy().squeeze()
+ normal_vis[~mask] = 0
+ return normal_vis
\ No newline at end of file
diff --git a/finetune/Metric3D/training/mono/utils/weather_aug_utils.py b/finetune/Metric3D/training/mono/utils/weather_aug_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec4aa31a666878782f75fed7868436a7b9c08332
--- /dev/null
+++ b/finetune/Metric3D/training/mono/utils/weather_aug_utils.py
@@ -0,0 +1,872 @@
+
+# import glob
+import cv2 as cv2
+import numpy as np
+# import matplotlib.pyplot as plt
+import random
+import math
+
+
+###################### HLS #############################
+
+def hls(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_HLS=[]
+ image_list=image
+ for img in image_list:
+ eval('image_HLS.append(cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2HLS))')
+ else:
+ image_HLS = eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2HLS)')
+ return image_HLS
+
+def hue(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_Hue=[]
+ image_list=image
+ for img in image_list:
+ image_Hue.append(hls(img,src)[:,:,0])
+ else:
+ image_Hue= hls(image,src)[:,:,0]
+ return image_Hue
+
+def lightness(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_lightness=[]
+ image_list=image
+ for img in image_list:
+ image_lightness.append(hls(img,src)[:,:,1])
+ else:
+ image_lightness= hls(image,src)[:,:,1]
+ return image_lightness
+
+def saturation(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_saturation=[]
+ image_list=image
+ for img in image_list:
+ image_saturation.append(hls(img,src)[:,:,2])
+ else:
+ image_saturation= hls(image,src)[:,:,2]
+ return image_saturation
+
+###################### HSV #############################
+
+def hsv(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_HSV=[]
+ image_list=image
+ for img in image_list:
+ eval('image_HSV.append(cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2HSV))')
+ else:
+ image_HSV = eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2HSV)')
+ return image_HSV
+
+def value(image,src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_value=[]
+ image_list=image
+ for img in image_list:
+ image_value.append(hsv(img,src)[:,:,2])
+ else:
+ image_value= hsv(image,src)[:,:,2]
+ return image_value
+
+###################### BGR #############################
+
+def bgr(image, src='RGB'):
+ verify_image(image)
+ if(is_list(image)):
+ image_BGR=[]
+ image_list=image
+ for img in image_list:
+ eval('image_BGR.append(cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2BGR))')
+ else:
+ image_BGR= eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2BGR)')
+ return image_BGR
+
+###################### RGB #############################
+def rgb(image, src='BGR'):
+ verify_image(image)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ eval('image_RGB.append(cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2RGB))')
+ else:
+ image_RGB= eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2RGB)')
+ return image_RGB
+
+def red(image,src='BGR'):
+ verify_image(image)
+ if(is_list(image)):
+ image_red=[]
+ image_list=image
+ for img in image_list:
+ i= eval('cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2RGB)')
+ image_red.append(i[:,:,0])
+ else:
+ image_red= eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2RGB)[:,:,0]')
+ return image_red
+
+def green(image,src='BGR'):
+ verify_image(image)
+ if(is_list(image)):
+ image_green=[]
+ image_list=image
+ for img in image_list:
+ i= eval('cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2RGB)')
+ image_green.append(i[:,:,1])
+ else:
+ image_green= eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2RGB)[:,:,1]')
+ return image_green
+
+def blue(image,src='BGR'):
+ verify_image(image)
+ if(is_list(image)):
+ image_blue=[]
+ image_list=image
+ for img in image_list:
+ i=eval('cv2.cvtColor(img,cv2.COLOR_'+src.upper()+'2RGB)')
+ image_blue.append(i[:,:,2])
+ else:
+ image_blue= eval('cv2.cvtColor(image,cv2.COLOR_'+src.upper()+'2RGB)[:,:,2]')
+ return image_blue
+
+err_not_np_img= "not a numpy array or list of numpy array"
+err_img_arr_empty="Image array is empty"
+err_row_zero="No. of rows can't be <=0"
+err_column_zero="No. of columns can't be <=0"
+err_invalid_size="Not a valid size tuple (x,y)"
+err_caption_array_count="Caption array length doesn't matches the image array length"
+
+def is_numpy_array(x):
+
+ return isinstance(x, np.ndarray)
+def is_tuple(x):
+ return type(x) is tuple
+def is_list(x):
+ return type(x) is list
+def is_numeric(x):
+ return type(x) is int
+def is_numeric_list_or_tuple(x):
+ for i in x:
+ if not is_numeric(i):
+ return False
+ return True
+
+err_brightness_coeff="brightness coeff can only be between 0.0 to 1.0"
+err_darkness_coeff="darkness coeff can only be between 0.0 to 1.0"
+
+def change_light(image, coeff):
+ image_HLS = cv2.cvtColor(image,cv2.COLOR_RGB2HLS) ## Conversion to HLS
+ image_HLS = np.array(image_HLS, dtype = np.float64)
+ image_HLS[:,:,1] = image_HLS[:,:,1]*coeff ## scale pixel values up or down for channel 1(Lightness)
+ if(coeff>1):
+ image_HLS[:,:,1][image_HLS[:,:,1]>255] = 255 ##Sets all values above 255 to 255
+ else:
+ image_HLS[:,:,1][image_HLS[:,:,1]<0]=0
+ image_HLS = np.array(image_HLS, dtype = np.uint8)
+ image_RGB = cv2.cvtColor(image_HLS,cv2.COLOR_HLS2RGB) ## Conversion to RGB
+ return image_RGB
+
+def verify_image(image):
+ if is_numpy_array(image):
+ pass
+ elif(is_list(image)):
+ image_list=image
+ for img in image_list:
+ if not is_numpy_array(img):
+ raise Exception(err_not_np_img)
+ else:
+ raise Exception(err_not_np_img)
+
+def brighten(image, brightness_coeff=-1): ##function to brighten the image
+ verify_image(image)
+ if(brightness_coeff!=-1):
+ if(brightness_coeff<0.0 or brightness_coeff>1.0):
+ raise Exception(err_brightness_coeff)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ if(brightness_coeff==-1):
+ brightness_coeff_t=1+ random.uniform(0,1) ## coeff between 1.0 and 1.5
+ else:
+ brightness_coeff_t=1+ brightness_coeff ## coeff between 1.0 and 2.0
+ image_RGB.append(change_light(img,brightness_coeff_t))
+ else:
+ if(brightness_coeff==-1):
+ brightness_coeff_t=1+ random.uniform(0,1) ## coeff between 1.0 and 1.5
+ else:
+ brightness_coeff_t=1+ brightness_coeff ## coeff between 1.0 and 2.0
+ image_RGB= change_light(image,brightness_coeff_t)
+ return image_RGB
+
+def darken(image, darkness_coeff=-1): ##function to darken the image
+ verify_image(image)
+ if(darkness_coeff!=-1):
+ if(darkness_coeff<0.0 or darkness_coeff>1.0):
+ raise Exception(err_darkness_coeff)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ if(darkness_coeff==-1):
+ darkness_coeff_t=1- random.uniform(0,1)
+ else:
+ darkness_coeff_t=1- darkness_coeff
+ image_RGB.append(change_light(img,darkness_coeff_t))
+ else:
+ if(darkness_coeff==-1):
+ darkness_coeff_t=1- random.uniform(0,1)
+ else:
+ darkness_coeff_t=1- darkness_coeff
+ image_RGB= change_light(image,darkness_coeff_t)
+ return image_RGB
+
+
+def random_brightness(image):
+ verify_image(image)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ random_brightness_coefficient = 2* np.random.uniform(0,1) ## generates value between 0.0 and 2.0
+ image_RGB.append(change_light(img,random_brightness_coefficient))
+ else:
+ random_brightness_coefficient = 2* np.random.uniform(0,1) ## generates value between 0.0 and 2.0
+ image_RGB= change_light(image,random_brightness_coefficient)
+ return image_RGB
+
+err_shadow_count="only 1-10 shadows can be introduced in an image"
+err_invalid_rectangular_roi="Rectangular ROI dimensions are not valid"
+err_shadow_dimension="polygons with dim<3 dont exist and >10 take time to plot"
+
+def generate_shadow_coordinates(imshape, no_of_shadows, rectangular_roi, shadow_dimension):
+ vertices_list=[]
+ x1=rectangular_roi[0]
+ y1=rectangular_roi[1]
+ x2=rectangular_roi[2]
+ y2=rectangular_roi[3]
+ for index in range(no_of_shadows):
+ vertex=[]
+ for dimensions in range(shadow_dimension): ## Dimensionality of the shadow polygon
+ vertex.append((random.randint(x1, x2),random.randint(y1, y2)))
+ vertices = np.array([vertex], dtype=np.int32) ## single shadow vertices
+ vertices_list.append(vertices)
+ return vertices_list ## List of shadow vertices
+
+def shadow_process(image,no_of_shadows,x1,y1,x2,y2, shadow_dimension):
+ image_HLS = cv2.cvtColor(image,cv2.COLOR_RGB2HLS) ## Conversion to HLS
+ mask = np.zeros_like(image)
+ imshape = image.shape
+ vertices_list= generate_shadow_coordinates(imshape, no_of_shadows,(x1,y1,x2,y2), shadow_dimension) #3 getting list of shadow vertices
+ for vertices in vertices_list:
+ cv2.fillPoly(mask, vertices, 255) ## adding all shadow polygons on empty mask, single 255 denotes only red channel
+ image_HLS[:,:,1][mask[:,:,0]==255] = image_HLS[:,:,1][mask[:,:,0]==255]*0.5 ## if red channel is hot, image's "Lightness" channel's brightness is lowered
+ image_RGB = cv2.cvtColor(image_HLS,cv2.COLOR_HLS2RGB) ## Conversion to RGB
+ return image_RGB
+
+def add_shadow(image,no_of_shadows=1,rectangular_roi=(-1,-1,-1,-1), shadow_dimension=5):## ROI:(top-left x1,y1, bottom-right x2,y2), shadow_dimension=no. of sides of polygon generated
+ verify_image(image)
+ if not(is_numeric(no_of_shadows) and no_of_shadows>=1 and no_of_shadows<=10):
+ raise Exception(err_shadow_count)
+ if not(is_numeric(shadow_dimension) and shadow_dimension>=3 and shadow_dimension<=10):
+ raise Exception(err_shadow_dimension)
+ if is_tuple(rectangular_roi) and is_numeric_list_or_tuple(rectangular_roi) and len(rectangular_roi)==4:
+ x1=rectangular_roi[0]
+ y1=rectangular_roi[1]
+ x2=rectangular_roi[2]
+ y2=rectangular_roi[3]
+ else:
+ raise Exception(err_invalid_rectangular_roi)
+ if rectangular_roi==(-1,-1,-1,-1):
+ x1=0
+
+ if(is_numpy_array(image)):
+ y1=image.shape[0]//2
+ x2=image.shape[1]
+ y2=image.shape[0]
+ else:
+ y1=image[0].shape[0]//2
+ x2=image[0].shape[1]
+ y2=image[0].shape[0]
+
+ elif x1==-1 or y1==-1 or x2==-1 or y2==-1 or x2<=x1 or y2<=y1:
+ raise Exception(err_invalid_rectangular_roi)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ output=shadow_process(img,no_of_shadows,x1,y1,x2,y2, shadow_dimension)
+ image_RGB.append(output)
+ else:
+ output=shadow_process(image,no_of_shadows,x1,y1,x2,y2, shadow_dimension)
+ image_RGB = output
+
+ return image_RGB
+
+err_snow_coeff="Snow coeff can only be between 0 and 1"
+def snow_process(image,snow_coeff):
+ image_HLS = cv2.cvtColor(image,cv2.COLOR_RGB2HLS) ## Conversion to HLS
+ image_HLS = np.array(image_HLS, dtype = np.float64)
+ brightness_coefficient = 2.5
+ imshape = image.shape
+ snow_point=snow_coeff ## increase this for more snow
+ image_HLS[:,:,1][image_HLS[:,:,1]255] = 255 ##Sets all values above 255 to 255
+ image_HLS = np.array(image_HLS, dtype = np.uint8)
+ image_RGB = cv2.cvtColor(image_HLS,cv2.COLOR_HLS2RGB) ## Conversion to RGB
+ return image_RGB
+
+def add_snow(image, snow_coeff=-1):
+ verify_image(image)
+ if(snow_coeff!=-1):
+ if(snow_coeff<0.0 or snow_coeff>1.0):
+ raise Exception(err_snow_coeff)
+ else:
+ snow_coeff=random.uniform(0,1)
+ snow_coeff*=255/2
+ snow_coeff+=255/3
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ output= snow_process(img,snow_coeff)
+ image_RGB.append(output)
+ else:
+ output= snow_process(image,snow_coeff)
+ image_RGB=output
+
+ return image_RGB
+
+err_rain_slant="Numeric value between -20 and 20 is allowed"
+err_rain_width="Width value between 1 and 5 is allowed"
+err_rain_length="Length value between 0 and 100 is allowed"
+def generate_random_lines(imshape,slant,drop_length,rain_type):
+ drops=[]
+ area=imshape[0]*imshape[1]
+ no_of_drops=area//600
+
+ if rain_type.lower()=='drizzle':
+ no_of_drops=area//770
+ drop_length=10
+ elif rain_type.lower()=='heavy':
+ drop_length=30
+ elif rain_type.lower()=='torrential':
+ no_of_drops=area//500
+ drop_length=60
+
+ for i in range(no_of_drops): ## If You want heavy rain, try increasing this
+ if slant<0:
+ x= np.random.randint(slant,imshape[1])
+ else:
+ x= np.random.randint(0,imshape[1]-slant)
+ y= np.random.randint(0,imshape[0]-drop_length)
+ drops.append((x,y))
+ return drops,drop_length
+
+def rain_process(image,slant,drop_length,drop_color,drop_width,rain_drops):
+ imshape = image.shape
+ image_t= image.copy()
+ for rain_drop in rain_drops:
+ cv2.line(image_t,(rain_drop[0],rain_drop[1]),(rain_drop[0]+slant,rain_drop[1]+drop_length),drop_color,drop_width)
+ image= cv2.blur(image_t,(7,7)) ## rainy view are blurry
+ brightness_coefficient = 0.7 ## rainy days are usually shady
+ image_HLS = hls(image) ## Conversion to HLS
+ image_HLS[:,:,1] = image_HLS[:,:,1]*brightness_coefficient ## scale pixel values down for channel 1(Lightness)
+ image_RGB= rgb(image_HLS,'hls') ## Conversion to RGB
+ return image_RGB
+
+##rain_type='drizzle','heavy','torrential'
+def add_rain(image,slant=-1,drop_length=20,drop_width=1,drop_color=(200,200,200),rain_type='None'): ## (200,200,200) a shade of gray
+ verify_image(image)
+ slant_extreme=slant
+ if not(is_numeric(slant_extreme) and (slant_extreme>=-20 and slant_extreme<=20)or slant_extreme==-1):
+ raise Exception(err_rain_slant)
+ if not(is_numeric(drop_width) and drop_width>=1 and drop_width<=5):
+ raise Exception(err_rain_width)
+ if not(is_numeric(drop_length) and drop_length>=0 and drop_length<=100):
+ raise Exception(err_rain_length)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ imshape = image[0].shape
+ if slant_extreme==-1:
+ slant= np.random.randint(-10,10) ##generate random slant if no slant value is given
+ rain_drops,drop_length= generate_random_lines(imshape,slant,drop_length,rain_type)
+ for img in image_list:
+ output= rain_process(img,slant_extreme,drop_length,drop_color,drop_width,rain_drops)
+ image_RGB.append(output)
+ else:
+ imshape = image.shape
+ if slant_extreme==-1:
+ slant= np.random.randint(-10,10) ##generate random slant if no slant value is given
+ rain_drops,drop_length= generate_random_lines(imshape,slant,drop_length,rain_type)
+ output= rain_process(image,slant_extreme,drop_length,drop_color,drop_width,rain_drops)
+ image_RGB=output
+
+ return image_RGB
+
+err_fog_coeff="Fog coeff can only be between 0 and 1"
+def add_blur(image, x,y,hw,fog_coeff):
+ overlay= image.copy()
+ output= image.copy()
+ alpha= 0.08*fog_coeff
+ rad= hw//2
+ point=(x+hw//2, y+hw//2)
+ cv2.circle(overlay,point, int(rad), (255,255,255), -1)
+ cv2.addWeighted(overlay, alpha, output, 1 -alpha ,0, output)
+ return output
+
+def generate_random_blur_coordinates(imshape,hw):
+ blur_points=[]
+ midx= imshape[1]//2-2*hw
+ midy= imshape[0]//2-hw
+ index=1
+ while(midx>-hw or midy>-hw):
+ for i in range(hw//10*index):
+ x= np.random.randint(midx,imshape[1]-midx-hw)
+ y= np.random.randint(midy,imshape[0]-midy-hw)
+ blur_points.append((x,y))
+ midx-=3*hw*imshape[1]//sum(imshape)
+ midy-=3*hw*imshape[0]//sum(imshape)
+ index+=1
+ return blur_points
+
+def add_fog(image, fog_coeff=-1):
+ verify_image(image)
+
+ if(fog_coeff!=-1):
+ if(fog_coeff<0.0 or fog_coeff>1.0):
+ raise Exception(err_fog_coeff)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ imshape = image[0].shape
+
+ for img in image_list:
+ if fog_coeff==-1:
+ fog_coeff_t=random.uniform(0.3,1)
+ else:
+ fog_coeff_t=fog_coeff
+ hw=int(imshape[1]//3*fog_coeff_t)
+ haze_list= generate_random_blur_coordinates(imshape,hw)
+ for haze_points in haze_list:
+ img= add_blur(img, haze_points[0],haze_points[1], hw,fog_coeff_t) ## adding all shadow polygons on empty mask, single 255 denotes only red channel
+ img = cv2.blur(img ,(hw//10,hw//10))
+ image_RGB.append(img)
+ else:
+ imshape = image.shape
+ if fog_coeff==-1:
+ fog_coeff_t=random.uniform(0.3,1)
+ else:
+ fog_coeff_t=fog_coeff
+ hw=int(imshape[1]//3*fog_coeff_t)
+ haze_list= generate_random_blur_coordinates(imshape,hw)
+ for haze_points in haze_list:
+ image= add_blur(image, haze_points[0],haze_points[1], hw,fog_coeff_t)
+ image = cv2.blur(image ,(hw//10,hw//10))
+ image_RGB = image
+
+ return image_RGB
+
+def generate_gravel_patch(rectangular_roi):
+ x1=rectangular_roi[0]
+ y1=rectangular_roi[1]
+ x2=rectangular_roi[2]
+ y2=rectangular_roi[3]
+ gravels=[]
+ area= abs((x2-x1)*(y2-y1))
+ for i in range((int)(area//10)):
+ x= np.random.randint(x1,x2)
+ y= np.random.randint(y1,y2)
+ gravels.append((x,y))
+ return gravels
+
+def gravel_process(image,x1,x2,y1,y2,no_of_patches):
+ x=image.shape[1]
+ y=image.shape[0]
+ rectangular_roi_default=[]
+ for i in range(no_of_patches):
+ xx1=random.randint(x1, x2)
+ xx2=random.randint(x1, xx1)
+ yy1=random.randint(y1, y2)
+ yy2=random.randint(y1, yy1)
+ rectangular_roi_default.append((xx2,yy2,min(xx1,xx2+200),min(yy1,yy2+30)))
+ img_hls=hls(image)
+ for roi in rectangular_roi_default:
+ gravels= generate_gravel_patch(roi)
+ for gravel in gravels:
+ x=gravel[0]
+ y=gravel[1]
+ r=random.randint(1, 4)
+ r1=random.randint(0, 255)
+ img_hls[max(y-r,0):min(y+r,y),max(x-r,0):min(x+r,x),1]=r1
+ image_RGB= rgb(img_hls,'hls')
+ return image_RGB
+
+def add_gravel(image,rectangular_roi=(-1,-1,-1,-1), no_of_patches=8):
+ verify_image(image)
+ if is_tuple(rectangular_roi) and is_numeric_list_or_tuple(rectangular_roi) and len(rectangular_roi)==4:
+ x1=rectangular_roi[0]
+ y1=rectangular_roi[1]
+ x2=rectangular_roi[2]
+ y2=rectangular_roi[3]
+ else:
+ raise Exception(err_invalid_rectangular_roi)
+ if rectangular_roi==(-1,-1,-1,-1):
+ if(is_numpy_array(image)):
+ x1=0
+ y1=int(image.shape[0]*3/4)
+ x2=image.shape[1]
+ y2=image.shape[0]
+ else:
+ x1=0
+ y1=int(image[0].shape[0]*3/4)
+ x2=image[0].shape[1]
+ y2=image[0].shape[0]
+ elif x1==-1 or y1==-1 or x2==-1 or y2==-1 or x2<=x1 or y2<=y1:
+ raise Exception(err_invalid_rectangular_roi)
+ color=[0,255]
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ output= gravel_process(img,x1,x2,y1,y2,no_of_patches)
+ image_RGB.append(output)
+ else:
+ output= gravel_process(image,x1,x2,y1,y2,no_of_patches)
+ image_RGB= output
+ return image_RGB
+
+err_flare_circle_count="Numeric value between 0 and 20 is allowed"
+def flare_source(image, point,radius,src_color):
+ overlay= image.copy()
+ output= image.copy()
+ num_times=radius//10
+ alpha= np.linspace(0.0,1,num= num_times)
+ rad= np.linspace(1,radius, num=num_times)
+ for i in range(num_times):
+ cv2.circle(overlay,point, int(rad[i]), src_color, -1)
+ alp=alpha[num_times-i-1]*alpha[num_times-i-1]*alpha[num_times-i-1]
+ cv2.addWeighted(overlay, alp, output, 1 -alp ,0, output)
+ return output
+
+def add_sun_flare_line(flare_center,angle,imshape):
+ x=[]
+ y=[]
+ i=0
+ for rand_x in range(0,imshape[1],10):
+ rand_y= math.tan(angle)*(rand_x-flare_center[0])+flare_center[1]
+ x.append(rand_x)
+ y.append(2*flare_center[1]-rand_y)
+ return x,y
+
+def add_sun_process(image, no_of_flare_circles,flare_center,src_radius,x,y,src_color):
+ overlay= image.copy()
+ output= image.copy()
+ imshape=image.shape
+ for i in range(no_of_flare_circles):
+ alpha=random.uniform(0.05,0.2)
+ r=random.randint(0, len(x)-1)
+ rad=random.randint(1, imshape[0]//100-2)
+ cv2.circle(overlay,(int(x[r]),int(y[r])), rad*rad*rad, (random.randint(max(src_color[0]-50,0), src_color[0]),random.randint(max(src_color[1]-50,0), src_color[1]),random.randint(max(src_color[2]-50,0), src_color[2])), -1)
+ cv2.addWeighted(overlay, alpha, output, 1 - alpha,0, output)
+ output= flare_source(output,(int(flare_center[0]),int(flare_center[1])),src_radius,src_color)
+ return output
+
+def add_sun_flare(image,flare_center=-1, angle=-1, no_of_flare_circles=8,src_radius=400, src_color=(255,255,255)):
+ verify_image(image)
+ if(angle!=-1):
+ angle=angle%(2*math.pi)
+ if not(no_of_flare_circles>=0 and no_of_flare_circles<=20):
+ raise Exception(err_flare_circle_count)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ imshape=image_list[0].shape
+ for img in image_list:
+ if(angle==-1):
+ angle_t=random.uniform(0,2*math.pi)
+ if angle_t==math.pi/2:
+ angle_t=0
+ else:
+ angle_t=angle
+ if flare_center==-1:
+ flare_center_t=(random.randint(0,imshape[1]),random.randint(0,imshape[0]//2))
+ else:
+ flare_center_t=flare_center
+ x,y= add_sun_flare_line(flare_center_t,angle_t,imshape)
+ output= add_sun_process(img, no_of_flare_circles,flare_center_t,src_radius,x,y,src_color)
+ image_RGB.append(output)
+ else:
+ imshape=image.shape
+ if(angle==-1):
+ angle_t=random.uniform(0,2*math.pi)
+ if angle_t==math.pi/2:
+ angle_t=0
+ else:
+ angle_t=angle
+ if flare_center==-1:
+ flare_center_t=(random.randint(0,imshape[1]),random.randint(0,imshape[0]//2))
+ else:
+ flare_center_t=flare_center
+ x,y= add_sun_flare_line(flare_center_t,angle_t,imshape)
+ output= add_sun_process(image, no_of_flare_circles,flare_center_t,src_radius,x,y,src_color)
+ image_RGB = output
+ return image_RGB
+
+err_speed_coeff="Speed coeff can only be between 0 and 1"
+def apply_motion_blur(image,count):
+ image_t=image.copy()
+ imshape=image_t.shape
+ size=15
+ kernel_motion_blur = np.zeros((size, size))
+ kernel_motion_blur[int((size-1)/2), :] = np.ones(size)
+ kernel_motion_blur = kernel_motion_blur / size
+ i= imshape[1]*3//4 - 10*count
+ while(i<=imshape[1]):
+ image_t[:,i:,:] = cv2.filter2D(image_t[:,i:,:], -1, kernel_motion_blur)
+ image_t[:,:imshape[1]-i,:] = cv2.filter2D(image_t[:,:imshape[1]-i,:], -1, kernel_motion_blur)
+ i+=imshape[1]//25-count
+ count+=1
+ image_RGB=image_t
+ return image_RGB
+
+def add_speed(image, speed_coeff=-1):
+ verify_image(image)
+ if(speed_coeff !=-1):
+ if(speed_coeff<0.0 or speed_coeff>1.0):
+ raise Exception(err_speed_coeff)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ if(speed_coeff==-1):
+ count_t=int(15*random.uniform(0,1))
+ else:
+ count_t=int(15*speed_coeff)
+ img=apply_motion_blur(img,count_t)
+ image_RGB.append(img)
+ else:
+ if(speed_coeff==-1):
+ count_t=int(15*random.uniform(0,1))
+ else:
+ count_t=int(15*speed_coeff)
+ image_RGB= apply_motion_blur(image,count_t)
+
+
+ return image_RGB
+
+
+
+def autumn_process(image):
+ image_t=image.copy()
+ imshape=image_t.shape
+ image_hls= hls(image_t)
+ step=8
+ aut_colors=[1,5,9,11]
+ col= aut_colors[random.randint(0,3)]
+ for i in range(0,imshape[1],step):
+ for j in range(0,imshape[0],step):
+ avg=np.average(image_hls[j:j+step,i:i+step,0])
+# print(avg)
+ if(avg >20 and avg< 100 and np.average(image[j:j+step,i:i+step,1])<100):
+ image_hls[j:j+step,i:i+step,0]= col
+ image_hls[j:j+step,i:i+step,2]=255
+ return rgb(image_hls,'hls')
+
+
+def add_autumn(image):
+ verify_image(image)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+
+ img=autumn_process(img)
+ image_RGB.append(img)
+ else:
+ image=autumn_process(image)
+ image_RGB= image
+
+ return image_RGB
+
+def fliph(image): ##function to flip the image on horizontal axis
+ verify_image(image)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ image_RGB.append(cv2.flip(img,0))
+ else:
+ image_RGB= cv2.flip(image,0)
+ return image_RGB
+
+def flipv(image): ##function to flip the image on vertical axis
+ verify_image(image)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ image_RGB.append(cv2.flip(img,1))
+ else:
+ image_RGB= cv2.flip(image,1)
+ return image_RGB
+
+def random_flip(image): ##function to flip the image on horizontal axis
+ verify_image(image)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ p= random.uniform(0,1)
+ if(p>0.5):
+ image_RGB.append(cv2.flip(img,0))
+ else:
+ image_RGB.append(cv2.flip(img,1))
+ else:
+ p= random.uniform(0,1)
+ if(p>0.5):
+ image_RGB=cv2.flip(image,0)
+ else:
+ image_RGB=cv2.flip(image,1)
+ return image_RGB
+
+def manhole_process(image,center,height,width,src_color=(0,0,0)):
+ overlay= image.copy()
+ output= image.copy()
+# cv2.ellipse(overlay, center =center,box=None,color =src_color)
+ cv2.ellipse(overlay, center, (width,height), 0, 0, 360, src_color, -1)
+# cv2.circle(overlay, center, radius, src_color, -1)
+ alp=1
+ cv2.addWeighted(overlay, alp, output, 1 -alp ,0, output)
+ return output
+
+err_invalid_center_manhole="center should be in the format (x,y)"
+err_invalid_height_width_manhole="height and width should be positive integers."
+def add_manhole(image,center=-1,color=(120,120,120),height=1,width=1, type='closed'): ##function to flip the image on horizontal axis
+ verify_image(image)
+
+ if(center!=-1):
+ if not(is_tuple(center) and is_numeric_list_or_tuple(center) and len(center)==2):
+ raise Exception(err_invalid_center_manhole)
+ if not (is_numeric(height) and is_numeric(width) and height>0 and width>0):
+ raise Exception(err_invalid_height_width_manhole)
+ if color==(120,120,120):
+ if type=='closed':
+ color=(67,70,75)
+ elif type=='open':
+ color=(0,0,0)
+
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ height_t=height
+ width_t=width
+ center_t=center
+ if height==1:
+ height_t=img.shape[0]//25
+ if width==1:
+ width_t=int(img.shape[0]*3//25)
+ if center==-1:
+ center_t= (img.shape[0]-100, img.shape[1]//2)
+ image_RGB.append(manhole_process(img,center_t,height_t,width_t,color))
+ else:
+ height_t=height
+ width_t=width
+ center_t=center
+ if height==1:
+ height_t=image.shape[0]//25
+ if width==1:
+ width_t=int(image.shape[0]*3//25)
+ if center==-1:
+ center= (image.shape[0]-100, image.shape[1]//2)
+ image_RGB= manhole_process(image,center_t,height_t,width_t,color)
+ return image_RGB
+
+def exposure_process(image):
+ image= np.copy(image)
+ img_yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
+ clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(4,4))
+ ones= np.ones(img_yuv[:,:,0].shape)
+ ones[img_yuv[:,:,0]>150]= 0.85
+ img_yuv[:,:,0]= img_yuv[:,:,0]*ones
+
+ img_yuv[:,:,0] = clahe.apply(img_yuv[:,:,0])
+ img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
+ img_yuv[:,:,0] = clahe.apply(img_yuv[:,:,0])
+
+ image_res = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)
+ image_res= cv2.fastNlMeansDenoisingColored(image_res,None,3,3,7,21)
+ return image_res
+
+def correct_exposure(image):
+ verify_image(image)
+ if(is_list(image)):
+ image_RGB=[]
+ image_list=image
+ for img in image_list:
+ image_RGB.append(exposure_process(img))
+ else:
+ image_RGB= exposure_process(image)
+ return image_RGB
+
+err_aug_type='wrong augmentation function is defined'
+err_aug_list_type='aug_types should be a list of string function names'
+err_aug_volume='volume type can only be "same" or "expand"'
+def augment_random(image, aug_types="", volume='expand' ):
+
+ aug_types_all=["random_brightness","add_shadow","add_snow","add_rain","add_fog","add_gravel","add_sun_flare","add_speed","add_autumn","random_flip","add_manhole"]
+ if aug_types=="":
+ aug_types=aug_types_all
+ output=[]
+ if not(is_list(aug_types)):
+ raise Exception(err_aug_list_type)
+
+ if volume=='expand':
+ for aug_type in aug_types:
+
+ if not(aug_type in aug_types_all):
+ raise Exception(err_aug_type)
+ command=aug_type+'(image)'
+ result=eval(command)
+ if(is_list(result)):
+ output+=result
+ else:
+ output.append(result)
+ elif volume=='same':
+ verify_image(image)
+ for aug_type in aug_types:
+ if not(aug_type in aug_types_all):
+ raise Exception(err_aug_type)
+ if(is_list(image)):
+ image_list=image
+ for img in image_list:
+ selected_aug=aug_types[random.randint(0,len(aug_types)-1)]
+ command=selected_aug+'(img)'
+ output.append(eval(command))
+ else:
+ selected_aug=aug_types[random.randint(0,len(aug_types)-1)]
+ command=selected_aug+'(image)'
+ output=eval(command)
+
+ else:
+ raise Exception(err_aug_volume)
+
+ return output
\ No newline at end of file
diff --git a/finetune/Metric3D/weight/placeholder.txt b/finetune/Metric3D/weight/placeholder.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/finetune/Metric3D/weight/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" "b/finetune/Metric3D/weight/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/finetune/accelerate_config.yaml b/finetune/accelerate_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..dfd41048c4d0bc53666a3793c0c25ae88ecd6850
--- /dev/null
+++ b/finetune/accelerate_config.yaml
@@ -0,0 +1,14 @@
+compute_environment: LOCAL_MACHINE
+deepspeed_config:
+ deepspeed_multinode_launcher: standard
+ deepspeed_config_file: "configs/zero2.yaml"
+distributed_type: DEEPSPEED
+downcast_bf16: no
+machine_rank: 0
+main_training_function: main
+rdzv_backend: static
+same_network: true
+tpu_env: []
+tpu_use_cluster: false
+tpu_use_sudo: false
+use_cpu: false
diff --git a/finetune/accelerate_train.sh b/finetune/accelerate_train.sh
new file mode 100644
index 0000000000000000000000000000000000000000..12d94d6ee4e0cae33a33b0e6761c28b2526a08b7
--- /dev/null
+++ b/finetune/accelerate_train.sh
@@ -0,0 +1,129 @@
+export TOKENIZERS_PARALLELISM=false
+
+WORKSPACE=$(dirname "$0")
+cd $WORKSPACE
+
+ACCELERATE_CONFIG_FILE=${WORKSPACE}/accelerate_config.yaml
+
+PRETRAINED_MODEL_DIR=$(dirname "$0")/pretrained
+
+DATA_ROOT=$(dirname "$0")/data/RealCam-Vid
+
+SPLIT=train
+
+
+CHECKPOINT_DIR=$(dirname "$0")/checkpoints
+EXPERIMENT_NAME=RealCam-I2V
+SUB_EXPERIMENT_NAME=CogVideoX1.5-5B-ControlNetXs
+LOG_DIR=${CHECKPOINT_DIR}/${EXPERIMENT_NAME}/${SUB_EXPERIMENT_NAME}
+mkdir -p ${LOG_DIR}
+export WANDB_DIR=${LOG_DIR}
+
+# Model Configuration
+MODEL_ARGS=(
+ --model_path ${PRETRAINED_MODEL_DIR}/CogVideoX1.5-5B-I2V
+ --model_name "cogvideox1.5-i2v"
+ --model_type "i2v"
+ --training_type "controlnetxs"
+ --time_sampling_type "truncated_normal"
+ --time_sampling_mean 0.8
+ --time_sampling_type 0.075
+ --keep_aspect_ratio
+)
+
+# Output Configuration
+OUTPUT_ARGS=(
+ --output_dir $LOG_DIR
+ --report_to "wandb"
+ --tracker_name $EXPERIMENT_NAME
+ --sub_tracker_name $SUB_EXPERIMENT_NAME
+)
+
+# Training Configuration
+TRAIN_ARGS=(
+ --train_steps 50000
+ --batch_size 1
+ --gradient_accumulation_steps 1
+ --learning_rate 4e-5
+ --weight_decay 1e-4
+ --mixed_precision "bf16" # ["no", "fp16"]
+ --gradient_checkpointing
+ --enable_slicing
+ --enable_tiling
+ --seed 42
+)
+
+# System Configuration
+SYSTEM_ARGS=(
+ --num_workers 4
+ --pin_memory
+ --nccl_timeout 1800
+)
+
+# Checkpointing Configuration
+CHECKPOINT_ARGS=(
+ --checkpointing_steps 100
+ --checkpointing_limit 100
+)
+
+# Validation Configuration
+VALIDATION_ARGS=(
+ --do_validation
+ --validation_dir ${CHECKPOINT_DIR}
+ --validation_steps 100
+ --validation_prompts "prompts.txt"
+ --validation_images "images.txt"
+ --gen_fps 8
+)
+
+# extract video latents of 81x256x448 ; "768//3 x 1360//3 "
+DATA_ARGS=(
+ --data_root ${DATA_ROOT}
+ --cache_root $(dirname "$0")/data/cache
+ --metadata_path RealCam-Vid_new_${SPLIT}.npz
+ --enable_align_factor
+)
+
+# distribution args for multi-node
+DIST_ARGS=(
+ --config_file $ACCELERATE_CONFIG_FILE
+ --num_machines $HOST_NUM
+ --num_processes $NODE_NUM
+ --machine_rank $INDEX
+ --main_process_ip $CHIEF_IP
+ --main_process_port 29500
+)
+
+accelerate launch "${DIST_ARGS[@]}" train.py \
+ "${MODEL_ARGS[@]}" \
+ "${OUTPUT_ARGS[@]}" \
+ "${DATA_ARGS[@]}" \
+ "${TRAIN_ARGS[@]}" \
+ "${SYSTEM_ARGS[@]}" \
+ "${CHECKPOINT_ARGS[@]}" \
+ "${VALIDATION_ARGS[@]}" \
+ --train_resolution "81x768x1360" \
+ --precompute
+
+# Optional for landscape/portrait joint training
+# accelerate launch "${DIST_ARGS[@]}" train.py \
+# "${MODEL_ARGS[@]}" \
+# "${OUTPUT_ARGS[@]}" \
+# "${DATA_ARGS[@]}" \
+# "${TRAIN_ARGS[@]}" \
+# "${SYSTEM_ARGS[@]}" \
+# "${CHECKPOINT_ARGS[@]}" \
+# "${VALIDATION_ARGS[@]}" \
+# --train_resolution "81x1360x768" \
+# --precompute
+
+accelerate launch ${DIST_ARGS[@]} train.py \
+ ${MODEL_ARGS[@]} \
+ ${OUTPUT_ARGS[@]} \
+ ${DATA_ARGS[@]} \
+ ${TRAIN_ARGS[@]} \
+ ${SYSTEM_ARGS[@]} \
+ ${CHECKPOINT_ARGS[@]} \
+ ${VALIDATION_ARGS[@]} \
+ --train_resolution "81x768x1360" \
+ # --allow_switch_hw
diff --git a/finetune/checkpoints/put_checkpoints_here b/finetune/checkpoints/put_checkpoints_here
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/finetune/configs/zero2.yaml b/finetune/configs/zero2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..84072361d3d3dd7ffa8a297432c2cba6638e63fd
--- /dev/null
+++ b/finetune/configs/zero2.yaml
@@ -0,0 +1,36 @@
+{
+ "bf16": {
+ "enabled": true
+ },
+ "optimizer": {
+ "type": "AdamW",
+ "params": {
+ "lr": "auto",
+ "weight_decay": "auto",
+ "torch_adam": true,
+ "adam_w_mode": true
+ }
+ },
+ "scheduler": {
+ "type": "WarmupLR",
+ "params": {
+ "warmup_num_steps": 200,
+ "warmup_max_lr": "auto"
+ }
+ },
+ "zero_optimization": {
+ "stage": 2,
+ "allgather_partitions": true,
+ "allgather_bucket_size": 2e8,
+ "overlap_comm": true,
+ "reduce_scatter": true,
+ "reduce_bucket_size": 5e8,
+ "contiguous_gradients": true
+ },
+ "gradient_accumulation_steps": "auto",
+ "train_micro_batch_size_per_gpu": "auto",
+ "train_batch_size": "auto",
+ "gradient_clipping": "auto",
+ "steps_per_print": 2000,
+ "wall_clock_breakdown": false
+}
\ No newline at end of file
diff --git a/finetune/configs/zero2_offload.yaml b/finetune/configs/zero2_offload.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..29a7dafa567aba6492bcf4a2337b91ea4316a39f
--- /dev/null
+++ b/finetune/configs/zero2_offload.yaml
@@ -0,0 +1,42 @@
+{
+ "bf16": {
+ "enabled": true
+ },
+ "optimizer": {
+ "type": "AdamW",
+ "params": {
+ "lr": "auto",
+ "weight_decay": "auto",
+ "torch_adam": true,
+ "adam_w_mode": true
+ }
+ },
+ "scheduler": {
+ "type": "WarmupDecayLR",
+ "params": {
+ "warmup_min_lr": "auto",
+ "warmup_max_lr": "auto",
+ "warmup_num_steps": "auto",
+ "total_num_steps": "auto"
+ }
+ },
+ "zero_optimization": {
+ "stage": 2,
+ "allgather_partitions": true,
+ "allgather_bucket_size": 2e8,
+ "overlap_comm": true,
+ "reduce_scatter": true,
+ "reduce_bucket_size": 5e8,
+ "contiguous_gradients": true,
+ "offload_optimizer": {
+ "device": "cpu",
+ "pin_memory": true
+ }
+ },
+ "gradient_accumulation_steps": "auto",
+ "train_micro_batch_size_per_gpu": "auto",
+ "train_batch_size": "auto",
+ "gradient_clipping": "auto",
+ "steps_per_print": 2000,
+ "wall_clock_breakdown": false
+}
\ No newline at end of file
diff --git a/finetune/configs/zero3.yaml b/finetune/configs/zero3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..542702c23251cc5472954af279045cc36fedae9e
--- /dev/null
+++ b/finetune/configs/zero3.yaml
@@ -0,0 +1,43 @@
+{
+ "bf16": {
+ "enabled": true
+ },
+ "optimizer": {
+ "type": "AdamW",
+ "params": {
+ "lr": "auto",
+ "weight_decay": "auto",
+ "torch_adam": true,
+ "adam_w_mode": true
+ }
+ },
+ "scheduler": {
+ "type": "WarmupDecayLR",
+ "params": {
+ "warmup_min_lr": "auto",
+ "warmup_max_lr": "auto",
+ "warmup_num_steps": 100,
+ "total_num_steps": "auto"
+ }
+ },
+ "zero_optimization": {
+ "stage": 3,
+ "overlap_comm": true,
+ "contiguous_gradients": true,
+ "reduce_bucket_size": 5e8,
+ "stage3_prefetch_bucket_size": "auto",
+ "stage3_param_persistence_threshold": "auto",
+ "sub_group_size": 1e9,
+ "stage3_max_live_parameters": 1e9,
+ "stage3_max_reuse_distance": 1e9,
+ "stage3_gather_16bit_weights_on_model_save": "auto",
+ "stage3_prefetch_bucket_size": 5e8,
+ "stage3_param_persistence_threshold": 1e5
+ },
+ "gradient_accumulation_steps": "auto",
+ "train_micro_batch_size_per_gpu": "auto",
+ "train_batch_size": "auto",
+ "gradient_clipping": "auto",
+ "steps_per_print": 2000,
+ "wall_clock_breakdown": false
+}
\ No newline at end of file
diff --git a/finetune/configs/zero3_offload.yaml b/finetune/configs/zero3_offload.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..085581bcc6e993bd9202175537b6c459d90d754c
--- /dev/null
+++ b/finetune/configs/zero3_offload.yaml
@@ -0,0 +1,51 @@
+{
+ "bf16": {
+ "enabled": true
+ },
+ "optimizer": {
+ "type": "AdamW",
+ "params": {
+ "lr": "auto",
+ "weight_decay": "auto",
+ "torch_adam": true,
+ "adam_w_mode": true
+ }
+ },
+ "scheduler": {
+ "type": "WarmupDecayLR",
+ "params": {
+ "warmup_min_lr": "auto",
+ "warmup_max_lr": "auto",
+ "warmup_num_steps": "auto",
+ "total_num_steps": "auto"
+ }
+ },
+ "zero_optimization": {
+ "stage": 3,
+ "offload_optimizer": {
+ "device": "cpu",
+ "pin_memory": true
+ },
+ "offload_param": {
+ "device": "cpu",
+ "pin_memory": true
+ },
+ "overlap_comm": true,
+ "contiguous_gradients": true,
+ "reduce_bucket_size": 5e8,
+ "stage3_prefetch_bucket_size": "auto",
+ "stage3_param_persistence_threshold": "auto",
+ "sub_group_size": 1e9,
+ "stage3_max_live_parameters": 1e9,
+ "stage3_max_reuse_distance": 1e9,
+ "stage3_gather_16bit_weights_on_model_save": "auto",
+ "stage3_prefetch_bucket_size": 5e8,
+ "stage3_param_persistence_threshold": 1e6
+ },
+ "gradient_accumulation_steps": "auto",
+ "train_micro_batch_size_per_gpu": "auto",
+ "train_batch_size": "auto",
+ "gradient_clipping": "auto",
+ "steps_per_print": 2000,
+ "wall_clock_breakdown": false
+}
\ No newline at end of file
diff --git a/finetune/constants.py b/finetune/constants.py
new file mode 100644
index 0000000000000000000000000000000000000000..89dde585a03026fb562a8f43ad9ecbb2e778afcd
--- /dev/null
+++ b/finetune/constants.py
@@ -0,0 +1,2 @@
+LOG_NAME = "trainer"
+LOG_LEVEL = "INFO"
diff --git a/finetune/datasets/__init__.py b/finetune/datasets/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..25f24e1c5066cba423be875136a3faad74a996d5
--- /dev/null
+++ b/finetune/datasets/__init__.py
@@ -0,0 +1,12 @@
+from .bucket_sampler import BucketSampler
+from .i2v_dataset import I2VDatasetWithBuckets, I2VDatasetWithResize
+from .t2v_dataset import T2VDatasetWithBuckets, T2VDatasetWithResize
+
+
+__all__ = [
+ "I2VDatasetWithResize",
+ "I2VDatasetWithBuckets",
+ "T2VDatasetWithResize",
+ "T2VDatasetWithBuckets",
+ "BucketSampler",
+]
diff --git a/finetune/datasets/bucket_sampler.py b/finetune/datasets/bucket_sampler.py
new file mode 100644
index 0000000000000000000000000000000000000000..8bc1dde237db37f7f735d10f29a642e184a508e4
--- /dev/null
+++ b/finetune/datasets/bucket_sampler.py
@@ -0,0 +1,71 @@
+import logging
+import random
+
+from torch.utils.data import Dataset, Sampler
+
+
+logger = logging.getLogger(__name__)
+
+
+class BucketSampler(Sampler):
+ r"""
+ PyTorch Sampler that groups 3D data by height, width and frames.
+
+ Args:
+ data_source (`VideoDataset`):
+ A PyTorch dataset object that is an instance of `VideoDataset`.
+ batch_size (`int`, defaults to `8`):
+ The batch size to use for training.
+ shuffle (`bool`, defaults to `True`):
+ Whether or not to shuffle the data in each batch before dispatching to dataloader.
+ drop_last (`bool`, defaults to `False`):
+ Whether or not to drop incomplete buckets of data after completely iterating over all data
+ in the dataset. If set to True, only batches that have `batch_size` number of entries will
+ be yielded. If set to False, it is guaranteed that all data in the dataset will be processed
+ and batches that do not have `batch_size` number of entries will also be yielded.
+ """
+
+ def __init__(
+ self, data_source: Dataset, batch_size: int = 8, shuffle: bool = True, drop_last: bool = False
+ ) -> None:
+ self.data_source = data_source
+ self.batch_size = batch_size
+ self.shuffle = shuffle
+ self.drop_last = drop_last
+
+ self.buckets = {resolution: [] for resolution in data_source.video_resolution_buckets}
+
+ self._raised_warning_for_drop_last = False
+
+ def __len__(self):
+ if self.drop_last and not self._raised_warning_for_drop_last:
+ self._raised_warning_for_drop_last = True
+ logger.warning(
+ "Calculating the length for bucket sampler is not possible when `drop_last` is set to True. This may cause problems when setting the number of epochs used for training."
+ )
+ return (len(self.data_source) + self.batch_size - 1) // self.batch_size
+
+ def __iter__(self):
+ for index, data in enumerate(self.data_source):
+ video_metadata = data["video_metadata"]
+ f, h, w = video_metadata["num_frames"], video_metadata["height"], video_metadata["width"]
+
+ self.buckets[(f, h, w)].append(data)
+ if len(self.buckets[(f, h, w)]) == self.batch_size:
+ if self.shuffle:
+ random.shuffle(self.buckets[(f, h, w)])
+ yield self.buckets[(f, h, w)]
+ del self.buckets[(f, h, w)]
+ self.buckets[(f, h, w)] = []
+
+ if self.drop_last:
+ return
+
+ for fhw, bucket in list(self.buckets.items()):
+ if len(bucket) == 0:
+ continue
+ if self.shuffle:
+ random.shuffle(bucket)
+ yield bucket
+ del self.buckets[fhw]
+ self.buckets[fhw] = []
diff --git a/finetune/datasets/i2v_camera_dataset.py b/finetune/datasets/i2v_camera_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..e32cbc39290a36843f284c584ff6187abbcfd817
--- /dev/null
+++ b/finetune/datasets/i2v_camera_dataset.py
@@ -0,0 +1,386 @@
+import hashlib
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Dict, List, Tuple
+
+import torch
+from accelerate.logging import get_logger
+from safetensors.torch import load_file, save_file
+from torch.utils.data import Dataset
+from torchvision import transforms
+from typing_extensions import override
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+from .utils import (
+ load_images,
+ load_images_from_videos,
+ load_prompts,
+ load_videos,
+ preprocess_image_with_resize,
+ preprocess_video_with_buckets,
+ preprocess_video_with_resize,
+)
+
+if TYPE_CHECKING:
+ from finetune.trainer import Trainer
+
+# Must import after torch because this can sometimes lead to a nasty segmentation fault, or stack smashing error
+# Very few bug reports but it happens. Look in decord Github issues for more relevant information.
+import decord # isort:skip
+import numpy as np
+import os
+from finetune.utils.camera_utils import get_camera_condition
+
+decord.bridge.set_bridge("torch")
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+class BaseI2VDataset(Dataset):
+ """
+ Base dataset class for Image-to-Video (I2V) training.
+
+ This dataset loads prompts, videos and corresponding conditioning images for I2V training.
+
+ Args:
+ data_root (str): Root directory containing the dataset files
+ caption_column (str): Path to file containing text prompts/captions
+ video_column (str): Path to file containing video paths
+ image_column (str): Path to file containing image paths
+ device (torch.device): Device to load the data on
+ encode_video_fn (Callable[[torch.Tensor], torch.Tensor], optional): Function to encode videos
+ """
+
+ def __init__(
+ self,
+ data_root: str,
+ cache_root: str,
+ metadata_path: str,
+ enable_align_factor: bool,
+ device: torch.device = torch.device("cpu"),
+ trainer: "Trainer" = None,
+ *args,
+ **kwargs,
+ ) -> None:
+ super().__init__()
+
+ self.trainer = trainer
+ self.data_root = data_root
+ self.cache_root = cache_root
+ self.enable_align_factor = enable_align_factor
+
+ self.train_resolution_str = "x".join(str(x) for x in self.trainer.args.train_resolution)
+ self.video_latent_dir = cache_root / "video_latent" / self.trainer.args.model_name / self.train_resolution_str
+ self.prompt_embeddings_dir = cache_root / "prompt_embeddings"
+ self.video_latent_dir.mkdir(parents=True, exist_ok=True)
+ self.prompt_embeddings_dir.mkdir(parents=True, exist_ok=True)
+
+ self.all_metadata = np.load(os.path.join(data_root, metadata_path), allow_pickle=True)["arr_0"].tolist()
+ logger.info(f"Data Count (all): {len(self.all_metadata)}", main_process_only=True)
+
+ self.all_metadata = list(filter(lambda x: x['camera_extrinsics'].shape[0] > self.trainer.args.train_resolution[0], self.all_metadata))
+ logger.info(f"Data Count (num_frames > {self.trainer.args.train_resolution[0]}): {len(self.all_metadata)}", main_process_only=True)
+
+ logger.info(f"Data Count (final): {len(self.all_metadata)}", main_process_only=True)
+
+ self.device = device
+ self.encode_video = trainer.encode_video
+ self.encode_text = trainer.encode_text
+
+ def __len__(self) -> int:
+ return len(self.all_metadata)
+
+ def __getitem__(self, index: int) -> Dict[str, Any]:
+ if isinstance(index, list):
+ # Here, index is actually a list of data objects that we need to return.
+ # The BucketSampler should ideally return indices. But, in the sampler, we'd like
+ # to have information about num_frames, height and width. Since this is not stored
+ # as metadata, we need to read the video to get this information. You could read this
+ # information without loading the full video in memory, but we do it anyway. In order
+ # to not load the video twice (once to get the metadata, and once to return the loaded video
+ # based on sampled indices), we cache it in the BucketSampler. When the sampler is
+ # to yield, we yield the cache data instead of indices. So, this special check ensures
+ # that data is not loaded a second time. PRs are welcome for improvements.
+ return index
+
+ metadata = self.all_metadata[index % len(self.all_metadata)]
+ video_path = Path(os.path.join(self.data_root, metadata['video_path']))
+ image = load_images_from_videos([video_path])[0]
+ prompt: str = metadata['long_caption']
+ camera_extrinsics = torch.from_numpy(metadata['camera_extrinsics']) # [F, 4, 4]
+ fx, fy, cx, cy = metadata['camera_intrinsics']
+ camera_intrinsics = torch.tensor([
+ [fx, 0, cx],
+ [0, fy, cy],
+ [0, 0, 1]
+ ]) # 3x3) # [3, 3]
+ align_factor = metadata['align_factor'] if self.enable_align_factor else 1.0
+
+ prompt_hash = str(hashlib.sha256(prompt.encode()).hexdigest())
+ prompt_embedding_path = self.prompt_embeddings_dir / (prompt_hash + ".safetensors")
+ encoded_video_path = self.video_latent_dir / (video_path.stem + ".safetensors")
+
+ if prompt_embedding_path.exists():
+ prompt_embedding = load_file(prompt_embedding_path)["prompt_embedding"]
+ logger.debug(
+ f"process {self.trainer.accelerator.process_index}: Loaded prompt embedding from {prompt_embedding_path}",
+ main_process_only=False,
+ )
+ else:
+ prompt_embedding = self.encode_text(prompt)
+ prompt_embedding = prompt_embedding.to("cpu")
+ # [1, seq_len, hidden_size] -> [seq_len, hidden_size]
+ prompt_embedding = prompt_embedding[0]
+ try:
+ save_file({"prompt_embedding": prompt_embedding}, prompt_embedding_path)
+ except:
+ pass
+ logger.info(f"Saved prompt embedding to {prompt_embedding_path}", main_process_only=False)
+
+ (
+ frames,
+ image,
+ camera_extrinsics,
+ camera_intrinsics,
+ ) = self.preprocess(
+ video_path,
+ image,
+ camera_extrinsics,
+ camera_intrinsics,
+ self.trainer.args.use_precompute_video_latents,
+ )
+ H, W = frames.shape[-2:]
+ image = self.image_transform(image)
+ frames = self.video_transform(frames)
+ video = frames # F, C, H, W
+
+ if encoded_video_path.exists() and self.trainer.args.use_precompute_video_latents:
+ encoded_video = load_file(encoded_video_path)["encoded_video"]
+ logger.debug(f"Loaded encoded video from {encoded_video_path}", main_process_only=False)
+ else:
+ frames = frames.unsqueeze(0).permute(0, 2, 1, 3, 4).contiguous() # [F, C, H, W] -> [B, C, F, H, W], value in [-1,1]
+ encoded_video = self.encode_video(frames)
+ encoded_video = encoded_video[0].to("cpu") # [1, C, F, H, W] -> [C, F, H, W]
+ if self.trainer.args.precompute:
+ try:
+ save_file({"encoded_video": encoded_video}, encoded_video_path)
+ except:
+ pass
+ logger.info(f"Saved encoded video to {encoded_video_path}", main_process_only=False)
+
+ if not self.trainer.args.precompute:
+ # plucker embedding
+ cond_frame_index = torch.zeros(1, device=camera_extrinsics.device, dtype=torch.long)
+ plucker_embedding, relative_c2w_RT_4x4 = get_camera_condition( # B 6 F H W
+ H, W, camera_intrinsics.unsqueeze(0), camera_extrinsics.unsqueeze(0), mode="w2c",
+ cond_frame_index=cond_frame_index, align_factor=align_factor
+ ) # [B=1, C=6, F, H, W]
+ plucker_embedding = plucker_embedding[0].contiguous()
+ else:
+ plucker_embedding = None
+
+ ret = {
+ "image": image,
+ "prompt_embedding": prompt_embedding, # [C, H, W]
+ "prompt": prompt,
+ "video": video, # F, C, H, W
+ "encoded_video": encoded_video, # [C, F//4, H//8, W//8]
+ "plucker_embedding": plucker_embedding, # [B=1, C=6, F, H, W]
+ "video_metadata": {
+ "num_frames": encoded_video.shape[1],
+ "height": encoded_video.shape[2],
+ "width": encoded_video.shape[3],
+ },
+ }
+
+ return ret
+
+ def preprocess(self, video_path: Path | None, image_path: Path | None) -> Tuple[torch.Tensor, torch.Tensor]:
+ """
+ Loads and preprocesses a video and an image.
+ If either path is None, no preprocessing will be done for that input.
+
+ Args:
+ video_path: Path to the video file to load
+ image_path: Path to the image file to load
+
+ Returns:
+ A tuple containing:
+ - video(torch.Tensor) of shape [F, C, H, W] where F is number of frames,
+ C is number of channels, H is height and W is width
+ - image(torch.Tensor) of shape [C, H, W]
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ """
+ Applies transformations to a video.
+
+ Args:
+ frames (torch.Tensor): A 4D tensor representing a video
+ with shape [F, C, H, W] where:
+ - F is number of frames
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+
+ Returns:
+ torch.Tensor: The transformed video tensor
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ """
+ Applies transformations to an image.
+
+ Args:
+ image (torch.Tensor): A 3D tensor representing an image
+ with shape [C, H, W] where:
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+
+ Returns:
+ torch.Tensor: The transformed image tensor
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+
+class I2VDatasetWithResize(BaseI2VDataset):
+ """
+ A dataset class for image-to-video generation that resizes inputs to fixed dimensions.
+
+ This class preprocesses videos and images by resizing them to specified dimensions:
+ - Videos are resized to max_num_frames x height x width
+ - Images are resized to height x width
+
+ Args:
+ max_num_frames (int): Maximum number of frames to extract from videos
+ height (int): Target height for resizing videos and images
+ width (int): Target width for resizing videos and images
+ """
+
+ def __init__(self, max_num_frames: int, height: int, width: int, keep_aspect_ratio: bool, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+
+ self.max_num_frames = max_num_frames
+ self.height = height
+ self.width = width
+ self.keep_aspect_ratio = keep_aspect_ratio
+
+ self.__frame_transforms = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+ self.__image_transforms = self.__frame_transforms
+
+ def _resize_for_rectangle_crop(self, frames, H, W):
+ '''
+ :param frames: C,F,H,W
+ :param image_size: H,W
+ :return: frames: C,F,crop_H,crop_W; camera_intrinsics: F,3,3
+ '''
+ ori_H, ori_W = frames.shape[-2:]
+
+ # if ori_W / ori_H < 1.0:
+ # tmp_H, tmp_W = int(H), int(W)
+ # H, W = tmp_W, tmp_H
+
+ if ori_W / ori_H > W / H:
+ frames = transforms.functional.resize(
+ frames,
+ size=[H, int(ori_W * H / ori_H)],
+ )
+ else:
+ frames = transforms.functional.resize(
+ frames,
+ size=[int(ori_H * W / ori_W), W],
+ )
+
+ resized_H, resized_W = frames.shape[2], frames.shape[3]
+ frames = frames.squeeze(0)
+
+ delta_H = resized_H - H
+ delta_W = resized_W - W
+
+ top, left = delta_H // 2, delta_W // 2
+ frames = transforms.functional.crop(frames, top=top, left=left, height=H, width=W)
+
+ return frames, resized_H, resized_W
+
+ @override
+ def preprocess(self, video_path: Path | None, image_path: Path | None, camera_pose_4x4, camera_intrinsics, use_precompute_video_latents=True):
+ if video_path is not None:
+ video, indices = preprocess_video_with_resize(
+ video_path, self.max_num_frames, self.height, self.width,
+ keep_aspect_ratio=self.keep_aspect_ratio,
+ use_precompute_video_latents=use_precompute_video_latents
+ )
+ if self.keep_aspect_ratio:
+ video, resized_H, resized_W = self._resize_for_rectangle_crop(video, self.height, self.width)
+ else:
+ resized_H, resized_W = video.shape[-2:]
+
+ camera_pose_4x4 = camera_pose_4x4[indices]
+ camera_intrinsics = camera_intrinsics.clone()
+ cur_H, cur_W = video.shape[-2:]
+ camera_intrinsics[0, 0] *= resized_W
+ camera_intrinsics[0, 2] *= cur_W
+ camera_intrinsics[1, 1] *= resized_H
+ camera_intrinsics[1, 2] *= cur_H
+ camera_intrinsics = camera_intrinsics.unsqueeze(0).repeat(camera_pose_4x4.shape[0], 1, 1) # f,3,3
+ else:
+ video = None
+ if image_path is not None and use_precompute_video_latents:
+ image = preprocess_image_with_resize(image_path, self.height, self.width, keep_aspect_ratio=self.keep_aspect_ratio)
+ if self.keep_aspect_ratio:
+ image, resized_H, resized_W = self._resize_for_rectangle_crop(image.unsqueeze(0), self.height, self.width)
+ elif not use_precompute_video_latents:
+ image = video[0, :, :, :].clone()
+ else:
+ image = None
+
+ return video, image, camera_pose_4x4, camera_intrinsics
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transforms(f) for f in frames], dim=0)
+
+ @override
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ return self.__image_transforms(image)
+
+
+class I2VDatasetWithBuckets(BaseI2VDataset):
+ def __init__(
+ self,
+ video_resolution_buckets: List[Tuple[int, int, int]],
+ vae_temporal_compression_ratio: int,
+ vae_height_compression_ratio: int,
+ vae_width_compression_ratio: int,
+ *args,
+ **kwargs,
+ ) -> None:
+ super().__init__(*args, **kwargs)
+
+ self.video_resolution_buckets = [
+ (
+ int(b[0] / vae_temporal_compression_ratio),
+ int(b[1] / vae_height_compression_ratio),
+ int(b[2] / vae_width_compression_ratio),
+ )
+ for b in video_resolution_buckets
+ ]
+ self.__frame_transforms = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+ self.__image_transforms = self.__frame_transforms
+
+ @override
+ def preprocess(self, video_path: Path, image_path: Path) -> Tuple[torch.Tensor, torch.Tensor]:
+ video = preprocess_video_with_buckets(video_path, self.video_resolution_buckets)
+ image = preprocess_image_with_resize(image_path, video.shape[2], video.shape[3])
+ return video, image
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transforms(f) for f in frames], dim=0)
+
+ @override
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ return self.__image_transforms(image)
diff --git a/finetune/datasets/i2v_dataset.py b/finetune/datasets/i2v_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0db1e9fd42f185f589f55b09eca076bfcf1407f
--- /dev/null
+++ b/finetune/datasets/i2v_dataset.py
@@ -0,0 +1,311 @@
+import hashlib
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Dict, List, Tuple
+
+import torch
+from accelerate.logging import get_logger
+from safetensors.torch import load_file, save_file
+from torch.utils.data import Dataset
+from torchvision import transforms
+from typing_extensions import override
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+from .utils import (
+ load_images,
+ load_images_from_videos,
+ load_prompts,
+ load_videos,
+ preprocess_image_with_resize,
+ preprocess_video_with_buckets,
+ preprocess_video_with_resize,
+)
+
+
+if TYPE_CHECKING:
+ from finetune.trainer import Trainer
+
+# Must import after torch because this can sometimes lead to a nasty segmentation fault, or stack smashing error
+# Very few bug reports but it happens. Look in decord Github issues for more relevant information.
+import decord # isort:skip
+
+decord.bridge.set_bridge("torch")
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+class BaseI2VDataset(Dataset):
+ """
+ Base dataset class for Image-to-Video (I2V) training.
+
+ This dataset loads prompts, videos and corresponding conditioning images for I2V training.
+
+ Args:
+ data_root (str): Root directory containing the dataset files
+ caption_column (str): Path to file containing text prompts/captions
+ video_column (str): Path to file containing video paths
+ image_column (str): Path to file containing image paths
+ device (torch.device): Device to load the data on
+ encode_video_fn (Callable[[torch.Tensor], torch.Tensor], optional): Function to encode videos
+ """
+
+ def __init__(
+ self,
+ data_root: str,
+ caption_column: str,
+ video_column: str,
+ image_column: str | None,
+ device: torch.device,
+ trainer: "Trainer" = None,
+ *args,
+ **kwargs,
+ ) -> None:
+ super().__init__()
+
+ data_root = Path(data_root)
+ self.prompts = load_prompts(data_root / caption_column)
+ self.videos = load_videos(data_root / video_column)
+ if image_column is not None:
+ self.images = load_images(data_root / image_column)
+ else:
+ self.images = load_images_from_videos(self.videos)
+ self.trainer = trainer
+
+ self.device = device
+ self.encode_video = trainer.encode_video
+ self.encode_text = trainer.encode_text
+
+ # Check if number of prompts matches number of videos and images
+ if not (len(self.videos) == len(self.prompts) == len(self.images)):
+ raise ValueError(
+ f"Expected length of prompts, videos and images to be the same but found {len(self.prompts)=}, {len(self.videos)=} and {len(self.images)=}. Please ensure that the number of caption prompts, videos and images match in your dataset."
+ )
+
+ # Check if all video files exist
+ if any(not path.is_file() for path in self.videos):
+ raise ValueError(
+ f"Some video files were not found. Please ensure that all video files exist in the dataset directory. Missing file: {next(path for path in self.videos if not path.is_file())}"
+ )
+
+ # Check if all image files exist
+ if any(not path.is_file() for path in self.images):
+ raise ValueError(
+ f"Some image files were not found. Please ensure that all image files exist in the dataset directory. Missing file: {next(path for path in self.images if not path.is_file())}"
+ )
+
+ def __len__(self) -> int:
+ return len(self.videos)
+
+ def __getitem__(self, index: int) -> Dict[str, Any]:
+ if isinstance(index, list):
+ # Here, index is actually a list of data objects that we need to return.
+ # The BucketSampler should ideally return indices. But, in the sampler, we'd like
+ # to have information about num_frames, height and width. Since this is not stored
+ # as metadata, we need to read the video to get this information. You could read this
+ # information without loading the full video in memory, but we do it anyway. In order
+ # to not load the video twice (once to get the metadata, and once to return the loaded video
+ # based on sampled indices), we cache it in the BucketSampler. When the sampler is
+ # to yield, we yield the cache data instead of indices. So, this special check ensures
+ # that data is not loaded a second time. PRs are welcome for improvements.
+ return index
+
+ prompt = self.prompts[index]
+ video = self.videos[index]
+ image = self.images[index]
+ train_resolution_str = "x".join(str(x) for x in self.trainer.args.train_resolution)
+
+ cache_dir = self.trainer.args.data_root / "cache"
+ video_latent_dir = cache_dir / "video_latent" / self.trainer.args.model_name / train_resolution_str
+ prompt_embeddings_dir = cache_dir / "prompt_embeddings"
+ video_latent_dir.mkdir(parents=True, exist_ok=True)
+ prompt_embeddings_dir.mkdir(parents=True, exist_ok=True)
+
+ prompt_hash = str(hashlib.sha256(prompt.encode()).hexdigest())
+ prompt_embedding_path = prompt_embeddings_dir / (prompt_hash + ".safetensors")
+ encoded_video_path = video_latent_dir / (video.stem + ".safetensors")
+
+ if prompt_embedding_path.exists():
+ prompt_embedding = load_file(prompt_embedding_path)["prompt_embedding"]
+ logger.debug(
+ f"process {self.trainer.accelerator.process_index}: Loaded prompt embedding from {prompt_embedding_path}",
+ main_process_only=False,
+ )
+ else:
+ prompt_embedding = self.encode_text(prompt)
+ prompt_embedding = prompt_embedding.to("cpu")
+ # [1, seq_len, hidden_size] -> [seq_len, hidden_size]
+ prompt_embedding = prompt_embedding[0]
+ save_file({"prompt_embedding": prompt_embedding}, prompt_embedding_path)
+ logger.info(f"Saved prompt embedding to {prompt_embedding_path}", main_process_only=False)
+
+ if encoded_video_path.exists():
+ encoded_video = load_file(encoded_video_path)["encoded_video"]
+ logger.debug(f"Loaded encoded video from {encoded_video_path}", main_process_only=False)
+ # shape of image: [C, H, W]
+ _, image = self.preprocess(None, self.images[index])
+ image = self.image_transform(image)
+ else:
+ frames, image = self.preprocess(video, image)
+ frames = frames.to(self.device)
+ image = image.to(self.device)
+ image = self.image_transform(image)
+ # Current shape of frames: [F, C, H, W]
+ frames = self.video_transform(frames)
+
+ # Convert to [B, C, F, H, W]
+ frames = frames.unsqueeze(0)
+ frames = frames.permute(0, 2, 1, 3, 4).contiguous()
+ encoded_video = self.encode_video(frames)
+
+ # [1, C, F, H, W] -> [C, F, H, W]
+ encoded_video = encoded_video[0]
+ encoded_video = encoded_video.to("cpu")
+ image = image.to("cpu")
+ save_file({"encoded_video": encoded_video}, encoded_video_path)
+ logger.info(f"Saved encoded video to {encoded_video_path}", main_process_only=False)
+
+ # shape of encoded_video: [C, F, H, W]
+ # shape of image: [C, H, W]
+ return {
+ "image": image,
+ "prompt_embedding": prompt_embedding,
+ "encoded_video": encoded_video,
+ "video_metadata": {
+ "num_frames": encoded_video.shape[1],
+ "height": encoded_video.shape[2],
+ "width": encoded_video.shape[3],
+ },
+ }
+
+ def preprocess(self, video_path: Path | None, image_path: Path | None) -> Tuple[torch.Tensor, torch.Tensor]:
+ """
+ Loads and preprocesses a video and an image.
+ If either path is None, no preprocessing will be done for that input.
+
+ Args:
+ video_path: Path to the video file to load
+ image_path: Path to the image file to load
+
+ Returns:
+ A tuple containing:
+ - video(torch.Tensor) of shape [F, C, H, W] where F is number of frames,
+ C is number of channels, H is height and W is width
+ - image(torch.Tensor) of shape [C, H, W]
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ """
+ Applies transformations to a video.
+
+ Args:
+ frames (torch.Tensor): A 4D tensor representing a video
+ with shape [F, C, H, W] where:
+ - F is number of frames
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+
+ Returns:
+ torch.Tensor: The transformed video tensor
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ """
+ Applies transformations to an image.
+
+ Args:
+ image (torch.Tensor): A 3D tensor representing an image
+ with shape [C, H, W] where:
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+
+ Returns:
+ torch.Tensor: The transformed image tensor
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+
+class I2VDatasetWithResize(BaseI2VDataset):
+ """
+ A dataset class for image-to-video generation that resizes inputs to fixed dimensions.
+
+ This class preprocesses videos and images by resizing them to specified dimensions:
+ - Videos are resized to max_num_frames x height x width
+ - Images are resized to height x width
+
+ Args:
+ max_num_frames (int): Maximum number of frames to extract from videos
+ height (int): Target height for resizing videos and images
+ width (int): Target width for resizing videos and images
+ """
+
+ def __init__(self, max_num_frames: int, height: int, width: int, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+
+ self.max_num_frames = max_num_frames
+ self.height = height
+ self.width = width
+
+ self.__frame_transforms = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+ self.__image_transforms = self.__frame_transforms
+
+ @override
+ def preprocess(self, video_path: Path | None, image_path: Path | None) -> Tuple[torch.Tensor, torch.Tensor]:
+ if video_path is not None:
+ video = preprocess_video_with_resize(video_path, self.max_num_frames, self.height, self.width)
+ else:
+ video = None
+ if image_path is not None:
+ image = preprocess_image_with_resize(image_path, self.height, self.width)
+ else:
+ image = None
+ return video, image
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transforms(f) for f in frames], dim=0)
+
+ @override
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ return self.__image_transforms(image)
+
+
+class I2VDatasetWithBuckets(BaseI2VDataset):
+ def __init__(
+ self,
+ video_resolution_buckets: List[Tuple[int, int, int]],
+ vae_temporal_compression_ratio: int,
+ vae_height_compression_ratio: int,
+ vae_width_compression_ratio: int,
+ *args,
+ **kwargs,
+ ) -> None:
+ super().__init__(*args, **kwargs)
+
+ self.video_resolution_buckets = [
+ (
+ int(b[0] / vae_temporal_compression_ratio),
+ int(b[1] / vae_height_compression_ratio),
+ int(b[2] / vae_width_compression_ratio),
+ )
+ for b in video_resolution_buckets
+ ]
+ self.__frame_transforms = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+ self.__image_transforms = self.__frame_transforms
+
+ @override
+ def preprocess(self, video_path: Path, image_path: Path) -> Tuple[torch.Tensor, torch.Tensor]:
+ video = preprocess_video_with_buckets(video_path, self.video_resolution_buckets)
+ image = preprocess_image_with_resize(image_path, video.shape[2], video.shape[3])
+ return video, image
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transforms(f) for f in frames], dim=0)
+
+ @override
+ def image_transform(self, image: torch.Tensor) -> torch.Tensor:
+ return self.__image_transforms(image)
\ No newline at end of file
diff --git a/finetune/datasets/t2v_dataset.py b/finetune/datasets/t2v_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..d123ccf4a23eab9585187dfc6fa918fdbf403d7e
--- /dev/null
+++ b/finetune/datasets/t2v_dataset.py
@@ -0,0 +1,251 @@
+import hashlib
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Dict, List, Tuple
+
+import torch
+from accelerate.logging import get_logger
+from safetensors.torch import load_file, save_file
+from torch.utils.data import Dataset
+from torchvision import transforms
+from typing_extensions import override
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+from .utils import load_prompts, load_videos, preprocess_video_with_buckets, preprocess_video_with_resize
+
+
+if TYPE_CHECKING:
+ from finetune.trainer import Trainer
+
+# Must import after torch because this can sometimes lead to a nasty segmentation fault, or stack smashing error
+# Very few bug reports but it happens. Look in decord Github issues for more relevant information.
+import decord # isort:skip
+
+decord.bridge.set_bridge("torch")
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+class BaseT2VDataset(Dataset):
+ """
+ Base dataset class for Text-to-Video (T2V) training.
+
+ This dataset loads prompts and videos for T2V training.
+
+ Args:
+ data_root (str): Root directory containing the dataset files
+ caption_column (str): Path to file containing text prompts/captions
+ video_column (str): Path to file containing video paths
+ device (torch.device): Device to load the data on
+ encode_video_fn (Callable[[torch.Tensor], torch.Tensor], optional): Function to encode videos
+ """
+
+ def __init__(
+ self,
+ data_root: str,
+ caption_column: str,
+ video_column: str,
+ device: torch.device = None,
+ trainer: "Trainer" = None,
+ *args,
+ **kwargs,
+ ) -> None:
+ super().__init__()
+
+ data_root = Path(data_root)
+ self.prompts = load_prompts(data_root / caption_column)
+ self.videos = load_videos(data_root / video_column)
+ self.device = device
+ self.encode_video = trainer.encode_video
+ self.encode_text = trainer.encode_text
+ self.trainer = trainer
+
+ # Check if all video files exist
+ if any(not path.is_file() for path in self.videos):
+ raise ValueError(
+ f"Some video files were not found. Please ensure that all video files exist in the dataset directory. Missing file: {next(path for path in self.videos if not path.is_file())}"
+ )
+
+ # Check if number of prompts matches number of videos
+ if len(self.videos) != len(self.prompts):
+ raise ValueError(
+ f"Expected length of prompts and videos to be the same but found {len(self.prompts)=} and {len(self.videos)=}. Please ensure that the number of caption prompts and videos match in your dataset."
+ )
+
+ def __len__(self) -> int:
+ return len(self.videos)
+
+ def __getitem__(self, index: int) -> Dict[str, Any]:
+ if isinstance(index, list):
+ # Here, index is actually a list of data objects that we need to return.
+ # The BucketSampler should ideally return indices. But, in the sampler, we'd like
+ # to have information about num_frames, height and width. Since this is not stored
+ # as metadata, we need to read the video to get this information. You could read this
+ # information without loading the full video in memory, but we do it anyway. In order
+ # to not load the video twice (once to get the metadata, and once to return the loaded video
+ # based on sampled indices), we cache it in the BucketSampler. When the sampler is
+ # to yield, we yield the cache data instead of indices. So, this special check ensures
+ # that data is not loaded a second time. PRs are welcome for improvements.
+ return index
+
+ prompt = self.prompts[index]
+ video = self.videos[index]
+ train_resolution_str = "x".join(str(x) for x in self.trainer.args.train_resolution)
+
+ cache_dir = self.trainer.args.data_root / "cache"
+ video_latent_dir = cache_dir / "video_latent" / self.trainer.args.model_name / train_resolution_str
+ prompt_embeddings_dir = cache_dir / "prompt_embeddings"
+ video_latent_dir.mkdir(parents=True, exist_ok=True)
+ prompt_embeddings_dir.mkdir(parents=True, exist_ok=True)
+
+ prompt_hash = str(hashlib.sha256(prompt.encode()).hexdigest())
+ prompt_embedding_path = prompt_embeddings_dir / (prompt_hash + ".safetensors")
+ encoded_video_path = video_latent_dir / (video.stem + ".safetensors")
+
+ if prompt_embedding_path.exists():
+ prompt_embedding = load_file(prompt_embedding_path)["prompt_embedding"]
+ logger.debug(
+ f"process {self.trainer.accelerator.process_index}: Loaded prompt embedding from {prompt_embedding_path}",
+ main_process_only=False,
+ )
+ else:
+ prompt_embedding = self.encode_text(prompt)
+ prompt_embedding = prompt_embedding.to("cpu")
+ # [1, seq_len, hidden_size] -> [seq_len, hidden_size]
+ prompt_embedding = prompt_embedding[0]
+ save_file({"prompt_embedding": prompt_embedding}, prompt_embedding_path)
+ logger.info(f"Saved prompt embedding to {prompt_embedding_path}", main_process_only=False)
+
+ if encoded_video_path.exists():
+ # encoded_video = torch.load(encoded_video_path, weights_only=True)
+ encoded_video = load_file(encoded_video_path)["encoded_video"]
+ logger.debug(f"Loaded encoded video from {encoded_video_path}", main_process_only=False)
+ # shape of image: [C, H, W]
+ else:
+ frames = self.preprocess(video)
+ frames = frames.to(self.device)
+ # Current shape of frames: [F, C, H, W]
+ frames = self.video_transform(frames)
+ # Convert to [B, C, F, H, W]
+ frames = frames.unsqueeze(0)
+ frames = frames.permute(0, 2, 1, 3, 4).contiguous()
+ encoded_video = self.encode_video(frames)
+
+ # [1, C, F, H, W] -> [C, F, H, W]
+ encoded_video = encoded_video[0]
+ encoded_video = encoded_video.to("cpu")
+ save_file({"encoded_video": encoded_video}, encoded_video_path)
+ logger.info(f"Saved encoded video to {encoded_video_path}", main_process_only=False)
+
+ # shape of encoded_video: [C, F, H, W]
+ return {
+ "prompt_embedding": prompt_embedding,
+ "encoded_video": encoded_video,
+ "video_metadata": {
+ "num_frames": encoded_video.shape[1],
+ "height": encoded_video.shape[2],
+ "width": encoded_video.shape[3],
+ },
+ }
+
+ def preprocess(self, video_path: Path) -> torch.Tensor:
+ """
+ Loads and preprocesses a video.
+
+ Args:
+ video_path: Path to the video file to load.
+
+ Returns:
+ torch.Tensor: Video tensor of shape [F, C, H, W] where:
+ - F is number of frames
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ """
+ Applies transformations to a video.
+
+ Args:
+ frames (torch.Tensor): A 4D tensor representing a video
+ with shape [F, C, H, W] where:
+ - F is number of frames
+ - C is number of channels (3 for RGB)
+ - H is height
+ - W is width
+
+ Returns:
+ torch.Tensor: The transformed video tensor with the same shape as the input
+ """
+ raise NotImplementedError("Subclass must implement this method")
+
+
+class T2VDatasetWithResize(BaseT2VDataset):
+ """
+ A dataset class for text-to-video generation that resizes inputs to fixed dimensions.
+
+ This class preprocesses videos by resizing them to specified dimensions:
+ - Videos are resized to max_num_frames x height x width
+
+ Args:
+ max_num_frames (int): Maximum number of frames to extract from videos
+ height (int): Target height for resizing videos
+ width (int): Target width for resizing videos
+ """
+
+ def __init__(self, max_num_frames: int, height: int, width: int, *args, **kwargs) -> None:
+ super().__init__(*args, **kwargs)
+
+ self.max_num_frames = max_num_frames
+ self.height = height
+ self.width = width
+
+ self.__frame_transform = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+
+ @override
+ def preprocess(self, video_path: Path) -> torch.Tensor:
+ return preprocess_video_with_resize(
+ video_path,
+ self.max_num_frames,
+ self.height,
+ self.width,
+ )
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transform(f) for f in frames], dim=0)
+
+
+class T2VDatasetWithBuckets(BaseT2VDataset):
+ def __init__(
+ self,
+ video_resolution_buckets: List[Tuple[int, int, int]],
+ vae_temporal_compression_ratio: int,
+ vae_height_compression_ratio: int,
+ vae_width_compression_ratio: int,
+ *args,
+ **kwargs,
+ ) -> None:
+ """ """
+ super().__init__(*args, **kwargs)
+
+ self.video_resolution_buckets = [
+ (
+ int(b[0] / vae_temporal_compression_ratio),
+ int(b[1] / vae_height_compression_ratio),
+ int(b[2] / vae_width_compression_ratio),
+ )
+ for b in video_resolution_buckets
+ ]
+
+ self.__frame_transform = transforms.Compose([transforms.Lambda(lambda x: x / 255.0 * 2.0 - 1.0)])
+
+ @override
+ def preprocess(self, video_path: Path) -> torch.Tensor:
+ return preprocess_video_with_buckets(video_path, self.video_resolution_buckets)
+
+ @override
+ def video_transform(self, frames: torch.Tensor) -> torch.Tensor:
+ return torch.stack([self.__frame_transform(f) for f in frames], dim=0)
diff --git a/finetune/datasets/utils.py b/finetune/datasets/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..ea60a851879426df20ea19cf826a8e251fbe3e43
--- /dev/null
+++ b/finetune/datasets/utils.py
@@ -0,0 +1,199 @@
+import logging
+from pathlib import Path
+from typing import List, Tuple
+
+import cv2
+import torch
+from torchvision.transforms.functional import resize
+
+
+# Must import after torch because this can sometimes lead to a nasty segmentation fault, or stack smashing error
+# Very few bug reports but it happens. Look in decord Github issues for more relevant information.
+import decord # isort:skip
+import random
+
+decord.bridge.set_bridge("torch")
+
+
+########## loaders ##########
+
+
+def load_prompts(prompt_path: Path) -> List[str]:
+ with open(prompt_path, "r", encoding="utf-8") as file:
+ return [line.strip() for line in file.readlines() if len(line.strip()) > 0]
+
+
+def load_videos(video_path: Path) -> List[Path]:
+ with open(video_path, "r", encoding="utf-8") as file:
+ return [video_path.parent / line.strip() for line in file.readlines() if len(line.strip()) > 0]
+
+
+def load_images(image_path: Path) -> List[Path]:
+ with open(image_path, "r", encoding="utf-8") as file:
+ return [image_path.parent / line.strip() for line in file.readlines() if len(line.strip()) > 0]
+
+
+def load_images_from_videos(videos_path: List[Path]) -> List[Path]:
+ first_frames_dir = videos_path[0].parent.parent / "first_frames"
+ first_frames_dir.mkdir(exist_ok=True)
+
+ first_frame_paths = []
+ for video_path in videos_path:
+ frame_path = first_frames_dir / f"{video_path.stem}.png"
+ if frame_path.exists():
+ first_frame_paths.append(frame_path)
+ continue
+
+ # Open video
+ cap = cv2.VideoCapture(str(video_path))
+
+ # Read first frame
+ ret, frame = cap.read()
+ if not ret:
+ raise RuntimeError(f"Failed to read video: {video_path}")
+
+ # Save frame as PNG with same name as video
+ cv2.imwrite(str(frame_path), frame)
+ logging.info(f"Saved first frame to {frame_path}")
+
+ # Release video capture
+ cap.release()
+
+ first_frame_paths.append(frame_path)
+
+ return first_frame_paths
+
+
+########## preprocessors ##########
+
+
+def preprocess_image_with_resize(
+ image_path: Path | str,
+ height: int,
+ width: int,
+ keep_aspect_ratio: bool = False
+) -> torch.Tensor:
+ """
+ Loads and resizes a single image.
+
+ Args:
+ image_path: Path to the image file.
+ height: Target height for resizing.
+ width: Target width for resizing.
+
+ Returns:
+ torch.Tensor: Image tensor with shape [C, H, W] where:
+ C = number of channels (3 for RGB)
+ H = height
+ W = width
+ """
+ if isinstance(image_path, str):
+ image_path = Path(image_path)
+ image = cv2.imread(image_path.as_posix())
+ image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
+ if not keep_aspect_ratio:
+ image = cv2.resize(image, (width, height))
+ image = torch.from_numpy(image).float()
+ image = image.permute(2, 0, 1).contiguous()
+ return image
+
+
+def preprocess_video_with_resize(
+ video_path: Path | str,
+ max_num_frames: int,
+ height: int,
+ width: int,
+ keep_aspect_ratio: bool = False,
+ use_precompute_video_latents = True,
+) -> torch.Tensor:
+ """
+ Loads and resizes a single video.
+
+ The function processes the video through these steps:
+ 1. If video frame count > max_num_frames, downsample frames evenly
+ 2. If video dimensions don't match (height, width), resize frames
+
+ Args:
+ video_path: Path to the video file.
+ max_num_frames: Maximum number of frames to keep.
+ height: Target height for resizing.
+ width: Target width for resizing.
+
+ Returns:
+ A torch.Tensor with shape [F, C, H, W] where:
+ F = number of frames
+ C = number of channels (3 for RGB)
+ H = height
+ W = width
+ """
+ if isinstance(video_path, str):
+ video_path = Path(video_path)
+ if keep_aspect_ratio:
+ video_reader = decord.VideoReader(uri=video_path.as_posix())
+ else:
+ video_reader = decord.VideoReader(uri=video_path.as_posix(), width=width, height=height)
+
+ video_num_frames = len(video_reader)
+ if video_num_frames < max_num_frames:
+ raise ValueError(f"video frame count in {video_path} is {video_num_frames}, less than {max_num_frames}.")
+
+ if use_precompute_video_latents:
+ indices = list(range(0, max_num_frames))
+ # indices = list(range(0, video_num_frames, video_num_frames // max_num_frames))
+ else:
+ start_index_range = video_num_frames - max_num_frames
+ start_index = random.randint(0, start_index_range)
+ indices = list(range(start_index, start_index + max_num_frames))
+
+ frames = video_reader.get_batch(indices)
+ frames = frames[:max_num_frames].float()
+ frames = frames.permute(0, 3, 1, 2).contiguous()
+
+ return frames, indices[:max_num_frames]
+
+
+
+def preprocess_video_with_buckets(
+ video_path: Path,
+ resolution_buckets: List[Tuple[int, int, int]],
+) -> torch.Tensor:
+ """
+ Args:
+ video_path: Path to the video file.
+ resolution_buckets: List of tuples (num_frames, height, width) representing
+ available resolution buckets.
+
+ Returns:
+ torch.Tensor: Video tensor with shape [F, C, H, W] where:
+ F = number of frames
+ C = number of channels (3 for RGB)
+ H = height
+ W = width
+
+ The function processes the video through these steps:
+ 1. Finds nearest frame bucket <= video frame count
+ 2. Downsamples frames evenly to match bucket size
+ 3. Finds nearest resolution bucket based on dimensions
+ 4. Resizes frames to match bucket resolution
+ """
+ video_reader = decord.VideoReader(uri=video_path.as_posix())
+ video_num_frames = len(video_reader)
+ resolution_buckets = [bucket for bucket in resolution_buckets if bucket[0] <= video_num_frames]
+ if len(resolution_buckets) == 0:
+ raise ValueError(f"video frame count in {video_path} is {video_num_frames}, less than all frame buckets {resolution_buckets}")
+
+ nearest_frame_bucket = min(
+ resolution_buckets,
+ key=lambda bucket: video_num_frames - bucket[0],
+ default=1,
+ )[0]
+ frame_indices = list(range(0, video_num_frames, video_num_frames // nearest_frame_bucket))
+ frames = video_reader.get_batch(frame_indices)
+ frames = frames[:nearest_frame_bucket].float()
+ frames = frames.permute(0, 3, 1, 2).contiguous()
+
+ nearest_res = min(resolution_buckets, key=lambda x: abs(x[1] - frames.shape[2]) + abs(x[2] - frames.shape[3]))
+ nearest_res = (nearest_res[1], nearest_res[2])
+ frames = torch.stack([resize(f, nearest_res) for f in frames], dim=0)
+
+ return frames
diff --git a/finetune/demo/models.json b/finetune/demo/models.json
new file mode 100644
index 0000000000000000000000000000000000000000..7e2cf143172c49d9b2d3be8b8ded53f4802619bb
--- /dev/null
+++ b/finetune/demo/models.json
@@ -0,0 +1,6 @@
+{
+ "cogvideox1.5_controlnetxs_realcam-i2v_50k": {
+ "pretrained_model_path": "pretrained/CogVideoX1.5-5B-I2V",
+ "controlnetxs_model_path": "checkpoints/RealCam-I2V_CogVideoX1.5-5B_50k.pt"
+ }
+}
diff --git a/finetune/demo/preview.py b/finetune/demo/preview.py
new file mode 100644
index 0000000000000000000000000000000000000000..e8825f54de5e37ff05583c2e9501e59894c3c15c
--- /dev/null
+++ b/finetune/demo/preview.py
@@ -0,0 +1,238 @@
+import sys
+import os
+import numpy as np
+import open3d as o3d
+import torch
+from mmengine import Config
+from pyvirtualdisplay import Display
+from tqdm import tqdm
+
+sys.path.append("Metric3D")
+
+
+def display_wrapper(func):
+ def inner(*args, **kwargs):
+ with Display(visible=False, size=(1920, 1080)):
+ return func(*args, **kwargs)
+
+ return inner
+
+
+def relative_pose(rt: np.ndarray, mode: str, ref_index: int = 0) -> np.ndarray:
+ if mode == "left":
+ rt = np.linalg.inv(rt[ref_index]) @ rt
+ elif mode == "right":
+ rt = rt @ np.linalg.inv(rt[ref_index])
+ return rt
+
+
+def project_point_cloud(
+ frame: np.ndarray,
+ depth: np.ndarray,
+ intrinsics: list[float],
+ remove_outliers: bool = True,
+ voxel_size: float = None,
+) -> o3d.geometry.PointCloud:
+ from mono.utils.unproj_pcd import reconstruct_pcd
+
+ points = reconstruct_pcd(depth, *intrinsics).reshape(-1, 3)
+ colors = frame.reshape(-1, 3) / 255
+
+ pcd = o3d.geometry.PointCloud()
+ pcd.points = o3d.utility.Vector3dVector(points.astype(np.double))
+ pcd.colors = o3d.utility.Vector3dVector(colors.astype(np.double))
+ if remove_outliers:
+ cl, ind = pcd.remove_statistical_outlier(nb_neighbors=12, std_ratio=3.0)
+ pcd = pcd.select_by_index(ind)
+ if voxel_size is not None:
+ pcd = pcd.voxel_down_sample(voxel_size=0.5)
+
+ return pcd
+
+
+def create_camera_frustum(
+ frame: np.ndarray,
+ intrinsic: o3d.camera.PinholeCameraIntrinsic,
+ c2w: np.ndarray,
+ frustum_scale: float = 0.5,
+):
+ W, H = intrinsic.width, intrinsic.height
+ fx, fy = intrinsic.get_focal_length()
+ cx, cy = intrinsic.get_principal_point()
+ z = frustum_scale
+ x = (W - cx) * z / fx
+ y = (H - cy) * z / fy
+
+ points = [[0, 0, 0], [-x, -y, z], [x, -y, z], [x, y, z], [-x, y, z]]
+ lines = [[0, 1], [0, 2], [0, 3], [0, 4], [1, 2], [2, 3], [3, 4], [4, 1]]
+ line_set = o3d.geometry.LineSet(
+ points=o3d.utility.Vector3dVector(points),
+ lines=o3d.utility.Vector2iVector(lines),
+ )
+ line_set.paint_uniform_color([0.8, 0.2, 0.2])
+ line_set.transform(c2w)
+
+ vertices = [points[i] for i in [1, 2, 3, 4]]
+ triangles = [[0, 1, 2], [0, 2, 3]]
+ img_plane = o3d.geometry.TriangleMesh(
+ vertices=o3d.utility.Vector3dVector(vertices),
+ triangles=o3d.utility.Vector3iVector(triangles),
+ )
+ img_plane.triangle_uvs = o3d.utility.Vector2dVector(
+ np.array([[0, 1], [1, 1], [1, 0], [0, 1], [1, 0], [0, 0]])
+ )
+ img_plane.transform(c2w)
+
+ material = o3d.visualization.rendering.MaterialRecord()
+ material.shader = "defaultUnlit"
+ material.albedo_img = o3d.geometry.Image(frame)
+
+ return line_set, img_plane, material
+
+
+class Previewer:
+ def __init__(self, model_path: str = "pretrained/metric_depth_vit_large_800k.pth"):
+ self.model_path = model_path
+ self.depth_predictor = None
+
+ def init_depth_predictor(self):
+ from mono.model.monodepth_model import get_configured_monodepth_model
+ from mono.utils.running import load_ckpt
+
+ self.config = Config.fromfile(
+ "Metric3D/mono/configs/HourglassDecoder/vit.raft5.large.py"
+ )
+ model = get_configured_monodepth_model(self.config)
+ model = torch.nn.DataParallel(model).cuda().eval().requires_grad_(False)
+ model, _, _, _ = load_ckpt(self.model_path, model, strict_match=False)
+ self.depth_predictor = model
+
+ def estimate_depths(
+ self, frames: np.ndarray, intrinsics: list[float]
+ ) -> np.ndarray:
+ """
+ :param frames: `np.ndarray` of shape (B, H, W, C) and range (0, 255)
+ :param intrinsics: list of [fx, fy, cx, cy]
+ :return depths: `np.ndarray` of shape (B, H, W) and range (0, 300)
+ """
+
+ from mono.utils.do_test import transform_test_data_scalecano
+
+ if self.depth_predictor is None:
+ self.init_depth_predictor()
+
+ B, H, W, C = frames.shape
+ rgb_inputs, pads = [], []
+ for frame in frames:
+ rgb_input, _, pad, label_scale_factor = transform_test_data_scalecano(
+ frame, intrinsics, self.config.data_basic
+ )
+ rgb_inputs.append(rgb_input)
+ pads.append(pad)
+
+ with torch.inference_mode(), torch.autocast("cuda"): # b c h w
+ depths, _, _ = self.depth_predictor.module.inference(
+ {"input": torch.stack(rgb_inputs).cuda(), "pad_info": pads}
+ )
+
+ _, _, h, w = depths.shape
+ depths = depths[..., pad[0] : h - pad[1], pad[2] : w - pad[3]]
+ depths = depths * self.config.data_basic.depth_range[-1] / label_scale_factor
+ depths = torch.nn.functional.interpolate(depths, (H, W), mode="bilinear")
+
+ return depths.clamp(0, 300).squeeze(1).cpu().numpy()
+
+ @display_wrapper
+ def render_previews(
+ self,
+ frame: np.ndarray,
+ depth: np.ndarray,
+ intrinsics: list[float],
+ w2cs: np.ndarray,
+ ):
+ """
+ :param frame: `np.ndarray` of shape (H, W, C) and range (0, 255)
+ :param depth: `np.ndarray` of shape (H, W) and range (0, 300)
+ :param intrinsics: list of [fx, fy, cx, cy]
+ :param w2cs: `np.ndarray` of shape (4, 4)
+ :return: previews: `np.ndarray of shape (B, H, W, C) and range (0, 255)`
+ """
+
+ H, W, _ = frame.shape
+ K = o3d.camera.PinholeCameraIntrinsic(W, H, *intrinsics)
+ pcd = project_point_cloud(frame, depth, intrinsics)
+
+ mat = o3d.visualization.rendering.MaterialRecord()
+ mat.shader = "defaultUnlit"
+ mat.point_size = 2
+
+ renderer = o3d.visualization.rendering.OffscreenRenderer(W, H)
+ renderer.scene.set_background(np.array([1.0, 1.0, 1.0, 1.0]))
+ renderer.scene.view.set_post_processing(False)
+ renderer.scene.clear_geometry()
+ renderer.scene.add_geometry("point cloud", pcd, mat)
+
+ previews = []
+ for w2c in tqdm(relative_pose(w2cs, mode="left")):
+ renderer.setup_camera(K, w2c)
+ previews.append(renderer.render_to_image())
+
+ return np.stack(previews)
+
+ @display_wrapper
+ def render_4d_scene(
+ self,
+ frames: np.ndarray,
+ depths: np.ndarray,
+ intrinsics: list[float],
+ w2cs: np.ndarray,
+ ):
+ """
+ :param frames: `np.ndarray` of shape (B, H, W, C) and range (0, 255)
+ :param depths: `np.ndarray` of shape (B, H, W) and range (0, 300)
+ :param intrinsics: list of [fx, fy, cx, cy]
+ :param w2cs: `np.ndarray` of shape (4, 4)
+ :return: renderings: `np.ndarray of shape (B, H, W, C) and range (0, 255)`
+ """
+
+ F, H, W, _ = frames.shape
+ K = o3d.camera.PinholeCameraIntrinsic(W, H, *intrinsics)
+
+ renderer = o3d.visualization.rendering.OffscreenRenderer(W, H)
+ renderer.scene.set_background(np.array([1.0, 1.0, 1.0, 1.0]))
+ renderer.scene.view.set_post_processing(False)
+
+ c2w_0 = np.linalg.inv(w2cs[0])
+ eye_pos_world = (c2w_0 @ np.array([0.3, -0.5, -0.5, 1]))[:3]
+ center_pos_world = (c2w_0 @ np.array([0, 0, 2, 1]))[:3]
+ up_vector_world = np.array([0, -1, 0])
+ renderer.scene.camera.look_at(center_pos_world, eye_pos_world, up_vector_world)
+
+ point_material = o3d.visualization.rendering.MaterialRecord()
+ point_material.shader = "defaultUnlit"
+ point_material.point_size = 2
+
+ line_material = o3d.visualization.rendering.MaterialRecord()
+ line_material.shader = "unlitLine"
+ line_material.line_width = 3
+
+ renderings = []
+ for frame, depth, w2c in tqdm(zip(frames, depths, w2cs), total=F):
+ c2w = np.linalg.inv(w2c)
+ pcd = project_point_cloud(frame, depth, intrinsics)
+ pcd.transform(c2w)
+
+ wire_frame, frustum, frustum_material = create_camera_frustum(frame, K, c2w)
+
+ renderer.scene.clear_geometry()
+ renderer.scene.add_geometry("point cloud", pcd, point_material)
+ renderer.scene.add_geometry("wire frame", wire_frame, line_material)
+ renderer.scene.add_geometry("frustum", frustum, frustum_material)
+
+ renderings.append(renderer.render_to_image())
+
+ return np.stack(renderings)
+
+if __name__ == "__main__":
+ with Display(visible=False, size=(512, 320)):
+ o3d.visualization.rendering.OffscreenRenderer(512, 320)
diff --git a/finetune/demo/prompt_extend.py b/finetune/demo/prompt_extend.py
new file mode 100644
index 0000000000000000000000000000000000000000..0cc90ae341797e26b02d31d19cf810c7f9efe0af
--- /dev/null
+++ b/finetune/demo/prompt_extend.py
@@ -0,0 +1,183 @@
+# Copyright 2024-2025 The Alibaba Wan Team Authors. All rights reserved.
+# Modified from https://github.com/Wan-Video/Wan2.1/blob/main/wan/utils/prompt_extend.py
+import json
+import os
+import random
+import sys
+from dataclasses import dataclass
+from typing import Union
+
+import torch
+from PIL import Image
+
+VL_ZH_SYS_PROMPT = (
+ """你是一位Prompt优化师,旨在参考用户输入的图像的细节内容,把用户输入的Prompt改写为优质Prompt,使其更完整、更具表现力,同时不改变原意。你需要综合用户输入的照片内容和输入的Prompt进行改写,严格参考示例的格式进行改写。\n"""
+ """任务要求:\n"""
+ """1. 对于过于简短的用户输入,在不改变原意前提下,合理推断并补充细节,使得画面更加完整好看;\n"""
+ """2. 完善用户描述中出现的主体特征(如外貌、表情,数量、种族、姿态等)、画面风格、空间关系、镜头景别;\n"""
+ """3. 整体中文输出,保留引号、书名号中原文以及重要的输入信息,不要改写;\n"""
+ """4. Prompt应匹配符合用户意图且精准细分的风格描述。如果用户未指定,则根据用户提供的照片的风格,你需要仔细分析照片的风格,并参考风格进行改写;\n"""
+ """5. 如果Prompt是古诗词,应该在生成的Prompt中强调中国古典元素,避免出现西方、现代、外国场景;\n"""
+ """6. 你需要强调输入中的运动信息和不同的镜头运镜;\n"""
+ """7. 你的输出应当带有自然运动属性,需要根据描述主体目标类别增加这个目标的自然动作,描述尽可能用简单直接的动词;\n"""
+ """8. 你需要尽可能的参考图片的细节信息,如人物动作、服装、背景等,强调照片的细节元素;\n"""
+ """9. 改写后的prompt字数控制在80-100字左右\n"""
+ """10. 无论用户输入什么语言,你都必须输出中文\n"""
+ """改写后 prompt 示例:\n"""
+ """1. 日系小清新胶片写真,扎着双麻花辫的年轻东亚女孩坐在船边。女孩穿着白色方领泡泡袖连衣裙,裙子上有褶皱和纽扣装饰。她皮肤白皙,五官清秀,眼神略带忧郁,直视镜头。女孩的头发自然垂落,刘海遮住部分额头。她双手扶船,姿态自然放松。背景是模糊的户外场景,隐约可见蓝天、山峦和一些干枯植物。复古胶片质感照片。中景半身坐姿人像。\n"""
+ """2. 二次元厚涂动漫插画,一个猫耳兽耳白人少女手持文件夹,神情略带不满。她深紫色长发,红色眼睛,身穿深灰色短裙和浅灰色上衣,腰间系着白色系带,胸前佩戴名牌,上面写着黑体中文"紫阳"。淡黄色调室内背景,隐约可见一些家具轮廓。少女头顶有一个粉色光圈。线条流畅的日系赛璐璐风格。近景半身略俯视视角。\n"""
+ """3. CG游戏概念数字艺术,一只巨大的鳄鱼张开大嘴,背上长着树木和荆棘。鳄鱼皮肤粗糙,呈灰白色,像是石头或木头的质感。它背上生长着茂盛的树木、灌木和一些荆棘状的突起。鳄鱼嘴巴大张,露出粉红色的舌头和锋利的牙齿。画面背景是黄昏的天空,远处有一些树木。场景整体暗黑阴冷。近景,仰视视角。\n"""
+ """4. 美剧宣传海报风格,身穿黄色防护服的Walter White坐在金属折叠椅上,上方无衬线英文写着"Breaking Bad",周围是成堆的美元和蓝色塑料储物箱。他戴着眼镜目光直视前方,身穿黄色连体防护服,双手放在膝盖上,神态稳重自信。背景是一个废弃的阴暗厂房,窗户透着光线。带有明显颗粒质感纹理。中景人物平视特写。\n"""
+ """直接输出改写后的文本。"""
+)
+
+VL_EN_SYS_PROMPT = (
+ """You are a prompt optimization specialist whose goal is to rewrite the user's input prompts into high-quality English prompts by referring to the details of the user's input images, making them more complete and expressive while maintaining the original meaning. You need to integrate the content of the user's photo with the input prompt for the rewrite, strictly adhering to the formatting of the examples provided.\n"""
+ """Task Requirements:\n"""
+ """1. For overly brief user inputs, reasonably infer and supplement details without changing the original meaning, making the image more complete and visually appealing;\n"""
+ """2. Improve the characteristics of the main subject in the user's description (such as appearance, expression, quantity, ethnicity, posture, etc.), rendering style, spatial relationships, and camera angles;\n"""
+ """3. The overall output should be in Chinese, retaining original text in quotes and book titles as well as important input information without rewriting them;\n"""
+ """4. The prompt should match the user’s intent and provide a precise and detailed style description. If the user has not specified a style, you need to carefully analyze the style of the user's provided photo and use that as a reference for rewriting;\n"""
+ """5. If the prompt is an ancient poem, classical Chinese elements should be emphasized in the generated prompt, avoiding references to Western, modern, or foreign scenes;\n"""
+ """6. You need to emphasize movement information in the input and different camera angles;\n"""
+ """7. Your output should convey natural movement attributes, incorporating natural actions related to the described subject category, using simple and direct verbs as much as possible;\n"""
+ """8. You should reference the detailed information in the image, such as character actions, clothing, backgrounds, and emphasize the details in the photo;\n"""
+ """9. Control the rewritten prompt to around 80-100 words.\n"""
+ """10. No matter what language the user inputs, you must always output in English.\n"""
+ """Example of the rewritten English prompt:\n"""
+ """1. A Japanese fresh film-style photo of a young East Asian girl with double braids sitting by the boat. The girl wears a white square collar puff sleeve dress, decorated with pleats and buttons. She has fair skin, delicate features, and slightly melancholic eyes, staring directly at the camera. Her hair falls naturally, with bangs covering part of her forehead. She rests her hands on the boat, appearing natural and relaxed. The background features a blurred outdoor scene, with hints of blue sky, mountains, and some dry plants. The photo has a vintage film texture. A medium shot of a seated portrait.\n"""
+ """2. An anime illustration in vibrant thick painting style of a white girl with cat ears holding a folder, showing a slightly dissatisfied expression. She has long dark purple hair and red eyes, wearing a dark gray skirt and a light gray top with a white waist tie and a name tag in bold Chinese characters that says "紫阳" (Ziyang). The background has a light yellow indoor tone, with faint outlines of some furniture visible. A pink halo hovers above her head, in a smooth Japanese cel-shading style. A close-up shot from a slightly elevated perspective.\n"""
+ """3. CG game concept digital art featuring a huge crocodile with its mouth wide open, with trees and thorns growing on its back. The crocodile's skin is rough and grayish-white, resembling stone or wood texture. Its back is lush with trees, shrubs, and thorny protrusions. With its mouth agape, the crocodile reveals a pink tongue and sharp teeth. The background features a dusk sky with some distant trees, giving the overall scene a dark and cold atmosphere. A close-up from a low angle.\n"""
+ """4. In the style of an American drama promotional poster, Walter White sits in a metal folding chair wearing a yellow protective suit, with the words "Breaking Bad" written in sans-serif English above him, surrounded by piles of dollar bills and blue plastic storage boxes. He wears glasses, staring forward, dressed in a yellow jumpsuit, with his hands resting on his knees, exuding a calm and confident demeanor. The background shows an abandoned, dim factory with light filtering through the windows. There’s a noticeable grainy texture. A medium shot with a straight-on close-up of the character.\n"""
+ """Directly output the rewritten English text."""
+)
+
+
+@dataclass
+class PromptOutput(object):
+ status: bool
+ prompt: str
+ seed: int
+ system_prompt: str
+ message: str
+
+ def add_custom_field(self, key: str, value) -> None:
+ self.__setattr__(key, value)
+
+
+class PromptExpander:
+ def __init__(self, model_name, device=0, **kwargs):
+ self.model_name = model_name
+ self.device = device
+
+ def offload_cpu(self):
+ if hasattr(self, "model"):
+ self.model.cpu()
+ torch.cuda.empty_cache()
+
+ def extend_with_img(self, prompt, system_prompt, image=None, seed=-1, *args, **kwargs):
+ pass
+
+ def decide_system_prompt(self, tar_lang="zh"):
+ return VL_ZH_SYS_PROMPT if tar_lang == "zh" else VL_EN_SYS_PROMPT
+
+ def __call__(self, prompt, tar_lang="zh", image=None, seed=-1, *args, **kwargs):
+ system_prompt = self.decide_system_prompt(tar_lang=tar_lang)
+ if seed < 0:
+ seed = random.randint(0, sys.maxsize)
+ if image is not None:
+ return self.extend_with_img(prompt, system_prompt, image=image, seed=seed, *args, **kwargs)
+ else:
+ raise NotImplementedError
+
+
+class QwenPromptExpander(PromptExpander):
+ model_dict = {
+ "QwenVL2.5_3B": "Qwen/Qwen2.5-VL-3B-Instruct",
+ "QwenVL2.5_7B": "Qwen/Qwen2.5-VL-7B-Instruct",
+ }
+
+ def __init__(self, model_name=None, device=0, **kwargs):
+ """
+ Args:
+ model_name: Use predefined model names such as 'QwenVL2.5_7B' and 'Qwen2.5_14B',
+ which are specific versions of the Qwen model. Alternatively, you can use the
+ local path to a downloaded model or the model name from Hugging Face."
+ Detailed Breakdown:
+ Predefined Model Names:
+ * 'QwenVL2.5_7B' and 'Qwen2.5_14B' are specific versions of the Qwen model.
+ Local Path:
+ * You can provide the path to a model that you have downloaded locally.
+ Hugging Face Model Name:
+ * You can also specify the model name from Hugging Face's model hub.
+ **kwargs: Additional keyword arguments that can be passed to the function or method.
+ """
+ if model_name is None:
+ model_name = "QwenVL2.5_7B"
+ super().__init__(model_name, device, **kwargs)
+ if (not os.path.exists(self.model_name)) and (self.model_name in self.model_dict):
+ self.model_name = self.model_dict[self.model_name]
+
+ def init_model(self):
+ # default: Load the model on the available device(s)
+ from qwen_vl_utils import process_vision_info
+ from transformers import (
+ AutoProcessor,
+ Qwen2_5_VLForConditionalGeneration,
+ )
+
+ self.process_vision_info = process_vision_info
+ min_pixels = 256 * 28 * 28
+ max_pixels = 1280 * 28 * 28
+ self.processor = AutoProcessor.from_pretrained(
+ self.model_name, min_pixels=min_pixels, max_pixels=max_pixels, use_fast=True
+ )
+ self.model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
+ self.model_name, torch_dtype=torch.float16, device_map="cpu"
+ )
+
+ def extend_with_img(self, prompt, system_prompt, image: Union[Image.Image, str] = None, seed=-1, *args, **kwargs):
+ if not hasattr(self, "model"):
+ self.init_model()
+
+ self.model = self.model.to(self.device)
+ messages = [
+ {"role": "system", "content": [{"type": "text", "text": system_prompt}]},
+ {
+ "role": "user",
+ "content": [
+ {
+ "type": "image",
+ "image": image,
+ },
+ {"type": "text", "text": prompt},
+ ],
+ },
+ ]
+
+ # Preparation for inference
+ text = self.processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
+ image_inputs, video_inputs = self.process_vision_info(messages)
+ inputs = self.processor(
+ text=[text],
+ images=image_inputs,
+ videos=video_inputs,
+ padding=True,
+ return_tensors="pt",
+ )
+ inputs = inputs.to(self.device)
+
+ # Inference: Generation of the output
+ generated_ids = self.model.generate(**inputs, max_new_tokens=512)
+ generated_ids_trimmed = [out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)]
+ expanded_prompt = self.processor.batch_decode(
+ generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
+ )[0]
+ self.model = self.model.to("cpu")
+ return PromptOutput(
+ status=True,
+ prompt=expanded_prompt,
+ seed=seed,
+ system_prompt=system_prompt,
+ message=json.dumps({"content": expanded_prompt}, ensure_ascii=False),
+ )
diff --git a/finetune/gradio_app.py b/finetune/gradio_app.py
new file mode 100644
index 0000000000000000000000000000000000000000..8bc9dbb8cd9cb1603b053dafba82b63dceac7a2f
--- /dev/null
+++ b/finetune/gradio_app.py
@@ -0,0 +1,186 @@
+import argparse
+import json
+import os
+from uuid import uuid4
+
+import gradio as gr
+import imageio
+import numpy as np
+import torch
+from einops import rearrange
+from PIL import Image
+
+from image_to_video import Image2Video, _resize_for_rectangle_crop, camera_pose_lerp
+from demo.preview import Previewer
+from demo.prompt_extend import QwenPromptExpander
+
+torch.backends.cuda.matmul.allow_tf32 = True
+
+
+def load_model_name():
+ with open(args.model_meta_path, "r") as f:
+ data = json.load(f)
+
+ return list(filter(lambda x: "interp" not in x, data.keys()))
+
+
+def load_camera_pose_type():
+ with open(args.camera_pose_meta_path, "r") as f:
+ data = json.load(f)
+
+ return list(data.keys())
+
+
+def main(args):
+ captioner = QwenPromptExpander(args.caption_model_path, device=args.device)
+ previewer = Previewer(args.depth_model_path)
+ image2video = Image2Video(
+ args.result_dir,
+ args.model_meta_path,
+ args.camera_pose_meta_path,
+ args.save_fps,
+ device=args.device,
+ )
+
+ with gr.Blocks(analytics_enabled=False, css=r"""
+ #input_img img {height: 480px !important;}
+ #output_vid video {width: auto !important; margin: auto !important;}
+ """) as demo:
+ gr.Markdown("""
+
+
RealCam-I2V (CogVideoX-1.5-5B-I2V)
+
+ """)
+
+ with gr.Row(equal_height=True):
+ input_image = gr.Image(label="Input Image")
+ output_3d = gr.Model3D(label="Camera Trajectory", clear_color=[1.0, 1.0, 1.0, 1.0], visible=False)
+ preview_video = gr.Video(label="Preview Video", interactive=False, autoplay=True, loop=True)
+ output_video1 = gr.Video(label="New Generated Video", elem_id="output_vid", interactive=False, autoplay=True, loop=True)
+ output_video2 = gr.Video(label="Previous Generated Video", elem_id="output_vid", interactive=False, autoplay=True, loop=True, visible=False)
+
+ with gr.Row():
+ reload_btn = gr.Button("Reload")
+ preview_btn = gr.Button("Preview")
+ end_btn = gr.Button("Generate")
+
+ with gr.Row(equal_height=True):
+ input_text = gr.Textbox(label='Prompt', scale=4)
+ caption_btn = gr.Button("Caption")
+
+ with gr.Row():
+ negative_prompt = gr.Textbox(label='Negative Prompt', value="Fast movement, jittery motion, abrupt transitions, distorted body, missing limbs, unnatural posture, blurry, cropped, extra limbs, bad anatomy, deformed, glitchy motion, artifacts.")
+
+ with gr.Row(equal_height=True):
+ with gr.Column():
+ model_name = gr.Dropdown(label='Model Name', choices=load_model_name())
+ camera_pose_type = gr.Dropdown(label='Camera Pose Type', choices=load_camera_pose_type())
+ seed = gr.Slider(label="Random Seed", minimum=0, maximum=2**31, step=1, value=12333)
+
+ with gr.Column(scale=2):
+ with gr.Row():
+ steps = gr.Slider(minimum=1, maximum=250, step=1, label="Sampling Steps (DDPM)", value=25)
+ text_cfg = gr.Slider(minimum=1.0, maximum=15.0, step=0.5, label='Text CFG', value=5)
+ camera_cfg = gr.Slider(minimum=1.0, maximum=5.0, step=0.1, label="Camera CFG", value=1.0, visible=False)
+ with gr.Row():
+ trace_extract_ratio = gr.Slider(minimum=0, maximum=1.0, step=0.1, label="Trace Extract Ratio", value=1.0)
+ trace_scale_factor = gr.Slider(minimum=0, maximum=5, step=0.1, label="Camera Trace Scale Factor", value=1.0)
+ with gr.Row(equal_height=True):
+ frames = gr.Slider(minimum=17, maximum=161, step=16, label="Video Frames", value=49)
+ height = gr.Slider(minimum=256, maximum=1360, step=16, label="Video Height", value=512)
+ width = gr.Slider(minimum=448, maximum=1360, step=16, label="Video Width", value=896)
+ switch_aspect_ratio = gr.Button("Switch HW")
+ with gr.Row(visible=False):
+ noise_shaping = gr.Checkbox(label='Enable Noise Shaping', value=False)
+ noise_shaping_minimum_timesteps = gr.Slider(minimum=0, maximum=1000, step=1, label="Noise Shaping Minimum Timesteps", value=900)
+
+ input_image.upload(fn=lambda : "", outputs=[input_text])
+
+ def caption(*inputs):
+ image2video.offload_cpu()
+ prompt, image = inputs
+ return captioner(prompt, tar_lang="en", image=Image.fromarray(image)).prompt
+
+ caption_btn.click(fn=caption, inputs=[input_text, input_image], outputs=[input_text])
+
+ def preview(input_image, camera_pose_type, trace_extract_ratio, sample_frames, sample_height, sample_width):
+ frames = rearrange(torch.from_numpy(input_image), "h w c -> c 1 h w")
+ frames, resized_H, resized_W = _resize_for_rectangle_crop(frames, sample_height, sample_width)
+ frames = rearrange(frames, "c 1 h w -> 1 h w c").numpy()
+
+ with open(args.camera_pose_meta_path, "r", encoding="utf-8") as f:
+ camera_pose_file_path = json.load(f)[camera_pose_type]
+ camera_data = torch.from_numpy(np.loadtxt(camera_pose_file_path, comments="https")) # t, 17
+
+ w2cs_3x4 = camera_data[:, 7:].reshape(-1, 3, 4)
+ dummy = torch.tensor([[[0, 0, 0, 1]]] * w2cs_3x4.shape[0])
+ w2cs_4x4 = torch.cat([w2cs_3x4, dummy], dim=1)
+ c2ws_4x4 = w2cs_4x4.inverse()
+ c2ws_lerp_4x4 = camera_pose_lerp(c2ws_4x4, round(sample_frames / trace_extract_ratio))[: sample_frames]
+ w2cs_lerp_4x4 = c2ws_lerp_4x4.inverse().numpy()
+
+ fx = fy = 0.5 * max(resized_H, resized_W)
+ cx = 0.5 * resized_W
+ cy = 0.5 * resized_H
+ intrinsics = [fx, fy, cx, cy]
+ depths = previewer.estimate_depths(frames, intrinsics)
+ previews = previewer.render_previews(frames[0], depths[0], intrinsics, w2cs_lerp_4x4)
+
+ uid = uuid4().fields[0]
+ preview_path = f"{args.result_dir}/preview_{uid:08x}.mp4"
+ os.makedirs(args.result_dir, exist_ok=True)
+ imageio.mimsave(preview_path, previews, fps=args.save_fps)
+
+ return preview_path
+
+ preview_btn.click(
+ fn=preview,
+ inputs=[input_image, camera_pose_type, trace_extract_ratio, frames, height, width],
+ outputs=[preview_video],
+ )
+
+ def generate(*inputs):
+ *inputs, frames, height, width = inputs
+ captioner.offload_cpu()
+ return image2video.get_image(*inputs, (frames, height, width))
+
+ end_btn.click(
+ fn=generate,
+ inputs=[model_name, input_image, input_text, negative_prompt, camera_pose_type, preview_video, steps, trace_extract_ratio, trace_scale_factor, camera_cfg, text_cfg, seed, noise_shaping, noise_shaping_minimum_timesteps, frames, height, width],
+ outputs=[output_video1],
+ )
+
+ end_btn.click(fn=lambda x: x, inputs=[output_video1], outputs=[output_video2])
+
+ reload_btn.click(
+ fn=lambda: (gr.Dropdown(choices=load_model_name()), gr.Dropdown(choices=load_camera_pose_type())),
+ outputs=[model_name, camera_pose_type]
+ )
+
+ switch_aspect_ratio.click(fn=lambda x: x, inputs=[height], outputs=[width])
+ switch_aspect_ratio.click(fn=lambda x: x, inputs=[width], outputs=[height])
+
+ return demo
+
+
+def get_parser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--device", type=str, default="cuda")
+ parser.add_argument("--save_fps", type=int, default=16)
+ parser.add_argument("--result_dir", type=str, default="results")
+ parser.add_argument("--model_meta_path", type=str, default="demo/models.json")
+ parser.add_argument("--example_meta_path", type=str, default="demo/examples.json")
+ parser.add_argument("--camera_pose_meta_path", type=str, default="demo/camera_poses.json")
+ parser.add_argument("--depth_model_path", type=str, default="pretrained/Metric3D/metric_depth_vit_large_800k.pth")
+ parser.add_argument("--caption_model_path", type=str, default="pretrained/Qwen2.5-VL-7B-Instruct")
+ parser.add_argument("--server_name", type=str, default="0.0.0.0")
+ parser.add_argument("--server_port", type=int, default=8080)
+
+ return parser
+
+
+if __name__ == "__main__":
+ parser = get_parser()
+ args, _ = parser.parse_known_args()
+
+ main(args).launch(server_name=args.server_name, server_port=args.server_port, allowed_paths=["demo"])
diff --git a/finetune/image_to_video.py b/finetune/image_to_video.py
new file mode 100644
index 0000000000000000000000000000000000000000..4510ea022f371414eeb4b93e3ac487db6b2cae95
--- /dev/null
+++ b/finetune/image_to_video.py
@@ -0,0 +1,432 @@
+import sys
+from pathlib import Path
+
+sys.path.append(str(Path(__file__).parent.parent))
+
+import importlib
+import json
+import os
+from functools import partial
+from pprint import pprint
+from uuid import uuid4
+
+import numpy as np
+import torch
+import torch.nn.functional as F
+from diffusers import AutoencoderKLCogVideoX, CogVideoXDPMScheduler
+from diffusers.models.embeddings import get_3d_rotary_pos_embed
+from diffusers.utils.export_utils import export_to_video
+from einops import rearrange, repeat
+from pytorch_lightning import seed_everything
+from torch import Tensor
+from torchvision import transforms
+from transformers import AutoTokenizer, T5EncoderModel
+from torchcodec.decoders import VideoDecoder
+
+
+def relative_pose(rt: Tensor, mode, ref_index) -> Tensor:
+ '''
+ :param rt: F,4,4
+ :param mode: left or right
+ :return:
+ '''
+ if mode == "left":
+ rt = rt[ref_index].inverse() @ rt
+ elif mode == "right":
+ rt = rt @ rt[ref_index].inverse()
+ return rt
+
+
+def camera_pose_lerp(c2w: Tensor, target_frames: int):
+ weights = torch.linspace(0, c2w.size(0) - 1, target_frames, dtype=c2w.dtype)
+ left_indices = weights.floor().long()
+ right_indices = weights.ceil().long()
+
+ return torch.lerp(c2w[left_indices], c2w[right_indices], weights.unsqueeze(-1).unsqueeze(-1).frac())
+
+
+def get_obj_from_str(string, reload=False):
+ module, cls = string.rsplit(".", 1)
+ if reload:
+ module_imp = importlib.import_module(module)
+ importlib.reload(module_imp)
+ return getattr(importlib.import_module(module, package=None), cls)
+
+
+def _resize_for_rectangle_crop(frames, H, W):
+ '''
+ :param frames: C,F,H,W
+ :param image_size: H,W
+ :return: frames: C,F,crop_H,crop_W; camera_intrinsics: F,3,3
+ '''
+ ori_H, ori_W = frames.shape[-2:]
+
+ # if ori_W / ori_H < 1.0:
+ # tmp_H, tmp_W = int(H), int(W)
+ # H, W = tmp_W, tmp_H
+
+ if ori_W / ori_H > W / H:
+ frames = transforms.functional.resize(frames, size=[H, int(ori_W * H / ori_H)])
+ else:
+ frames = transforms.functional.resize(frames, size=[int(ori_H * W / ori_W), W])
+
+ resized_H, resized_W = frames.shape[2], frames.shape[3]
+ frames = frames.squeeze(0)
+
+ delta_H = resized_H - H
+ delta_W = resized_W - W
+
+ top, left = delta_H // 2, delta_W // 2
+ frames = transforms.functional.crop(frames, top=top, left=left, height=H, width=W)
+
+ return frames, resized_H, resized_W
+
+
+def _resize(frames, H, W):
+ '''
+ :param frames: C,F,H,W
+ :param image_size: H,W
+ :return: frames: C,F,crop_H,crop_W; camera_intrinsics: F,3,3
+ '''
+ frames = transforms.functional.resize(frames, size=[H, W])
+
+ resized_H, resized_W = frames.shape[2], frames.shape[3]
+ frames = frames.squeeze(0)
+
+ return frames, resized_H, resized_W
+
+
+class Image2Video:
+ def __init__(
+ self,
+ result_dir: str = "results",
+ model_meta_path: str = "models.json",
+ camera_pose_meta_path: str = "camera_poses.json",
+ save_fps: int = 16,
+ device: str = "cuda",
+ ):
+ self.result_dir = result_dir
+ self.model_meta_file = model_meta_path
+ self.camera_pose_meta_path = camera_pose_meta_path
+ self.save_fps = save_fps
+ self.device = torch.device(device)
+ self.pipe = None
+
+ def init_model(self, model_name):
+ from models.camera_controller.cogvideox_with_controlnetxs import CogVideoXTransformer3DModel
+ from models.camera_controller.controlnetxs import ControlnetXs
+
+ with open(self.model_meta_file, "r", encoding="utf-8") as f:
+ model_metadata = json.load(f)[model_name]
+ pretrained_model_path = model_metadata["pretrained_model_path"]
+ controlnetxs_model_path = model_metadata["controlnetxs_model_path"]
+
+ self.transformer = CogVideoXTransformer3DModel.from_pretrained(pretrained_model_path, subfolder="transformer", torch_dtype=torch.bfloat16)
+ self.controlnetxs = ControlnetXs("models/camera_controller/CogVideoX1.5-5B-I2V", self.transformer.config)
+ self.controlnetxs.load_state_dict(torch.load(controlnetxs_model_path)['module'], strict=True)
+ self.controlnetxs.to(torch.bfloat16)
+ # self.controlnetxs.to(torch.float32)
+ self.tokenizer = AutoTokenizer.from_pretrained(pretrained_model_path, subfolder="tokenizer")
+ self.text_encoder = T5EncoderModel.from_pretrained(pretrained_model_path, subfolder="text_encoder", torch_dtype=torch.bfloat16)
+ self.vae = AutoencoderKLCogVideoX.from_pretrained(pretrained_model_path, subfolder="vae", torch_dtype=torch.bfloat16)
+ self.vae_scale_factor_spatial = 2 ** (len(self.vae.config.block_out_channels) - 1)
+ self.scheduler = CogVideoXDPMScheduler.from_pretrained(pretrained_model_path, subfolder="scheduler")
+
+ self.controlnetxs.eval()
+ self.text_encoder.eval()
+ self.vae.eval()
+ self.transformer.eval()
+
+ self.prepare_models()
+
+ def prepare_models(self) -> None:
+ if self.vae is not None:
+ self.vae.enable_slicing()
+ self.vae.enable_tiling()
+
+ if self.controlnetxs.vae_encoder is not None:
+ self.controlnetxs.vae_encoder.enable_slicing()
+ self.controlnetxs.vae_encoder.enable_tiling()
+
+ def init_pipe(self):
+ from models.camera_controller.pipeline_cogvideox_image2video import CogVideoXImageToVideoPipeline
+
+ self.pipe = CogVideoXImageToVideoPipeline(
+ tokenizer=self.tokenizer,
+ text_encoder=None,
+ vae=self.vae,
+ transformer=self.transformer,
+ scheduler=self.scheduler
+ )
+ self.pipe.scaling_flag = True
+ self.pipe.to(self.device)
+
+ def offload_cpu(self):
+ if hasattr(self, "transformer"):
+ self.transformer.cpu()
+ if hasattr(self, "controlnetxs"):
+ self.controlnetxs.cpu()
+ if hasattr(self, "text_encoder"):
+ self.text_encoder.cpu()
+ if hasattr(self, "vae"):
+ self.vae.cpu()
+
+ torch.cuda.empty_cache()
+
+ def prepare_rotary_positional_embeddings(
+ self,
+ height: int,
+ width: int,
+ num_frames: int,
+ transformer_config: dict,
+ vae_scale_factor_spatial: int,
+ device: torch.device,
+ ) -> tuple[torch.Tensor, torch.Tensor]:
+ grid_height = height // (vae_scale_factor_spatial * transformer_config.patch_size)
+ grid_width = width // (vae_scale_factor_spatial * transformer_config.patch_size)
+
+ if transformer_config.patch_size_t is None:
+ base_num_frames = num_frames
+ else:
+ base_num_frames = (num_frames + transformer_config.patch_size_t - 1) // transformer_config.patch_size_t
+
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=transformer_config.attention_head_dim,
+ crops_coords=None,
+ grid_size=(grid_height, grid_width),
+ temporal_size=base_num_frames,
+ grid_type="slice",
+ max_size=(grid_height, grid_width),
+ device=device,
+ )
+
+ return freqs_cos, freqs_sin
+
+ def validation_step(self, input_kwargs: dict[str]) -> torch.Tensor:
+ """
+ Return the input_kwargs that needs to be saved. For videos, the input_kwargs format is list[PIL],
+ and for images, the input_kwargs format is PIL
+ image: shape=(1,c,h,w), value in [0, 1]
+ """
+ plucker_embedding = input_kwargs["plucker_embedding"]
+ image = input_kwargs["image"]
+ H, W = image.shape[-2:]
+
+ # camera
+ plucker_embedding = plucker_embedding.to(self.controlnetxs.vae_encoder.device, dtype=self.controlnetxs.vae_encoder.dtype) # [C=6, F, H, W]
+ latent_plucker_embedding_dist = self.controlnetxs.vae_encoder.encode(plucker_embedding).latent_dist # B,C=6,F,H,W --> B,128,(F-1)//4+1,H//4,W//4
+ latent_plucker_embedding = latent_plucker_embedding_dist.sample()
+ latent_plucker_embedding = latent_plucker_embedding.permute(0, 2, 1, 3, 4) # [B, C, F, H, W] to [B, F, C, H, W]
+ latent_plucker_embedding = latent_plucker_embedding.repeat(2, 1, 1, 1, 1) # cfg
+
+ patch_size_t = self.transformer.config.patch_size_t
+ if patch_size_t is not None:
+ ncopy = patch_size_t - latent_plucker_embedding.shape[1] % patch_size_t
+
+ if ncopy > 0:
+ # Copy the first frame ncopy times to match patch_size_t
+ first_frame = latent_plucker_embedding[:, :1, :, :, :] # Get first frame [B, F, C, H, W]
+ latent_plucker_embedding = torch.cat([first_frame.repeat(1, ncopy, 1, 1, 1), latent_plucker_embedding], dim=1)
+
+ if 'latent_scene_frames' in input_kwargs:
+ input_kwargs['latent_scene_frames'] = torch.cat([
+ input_kwargs['latent_scene_frames'][:, :1, :, :, :].repeat(1, ncopy, 1, 1, 1),
+ input_kwargs['latent_scene_frames']
+ ],
+ dim=1
+ )
+
+ input_kwargs['latent_scene_mask'] = torch.cat([
+ input_kwargs['latent_scene_mask'][:, :1, :, :, :].repeat(1, ncopy, 1, 1, 1),
+ input_kwargs['latent_scene_mask']
+ ],
+ dim=1
+ )
+
+ assert latent_plucker_embedding.shape[1] % patch_size_t == 0
+
+ num_latent_frames = latent_plucker_embedding.shape[1]
+ vae_scale_factor_spatial = 2 ** (len(self.vae.config.block_out_channels) - 1)
+ rotary_emb_for_controlnetxs = (
+ self.prepare_rotary_positional_embeddings(
+ height=H,
+ width=W,
+ num_frames=num_latent_frames,
+ transformer_config=self.controlnetxs.transformer.config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.device,
+ )
+ if self.transformer.config.use_rotary_positional_embeddings
+ else None
+ )
+
+ self.init_pipe()
+ original_forward = self.pipe.transformer.forward
+ self.pipe.transformer.forward = partial(
+ self.pipe.transformer.forward,
+ controlnetxs=self.controlnetxs,
+ latent_plucker_embedding=latent_plucker_embedding,
+ image_rotary_emb_for_controlnetxs=rotary_emb_for_controlnetxs,
+ )
+
+ forward_kwargs = dict(
+ num_frames=input_kwargs["video_length"],
+ height=H,
+ width=W,
+ prompt_embeds=input_kwargs["prompt_embedding"],
+ negative_prompt_embeds=input_kwargs["negative_prompt_embedding"],
+ image=image.to(self.device).to_dense(),
+ num_inference_steps=input_kwargs['num_inference_steps'],
+ guidance_scale=input_kwargs['text_cfg'],
+ noise_shaping=input_kwargs['noise_shaping'],
+ noise_shaping_minimum_timesteps = input_kwargs['noise_shaping_minimum_timesteps'],
+ latent_scene_frames = input_kwargs.get('latent_scene_frames', None), # B,F,C,H,W
+ latent_scene_mask = input_kwargs.get('latent_scene_mask', None),
+ generator = input_kwargs['generator'],
+ )
+
+ video_generate = self.pipe(**forward_kwargs).frames[0]
+ self.pipe.transformer.forward = original_forward
+ return video_generate
+
+ def encode_text(self, prompt: str) -> torch.Tensor:
+ prompt_token_ids = self.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=self.transformer.config.max_text_seq_length,
+ truncation=True,
+ add_special_tokens=True,
+ return_tensors="pt",
+ )
+ prompt_token_ids = prompt_token_ids.input_ids
+ prompt_embedding = self.text_encoder(prompt_token_ids.to(self.device))[0]
+ return prompt_embedding.to(torch.bfloat16).to(self.device)
+
+ def encode_video(self, video: torch.Tensor) -> torch.Tensor:
+ # shape of input video: [B, C, F, H, W]
+ video = video.to(self.vae.device, dtype=self.vae.dtype)
+ latent_dist = self.vae.encode(video).latent_dist
+ latent = latent_dist.sample() * self.vae.config.scaling_factor
+ return latent.to(torch.bfloat16).to(self.device)
+
+ @torch.inference_mode()
+ def get_image(
+ self,
+ model_name: str,
+ ref_img: np.ndarray,
+ prompt: str,
+ negative_prompt: str,
+ camera_pose_type: str,
+ preview_video: str = None,
+ steps: int = 25,
+ trace_extract_ratio: float = 1.0,
+ trace_scale_factor: float = 1.0,
+ camera_cfg: float = 1.0,
+ text_cfg: float = 6.0,
+ seed: int = 123,
+ noise_shaping: bool = False,
+ noise_shaping_minimum_timesteps: int = 800,
+ video_shape: tuple[int, int, int] = (81, 768, 1360),
+ resize_for_rectangle_crop: bool = True,
+ ):
+ if self.pipe is None:
+ self.init_model(model_name)
+
+ video_length, self.sample_height, self.sample_width = video_shape
+ print(video_length, self.sample_height, self.sample_width)
+
+ seed_everything(seed)
+ input_kwargs = {
+ 'video_length': video_length,
+ 'camera_cfg': camera_cfg,
+ 'num_inference_steps': steps,
+ 'text_cfg': text_cfg,
+ 'noise_shaping': noise_shaping,
+ 'noise_shaping_minimum_timesteps': noise_shaping_minimum_timesteps,
+ 'generator': torch.Generator(device=self.device).manual_seed(seed)
+ }
+
+ ref_img = rearrange(torch.from_numpy(ref_img), 'h w c -> c 1 h w')
+ if resize_for_rectangle_crop:
+ ref_img, resized_H, resized_W = _resize_for_rectangle_crop(
+ ref_img, self.sample_height, self.sample_width,
+ )
+ else:
+ ref_img, resized_H, resized_W = _resize(
+ ref_img, self.sample_height, self.sample_width,
+ )
+ ref_img = rearrange(ref_img / 255, "c 1 h w -> 1 c h w")
+ H, W = ref_img.shape[-2:]
+
+ input_kwargs["image"] = ref_img.to(self.device).to(torch.bfloat16)
+
+ with open(self.camera_pose_meta_path, "r", encoding="utf-8") as f:
+ camera_pose_file_path = json.load(f)[camera_pose_type]
+ camera_data = torch.from_numpy(np.loadtxt(camera_pose_file_path, comments="https")) # t, -1
+
+ fx = 0.5 * max(resized_H, resized_W)
+ fy = fx
+ cx = 0.5 * W
+ cy = 0.5 * H
+ intrinsics_matrix = torch.tensor([
+ [fx, 0, cx],
+ [0, fy, cy],
+ [0, 0, 1.0]
+ ])
+
+ w2cs_3x4 = camera_data[:, 7:].reshape(-1, 3, 4) # [t, 3, 4]
+ dummy = torch.tensor([[[0, 0, 0, 1]]] * w2cs_3x4.shape[0]) # [t, 1, 4]
+ w2cs_4x4 = torch.cat([w2cs_3x4, dummy], dim=1) # [t, 4, 4]
+ c2ws_4x4 = w2cs_4x4.inverse() # [t, 4, 4]
+ c2ws_lerp_4x4 = camera_pose_lerp(c2ws_4x4, round(video_length / trace_extract_ratio))[: video_length]
+
+ from utils.camera_utils import get_camera_condition
+ plucker_embedding, relative_c2w_RT_4x4 = get_camera_condition(
+ H, W, intrinsics_matrix[None, None], c2ws_lerp_4x4[None], mode="c2w",
+ cond_frame_index=0, align_factor=trace_scale_factor
+ ) # [B=1, C=6, F, H, W]
+
+ input_kwargs["plucker_embedding"] = plucker_embedding.to(self.device).to(torch.bfloat16)
+
+ uid = uuid4().fields[0]
+ if noise_shaping:
+ scene_frames = VideoDecoder(preview_video, device=str(self.device))[:]
+ scene_frames = rearrange(scene_frames / 255 * 2 - 1, "t c h w -> c t h w") # c,f,h,w, value in [-1, 1]
+ latent_scene_frames = self.encode_video(scene_frames.unsqueeze(0)) # b=1,c,f,h,w
+ input_kwargs['latent_scene_frames'] = latent_scene_frames.permute(0, 2, 1, 3, 4) # b=1,c,f,h,w --> b=1,f,c,h,w
+
+ from models.camera_controller.utils import apply_thresholded_conv
+ scene_mask = (scene_frames < 1).float().amax(0, keepdim=True) # c,f,h,w --> 1,f,h,w
+ scene_mask = apply_thresholded_conv(scene_mask, kernel_size=5, threshold=1.0) # 1,f,h,w
+ latent_scene_mask = torch.cat([
+ F.interpolate(scene_mask[:, :1].unsqueeze(1), (1, H // 8, W // 8), mode="trilinear", align_corners=True),
+ F.interpolate(scene_mask[:, 1:].unsqueeze(1), ((video_length - 1) // 4, H // 8, W // 8), mode="trilinear", align_corners=True)
+ ], dim=2).bool()
+ input_kwargs['latent_scene_mask'] = latent_scene_mask.permute(0, 2, 1, 3, 4)
+
+ self.vae.cpu()
+ self.transformer.cpu()
+ self.controlnetxs.cpu()
+ torch.cuda.empty_cache()
+
+ self.text_encoder.to(self.device)
+ input_kwargs |= {
+ "prompt_embedding": self.encode_text(prompt),
+ "negative_prompt_embedding": self.encode_text(negative_prompt),
+ }
+
+ self.text_encoder.cpu()
+ torch.cuda.empty_cache()
+
+ self.vae.to(self.device)
+ self.transformer.to(self.device)
+ self.controlnetxs.to(self.device)
+
+ generated_video = self.validation_step(input_kwargs)
+ video_path = f"{self.result_dir}/{model_name}_{uid:08x}.mp4"
+ os.makedirs(self.result_dir, exist_ok=True)
+ export_to_video(generated_video, video_path, fps=self.save_fps)
+
+ torch.cuda.empty_cache()
+
+ return video_path
diff --git a/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_transformer/config.json b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_transformer/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae17196f6f038923c7b4f89be275901fe2e2414c
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_transformer/config.json
@@ -0,0 +1,30 @@
+{
+ "_class_name": "CogVideoXTransformer3DControlnetXs",
+ "_diffusers_version": "0.32.1",
+ "activation_fn": "gelu-approximate",
+ "attention_bias": true,
+ "attention_head_dim": 16,
+ "dropout": 0.0,
+ "flip_sin_to_cos": true,
+ "freq_shift": 0,
+ "in_channels": 128,
+ "max_text_seq_length": 226,
+ "norm_elementwise_affine": true,
+ "norm_eps": 1e-05,
+ "num_attention_heads": 8,
+ "num_layers": 14,
+ "patch_size": 2,
+ "sample_frames": 49,
+ "sample_height": 60,
+ "sample_width": 90,
+ "spatial_interpolation_scale": 1.875,
+ "temporal_compression_ratio": 4,
+ "temporal_interpolation_scale": 1.0,
+ "text_embed_dim": 4096,
+ "time_embed_dim": 128,
+ "timestep_activation_fn": "silu",
+ "use_learned_positional_embeddings": true,
+ "use_rotary_positional_embeddings": true,
+ "up_down_layer_start_idx": 0,
+ "up_down_layer_end_idx": 13
+}
diff --git a/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_decoder/config.json b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_decoder/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..0418e0c7d71261abb1b19b35b12721b35ce1d1e9
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_decoder/config.json
@@ -0,0 +1,31 @@
+{
+ "_class_name": "ControlnetXsVaeDecoderCogVideoX",
+ "_diffusers_version": "0.32.1",
+ "act_fn": "silu",
+ "block_out_channels": [
+ 128,
+ 128,
+ 128,
+ 128
+ ],
+ "down_block_types": [
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D"
+ ],
+ "in_channels": 3,
+ "latent_channels": 16,
+ "layers_per_block": 3,
+ "norm_eps": 1e-06,
+ "norm_num_groups": 32,
+ "sample_height": 480,
+ "sample_width": 720,
+ "temporal_compression_ratio": 4,
+ "up_block_types": [
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D"
+ ],
+}
diff --git a/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_encoder/config.json b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_encoder/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..4e277a04531c067b48213701348cc098f2ed09cd
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX-5b-I2V/controlnetxs_vae_encoder/config.json
@@ -0,0 +1,25 @@
+{
+ "_class_name": "ControlnetXsVaeEncoderCogVideoX",
+ "_diffusers_version": "0.32.1",
+ "act_fn": "silu",
+ "block_out_channels": [
+ 32,
+ 64,
+ 64,
+ 128
+ ],
+ "down_block_types": [
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D"
+ ],
+ "in_channels": 6,
+ "latent_channels": 128,
+ "layers_per_block": 1,
+ "norm_eps": 1e-06,
+ "norm_num_groups": 8,
+ "sample_height": 480,
+ "sample_width": 720,
+ "temporal_compression_ratio": 4
+}
diff --git a/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_transformer/config.json b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_transformer/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..45d7c6474c6bf8124c9cb36abc9d53a11fb8197c
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_transformer/config.json
@@ -0,0 +1,31 @@
+{
+ "_class_name": "CogVideoXTransformer3DControlnetXs",
+ "_diffusers_version": "0.32.1",
+ "activation_fn": "gelu-approximate",
+ "attention_bias": true,
+ "attention_head_dim": 16,
+ "dropout": 0.0,
+ "flip_sin_to_cos": true,
+ "freq_shift": 0,
+ "in_channels": 128,
+ "max_text_seq_length": 226,
+ "norm_elementwise_affine": true,
+ "norm_eps": 1e-05,
+ "num_attention_heads": 8,
+ "num_layers": 14,
+ "patch_size": 2,
+ "patch_size_t": 2,
+ "sample_frames": 81,
+ "sample_height": 96,
+ "sample_width": 170,
+ "spatial_interpolation_scale": 1.875,
+ "temporal_compression_ratio": 4,
+ "temporal_interpolation_scale": 1.0,
+ "text_embed_dim": 4096,
+ "time_embed_dim": 128,
+ "timestep_activation_fn": "silu",
+ "use_learned_positional_embeddings": false,
+ "use_rotary_positional_embeddings": true,
+ "up_down_layer_start_idx": 0,
+ "up_down_layer_end_idx": 13
+}
diff --git a/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_decoder/config.json b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_decoder/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..0418e0c7d71261abb1b19b35b12721b35ce1d1e9
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_decoder/config.json
@@ -0,0 +1,31 @@
+{
+ "_class_name": "ControlnetXsVaeDecoderCogVideoX",
+ "_diffusers_version": "0.32.1",
+ "act_fn": "silu",
+ "block_out_channels": [
+ 128,
+ 128,
+ 128,
+ 128
+ ],
+ "down_block_types": [
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D"
+ ],
+ "in_channels": 3,
+ "latent_channels": 16,
+ "layers_per_block": 3,
+ "norm_eps": 1e-06,
+ "norm_num_groups": 32,
+ "sample_height": 480,
+ "sample_width": 720,
+ "temporal_compression_ratio": 4,
+ "up_block_types": [
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D"
+ ],
+}
diff --git a/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_encoder/config.json b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_encoder/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..8eabcee6296b84f821eba18cc37fe44230f5f6cf
--- /dev/null
+++ b/finetune/models/camera_controller/CogVideoX1.5-5B-I2V/controlnetxs_vae_encoder/config.json
@@ -0,0 +1,25 @@
+{
+ "_class_name": "ControlnetXsVaeEncoderCogVideoX",
+ "_diffusers_version": "0.32.1",
+ "act_fn": "silu",
+ "block_out_channels": [
+ 32,
+ 64,
+ 64,
+ 128
+ ],
+ "down_block_types": [
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D"
+ ],
+ "in_channels": 6,
+ "latent_channels": 128,
+ "layers_per_block": 1,
+ "norm_eps": 1e-06,
+ "norm_num_groups": 8,
+ "sample_height": 768,
+ "sample_width": 1360,
+ "temporal_compression_ratio": 4
+}
diff --git a/finetune/models/camera_controller/cogvideox_with_controlnetxs.py b/finetune/models/camera_controller/cogvideox_with_controlnetxs.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbdecfa9f54a33b98deaab0701c5a4b13c8b6a64
--- /dev/null
+++ b/finetune/models/camera_controller/cogvideox_with_controlnetxs.py
@@ -0,0 +1,618 @@
+# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import pdb
+from typing import Any, Dict, Optional, Tuple, Union
+
+import torch
+from torch import nn
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders import PeftAdapterMixin
+from diffusers.utils import USE_PEFT_BACKEND, is_torch_version, logging, scale_lora_layers, unscale_lora_layers
+from diffusers.utils.torch_utils import maybe_allow_in_graph
+from diffusers.models.attention import Attention, FeedForward
+from diffusers.models.attention_processor import AttentionProcessor, CogVideoXAttnProcessor2_0, FusedCogVideoXAttnProcessor2_0
+from diffusers.models.cache_utils import CacheMixin
+from diffusers.models.embeddings import CogVideoXPatchEmbed, TimestepEmbedding, Timesteps
+from diffusers.models.modeling_outputs import Transformer2DModelOutput
+from diffusers.models.modeling_utils import ModelMixin
+from diffusers.models.normalization import AdaLayerNorm, CogVideoXLayerNormZero
+
+import inspect
+import math
+from typing import Callable, List, Optional, Tuple, Union
+from diffusers.models.embeddings import apply_rotary_emb
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.utils import deprecate, is_torch_xla_available, logging
+from diffusers.utils.torch_utils import is_torch_version, maybe_allow_in_graph
+
+try:
+ from .flash_attn3 import IS_FLASH3_AVAILABLE
+ from .flash_attn3 import flash_attn_interface
+ from .flash_attn3 import CogVideoXFlashAttn3ControlnetXsProcessor, CogVideoXFlashAttn3Processor
+except:
+ pass
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+@maybe_allow_in_graph
+class CogVideoXBlock(nn.Module):
+ r"""
+ Transformer block used in [CogVideoX](https://github.com/THUDM/CogVideo) model.
+
+ Parameters:
+ dim (`int`):
+ The number of channels in the input and output.
+ num_attention_heads (`int`):
+ The number of heads to use for multi-head attention.
+ attention_head_dim (`int`):
+ The number of channels in each head.
+ time_embed_dim (`int`):
+ The number of channels in timestep embedding.
+ dropout (`float`, defaults to `0.0`):
+ The dropout probability to use.
+ activation_fn (`str`, defaults to `"gelu-approximate"`):
+ Activation function to be used in feed-forward.
+ attention_bias (`bool`, defaults to `False`):
+ Whether or not to use bias in attention projection layers.
+ qk_norm (`bool`, defaults to `True`):
+ Whether or not to use normalization after query and key projections in Attention.
+ norm_elementwise_affine (`bool`, defaults to `True`):
+ Whether to use learnable elementwise affine parameters for normalization.
+ norm_eps (`float`, defaults to `1e-5`):
+ Epsilon value for normalization layers.
+ final_dropout (`bool` defaults to `False`):
+ Whether to apply a final dropout after the last feed-forward layer.
+ ff_inner_dim (`int`, *optional*, defaults to `None`):
+ Custom hidden dimension of Feed-forward layer. If not provided, `4 * dim` is used.
+ ff_bias (`bool`, defaults to `True`):
+ Whether or not to use bias in Feed-forward layer.
+ attention_out_bias (`bool`, defaults to `True`):
+ Whether or not to use bias in Attention output projection layer.
+ """
+
+ def __init__(
+ self,
+ dim: int,
+ num_attention_heads: int,
+ attention_head_dim: int,
+ time_embed_dim: int,
+ dropout: float = 0.0,
+ activation_fn: str = "gelu-approximate",
+ attention_bias: bool = False,
+ qk_norm: bool = True,
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ final_dropout: bool = True,
+ ff_inner_dim: Optional[int] = None,
+ ff_bias: bool = True,
+ attention_out_bias: bool = True,
+ ):
+ super().__init__()
+
+ # 1. Self Attention
+ self.norm1 = CogVideoXLayerNormZero(time_embed_dim, dim, norm_elementwise_affine, norm_eps, bias=True)
+
+ self.attn1 = Attention(
+ query_dim=dim,
+ dim_head=attention_head_dim,
+ heads=num_attention_heads,
+ qk_norm="layer_norm" if qk_norm else None,
+ eps=1e-6,
+ bias=attention_bias,
+ out_bias=attention_out_bias,
+ processor=CogVideoXAttnProcessor2_0(),
+ )
+ if IS_FLASH3_AVAILABLE:
+ processor = CogVideoXFlashAttn3Processor()
+ self.attn1.set_processor(processor)
+
+ # 2. Feed Forward
+ self.norm2 = CogVideoXLayerNormZero(time_embed_dim, dim, norm_elementwise_affine, norm_eps, bias=True)
+
+ self.ff = FeedForward(
+ dim,
+ dropout=dropout,
+ activation_fn=activation_fn,
+ final_dropout=final_dropout,
+ inner_dim=ff_inner_dim,
+ bias=ff_bias,
+ )
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: torch.Tensor,
+ temb: torch.Tensor,
+ image_rotary_emb: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ attention_kwargs: Optional[Dict[str, Any]] = None,
+ ) -> torch.Tensor:
+ text_seq_length = encoder_hidden_states.size(1)
+ attention_kwargs = attention_kwargs or {}
+
+ # norm & modulate
+ norm_hidden_states, norm_encoder_hidden_states, gate_msa, enc_gate_msa = self.norm1(
+ hidden_states, encoder_hidden_states, temb
+ )
+
+ # attention
+ attn_hidden_states, attn_encoder_hidden_states = self.attn1(
+ hidden_states=norm_hidden_states,
+ encoder_hidden_states=norm_encoder_hidden_states,
+ image_rotary_emb=image_rotary_emb,
+ )
+
+ hidden_states = hidden_states + gate_msa * attn_hidden_states
+ encoder_hidden_states = encoder_hidden_states + enc_gate_msa * attn_encoder_hidden_states
+
+ # norm & modulate
+ norm_hidden_states, norm_encoder_hidden_states, gate_ff, enc_gate_ff = self.norm2(
+ hidden_states, encoder_hidden_states, temb
+ )
+
+ # feed-forward
+ norm_hidden_states = torch.cat([norm_encoder_hidden_states, norm_hidden_states], dim=1)
+ ff_output = self.ff(norm_hidden_states)
+
+ hidden_states = hidden_states + gate_ff * ff_output[:, text_seq_length:]
+ encoder_hidden_states = encoder_hidden_states + enc_gate_ff * ff_output[:, :text_seq_length]
+
+ return hidden_states, encoder_hidden_states
+
+
+class CogVideoXTransformer3DModel(ModelMixin, ConfigMixin, PeftAdapterMixin, CacheMixin):
+ """
+ A Transformer model for video-like data in [CogVideoX](https://github.com/THUDM/CogVideo).
+
+ Parameters:
+ num_attention_heads (`int`, defaults to `30`):
+ The number of heads to use for multi-head attention.
+ attention_head_dim (`int`, defaults to `64`):
+ The number of channels in each head.
+ in_channels (`int`, defaults to `16`):
+ The number of channels in the input.
+ out_channels (`int`, *optional*, defaults to `16`):
+ The number of channels in the output.
+ flip_sin_to_cos (`bool`, defaults to `True`):
+ Whether to flip the sin to cos in the time embedding.
+ time_embed_dim (`int`, defaults to `512`):
+ Output dimension of timestep embeddings.
+ ofs_embed_dim (`int`, defaults to `512`):
+ Output dimension of "ofs" embeddings used in CogVideoX-5b-I2B in version 1.5
+ text_embed_dim (`int`, defaults to `4096`):
+ Input dimension of text embeddings from the text encoder.
+ num_layers (`int`, defaults to `30`):
+ The number of layers of Transformer blocks to use.
+ dropout (`float`, defaults to `0.0`):
+ The dropout probability to use.
+ attention_bias (`bool`, defaults to `True`):
+ Whether to use bias in the attention projection layers.
+ sample_width (`int`, defaults to `90`):
+ The width of the input latents.
+ sample_height (`int`, defaults to `60`):
+ The height of the input latents.
+ sample_frames (`int`, defaults to `49`):
+ The number of frames in the input latents. Note that this parameter was incorrectly initialized to 49
+ instead of 13 because CogVideoX processed 13 latent frames at once in its default and recommended settings,
+ but cannot be changed to the correct value to ensure backwards compatibility. To create a transformer with
+ K latent frames, the correct value to pass here would be: ((K - 1) * temporal_compression_ratio + 1).
+ patch_size (`int`, defaults to `2`):
+ The size of the patches to use in the patch embedding layer.
+ temporal_compression_ratio (`int`, defaults to `4`):
+ The compression ratio across the temporal dimension. See documentation for `sample_frames`.
+ max_text_seq_length (`int`, defaults to `226`):
+ The maximum sequence length of the input text embeddings.
+ activation_fn (`str`, defaults to `"gelu-approximate"`):
+ Activation function to use in feed-forward.
+ timestep_activation_fn (`str`, defaults to `"silu"`):
+ Activation function to use when generating the timestep embeddings.
+ norm_elementwise_affine (`bool`, defaults to `True`):
+ Whether to use elementwise affine in normalization layers.
+ norm_eps (`float`, defaults to `1e-5`):
+ The epsilon value to use in normalization layers.
+ spatial_interpolation_scale (`float`, defaults to `1.875`):
+ Scaling factor to apply in 3D positional embeddings across spatial dimensions.
+ temporal_interpolation_scale (`float`, defaults to `1.0`):
+ Scaling factor to apply in 3D positional embeddings across temporal dimensions.
+ """
+
+ _skip_layerwise_casting_patterns = ["patch_embed", "norm"]
+ _supports_gradient_checkpointing = True
+ _no_split_modules = ["CogVideoXBlock", "CogVideoXPatchEmbed"]
+
+ @register_to_config
+ def __init__(
+ self,
+ num_attention_heads: int = 30,
+ attention_head_dim: int = 64,
+ in_channels: int = 16,
+ out_channels: Optional[int] = 16,
+ flip_sin_to_cos: bool = True,
+ freq_shift: int = 0,
+ time_embed_dim: int = 512,
+ ofs_embed_dim: Optional[int] = None,
+ text_embed_dim: int = 4096,
+ num_layers: int = 30,
+ dropout: float = 0.0,
+ attention_bias: bool = True,
+ sample_width: int = 90,
+ sample_height: int = 60,
+ sample_frames: int = 49,
+ patch_size: int = 2,
+ patch_size_t: Optional[int] = None,
+ temporal_compression_ratio: int = 4,
+ max_text_seq_length: int = 226,
+ activation_fn: str = "gelu-approximate",
+ timestep_activation_fn: str = "silu",
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ spatial_interpolation_scale: float = 1.875,
+ temporal_interpolation_scale: float = 1.0,
+ use_rotary_positional_embeddings: bool = False,
+ use_learned_positional_embeddings: bool = False,
+ patch_bias: bool = True,
+ ):
+ super().__init__()
+ inner_dim = num_attention_heads * attention_head_dim
+
+ if not use_rotary_positional_embeddings and use_learned_positional_embeddings:
+ raise ValueError(
+ "There are no CogVideoX checkpoints available with disable rotary embeddings and learned positional "
+ "embeddings. If you're using a custom model and/or believe this should be supported, please open an "
+ "issue at https://github.com/huggingface/diffusers/issues."
+ )
+
+ # 1. Patch embedding
+ self.patch_embed = CogVideoXPatchEmbed(
+ patch_size=patch_size,
+ patch_size_t=patch_size_t,
+ in_channels=in_channels,
+ embed_dim=inner_dim,
+ text_embed_dim=text_embed_dim,
+ bias=patch_bias,
+ sample_width=sample_width,
+ sample_height=sample_height,
+ sample_frames=sample_frames,
+ temporal_compression_ratio=temporal_compression_ratio,
+ max_text_seq_length=max_text_seq_length,
+ spatial_interpolation_scale=spatial_interpolation_scale,
+ temporal_interpolation_scale=temporal_interpolation_scale,
+ use_positional_embeddings=not use_rotary_positional_embeddings,
+ use_learned_positional_embeddings=use_learned_positional_embeddings,
+ )
+ self.embedding_dropout = nn.Dropout(dropout)
+
+ # 2. Time embeddings and ofs embedding(Only CogVideoX1.5-5B I2V have)
+
+ self.time_proj = Timesteps(inner_dim, flip_sin_to_cos, freq_shift)
+ self.time_embedding = TimestepEmbedding(inner_dim, time_embed_dim, timestep_activation_fn)
+
+ self.ofs_proj = None
+ self.ofs_embedding = None
+ if ofs_embed_dim:
+ self.ofs_proj = Timesteps(ofs_embed_dim, flip_sin_to_cos, freq_shift)
+ self.ofs_embedding = TimestepEmbedding(
+ ofs_embed_dim, ofs_embed_dim, timestep_activation_fn
+ ) # same as time embeddings, for ofs
+
+ # 3. Define spatio-temporal transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ CogVideoXBlock(
+ dim=inner_dim,
+ num_attention_heads=num_attention_heads,
+ attention_head_dim=attention_head_dim,
+ time_embed_dim=time_embed_dim,
+ dropout=dropout,
+ activation_fn=activation_fn,
+ attention_bias=attention_bias,
+ norm_elementwise_affine=norm_elementwise_affine,
+ norm_eps=norm_eps,
+ )
+ for _ in range(num_layers)
+ ]
+ )
+ self.norm_final = nn.LayerNorm(inner_dim, norm_eps, norm_elementwise_affine)
+
+ # 4. Output blocks
+ self.norm_out = AdaLayerNorm(
+ embedding_dim=time_embed_dim,
+ output_dim=2 * inner_dim,
+ norm_elementwise_affine=norm_elementwise_affine,
+ norm_eps=norm_eps,
+ chunk_dim=1,
+ )
+
+ if patch_size_t is None:
+ # For CogVideox 1.0
+ output_dim = patch_size * patch_size * out_channels
+ else:
+ # For CogVideoX 1.5
+ output_dim = patch_size * patch_size * patch_size_t * out_channels
+
+ self.proj_out = nn.Linear(inner_dim, output_dim)
+
+ self.gradient_checkpointing = False
+
+ @property
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors
+ def attn_processors(self) -> Dict[str, AttentionProcessor]:
+ r"""
+ Returns:
+ `dict` of attention processors: A dictionary containing all attention processors used in the model with
+ indexed by its weight name.
+ """
+ # set recursively
+ processors = {}
+
+ def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]):
+ if hasattr(module, "get_processor"):
+ processors[f"{name}.processor"] = module.get_processor()
+
+ for sub_name, child in module.named_children():
+ fn_recursive_add_processors(f"{name}.{sub_name}", child, processors)
+
+ return processors
+
+ for name, module in self.named_children():
+ fn_recursive_add_processors(name, module, processors)
+
+ return processors
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor
+ def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]):
+ r"""
+ Sets the attention processor to use to compute attention.
+
+ Parameters:
+ processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`):
+ The instantiated processor class or a dictionary of processor classes that will be set as the processor
+ for **all** `Attention` layers.
+
+ If `processor` is a dict, the key needs to define the path to the corresponding cross attention
+ processor. This is strongly recommended when setting trainable attention processors.
+
+ """
+ count = len(self.attn_processors.keys())
+
+ if isinstance(processor, dict) and len(processor) != count:
+ raise ValueError(
+ f"A dict of processors was passed, but the number of processors {len(processor)} does not match the"
+ f" number of attention layers: {count}. Please make sure to pass {count} processor classes."
+ )
+
+ def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor):
+ if hasattr(module, "set_processor"):
+ if not isinstance(processor, dict):
+ module.set_processor(processor)
+ else:
+ module.set_processor(processor.pop(f"{name}.processor"))
+
+ for sub_name, child in module.named_children():
+ fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor)
+
+ for name, module in self.named_children():
+ fn_recursive_attn_processor(name, module, processor)
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.fuse_qkv_projections with FusedAttnProcessor2_0->FusedCogVideoXAttnProcessor2_0
+ def fuse_qkv_projections(self):
+ """
+ Enables fused QKV projections. For self-attention modules, all projection matrices (i.e., query, key, value)
+ are fused. For cross-attention modules, key and value projection matrices are fused.
+
+
+
+ This API is 🧪 experimental.
+
+
+ """
+ self.original_attn_processors = None
+
+ for _, attn_processor in self.attn_processors.items():
+ if "Added" in str(attn_processor.__class__.__name__):
+ raise ValueError("`fuse_qkv_projections()` is not supported for models having added KV projections.")
+
+ self.original_attn_processors = self.attn_processors
+
+ for module in self.modules():
+ if isinstance(module, Attention):
+ module.fuse_projections(fuse=True)
+
+ self.set_attn_processor(FusedCogVideoXAttnProcessor2_0())
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.unfuse_qkv_projections
+ def unfuse_qkv_projections(self):
+ """Disables the fused QKV projection if enabled.
+
+
+
+ This API is 🧪 experimental.
+
+
+
+ """
+ if self.original_attn_processors is not None:
+ self.set_attn_processor(self.original_attn_processors)
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: torch.Tensor,
+ timestep: Union[int, float, torch.LongTensor],
+ timestep_cond: Optional[torch.Tensor] = None,
+ ofs: Optional[Union[int, float, torch.LongTensor]] = None,
+ image_rotary_emb: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ attention_kwargs: Optional[Dict[str, Any]] = None,
+ return_dict: bool = True,
+ controlnetxs = None,
+ latent_plucker_embedding = None,
+ image_rotary_emb_for_controlnetxs: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ camera_condition_gft_beta: Optional[Union[int, float, torch.LongTensor]] = None, # Guidance-Free Training
+ camera_condition_start_timestep = 600,
+ ):
+ if attention_kwargs is not None:
+ attention_kwargs = attention_kwargs.copy()
+ lora_scale = attention_kwargs.pop("scale", 1.0)
+ else:
+ lora_scale = 1.0
+
+ if USE_PEFT_BACKEND:
+ # weight the lora layers by setting `lora_scale` for each PEFT layer
+ scale_lora_layers(self, lora_scale)
+ else:
+ if attention_kwargs is not None and attention_kwargs.get("scale", None) is not None:
+ logger.warning(
+ "Passing `scale` via `attention_kwargs` when not using the PEFT backend is ineffective."
+ )
+
+ batch_size, num_frames, channels, height, width = hidden_states.shape
+
+ # 1. Time embedding
+ timesteps = timestep
+ t_emb = self.time_proj(timesteps)
+
+ # timesteps does not contain any weights and will always return f32 tensors
+ # but time_embedding might actually be running in fp16. so we need to cast here.
+ # there might be better ways to encapsulate this.
+ t_emb = t_emb.to(dtype=hidden_states.dtype)
+ emb = self.time_embedding(t_emb, timestep_cond)
+
+ if self.ofs_embedding is not None:
+ ofs_emb = self.ofs_proj(ofs)
+ ofs_emb = ofs_emb.to(dtype=hidden_states.dtype)
+ ofs_emb = self.ofs_embedding(ofs_emb)
+ emb = emb + ofs_emb
+
+ # Patch embed
+ if controlnetxs is not None and (timestep >= camera_condition_start_timestep).sum():
+ emb_for_controlnetxs = controlnetxs.emb_projector(emb)
+
+ if camera_condition_gft_beta is None:
+ camera_condition_gft_beta = torch.ones(timesteps.shape[0]).to(hidden_states.device)
+ camera_condition_gft_beta_emb = controlnetxs.transformer.camera_condition_gft_beta_proj(camera_condition_gft_beta)
+ camera_condition_gft_beta_emb = camera_condition_gft_beta_emb.to(dtype=hidden_states.dtype)
+ camera_condition_gft_beta_emb = controlnetxs.transformer.camera_condition_gft_beta_embedding(camera_condition_gft_beta_emb)
+ emb_for_controlnetxs = emb_for_controlnetxs + camera_condition_gft_beta_emb
+
+ hidden_states_for_controlnetxs = controlnetxs.transformer.patch_embed(latent_plucker_embedding)
+ hidden_states_for_controlnetxs = controlnetxs.transformer.embedding_dropout(hidden_states_for_controlnetxs)
+
+ # 2. Patch embedding
+ hidden_states = self.patch_embed(encoder_hidden_states, hidden_states)
+ hidden_states = self.embedding_dropout(hidden_states)
+
+ text_seq_length = encoder_hidden_states.shape[1]
+ encoder_hidden_states = hidden_states[:, :text_seq_length]
+ hidden_states = hidden_states[:, text_seq_length:]
+
+
+ # 3. Transformer blocks
+ up_down_layer_start_idx = controlnetxs.up_down_layer_start_idx
+ up_down_layer_end_idx = controlnetxs.up_down_layer_end_idx
+
+ for i, block in enumerate(self.transformer_blocks):
+ if torch.is_grad_enabled() and self.gradient_checkpointing:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
+ if controlnetxs is not None and (timestep >= camera_condition_start_timestep).sum() and i >= up_down_layer_start_idx and i<= up_down_layer_end_idx:
+ hidden_states_for_controlnetxs = controlnetxs.down_projectors[i](
+ hidden_states, emb_for_controlnetxs, hidden_states_for_controlnetxs
+ )
+ hidden_states_for_controlnetxs = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(controlnetxs.transformer.transformer_blocks[i]),
+ hidden_states_for_controlnetxs,
+ emb_for_controlnetxs,
+ image_rotary_emb_for_controlnetxs,
+ **ckpt_kwargs,
+ )
+ hidden_states = controlnetxs.up_projectors[i](
+ hidden_states_for_controlnetxs, emb_for_controlnetxs, hidden_states
+ )
+ hidden_states, encoder_hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(block),
+ hidden_states,
+ encoder_hidden_states,
+ emb,
+ image_rotary_emb,
+ **ckpt_kwargs,
+ )
+
+
+ else:
+ if controlnetxs is not None and (timestep >= camera_condition_start_timestep).sum() and i >= up_down_layer_start_idx and i<= up_down_layer_end_idx:
+ hidden_states_for_controlnetxs = controlnetxs.down_projectors[i](
+ hidden_states, emb_for_controlnetxs, hidden_states_for_controlnetxs
+ )
+ hidden_states_for_controlnetxs = controlnetxs.transformer.transformer_blocks[i](
+ hidden_states=hidden_states_for_controlnetxs,
+ temb=emb_for_controlnetxs,
+ image_rotary_emb=image_rotary_emb_for_controlnetxs,
+ )
+ hidden_states = controlnetxs.up_projectors[i](
+ hidden_states_for_controlnetxs, emb_for_controlnetxs, hidden_states,
+ )
+
+ hidden_states, encoder_hidden_states = block(
+ hidden_states=hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ temb=emb,
+ image_rotary_emb=image_rotary_emb,
+ )
+
+
+ if not self.config.use_rotary_positional_embeddings:
+ # CogVideoX-2B
+ hidden_states = self.norm_final(hidden_states)
+ else:
+ # CogVideoX-5B
+ hidden_states = torch.cat([encoder_hidden_states, hidden_states], dim=1)
+ hidden_states = self.norm_final(hidden_states)
+ hidden_states = hidden_states[:, text_seq_length:]
+
+ # 4. Final block
+ hidden_states = self.norm_out(hidden_states, temb=emb)
+ hidden_states = self.proj_out(hidden_states)
+
+ # 5. Unpatchify
+ p = self.config.patch_size
+ p_t = self.config.patch_size_t
+
+ if p_t is None:
+ output = hidden_states.reshape(batch_size, num_frames, height // p, width // p, -1, p, p)
+ output = output.permute(0, 1, 4, 2, 5, 3, 6).flatten(5, 6).flatten(3, 4)
+ else:
+ output = hidden_states.reshape(
+ batch_size, (num_frames + p_t - 1) // p_t, height // p, width // p, -1, p_t, p, p
+ )
+ output = output.permute(0, 1, 5, 4, 2, 6, 3, 7).flatten(6, 7).flatten(4, 5).flatten(1, 2)
+
+ if USE_PEFT_BACKEND:
+ # remove `lora_scale` from each PEFT layer
+ unscale_lora_layers(self, lora_scale)
+
+ if not return_dict:
+ return (output,)
+ return Transformer2DModelOutput(sample=output)
diff --git a/finetune/models/camera_controller/controlnetxs.py b/finetune/models/camera_controller/controlnetxs.py
new file mode 100644
index 0000000000000000000000000000000000000000..9fff2f554ca142e4c640d40bb0d49e790058bc03
--- /dev/null
+++ b/finetune/models/camera_controller/controlnetxs.py
@@ -0,0 +1,351 @@
+from .vae_encoder import ControlnetXsVaeEncoderCogVideoX
+from .vae_decoder import ControlnetXsVaeDecoderCogVideoX
+from .transformer import CogVideoXTransformer3DControlnetXs
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.models.modeling_utils import ModelMixin
+import os
+from typing import Any, Dict, Optional, Tuple, Union
+
+import torch
+from torch import nn
+from diffusers.utils import USE_PEFT_BACKEND, is_torch_version, logging, scale_lora_layers, unscale_lora_layers
+from diffusers.models.modeling_outputs import Transformer2DModelOutput
+from diffusers.models.attention import Attention, FeedForward
+from diffusers.models.normalization import AdaLayerNorm, CogVideoXLayerNormZero, RMSNorm
+import math
+from .transformer import CogVideoXControlnetXsLayerNormZero
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+class ZeroLayerNormDownProjector(nn.Module):
+ def __init__(
+ self,
+ dim_in: int,
+ dim_out: int,
+ time_embed_dim: int,
+ dropout: float = 0.0,
+ activation_fn: str = "gelu-approximate",
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ ) -> None:
+ super().__init__()
+ # dim_in > dim_out
+ self.silu = nn.SiLU()
+ self.scale_shift_linear = nn.Linear(time_embed_dim, 2 * dim_in, bias=True)
+ self.gate_linear = nn.Linear(time_embed_dim, dim_out, bias=True)
+ self.norm = nn.LayerNorm(dim_in, eps=norm_eps, elementwise_affine=norm_elementwise_affine)
+ self.mlp = nn.Sequential(
+ nn.Linear(dim_in, 4 * dim_out),
+ nn.GELU(approximate='tanh'),
+ nn.Linear(4 * dim_out, dim_out),
+ )
+
+ def forward(
+ self, hidden_states: torch.Tensor, temb: torch.Tensor, hidden_states2: torch.Tensor
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ silu_temb = self.silu(temb)
+ scale, shift = self.scale_shift_linear(silu_temb).chunk(2, dim=1)
+ gate = self.gate_linear(silu_temb)
+
+ return hidden_states2 + gate[:, None, :] * \
+ self.mlp(self.norm(hidden_states) * (1 + scale[:, None, :]) + shift[:, None, :])
+
+
+class ZeroLayerNormUpProjector(nn.Module):
+ def __init__(
+ self,
+ dim_in: int,
+ dim_out: int,
+ time_embed_dim: int,
+ dropout: float = 0.0,
+ activation_fn: str = "gelu-approximate",
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ ) -> None:
+ super().__init__()
+ # dim_in < dim_out
+ self.silu = nn.SiLU()
+ self.scale_shift_linear = nn.Linear(time_embed_dim, 2 * dim_in, bias=True)
+ self.gate_linear = nn.Linear(time_embed_dim, dim_out, bias=True)
+ self.norm = nn.LayerNorm(dim_in, eps=norm_eps, elementwise_affine=norm_elementwise_affine)
+ self.mlp = nn.Sequential(
+ nn.Linear(dim_in, 4 * dim_in),
+ nn.GELU(approximate='tanh'),
+ nn.Linear(4 * dim_in, dim_out),
+ )
+
+ def forward(
+ self, hidden_states: torch.Tensor, temb: torch.Tensor, hidden_states2: torch.Tensor
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ silu_temb = self.silu(temb)
+ scale, shift = self.scale_shift_linear(silu_temb).chunk(2, dim=1)
+ gate = self.gate_linear(silu_temb)
+
+ return hidden_states2 + gate[:, None, :] * \
+ self.mlp(self.norm(hidden_states) * (1 + scale[:, None, :]) + shift[:, None, :])
+
+
+class ControlnetXs(ModelMixin, ConfigMixin):
+ _supports_gradient_checkpointing = True
+
+ @register_to_config
+ def __init__(
+ self,
+ model_path: str,
+ main_transformer_config=None,
+ ):
+ super().__init__()
+ self.vae_encoder = ControlnetXsVaeEncoderCogVideoX.from_config(os.path.join(model_path, "controlnetxs_vae_encoder"))
+ self.transformer = CogVideoXTransformer3DControlnetXs.from_config(os.path.join(model_path, "controlnetxs_transformer"))
+ self.main_transformer_config = main_transformer_config
+
+ inner_dim_for_transformer = self.transformer.config.num_attention_heads * self.transformer.config.attention_head_dim
+ inner_dim_for_main_transformer = self.main_transformer_config.num_attention_heads * self.main_transformer_config.attention_head_dim
+
+ self.up_down_layer_start_idx = self.transformer.config.up_down_layer_start_idx
+ self.up_down_layer_end_idx = self.transformer.config.up_down_layer_end_idx
+
+ self.down_projectors = nn.ModuleList([
+ ZeroLayerNormDownProjector(
+ dim_in=inner_dim_for_main_transformer,
+ dim_out=inner_dim_for_transformer,
+ time_embed_dim=self.transformer.config.time_embed_dim,
+ dropout=self.transformer.config.dropout,
+ activation_fn=self.transformer.config.activation_fn,
+ norm_elementwise_affine=self.transformer.config.norm_elementwise_affine,
+ norm_eps=self.transformer.config.norm_eps,
+ ) for _ in range(self.transformer.config.num_layers)
+ ])
+ self.up_projectors = nn.ModuleList([
+ ZeroLayerNormUpProjector(
+ dim_in=inner_dim_for_transformer,
+ dim_out=inner_dim_for_main_transformer,
+ time_embed_dim=self.transformer.config.time_embed_dim,
+ dropout=self.transformer.config.dropout,
+ activation_fn=self.transformer.config.activation_fn,
+ norm_elementwise_affine=self.transformer.config.norm_elementwise_affine,
+ norm_eps=self.transformer.config.norm_eps,
+ ) for _ in range(self.transformer.config.num_layers)
+ ])
+
+ self.emb_projector = nn.Linear(self.main_transformer_config.time_embed_dim, self.transformer.config.time_embed_dim)
+
+ self.gradient_checkpointing = False
+
+ self.init_weights()
+
+ def init_weights(self):
+ def _basic_init(module):
+ if isinstance(module, nn.Linear):
+ if module.weight.requires_grad:
+ torch.nn.init.xavier_uniform_(module.weight)
+ if module.bias is not None:
+ nn.init.constant_(module.bias, 0)
+
+ self.apply(_basic_init)
+
+ for down_projector in self.down_projectors:
+ nn.init.constant_(down_projector.scale_shift_linear.weight, 0)
+ nn.init.constant_(down_projector.scale_shift_linear.bias, 0)
+ nn.init.constant_(down_projector.gate_linear.weight, 0)
+ nn.init.constant_(down_projector.gate_linear.bias, 0)
+
+ for up_projector in self.up_projectors:
+ nn.init.constant_(up_projector.scale_shift_linear.weight, 0)
+ nn.init.constant_(up_projector.scale_shift_linear.bias, 0)
+ nn.init.constant_(up_projector.gate_linear.weight, 0)
+ nn.init.constant_(up_projector.gate_linear.bias, 0)
+
+ for block in self.transformer.transformer_blocks:
+ nn.init.constant_(block.norm1.linear.weight, 0)
+ nn.init.constant_(block.norm1.linear.bias, 0)
+ nn.init.constant_(block.norm2.linear.weight, 0)
+ nn.init.constant_(block.norm2.linear.bias, 0)
+
+ nn.init.constant_(self.transformer.camera_condition_gft_beta_embedding.linear_2.weight, 0)
+ nn.init.constant_(self.transformer.camera_condition_gft_beta_embedding.linear_2.bias, 0)
+
+ def set_main_transformer(self, main_transformer):
+ self.main_transformer = main_transformer
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor, # B, F//4, C, H//8, W//8
+ encoder_hidden_states: torch.Tensor,
+ timestep: Union[int, float, torch.LongTensor],
+ timestep_cond: Optional[torch.Tensor] = None,
+ ofs: Optional[Union[int, float, torch.LongTensor]] = None,
+ image_rotary_emb: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ plucker_embedding=None, # B, C, F, H, W
+ image_rotary_emb_for_controlnetxs: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ attention_kwargs: Optional[Dict[str, Any]] = None,
+ return_dict: bool = True,
+ main_transformer=None,
+ camera_condition_gft_beta: Optional[Union[int, float, torch.LongTensor]] = None, # Guidance-Free Training
+ camera_condition_dropout=0.0
+ ):
+ if attention_kwargs is not None:
+ attention_kwargs = attention_kwargs.copy()
+ lora_scale = attention_kwargs.pop("scale", 1.0)
+ else:
+ lora_scale = 1.0
+
+ if USE_PEFT_BACKEND:
+ # weight the lora layers by setting `lora_scale` for each PEFT layer
+ scale_lora_layers(main_transformer, lora_scale)
+ else:
+ if attention_kwargs is not None and attention_kwargs.get("scale", None) is not None:
+ logger.warning(
+ "Passing `scale` via `attention_kwargs` when not using the PEFT backend is ineffective."
+ )
+
+ batch_size, num_frames, channels, height, width = hidden_states.shape
+
+ # 1. Time embedding
+ timesteps = timestep
+ t_emb = main_transformer.time_proj(timesteps)
+
+ # timesteps does not contain any weights and will always return f32 tensors
+ # but time_embedding might actually be running in fp16. so we need to cast here.
+ # there might be better ways to encapsulate this.
+ t_emb = t_emb.to(dtype=hidden_states.dtype)
+ emb = main_transformer.time_embedding(t_emb, timestep_cond)
+
+ if main_transformer.ofs_embedding is not None:
+ ofs_emb = main_transformer.ofs_proj(ofs)
+ ofs_emb = ofs_emb.to(dtype=hidden_states.dtype)
+ ofs_emb = main_transformer.ofs_embedding(ofs_emb)
+ emb = emb + ofs_emb
+
+ # Patch embed
+ emb_for_controlnetxs = self.emb_projector(emb)
+
+ if camera_condition_gft_beta is None:
+ camera_condition_gft_beta = torch.ones(timesteps.shape[0]).to(device=hidden_states.device)
+ camera_condition_gft_beta_emb = self.transformer.camera_condition_gft_beta_proj(camera_condition_gft_beta)
+ camera_condition_gft_beta_emb = camera_condition_gft_beta_emb.to(dtype=hidden_states.dtype)
+ camera_condition_gft_beta_emb = self.transformer.camera_condition_gft_beta_embedding(camera_condition_gft_beta_emb)
+ emb_for_controlnetxs = emb_for_controlnetxs + camera_condition_gft_beta_emb
+
+ plucker_embedding = plucker_embedding.to(self.vae_encoder.device, dtype=self.vae_encoder.dtype)
+ latent_plucker_embedding_dist = self.vae_encoder.encode(plucker_embedding).latent_dist # B,C=6,F,H,W --> B,128,F//4,H//4,W//4
+ latent_plucker_embedding = latent_plucker_embedding_dist.sample()
+ patch_size_t = main_transformer.config.patch_size_t
+ if patch_size_t is not None:
+ ncopy = latent_plucker_embedding.shape[2] % patch_size_t
+ # Copy the first frame ncopy times to match patch_size_t
+ first_frame = latent_plucker_embedding[:, :, :1, :, :] # Get first frame [B, C, 1, H, W]
+ latent_plucker_embedding = torch.cat([first_frame.repeat(1, 1, ncopy, 1, 1), latent_plucker_embedding], dim=2)
+ assert latent_plucker_embedding.shape[2] % patch_size_t == 0
+ latent_plucker_embedding = latent_plucker_embedding.permute(0, 2, 1, 3, 4) # [B, C=128, F//4, H//8, W//8] to [B, F//4, C=128, H//8, W//8]
+ num_frames = latent_plucker_embedding.shape[1]
+ if camera_condition_dropout > 0.0:
+ drop_ids = torch.rand(latent_plucker_embedding.shape[0]).to(latent_plucker_embedding.device) <= camera_condition_dropout
+ latent_plucker_embedding = torch.where(
+ drop_ids[:, None, None, None, None],
+ 0.0,
+ 1.0
+ ).to(latent_plucker_embedding.dtype) * latent_plucker_embedding
+
+ hidden_states_for_controlnetxs = self.transformer.patch_embed(latent_plucker_embedding)
+ hidden_states_for_controlnetxs = self.transformer.embedding_dropout(hidden_states_for_controlnetxs)
+
+ # 2. Patch embedding
+ hidden_states = main_transformer.patch_embed(encoder_hidden_states, hidden_states)
+ hidden_states = main_transformer.embedding_dropout(hidden_states)
+
+ text_seq_length = encoder_hidden_states.shape[1]
+ encoder_hidden_states = hidden_states[:, :text_seq_length]
+ hidden_states = hidden_states[:, text_seq_length:]
+
+ # 3. Transformer blocks
+ for i, block in enumerate(main_transformer.transformer_blocks):
+ if torch.is_grad_enabled() and self.gradient_checkpointing:
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
+ if i >= self.up_down_layer_start_idx and i <= self.up_down_layer_end_idx:
+ hidden_states_for_controlnetxs = self.down_projectors[i](
+ hidden_states, emb_for_controlnetxs, hidden_states_for_controlnetxs
+ )
+ hidden_states_for_controlnetxs = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(self.transformer.transformer_blocks[i]),
+ hidden_states_for_controlnetxs,
+ emb_for_controlnetxs,
+ image_rotary_emb_for_controlnetxs,
+ **ckpt_kwargs,
+ )
+ hidden_states = self.up_projectors[i](
+ hidden_states_for_controlnetxs, emb_for_controlnetxs, hidden_states
+ )
+ hidden_states, encoder_hidden_states = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(block),
+ hidden_states,
+ encoder_hidden_states,
+ emb,
+ image_rotary_emb,
+ **ckpt_kwargs,
+ )
+
+ else:
+ if i >= self.up_down_layer_start_idx and i <= self.up_down_layer_end_idx:
+ hidden_states_for_controlnetxs = self.down_projectors[i](
+ hidden_states, emb_for_controlnetxs, hidden_states_for_controlnetxs,
+ )
+ hidden_states_for_controlnetxs = self.transformer.transformer_blocks[i](
+ hidden_states=hidden_states_for_controlnetxs,
+ temb=emb_for_controlnetxs,
+ image_rotary_emb=image_rotary_emb_for_controlnetxs,
+ )
+ hidden_states = self.up_projectors[i](
+ hidden_states_for_controlnetxs, emb_for_controlnetxs, hidden_states
+ )
+ hidden_states, encoder_hidden_states = block(
+ hidden_states=hidden_states,
+ encoder_hidden_states=encoder_hidden_states,
+ temb=emb,
+ image_rotary_emb=image_rotary_emb,
+ )
+
+ if not main_transformer.config.use_rotary_positional_embeddings:
+ # CogVideoX-2B
+ hidden_states = main_transformer.norm_final(hidden_states)
+ else:
+ # CogVideoX-5B
+ hidden_states = torch.cat([encoder_hidden_states, hidden_states], dim=1)
+ hidden_states = main_transformer.norm_final(hidden_states)
+ hidden_states = hidden_states[:, text_seq_length:]
+
+ # 4. Final block
+ hidden_states = main_transformer.norm_out(hidden_states, temb=emb)
+ hidden_states = main_transformer.proj_out(hidden_states)
+
+ # 5. Unpatchify
+ p = main_transformer.config.patch_size
+ p_t = main_transformer.config.patch_size_t
+
+ if p_t is None:
+ output = hidden_states.reshape(batch_size, num_frames, height // p, width // p, -1, p, p)
+ output = output.permute(0, 1, 4, 2, 5, 3, 6).flatten(5, 6).flatten(3, 4)
+ else:
+ output = hidden_states.reshape(
+ batch_size, (num_frames + p_t - 1) // p_t, height // p, width // p, -1, p_t, p, p
+ )
+ output = output.permute(0, 1, 5, 4, 2, 6, 3, 7).flatten(6, 7).flatten(4, 5).flatten(1, 2)
+
+ if USE_PEFT_BACKEND:
+ # remove `lora_scale` from each PEFT layer
+ unscale_lora_layers(main_transformer, lora_scale)
+
+ if not return_dict:
+ return (output,)
+
+ rets = {}
+ rets['sample'] = output
+
+ return rets
diff --git a/finetune/models/camera_controller/flash_attn3.py b/finetune/models/camera_controller/flash_attn3.py
new file mode 100644
index 0000000000000000000000000000000000000000..fdb4ff46719e31072abf5fa1a1adaa473658724b
--- /dev/null
+++ b/finetune/models/camera_controller/flash_attn3.py
@@ -0,0 +1,141 @@
+import inspect
+import math
+from typing import Callable, List, Optional, Tuple, Union
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.models.attention_processor import Attention, AttnProcessor2_0
+
+try:
+ import flash_attn_interface
+ IS_FLASH3_AVAILABLE = True
+except Exception as e:
+ print(f"flash_attn3 load fail: {e}")
+ IS_FLASH3_AVAILABLE = False
+
+
+class CogVideoXFlashAttn3ControlnetXsProcessor:
+ def __init__(self):
+ pass
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ image_rotary_emb: Optional[torch.Tensor] = None,
+ ) -> torch.Tensor:
+
+ batch_size, sequence_length, _ = hidden_states.shape
+
+ if attention_mask is not None:
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+ attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1])
+
+ query = attn.to_q(hidden_states)
+ key = attn.to_k(hidden_states)
+ value = attn.to_v(hidden_states)
+
+ inner_dim = key.shape[-1]
+ head_dim = inner_dim // attn.heads
+
+ query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+ key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+ value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+
+ if attn.norm_q is not None:
+ query = attn.norm_q(query)
+ if attn.norm_k is not None:
+ key = attn.norm_k(key)
+
+ # Apply RoPE if needed
+ if image_rotary_emb is not None:
+ from diffusers.models.embeddings import apply_rotary_emb
+
+ query = apply_rotary_emb(query, image_rotary_emb)
+ if not attn.is_cross_attention:
+ key = apply_rotary_emb(key, image_rotary_emb)
+
+ hidden_states = flash_attn_interface.flash_attn_func(
+ query.transpose(1, 2), key.transpose(1, 2), value.transpose(1, 2)
+ )
+
+ hidden_states = hidden_states[0]
+
+ hidden_states = hidden_states.reshape(batch_size, -1, attn.heads * head_dim)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ return hidden_states
+
+class CogVideoXFlashAttn3Processor:
+ def __init__(self):
+ pass
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states: torch.Tensor,
+ attention_mask: Optional[torch.Tensor] = None,
+ image_rotary_emb: Optional[torch.Tensor] = None,
+ ) -> torch.Tensor:
+ text_seq_length = encoder_hidden_states.size(1)
+
+ hidden_states = torch.cat([encoder_hidden_states, hidden_states], dim=1)
+
+ batch_size, sequence_length, _ = (
+ hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape
+ )
+
+ if attention_mask is not None:
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+ attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1])
+
+ query = attn.to_q(hidden_states)
+ key = attn.to_k(hidden_states)
+ value = attn.to_v(hidden_states)
+
+ inner_dim = key.shape[-1]
+ head_dim = inner_dim // attn.heads
+
+ query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+ key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+ value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+
+ if attn.norm_q is not None:
+ query = attn.norm_q(query)
+ if attn.norm_k is not None:
+ key = attn.norm_k(key)
+
+ # Apply RoPE if needed
+ if image_rotary_emb is not None:
+ from diffusers.models.embeddings import apply_rotary_emb
+
+ query[:, :, text_seq_length:] = apply_rotary_emb(query[:, :, text_seq_length:], image_rotary_emb)
+ if not attn.is_cross_attention:
+ key[:, :, text_seq_length:] = apply_rotary_emb(key[:, :, text_seq_length:], image_rotary_emb)
+
+ hidden_states = flash_attn_interface.flash_attn_func(
+ query.transpose(1, 2), key.transpose(1, 2), value.transpose(1, 2)
+ )
+
+ hidden_states = hidden_states[0]
+
+ hidden_states = hidden_states.reshape(batch_size, -1, attn.heads * head_dim)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ encoder_hidden_states, hidden_states = hidden_states.split(
+ [text_seq_length, hidden_states.size(1) - text_seq_length], dim=1
+ )
+ return hidden_states, encoder_hidden_states
diff --git a/finetune/models/camera_controller/pipeline_cogvideox_image2video.py b/finetune/models/camera_controller/pipeline_cogvideox_image2video.py
new file mode 100644
index 0000000000000000000000000000000000000000..e623b3317dac005ce6119c296669e7c95c460d2d
--- /dev/null
+++ b/finetune/models/camera_controller/pipeline_cogvideox_image2video.py
@@ -0,0 +1,901 @@
+# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import inspect
+import math
+from typing import Any, Callable, Dict, List, Optional, Tuple, Union
+
+import PIL
+import torch
+from transformers import T5EncoderModel, T5Tokenizer
+
+from diffusers.callbacks import MultiPipelineCallbacks, PipelineCallback
+from diffusers.image_processor import PipelineImageInput
+from diffusers.loaders import CogVideoXLoraLoaderMixin
+from diffusers.models import AutoencoderKLCogVideoX, CogVideoXTransformer3DModel
+from diffusers.models.embeddings import get_3d_rotary_pos_embed
+from diffusers.pipelines.pipeline_utils import DiffusionPipeline
+from diffusers.schedulers import CogVideoXDDIMScheduler, CogVideoXDPMScheduler
+from diffusers.utils import (
+ logging,
+ replace_example_docstring,
+)
+from diffusers.utils.torch_utils import randn_tensor
+from diffusers.video_processor import VideoProcessor
+from diffusers.pipelines.cogvideo.pipeline_output import CogVideoXPipelineOutput
+
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+EXAMPLE_DOC_STRING = """
+ Examples:
+ ```py
+ >>> import torch
+ >>> from diffusers import CogVideoXImageToVideoPipeline
+ >>> from diffusers.utils import export_to_video, load_image
+
+ >>> pipe = CogVideoXImageToVideoPipeline.from_pretrained("THUDM/CogVideoX-5b-I2V", torch_dtype=torch.bfloat16)
+ >>> pipe.to("cuda")
+
+ >>> prompt = "An astronaut hatching from an egg, on the surface of the moon, the darkness and depth of space realised in the background. High quality, ultrarealistic detail and breath-taking movie-like camera shot."
+ >>> image = load_image(
+ ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
+ ... )
+ >>> video = pipe(image, prompt, use_dynamic_cfg=True)
+ >>> export_to_video(video.frames[0], "output.mp4", fps=8)
+ ```
+"""
+
+
+# Similar to diffusers.pipelines.hunyuandit.pipeline_hunyuandit.get_resize_crop_region_for_grid
+def get_resize_crop_region_for_grid(src, tgt_width, tgt_height):
+ tw = tgt_width
+ th = tgt_height
+ h, w = src
+ r = h / w
+ if r > (th / tw):
+ resize_height = th
+ resize_width = int(round(th / h * w))
+ else:
+ resize_width = tw
+ resize_height = int(round(tw / w * h))
+
+ crop_top = int(round((th - resize_height) / 2.0))
+ crop_left = int(round((tw - resize_width) / 2.0))
+
+ return (crop_top, crop_left), (crop_top + resize_height, crop_left + resize_width)
+
+
+# Copied from diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion.retrieve_timesteps
+def retrieve_timesteps(
+ scheduler,
+ num_inference_steps: Optional[int] = None,
+ device: Optional[Union[str, torch.device]] = None,
+ timesteps: Optional[List[int]] = None,
+ sigmas: Optional[List[float]] = None,
+ **kwargs,
+):
+ r"""
+ Calls the scheduler's `set_timesteps` method and retrieves timesteps from the scheduler after the call. Handles
+ custom timesteps. Any kwargs will be supplied to `scheduler.set_timesteps`.
+
+ Args:
+ scheduler (`SchedulerMixin`):
+ The scheduler to get timesteps from.
+ num_inference_steps (`int`):
+ The number of diffusion steps used when generating samples with a pre-trained model. If used, `timesteps`
+ must be `None`.
+ device (`str` or `torch.device`, *optional*):
+ The device to which the timesteps should be moved to. If `None`, the timesteps are not moved.
+ timesteps (`List[int]`, *optional*):
+ Custom timesteps used to override the timestep spacing strategy of the scheduler. If `timesteps` is passed,
+ `num_inference_steps` and `sigmas` must be `None`.
+ sigmas (`List[float]`, *optional*):
+ Custom sigmas used to override the timestep spacing strategy of the scheduler. If `sigmas` is passed,
+ `num_inference_steps` and `timesteps` must be `None`.
+
+ Returns:
+ `Tuple[torch.Tensor, int]`: A tuple where the first element is the timestep schedule from the scheduler and the
+ second element is the number of inference steps.
+ """
+ if timesteps is not None and sigmas is not None:
+ raise ValueError("Only one of `timesteps` or `sigmas` can be passed. Please choose one to set custom values")
+ if timesteps is not None:
+ accepts_timesteps = "timesteps" in set(inspect.signature(scheduler.set_timesteps).parameters.keys())
+ if not accepts_timesteps:
+ raise ValueError(
+ f"The current scheduler class {scheduler.__class__}'s `set_timesteps` does not support custom"
+ f" timestep schedules. Please check whether you are using the correct scheduler."
+ )
+ scheduler.set_timesteps(timesteps=timesteps, device=device, **kwargs)
+ timesteps = scheduler.timesteps
+ num_inference_steps = len(timesteps)
+ elif sigmas is not None:
+ accept_sigmas = "sigmas" in set(inspect.signature(scheduler.set_timesteps).parameters.keys())
+ if not accept_sigmas:
+ raise ValueError(
+ f"The current scheduler class {scheduler.__class__}'s `set_timesteps` does not support custom"
+ f" sigmas schedules. Please check whether you are using the correct scheduler."
+ )
+ scheduler.set_timesteps(sigmas=sigmas, device=device, **kwargs)
+ timesteps = scheduler.timesteps
+ num_inference_steps = len(timesteps)
+ else:
+ scheduler.set_timesteps(num_inference_steps, device=device, **kwargs)
+ timesteps = scheduler.timesteps
+ return timesteps, num_inference_steps
+
+
+# Copied from diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion_img2img.retrieve_latents
+def retrieve_latents(
+ encoder_output: torch.Tensor, generator: Optional[torch.Generator] = None, sample_mode: str = "sample"
+):
+ if hasattr(encoder_output, "latent_dist") and sample_mode == "sample":
+ return encoder_output.latent_dist.sample(generator)
+ elif hasattr(encoder_output, "latent_dist") and sample_mode == "argmax":
+ return encoder_output.latent_dist.mode()
+ elif hasattr(encoder_output, "latents"):
+ return encoder_output.latents
+ else:
+ raise AttributeError("Could not access latents of provided encoder_output")
+
+
+class CogVideoXImageToVideoPipeline(DiffusionPipeline, CogVideoXLoraLoaderMixin):
+ r"""
+ Pipeline for image-to-video generation using CogVideoX.
+
+ This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods the
+ library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)
+
+ Args:
+ vae ([`AutoencoderKL`]):
+ Variational Auto-Encoder (VAE) Model to encode and decode videos to and from latent representations.
+ text_encoder ([`T5EncoderModel`]):
+ Frozen text-encoder. CogVideoX uses
+ [T5](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5EncoderModel); specifically the
+ [t5-v1_1-xxl](https://huggingface.co/PixArt-alpha/PixArt-alpha/tree/main/t5-v1_1-xxl) variant.
+ tokenizer (`T5Tokenizer`):
+ Tokenizer of class
+ [T5Tokenizer](https://huggingface.co/docs/transformers/model_doc/t5#transformers.T5Tokenizer).
+ transformer ([`CogVideoXTransformer3DModel`]):
+ A text conditioned `CogVideoXTransformer3DModel` to denoise the encoded video latents.
+ scheduler ([`SchedulerMixin`]):
+ A scheduler to be used in combination with `transformer` to denoise the encoded video latents.
+ """
+
+ _optional_components = []
+ model_cpu_offload_seq = "text_encoder->transformer->vae"
+
+ _callback_tensor_inputs = [
+ "latents",
+ "prompt_embeds",
+ "negative_prompt_embeds",
+ ]
+
+ def __init__(
+ self,
+ tokenizer: T5Tokenizer,
+ text_encoder: T5EncoderModel,
+ vae: AutoencoderKLCogVideoX,
+ transformer: CogVideoXTransformer3DModel,
+ scheduler: Union[CogVideoXDDIMScheduler, CogVideoXDPMScheduler],
+ ):
+ super().__init__()
+
+ self.register_modules(
+ tokenizer=tokenizer,
+ text_encoder=text_encoder,
+ vae=vae,
+ transformer=transformer,
+ scheduler=scheduler,
+ )
+ self.vae_scale_factor_spatial = (
+ 2 ** (len(self.vae.config.block_out_channels) - 1) if hasattr(self, "vae") and self.vae is not None else 8
+ )
+ self.vae_scale_factor_temporal = (
+ self.vae.config.temporal_compression_ratio if hasattr(self, "vae") and self.vae is not None else 4
+ )
+ self.vae_scaling_factor_image = (
+ self.vae.config.scaling_factor if hasattr(self, "vae") and self.vae is not None else 0.7
+ )
+
+ self.video_processor = VideoProcessor(vae_scale_factor=self.vae_scale_factor_spatial)
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline._get_t5_prompt_embeds
+ def _get_t5_prompt_embeds(
+ self,
+ prompt: Union[str, List[str]] = None,
+ num_videos_per_prompt: int = 1,
+ max_sequence_length: int = 226,
+ device: Optional[torch.device] = None,
+ dtype: Optional[torch.dtype] = None,
+ ):
+ device = device or self._execution_device
+ dtype = dtype or self.text_encoder.dtype
+
+ prompt = [prompt] if isinstance(prompt, str) else prompt
+ batch_size = len(prompt)
+
+ text_inputs = self.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=max_sequence_length,
+ truncation=True,
+ add_special_tokens=True,
+ return_tensors="pt",
+ )
+ text_input_ids = text_inputs.input_ids
+ untruncated_ids = self.tokenizer(prompt, padding="longest", return_tensors="pt").input_ids
+
+ if untruncated_ids.shape[-1] >= text_input_ids.shape[-1] and not torch.equal(text_input_ids, untruncated_ids):
+ removed_text = self.tokenizer.batch_decode(untruncated_ids[:, max_sequence_length - 1 : -1])
+ logger.warning(
+ "The following part of your input was truncated because `max_sequence_length` is set to "
+ f" {max_sequence_length} tokens: {removed_text}"
+ )
+
+ prompt_embeds = self.text_encoder(text_input_ids.to(device))[0]
+ prompt_embeds = prompt_embeds.to(dtype=dtype, device=device)
+
+ # duplicate text embeddings for each generation per prompt, using mps friendly method
+ _, seq_len, _ = prompt_embeds.shape
+ prompt_embeds = prompt_embeds.repeat(1, num_videos_per_prompt, 1)
+ prompt_embeds = prompt_embeds.view(batch_size * num_videos_per_prompt, seq_len, -1)
+
+ return prompt_embeds
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline.encode_prompt
+ def encode_prompt(
+ self,
+ prompt: Union[str, List[str]],
+ negative_prompt: Optional[Union[str, List[str]]] = None,
+ do_classifier_free_guidance: bool = True,
+ num_videos_per_prompt: int = 1,
+ prompt_embeds: Optional[torch.Tensor] = None,
+ negative_prompt_embeds: Optional[torch.Tensor] = None,
+ max_sequence_length: int = 226,
+ device: Optional[torch.device] = None,
+ dtype: Optional[torch.dtype] = None,
+ ):
+ r"""
+ Encodes the prompt into text encoder hidden states.
+
+ Args:
+ prompt (`str` or `List[str]`, *optional*):
+ prompt to be encoded
+ negative_prompt (`str` or `List[str]`, *optional*):
+ The prompt or prompts not to guide the image generation. If not defined, one has to pass
+ `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
+ less than `1`).
+ do_classifier_free_guidance (`bool`, *optional*, defaults to `True`):
+ Whether to use classifier free guidance or not.
+ num_videos_per_prompt (`int`, *optional*, defaults to 1):
+ Number of videos that should be generated per prompt. torch device to place the resulting embeddings on
+ prompt_embeds (`torch.Tensor`, *optional*):
+ Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
+ provided, text embeddings will be generated from `prompt` input argument.
+ negative_prompt_embeds (`torch.Tensor`, *optional*):
+ Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
+ weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
+ argument.
+ device: (`torch.device`, *optional*):
+ torch device
+ dtype: (`torch.dtype`, *optional*):
+ torch dtype
+ """
+ device = device or self._execution_device
+
+ prompt = [prompt] if isinstance(prompt, str) else prompt
+ if prompt is not None:
+ batch_size = len(prompt)
+ else:
+ batch_size = prompt_embeds.shape[0]
+
+ if prompt_embeds is None:
+ prompt_embeds = self._get_t5_prompt_embeds(
+ prompt=prompt,
+ num_videos_per_prompt=num_videos_per_prompt,
+ max_sequence_length=max_sequence_length,
+ device=device,
+ dtype=dtype,
+ )
+
+ if do_classifier_free_guidance and negative_prompt_embeds is None:
+ negative_prompt = negative_prompt or ""
+ negative_prompt = batch_size * [negative_prompt] if isinstance(negative_prompt, str) else negative_prompt
+
+ if prompt is not None and type(prompt) is not type(negative_prompt):
+ raise TypeError(
+ f"`negative_prompt` should be the same type to `prompt`, but got {type(negative_prompt)} !="
+ f" {type(prompt)}."
+ )
+ elif batch_size != len(negative_prompt):
+ raise ValueError(
+ f"`negative_prompt`: {negative_prompt} has batch size {len(negative_prompt)}, but `prompt`:"
+ f" {prompt} has batch size {batch_size}. Please make sure that passed `negative_prompt` matches"
+ " the batch size of `prompt`."
+ )
+
+ negative_prompt_embeds = self._get_t5_prompt_embeds(
+ prompt=negative_prompt,
+ num_videos_per_prompt=num_videos_per_prompt,
+ max_sequence_length=max_sequence_length,
+ device=device,
+ dtype=dtype,
+ )
+
+ return prompt_embeds, negative_prompt_embeds
+
+ def prepare_latents(
+ self,
+ image: torch.Tensor,
+ batch_size: int = 1,
+ num_channels_latents: int = 16,
+ num_frames: int = 13,
+ height: int = 60,
+ width: int = 90,
+ dtype: Optional[torch.dtype] = None,
+ device: Optional[torch.device] = None,
+ generator: Optional[torch.Generator] = None,
+ latents: Optional[torch.Tensor] = None,
+ ):
+ if isinstance(generator, list) and len(generator) != batch_size:
+ raise ValueError(
+ f"You have passed a list of generators of length {len(generator)}, but requested an effective batch"
+ f" size of {batch_size}. Make sure the batch size matches the length of the generators."
+ )
+
+ num_frames = (num_frames - 1) // self.vae_scale_factor_temporal + 1
+ shape = (
+ batch_size,
+ num_frames,
+ num_channels_latents,
+ height // self.vae_scale_factor_spatial,
+ width // self.vae_scale_factor_spatial,
+ )
+
+ # For CogVideoX1.5, the latent should add 1 for padding (Not use)
+ if self.transformer.config.patch_size_t is not None:
+ shape = shape[:1] + (shape[1] + shape[1] % self.transformer.config.patch_size_t,) + shape[2:]
+
+ image = image.unsqueeze(2) # [B, C, F, H, W]
+
+ if isinstance(generator, list):
+ image_latents = [
+ retrieve_latents(self.vae.encode(image[i].unsqueeze(0)), generator[i]) for i in range(batch_size)
+ ]
+ else:
+ image_latents = [retrieve_latents(self.vae.encode(img.unsqueeze(0)), generator) for img in image]
+
+ image_latents = torch.cat(image_latents, dim=0).to(dtype).permute(0, 2, 1, 3, 4) # [B, F, C, H, W]
+
+ if not self.vae.config.invert_scale_latents:
+ image_latents = self.vae_scaling_factor_image * image_latents
+ else:
+ # This is awkward but required because the CogVideoX team forgot to multiply the
+ # scaling factor during training :)
+ # image_latents = 1 / self.vae_scaling_factor_image * image_latents
+ pass
+
+ padding_shape = (
+ batch_size,
+ num_frames - 1,
+ num_channels_latents,
+ height // self.vae_scale_factor_spatial,
+ width // self.vae_scale_factor_spatial,
+ )
+
+ latent_padding = torch.zeros(padding_shape, device=device, dtype=dtype)
+ image_latents = torch.cat([image_latents, latent_padding], dim=1)
+
+ # Select the first frame along the second dimension
+ if self.transformer.config.patch_size_t is not None:
+ first_frame = image_latents[:, : image_latents.size(1) % self.transformer.config.patch_size_t, ...]
+ image_latents = torch.cat([first_frame, image_latents], dim=1)
+
+ if latents is None:
+ latents = randn_tensor(shape, generator=generator, device=device, dtype=dtype)
+ else:
+ latents = latents.to(device)
+
+ # scale the initial noise by the standard deviation required by the scheduler
+ latents = latents * self.scheduler.init_noise_sigma
+ return latents, image_latents
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline.decode_latents
+ def decode_latents(self, latents: torch.Tensor) -> torch.Tensor:
+ latents = latents.permute(0, 2, 1, 3, 4) # [batch_size, num_channels, num_frames, height, width]
+ latents = 1 / self.vae_scaling_factor_image * latents
+
+ frames = self.vae.decode(latents).sample
+ return frames
+
+ # Copied from diffusers.pipelines.animatediff.pipeline_animatediff_video2video.AnimateDiffVideoToVideoPipeline.get_timesteps
+ def get_timesteps(self, num_inference_steps, timesteps, strength, device):
+ # get the original timestep using init_timestep
+ init_timestep = min(int(num_inference_steps * strength), num_inference_steps)
+
+ t_start = max(num_inference_steps - init_timestep, 0)
+ timesteps = timesteps[t_start * self.scheduler.order :]
+
+ return timesteps, num_inference_steps - t_start
+
+ # Copied from diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion.StableDiffusionPipeline.prepare_extra_step_kwargs
+ def prepare_extra_step_kwargs(self, generator, eta):
+ # prepare extra kwargs for the scheduler step, since not all schedulers have the same signature
+ # eta (η) is only used with the DDIMScheduler, it will be ignored for other schedulers.
+ # eta corresponds to η in DDIM paper: https://arxiv.org/abs/2010.02502
+ # and should be between [0, 1]
+
+ accepts_eta = "eta" in set(inspect.signature(self.scheduler.step).parameters.keys())
+ extra_step_kwargs = {}
+ if accepts_eta:
+ extra_step_kwargs["eta"] = eta
+
+ # check if the scheduler accepts generator
+ accepts_generator = "generator" in set(inspect.signature(self.scheduler.step).parameters.keys())
+ if accepts_generator:
+ extra_step_kwargs["generator"] = generator
+ return extra_step_kwargs
+
+ def check_inputs(
+ self,
+ image,
+ prompt,
+ height,
+ width,
+ negative_prompt,
+ callback_on_step_end_tensor_inputs,
+ latents=None,
+ prompt_embeds=None,
+ negative_prompt_embeds=None,
+ ):
+ if (
+ not isinstance(image, torch.Tensor)
+ and not isinstance(image, PIL.Image.Image)
+ and not isinstance(image, list)
+ ):
+ raise ValueError(
+ "`image` has to be of type `torch.Tensor` or `PIL.Image.Image` or `List[PIL.Image.Image]` but is"
+ f" {type(image)}"
+ )
+
+ if height % 8 != 0 or width % 8 != 0:
+ raise ValueError(f"`height` and `width` have to be divisible by 8 but are {height} and {width}.")
+
+ if callback_on_step_end_tensor_inputs is not None and not all(
+ k in self._callback_tensor_inputs for k in callback_on_step_end_tensor_inputs
+ ):
+ raise ValueError(
+ f"`callback_on_step_end_tensor_inputs` has to be in {self._callback_tensor_inputs}, but found {[k for k in callback_on_step_end_tensor_inputs if k not in self._callback_tensor_inputs]}"
+ )
+ if prompt is not None and prompt_embeds is not None:
+ raise ValueError(
+ f"Cannot forward both `prompt`: {prompt} and `prompt_embeds`: {prompt_embeds}. Please make sure to"
+ " only forward one of the two."
+ )
+ elif prompt is None and prompt_embeds is None:
+ raise ValueError(
+ "Provide either `prompt` or `prompt_embeds`. Cannot leave both `prompt` and `prompt_embeds` undefined."
+ )
+ elif prompt is not None and (not isinstance(prompt, str) and not isinstance(prompt, list)):
+ raise ValueError(f"`prompt` has to be of type `str` or `list` but is {type(prompt)}")
+
+ if prompt is not None and negative_prompt_embeds is not None:
+ raise ValueError(
+ f"Cannot forward both `prompt`: {prompt} and `negative_prompt_embeds`:"
+ f" {negative_prompt_embeds}. Please make sure to only forward one of the two."
+ )
+
+ if negative_prompt is not None and negative_prompt_embeds is not None:
+ raise ValueError(
+ f"Cannot forward both `negative_prompt`: {negative_prompt} and `negative_prompt_embeds`:"
+ f" {negative_prompt_embeds}. Please make sure to only forward one of the two."
+ )
+
+ if prompt_embeds is not None and negative_prompt_embeds is not None:
+ if prompt_embeds.shape != negative_prompt_embeds.shape:
+ raise ValueError(
+ "`prompt_embeds` and `negative_prompt_embeds` must have the same shape when passed directly, but"
+ f" got: `prompt_embeds` {prompt_embeds.shape} != `negative_prompt_embeds`"
+ f" {negative_prompt_embeds.shape}."
+ )
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline.fuse_qkv_projections
+ def fuse_qkv_projections(self) -> None:
+ r"""Enables fused QKV projections."""
+ self.fusing_transformer = True
+ self.transformer.fuse_qkv_projections()
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline.unfuse_qkv_projections
+ def unfuse_qkv_projections(self) -> None:
+ r"""Disable QKV projection fusion if enabled."""
+ if not self.fusing_transformer:
+ logger.warning("The Transformer was not initially fused for QKV projections. Doing nothing.")
+ else:
+ self.transformer.unfuse_qkv_projections()
+ self.fusing_transformer = False
+
+ # Copied from diffusers.pipelines.cogvideo.pipeline_cogvideox.CogVideoXPipeline._prepare_rotary_positional_embeddings
+ def _prepare_rotary_positional_embeddings(
+ self,
+ height: int,
+ width: int,
+ num_frames: int,
+ device: torch.device,
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ grid_height = height // (self.vae_scale_factor_spatial * self.transformer.config.patch_size)
+ grid_width = width // (self.vae_scale_factor_spatial * self.transformer.config.patch_size)
+
+ p = self.transformer.config.patch_size
+ p_t = self.transformer.config.patch_size_t
+
+ base_size_width = grid_width
+ base_size_height = grid_height
+
+ if p_t is None:
+ # CogVideoX 1.0
+ grid_crops_coords = get_resize_crop_region_for_grid(
+ (grid_height, grid_width), base_size_width, base_size_height
+ )
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=self.transformer.config.attention_head_dim,
+ crops_coords=grid_crops_coords,
+ grid_size=(grid_height, grid_width),
+ temporal_size=num_frames,
+ device=device,
+ )
+ else:
+ # CogVideoX 1.5
+ base_num_frames = (num_frames + p_t - 1) // p_t
+
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=self.transformer.config.attention_head_dim,
+ crops_coords=None,
+ grid_size=(grid_height, grid_width),
+ temporal_size=base_num_frames,
+ grid_type="slice",
+ max_size=(base_size_height, base_size_width),
+ device=device,
+ )
+
+ return freqs_cos, freqs_sin
+
+ @property
+ def guidance_scale(self):
+ return self._guidance_scale
+
+ @property
+ def num_timesteps(self):
+ return self._num_timesteps
+
+ @property
+ def attention_kwargs(self):
+ return self._attention_kwargs
+
+ @property
+ def interrupt(self):
+ return self._interrupt
+
+ @torch.no_grad()
+ @replace_example_docstring(EXAMPLE_DOC_STRING)
+ def __call__(
+ self,
+ image: PipelineImageInput,
+ prompt: Optional[Union[str, List[str]]] = None,
+ negative_prompt: Optional[Union[str, List[str]]] = None,
+ height: Optional[int] = None,
+ width: Optional[int] = None,
+ num_frames: int = 49,
+ num_inference_steps: int = 50,
+ timesteps: Optional[List[int]] = None,
+ guidance_scale: float = 6,
+ use_dynamic_cfg: bool = False,
+ num_videos_per_prompt: int = 1,
+ eta: float = 0.0,
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
+ latents: Optional[torch.FloatTensor] = None,
+ prompt_embeds: Optional[torch.FloatTensor] = None,
+ negative_prompt_embeds: Optional[torch.FloatTensor] = None,
+ output_type: str = "pil",
+ return_dict: bool = True,
+ attention_kwargs: Optional[Dict[str, Any]] = None,
+ callback_on_step_end: Optional[
+ Union[Callable[[int, int, Dict], None], PipelineCallback, MultiPipelineCallbacks]
+ ] = None,
+ callback_on_step_end_tensor_inputs: List[str] = ["latents"],
+ max_sequence_length: int = 226,
+ noise_shaping=None,
+ noise_shaping_minimum_timesteps=None,
+ latent_scene_frames=None,
+ latent_scene_mask=None,
+ ) -> Union[CogVideoXPipelineOutput, Tuple]:
+ """
+ Function invoked when calling the pipeline for generation.
+
+ Args:
+ image (`PipelineImageInput`):
+ The input image to condition the generation on. Must be an image, a list of images or a `torch.Tensor`.
+ prompt (`str` or `List[str]`, *optional*):
+ The prompt or prompts to guide the image generation. If not defined, one has to pass `prompt_embeds`.
+ instead.
+ negative_prompt (`str` or `List[str]`, *optional*):
+ The prompt or prompts not to guide the image generation. If not defined, one has to pass
+ `negative_prompt_embeds` instead. Ignored when not using guidance (i.e., ignored if `guidance_scale` is
+ less than `1`).
+ height (`int`, *optional*, defaults to self.transformer.config.sample_height * self.vae_scale_factor_spatial):
+ The height in pixels of the generated image. This is set to 480 by default for the best results.
+ width (`int`, *optional*, defaults to self.transformer.config.sample_height * self.vae_scale_factor_spatial):
+ The width in pixels of the generated image. This is set to 720 by default for the best results.
+ num_frames (`int`, defaults to `48`):
+ Number of frames to generate. Must be divisible by self.vae_scale_factor_temporal. Generated video will
+ contain 1 extra frame because CogVideoX is conditioned with (num_seconds * fps + 1) frames where
+ num_seconds is 6 and fps is 8. However, since videos can be saved at any fps, the only condition that
+ needs to be satisfied is that of divisibility mentioned above.
+ num_inference_steps (`int`, *optional*, defaults to 50):
+ The number of denoising steps. More denoising steps usually lead to a higher quality image at the
+ expense of slower inference.
+ timesteps (`List[int]`, *optional*):
+ Custom timesteps to use for the denoising process with schedulers which support a `timesteps` argument
+ in their `set_timesteps` method. If not defined, the default behavior when `num_inference_steps` is
+ passed will be used. Must be in descending order.
+ guidance_scale (`float`, *optional*, defaults to 7.0):
+ Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598).
+ `guidance_scale` is defined as `w` of equation 2. of [Imagen
+ Paper](https://arxiv.org/pdf/2205.11487.pdf). Guidance scale is enabled by setting `guidance_scale >
+ 1`. Higher guidance scale encourages to generate images that are closely linked to the text `prompt`,
+ usually at the expense of lower image quality.
+ num_videos_per_prompt (`int`, *optional*, defaults to 1):
+ The number of videos to generate per prompt.
+ generator (`torch.Generator` or `List[torch.Generator]`, *optional*):
+ One or a list of [torch generator(s)](https://pytorch.org/docs/stable/generated/torch.Generator.html)
+ to make generation deterministic.
+ latents (`torch.FloatTensor`, *optional*):
+ Pre-generated noisy latents, sampled from a Gaussian distribution, to be used as inputs for image
+ generation. Can be used to tweak the same generation with different prompts. If not provided, a latents
+ tensor will ge generated by sampling using the supplied random `generator`.
+ prompt_embeds (`torch.FloatTensor`, *optional*):
+ Pre-generated text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt weighting. If not
+ provided, text embeddings will be generated from `prompt` input argument.
+ negative_prompt_embeds (`torch.FloatTensor`, *optional*):
+ Pre-generated negative text embeddings. Can be used to easily tweak text inputs, *e.g.* prompt
+ weighting. If not provided, negative_prompt_embeds will be generated from `negative_prompt` input
+ argument.
+ output_type (`str`, *optional*, defaults to `"pil"`):
+ The output format of the generate image. Choose between
+ [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` or `np.array`.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`] instead
+ of a plain tuple.
+ attention_kwargs (`dict`, *optional*):
+ A kwargs dictionary that if specified is passed along to the `AttentionProcessor` as defined under
+ `self.processor` in
+ [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py).
+ callback_on_step_end (`Callable`, *optional*):
+ A function that calls at the end of each denoising steps during the inference. The function is called
+ with the following arguments: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int,
+ callback_kwargs: Dict)`. `callback_kwargs` will include a list of all tensors as specified by
+ `callback_on_step_end_tensor_inputs`.
+ callback_on_step_end_tensor_inputs (`List`, *optional*):
+ The list of tensor inputs for the `callback_on_step_end` function. The tensors specified in the list
+ will be passed as `callback_kwargs` argument. You will only be able to include variables listed in the
+ `._callback_tensor_inputs` attribute of your pipeline class.
+ max_sequence_length (`int`, defaults to `226`):
+ Maximum sequence length in encoded prompt. Must be consistent with
+ `self.transformer.config.max_text_seq_length` otherwise may lead to poor results.
+
+ Examples:
+
+ Returns:
+ [`~pipelines.cogvideo.pipeline_output.CogVideoXPipelineOutput`] or `tuple`:
+ [`~pipelines.cogvideo.pipeline_output.CogVideoXPipelineOutput`] if `return_dict` is True, otherwise a
+ `tuple`. When returning a tuple, the first element is a list with the generated images.
+ """
+
+ if isinstance(callback_on_step_end, (PipelineCallback, MultiPipelineCallbacks)):
+ callback_on_step_end_tensor_inputs = callback_on_step_end.tensor_inputs
+
+ height = height or self.transformer.config.sample_height * self.vae_scale_factor_spatial
+ width = width or self.transformer.config.sample_width * self.vae_scale_factor_spatial
+ num_frames = num_frames or self.transformer.config.sample_frames
+
+ num_videos_per_prompt = 1
+
+ # 1. Check inputs. Raise error if not correct
+ self.check_inputs(
+ image=image,
+ prompt=prompt,
+ height=height,
+ width=width,
+ negative_prompt=negative_prompt,
+ callback_on_step_end_tensor_inputs=callback_on_step_end_tensor_inputs,
+ latents=latents,
+ prompt_embeds=prompt_embeds,
+ negative_prompt_embeds=negative_prompt_embeds,
+ )
+ self._guidance_scale = guidance_scale
+ self._attention_kwargs = attention_kwargs
+ self._interrupt = False
+
+ # 2. Default call parameters
+ if prompt is not None and isinstance(prompt, str):
+ batch_size = 1
+ elif prompt is not None and isinstance(prompt, list):
+ batch_size = len(prompt)
+ else:
+ batch_size = prompt_embeds.shape[0]
+
+ device = self._execution_device
+
+ # here `guidance_scale` is defined analog to the guidance weight `w` of equation (2)
+ # of the Imagen paper: https://arxiv.org/pdf/2205.11487.pdf . `guidance_scale = 1`
+ # corresponds to doing no classifier free guidance.
+ do_classifier_free_guidance = guidance_scale > 1.0
+
+ # 3. Encode input prompt
+ prompt_embeds, negative_prompt_embeds = self.encode_prompt(
+ prompt=prompt,
+ negative_prompt=negative_prompt,
+ do_classifier_free_guidance=do_classifier_free_guidance,
+ num_videos_per_prompt=num_videos_per_prompt,
+ prompt_embeds=prompt_embeds,
+ negative_prompt_embeds=negative_prompt_embeds,
+ max_sequence_length=max_sequence_length,
+ device=device,
+ )
+ if do_classifier_free_guidance:
+ prompt_embeds = torch.cat([negative_prompt_embeds, prompt_embeds], dim=0)
+
+ # 4. Prepare timesteps
+ timesteps, num_inference_steps = retrieve_timesteps(self.scheduler, num_inference_steps, device, timesteps)
+ self._num_timesteps = len(timesteps)
+
+ # 5. Prepare latents
+ latent_frames = (num_frames - 1) // self.vae_scale_factor_temporal + 1
+
+ # For CogVideoX 1.5, the latent frames should be padded to make it divisible by patch_size_t
+ patch_size_t = self.transformer.config.patch_size_t
+ additional_frames = 0
+ if patch_size_t is not None and latent_frames % patch_size_t != 0:
+ additional_frames = patch_size_t - latent_frames % patch_size_t
+ num_frames += additional_frames * self.vae_scale_factor_temporal
+
+ image = self.video_processor.preprocess(image, height=height, width=width).to(
+ device, dtype=prompt_embeds.dtype
+ )
+
+ latent_channels = self.transformer.config.in_channels // 2
+ latents, image_latents = self.prepare_latents(
+ image,
+ batch_size * num_videos_per_prompt,
+ latent_channels,
+ num_frames,
+ height,
+ width,
+ prompt_embeds.dtype,
+ device,
+ generator,
+ latents,
+ )
+
+ # 6. Prepare extra step kwargs. TODO: Logic should ideally just be moved out of the pipeline
+ extra_step_kwargs = self.prepare_extra_step_kwargs(generator, eta)
+
+ # 7. Create rotary embeds if required
+ image_rotary_emb = (
+ self._prepare_rotary_positional_embeddings(height, width, latents.size(1), device)
+ if self.transformer.config.use_rotary_positional_embeddings
+ else None
+ )
+
+ # 8. Create ofs embeds if required
+ ofs_emb = None if self.transformer.config.ofs_embed_dim is None else latents.new_full((1,), fill_value=2.0)
+
+ # 8. Denoising loop
+ num_warmup_steps = max(len(timesteps) - num_inference_steps * self.scheduler.order, 0)
+
+ with self.progress_bar(total=num_inference_steps) as progress_bar:
+ # for DPM-solver++
+ old_pred_original_sample = None
+ for i, t in enumerate(timesteps):
+ if self.interrupt:
+ continue
+
+ if noise_shaping and t >= noise_shaping_minimum_timesteps:
+ print(
+ i, t,
+ 'apply scene-constrained noise shaping',
+ )
+ noised_latent_scene_frames = self.scheduler.add_noise(latent_scene_frames, torch.randn_like(latent_scene_frames), t)
+ ratio = 1.0
+ new_latents = noised_latent_scene_frames * latent_scene_mask * ratio + \
+ (1. - latent_scene_mask * ratio) * latents
+ latents[:,1:,:,:,:] = new_latents.clone()[:,1:,:,:,:]
+
+ latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents
+ latent_model_input = self.scheduler.scale_model_input(latent_model_input, t)
+
+ latent_image_input = torch.cat([image_latents] * 2) if do_classifier_free_guidance else image_latents
+ latent_model_input = torch.cat([latent_model_input, latent_image_input], dim=2)
+
+ # broadcast to batch dimension in a way that's compatible with ONNX/Core ML
+ timestep = t.expand(latent_model_input.shape[0])
+
+ # predict noise model_output
+ noise_pred = self.transformer(
+ hidden_states=latent_model_input,
+ encoder_hidden_states=prompt_embeds,
+ timestep=timestep,
+ ofs=ofs_emb,
+ image_rotary_emb=image_rotary_emb,
+ attention_kwargs=attention_kwargs,
+ return_dict=False,
+ )[0]
+ noise_pred = noise_pred.float()
+
+ # perform guidance
+ if use_dynamic_cfg:
+ self._guidance_scale = 1 + guidance_scale * (
+ (1 - math.cos(math.pi * ((num_inference_steps - t.item()) / num_inference_steps) ** 5.0)) / 2
+ )
+ if do_classifier_free_guidance:
+ noise_pred_uncond, noise_pred_text = noise_pred.chunk(2)
+ noise_pred = noise_pred_uncond + self.guidance_scale * (noise_pred_text - noise_pred_uncond)
+
+ # compute the previous noisy sample x_t -> x_t-1
+ if not isinstance(self.scheduler, CogVideoXDPMScheduler):
+ latents = self.scheduler.step(noise_pred, t, latents, **extra_step_kwargs, return_dict=False)[0]
+ else:
+ latents, old_pred_original_sample = self.scheduler.step(
+ noise_pred,
+ old_pred_original_sample,
+ t,
+ timesteps[i - 1] if i > 0 else None,
+ latents,
+ **extra_step_kwargs,
+ return_dict=False,
+ )
+ latents = latents.to(prompt_embeds.dtype)
+
+ # call the callback, if provided
+ if callback_on_step_end is not None:
+ callback_kwargs = {}
+ for k in callback_on_step_end_tensor_inputs:
+ callback_kwargs[k] = locals()[k]
+ callback_outputs = callback_on_step_end(self, i, t, callback_kwargs)
+
+ latents = callback_outputs.pop("latents", latents)
+ prompt_embeds = callback_outputs.pop("prompt_embeds", prompt_embeds)
+ negative_prompt_embeds = callback_outputs.pop("negative_prompt_embeds", negative_prompt_embeds)
+
+ if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % self.scheduler.order == 0):
+ progress_bar.update()
+
+ if not output_type == "latent":
+ # Discard any padding frames that were added for CogVideoX 1.5
+ latents = latents[:, additional_frames:]
+ video = self.decode_latents(latents)
+ video = self.video_processor.postprocess_video(video=video, output_type=output_type)
+ else:
+ video = latents
+
+ # Offload all models
+ self.maybe_free_model_hooks()
+
+ if not return_dict:
+ return (video,)
+
+ return CogVideoXPipelineOutput(frames=video)
\ No newline at end of file
diff --git a/finetune/models/camera_controller/transformer.py b/finetune/models/camera_controller/transformer.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ad11ad8e6a1474428c7f5e8df6d08ba285086c6
--- /dev/null
+++ b/finetune/models/camera_controller/transformer.py
@@ -0,0 +1,695 @@
+# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import pdb
+from typing import Any, Dict, Optional, Tuple, Union
+
+import torch
+from torch import nn
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders import PeftAdapterMixin
+from diffusers.utils import USE_PEFT_BACKEND, is_torch_version, logging, scale_lora_layers, unscale_lora_layers
+from diffusers.utils.torch_utils import maybe_allow_in_graph
+from diffusers.models.attention import Attention, FeedForward
+from diffusers.models.attention_processor import AttentionProcessor, FusedCogVideoXAttnProcessor2_0
+
+from diffusers.models.embeddings import CogVideoXPatchEmbed, get_3d_sincos_pos_embed, TimestepEmbedding, Timesteps
+from diffusers.models.modeling_outputs import Transformer2DModelOutput
+from diffusers.models.modeling_utils import ModelMixin
+from diffusers.models.normalization import AdaLayerNorm, CogVideoXLayerNormZero
+
+import inspect
+import math
+from typing import Callable, List, Optional, Tuple, Union
+from diffusers.models.embeddings import apply_rotary_emb
+
+import torch
+import torch.nn.functional as F
+from torch import nn
+
+from diffusers.utils import deprecate, is_torch_xla_available, logging
+from diffusers.utils.torch_utils import is_torch_version, maybe_allow_in_graph
+
+try:
+ from .flash_attn3 import IS_FLASH3_AVAILABLE
+ from .flash_attn3 import flash_attn_interface
+ from .flash_attn3 import CogVideoXFlashAttn3ControlnetXsProcessor, CogVideoXFlashAttn3Processor
+except:
+ pass
+
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+class CogVideoXControlnetXsPatchEmbed(nn.Module):
+ def __init__(
+ self,
+ patch_size: int = 2,
+ patch_size_t: Optional[int] = None,
+ in_channels: int = 16,
+ embed_dim: int = 1920,
+ bias: bool = True,
+ sample_width: int = 90,
+ sample_height: int = 60,
+ sample_frames: int = 49,
+ temporal_compression_ratio: int = 4,
+ spatial_interpolation_scale: float = 1.875,
+ temporal_interpolation_scale: float = 1.0,
+ use_positional_embeddings: bool = True,
+ use_learned_positional_embeddings: bool = True,
+ ) -> None:
+ super().__init__()
+
+ self.patch_size = patch_size
+ self.patch_size_t = patch_size_t
+ self.embed_dim = embed_dim
+ self.sample_height = sample_height
+ self.sample_width = sample_width
+ self.sample_frames = sample_frames
+ self.temporal_compression_ratio = temporal_compression_ratio
+ self.spatial_interpolation_scale = spatial_interpolation_scale
+ self.temporal_interpolation_scale = temporal_interpolation_scale
+ self.use_positional_embeddings = use_positional_embeddings
+ self.use_learned_positional_embeddings = use_learned_positional_embeddings
+
+ if patch_size_t is None:
+ # CogVideoX 1.0 checkpoints
+ self.proj = nn.Conv2d(
+ in_channels, embed_dim, kernel_size=(patch_size, patch_size), stride=patch_size, bias=bias
+ )
+ else:
+ # CogVideoX 1.5 checkpoints
+ self.proj = nn.Linear(in_channels * patch_size * patch_size * patch_size_t, embed_dim)
+
+ if use_positional_embeddings or use_learned_positional_embeddings:
+ persistent = use_learned_positional_embeddings
+ pos_embedding = self._get_positional_embeddings(sample_height, sample_width, sample_frames)
+ self.register_buffer("pos_embedding", pos_embedding, persistent=persistent)
+
+ def _get_positional_embeddings(
+ self, sample_height: int, sample_width: int, sample_frames: int, device: Optional[torch.device] = None
+ ) -> torch.Tensor:
+ post_patch_height = sample_height // self.patch_size
+ post_patch_width = sample_width // self.patch_size
+ post_time_compression_frames = (sample_frames - 1) // self.temporal_compression_ratio + 1
+ num_patches = post_patch_height * post_patch_width * post_time_compression_frames
+
+ pos_embedding = get_3d_sincos_pos_embed(
+ self.embed_dim,
+ (post_patch_width, post_patch_height),
+ post_time_compression_frames,
+ self.spatial_interpolation_scale,
+ self.temporal_interpolation_scale,
+ device=device,
+ output_type="pt",
+ )
+ pos_embedding = pos_embedding.flatten(0, 1)
+ joint_pos_embedding = pos_embedding.new_zeros(
+ 1, num_patches, self.embed_dim, requires_grad=False
+ )
+ joint_pos_embedding.data[:, :].copy_(pos_embedding)
+
+ return joint_pos_embedding
+
+ def forward(self, image_embeds: torch.Tensor):
+ r"""
+ Args:
+ image_embeds (`torch.Tensor`):
+ Input image embeddings. Expected shape: (batch_size, num_frames, channels, height, width).
+ """
+ batch_size, num_frames, channels, height, width = image_embeds.shape
+
+ if self.patch_size_t is None:
+ image_embeds = image_embeds.reshape(-1, channels, height, width)
+ image_embeds = self.proj(image_embeds)
+ image_embeds = image_embeds.view(batch_size, num_frames, *image_embeds.shape[1:])
+ image_embeds = image_embeds.flatten(3).transpose(2, 3) # [batch, num_frames, height x width, channels]
+ image_embeds = image_embeds.flatten(1, 2) # [batch, num_frames x height x width, channels]
+ else:
+ p = self.patch_size
+ p_t = self.patch_size_t
+
+ image_embeds = image_embeds.permute(0, 1, 3, 4, 2)
+ image_embeds = image_embeds.reshape(
+ batch_size, num_frames // p_t, p_t, height // p, p, width // p, p, channels
+ )
+ image_embeds = image_embeds.permute(0, 1, 3, 5, 7, 2, 4, 6).flatten(4, 7).flatten(1, 3)
+ image_embeds = self.proj(image_embeds)
+
+ embeds = image_embeds.contiguous() # [batch, num_frames x height x width, channels]
+
+ if self.use_positional_embeddings or self.use_learned_positional_embeddings:
+ if self.use_learned_positional_embeddings and (self.sample_width != width or self.sample_height != height):
+ raise ValueError(
+ "It is currently not possible to generate videos at a different resolution that the defaults. This should only be the case with 'THUDM/CogVideoX-5b-I2V'."
+ "If you think this is incorrect, please open an issue at https://github.com/huggingface/diffusers/issues."
+ )
+
+ pre_time_compression_frames = (num_frames - 1) * self.temporal_compression_ratio + 1
+
+ if (
+ self.sample_height != height
+ or self.sample_width != width
+ or self.sample_frames != pre_time_compression_frames
+ ):
+ pos_embedding = self._get_positional_embeddings(
+ height, width, pre_time_compression_frames, device=embeds.device
+ )
+ else:
+ pos_embedding = self.pos_embedding
+
+ pos_embedding = pos_embedding.to(dtype=embeds.dtype)
+ embeds = embeds + pos_embedding
+
+ return embeds
+
+class CogVideoXControlnetXsLayerNormZero(nn.Module):
+ def __init__(
+ self,
+ conditioning_dim: int,
+ embedding_dim: int,
+ elementwise_affine: bool = True,
+ eps: float = 1e-5,
+ bias: bool = True,
+ ) -> None:
+ super().__init__()
+
+ self.silu = nn.SiLU()
+ self.linear = nn.Linear(conditioning_dim, 3 * embedding_dim, bias=bias)
+ self.norm = nn.LayerNorm(embedding_dim, eps=eps, elementwise_affine=elementwise_affine)
+
+ def forward(
+ self, hidden_states: torch.Tensor, temb: torch.Tensor
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ shift, scale, gate = self.linear(self.silu(temb)).chunk(3, dim=1)
+ hidden_states = self.norm(hidden_states) * (1 + scale)[:, None, :] + shift[:, None, :]
+ return hidden_states, gate[:, None, :]
+
+
+class CogVideoXControlnetXsAttnProcessor2_0:
+ r"""
+ Processor for implementing scaled dot-product attention for the CogVideoX model. It applies a rotary embedding on
+ query and key vectors, but does not include spatial normalization.
+ """
+
+ def __init__(self):
+ if not hasattr(F, "scaled_dot_product_attention"):
+ raise ImportError("CogVideoXAttnProcessor requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.")
+
+ def __call__(
+ self,
+ attn: Attention,
+ hidden_states: torch.Tensor,
+ encoder_hidden_states = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ image_rotary_emb: Optional[torch.Tensor] = None,
+ ) -> torch.Tensor:
+
+ batch_size, sequence_length, _ = hidden_states.shape
+
+ if attention_mask is not None:
+ attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size)
+ attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1])
+
+ query = attn.to_q(hidden_states)
+ key = attn.to_k(hidden_states)
+ value = attn.to_v(hidden_states)
+
+ inner_dim = key.shape[-1]
+ head_dim = inner_dim // attn.heads
+
+ query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) # B,L,H,D --> B,H,L,D
+ key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+ value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2)
+
+ if attn.norm_q is not None:
+ query = attn.norm_q(query)
+ if attn.norm_k is not None:
+ key = attn.norm_k(key)
+
+ # Apply RoPE if needed
+ if image_rotary_emb is not None:
+ from diffusers.models.embeddings import apply_rotary_emb
+
+ query = apply_rotary_emb(query, image_rotary_emb)
+ if not attn.is_cross_attention:
+ key = apply_rotary_emb(key, image_rotary_emb)
+
+ hidden_states = F.scaled_dot_product_attention(
+ query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False
+ )
+
+ hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim)
+
+ # linear proj
+ hidden_states = attn.to_out[0](hidden_states)
+ # dropout
+ hidden_states = attn.to_out[1](hidden_states)
+
+ return hidden_states
+
+@maybe_allow_in_graph
+class CogVideoXControlnetXsBlock(nn.Module):
+ r"""
+ Transformer block used in [CogVideoX](https://github.com/THUDM/CogVideo) model.
+
+ Parameters:
+ dim (`int`):
+ The number of channels in the input and output.
+ num_attention_heads (`int`):
+ The number of heads to use for multi-head attention.
+ attention_head_dim (`int`):
+ The number of channels in each head.
+ time_embed_dim (`int`):
+ The number of channels in timestep embedding.
+ dropout (`float`, defaults to `0.0`):
+ The dropout probability to use.
+ activation_fn (`str`, defaults to `"gelu-approximate"`):
+ Activation function to be used in feed-forward.
+ attention_bias (`bool`, defaults to `False`):
+ Whether or not to use bias in attention projection layers.
+ qk_norm (`bool`, defaults to `True`):
+ Whether or not to use normalization after query and key projections in Attention.
+ norm_elementwise_affine (`bool`, defaults to `True`):
+ Whether to use learnable elementwise affine parameters for normalization.
+ norm_eps (`float`, defaults to `1e-5`):
+ Epsilon value for normalization layers.
+ final_dropout (`bool` defaults to `False`):
+ Whether to apply a final dropout after the last feed-forward layer.
+ ff_inner_dim (`int`, *optional*, defaults to `None`):
+ Custom hidden dimension of Feed-forward layer. If not provided, `4 * dim` is used.
+ ff_bias (`bool`, defaults to `True`):
+ Whether or not to use bias in Feed-forward layer.
+ attention_out_bias (`bool`, defaults to `True`):
+ Whether or not to use bias in Attention output projection layer.
+ """
+
+ def __init__(
+ self,
+ dim: int,
+ num_attention_heads: int,
+ attention_head_dim: int,
+ time_embed_dim: int,
+ dropout: float = 0.0,
+ activation_fn: str = "gelu-approximate",
+ attention_bias: bool = False,
+ qk_norm: bool = True,
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ final_dropout: bool = True,
+ ff_inner_dim: Optional[int] = None,
+ ff_bias: bool = True,
+ attention_out_bias: bool = True,
+ ):
+ super().__init__()
+
+ # 1. Self Attention
+ self.norm1 = CogVideoXControlnetXsLayerNormZero(time_embed_dim, dim, norm_elementwise_affine, norm_eps, bias=True)
+
+ self.attn1 = Attention(
+ query_dim=dim,
+ dim_head=attention_head_dim,
+ heads=num_attention_heads,
+ qk_norm="layer_norm" if qk_norm else None,
+ eps=1e-6,
+ bias=attention_bias,
+ out_bias=attention_out_bias,
+ processor=CogVideoXControlnetXsAttnProcessor2_0(),
+ )
+ if IS_FLASH3_AVAILABLE:
+ self.attn1.set_processor(CogVideoXFlashAttn3ControlnetXsProcessor())
+
+ # 2. Feed Forward
+ self.norm2 = CogVideoXControlnetXsLayerNormZero(time_embed_dim, dim, norm_elementwise_affine, norm_eps, bias=True)
+
+ self.ff = FeedForward(
+ dim,
+ dropout=dropout,
+ activation_fn=activation_fn,
+ final_dropout=final_dropout,
+ inner_dim=ff_inner_dim,
+ bias=ff_bias,
+ )
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ temb: torch.Tensor,
+ image_rotary_emb: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ ) -> torch.Tensor:
+
+ # norm & modulate
+ norm_hidden_states, gate_msa = self.norm1(hidden_states, temb)
+
+ # attention
+ attn_hidden_states = self.attn1(
+ hidden_states=norm_hidden_states,
+ image_rotary_emb=image_rotary_emb,
+ )
+
+ hidden_states = hidden_states + gate_msa * attn_hidden_states
+
+ # norm & modulate
+ norm_hidden_states, gate_ff = self.norm2(hidden_states, temb)
+
+ # feed-forward
+ ff_output = self.ff(norm_hidden_states)
+
+ hidden_states = hidden_states + gate_ff * ff_output
+
+ return hidden_states
+
+
+class CogVideoXTransformer3DControlnetXs(ModelMixin, ConfigMixin, PeftAdapterMixin):
+ """
+ A Transformer model for video-like data in [CogVideoX](https://github.com/THUDM/CogVideo).
+
+ Parameters:
+ num_attention_heads (`int`, defaults to `30`):
+ The number of heads to use for multi-head attention.
+ attention_head_dim (`int`, defaults to `64`):
+ The number of channels in each head.
+ in_channels (`int`, defaults to `16`):
+ The number of channels in the input.
+ out_channels (`int`, *optional*, defaults to `16`):
+ The number of channels in the output.
+ flip_sin_to_cos (`bool`, defaults to `True`):
+ Whether to flip the sin to cos in the time embedding.
+ time_embed_dim (`int`, defaults to `512`):
+ Output dimension of timestep embeddings.
+ ofs_embed_dim (`int`, defaults to `512`):
+ Output dimension of "ofs" embeddings used in CogVideoX-5b-I2B in version 1.5
+ text_embed_dim (`int`, defaults to `4096`):
+ Input dimension of text embeddings from the text encoder.
+ num_layers (`int`, defaults to `30`):
+ The number of layers of Transformer blocks to use.
+ dropout (`float`, defaults to `0.0`):
+ The dropout probability to use.
+ attention_bias (`bool`, defaults to `True`):
+ Whether to use bias in the attention projection layers.
+ sample_width (`int`, defaults to `90`):
+ The width of the input latents.
+ sample_height (`int`, defaults to `60`):
+ The height of the input latents.
+ sample_frames (`int`, defaults to `49`):
+ The number of frames in the input latents. Note that this parameter was incorrectly initialized to 49
+ instead of 13 because CogVideoX processed 13 latent frames at once in its default and recommended settings,
+ but cannot be changed to the correct value to ensure backwards compatibility. To create a transformer with
+ K latent frames, the correct value to pass here would be: ((K - 1) * temporal_compression_ratio + 1).
+ patch_size (`int`, defaults to `2`):
+ The size of the patches to use in the patch embedding layer.
+ temporal_compression_ratio (`int`, defaults to `4`):
+ The compression ratio across the temporal dimension. See documentation for `sample_frames`.
+ max_text_seq_length (`int`, defaults to `226`):
+ The maximum sequence length of the input text embeddings.
+ activation_fn (`str`, defaults to `"gelu-approximate"`):
+ Activation function to use in feed-forward.
+ timestep_activation_fn (`str`, defaults to `"silu"`):
+ Activation function to use when generating the timestep embeddings.
+ norm_elementwise_affine (`bool`, defaults to `True`):
+ Whether to use elementwise affine in normalization layers.
+ norm_eps (`float`, defaults to `1e-5`):
+ The epsilon value to use in normalization layers.
+ spatial_interpolation_scale (`float`, defaults to `1.875`):
+ Scaling factor to apply in 3D positional embeddings across spatial dimensions.
+ temporal_interpolation_scale (`float`, defaults to `1.0`):
+ Scaling factor to apply in 3D positional embeddings across temporal dimensions.
+ """
+
+ _supports_gradient_checkpointing = True
+
+ @register_to_config
+ def __init__(
+ self,
+ num_attention_heads: int = 30,
+ attention_head_dim: int = 64,
+ in_channels: int = 16,
+ flip_sin_to_cos: bool = True,
+ freq_shift: int = 0,
+ time_embed_dim: int = 512,
+ text_embed_dim: int = 4096,
+ num_layers: int = 30,
+ dropout: float = 0.0,
+ attention_bias: bool = True,
+ sample_width: int = 90,
+ sample_height: int = 60,
+ sample_frames: int = 49,
+ patch_size: int = 2,
+ patch_size_t: Optional[int] = None,
+ temporal_compression_ratio: int = 4,
+ max_text_seq_length: int = 226,
+ activation_fn: str = "gelu-approximate",
+ timestep_activation_fn: str = "silu",
+ norm_elementwise_affine: bool = True,
+ norm_eps: float = 1e-5,
+ spatial_interpolation_scale: float = 1.875,
+ temporal_interpolation_scale: float = 1.0,
+ use_rotary_positional_embeddings: bool = False,
+ use_learned_positional_embeddings: bool = False,
+ patch_bias: bool = True,
+ **kwargs
+ ):
+ super().__init__()
+ inner_dim = num_attention_heads * attention_head_dim
+
+ if not use_rotary_positional_embeddings and use_learned_positional_embeddings:
+ raise ValueError(
+ "There are no CogVideoX checkpoints available with disable rotary embeddings and learned positional "
+ "embeddings. If you're using a custom model and/or believe this should be supported, please open an "
+ "issue at https://github.com/huggingface/diffusers/issues."
+ )
+
+ # 1. Patch embedding
+ self.patch_embed = CogVideoXControlnetXsPatchEmbed(
+ patch_size=patch_size,
+ patch_size_t=patch_size_t,
+ in_channels=in_channels,
+ embed_dim=inner_dim,
+ bias=patch_bias,
+ sample_width=sample_width,
+ sample_height=sample_height,
+ sample_frames=sample_frames,
+ temporal_compression_ratio=temporal_compression_ratio,
+ spatial_interpolation_scale=spatial_interpolation_scale,
+ temporal_interpolation_scale=temporal_interpolation_scale,
+ use_positional_embeddings=not use_rotary_positional_embeddings,
+ use_learned_positional_embeddings=use_learned_positional_embeddings,
+ )
+ self.embedding_dropout = nn.Dropout(dropout)
+
+ # 2. Time embeddings and ofs embedding(Only CogVideoX1.5-5B I2V have)
+
+ # self.time_proj = Timesteps(inner_dim, flip_sin_to_cos, freq_shift)
+ # self.time_embedding = TimestepEmbedding(inner_dim, time_embed_dim, timestep_activation_fn)
+
+ self.camera_condition_gft_beta_proj = Timesteps(time_embed_dim, flip_sin_to_cos, freq_shift)
+ self.camera_condition_gft_beta_embedding = TimestepEmbedding(
+ time_embed_dim, time_embed_dim, timestep_activation_fn
+ ) # same as time embeddings, for camera_condition_gft_beta
+
+ # 3. Define spatio-temporal transformers blocks
+ self.transformer_blocks = nn.ModuleList(
+ [
+ CogVideoXControlnetXsBlock(
+ dim=inner_dim,
+ num_attention_heads=num_attention_heads,
+ attention_head_dim=attention_head_dim,
+ time_embed_dim=time_embed_dim,
+ dropout=dropout,
+ activation_fn=activation_fn,
+ attention_bias=attention_bias,
+ norm_elementwise_affine=norm_elementwise_affine,
+ norm_eps=norm_eps,
+ )
+ for _ in range(num_layers)
+ ]
+ )
+
+ self.gradient_checkpointing = False
+
+ def _set_gradient_checkpointing(self, module, value=False):
+ self.gradient_checkpointing = value
+
+ @property
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors
+ def attn_processors(self) -> Dict[str, AttentionProcessor]:
+ r"""
+ Returns:
+ `dict` of attention processors: A dictionary containing all attention processors used in the model with
+ indexed by its weight name.
+ """
+ # set recursively
+ processors = {}
+
+ def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]):
+ if hasattr(module, "get_processor"):
+ processors[f"{name}.processor"] = module.get_processor()
+
+ for sub_name, child in module.named_children():
+ fn_recursive_add_processors(f"{name}.{sub_name}", child, processors)
+
+ return processors
+
+ for name, module in self.named_children():
+ fn_recursive_add_processors(name, module, processors)
+
+ return processors
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor
+ def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]):
+ r"""
+ Sets the attention processor to use to compute attention.
+
+ Parameters:
+ processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`):
+ The instantiated processor class or a dictionary of processor classes that will be set as the processor
+ for **all** `Attention` layers.
+
+ If `processor` is a dict, the key needs to define the path to the corresponding cross attention
+ processor. This is strongly recommended when setting trainable attention processors.
+
+ """
+ count = len(self.attn_processors.keys())
+
+ if isinstance(processor, dict) and len(processor) != count:
+ raise ValueError(
+ f"A dict of processors was passed, but the number of processors {len(processor)} does not match the"
+ f" number of attention layers: {count}. Please make sure to pass {count} processor classes."
+ )
+
+ def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor):
+ if hasattr(module, "set_processor"):
+ if not isinstance(processor, dict):
+ module.set_processor(processor)
+ else:
+ module.set_processor(processor.pop(f"{name}.processor"))
+
+ for sub_name, child in module.named_children():
+ fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor)
+
+ for name, module in self.named_children():
+ fn_recursive_attn_processor(name, module, processor)
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.fuse_qkv_projections with FusedAttnProcessor2_0->FusedCogVideoXAttnProcessor2_0
+ def fuse_qkv_projections(self):
+ """
+ Enables fused QKV projections. For self-attention modules, all projection matrices (i.e., query, key, value)
+ are fused. For cross-attention modules, key and value projection matrices are fused.
+
+
+
+ This API is 🧪 experimental.
+
+
+ """
+ self.original_attn_processors = None
+
+ for _, attn_processor in self.attn_processors.items():
+ if "Added" in str(attn_processor.__class__.__name__):
+ raise ValueError("`fuse_qkv_projections()` is not supported for models having added KV projections.")
+
+ self.original_attn_processors = self.attn_processors
+
+ for module in self.modules():
+ if isinstance(module, Attention):
+ module.fuse_projections(fuse=True)
+
+ self.set_attn_processor(FusedCogVideoXAttnProcessor2_0())
+
+ # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.unfuse_qkv_projections
+ def unfuse_qkv_projections(self):
+ """Disables the fused QKV projection if enabled.
+
+
+
+ This API is 🧪 experimental.
+
+
+
+ """
+ if self.original_attn_processors is not None:
+ self.set_attn_processor(self.original_attn_processors)
+
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ timestep: Union[int, float, torch.LongTensor],
+ timestep_cond: Optional[torch.Tensor] = None,
+ ofs: Optional[Union[int, float, torch.LongTensor]] = None,
+ image_rotary_emb: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
+ attention_kwargs: Optional[Dict[str, Any]] = None,
+ return_dict: bool = True,
+ ):
+ pass
+ # batch_size, num_frames, channels, height, width = hidden_states.shape
+ #
+ # # 1. Time embedding
+ # timesteps = timestep
+ # t_emb = self.time_proj(timesteps)
+ #
+ # # timesteps does not contain any weights and will always return f32 tensors
+ # # but time_embedding might actually be running in fp16. so we need to cast here.
+ # # there might be better ways to encapsulate this.
+ # t_emb = t_emb.to(dtype=hidden_states.dtype)
+ # emb = self.time_embedding(t_emb, timestep_cond)
+ #
+ # if self.ofs_embedding is not None:
+ # ofs_emb = self.ofs_proj(ofs)
+ # ofs_emb = ofs_emb.to(dtype=hidden_states.dtype)
+ # ofs_emb = self.ofs_embedding(ofs_emb)
+ # emb = emb + ofs_emb
+ #
+ # # 2. Patch embedding
+ # text_seq_length = encoder_hidden_states.shape[1]
+ # hidden_states = self.patch_embed(encoder_hidden_states, hidden_states)
+ # hidden_states = self.embedding_dropout(hidden_states)
+ #
+ # encoder_hidden_states = hidden_states[:, :text_seq_length]
+ # hidden_states = hidden_states[:, text_seq_length:]
+ #
+ #
+ # # 3. Transformer blocks
+ # for i, block in enumerate(self.transformer_blocks):
+ # if self.camera_controller is not None and camera_embedding is not None and i == len(self.transformer_blocks)//2:
+ # hidden_states = self.camera_controller(
+ # camera_embedding, hidden_states, emb,
+ # gradient_checkpointing=self.gradient_checkpointing
+ # )
+ #
+ # if torch.is_grad_enabled() and self.gradient_checkpointing:
+ #
+ # def create_custom_forward(module):
+ # def custom_forward(*inputs):
+ # return module(*inputs)
+ #
+ # return custom_forward
+ #
+ # ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {}
+ # hidden_states, encoder_hidden_states = torch.utils.checkpoint.checkpoint(
+ # create_custom_forward(block),
+ # hidden_states,
+ # encoder_hidden_states,
+ # emb,
+ # image_rotary_emb,
+ # **ckpt_kwargs,
+ # )
+ # else:
+ # hidden_states, encoder_hidden_states = block(
+ # hidden_states=hidden_states,
+ # encoder_hidden_states=encoder_hidden_states,
+ # temb=emb,
+ # image_rotary_emb=image_rotary_emb,
+ # )
+
+ # return hidden_states
diff --git a/finetune/models/camera_controller/utils.py b/finetune/models/camera_controller/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..3a8b50c23a27ff1dc06ee4ea253c5bc6a8c84bcc
--- /dev/null
+++ b/finetune/models/camera_controller/utils.py
@@ -0,0 +1,221 @@
+import copy
+import numpy as np
+import torch
+import torch.nn.functional as F
+import open3d as o3d
+from torch import Tensor
+
+def relative_pose(rt: Tensor, mode, ref_index) -> Tensor:
+ '''
+ :param rt: F,4,4
+ :param mode: left or right
+ :return:
+ '''
+ if mode == "left":
+ rt = rt[ref_index].inverse() @ rt
+ elif mode == "right":
+ rt = rt @ rt[ref_index].inverse()
+ return rt
+
+
+def create_line_point_cloud(start_point, end_point, num_points=50, color=np.array([0, 0, 1.0])):
+ # 创建从起点到终点的线性空间
+ points = np.linspace(start_point, end_point, num_points)
+ # color 归一化的 RGB 值 (0, 0, 255 -> 0, 0, 1)
+ colors = np.tile(color, (points.shape[0], 1))
+ return points, colors
+
+
+def remove_outliers(pcd):
+ """
+ 基于统计方法移除点云中的离群点
+ :param pcd: Open3D 的点云对象
+ :param nb_neighbors: 每个点考虑的邻域点数量
+ :param std_ratio: 离群点标准差阈值
+ :return: 清理后的点云
+ """
+ cl, ind = pcd.remove_statistical_outlier(nb_neighbors=16, std_ratio=3.0)
+ # cl, ind = pcd.remove_radius_outlier(nb_points=3, radius=0.1)
+ return pcd.select_by_index(ind)
+
+def construct_point_cloud(points: np.ndarray, colors: np.ndarray) -> o3d.geometry.PointCloud:
+ pcd = o3d.geometry.PointCloud()
+ pcd.points = o3d.utility.Vector3dVector(points)
+ pcd.colors = o3d.utility.Vector3dVector(colors)
+ pcd.transform([
+ [-1, 0, 0, 0],
+ [0, -1, 0, 0],
+ [0, 0, 1, 0],
+ [0, 0, 0, 1]
+ ])
+
+ return pcd
+
+
+def camera_pose_lerp(c2w: Tensor, target_frames: int):
+ weights = torch.linspace(0, c2w.size(0) - 1, target_frames, dtype=c2w.dtype)
+ left_indices = weights.floor().long()
+ right_indices = weights.ceil().long()
+
+ return torch.lerp(c2w[left_indices], c2w[right_indices], weights.unsqueeze(-1).unsqueeze(-1).frac())
+
+
+def apply_thresholded_conv(mask, kernel_size=5, threshold=0.9):
+ """
+ 对输入的mask进行5x5卷积操作,卷积核用于对5x5区域求和。
+ 如果求和后值 < 25,则置为0;否则置为1。
+ 使用reflect padding进行边缘填充。
+
+ 参数:
+ mask (torch.Tensor): 输入的四维Tensor,形状为 (b, f, h, w),仅包含 0.0 和 1.0。
+
+ 返回:
+ torch.Tensor: 应用阈值后的四维Tensor,形状为 (b, f, h, w)。
+ """
+ # 获取输入的形状
+ b, f, h, w = mask.shape
+
+ # 创建一个5x5的卷积核,全为1
+ kernel = torch.ones((1, 1, kernel_size, kernel_size), dtype=torch.float32, device=mask.device)
+
+ # 使用 reflect padding 进行边缘填充
+ mask_padded = F.pad(mask, pad=(kernel_size//2, kernel_size//2, kernel_size//2, kernel_size//2), mode='reflect')
+
+ # 将 mask 视作 (b * f, 1, h, w),这样可以在 h 和 w 上做 2D 卷积
+ mask_reshaped = mask_padded.view(-1, 1, h + 2*(kernel_size//2), w + 2*(kernel_size//2))
+ summed_mask = F.conv2d(mask_reshaped, kernel)
+
+ # 对求和结果进行阈值判断,将 < 25 的置为 0,其余置为 1
+ thresholded_mask = (summed_mask >= (kernel_size * kernel_size * threshold)).float()
+
+ # 将结果 reshape 回原来的形状 (b, f, h, w)
+ thresholded_mask = thresholded_mask.view(b, f, h, w)
+
+ return thresholded_mask
+
+
+def constrain_to_multiple_of(x, min_val=0, max_val=None, multiple_of=14):
+ y = (np.round(x / multiple_of) * multiple_of).astype(int)
+
+ if max_val is not None and y > max_val:
+ y = (np.floor(x / multiple_of) * multiple_of).astype(int)
+
+ if y < min_val:
+ y = (np.ceil(x / multiple_of) * multiple_of).astype(int)
+
+ return y
+
+
+def add_camera_trace(points, colors, points_x, points_y):
+ x, y = points_x, points_y
+ for idx in [[0, 0], [0, -1], [-1, 0], [-1, -1]]:
+ camera, camera_colors = create_line_point_cloud(
+ start_point=np.array([0, 0, 0]),
+ end_point=np.array([x[idx[0]][idx[1]], y[idx[0]][idx[1]], 1.0]),
+ num_points=50,
+ )
+ points = np.concatenate((points, camera * 0.25), axis=0)
+ colors = np.concatenate((colors, camera_colors), axis=0)
+
+ for start_idx, end_idx in [
+ [[0, 0], [0, -1]],
+ [[0, 0], [-1, 0]],
+ [[-1, -1], [0, -1]],
+ [[-1, -1], [-1, 0]],
+ ]:
+ camera, camera_colors = create_line_point_cloud(
+ start_point=np.array([x[start_idx[0]][start_idx[1]], y[start_idx[0]][start_idx[1]], 1.0]),
+ end_point=np.array([x[end_idx[0]][end_idx[1]], y[end_idx[0]][end_idx[1]], 1.0]),
+ num_points=50,
+ )
+ points = np.concatenate((points, camera * 0.25), axis=0)
+ colors = np.concatenate((colors, camera_colors), axis=0)
+
+ return points, colors
+
+
+def create_relative(RT_list, K_1=4.7, dataset="syn"):
+ scale_T = 1
+ RT_list = [RT.reshape(3, 4) for RT in RT_list]
+ temp = []
+ first_frame_RT = copy.deepcopy(RT_list[0])
+ # first_frame_R_inv = np.linalg.inv(first_frame_RT[:,:3])
+ first_frame_R_inv = first_frame_RT[:, :3].T
+ first_frame_T = first_frame_RT[:, -1]
+ for RT in RT_list:
+ RT[:, :3] = np.dot(RT[:, :3], first_frame_R_inv)
+ RT[:, -1] = RT[:, -1] - np.dot(RT[:, :3], first_frame_T)
+ RT[:, -1] = RT[:, -1] * scale_T
+ temp.append(RT)
+ if dataset == "realestate":
+ temp = [RT.reshape(-1) for RT in temp]
+ return temp
+
+
+def sigma_matrix2(sig_x, sig_y, theta):
+ """Calculate the rotated sigma matrix (two dimensional matrix).
+ Args:
+ sig_x (float):
+ sig_y (float):
+ theta (float): Radian measurement.
+ Returns:
+ ndarray: Rotated sigma matrix.
+ """
+ d_matrix = np.array([[sig_x ** 2, 0], [0, sig_y ** 2]])
+ u_matrix = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
+ return np.dot(u_matrix, np.dot(d_matrix, u_matrix.T))
+
+
+def mesh_grid(kernel_size):
+ """Generate the mesh grid, centering at zero.
+ Args:
+ kernel_size (int):
+ Returns:
+ xy (ndarray): with the shape (kernel_size, kernel_size, 2)
+ xx (ndarray): with the shape (kernel_size, kernel_size)
+ yy (ndarray): with the shape (kernel_size, kernel_size)
+ """
+ ax = np.arange(-kernel_size // 2 + 1., kernel_size // 2 + 1.)
+ xx, yy = np.meshgrid(ax, ax)
+ xy = np.hstack((xx.reshape((kernel_size * kernel_size, 1)), yy.reshape(kernel_size * kernel_size,
+ 1))).reshape(kernel_size, kernel_size, 2)
+ return xy, xx, yy
+
+
+def pdf2(sigma_matrix, grid):
+ """Calculate PDF of the bivariate Gaussian distribution.
+ Args:
+ sigma_matrix (ndarray): with the shape (2, 2)
+ grid (ndarray): generated by :func:`mesh_grid`,
+ with the shape (K, K, 2), K is the kernel size.
+ Returns:
+ kernel (ndarrray): un-normalized kernel.
+ """
+ inverse_sigma = np.linalg.inv(sigma_matrix)
+ kernel = np.exp(-0.5 * np.sum(np.dot(grid, inverse_sigma) * grid, 2))
+ return kernel
+
+
+def bivariate_Gaussian(kernel_size, sig_x, sig_y, theta, grid=None, isotropic=True):
+ """Generate a bivariate isotropic or anisotropic Gaussian kernel.
+ In the isotropic mode, only `sig_x` is used. `sig_y` and `theta` is ignored.
+ Args:
+ kernel_size (int):
+ sig_x (float):
+ sig_y (float):
+ theta (float): Radian measurement.
+ grid (ndarray, optional): generated by :func:`mesh_grid`,
+ with the shape (K, K, 2), K is the kernel size. Default: None
+ isotropic (bool):
+ Returns:
+ kernel (ndarray): normalized kernel.
+ """
+ if grid is None:
+ grid, _, _ = mesh_grid(kernel_size)
+ if isotropic:
+ sigma_matrix = np.array([[sig_x ** 2, 0], [0, sig_x ** 2]])
+ else:
+ sigma_matrix = sigma_matrix2(sig_x, sig_y, theta)
+ kernel = pdf2(sigma_matrix, grid)
+ kernel = kernel / np.sum(kernel)
+ return kernel
diff --git a/finetune/models/camera_controller/vae_decoder.py b/finetune/models/camera_controller/vae_decoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..e319f48188a4825ff492965c7057498f5c934b24
--- /dev/null
+++ b/finetune/models/camera_controller/vae_decoder.py
@@ -0,0 +1,529 @@
+# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from typing import Dict, Optional, Tuple, Union
+
+import numpy as np
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders.single_file_model import FromOriginalModelMixin
+from diffusers.utils import logging
+from diffusers.utils.accelerate_utils import apply_forward_hook
+from diffusers.models.modeling_outputs import AutoencoderKLOutput
+from diffusers.models.modeling_utils import ModelMixin
+from diffusers.models.autoencoders.vae import DecoderOutput, DiagonalGaussianDistribution
+from diffusers.models.autoencoders.autoencoder_kl_cogvideox import CogVideoXCausalConv3d, CogVideoXDownBlock3D, CogVideoXMidBlock3D
+# from diffusers.models.autoencoders.autoencoder_kl_cogvideox import CogVideoXEncoder3D, CogVideoXCausalConv3d, CogVideoXDownBlock3D, CogVideoXMidBlock3D
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+
+
+
+class CogVideoXDecoder3D(nn.Module):
+ r"""
+ The `CogVideoXDecoder3D` layer of a variational autoencoder that decodes its latent representation into an output
+ sample.
+
+ Args:
+ in_channels (`int`, *optional*, defaults to 3):
+ The number of input channels.
+ out_channels (`int`, *optional*, defaults to 3):
+ The number of output channels.
+ up_block_types (`Tuple[str, ...]`, *optional*, defaults to `("UpDecoderBlock2D",)`):
+ The types of up blocks to use. See `~diffusers.models.unet_2d_blocks.get_up_block` for available options.
+ block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`):
+ The number of output channels for each block.
+ act_fn (`str`, *optional*, defaults to `"silu"`):
+ The activation function to use. See `~diffusers.models.activations.get_activation` for available options.
+ layers_per_block (`int`, *optional*, defaults to 2):
+ The number of layers per block.
+ norm_num_groups (`int`, *optional*, defaults to 32):
+ The number of groups for normalization.
+ """
+
+ _supports_gradient_checkpointing = True
+
+ def __init__(
+ self,
+ in_channels: int = 16,
+ out_channels: int = 3,
+ up_block_types: Tuple[str, ...] = (
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ ),
+ block_out_channels: Tuple[int, ...] = (128, 256, 256, 512),
+ layers_per_block: int = 3,
+ act_fn: str = "silu",
+ norm_eps: float = 1e-6,
+ norm_num_groups: int = 32,
+ dropout: float = 0.0,
+ pad_mode: str = "first",
+ temporal_compression_ratio: float = 4,
+ ):
+ super().__init__()
+
+ reversed_block_out_channels = list(reversed(block_out_channels))
+
+ self.conv_in = CogVideoXCausalConv3d(
+ in_channels, reversed_block_out_channels[0], kernel_size=3, pad_mode=pad_mode
+ )
+
+ # mid block
+ self.mid_block = CogVideoXMidBlock3D(
+ in_channels=reversed_block_out_channels[0],
+ temb_channels=0,
+ num_layers=2,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ spatial_norm_dim=in_channels,
+ pad_mode=pad_mode,
+ )
+
+ # up blocks
+ self.up_blocks = nn.ModuleList([])
+
+ output_channel = reversed_block_out_channels[0]
+ temporal_compress_level = int(np.log2(temporal_compression_ratio))
+
+ for i, up_block_type in enumerate(up_block_types):
+ prev_output_channel = output_channel
+ output_channel = reversed_block_out_channels[i]
+ is_final_block = i == len(block_out_channels) - 1
+ compress_time = i < temporal_compress_level
+
+ if up_block_type == "CogVideoXUpBlock3D":
+ up_block = CogVideoXUpBlock3D(
+ in_channels=prev_output_channel,
+ out_channels=output_channel,
+ temb_channels=0,
+ dropout=dropout,
+ num_layers=layers_per_block + 1,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ spatial_norm_dim=in_channels,
+ add_upsample=not is_final_block,
+ compress_time=compress_time,
+ pad_mode=pad_mode,
+ )
+ prev_output_channel = output_channel
+ else:
+ raise ValueError("Invalid `up_block_type` encountered. Must be `CogVideoXUpBlock3D`")
+
+ self.up_blocks.append(up_block)
+
+ self.norm_out = CogVideoXSpatialNorm3D(reversed_block_out_channels[-1], in_channels, groups=norm_num_groups)
+ self.conv_act = nn.SiLU()
+ self.conv_out = CogVideoXCausalConv3d(
+ reversed_block_out_channels[-1], out_channels, kernel_size=3, pad_mode=pad_mode
+ )
+
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ sample: torch.Tensor,
+ temb: Optional[torch.Tensor] = None,
+ conv_cache: Optional[Dict[str, torch.Tensor]] = None,
+ ) -> torch.Tensor:
+ r"""The forward method of the `CogVideoXDecoder3D` class."""
+
+ new_conv_cache = {}
+ conv_cache = conv_cache or {}
+
+ hidden_states, new_conv_cache["conv_in"] = self.conv_in(sample, conv_cache=conv_cache.get("conv_in"))
+
+ if torch.is_grad_enabled() and self.gradient_checkpointing:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ # 1. Mid
+ hidden_states, new_conv_cache["mid_block"] = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(self.mid_block),
+ hidden_states,
+ temb,
+ sample,
+ conv_cache.get("mid_block"),
+ use_reentrant=False
+ )
+
+ # 2. Up
+ for i, up_block in enumerate(self.up_blocks):
+ conv_cache_key = f"up_block_{i}"
+ hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(up_block),
+ hidden_states,
+ temb,
+ sample,
+ conv_cache.get(conv_cache_key),
+ use_reentrant=False
+ )
+ else:
+ # 1. Mid
+ hidden_states, new_conv_cache["mid_block"] = self.mid_block(
+ hidden_states, temb, sample, conv_cache=conv_cache.get("mid_block")
+ )
+
+ # 2. Up
+ for i, up_block in enumerate(self.up_blocks):
+ conv_cache_key = f"up_block_{i}"
+ hidden_states, new_conv_cache[conv_cache_key] = up_block(
+ hidden_states, temb, sample, conv_cache=conv_cache.get(conv_cache_key)
+ )
+
+ # 3. Post-process
+ hidden_states, new_conv_cache["norm_out"] = self.norm_out(
+ hidden_states, sample, conv_cache=conv_cache.get("norm_out")
+ )
+ hidden_states = self.conv_act(hidden_states)
+ hidden_states, new_conv_cache["conv_out"] = self.conv_out(hidden_states, conv_cache=conv_cache.get("conv_out"))
+
+ return hidden_states, new_conv_cache
+
+class ControlnetXsVaeDecoderCogVideoX(ModelMixin, ConfigMixin, FromOriginalModelMixin):
+ r"""
+ A VAE model with KL loss for encoding images into latents and decoding latent representations into images. Used in
+ [CogVideoX](https://github.com/THUDM/CogVideo).
+
+ This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented
+ for all models (such as downloading or saving).
+
+ Parameters:
+ in_channels (int, *optional*, defaults to 3): Number of channels in the input image.
+ out_channels (int, *optional*, defaults to 3): Number of channels in the output.
+ down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`):
+ Tuple of downsample block types.
+ up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`):
+ Tuple of upsample block types.
+ block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`):
+ Tuple of block output channels.
+ act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use.
+ sample_size (`int`, *optional*, defaults to `32`): Sample input size.
+ scaling_factor (`float`, *optional*, defaults to `1.15258426`):
+ The component-wise standard deviation of the trained latent space computed using the first batch of the
+ training set. This is used to scale the latent space to have unit variance when training the diffusion
+ model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the
+ diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1
+ / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image
+ Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper.
+ force_upcast (`bool`, *optional*, default to `True`):
+ If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE
+ can be fine-tuned / trained to a lower range without loosing too much precision in which case
+ `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
+ """
+
+ _supports_gradient_checkpointing = True
+ _no_split_modules = ["CogVideoXResnetBlock3D"]
+
+ @register_to_config
+ def __init__(
+ self,
+ out_channels: int = 3,
+ up_block_types: Tuple[str] = (
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ "CogVideoXUpBlock3D",
+ ),
+ block_out_channels: Tuple[int] = (128, 256, 256, 512),
+ latent_channels: int = 16,
+ layers_per_block: int = 3,
+ act_fn: str = "silu",
+ norm_eps: float = 1e-6,
+ norm_num_groups: int = 32,
+ temporal_compression_ratio: float = 4,
+ sample_height: int = 480,
+ sample_width: int = 720,
+ ):
+ super().__init__()
+
+ self.decoder = CogVideoXDecoder3D(
+ in_channels=latent_channels,
+ out_channels=out_channels,
+ up_block_types=up_block_types,
+ block_out_channels=block_out_channels,
+ layers_per_block=layers_per_block,
+ act_fn=act_fn,
+ norm_eps=norm_eps,
+ norm_num_groups=norm_num_groups,
+ temporal_compression_ratio=temporal_compression_ratio,
+ )
+
+ self.use_slicing = False
+ self.use_tiling = False
+
+ # Can be increased to decode more latent frames at once, but comes at a reasonable memory cost and it is not
+ # recommended because the temporal parts of the VAE, here, are tricky to understand.
+ # If you decode X latent frames together, the number of output frames is:
+ # (X + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) => X + 6 frames
+ #
+ # Example with num_latent_frames_batch_size = 2:
+ # - 12 latent frames: (0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, 11) are processed together
+ # => (12 // 2 frame slices) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale))
+ # => 6 * 8 = 48 frames
+ # - 13 latent frames: (0, 1, 2) (special case), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12) are processed together
+ # => (1 frame slice) * ((3 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) +
+ # ((13 - 3) // 2) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale))
+ # => 1 * 9 + 5 * 8 = 49 frames
+ # It has been implemented this way so as to not have "magic values" in the code base that would be hard to explain. Note that
+ # setting it to anything other than 2 would give poor results because the VAE hasn't been trained to be adaptive with different
+ # number of temporal frames.
+ self.num_latent_frames_batch_size = 2
+ self.num_sample_frames_batch_size = 8
+
+ # We make the minimum height and width of sample for tiling half that of the generally supported
+ self.tile_sample_min_height = sample_height // 2
+ self.tile_sample_min_width = sample_width // 2
+ self.tile_latent_min_height = int(
+ self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1))
+ )
+ self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1)))
+
+ # These are experimental overlap factors that were chosen based on experimentation and seem to work best for
+ # 720x480 (WxH) resolution. The above resolution is the strongly recommended generation resolution in CogVideoX
+ # and so the tiling implementation has only been tested on those specific resolutions.
+ self.tile_overlap_factor_height = 1 / 6
+ self.tile_overlap_factor_width = 1 / 5
+
+ def _set_gradient_checkpointing(self, module, value=False):
+ if isinstance(module, CogVideoXDecoder3D):
+ module.gradient_checkpointing = value
+
+ def enable_tiling(
+ self,
+ tile_sample_min_height: Optional[int] = None,
+ tile_sample_min_width: Optional[int] = None,
+ tile_overlap_factor_height: Optional[float] = None,
+ tile_overlap_factor_width: Optional[float] = None,
+ ) -> None:
+ r"""
+ Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to
+ compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow
+ processing larger images.
+
+ Args:
+ tile_sample_min_height (`int`, *optional*):
+ The minimum height required for a sample to be separated into tiles across the height dimension.
+ tile_sample_min_width (`int`, *optional*):
+ The minimum width required for a sample to be separated into tiles across the width dimension.
+ tile_overlap_factor_height (`int`, *optional*):
+ The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are
+ no tiling artifacts produced across the height dimension. Must be between 0 and 1. Setting a higher
+ value might cause more tiles to be processed leading to slow down of the decoding process.
+ tile_overlap_factor_width (`int`, *optional*):
+ The minimum amount of overlap between two consecutive horizontal tiles. This is to ensure that there
+ are no tiling artifacts produced across the width dimension. Must be between 0 and 1. Setting a higher
+ value might cause more tiles to be processed leading to slow down of the decoding process.
+ """
+ self.use_tiling = True
+ self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height
+ self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width
+ self.tile_latent_min_height = int(
+ self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1))
+ )
+ self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1)))
+ self.tile_overlap_factor_height = tile_overlap_factor_height or self.tile_overlap_factor_height
+ self.tile_overlap_factor_width = tile_overlap_factor_width or self.tile_overlap_factor_width
+
+ def disable_tiling(self) -> None:
+ r"""
+ Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing
+ decoding in one step.
+ """
+ self.use_tiling = False
+
+ def enable_slicing(self) -> None:
+ r"""
+ Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to
+ compute decoding in several steps. This is useful to save some memory and allow larger batch sizes.
+ """
+ self.use_slicing = True
+
+ def disable_slicing(self) -> None:
+ r"""
+ Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing
+ decoding in one step.
+ """
+ self.use_slicing = False
+
+ def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]:
+ batch_size, num_channels, num_frames, height, width = z.shape
+
+ if self.use_tiling and (width > self.tile_latent_min_width or height > self.tile_latent_min_height):
+ return self.tiled_decode(z, return_dict=return_dict)
+
+ frame_batch_size = self.num_latent_frames_batch_size
+ num_batches = max(num_frames // frame_batch_size, 1)
+ conv_cache = None
+ dec = []
+
+ for i in range(num_batches):
+ remaining_frames = num_frames % frame_batch_size
+ start_frame = frame_batch_size * i + (0 if i == 0 else remaining_frames)
+ end_frame = frame_batch_size * (i + 1) + remaining_frames
+ z_intermediate = z[:, :, start_frame:end_frame]
+ z_intermediate, conv_cache = self.decoder(z_intermediate, conv_cache=conv_cache)
+ dec.append(z_intermediate)
+
+ dec = torch.cat(dec, dim=2)
+
+ if not return_dict:
+ return (dec,)
+
+ return DecoderOutput(sample=dec)
+
+ @apply_forward_hook
+ def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]:
+ """
+ Decode a batch of images.
+
+ Args:
+ z (`torch.Tensor`): Input batch of latent vectors.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple.
+
+ Returns:
+ [`~models.vae.DecoderOutput`] or `tuple`:
+ If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is
+ returned.
+ """
+ if self.use_slicing and z.shape[0] > 1:
+ decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)]
+ decoded = torch.cat(decoded_slices)
+ else:
+ decoded = self._decode(z).sample
+
+ if not return_dict:
+ return (decoded,)
+ return DecoderOutput(sample=decoded)
+
+ def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor:
+ blend_extent = min(a.shape[3], b.shape[3], blend_extent)
+ for y in range(blend_extent):
+ b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * (
+ y / blend_extent
+ )
+ return b
+
+ def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor:
+ blend_extent = min(a.shape[4], b.shape[4], blend_extent)
+ for x in range(blend_extent):
+ b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * (
+ x / blend_extent
+ )
+ return b
+
+
+ def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]:
+ r"""
+ Decode a batch of images using a tiled decoder.
+
+ Args:
+ z (`torch.Tensor`): Input batch of latent vectors.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple.
+
+ Returns:
+ [`~models.vae.DecoderOutput`] or `tuple`:
+ If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is
+ returned.
+ """
+ # Rough memory assessment:
+ # - In CogVideoX-2B, there are a total of 24 CausalConv3d layers.
+ # - The biggest intermediate dimensions are: [1, 128, 9, 480, 720].
+ # - Assume fp16 (2 bytes per value).
+ # Memory required: 1 * 128 * 9 * 480 * 720 * 24 * 2 / 1024**3 = 17.8 GB
+ #
+ # Memory assessment when using tiling:
+ # - Assume everything as above but now HxW is 240x360 by tiling in half
+ # Memory required: 1 * 128 * 9 * 240 * 360 * 24 * 2 / 1024**3 = 4.5 GB
+
+ batch_size, num_channels, num_frames, height, width = z.shape
+
+ overlap_height = int(self.tile_latent_min_height * (1 - self.tile_overlap_factor_height))
+ overlap_width = int(self.tile_latent_min_width * (1 - self.tile_overlap_factor_width))
+ blend_extent_height = int(self.tile_sample_min_height * self.tile_overlap_factor_height)
+ blend_extent_width = int(self.tile_sample_min_width * self.tile_overlap_factor_width)
+ row_limit_height = self.tile_sample_min_height - blend_extent_height
+ row_limit_width = self.tile_sample_min_width - blend_extent_width
+ frame_batch_size = self.num_latent_frames_batch_size
+
+ # Split z into overlapping tiles and decode them separately.
+ # The tiles have an overlap to avoid seams between tiles.
+ rows = []
+ for i in range(0, height, overlap_height):
+ row = []
+ for j in range(0, width, overlap_width):
+ num_batches = max(num_frames // frame_batch_size, 1)
+ conv_cache = None
+ time = []
+
+ for k in range(num_batches):
+ remaining_frames = num_frames % frame_batch_size
+ start_frame = frame_batch_size * k + (0 if k == 0 else remaining_frames)
+ end_frame = frame_batch_size * (k + 1) + remaining_frames
+ tile = z[
+ :,
+ :,
+ start_frame:end_frame,
+ i : i + self.tile_latent_min_height,
+ j : j + self.tile_latent_min_width,
+ ]
+ tile, conv_cache = self.decoder(tile, conv_cache=conv_cache)
+ time.append(tile)
+
+ row.append(torch.cat(time, dim=2))
+ rows.append(row)
+
+ result_rows = []
+ for i, row in enumerate(rows):
+ result_row = []
+ for j, tile in enumerate(row):
+ # blend the above tile and the left tile
+ # to the current tile and add the current tile to the result row
+ if i > 0:
+ tile = self.blend_v(rows[i - 1][j], tile, blend_extent_height)
+ if j > 0:
+ tile = self.blend_h(row[j - 1], tile, blend_extent_width)
+ result_row.append(tile[:, :, :, :row_limit_height, :row_limit_width])
+ result_rows.append(torch.cat(result_row, dim=4))
+
+ dec = torch.cat(result_rows, dim=3)
+
+ if not return_dict:
+ return (dec,)
+
+ return DecoderOutput(sample=dec)
+
+ def forward(
+ self,
+ z: torch.Tensor,
+ return_dict: bool = True,
+ ) -> Union[torch.Tensor, torch.Tensor]:
+ dec = self.decode(z).sample
+ if not return_dict:
+ return (dec,)
+ return DecoderOutput(sample=dec)
\ No newline at end of file
diff --git a/finetune/models/camera_controller/vae_encoder.py b/finetune/models/camera_controller/vae_encoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..ddd269b8863c705cb4be7b8fc751e668ee2b3ec3
--- /dev/null
+++ b/finetune/models/camera_controller/vae_encoder.py
@@ -0,0 +1,522 @@
+# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from typing import Dict, Optional, Tuple, Union
+
+import numpy as np
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.loaders.single_file_model import FromOriginalModelMixin
+from diffusers.utils import logging
+from diffusers.utils.accelerate_utils import apply_forward_hook
+from diffusers.models.modeling_outputs import AutoencoderKLOutput
+from diffusers.models.modeling_utils import ModelMixin
+from diffusers.models.autoencoders.vae import DecoderOutput, DiagonalGaussianDistribution
+from diffusers.models.autoencoders.autoencoder_kl_cogvideox import CogVideoXCausalConv3d, CogVideoXDownBlock3D, CogVideoXMidBlock3D
+# from diffusers.models.autoencoders.autoencoder_kl_cogvideox import CogVideoXEncoder3D, CogVideoXCausalConv3d, CogVideoXDownBlock3D, CogVideoXMidBlock3D
+logger = logging.get_logger(__name__) # pylint: disable=invalid-name
+
+
+
+class CogVideoXEncoder3D(nn.Module):
+ r"""
+ The `CogVideoXEncoder3D` layer of a variational autoencoder that encodes its input into a latent representation.
+
+ Args:
+ in_channels (`int`, *optional*, defaults to 3):
+ The number of input channels.
+ out_channels (`int`, *optional*, defaults to 3):
+ The number of output channels.
+ down_block_types (`Tuple[str, ...]`, *optional*, defaults to `("DownEncoderBlock2D",)`):
+ The types of down blocks to use. See `~diffusers.models.unet_2d_blocks.get_down_block` for available
+ options.
+ block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`):
+ The number of output channels for each block.
+ act_fn (`str`, *optional*, defaults to `"silu"`):
+ The activation function to use. See `~diffusers.models.activations.get_activation` for available options.
+ layers_per_block (`int`, *optional*, defaults to 2):
+ The number of layers per block.
+ norm_num_groups (`int`, *optional*, defaults to 32):
+ The number of groups for normalization.
+ """
+
+ _supports_gradient_checkpointing = True
+
+ def __init__(
+ self,
+ in_channels: int = 3,
+ out_channels: int = 16,
+ down_block_types: Tuple[str, ...] = (
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ ),
+ block_out_channels: Tuple[int, ...] = (128, 256, 256, 512),
+ layers_per_block: int = 3,
+ act_fn: str = "silu",
+ norm_eps: float = 1e-6,
+ norm_num_groups: int = 32,
+ dropout: float = 0.0,
+ pad_mode: str = "first",
+ temporal_compression_ratio: float = 4,
+ ):
+ super().__init__()
+
+ # log2 of temporal_compress_times
+ temporal_compress_level = int(np.log2(temporal_compression_ratio))
+
+ self.conv_in = CogVideoXCausalConv3d(in_channels, block_out_channels[0], kernel_size=3, pad_mode=pad_mode)
+ self.down_blocks = nn.ModuleList([])
+
+ # down blocks
+ output_channel = block_out_channels[0]
+ for i, down_block_type in enumerate(down_block_types):
+ input_channel = output_channel
+ output_channel = block_out_channels[i]
+ is_final_block = i == len(block_out_channels) - 1
+ compress_time = i < temporal_compress_level
+
+ if down_block_type == "CogVideoXDownBlock3D":
+ down_block = CogVideoXDownBlock3D(
+ in_channels=input_channel,
+ out_channels=output_channel,
+ temb_channels=0,
+ dropout=dropout,
+ num_layers=layers_per_block,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ add_downsample=not is_final_block,
+ compress_time=compress_time,
+ )
+ else:
+ raise ValueError("Invalid `down_block_type` encountered. Must be `CogVideoXDownBlock3D`")
+
+ self.down_blocks.append(down_block)
+
+ # mid block
+ self.mid_block = CogVideoXMidBlock3D(
+ in_channels=block_out_channels[-1],
+ temb_channels=0,
+ dropout=dropout,
+ num_layers=2,
+ resnet_eps=norm_eps,
+ resnet_act_fn=act_fn,
+ resnet_groups=norm_num_groups,
+ pad_mode=pad_mode,
+ )
+
+ self.norm_out = nn.GroupNorm(norm_num_groups, block_out_channels[-1], eps=1e-6)
+ self.conv_act = nn.SiLU()
+ self.conv_out = CogVideoXCausalConv3d(
+ block_out_channels[-1], 2 * out_channels, kernel_size=3, pad_mode=pad_mode
+ )
+
+ self.gradient_checkpointing = False
+
+ def forward(
+ self,
+ sample: torch.Tensor,
+ temb: Optional[torch.Tensor] = None,
+ conv_cache: Optional[Dict[str, torch.Tensor]] = None,
+ ) -> torch.Tensor:
+ r"""The forward method of the `CogVideoXEncoder3D` class."""
+
+ new_conv_cache = {}
+ conv_cache = conv_cache or {}
+
+ hidden_states, new_conv_cache["conv_in"] = self.conv_in(sample, conv_cache=conv_cache.get("conv_in"))
+
+ if torch.is_grad_enabled() and self.gradient_checkpointing:
+
+ def create_custom_forward(module):
+ def custom_forward(*inputs):
+ return module(*inputs)
+
+ return custom_forward
+
+ # 1. Down
+ for i, down_block in enumerate(self.down_blocks):
+ conv_cache_key = f"down_block_{i}"
+ hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(down_block),
+ hidden_states,
+ temb,
+ None,
+ conv_cache.get(conv_cache_key),
+ use_reentrant=False
+ )
+
+ # 2. Mid
+ hidden_states, new_conv_cache["mid_block"] = torch.utils.checkpoint.checkpoint(
+ create_custom_forward(self.mid_block),
+ hidden_states,
+ temb,
+ None,
+ conv_cache.get("mid_block"),
+ use_reentrant=False
+ )
+ else:
+ # 1. Down
+ for i, down_block in enumerate(self.down_blocks):
+ conv_cache_key = f"down_block_{i}"
+ hidden_states, new_conv_cache[conv_cache_key] = down_block(
+ hidden_states, temb, None, conv_cache.get(conv_cache_key)
+ )
+
+ # 2. Mid
+ hidden_states, new_conv_cache["mid_block"] = self.mid_block(
+ hidden_states, temb, None, conv_cache=conv_cache.get("mid_block")
+ )
+
+ # 3. Post-process
+ hidden_states = self.norm_out(hidden_states)
+ hidden_states = self.conv_act(hidden_states)
+
+ hidden_states, new_conv_cache["conv_out"] = self.conv_out(hidden_states, conv_cache=conv_cache.get("conv_out"))
+
+ return hidden_states, new_conv_cache
+
+
+class ControlnetXsVaeEncoderCogVideoX(ModelMixin, ConfigMixin, FromOriginalModelMixin):
+ r"""
+ A VAE model with KL loss for encoding images into latents and decoding latent representations into images. Used in
+ [CogVideoX](https://github.com/THUDM/CogVideo).
+
+ This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented
+ for all models (such as downloading or saving).
+
+ Parameters:
+ in_channels (int, *optional*, defaults to 3): Number of channels in the input image.
+ out_channels (int, *optional*, defaults to 3): Number of channels in the output.
+ down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`):
+ Tuple of downsample block types.
+ up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`):
+ Tuple of upsample block types.
+ block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`):
+ Tuple of block output channels.
+ act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use.
+ sample_size (`int`, *optional*, defaults to `32`): Sample input size.
+ scaling_factor (`float`, *optional*, defaults to `1.15258426`):
+ The component-wise standard deviation of the trained latent space computed using the first batch of the
+ training set. This is used to scale the latent space to have unit variance when training the diffusion
+ model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the
+ diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1
+ / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image
+ Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper.
+ force_upcast (`bool`, *optional*, default to `True`):
+ If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE
+ can be fine-tuned / trained to a lower range without loosing too much precision in which case
+ `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
+ """
+
+ _supports_gradient_checkpointing = True
+ _no_split_modules = ["CogVideoXResnetBlock3D"]
+
+ @register_to_config
+ def __init__(
+ self,
+ in_channels: int = 3,
+ down_block_types: Tuple[str] = (
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ "CogVideoXDownBlock3D",
+ ),
+ block_out_channels: Tuple[int] = (128, 256, 256, 512),
+ latent_channels: int = 16,
+ layers_per_block: int = 3,
+ act_fn: str = "silu",
+ norm_eps: float = 1e-6,
+ norm_num_groups: int = 32,
+ temporal_compression_ratio: float = 4,
+ sample_height: int = 480,
+ sample_width: int = 720,
+ ):
+ super().__init__()
+
+ self.encoder = CogVideoXEncoder3D(
+ in_channels=in_channels,
+ out_channels=latent_channels,
+ down_block_types=down_block_types,
+ block_out_channels=block_out_channels,
+ layers_per_block=layers_per_block,
+ act_fn=act_fn,
+ norm_eps=norm_eps,
+ norm_num_groups=norm_num_groups,
+ temporal_compression_ratio=temporal_compression_ratio,
+ )
+
+ self.use_slicing = False
+ self.use_tiling = False
+
+ # Can be increased to decode more latent frames at once, but comes at a reasonable memory cost and it is not
+ # recommended because the temporal parts of the VAE, here, are tricky to understand.
+ # If you decode X latent frames together, the number of output frames is:
+ # (X + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) => X + 6 frames
+ #
+ # Example with num_latent_frames_batch_size = 2:
+ # - 12 latent frames: (0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, 11) are processed together
+ # => (12 // 2 frame slices) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale))
+ # => 6 * 8 = 48 frames
+ # - 13 latent frames: (0, 1, 2) (special case), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12) are processed together
+ # => (1 frame slice) * ((3 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) +
+ # ((13 - 3) // 2) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale))
+ # => 1 * 9 + 5 * 8 = 49 frames
+ # It has been implemented this way so as to not have "magic values" in the code base that would be hard to explain. Note that
+ # setting it to anything other than 2 would give poor results because the VAE hasn't been trained to be adaptive with different
+ # number of temporal frames.
+ self.num_latent_frames_batch_size = 2
+ self.num_sample_frames_batch_size = 8
+
+ # We make the minimum height and width of sample for tiling half that of the generally supported
+ self.tile_sample_min_height = sample_height // 2
+ self.tile_sample_min_width = sample_width // 2
+ self.tile_latent_min_height = int(
+ self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1))
+ )
+ self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1)))
+
+ # These are experimental overlap factors that were chosen based on experimentation and seem to work best for
+ # 720x480 (WxH) resolution. The above resolution is the strongly recommended generation resolution in CogVideoX
+ # and so the tiling implementation has only been tested on those specific resolutions.
+ self.tile_overlap_factor_height = 1 / 6
+ self.tile_overlap_factor_width = 1 / 5
+
+ def _set_gradient_checkpointing(self, module, value=False):
+ if isinstance(module, CogVideoXEncoder3D):
+ module.gradient_checkpointing = value
+
+ def enable_tiling(
+ self,
+ tile_sample_min_height: Optional[int] = None,
+ tile_sample_min_width: Optional[int] = None,
+ tile_overlap_factor_height: Optional[float] = None,
+ tile_overlap_factor_width: Optional[float] = None,
+ ) -> None:
+ r"""
+ Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to
+ compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow
+ processing larger images.
+
+ Args:
+ tile_sample_min_height (`int`, *optional*):
+ The minimum height required for a sample to be separated into tiles across the height dimension.
+ tile_sample_min_width (`int`, *optional*):
+ The minimum width required for a sample to be separated into tiles across the width dimension.
+ tile_overlap_factor_height (`int`, *optional*):
+ The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are
+ no tiling artifacts produced across the height dimension. Must be between 0 and 1. Setting a higher
+ value might cause more tiles to be processed leading to slow down of the decoding process.
+ tile_overlap_factor_width (`int`, *optional*):
+ The minimum amount of overlap between two consecutive horizontal tiles. This is to ensure that there
+ are no tiling artifacts produced across the width dimension. Must be between 0 and 1. Setting a higher
+ value might cause more tiles to be processed leading to slow down of the decoding process.
+ """
+ self.use_tiling = True
+ self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height
+ self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width
+ self.tile_latent_min_height = int(
+ self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1))
+ )
+ self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1)))
+ self.tile_overlap_factor_height = tile_overlap_factor_height or self.tile_overlap_factor_height
+ self.tile_overlap_factor_width = tile_overlap_factor_width or self.tile_overlap_factor_width
+
+ def disable_tiling(self) -> None:
+ r"""
+ Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing
+ decoding in one step.
+ """
+ self.use_tiling = False
+
+ def enable_slicing(self) -> None:
+ r"""
+ Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to
+ compute decoding in several steps. This is useful to save some memory and allow larger batch sizes.
+ """
+ self.use_slicing = True
+
+ def disable_slicing(self) -> None:
+ r"""
+ Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing
+ decoding in one step.
+ """
+ self.use_slicing = False
+
+ def _encode(self, x: torch.Tensor) -> torch.Tensor:
+ batch_size, num_channels, num_frames, height, width = x.shape
+
+ if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height):
+ return self.tiled_encode(x)
+
+ frame_batch_size = self.num_sample_frames_batch_size
+ # Note: We expect the number of frames to be either `1` or `frame_batch_size * k` or `frame_batch_size * k + 1` for some k.
+ # As the extra single frame is handled inside the loop, it is not required to round up here.
+ num_batches = max(num_frames // frame_batch_size, 1)
+ conv_cache = None
+ enc = []
+
+ for i in range(num_batches):
+ remaining_frames = num_frames % frame_batch_size
+ start_frame = frame_batch_size * i + (0 if i == 0 else remaining_frames)
+ end_frame = frame_batch_size * (i + 1) + remaining_frames
+ x_intermediate = x[:, :, start_frame:end_frame]
+ x_intermediate, conv_cache = self.encoder(x_intermediate, conv_cache=conv_cache)
+ # if self.quant_conv is not None:
+ # x_intermediate = self.quant_conv(x_intermediate)
+ enc.append(x_intermediate)
+
+ enc = torch.cat(enc, dim=2)
+ return enc
+
+ @apply_forward_hook
+ def encode(
+ self, x: torch.Tensor, return_dict: bool = True
+ ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]:
+ """
+ Encode a batch of images into latents.
+
+ Args:
+ x (`torch.Tensor`): Input batch of images.
+ return_dict (`bool`, *optional*, defaults to `True`):
+ Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple.
+
+ Returns:
+ The latent representations of the encoded videos. If `return_dict` is True, a
+ [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned.
+ """
+ if self.use_slicing and x.shape[0] > 1:
+ encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)]
+ h = torch.cat(encoded_slices)
+ else:
+ h = self._encode(x)
+
+ posterior = DiagonalGaussianDistribution(h)
+
+ if not return_dict:
+ return (posterior,)
+ return AutoencoderKLOutput(latent_dist=posterior)
+
+
+
+ def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor:
+ blend_extent = min(a.shape[3], b.shape[3], blend_extent)
+ for y in range(blend_extent):
+ b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * (
+ y / blend_extent
+ )
+ return b
+
+ def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor:
+ blend_extent = min(a.shape[4], b.shape[4], blend_extent)
+ for x in range(blend_extent):
+ b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * (
+ x / blend_extent
+ )
+ return b
+
+ def tiled_encode(self, x: torch.Tensor) -> torch.Tensor:
+ r"""Encode a batch of images using a tiled encoder.
+
+ When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several
+ steps. This is useful to keep memory use constant regardless of image size. The end result of tiled encoding is
+ different from non-tiled encoding because each tile uses a different encoder. To avoid tiling artifacts, the
+ tiles overlap and are blended together to form a smooth output. You may still see tile-sized changes in the
+ output, but they should be much less noticeable.
+
+ Args:
+ x (`torch.Tensor`): Input batch of videos.
+
+ Returns:
+ `torch.Tensor`:
+ The latent representation of the encoded videos.
+ """
+ # For a rough memory estimate, take a look at the `tiled_decode` method.
+ batch_size, num_channels, num_frames, height, width = x.shape
+
+ overlap_height = int(self.tile_sample_min_height * (1 - self.tile_overlap_factor_height))
+ overlap_width = int(self.tile_sample_min_width * (1 - self.tile_overlap_factor_width))
+ blend_extent_height = int(self.tile_latent_min_height * self.tile_overlap_factor_height)
+ blend_extent_width = int(self.tile_latent_min_width * self.tile_overlap_factor_width)
+ row_limit_height = self.tile_latent_min_height - blend_extent_height
+ row_limit_width = self.tile_latent_min_width - blend_extent_width
+ frame_batch_size = self.num_sample_frames_batch_size
+
+ # Split x into overlapping tiles and encode them separately.
+ # The tiles have an overlap to avoid seams between tiles.
+ rows = []
+ for i in range(0, height, overlap_height):
+ row = []
+ for j in range(0, width, overlap_width):
+ # Note: We expect the number of frames to be either `1` or `frame_batch_size * k` or `frame_batch_size * k + 1` for some k.
+ # As the extra single frame is handled inside the loop, it is not required to round up here.
+ num_batches = max(num_frames // frame_batch_size, 1)
+ conv_cache = None
+ time = []
+
+ for k in range(num_batches):
+ remaining_frames = num_frames % frame_batch_size
+ start_frame = frame_batch_size * k + (0 if k == 0 else remaining_frames)
+ end_frame = frame_batch_size * (k + 1) + remaining_frames
+ tile = x[
+ :,
+ :,
+ start_frame:end_frame,
+ i : i + self.tile_sample_min_height,
+ j : j + self.tile_sample_min_width,
+ ]
+ tile, conv_cache = self.encoder(tile, conv_cache=conv_cache)
+ # if self.quant_conv is not None:
+ # tile = self.quant_conv(tile)
+ time.append(tile)
+
+ row.append(torch.cat(time, dim=2))
+ rows.append(row)
+
+ result_rows = []
+ for i, row in enumerate(rows):
+ result_row = []
+ for j, tile in enumerate(row):
+ # blend the above tile and the left tile
+ # to the current tile and add the current tile to the result row
+ if i > 0:
+ tile = self.blend_v(rows[i - 1][j], tile, blend_extent_height)
+ if j > 0:
+ tile = self.blend_h(row[j - 1], tile, blend_extent_width)
+ result_row.append(tile[:, :, :, :row_limit_height, :row_limit_width])
+ result_rows.append(torch.cat(result_row, dim=4))
+
+ enc = torch.cat(result_rows, dim=3)
+ return enc
+
+ def forward(
+ self,
+ sample: torch.Tensor,
+ sample_posterior: bool = False,
+ return_dict: bool = True,
+ generator: Optional[torch.Generator] = None,
+ ) -> Union[torch.Tensor, torch.Tensor]:
+ x = sample
+ posterior = self.encode(x).latent_dist
+ if sample_posterior:
+ z = posterior.sample(generator=generator)
+ else:
+ z = posterior.mode()
+ return z
\ No newline at end of file
diff --git a/finetune/models/cogvideox1dot5_i2v/controlnetxs_trainer.py b/finetune/models/cogvideox1dot5_i2v/controlnetxs_trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d1636dfa8d9c9db65cf573a474b887f41478e68
--- /dev/null
+++ b/finetune/models/cogvideox1dot5_i2v/controlnetxs_trainer.py
@@ -0,0 +1,931 @@
+import json
+import math
+import wandb
+from accelerate.accelerator import Accelerator, DistributedType
+from accelerate.utils import (
+ DistributedDataParallelKwargs,
+ InitProcessGroupKwargs,
+ ProjectConfiguration,
+ gather_object,
+ set_seed,
+)
+from diffusers.optimization import get_scheduler
+from diffusers.utils.export_utils import export_to_video
+from peft import LoraConfig, get_peft_model_state_dict, set_peft_model_state_dict
+from tqdm import tqdm
+from functools import partial
+
+
+from typing import Any, Dict, List, Tuple
+
+import torch
+from diffusers import (
+ AutoencoderKLCogVideoX,
+ CogVideoXDPMScheduler,
+ CogVideoXImageToVideoPipeline,
+ # CogVideoXTransformer3DModel,
+)
+from diffusers.models.embeddings import get_3d_rotary_pos_embed
+from PIL import Image
+from numpy import dtype
+from transformers import AutoTokenizer, T5EncoderModel
+from typing_extensions import override
+
+from finetune.schemas import Components
+from finetune.trainer import Trainer, _DTYPE_MAP
+from finetune.utils import unwrap_model
+
+from ..utils import register
+import os
+
+from finetune.trainer import logger
+from finetune.datasets.i2v_camera_dataset import I2VDatasetWithResize
+from finetune.utils import (
+ cast_training_params,
+ free_memory,
+ get_intermediate_ckpt_path,
+ get_latest_ckpt_path_to_resume_from,
+ get_memory_statistics,
+ get_optimizer,
+ string_to_filename,
+ unload_model,
+ unwrap_model,
+)
+from finetune.models.camera_controller.controlnetxs import ControlnetXs
+from finetune.models.camera_controller.cogvideox_with_controlnetxs import CogVideoXTransformer3DModel
+from diffusers.video_processor import VideoProcessor
+from torch.utils.data import DataLoader, Dataset
+from finetune.schemas import Args, Components, State
+
+
+
+class CogVideoX1dot5I2VControlnetXsTrainer(Trainer):
+ UNLOAD_LIST = ["text_encoder"]
+
+ def __init__(self, args: Args) -> None:
+ super().__init__(args)
+
+ if not args.precompute and args.allow_switch_hw and self.accelerator.process_index % 2 == 0:
+ f, h, w = self.args.train_resolution
+ self.args.train_resolution = (f, w, h)
+ self.state.train_frames = args.train_resolution[0]
+ self.state.train_height = args.train_resolution[1]
+ self.state.train_width = args.train_resolution[2]
+
+
+ def get_training_dtype(self) -> torch.dtype:
+ if self.args.mixed_precision == "no":
+ return _DTYPE_MAP["fp32"]
+ elif self.args.mixed_precision == "fp16":
+ return _DTYPE_MAP["fp16"]
+ elif self.args.mixed_precision == "bf16":
+ return _DTYPE_MAP["bf16"]
+ else:
+ raise ValueError(f"Invalid mixed precision: {self.args.mixed_precision}")
+
+ @override
+ def load_components(self) -> Dict[str, Any]:
+ components = Components()
+ model_path = str(self.args.model_path)
+
+ components.pipeline_cls = CogVideoXImageToVideoPipeline
+
+ components.tokenizer = AutoTokenizer.from_pretrained(model_path, subfolder="tokenizer")
+
+ components.text_encoder = T5EncoderModel.from_pretrained(model_path, subfolder="text_encoder")
+
+ components.transformer = CogVideoXTransformer3DModel.from_pretrained(model_path, subfolder="transformer")
+
+ components.vae = AutoencoderKLCogVideoX.from_pretrained(model_path, subfolder="vae")
+
+ components.scheduler = CogVideoXDPMScheduler.from_pretrained(model_path, subfolder="scheduler")
+
+ components.controlnetxs = ControlnetXs("models/camera_controller/CogVideoX1.5-5B-I2V", components.transformer.config)
+ self.state.controlnetxs_transformer_config = components.controlnetxs.transformer.config
+
+ return components
+
+ @override
+ def prepare_models(self) -> None:
+ logger.info("Initializing models")
+
+ if self.components.vae is not None:
+ if self.args.enable_slicing:
+ self.components.vae.enable_slicing()
+ if self.args.enable_tiling:
+ self.components.vae.enable_tiling()
+
+ if self.components.controlnetxs.vae_encoder is not None:
+ if self.args.enable_slicing:
+ self.components.controlnetxs.vae_encoder.enable_slicing()
+ if self.args.enable_tiling:
+ self.components.controlnetxs.vae_encoder.enable_tiling()
+
+ self.state.transformer_config = self.components.transformer.config
+
+ @override
+ def prepare_dataset(self) -> None:
+ logger.info("Initializing dataset and dataloader")
+
+ if self.args.model_type == "i2v":
+ self.dataset = I2VDatasetWithResize(
+ **(self.args.model_dump()),
+ device=self.accelerator.device,
+ max_num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ trainer=self,
+ )
+ elif self.args.model_type == "t2v":
+ self.dataset = T2VDatasetWithResize(
+ **(self.args.model_dump()),
+ device=self.accelerator.device,
+ max_num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ trainer=self,
+ )
+ else:
+ raise ValueError(f"Invalid model type: {self.args.model_type}")
+
+ # Prepare VAE and text encoder for encoding
+ self.components.vae.requires_grad_(False)
+ self.components.text_encoder.requires_grad_(False)
+ self.components.vae = self.components.vae.to(self.accelerator.device, dtype=self.state.weight_dtype)
+ self.components.text_encoder = self.components.text_encoder.to(
+ self.accelerator.device, dtype=self.state.weight_dtype
+ )
+
+ # Precompute latent for video and prompt embedding
+ if self.args.precompute:
+ logger.info("Precomputing latent for video and prompt embedding ...")
+ tmp_data_loader = torch.utils.data.DataLoader(
+ self.dataset,
+ collate_fn=self.collate_fn,
+ batch_size=1,
+ num_workers=0,
+ pin_memory=self.args.pin_memory,
+ shuffle=True
+ )
+ tmp_data_loader = self.accelerator.prepare_data_loader(tmp_data_loader)
+ for _ in tqdm(tmp_data_loader):
+ ...
+ self.accelerator.wait_for_everyone()
+ logger.info("Precomputing latent for video and prompt embedding ... Done")
+ return
+
+ unload_model(self.components.vae)
+ unload_model(self.components.text_encoder)
+ free_memory()
+
+ self.data_loader = torch.utils.data.DataLoader(
+ self.dataset,
+ collate_fn=self.collate_fn,
+ batch_size=self.args.batch_size,
+ num_workers=self.args.num_workers,
+ pin_memory=self.args.pin_memory,
+ shuffle=True,
+ )
+
+ @override
+ def initialize_pipeline(self) -> CogVideoXImageToVideoPipeline:
+ # self.components.transformer.set_controlnetxs_like_adapter(
+ # unwrap_model(self.accelerator, self.components.controlnetxs)
+ # )
+ pipe = CogVideoXImageToVideoPipeline(
+ tokenizer=self.components.tokenizer,
+ text_encoder=self.components.text_encoder,
+ vae=self.components.vae,
+ transformer=self.components.transformer,
+ scheduler=self.components.scheduler,
+ )
+ return pipe
+
+ def decode_video(self, latent: torch.Tensor, video_processor) -> torch.Tensor:
+ # shape of input video: [B, C,F//4, H//8, W//8]
+ vae = self.components.vae
+ latent = latent.to(vae.device, dtype=vae.dtype)
+
+ video = vae.decode(latent / vae.config.scaling_factor).sample
+ video = video_processor.postprocess_video(video=video, output_type="pil")
+ return video
+
+ @override
+ def encode_video(self, video: torch.Tensor) -> torch.Tensor:
+ # shape of input video: [B, C, F, H, W]
+ vae = self.components.vae
+ video = video.to(vae.device, dtype=vae.dtype)
+ latent_dist = vae.encode(video).latent_dist
+ latent = latent_dist.sample() * vae.config.scaling_factor
+ return latent
+
+ @override
+ def encode_text(self, prompt: str) -> torch.Tensor:
+ prompt_token_ids = self.components.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=self.state.transformer_config.max_text_seq_length,
+ truncation=True,
+ add_special_tokens=True,
+ return_tensors="pt",
+ )
+ prompt_token_ids = prompt_token_ids.input_ids
+ prompt_embedding = self.components.text_encoder(prompt_token_ids.to(self.accelerator.device))[0]
+ return prompt_embedding
+
+ @override
+ def collate_fn(self, samples: List[Dict[str, Any]]) -> Dict[str, Any]:
+ ret = {
+ "encoded_videos": [], "prompt_embeddings": [], "images": [], "plucker_embeddings": [], "prompts": [], "videos": []
+ }
+
+ for sample in samples:
+ encoded_video = sample["encoded_video"]
+ prompt_embedding = sample["prompt_embedding"]
+ image = sample["image"]
+ plucker_embedding = sample["plucker_embedding"]
+ video = sample["video"]
+ prompt = sample["prompt"]
+
+ ret["encoded_videos"].append(encoded_video)
+ ret["prompt_embeddings"].append(prompt_embedding)
+ if not self.args.precompute:
+ ret["plucker_embeddings"].append(plucker_embedding)
+ ret["images"].append(image)
+ ret["videos"].append(video)
+ ret["prompts"].append(prompt)
+
+ ret["encoded_videos"] = torch.stack(ret["encoded_videos"])
+ ret["prompt_embeddings"] = torch.stack(ret["prompt_embeddings"])
+ ret["images"] = torch.stack(ret["images"])
+ if not self.args.precompute:
+ ret["plucker_embeddings"] = torch.stack(ret["plucker_embeddings"])
+ ret["videos"] = torch.stack(ret["videos"])
+
+ return ret
+
+ @override
+ def prepare_trainable_parameters(self):
+ logger.info("Initializing trainable parameters")
+
+ # For mixed precision training we cast all non-trainable weights to half-precision
+ # as these weights are only used for inference, keeping weights in full precision is not required.
+ weight_dtype = self.state.weight_dtype
+
+ if torch.backends.mps.is_available() and weight_dtype == torch.bfloat16:
+ # due to pytorch#99272, MPS does not yet support bfloat16.
+ raise ValueError(
+ "Mixed precision training with bfloat16 is not supported on MPS. Please use fp16 (recommended) or fp32 instead."
+ )
+
+ # For LoRA, we freeze all the parameters
+ # For SFT, we train all the parameters in transformer model
+ for attr_name, component in vars(self.components).items():
+ if hasattr(component, "requires_grad_"):
+ if self.args.training_type == "sft" and attr_name == "transformer":
+ component.requires_grad_(True)
+ else:
+ component.requires_grad_(False)
+
+ if self.args.training_type == "lora":
+ transformer_lora_config = LoraConfig(
+ r=self.args.rank,
+ lora_alpha=self.args.lora_alpha,
+ init_lora_weights=True,
+ target_modules=self.args.target_modules,
+ )
+ self.components.transformer.add_adapter(transformer_lora_config)
+ self._prepare_saving_loading_hooks(transformer_lora_config)
+
+ # Load components needed for training to GPU (except transformer), and cast them to the specified data type
+ ignore_list = ["controlnetxs"] + self.UNLOAD_LIST
+ self._move_components_to_device(dtype=weight_dtype, ignore_list=ignore_list)
+
+ if self.args.gradient_checkpointing:
+ self.components.transformer.enable_gradient_checkpointing()
+ self.components.controlnetxs.enable_gradient_checkpointing()
+
+ self.components.controlnetxs.train()
+ self.components.controlnetxs.requires_grad_(True)
+ # self.components.controlnetxs.set_main_transformer(self.components.transformer)
+
+ @override
+ def prepare_optimizer(self) -> None:
+ logger.info("Initializing optimizer and lr scheduler")
+
+ # Make sure the trainable params are in float32
+ cast_training_params([self.components.controlnetxs], dtype=torch.float32)
+
+ # For LoRA, we only want to train the LoRA weights
+ # For SFT, we want to train all the parameters
+ # for idx, (n, p) in enumerate(self.components.controlnetxs.named_parameters()):
+ # if p.requires_grad:
+ # print(idx, n)
+
+ trainable_parameters = list(filter(lambda p: p.requires_grad, self.components.controlnetxs.parameters()))
+ trainable_parameters_with_lr = {
+ "params": trainable_parameters,
+ "lr": self.args.learning_rate,
+ }
+ params_to_optimize = [trainable_parameters_with_lr]
+ self.state.num_trainable_parameters = sum(p.numel() for p in trainable_parameters)
+
+ use_deepspeed_opt = (
+ self.accelerator.state.deepspeed_plugin is not None
+ and "optimizer" in self.accelerator.state.deepspeed_plugin.deepspeed_config
+ )
+ optimizer = get_optimizer(
+ params_to_optimize=params_to_optimize,
+ optimizer_name=self.args.optimizer,
+ learning_rate=self.args.learning_rate,
+ beta1=self.args.beta1,
+ beta2=self.args.beta2,
+ beta3=self.args.beta3,
+ epsilon=self.args.epsilon,
+ weight_decay=self.args.weight_decay,
+ use_deepspeed=use_deepspeed_opt,
+ )
+
+ num_update_steps_per_epoch = math.ceil(len(self.data_loader) / self.args.gradient_accumulation_steps)
+ if self.args.train_steps is None:
+ self.args.train_steps = self.args.train_epochs * num_update_steps_per_epoch
+ self.state.overwrote_max_train_steps = True
+
+ use_deepspeed_lr_scheduler = (
+ self.accelerator.state.deepspeed_plugin is not None
+ and "scheduler" in self.accelerator.state.deepspeed_plugin.deepspeed_config
+ )
+ total_training_steps = self.args.train_steps
+ num_warmup_steps = self.args.lr_warmup_steps
+
+ if use_deepspeed_lr_scheduler:
+ from accelerate.utils import DummyScheduler
+
+ lr_scheduler = DummyScheduler(
+ name=self.args.lr_scheduler,
+ optimizer=optimizer,
+ total_num_steps=total_training_steps,
+ num_warmup_steps=num_warmup_steps,
+ )
+ else:
+ lr_scheduler = get_scheduler(
+ name=self.args.lr_scheduler,
+ optimizer=optimizer,
+ num_warmup_steps=num_warmup_steps,
+ num_training_steps=total_training_steps,
+ num_cycles=self.args.lr_num_cycles,
+ power=self.args.lr_power,
+ )
+
+ self.optimizer = optimizer
+ self.lr_scheduler = lr_scheduler
+
+ @override
+ def prepare_for_training(self) -> None:
+ self.components.controlnetxs, self.optimizer, self.data_loader, self.lr_scheduler = self.accelerator.prepare(
+ self.components.controlnetxs, self.optimizer, self.data_loader, self.lr_scheduler
+ )
+
+ # We need to recalculate our total training steps as the size of the training dataloader may have changed.
+ num_update_steps_per_epoch = math.ceil(len(self.data_loader) / self.args.gradient_accumulation_steps)
+ if self.state.overwrote_max_train_steps:
+ self.args.train_steps = self.args.train_epochs * num_update_steps_per_epoch
+ # Afterwards we recalculate our number of training epochs
+ self.args.train_epochs = math.ceil(self.args.train_steps / num_update_steps_per_epoch)
+ self.state.num_update_steps_per_epoch = num_update_steps_per_epoch
+
+ @override
+ def train(self) -> None:
+ logger.info("Starting training")
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory before training start: {json.dumps(memory_statistics, indent=4)}")
+
+ self.state.total_batch_size_count = (
+ self.args.batch_size * self.accelerator.num_processes * self.args.gradient_accumulation_steps
+ )
+ info = {
+ "trainable parameters": self.state.num_trainable_parameters,
+ "total samples": len(self.dataset),
+ "train epochs": self.args.train_epochs,
+ "train steps": self.args.train_steps,
+ "batches per device": self.args.batch_size,
+ "total batches observed per epoch": len(self.data_loader),
+ "train batch size total count": self.state.total_batch_size_count,
+ "gradient accumulation steps": self.args.gradient_accumulation_steps,
+ }
+ logger.info(f"Training configuration: {json.dumps(info, indent=4)}")
+
+ global_step = 0
+ first_epoch = 0
+ initial_global_step = 0
+
+ # Potentially load in the weights and states from a previous save
+ (
+ resume_from_checkpoint_path,
+ initial_global_step,
+ global_step,
+ first_epoch,
+ ) = get_latest_ckpt_path_to_resume_from(
+ resume_from_checkpoint=self.args.resume_from_checkpoint,
+ num_update_steps_per_epoch=self.state.num_update_steps_per_epoch,
+ )
+ if resume_from_checkpoint_path is not None:
+ self.accelerator.load_state(resume_from_checkpoint_path)
+
+ progress_bar = tqdm(
+ range(0, self.args.train_steps),
+ initial=initial_global_step,
+ desc="Training steps",
+ disable=not self.accelerator.is_local_main_process,
+ )
+
+ accelerator = self.accelerator
+ generator = torch.Generator(device=accelerator.device)
+ if self.args.seed is not None:
+ generator = generator.manual_seed(self.args.seed)
+ self.state.generator = generator
+
+ free_memory()
+ for epoch in range(first_epoch, self.args.train_epochs):
+ logger.debug(f"Starting epoch ({epoch + 1}/{self.args.train_epochs})")
+
+ self.components.controlnetxs.train()
+ models_to_accumulate = [self.components.controlnetxs]
+
+ for step, batch in enumerate(self.data_loader):
+ logger.debug(f"Starting step {step + 1}")
+ logs = {}
+
+ with accelerator.accumulate(models_to_accumulate):
+ # These weighting schemes use a uniform timestep sampling and instead post-weight the loss
+ loss, loss_log = self.compute_loss(batch)
+ accelerator.backward(loss)
+
+ if accelerator.sync_gradients:
+ if accelerator.distributed_type == DistributedType.DEEPSPEED:
+ grad_norm = self.components.controlnetxs.get_global_grad_norm()
+ # In some cases the grad norm may not return a float
+ if torch.is_tensor(grad_norm):
+ grad_norm = grad_norm.item()
+ else:
+ grad_norm = accelerator.clip_grad_norm_(
+ self.components.controlnetxs.parameters(), self.args.max_grad_norm
+ )
+ if torch.is_tensor(grad_norm):
+ grad_norm = grad_norm.item()
+
+ logs["grad_norm"] = grad_norm
+
+ # import ipdb
+ # ipdb.set_trace()
+ self.optimizer.step()
+ self.lr_scheduler.step()
+ self.optimizer.zero_grad()
+
+ # Checks if the accelerator has performed an optimization step behind the scenes
+ if accelerator.sync_gradients:
+ # print('0-0', self.components.controlnetxs.transformer.patch_embed.proj.weight.data[0][:5])
+ # print('0-1', self.components.controlnetxs.transformer.patch_embed.proj.weight.grad)
+ # print('1', unwrap_model(self.accelerator, self.components.controlnetxs).transformer.patch_embed.proj.weight.data[0][:5])
+ # print('1', unwrap_model(self.accelerator, self.components.controlnetxs).transformer.patch_embed.proj.weight.grad)
+ progress_bar.update(1)
+ global_step += 1
+ self._maybe_save_checkpoint(global_step)
+
+ for key, value in loss_log.items():
+ logs[key] = value.item()
+ try:
+ logs["lr"] = self.lr_scheduler.get_last_lr()[0]
+ progress_bar.set_postfix(logs)
+ except:
+ pass
+
+ # Maybe run validation
+ should_run_validation = self.args.do_validation and global_step % self.args.validation_steps == 0
+ if should_run_validation:
+ del loss
+ free_memory()
+ try:
+ self.validate(global_step)
+ except:
+ print('fail to validate')
+
+ accelerator.log(logs, step=global_step)
+
+ if global_step >= self.args.train_steps:
+ break
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after epoch {epoch + 1}: {json.dumps(memory_statistics, indent=4)}")
+
+ accelerator.wait_for_everyone()
+ self._maybe_save_checkpoint(global_step, must_save=True)
+ if self.args.do_validation:
+ free_memory()
+ self.validate(global_step)
+
+ del self.components
+ free_memory()
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after training end: {json.dumps(memory_statistics, indent=4)}")
+
+ accelerator.end_training()
+
+ @override
+ def compute_loss(self, batch) -> torch.Tensor:
+ prompt_embedding = batch["prompt_embeddings"]
+ latent = batch["encoded_videos"]
+ video = batch["videos"]
+ prompt = batch["prompts"]
+ images = batch["images"]
+ plucker_embedding = batch["plucker_embeddings"] # B, C, F, H, W
+
+ self.state.image = images[0] # C, H, W; value in [0, 255]
+ self.state.video = video[0] # F, C, H, W; value in [-1, 1]
+ self.state.prompt_embedding = prompt_embedding[0] # L, D
+ self.state.prompt = prompt[0]
+ self.state.plucker_embedding = plucker_embedding[0] # C=6, F, H, W
+
+
+ # Shape of prompt_embedding: [B, seq_len, hidden_size]
+ # Shape of latent: [B, C, F, H, W]
+ # Shape of images: [B, C, H, W]
+
+ patch_size_t = self.state.transformer_config.patch_size_t
+ if patch_size_t is not None:
+ ncopy = latent.shape[2] % patch_size_t
+ # Copy the first frame ncopy times to match patch_size_t
+ first_frame = latent[:, :, :1, :, :] # Get first frame [B, C, 1, H, W]
+ latent = torch.cat([first_frame.repeat(1, 1, ncopy, 1, 1), latent], dim=2)
+ assert latent.shape[2] % patch_size_t == 0
+
+ batch_size, num_channels, num_frames, height, width = latent.shape
+
+ # Get prompt embeddings
+ _, seq_len, _ = prompt_embedding.shape
+ prompt_embedding = prompt_embedding.view(batch_size, seq_len, -1).to(dtype=latent.dtype)
+
+ # Add frame dimension to images [B,C,H,W] -> [B,C,F,H,W]
+ images = images.unsqueeze(2)
+ # Add noise to images
+ image_noise_sigma = torch.normal(mean=-3.0, std=0.5, size=(1,), device=self.accelerator.device)
+ image_noise_sigma = torch.exp(image_noise_sigma).to(dtype=images.dtype)
+ noisy_images = images + torch.randn_like(images) * image_noise_sigma[:, None, None, None, None]
+ image_latent_dist = self.components.vae.encode(noisy_images.to(dtype=self.components.vae.dtype)).latent_dist
+ image_latents = image_latent_dist.sample() * self.components.vae.config.scaling_factor
+
+ # Sample a random timestep for each sample
+ timesteps = torch.randint(
+ 0, self.components.scheduler.config.num_train_timesteps, (batch_size,), device=self.accelerator.device
+ )
+ if self.args.time_sampling_type == "truncated_normal":
+ time_sampling_dict = {
+ 'mean': self.args.time_sampling_mean,
+ 'std': self.args.time_sampling_std,
+ 'a': self.args.camera_condition_start_timestep / self.components.scheduler.config.num_train_timesteps,
+ 'b': 1.0,
+ }
+ timesteps = torch.nn.init.trunc_normal_(
+ torch.empty(batch_size, device=self.accelerator.device), **time_sampling_dict
+ ) * self.components.scheduler.config.num_train_timesteps
+
+ timesteps = timesteps.long()
+
+ self.state.timestep = timesteps[0].item()
+
+ # from [B, C, F, H, W] to [B, F, C, H, W]
+ latent = latent.permute(0, 2, 1, 3, 4)
+ image_latents = image_latents.permute(0, 2, 1, 3, 4)
+ assert (latent.shape[0], *latent.shape[2:]) == (image_latents.shape[0], *image_latents.shape[2:])
+
+ # Padding image_latents to the same frame number as latent
+ padding_shape = (latent.shape[0], latent.shape[1] - 1, *latent.shape[2:])
+ latent_padding = image_latents.new_zeros(padding_shape)
+ image_latents = torch.cat([image_latents, latent_padding], dim=1)
+
+ # Add noise to latent
+ noise = torch.randn_like(latent)
+ latent_noisy = self.components.scheduler.add_noise(latent, noise, timesteps)
+
+ # Concatenate latent and image_latents in the channel dimension
+ latent_img_noisy = torch.cat([latent_noisy, image_latents], dim=2)
+
+ # Prepare rotary embeds
+ vae_scale_factor_spatial = 2 ** (len(self.components.vae.config.block_out_channels) - 1)
+ transformer_config = self.state.transformer_config
+ controlnetxs_transformer_config = self.state.controlnetxs_transformer_config
+ rotary_emb = (
+ self.prepare_rotary_positional_embeddings(
+ height=height * vae_scale_factor_spatial,
+ width=width * vae_scale_factor_spatial,
+ num_frames=num_frames,
+ transformer_config=transformer_config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.accelerator.device,
+ )
+ if transformer_config.use_rotary_positional_embeddings
+ else None
+ )
+ rotary_emb_for_controlnetxs = (
+ self.prepare_rotary_positional_embeddings(
+ height=height * vae_scale_factor_spatial,
+ width=width * vae_scale_factor_spatial,
+ num_frames=num_frames,
+ transformer_config=controlnetxs_transformer_config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.accelerator.device,
+ )
+ if transformer_config.use_rotary_positional_embeddings
+ else None
+ )
+
+ # Predict noise
+ ofs_emb = (
+ None if self.state.transformer_config.ofs_embed_dim is None else latent.new_full((1,), fill_value=2.0)
+ )
+ if self.args.enable_gft_training:
+ camera_condition_gft_beta = torch.ones(timesteps.shape[0]).uniform_(0.2, 1.0).to(self.accelerator.device) # [0.2, 1.0]
+ else:
+ camera_condition_gft_beta = torch.ones(timesteps.shape[0]).to(self.accelerator.device) # [1.0, 1.0]
+ predicted_results = self.components.controlnetxs(
+ hidden_states=latent_img_noisy,
+ encoder_hidden_states=prompt_embedding,
+ timestep=timesteps,
+ ofs=ofs_emb,
+ image_rotary_emb=rotary_emb,
+ image_rotary_emb_for_controlnetxs=rotary_emb_for_controlnetxs,
+ return_dict=True,
+ plucker_embedding=plucker_embedding, # B,F,C,H,W
+ main_transformer=self.components.transformer,
+ camera_condition_gft_beta = camera_condition_gft_beta,
+ camera_condition_dropout=0.1 if self.args.enable_gft_training else 0.0
+ )
+ predicted_noise = predicted_results['sample']
+
+ if self.args.enable_gft_training:
+ with torch.inference_mode():
+ uncond_predicted_results = self.components.controlnetxs(
+ hidden_states=latent_img_noisy,
+ encoder_hidden_states=prompt_embedding,
+ timestep=timesteps,
+ ofs=ofs_emb,
+ image_rotary_emb=rotary_emb,
+ image_rotary_emb_for_controlnetxs=rotary_emb_for_controlnetxs,
+ return_dict=True,
+ plucker_embedding=plucker_embedding, # B,F,C,H,W
+ main_transformer=self.components.transformer,
+ camera_condition_gft_beta=torch.ones_like(camera_condition_gft_beta),
+ camera_condition_dropout=1.0
+ )
+ uncond_predicted_noise = uncond_predicted_results['sample']
+ predicted_noise = camera_condition_gft_beta[:, None, None, None, None] * predicted_noise \
+ + (1-camera_condition_gft_beta[:, None, None, None, None]) * uncond_predicted_noise
+
+
+ # Denoise
+ latent_pred = self.components.scheduler.get_velocity(predicted_noise, latent_noisy, timesteps)
+
+ alphas_cumprod = self.components.scheduler.alphas_cumprod[timesteps]
+ weights = 1 / (1 - alphas_cumprod)
+ while len(weights.shape) < len(latent_pred.shape):
+ weights = weights.unsqueeze(-1)
+
+ loss = torch.mean((weights * (latent_pred - latent) ** 2).reshape(batch_size, -1), dim=1)
+ loss = loss.mean()
+ loss_log = {
+ 'diffusion_loss': loss.detach(),
+ }
+
+ return loss, loss_log
+
+ @override
+ def prepare_for_validation(self):
+ pass
+
+ @override
+ def validate(self, step: int) -> None:
+ logger.info("Starting validation")
+
+ accelerator = self.accelerator
+ self.components.controlnetxs.eval()
+ torch.set_grad_enabled(False)
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory before validation start: {json.dumps(memory_statistics, indent=4)}")
+
+ ##### Initialize pipeline #####
+ pipe = self.initialize_pipeline()
+
+ if self.state.using_deepspeed:
+ # Can't using model_cpu_offload in deepspeed,
+ # so we need to move all components in pipe to device
+ # pipe.to(self.accelerator.device, dtype=self.state.weight_dtype)
+ self._move_components_to_device(dtype=self.state.weight_dtype, ignore_list=["controlnetxs", "transformer"])
+ else:
+ # if not using deepspeed, use model_cpu_offload to further reduce memory usage
+ # Or use pipe.enable_sequential_cpu_offload() to further reduce memory usage
+ pipe.enable_model_cpu_offload(device=self.accelerator.device)
+
+ # Convert all model weights to training dtype
+ # Note, this will change LoRA weights in self.components.transformer to training dtype, rather than keep them in fp32
+ pipe = pipe.to(dtype=self.state.weight_dtype)
+
+ #################################
+
+ all_processes_artifacts = []
+
+ image = self.state.image # C, H, W; value in [0, 255]
+ video = self.state.video # F, C, H, W; value in [-1, 1]
+ prompt_embeds = self.state.prompt_embedding # L, D
+ prompt = self.state.prompt
+ plucker_embedding = self.state.plucker_embedding # C=6, F, H, W
+
+ if image is not None:
+ # Convert image tensor (C, H, W) to PIL images
+ image = ((image * 0.5 + 0.5) * 255).round().clamp(0, 255).to(torch.uint8)
+ image = image.permute(1, 2, 0).cpu().numpy()
+ image = Image.fromarray(image)
+
+ if video is not None:
+ # Convert video tensor (F, C, H, W) to list of PIL images
+ video = ((video * 0.5 + 0.5) * 255).round().clamp(0, 255).to(torch.uint8)
+ video = [Image.fromarray(frame.permute(1, 2, 0).cpu().numpy()) for frame in video]
+
+ validation_artifacts = self.validation_step({"prompt_embeds": prompt_embeds, "image": image, "plucker_embedding": plucker_embedding}, pipe)
+ prompt_filename = string_to_filename(prompt)[:25]
+ artifacts = {
+ "conditioned_image": {"type": "image", "value": image},
+ "gt_video": {"type": "video", "value": video},
+ }
+
+ for i, (artifact_type, artifact_value) in enumerate(validation_artifacts):
+ artifacts.update({f"generated_video_{i}": {"type": artifact_type, "value": artifact_value}})
+
+ for key, value in list(artifacts.items()):
+ artifact_type = value["type"]
+ artifact_value = value["value"]
+ if artifact_type not in ["image", "video"] or artifact_value is None:
+ continue
+
+ extension = "png" if artifact_type == "image" else "mp4"
+ filename = f"validation-{key}-{step}-{accelerator.process_index}-{prompt_filename}.{extension}"
+ validation_path = self.args.output_dir / "validation_res"
+ validation_path.mkdir(parents=True, exist_ok=True)
+ filename = str(validation_path / filename)
+
+ if artifact_type == "image":
+ logger.debug(f"Saving image to {filename}")
+ artifact_value.save(filename)
+ artifact_value = wandb.Image(filename)
+ elif artifact_type == "video":
+ logger.debug(f"Saving video to {filename}")
+ export_to_video(artifact_value, filename, fps=self.args.gen_fps)
+ artifact_value = wandb.Video(filename, caption=f"{key}_{prompt}")
+
+ all_processes_artifacts.append(artifact_value)
+
+ all_artifacts = gather_object(all_processes_artifacts)
+
+ if accelerator.is_main_process:
+ tracker_key = "validation"
+ for tracker in accelerator.trackers:
+ if tracker.name == "wandb":
+ image_artifacts = [artifact for artifact in all_artifacts if isinstance(artifact, wandb.Image)]
+ video_artifacts = [artifact for artifact in all_artifacts if isinstance(artifact, wandb.Video)]
+ tracker.log(
+ {
+ tracker_key: {"images": image_artifacts, "videos": video_artifacts},
+ },
+ step=step,
+ )
+
+ ########## Clean up ##########
+ if self.state.using_deepspeed:
+ del pipe
+ # Unload models except those needed for training
+ self._move_components_to_cpu(unload_list=self.UNLOAD_LIST)
+ else:
+ pipe.remove_all_hooks()
+ del pipe
+ # Load models except those not needed for training
+ self._move_components_to_device(dtype=self.state.weight_dtype, ignore_list=self.UNLOAD_LIST)
+ self.components.controlnetxs.to(self.accelerator.device, dtype=self.state.weight_dtype)
+
+ # Change trainable weights back to fp32 to keep with dtype after prepare the model
+ cast_training_params([self.components.controlnetxs], dtype=torch.float32)
+
+ free_memory()
+ accelerator.wait_for_everyone()
+ ################################
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after validation end: {json.dumps(memory_statistics, indent=4)}")
+ torch.cuda.reset_peak_memory_stats(accelerator.device)
+
+ torch.set_grad_enabled(True)
+ self.components.controlnetxs.train()
+
+ @override
+ def validation_step(
+ self, eval_data: Dict[str, Any], pipe: CogVideoXImageToVideoPipeline
+ ) -> List[Tuple[str, Image.Image | List[Image.Image]]]:
+ """
+ Return the data that needs to be saved. For videos, the data format is List[PIL],
+ and for images, the data format is PIL
+ """
+ prompt_embeds, image, plucker_embedding = eval_data["prompt_embeds"], eval_data["image"], eval_data["plucker_embedding"]
+
+ # camera
+ plucker_embedding = plucker_embedding.to(self.components.controlnetxs.vae_encoder.device, dtype=self.components.controlnetxs.vae_encoder.dtype) # [C=6, F, H, W]
+ latent_plucker_embedding_dist = self.components.controlnetxs.vae_encoder.encode(plucker_embedding.unsqueeze(0)).latent_dist # B,C=6,F,H,W --> B,128,F//4,H//4,W//4
+ latent_plucker_embedding = latent_plucker_embedding_dist.sample()
+ patch_size_t = self.components.transformer.config.patch_size_t
+ if patch_size_t is not None:
+ ncopy = latent_plucker_embedding.shape[2] % patch_size_t
+ # Copy the first frame ncopy times to match patch_size_t
+ first_frame = latent_plucker_embedding[:, :, :1, :, :] # Get first frame [B, C, 1, H, W]
+ latent_plucker_embedding = torch.cat([first_frame.repeat(1, 1, ncopy, 1, 1), latent_plucker_embedding], dim=2)
+ assert latent_plucker_embedding.shape[2] % patch_size_t == 0
+ latent_plucker_embedding = latent_plucker_embedding.permute(0, 2, 1, 3, 4) # [B, C, F, H, W] to [B, F, C, H, W]
+
+ latent_plucker_embedding = latent_plucker_embedding.repeat(2,1,1,1,1) # cfg
+ num_frames = latent_plucker_embedding.shape[1]
+ vae_scale_factor_spatial = 2 ** (len(self.components.vae.config.block_out_channels) - 1)
+ transformer_config = self.state.transformer_config
+ controlnetxs_transformer_config = self.state.controlnetxs_transformer_config
+ rotary_emb_for_controlnetxs = (
+ self.prepare_rotary_positional_embeddings(
+ height=latent_plucker_embedding.shape[-2] * vae_scale_factor_spatial,
+ width=latent_plucker_embedding.shape[-1] * vae_scale_factor_spatial,
+ num_frames=num_frames,
+ transformer_config=controlnetxs_transformer_config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.accelerator.device,
+ )
+ if transformer_config.use_rotary_positional_embeddings
+ else None
+ )
+
+ original_forward = pipe.transformer.forward
+ if self.args.enable_gft_training:
+ camera_condition_gft_beta = torch.ones((latent_plucker_embedding.shape[0], ), device=self.accelerator.device) * 0.4
+ else:
+ camera_condition_gft_beta = torch.ones((latent_plucker_embedding.shape[0],), device=self.accelerator.device)
+ pipe.transformer.forward = partial(
+ pipe.transformer.forward,
+ controlnetxs=unwrap_model(self.accelerator, self.components.controlnetxs),
+ latent_plucker_embedding=latent_plucker_embedding,
+ image_rotary_emb_for_controlnetxs=rotary_emb_for_controlnetxs,
+ camera_condition_gft_beta=camera_condition_gft_beta,
+ camera_condition_start_timestep=self.args.camera_condition_start_timestep
+ )
+ #########
+
+ video_generate = pipe(
+ num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ prompt_embeds=prompt_embeds.unsqueeze(0),
+ image=image,
+ generator=self.state.generator,
+ num_inference_steps=25
+ ).frames[0]
+ pipe.transformer.forward = original_forward
+ return [("video", video_generate)]
+
+ @override
+ def _prepare_saving_loading_hooks(self):
+ pass
+
+ def prepare_rotary_positional_embeddings(
+ self,
+ height: int,
+ width: int,
+ num_frames: int,
+ transformer_config: Dict,
+ vae_scale_factor_spatial: int,
+ device: torch.device,
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ grid_height = height // (vae_scale_factor_spatial * transformer_config.patch_size)
+ grid_width = width // (vae_scale_factor_spatial * transformer_config.patch_size)
+
+ if transformer_config.patch_size_t is None:
+ base_num_frames = num_frames
+ else:
+ base_num_frames = (num_frames + transformer_config.patch_size_t - 1) // transformer_config.patch_size_t
+
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=transformer_config.attention_head_dim,
+ crops_coords=None,
+ grid_size=(grid_height, grid_width),
+ temporal_size=base_num_frames,
+ grid_type="slice",
+ max_size=(grid_height, grid_width),
+ device=device,
+ )
+
+ return freqs_cos, freqs_sin
+
+
+register("cogvideox1.5-i2v", "controlnetxs", CogVideoX1dot5I2VControlnetXsTrainer)
diff --git a/finetune/models/cogvideox1dot5_i2v/lora_trainer.py b/finetune/models/cogvideox1dot5_i2v/lora_trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b2b55866ff3b9b7ff2b9a41a96349b400f01fc8
--- /dev/null
+++ b/finetune/models/cogvideox1dot5_i2v/lora_trainer.py
@@ -0,0 +1,9 @@
+from ..cogvideox_i2v.lora_trainer import CogVideoXI2VLoraTrainer
+from ..utils import register
+
+
+class CogVideoX1dot5I2VLoraTrainer(CogVideoXI2VLoraTrainer):
+ pass
+
+
+register("cogvideox1.5-i2v", "lora", CogVideoX1dot5I2VLoraTrainer)
diff --git a/finetune/models/cogvideox1dot5_t2v/lora_trainer.py b/finetune/models/cogvideox1dot5_t2v/lora_trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..79504bc7f23247e5b5f69593bcfc86e62f737fce
--- /dev/null
+++ b/finetune/models/cogvideox1dot5_t2v/lora_trainer.py
@@ -0,0 +1,9 @@
+from ..cogvideox_t2v.lora_trainer import CogVideoXT2VLoraTrainer
+from ..utils import register
+
+
+class CogVideoX1dot5T2VLoraTrainer(CogVideoXT2VLoraTrainer):
+ pass
+
+
+register("cogvideox1.5-t2v", "lora", CogVideoX1dot5T2VLoraTrainer)
diff --git a/finetune/models/cogvideox_i2v/lora_trainer.py b/finetune/models/cogvideox_i2v/lora_trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..a0241895258616e528a226d85cefd2ffabb6b0ad
--- /dev/null
+++ b/finetune/models/cogvideox_i2v/lora_trainer.py
@@ -0,0 +1,246 @@
+from typing import Any, Dict, List, Tuple
+
+import torch
+from diffusers import (
+ AutoencoderKLCogVideoX,
+ CogVideoXDPMScheduler,
+ CogVideoXImageToVideoPipeline,
+ CogVideoXTransformer3DModel,
+)
+from diffusers.models.embeddings import get_3d_rotary_pos_embed
+from PIL import Image
+from numpy import dtype
+from transformers import AutoTokenizer, T5EncoderModel
+from typing_extensions import override
+
+from finetune.schemas import Components
+from finetune.trainer import Trainer
+from finetune.utils import unwrap_model
+
+from ..utils import register
+
+
+class CogVideoXI2VLoraTrainer(Trainer):
+ UNLOAD_LIST = ["text_encoder"]
+
+ @override
+ def load_components(self) -> Dict[str, Any]:
+ components = Components()
+ model_path = str(self.args.model_path)
+
+ components.pipeline_cls = CogVideoXImageToVideoPipeline
+
+ components.tokenizer = AutoTokenizer.from_pretrained(model_path, subfolder="tokenizer")
+
+ components.text_encoder = T5EncoderModel.from_pretrained(model_path, subfolder="text_encoder")
+
+ components.transformer = CogVideoXTransformer3DModel.from_pretrained(model_path, subfolder="transformer")
+
+ components.vae = AutoencoderKLCogVideoX.from_pretrained(model_path, subfolder="vae")
+
+ components.scheduler = CogVideoXDPMScheduler.from_pretrained(model_path, subfolder="scheduler")
+
+ return components
+
+ @override
+ def initialize_pipeline(self) -> CogVideoXImageToVideoPipeline:
+ pipe = CogVideoXImageToVideoPipeline(
+ tokenizer=self.components.tokenizer,
+ text_encoder=self.components.text_encoder,
+ vae=self.components.vae,
+ transformer=unwrap_model(self.accelerator, self.components.transformer),
+ scheduler=self.components.scheduler,
+ )
+ return pipe
+
+ @override
+ def encode_video(self, video: torch.Tensor) -> torch.Tensor:
+ # shape of input video: [B, C, F, H, W]
+ vae = self.components.vae
+ video = video.to(vae.device, dtype=vae.dtype)
+ latent_dist = vae.encode(video).latent_dist
+ latent = latent_dist.sample() * vae.config.scaling_factor
+ return latent
+
+ @override
+ def encode_text(self, prompt: str) -> torch.Tensor:
+ prompt_token_ids = self.components.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=self.state.transformer_config.max_text_seq_length,
+ truncation=True,
+ add_special_tokens=True,
+ return_tensors="pt",
+ )
+ prompt_token_ids = prompt_token_ids.input_ids
+ prompt_embedding = self.components.text_encoder(prompt_token_ids.to(self.accelerator.device))[0]
+ return prompt_embedding
+
+ @override
+ def collate_fn(self, samples: List[Dict[str, Any]]) -> Dict[str, Any]:
+ ret = {"encoded_videos": [], "prompt_embedding": [], "images": []}
+
+ for sample in samples:
+ encoded_video = sample["encoded_video"]
+ prompt_embedding = sample["prompt_embedding"]
+ image = sample["image"]
+
+ ret["encoded_videos"].append(encoded_video)
+ ret["prompt_embedding"].append(prompt_embedding)
+ ret["images"].append(image)
+
+ ret["encoded_videos"] = torch.stack(ret["encoded_videos"])
+ ret["prompt_embedding"] = torch.stack(ret["prompt_embedding"])
+ ret["images"] = torch.stack(ret["images"])
+
+ return ret
+
+ @override
+ def compute_loss(self, batch) -> torch.Tensor:
+ prompt_embedding = batch["prompt_embedding"]
+ latent = batch["encoded_videos"]
+ images = batch["images"]
+
+ # Shape of prompt_embedding: [B, seq_len, hidden_size]
+ # Shape of latent: [B, C, F, H, W]
+ # Shape of images: [B, C, H, W]
+
+ patch_size_t = self.state.transformer_config.patch_size_t
+ if patch_size_t is not None:
+ ncopy = latent.shape[2] % patch_size_t
+ # Copy the first frame ncopy times to match patch_size_t
+ first_frame = latent[:, :, :1, :, :] # Get first frame [B, C, 1, H, W]
+ latent = torch.cat([first_frame.repeat(1, 1, ncopy, 1, 1), latent], dim=2)
+ assert latent.shape[2] % patch_size_t == 0
+
+ batch_size, num_channels, num_frames, height, width = latent.shape
+
+ # Get prompt embeddings
+ _, seq_len, _ = prompt_embedding.shape
+ prompt_embedding = prompt_embedding.view(batch_size, seq_len, -1).to(dtype=latent.dtype)
+
+ # Add frame dimension to images [B,C,H,W] -> [B,C,F,H,W]
+ images = images.unsqueeze(2)
+ # Add noise to images
+ image_noise_sigma = torch.normal(mean=-3.0, std=0.5, size=(1,), device=self.accelerator.device)
+ image_noise_sigma = torch.exp(image_noise_sigma).to(dtype=images.dtype)
+ noisy_images = images + torch.randn_like(images) * image_noise_sigma[:, None, None, None, None]
+ image_latent_dist = self.components.vae.encode(noisy_images.to(dtype=self.components.vae.dtype)).latent_dist
+ image_latents = image_latent_dist.sample() * self.components.vae.config.scaling_factor
+
+ # Sample a random timestep for each sample
+ timesteps = torch.randint(
+ 0, self.components.scheduler.config.num_train_timesteps, (batch_size,), device=self.accelerator.device
+ )
+ timesteps = timesteps.long()
+
+ # from [B, C, F, H, W] to [B, F, C, H, W]
+ latent = latent.permute(0, 2, 1, 3, 4)
+ image_latents = image_latents.permute(0, 2, 1, 3, 4)
+ assert (latent.shape[0], *latent.shape[2:]) == (image_latents.shape[0], *image_latents.shape[2:])
+
+ # Padding image_latents to the same frame number as latent
+ padding_shape = (latent.shape[0], latent.shape[1] - 1, *latent.shape[2:])
+ latent_padding = image_latents.new_zeros(padding_shape)
+ image_latents = torch.cat([image_latents, latent_padding], dim=1)
+
+ # Add noise to latent
+ noise = torch.randn_like(latent)
+ latent_noisy = self.components.scheduler.add_noise(latent, noise, timesteps)
+
+ # Concatenate latent and image_latents in the channel dimension
+ latent_img_noisy = torch.cat([latent_noisy, image_latents], dim=2)
+
+ # Prepare rotary embeds
+ vae_scale_factor_spatial = 2 ** (len(self.components.vae.config.block_out_channels) - 1)
+ transformer_config = self.state.transformer_config
+ rotary_emb = (
+ self.prepare_rotary_positional_embeddings(
+ height=height * vae_scale_factor_spatial,
+ width=width * vae_scale_factor_spatial,
+ num_frames=num_frames,
+ transformer_config=transformer_config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.accelerator.device,
+ )
+ if transformer_config.use_rotary_positional_embeddings
+ else None
+ )
+
+ # Predict noise, For CogVideoX1.5 Only.
+ ofs_emb = (
+ None if self.state.transformer_config.ofs_embed_dim is None else latent.new_full((1,), fill_value=2.0)
+ )
+ predicted_noise = self.components.transformer(
+ hidden_states=latent_img_noisy,
+ encoder_hidden_states=prompt_embedding,
+ timestep=timesteps,
+ ofs=ofs_emb,
+ image_rotary_emb=rotary_emb,
+ return_dict=False,
+ )[0]
+
+ # Denoise
+ latent_pred = self.components.scheduler.get_velocity(predicted_noise, latent_noisy, timesteps)
+
+ alphas_cumprod = self.components.scheduler.alphas_cumprod[timesteps]
+ weights = 1 / (1 - alphas_cumprod)
+ while len(weights.shape) < len(latent_pred.shape):
+ weights = weights.unsqueeze(-1)
+
+ loss = torch.mean((weights * (latent_pred - latent) ** 2).reshape(batch_size, -1), dim=1)
+ loss = loss.mean()
+
+ return loss
+
+ @override
+ def validation_step(
+ self, eval_data: Dict[str, Any], pipe: CogVideoXImageToVideoPipeline
+ ) -> List[Tuple[str, Image.Image | List[Image.Image]]]:
+ """
+ Return the data that needs to be saved. For videos, the data format is List[PIL],
+ and for images, the data format is PIL
+ """
+ prompt, image, video = eval_data["prompt"], eval_data["image"], eval_data["video"]
+
+ video_generate = pipe(
+ num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ prompt=prompt,
+ image=image,
+ generator=self.state.generator,
+ ).frames[0]
+ return [("video", video_generate)]
+
+ def prepare_rotary_positional_embeddings(
+ self,
+ height: int,
+ width: int,
+ num_frames: int,
+ transformer_config: Dict,
+ vae_scale_factor_spatial: int,
+ device: torch.device,
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ grid_height = height // (vae_scale_factor_spatial * transformer_config.patch_size)
+ grid_width = width // (vae_scale_factor_spatial * transformer_config.patch_size)
+
+ if transformer_config.patch_size_t is None:
+ base_num_frames = num_frames
+ else:
+ base_num_frames = (num_frames + transformer_config.patch_size_t - 1) // transformer_config.patch_size_t
+
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=transformer_config.attention_head_dim,
+ crops_coords=None,
+ grid_size=(grid_height, grid_width),
+ temporal_size=base_num_frames,
+ grid_type="slice",
+ max_size=(grid_height, grid_width),
+ device=device,
+ )
+
+ return freqs_cos, freqs_sin
+
+
+register("cogvideox-i2v", "lora", CogVideoXI2VLoraTrainer)
diff --git a/finetune/models/cogvideox_t2v/lora_trainer.py b/finetune/models/cogvideox_t2v/lora_trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec3b7fd2b0777e7b67e93800a3bac4d64598f2dd
--- /dev/null
+++ b/finetune/models/cogvideox_t2v/lora_trainer.py
@@ -0,0 +1,224 @@
+from typing import Any, Dict, List, Tuple
+
+import torch
+from diffusers import (
+ AutoencoderKLCogVideoX,
+ CogVideoXDPMScheduler,
+ CogVideoXPipeline,
+ CogVideoXTransformer3DModel,
+)
+from diffusers.models.embeddings import get_3d_rotary_pos_embed
+from PIL import Image
+from transformers import AutoTokenizer, T5EncoderModel
+from typing_extensions import override
+
+from finetune.schemas import Components
+from finetune.trainer import Trainer
+from finetune.utils import unwrap_model
+
+from ..utils import register
+
+
+class CogVideoXT2VLoraTrainer(Trainer):
+ UNLOAD_LIST = ["text_encoder", "vae"]
+
+ @override
+ def load_components(self) -> Components:
+ components = Components()
+ model_path = str(self.args.model_path)
+
+ components.pipeline_cls = CogVideoXPipeline
+
+ components.tokenizer = AutoTokenizer.from_pretrained(model_path, subfolder="tokenizer")
+
+ components.text_encoder = T5EncoderModel.from_pretrained(model_path, subfolder="text_encoder")
+
+ components.transformer = CogVideoXTransformer3DModel.from_pretrained(model_path, subfolder="transformer")
+
+ components.vae = AutoencoderKLCogVideoX.from_pretrained(model_path, subfolder="vae")
+
+ components.scheduler = CogVideoXDPMScheduler.from_pretrained(model_path, subfolder="scheduler")
+
+ return components
+
+ @override
+ def initialize_pipeline(self) -> CogVideoXPipeline:
+ pipe = CogVideoXPipeline(
+ tokenizer=self.components.tokenizer,
+ text_encoder=self.components.text_encoder,
+ vae=self.components.vae,
+ transformer=unwrap_model(self.accelerator, self.components.transformer),
+ scheduler=self.components.scheduler,
+ )
+ return pipe
+
+ @override
+ def encode_video(self, video: torch.Tensor) -> torch.Tensor:
+ # shape of input video: [B, C, F, H, W]
+ vae = self.components.vae
+ video = video.to(vae.device, dtype=vae.dtype)
+ latent_dist = vae.encode(video).latent_dist
+ latent = latent_dist.sample() * vae.config.scaling_factor
+ return latent
+
+ @override
+ def encode_text(self, prompt: str) -> torch.Tensor:
+ prompt_token_ids = self.components.tokenizer(
+ prompt,
+ padding="max_length",
+ max_length=self.state.transformer_config.max_text_seq_length,
+ truncation=True,
+ add_special_tokens=True,
+ return_tensors="pt",
+ )
+ prompt_token_ids = prompt_token_ids.input_ids
+ prompt_embedding = self.components.text_encoder(prompt_token_ids.to(self.accelerator.device))[0]
+ return prompt_embedding
+
+ @override
+ def collate_fn(self, samples: List[Dict[str, Any]]) -> Dict[str, Any]:
+ ret = {"encoded_videos": [], "prompt_embedding": []}
+
+ for sample in samples:
+ encoded_video = sample["encoded_video"]
+ prompt_embedding = sample["prompt_embedding"]
+
+ ret["encoded_videos"].append(encoded_video)
+ ret["prompt_embedding"].append(prompt_embedding)
+
+ ret["encoded_videos"] = torch.stack(ret["encoded_videos"])
+ ret["prompt_embedding"] = torch.stack(ret["prompt_embedding"])
+
+ return ret
+
+ @override
+ def compute_loss(self, batch) -> torch.Tensor:
+ prompt_embedding = batch["prompt_embedding"]
+ latent = batch["encoded_videos"]
+
+ # Shape of prompt_embedding: [B, seq_len, hidden_size]
+ # Shape of latent: [B, C, F, H, W]
+
+ patch_size_t = self.state.transformer_config.patch_size_t
+ if patch_size_t is not None and latent.shape[2] % patch_size_t != 0:
+ raise ValueError(
+ "Number of frames in latent must be divisible by patch size, please check your args for training."
+ )
+
+ # Add 2 random noise frames at the beginning of frame dimension
+ noise_frames = torch.randn(
+ latent.shape[0],
+ latent.shape[1],
+ 2,
+ latent.shape[3],
+ latent.shape[4],
+ device=latent.device,
+ dtype=latent.dtype,
+ )
+ latent = torch.cat([noise_frames, latent], dim=2)
+
+ batch_size, num_channels, num_frames, height, width = latent.shape
+
+ # Get prompt embeddings
+ _, seq_len, _ = prompt_embedding.shape
+ prompt_embedding = prompt_embedding.view(batch_size, seq_len, -1)
+
+ # Sample a random timestep for each sample
+ timesteps = torch.randint(
+ 0, self.components.scheduler.config.num_train_timesteps, (batch_size,), device=self.accelerator.device
+ )
+ timesteps = timesteps.long()
+
+ # Add noise to latent
+ latent = latent.permute(0, 2, 1, 3, 4) # from [B, C, F, H, W] to [B, F, C, H, W]
+ noise = torch.randn_like(latent)
+ latent_added_noise = self.components.scheduler.add_noise(latent, noise, timesteps)
+
+ # Prepare rotary embeds
+ vae_scale_factor_spatial = 2 ** (len(self.components.vae.config.block_out_channels) - 1)
+ transformer_config = self.state.transformer_config
+ rotary_emb = (
+ self.prepare_rotary_positional_embeddings(
+ height=height * vae_scale_factor_spatial,
+ width=width * vae_scale_factor_spatial,
+ num_frames=num_frames,
+ transformer_config=transformer_config,
+ vae_scale_factor_spatial=vae_scale_factor_spatial,
+ device=self.accelerator.device,
+ )
+ if transformer_config.use_rotary_positional_embeddings
+ else None
+ )
+
+ # Predict noise
+ predicted_noise = self.components.transformer(
+ hidden_states=latent_added_noise,
+ encoder_hidden_states=prompt_embedding,
+ timestep=timesteps,
+ image_rotary_emb=rotary_emb,
+ return_dict=False,
+ )[0]
+
+ # Denoise
+ latent_pred = self.components.scheduler.get_velocity(predicted_noise, latent_added_noise, timesteps)
+
+ alphas_cumprod = self.components.scheduler.alphas_cumprod[timesteps]
+ weights = 1 / (1 - alphas_cumprod)
+ while len(weights.shape) < len(latent_pred.shape):
+ weights = weights.unsqueeze(-1)
+
+ loss = torch.mean((weights * (latent_pred - latent) ** 2).reshape(batch_size, -1), dim=1)
+ loss = loss.mean()
+
+ return loss
+
+ @override
+ def validation_step(
+ self, eval_data: Dict[str, Any], pipe: CogVideoXPipeline
+ ) -> List[Tuple[str, Image.Image | List[Image.Image]]]:
+ """
+ Return the data that needs to be saved. For videos, the data format is List[PIL],
+ and for images, the data format is PIL
+ """
+ prompt, image, video = eval_data["prompt"], eval_data["image"], eval_data["video"]
+
+ video_generate = pipe(
+ num_frames=self.state.train_frames, # since we pad 2 frames in latent, we still use train_frames
+ height=self.state.train_height,
+ width=self.state.train_width,
+ prompt=prompt,
+ generator=self.state.generator,
+ ).frames[0]
+ return [("video", video_generate)]
+
+ def prepare_rotary_positional_embeddings(
+ self,
+ height: int,
+ width: int,
+ num_frames: int,
+ transformer_config: Dict,
+ vae_scale_factor_spatial: int,
+ device: torch.device,
+ ) -> Tuple[torch.Tensor, torch.Tensor]:
+ grid_height = height // (vae_scale_factor_spatial * transformer_config.patch_size)
+ grid_width = width // (vae_scale_factor_spatial * transformer_config.patch_size)
+
+ if transformer_config.patch_size_t is None:
+ base_num_frames = num_frames
+ else:
+ base_num_frames = (num_frames + transformer_config.patch_size_t - 1) // transformer_config.patch_size_t
+
+ freqs_cos, freqs_sin = get_3d_rotary_pos_embed(
+ embed_dim=transformer_config.attention_head_dim,
+ crops_coords=None,
+ grid_size=(grid_height, grid_width),
+ temporal_size=base_num_frames,
+ grid_type="slice",
+ max_size=(grid_height, grid_width),
+ device=device,
+ )
+
+ return freqs_cos, freqs_sin
+
+
+register("cogvideox-t2v", "lora", CogVideoXT2VLoraTrainer)
diff --git a/finetune/models/utils.py b/finetune/models/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..ef3ea5b9b8107dfcc799409259c41215d5e1dd98
--- /dev/null
+++ b/finetune/models/utils.py
@@ -0,0 +1,57 @@
+from typing import Dict, Literal
+
+from finetune.trainer import Trainer
+
+
+SUPPORTED_MODELS: Dict[str, Dict[str, Trainer]] = {}
+
+
+def register(model_name: str, training_type: Literal["lora", "sft"], trainer_cls: Trainer):
+ """Register a model and its associated functions for a specific training type.
+
+ Args:
+ model_name (str): Name of the model to register (e.g. "cogvideox-5b")
+ training_type (Literal["lora", "sft"]): Type of training - either "lora" or "sft"
+ trainer_cls (Trainer): Trainer class to register.
+ """
+
+ # Check if model_name and training_type exists in SUPPORTED_MODELS
+ if model_name not in SUPPORTED_MODELS:
+ SUPPORTED_MODELS[model_name] = {}
+ else:
+ if training_type in SUPPORTED_MODELS[model_name]:
+ raise ValueError(f"Training type {training_type} already exists for model {model_name}")
+
+ SUPPORTED_MODELS[model_name][training_type] = trainer_cls
+
+
+def show_supported_models():
+ """Print all currently supported models and their training types."""
+
+ print("\nSupported Models:")
+ print("================")
+
+ for model_name, training_types in SUPPORTED_MODELS.items():
+ print(f"\n{model_name}")
+ print("-" * len(model_name))
+ for training_type in training_types:
+ print(f" • {training_type}")
+
+
+def get_model_cls(model_type: str, training_type: Literal["lora", "sft"]) -> Trainer:
+ """Get the trainer class for a specific model and training type."""
+ if model_type not in SUPPORTED_MODELS:
+ print(f"\nModel '{model_type}' is not supported.")
+ print("\nSupported models are:")
+ for supported_model in SUPPORTED_MODELS:
+ print(f" • {supported_model}")
+ raise ValueError(f"Model '{model_type}' is not supported")
+
+ if training_type not in SUPPORTED_MODELS[model_type]:
+ print(f"\nTraining type '{training_type}' is not supported for model '{model_type}'.")
+ print(f"\nSupported training types for '{model_type}' are:")
+ for supported_type in SUPPORTED_MODELS[model_type]:
+ print(f" • {supported_type}")
+ raise ValueError(f"Training type '{training_type}' is not supported for model '{model_type}'")
+
+ return SUPPORTED_MODELS[model_type][training_type]
diff --git a/finetune/schemas/__init__.py b/finetune/schemas/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..73f547bf29d5596b842b09c448cdd2f5abaae074
--- /dev/null
+++ b/finetune/schemas/__init__.py
@@ -0,0 +1,6 @@
+from .args import Args
+from .components import Components
+from .state import State
+
+
+__all__ = ["Args", "State", "Components"]
diff --git a/finetune/schemas/args.py b/finetune/schemas/args.py
new file mode 100644
index 0000000000000000000000000000000000000000..5981fb0fa4c34546fac599d4ab045baacef125c1
--- /dev/null
+++ b/finetune/schemas/args.py
@@ -0,0 +1,276 @@
+import argparse
+import datetime
+import logging
+from pathlib import Path
+from pprint import pprint
+from typing import Any, List, Literal, Tuple
+
+from pydantic import BaseModel, ValidationInfo, field_validator
+
+
+class Args(BaseModel):
+ ########## Model ##########
+ model_path: Path
+ model_name: str
+ model_type: Literal["i2v", "t2v"]
+ training_type: Literal["lora", "sft", "controlnetxs"] = "controlnetxs"
+ enable_gft_training: bool = False
+ camera_condition_start_timestep: int = 0
+ time_sampling_type: str = "default"
+ time_sampling_mean: float
+ time_sampling_std: float
+ keep_aspect_ratio: bool = False
+
+ ########## Output ##########
+ output_dir: Path = Path("train_results/{:%Y-%m-%d-%H-%M-%S}".format(datetime.datetime.now()))
+ report_to: Literal["tensorboard", "wandb", "all"] | None = None
+ tracker_name: str = "finetrainer-cogvideo"
+ sub_tracker_name: str = "controlnetxs"
+
+ ########## Data ###########
+ precompute: bool = False
+ data_root: Path
+ metadata_path: Path
+ enable_align_factor: bool = False
+ allow_switch_hw: bool = False
+ use_precompute_video_latents: bool = True
+
+
+ ########## Training #########
+ resume_from_checkpoint: Path | None = None
+
+ seed: int | None = None
+ train_epochs: int
+ train_steps: int | None = None
+ checkpointing_steps: int = 200
+ checkpointing_limit: int = 10
+
+ batch_size: int
+ gradient_accumulation_steps: int = 1
+
+ train_resolution: Tuple[int, int, int] # shape: (frames, height, width)
+
+ #### deprecated args: video_resolution_buckets
+ # if use bucket for training, should not be None
+ # Note1: At least one frame rate in the bucket must be less than or equal to the frame rate of any video in the dataset
+ # Note2: For cogvideox, cogvideox1.5
+ # The frame rate set in the bucket must be an integer multiple of 8 (spatial_compression_rate[4] * path_t[2] = 8)
+ # The height and width set in the bucket must be an integer multiple of 8 (temporal_compression_rate[8])
+ # video_resolution_buckets: List[Tuple[int, int, int]] | None = None
+
+ mixed_precision: Literal["no", "fp16", "bf16"]
+
+ learning_rate: float = 2e-5
+ optimizer: str = "adamw"
+ beta1: float = 0.9
+ beta2: float = 0.95
+ beta3: float = 0.98
+ epsilon: float = 1e-8
+ weight_decay: float = 1e-4
+ max_grad_norm: float = 1.0
+
+ lr_scheduler: str = "constant_with_warmup"
+ lr_warmup_steps: int = 100
+ lr_num_cycles: int = 1
+ lr_power: float = 1.0
+
+ num_workers: int = 8
+ pin_memory: bool = True
+
+ gradient_checkpointing: bool = True
+ enable_slicing: bool = True
+ enable_tiling: bool = True
+ nccl_timeout: int = 1800
+
+ ########## Lora ##########
+ rank: int = 128
+ lora_alpha: int = 64
+ target_modules: List[str] = ["to_q", "to_k", "to_v", "to_out.0"]
+
+ ########## Validation ##########
+ do_validation: bool = False
+ validation_steps: int | None # if set, should be a multiple of checkpointing_steps
+ validation_dir: Path | None # if set do_validation, should not be None
+ validation_prompts: str | None # if set do_validation, should not be None
+ validation_images: str | None # if set do_validation and model_type == i2v, should not be None
+ validation_videos: str | None # if set do_validation and model_type == v2v, should not be None
+ gen_fps: int = 15
+
+ #### deprecated args: gen_video_resolution
+ # 1. If set do_validation, should not be None
+ # 2. Suggest selecting the bucket from `video_resolution_buckets` that is closest to the resolution you have chosen for fine-tuning
+ # or the resolution recommended by the model
+ # 3. Note: For cogvideox, cogvideox1.5
+ # The frame rate set in the bucket must be an integer multiple of 8 (spatial_compression_rate[4] * path_t[2] = 8)
+ # The height and width set in the bucket must be an integer multiple of 8 (temporal_compression_rate[8])
+ # gen_video_resolution: Tuple[int, int, int] | None # shape: (frames, height, width)
+
+ # @field_validator("image_column")
+ # def validate_image_column(cls, v: str | None, info: ValidationInfo) -> str | None:
+ # values = info.data
+ # if values.get("model_type") == "i2v" and not v:
+ # logging.warning(
+ # "No `image_column` specified for i2v model. Will automatically extract first frames from videos as conditioning images."
+ # )
+ # return v
+
+ # @field_validator("validation_dir", "validation_prompts")
+ # def validate_validation_required_fields(cls, v: Any, info: ValidationInfo) -> Any:
+ # values = info.data
+ # if values.get("do_validation") and not v:
+ # field_name = info.field_name
+ # raise ValueError(f"{field_name} must be specified when do_validation is True")
+ # return v
+
+ # @field_validator("validation_images")
+ # def validate_validation_images(cls, v: str | None, info: ValidationInfo) -> str | None:
+ # values = info.data
+ # if values.get("do_validation") and values.get("model_type") == "i2v" and not v:
+ # raise ValueError("validation_images must be specified when do_validation is True and model_type is i2v")
+ # return v
+
+ # @field_validator("validation_videos")
+ # def validate_validation_videos(cls, v: str | None, info: ValidationInfo) -> str | None:
+ # values = info.data
+ # if values.get("do_validation") and values.get("model_type") == "v2v" and not v:
+ # raise ValueError("validation_videos must be specified when do_validation is True and model_type is v2v")
+ # return v
+
+ @field_validator("validation_steps")
+ def validate_validation_steps(cls, v: int | None, info: ValidationInfo) -> int | None:
+ values = info.data
+ if values.get("do_validation"):
+ if v is None:
+ raise ValueError("validation_steps must be specified when do_validation is True")
+ # if values.get("checkpointing_steps") and v % values["checkpointing_steps"] != 0:
+ # raise ValueError("validation_steps must be a multiple of checkpointing_steps")
+ return v
+
+ @field_validator("train_resolution")
+ def validate_train_resolution(cls, v: Tuple[int, int, int], info: ValidationInfo) -> str:
+ try:
+ frames, height, width = v
+
+ # Check if (frames - 1) is multiple of 8
+ if (frames - 1) % 8 != 0:
+ raise ValueError("Number of frames - 1 must be a multiple of 8")
+
+ # Check resolution for cogvideox-5b models
+ model_name = info.data.get("model_name", "")
+ if model_name in ["cogvideox-5b-i2v", "cogvideox-5b-t2v"]:
+ if (height, width) != (480, 720):
+ raise ValueError("For cogvideox-5b models, height must be 480 and width must be 720")
+
+ return v
+
+ except ValueError as e:
+ if (
+ str(e) == "not enough values to unpack (expected 3, got 0)"
+ or str(e) == "invalid literal for int() with base 10"
+ ):
+ raise ValueError("train_resolution must be in format 'frames x height x width'")
+ raise e
+
+ @field_validator("mixed_precision")
+ def validate_mixed_precision(cls, v: str, info: ValidationInfo) -> str:
+ if v == "fp16" and "cogvideox-2b" not in str(info.data.get("model_path", "")).lower():
+ logging.warning(
+ "All CogVideoX models except cogvideox-2b were trained with bfloat16. "
+ "Using fp16 precision may lead to training instability."
+ )
+ return v
+
+ @classmethod
+ def parse_args(cls):
+ """Parse command line arguments and return Args instance"""
+ parser = argparse.ArgumentParser()
+ # Required arguments
+ parser.add_argument("--model_path", type=str, required=True)
+ parser.add_argument("--model_name", type=str, required=True)
+ parser.add_argument("--model_type", type=str, required=True)
+ parser.add_argument("--training_type", type=str, required=True)
+ parser.add_argument("--output_dir", type=str, required=True)
+ parser.add_argument("--data_root", type=str, required=True)
+ parser.add_argument("--metadata_path", type=str, required=True)
+ parser.add_argument("--train_resolution", type=str, required=True)
+ parser.add_argument("--report_to", type=str, required=True)
+ parser.add_argument("--tracker_name", type=str)
+ parser.add_argument("--sub_tracker_name", type=str)
+ parser.add_argument("--enable_align_factor", action="store_true")
+ parser.add_argument("--enable_gft_training", action="store_true")
+ parser.add_argument("--camera_condition_start_timestep", type=int, default=0)
+ parser.add_argument("--time_sampling_mean", type=float, default=0.8)
+ parser.add_argument("--time_sampling_std", type=float, default=0.075)
+ parser.add_argument("--time_sampling_type", type=str, default="default")
+ parser.add_argument("--keep_aspect_ratio", action="store_true")
+
+
+
+
+
+
+ # Training hyperparameters
+ parser.add_argument("--seed", type=int, default=42)
+ parser.add_argument("--train_epochs", type=int, default=10)
+ parser.add_argument("--train_steps", type=int, default=None)
+ parser.add_argument("--gradient_accumulation_steps", type=int, default=1)
+ parser.add_argument("--batch_size", type=int, default=1)
+ parser.add_argument("--learning_rate", type=float, default=2e-5)
+ parser.add_argument("--optimizer", type=str, default="adamw")
+ parser.add_argument("--beta1", type=float, default=0.9)
+ parser.add_argument("--beta2", type=float, default=0.95)
+ parser.add_argument("--beta3", type=float, default=0.98)
+ parser.add_argument("--epsilon", type=float, default=1e-8)
+ parser.add_argument("--weight_decay", type=float, default=1e-4)
+ parser.add_argument("--max_grad_norm", type=float, default=1.0)
+
+
+ # Learning rate scheduler
+ parser.add_argument("--lr_scheduler", type=str, default="constant_with_warmup")
+ parser.add_argument("--lr_warmup_steps", type=int, default=100)
+ parser.add_argument("--lr_num_cycles", type=int, default=1)
+ parser.add_argument("--lr_power", type=float, default=1.0)
+
+ # Data loading
+ parser.add_argument("--precompute", action="store_true")
+ parser.add_argument("--num_workers", type=int, default=8)
+ parser.add_argument("--pin_memory", action="store_true")
+ parser.add_argument("--image_column", type=str, default=None)
+
+ # Model configuration
+ parser.add_argument("--mixed_precision", type=str, default="no")
+ parser.add_argument("--gradient_checkpointing", action="store_true")
+ parser.add_argument("--enable_slicing", action="store_true")
+ parser.add_argument("--enable_tiling", action="store_true")
+ parser.add_argument("--nccl_timeout", type=int, default=1800)
+
+ # LoRA parameters
+ parser.add_argument("--rank", type=int, default=128)
+ parser.add_argument("--lora_alpha", type=int, default=64)
+ parser.add_argument("--target_modules", type=str, nargs="+", default=["to_q", "to_k", "to_v", "to_out.0"])
+
+ # Checkpointing
+ parser.add_argument("--checkpointing_steps", type=int, default=200)
+ parser.add_argument("--checkpointing_limit", type=int, default=10)
+ parser.add_argument("--resume_from_checkpoint", type=str, default=None)
+
+ # Validation
+ parser.add_argument("--do_validation", action="store_true")
+ parser.add_argument("--validation_steps", type=int, default=None)
+ parser.add_argument("--validation_dir", type=str, default=None)
+ parser.add_argument("--validation_prompts", type=str, default=None)
+ parser.add_argument("--validation_images", type=str, default=None)
+ parser.add_argument("--validation_videos", type=str, default=None)
+ parser.add_argument("--gen_fps", type=int, default=15)
+
+ parser.add_argument("--allow_switch_hw", action="store_true")
+ parser.add_argument("--use_precompute_video_latents", type=lambda x: x.lower() == 'true', default=True)
+
+ args = parser.parse_args()
+
+ # Convert video_resolution_buckets string to list of tuples
+ frames, height, width = args.train_resolution.split("x")
+ args.train_resolution = (int(frames), int(height), int(width))
+ pprint(args.__dict__)
+
+ return cls(**vars(args))
diff --git a/finetune/schemas/components.py b/finetune/schemas/components.py
new file mode 100644
index 0000000000000000000000000000000000000000..c09774145514e10e2d51fcaaaf462a8caeb21570
--- /dev/null
+++ b/finetune/schemas/components.py
@@ -0,0 +1,31 @@
+from typing import Any
+
+from pydantic import BaseModel
+
+
+class Components(BaseModel):
+ # pipeline cls
+ pipeline_cls: Any = None
+
+ # Tokenizers
+ tokenizer: Any = None
+ tokenizer_2: Any = None
+ tokenizer_3: Any = None
+
+ # Text encoders
+ text_encoder: Any = None
+ text_encoder_2: Any = None
+ text_encoder_3: Any = None
+
+ # Autoencoder
+ vae: Any = None
+
+ # Denoiser
+ transformer: Any = None
+ unet: Any = None
+
+ # Camera Controller
+ controlnetxs: Any = None
+
+ # Scheduler
+ scheduler: Any = None
diff --git a/finetune/schemas/state.py b/finetune/schemas/state.py
new file mode 100644
index 0000000000000000000000000000000000000000..294a5d3665056d47b5ad0c9d14d8dfdcc5937bbb
--- /dev/null
+++ b/finetune/schemas/state.py
@@ -0,0 +1,37 @@
+from pathlib import Path
+from typing import Any, Dict, List
+
+import torch
+from pydantic import BaseModel
+
+
+class State(BaseModel):
+ model_config = {"arbitrary_types_allowed": True}
+
+ train_frames: int # user-defined training frames, **containing one image padding frame**
+ train_height: int
+ train_width: int
+
+ transformer_config: Dict[str, Any] = None
+ controlnetxs_transformer_config: Dict[str, Any] = None
+
+ weight_dtype: torch.dtype = torch.float32
+ num_trainable_parameters: int = 0
+ overwrote_max_train_steps: bool = False
+ num_update_steps_per_epoch: int = 0
+ total_batch_size_count: int = 0
+
+ generator: torch.Generator | None = None
+
+ validation_prompts: List[str] = []
+ validation_images: List[Path | None] = []
+ validation_videos: List[Path | None] = []
+
+ image: torch.Tensor = None # C, H, W; value in [0, 255]
+ video: torch.Tensor = None # F, C, H, W; value in [-1, 1]
+ prompt_embedding: torch.Tensor = None # L, D
+ prompt: str = None
+ plucker_embedding: torch.Tensor = None # F, 6, H, W
+ timestep: torch.Tensor = None
+
+ using_deepspeed: bool = False
diff --git a/finetune/train.py b/finetune/train.py
new file mode 100644
index 0000000000000000000000000000000000000000..aea805ab2a8540ebc15bad71b646424081eeba8e
--- /dev/null
+++ b/finetune/train.py
@@ -0,0 +1,21 @@
+import sys
+from pathlib import Path
+
+
+sys.path.append(str(Path(__file__).parent.parent))
+
+from finetune.models.utils import get_model_cls
+from finetune.schemas import Args
+import torch
+
+torch.backends.cuda.matmul.allow_tf32 = True
+
+def main():
+ args = Args.parse_args()
+ trainer_cls = get_model_cls(args.model_name, args.training_type)
+ trainer = trainer_cls(args)
+ trainer.fit()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/finetune/trainer.py b/finetune/trainer.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e8003c571c7e52324bfe8a26b01ab6ea38d662f
--- /dev/null
+++ b/finetune/trainer.py
@@ -0,0 +1,777 @@
+import hashlib
+import json
+import logging
+import math
+from datetime import timedelta
+from pathlib import Path
+from typing import Any, Dict, List, Tuple
+
+import diffusers
+import torch
+import transformers
+import wandb
+from accelerate.accelerator import Accelerator, DistributedType
+from accelerate.logging import get_logger
+from accelerate.utils import (
+ DistributedDataParallelKwargs,
+ InitProcessGroupKwargs,
+ ProjectConfiguration,
+ gather_object,
+ set_seed,
+)
+from diffusers.optimization import get_scheduler
+from diffusers.pipelines import DiffusionPipeline
+from diffusers.utils.export_utils import export_to_video
+from peft import LoraConfig, get_peft_model_state_dict, set_peft_model_state_dict
+from PIL import Image
+from torch.utils.data import DataLoader, Dataset
+from tqdm import tqdm
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+from finetune.datasets import I2VDatasetWithResize, T2VDatasetWithResize
+from finetune.datasets.utils import (
+ load_images,
+ load_prompts,
+ load_videos,
+ preprocess_image_with_resize,
+ preprocess_video_with_resize,
+)
+from finetune.schemas import Args, Components, State
+from finetune.utils import (
+ cast_training_params,
+ free_memory,
+ get_intermediate_ckpt_path,
+ get_latest_ckpt_path_to_resume_from,
+ get_memory_statistics,
+ get_optimizer,
+ string_to_filename,
+ unload_model,
+ unwrap_model,
+)
+
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+_DTYPE_MAP = {
+ "fp32": torch.float32,
+ "fp16": torch.float16, # FP16 is Only Support for CogVideoX-2B
+ "bf16": torch.bfloat16,
+}
+
+
+class Trainer:
+ # If set, should be a list of components to unload (refer to `Components``)
+ UNLOAD_LIST: List[str] = None
+
+ def __init__(self, args: Args) -> None:
+ self.args = args
+ self.state = State(
+ weight_dtype=self.__get_training_dtype(),
+ train_frames=self.args.train_resolution[0],
+ train_height=self.args.train_resolution[1],
+ train_width=self.args.train_resolution[2],
+ )
+
+ self.components: Components = self.load_components()
+ self.accelerator: Accelerator = None
+ self.dataset: Dataset = None
+ self.data_loader: DataLoader = None
+
+ self.optimizer = None
+ self.lr_scheduler = None
+
+ self._init_distributed()
+ self._init_logging()
+ self._init_directories()
+
+ self.state.using_deepspeed = self.accelerator.state.deepspeed_plugin is not None
+
+ def _init_distributed(self):
+ logging_dir = Path(self.args.output_dir, "logs")
+ project_config = ProjectConfiguration(project_dir=self.args.output_dir, logging_dir=logging_dir)
+ ddp_kwargs = DistributedDataParallelKwargs(find_unused_parameters=False)
+ init_process_group_kwargs = InitProcessGroupKwargs(
+ backend="nccl", timeout=timedelta(seconds=self.args.nccl_timeout)
+ )
+ mixed_precision = "no" if torch.backends.mps.is_available() else self.args.mixed_precision
+ report_to = None if self.args.report_to.lower() == "none" else self.args.report_to
+
+ accelerator = Accelerator(
+ project_config=project_config,
+ gradient_accumulation_steps=self.args.gradient_accumulation_steps,
+ mixed_precision=mixed_precision,
+ log_with=report_to,
+ kwargs_handlers=[ddp_kwargs, init_process_group_kwargs],
+ )
+
+ # Disable AMP for MPS.
+ if torch.backends.mps.is_available():
+ accelerator.native_amp = False
+
+ self.accelerator = accelerator
+
+ if self.args.seed is not None:
+ set_seed(self.args.seed)
+
+ def _init_logging(self) -> None:
+ logging.basicConfig(
+ format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
+ datefmt="%m/%d/%Y %H:%M:%S",
+ level=LOG_LEVEL,
+ )
+ if self.accelerator.is_local_main_process:
+ transformers.utils.logging.set_verbosity_warning()
+ diffusers.utils.logging.set_verbosity_info()
+ else:
+ transformers.utils.logging.set_verbosity_error()
+ diffusers.utils.logging.set_verbosity_error()
+
+ logger.info("Initialized Trainer")
+ logger.info(f"Accelerator state: \n{self.accelerator.state}", main_process_only=False)
+
+ def _init_directories(self) -> None:
+ if self.accelerator.is_main_process:
+ self.args.output_dir = Path(self.args.output_dir)
+ self.args.output_dir.mkdir(parents=True, exist_ok=True)
+
+ def check_setting(self) -> None:
+ # Check for unload_list
+ if self.UNLOAD_LIST is None:
+ logger.warning(
+ "\033[91mNo unload_list specified for this Trainer. All components will be loaded to GPU during training.\033[0m"
+ )
+ else:
+ for name in self.UNLOAD_LIST:
+ if name not in self.components.model_fields:
+ raise ValueError(f"Invalid component name in unload_list: {name}")
+
+ def prepare_models(self) -> None:
+ logger.info("Initializing models")
+
+ if self.components.vae is not None:
+ if self.args.enable_slicing:
+ self.components.vae.enable_slicing()
+ if self.args.enable_tiling:
+ self.components.vae.enable_tiling()
+
+ self.state.transformer_config = self.components.transformer.config
+
+ def prepare_dataset(self) -> None:
+ logger.info("Initializing dataset and dataloader")
+
+ if self.args.model_type == "i2v":
+ self.dataset = I2VDatasetWithResize(
+ **(self.args.model_dump()),
+ device=self.accelerator.device,
+ max_num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ trainer=self,
+ )
+ elif self.args.model_type == "t2v":
+ self.dataset = T2VDatasetWithResize(
+ **(self.args.model_dump()),
+ device=self.accelerator.device,
+ max_num_frames=self.state.train_frames,
+ height=self.state.train_height,
+ width=self.state.train_width,
+ trainer=self,
+ )
+ else:
+ raise ValueError(f"Invalid model type: {self.args.model_type}")
+
+ # Prepare VAE and text encoder for encoding
+ self.components.vae.requires_grad_(False)
+ self.components.text_encoder.requires_grad_(False)
+ self.components.vae = self.components.vae.to(self.accelerator.device, dtype=self.state.weight_dtype)
+ self.components.text_encoder = self.components.text_encoder.to(
+ self.accelerator.device, dtype=self.state.weight_dtype
+ )
+
+ # Precompute latent for video and prompt embedding
+ logger.info("Precomputing latent for video and prompt embedding ...")
+ tmp_data_loader = torch.utils.data.DataLoader(
+ self.dataset,
+ collate_fn=self.collate_fn,
+ batch_size=1,
+ num_workers=0,
+ pin_memory=self.args.pin_memory,
+ )
+ tmp_data_loader = self.accelerator.prepare_data_loader(tmp_data_loader)
+ for _ in tmp_data_loader:
+ ...
+ self.accelerator.wait_for_everyone()
+ logger.info("Precomputing latent for video and prompt embedding ... Done")
+
+ if self.args.use_precompute_video_latents:
+ unload_model(self.components.vae)
+ unload_model(self.components.text_encoder)
+ else:
+ unload_model(self.components.text_encoder)
+ free_memory()
+
+ self.data_loader = torch.utils.data.DataLoader(
+ self.dataset,
+ collate_fn=self.collate_fn,
+ batch_size=self.args.batch_size,
+ num_workers=self.args.num_workers,
+ pin_memory=self.args.pin_memory,
+ shuffle=True,
+ )
+
+ def prepare_trainable_parameters(self):
+ logger.info("Initializing trainable parameters")
+
+ # For mixed precision training we cast all non-trainable weights to half-precision
+ # as these weights are only used for inference, keeping weights in full precision is not required.
+ weight_dtype = self.state.weight_dtype
+
+ if torch.backends.mps.is_available() and weight_dtype == torch.bfloat16:
+ # due to pytorch#99272, MPS does not yet support bfloat16.
+ raise ValueError(
+ "Mixed precision training with bfloat16 is not supported on MPS. Please use fp16 (recommended) or fp32 instead."
+ )
+
+ # For LoRA, we freeze all the parameters
+ # For SFT, we train all the parameters in transformer model
+ for attr_name, component in vars(self.components).items():
+ if hasattr(component, "requires_grad_"):
+ if self.args.training_type == "sft" and attr_name == "transformer":
+ component.requires_grad_(True)
+ else:
+ component.requires_grad_(False)
+
+ if self.args.training_type == "lora":
+ transformer_lora_config = LoraConfig(
+ r=self.args.rank,
+ lora_alpha=self.args.lora_alpha,
+ init_lora_weights=True,
+ target_modules=self.args.target_modules,
+ )
+ self.components.transformer.add_adapter(transformer_lora_config)
+ self._prepare_saving_loading_hooks(transformer_lora_config)
+
+ # Load components needed for training to GPU (except transformer), and cast them to the specified data type
+ ignore_list = ["transformer"] + self.UNLOAD_LIST
+ self._move_components_to_device(dtype=weight_dtype, ignore_list=ignore_list)
+
+ if self.args.gradient_checkpointing:
+ self.components.transformer.enable_gradient_checkpointing()
+
+ def prepare_optimizer(self) -> None:
+ logger.info("Initializing optimizer and lr scheduler")
+
+ # Make sure the trainable params are in float32
+ cast_training_params([self.components.transformer], dtype=torch.float32)
+
+ # For LoRA, we only want to train the LoRA weights
+ # For SFT, we want to train all the parameters
+ trainable_parameters = list(filter(lambda p: p.requires_grad, self.components.transformer.parameters()))
+ transformer_parameters_with_lr = {
+ "params": trainable_parameters,
+ "lr": self.args.learning_rate,
+ }
+ params_to_optimize = [transformer_parameters_with_lr]
+ self.state.num_trainable_parameters = sum(p.numel() for p in trainable_parameters)
+
+ use_deepspeed_opt = (
+ self.accelerator.state.deepspeed_plugin is not None
+ and "optimizer" in self.accelerator.state.deepspeed_plugin.deepspeed_config
+ )
+ optimizer = get_optimizer(
+ params_to_optimize=params_to_optimize,
+ optimizer_name=self.args.optimizer,
+ learning_rate=self.args.learning_rate,
+ beta1=self.args.beta1,
+ beta2=self.args.beta2,
+ beta3=self.args.beta3,
+ epsilon=self.args.epsilon,
+ weight_decay=self.args.weight_decay,
+ use_deepspeed=use_deepspeed_opt,
+ )
+
+ num_update_steps_per_epoch = math.ceil(len(self.data_loader) / self.args.gradient_accumulation_steps)
+ if self.args.train_steps is None:
+ self.args.train_steps = self.args.train_epochs * num_update_steps_per_epoch
+ self.state.overwrote_max_train_steps = True
+
+ use_deepspeed_lr_scheduler = (
+ self.accelerator.state.deepspeed_plugin is not None
+ and "scheduler" in self.accelerator.state.deepspeed_plugin.deepspeed_config
+ )
+ total_training_steps = self.args.train_steps * self.accelerator.num_processes
+ num_warmup_steps = self.args.lr_warmup_steps * self.accelerator.num_processes
+
+ if use_deepspeed_lr_scheduler:
+ from accelerate.utils import DummyScheduler
+
+ lr_scheduler = DummyScheduler(
+ name=self.args.lr_scheduler,
+ optimizer=optimizer,
+ total_num_steps=total_training_steps,
+ num_warmup_steps=num_warmup_steps,
+ )
+ else:
+ lr_scheduler = get_scheduler(
+ name=self.args.lr_scheduler,
+ optimizer=optimizer,
+ num_warmup_steps=num_warmup_steps,
+ num_training_steps=total_training_steps,
+ num_cycles=self.args.lr_num_cycles,
+ power=self.args.lr_power,
+ )
+
+ self.optimizer = optimizer
+ self.lr_scheduler = lr_scheduler
+
+ def prepare_for_training(self) -> None:
+ self.components.transformer, self.optimizer, self.data_loader, self.lr_scheduler = self.accelerator.prepare(
+ self.components.transformer, self.optimizer, self.data_loader, self.lr_scheduler
+ )
+
+ # We need to recalculate our total training steps as the size of the training dataloader may have changed.
+ num_update_steps_per_epoch = math.ceil(len(self.data_loader) / self.args.gradient_accumulation_steps)
+ if self.state.overwrote_max_train_steps:
+ self.args.train_steps = self.args.train_epochs * num_update_steps_per_epoch
+ # Afterwards we recalculate our number of training epochs
+ self.args.train_epochs = math.ceil(self.args.train_steps / num_update_steps_per_epoch)
+ self.state.num_update_steps_per_epoch = num_update_steps_per_epoch
+
+ def prepare_for_validation(self):
+ validation_prompts = load_prompts(self.args.validation_dir / self.args.validation_prompts)
+
+ if self.args.validation_images is not None:
+ validation_images = load_images(self.args.validation_dir / self.args.validation_images)
+ else:
+ validation_images = [None] * len(validation_prompts)
+
+ if self.args.validation_videos is not None:
+ validation_videos = load_videos(self.args.validation_dir / self.args.validation_videos)
+ else:
+ validation_videos = [None] * len(validation_prompts)
+
+ self.state.validation_prompts = validation_prompts
+ self.state.validation_images = validation_images
+ self.state.validation_videos = validation_videos
+
+ def prepare_trackers(self) -> None:
+ logger.info("Initializing trackers")
+
+ tracker_name = self.args.tracker_name or "finetrainers-experiment"
+ # self.accelerator.init_trackers(tracker_name, config=self.args.model_dump())
+ self.accelerator.init_trackers(tracker_name, init_kwargs={"wandb":{"name": self.args.sub_tracker_name}})
+
+ def train(self) -> None:
+ logger.info("Starting training")
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory before training start: {json.dumps(memory_statistics, indent=4)}")
+
+ self.state.total_batch_size_count = (
+ self.args.batch_size * self.accelerator.num_processes * self.args.gradient_accumulation_steps
+ )
+ info = {
+ "trainable parameters": self.state.num_trainable_parameters,
+ "total samples": len(self.dataset),
+ "train epochs": self.args.train_epochs,
+ "train steps": self.args.train_steps,
+ "batches per device": self.args.batch_size,
+ "total batches observed per epoch": len(self.data_loader),
+ "train batch size total count": self.state.total_batch_size_count,
+ "gradient accumulation steps": self.args.gradient_accumulation_steps,
+ }
+ logger.info(f"Training configuration: {json.dumps(info, indent=4)}")
+
+ global_step = 0
+ first_epoch = 0
+ initial_global_step = 0
+
+ # Potentially load in the weights and states from a previous save
+ (
+ resume_from_checkpoint_path,
+ initial_global_step,
+ global_step,
+ first_epoch,
+ ) = get_latest_ckpt_path_to_resume_from(
+ resume_from_checkpoint=self.args.resume_from_checkpoint,
+ num_update_steps_per_epoch=self.state.num_update_steps_per_epoch,
+ )
+ if resume_from_checkpoint_path is not None:
+ self.accelerator.load_state(resume_from_checkpoint_path)
+
+ progress_bar = tqdm(
+ range(0, self.args.train_steps),
+ initial=initial_global_step,
+ desc="Training steps",
+ disable=not self.accelerator.is_local_main_process,
+ )
+
+ accelerator = self.accelerator
+ generator = torch.Generator(device=accelerator.device)
+ if self.args.seed is not None:
+ generator = generator.manual_seed(self.args.seed)
+ self.state.generator = generator
+
+ free_memory()
+ for epoch in range(first_epoch, self.args.train_epochs):
+ logger.debug(f"Starting epoch ({epoch + 1}/{self.args.train_epochs})")
+
+ self.components.transformer.train()
+ models_to_accumulate = [self.components.transformer]
+
+ for step, batch in enumerate(self.data_loader):
+ logger.debug(f"Starting step {step + 1}")
+ logs = {}
+
+ with accelerator.accumulate(models_to_accumulate):
+ # These weighting schemes use a uniform timestep sampling and instead post-weight the loss
+ loss = self.compute_loss(batch)
+ accelerator.backward(loss)
+
+ if accelerator.sync_gradients:
+ if accelerator.distributed_type == DistributedType.DEEPSPEED:
+ grad_norm = self.components.transformer.get_global_grad_norm()
+ # In some cases the grad norm may not return a float
+ if torch.is_tensor(grad_norm):
+ grad_norm = grad_norm.item()
+ else:
+ grad_norm = accelerator.clip_grad_norm_(
+ self.components.transformer.parameters(), self.args.max_grad_norm
+ )
+ if torch.is_tensor(grad_norm):
+ grad_norm = grad_norm.item()
+
+ logs["grad_norm"] = grad_norm
+
+ self.optimizer.step()
+ self.lr_scheduler.step()
+ self.optimizer.zero_grad()
+
+ # Checks if the accelerator has performed an optimization step behind the scenes
+ if accelerator.sync_gradients:
+ progress_bar.update(1)
+ global_step += 1
+ self._maybe_save_checkpoint(global_step)
+
+ logs["loss"] = loss.detach().item()
+ logs["lr"] = self.lr_scheduler.get_last_lr()[0]
+ progress_bar.set_postfix(logs)
+
+ # Maybe run validation
+ should_run_validation = self.args.do_validation and global_step % self.args.validation_steps == 0
+ if should_run_validation:
+ del loss
+ free_memory()
+ self.validate(global_step)
+
+ accelerator.log(logs, step=global_step)
+
+ if global_step >= self.args.train_steps:
+ break
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after epoch {epoch + 1}: {json.dumps(memory_statistics, indent=4)}")
+
+ accelerator.wait_for_everyone()
+ self._maybe_save_checkpoint(global_step, must_save=True)
+ if self.args.do_validation:
+ free_memory()
+ self.validate(global_step)
+
+ del self.components
+ free_memory()
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after training end: {json.dumps(memory_statistics, indent=4)}")
+
+ accelerator.end_training()
+
+ def validate(self, step: int) -> None:
+ logger.info("Starting validation")
+
+ accelerator = self.accelerator
+ num_validation_samples = len(self.state.validation_prompts)
+
+ if num_validation_samples == 0:
+ logger.warning("No validation samples found. Skipping validation.")
+ return
+
+ self.components.transformer.eval()
+ torch.set_grad_enabled(False)
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory before validation start: {json.dumps(memory_statistics, indent=4)}")
+
+ ##### Initialize pipeline #####
+ pipe = self.initialize_pipeline()
+
+ if self.state.using_deepspeed:
+ # Can't using model_cpu_offload in deepspeed,
+ # so we need to move all components in pipe to device
+ # pipe.to(self.accelerator.device, dtype=self.state.weight_dtype)
+ self._move_components_to_device(dtype=self.state.weight_dtype, ignore_list=["transformer"])
+ else:
+ # if not using deepspeed, use model_cpu_offload to further reduce memory usage
+ # Or use pipe.enable_sequential_cpu_offload() to further reduce memory usage
+ pipe.enable_model_cpu_offload(device=self.accelerator.device)
+
+ # Convert all model weights to training dtype
+ # Note, this will change LoRA weights in self.components.transformer to training dtype, rather than keep them in fp32
+ pipe = pipe.to(dtype=self.state.weight_dtype)
+
+ #################################
+
+ all_processes_artifacts = []
+ for i in range(num_validation_samples):
+ if self.state.using_deepspeed and self.accelerator.deepspeed_plugin.zero_stage != 3:
+ # Skip current validation on all processes but one
+ if i % accelerator.num_processes != accelerator.process_index:
+ continue
+
+ prompt = self.state.validation_prompts[i]
+ image = self.state.validation_images[i]
+ video = self.state.validation_videos[i]
+
+ if image is not None:
+ image = preprocess_image_with_resize(image, self.state.train_height, self.state.train_width)
+ # Convert image tensor (C, H, W) to PIL images
+ image = image.to(torch.uint8)
+ image = image.permute(1, 2, 0).cpu().numpy()
+ image = Image.fromarray(image)
+
+ if video is not None:
+ video = preprocess_video_with_resize(
+ video, self.state.train_frames, self.state.train_height, self.state.train_width
+ )
+ # Convert video tensor (F, C, H, W) to list of PIL images
+ video = video.round().clamp(0, 255).to(torch.uint8)
+ video = [Image.fromarray(frame.permute(1, 2, 0).cpu().numpy()) for frame in video]
+
+ logger.debug(
+ f"Validating sample {i + 1}/{num_validation_samples} on process {accelerator.process_index}. Prompt: {prompt}",
+ main_process_only=False,
+ )
+ validation_artifacts = self.validation_step({"prompt": prompt, "image": image, "video": video}, pipe)
+
+ if (
+ self.state.using_deepspeed
+ and self.accelerator.deepspeed_plugin.zero_stage == 3
+ and not accelerator.is_main_process
+ ):
+ continue
+
+ prompt_filename = string_to_filename(prompt)[:25]
+ # Calculate hash of reversed prompt as a unique identifier
+ reversed_prompt = prompt[::-1]
+ hash_suffix = hashlib.md5(reversed_prompt.encode()).hexdigest()[:5]
+
+ artifacts = {
+ "image": {"type": "image", "value": image},
+ "video": {"type": "video", "value": video},
+ }
+ for i, (artifact_type, artifact_value) in enumerate(validation_artifacts):
+ artifacts.update({f"artifact_{i}": {"type": artifact_type, "value": artifact_value}})
+ logger.debug(
+ f"Validation artifacts on process {accelerator.process_index}: {list(artifacts.keys())}",
+ main_process_only=False,
+ )
+
+ for key, value in list(artifacts.items()):
+ artifact_type = value["type"]
+ artifact_value = value["value"]
+ if artifact_type not in ["image", "video"] or artifact_value is None:
+ continue
+
+ extension = "png" if artifact_type == "image" else "mp4"
+ filename = f"validation-{step}-{accelerator.process_index}-{prompt_filename}-{hash_suffix}.{extension}"
+ validation_path = self.args.output_dir / "validation_res"
+ validation_path.mkdir(parents=True, exist_ok=True)
+ filename = str(validation_path / filename)
+
+ if artifact_type == "image":
+ logger.debug(f"Saving image to {filename}")
+ artifact_value.save(filename)
+ artifact_value = wandb.Image(filename)
+ elif artifact_type == "video":
+ logger.debug(f"Saving video to {filename}")
+ export_to_video(artifact_value, filename, fps=self.args.gen_fps)
+ artifact_value = wandb.Video(filename, caption=prompt)
+
+ all_processes_artifacts.append(artifact_value)
+
+ all_artifacts = gather_object(all_processes_artifacts)
+
+ if accelerator.is_main_process:
+ tracker_key = "validation"
+ for tracker in accelerator.trackers:
+ if tracker.name == "wandb":
+ image_artifacts = [artifact for artifact in all_artifacts if isinstance(artifact, wandb.Image)]
+ video_artifacts = [artifact for artifact in all_artifacts if isinstance(artifact, wandb.Video)]
+ tracker.log(
+ {
+ tracker_key: {"images": image_artifacts, "videos": video_artifacts},
+ },
+ step=step,
+ )
+
+ ########## Clean up ##########
+ if self.state.using_deepspeed:
+ del pipe
+ # Unload models except those needed for training
+ self._move_components_to_cpu(unload_list=self.UNLOAD_LIST)
+ else:
+ pipe.remove_all_hooks()
+ del pipe
+ # Load models except those not needed for training
+ self._move_components_to_device(dtype=self.state.weight_dtype, ignore_list=self.UNLOAD_LIST)
+ self.components.transformer.to(self.accelerator.device, dtype=self.state.weight_dtype)
+
+ # Change trainable weights back to fp32 to keep with dtype after prepare the model
+ cast_training_params([self.components.transformer], dtype=torch.float32)
+
+ free_memory()
+ accelerator.wait_for_everyone()
+ ################################
+
+ memory_statistics = get_memory_statistics()
+ logger.info(f"Memory after validation end: {json.dumps(memory_statistics, indent=4)}")
+ torch.cuda.reset_peak_memory_stats(accelerator.device)
+
+ torch.set_grad_enabled(True)
+ self.components.transformer.train()
+
+ def fit(self):
+ self.check_setting()
+ self.prepare_models()
+ self.prepare_dataset()
+ self.prepare_trainable_parameters()
+ self.prepare_optimizer()
+ self.prepare_for_training()
+ if self.args.do_validation:
+ self.prepare_for_validation()
+ self.prepare_trackers()
+ self.train()
+
+ def collate_fn(self, examples: List[Dict[str, Any]]):
+ raise NotImplementedError
+
+ def load_components(self) -> Components:
+ raise NotImplementedError
+
+ def initialize_pipeline(self) -> DiffusionPipeline:
+ raise NotImplementedError
+
+ def encode_video(self, video: torch.Tensor) -> torch.Tensor:
+ # shape of input video: [B, C, F, H, W], where B = 1
+ # shape of output video: [B, C', F', H', W'], where B = 1
+ raise NotImplementedError
+
+ def encode_text(self, text: str) -> torch.Tensor:
+ # shape of output text: [batch size, sequence length, embedding dimension]
+ raise NotImplementedError
+
+ def compute_loss(self, batch) -> torch.Tensor:
+ raise NotImplementedError
+
+ def validation_step(self) -> List[Tuple[str, Image.Image | List[Image.Image]]]:
+ raise NotImplementedError
+
+ def __get_training_dtype(self) -> torch.dtype:
+ if self.args.mixed_precision == "no":
+ return _DTYPE_MAP["fp32"]
+ elif self.args.mixed_precision == "fp16":
+ return _DTYPE_MAP["fp16"]
+ elif self.args.mixed_precision == "bf16":
+ return _DTYPE_MAP["bf16"]
+ else:
+ raise ValueError(f"Invalid mixed precision: {self.args.mixed_precision}")
+
+ def _move_components_to_device(self, dtype, ignore_list: List[str] = []):
+ ignore_list = set(ignore_list)
+ components = self.components.model_dump()
+ for name, component in components.items():
+ if not isinstance(component, type) and hasattr(component, "to"):
+ if name not in ignore_list:
+ setattr(self.components, name, component.to(self.accelerator.device, dtype=dtype))
+
+ def _move_components_to_cpu(self, unload_list: List[str] = []):
+ unload_list = set(unload_list)
+ components = self.components.model_dump()
+ for name, component in components.items():
+ if not isinstance(component, type) and hasattr(component, "to"):
+ if name in unload_list:
+ setattr(self.components, name, component.to("cpu"))
+
+ def _prepare_saving_loading_hooks(self, transformer_lora_config):
+ # create custom saving & loading hooks so that `accelerator.save_state(...)` serializes in a nice format
+ def save_model_hook(models, weights, output_dir):
+ if self.accelerator.is_main_process:
+ transformer_lora_layers_to_save = None
+
+ for model in models:
+ if isinstance(
+ unwrap_model(self.accelerator, model),
+ type(unwrap_model(self.accelerator, self.components.transformer)),
+ ):
+ model = unwrap_model(self.accelerator, model)
+ transformer_lora_layers_to_save = get_peft_model_state_dict(model)
+ else:
+ raise ValueError(f"Unexpected save model: {model.__class__}")
+
+ # make sure to pop weight so that corresponding model is not saved again
+ if weights:
+ weights.pop()
+
+ self.components.pipeline_cls.save_lora_weights(
+ output_dir,
+ transformer_lora_layers=transformer_lora_layers_to_save,
+ )
+
+ def load_model_hook(models, input_dir):
+ if not self.accelerator.distributed_type == DistributedType.DEEPSPEED:
+ while len(models) > 0:
+ model = models.pop()
+ if isinstance(
+ unwrap_model(self.accelerator, model),
+ type(unwrap_model(self.accelerator, self.components.transformer)),
+ ):
+ transformer_ = unwrap_model(self.accelerator, model)
+ else:
+ raise ValueError(f"Unexpected save model: {unwrap_model(self.accelerator, model).__class__}")
+ else:
+ transformer_ = unwrap_model(self.accelerator, self.components.transformer).__class__.from_pretrained(
+ self.args.model_path, subfolder="transformer"
+ )
+ transformer_.add_adapter(transformer_lora_config)
+
+ lora_state_dict = self.components.pipeline_cls.lora_state_dict(input_dir)
+ transformer_state_dict = {
+ f'{k.replace("transformer.", "")}': v
+ for k, v in lora_state_dict.items()
+ if k.startswith("transformer.")
+ }
+ incompatible_keys = set_peft_model_state_dict(transformer_, transformer_state_dict, adapter_name="default")
+ if incompatible_keys is not None:
+ # check only for unexpected keys
+ unexpected_keys = getattr(incompatible_keys, "unexpected_keys", None)
+ if unexpected_keys:
+ logger.warning(
+ f"Loading adapter weights from state_dict led to unexpected keys not found in the model: "
+ f" {unexpected_keys}. "
+ )
+
+ self.accelerator.register_save_state_pre_hook(save_model_hook)
+ self.accelerator.register_load_state_pre_hook(load_model_hook)
+
+ def _maybe_save_checkpoint(self, global_step: int, must_save: bool = False):
+ if self.accelerator.distributed_type == DistributedType.DEEPSPEED or self.accelerator.is_main_process:
+ if must_save or global_step % self.args.checkpointing_steps == 0:
+ # for training
+ save_path = get_intermediate_ckpt_path(
+ checkpointing_limit=self.args.checkpointing_limit,
+ step=global_step,
+ output_dir=self.args.output_dir,
+ )
+ try:
+ self.accelerator.save_state(save_path, safe_serialization=True)
+ except:
+ print('fail to save checkpoints to', save_path)
diff --git a/finetune/utils/__init__.py b/finetune/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f30b0b604edfa394ac39d80789fe6b2754725199
--- /dev/null
+++ b/finetune/utils/__init__.py
@@ -0,0 +1,6 @@
+from .checkpointing import *
+from .file_utils import *
+from .memory_utils import *
+from .optimizer_utils import *
+from .torch_utils import *
+from .camera_utils import *
\ No newline at end of file
diff --git a/finetune/utils/camera_utils.py b/finetune/utils/camera_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..33c0a09e5991e47cd2439c1331abace4e369f28d
--- /dev/null
+++ b/finetune/utils/camera_utils.py
@@ -0,0 +1,111 @@
+import torch
+from einops import rearrange, repeat
+from packaging import version as pver
+from torch import Tensor
+
+
+@torch.no_grad()
+@torch.autocast(device_type="cuda", enabled=False)
+def ray_condition(K, c2w, H, W, device, flip_flag=None):
+ # c2w: B, V, 4, 4
+ # K: B, V, 3, 3
+
+ def custom_meshgrid(*args):
+ # ref: https://pytorch.org/docs/stable/generated/torch.meshgrid.html?highlight=meshgrid#torch.meshgrid
+ if pver.parse(torch.__version__) < pver.parse('1.10'):
+ return torch.meshgrid(*args)
+ else:
+ return torch.meshgrid(*args, indexing='ij')
+
+ B, V = K.shape[:2]
+
+ j, i = custom_meshgrid(
+ torch.linspace(0, H - 1, H, device=device, dtype=c2w.dtype),
+ torch.linspace(0, W - 1, W, device=device, dtype=c2w.dtype),
+ )
+ i = i.reshape([1, 1, H * W]).expand([B, V, H * W]) + 0.5 # [B, V, HxW]
+ j = j.reshape([1, 1, H * W]).expand([B, V, H * W]) + 0.5 # [B, V, HxW]
+
+ n_flip = torch.sum(flip_flag).item() if flip_flag is not None else 0
+ if n_flip > 0:
+ j_flip, i_flip = custom_meshgrid(
+ torch.linspace(0, H - 1, H, device=device, dtype=c2w.dtype),
+ torch.linspace(W - 1, 0, W, device=device, dtype=c2w.dtype)
+ )
+ i_flip = i_flip.reshape([1, 1, H * W]).expand(B, 1, H * W) + 0.5
+ j_flip = j_flip.reshape([1, 1, H * W]).expand(B, 1, H * W) + 0.5
+ i[:, flip_flag, ...] = i_flip
+ j[:, flip_flag, ...] = j_flip
+
+ fx = K[..., 0, 0].unsqueeze(-1)
+ fy = K[..., 1, 1].unsqueeze(-1)
+ cx = K[..., 0, 2].unsqueeze(-1)
+ cy = K[..., 1, 2].unsqueeze(-1)
+
+ zs = torch.ones_like(i) # [B, V, HxW]
+ xs = (i - cx) / fx * zs
+ ys = (j - cy) / fy * zs
+ zs = zs.expand_as(ys)
+
+ directions = torch.stack((xs, ys, zs), dim=-1) # B, V, HW, 3
+ directions = directions / directions.norm(dim=-1, keepdim=True) # B, V, HW, 3
+
+ rays_d = directions @ c2w[..., :3, :3].transpose(-1, -2) # B, V, HW, 3
+ rays_o = c2w[..., :3, 3] # B, V, 3
+ rays_o = rays_o[:, :, None].expand_as(rays_d) # B, V, HW, 3
+ # c2w @ dirctions
+ rays_dxo = torch.cross(rays_o, rays_d, dim=-1) # B, V, HW, 3
+ plucker = torch.cat([rays_dxo, rays_d], dim=-1)
+ plucker = plucker.reshape(B, c2w.shape[1], H, W, 6) # B, V, H, W, 6
+ # plucker = plucker.permute(0, 1, 4, 2, 3)
+ plucker = rearrange(plucker, "b f h w c -> b c f h w") # [B, 6, F, H, W]
+ return plucker
+
+
+@torch.no_grad()
+@torch.autocast(device_type="cuda", enabled=False)
+def get_relative_pose(RT_4x4: Tensor, cond_frame_index: Tensor, mode='left'):
+ '''
+ :param
+ RT: (B,F,4,4)
+ cond_frame_index: (B,)
+ :return:
+ relative_RT_4x4: (B,F,4,4)
+ '''
+ b, t, _, _ = RT_4x4.shape # b,t,4,4
+ first_frame_RT = RT_4x4[torch.arange(b, device=RT_4x4.device), cond_frame_index, ...].unsqueeze(1) # (B, 1, 4, 4)
+
+ if mode == 'left':
+ relative_RT_4x4 = first_frame_RT.inverse() @ RT_4x4
+ elif mode == 'right':
+ relative_RT_4x4 = RT_4x4 @ first_frame_RT.inverse()
+
+ return relative_RT_4x4
+
+
+@torch.no_grad()
+@torch.autocast(device_type="cuda", enabled=False)
+def get_camera_condition(H, W, camera_intrinsics, camera_extrinsics, mode, cond_frame_index=0, align_factor=1.0):
+ '''
+ :param camera_intrinsics: (B, F, 3, 3)
+ :param camera_extrinsics: (B, F, 4, 4)
+ :param cond_frame_index: (B,)
+ :param trace_scale_factor: (B,)
+ :return: plucker_embedding: (B, 6, F, H, W)
+ '''
+ B, F = camera_extrinsics.shape[:2]
+ camera_intrinsics_3x3 = camera_intrinsics.float() # B, F, 3, 3
+ if mode == "c2w":
+ c2w_RT_4x4 = camera_extrinsics.float() # B, F, 4, 4
+ elif mode =="w2c":
+ c2w_RT_4x4 = camera_extrinsics.float().inverse() # B, F, 4, 4
+ else:
+ raise ValueError(f"Unknown mode {mode}")
+ B, F, device = c2w_RT_4x4.shape[0], c2w_RT_4x4.shape[1], c2w_RT_4x4.device
+
+ relative_c2w_RT_4x4 = get_relative_pose(c2w_RT_4x4, cond_frame_index, mode='left') # B,F,4,4
+ relative_c2w_RT_4x4[:, :, :3, 3] = relative_c2w_RT_4x4[:, :, :3, 3] * align_factor
+
+ plucker_embedding = ray_condition(camera_intrinsics_3x3, relative_c2w_RT_4x4, H, W, device, flip_flag=None) # B, 6, F, H, W
+
+ return plucker_embedding, relative_c2w_RT_4x4 # B 6 F H W
diff --git a/finetune/utils/checkpointing.py b/finetune/utils/checkpointing.py
new file mode 100644
index 0000000000000000000000000000000000000000..f0a732a8afd3bf9de98ea9a1e3db19294c2bb2fb
--- /dev/null
+++ b/finetune/utils/checkpointing.py
@@ -0,0 +1,55 @@
+import os
+from pathlib import Path
+from typing import Tuple
+
+from accelerate.logging import get_logger
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+from finetune.utils.file_utils import delete_files, find_files
+
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+def get_latest_ckpt_path_to_resume_from(
+ resume_from_checkpoint: str | None, num_update_steps_per_epoch: int
+) -> Tuple[str | None, int, int, int]:
+ if resume_from_checkpoint is None:
+ initial_global_step = 0
+ global_step = 0
+ first_epoch = 0
+ resume_from_checkpoint_path = None
+ else:
+ resume_from_checkpoint_path = Path(resume_from_checkpoint)
+ if not resume_from_checkpoint_path.exists():
+ logger.info(f"Checkpoint '{resume_from_checkpoint}' does not exist. Starting a new training run.")
+ initial_global_step = 0
+ global_step = 0
+ first_epoch = 0
+ resume_from_checkpoint_path = None
+ else:
+ logger.info(f"Resuming from checkpoint {resume_from_checkpoint}")
+ global_step = int(resume_from_checkpoint_path.name.split("-")[1])
+
+ initial_global_step = global_step
+ first_epoch = global_step // num_update_steps_per_epoch
+
+ return resume_from_checkpoint_path, initial_global_step, global_step, first_epoch
+
+
+def get_intermediate_ckpt_path(checkpointing_limit: int, step: int, output_dir: str) -> str:
+ # before saving state, check if this save would set us over the `checkpointing_limit`
+ if checkpointing_limit is not None:
+ checkpoints = find_files(output_dir, prefix="checkpoint")
+
+ # before we save the new checkpoint, we need to have at_most `checkpoints_total_limit - 1` checkpoints
+ if len(checkpoints) >= checkpointing_limit:
+ num_to_remove = len(checkpoints) - checkpointing_limit + 1
+ checkpoints_to_remove = checkpoints[0:num_to_remove]
+ delete_files(checkpoints_to_remove)
+
+ logger.info(f"Checkpointing at step {step}")
+ save_path = os.path.join(output_dir, f"checkpoint-{step}")
+ logger.info(f"Saving state to {save_path}")
+ return save_path
diff --git a/finetune/utils/file_utils.py b/finetune/utils/file_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..38b11051e127e94357f068166b76542819d030fa
--- /dev/null
+++ b/finetune/utils/file_utils.py
@@ -0,0 +1,48 @@
+import logging
+import os
+import shutil
+from pathlib import Path
+from typing import Any, Dict, List, Union
+
+from accelerate.logging import get_logger
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+def find_files(dir: Union[str, Path], prefix: str = "checkpoint") -> List[str]:
+ if not isinstance(dir, Path):
+ dir = Path(dir)
+ if not dir.exists():
+ return []
+ checkpoints = os.listdir(dir.as_posix())
+ checkpoints = [c for c in checkpoints if c.startswith(prefix)]
+ checkpoints = sorted(checkpoints, key=lambda x: int(x.split("-")[1]))
+ checkpoints = [dir / c for c in checkpoints]
+ return checkpoints
+
+
+def delete_files(dirs: Union[str, List[str], Path, List[Path]]) -> None:
+ if not isinstance(dirs, list):
+ dirs = [dirs]
+ dirs = [Path(d) if isinstance(d, str) else d for d in dirs]
+ logger.info(f"Deleting files: {dirs}")
+ for dir in dirs:
+ if not dir.exists():
+ continue
+ shutil.rmtree(dir, ignore_errors=True)
+
+
+def string_to_filename(s: str) -> str:
+ return (
+ s.replace(" ", "-")
+ .replace("/", "-")
+ .replace(":", "-")
+ .replace(".", "-")
+ .replace(",", "-")
+ .replace(";", "-")
+ .replace("!", "-")
+ .replace("?", "-")
+ )
diff --git a/finetune/utils/memory_utils.py b/finetune/utils/memory_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c88d70c430b9a2b3b23ea42eef69c75ed17f233
--- /dev/null
+++ b/finetune/utils/memory_utils.py
@@ -0,0 +1,64 @@
+import gc
+from typing import Any, Dict, Union
+
+import torch
+from accelerate.logging import get_logger
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+def get_memory_statistics(precision: int = 3) -> Dict[str, Any]:
+ memory_allocated = None
+ memory_reserved = None
+ max_memory_allocated = None
+ max_memory_reserved = None
+
+ if torch.cuda.is_available():
+ device = torch.cuda.current_device()
+ memory_allocated = torch.cuda.memory_allocated(device)
+ memory_reserved = torch.cuda.memory_reserved(device)
+ max_memory_allocated = torch.cuda.max_memory_allocated(device)
+ max_memory_reserved = torch.cuda.max_memory_reserved(device)
+
+ elif torch.mps.is_available():
+ memory_allocated = torch.mps.current_allocated_memory()
+
+ else:
+ logger.warning("No CUDA, MPS, or ROCm device found. Memory statistics are not available.")
+
+ return {
+ "memory_allocated": round(bytes_to_gigabytes(memory_allocated), ndigits=precision),
+ "memory_reserved": round(bytes_to_gigabytes(memory_reserved), ndigits=precision),
+ "max_memory_allocated": round(bytes_to_gigabytes(max_memory_allocated), ndigits=precision),
+ "max_memory_reserved": round(bytes_to_gigabytes(max_memory_reserved), ndigits=precision),
+ }
+
+
+def bytes_to_gigabytes(x: int) -> float:
+ if x is not None:
+ return x / 1024**3
+
+
+def free_memory() -> None:
+ if torch.cuda.is_available():
+ gc.collect()
+ torch.cuda.empty_cache()
+ torch.cuda.ipc_collect()
+
+ # TODO(aryan): handle non-cuda devices
+
+
+def unload_model(model):
+ model.to("cpu")
+
+
+def make_contiguous(x: Union[torch.Tensor, Dict[str, torch.Tensor]]) -> Union[torch.Tensor, Dict[str, torch.Tensor]]:
+ if isinstance(x, torch.Tensor):
+ return x.contiguous()
+ elif isinstance(x, dict):
+ return {k: make_contiguous(v) for k, v in x.items()}
+ else:
+ return x
diff --git a/finetune/utils/optimizer_utils.py b/finetune/utils/optimizer_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..d24aa3f6443f3199d7f6f3b7b002266137673c8d
--- /dev/null
+++ b/finetune/utils/optimizer_utils.py
@@ -0,0 +1,180 @@
+import inspect
+
+import torch
+from accelerate.logging import get_logger
+
+from finetune.constants import LOG_LEVEL, LOG_NAME
+
+
+logger = get_logger(LOG_NAME, LOG_LEVEL)
+
+
+def get_optimizer(
+ params_to_optimize,
+ optimizer_name: str = "adam",
+ learning_rate: float = 1e-3,
+ beta1: float = 0.9,
+ beta2: float = 0.95,
+ beta3: float = 0.98,
+ epsilon: float = 1e-8,
+ weight_decay: float = 1e-4,
+ prodigy_decouple: bool = False,
+ prodigy_use_bias_correction: bool = False,
+ prodigy_safeguard_warmup: bool = False,
+ use_8bit: bool = False,
+ use_4bit: bool = False,
+ use_torchao: bool = False,
+ use_deepspeed: bool = False,
+ use_cpu_offload_optimizer: bool = False,
+ offload_gradients: bool = False,
+) -> torch.optim.Optimizer:
+ optimizer_name = optimizer_name.lower()
+
+ # Use DeepSpeed optimzer
+ if use_deepspeed:
+ from accelerate.utils import DummyOptim
+
+ return DummyOptim(
+ params_to_optimize,
+ lr=learning_rate,
+ betas=(beta1, beta2),
+ eps=epsilon,
+ weight_decay=weight_decay,
+ )
+
+ if use_8bit and use_4bit:
+ raise ValueError("Cannot set both `use_8bit` and `use_4bit` to True.")
+
+ if (use_torchao and (use_8bit or use_4bit)) or use_cpu_offload_optimizer:
+ try:
+ import torchao
+
+ torchao.__version__
+ except ImportError:
+ raise ImportError(
+ "To use optimizers from torchao, please install the torchao library: `USE_CPP=0 pip install torchao`."
+ )
+
+ if not use_torchao and use_4bit:
+ raise ValueError("4-bit Optimizers are only supported with torchao.")
+
+ # Optimizer creation
+ supported_optimizers = ["adam", "adamw", "prodigy", "came"]
+ if optimizer_name not in supported_optimizers:
+ logger.warning(
+ f"Unsupported choice of optimizer: {optimizer_name}. Supported optimizers include {supported_optimizers}. Defaulting to `AdamW`."
+ )
+ optimizer_name = "adamw"
+
+ if (use_8bit or use_4bit) and optimizer_name not in ["adam", "adamw"]:
+ raise ValueError("`use_8bit` and `use_4bit` can only be used with the Adam and AdamW optimizers.")
+
+ if use_8bit:
+ try:
+ import bitsandbytes as bnb
+ except ImportError:
+ raise ImportError(
+ "To use 8-bit Adam, please install the bitsandbytes library: `pip install bitsandbytes`."
+ )
+
+ if optimizer_name == "adamw":
+ if use_torchao:
+ from torchao.prototype.low_bit_optim import AdamW4bit, AdamW8bit
+
+ optimizer_class = AdamW8bit if use_8bit else AdamW4bit if use_4bit else torch.optim.AdamW
+ else:
+ optimizer_class = bnb.optim.AdamW8bit if use_8bit else torch.optim.AdamW
+
+ init_kwargs = {
+ "betas": (beta1, beta2),
+ "eps": epsilon,
+ "weight_decay": weight_decay,
+ }
+
+ elif optimizer_name == "adam":
+ if use_torchao:
+ from torchao.prototype.low_bit_optim import Adam4bit, Adam8bit
+
+ optimizer_class = Adam8bit if use_8bit else Adam4bit if use_4bit else torch.optim.Adam
+ else:
+ optimizer_class = bnb.optim.Adam8bit if use_8bit else torch.optim.Adam
+
+ init_kwargs = {
+ "betas": (beta1, beta2),
+ "eps": epsilon,
+ "weight_decay": weight_decay,
+ }
+
+ elif optimizer_name == "prodigy":
+ try:
+ import prodigyopt
+ except ImportError:
+ raise ImportError("To use Prodigy, please install the prodigyopt library: `pip install prodigyopt`")
+
+ optimizer_class = prodigyopt.Prodigy
+
+ if learning_rate <= 0.1:
+ logger.warning(
+ "Learning rate is too low. When using prodigy, it's generally better to set learning rate around 1.0"
+ )
+
+ init_kwargs = {
+ "lr": learning_rate,
+ "betas": (beta1, beta2),
+ "beta3": beta3,
+ "eps": epsilon,
+ "weight_decay": weight_decay,
+ "decouple": prodigy_decouple,
+ "use_bias_correction": prodigy_use_bias_correction,
+ "safeguard_warmup": prodigy_safeguard_warmup,
+ }
+
+ elif optimizer_name == "came":
+ try:
+ import came_pytorch
+ except ImportError:
+ raise ImportError("To use CAME, please install the came-pytorch library: `pip install came-pytorch`")
+
+ optimizer_class = came_pytorch.CAME
+
+ init_kwargs = {
+ "lr": learning_rate,
+ "eps": (1e-30, 1e-16),
+ "betas": (beta1, beta2, beta3),
+ "weight_decay": weight_decay,
+ }
+
+ if use_cpu_offload_optimizer:
+ from torchao.prototype.low_bit_optim import CPUOffloadOptimizer
+
+ if "fused" in inspect.signature(optimizer_class.__init__).parameters:
+ init_kwargs.update({"fused": True})
+
+ optimizer = CPUOffloadOptimizer(
+ params_to_optimize, optimizer_class=optimizer_class, offload_gradients=offload_gradients, **init_kwargs
+ )
+ else:
+ optimizer = optimizer_class(params_to_optimize, **init_kwargs)
+
+ return optimizer
+
+
+def gradient_norm(parameters):
+ norm = 0
+ for param in parameters:
+ if param.grad is None:
+ continue
+ local_norm = param.grad.detach().data.norm(2)
+ norm += local_norm.item() ** 2
+ norm = norm**0.5
+ return norm
+
+
+def max_gradient(parameters):
+ max_grad_value = float("-inf")
+ for param in parameters:
+ if param.grad is None:
+ continue
+ local_max_grad = param.grad.detach().data.abs().max()
+ max_grad_value = max(max_grad_value, local_max_grad.item())
+ return max_grad_value
diff --git a/finetune/utils/torch_utils.py b/finetune/utils/torch_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..867a8bf093fab3864fbbc3741056665a133b24ee
--- /dev/null
+++ b/finetune/utils/torch_utils.py
@@ -0,0 +1,52 @@
+from typing import Dict, List, Optional, Union
+
+import torch
+from accelerate import Accelerator
+from diffusers.utils.torch_utils import is_compiled_module
+
+
+def unwrap_model(accelerator: Accelerator, model):
+ model = accelerator.unwrap_model(model)
+ model = model._orig_mod if is_compiled_module(model) else model
+ return model
+
+
+def align_device_and_dtype(
+ x: Union[torch.Tensor, Dict[str, torch.Tensor]],
+ device: Optional[torch.device] = None,
+ dtype: Optional[torch.dtype] = None,
+):
+ if isinstance(x, torch.Tensor):
+ if device is not None:
+ x = x.to(device)
+ if dtype is not None:
+ x = x.to(dtype)
+ elif isinstance(x, dict):
+ if device is not None:
+ x = {k: align_device_and_dtype(v, device, dtype) for k, v in x.items()}
+ if dtype is not None:
+ x = {k: align_device_and_dtype(v, device, dtype) for k, v in x.items()}
+ return x
+
+
+def expand_tensor_to_dims(tensor, ndim):
+ while len(tensor.shape) < ndim:
+ tensor = tensor.unsqueeze(-1)
+ return tensor
+
+
+def cast_training_params(model: Union[torch.nn.Module, List[torch.nn.Module]], dtype=torch.float32):
+ """
+ Casts the training parameters of the model to the specified data type.
+
+ Args:
+ model: The PyTorch model whose parameters will be cast.
+ dtype: The data type to which the model parameters will be cast.
+ """
+ if not isinstance(model, list):
+ model = [model]
+ for m in model:
+ for param in m.parameters():
+ # only upcast trainable parameters into fp32
+ if param.requires_grad:
+ param.data = param.to(dtype)