├── localization.png ├── annotations ├── Procedure&Action_ID.xlsx ├── task1&3 │ ├── val.csv │ ├── test.csv │ └── train.csv └── task2 │ ├── procedure_val.csv │ └── action_val.csv ├── tools ├── preprocess_videos.py ├── clip.py ├── faceblur.py └── downloader.py ├── requirements.txt ├── feature_extraction ├── videotransforms.py ├── charades_dataset_full.py ├── charades_dataset.py ├── train_i3d.py ├── build_rawframes.py ├── extract_features.py └── pytorch_i3d.py ├── Disclaimer.txt ├── README.md └── CC-BY-4.0 /localization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minghu0830/NurViD-benchmark/HEAD/localization.png -------------------------------------------------------------------------------- /annotations/Procedure&Action_ID.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minghu0830/NurViD-benchmark/HEAD/annotations/Procedure&Action_ID.xlsx -------------------------------------------------------------------------------- /tools/preprocess_videos.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import os 3 | import glob 4 | from tqdm import tqdm 5 | 6 | def change_fps_and_resolution(src_path, dst_path, new_fps, new_width, new_height): 7 | cap = cv2.VideoCapture(src_path) 8 | 9 | width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) 10 | height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) 11 | fps = cap.get(cv2.CAP_PROP_FPS) 12 | 13 | frame_interval = round(fps / new_fps) 14 | 15 | fourcc = cv2.VideoWriter_fourcc(*'mp4v') 16 | 17 | out = cv2.VideoWriter(dst_path, fourcc, new_fps, (new_width, new_height)) 18 | 19 | frame_id = 0 20 | while True: 21 | ret, frame = cap.read() 22 | 23 | if not ret: 24 | break 25 | 26 | if frame_id % frame_interval == 0: 27 | frame = cv2.resize(frame, (new_width, new_height)) 28 | out.write(frame) 29 | 30 | frame_id += 1 31 | 32 | cap.release() 33 | out.release() 34 | 35 | source_path = "/source_path" 36 | destination_path = "/output_path" 37 | files = glob.glob(os.path.join(source_path, "*.mp4")) 38 | 39 | for file in tqdm(files, desc="Processing videos"): 40 | filename = os.path.basename(file) 41 | dst_path = os.path.join(destination_path, filename) 42 | change_fps_and_resolution(file, dst_path, 25, 256, 256) 43 | -------------------------------------------------------------------------------- /tools/clip.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import pandas as pd 4 | import subprocess 5 | 6 | # 读取json文件 7 | with open("NurViD_annotations.json", "r") as f: 8 | data = json.load(f) 9 | 10 | # 创建一个空的列表,用于存储剪辑视频的信息 11 | video_info = [] 12 | 13 | # 遍历json文件中的每个视频 14 | video_names = data.keys() 15 | for video_name in video_names: 16 | video_path = data[video_name]["url"] 17 | video_name = video_path.split("=")[-1] 18 | 19 | # 指定本地视频所在的目录 20 | video_dir = "/video_path" 21 | 22 | # 拼接本地视频的完整路径 23 | video_path = os.path.join(video_dir, video_name+'.mp4') 24 | 25 | operation_id = data[video_name]["operationID"] 26 | annotations = data[video_name]["annotations"] 27 | 28 | 29 | # 遍历每个视频的标注片段 30 | for i, annotation in enumerate(annotations): 31 | action_id = annotation["actionID"] 32 | start_time = annotation["segment"][0] 33 | end_time = annotation["segment"][1] 34 | duration = end_time - start_time 35 | 36 | # 指定导出视频所在的目录 37 | new_video_dir = "/segments_save_path" 38 | 39 | # 拼接导出视频的完整路径 40 | new_video_name = os.path.join(new_video_dir, video_name + "_" + str(i + 1) + ".mp4") 41 | 42 | # 用ffmpeg命令剪辑视频 43 | command = f"ffmpeg -ss {start_time} -i {video_path} -t {duration} -c copy {new_video_name}" 44 | #subprocess.call(command) 45 | os.system(command) 46 | 47 | # 将剪辑视频的信息作为一个字典添加到列表中 48 | video_info.append({"Video Name": new_video_name, "Operation ID": operation_id, "Action ID": action_id}) 49 | 50 | # 将列表转换为DataFrame对象 51 | df = pd.DataFrame(video_info) 52 | 53 | # 将DataFrame对象保存为excel文件,文件名为视频名字加.xlsx 54 | output_file = "excel_save_path" 55 | df.to_excel(output_file, index=False) 56 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py==1.4.0 2 | antlr4-python3-runtime==4.9.3 3 | astor==0.8.1 4 | av==9.0.0 5 | Babel==2.12.1 6 | bce-python-sdk==0.8.90 7 | black==23.3.0 8 | blinker==1.6.2 9 | blobfile==2.0.2 10 | Brotli==1.0.9 11 | cachetools==5.3.0 12 | certifi==2023.5.7 13 | charset-normalizer==3.1.0 14 | click==8.1.7 15 | cloudpickle==2.2.1 16 | contourpy==1.0.7 17 | cycler==0.11.0 18 | decorator==4.4.2 19 | detectron2 @ file:///home/huming/medicnet/SlowFast/detectron2_repo 20 | et-xmlfile==1.1.0 21 | fairscale==0.4.13 22 | filelock==3.12.2 23 | Flask==2.3.3 24 | flask-babel==3.1.0 25 | fonttools==4.39.4 26 | fvcore==0.1.5.post20221220 27 | gdown==4.7.1 28 | google-auth==2.18.0 29 | google-auth-oauthlib==1.0.0 30 | grpcio==1.54.0 31 | hydra-core==1.3.2 32 | idna==3.4 33 | imageio==2.28.1 34 | imageio-ffmpeg==0.4.8 35 | importlib-metadata==6.6.0 36 | importlib-resources==5.12.0 37 | iopath==0.1.9 38 | itsdangerous==2.1.2 39 | Jinja2==3.1.2 40 | joblib==1.2.0 41 | kiwisolver==1.4.4 42 | lxml==4.9.3 43 | Markdown==3.4.3 44 | MarkupSafe==2.1.3 45 | matplotlib==3.7.1 46 | moviepy==1.0.3 47 | mpi4py==3.1.4 48 | mutagen==1.46.0 49 | mypy-extensions==1.0.0 50 | networkx==3.1 51 | numpy==1.24.3 52 | oauthlib==3.2.2 53 | omegaconf==2.3.0 54 | opencv-python==4.5.5.64 55 | openpyxl==3.1.2 56 | opt-einsum==3.3.0 57 | packaging==23.1 58 | paddle-bfloat==0.1.7 59 | pandas==2.0.1 60 | parameterized==0.9.0 61 | pathspec==0.11.1 62 | Pillow==9.5.0 63 | platformdirs==3.5.1 64 | portalocker==2.7.0 65 | prettytable==3.9.0 66 | proglog==0.1.10 67 | protobuf==4.23.0 68 | psutil==5.9.5 69 | pyasn1==0.5.0 70 | pyasn1-modules==0.3.0 71 | pycocotools==2.0.6 72 | pycryptodome==3.19.0 73 | pycryptodomex==3.17 74 | pyparsing==3.0.9 75 | python-dateutil==2.8.2 76 | -e git+https://github.com/facebookresearch/pytorchvideo.git@1730313bb5eda307657f971365de7a1359e1a68e#egg=pytorchvideo 77 | pytz==2023.3.post1 78 | PyYAML==6.0 79 | rarfile==4.1 80 | requests==2.30.0 81 | requests-oauthlib==1.3.1 82 | rsa==4.9 83 | scikit-learn==1.2.2 84 | scipy==1.10.1 85 | simplejson==3.19.1 86 | six==1.16.0 87 | sklearn==0.0.post5 88 | -e git+https://github.com/facebookresearch/slowfast@7a6f09e2127188861d0a7393e3d43707aa0a7f93#egg=slowfast 89 | tabulate==0.9.0 90 | tensorboard==2.13.0 91 | tensorboard-data-server==0.7.0 92 | termcolor==2.3.0 93 | threadpoolctl==3.1.0 94 | tomli==2.0.1 95 | torch==1.13.0+cu117 96 | torchvision==0.14.0+cu117 97 | tqdm==4.66.1 98 | typing_extensions==4.5.0 99 | tzdata==2023.3 100 | urllib3==1.26.15 101 | visualdl==2.5.3 102 | websockets==10.4 103 | Werkzeug==2.3.7 104 | yacs==0.1.8 105 | yt-dlp==2023.3.4 106 | zipp==3.15.0 107 | -------------------------------------------------------------------------------- /tools/faceblur.py: -------------------------------------------------------------------------------- 1 | import os 2 | import cv2 3 | import concurrent.futures 4 | from tqdm import tqdm 5 | 6 | def blur_faces_in_video(video_path, output_path): 7 | # 加载人脸识别器(这里使用OpenCV的Haar级联分类器) 8 | face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') 9 | 10 | # 打开视频文件 11 | video = cv2.VideoCapture(video_path) 12 | fps = video.get(cv2.CAP_PROP_FPS) 13 | width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) 14 | height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) 15 | 16 | # 创建视频编写器 17 | fourcc = cv2.VideoWriter_fourcc(*'mp4v') 18 | output_video = cv2.VideoWriter(output_path, fourcc, fps, (width, height)) 19 | 20 | while True: 21 | # 读取视频帧 22 | ret, frame = video.read() 23 | 24 | if not ret: 25 | break 26 | 27 | # 将帧转换为灰度图像 28 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 29 | 30 | # 检测人脸 31 | faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) 32 | 33 | # 对每个检测到的人脸进行模糊处理 34 | for (x, y, w, h) in faces: 35 | # 提取人脸区域 36 | face_roi = frame[y:y+h, x:x+w] 37 | 38 | # 应用模糊处理 39 | blurred_face = cv2.GaussianBlur(face_roi, (99, 99), 30) 40 | 41 | # 将模糊后的人脸区域放回原始帧 42 | frame[y:y+h, x:x+w] = blurred_face 43 | 44 | # 将处理后的帧写入输出视频 45 | output_video.write(frame) 46 | 47 | # 释放资源 48 | video.release() 49 | output_video.release() 50 | 51 | def process_video(video): 52 | input_path, output_path = video 53 | blur_faces_in_video(input_path, output_path) 54 | 55 | def blur_faces_in_videos(input_folder, output_folder): 56 | # 创建输出文件夹 57 | os.makedirs(output_folder, exist_ok=True) 58 | 59 | # 构建视频文件路径列表 60 | videos = [] 61 | for file_name in os.listdir(input_folder): 62 | if file_name.endswith('.mp4'): 63 | input_path = os.path.join(input_folder, file_name) 64 | output_path = os.path.join(output_folder, file_name) 65 | videos.append((input_path, output_path)) 66 | 67 | # 使用多线程处理视频 68 | with concurrent.futures.ThreadPoolExecutor() as executor: 69 | futures = [executor.submit(process_video, video) for video in videos] 70 | 71 | # 显示进度条 72 | for _ in tqdm(concurrent.futures.as_completed(futures), total=len(futures), desc='Processing Videos'): 73 | pass 74 | 75 | print("批量处理完成!") 76 | 77 | # 使用示例 78 | input_folder_path = "input_folder" 79 | output_folder_path = "output_folder" 80 | 81 | blur_faces_in_videos(input_folder_path, output_folder_path) -------------------------------------------------------------------------------- /feature_extraction/videotransforms.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import numbers 3 | import random 4 | 5 | class RandomCrop(object): 6 | """Crop the given video sequences (t x h x w) at a random location. 7 | Args: 8 | size (sequence or int): Desired output size of the crop. If size is an 9 | int instead of sequence like (h, w), a square crop (size, size) is 10 | made. 11 | """ 12 | 13 | def __init__(self, size): 14 | if isinstance(size, numbers.Number): 15 | self.size = (int(size), int(size)) 16 | else: 17 | self.size = size 18 | 19 | @staticmethod 20 | def get_params(img, output_size): 21 | """Get parameters for ``crop`` for a random crop. 22 | Args: 23 | img (PIL Image): Image to be cropped. 24 | output_size (tuple): Expected output size of the crop. 25 | Returns: 26 | tuple: params (i, j, h, w) to be passed to ``crop`` for random crop. 27 | """ 28 | t, h, w, c = img.shape 29 | th, tw = output_size 30 | if w == tw and h == th: 31 | return 0, 0, h, w 32 | 33 | i = random.randint(0, h - th) if h!=th else 0 34 | j = random.randint(0, w - tw) if w!=tw else 0 35 | return i, j, th, tw 36 | 37 | def __call__(self, imgs): 38 | 39 | i, j, h, w = self.get_params(imgs, self.size) 40 | 41 | imgs = imgs[:, i:i+h, j:j+w, :] 42 | return imgs 43 | 44 | def __repr__(self): 45 | return self.__class__.__name__ + '(size={0})'.format(self.size) 46 | 47 | class CenterCrop(object): 48 | """Crops the given seq Images at the center. 49 | Args: 50 | size (sequence or int): Desired output size of the crop. If size is an 51 | int instead of sequence like (h, w), a square crop (size, size) is 52 | made. 53 | """ 54 | 55 | def __init__(self, size): 56 | if isinstance(size, numbers.Number): 57 | self.size = (int(size), int(size)) 58 | else: 59 | self.size = size 60 | 61 | def __call__(self, imgs): 62 | """ 63 | Args: 64 | img (PIL Image): Image to be cropped. 65 | Returns: 66 | PIL Image: Cropped image. 67 | """ 68 | t, h, w, c = imgs.shape 69 | th, tw = self.size 70 | i = int(np.round((h - th) / 2.)) 71 | j = int(np.round((w - tw) / 2.)) 72 | 73 | return imgs[:, i:i+th, j:j+tw, :] 74 | 75 | 76 | def __repr__(self): 77 | return self.__class__.__name__ + '(size={0})'.format(self.size) 78 | 79 | 80 | class RandomHorizontalFlip(object): 81 | """Horizontally flip the given seq Images randomly with a given probability. 82 | Args: 83 | p (float): probability of the image being flipped. Default value is 0.5 84 | """ 85 | 86 | def __init__(self, p=0.5): 87 | self.p = p 88 | 89 | def __call__(self, imgs): 90 | """ 91 | Args: 92 | img (seq Images): seq Images to be flipped. 93 | Returns: 94 | seq Images: Randomly flipped seq images. 95 | """ 96 | if random.random() < self.p: 97 | # t x h x w 98 | return np.flip(imgs, axis=2).copy() 99 | return imgs 100 | 101 | def __repr__(self): 102 | return self.__class__.__name__ + '(p={})'.format(self.p) 103 | -------------------------------------------------------------------------------- /Disclaimer.txt: -------------------------------------------------------------------------------- 1 | The software project, data, and models provided by our GitHub project are provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. 2 | 3 | In no event shall the project owners or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software project, data, or models, even if advised of the possibility of such damage. 4 | 5 | Users of this software project, data, and models are solely responsible for any consequences of their use. The project owners and contributors shall not be held responsible for any subsequent or potential harm caused by the use of this software project, data, or models. 6 | 7 | By using this software project, data, or models, users accept and agree to this disclaimer. If users do not agree to the terms of this disclaimer, they should not use this software project, data, or models. 8 | 9 | It is important to note that this software project, data, and models are still in the research phase and are provided for experimental purposes only. As such, the project owners and contributors do not guarantee the accuracy, completeness, or usefulness of the software project, data, or models. 10 | 11 | Furthermore, due to the experimental nature of this software project, data, and models, it is possible that they may contain or generate inappropriate responses, errors, or inconsistencies. Users should exercise caution when using this software project, data, or models, and should not rely solely on them for any critical or sensitive tasks. 12 | 13 | The project owners and contributors shall not be held responsible for any damages, losses, or liabilities arising from the use of this software project, data, or models, including but not limited to, any inappropriate responses generated by the software project, data, or models. 14 | 15 | By using this software project, data, or models, users acknowledge and accept the experimental nature of the software project, data, and models, and understand the potential risks and limitations associated with their use. If users do not agree to the terms of this disclaimer, they should not use this software project, data, or models. 16 | 17 | The software project, data, and models provided by our GitHub project are intended for research purposes only. They should not be used for any commercial, business, or legal purposes, and should not be relied upon as a substitute for professional advice or judgment. 18 | 19 | Users of this software project, data, and models are strictly prohibited from using them for any commercial purposes, including but not limited to, selling, licensing, or distributing the software project, data, or models to third parties. 20 | 21 | The project owners and contributors shall not be held responsible for any damages, losses, or liabilities arising from the use of this software project, data, or models for any commercial or business purposes. 22 | 23 | By using this software project, data, or models, users agree to use them for research purposes only, and not for any commercial or business purposes. If users do not agree to the terms of this disclaimer, they should not use this software project, data, or models. -------------------------------------------------------------------------------- /feature_extraction/charades_dataset_full.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.utils.data as data_utl 3 | from torch.utils.data.dataloader import default_collate 4 | 5 | import numpy as np 6 | import json 7 | import csv 8 | import h5py 9 | 10 | import os 11 | import os.path 12 | 13 | import cv2 14 | 15 | def video_to_tensor(pic): 16 | """Convert a ``numpy.ndarray`` to tensor. 17 | Converts a numpy.ndarray (T x H x W x C) 18 | to a torch.FloatTensor of shape (C x T x H x W) 19 | 20 | Args: 21 | pic (numpy.ndarray): Video to be converted to tensor. 22 | Returns: 23 | Tensor: Converted video. 24 | """ 25 | return torch.from_numpy(pic.transpose([3,0,1,2])) 26 | 27 | 28 | def load_rgb_frames(image_dir, vid, start, num): 29 | frames = [] 30 | for i in range(start, start+num): 31 | img = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'.jpg'))[:, :, [2, 1, 0]] 32 | w,h,c = img.shape 33 | if w < 226 or h < 226: 34 | d = 226.-min(w,h) 35 | sc = 1+d/min(w,h) 36 | img = cv2.resize(img,dsize=(0,0),fx=sc,fy=sc) 37 | img = (img/255.)*2 - 1 38 | frames.append(img) 39 | return np.asarray(frames, dtype=np.float32) 40 | 41 | def load_flow_frames(image_dir, vid, start, num): 42 | frames = [] 43 | for i in range(start, start+num): 44 | imgx = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'x.jpg'), cv2.IMREAD_GRAYSCALE) 45 | imgy = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'y.jpg'), cv2.IMREAD_GRAYSCALE) 46 | 47 | w,h = imgx.shape 48 | if w < 224 or h < 224: 49 | d = 224.-min(w,h) 50 | sc = 1+d/min(w,h) 51 | imgx = cv2.resize(imgx,dsize=(0,0),fx=sc,fy=sc) 52 | imgy = cv2.resize(imgy,dsize=(0,0),fx=sc,fy=sc) 53 | 54 | imgx = (imgx/255.)*2 - 1 55 | imgy = (imgy/255.)*2 - 1 56 | img = np.asarray([imgx, imgy]).transpose([1,2,0]) 57 | frames.append(img) 58 | return np.asarray(frames, dtype=np.float32) 59 | 60 | 61 | def make_dataset(split_file, split, root, mode, num_classes=157): 62 | dataset = [] 63 | with open(split_file, 'r') as f: 64 | data = json.load(f) 65 | 66 | i = 0 67 | for vid in data.keys(): 68 | if data[vid]['subset'] != split: 69 | continue 70 | 71 | if not os.path.exists(os.path.join(root, vid)): 72 | continue 73 | num_frames = len(os.listdir(os.path.join(root, vid))) 74 | if mode == 'flow': 75 | num_frames = num_frames//2 76 | 77 | label = np.zeros((num_classes,num_frames), np.float32) 78 | 79 | fps = num_frames/data[vid]['duration'] 80 | for ann in data[vid]['actions']: 81 | for fr in range(0,num_frames,1): 82 | if fr/fps > ann[1] and fr/fps < ann[2]: 83 | label[ann[0], fr] = 1 # binary classification 84 | dataset.append((vid, label, data[vid]['duration'], num_frames)) 85 | i += 1 86 | 87 | return dataset 88 | 89 | 90 | class Charades(data_utl.Dataset): 91 | 92 | def __init__(self, split_file, split, root, mode, transforms=None, save_dir='', num=0): 93 | 94 | self.data = make_dataset(split_file, split, root, mode) 95 | self.split_file = split_file 96 | self.transforms = transforms 97 | self.mode = mode 98 | self.root = root 99 | self.save_dir = save_dir 100 | 101 | def __getitem__(self, index): 102 | """ 103 | Args: 104 | index (int): Index 105 | 106 | Returns: 107 | tuple: (image, target) where target is class_index of the target class. 108 | """ 109 | vid, label, dur, nf = self.data[index] 110 | if os.path.exists(os.path.join(self.save_dir, vid+'.npy')): 111 | return 0, 0, vid 112 | 113 | if self.mode == 'rgb': 114 | imgs = load_rgb_frames(self.root, vid, 1, nf) 115 | else: 116 | imgs = load_flow_frames(self.root, vid, 1, nf) 117 | 118 | imgs = self.transforms(imgs) 119 | 120 | return video_to_tensor(imgs), torch.from_numpy(label), vid 121 | 122 | def __len__(self): 123 | return len(self.data) 124 | -------------------------------------------------------------------------------- /feature_extraction/charades_dataset.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.utils.data as data_utl 3 | from torch.utils.data.dataloader import default_collate 4 | 5 | import numpy as np 6 | import json 7 | import csv 8 | import h5py 9 | import random 10 | import os 11 | import os.path 12 | 13 | import cv2 14 | 15 | def video_to_tensor(pic): 16 | """Convert a ``numpy.ndarray`` to tensor. 17 | Converts a numpy.ndarray (T x H x W x C) 18 | to a torch.FloatTensor of shape (C x T x H x W) 19 | 20 | Args: 21 | pic (numpy.ndarray): Video to be converted to tensor. 22 | Returns: 23 | Tensor: Converted video. 24 | """ 25 | return torch.from_numpy(pic.transpose([3,0,1,2])) 26 | 27 | 28 | def load_rgb_frames(image_dir, vid, start, num): 29 | frames = [] 30 | for i in range(start, start+num): 31 | img = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'.jpg'))[:, :, [2, 1, 0]] 32 | w,h,c = img.shape 33 | if w < 226 or h < 226: 34 | d = 226.-min(w,h) 35 | sc = 1+d/min(w,h) 36 | img = cv2.resize(img,dsize=(0,0),fx=sc,fy=sc) 37 | img = (img/255.)*2 - 1 38 | frames.append(img) 39 | return np.asarray(frames, dtype=np.float32) 40 | 41 | def load_flow_frames(image_dir, vid, start, num): 42 | frames = [] 43 | for i in range(start, start+num): 44 | imgx = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'x.jpg'), cv2.IMREAD_GRAYSCALE) 45 | imgy = cv2.imread(os.path.join(image_dir, vid, vid+'-'+str(i).zfill(6)+'y.jpg'), cv2.IMREAD_GRAYSCALE) 46 | 47 | w,h = imgx.shape 48 | if w < 224 or h < 224: 49 | d = 224.-min(w,h) 50 | sc = 1+d/min(w,h) 51 | imgx = cv2.resize(imgx,dsize=(0,0),fx=sc,fy=sc) 52 | imgy = cv2.resize(imgy,dsize=(0,0),fx=sc,fy=sc) 53 | 54 | imgx = (imgx/255.)*2 - 1 55 | imgy = (imgy/255.)*2 - 1 56 | img = np.asarray([imgx, imgy]).transpose([1,2,0]) 57 | frames.append(img) 58 | return np.asarray(frames, dtype=np.float32) 59 | 60 | 61 | def make_dataset(split_file, split, root, mode, num_classes=157): 62 | dataset = [] 63 | with open(split_file, 'r') as f: 64 | data = json.load(f) 65 | 66 | i = 0 67 | for vid in data.keys(): 68 | if data[vid]['subset'] != split: 69 | continue 70 | 71 | if not os.path.exists(os.path.join(root, vid)): 72 | continue 73 | num_frames = len(os.listdir(os.path.join(root, vid))) 74 | if mode == 'flow': 75 | num_frames = num_frames//2 76 | 77 | if num_frames < 66: 78 | continue 79 | 80 | label = np.zeros((num_classes,num_frames), np.float32) 81 | 82 | fps = num_frames/data[vid]['duration'] 83 | for ann in data[vid]['actions']: 84 | for fr in range(0,num_frames,1): 85 | if fr/fps > ann[1] and fr/fps < ann[2]: 86 | label[ann[0], fr] = 1 # binary classification 87 | dataset.append((vid, label, data[vid]['duration'], num_frames)) 88 | i += 1 89 | 90 | return dataset 91 | 92 | 93 | class Charades(data_utl.Dataset): 94 | 95 | def __init__(self, split_file, split, root, mode, transforms=None): 96 | 97 | self.data = make_dataset(split_file, split, root, mode) 98 | self.split_file = split_file 99 | self.transforms = transforms 100 | self.mode = mode 101 | self.root = root 102 | 103 | def __getitem__(self, index): 104 | """ 105 | Args: 106 | index (int): Index 107 | 108 | Returns: 109 | tuple: (image, target) where target is class_index of the target class. 110 | """ 111 | vid, label, dur, nf = self.data[index] 112 | start_f = random.randint(1,nf-65) 113 | 114 | if self.mode == 'rgb': 115 | imgs = load_rgb_frames(self.root, vid, start_f, 64) 116 | else: 117 | imgs = load_flow_frames(self.root, vid, start_f, 64) 118 | label = label[:, start_f:start_f+64] 119 | 120 | imgs = self.transforms(imgs) 121 | 122 | return video_to_tensor(imgs), torch.from_numpy(label) 123 | 124 | def __len__(self): 125 | return len(self.data) 126 | -------------------------------------------------------------------------------- /feature_extraction/train_i3d.py: -------------------------------------------------------------------------------- 1 | import os 2 | os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" 3 | #os.environ["CUDA_VISIBLE_DEVICES"]='0,1,2,3' 4 | import sys 5 | import argparse 6 | 7 | parser = argparse.ArgumentParser() 8 | parser.add_argument('-mode', type=str, help='rgb or flow') 9 | parser.add_argument('-save_model', type=str) 10 | parser.add_argument('-root', type=str) 11 | 12 | args = parser.parse_args() 13 | 14 | 15 | import torch 16 | import torch.nn as nn 17 | import torch.nn.functional as F 18 | import torch.optim as optim 19 | from torch.optim import lr_scheduler 20 | from torch.autograd import Variable 21 | 22 | import torchvision 23 | from torchvision import datasets, transforms 24 | import videotransforms 25 | 26 | 27 | import numpy as np 28 | 29 | from pytorch_i3d import InceptionI3d 30 | 31 | from charades_dataset import Charades as Dataset 32 | 33 | 34 | def run(init_lr=0.1, max_steps=64e3, mode='rgb', root='/ssd/Charades_v1_rgb', train_split='charades/charades.json', batch_size=8*5, save_model=''): 35 | # setup dataset 36 | train_transforms = transforms.Compose([videotransforms.RandomCrop(224), 37 | videotransforms.RandomHorizontalFlip(), 38 | ]) 39 | test_transforms = transforms.Compose([videotransforms.CenterCrop(224)]) 40 | 41 | dataset = Dataset(train_split, 'training', root, mode, train_transforms) 42 | dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True, num_workers=36, pin_memory=True) 43 | 44 | val_dataset = Dataset(train_split, 'testing', root, mode, test_transforms) 45 | val_dataloader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=True, num_workers=36, pin_memory=True) 46 | 47 | dataloaders = {'train': dataloader, 'val': val_dataloader} 48 | datasets = {'train': dataset, 'val': val_dataset} 49 | 50 | 51 | # setup the model 52 | if mode == 'flow': 53 | i3d = InceptionI3d(400, in_channels=2) 54 | i3d.load_state_dict(torch.load('models/flow_imagenet.pt')) 55 | else: 56 | i3d = InceptionI3d(400, in_channels=3) 57 | i3d.load_state_dict(torch.load('models/rgb_imagenet.pt')) 58 | i3d.replace_logits(157) 59 | #i3d.load_state_dict(torch.load('/ssd/models/000920.pt')) 60 | i3d.cuda() 61 | i3d = nn.DataParallel(i3d) 62 | 63 | lr = init_lr 64 | optimizer = optim.SGD(i3d.parameters(), lr=lr, momentum=0.9, weight_decay=0.0000001) 65 | lr_sched = optim.lr_scheduler.MultiStepLR(optimizer, [300, 1000]) 66 | 67 | 68 | num_steps_per_update = 4 # accum gradient 69 | steps = 0 70 | # train it 71 | while steps < max_steps:#for epoch in range(num_epochs): 72 | print 'Step {}/{}'.format(steps, max_steps) 73 | print '-' * 10 74 | 75 | # Each epoch has a training and validation phase 76 | for phase in ['train', 'val']: 77 | if phase == 'train': 78 | i3d.train(True) 79 | else: 80 | i3d.train(False) # Set model to evaluate mode 81 | 82 | tot_loss = 0.0 83 | tot_loc_loss = 0.0 84 | tot_cls_loss = 0.0 85 | num_iter = 0 86 | optimizer.zero_grad() 87 | 88 | # Iterate over data. 89 | for data in dataloaders[phase]: 90 | num_iter += 1 91 | # get the inputs 92 | inputs, labels = data 93 | 94 | # wrap them in Variable 95 | inputs = Variable(inputs.cuda()) 96 | t = inputs.size(2) 97 | labels = Variable(labels.cuda()) 98 | 99 | per_frame_logits = i3d(inputs) 100 | # upsample to input size 101 | per_frame_logits = F.upsample(per_frame_logits, t, mode='linear') 102 | 103 | # compute localization loss 104 | loc_loss = F.binary_cross_entropy_with_logits(per_frame_logits, labels) 105 | tot_loc_loss += loc_loss.data[0] 106 | 107 | # compute classification loss (with max-pooling along time B x C x T) 108 | cls_loss = F.binary_cross_entropy_with_logits(torch.max(per_frame_logits, dim=2)[0], torch.max(labels, dim=2)[0]) 109 | tot_cls_loss += cls_loss.data[0] 110 | 111 | loss = (0.5*loc_loss + 0.5*cls_loss)/num_steps_per_update 112 | tot_loss += loss.data[0] 113 | loss.backward() 114 | 115 | if num_iter == num_steps_per_update and phase == 'train': 116 | steps += 1 117 | num_iter = 0 118 | optimizer.step() 119 | optimizer.zero_grad() 120 | lr_sched.step() 121 | if steps % 10 == 0: 122 | print '{} Loc Loss: {:.4f} Cls Loss: {:.4f} Tot Loss: {:.4f}'.format(phase, tot_loc_loss/(10*num_steps_per_update), tot_cls_loss/(10*num_steps_per_update), tot_loss/10) 123 | # save model 124 | torch.save(i3d.module.state_dict(), save_model+str(steps).zfill(6)+'.pt') 125 | tot_loss = tot_loc_loss = tot_cls_loss = 0. 126 | if phase == 'val': 127 | print '{} Loc Loss: {:.4f} Cls Loss: {:.4f} Tot Loss: {:.4f}'.format(phase, tot_loc_loss/num_iter, tot_cls_loss/num_iter, (tot_loss*num_steps_per_update)/num_iter) 128 | 129 | 130 | 131 | if __name__ == '__main__': 132 | # need to add argparse 133 | run(mode=args.mode, root=args.root, save_model=args.save_model) 134 | -------------------------------------------------------------------------------- /annotations/task1&3/val.csv: -------------------------------------------------------------------------------- 1 | path-label 2 | /video_path/t26NpV2d98s.mp4 3 3 | /video_path/TEkATzoxLYA.mp4 3 4 | /video_path/TUwd4ZHgd2w.mp4 3 5 | /video_path/uCUwB1t2sLA.mp4 3 6 | /video_path/uSZwWPCuh0M.mp4 3 7 | /video_path/VmWZSryeMjs.mp4 3 8 | /video_path/wlssXdkjCLs.mp4 3 9 | /video_path/S4L6rVLMQ0Q.mp4 37 10 | /video_path/Tx17kzQGqlg.mp4 37 11 | /video_path/re6TnoGpXdM.mp4 25 12 | /video_path/tDETBkJIUJ8.mp4 25 13 | /video_path/TZ6xeS_GjSk.mp4 25 14 | /video_path/QF8lOgjCKEs.mp4 7 15 | /video_path/qXKQQmCgKG4.mp4 7 16 | /video_path/RBPpgeKz31s.mp4 7 17 | /video_path/rNnEiYVU6lg.mp4 7 18 | /video_path/rOc1enHcEh8.mp4 7 19 | /video_path/svW_04e1Oi8.mp4 7 20 | /video_path/ks5NHqYF6kQ.mp4 31 21 | /video_path/mfiWikreG4k.mp4 31 22 | /video_path/msRft-g-k_s.mp4 31 23 | /video_path/qOjWJHdEaBo.mp4 2 24 | /video_path/QtCYebM3f8g.mp4 2 25 | /video_path/QTz9BM4vYtk.mp4 2 26 | /video_path/R5Fa6n4cnE4.mp4 2 27 | /video_path/r8okzAL6PlQ.mp4 2 28 | /video_path/sFFxRTwbhNY.mp4 2 29 | /video_path/SlqZsorw7rI.mp4 2 30 | /video_path/sTfoh0vRA08.mp4 2 31 | /video_path/PXquGIXXk4s.mp4 19 32 | /video_path/qRmUOlCgigg.mp4 19 33 | /video_path/RauG9bE3klg.mp4 19 34 | /video_path/VHjUH7yXiJU.mp4 19 35 | /video_path/RKDO3pfICjs.mp4 1 36 | /video_path/Rxtg5eTnICM.mp4 1 37 | /video_path/RzpVnqPwfhs.mp4 1 38 | /video_path/S1ThWb94XwM.mp4 1 39 | /video_path/sC9vpZLLLLI.mp4 1 40 | /video_path/SUB0hybpY-Y.mp4 1 41 | /video_path/swzxvMXz93I.mp4 1 42 | /video_path/sXOQ9VaYEv0.mp4 1 43 | /video_path/SC9vvK7ZaTQ.mp4 4 44 | /video_path/T8gxRDL7ig4.mp4 4 45 | /video_path/TjMAUIAk_-s.mp4 4 46 | /video_path/W96Y1crspIw.mp4 4 47 | /video_path/WISzaCdJSQg.mp4 4 48 | /video_path/wsBy4sG2TQY.mp4 4 49 | /video_path/PFJBPXsMMKE.mp4 11 50 | /video_path/PLSOON6Vf9Q.mp4 11 51 | /video_path/QSnEA3OMJl8.mp4 11 52 | /video_path/RmeY9KQQ0qk.mp4 11 53 | /video_path/ryY29F8Wx_I.mp4 11 54 | /video_path/pg-xeL-4nyA.mp4 20 55 | /video_path/ROzfJO6Fkcs.mp4 20 56 | /video_path/swIVXa6k-AE.mp4 20 57 | /video_path/T7OVrWn1mp4.mp4 20 58 | /video_path/RpB_qVyrIgU.mp4 8 59 | /video_path/SQ_h3EVhqfw.mp4 8 60 | /video_path/tbW8djVi83o.mp4 8 61 | /video_path/va6R3N2fRE8.mp4 8 62 | /video_path/vRZF5P_0lqk.mp4 8 63 | /video_path/WDsbUWJkjWI.mp4 8 64 | /video_path/qOM9ia17Nwo.mp4 13 65 | /video_path/qXtsl5_G7wM.mp4 13 66 | /video_path/rBD71jLxg7o.mp4 13 67 | /video_path/rQrJzKCPn7E.mp4 13 68 | /video_path/S648xZDK7b0.mp4 13 69 | /video_path/pqdT_9ZHkcA.mp4 23 70 | /video_path/qJMX7TPq48o.mp4 23 71 | /video_path/R35AdZxATJc.mp4 23 72 | /video_path/tlQAHvtYZb0.mp4 15 73 | /video_path/TNr-P1292F8.mp4 15 74 | /video_path/u6CV5SADa34.mp4 15 75 | /video_path/u6dT3LVfZl4.mp4 15 76 | /video_path/uAMJi-RMimI.mp4 15 77 | /video_path/N_31dk2VumQ.mp4 38 78 | /video_path/QbpJ5QUZXIk.mp4 38 79 | /video_path/nZ5ARMIiQ4A.mp4 39 80 | /video_path/RqhoTKnV-zI.mp4 39 81 | /video_path/lZ-vwkNg2ho.mp4 26 82 | /video_path/Mg5efWa7I6s.mp4 26 83 | /video_path/MTuDsaPbEEk.mp4 26 84 | /video_path/IwJlXwISDsI.mp4 34 85 | /video_path/Mq4Yh0-iozY.mp4 34 86 | /video_path/sIYzY8jnifU.mp4 22 87 | /video_path/SOeFRkaRccg.mp4 22 88 | /video_path/sYjHK5b7Jzs.mp4 22 89 | /video_path/Rr1RuuVML6U.mp4 9 90 | /video_path/SDFjrkfSjDM.mp4 9 91 | /video_path/sfOm5TBAFVE.mp4 9 92 | /video_path/TwtcKKt4i94.mp4 9 93 | /video_path/uK9oG68ajq8.mp4 9 94 | /video_path/UM1wMCspFRI.mp4 9 95 | /video_path/quqV86VI6Ts.mp4 17 96 | /video_path/Qw6I97mDOKs.mp4 17 97 | /video_path/rDtZWq6jgYw.mp4 17 98 | /video_path/RG7mBpT4Rw4.mp4 17 99 | /video_path/s8V5IUK38Xs.mp4 14 100 | /video_path/sGfQqniqV9M.mp4 14 101 | /video_path/sn1pZ7H66Do.mp4 14 102 | /video_path/sO6Ahl1FCy4.mp4 14 103 | /video_path/Sti-LQuAG1k.mp4 14 104 | /video_path/QxBEYqYpkMk.mp4 12 105 | /video_path/qZ3Q9p-7WCA.mp4 12 106 | /video_path/rrUC9449bp8.mp4 12 107 | /video_path/sueclA2NVao.mp4 12 108 | /video_path/SyafDOQNGl8.mp4 12 109 | /video_path/V2N6MXL3RrE.mp4 16 110 | /video_path/Vww-G6oObTA.mp4 16 111 | /video_path/VZeZREFZVXU.mp4 16 112 | /video_path/WZvIw0SnYrE.mp4 16 113 | /video_path/pjz-IdyTNTU.mp4 27 114 | /video_path/pkn4hYvcaD0.mp4 27 115 | /video_path/Qg-ouP03qLs.mp4 27 116 | /video_path/SWHSKLlVDys.mp4 5 117 | /video_path/TNKRk0WRJqc.mp4 5 118 | /video_path/u8ZL0XLXA54.mp4 5 119 | /video_path/ue96cuS-lNs.mp4 5 120 | /video_path/UjPldsSfiQU.mp4 5 121 | /video_path/ukYrii2Ap6k.mp4 5 122 | /video_path/SCvBusvxTnM.mp4 21 123 | /video_path/TZKn9CcJ-Y4.mp4 21 124 | /video_path/uAk9ppD-KZk.mp4 21 125 | /video_path/UY8CCr_Ec6w.mp4 21 126 | /video_path/SHx_P08m3_Y.mp4 10 127 | /video_path/SQ0d25LZnH8.mp4 10 128 | /video_path/t0c8Yp_anAE.mp4 10 129 | /video_path/tLi1PZSyk3o.mp4 10 130 | /video_path/ukuK87Tfgx0.mp4 10 131 | /video_path/oakADmlMc1c.mp4 40 132 | /video_path/pk9ZB9jovGQ.mp4 40 133 | /video_path/UEVVUpz30RQ.mp4 32 134 | /video_path/v-u3UcnxLJY.mp4 32 135 | /video_path/Nyqr7_JmBok.mp4 41 136 | /video_path/OOALW5_5AOw.mp4 41 137 | /video_path/tbdGw97gVMA.mp4 42 138 | /video_path/uIvdELL9its.mp4 42 139 | /video_path/qeZDy8O_cn4.mp4 28 140 | /video_path/R1usywaxSdU.mp4 28 141 | /video_path/RJQ5Q5jQZmg.mp4 28 142 | /video_path/UpY_lyC2DKg.mp4 24 143 | /video_path/V44OI-FjBCk.mp4 24 144 | /video_path/Vbz3eG9WmEE.mp4 24 145 | /video_path/te0qNl30VdM.mp4 29 146 | /video_path/uT9vOC6lm_w.mp4 29 147 | /video_path/WZgh0hgEJxE.mp4 29 148 | /video_path/rPTLcEBI5Fc.mp4 6 149 | /video_path/ShRI1L0Q0gw.mp4 6 150 | /video_path/SjrIit0fYgo.mp4 6 151 | /video_path/s_20-g15v54.mp4 6 152 | /video_path/T4NWm7mqbHI.mp4 6 153 | /video_path/UH1yTqt1sK8.mp4 6 154 | /video_path/StTuvR_l-OY.mp4 49 155 | /video_path/rOH2qF3EtKA.mp4 33 156 | /video_path/sr9KfphbgQE.mp4 33 157 | /video_path/rh02673jFEI.mp4 30 158 | /video_path/S4jQzg8GrXY.mp4 30 159 | /video_path/uRmLT6KXMas.mp4 30 160 | /video_path/udxHIUUzrRk.mp4 46 161 | /video_path/PxB8kSbydPc.mp4 43 162 | /video_path/p85kCsduF8M.mp4 36 163 | /video_path/pae-MY3-1xw.mp4 36 164 | /video_path/Tcqb74Vz7B8.mp4 18 165 | /video_path/u59Zly1rr1Y.mp4 18 166 | /video_path/v6-3Fw1t4H8.mp4 18 167 | /video_path/vhVQk4GeMrI.mp4 18 168 | /video_path/kF3_Y3LOM0o.mp4 47 169 | /video_path/KQNaB37x8-A.mp4 35 170 | /video_path/LstlIyTlT3k.mp4 35 171 | /video_path/kGlSXbnNYvI.mp4 44 172 | /video_path/zls5pP7OgOM.mp4 48 173 | /video_path/RFFBfBdScxg.mp4 45 174 | /video_path/Qs6P8vv0R_c.mp4 50 175 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NurViD: A Large Expert-Level Video Database for Nursing Procedure Activity Understanding 2 | [Ming Hu](https://minghu0830.github.io/), [Lin Wang](https://github.com/wangsssky), [Siyuan Yan](https://siyuanyan1.github.io/), [Don Ma](), [Qingli Ren](), [Peng Xia](https://peng-xia.site/), [Wei Feng](https://fengweie.github.io/), [Peibo Duan](https://scholar.google.com/citations?user=wdIMVqsAAAAJ&hl=zh-CN), [Lie Ju](https://mmai.group/peoples/julie/), [Zongyuan Ge](https://zongyuange.github.io/). 3 | 4 | 5 | 6 | ## :sparkles: Introduction 7 | NurViD is a large video dataset with expert-level annotation for nursing procedure activity understanding. NurViD consists of over 1.5k videos totaling 144 hours. Notably, it encompasses 51 distinct nursing procedures and 177 action steps. 8 | 9 | ![demo](./localization.png) 10 | 11 | ## :partying_face: News 12 | * **[2023.09.22]** NurViD was accepted at NeurIPS 2023 Track Datasets and Benchmarks! 13 | 14 | ## :cowboy_hat_face:Installation 15 | 16 | This package has the following requirements: 17 | * `GCC >= 4.9` 18 | * `python >= 3.8` 19 | * `PyTorch >= 1.8` 20 | * `Denseflow` 21 | * `MMAction2` 22 | * `PySlowFast` 23 | ### 1.Create a virtual environment 24 | ``` 25 | conda create --name nurvid python=3.9 -y 26 | conda activate nurvid 27 | pip install -r requirements.txt 28 | ``` 29 | ### 2.MMAction2、PySlowFast、Denseflow 30 | Please refer to the official websites of [MMAction2](https://github.com/open-mmlab/mmaction2), [PySlowFast](https://github.com/facebookresearch/SlowFast), [Denseflow](https://github.com/yjxiong/dense_flow)(Optional: A GPU-accelerated library designed for efficient extraction of optical flow features) for detailed instructions. 31 | 32 | ## :hand_over_mouth: Directory Structure 33 | In the context of the whole project, the folder structure will look like: 34 | 35 | ``` 36 | NurViD-benchmark 37 | ├── annotations 38 | │ ├── task1&3 39 | │ │ ├── train.csv 40 | │ │ ├── val.csv 41 | │ │ ├── test.csv.csv 42 | │ ├── task2 43 | │ │ ├── procedure_train.csv 44 | │ │ ├── procedure_val.csv 45 | │ │ ├── procedure_testcsv 46 | │ │ ├── action_train.csv 47 | │ │ ├── action_val.csv 48 | │ │ ├── action_test.csv 49 | │ ├── NurViD_annotations.json 50 | │ ├── Procedure&Action_ID.xlsx 51 | ├── feature_extraction 52 | │ ├── feature 53 | │ │ ├── --Ly-qjodoIs.npz 54 | │ │ ├── -0z1P7sw2qs.npz 55 | │ │ ├── .. 56 | │ ├── build_rawframes.py 57 | │ ├── extract_features.py 58 | │ ├── .. 59 | ├── tools 60 | │ ├── downloader.py 61 | │ ├── preprocess_videos.py 62 | │ ├── clip.py 63 | ├── model (Baseline models.) 64 | │ ├── SlowFast 65 | │ ├── C3D 66 | │ ├── I3D 67 | ├── dataset 68 | │ ├── Original_videos 69 | │ │ ├── --Ly-qjodoI.mp4 70 | │ │ ├── -0z1P7sw2qs.mp4 71 | │ │ ├── .. 72 | │ ├── Preprocessed videos 73 | │ │ ├── --Ly-qjodoI.mp4 74 | │ │ ├── -0z1P7sw2qs.mp4 75 | │ │ ├── .. 76 | │ ├── Segments 77 | │ │ ├── --Ly-qjodoI_1.mp4 78 | │ │ ├── --Ly-qjodoI_2.mp4 79 | │ │ ├── --Ly-qjodoI_3.mp4 80 | │ │ ├── .. 81 | ``` 82 | 83 | ## :sunglasses: Dataset Preparation 84 | 85 | ### 1.Download Videos 86 | Download videos automatically from the source YouTube by running the script below: 87 | ``` 88 | python /tools/downloader.py 89 | ``` 90 | ### 2.Preprocess Videos 91 | By running the script below, the video will be resized to the short edge size of 256 and a frame rate of 25 FPS: 92 | ``` 93 | python /tools/preprocess_videos.py 94 | ``` 95 | ### 3.Create Trimmed Segments 96 | We clip the video into segments according to the order specified in the JSON annotation file and add a sequential number as a label. 97 | ``` 98 | python /tools/clip.py 99 | ``` 100 | ### 4.Extract RGB and Flow Features 101 | We start by extracting frames from each video at 25 frames per second and optical flow using the TV-L1 algorithm.: 102 | ``` 103 | python /feature_extraction/build_rawframes.py /video_path /rgb&flow_frmaes_save_path --level 1 --flow-type tvl1 --ext mp4 --task both 104 | ``` 105 | Next, we utilize a pre-trained I3D model on the ImageNet dataset to generate features for each RGB and optical flow frame: 106 | ``` 107 | python /feature_extraction/extract_features.py --mode rgb --load_model models/rgb_imagenet.pt --input_dir /rgb&flow_frmaes_save_path --output_dir /rgb_feature_save_path --batch_size 100 --sample_mode resize --no-usezip 108 | python /feature_extraction/extract_features.py --mode flow --load_model models/flow_imagenet.pt --input_dir /rgb&flow_frmaes_save_path --output_dir /rgb_feature_save_path --batch_size 100 --sample_mode resize --no-usezip 109 | ``` 110 | To handle varying video durations, we perform uniform interpolation to generate 100 fixed-length features for each video. Lastly, we combine the RGB and optical flow features into a 2048-dimensional embedding as the model input. 111 | 112 | ### 5.Our Source 113 | We also provide a method to directly access our data, but it requires you to sign the [data agreement form](https://form.jotform.com/232158342596158). Once you have completed the form, you will receive an email from our team with Google Drive and Baidu Netdisk download links. 114 | 115 | ## :teddy_bear: Acknowledgement 116 | 117 | Part of our code is borrowed from the following repositories: 118 | 119 | - [yt-dlp](https://github.com/yt-dlp/yt-dlp) 120 | - [MMAction2](https://github.com/open-mmlab/mmaction2) 121 | - [I3D Feature Extraction](https://github.com/Finspire13/pytorch-i3d-feature-extraction) 122 | - [PySlowFast](https://github.com/facebookresearch/SlowFast/tree/main) 123 | 124 | ## :partying_face: Citation 125 | If you find this work useful, please cite: 126 | ```bibtex 127 | @inproceedings{ming2023nurvid, 128 | title={NurViD: A Large Expert-Level Video Database for Nursing Procedure Activity Understanding}, 129 | author={Ming, Hu and Lin, Wang and Siyuan, Yan and Don, Ma and Qingli, Ren and Peng, Xia and Wei, Feng and Peibo, Duan and Lie, Ju and Zongyuan, Ge}, 130 | booktitle={Thirty-seventh Conference on Neural Information Processing Systems Datasets and Benchmarks Track}, 131 | year={2023} 132 | } 133 | ``` 134 | 135 | ## :white_check_mark: License and Disclaimer 136 | The CC-BY-4.0 license and disclaimer statement for the project can be found in the following file description: 137 | ``` 138 | CC BY 4.0 139 | Disclaimer.txt 140 | ``` 141 | 142 | ## :hospital: Contributors 143 | This research was supported by a team from Shanxi Medical University. We are grateful for their dedication in the data annotation process. 144 | | Name | Name | Name | 145 | | ------------ | ----------- | ----------- | 146 | | Qingli Ren | Peizhe Zhang| Hao Guo | 147 | | Yidi Liu | Yaokai Xing | Jiaqi Li | 148 | | Rujie Gao | Zhen Lv | Jun Wang | 149 | | Jiayu Tian | Guangyan Niu| Ruixin Wang | 150 | | Huikang Huang| Yuxin Zhao | Jing Li | 151 | | Yijin Wang | Yajing Hao | Wenxua Wu | 152 | | Ziyi Wang | Xu Guo | Yuhua Cai | 153 | | Xinrong Guo | Xueying Ma | Yingjuan Zhang | 154 | | Yuqi Zhang | Liru Ma | Sinan Li | 155 | -------------------------------------------------------------------------------- /annotations/task1&3/test.csv: -------------------------------------------------------------------------------- 1 | path-label 2 | /video_path/wMbegc0txx4.mp4 3 3 | /video_path/xdi9mCRZnY4.mp4 3 4 | /video_path/xsqaL7c22q8.mp4 3 5 | /video_path/xwJOXomT1jk.mp4 3 6 | /video_path/Y3qj40IrPvo.mp4 3 7 | /video_path/yNAPdZ-SiOU.mp4 3 8 | /video_path/YO3r9NRdEkY.mp4 3 9 | /video_path/YTEniEh6uS0.mp4 3 10 | /video_path/zevN6AlhH_s.mp4 3 11 | /video_path/znJWfiogjtQ.mp4 3 12 | /video_path/zQVt-1gUALU.mp4 3 13 | /video_path/_f46uY1hvC0.mp4 3 14 | /video_path/V2NApvhoWh4.mp4 37 15 | /video_path/XaLHd7nx330.mp4 37 16 | /video_path/XcU6g_ppWRI.mp4 37 17 | /video_path/UWSPIHGiuFs.mp4 25 18 | /video_path/WgdSkUtD_fs.mp4 25 19 | /video_path/Zc8Ulx0n7XQ.mp4 25 20 | /video_path/zKSxuFD9Jpc.mp4 25 21 | /video_path/_Bj0FbjFFJY.mp4 25 22 | /video_path/_HbecwTgugc.mp4 25 23 | /video_path/T0xtOAmKhdA.mp4 7 24 | /video_path/UwgAmmI6rQw.mp4 7 25 | /video_path/vR0_BaXYcE4.mp4 7 26 | /video_path/vxnveaa9GYI.mp4 7 27 | /video_path/WbUFFhsEhZM.mp4 7 28 | /video_path/XeMwoMk8wSw.mp4 7 29 | /video_path/xOhTNHHWcMc.mp4 7 30 | /video_path/y9JAopB6OqQ.mp4 7 31 | /video_path/Yl7vFm9sZYA.mp4 7 32 | /video_path/zKV5zMRHOig.mp4 7 33 | /video_path/zR2yqPfw7UM.mp4 7 34 | /video_path/_nD1eYhp9NQ.mp4 7 35 | /video_path/NmoERV9EmG0.mp4 31 36 | /video_path/Ov-BBUhKdJU.mp4 31 37 | /video_path/Qa7I1xf6eKE.mp4 31 38 | /video_path/rIdTJv_wT0g.mp4 31 39 | /video_path/tC21KpcPe2U.mp4 2 40 | /video_path/TnX6dlE09bM.mp4 2 41 | /video_path/VbdI4kIAEVU.mp4 2 42 | /video_path/wji8Y3zdbU8.mp4 2 43 | /video_path/xKQgB6ODAeY.mp4 2 44 | /video_path/y8zFfIZcaWs.mp4 2 45 | /video_path/ycQs27YVE60.mp4 2 46 | /video_path/YIo0ULHsvYY.mp4 2 47 | /video_path/ym3gp7IwmUo.mp4 2 48 | /video_path/YPFpKPqMhS8.mp4 2 49 | /video_path/zAV6Nl2sKws.mp4 2 50 | /video_path/ZFDQ2VMMXZY.mp4 2 51 | /video_path/zJi8m4buMrw.mp4 2 52 | /video_path/zNCR5WPhxOA.mp4 2 53 | /video_path/vnmL_X6csSA.mp4 19 54 | /video_path/WxOAbjhYZck.mp4 19 55 | /video_path/xtPonlDtQlk.mp4 19 56 | /video_path/xvo_4RpdNJU.mp4 19 57 | /video_path/YywoU3jetMU.mp4 19 58 | /video_path/Zw0jo3SePtA.mp4 19 59 | /video_path/_K4phsNsy5U.mp4 19 60 | /video_path/SxpnXcfInUE.mp4 1 61 | /video_path/TXDXwlptGXs.mp4 1 62 | /video_path/uFyuiJEd60w.mp4 1 63 | /video_path/UgQHjFZvR0M.mp4 1 64 | /video_path/uLabZemWGMk.mp4 1 65 | /video_path/UU2Zy6Q6eDg.mp4 1 66 | /video_path/UxJEYN7MB2M.mp4 1 67 | /video_path/W0vr0rQ7r7Y.mp4 1 68 | /video_path/w1XCWyF6m48.mp4 1 69 | /video_path/WpZqLbWL0c0.mp4 1 70 | /video_path/wXJRBD_7Xvo.mp4 1 71 | /video_path/xLIFT9xoWSQ.mp4 1 72 | /video_path/yA3AD9jU7QU.mp4 1 73 | /video_path/YZyCgRF6JrE.mp4 1 74 | /video_path/ZBsKr3PMp4E.mp4 1 75 | /video_path/zmao_p5nPMs.mp4 1 76 | /video_path/wuc_OBcehjo.mp4 4 77 | /video_path/WXapdvfTgas.mp4 4 78 | /video_path/x9Nd6OZV-Yk.mp4 4 79 | /video_path/Xkix8uweNsc.mp4 4 80 | /video_path/Y85VZlSCJCo.mp4 4 81 | /video_path/YAr31WmHbVU.mp4 4 82 | /video_path/yDUoc9gHb9c.mp4 4 83 | /video_path/ymIyKGqwwpA.mp4 4 84 | /video_path/ynYZyE9GFfs.mp4 4 85 | /video_path/YqewLkWns_o.mp4 4 86 | /video_path/Z3y2cZVJJus.mp4 4 87 | /video_path/zWyQW8YIIf8.mp4 4 88 | /video_path/SsLsuDtaDmE.mp4 11 89 | /video_path/vQ5UuZsZ70w.mp4 11 90 | /video_path/v_4amQy8u5c.mp4 11 91 | /video_path/w6UsbBX2goQ.mp4 11 92 | /video_path/wOzCkcGbcAw.mp4 11 93 | /video_path/Y5HOvK_4pGk.mp4 11 94 | /video_path/zR6hzzDAflI.mp4 11 95 | /video_path/ZtmLdYTVszA.mp4 11 96 | /video_path/_yxBZ4qJNe8.mp4 11 97 | /video_path/tngxTE8Oayg.mp4 20 98 | /video_path/TVXRY2FVOEM.mp4 20 99 | /video_path/uY3DU3N15kc.mp4 20 100 | /video_path/wKCPiSnYqwA.mp4 20 101 | /video_path/XsoVSDpD_7o.mp4 20 102 | /video_path/YQIK9BRt6HI.mp4 20 103 | /video_path/wygzSdI0L1Q.mp4 8 104 | /video_path/wyWf2uYOKYU.mp4 8 105 | /video_path/XTCtlupUbCA.mp4 8 106 | /video_path/YdiF7c9a19o.mp4 8 107 | /video_path/YmOrsKpn3FM.mp4 8 108 | /video_path/YNfawBvbtcE.mp4 8 109 | /video_path/y_qoXSYt11I.mp4 8 110 | /video_path/zJjbOZUIIPQ.mp4 8 111 | /video_path/ZL46IjBH7L0.mp4 8 112 | /video_path/zNQqchIJe0o.mp4 8 113 | /video_path/Zxn9X6XXOnU.mp4 8 114 | /video_path/ZxRlWfvn6Dk.mp4 8 115 | /video_path/SuxxtZjVLCk.mp4 13 116 | /video_path/Syp8hZuLLb4.mp4 13 117 | /video_path/tbheA9rm-vY.mp4 13 118 | /video_path/tdfOnsNkWE4.mp4 13 119 | /video_path/TPEWDNC5tLw.mp4 13 120 | /video_path/uEYMYd8xA8Q.mp4 13 121 | /video_path/uOGLQsEWeIY.mp4 13 122 | /video_path/uxghTmNb0pU.mp4 13 123 | /video_path/V8pJulMlBmk.mp4 13 124 | /video_path/rLs-Ta6h6zU.mp4 23 125 | /video_path/sFsibuhZ3oM.mp4 23 126 | /video_path/vAhCS89Wznc.mp4 23 127 | /video_path/w1A20nBbG3s.mp4 23 128 | /video_path/yKu33AsV4z0.mp4 23 129 | /video_path/zlmHuO5TBDY.mp4 23 130 | /video_path/Vij41V3rMEc.mp4 15 131 | /video_path/vvD-fKq8IyM.mp4 15 132 | /video_path/wZeXFV4V318.mp4 15 133 | /video_path/xhOLC-JvJ68.mp4 15 134 | /video_path/y4_y-QqnV14.mp4 15 135 | /video_path/ysGgGuL7B8s.mp4 15 136 | /video_path/_6DU0pPzzoY.mp4 15 137 | /video_path/_KzjEAGue1U.mp4 15 138 | /video_path/UcHqSfrekBs.mp4 38 139 | /video_path/WSjN5gPJ-UU.mp4 38 140 | /video_path/yUul5smwack.mp4 38 141 | /video_path/SbYke2NHhRs.mp4 39 142 | /video_path/UNEv7OurotE.mp4 39 143 | /video_path/vX3CJKueq18.mp4 39 144 | /video_path/Peyw-eKZJOI.mp4 26 145 | /video_path/q6Bsqqo0hNE.mp4 26 146 | /video_path/T3COi_qVfMU.mp4 26 147 | /video_path/thb7LGhu-uk.mp4 26 148 | /video_path/ZmxXsM_Gz3w.mp4 26 149 | /video_path/zXmO5_tiuM0.mp4 26 150 | /video_path/QQIRLu-XoIE.mp4 34 151 | /video_path/rE2VFknFfwQ.mp4 34 152 | /video_path/T6ZDBpVSg3U.mp4 34 153 | /video_path/UcNH7ub6iOQ.mp4 34 154 | /video_path/TH1IVwZmAEE.mp4 22 155 | /video_path/vKmGbEkDcfg.mp4 22 156 | /video_path/VVkhY8mUPaY.mp4 22 157 | /video_path/Yq-FTeXZkvM.mp4 22 158 | /video_path/_bu8Bb7XV5U.mp4 22 159 | /video_path/_htrPTOvX-s.mp4 22 160 | /video_path/VFSHUlQEE80.mp4 9 161 | /video_path/VILzeB68orc.mp4 9 162 | /video_path/WneRaj75II4.mp4 9 163 | /video_path/WO8qxFxtB1U.mp4 9 164 | /video_path/x65KrFFQPpw.mp4 9 165 | /video_path/xAfKZrAYORg.mp4 9 166 | /video_path/y63nHZQZucA.mp4 9 167 | /video_path/Y64hvw0kZig.mp4 9 168 | /video_path/ZabDAaRV0Y8.mp4 9 169 | /video_path/ZL_HGe8TsBY.mp4 9 170 | /video_path/_Zj47bS5auo.mp4 9 171 | /video_path/S8H95BfLg-4.mp4 17 172 | /video_path/Si6yUaMM2c8.mp4 17 173 | /video_path/VaUTYwC5how.mp4 17 174 | /video_path/W63vrbX-mLg.mp4 17 175 | /video_path/WPgcEBhbtsg.mp4 17 176 | /video_path/yfazGm58-MI.mp4 17 177 | /video_path/yqxRWefytyY.mp4 17 178 | /video_path/zqDAotkTwrs.mp4 17 179 | /video_path/szVxktVaiYk.mp4 14 180 | /video_path/weW6D4jz0Zg.mp4 14 181 | /video_path/winSCwuAu0c.mp4 14 182 | /video_path/WMMv2nR5Qeg.mp4 14 183 | /video_path/xfPdbz3qPT0.mp4 14 184 | /video_path/xQaO94_p6pc.mp4 14 185 | /video_path/ZNji1mnSB8g.mp4 14 186 | /video_path/zyr1F12AuAY.mp4 14 187 | /video_path/_EctlaeJjuo.mp4 14 188 | /video_path/T8MNDHUhK_Y.mp4 12 189 | /video_path/u7us_YSKRDA.mp4 12 190 | /video_path/UajIZXrSUq8.mp4 12 191 | /video_path/ULXVP5b22yw.mp4 12 192 | /video_path/UTAyLrpNkaE.mp4 12 193 | /video_path/wpG4la-iUJ8.mp4 12 194 | /video_path/xnb7MbXEcDM.mp4 12 195 | /video_path/ZONwGb7YGrk.mp4 12 196 | /video_path/_dwL-FO2NLk.mp4 12 197 | /video_path/xG_BYaIugPg.mp4 16 198 | /video_path/xjqXZhbaWIs.mp4 16 199 | /video_path/Xmmw9g4eNqs.mp4 16 200 | /video_path/yAyOVxAwm78.mp4 16 201 | /video_path/yuvRc1aBc_w.mp4 16 202 | /video_path/z5PZXA1zqA4.mp4 16 203 | /video_path/zz7x23rrwl8.mp4 16 204 | /video_path/_AL1EoJWM5s.mp4 16 205 | /video_path/QOv1rGr2-0g.mp4 27 206 | /video_path/TPXi_WEWM_U.mp4 27 207 | /video_path/udqv-3og9_k.mp4 27 208 | /video_path/x41zyB73ZHI.mp4 27 209 | /video_path/XUuTSVgAAFc.mp4 27 210 | /video_path/YTv0BlQp36A.mp4 27 211 | /video_path/uP0G9G8Wfp0.mp4 5 212 | /video_path/uuuXnAr_7iY.mp4 5 213 | /video_path/UvdoHPneyRE.mp4 5 214 | /video_path/vTOUir5_V_0.mp4 5 215 | /video_path/WKIHPbVVmuo.mp4 5 216 | /video_path/WtboYBheeco.mp4 5 217 | /video_path/XRSI-Yu4NEM.mp4 5 218 | /video_path/YLMPAtkg-Kk.mp4 5 219 | /video_path/yltZSEcAylA.mp4 5 220 | /video_path/YU832gzgifo.mp4 5 221 | /video_path/Zfl741QO3Ag.mp4 5 222 | /video_path/_S8JfTbZbdk.mp4 5 223 | /video_path/VpsDihMedU8.mp4 21 224 | /video_path/w0m4jqyWTN8.mp4 21 225 | /video_path/w1cUrdYOdRg.mp4 21 226 | /video_path/WoJ8EGzwj_g.mp4 21 227 | /video_path/zRucPU7bGsA.mp4 21 228 | /video_path/__Oe9dJ3ZZ0.mp4 21 229 | /video_path/Uqa30vUUw0g.mp4 10 230 | /video_path/utV0ejirsTI.mp4 10 231 | /video_path/vIAgrwEm2Lk.mp4 10 232 | /video_path/Vvr2T-wSIdk.mp4 10 233 | /video_path/wDuyrjczdbg.mp4 10 234 | /video_path/xs-ndwYLFRw.mp4 10 235 | /video_path/yg9uopmNeUU.mp4 10 236 | /video_path/YWN1PpNUIfM.mp4 10 237 | /video_path/yzSB1yKD6JM.mp4 10 238 | /video_path/zFUtNpxVwH4.mp4 10 239 | /video_path/pqrT_abh-EM.mp4 40 240 | /video_path/P_EK5c4T-nU.mp4 40 241 | /video_path/vBQaeq2vLsw.mp4 32 242 | /video_path/w8QIDk8KQ4I.mp4 32 243 | /video_path/wCxr-cL03ys.mp4 32 244 | /video_path/yWg58bqVvms.mp4 32 245 | /video_path/USK-41GxCRc.mp4 41 246 | /video_path/vdbghI49kzk.mp4 41 247 | /video_path/X9Qfzn5vgHs.mp4 42 248 | /video_path/zLY1WkaXzP0.mp4 42 249 | /video_path/t3lXPKgBm8k.mp4 28 250 | /video_path/ty0unGK71Hw.mp4 28 251 | /video_path/v00xAgLkB-k.mp4 28 252 | /video_path/wsxhWqjGfns.mp4 28 253 | /video_path/xEfAF4M8sis.mp4 28 254 | /video_path/_Zocs3SxShk.mp4 28 255 | /video_path/XjXm-ELojYI.mp4 24 256 | /video_path/yTexe1HgJtU.mp4 24 257 | /video_path/z1SJTeRYKUg.mp4 24 258 | /video_path/Z5Lx--xlj28.mp4 24 259 | /video_path/ZVRp-8w3qhI.mp4 24 260 | /video_path/_rTq99Y8T_w.mp4 24 261 | /video_path/xFXDhDkBDbw.mp4 29 262 | /video_path/yhmWLvrz61k.mp4 29 263 | /video_path/yQfNBx-NP9o.mp4 29 264 | /video_path/z84NmFZYbpU.mp4 29 265 | /video_path/zE3TnNspVWg.mp4 29 266 | /video_path/Vg7Mwy5RK-g.mp4 6 267 | /video_path/VikRTpwgyeo.mp4 6 268 | /video_path/wohEnR5zve0.mp4 6 269 | /video_path/wXjQHAxopzk.mp4 6 270 | /video_path/xEEw2wR-Mck.mp4 6 271 | /video_path/XhgN5clDnXw.mp4 6 272 | /video_path/XnGIUJWMCno.mp4 6 273 | /video_path/XoGpnJ2_t2A.mp4 6 274 | /video_path/YAeQAF-WzZc.mp4 6 275 | /video_path/YwOQinOq9pg.mp4 6 276 | /video_path/YZNM6cMMY1E.mp4 6 277 | /video_path/Zu81phMB9rk.mp4 6 278 | /video_path/_0z11rWXLrg.mp4 49 279 | /video_path/U0EgpdFjQCI.mp4 33 280 | /video_path/VPGLhcM7r94.mp4 33 281 | /video_path/wN3Bmhhohjk.mp4 33 282 | /video_path/YeXollGBQ8Y.mp4 33 283 | /video_path/XztBUNsMQ2c.mp4 30 284 | /video_path/YRrJqyh7OfQ.mp4 30 285 | /video_path/yYgIkj2ebP8.mp4 30 286 | /video_path/_1507-Lo6Eg.mp4 30 287 | /video_path/_bXiwiVKfGs.mp4 30 288 | /video_path/umcmHk789Ag.mp4 46 289 | /video_path/SCF6bmk8KWc.mp4 43 290 | /video_path/Z6Sr3Rk1k-8.mp4 43 291 | /video_path/v6zAy9krPjM.mp4 36 292 | /video_path/wP1_CqcEV5Y.mp4 36 293 | /video_path/ZeWGuUbdnTU.mp4 36 294 | /video_path/_7MBer1SeCM.mp4 36 295 | /video_path/x4vRQ_jSJJ0.mp4 18 296 | /video_path/xofnnPS2KyY.mp4 18 297 | /video_path/Y-r9hjRY1DM.mp4 18 298 | /video_path/Z8rkp1cEyTE.mp4 18 299 | /video_path/zqZ1n_xSJfE.mp4 18 300 | /video_path/zSU8dvbdKnU.mp4 18 301 | /video_path/_c4dKyR3enc.mp4 18 302 | /video_path/p0l9ONq9Rsk.mp4 47 303 | /video_path/n6gD9nl5_vk.mp4 35 304 | /video_path/Pp96EhX__kE.mp4 35 305 | /video_path/QANmjYtiA0Q.mp4 35 306 | /video_path/V2p6Kr-ru1M.mp4 35 307 | /video_path/qfSFx93S5cY.mp4 44 308 | /video_path/U52oraqTGWU.mp4 44 309 | /video_path/zp4adGsyopE.mp4 48 310 | /video_path/To-KPRqE0_w.mp4 45 311 | /video_path/uRlAUI2l3dA.mp4 45 312 | /video_path/SX_bbPvbKMM.mp4 50 313 | -------------------------------------------------------------------------------- /feature_extraction/build_rawframes.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import argparse 3 | import glob 4 | import os 5 | import os.path as osp 6 | import sys 7 | import warnings 8 | from multiprocessing import Lock, Pool 9 | 10 | import mmcv 11 | import numpy as np 12 | 13 | 14 | def extract_frame(vid_item): 15 | """Generate optical flow using dense flow. 16 | 17 | Args: 18 | vid_item (list): Video item containing video full path, 19 | video (short) path, video id. 20 | 21 | Returns: 22 | bool: Whether generate optical flow successfully. 23 | """ 24 | full_path, vid_path, vid_id, method, task, report_file = vid_item 25 | if '/' in vid_path: 26 | act_name = osp.basename(osp.dirname(vid_path)) 27 | out_full_path = osp.join(args.out_dir, act_name) 28 | else: 29 | out_full_path = args.out_dir 30 | 31 | run_success = -1 32 | 33 | if task == 'rgb': 34 | if args.use_opencv: 35 | # Not like using denseflow, 36 | # Use OpenCV will not make a sub directory with the video name 37 | try: 38 | video_name = osp.splitext(osp.basename(vid_path))[0] 39 | out_full_path = osp.join(out_full_path, video_name) 40 | 41 | vr = mmcv.VideoReader(full_path) 42 | for i, vr_frame in enumerate(vr): 43 | if vr_frame is not None: 44 | w, h, _ = np.shape(vr_frame) 45 | if args.new_short == 0: 46 | if args.new_width == 0 or args.new_height == 0: 47 | # Keep original shape 48 | out_img = vr_frame 49 | else: 50 | out_img = mmcv.imresize( 51 | vr_frame, 52 | (args.new_width, args.new_height)) 53 | else: 54 | if min(h, w) == h: 55 | new_h = args.new_short 56 | new_w = int((new_h / h) * w) 57 | else: 58 | new_w = args.new_short 59 | new_h = int((new_w / w) * h) 60 | out_img = mmcv.imresize(vr_frame, (new_h, new_w)) 61 | mmcv.imwrite(out_img, 62 | f'{out_full_path}/img_{i + 1:05d}.jpg') 63 | else: 64 | warnings.warn( 65 | 'Length inconsistent!' 66 | f'Early stop with {i + 1} out of {len(vr)} frames.' 67 | ) 68 | break 69 | run_success = 0 70 | except Exception: 71 | run_success = -1 72 | else: 73 | if args.new_short == 0: 74 | cmd = osp.join( 75 | f"denseflow '{full_path}' -b=20 -s=0 -o='{out_full_path}'" 76 | f' -nw={args.new_width} -nh={args.new_height} -v') 77 | else: 78 | cmd = osp.join( 79 | f"denseflow '{full_path}' -b=20 -s=0 -o='{out_full_path}'" 80 | f' -ns={args.new_short} -v') 81 | run_success = os.system(cmd) 82 | elif task == 'flow': 83 | if args.input_frames: 84 | if args.new_short == 0: 85 | cmd = osp.join( 86 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 87 | f' -nw={args.new_width} --nh={args.new_height} -v --if') 88 | else: 89 | cmd = osp.join( 90 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 91 | f' -ns={args.new_short} -v --if') 92 | else: 93 | if args.new_short == 0: 94 | cmd = osp.join( 95 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 96 | f' -nw={args.new_width} --nh={args.new_height} -v') 97 | else: 98 | cmd = osp.join( 99 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 100 | f' -ns={args.new_short} -v') 101 | run_success = os.system(cmd) 102 | else: 103 | if args.new_short == 0: 104 | cmd_rgb = osp.join( 105 | f"denseflow '{full_path}' -b=20 -s=0 -o='{out_full_path}'" 106 | f' -nw={args.new_width} -nh={args.new_height} -v') 107 | cmd_flow = osp.join( 108 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 109 | f' -nw={args.new_width} -nh={args.new_height} -v') 110 | else: 111 | cmd_rgb = osp.join( 112 | f"denseflow '{full_path}' -b=20 -s=0 -o='{out_full_path}'" 113 | f' -ns={args.new_short} -v') 114 | cmd_flow = osp.join( 115 | f"denseflow '{full_path}' -a={method} -b=20 -s=1 -o='{out_full_path}'" # noqa: E501 116 | f' -ns={args.new_short} -v') 117 | run_success_rgb = os.system(cmd_rgb) 118 | run_success_flow = os.system(cmd_flow) 119 | if run_success_flow == 0 and run_success_rgb == 0: 120 | run_success = 0 121 | 122 | if run_success == 0: 123 | print(f'{task} {vid_id} {vid_path} {method} done') 124 | sys.stdout.flush() 125 | 126 | lock.acquire() 127 | with open(report_file, 'a') as f: 128 | line = full_path + '\n' 129 | f.write(line) 130 | lock.release() 131 | else: 132 | print(f'{task} {vid_id} {vid_path} {method} got something wrong') 133 | sys.stdout.flush() 134 | 135 | return True 136 | 137 | 138 | def parse_args(): 139 | parser = argparse.ArgumentParser(description='extract optical flows') 140 | parser.add_argument('src_dir', type=str, help='source video directory') 141 | parser.add_argument('out_dir', type=str, help='output rawframe directory') 142 | parser.add_argument( 143 | '--task', 144 | type=str, 145 | default='flow', 146 | choices=['rgb', 'flow', 'both'], 147 | help='which type of frames to be extracted') 148 | parser.add_argument( 149 | '--level', 150 | type=int, 151 | choices=[1, 2], 152 | default=2, 153 | help='directory level of data') 154 | parser.add_argument( 155 | '--num-worker', 156 | type=int, 157 | default=8, 158 | help='number of workers to build rawframes') 159 | parser.add_argument( 160 | '--flow-type', 161 | type=str, 162 | default=None, 163 | choices=[None, 'tvl1', 'warp_tvl1', 'farn', 'brox'], 164 | help='flow type to be generated') 165 | parser.add_argument( 166 | '--out-format', 167 | type=str, 168 | default='jpg', 169 | choices=['jpg', 'h5', 'png'], 170 | help='output format') 171 | parser.add_argument( 172 | '--ext', 173 | type=str, 174 | default='avi', 175 | choices=['avi', 'mp4', 'webm'], 176 | help='video file extensions') 177 | parser.add_argument( 178 | '--mixed-ext', 179 | action='store_true', 180 | help='process video files with mixed extensions') 181 | parser.add_argument( 182 | '--new-width', type=int, default=0, help='resize image width') 183 | parser.add_argument( 184 | '--new-height', type=int, default=0, help='resize image height') 185 | parser.add_argument( 186 | '--new-short', 187 | type=int, 188 | default=0, 189 | help='resize image short side length keeping ratio') 190 | parser.add_argument('--num-gpu', type=int, default=8, help='number of GPU') 191 | parser.add_argument( 192 | '--resume', 193 | action='store_true', 194 | default=False, 195 | help='resume optical flow extraction instead of overwriting') 196 | parser.add_argument( 197 | '--use-opencv', 198 | action='store_true', 199 | help='Whether to use opencv to extract rgb frames') 200 | parser.add_argument( 201 | '--input-frames', 202 | action='store_true', 203 | help='Whether to extract flow frames based on rgb frames') 204 | parser.add_argument( 205 | '--report-file', 206 | type=str, 207 | default='build_report.txt', 208 | help='report to record files which have been successfully processed') 209 | args = parser.parse_args() 210 | 211 | return args 212 | 213 | 214 | def init(lock_): 215 | global lock 216 | lock = lock_ 217 | 218 | 219 | if __name__ == '__main__': 220 | args = parse_args() 221 | 222 | if not osp.isdir(args.out_dir): 223 | print(f'Creating folder: {args.out_dir}') 224 | os.makedirs(args.out_dir) 225 | 226 | if args.level == 2: 227 | classes = os.listdir(args.src_dir) 228 | for classname in classes: 229 | new_dir = osp.join(args.out_dir, classname) 230 | if not osp.isdir(new_dir): 231 | print(f'Creating folder: {new_dir}') 232 | os.makedirs(new_dir) 233 | 234 | if args.input_frames: 235 | print('Reading rgb frames from folder: ', args.src_dir) 236 | fullpath_list = glob.glob(args.src_dir + '/*' * args.level) 237 | print('Total number of rgb frame folders found: ', len(fullpath_list)) 238 | else: 239 | print('Reading videos from folder: ', args.src_dir) 240 | if args.mixed_ext: 241 | print('Extension of videos is mixed') 242 | fullpath_list = glob.glob(args.src_dir + '/*' * args.level) 243 | else: 244 | print('Extension of videos: ', args.ext) 245 | fullpath_list = glob.glob(args.src_dir + '/*' * args.level + '.' + 246 | args.ext) 247 | print('Total number of videos found: ', len(fullpath_list)) 248 | 249 | if args.resume: 250 | done_fullpath_list = [] 251 | with open(args.report_file) as f: 252 | for line in f: 253 | if line == '\n': 254 | continue 255 | done_full_path = line.strip().split()[0] 256 | done_fullpath_list.append(done_full_path) 257 | done_fullpath_list = set(done_fullpath_list) 258 | fullpath_list = list(set(fullpath_list).difference(done_fullpath_list)) 259 | 260 | if args.level == 2: 261 | vid_list = list( 262 | map( 263 | lambda p: osp.join( 264 | osp.basename(osp.dirname(p)), osp.basename(p)), 265 | fullpath_list)) 266 | elif args.level == 1: 267 | vid_list = list(map(osp.basename, fullpath_list)) 268 | 269 | lock = Lock() 270 | pool = Pool(args.num_worker, initializer=init, initargs=(lock, )) 271 | pool.map( 272 | extract_frame, 273 | zip(fullpath_list, vid_list, range(len(vid_list)), 274 | len(vid_list) * [args.flow_type], 275 | len(vid_list) * [args.task], 276 | len(vid_list) * [args.report_file])) 277 | pool.close() 278 | pool.join() 279 | -------------------------------------------------------------------------------- /feature_extraction/extract_features.py: -------------------------------------------------------------------------------- 1 | import os 2 | os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" 3 | import sys 4 | import io 5 | import zipfile 6 | import torch 7 | import torch.nn as nn 8 | import torch.nn.functional as F 9 | import torch.optim as optim 10 | from torch.optim import lr_scheduler 11 | from torch.autograd import Variable 12 | import argparse 13 | import torchvision 14 | from PIL import Image 15 | 16 | import numpy as np 17 | 18 | from pytorch_i3d import InceptionI3d 19 | 20 | import pdb 21 | 22 | 23 | def load_frame(frame_file, resize=False): 24 | 25 | data = Image.open(frame_file) 26 | 27 | assert(data.size[1] == 256) 28 | assert(data.size[0] == 340) 29 | 30 | if resize: 31 | data = data.resize((224, 224), Image.ANTIALIAS) 32 | 33 | data = np.array(data) 34 | data = data.astype(float) 35 | data = (data * 2 / 255) - 1 36 | 37 | assert(data.max()<=1.0) 38 | assert(data.min()>=-1.0) 39 | 40 | return data 41 | 42 | 43 | def load_zipframe(zipdata, name, resize=False): 44 | 45 | stream = zipdata.read(name) 46 | data = Image.open(io.BytesIO(stream)) 47 | 48 | assert(data.size[1] == 256) 49 | assert(data.size[0] == 340) 50 | 51 | if resize: 52 | data = data.resize((224, 224), Image.ANTIALIAS) 53 | 54 | data = np.array(data) 55 | data = data.astype(float) 56 | data = (data * 2 / 255) - 1 57 | 58 | assert(data.max()<=1.0) 59 | assert(data.min()>=-1.0) 60 | 61 | return data 62 | 63 | 64 | 65 | 66 | def oversample_data(data): # (39, 16, 224, 224, 2) # Check twice 67 | 68 | data_flip = np.array(data[:,:,:,::-1,:]) 69 | 70 | data_1 = np.array(data[:, :, :224, :224, :]) 71 | data_2 = np.array(data[:, :, :224, -224:, :]) 72 | data_3 = np.array(data[:, :, 16:240, 58:282, :]) # ,:,16:240,58:282,: 73 | data_4 = np.array(data[:, :, -224:, :224, :]) 74 | data_5 = np.array(data[:, :, -224:, -224:, :]) 75 | 76 | data_f_1 = np.array(data_flip[:, :, :224, :224, :]) 77 | data_f_2 = np.array(data_flip[:, :, :224, -224:, :]) 78 | data_f_3 = np.array(data_flip[:, :, 16:240, 58:282, :]) 79 | data_f_4 = np.array(data_flip[:, :, -224:, :224, :]) 80 | data_f_5 = np.array(data_flip[:, :, -224:, -224:, :]) 81 | 82 | return [data_1, data_2, data_3, data_4, data_5, 83 | data_f_1, data_f_2, data_f_3, data_f_4, data_f_5] 84 | 85 | 86 | 87 | 88 | def load_rgb_batch(frames_dir, rgb_files, 89 | frame_indices, resize=False): 90 | 91 | if resize: 92 | batch_data = np.zeros(frame_indices.shape + (224,224,3)) 93 | else: 94 | batch_data = np.zeros(frame_indices.shape + (256,340,3)) 95 | 96 | for i in range(frame_indices.shape[0]): 97 | for j in range(frame_indices.shape[1]): 98 | 99 | batch_data[i,j,:,:,:] = load_frame(os.path.join(frames_dir, 100 | rgb_files[frame_indices[i][j]]), resize) 101 | 102 | return batch_data 103 | 104 | 105 | def load_ziprgb_batch(rgb_zipdata, rgb_files, 106 | frame_indices, resize=False): 107 | 108 | if resize: 109 | batch_data = np.zeros(frame_indices.shape + (224,224,3)) 110 | else: 111 | batch_data = np.zeros(frame_indices.shape + (256,340,3)) 112 | 113 | for i in range(frame_indices.shape[0]): 114 | for j in range(frame_indices.shape[1]): 115 | 116 | batch_data[i,j,:,:,:] = load_zipframe(rgb_zipdata, 117 | rgb_files[frame_indices[i][j]], resize) 118 | 119 | return batch_data 120 | 121 | 122 | def load_flow_batch(frames_dir, flow_x_files, flow_y_files, 123 | frame_indices, resize=False): 124 | 125 | if resize: 126 | batch_data = np.zeros(frame_indices.shape + (224,224,2)) 127 | else: 128 | batch_data = np.zeros(frame_indices.shape + (256,340,2)) 129 | 130 | for i in range(frame_indices.shape[0]): 131 | for j in range(frame_indices.shape[1]): 132 | 133 | batch_data[i,j,:,:,0] = load_frame(os.path.join(frames_dir, 134 | flow_x_files[frame_indices[i][j]]), resize) 135 | 136 | batch_data[i,j,:,:,1] = load_frame(os.path.join(frames_dir, 137 | flow_y_files[frame_indices[i][j]]), resize) 138 | 139 | return batch_data 140 | 141 | 142 | def load_zipflow_batch(flow_x_zipdata, flow_y_zipdata, 143 | flow_x_files, flow_y_files, 144 | frame_indices, resize=False): 145 | 146 | if resize: 147 | batch_data = np.zeros(frame_indices.shape + (224,224,2)) 148 | else: 149 | batch_data = np.zeros(frame_indices.shape + (256,340,2)) 150 | 151 | for i in range(frame_indices.shape[0]): 152 | for j in range(frame_indices.shape[1]): 153 | 154 | batch_data[i,j,:,:,0] = load_zipframe(flow_x_zipdata, 155 | flow_x_files[frame_indices[i][j]], resize) 156 | 157 | batch_data[i,j,:,:,1] = load_zipframe(flow_y_zipdata, 158 | flow_y_files[frame_indices[i][j]], resize) 159 | 160 | return batch_data 161 | 162 | 163 | 164 | def run(mode='rgb', load_model='', sample_mode='oversample', frequency=16, 165 | input_dir='', output_dir='', batch_size=40, usezip=False): 166 | 167 | chunk_size = 16 168 | 169 | assert(mode in ['rgb', 'flow']) 170 | assert(sample_mode in ['oversample', 'center_crop', 'resize']) 171 | 172 | # setup the model 173 | if mode == 'flow': 174 | i3d = InceptionI3d(400, in_channels=2) 175 | else: 176 | i3d = InceptionI3d(400, in_channels=3) 177 | 178 | #i3d.replace_logits(157) 179 | i3d.load_state_dict(torch.load(load_model)) 180 | i3d.cuda() 181 | 182 | i3d.train(False) # Set model to evaluate mode 183 | 184 | def forward_batch(b_data): 185 | b_data = b_data.transpose([0, 4, 1, 2, 3]) 186 | b_data = torch.from_numpy(b_data) # b,c,t,h,w # 40x3x16x224x224 187 | 188 | b_data = Variable(b_data.cuda(), volatile=True).float() 189 | b_features = i3d.extract_features(b_data) 190 | 191 | b_features = b_features.data.cpu().numpy()[:,:,0,0,0] 192 | return b_features 193 | 194 | 195 | video_names = [i for i in os.listdir(input_dir) if i[0] == 'v'] 196 | 197 | for video_name in video_names: 198 | 199 | save_file = '{}-{}.npz'.format(video_name, mode) 200 | if save_file in os.listdir(output_dir): 201 | continue 202 | 203 | frames_dir = os.path.join(input_dir, video_name) 204 | 205 | 206 | if mode == 'rgb': 207 | if usezip: 208 | rgb_zipdata = zipfile.ZipFile(os.path.join(frames_dir, 'img.zip'), 'r') 209 | rgb_files = [i for i in rgb_zipdata.namelist() if i.startswith('img')] 210 | else: 211 | rgb_files = [i for i in os.listdir(frames_dir) if i.startswith('img')] 212 | 213 | rgb_files.sort() 214 | frame_cnt = len(rgb_files) 215 | 216 | else: 217 | if usezip: 218 | flow_x_zipdata = zipfile.ZipFile(os.path.join(frames_dir, 'flow_x.zip'), 'r') 219 | flow_x_files = [i for i in flow_x_zipdata.namelist() if i.startswith('x_')] 220 | 221 | flow_y_zipdata = zipfile.ZipFile(os.path.join(frames_dir, 'flow_y.zip'), 'r') 222 | flow_y_files = [i for i in flow_y_zipdata.namelist() if i.startswith('y_')] 223 | else: 224 | flow_x_files = [i for i in os.listdir(frames_dir) if i.startswith('flow_x')] 225 | flow_y_files = [i for i in os.listdir(frames_dir) if i.startswith('flow_y')] 226 | 227 | flow_x_files.sort() 228 | flow_y_files.sort() 229 | assert(len(flow_y_files) == len(flow_x_files)) 230 | frame_cnt = len(flow_y_files) 231 | 232 | 233 | 234 | # clipped_length = (frame_cnt // chunk_size) * chunk_size # Cut frames 235 | 236 | # Cut frames 237 | assert(frame_cnt > chunk_size) 238 | clipped_length = frame_cnt - chunk_size 239 | clipped_length = (clipped_length // frequency) * frequency # The start of last chunk 240 | 241 | frame_indices = [] # Frames to chunks 242 | for i in range(clipped_length // frequency + 1): 243 | frame_indices.append( 244 | [j for j in range(i * frequency, i * frequency + chunk_size)]) 245 | 246 | frame_indices = np.array(frame_indices) 247 | 248 | #frame_indices = np.reshape(frame_indices, (-1, 16)) # Frames to chunks 249 | chunk_num = frame_indices.shape[0] 250 | 251 | batch_num = int(np.ceil(chunk_num / batch_size)) # Chunks to batches 252 | frame_indices = np.array_split(frame_indices, batch_num, axis=0) 253 | 254 | if sample_mode == 'oversample': 255 | full_features = [[] for i in range(10)] 256 | else: 257 | full_features = [[]] 258 | 259 | for batch_id in range(batch_num): 260 | 261 | require_resize = sample_mode == 'resize' 262 | 263 | if mode == 'rgb': 264 | if usezip: 265 | batch_data = load_ziprgb_batch(rgb_zipdata, rgb_files, 266 | frame_indices[batch_id], require_resize) 267 | else: 268 | batch_data = load_rgb_batch(frames_dir, rgb_files, 269 | frame_indices[batch_id], require_resize) 270 | else: 271 | if usezip: 272 | batch_data = load_zipflow_batch( 273 | flow_x_zipdata, flow_y_zipdata, 274 | flow_x_files, flow_y_files, 275 | frame_indices[batch_id], require_resize) 276 | else: 277 | batch_data = load_flow_batch(frames_dir, 278 | flow_x_files, flow_y_files, 279 | frame_indices[batch_id], require_resize) 280 | 281 | if sample_mode == 'oversample': 282 | batch_data_ten_crop = oversample_data(batch_data) 283 | 284 | for i in range(10): 285 | pdb.set_trace() 286 | assert(batch_data_ten_crop[i].shape[-2]==224) 287 | assert(batch_data_ten_crop[i].shape[-3]==224) 288 | full_features[i].append(forward_batch(batch_data_ten_crop[i])) 289 | 290 | else: 291 | if sample_mode == 'center_crop': 292 | batch_data = batch_data[:,:,16:240,58:282,:] # Centrer Crop (39, 16, 224, 224, 2) 293 | 294 | assert(batch_data.shape[-2]==224) 295 | assert(batch_data.shape[-3]==224) 296 | full_features[0].append(forward_batch(batch_data)) 297 | 298 | 299 | 300 | full_features = [np.concatenate(i, axis=0) for i in full_features] 301 | full_features = [np.expand_dims(i, axis=0) for i in full_features] 302 | full_features = np.concatenate(full_features, axis=0) 303 | 304 | np.savez(os.path.join(output_dir, save_file), 305 | feature=full_features, 306 | frame_cnt=frame_cnt, 307 | video_name=video_name) 308 | 309 | print('{} done: {} / {}, {}'.format( 310 | video_name, frame_cnt, clipped_length, full_features.shape)) 311 | 312 | 313 | 314 | if __name__ == '__main__': 315 | 316 | parser = argparse.ArgumentParser() 317 | parser.add_argument('--mode', type=str) 318 | parser.add_argument('--load_model', type=str) 319 | parser.add_argument('--input_dir', type=str) 320 | parser.add_argument('--output_dir', type=str) 321 | parser.add_argument('--batch_size', type=int, default=40) 322 | parser.add_argument('--sample_mode', type=str) 323 | parser.add_argument('--frequency', type=int, default=16) 324 | 325 | parser.add_argument('--usezip', dest='usezip', action='store_true') 326 | parser.add_argument('--no-usezip', dest='usezip', action='store_false') 327 | parser.set_defaults(usezip=True) 328 | 329 | args = parser.parse_args() 330 | 331 | run(mode=args.mode, 332 | load_model=args.load_model, 333 | sample_mode=args.sample_mode, 334 | input_dir=args.input_dir, 335 | output_dir=args.output_dir, 336 | batch_size=args.batch_size, 337 | frequency=args.frequency, 338 | usezip=args.usezip) 339 | -------------------------------------------------------------------------------- /feature_extraction/pytorch_i3d.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | from torch.autograd import Variable 5 | 6 | import numpy as np 7 | 8 | import os 9 | import sys 10 | from collections import OrderedDict 11 | 12 | 13 | class MaxPool3dSamePadding(nn.MaxPool3d): 14 | 15 | def compute_pad(self, dim, s): 16 | if s % self.stride[dim] == 0: 17 | return max(self.kernel_size[dim] - self.stride[dim], 0) 18 | else: 19 | return max(self.kernel_size[dim] - (s % self.stride[dim]), 0) 20 | 21 | def forward(self, x): 22 | # compute 'same' padding 23 | (batch, channel, t, h, w) = x.size() 24 | #print t,h,w 25 | out_t = np.ceil(float(t) / float(self.stride[0])) 26 | out_h = np.ceil(float(h) / float(self.stride[1])) 27 | out_w = np.ceil(float(w) / float(self.stride[2])) 28 | #print out_t, out_h, out_w 29 | pad_t = self.compute_pad(0, t) 30 | pad_h = self.compute_pad(1, h) 31 | pad_w = self.compute_pad(2, w) 32 | #print pad_t, pad_h, pad_w 33 | 34 | pad_t_f = pad_t // 2 35 | pad_t_b = pad_t - pad_t_f 36 | pad_h_f = pad_h // 2 37 | pad_h_b = pad_h - pad_h_f 38 | pad_w_f = pad_w // 2 39 | pad_w_b = pad_w - pad_w_f 40 | 41 | pad = (pad_w_f, pad_w_b, pad_h_f, pad_h_b, pad_t_f, pad_t_b) 42 | #print x.size() 43 | #print pad 44 | x = F.pad(x, pad) 45 | return super(MaxPool3dSamePadding, self).forward(x) 46 | 47 | 48 | class Unit3D(nn.Module): 49 | 50 | def __init__(self, in_channels, 51 | output_channels, 52 | kernel_shape=(1, 1, 1), 53 | stride=(1, 1, 1), 54 | padding=0, 55 | activation_fn=F.relu, 56 | use_batch_norm=True, 57 | use_bias=False, 58 | name='unit_3d'): 59 | 60 | """Initializes Unit3D module.""" 61 | super(Unit3D, self).__init__() 62 | 63 | self._output_channels = output_channels 64 | self._kernel_shape = kernel_shape 65 | self._stride = stride 66 | self._use_batch_norm = use_batch_norm 67 | self._activation_fn = activation_fn 68 | self._use_bias = use_bias 69 | self.name = name 70 | self.padding = padding 71 | 72 | self.conv3d = nn.Conv3d(in_channels=in_channels, 73 | out_channels=self._output_channels, 74 | kernel_size=self._kernel_shape, 75 | stride=self._stride, 76 | padding=0, # we always want padding to be 0 here. We will dynamically pad based on input size in forward function 77 | bias=self._use_bias) 78 | 79 | if self._use_batch_norm: 80 | self.bn = nn.BatchNorm3d(self._output_channels, eps=0.001, momentum=0.01) 81 | 82 | def compute_pad(self, dim, s): 83 | if s % self._stride[dim] == 0: 84 | return max(self._kernel_shape[dim] - self._stride[dim], 0) 85 | else: 86 | return max(self._kernel_shape[dim] - (s % self._stride[dim]), 0) 87 | 88 | 89 | def forward(self, x): 90 | # compute 'same' padding 91 | (batch, channel, t, h, w) = x.size() 92 | #print t,h,w 93 | out_t = np.ceil(float(t) / float(self._stride[0])) 94 | out_h = np.ceil(float(h) / float(self._stride[1])) 95 | out_w = np.ceil(float(w) / float(self._stride[2])) 96 | #print out_t, out_h, out_w 97 | pad_t = self.compute_pad(0, t) 98 | pad_h = self.compute_pad(1, h) 99 | pad_w = self.compute_pad(2, w) 100 | #print pad_t, pad_h, pad_w 101 | 102 | pad_t_f = pad_t // 2 103 | pad_t_b = pad_t - pad_t_f 104 | pad_h_f = pad_h // 2 105 | pad_h_b = pad_h - pad_h_f 106 | pad_w_f = pad_w // 2 107 | pad_w_b = pad_w - pad_w_f 108 | 109 | pad = (pad_w_f, pad_w_b, pad_h_f, pad_h_b, pad_t_f, pad_t_b) 110 | #print x.size() 111 | #print pad 112 | x = F.pad(x, pad) 113 | #print x.size() 114 | 115 | x = self.conv3d(x) 116 | if self._use_batch_norm: 117 | x = self.bn(x) 118 | if self._activation_fn is not None: 119 | x = self._activation_fn(x) 120 | return x 121 | 122 | 123 | 124 | class InceptionModule(nn.Module): 125 | def __init__(self, in_channels, out_channels, name): 126 | super(InceptionModule, self).__init__() 127 | 128 | self.b0 = Unit3D(in_channels=in_channels, output_channels=out_channels[0], kernel_shape=[1, 1, 1], padding=0, 129 | name=name+'/Branch_0/Conv3d_0a_1x1') 130 | self.b1a = Unit3D(in_channels=in_channels, output_channels=out_channels[1], kernel_shape=[1, 1, 1], padding=0, 131 | name=name+'/Branch_1/Conv3d_0a_1x1') 132 | self.b1b = Unit3D(in_channels=out_channels[1], output_channels=out_channels[2], kernel_shape=[3, 3, 3], 133 | name=name+'/Branch_1/Conv3d_0b_3x3') 134 | self.b2a = Unit3D(in_channels=in_channels, output_channels=out_channels[3], kernel_shape=[1, 1, 1], padding=0, 135 | name=name+'/Branch_2/Conv3d_0a_1x1') 136 | self.b2b = Unit3D(in_channels=out_channels[3], output_channels=out_channels[4], kernel_shape=[3, 3, 3], 137 | name=name+'/Branch_2/Conv3d_0b_3x3') 138 | self.b3a = MaxPool3dSamePadding(kernel_size=[3, 3, 3], 139 | stride=(1, 1, 1), padding=0) 140 | self.b3b = Unit3D(in_channels=in_channels, output_channels=out_channels[5], kernel_shape=[1, 1, 1], padding=0, 141 | name=name+'/Branch_3/Conv3d_0b_1x1') 142 | self.name = name 143 | 144 | def forward(self, x): 145 | b0 = self.b0(x) 146 | b1 = self.b1b(self.b1a(x)) 147 | b2 = self.b2b(self.b2a(x)) 148 | b3 = self.b3b(self.b3a(x)) 149 | return torch.cat([b0,b1,b2,b3], dim=1) 150 | 151 | 152 | class InceptionI3d(nn.Module): 153 | """Inception-v1 I3D architecture. 154 | The model is introduced in: 155 | Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset 156 | Joao Carreira, Andrew Zisserman 157 | https://arxiv.org/pdf/1705.07750v1.pdf. 158 | See also the Inception architecture, introduced in: 159 | Going deeper with convolutions 160 | Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, 161 | Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. 162 | http://arxiv.org/pdf/1409.4842v1.pdf. 163 | """ 164 | 165 | # Endpoints of the model in order. During construction, all the endpoints up 166 | # to a designated `final_endpoint` are returned in a dictionary as the 167 | # second return value. 168 | VALID_ENDPOINTS = ( 169 | 'Conv3d_1a_7x7', 170 | 'MaxPool3d_2a_3x3', 171 | 'Conv3d_2b_1x1', 172 | 'Conv3d_2c_3x3', 173 | 'MaxPool3d_3a_3x3', 174 | 'Mixed_3b', 175 | 'Mixed_3c', 176 | 'MaxPool3d_4a_3x3', 177 | 'Mixed_4b', 178 | 'Mixed_4c', 179 | 'Mixed_4d', 180 | 'Mixed_4e', 181 | 'Mixed_4f', 182 | 'MaxPool3d_5a_2x2', 183 | 'Mixed_5b', 184 | 'Mixed_5c', 185 | 'Logits', 186 | 'Predictions', 187 | ) 188 | 189 | def __init__(self, num_classes=400, spatial_squeeze=True, 190 | final_endpoint='Logits', name='inception_i3d', in_channels=3, dropout_keep_prob=0.5): 191 | """Initializes I3D model instance. 192 | Args: 193 | num_classes: The number of outputs in the logit layer (default 400, which 194 | matches the Kinetics dataset). 195 | spatial_squeeze: Whether to squeeze the spatial dimensions for the logits 196 | before returning (default True). 197 | final_endpoint: The model contains many possible endpoints. 198 | `final_endpoint` specifies the last endpoint for the model to be built 199 | up to. In addition to the output at `final_endpoint`, all the outputs 200 | at endpoints up to `final_endpoint` will also be returned, in a 201 | dictionary. `final_endpoint` must be one of 202 | InceptionI3d.VALID_ENDPOINTS (default 'Logits'). 203 | name: A string (optional). The name of this module. 204 | Raises: 205 | ValueError: if `final_endpoint` is not recognized. 206 | """ 207 | 208 | if final_endpoint not in self.VALID_ENDPOINTS: 209 | raise ValueError('Unknown final endpoint %s' % final_endpoint) 210 | 211 | super(InceptionI3d, self).__init__() 212 | self._num_classes = num_classes 213 | self._spatial_squeeze = spatial_squeeze 214 | self._final_endpoint = final_endpoint 215 | self.logits = None 216 | 217 | if self._final_endpoint not in self.VALID_ENDPOINTS: 218 | raise ValueError('Unknown final endpoint %s' % self._final_endpoint) 219 | 220 | self.end_points = {} 221 | end_point = 'Conv3d_1a_7x7' 222 | self.end_points[end_point] = Unit3D(in_channels=in_channels, output_channels=64, kernel_shape=[7, 7, 7], 223 | stride=(2, 2, 2), padding=(3,3,3), name=name+end_point) 224 | if self._final_endpoint == end_point: return 225 | 226 | end_point = 'MaxPool3d_2a_3x3' 227 | self.end_points[end_point] = MaxPool3dSamePadding(kernel_size=[1, 3, 3], stride=(1, 2, 2), 228 | padding=0) 229 | if self._final_endpoint == end_point: return 230 | 231 | end_point = 'Conv3d_2b_1x1' 232 | self.end_points[end_point] = Unit3D(in_channels=64, output_channels=64, kernel_shape=[1, 1, 1], padding=0, 233 | name=name+end_point) 234 | if self._final_endpoint == end_point: return 235 | 236 | end_point = 'Conv3d_2c_3x3' 237 | self.end_points[end_point] = Unit3D(in_channels=64, output_channels=192, kernel_shape=[3, 3, 3], padding=1, 238 | name=name+end_point) 239 | if self._final_endpoint == end_point: return 240 | 241 | end_point = 'MaxPool3d_3a_3x3' 242 | self.end_points[end_point] = MaxPool3dSamePadding(kernel_size=[1, 3, 3], stride=(1, 2, 2), 243 | padding=0) 244 | if self._final_endpoint == end_point: return 245 | 246 | end_point = 'Mixed_3b' 247 | self.end_points[end_point] = InceptionModule(192, [64,96,128,16,32,32], name+end_point) 248 | if self._final_endpoint == end_point: return 249 | 250 | end_point = 'Mixed_3c' 251 | self.end_points[end_point] = InceptionModule(256, [128,128,192,32,96,64], name+end_point) 252 | if self._final_endpoint == end_point: return 253 | 254 | end_point = 'MaxPool3d_4a_3x3' 255 | self.end_points[end_point] = MaxPool3dSamePadding(kernel_size=[3, 3, 3], stride=(2, 2, 2), 256 | padding=0) 257 | if self._final_endpoint == end_point: return 258 | 259 | end_point = 'Mixed_4b' 260 | self.end_points[end_point] = InceptionModule(128+192+96+64, [192,96,208,16,48,64], name+end_point) 261 | if self._final_endpoint == end_point: return 262 | 263 | end_point = 'Mixed_4c' 264 | self.end_points[end_point] = InceptionModule(192+208+48+64, [160,112,224,24,64,64], name+end_point) 265 | if self._final_endpoint == end_point: return 266 | 267 | end_point = 'Mixed_4d' 268 | self.end_points[end_point] = InceptionModule(160+224+64+64, [128,128,256,24,64,64], name+end_point) 269 | if self._final_endpoint == end_point: return 270 | 271 | end_point = 'Mixed_4e' 272 | self.end_points[end_point] = InceptionModule(128+256+64+64, [112,144,288,32,64,64], name+end_point) 273 | if self._final_endpoint == end_point: return 274 | 275 | end_point = 'Mixed_4f' 276 | self.end_points[end_point] = InceptionModule(112+288+64+64, [256,160,320,32,128,128], name+end_point) 277 | if self._final_endpoint == end_point: return 278 | 279 | end_point = 'MaxPool3d_5a_2x2' 280 | self.end_points[end_point] = MaxPool3dSamePadding(kernel_size=[2, 2, 2], stride=(2, 2, 2), 281 | padding=0) 282 | if self._final_endpoint == end_point: return 283 | 284 | end_point = 'Mixed_5b' 285 | self.end_points[end_point] = InceptionModule(256+320+128+128, [256,160,320,32,128,128], name+end_point) 286 | if self._final_endpoint == end_point: return 287 | 288 | end_point = 'Mixed_5c' 289 | self.end_points[end_point] = InceptionModule(256+320+128+128, [384,192,384,48,128,128], name+end_point) 290 | if self._final_endpoint == end_point: return 291 | 292 | end_point = 'Logits' 293 | self.avg_pool = nn.AvgPool3d(kernel_size=[2, 7, 7], 294 | stride=(1, 1, 1)) 295 | self.dropout = nn.Dropout(dropout_keep_prob) 296 | self.logits = Unit3D(in_channels=384+384+128+128, output_channels=self._num_classes, 297 | kernel_shape=[1, 1, 1], 298 | padding=0, 299 | activation_fn=None, 300 | use_batch_norm=False, 301 | use_bias=True, 302 | name='logits') 303 | 304 | self.build() 305 | 306 | 307 | def replace_logits(self, num_classes): 308 | self._num_classes = num_classes 309 | self.logits = Unit3D(in_channels=384+384+128+128, output_channels=self._num_classes, 310 | kernel_shape=[1, 1, 1], 311 | padding=0, 312 | activation_fn=None, 313 | use_batch_norm=False, 314 | use_bias=True, 315 | name='logits') 316 | 317 | 318 | def build(self): 319 | for k in self.end_points.keys(): 320 | self.add_module(k, self.end_points[k]) 321 | 322 | def forward(self, x): 323 | for end_point in self.VALID_ENDPOINTS: 324 | if end_point in self.end_points: 325 | x = self._modules[end_point](x) # use _modules to work with dataparallel 326 | 327 | x = self.logits(self.dropout(self.avg_pool(x))) 328 | if self._spatial_squeeze: 329 | logits = x.squeeze(3).squeeze(3) 330 | # logits is batch X time X classes, which is what we want to work with 331 | return logits 332 | 333 | 334 | def extract_features(self, x): 335 | for end_point in self.VALID_ENDPOINTS: 336 | if end_point in self.end_points: 337 | x = self._modules[end_point](x) 338 | return self.avg_pool(x) 339 | -------------------------------------------------------------------------------- /CC-BY-4.0: -------------------------------------------------------------------------------- 1 | Attribution 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution 4.0 International Public License 58 | 59 | By exercising the Licensed Rights (defined below), You accept and agree 60 | to be bound by the terms and conditions of this Creative Commons 61 | Attribution 4.0 International Public License ("Public License"). To the 62 | extent this Public License may be interpreted as a contract, You are 63 | granted the Licensed Rights in consideration of Your acceptance of 64 | these terms and conditions, and the Licensor grants You such rights in 65 | consideration of benefits the Licensor receives from making the 66 | Licensed Material available under these terms and conditions. 67 | 68 | 69 | Section 1 -- Definitions. 70 | 71 | a. Adapted Material means material subject to Copyright and Similar 72 | Rights that is derived from or based upon the Licensed Material 73 | and in which the Licensed Material is translated, altered, 74 | arranged, transformed, or otherwise modified in a manner requiring 75 | permission under the Copyright and Similar Rights held by the 76 | Licensor. For purposes of this Public License, where the Licensed 77 | Material is a musical work, performance, or sound recording, 78 | Adapted Material is always produced where the Licensed Material is 79 | synched in timed relation with a moving image. 80 | 81 | b. Adapter's License means the license You apply to Your Copyright 82 | and Similar Rights in Your contributions to Adapted Material in 83 | accordance with the terms and conditions of this Public License. 84 | 85 | c. Copyright and Similar Rights means copyright and/or similar rights 86 | closely related to copyright including, without limitation, 87 | performance, broadcast, sound recording, and Sui Generis Database 88 | Rights, without regard to how the rights are labeled or 89 | categorized. For purposes of this Public License, the rights 90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 | Rights. 92 | 93 | d. Effective Technological Measures means those measures that, in the 94 | absence of proper authority, may not be circumvented under laws 95 | fulfilling obligations under Article 11 of the WIPO Copyright 96 | Treaty adopted on December 20, 1996, and/or similar international 97 | agreements. 98 | 99 | e. Exceptions and Limitations means fair use, fair dealing, and/or 100 | any other exception or limitation to Copyright and Similar Rights 101 | that applies to Your use of the Licensed Material. 102 | 103 | f. Licensed Material means the artistic or literary work, database, 104 | or other material to which the Licensor applied this Public 105 | License. 106 | 107 | g. Licensed Rights means the rights granted to You subject to the 108 | terms and conditions of this Public License, which are limited to 109 | all Copyright and Similar Rights that apply to Your use of the 110 | Licensed Material and that the Licensor has authority to license. 111 | 112 | h. Licensor means the individual(s) or entity(ies) granting rights 113 | under this Public License. 114 | 115 | i. Share means to provide material to the public by any means or 116 | process that requires permission under the Licensed Rights, such 117 | as reproduction, public display, public performance, distribution, 118 | dissemination, communication, or importation, and to make material 119 | available to the public including in ways that members of the 120 | public may access the material from a place and at a time 121 | individually chosen by them. 122 | 123 | j. Sui Generis Database Rights means rights other than copyright 124 | resulting from Directive 96/9/EC of the European Parliament and of 125 | the Council of 11 March 1996 on the legal protection of databases, 126 | as amended and/or succeeded, as well as other essentially 127 | equivalent rights anywhere in the world. 128 | 129 | k. You means the individual or entity exercising the Licensed Rights 130 | under this Public License. Your has a corresponding meaning. 131 | 132 | 133 | Section 2 -- Scope. 134 | 135 | a. License grant. 136 | 137 | 1. Subject to the terms and conditions of this Public License, 138 | the Licensor hereby grants You a worldwide, royalty-free, 139 | non-sublicensable, non-exclusive, irrevocable license to 140 | exercise the Licensed Rights in the Licensed Material to: 141 | 142 | a. reproduce and Share the Licensed Material, in whole or 143 | in part; and 144 | 145 | b. produce, reproduce, and Share Adapted Material. 146 | 147 | 2. Exceptions and Limitations. For the avoidance of doubt, where 148 | Exceptions and Limitations apply to Your use, this Public 149 | License does not apply, and You do not need to comply with 150 | its terms and conditions. 151 | 152 | 3. Term. The term of this Public License is specified in Section 153 | 6(a). 154 | 155 | 4. Media and formats; technical modifications allowed. The 156 | Licensor authorizes You to exercise the Licensed Rights in 157 | all media and formats whether now known or hereafter created, 158 | and to make technical modifications necessary to do so. The 159 | Licensor waives and/or agrees not to assert any right or 160 | authority to forbid You from making technical modifications 161 | necessary to exercise the Licensed Rights, including 162 | technical modifications necessary to circumvent Effective 163 | Technological Measures. For purposes of this Public License, 164 | simply making modifications authorized by this Section 2(a) 165 | (4) never produces Adapted Material. 166 | 167 | 5. Downstream recipients. 168 | 169 | a. Offer from the Licensor -- Licensed Material. Every 170 | recipient of the Licensed Material automatically 171 | receives an offer from the Licensor to exercise the 172 | Licensed Rights under the terms and conditions of this 173 | Public License. 174 | 175 | b. No downstream restrictions. You may not offer or impose 176 | any additional or different terms or conditions on, or 177 | apply any Effective Technological Measures to, the 178 | Licensed Material if doing so restricts exercise of the 179 | Licensed Rights by any recipient of the Licensed 180 | Material. 181 | 182 | 6. No endorsement. Nothing in this Public License constitutes or 183 | may be construed as permission to assert or imply that You 184 | are, or that Your use of the Licensed Material is, connected 185 | with, or sponsored, endorsed, or granted official status by, 186 | the Licensor or others designated to receive attribution as 187 | provided in Section 3(a)(1)(A)(i). 188 | 189 | b. Other rights. 190 | 191 | 1. Moral rights, such as the right of integrity, are not 192 | licensed under this Public License, nor are publicity, 193 | privacy, and/or other similar personality rights; however, to 194 | the extent possible, the Licensor waives and/or agrees not to 195 | assert any such rights held by the Licensor to the limited 196 | extent necessary to allow You to exercise the Licensed 197 | Rights, but not otherwise. 198 | 199 | 2. Patent and trademark rights are not licensed under this 200 | Public License. 201 | 202 | 3. To the extent possible, the Licensor waives any right to 203 | collect royalties from You for the exercise of the Licensed 204 | Rights, whether directly or through a collecting society 205 | under any voluntary or waivable statutory or compulsory 206 | licensing scheme. In all other cases the Licensor expressly 207 | reserves any right to collect such royalties. 208 | 209 | 210 | Section 3 -- License Conditions. 211 | 212 | Your exercise of the Licensed Rights is expressly made subject to the 213 | following conditions. 214 | 215 | a. Attribution. 216 | 217 | 1. If You Share the Licensed Material (including in modified 218 | form), You must: 219 | 220 | a. retain the following if it is supplied by the Licensor 221 | with the Licensed Material: 222 | 223 | i. identification of the creator(s) of the Licensed 224 | Material and any others designated to receive 225 | attribution, in any reasonable manner requested by 226 | the Licensor (including by pseudonym if 227 | designated); 228 | 229 | ii. a copyright notice; 230 | 231 | iii. a notice that refers to this Public License; 232 | 233 | iv. a notice that refers to the disclaimer of 234 | warranties; 235 | 236 | v. a URI or hyperlink to the Licensed Material to the 237 | extent reasonably practicable; 238 | 239 | b. indicate if You modified the Licensed Material and 240 | retain an indication of any previous modifications; and 241 | 242 | c. indicate the Licensed Material is licensed under this 243 | Public License, and include the text of, or the URI or 244 | hyperlink to, this Public License. 245 | 246 | 2. You may satisfy the conditions in Section 3(a)(1) in any 247 | reasonable manner based on the medium, means, and context in 248 | which You Share the Licensed Material. For example, it may be 249 | reasonable to satisfy the conditions by providing a URI or 250 | hyperlink to a resource that includes the required 251 | information. 252 | 253 | 3. If requested by the Licensor, You must remove any of the 254 | information required by Section 3(a)(1)(A) to the extent 255 | reasonably practicable. 256 | 257 | 4. If You Share Adapted Material You produce, the Adapter's 258 | License You apply must not prevent recipients of the Adapted 259 | Material from complying with this Public License. 260 | 261 | 262 | Section 4 -- Sui Generis Database Rights. 263 | 264 | Where the Licensed Rights include Sui Generis Database Rights that 265 | apply to Your use of the Licensed Material: 266 | 267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 | to extract, reuse, reproduce, and Share all or a substantial 269 | portion of the contents of the database; 270 | 271 | b. if You include all or a substantial portion of the database 272 | contents in a database in which You have Sui Generis Database 273 | Rights, then the database in which You have Sui Generis Database 274 | Rights (but not its individual contents) is Adapted Material; and 275 | 276 | c. You must comply with the conditions in Section 3(a) if You Share 277 | all or a substantial portion of the contents of the database. 278 | 279 | For the avoidance of doubt, this Section 4 supplements and does not 280 | replace Your obligations under this Public License where the Licensed 281 | Rights include other Copyright and Similar Rights. 282 | 283 | 284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 | 286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 | 297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 | 307 | c. The disclaimer of warranties and limitation of liability provided 308 | above shall be interpreted in a manner that, to the extent 309 | possible, most closely approximates an absolute disclaimer and 310 | waiver of all liability. 311 | 312 | 313 | Section 6 -- Term and Termination. 314 | 315 | a. This Public License applies for the term of the Copyright and 316 | Similar Rights licensed here. However, if You fail to comply with 317 | this Public License, then Your rights under this Public License 318 | terminate automatically. 319 | 320 | b. Where Your right to use the Licensed Material has terminated under 321 | Section 6(a), it reinstates: 322 | 323 | 1. automatically as of the date the violation is cured, provided 324 | it is cured within 30 days of Your discovery of the 325 | violation; or 326 | 327 | 2. upon express reinstatement by the Licensor. 328 | 329 | For the avoidance of doubt, this Section 6(b) does not affect any 330 | right the Licensor may have to seek remedies for Your violations 331 | of this Public License. 332 | 333 | c. For the avoidance of doubt, the Licensor may also offer the 334 | Licensed Material under separate terms or conditions or stop 335 | distributing the Licensed Material at any time; however, doing so 336 | will not terminate this Public License. 337 | 338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 | License. 340 | 341 | 342 | Section 7 -- Other Terms and Conditions. 343 | 344 | a. The Licensor shall not be bound by any additional or different 345 | terms or conditions communicated by You unless expressly agreed. 346 | 347 | b. Any arrangements, understandings, or agreements regarding the 348 | Licensed Material not stated herein are separate from and 349 | independent of the terms and conditions of this Public License. 350 | 351 | 352 | Section 8 -- Interpretation. 353 | 354 | a. For the avoidance of doubt, this Public License does not, and 355 | shall not be interpreted to, reduce, limit, restrict, or impose 356 | conditions on any use of the Licensed Material that could lawfully 357 | be made without permission under this Public License. 358 | 359 | b. To the extent possible, if any provision of this Public License is 360 | deemed unenforceable, it shall be automatically reformed to the 361 | minimum extent necessary to make it enforceable. If the provision 362 | cannot be reformed, it shall be severed from this Public License 363 | without affecting the enforceability of the remaining terms and 364 | conditions. 365 | 366 | c. No term or condition of this Public License will be waived and no 367 | failure to comply consented to unless expressly agreed to by the 368 | Licensor. 369 | 370 | d. Nothing in this Public License constitutes or may be interpreted 371 | as a limitation upon, or waiver of, any privileges and immunities 372 | that apply to the Licensor or You, including from the legal 373 | processes of any jurisdiction or authority. 374 | 375 | 376 | ======================================================================= 377 | 378 | Creative Commons is not a party to its public 379 | licenses. Notwithstanding, Creative Commons may elect to apply one of 380 | its public licenses to material it publishes and in those instances 381 | will be considered the “Licensor.” The text of the Creative Commons 382 | public licenses is dedicated to the public domain under the CC0 Public 383 | Domain Dedication. Except for the limited purpose of indicating that 384 | material is shared under a Creative Commons public license or as 385 | otherwise permitted by the Creative Commons policies published at 386 | creativecommons.org/policies, Creative Commons does not authorize the 387 | use of the trademark "Creative Commons" or any other trademark or logo 388 | of Creative Commons without its prior written consent including, 389 | without limitation, in connection with any unauthorized modifications 390 | to any of its public licenses or any other arrangements, 391 | understandings, or agreements concerning use of licensed material. For 392 | the avoidance of doubt, this paragraph does not form part of the 393 | public licenses. 394 | 395 | Creative Commons may be contacted at creativecommons.org. 396 | -------------------------------------------------------------------------------- /annotations/task2/procedure_val.csv: -------------------------------------------------------------------------------- 1 | path-label 2 | /segment_path/j4vCio2bdbo_8.mp4 2 3 | /segment_path/GE24mrcUkhg_7.mp4 2 4 | /segment_path/Nsm3HIH7QdU_9.mp4 2 5 | /segment_path/wlssXdkjCLs_11.mp4 2 6 | /segment_path/lNnvx6hIN78_11.mp4 2 7 | /segment_path/l2svlMYCBiQ_1.mp4 2 8 | /segment_path/GE24mrcUkhg_14.mp4 2 9 | /segment_path/l2svlMYCBiQ_4.mp4 2 10 | /segment_path/xwJOXomT1jk_1.mp4 2 11 | /segment_path/wlssXdkjCLs_6.mp4 2 12 | /segment_path/YTEniEh6uS0_10.mp4 2 13 | /segment_path/Qp78x7NxUho_8.mp4 2 14 | /segment_path/cKtB81VN_4Q_11.mp4 2 15 | /segment_path/Cl-Cn0qK5lg_14.mp4 2 16 | /segment_path/Q8lZR3Fo6SM_7.mp4 2 17 | /segment_path/1PNlj_VEDtI_10.mp4 2 18 | /segment_path/gmWjVoc3mM8_11.mp4 2 19 | /segment_path/PmhpqrIBJD8_2.mp4 2 20 | /segment_path/kVMfKVJN5J0_4.mp4 2 21 | /segment_path/5W3o4HjyV2k_14.mp4 2 22 | /segment_path/FKZDX79-fxo_2.mp4 2 23 | /segment_path/6Xu2Sgk1y80_10.mp4 2 24 | /segment_path/j4vCio2bdbo_14.mp4 2 25 | /segment_path/lNnvx6hIN78_4.mp4 2 26 | /segment_path/Cl-Cn0qK5lg_1.mp4 2 27 | /segment_path/wMbegc0txx4_2.mp4 2 28 | /segment_path/b2UCiQs0KMg_12.mp4 2 29 | /segment_path/n3Ed36YSz9w_6.mp4 2 30 | /segment_path/Cl-Cn0qK5lg_10.mp4 2 31 | /segment_path/j7bdt74NOcQ_19.mp4 2 32 | /segment_path/j7bdt74NOcQ_18.mp4 2 33 | /segment_path/xdi9mCRZnY4_3.mp4 2 34 | /segment_path/kVMfKVJN5J0_2.mp4 2 35 | /segment_path/--Ly-qjodoI_4.mp4 2 36 | /segment_path/FKZDX79-fxo_13.mp4 2 37 | /segment_path/Qp78x7NxUho_7.mp4 2 38 | /segment_path/uCUwB1t2sLA_1.mp4 2 39 | /segment_path/wMbegc0txx4_1.mp4 2 40 | /segment_path/l2svlMYCBiQ_12.mp4 2 41 | /segment_path/j7bdt74NOcQ_11.mp4 2 42 | /segment_path/6Ny4wSUdYNo_10.mp4 2 43 | /segment_path/5W3o4HjyV2k_18.mp4 2 44 | /segment_path/n3Ed36YSz9w_11.mp4 2 45 | /segment_path/jGJNtSF2RLA_11.mp4 2 46 | /segment_path/YTEniEh6uS0_8.mp4 2 47 | /segment_path/LyWtN-oRjN0_6.mp4 2 48 | /segment_path/GE24mrcUkhg_10.mp4 2 49 | /segment_path/FKZDX79-fxo_15.mp4 2 50 | /segment_path/58wAvY_aF-Y_7.mp4 2 51 | /segment_path/YTEniEh6uS0_5.mp4 2 52 | /segment_path/xsqaL7c22q8_8.mp4 2 53 | /segment_path/zevN6AlhH_s_4.mp4 2 54 | /segment_path/TUwd4ZHgd2w_2.mp4 2 55 | /segment_path/l2svlMYCBiQ_3.mp4 2 56 | /segment_path/JGgzTJtzaqc_10.mp4 2 57 | /segment_path/j4vCio2bdbo_1.mp4 2 58 | /segment_path/j7bdt74NOcQ_7.mp4 2 59 | /segment_path/NP0ybURoSz4_9.mp4 2 60 | /segment_path/gmWjVoc3mM8_13.mp4 2 61 | /segment_path/1PNlj_VEDtI_9.mp4 2 62 | /segment_path/n3Ed36YSz9w_2.mp4 2 63 | /segment_path/jGJNtSF2RLA_10.mp4 2 64 | /segment_path/NP0ybURoSz4_5.mp4 2 65 | /segment_path/Ko-oArJLfFc_3.mp4 2 66 | /segment_path/j4vCio2bdbo_5.mp4 2 67 | /segment_path/N6aqYkq0xlQ_12.mp4 2 68 | /segment_path/8OTKidNwLlo_7.mp4 2 69 | /segment_path/XcU6g_ppWRI_3.mp4 36 70 | /segment_path/NM53mj1iQBo_5.mp4 36 71 | /segment_path/OyBYv-PAGzU_4.mp4 36 72 | /segment_path/-0z1P7sw2qs_2.mp4 36 73 | /segment_path/-0z1P7sw2qs_3.mp4 36 74 | /segment_path/XcU6g_ppWRI_2.mp4 36 75 | /segment_path/S4L6rVLMQ0Q_4.mp4 36 76 | /segment_path/NM53mj1iQBo_1.mp4 36 77 | /segment_path/8vKssX6wvwY_5.mp4 36 78 | /segment_path/TZ6xeS_GjSk_1.mp4 24 79 | /segment_path/pK_7NE5_yCU_1.mp4 24 80 | /segment_path/TZ6xeS_GjSk_2.mp4 24 81 | /segment_path/TZ6xeS_GjSk_3.mp4 24 82 | /segment_path/Cpoc5ht51NY_5.mp4 6 83 | /segment_path/svW_04e1Oi8_4.mp4 6 84 | /segment_path/cM1H92_5hqs_5.mp4 6 85 | /segment_path/rNnEiYVU6lg_12.mp4 6 86 | /segment_path/rOc1enHcEh8_4.mp4 6 87 | /segment_path/vxnveaa9GYI_3.mp4 6 88 | /segment_path/rNnEiYVU6lg_9.mp4 6 89 | /segment_path/BHH_nHIhJO4_2.mp4 6 90 | /segment_path/0WMoZ_sInmc_1.mp4 6 91 | /segment_path/gFSf0fO0Lug_1.mp4 6 92 | /segment_path/mEZ3hxK4WEM_1.mp4 6 93 | /segment_path/Fk2Dj6wyQAE_2.mp4 6 94 | /segment_path/396l_q4T1NA_3.mp4 6 95 | /segment_path/3fk_8uR_uhQ_2.mp4 6 96 | /segment_path/BHH_nHIhJO4_1.mp4 6 97 | /segment_path/eqX2nymZHWA_4.mp4 6 98 | /segment_path/svW_04e1Oi8_7.mp4 6 99 | /segment_path/1rlxKsx_n-Y_6.mp4 6 100 | /segment_path/QF8lOgjCKEs_4.mp4 6 101 | /segment_path/DbDBriTlmms_1.mp4 6 102 | /segment_path/rOc1enHcEh8_2.mp4 6 103 | /segment_path/-2N0GEdJltw_3.mp4 6 104 | /segment_path/MmnY2RtgCZE_1.mp4 6 105 | /segment_path/b1uy8cwYlcM_6.mp4 6 106 | /segment_path/EcvnyTIs9JI_2.mp4 6 107 | /segment_path/rOc1enHcEh8_1.mp4 6 108 | /segment_path/Kxb43B7iWFM_7.mp4 6 109 | /segment_path/Cpoc5ht51NY_7.mp4 6 110 | /segment_path/iiy9xPuVvYs_2.mp4 30 111 | /segment_path/cF1Nu3o87Z0_2.mp4 30 112 | /segment_path/GWARv4-pNPc_1.mp4 30 113 | /segment_path/NmoERV9EmG0_2.mp4 30 114 | /segment_path/rIdTJv_wT0g_1.mp4 30 115 | /segment_path/NBPUBLied0o_1.mp4 1 116 | /segment_path/zAV6Nl2sKws_2.mp4 1 117 | /segment_path/qOjWJHdEaBo_1.mp4 1 118 | /segment_path/NBPUBLied0o_9.mp4 1 119 | /segment_path/G_TDLaTop6U_4.mp4 1 120 | /segment_path/29QOClzPHGQ_1.mp4 1 121 | /segment_path/G_TDLaTop6U_3.mp4 1 122 | /segment_path/HWrr0tJTlsE_3.mp4 1 123 | /segment_path/Oby_tVxQZAI_1.mp4 1 124 | /segment_path/OxlsLZcvRi0_3.mp4 1 125 | /segment_path/Dbl84rzEZWw_1.mp4 1 126 | /segment_path/lzmn9_OdR7A_3.mp4 1 127 | /segment_path/R5Fa6n4cnE4_1.mp4 1 128 | /segment_path/eckl2DvLZIQ_1.mp4 1 129 | /segment_path/QtCYebM3f8g_1.mp4 1 130 | /segment_path/7XPQYY0B7Rk_1.mp4 1 131 | /segment_path/lzmn9_OdR7A_1.mp4 1 132 | /segment_path/3cUkDXZzeyg_1.mp4 18 133 | /segment_path/NttqBWSA_DM_4.mp4 18 134 | /segment_path/F0ve4k_sINQ_2.mp4 18 135 | /segment_path/RauG9bE3klg_1.mp4 18 136 | /segment_path/fjcQKVFvPlQ_3.mp4 18 137 | /segment_path/xvo_4RpdNJU_3.mp4 18 138 | /segment_path/F0ve4k_sINQ_4.mp4 18 139 | /segment_path/CJ_-t9AtkpA_12.mp4 18 140 | /segment_path/CJ_-t9AtkpA_7.mp4 18 141 | /segment_path/JLkujIaDKsQ_5.mp4 18 142 | /segment_path/RauG9bE3klg_3.mp4 18 143 | /segment_path/-C7K3i5Ea7s_1.mp4 18 144 | /segment_path/FQ5N13TlXLQ_4.mp4 18 145 | /segment_path/VHjUH7yXiJU_2.mp4 18 146 | /segment_path/sC9vpZLLLLI_5.mp4 0 147 | /segment_path/0F62OyVKOwk_6.mp4 0 148 | /segment_path/9mGUSQKOVw4_5.mp4 0 149 | /segment_path/BwzeCSd2bVc_2.mp4 0 150 | /segment_path/L4LSRgdie-c_1.mp4 0 151 | /segment_path/0F62OyVKOwk_3.mp4 0 152 | /segment_path/hxxXvsrIL18_2.mp4 0 153 | /segment_path/SUB0hybpY-Y_2.mp4 0 154 | /segment_path/SUB0hybpY-Y_6.mp4 0 155 | /segment_path/CUT22MsW04I_2.mp4 0 156 | /segment_path/9mGUSQKOVw4_1.mp4 0 157 | /segment_path/wXJRBD_7Xvo_4.mp4 0 158 | /segment_path/fnXB1xyRFaA_2.mp4 0 159 | /segment_path/GmUrNFGqTA0_5.mp4 0 160 | /segment_path/hGAZXMj_3gw_2.mp4 0 161 | /segment_path/QtctitWArm0_5.mp4 0 162 | /segment_path/0F62OyVKOwk_4.mp4 0 163 | /segment_path/0F62OyVKOwk_1.mp4 0 164 | /segment_path/RzpVnqPwfhs_1.mp4 0 165 | /segment_path/ZBsKr3PMp4E_4.mp4 0 166 | /segment_path/9mGUSQKOVw4_2.mp4 0 167 | /segment_path/2SqBXs-Y3ts_3.mp4 0 168 | /segment_path/57I72z9R1H0_2.mp4 0 169 | /segment_path/GsypMFw4OJk_1.mp4 0 170 | /segment_path/ynYZyE9GFfs_1.mp4 3 171 | /segment_path/TjMAUIAk_-s_5.mp4 3 172 | /segment_path/DscPAFMdo1w_1.mp4 3 173 | /segment_path/mFURUnD8eJs_2.mp4 3 174 | /segment_path/gF6EgRxF-xU_1.mp4 3 175 | /segment_path/TjMAUIAk_-s_4.mp4 3 176 | /segment_path/BH9mYVQGdm4_2.mp4 3 177 | /segment_path/Dxb-zo3lWPM_2.mp4 3 178 | /segment_path/wuc_OBcehjo_1.mp4 3 179 | /segment_path/WISzaCdJSQg_3.mp4 3 180 | /segment_path/BH9mYVQGdm4_1.mp4 3 181 | /segment_path/pXCTmVOT82s_1.mp4 3 182 | /segment_path/NL33d3ivsnI_3.mp4 3 183 | /segment_path/Y85VZlSCJCo_1.mp4 3 184 | /segment_path/HjXMlsoLm58_2.mp4 3 185 | /segment_path/cDcuU3KVpuo_3.mp4 3 186 | /segment_path/Nr_VTtWkNHg_1.mp4 3 187 | /segment_path/ZtmLdYTVszA_11.mp4 10 188 | /segment_path/gNuqWwOeG5g_2.mp4 10 189 | /segment_path/gNuqWwOeG5g_8.mp4 10 190 | /segment_path/eIqBFOX5YTo_2.mp4 10 191 | /segment_path/3-SOKCuMujc_4.mp4 10 192 | /segment_path/zR6hzzDAflI_2.mp4 10 193 | /segment_path/NC-Lult6iM8_5.mp4 10 194 | /segment_path/v_4amQy8u5c_6.mp4 10 195 | /segment_path/3Vlt_EZRGgc_7.mp4 10 196 | /segment_path/4A2I-sZHXvI_7.mp4 10 197 | /segment_path/ryY29F8Wx_I_3.mp4 10 198 | /segment_path/Y5HOvK_4pGk_1.mp4 10 199 | /segment_path/BfYvfy97D0Y_3.mp4 10 200 | /segment_path/Dwj4qZcN2Cg_1.mp4 10 201 | /segment_path/QSnEA3OMJl8_2.mp4 10 202 | /segment_path/koYdj0vemwQ_3.mp4 10 203 | /segment_path/-fKaTT9nnlg_2.mp4 10 204 | /segment_path/w6UsbBX2goQ_2.mp4 10 205 | /segment_path/fZ3RyWrtjYM_2.mp4 10 206 | /segment_path/4A2I-sZHXvI_3.mp4 10 207 | /segment_path/ryY29F8Wx_I_8.mp4 10 208 | /segment_path/oFzfGZOYCDc_5.mp4 10 209 | /segment_path/DZVoNuBsjN8_1.mp4 19 210 | /segment_path/j5dwnDyxh4E_2.mp4 19 211 | /segment_path/2M2gPCNunZw_1.mp4 19 212 | /segment_path/j5dwnDyxh4E_1.mp4 19 213 | /segment_path/nypJl5OQ34g_1.mp4 19 214 | /segment_path/EgFSMM3ReE4_2.mp4 19 215 | /segment_path/tngxTE8Oayg_1.mp4 19 216 | /segment_path/iIo5LtWfxrY_5.mp4 19 217 | /segment_path/If8ewVG8UZg_2.mp4 19 218 | /segment_path/iIo5LtWfxrY_1.mp4 19 219 | /segment_path/pF5MJIw9pt4_4.mp4 19 220 | /segment_path/abNuOlCTu-g_1.mp4 19 221 | /segment_path/ok1TeEEBonk_1.mp4 7 222 | /segment_path/p2h-6KERCyw_2.mp4 7 223 | /segment_path/G69MHKMNzFY_3.mp4 7 224 | /segment_path/q-Ax4tMtBYY_1.mp4 7 225 | /segment_path/FplYx3s8uEg_3.mp4 7 226 | /segment_path/mrRVEiyEO6M_3.mp4 7 227 | /segment_path/obdMG9wwcPE_4.mp4 7 228 | /segment_path/jdL_GmE84Pw_1.mp4 7 229 | /segment_path/JK5rb6acQvY_2.mp4 7 230 | /segment_path/kX4D3LLDvIk_1.mp4 7 231 | /segment_path/kX4D3LLDvIk_3.mp4 7 232 | /segment_path/pDBQ_N-6rRE_1.mp4 7 233 | /segment_path/OGhQITOzX_c_1.mp4 7 234 | /segment_path/OGhQITOzX_c_2.mp4 7 235 | /segment_path/ijuoM54oCao_1.mp4 7 236 | /segment_path/2rZoIVf4pYY_2.mp4 7 237 | /segment_path/9oeVA0nl0m0_1.mp4 12 238 | /segment_path/uEYMYd8xA8Q_4.mp4 12 239 | /segment_path/cTSUeeG12Sk_10.mp4 12 240 | /segment_path/MEbsVeGnqJo_6.mp4 12 241 | /segment_path/MEbsVeGnqJo_3.mp4 12 242 | /segment_path/SuxxtZjVLCk_3.mp4 12 243 | /segment_path/SuxxtZjVLCk_4.mp4 12 244 | /segment_path/lowOxcK5JAA_6.mp4 12 245 | /segment_path/eDLHAN6u2yQ_3.mp4 12 246 | /segment_path/4zxgX9IpmMY_5.mp4 12 247 | /segment_path/gUWJ-6nL5-8_2.mp4 12 248 | /segment_path/cTSUeeG12Sk_6.mp4 12 249 | /segment_path/lowOxcK5JAA_2.mp4 12 250 | /segment_path/cTSUeeG12Sk_9.mp4 12 251 | /segment_path/FSTfAqQpsrI_2.mp4 12 252 | /segment_path/o0zEmaGBgBY_1.mp4 12 253 | /segment_path/eDLHAN6u2yQ_1.mp4 12 254 | /segment_path/MEbsVeGnqJo_1.mp4 12 255 | /segment_path/MEbsVeGnqJo_7.mp4 12 256 | /segment_path/BJXsXISIQhk_1.mp4 22 257 | /segment_path/pqdT_9ZHkcA_1.mp4 22 258 | /segment_path/6-33XEnm3to_1.mp4 22 259 | /segment_path/-k2pgWCPmsc_3.mp4 22 260 | /segment_path/AkeRnPUGdv0_2.mp4 22 261 | /segment_path/zlmHuO5TBDY_1.mp4 22 262 | /segment_path/KdPIAgInIGU_5.mp4 22 263 | /segment_path/5Cid7q9_Uq0_3.mp4 22 264 | /segment_path/sFsibuhZ3oM_1.mp4 22 265 | /segment_path/vAhCS89Wznc_2.mp4 22 266 | /segment_path/KdPIAgInIGU_2.mp4 22 267 | /segment_path/vvD-fKq8IyM_1.mp4 14 268 | /segment_path/u6dT3LVfZl4_1.mp4 14 269 | /segment_path/IcAIaBzQrkI_2.mp4 14 270 | /segment_path/Vij41V3rMEc_1.mp4 14 271 | /segment_path/xhOLC-JvJ68_1.mp4 14 272 | /segment_path/_6DU0pPzzoY_2.mp4 14 273 | /segment_path/9XkOssKciqU_4.mp4 14 274 | /segment_path/IcAIaBzQrkI_1.mp4 14 275 | /segment_path/qXOySyYARRg_1.mp4 14 276 | /segment_path/_KzjEAGue1U_1.mp4 14 277 | /segment_path/8MPdw-0HbTg_1.mp4 14 278 | /segment_path/y4_y-QqnV14_2.mp4 14 279 | /segment_path/Ob6TYXo6CxI_2.mp4 14 280 | /segment_path/9FvUsjje8ic_1.mp4 37 281 | /segment_path/WSjN5gPJ-UU_5.mp4 37 282 | /segment_path/9FvUsjje8ic_2.mp4 37 283 | /segment_path/LhMRLPkxRu0_2.mp4 37 284 | /segment_path/9FvUsjje8ic_7.mp4 37 285 | /segment_path/-MsywHWz1Z0_2.mp4 37 286 | /segment_path/jKR8SwI0gFw_4.mp4 37 287 | /segment_path/vX3CJKueq18_1.mp4 38 288 | /segment_path/-NoC1rkNgnU_2.mp4 38 289 | /segment_path/-uyBJ0nv4oI_1.mp4 38 290 | /segment_path/Peyw-eKZJOI_1.mp4 25 291 | /segment_path/Mg5efWa7I6s_1.mp4 25 292 | /segment_path/d6JZXKg79yA_4.mp4 25 293 | /segment_path/Mg5efWa7I6s_4.mp4 25 294 | /segment_path/f6N38hfD4o4_6.mp4 25 295 | /segment_path/0a3B_9RNCPQ_11.mp4 25 296 | /segment_path/cTwCK3dRV90_3.mp4 25 297 | /segment_path/4Qil5I1XLZ8_7.mp4 25 298 | /segment_path/lZ-vwkNg2ho_1.mp4 25 299 | /segment_path/MTuDsaPbEEk_1.mp4 25 300 | /segment_path/thb7LGhu-uk_1.mp4 25 301 | /segment_path/0a3B_9RNCPQ_15.mp4 25 302 | /segment_path/L2vZDVY0Wro_1.mp4 25 303 | /segment_path/MTuDsaPbEEk_2.mp4 25 304 | /segment_path/d6JZXKg79yA_2.mp4 25 305 | /segment_path/fOeg8IofzV0_8.mp4 33 306 | /segment_path/C4uRBT4IxWk_2.mp4 33 307 | /segment_path/bZWr4lidwaM_3.mp4 33 308 | /segment_path/dGV5XWzPF9Y_1.mp4 33 309 | /segment_path/Fs5P2Ptz3Vg_3.mp4 33 310 | /segment_path/Af4CT12J8GI_2.mp4 33 311 | /segment_path/UcNH7ub6iOQ_4.mp4 33 312 | /segment_path/C4uRBT4IxWk_5.mp4 33 313 | /segment_path/Af4CT12J8GI_16.mp4 33 314 | /segment_path/UcNH7ub6iOQ_3.mp4 33 315 | /segment_path/FQJmw7b-ylI_5.mp4 33 316 | /segment_path/Yq-FTeXZkvM_1.mp4 21 317 | /segment_path/sYjHK5b7Jzs_4.mp4 21 318 | /segment_path/sYjHK5b7Jzs_5.mp4 21 319 | /segment_path/9VKox-wy4fU_2.mp4 21 320 | /segment_path/OWK9Ut3PA1k_2.mp4 21 321 | /segment_path/IiueXfhu4D0_4.mp4 21 322 | /segment_path/_htrPTOvX-s_9.mp4 21 323 | /segment_path/CyczQoe3MiQ_4.mp4 21 324 | /segment_path/3iQ664gFHLw_2.mp4 21 325 | /segment_path/OWK9Ut3PA1k_1.mp4 21 326 | /segment_path/VVkhY8mUPaY_4.mp4 21 327 | /segment_path/Px-JGoUNN6U_3.mp4 21 328 | /segment_path/_htrPTOvX-s_8.mp4 21 329 | /segment_path/_bu8Bb7XV5U_2.mp4 21 330 | /segment_path/VVkhY8mUPaY_2.mp4 21 331 | /segment_path/sIYzY8jnifU_1.mp4 21 332 | /segment_path/g9F8cTZ4eDQ_4.mp4 8 333 | /segment_path/K4rGww6FGMg_6.mp4 8 334 | /segment_path/LTFWGGL859w_1.mp4 8 335 | /segment_path/Y64hvw0kZig_4.mp4 8 336 | /segment_path/WneRaj75II4_6.mp4 8 337 | /segment_path/Y64hvw0kZig_3.mp4 8 338 | /segment_path/o79esR_TQxk_1.mp4 8 339 | /segment_path/_Zj47bS5auo_4.mp4 8 340 | /segment_path/UM1wMCspFRI_3.mp4 8 341 | /segment_path/eEyTzVbpG3w_5.mp4 8 342 | /segment_path/uK9oG68ajq8_3.mp4 8 343 | /segment_path/-UZx2zSTfdo_3.mp4 8 344 | /segment_path/UM1wMCspFRI_1.mp4 8 345 | /segment_path/K4rGww6FGMg_5.mp4 8 346 | /segment_path/r0boh-NbFYY_4.mp4 8 347 | /segment_path/VFSHUlQEE80_3.mp4 8 348 | /segment_path/qiuQaa1F5j0_4.mp4 8 349 | /segment_path/g9F8cTZ4eDQ_2.mp4 8 350 | /segment_path/SDFjrkfSjDM_3.mp4 8 351 | /segment_path/onfb5EX23bo_3.mp4 8 352 | /segment_path/IRwKri1rqpU_3.mp4 8 353 | /segment_path/1fV0Y5QLzLQ_5.mp4 8 354 | /segment_path/g9F8cTZ4eDQ_7.mp4 8 355 | /segment_path/LTFWGGL859w_6.mp4 8 356 | /segment_path/ZL_HGe8TsBY_2.mp4 8 357 | /segment_path/1K7alb7Ne_A_1.mp4 16 358 | /segment_path/32zHF9Yvyp0_1.mp4 16 359 | /segment_path/IFHriQpQB50_2.mp4 16 360 | /segment_path/lPWGq3p9KdU_1.mp4 16 361 | /segment_path/rDtZWq6jgYw_2.mp4 16 362 | /segment_path/6s27NmJQi70_1.mp4 13 363 | /segment_path/1_2u8oNloBs_1.mp4 13 364 | /segment_path/nZxbfboIRvU_1.mp4 13 365 | /segment_path/fJBcBEBcKKg_1.mp4 13 366 | /segment_path/EJD6BT-zPHU_1.mp4 13 367 | /segment_path/WMMv2nR5Qeg_2.mp4 13 368 | /segment_path/h7J28x6fRaQ_1.mp4 13 369 | /segment_path/I4U5qBSdUb0_1.mp4 11 370 | /segment_path/hVwmifJdlfg_1.mp4 11 371 | /segment_path/wpG4la-iUJ8_2.mp4 11 372 | /segment_path/5wxGEfY9egw_2.mp4 11 373 | /segment_path/JNoEDzEMzYw_1.mp4 11 374 | /segment_path/sueclA2NVao_3.mp4 11 375 | /segment_path/FjHtL7gIQLk_1.mp4 11 376 | /segment_path/6Ayxz5p7GBs_1.mp4 11 377 | /segment_path/KImmBXpM7js_2.mp4 11 378 | /segment_path/SPxisxSv-dM_1.mp4 15 379 | /segment_path/Xmmw9g4eNqs_1.mp4 15 380 | /segment_path/6n--CYH4Pw4_5.mp4 15 381 | /segment_path/yuvRc1aBc_w_4.mp4 15 382 | /segment_path/6n--CYH4Pw4_2.mp4 15 383 | /segment_path/TS_AG7lHr3E_2.mp4 15 384 | /segment_path/gt6PsX4upCU_2.mp4 15 385 | /segment_path/VZeZREFZVXU_4.mp4 15 386 | /segment_path/yAyOVxAwm78_4.mp4 15 387 | /segment_path/4GpXy_srgRs_2.mp4 15 388 | /segment_path/44mJ9VUsGHM_2.mp4 15 389 | /segment_path/8PZqdLjy5Tc_3.mp4 15 390 | /segment_path/s89pcR9TzFc_4.mp4 15 391 | /segment_path/V2N6MXL3RrE_4.mp4 15 392 | /segment_path/TPXi_WEWM_U_2.mp4 26 393 | /segment_path/48M_CwJE7Z0_2.mp4 26 394 | /segment_path/0xT5mfWrW_I_1.mp4 26 395 | /segment_path/ae1lL3GLVdM_1.mp4 26 396 | /segment_path/GhqVaxDZZ1c_1.mp4 26 397 | /segment_path/pkn4hYvcaD0_2.mp4 26 398 | /segment_path/YU832gzgifo_1.mp4 4 399 | /segment_path/u8ZL0XLXA54_3.mp4 4 400 | /segment_path/6zcsYUqaWCE_4.mp4 4 401 | /segment_path/TNKRk0WRJqc_2.mp4 4 402 | /segment_path/hCbdqjnstXE_1.mp4 4 403 | /segment_path/CEq6QWOHTlo_1.mp4 4 404 | /segment_path/ue96cuS-lNs_2.mp4 4 405 | /segment_path/_S8JfTbZbdk_2.mp4 4 406 | /segment_path/UvdoHPneyRE_4.mp4 4 407 | /segment_path/NG7E1OKqpIk_4.mp4 4 408 | /segment_path/YLMPAtkg-Kk_1.mp4 4 409 | /segment_path/enDCSfO4GRo_5.mp4 4 410 | /segment_path/B7SWLiDjMvI_1.mp4 4 411 | /segment_path/WoJ8EGzwj_g_7.mp4 20 412 | /segment_path/2Ux_m8iCgcU_4.mp4 20 413 | /segment_path/WoJ8EGzwj_g_2.mp4 20 414 | /segment_path/F0863luTyfA_2.mp4 20 415 | /segment_path/KBDLtoPR140_1.mp4 20 416 | /segment_path/uAk9ppD-KZk_5.mp4 20 417 | /segment_path/F0863luTyfA_4.mp4 20 418 | /segment_path/cx5G1VdC9UA_5.mp4 20 419 | /segment_path/Np90zUnCB-g_2.mp4 20 420 | /segment_path/Nv8tTPsiFCA_2.mp4 20 421 | /segment_path/cx5G1VdC9UA_4.mp4 20 422 | /segment_path/e49kAYjvMcQ_4.mp4 20 423 | /segment_path/SCvBusvxTnM_3.mp4 20 424 | /segment_path/WoJ8EGzwj_g_3.mp4 20 425 | /segment_path/a4L_014Czao_1.mp4 20 426 | /segment_path/PBeKnXxiblQ_2.mp4 9 427 | /segment_path/4B_rg5uTRIo_1.mp4 9 428 | /segment_path/5FfVjiou_YE_15.mp4 9 429 | /segment_path/YWN1PpNUIfM_1.mp4 9 430 | /segment_path/JwSSrQzw5FM_3.mp4 9 431 | /segment_path/4B_rg5uTRIo_2.mp4 9 432 | /segment_path/EF84272YoPE_5.mp4 9 433 | /segment_path/g_1YRGKtQkU_2.mp4 9 434 | /segment_path/r9tBp-sKMbU_5.mp4 9 435 | /segment_path/DbUNhWmKw4M_1.mp4 9 436 | /segment_path/5FfVjiou_YE_12.mp4 9 437 | /segment_path/ukuK87Tfgx0_3.mp4 9 438 | /segment_path/B9LzzcN3JmE_3.mp4 9 439 | /segment_path/nkBTikaXrck_3.mp4 9 440 | /segment_path/r9tBp-sKMbU_1.mp4 9 441 | /segment_path/JwSSrQzw5FM_2.mp4 9 442 | /segment_path/yg9uopmNeUU_5.mp4 9 443 | /segment_path/sAkzifd81rk_2.mp4 9 444 | /segment_path/r9tBp-sKMbU_4.mp4 9 445 | /segment_path/tLi1PZSyk3o_1.mp4 9 446 | /segment_path/EF84272YoPE_3.mp4 9 447 | /segment_path/JwSSrQzw5FM_7.mp4 9 448 | /segment_path/9kOYDulwQv0_2.mp4 9 449 | /segment_path/0VGuYnlB2Yc_4.mp4 39 450 | /segment_path/9ba1LjgPHGg_2.mp4 39 451 | /segment_path/3kXnL0AQhYA_2.mp4 39 452 | /segment_path/9ba1LjgPHGg_3.mp4 39 453 | /segment_path/yWg58bqVvms_1.mp4 31 454 | /segment_path/qvK05MslzKA_3.mp4 31 455 | /segment_path/57zApLuswoo_1.mp4 31 456 | /segment_path/n6l19CWi710_1.mp4 31 457 | /segment_path/0IWzSE0ZSlE_1.mp4 31 458 | /segment_path/vBQaeq2vLsw_2.mp4 31 459 | /segment_path/UEVVUpz30RQ_5.mp4 31 460 | /segment_path/vdbghI49kzk_4.mp4 40 461 | /segment_path/Nvrlfmg8QkY_3.mp4 40 462 | /segment_path/vdbghI49kzk_2.mp4 40 463 | /segment_path/Nyqr7_JmBok_5.mp4 40 464 | /segment_path/8w-3h50E17Q_1.mp4 41 465 | /segment_path/9Dgjirf3Dss_2.mp4 41 466 | /segment_path/1mfjSry8WUQ_2.mp4 41 467 | /segment_path/qX7qRYKxN4g_2.mp4 41 468 | /segment_path/uIvdELL9its_4.mp4 41 469 | /segment_path/0Oj4AsZruZk_4.mp4 41 470 | /segment_path/aZOYJigvPbI_4.mp4 27 471 | /segment_path/wsxhWqjGfns_2.mp4 27 472 | /segment_path/L8j9F0zm-4A_2.mp4 27 473 | /segment_path/gTxix8KzjkQ_4.mp4 27 474 | /segment_path/JEiHJoC6ChY_1.mp4 27 475 | /segment_path/dS9H3EMxQJI_3.mp4 27 476 | /segment_path/B7SJ3QW5nik_1.mp4 27 477 | /segment_path/xEfAF4M8sis_2.mp4 27 478 | /segment_path/ty0unGK71Hw_2.mp4 27 479 | /segment_path/RJQ5Q5jQZmg_2.mp4 27 480 | /segment_path/J9V8oVSIqXI_7.mp4 27 481 | /segment_path/p3yBBNM3l4Y_4.mp4 23 482 | /segment_path/_rTq99Y8T_w_1.mp4 23 483 | /segment_path/et4GjVERUR4_3.mp4 23 484 | /segment_path/cbltQ7-EZJ0_1.mp4 23 485 | /segment_path/8PKKTwzxG7k_1.mp4 23 486 | /segment_path/V44OI-FjBCk_6.mp4 23 487 | /segment_path/cbltQ7-EZJ0_3.mp4 23 488 | /segment_path/e61ASYkJIRw_1.mp4 28 489 | /segment_path/pXJDcHhQ_QE_2.mp4 28 490 | /segment_path/knuKaVRdR5k_1.mp4 28 491 | /segment_path/WZgh0hgEJxE_3.mp4 28 492 | /segment_path/a0RhbpehcQg_2.mp4 28 493 | /segment_path/jDRvxKq8JzU_1.mp4 28 494 | /segment_path/YwOQinOq9pg_6.mp4 5 495 | /segment_path/O6W7r7PzjMA_1.mp4 5 496 | /segment_path/Ixzc6RJv3GM_3.mp4 5 497 | /segment_path/wohEnR5zve0_2.mp4 5 498 | /segment_path/968cu9kFRPM_1.mp4 5 499 | /segment_path/DhGuOzl5Aks_5.mp4 5 500 | /segment_path/jt7SYhALtPk_5.mp4 5 501 | /segment_path/mHeETNVXeoY_6.mp4 5 502 | /segment_path/IccSohdKw5o_3.mp4 5 503 | /segment_path/PLk3Yfj3lM8_4.mp4 5 504 | /segment_path/5-F_W5WYLKI_5.mp4 5 505 | /segment_path/b7WIr_JkgLQ_6.mp4 5 506 | /segment_path/eylbjkgzFVk_1.mp4 5 507 | /segment_path/ljSkvtnTlIo_2.mp4 5 508 | /segment_path/O6W7r7PzjMA_3.mp4 5 509 | /segment_path/Ixzc6RJv3GM_5.mp4 5 510 | /segment_path/Gf9B_X02XWA_1.mp4 5 511 | /segment_path/XhgN5clDnXw_1.mp4 5 512 | /segment_path/FkyW7DoWHAM_2.mp4 5 513 | /segment_path/Gf9B_X02XWA_2.mp4 5 514 | /segment_path/wohEnR5zve0_5.mp4 5 515 | /segment_path/fkBuY4iMK7E_3.mp4 5 516 | /segment_path/PLk3Yfj3lM8_2.mp4 5 517 | /segment_path/6ydbP1_C8rk_2.mp4 5 518 | /segment_path/pnxRN_Yuyss_5.mp4 5 519 | /segment_path/5-F_W5WYLKI_4.mp4 5 520 | /segment_path/968cu9kFRPM_4.mp4 5 521 | /segment_path/Ixzc6RJv3GM_1.mp4 5 522 | /segment_path/Obloj84_72k_2.mp4 5 523 | /segment_path/bFrFHy_JEDk_2.mp4 5 524 | /segment_path/XhgN5clDnXw_4.mp4 5 525 | /segment_path/9r1ShyTIJ90_1.mp4 48 526 | /segment_path/47dMHoWKpWI_1.mp4 32 527 | /segment_path/47dMHoWKpWI_4.mp4 32 528 | /segment_path/sr9KfphbgQE_1.mp4 32 529 | /segment_path/Ca-nhIeZxuo_1.mp4 32 530 | /segment_path/uRmLT6KXMas_2.mp4 29 531 | /segment_path/S4jQzg8GrXY_3.mp4 29 532 | /segment_path/bJ7ilV9872k_6.mp4 29 533 | /segment_path/PeEVL3aB-T0_4.mp4 29 534 | /segment_path/_bXiwiVKfGs_3.mp4 29 535 | /segment_path/ipliu022a3k_2.mp4 29 536 | /segment_path/PeEVL3aB-T0_1.mp4 29 537 | /segment_path/rh02673jFEI_3.mp4 29 538 | /segment_path/4MVIhgbTOsk_3.mp4 29 539 | /segment_path/umcmHk789Ag_2.mp4 45 540 | /segment_path/7XyfHY9iSWY_2.mp4 45 541 | /segment_path/LPKSw4VUhew_7.mp4 42 542 | /segment_path/PxB8kSbydPc_10.mp4 42 543 | /segment_path/SCF6bmk8KWc_1.mp4 42 544 | /segment_path/PxB8kSbydPc_2.mp4 42 545 | /segment_path/Z6Sr3Rk1k-8_4.mp4 42 546 | /segment_path/afFMH2lgH-U_2.mp4 35 547 | /segment_path/ClWyk7-Idq4_3.mp4 35 548 | /segment_path/ms1ZwHe-g3A_2.mp4 35 549 | /segment_path/pae-MY3-1xw_3.mp4 35 550 | /segment_path/pae-MY3-1xw_1.mp4 35 551 | /segment_path/LdhWCPdV0T8_7.mp4 17 552 | /segment_path/LGYxwWtJWLg_1.mp4 17 553 | /segment_path/jU4PVlIKvlY_2.mp4 17 554 | /segment_path/hA52-4LDYng_3.mp4 17 555 | /segment_path/LdhWCPdV0T8_5.mp4 17 556 | /segment_path/u59Zly1rr1Y_4.mp4 17 557 | /segment_path/x4vRQ_jSJJ0_3.mp4 17 558 | /segment_path/FifaSTgtaBU_9.mp4 17 559 | /segment_path/Y-r9hjRY1DM_4.mp4 17 560 | /segment_path/LGYxwWtJWLg_6.mp4 17 561 | /segment_path/kFtMQc70MS0_4.mp4 17 562 | /segment_path/R1hxfEuYlbM_3.mp4 17 563 | /segment_path/_c4dKyR3enc_3.mp4 17 564 | /segment_path/apJZq1vEjLQ_4.mp4 17 565 | /segment_path/xofnnPS2KyY_1.mp4 17 566 | /segment_path/v6-3Fw1t4H8_9.mp4 17 567 | /segment_path/oyIb_WQJU80_7.mp4 17 568 | /segment_path/FifaSTgtaBU_2.mp4 17 569 | /segment_path/sgtYQbNfURI_7.mp4 17 570 | /segment_path/dAF1K6DR8i0_6.mp4 17 571 | /segment_path/kF3_Y3LOM0o_1.mp4 46 572 | /segment_path/kF3_Y3LOM0o_7.mp4 46 573 | /segment_path/jXLIvgWNW1A_1.mp4 34 574 | /segment_path/DQRPCEbGFSk_1.mp4 34 575 | /segment_path/C5PgxwxA9XU_1.mp4 34 576 | /segment_path/EkKtFMKRIXM_1.mp4 34 577 | /segment_path/kGlSXbnNYvI_1.mp4 43 578 | /segment_path/dtL-2hf6RHk_2.mp4 43 579 | /segment_path/aR73Ik_GthM_1.mp4 50 580 | /segment_path/tP8SXuK2veI_3.mp4 47 581 | /segment_path/d4EOOvtqj6Y_1.mp4 47 582 | /segment_path/tP8SXuK2veI_6.mp4 47 583 | /segment_path/Q9daM1wqPxs_4.mp4 44 584 | /segment_path/Q9daM1wqPxs_1.mp4 44 585 | /segment_path/RFFBfBdScxg_4.mp4 44 586 | /segment_path/uRlAUI2l3dA_2.mp4 44 587 | /segment_path/P6sfE4T9FvM_3.mp4 49 588 | /segment_path/SX_bbPvbKMM_2.mp4 49 589 | -------------------------------------------------------------------------------- /annotations/task2/action_val.csv: -------------------------------------------------------------------------------- 1 | path-label 2 | /segment_path/xsqaL7c22q8_1.mp4 28 3 | /segment_path/Edz9o56EgD0_1.mp4 28 4 | /segment_path/b2UCiQs0KMg_12.mp4 28 5 | /segment_path/yNAPdZ-SiOU_10.mp4 28 6 | /segment_path/6Ny4wSUdYNo_17.mp4 28 7 | /segment_path/C4uRBT4IxWk_3.mp4 3 8 | /segment_path/rFF2z5nnW2Y_4.mp4 3 9 | /segment_path/yuvRc1aBc_w_2.mp4 3 10 | /segment_path/abNuOlCTu-g_1.mp4 3 11 | /segment_path/_yxBZ4qJNe8_1.mp4 3 12 | /segment_path/l2svlMYCBiQ_15.mp4 3 13 | /segment_path/cTVnjY0bXlU_1.mp4 3 14 | /segment_path/3MeO7o0m7oU_1.mp4 3 15 | /segment_path/swIVXa6k-AE_2.mp4 3 16 | /segment_path/OkZeVDj3WI8_3.mp4 3 17 | /segment_path/l2svlMYCBiQ_1.mp4 3 18 | /segment_path/j4vCio2bdbo_4.mp4 3 19 | /segment_path/XztBUNsMQ2c_2.mp4 3 20 | /segment_path/9umaLJ6qdXo_4.mp4 3 21 | /segment_path/gmWjVoc3mM8_7.mp4 3 22 | /segment_path/1OakmxZDa5c_1.mp4 3 23 | /segment_path/n3Ed36YSz9w_6.mp4 3 24 | /segment_path/Qa7I1xf6eKE_1.mp4 3 25 | /segment_path/b2UCiQs0KMg_7.mp4 3 26 | /segment_path/j7bdt74NOcQ_15.mp4 3 27 | /segment_path/5W3o4HjyV2k_11.mp4 3 28 | /segment_path/EAWVQWpgvUA_2.mp4 3 29 | /segment_path/J-8WcSqVwq0_1.mp4 3 30 | /segment_path/25efi9K5eOQ_1.mp4 3 31 | /segment_path/_AL1EoJWM5s_4.mp4 3 32 | /segment_path/rh02673jFEI_1.mp4 3 33 | /segment_path/zevN6AlhH_s_2.mp4 3 34 | /segment_path/DZVoNuBsjN8_2.mp4 3 35 | /segment_path/eUS8tJfDV6c_1.mp4 3 36 | /segment_path/uSZwWPCuh0M_10.mp4 3 37 | /segment_path/Ko-oArJLfFc_2.mp4 3 38 | /segment_path/rfCpegI5fHE_1.mp4 6 39 | /segment_path/dl-p2Kb44B8_3.mp4 6 40 | /segment_path/fZ3RyWrtjYM_2.mp4 6 41 | /segment_path/SsLsuDtaDmE_2.mp4 6 42 | /segment_path/Peyw-eKZJOI_1.mp4 6 43 | /segment_path/PmhpqrIBJD8_11.mp4 6 44 | /segment_path/CgNZLuHrV0o_3.mp4 6 45 | /segment_path/Cl-Cn0qK5lg_6.mp4 6 46 | /segment_path/44mJ9VUsGHM_3.mp4 6 47 | /segment_path/0a3B_9RNCPQ_5.mp4 6 48 | /segment_path/VmWZSryeMjs_2.mp4 6 49 | /segment_path/fwvVdw3tzg0_1.mp4 6 50 | /segment_path/RmeY9KQQ0qk_2.mp4 6 51 | /segment_path/j2VfzKjn4no_3.mp4 6 52 | /segment_path/j2VfzKjn4no_15.mp4 6 53 | /segment_path/yNAPdZ-SiOU_3.mp4 6 54 | /segment_path/PmhpqrIBJD8_1.mp4 6 55 | /segment_path/LyWtN-oRjN0_5.mp4 0 56 | /segment_path/xdi9mCRZnY4_2.mp4 0 57 | /segment_path/9VHtLRhwrBM_3.mp4 0 58 | /segment_path/j4vCio2bdbo_10.mp4 0 59 | /segment_path/lNnvx6hIN78_8.mp4 0 60 | /segment_path/Edz9o56EgD0_4.mp4 0 61 | /segment_path/cKtB81VN_4Q_4.mp4 0 62 | /segment_path/JGgzTJtzaqc_8.mp4 0 63 | /segment_path/YTEniEh6uS0_4.mp4 0 64 | /segment_path/n3Ed36YSz9w_9.mp4 0 65 | /segment_path/KMJCl5PU7yo_4.mp4 0 66 | /segment_path/5W3o4HjyV2k_7.mp4 0 67 | /segment_path/xwJOXomT1jk_2.mp4 0 68 | /segment_path/4yQO__Khl5U_13.mp4 0 69 | /segment_path/jGJNtSF2RLA_5.mp4 0 70 | /segment_path/31lF8VNCJ8k_9.mp4 0 71 | /segment_path/jGJNtSF2RLA_8.mp4 0 72 | /segment_path/yNAPdZ-SiOU_5.mp4 0 73 | /segment_path/wlssXdkjCLs_2.mp4 0 74 | /segment_path/pmpscqwoQpA_5.mp4 0 75 | /segment_path/KMJCl5PU7yo_5.mp4 0 76 | /segment_path/VmWZSryeMjs_7.mp4 0 77 | /segment_path/t26NpV2d98s_1.mp4 0 78 | /segment_path/4yQO__Khl5U_8.mp4 0 79 | /segment_path/j7bdt74NOcQ_12.mp4 0 80 | /segment_path/-DMEyIfWBV8_2.mp4 0 81 | /segment_path/j7bdt74NOcQ_14.mp4 0 82 | /segment_path/58wAvY_aF-Y_8.mp4 0 83 | /segment_path/Cl-Cn0qK5lg_8.mp4 0 84 | /segment_path/j2VfzKjn4no_11.mp4 0 85 | /segment_path/Ko-oArJLfFc_10.mp4 0 86 | /segment_path/9VHtLRhwrBM_6.mp4 0 87 | /segment_path/8OTKidNwLlo_7.mp4 0 88 | /segment_path/zevN6AlhH_s_11.mp4 0 89 | /segment_path/gmWjVoc3mM8_6.mp4 0 90 | /segment_path/Nsm3HIH7QdU_4.mp4 0 91 | /segment_path/zQVt-1gUALU_5.mp4 0 92 | /segment_path/VFSHUlQEE80_2.mp4 1 93 | /segment_path/FMmoEUEiFVY_1.mp4 1 94 | /segment_path/1nDjNf8YXlE_5.mp4 1 95 | /segment_path/ehAp300c0e8_1.mp4 1 96 | /segment_path/ROzfJO6Fkcs_1.mp4 1 97 | /segment_path/Nf1mw11UHAg_7.mp4 1 98 | /segment_path/Fd8GDFzySQ8_5.mp4 1 99 | /segment_path/IrhtHZFRBqU_3.mp4 1 100 | /segment_path/eEyTzVbpG3w_2.mp4 1 101 | /segment_path/VikRTpwgyeo_1.mp4 1 102 | /segment_path/oYUa-BtQnvE_3.mp4 1 103 | /segment_path/fkIeURclwn0_2.mp4 1 104 | /segment_path/Adcba-WMbEE_1.mp4 1 105 | /segment_path/bZWr4lidwaM_4.mp4 1 106 | /segment_path/0cGHykGfO-U_2.mp4 1 107 | /segment_path/ZL_HGe8TsBY_7.mp4 1 108 | /segment_path/pg-xeL-4nyA_1.mp4 1 109 | /segment_path/QcxSQ6VaqfY_1.mp4 1 110 | /segment_path/aq8OwFaIQ4I_2.mp4 1 111 | /segment_path/PqB19w4v_fc_3.mp4 1 112 | /segment_path/ue96cuS-lNs_2.mp4 1 113 | /segment_path/rPTLcEBI5Fc_1.mp4 1 114 | /segment_path/5FfVjiou_YE_8.mp4 1 115 | /segment_path/xAfKZrAYORg_2.mp4 1 116 | /segment_path/WO8qxFxtB1U_3.mp4 1 117 | /segment_path/XnGIUJWMCno_1.mp4 1 118 | /segment_path/DBulVOm5LGk_1.mp4 1 119 | /segment_path/-0z1P7sw2qs_4.mp4 1 120 | /segment_path/AI8jESrzqx0_3.mp4 1 121 | /segment_path/NFYqYfzB9bQ_2.mp4 1 122 | /segment_path/YdiF7c9a19o_3.mp4 1 123 | /segment_path/YNfawBvbtcE_2.mp4 1 124 | /segment_path/1sje0zq-F10_1.mp4 1 125 | /segment_path/Tx17kzQGqlg_2.mp4 1 126 | /segment_path/C4uRBT4IxWk_5.mp4 1 127 | /segment_path/EgFSMM3ReE4_2.mp4 1 128 | /segment_path/QQIRLu-XoIE_6.mp4 31 129 | /segment_path/FQJmw7b-ylI_2.mp4 31 130 | /segment_path/UcNH7ub6iOQ_1.mp4 31 131 | /segment_path/FyHooK1u3pg_3.mp4 31 132 | /segment_path/L2AQMNL0Oow_2.mp4 34 133 | /segment_path/C4uRBT4IxWk_6.mp4 34 134 | /segment_path/V2NApvhoWh4_2.mp4 34 135 | /segment_path/rXHfRWQ42xo_5.mp4 34 136 | /segment_path/zKSxuFD9Jpc_2.mp4 48 137 | /segment_path/8CGlrISSmnU_1.mp4 48 138 | /segment_path/2i_rjQ9SGa0_1.mp4 48 139 | /segment_path/2ZvWaLst-E8_1.mp4 8 140 | /segment_path/HdXcdcyZwfE_2.mp4 8 141 | /segment_path/b1uy8cwYlcM_2.mp4 8 142 | /segment_path/m1cKMlY7Ovk_1.mp4 8 143 | /segment_path/rNnEiYVU6lg_2.mp4 8 144 | /segment_path/mEZ3hxK4WEM_5.mp4 8 145 | /segment_path/R35AdZxATJc_2.mp4 8 146 | /segment_path/P8s4vpliKs4_1.mp4 8 147 | /segment_path/NttqBWSA_DM_2.mp4 8 148 | /segment_path/rLs-Ta6h6zU_2.mp4 8 149 | /segment_path/gFSf0fO0Lug_2.mp4 8 150 | /segment_path/mEZ3hxK4WEM_4.mp4 21 151 | /segment_path/gFSf0fO0Lug_1.mp4 21 152 | /segment_path/WbUFFhsEhZM_1.mp4 21 153 | /segment_path/HdXcdcyZwfE_1.mp4 21 154 | /segment_path/gatJCfnz6bw_1.mp4 21 155 | /segment_path/Fk2Dj6wyQAE_1.mp4 21 156 | /segment_path/svW_04e1Oi8_7.mp4 11 157 | /segment_path/2_-EBIujCQw_3.mp4 11 158 | /segment_path/jyGj_vBpM6k_3.mp4 11 159 | /segment_path/8oX4SQHxKBw_1.mp4 11 160 | /segment_path/gdJv2MwaDyc_2.mp4 11 161 | /segment_path/m1cKMlY7Ovk_8.mp4 11 162 | /segment_path/cM1H92_5hqs_5.mp4 11 163 | /segment_path/gatJCfnz6bw_4.mp4 11 164 | /segment_path/h8CtsPAaa5Y_4.mp4 11 165 | /segment_path/mfiWikreG4k_2.mp4 64 166 | /segment_path/irDLHivG1ro_2.mp4 64 167 | /segment_path/00ZWd_WwJ3g_2.mp4 64 168 | /segment_path/sFFxRTwbhNY_1.mp4 55 169 | /segment_path/tC21KpcPe2U_2.mp4 55 170 | /segment_path/fM0rd3yFSjg_3.mp4 55 171 | /segment_path/r8okzAL6PlQ_4.mp4 67 172 | /segment_path/fnIPcKKj7gk_3.mp4 67 173 | /segment_path/qOjWJHdEaBo_2.mp4 67 174 | /segment_path/wji8Y3zdbU8_1.mp4 26 175 | /segment_path/r8okzAL6PlQ_2.mp4 26 176 | /segment_path/fM0rd3yFSjg_1.mp4 26 177 | /segment_path/k7pxeGS1a3U_2.mp4 26 178 | /segment_path/SlqZsorw7rI_2.mp4 26 179 | /segment_path/OwhjTacbn_I_2.mp4 75 180 | /segment_path/SlqZsorw7rI_3.mp4 75 181 | /segment_path/-BtEiJjukV4_5.mp4 27 182 | /segment_path/69VYrk0GeaU_1.mp4 27 183 | /segment_path/5DSG23B5XGQ_1.mp4 27 184 | /segment_path/51ecxm8oLP8_1.mp4 27 185 | /segment_path/ZFDQ2VMMXZY_1.mp4 27 186 | /segment_path/k7pxeGS1a3U_4.mp4 139 187 | /segment_path/RBPpgeKz31s_5.mp4 24 188 | /segment_path/BxhVnMPLR2I_4.mp4 24 189 | /segment_path/vxnveaa9GYI_4.mp4 24 190 | /segment_path/3cUkDXZzeyg_3.mp4 24 191 | /segment_path/QF8lOgjCKEs_1.mp4 24 192 | /segment_path/-EPJquqxJ1c_1.mp4 41 193 | /segment_path/uFyuiJEd60w_2.mp4 41 194 | /segment_path/57I72z9R1H0_2.mp4 41 195 | /segment_path/R0vlehzbAGE_1.mp4 41 196 | /segment_path/WISzaCdJSQg_2.mp4 37 197 | /segment_path/TjMAUIAk_-s_1.mp4 37 198 | /segment_path/LcVrAL3yFC4_2.mp4 37 199 | /segment_path/kvcX078gIS8_1.mp4 37 200 | /segment_path/hL6nWluFOwk_2.mp4 70 201 | /segment_path/TjMAUIAk_-s_3.mp4 70 202 | /segment_path/T8gxRDL7ig4_5.mp4 23 203 | /segment_path/Iw_sNY02eh4_2.mp4 23 204 | /segment_path/hL6nWluFOwk_3.mp4 23 205 | /segment_path/YqewLkWns_o_7.mp4 23 206 | /segment_path/mg7Esx3UXUc_3.mp4 23 207 | /segment_path/BfYvfy97D0Y_6.mp4 97 208 | /segment_path/ngYVqyOeqe4_2.mp4 97 209 | /segment_path/-fKaTT9nnlg_2.mp4 68 210 | /segment_path/gJDGLzKcqyU_5.mp4 68 211 | /segment_path/ngYVqyOeqe4_1.mp4 68 212 | /segment_path/h1L4gag4xnE_1.mp4 14 213 | /segment_path/VILzeB68orc_1.mp4 14 214 | /segment_path/TNr-P1292F8_1.mp4 14 215 | /segment_path/p3yBBNM3l4Y_1.mp4 14 216 | /segment_path/ysGgGuL7B8s_2.mp4 14 217 | /segment_path/ex90Nui_S5k_1.mp4 14 218 | /segment_path/LUDic-RyUT8_1.mp4 14 219 | /segment_path/QjlSrL6ZfhU_4.mp4 5 220 | /segment_path/uRmLT6KXMas_2.mp4 5 221 | /segment_path/_6DU0pPzzoY_2.mp4 5 222 | /segment_path/QbGUPetvj84_3.mp4 5 223 | /segment_path/jt7SYhALtPk_5.mp4 5 224 | /segment_path/9MMc5A0MMWg_4.mp4 5 225 | /segment_path/bnMRJzhF2lI_5.mp4 5 226 | /segment_path/jx7SAKhFhHc_3.mp4 5 227 | /segment_path/TVXRY2FVOEM_2.mp4 5 228 | /segment_path/ZabDAaRV0Y8_4.mp4 5 229 | /segment_path/wohEnR5zve0_4.mp4 5 230 | /segment_path/eylbjkgzFVk_3.mp4 5 231 | /segment_path/DBulVOm5LGk_2.mp4 5 232 | /segment_path/DKXMxzegPAE_4.mp4 5 233 | /segment_path/eHw1ICKt8sE_4.mp4 5 234 | /segment_path/HnYm7y7jsMY_1.mp4 5 235 | /segment_path/mtpVrWkO8iE_5.mp4 5 236 | /segment_path/ODfGbQ-qsak_3.mp4 5 237 | /segment_path/5-F_W5WYLKI_5.mp4 5 238 | /segment_path/zLY1WkaXzP0_4.mp4 5 239 | /segment_path/6DCKEQVAFR8_2.mp4 116 240 | /segment_path/1sje0zq-F10_2.mp4 20 241 | /segment_path/va6R3N2fRE8_3.mp4 20 242 | /segment_path/zNQqchIJe0o_2.mp4 20 243 | /segment_path/tbW8djVi83o_1.mp4 20 244 | /segment_path/wyWf2uYOKYU_4.mp4 20 245 | /segment_path/Q3a3w3GtbJQ_2.mp4 20 246 | /segment_path/uOGLQsEWeIY_1.mp4 46 247 | /segment_path/uEYMYd8xA8Q_4.mp4 46 248 | /segment_path/JF-pIZsJvZQ_1.mp4 46 249 | /segment_path/w1A20nBbG3s_2.mp4 76 250 | /segment_path/M7ZMSsUm2pM_4.mp4 76 251 | /segment_path/KdPIAgInIGU_5.mp4 49 252 | /segment_path/crCCyOlDY3w_5.mp4 49 253 | /segment_path/6eY9QGkbmlU_6.mp4 49 254 | /segment_path/cEWXs-UmOuA_3.mp4 136 255 | /segment_path/QbpJ5QUZXIk_3.mp4 108 256 | /segment_path/WSjN5gPJ-UU_4.mp4 108 257 | /segment_path/cQm4r5QFHBA_4.mp4 82 258 | /segment_path/QbpJ5QUZXIk_4.mp4 82 259 | /segment_path/2oztxG2wEVU_1.mp4 92 260 | /segment_path/3OjroDjmskM_1.mp4 92 261 | /segment_path/_c4dKyR3enc_2.mp4 4 262 | /segment_path/_AL1EoJWM5s_2.mp4 4 263 | /segment_path/ZabDAaRV0Y8_3.mp4 4 264 | /segment_path/rFF2z5nnW2Y_1.mp4 4 265 | /segment_path/dl-p2Kb44B8_1.mp4 4 266 | /segment_path/NM53mj1iQBo_1.mp4 4 267 | /segment_path/BXWkN_YAMnA_1.mp4 4 268 | /segment_path/I4U5qBSdUb0_2.mp4 4 269 | /segment_path/4B_rg5uTRIo_1.mp4 4 270 | /segment_path/zqZ1n_xSJfE_2.mp4 4 271 | /segment_path/D47KVB-oT98_1.mp4 4 272 | /segment_path/5SJxq-D6-Bk_1.mp4 4 273 | /segment_path/7yDymtT809s_1.mp4 4 274 | /segment_path/3Vlt_EZRGgc_1.mp4 4 275 | /segment_path/Z8rkp1cEyTE_3.mp4 4 276 | /segment_path/QQIRLu-XoIE_3.mp4 4 277 | /segment_path/6gc07xlcuWU_1.mp4 4 278 | /segment_path/RSpxA3MwdVc_1.mp4 4 279 | /segment_path/sgtYQbNfURI_2.mp4 4 280 | /segment_path/u59Zly1rr1Y_4.mp4 4 281 | /segment_path/671uYTHpalI_1.mp4 4 282 | /segment_path/rrUC9449bp8_1.mp4 4 283 | /segment_path/6-33XEnm3to_1.mp4 4 284 | /segment_path/9FvUsjje8ic_1.mp4 4 285 | /segment_path/YAeQAF-WzZc_1.mp4 4 286 | /segment_path/K9cYoQ1BScI_1.mp4 4 287 | /segment_path/xnb7MbXEcDM_1.mp4 4 288 | /segment_path/9JLVK138A4U_1.mp4 4 289 | /segment_path/08eXvhJZprk_1.mp4 4 290 | /segment_path/OyBYv-PAGzU_8.mp4 10 291 | /segment_path/jusD8raVyT4_1.mp4 10 292 | /segment_path/_bXiwiVKfGs_7.mp4 10 293 | /segment_path/wyWf2uYOKYU_5.mp4 10 294 | /segment_path/u8ZL0XLXA54_6.mp4 10 295 | /segment_path/-NoC1rkNgnU_3.mp4 10 296 | /segment_path/6jbVcMgN_HI_2.mp4 10 297 | /segment_path/fOeg8IofzV0_10.mp4 10 298 | /segment_path/jQkZvGXgNDs_4.mp4 10 299 | /segment_path/8WU3Q0_dYXY_2.mp4 58 300 | /segment_path/GrJWPityMfc_2.mp4 58 301 | /segment_path/f6N38hfD4o4_7.mp4 58 302 | /segment_path/kRDMBQEL4I0_2.mp4 40 303 | /segment_path/MTuDsaPbEEk_2.mp4 40 304 | /segment_path/q6Bsqqo0hNE_2.mp4 40 305 | /segment_path/8WU3Q0_dYXY_1.mp4 40 306 | /segment_path/-qXC-IUT7Hk_3.mp4 33 307 | /segment_path/lZ-vwkNg2ho_3.mp4 33 308 | /segment_path/d6JZXKg79yA_4.mp4 33 309 | /segment_path/0a3B_9RNCPQ_3.mp4 33 310 | /segment_path/LcaiMHduqPc_1.mp4 52 311 | /segment_path/IiueXfhu4D0_1.mp4 52 312 | /segment_path/9VKox-wy4fU_1.mp4 52 313 | /segment_path/j5GYMOvjjtk_2.mp4 50 314 | /segment_path/lMTI6MtL1wU_2.mp4 50 315 | /segment_path/CyczQoe3MiQ_2.mp4 50 316 | /segment_path/sIYzY8jnifU_4.mp4 65 317 | /segment_path/_htrPTOvX-s_4.mp4 65 318 | /segment_path/TH1IVwZmAEE_2.mp4 65 319 | /segment_path/5q4APWu8FDY_8.mp4 129 320 | /segment_path/j5GYMOvjjtk_5.mp4 83 321 | /segment_path/-SZbLkUKfAc_5.mp4 83 322 | /segment_path/Yq-FTeXZkvM_3.mp4 66 323 | /segment_path/mCQCLkAcn0Y_5.mp4 66 324 | /segment_path/TH1IVwZmAEE_5.mp4 66 325 | /segment_path/hAoVAxErpsE_6.mp4 117 326 | /segment_path/oYUa-BtQnvE_2.mp4 16 327 | /segment_path/Rr1RuuVML6U_1.mp4 16 328 | /segment_path/nkBTikaXrck_1.mp4 16 329 | /segment_path/SHx_P08m3_Y_2.mp4 16 330 | /segment_path/tLi1PZSyk3o_1.mp4 16 331 | /segment_path/onfb5EX23bo_1.mp4 16 332 | /segment_path/B9LzzcN3JmE_5.mp4 16 333 | /segment_path/nkBTikaXrck_3.mp4 7 334 | /segment_path/47FjtSgpN4U_3.mp4 7 335 | /segment_path/40bZthiD2o0_1.mp4 7 336 | /segment_path/Rr1RuuVML6U_3.mp4 7 337 | /segment_path/Uqa30vUUw0g_3.mp4 7 338 | /segment_path/eEyTzVbpG3w_5.mp4 7 339 | /segment_path/ruhNNUsD4jk_3.mp4 7 340 | /segment_path/Ki388Otp0U8_3.mp4 7 341 | /segment_path/PBeKnXxiblQ_1.mp4 7 342 | /segment_path/_Zj47bS5auo_3.mp4 7 343 | /segment_path/DbUNhWmKw4M_5.mp4 7 344 | /segment_path/B9LzzcN3JmE_1.mp4 7 345 | /segment_path/5FfVjiou_YE_6.mp4 7 346 | /segment_path/NG7E1OKqpIk_4.mp4 7 347 | /segment_path/oAV7ZzoYNss_1.mp4 146 348 | /segment_path/1_2u8oNloBs_2.mp4 17 349 | /segment_path/R5JTKMWCzQ0_1.mp4 17 350 | /segment_path/mXn3f-o-l_M_1.mp4 17 351 | /segment_path/Gds4pc2E8cw_2.mp4 17 352 | /segment_path/WMMv2nR5Qeg_3.mp4 17 353 | /segment_path/pN1tZo4eaOM_1.mp4 17 354 | /segment_path/ELWyxjy4jOo_1.mp4 114 355 | /segment_path/qXtsl5_G7wM_1.mp4 2 356 | /segment_path/XnGIUJWMCno_5.mp4 2 357 | /segment_path/QQIRLu-XoIE_2.mp4 2 358 | /segment_path/uAk9ppD-KZk_2.mp4 2 359 | /segment_path/2hAmWBEzFBU_8.mp4 2 360 | /segment_path/EkcmabUBzyc_2.mp4 2 361 | /segment_path/oxdaSeq4EVU_2.mp4 2 362 | /segment_path/_S8JfTbZbdk_2.mp4 2 363 | /segment_path/0VGuYnlB2Yc_6.mp4 2 364 | /segment_path/ODmwCavm6kc_2.mp4 2 365 | /segment_path/J9V8oVSIqXI_2.mp4 2 366 | /segment_path/DQRPCEbGFSk_1.mp4 2 367 | /segment_path/v6-3Fw1t4H8_2.mp4 2 368 | /segment_path/9Dgjirf3Dss_7.mp4 2 369 | /segment_path/WISzaCdJSQg_1.mp4 2 370 | /segment_path/C5lVMsrp33E_4.mp4 2 371 | /segment_path/LdhWCPdV0T8_5.mp4 2 372 | /segment_path/B9LzzcN3JmE_11.mp4 2 373 | /segment_path/KQNaB37x8-A_3.mp4 2 374 | /segment_path/ieTSyTRlyLY_1.mp4 2 375 | /segment_path/aV9JJSTU6Ak_1.mp4 2 376 | /segment_path/KlWqFDhEphc_3.mp4 2 377 | /segment_path/P4JOSZbfrGM_2.mp4 2 378 | /segment_path/N18GtJ7znh8_1.mp4 2 379 | /segment_path/Zxn9X6XXOnU_7.mp4 2 380 | /segment_path/w1A20nBbG3s_1.mp4 2 381 | /segment_path/dAF1K6DR8i0_5.mp4 2 382 | /segment_path/9JLVK138A4U_2.mp4 2 383 | /segment_path/Dxb-zo3lWPM_1.mp4 2 384 | /segment_path/oPH-8S-d9Dw_1.mp4 2 385 | /segment_path/5q4APWu8FDY_3.mp4 2 386 | /segment_path/ZabDAaRV0Y8_1.mp4 2 387 | /segment_path/fGsYDa3bzzI_7.mp4 2 388 | /segment_path/qOM9ia17Nwo_2.mp4 109 389 | /segment_path/lowOxcK5JAA_2.mp4 109 390 | /segment_path/tbheA9rm-vY_3.mp4 44 391 | /segment_path/MEbsVeGnqJo_4.mp4 44 392 | /segment_path/V8pJulMlBmk_2.mp4 44 393 | /segment_path/1bNc2CgwU-4_2.mp4 44 394 | /segment_path/ovxMconfxRo_3.mp4 89 395 | /segment_path/qXtsl5_G7wM_5.mp4 89 396 | /segment_path/1bNc2CgwU-4_1.mp4 35 397 | /segment_path/Inf44ssPIUA_3.mp4 35 398 | /segment_path/o0zEmaGBgBY_1.mp4 35 399 | /segment_path/0_qk_CrqRM4_1.mp4 35 400 | /segment_path/5FUnepktYxE_1.mp4 29 401 | /segment_path/6Ayxz5p7GBs_5.mp4 29 402 | /segment_path/xnb7MbXEcDM_2.mp4 29 403 | /segment_path/T8MNDHUhK_Y_1.mp4 29 404 | /segment_path/O_0pglA201U_1.mp4 29 405 | /segment_path/7qYYDH4NUj0_1.mp4 59 406 | /segment_path/msRft-g-k_s_1.mp4 59 407 | /segment_path/erabEK1fB_c_1.mp4 59 408 | /segment_path/J0KI-i6aEmc_1.mp4 12 409 | /segment_path/RzpVnqPwfhs_3.mp4 12 410 | /segment_path/MiDnGwVBUz8_2.mp4 12 411 | /segment_path/SUB0hybpY-Y_5.mp4 12 412 | /segment_path/OGezrQzRN58_3.mp4 12 413 | /segment_path/g-z44AlcZJY_1.mp4 12 414 | /segment_path/5nQYrFwC7G4_1.mp4 12 415 | /segment_path/UU2Zy6Q6eDg_1.mp4 12 416 | /segment_path/0F62OyVKOwk_5.mp4 71 417 | /segment_path/sC9vpZLLLLI_7.mp4 71 418 | /segment_path/Xmmw9g4eNqs_1.mp4 53 419 | /segment_path/zz7x23rrwl8_1.mp4 53 420 | /segment_path/yAyOVxAwm78_2.mp4 53 421 | /segment_path/DzDDgK_PdR4_7.mp4 60 422 | /segment_path/T3COi_qVfMU_4.mp4 60 423 | /segment_path/f6N38hfD4o4_4.mp4 60 424 | /segment_path/0a3B_9RNCPQ_15.mp4 118 425 | /segment_path/knuKaVRdR5k_2.mp4 22 426 | /segment_path/PiZbnalFlww_1.mp4 22 427 | /segment_path/e61ASYkJIRw_1.mp4 22 428 | /segment_path/_S8JfTbZbdk_3.mp4 22 429 | /segment_path/NU-J9jkNp8Q_2.mp4 22 430 | /segment_path/knuKaVRdR5k_1.mp4 15 431 | /segment_path/SDFjrkfSjDM_5.mp4 15 432 | /segment_path/tlQAHvtYZb0_2.mp4 15 433 | /segment_path/D7FnXaoPwR0_1.mp4 15 434 | /segment_path/QjlSrL6ZfhU_2.mp4 15 435 | /segment_path/oWjA-D0ugg8_3.mp4 15 436 | /segment_path/vvD-fKq8IyM_2.mp4 15 437 | /segment_path/e49kAYjvMcQ_3.mp4 72 438 | /segment_path/GQbJ495g0nI_3.mp4 72 439 | /segment_path/2Ux_m8iCgcU_4.mp4 54 440 | /segment_path/cZ_eoeZx6kY_4.mp4 54 441 | /segment_path/zRucPU7bGsA_2.mp4 54 442 | /segment_path/0CCSV5QFgGo_3.mp4 47 443 | /segment_path/KBDLtoPR140_2.mp4 47 444 | /segment_path/Np90zUnCB-g_3.mp4 47 445 | /segment_path/Nv8tTPsiFCA_4.mp4 32 446 | /segment_path/RH-gsrUwLrA_2.mp4 32 447 | /segment_path/cx5G1VdC9UA_4.mp4 32 448 | /segment_path/UY8CCr_Ec6w_2.mp4 32 449 | /segment_path/3lorXZWgnDI_3.mp4 13 450 | /segment_path/DbUNhWmKw4M_6.mp4 13 451 | /segment_path/t0c8Yp_anAE_4.mp4 13 452 | /segment_path/57zApLuswoo_2.mp4 13 453 | /segment_path/sAkzifd81rk_4.mp4 13 454 | /segment_path/7q6HHVy-bjw_5.mp4 13 455 | /segment_path/yg9uopmNeUU_4.mp4 13 456 | /segment_path/l55OSJl6hIk_3.mp4 13 457 | /segment_path/cCgdYZoybhY_7.mp4 84 458 | /segment_path/4B_rg5uTRIo_5.mp4 84 459 | /segment_path/hGAZXMj_3gw_2.mp4 9 460 | /segment_path/moqWBk6Ulfc_2.mp4 9 461 | /segment_path/0F62OyVKOwk_4.mp4 9 462 | /segment_path/RzpVnqPwfhs_2.mp4 9 463 | /segment_path/Kcih9VWhp98_3.mp4 9 464 | /segment_path/SxpnXcfInUE_5.mp4 9 465 | /segment_path/sXOQ9VaYEv0_5.mp4 9 466 | /segment_path/OhShkKHk9-M_2.mp4 9 467 | /segment_path/0F62OyVKOwk_2.mp4 9 468 | /segment_path/hxxXvsrIL18_2.mp4 9 469 | /segment_path/J0KI-i6aEmc_3.mp4 110 470 | /segment_path/2SqBXs-Y3ts_7.mp4 110 471 | /segment_path/0h9Bj-OLSr0_2.mp4 147 472 | /segment_path/pqrT_abh-EM_3.mp4 121 473 | /segment_path/3kXnL0AQhYA_2.mp4 102 474 | /segment_path/oakADmlMc1c_2.mp4 102 475 | /segment_path/8z44ryOVEEM_3.mp4 77 476 | /segment_path/n6l19CWi710_2.mp4 77 477 | /segment_path/Nvrlfmg8QkY_2.mp4 98 478 | /segment_path/kSHJ27s6Jsk_4.mp4 98 479 | /segment_path/Si6yUaMM2c8_1.mp4 93 480 | /segment_path/GWBrbvIhncw_1.mp4 93 481 | /segment_path/YRrJqyh7OfQ_1.mp4 38 482 | /segment_path/bJ7ilV9872k_5.mp4 38 483 | /segment_path/iJvKxxn40zE_1.mp4 38 484 | /segment_path/uRmLT6KXMas_1.mp4 38 485 | /segment_path/uRmLT6KXMas_3.mp4 56 486 | /segment_path/I-y9hYJVHc0_3.mp4 56 487 | /segment_path/rh02673jFEI_4.mp4 56 488 | /segment_path/J9V8oVSIqXI_3.mp4 85 489 | /segment_path/gTxix8KzjkQ_2.mp4 85 490 | /segment_path/aZOYJigvPbI_4.mp4 57 491 | /segment_path/qeZDy8O_cn4_5.mp4 57 492 | /segment_path/mtgdUp17Zx0_2.mp4 57 493 | /segment_path/dS9H3EMxQJI_8.mp4 124 494 | /segment_path/8PKKTwzxG7k_1.mp4 51 495 | /segment_path/7F4nYxJgoJY_1.mp4 51 496 | /segment_path/dFebX7PCg3w_1.mp4 51 497 | /segment_path/kjYJfpQ1v5k_1.mp4 69 498 | /segment_path/5jci72lIJ-8_2.mp4 69 499 | /segment_path/et4GjVERUR4_2.mp4 69 500 | /segment_path/8j0fucgtSGM_6.mp4 104 501 | /segment_path/9ba1LjgPHGg_3.mp4 104 502 | /segment_path/4rifH8nB48o_4.mp4 137 503 | /segment_path/3cUkDXZzeyg_2.mp4 36 504 | /segment_path/DuO1tWIDEe8_4.mp4 36 505 | /segment_path/b1uy8cwYlcM_4.mp4 36 506 | /segment_path/xOhTNHHWcMc_4.mp4 36 507 | /segment_path/x41zyB73ZHI_4.mp4 78 508 | /segment_path/8BaeLRCb0B4_2.mp4 78 509 | /segment_path/WZgh0hgEJxE_2.mp4 45 510 | /segment_path/a0RhbpehcQg_2.mp4 45 511 | /segment_path/uT9vOC6lm_w_1.mp4 45 512 | /segment_path/DxA2Nng_KBo_3.mp4 45 513 | /segment_path/C4uRBT4IxWk_7.mp4 122 514 | /segment_path/6n--CYH4Pw4_1.mp4 73 515 | /segment_path/gt6PsX4upCU_1.mp4 73 516 | /segment_path/xG_BYaIugPg_1.mp4 61 517 | /segment_path/Vww-G6oObTA_4.mp4 61 518 | /segment_path/VZeZREFZVXU_2.mp4 61 519 | /segment_path/BWph-kU5VcM_5.mp4 86 520 | /segment_path/1OakmxZDa5c_5.mp4 86 521 | /segment_path/qM_GS8Swk-k_2.mp4 94 522 | /segment_path/cnp4XfHaQgE_4.mp4 94 523 | /segment_path/JLkujIaDKsQ_3.mp4 30 524 | /segment_path/Cpoc5ht51NY_6.mp4 30 525 | /segment_path/F0ve4k_sINQ_3.mp4 30 526 | /segment_path/F-VPXPctDV0_1.mp4 30 527 | /segment_path/VHjUH7yXiJU_3.mp4 30 528 | /segment_path/m1cKMlY7Ovk_5.mp4 62 529 | /segment_path/Cpoc5ht51NY_5.mp4 62 530 | /segment_path/Cpoc5ht51NY_7.mp4 62 531 | /segment_path/DJd02xCNNc0_3.mp4 19 532 | /segment_path/s_20-g15v54_4.mp4 19 533 | /segment_path/DMh25N3Qa4Y_2.mp4 19 534 | /segment_path/XhgN5clDnXw_3.mp4 19 535 | /segment_path/fkBuY4iMK7E_4.mp4 19 536 | /segment_path/b7WIr_JkgLQ_5.mp4 19 537 | /segment_path/DhGuOzl5Aks_6.mp4 18 538 | /segment_path/5-F_W5WYLKI_6.mp4 18 539 | /segment_path/P6sfE4T9FvM_3.mp4 18 540 | /segment_path/jx7SAKhFhHc_4.mp4 18 541 | /segment_path/6zcsYUqaWCE_5.mp4 18 542 | /segment_path/T4NWm7mqbHI_6.mp4 18 543 | /segment_path/fkIeURclwn0_4.mp4 105 544 | /segment_path/UcNH7ub6iOQ_4.mp4 105 545 | /segment_path/RpB_qVyrIgU_1.mp4 25 546 | /segment_path/Zxn9X6XXOnU_3.mp4 25 547 | /segment_path/wyWf2uYOKYU_6.mp4 25 548 | /segment_path/ilbYTM2tnpE_2.mp4 25 549 | /segment_path/XTCtlupUbCA_1.mp4 25 550 | /segment_path/7l7hZVYkgto_3.mp4 91 551 | /segment_path/DQRPCEbGFSk_2.mp4 91 552 | /segment_path/3-SOKCuMujc_3.mp4 148 553 | /segment_path/3Vlt_EZRGgc_5.mp4 95 554 | /segment_path/ryY29F8Wx_I_5.mp4 95 555 | /segment_path/dl-p2Kb44B8_8.mp4 63 556 | /segment_path/3-SOKCuMujc_7.mp4 63 557 | /segment_path/GnoMoLePRvE_2.mp4 63 558 | /segment_path/PIBP3lEJCKA_1.mp4 130 559 | /segment_path/KBDLtoPR140_8.mp4 125 560 | /segment_path/TjMAUIAk_-s_4.mp4 103 561 | /segment_path/ynYZyE9GFfs_2.mp4 103 562 | /segment_path/gt6PsX4upCU_4.mp4 87 563 | /segment_path/4GpXy_srgRs_2.mp4 87 564 | /segment_path/SSFkoA3qt68_1.mp4 140 565 | /segment_path/KBDLtoPR140_1.mp4 99 566 | /segment_path/DALragCYQr8_1.mp4 99 567 | /segment_path/YeXollGBQ8Y_1.mp4 79 568 | /segment_path/47dMHoWKpWI_2.mp4 79 569 | /segment_path/VPGLhcM7r94_2.mp4 115 570 | /segment_path/4UdYawfe1R0_3.mp4 126 571 | /segment_path/cQm4r5QFHBA_2.mp4 100 572 | /segment_path/jKR8SwI0gFw_3.mp4 100 573 | /segment_path/SjrIit0fYgo_2.mp4 42 574 | /segment_path/968cu9kFRPM_3.mp4 42 575 | /segment_path/b7WIr_JkgLQ_2.mp4 42 576 | /segment_path/6ydbP1_C8rk_7.mp4 42 577 | /segment_path/iivqpZsN76M_3.mp4 111 578 | /segment_path/zWyQW8YIIf8_2.mp4 111 579 | /segment_path/ZeWGuUbdnTU_1.mp4 106 580 | /segment_path/5jci72lIJ-8_1.mp4 106 581 | /segment_path/Nc2zl2SeQNo_1.mp4 80 582 | /segment_path/wP1_CqcEV5Y_1.mp4 80 583 | /segment_path/9VKox-wy4fU_4.mp4 90 584 | /segment_path/CyczQoe3MiQ_6.mp4 90 585 | /segment_path/khKKkn-7vQM_2.mp4 39 586 | /segment_path/zSU8dvbdKnU_2.mp4 39 587 | /segment_path/86RzAgHu75U_2.mp4 39 588 | /segment_path/PRFGSwr7-Po_3.mp4 39 589 | /segment_path/8WEjKytxNxg_6.mp4 43 590 | /segment_path/5qd1EONfJi4_4.mp4 43 591 | /segment_path/R1hxfEuYlbM_4.mp4 43 592 | /segment_path/_c4dKyR3enc_4.mp4 43 593 | /segment_path/O_0pglA201U_2.mp4 112 594 | /segment_path/i4qwUWVR0ik_3.mp4 112 595 | /segment_path/FbTEEN7p-p4_4.mp4 123 596 | /segment_path/oFzfGZOYCDc_4.mp4 149 597 | /segment_path/n6l19CWi710_4.mp4 131 598 | /segment_path/7CTdDHBzj7Q_1.mp4 88 599 | /segment_path/cWyPbYD9lGo_1.mp4 88 600 | /segment_path/ZVRp-8w3qhI_2.mp4 81 601 | /segment_path/et4GjVERUR4_3.mp4 81 602 | /segment_path/p3yBBNM3l4Y_6.mp4 127 603 | /segment_path/OyBYv-PAGzU_2.mp4 119 604 | /segment_path/Z8rkp1cEyTE_5.mp4 113 605 | /segment_path/TS_AG7lHr3E_6.mp4 113 606 | /segment_path/jKR8SwI0gFw_5.mp4 141 607 | /segment_path/LPKSw4VUhew_10.mp4 128 608 | /segment_path/quqV86VI6Ts_1.mp4 120 609 | /segment_path/oakADmlMc1c_3.mp4 142 610 | /segment_path/ZtmLdYTVszA_9.mp4 132 611 | /segment_path/m0xTVy6djRE_5.mp4 133 612 | /segment_path/cx5G1VdC9UA_7.mp4 134 613 | /segment_path/uRlAUI2l3dA_1.mp4 96 614 | /segment_path/To-KPRqE0_w_5.mp4 96 615 | /segment_path/VaUTYwC5how_1.mp4 135 616 | /segment_path/gbAYUh77P7k_3.mp4 143 617 | /segment_path/ZtmLdYTVszA_11.mp4 150 618 | /segment_path/dtL-2hf6RHk_1.mp4 151 619 | /segment_path/rNnEiYVU6lg_5.mp4 74 620 | /segment_path/svW_04e1Oi8_5.mp4 74 621 | /segment_path/TZKn9CcJ-Y4_7.mp4 152 622 | /segment_path/SX_bbPvbKMM_2.mp4 153 623 | /segment_path/RFFBfBdScxg_2.mp4 138 624 | /segment_path/Lta0GbIKCZA_4.mp4 144 625 | /segment_path/XeMwoMk8wSw_1.mp4 101 626 | /segment_path/svW_04e1Oi8_3.mp4 101 627 | /segment_path/TZ6xeS_GjSk_3.mp4 107 628 | /segment_path/_Bj0FbjFFJY_1.mp4 107 629 | /segment_path/Q9daM1wqPxs_5.mp4 145 630 | -------------------------------------------------------------------------------- /tools/downloader.py: -------------------------------------------------------------------------------- 1 | import yt_dlp 2 | import json 3 | from tqdm import tqdm 4 | from concurrent.futures import ThreadPoolExecutor 5 | import os 6 | 7 | 8 | def download_video(video_id, output_path): 9 | ydl_opts = { 10 | 'outtmpl': os.path.join(output_path, f'%(id)s.%(ext)s'), 11 | 'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best', 12 | 'ignoreerrors': False, 13 | } 14 | with yt_dlp.YoutubeDL(ydl_opts) as ydl: 15 | try: 16 | ydl.download([video_id]) 17 | except: 18 | return video_id 19 | 20 | 21 | def download_videos(video_ids, output_path): 22 | os.makedirs(output_path, exist_ok=True) 23 | failed_videos = [] 24 | with ThreadPoolExecutor(max_workers=8) as executor: 25 | futures = [] 26 | for video_id in video_ids: 27 | futures.append(executor.submit(download_video, video_id, output_path)) 28 | for future in tqdm(futures, total=len(futures), desc='Downloading', unit='video'): 29 | result = future.result() 30 | if result: 31 | failed_videos.append(result) 32 | file_path = "failed_list.txt" 33 | write_list_to_file(file_path, failed_videos) 34 | return failed_videos 35 | 36 | 37 | def write_list_to_file(file_path, input_list): 38 | try: 39 | with open(file_path, 'w') as file: 40 | for item in input_list: 41 | file.write(str(item) + '\n') 42 | except Exception as e: 43 | print(f"Error occurred: {e}") 44 | 45 | 46 | if __name__ == '__main__': 47 | output_path = './dataset/original_video' 48 | video_ids = ['--Ly-qjodoI', '-0z1P7sw2qs', '-1mH9wYWd5w', '-2N0GEdJltw', '-aeuTQzxq6Y', '-BtEiJjukV4', '-C7K3i5Ea7s', '-DMEyIfWBV8', 49 | '-EPJquqxJ1c', '-FdD0-zF_K4', '-fKaTT9nnlg', '-fvRejnoN3M', '-ged3dOpfK8', '-hiZ75P9iyM', '-JSu9M6Re4w', '-k2pgWCPmsc', 50 | '-l635D0n-kk', '-MsywHWz1Z0', '-NoC1rkNgnU', '-qXC-IUT7Hk', '-QznLhQqdHI', '-SZbLkUKfAc', '-uyBJ0nv4oI', '-UZx2zSTfdo', 51 | '-XBAxsIcQs8', '-Y2wMe48BfI', '-Yst1qShEbo', '-zlNQfbrStg', '-zT0oDRiz6E', '-_OkMf_umyE', '0-90-ucVHFs', '00ZWd_WwJ3g', 52 | '01D17PnsGpA', '02PqJ8iPLxQ', '031fy7eHW4o', '06Eero7ok5A', '06wv8JmNyy8', '06XQuZLTENE', '07wJDVB95dI', '08eXvhJZprk', 53 | '0a3B_9RNCPQ', '0B4x_mHgVN4', '0CCSV5QFgGo', '0cGHykGfO-U', '0dUlnBGu4rY', '0F62OyVKOwk', '0fJPgUFJLcQ', '0h9Bj-OLSr0', 54 | '0IWzSE0ZSlE', '0LPkpY4KIkU', '0MIQLk4nwms', '0mSQn8SBmRE', '0Oj4AsZruZk', '0RcsKGEc-fw', '0t2t6Lh-k3U', '0tKSN4M_YZI', 55 | '0VGuYnlB2Yc', '0vjVJuPik9k', '0vtVEtVXVz4', '0WMoZ_sInmc', '0xT5mfWrW_I', '0z5Xtb8ipRo', '0_qk_CrqRM4', '0_XPg6jBVvY', 56 | '11hwCe3w_UU', '1bNc2CgwU-4', '1e7USvwCAxQ', '1f4VGwqUKYI', '1fV0Y5QLzLQ', '1jOmhNgJNuY', '1jw80-_vWtA', '1K7alb7Ne_A', 57 | '1lsprM6MJ1A', '1mfjSry8WUQ', '1nDjNf8YXlE', '1OakmxZDa5c', '1OgR_bJM_Zw', '1Onm7fJ0zYE', '1PNlj_VEDtI', '1PqD-MYDV3g', 58 | '1rlxKsx_n-Y', '1sje0zq-F10', '1WLcyNiBt2s', '1WxoWefo7gQ', '1_2u8oNloBs', '21v_YbzDiJ8', '23Ioifx2zX0', '24Jlbd9bOr4', 59 | '25DJ1kvaN60', '25efi9K5eOQ', '29QOClzPHGQ', '29wOwkW7-ME', '2hAmWBEzFBU', '2i_rjQ9SGa0', '2KtmwJDhujU', '2M2gPCNunZw', 60 | '2oztxG2wEVU', '2paEgKKEK5o', '2R2CzkzVdL0', '2rZoIVf4pYY', '2sNV9dixX4o', '2SqBXs-Y3ts', '2tjFVGih71A', '2Ux_m8iCgcU', 61 | '2vt973I9_1Q', '2WsBzx82CnQ', '2ZvWaLst-E8', '2_-EBIujCQw', '3-SOKCuMujc', '31lF8VNCJ8k', '31qBW0Imj_0', '31rEOB9AwG4', 62 | '32zHF9Yvyp0', '34TOon0KiPQ', '396l_q4T1NA', '3cUkDXZzeyg', '3dTzfSRxRZc', '3fk_8uR_uhQ', '3gLhooOemZw', '3GO_A7O8ILg', 63 | '3iQ664gFHLw', '3kXnL0AQhYA', '3lorXZWgnDI', '3MeO7o0m7oU', '3Nw_fZ3B1sc', '3OjroDjmskM', '3RCUz_d9XQQ', '3Vlt_EZRGgc', 64 | '3yA1e4RFlfg', '3_UUq7p6-5M', '40ad0Iq23KA', '40bZthiD2o0', '41y1unGur-Q', '44mJ9VUsGHM', '45C8N8mRKcc', '47dMHoWKpWI', 65 | '47FjtSgpN4U', '47UgIBUoR_A', '48M_CwJE7Z0', '49jF6RZy3GE', '4A2I-sZHXvI', '4B_rg5uTRIo', '4c6bm_iT6pg', '4Du0_Sd_s2s', 66 | '4eHQ5KmOZaM', '4eJAxp-gqn4', '4fQUQ94fPYM', '4GpXy_srgRs', '4MVIhgbTOsk', '4NAJuycN4Co', '4ntqS_R1r70', '4ONAC6uE6xA', 67 | '4Qil5I1XLZ8', '4rifH8nB48o', '4rQkQj3gv3Q', '4UdYawfe1R0', '4UvjeoJGgV4', '4yQO__Khl5U', '4zxgX9IpmMY', '5-F_W5WYLKI', 68 | '51ecxm8oLP8', '57I72z9R1H0', '57zApLuswoo', '58Ku24EerKw', '58wAvY_aF-Y', '59B4LwCURJ0', '5Cid7q9_Uq0', '5DSG23B5XGQ', 69 | '5egAHIPiGlY', '5EVZHPaszAI', '5FfVjiou_YE', '5Fud4xTBgwk', '5FUnepktYxE', '5I1lclB_tPU', '5jci72lIJ-8', '5KPMeBTNOfA', 70 | '5nQYrFwC7G4', '5q4APWu8FDY', '5qd1EONfJi4', '5qfIRPxoHuw', '5SJxq-D6-Bk', '5W3o4HjyV2k', '5w6EUzNYLXk', '5wxGEfY9egw', 71 | '5Z-teZy3bCw', '6-33XEnm3to', '64-2Ly9aBn8', '660fOrTJnCc', '671uYTHpalI', '69VYrk0GeaU', '6Ayxz5p7GBs', '6BnxXcUxcBs', 72 | '6cSbLJnjzTA', '6DCKEQVAFR8', '6eGGq4fz8SE', '6Er52I7LxPs', '6eY9QGkbmlU', '6gc07xlcuWU', '6jbVcMgN_HI', '6n--CYH4Pw4', 73 | '6Ny4wSUdYNo', '6oHYb6_bFYo', '6s27NmJQi70', '6Xu2Sgk1y80', '6Y4DDmlWtwo', '6ydbP1_C8rk', '6zcsYUqaWCE', '6ZX6F1PUUe0', 74 | '71LlfdW548U', '724-cEL_Z6I', '74kVE4Ixn8g', '74ttY4-QlIE', '77XNYG1twd4', '7Bm_BwZrq6c', '7CTdDHBzj7Q', '7F4nYxJgoJY', 75 | '7jRryPp8C3A', '7kv3YZNpo8Q', '7l7hZVYkgto', '7OGnuOkTDsU', '7Ps9jswWgbw', '7q6HHVy-bjw', '7qYYDH4NUj0', '7s8W4dnsFQQ', 76 | '7XPQYY0B7Rk', '7XyfHY9iSWY', '7yDymtT809s', '86RzAgHu75U', '87mdfPOh_Rw', '8Ab1Z-c3EjU', '8BaeLRCb0B4', '8CGlrISSmnU', 77 | '8j0fucgtSGM', '8MPdw-0HbTg', '8OTKidNwLlo', '8oX4SQHxKBw', '8PKKTwzxG7k', '8pKp9dnRX7c', '8PZqdLjy5Tc', '8uXhDt79KNQ', 78 | '8vKssX6wvwY', '8w-3h50E17Q', '8WEjKytxNxg', '8WU3Q0_dYXY', '8z44ryOVEEM', '8_LRJ8vLMxI', '95lKeVet2qQ', '968cu9kFRPM', 79 | '98ftIyS59lw', '99TlXo46g0I', '9akxlH6BtyM', '9ba1LjgPHGg', '9c1Jq7Ekago', '9Dgjirf3Dss', '9FvUsjje8ic', '9i2oJR_1ZXs', 80 | '9jAc3y6Gv4k', '9JLVK138A4U', '9kOYDulwQv0', '9LYBiLy_a-k', '9mGUSQKOVw4', '9MMc5A0MMWg', '9msWAqfA5lg', '9OCVSsKJsdE', 81 | '9oeVA0nl0m0', '9r1ShyTIJ90', '9rDS5VK1Xqs', '9sFPahcX7z0', '9umaLJ6qdXo', '9vhOSbxGle8', '9VHtLRhwrBM', '9VKox-wy4fU', 82 | '9XkOssKciqU', 'a0RhbpehcQg', 'a1-dLLOeKUA', 'a1DFmgLJmMk', 'a4L_014Czao', 'abNuOlCTu-g', 'Adcba-WMbEE', 'AdkoFiFrz7o', 83 | 'AdnKbipn5es', 'ae1lL3GLVdM', 'Af4CT12J8GI', 'afFMH2lgH-U', 'ag5-goiMNsQ', 'AGnKuYiN1Bg', 'AgVZ3p8OJ0A', 'Ai3YQJbuS0A', 84 | 'AI8jESrzqx0', 'ajDGW_bOm5Y', 'AkeRnPUGdv0', 'aKPL2Rmj0hI', 'aKTGjx3afvs', 'aLoP1MG8aLA', 'AMO52zk3AXk', 'aN78RVfe0Js', 85 | 'aNc7TR80tVo', 'ANVFQV0PHIo', 'AnYWNPDKwjc', 'ap1qFh-lS-8', 'apJZq1vEjLQ', 'APQwu9Qx3As', 'ApSPE69IPNc', 'aq8OwFaIQ4I', 86 | 'AqBOMERKS_4', 'aQYQtmzkd28', 'aR73Ik_GthM', 'arqG_2ftfOY', 'ARRfrFwC87M', 'AuGRfsWTFnA', 'aUkEBsZGfA4', 'aV9JJSTU6Ak', 87 | 'AvbxofLe-MI', 'aw_2mvb69Ow', 'ayf3coj_zMQ', 'aZ3DJnCxujA', 'aZOYJigvPbI', 'azQ7tuTFmno', 'B-g_5WLffMM', 'B02i_pL7CnA', 88 | 'b1nxS_yjiEk', 'B1oCcX1BCrQ', 'b1uy8cwYlcM', 'b26uL9PtfKE', 'b2UCiQs0KMg', 'b6c4-U6Z1RI', 'B7SJ3QW5nik', 'B7SWLiDjMvI', 89 | 'b7WIr_JkgLQ', 'B9LzzcN3JmE', 'Ba55wzNxM2w', 'BADeHh0xNME', 'bctTKygOj6o', 'bE4MZ6NQhsA', 'BfP1yZevi1c', 'bFrFHy_JEDk', 90 | 'BfYvfy97D0Y', 'bGRpVOlkmSI', 'BH9mYVQGdm4', 'BHH_nHIhJO4', 'bj1LoKDgR4A', 'BJ76KUwrn3I', 'bJ7ilV9872k', 'BJXsXISIQhk', 91 | 'bL3PQ_3hrbc', 'BLm4fCyj1CY', 'BloOJGSZ2S8', 'BLoV1TTTe9Y', 'BLVruFeiJGA', 'BM8hJsBsRXI', 'bmI0TI0M9D4', 'bNLtwX2LDQI', 92 | 'bnMRJzhF2lI', 'bnvs8IzCQqk', 'Bpng0Ex9pho', 'BQHKdSKK7kk', 'bRPSi32Gcw4', 'BTBBzcdZ0kg', 'bVbBCtiFIPU', 'BwJL9FO6fMg', 93 | 'BWph-kU5VcM', 'BwzeCSd2bVc', 'BxhVnMPLR2I', 'BXWkN_YAMnA', 'bZWr4lidwaM', 'C-tFDOR--fQ', 'C4uRBT4IxWk', 'C5lVMsrp33E', 94 | 'C5PgxwxA9XU', 'C7r2LlGqrcE', 'Ca-nhIeZxuo', 'casR8s0oS6g', 'cbltQ7-EZJ0', 'cbT18UtpGJQ', 'CbwhqSnt54I', 'cCgdYZoybhY', 95 | 'cctNcVuGYfo', 'cCzwH7d4Ags', 'cDcuU3KVpuo', 'CEq6QWOHTlo', 'cEWXs-UmOuA', 'cF1Nu3o87Z0', 'CfEymG-VQNQ', 'CgNZLuHrV0o', 96 | 'Cgrn1Vr010E', 'CguNhVWqojs', 'cHPUPBFVHaU', 'CIBf9EewvU0', 'cIx7mOV8FM8', 'CJrrnLxe3lc', 'CJ_-t9AtkpA', 'cK5YxQFFlZE', 97 | 'cKtB81VN_4Q', 'Cl-Cn0qK5lg', 'ClWyk7-Idq4', 'cM1H92_5hqs', 'cmUXo4Crrm0', 'CNjDXnLcVfA', 'cnp4XfHaQgE', 'CosdRXJ9jAw', 98 | 'cpnRZgCWIXU', 'Cpoc5ht51NY', 'cqD-EvrqhKU', 'cQm4r5QFHBA', 'crCCyOlDY3w', 'crSd9cVn0qo', 'cTSUeeG12Sk', 'cTVnjY0bXlU', 99 | 'cTwCK3dRV90', 'CUT22MsW04I', 'CWEIWlqueBY', 'cWyPbYD9lGo', 'cx5G1VdC9UA', 'CyczQoe3MiQ', 'CYiHiRd6l1g', 'cYzF4GOE8Fo', 100 | 'CztDIt5nen8', 'cZ_eoeZx6kY', 'd-SGsAN22lU', 'D3s7heDD5rE', 'D47KVB-oT98', 'd4EOOvtqj6Y', 'd6JZXKg79yA', 'D7FnXaoPwR0', 101 | 'd7ymmR8WuYE', 'd97m4pNuBEI', 'dAF1K6DR8i0', 'DALragCYQr8', 'DbDBriTlmms', 'Dbl84rzEZWw', 'DBulVOm5LGk', 'DbUNhWmKw4M', 102 | 'dCyakRWH9a0', 'DFAHKL_l6KE', 'dFebX7PCg3w', 'dGV5XWzPF9Y', 'DhfyYXvszBU', 'DhGuOzl5Aks', 'DhlIQskLhKU', 'DJd02xCNNc0', 103 | 'djiMq2c_fCo', 'DKXMxzegPAE', 'dl-p2Kb44B8', 'DlENkC5Zwg4', 'DMh25N3Qa4Y', 'DN4E4VunBAo', 'DNAtW0EVR9w', 'Dngvez7MLiM', 104 | 'Doqwn0_xe8I', 'DPbxUe4qyyE', 'DQRPCEbGFSk', 'dS9H3EMxQJI', 'DscPAFMdo1w', 'dSPO1KBwUXo', 'dtL-2hf6RHk', 'DuO1tWIDEe8', 105 | 'dWE2jGv8-8E', 'Dwj4qZcN2Cg', 'DxA2Nng_KBo', 'Dxb-zo3lWPM', 'DyHsx_AOrzI', 'Dy_OnvkVG5Q', 'DzDDgK_PdR4', 'DZVoNuBsjN8', 106 | 'E3lxXZHSkdA', 'e49kAYjvMcQ', 'e595abxh9m4', 'e61ASYkJIRw', 'E844Aa1b5hg', 'EAjzt1M4ueU', 'eaSp-INcrwk', 'EAWVQWpgvUA', 107 | 'eckl2DvLZIQ', 'EcvnyTIs9JI', 'EDdzJnJyIdM', 'edjwF_XlNzE', 'eDLHAN6u2yQ', 'Edz9o56EgD0', 'eEyTzVbpG3w', 'EF84272YoPE', 108 | 'efIdLoYdxps', 'EgFSMM3ReE4', 'ehAp300c0e8', 'ehnhb5_IPdI', 'eHw1ICKt8sE', 'EIhCVahxZkA', 'eIqBFOX5YTo', 'EJ4_zTzzNbY', 109 | 'EJD6BT-zPHU', 'EkcmabUBzyc', 'EkKtFMKRIXM', 'ELWyxjy4jOo', 'enDCSfO4GRo', 'eORbJowLOFg', 'eOsY84oYqKg', 'eqX2nymZHWA', 110 | 'eQzsy3NCFEs', 'erabEK1fB_c', 'eR_xGQH1qYk', 'et4GjVERUR4', 'eUS8tJfDV6c', 'Euws_PLlpMo', 'Evp5EETgGhI', 'ex90Nui_S5k', 111 | 'eylbjkgzFVk', 'Ez-dyu4gJEg', 'E_IXck9171A', 'F-VPXPctDV0', 'F0863luTyfA', 'F0ve4k_sINQ', 'f2oyLPHXNT8', 'F5MRDLajCz0', 112 | 'f6HtqolhKqo', 'f6N38hfD4o4', 'F88btEbzdw0', 'F98AtFqq2q4', 'fb29LCjX4-E', 'fBIrnLxKB94', 'FbTEEN7p-p4', 'Fd8GDFzySQ8', 113 | 'feVH2esO1FI', 'fGsYDa3bzzI', 'FifaSTgtaBU', 'fIiMJ80KVy0', 'fJBcBEBcKKg', 'fjcQKVFvPlQ', 'FjHtL7gIQLk', 'Fk2Dj6wyQAE', 114 | 'fkBuY4iMK7E', 'Fkev7W8rr3I', 'fkIeURclwn0', 'FkyW7DoWHAM', 'FKZDX79-fxo', 'fM0rd3yFSjg', 'FMmoEUEiFVY', 'fnBA9l-3liw', 115 | 'fnIPcKKj7gk', 'fnXB1xyRFaA', 'fOeg8IofzV0', 'FplYx3s8uEg', 'FQ5N13TlXLQ', 'FQJmw7b-ylI', 'Fs5P2Ptz3Vg', 'FSTfAqQpsrI', 116 | 'fu6kGcDpPWU', 'fwvVdw3tzg0', 'fY7SAR5RXbY', 'fyDyN2PRNGU', 'FyHooK1u3pg', 'fZ3RyWrtjYM', 'G-RjMWCE3U4', 'g-z44AlcZJY', 117 | 'G1EOqEUyDEk', 'g5vdCoCp4IY', 'G69MHKMNzFY', 'g9F8cTZ4eDQ', 'GASkp3nW4ZI', 'gatJCfnz6bw', 'gbAYUh77P7k', 'GbeLVnVmxX4', 118 | 'gBEtcBmZsp8', 'gbI3qxMQ5GE', 'gdJv2MwaDyc', 'Gds4pc2E8cw', 'GE24mrcUkhg', 'gF6EgRxF-xU', 'Gf9B_X02XWA', 'gfJozntAqZo', 119 | 'gFSf0fO0Lug', 'GhqVaxDZZ1c', 'GI9S9xdR5KI', 'GicBmU8bEIs', 'Gj8z6bFOU24', 'gJDGLzKcqyU', 'GmUrNFGqTA0', 'gmWjVoc3mM8', 120 | 'GnoMoLePRvE', 'gNuqWwOeG5g', 'GOli8l0nco4', 'gpS8AHh3dRE', 'GQbJ495g0nI', 'GrJWPityMfc', 'grtEi24r2b8', 'GSM9EYqf93A', 121 | 'GsypMFw4OJk', 'gt6PsX4upCU', 'GtX9CV7-EIU', 'gTxix8KzjkQ', 'gUWJ-6nL5-8', 'GWARv4-pNPc', 'GWBrbvIhncw', 'GWVtHjR5Psw', 122 | 'gYM6F3Yyzs0', 'g_1YRGKtQkU', 'G_TDLaTop6U', 'H0EtSorwGnU', 'h1L4gag4xnE', 'h7J28x6fRaQ', 'h8CtsPAaa5Y', 'hA52-4LDYng', 123 | 'hAoVAxErpsE', 'hCbdqjnstXE', 'hcPB2R1o0T0', 'HC_5oej-NWQ', 'HdXcdcyZwfE', 'heTQcEMDSGU', 'hGAZXMj_3gw', 'hhl8qC8wf3M', 124 | 'HJh3Sro1e44', 'hjMuvERM3aY', 'HjXMlsoLm58', 'HkeNWHeizbg', 'HknJP1qf-_0', 'hL6nWluFOwk', 'hmCduOw52N4', 'HnOMCQ-8Bfo', 125 | 'HnYm7y7jsMY', 'hOc3uL4alwI', 'hOOj_Atm_QU', 'Hp4WOXFIUvc', 'Hr01KkJvKYA', 'hR6sH_NSAfs', 'Hu0d8BfRpYo', 'HU7ZXAmL8vo', 126 | 'Hu8wMXKpQcM', 'hVwmifJdlfg', 'HWOadHxYUgA', 'HWrr0tJTlsE', 'HXI1V2VEkSA', 'HxT7E14euZ8', 'hxxXvsrIL18', 'hYXYcOHT6aE', 127 | 'HZEx6iNVDpw', 'I-y9hYJVHc0', 'I0TjUM8qYVs', 'i4qwUWVR0ik', 'I4U5qBSdUb0', 'I5qc5frLypE', 'i9InFg2vGf8', 'I9SR2wleAwk', 128 | 'i9VGEtH__zU', 'IcAIaBzQrkI', 'IccSohdKw5o', 'idL717ww3jE', 'ieTSyTRlyLY', 'If8ewVG8UZg', 'IFHriQpQB50', 'IfNLtevR64c', 129 | 'IhlG2J2PAbs', 'IiB3ZV3FHdQ', 'IIeq4I3pwHA', 'iIo5LtWfxrY', 'IisgnbMfKvI', 'IiueXfhu4D0', 'iivqpZsN76M', 'iiy9xPuVvYs', 130 | 'ijuoM54oCao', 'iJvKxxn40zE', 'IKjNOP0W76I', 'Il0iJUNnq7k', 'ilbYTM2tnpE', 'Inf44ssPIUA', 'InngTKk9zJg', 'iONubn3sC98', 131 | 'ipliu022a3k', 'iQCLPg5f3tE', 'irDLHivG1ro', 'IrhtHZFRBqU', 'IRwKri1rqpU', 'IwJlXwISDsI', 'iwvnA_b9Q8Y', 'Iw_sNY02eh4', 132 | 'Ixzc6RJv3GM', 'iyVphDMrJ9M', 'IZORhyAHhZs', 'J-8WcSqVwq0', 'J0KI-i6aEmc', 'j2iuJUSaUT0', 'j2VfzKjn4no', 'j4vCio2bdbo', 133 | 'j5dwnDyxh4E', 'j5GYMOvjjtk', 'j7bdt74NOcQ', 'J8dkqhWBWTA', 'j8s1B4ew7U8', 'J9L26AxMLEw', 'J9V8oVSIqXI', 'jaAehsIKB40', 134 | 'jc9LampMMU8', 'jdL_GmE84Pw', 'jDRvxKq8JzU', 'JEiHJoC6ChY', 'JEPqvTVdqVc', 'JF-pIZsJvZQ', 'JGgzTJtzaqc', 'jGJNtSF2RLA', 135 | 'JGOFzgtKvXM', 'JjETsqPoCzA', 'JK5rb6acQvY', 'jkhFGLGxnrQ', 'jKR8SwI0gFw', 'JLkujIaDKsQ', 'jmkX612KfQE', 'Jn8QxcBTI20', 136 | 'JNoEDzEMzYw', 'jnTdshj2r4g', 'JoGYWfM7UG0', 'JpGuSxDQ8js', 'JphvDiE09UA', 'jQkZvGXgNDs', 'jt7SYhALtPk', 'jU4PVlIKvlY', 137 | 'jusD8raVyT4', 'JvMFjGjnBJc', 'Jwo92kqtUTg', 'JwSSrQzw5FM', 'jX6rIhIXu1k', 'jx7SAKhFhHc', 'jXLIvgWNW1A', 'jyGj_vBpM6k', 138 | 'j_cMKkyp6q8', 'k0RbwgZbSAg', 'K4rGww6FGMg', 'k7pxeGS1a3U', 'K9cYoQ1BScI', 'kaJv3ap5y2g', 'KBDLtoPR140', 'Kcih9VWhp98', 139 | 'kCJWzRrD71M', 'KCkXJZP9MNw', 'kC_97FdzxUY', 'KdPIAgInIGU', 'kF3_Y3LOM0o', 'kfSEV8o6-wY', 'kFtMQc70MS0', 'kGlSXbnNYvI', 140 | 'khKKkn-7vQM', 'Ki388Otp0U8', 'KIDsL-6Y2G8', 'KImmBXpM7js', 'kJnHKsvBjho', 'kjYJfpQ1v5k', 'kKgJMY8QFis', 'kLKJF1yy4T8', 141 | 'KlRTtDJbyxQ', 'KlWqFDhEphc', 'KMdkwYGpONo', 'KMJCl5PU7yo', 'knuKaVRdR5k', 'Ko-oArJLfFc', 'koYdj0vemwQ', 'KPRlLx6-WKg', 142 | 'kpvuGfHEz90', 'KQNaB37x8-A', 'kRaVPCzsbyA', 'KrcBZCqx37k', 'kRDMBQEL4I0', 'ks5NHqYF6kQ', 'kSHJ27s6Jsk', 'kUXumDhW_tc', 143 | 'kvcX078gIS8', 'kvfiB4a5AHg', 'KVKop8m7oUU', 'kVMfKVJN5J0', 'KvNo4ITlaDw', 'kX4D3LLDvIk', 'Kxb43B7iWFM', 'KYo2YXlJjKg', 144 | 'kZ6i3JSqE8w', 'K_ituJgAv98', 'K_Yv4ahcghI', 'l-CWyxBYfv0', 'l-Nlm55ztEs', 'l0nNt6GOEMM', 'L2AQMNL0Oow', 'L2cbtyuqRXE', 145 | 'l2svlMYCBiQ', 'L2vZDVY0Wro', 'L4LSRgdie-c', 'l55OSJl6hIk', 'L8j9F0zm-4A', 'lA9xa01b-Ds', 'lB1-Rmlr4hg', 'LcaiMHduqPc', 146 | 'LcVrAL3yFC4', 'LdhWCPdV0T8', 'Lfe8MgI8eTw', 'lgdj4hOEYuM', 'Lgjy-w7uv7o', 'LGYxwWtJWLg', 'LhMRLPkxRu0', 'li4m2dCN7bI', 147 | 'LiSDivNECTs', 'ljJnlOOAkXQ', 'ljSkvtnTlIo', 'lk6GYVM7enk', 'LlGYef6PhGw', 'lMTI6MtL1wU', 'lmzLNpyDnF4', 'lNnvx6hIN78', 148 | 'Lojv2N_bz_M', 'lowOxcK5JAA', 'LPKSw4VUhew', 'lPWGq3p9KdU', 'lS1PN8Fdd4Y', 'LstlIyTlT3k', 'Lta0GbIKCZA', 'LTFWGGL859w', 149 | 'LTudru2FF9I', 'LUDic-RyUT8', 'Luru8cYPFY4', 'LyWtN-oRjN0', 'lZ-vwkNg2ho', 'Lz3gtI1fDdk', 'lz3JDsDHmxA', 'lzmn9_OdR7A', 150 | 'l_Vk83J_TPI', 'm0xTVy6djRE', 'm0yFpcqKAm4', 'm1cKMlY7Ovk', 'm4VCmdKJgtY', 'M66jTwPBL9Q', 'M7ZMSsUm2pM', 'MAikOv859sY', 151 | 'MCpife5sFPA', 'mCQCLkAcn0Y', 'mDqdX0fDb24', 'MEbsVeGnqJo', 'mekhnm2-NZY', 'mEZ3hxK4WEM', 'mfiWikreG4k', 'mFURUnD8eJs', 152 | 'Mg5efWa7I6s', 'mg7Esx3UXUc', 'mHeETNVXeoY', 'MiDnGwVBUz8', 'MkvKYP9vLsE', 'mLbySoiCuyo', 'mMcz8jeAvIY', 'MmnY2RtgCZE', 153 | 'MMuDoHHZyhI', 'Mn-iKqxvUyk', 'moqWBk6Ulfc', 'Mq4Yh0-iozY', 'mrRVEiyEO6M', 'ms1ZwHe-g3A', 'msPBI-LVJ1o', 'msRft-g-k_s', 154 | 'msUTYi295qQ', 'MT9_FjukU4w', 'mtgdUp17Zx0', 'mtpVrWkO8iE', 'MTuDsaPbEEk', 'mXaFmSQmC8E', 'mXn3f-o-l_M', 'MYaFQFiVz4I', 155 | 'mYr92slTr0k', 'mzkLYjDznPw', 'm_RWZGoHczY', 'N18GtJ7znh8', 'n3Ed36YSz9w', 'n4xISnZRmkY', 'N6aqYkq0xlQ', 'n6gD9nl5_vk', 156 | 'n6l19CWi710', 'NAleiCTByWc', 'nany227g7to', 'NBPUBLied0o', 'nBT7PfC6YB4', 'NC-Lult6iM8', 'Nc2zl2SeQNo', 'nDo7JJHvve4', 157 | 'nf-WaUkzTGc', 'Nf1mw11UHAg', 'nf4oCSeAwBA', 'NFYqYfzB9bQ', 'NG7E1OKqpIk', 'ngYVqyOeqe4', 'NJib85nKy5k', 'NJJbE1ZaPOc', 158 | 'nkBTikaXrck', 'NL33d3ivsnI', 'NM53mj1iQBo', 'NmoERV9EmG0', 'nopgqBoUmYg', 'NP0ybURoSz4', 'Np90zUnCB-g', 'NPDxtgCLBmY', 159 | 'NRp7xXLpyjc', 'nrw1s_Z47O0', 'Nr_VTtWkNHg', 'nS00pPC1NZE', 'Nsm3HIH7QdU', 'NttqBWSA_DM', 'NU-J9jkNp8Q', 'nUjRM_ya1m4', 160 | 'Nv8tTPsiFCA', 'Nvrlfmg8QkY', 'Nw2bLljtueg', 'nW35FpRBOFE', 'NxHCozu-sBM', 'nxhI2Vg4xHE', 'nypJl5OQ34g', 'Nyqr7_JmBok', 161 | 'nZ5ARMIiQ4A', 'nZxbfboIRvU', 'N_31dk2VumQ', 'n_D0Gt2pL-0', 'o-_ku8TTVQM', 'o0zEmaGBgBY', 'O1H0HGnmar4', 'O3StYjvfjUo', 162 | 'O6W7r7PzjMA', 'o79esR_TQxk', 'OAHG5xAeuZQ', 'oakADmlMc1c', 'OANJbkMy_Ss', 'oaOOXc9QLwU', 'oAV7ZzoYNss', 'Ob6TYXo6CxI', 163 | 'obdMG9wwcPE', 'Obloj84_72k', 'OBVqxwggZ3U', 'Oby_tVxQZAI', 'OdDDaVpHojg', 'ODfGbQ-qsak', 'ODmwCavm6kc', 'OEWTy2FUIiA', 164 | 'oFzfGZOYCDc', 'OGezrQzRN58', 'OGhQITOzX_c', 'oH7SorAES80', 'OhShkKHk9-M', 'oJ8cE0-xGF0', 'ok1TeEEBonk', 'OkZeVDj3WI8', 165 | 'onfb5EX23bo', 'ONRQrqxZ5kY', 'OOALW5_5AOw', 'oPH-8S-d9Dw', 'OqSDh--PZig', 'OQYI20QZhRg', 'orcK0EeVkgo', 'oRSDFuBCia0', 166 | 'OsVL10kIh8w', 'oT-6ZF1r1fw', 'Ov-BBUhKdJU', 'ovxMconfxRo', 'OwhjTacbn_I', 'oWjA-D0ugg8', 'OWK9Ut3PA1k', 'oxdaSeq4EVU', 167 | 'OxlsLZcvRi0', 'OyBYv-PAGzU', 'oyIb_WQJU80', 'oYUa-BtQnvE', 'OY_W2-ZtPRU', 'ozg-_3UPmoQ', 'O_0pglA201U', 'O_c6g8fAMxs', 168 | 'o_qXg8h3J9Q', 'p0l9ONq9Rsk', 'p0ydXpe9QDI', 'p2h-6KERCyw', 'p3yBBNM3l4Y', 'P4JOSZbfrGM', 'P6sfE4T9FvM', 'p85kCsduF8M', 169 | 'P8s4vpliKs4', 'pae-MY3-1xw', 'pAJmtKqoKJc', 'PAMMlaYVIZo', 'Pb3S-FuBwIM', 'PBeKnXxiblQ', 'pbmC27Z3kuc', 'PDbkTqHgziA', 170 | 'pDBQ_N-6rRE', 'PeEVL3aB-T0', 'PEuYlcxUuHw', 'Peyw-eKZJOI', 'pF5MJIw9pt4', 'PFJBPXsMMKE', 'pg-xeL-4nyA', 'PIBP3lEJCKA', 171 | 'pIMX96z-eWQ', 'PiZbnalFlww', 'PJcwc0GB0Is', 'PJO4dgqCs1g', 'pJrLxSVI-_A', 'pjz-IdyTNTU', 'pk9ZB9jovGQ', 'pkn4hYvcaD0', 172 | 'pK_7NE5_yCU', 'PLk3Yfj3lM8', 'PLSOON6Vf9Q', 'Plu2rBU_Snc', 'PmhpqrIBJD8', 'pmpscqwoQpA', 'pN1tZo4eaOM', 'pnxRN_Yuyss', 173 | 'poKa9lU4Pxs', 'Pp4t7K86S7k', 'Pp96EhX__kE', 'PPm23MshGio', 'PqB19w4v_fc', 'pqdT_9ZHkcA', 'pqrT_abh-EM', 'PRFGSwr7-Po', 174 | 'prHuJ_74iZc', 'PrwADKcE-ts', 'PVgowwPth5M', 'PvhEjE0Z3tk', 'PWMIqJRXx0Q', 'Px-JGoUNN6U', 'PxB8kSbydPc', 'pXCTmVOT82s', 175 | 'pXJDcHhQ_QE', 'PXquGIXXk4s', 'pz7aYDVWRX4', 'P_EK5c4T-nU', 'q-Ax4tMtBYY', 'Q3a3w3GtbJQ', 'q6Bsqqo0hNE', 'Q6x0omrhsoo', 176 | 'Q8lZR3Fo6SM', 'Q9daM1wqPxs', 'Qa7I1xf6eKE', 'QANmjYtiA0Q', 'QbCDXXlGDdI', 'QbGUPetvj84', 'QbpJ5QUZXIk', 'QcxSQ6VaqfY', 177 | 'Qdha875hRYs', 'qeZDy8O_cn4', 'QeZF3chcmIk', 'QF8lOgjCKEs', 'qfSFx93S5cY', 'qfXX37b-Df0', 'Qg-ouP03qLs', 'qiuQaa1F5j0', 178 | 'QizxF-7AVRQ', 'QjlSrL6ZfhU', 'qJMX7TPq48o', 'QllyroV4kIU', 'qm7nAdh63ao', 'qM_GS8Swk-k', 'qoaSvUkPDWk', 'qOjWJHdEaBo', 179 | 'qOM9ia17Nwo', 'QOv1rGr2-0g', 'Qp78x7NxUho', 'QPIJPAQNx-o', 'QQIRLu-XoIE', 'qRmUOlCgigg', 'Qs6P8vv0R_c', 'QSnEA3OMJl8', 180 | 'QtctitWArm0', 'QtCYebM3f8g', 'QTz9BM4vYtk', 'quqV86VI6Ts', 'quwzg7Vixsw', 'qvK05MslzKA', 'Qw6I97mDOKs', 'qX7qRYKxN4g', 181 | 'QxBEYqYpkMk', 'qXKQQmCgKG4', 'qXOySyYARRg', 'qXtsl5_G7wM', 'qZ3Q9p-7WCA', 'qzaPWudLatE', 'qZpmrTBIiD0', 'qzZD-XzxIMw', 182 | 'r0azePlFx5c', 'r0boh-NbFYY', 'R0vlehzbAGE', 'R1hxfEuYlbM', 'R1usywaxSdU', 'r2ZnKUawEsM', 'R35AdZxATJc', 'R3Fx9G0r5iY', 183 | 'R5Fa6n4cnE4', 'R5jd4SDEcsA', 'R5JTKMWCzQ0', 'r8okzAL6PlQ', 'r9tBp-sKMbU', 'raiufF7FuQg', 'RauG9bE3klg', 'rBD71jLxg7o', 184 | 'RBPpgeKz31s', 'RCfmV_oW-Jc', 'rDtZWq6jgYw', 'rE2VFknFfwQ', 're6TnoGpXdM', 'rfCpegI5fHE', 'rFF2z5nnW2Y', 'RFFBfBdScxg', 185 | 'rfRjmz5DvLw', 'RG7mBpT4Rw4', 'RH-gsrUwLrA', 'rh02673jFEI', 'rh0vqINBrpM', 'rHt_bX0MfQ8', 'rIdTJv_wT0g', 'rISS-nR_Ug4', 186 | 'RJQ5Q5jQZmg', 'RKDO3pfICjs', 'rLs-Ta6h6zU', 'RmeY9KQQ0qk', 'rmht42iboYQ', 'rMMpeLLgdgY', 'rNnEiYVU6lg', 'rOc1enHcEh8', 187 | 'rOH2qF3EtKA', 'ROzfJO6Fkcs', 'RpB_qVyrIgU', 'rPTLcEBI5Fc', 'RqhoTKnV-zI', 'rQrJzKCPn7E', 'Rr1RuuVML6U', 'rrUC9449bp8', 188 | 'RSpxA3MwdVc', 'ruhNNUsD4jk', 'rV1rttrlA08', 'rXHfRWQ42xo', 'Rxtg5eTnICM', 'ryY29F8Wx_I', 'RzpVnqPwfhs', 's1NiJOmyaLI', 189 | 'S1ThWb94XwM', 'S2TzVzgRyLY', 'S3uPFcU4qRo', 'S4jQzg8GrXY', 'S4L6rVLMQ0Q', 'S648xZDK7b0', 's89pcR9TzFc', 'S8H95BfLg-4', 190 | 's8V5IUK38Xs', 'sAkzifd81rk', 'SbYke2NHhRs', 'sC9vpZLLLLI', 'SC9vvK7ZaTQ', 'SCF6bmk8KWc', 'SClSnPYIay0', 'SCvBusvxTnM', 191 | 'SDFjrkfSjDM', 'SDl6psYRA_0', 'sFFxRTwbhNY', 'sfOm5TBAFVE', 'sFsibuhZ3oM', 'sGfQqniqV9M', 'sgiGXaeT-EU', 'sgtYQbNfURI', 192 | 'Sh000UgtLiM', 'ShRI1L0Q0gw', 'SHx_P08m3_Y', 'si5p5QoINvA', 'Si6yUaMM2c8', 'sIYzY8jnifU', 'SjrIit0fYgo', 'SlqZsorw7rI', 193 | 'sn1pZ7H66Do', 'sO6Ahl1FCy4', 'SOeFRkaRccg', 'SPxisxSv-dM', 'SQ0d25LZnH8', 'SQm4M4GCtOk', 'SQ_h3EVhqfw', 'sr9KfphbgQE', 194 | 'SSFkoA3qt68', 'SsLsuDtaDmE', 'sTfoh0vRA08', 'Sti-LQuAG1k', 'StTuvR_l-OY', 'SUB0hybpY-Y', 'sueclA2NVao', 'SuxxtZjVLCk', 195 | 'svW_04e1Oi8', 'SWHSKLlVDys', 'swIVXa6k-AE', 'swzxvMXz93I', 'sXOQ9VaYEv0', 'SxpnXcfInUE', 'SX_bbPvbKMM', 'SyafDOQNGl8', 196 | 'sYjHK5b7Jzs', 'Syp8hZuLLb4', 'szVxktVaiYk', 's_20-g15v54', 't0c8Yp_anAE', 'T0xtOAmKhdA', 't26NpV2d98s', 'T3COi_qVfMU', 197 | 't3lXPKgBm8k', 'T4NWm7mqbHI', 'T6ZDBpVSg3U', 'T7OVrWn1mp4', 'T8gxRDL7ig4', 'T8MNDHUhK_Y', 'tbdGw97gVMA', 'tbheA9rm-vY', 198 | 'tbW8djVi83o', 'tC21KpcPe2U', 'Tcqb74Vz7B8', 'tDETBkJIUJ8', 'tdfOnsNkWE4', 'te0qNl30VdM', 'TEkATzoxLYA', 'TH1IVwZmAEE', 199 | 'thb7LGhu-uk', 'TjMAUIAk_-s', 'tLi1PZSyk3o', 'tlQAHvtYZb0', 'tngxTE8Oayg', 'TNKRk0WRJqc', 'TNr-P1292F8', 'TnX6dlE09bM', 200 | 'To-KPRqE0_w', 'tP8SXuK2veI', 'TPEWDNC5tLw', 'TPXi_WEWM_U', 'TS_AG7lHr3E', 'TUwd4ZHgd2w', 'TVXRY2FVOEM', 'TwtcKKt4i94', 201 | 'Tx17kzQGqlg', 'TXDXwlptGXs', 'ty0unGK71Hw', 'TZ6xeS_GjSk', 'TZKn9CcJ-Y4', 'U0EgpdFjQCI', 'U52oraqTGWU', 'u59Zly1rr1Y', 202 | 'u6CV5SADa34', 'u6dT3LVfZl4', 'u7us_YSKRDA', 'U8kUTZXyDfU', 'u8ZL0XLXA54', 'UajIZXrSUq8', 'uAk9ppD-KZk', 'uAMJi-RMimI', 203 | 'UcHqSfrekBs', 'UcNH7ub6iOQ', 'ucpj5J7H9jA', 'uCUwB1t2sLA', 'udqv-3og9_k', 'udxHIUUzrRk', 'ue96cuS-lNs', 'UEVVUpz30RQ', 204 | 'uEYMYd8xA8Q', 'uFyuiJEd60w', 'UgQHjFZvR0M', 'UH1yTqt1sK8', 'uIvdELL9its', 'UjPldsSfiQU', 'uK9oG68ajq8', 'ukuK87Tfgx0', 205 | 'ukYrii2Ap6k', 'uLabZemWGMk', 'ULXVP5b22yw', 'UM1wMCspFRI', 'umcmHk789Ag', 'UNEv7OurotE', 'uOGLQsEWeIY', 'uP0G9G8Wfp0', 206 | 'UpY_lyC2DKg', 'Uqa30vUUw0g', 'uRlAUI2l3dA', 'uRmLT6KXMas', 'USK-41GxCRc', 'uSZwWPCuh0M', 'uT9vOC6lm_w', 'UTAyLrpNkaE', 207 | 'utV0ejirsTI', 'UU2Zy6Q6eDg', 'uuuXnAr_7iY', 'UvdoHPneyRE', 'UwgAmmI6rQw', 'UWSPIHGiuFs', 'uxghTmNb0pU', 'UxJEYN7MB2M', 208 | 'uY3DU3N15kc', 'UY8CCr_Ec6w', 'v-u3UcnxLJY', 'v00xAgLkB-k', 'V2N6MXL3RrE', 'V2NApvhoWh4', 'V2p6Kr-ru1M', 'V44OI-FjBCk', 209 | 'v6-3Fw1t4H8', 'v6zAy9krPjM', 'V8pJulMlBmk', 'va6R3N2fRE8', 'vAhCS89Wznc', 'VaUTYwC5how', 'VbdI4kIAEVU', 'vBQaeq2vLsw', 210 | 'Vbz3eG9WmEE', 'vdbghI49kzk', 'VFSHUlQEE80', 'Vg7Mwy5RK-g', 'VHjUH7yXiJU', 'vhVQk4GeMrI', 'vIAgrwEm2Lk', 'Vij41V3rMEc', 211 | 'VikRTpwgyeo', 'VILzeB68orc', 'vKmGbEkDcfg', 'VmWZSryeMjs', 'vnmL_X6csSA', 'VPGLhcM7r94', 'VpsDihMedU8', 'vQ5UuZsZ70w', 212 | 'vR0_BaXYcE4', 'vRZF5P_0lqk', 'vTOUir5_V_0', 'vvD-fKq8IyM', 'VVkhY8mUPaY', 'Vvr2T-wSIdk', 'Vww-G6oObTA', 'vX3CJKueq18', 213 | 'vxnveaa9GYI', 'VZeZREFZVXU', 'v_4amQy8u5c', 'w0m4jqyWTN8', 'W0vr0rQ7r7Y', 'w1A20nBbG3s', 'w1cUrdYOdRg', 'w1XCWyF6m48', 214 | 'W63vrbX-mLg', 'w6UsbBX2goQ', 'w8QIDk8KQ4I', 'W96Y1crspIw', 'WbUFFhsEhZM', 'wCxr-cL03ys', 'WDsbUWJkjWI', 'wDuyrjczdbg', 215 | 'weW6D4jz0Zg', 'WgdSkUtD_fs', 'winSCwuAu0c', 'WISzaCdJSQg', 'wji8Y3zdbU8', 'wKCPiSnYqwA', 'WKIHPbVVmuo', 'wlssXdkjCLs', 216 | 'wMbegc0txx4', 'WMMv2nR5Qeg', 'wN3Bmhhohjk', 'WneRaj75II4', 'WO8qxFxtB1U', 'wohEnR5zve0', 'WoJ8EGzwj_g', 'wOzCkcGbcAw', 217 | 'wP1_CqcEV5Y', 'wpG4la-iUJ8', 'WPgcEBhbtsg', 'WpZqLbWL0c0', 'wsBy4sG2TQY', 'WSjN5gPJ-UU', 'wsxhWqjGfns', 'WtboYBheeco', 218 | 'wuc_OBcehjo', 'WXapdvfTgas', 'wXjQHAxopzk', 'wXJRBD_7Xvo', 'WxOAbjhYZck', 'wygzSdI0L1Q', 'wyWf2uYOKYU', 'wZeXFV4V318', 219 | 'WZgh0hgEJxE', 'WZvIw0SnYrE', 'x41zyB73ZHI', 'x4vRQ_jSJJ0', 'x65KrFFQPpw', 'x9Nd6OZV-Yk', 'X9Qfzn5vgHs', 'xAfKZrAYORg', 220 | 'XaLHd7nx330', 'XcU6g_ppWRI', 'xdi9mCRZnY4', 'xEEw2wR-Mck', 'xEfAF4M8sis', 'XeMwoMk8wSw', 'xfPdbz3qPT0', 'xFXDhDkBDbw', 221 | 'xG_BYaIugPg', 'XhgN5clDnXw', 'xhOLC-JvJ68', 'xjqXZhbaWIs', 'XjXm-ELojYI', 'Xkix8uweNsc', 'xKQgB6ODAeY', 'xLIFT9xoWSQ', 222 | 'Xmmw9g4eNqs', 'xnb7MbXEcDM', 'XnGIUJWMCno', 'xofnnPS2KyY', 'XoGpnJ2_t2A', 'xOhTNHHWcMc', 'xQaO94_p6pc', 'XRSI-Yu4NEM', 223 | 'xs-ndwYLFRw', 'XsoVSDpD_7o', 'xsqaL7c22q8', 'XTCtlupUbCA', 'xtPonlDtQlk', 'XUuTSVgAAFc', 'xvo_4RpdNJU', 'xwJOXomT1jk', 224 | 'XztBUNsMQ2c', 'Y-r9hjRY1DM', 'Y3qj40IrPvo', 'y4_y-QqnV14', 'Y5HOvK_4pGk', 'y63nHZQZucA', 'Y64hvw0kZig', 'Y85VZlSCJCo', 225 | 'y8zFfIZcaWs', 'y9JAopB6OqQ', 'yA3AD9jU7QU', 'YAeQAF-WzZc', 'YAr31WmHbVU', 'yAyOVxAwm78', 'ycQs27YVE60', 'YdiF7c9a19o', 226 | 'yDUoc9gHb9c', 'YeXollGBQ8Y', 'yfazGm58-MI', 'yg9uopmNeUU', 'yhmWLvrz61k', 'YIo0ULHsvYY', 'yKu33AsV4z0', 'Yl7vFm9sZYA', 227 | 'YLMPAtkg-Kk', 'yltZSEcAylA', 'ym3gp7IwmUo', 'ymIyKGqwwpA', 'YmOrsKpn3FM', 'yNAPdZ-SiOU', 'YNfawBvbtcE', 'ynYZyE9GFfs', 228 | 'YO3r9NRdEkY', 'YPFpKPqMhS8', 'Yq-FTeXZkvM', 'YqewLkWns_o', 'yQfNBx-NP9o', 'YQIK9BRt6HI', 'yqxRWefytyY', 'YRrJqyh7OfQ', 229 | 'ysGgGuL7B8s', 'YTEniEh6uS0', 'yTexe1HgJtU', 'YTv0BlQp36A', 'YU832gzgifo', 'yUul5smwack', 'yuvRc1aBc_w', 'yWg58bqVvms', 230 | 'YWN1PpNUIfM', 'YwOQinOq9pg', 'yYgIkj2ebP8', 'YywoU3jetMU', 'YZNM6cMMY1E', 'yzSB1yKD6JM', 'YZyCgRF6JrE', 'y_qoXSYt11I', 231 | 'z1SJTeRYKUg', 'Z3y2cZVJJus', 'Z5Lx--xlj28', 'z5PZXA1zqA4', 'Z6Sr3Rk1k-8', 'z84NmFZYbpU', 'Z8rkp1cEyTE', 'ZabDAaRV0Y8', 232 | 'zAV6Nl2sKws', 'ZBsKr3PMp4E', 'Zc8Ulx0n7XQ', 'zE3TnNspVWg', 'zevN6AlhH_s', 'ZeWGuUbdnTU', 'ZFDQ2VMMXZY', 'Zfl741QO3Ag', 233 | 'zFUtNpxVwH4', 'zJi8m4buMrw', 'zJjbOZUIIPQ', 'zKSxuFD9Jpc', 'zKV5zMRHOig', 'ZL46IjBH7L0', 'zlmHuO5TBDY', 'zls5pP7OgOM', 234 | 'zLY1WkaXzP0', 'ZL_HGe8TsBY', 'zmao_p5nPMs', 'ZmxXsM_Gz3w', 'zNCR5WPhxOA', 'ZNji1mnSB8g', 'znJWfiogjtQ', 'zNQqchIJe0o', 235 | 'ZONwGb7YGrk', 'zp4adGsyopE', 'zqDAotkTwrs', 'zQVt-1gUALU', 'zqZ1n_xSJfE', 'zR2yqPfw7UM', 'zR6hzzDAflI', 'zRucPU7bGsA', 236 | 'zSU8dvbdKnU', 'ZtmLdYTVszA', 'Zu81phMB9rk', 'ZVRp-8w3qhI', 'Zw0jo3SePtA', 'zWyQW8YIIf8', 'zXmO5_tiuM0', 'Zxn9X6XXOnU', 237 | 'ZxRlWfvn6Dk', 'zyr1F12AuAY', 'zz7x23rrwl8', '_0z11rWXLrg', '_1507-Lo6Eg', '_6DU0pPzzoY', '_7MBer1SeCM', '_AL1EoJWM5s', 238 | '_Bj0FbjFFJY', '_bu8Bb7XV5U', '_bXiwiVKfGs', '_c4dKyR3enc', '_dwL-FO2NLk', '_EctlaeJjuo', '_f46uY1hvC0', '_HbecwTgugc', 239 | '_htrPTOvX-s', '_K4phsNsy5U', '_KzjEAGue1U', '_nD1eYhp9NQ', '_rTq99Y8T_w', '_S8JfTbZbdk', '_yxBZ4qJNe8', '_Zj47bS5auo', 240 | '_Zocs3SxShk', '__Oe9dJ3ZZ0'] 241 | 242 | failed_videos = download_videos(video_ids, output_path) 243 | 244 | if failed_videos: 245 | print('Video IDs unable to download:') 246 | for video_id in failed_videos: 247 | print(video_id) 248 | else: 249 | print('All videos downloaded successfully!') 250 | -------------------------------------------------------------------------------- /annotations/task1&3/train.csv: -------------------------------------------------------------------------------- 1 | path-label 2 | /video_path/--Ly-qjodoI.mp4 3 3 | /video_path/-DMEyIfWBV8.mp4 3 4 | /video_path/0z5Xtb8ipRo.mp4 3 5 | /video_path/1PNlj_VEDtI.mp4 3 6 | /video_path/31lF8VNCJ8k.mp4 3 7 | /video_path/3gLhooOemZw.mp4 3 8 | /video_path/4yQO__Khl5U.mp4 3 9 | /video_path/58wAvY_aF-Y.mp4 3 10 | /video_path/5W3o4HjyV2k.mp4 3 11 | /video_path/6eGGq4fz8SE.mp4 3 12 | /video_path/6Ny4wSUdYNo.mp4 3 13 | /video_path/6Xu2Sgk1y80.mp4 3 14 | /video_path/8OTKidNwLlo.mp4 3 15 | /video_path/9VHtLRhwrBM.mp4 3 16 | /video_path/b2UCiQs0KMg.mp4 3 17 | /video_path/cKtB81VN_4Q.mp4 3 18 | /video_path/Cl-Cn0qK5lg.mp4 3 19 | /video_path/Edz9o56EgD0.mp4 3 20 | /video_path/eR_xGQH1qYk.mp4 3 21 | /video_path/FKZDX79-fxo.mp4 3 22 | /video_path/GE24mrcUkhg.mp4 3 23 | /video_path/gmWjVoc3mM8.mp4 3 24 | /video_path/j2VfzKjn4no.mp4 3 25 | /video_path/j4vCio2bdbo.mp4 3 26 | /video_path/j7bdt74NOcQ.mp4 3 27 | /video_path/JGgzTJtzaqc.mp4 3 28 | /video_path/jGJNtSF2RLA.mp4 3 29 | /video_path/KMJCl5PU7yo.mp4 3 30 | /video_path/Ko-oArJLfFc.mp4 3 31 | /video_path/kVMfKVJN5J0.mp4 3 32 | /video_path/K_Yv4ahcghI.mp4 3 33 | /video_path/l2svlMYCBiQ.mp4 3 34 | /video_path/lNnvx6hIN78.mp4 3 35 | /video_path/LyWtN-oRjN0.mp4 3 36 | /video_path/n3Ed36YSz9w.mp4 3 37 | /video_path/N6aqYkq0xlQ.mp4 3 38 | /video_path/NP0ybURoSz4.mp4 3 39 | /video_path/Nsm3HIH7QdU.mp4 3 40 | /video_path/OkZeVDj3WI8.mp4 3 41 | /video_path/PmhpqrIBJD8.mp4 3 42 | /video_path/pmpscqwoQpA.mp4 3 43 | /video_path/Q8lZR3Fo6SM.mp4 3 44 | /video_path/Qp78x7NxUho.mp4 3 45 | /video_path/-0z1P7sw2qs.mp4 37 46 | /video_path/3MeO7o0m7oU.mp4 37 47 | /video_path/8vKssX6wvwY.mp4 37 48 | /video_path/fkIeURclwn0.mp4 37 49 | /video_path/IrhtHZFRBqU.mp4 37 50 | /video_path/J8dkqhWBWTA.mp4 37 51 | /video_path/L2AQMNL0Oow.mp4 37 52 | /video_path/NM53mj1iQBo.mp4 37 53 | /video_path/OsVL10kIh8w.mp4 37 54 | /video_path/OyBYv-PAGzU.mp4 37 55 | /video_path/rXHfRWQ42xo.mp4 37 56 | /video_path/-1mH9wYWd5w.mp4 25 57 | /video_path/031fy7eHW4o.mp4 25 58 | /video_path/1WxoWefo7gQ.mp4 25 59 | /video_path/23Ioifx2zX0.mp4 25 60 | /video_path/2i_rjQ9SGa0.mp4 25 61 | /video_path/4c6bm_iT6pg.mp4 25 62 | /video_path/8CGlrISSmnU.mp4 25 63 | /video_path/CfEymG-VQNQ.mp4 25 64 | /video_path/CguNhVWqojs.mp4 25 65 | /video_path/HC_5oej-NWQ.mp4 25 66 | /video_path/KVKop8m7oUU.mp4 25 67 | /video_path/mLbySoiCuyo.mp4 25 68 | /video_path/nxhI2Vg4xHE.mp4 25 69 | /video_path/oaOOXc9QLwU.mp4 25 70 | /video_path/OBVqxwggZ3U.mp4 25 71 | /video_path/pAJmtKqoKJc.mp4 25 72 | /video_path/pK_7NE5_yCU.mp4 25 73 | /video_path/r0azePlFx5c.mp4 25 74 | /video_path/-2N0GEdJltw.mp4 7 75 | /video_path/0WMoZ_sInmc.mp4 7 76 | /video_path/1rlxKsx_n-Y.mp4 7 77 | /video_path/1WLcyNiBt2s.mp4 7 78 | /video_path/21v_YbzDiJ8.mp4 7 79 | /video_path/24Jlbd9bOr4.mp4 7 80 | /video_path/2KtmwJDhujU.mp4 7 81 | /video_path/2ZvWaLst-E8.mp4 7 82 | /video_path/396l_q4T1NA.mp4 7 83 | /video_path/3fk_8uR_uhQ.mp4 7 84 | /video_path/4NAJuycN4Co.mp4 7 85 | /video_path/4ONAC6uE6xA.mp4 7 86 | /video_path/8oX4SQHxKBw.mp4 7 87 | /video_path/AdnKbipn5es.mp4 7 88 | /video_path/b1uy8cwYlcM.mp4 7 89 | /video_path/BHH_nHIhJO4.mp4 7 90 | /video_path/C-tFDOR--fQ.mp4 7 91 | /video_path/casR8s0oS6g.mp4 7 92 | /video_path/cM1H92_5hqs.mp4 7 93 | /video_path/Cpoc5ht51NY.mp4 7 94 | /video_path/DbDBriTlmms.mp4 7 95 | /video_path/DuO1tWIDEe8.mp4 7 96 | /video_path/EcvnyTIs9JI.mp4 7 97 | /video_path/eqX2nymZHWA.mp4 7 98 | /video_path/Euws_PLlpMo.mp4 7 99 | /video_path/F-VPXPctDV0.mp4 7 100 | /video_path/Fk2Dj6wyQAE.mp4 7 101 | /video_path/gbI3qxMQ5GE.mp4 7 102 | /video_path/gdJv2MwaDyc.mp4 7 103 | /video_path/gFSf0fO0Lug.mp4 7 104 | /video_path/HnOMCQ-8Bfo.mp4 7 105 | /video_path/jkhFGLGxnrQ.mp4 7 106 | /video_path/jyGj_vBpM6k.mp4 7 107 | /video_path/Kxb43B7iWFM.mp4 7 108 | /video_path/l_Vk83J_TPI.mp4 7 109 | /video_path/m1cKMlY7Ovk.mp4 7 110 | /video_path/mEZ3hxK4WEM.mp4 7 111 | /video_path/MmnY2RtgCZE.mp4 7 112 | /video_path/o-_ku8TTVQM.mp4 7 113 | /video_path/-aeuTQzxq6Y.mp4 31 114 | /video_path/00ZWd_WwJ3g.mp4 31 115 | /video_path/1e7USvwCAxQ.mp4 31 116 | /video_path/5qfIRPxoHuw.mp4 31 117 | /video_path/5Z-teZy3bCw.mp4 31 118 | /video_path/7qYYDH4NUj0.mp4 31 119 | /video_path/ANVFQV0PHIo.mp4 31 120 | /video_path/BTBBzcdZ0kg.mp4 31 121 | /video_path/cF1Nu3o87Z0.mp4 31 122 | /video_path/cqD-EvrqhKU.mp4 31 123 | /video_path/d7ymmR8WuYE.mp4 31 124 | /video_path/erabEK1fB_c.mp4 31 125 | /video_path/fb29LCjX4-E.mp4 31 126 | /video_path/GWARv4-pNPc.mp4 31 127 | /video_path/iiy9xPuVvYs.mp4 31 128 | /video_path/irDLHivG1ro.mp4 31 129 | /video_path/-BtEiJjukV4.mp4 2 130 | /video_path/06Eero7ok5A.mp4 2 131 | /video_path/0mSQn8SBmRE.mp4 2 132 | /video_path/29QOClzPHGQ.mp4 2 133 | /video_path/2vt973I9_1Q.mp4 2 134 | /video_path/4Du0_Sd_s2s.mp4 2 135 | /video_path/51ecxm8oLP8.mp4 2 136 | /video_path/5DSG23B5XGQ.mp4 2 137 | /video_path/5w6EUzNYLXk.mp4 2 138 | /video_path/69VYrk0GeaU.mp4 2 139 | /video_path/7jRryPp8C3A.mp4 2 140 | /video_path/7kv3YZNpo8Q.mp4 2 141 | /video_path/7XPQYY0B7Rk.mp4 2 142 | /video_path/a1-dLLOeKUA.mp4 2 143 | /video_path/ApSPE69IPNc.mp4 2 144 | /video_path/BLVruFeiJGA.mp4 2 145 | /video_path/BM8hJsBsRXI.mp4 2 146 | /video_path/Dbl84rzEZWw.mp4 2 147 | /video_path/eckl2DvLZIQ.mp4 2 148 | /video_path/ehnhb5_IPdI.mp4 2 149 | /video_path/fM0rd3yFSjg.mp4 2 150 | /video_path/fnIPcKKj7gk.mp4 2 151 | /video_path/GbeLVnVmxX4.mp4 2 152 | /video_path/G_TDLaTop6U.mp4 2 153 | /video_path/Hu0d8BfRpYo.mp4 2 154 | /video_path/HWrr0tJTlsE.mp4 2 155 | /video_path/iyVphDMrJ9M.mp4 2 156 | /video_path/jc9LampMMU8.mp4 2 157 | /video_path/JphvDiE09UA.mp4 2 158 | /video_path/j_cMKkyp6q8.mp4 2 159 | /video_path/k7pxeGS1a3U.mp4 2 160 | /video_path/kRaVPCzsbyA.mp4 2 161 | /video_path/KYo2YXlJjKg.mp4 2 162 | /video_path/L2cbtyuqRXE.mp4 2 163 | /video_path/lzmn9_OdR7A.mp4 2 164 | /video_path/m4VCmdKJgtY.mp4 2 165 | /video_path/m_RWZGoHczY.mp4 2 166 | /video_path/NBPUBLied0o.mp4 2 167 | /video_path/nBT7PfC6YB4.mp4 2 168 | /video_path/NJJbE1ZaPOc.mp4 2 169 | /video_path/O1H0HGnmar4.mp4 2 170 | /video_path/O3StYjvfjUo.mp4 2 171 | /video_path/Oby_tVxQZAI.mp4 2 172 | /video_path/ONRQrqxZ5kY.mp4 2 173 | /video_path/OwhjTacbn_I.mp4 2 174 | /video_path/OxlsLZcvRi0.mp4 2 175 | /video_path/pIMX96z-eWQ.mp4 2 176 | /video_path/PJO4dgqCs1g.mp4 2 177 | /video_path/qfXX37b-Df0.mp4 2 178 | /video_path/-C7K3i5Ea7s.mp4 19 179 | /video_path/2_-EBIujCQw.mp4 19 180 | /video_path/3cUkDXZzeyg.mp4 19 181 | /video_path/59B4LwCURJ0.mp4 19 182 | /video_path/9c1Jq7Ekago.mp4 19 183 | /video_path/aKPL2Rmj0hI.mp4 19 184 | /video_path/aw_2mvb69Ow.mp4 19 185 | /video_path/bj1LoKDgR4A.mp4 19 186 | /video_path/BxhVnMPLR2I.mp4 19 187 | /video_path/CJ_-t9AtkpA.mp4 19 188 | /video_path/cK5YxQFFlZE.mp4 19 189 | /video_path/F0ve4k_sINQ.mp4 19 190 | /video_path/fjcQKVFvPlQ.mp4 19 191 | /video_path/FQ5N13TlXLQ.mp4 19 192 | /video_path/gatJCfnz6bw.mp4 19 193 | /video_path/h8CtsPAaa5Y.mp4 19 194 | /video_path/HdXcdcyZwfE.mp4 19 195 | /video_path/Hu8wMXKpQcM.mp4 19 196 | /video_path/j8s1B4ew7U8.mp4 19 197 | /video_path/JLkujIaDKsQ.mp4 19 198 | /video_path/NttqBWSA_DM.mp4 19 199 | /video_path/Pp4t7K86S7k.mp4 19 200 | /video_path/PVgowwPth5M.mp4 19 201 | /video_path/-EPJquqxJ1c.mp4 1 202 | /video_path/06XQuZLTENE.mp4 1 203 | /video_path/0F62OyVKOwk.mp4 1 204 | /video_path/2SqBXs-Y3ts.mp4 1 205 | /video_path/3Nw_fZ3B1sc.mp4 1 206 | /video_path/57I72z9R1H0.mp4 1 207 | /video_path/5KPMeBTNOfA.mp4 1 208 | /video_path/5nQYrFwC7G4.mp4 1 209 | /video_path/64-2Ly9aBn8.mp4 1 210 | /video_path/8_LRJ8vLMxI.mp4 1 211 | /video_path/9akxlH6BtyM.mp4 1 212 | /video_path/9mGUSQKOVw4.mp4 1 213 | /video_path/aKTGjx3afvs.mp4 1 214 | /video_path/APQwu9Qx3As.mp4 1 215 | /video_path/aZ3DJnCxujA.mp4 1 216 | /video_path/BwzeCSd2bVc.mp4 1 217 | /video_path/CUT22MsW04I.mp4 1 218 | /video_path/DhlIQskLhKU.mp4 1 219 | /video_path/djiMq2c_fCo.mp4 1 220 | /video_path/eaSp-INcrwk.mp4 1 221 | /video_path/EIhCVahxZkA.mp4 1 222 | /video_path/eORbJowLOFg.mp4 1 223 | /video_path/fBIrnLxKB94.mp4 1 224 | /video_path/fnXB1xyRFaA.mp4 1 225 | /video_path/g-z44AlcZJY.mp4 1 226 | /video_path/g5vdCoCp4IY.mp4 1 227 | /video_path/GmUrNFGqTA0.mp4 1 228 | /video_path/GsypMFw4OJk.mp4 1 229 | /video_path/hGAZXMj_3gw.mp4 1 230 | /video_path/hOOj_Atm_QU.mp4 1 231 | /video_path/hxxXvsrIL18.mp4 1 232 | /video_path/IisgnbMfKvI.mp4 1 233 | /video_path/J0KI-i6aEmc.mp4 1 234 | /video_path/JEPqvTVdqVc.mp4 1 235 | /video_path/Kcih9VWhp98.mp4 1 236 | /video_path/l-CWyxBYfv0.mp4 1 237 | /video_path/L4LSRgdie-c.mp4 1 238 | /video_path/LTudru2FF9I.mp4 1 239 | /video_path/Luru8cYPFY4.mp4 1 240 | /video_path/MCpife5sFPA.mp4 1 241 | /video_path/MiDnGwVBUz8.mp4 1 242 | /video_path/moqWBk6Ulfc.mp4 1 243 | /video_path/MT9_FjukU4w.mp4 1 244 | /video_path/nf4oCSeAwBA.mp4 1 245 | /video_path/n_D0Gt2pL-0.mp4 1 246 | /video_path/OGezrQzRN58.mp4 1 247 | /video_path/OhShkKHk9-M.mp4 1 248 | /video_path/ozg-_3UPmoQ.mp4 1 249 | /video_path/PJcwc0GB0Is.mp4 1 250 | /video_path/pz7aYDVWRX4.mp4 1 251 | /video_path/Q6x0omrhsoo.mp4 1 252 | /video_path/qm7nAdh63ao.mp4 1 253 | /video_path/QtctitWArm0.mp4 1 254 | /video_path/R0vlehzbAGE.mp4 1 255 | /video_path/-FdD0-zF_K4.mp4 4 256 | /video_path/-fvRejnoN3M.mp4 4 257 | /video_path/0-90-ucVHFs.mp4 4 258 | /video_path/1lsprM6MJ1A.mp4 4 259 | /video_path/31rEOB9AwG4.mp4 4 260 | /video_path/3_UUq7p6-5M.mp4 4 261 | /video_path/5Fud4xTBgwk.mp4 4 262 | /video_path/5I1lclB_tPU.mp4 4 263 | /video_path/6oHYb6_bFYo.mp4 4 264 | /video_path/Ai3YQJbuS0A.mp4 4 265 | /video_path/BH9mYVQGdm4.mp4 4 266 | /video_path/bL3PQ_3hrbc.mp4 4 267 | /video_path/cCzwH7d4Ags.mp4 4 268 | /video_path/cDcuU3KVpuo.mp4 4 269 | /video_path/D3s7heDD5rE.mp4 4 270 | /video_path/DscPAFMdo1w.mp4 4 271 | /video_path/Dxb-zo3lWPM.mp4 4 272 | /video_path/e595abxh9m4.mp4 4 273 | /video_path/gF6EgRxF-xU.mp4 4 274 | /video_path/gpS8AHh3dRE.mp4 4 275 | /video_path/HjXMlsoLm58.mp4 4 276 | /video_path/hL6nWluFOwk.mp4 4 277 | /video_path/Hp4WOXFIUvc.mp4 4 278 | /video_path/iivqpZsN76M.mp4 4 279 | /video_path/iwvnA_b9Q8Y.mp4 4 280 | /video_path/Iw_sNY02eh4.mp4 4 281 | /video_path/KMdkwYGpONo.mp4 4 282 | /video_path/kvcX078gIS8.mp4 4 283 | /video_path/K_ituJgAv98.mp4 4 284 | /video_path/l-Nlm55ztEs.mp4 4 285 | /video_path/LcVrAL3yFC4.mp4 4 286 | /video_path/mFURUnD8eJs.mp4 4 287 | /video_path/mg7Esx3UXUc.mp4 4 288 | /video_path/msUTYi295qQ.mp4 4 289 | /video_path/NL33d3ivsnI.mp4 4 290 | /video_path/Nr_VTtWkNHg.mp4 4 291 | /video_path/nS00pPC1NZE.mp4 4 292 | /video_path/oxdaSeq4EVU.mp4 4 293 | /video_path/o_qXg8h3J9Q.mp4 4 294 | /video_path/PIBP3lEJCKA.mp4 4 295 | /video_path/pXCTmVOT82s.mp4 4 296 | /video_path/quwzg7Vixsw.mp4 4 297 | /video_path/-fKaTT9nnlg.mp4 11 298 | /video_path/3-SOKCuMujc.mp4 11 299 | /video_path/3Vlt_EZRGgc.mp4 11 300 | /video_path/49jF6RZy3GE.mp4 11 301 | /video_path/4A2I-sZHXvI.mp4 11 302 | /video_path/671uYTHpalI.mp4 11 303 | /video_path/9msWAqfA5lg.mp4 11 304 | /video_path/9umaLJ6qdXo.mp4 11 305 | /video_path/BfYvfy97D0Y.mp4 11 306 | /video_path/Cgrn1Vr010E.mp4 11 307 | /video_path/cTVnjY0bXlU.mp4 11 308 | /video_path/dl-p2Kb44B8.mp4 11 309 | /video_path/Dwj4qZcN2Cg.mp4 11 310 | /video_path/EAWVQWpgvUA.mp4 11 311 | /video_path/eIqBFOX5YTo.mp4 11 312 | /video_path/Fkev7W8rr3I.mp4 11 313 | /video_path/fZ3RyWrtjYM.mp4 11 314 | /video_path/GI9S9xdR5KI.mp4 11 315 | /video_path/gJDGLzKcqyU.mp4 11 316 | /video_path/GnoMoLePRvE.mp4 11 317 | /video_path/gNuqWwOeG5g.mp4 11 318 | /video_path/GSM9EYqf93A.mp4 11 319 | /video_path/Hr01KkJvKYA.mp4 11 320 | /video_path/Jn8QxcBTI20.mp4 11 321 | /video_path/KlWqFDhEphc.mp4 11 322 | /video_path/koYdj0vemwQ.mp4 11 323 | /video_path/NC-Lult6iM8.mp4 11 324 | /video_path/ngYVqyOeqe4.mp4 11 325 | /video_path/nrw1s_Z47O0.mp4 11 326 | /video_path/ODmwCavm6kc.mp4 11 327 | /video_path/oFzfGZOYCDc.mp4 11 328 | /video_path/Pb3S-FuBwIM.mp4 11 329 | /video_path/-ged3dOpfK8.mp4 20 330 | /video_path/2M2gPCNunZw.mp4 20 331 | /video_path/abNuOlCTu-g.mp4 20 332 | /video_path/AMO52zk3AXk.mp4 20 333 | /video_path/BADeHh0xNME.mp4 20 334 | /video_path/BloOJGSZ2S8.mp4 20 335 | /video_path/D47KVB-oT98.mp4 20 336 | /video_path/DZVoNuBsjN8.mp4 20 337 | /video_path/EgFSMM3ReE4.mp4 20 338 | /video_path/EJ4_zTzzNbY.mp4 20 339 | /video_path/eUS8tJfDV6c.mp4 20 340 | /video_path/feVH2esO1FI.mp4 20 341 | /video_path/HknJP1qf-_0.mp4 20 342 | /video_path/I0TjUM8qYVs.mp4 20 343 | /video_path/If8ewVG8UZg.mp4 20 344 | /video_path/iIo5LtWfxrY.mp4 20 345 | /video_path/J-8WcSqVwq0.mp4 20 346 | /video_path/j5dwnDyxh4E.mp4 20 347 | /video_path/k0RbwgZbSAg.mp4 20 348 | /video_path/kKgJMY8QFis.mp4 20 349 | /video_path/nypJl5OQ34g.mp4 20 350 | /video_path/pF5MJIw9pt4.mp4 20 351 | /video_path/-hiZ75P9iyM.mp4 8 352 | /video_path/0vjVJuPik9k.mp4 8 353 | /video_path/1PqD-MYDV3g.mp4 8 354 | /video_path/1sje0zq-F10.mp4 8 355 | /video_path/2rZoIVf4pYY.mp4 8 356 | /video_path/6DCKEQVAFR8.mp4 8 357 | /video_path/724-cEL_Z6I.mp4 8 358 | /video_path/7s8W4dnsFQQ.mp4 8 359 | /video_path/aLoP1MG8aLA.mp4 8 360 | /video_path/ap1qFh-lS-8.mp4 8 361 | /video_path/aUkEBsZGfA4.mp4 8 362 | /video_path/Dy_OnvkVG5Q.mp4 8 363 | /video_path/eOsY84oYqKg.mp4 8 364 | /video_path/Evp5EETgGhI.mp4 8 365 | /video_path/FplYx3s8uEg.mp4 8 366 | /video_path/G69MHKMNzFY.mp4 8 367 | /video_path/ieTSyTRlyLY.mp4 8 368 | /video_path/ijuoM54oCao.mp4 8 369 | /video_path/ilbYTM2tnpE.mp4 8 370 | /video_path/jdL_GmE84Pw.mp4 8 371 | /video_path/JK5rb6acQvY.mp4 8 372 | /video_path/kX4D3LLDvIk.mp4 8 373 | /video_path/li4m2dCN7bI.mp4 8 374 | /video_path/LiSDivNECTs.mp4 8 375 | /video_path/mMcz8jeAvIY.mp4 8 376 | /video_path/mrRVEiyEO6M.mp4 8 377 | /video_path/mXaFmSQmC8E.mp4 8 378 | /video_path/NFYqYfzB9bQ.mp4 8 379 | /video_path/obdMG9wwcPE.mp4 8 380 | /video_path/OGhQITOzX_c.mp4 8 381 | /video_path/ok1TeEEBonk.mp4 8 382 | /video_path/OqSDh--PZig.mp4 8 383 | /video_path/p2h-6KERCyw.mp4 8 384 | /video_path/pDBQ_N-6rRE.mp4 8 385 | /video_path/pJrLxSVI-_A.mp4 8 386 | /video_path/q-Ax4tMtBYY.mp4 8 387 | /video_path/Q3a3w3GtbJQ.mp4 8 388 | /video_path/QPIJPAQNx-o.mp4 8 389 | /video_path/rMMpeLLgdgY.mp4 8 390 | /video_path/-JSu9M6Re4w.mp4 13 391 | /video_path/-zlNQfbrStg.mp4 13 392 | /video_path/0dUlnBGu4rY.mp4 13 393 | /video_path/0_qk_CrqRM4.mp4 13 394 | /video_path/1bNc2CgwU-4.mp4 13 395 | /video_path/2WsBzx82CnQ.mp4 13 396 | /video_path/31qBW0Imj_0.mp4 13 397 | /video_path/4zxgX9IpmMY.mp4 13 398 | /video_path/74kVE4Ixn8g.mp4 13 399 | /video_path/7yDymtT809s.mp4 13 400 | /video_path/9oeVA0nl0m0.mp4 13 401 | /video_path/cctNcVuGYfo.mp4 13 402 | /video_path/CIBf9EewvU0.mp4 13 403 | /video_path/cTSUeeG12Sk.mp4 13 404 | /video_path/DN4E4VunBAo.mp4 13 405 | /video_path/eDLHAN6u2yQ.mp4 13 406 | /video_path/EkcmabUBzyc.mp4 13 407 | /video_path/f6HtqolhKqo.mp4 13 408 | /video_path/FSTfAqQpsrI.mp4 13 409 | /video_path/gBEtcBmZsp8.mp4 13 410 | /video_path/gfJozntAqZo.mp4 13 411 | /video_path/gUWJ-6nL5-8.mp4 13 412 | /video_path/Inf44ssPIUA.mp4 13 413 | /video_path/JF-pIZsJvZQ.mp4 13 414 | /video_path/JpGuSxDQ8js.mp4 13 415 | /video_path/lowOxcK5JAA.mp4 13 416 | /video_path/m0xTVy6djRE.mp4 13 417 | /video_path/MEbsVeGnqJo.mp4 13 418 | /video_path/n4xISnZRmkY.mp4 13 419 | /video_path/o0zEmaGBgBY.mp4 13 420 | /video_path/ovxMconfxRo.mp4 13 421 | /video_path/-k2pgWCPmsc.mp4 23 422 | /video_path/-zT0oDRiz6E.mp4 23 423 | /video_path/01D17PnsGpA.mp4 23 424 | /video_path/4eHQ5KmOZaM.mp4 23 425 | /video_path/5Cid7q9_Uq0.mp4 23 426 | /video_path/6-33XEnm3to.mp4 23 427 | /video_path/6eY9QGkbmlU.mp4 23 428 | /video_path/AkeRnPUGdv0.mp4 23 429 | /video_path/BJXsXISIQhk.mp4 23 430 | /video_path/cEWXs-UmOuA.mp4 23 431 | /video_path/CNjDXnLcVfA.mp4 23 432 | /video_path/crCCyOlDY3w.mp4 23 433 | /video_path/FbTEEN7p-p4.mp4 23 434 | /video_path/InngTKk9zJg.mp4 23 435 | /video_path/J9L26AxMLEw.mp4 23 436 | /video_path/KdPIAgInIGU.mp4 23 437 | /video_path/lS1PN8Fdd4Y.mp4 23 438 | /video_path/M7ZMSsUm2pM.mp4 23 439 | /video_path/P8s4vpliKs4.mp4 23 440 | /video_path/-l635D0n-kk.mp4 15 441 | /video_path/74ttY4-QlIE.mp4 15 442 | /video_path/8MPdw-0HbTg.mp4 15 443 | /video_path/9JLVK138A4U.mp4 15 444 | /video_path/9XkOssKciqU.mp4 15 445 | /video_path/ajDGW_bOm5Y.mp4 15 446 | /video_path/b6c4-U6Z1RI.mp4 15 447 | /video_path/BfP1yZevi1c.mp4 15 448 | /video_path/CbwhqSnt54I.mp4 15 449 | /video_path/cmUXo4Crrm0.mp4 15 450 | /video_path/DBulVOm5LGk.mp4 15 451 | /video_path/DFAHKL_l6KE.mp4 15 452 | /video_path/DhfyYXvszBU.mp4 15 453 | /video_path/DPbxUe4qyyE.mp4 15 454 | /video_path/fGsYDa3bzzI.mp4 15 455 | /video_path/GOli8l0nco4.mp4 15 456 | /video_path/HnYm7y7jsMY.mp4 15 457 | /video_path/IcAIaBzQrkI.mp4 15 458 | /video_path/KrcBZCqx37k.mp4 15 459 | /video_path/lA9xa01b-Ds.mp4 15 460 | /video_path/lz3JDsDHmxA.mp4 15 461 | /video_path/nDo7JJHvve4.mp4 15 462 | /video_path/Ob6TYXo6CxI.mp4 15 463 | /video_path/ODfGbQ-qsak.mp4 15 464 | /video_path/oT-6ZF1r1fw.mp4 15 465 | /video_path/PAMMlaYVIZo.mp4 15 466 | /video_path/PvhEjE0Z3tk.mp4 15 467 | /video_path/QbGUPetvj84.mp4 15 468 | /video_path/QjlSrL6ZfhU.mp4 15 469 | /video_path/qXOySyYARRg.mp4 15 470 | /video_path/-MsywHWz1Z0.mp4 38 471 | /video_path/4UvjeoJGgV4.mp4 38 472 | /video_path/98ftIyS59lw.mp4 38 473 | /video_path/9FvUsjje8ic.mp4 38 474 | /video_path/9i2oJR_1ZXs.mp4 38 475 | /video_path/Adcba-WMbEE.mp4 38 476 | /video_path/cQm4r5QFHBA.mp4 38 477 | /video_path/ehAp300c0e8.mp4 38 478 | /video_path/FyHooK1u3pg.mp4 38 479 | /video_path/jKR8SwI0gFw.mp4 38 480 | /video_path/LhMRLPkxRu0.mp4 38 481 | /video_path/-NoC1rkNgnU.mp4 39 482 | /video_path/-uyBJ0nv4oI.mp4 39 483 | /video_path/2oztxG2wEVU.mp4 39 484 | /video_path/3OjroDjmskM.mp4 39 485 | /video_path/6jbVcMgN_HI.mp4 39 486 | /video_path/8uXhDt79KNQ.mp4 39 487 | /video_path/AgVZ3p8OJ0A.mp4 39 488 | /video_path/ayf3coj_zMQ.mp4 39 489 | /video_path/HXI1V2VEkSA.mp4 39 490 | /video_path/kC_97FdzxUY.mp4 39 491 | /video_path/-qXC-IUT7Hk.mp4 26 492 | /video_path/0a3B_9RNCPQ.mp4 26 493 | /video_path/0vtVEtVXVz4.mp4 26 494 | /video_path/4Qil5I1XLZ8.mp4 26 495 | /video_path/5EVZHPaszAI.mp4 26 496 | /video_path/7Ps9jswWgbw.mp4 26 497 | /video_path/8WU3Q0_dYXY.mp4 26 498 | /video_path/cTwCK3dRV90.mp4 26 499 | /video_path/d6JZXKg79yA.mp4 26 500 | /video_path/DzDDgK_PdR4.mp4 26 501 | /video_path/f6N38hfD4o4.mp4 26 502 | /video_path/fu6kGcDpPWU.mp4 26 503 | /video_path/GrJWPityMfc.mp4 26 504 | /video_path/hcPB2R1o0T0.mp4 26 505 | /video_path/IhlG2J2PAbs.mp4 26 506 | /video_path/KCkXJZP9MNw.mp4 26 507 | /video_path/kRDMBQEL4I0.mp4 26 508 | /video_path/L2vZDVY0Wro.mp4 26 509 | /video_path/-QznLhQqdHI.mp4 34 510 | /video_path/1nDjNf8YXlE.mp4 34 511 | /video_path/2R2CzkzVdL0.mp4 34 512 | /video_path/Af4CT12J8GI.mp4 34 513 | /video_path/bZWr4lidwaM.mp4 34 514 | /video_path/C4uRBT4IxWk.mp4 34 515 | /video_path/dGV5XWzPF9Y.mp4 34 516 | /video_path/DyHsx_AOrzI.mp4 34 517 | /video_path/fOeg8IofzV0.mp4 34 518 | /video_path/FQJmw7b-ylI.mp4 34 519 | /video_path/Fs5P2Ptz3Vg.mp4 34 520 | /video_path/Il0iJUNnq7k.mp4 34 521 | /video_path/-SZbLkUKfAc.mp4 22 522 | /video_path/06wv8JmNyy8.mp4 22 523 | /video_path/1Onm7fJ0zYE.mp4 22 524 | /video_path/3iQ664gFHLw.mp4 22 525 | /video_path/5q4APWu8FDY.mp4 22 526 | /video_path/9VKox-wy4fU.mp4 22 527 | /video_path/C7r2LlGqrcE.mp4 22 528 | /video_path/CyczQoe3MiQ.mp4 22 529 | /video_path/GWVtHjR5Psw.mp4 22 530 | /video_path/hAoVAxErpsE.mp4 22 531 | /video_path/hYXYcOHT6aE.mp4 22 532 | /video_path/IiueXfhu4D0.mp4 22 533 | /video_path/j5GYMOvjjtk.mp4 22 534 | /video_path/jnTdshj2r4g.mp4 22 535 | /video_path/LcaiMHduqPc.mp4 22 536 | /video_path/LlGYef6PhGw.mp4 22 537 | /video_path/lMTI6MtL1wU.mp4 22 538 | /video_path/mCQCLkAcn0Y.mp4 22 539 | /video_path/oJ8cE0-xGF0.mp4 22 540 | /video_path/OWK9Ut3PA1k.mp4 22 541 | /video_path/Px-JGoUNN6U.mp4 22 542 | /video_path/-UZx2zSTfdo.mp4 9 543 | /video_path/1fV0Y5QLzLQ.mp4 9 544 | /video_path/29wOwkW7-ME.mp4 9 545 | /video_path/2tjFVGih71A.mp4 9 546 | /video_path/660fOrTJnCc.mp4 9 547 | /video_path/7OGnuOkTDsU.mp4 9 548 | /video_path/9MMc5A0MMWg.mp4 9 549 | /video_path/AvbxofLe-MI.mp4 9 550 | /video_path/bctTKygOj6o.mp4 9 551 | /video_path/bnMRJzhF2lI.mp4 9 552 | /video_path/BXWkN_YAMnA.mp4 9 553 | /video_path/CJrrnLxe3lc.mp4 9 554 | /video_path/DKXMxzegPAE.mp4 9 555 | /video_path/eEyTzVbpG3w.mp4 9 556 | /video_path/eHw1ICKt8sE.mp4 9 557 | /video_path/ex90Nui_S5k.mp4 9 558 | /video_path/f2oyLPHXNT8.mp4 9 559 | /video_path/g9F8cTZ4eDQ.mp4 9 560 | /video_path/h1L4gag4xnE.mp4 9 561 | /video_path/IRwKri1rqpU.mp4 9 562 | /video_path/jQkZvGXgNDs.mp4 9 563 | /video_path/JvMFjGjnBJc.mp4 9 564 | /video_path/jX6rIhIXu1k.mp4 9 565 | /video_path/K4rGww6FGMg.mp4 9 566 | /video_path/kUXumDhW_tc.mp4 9 567 | /video_path/Lfe8MgI8eTw.mp4 9 568 | /video_path/LTFWGGL859w.mp4 9 569 | /video_path/LUDic-RyUT8.mp4 9 570 | /video_path/mtpVrWkO8iE.mp4 9 571 | /video_path/o79esR_TQxk.mp4 9 572 | /video_path/onfb5EX23bo.mp4 9 573 | /video_path/oYUa-BtQnvE.mp4 9 574 | /video_path/PrwADKcE-ts.mp4 9 575 | /video_path/QcxSQ6VaqfY.mp4 9 576 | /video_path/qiuQaa1F5j0.mp4 9 577 | /video_path/r0boh-NbFYY.mp4 9 578 | /video_path/rISS-nR_Ug4.mp4 9 579 | /video_path/-XBAxsIcQs8.mp4 17 580 | /video_path/-Yst1qShEbo.mp4 17 581 | /video_path/0MIQLk4nwms.mp4 17 582 | /video_path/1K7alb7Ne_A.mp4 17 583 | /video_path/32zHF9Yvyp0.mp4 17 584 | /video_path/6ZX6F1PUUe0.mp4 17 585 | /video_path/ag5-goiMNsQ.mp4 17 586 | /video_path/aNc7TR80tVo.mp4 17 587 | /video_path/cYzF4GOE8Fo.mp4 17 588 | /video_path/d-SGsAN22lU.mp4 17 589 | /video_path/EAjzt1M4ueU.mp4 17 590 | /video_path/ELWyxjy4jOo.mp4 17 591 | /video_path/E_IXck9171A.mp4 17 592 | /video_path/G1EOqEUyDEk.mp4 17 593 | /video_path/GWBrbvIhncw.mp4 17 594 | /video_path/HU7ZXAmL8vo.mp4 17 595 | /video_path/I9SR2wleAwk.mp4 17 596 | /video_path/IFHriQpQB50.mp4 17 597 | /video_path/kpvuGfHEz90.mp4 17 598 | /video_path/KvNo4ITlaDw.mp4 17 599 | /video_path/lPWGq3p9KdU.mp4 17 600 | /video_path/mekhnm2-NZY.mp4 17 601 | /video_path/msPBI-LVJ1o.mp4 17 602 | /video_path/oAV7ZzoYNss.mp4 17 603 | /video_path/QllyroV4kIU.mp4 17 604 | /video_path/-Y2wMe48BfI.mp4 14 605 | /video_path/02PqJ8iPLxQ.mp4 14 606 | /video_path/0fJPgUFJLcQ.mp4 14 607 | /video_path/0t2t6Lh-k3U.mp4 14 608 | /video_path/1_2u8oNloBs.mp4 14 609 | /video_path/3GO_A7O8ILg.mp4 14 610 | /video_path/3RCUz_d9XQQ.mp4 14 611 | /video_path/5egAHIPiGlY.mp4 14 612 | /video_path/6s27NmJQi70.mp4 14 613 | /video_path/9sFPahcX7z0.mp4 14 614 | /video_path/bE4MZ6NQhsA.mp4 14 615 | /video_path/bRPSi32Gcw4.mp4 14 616 | /video_path/EJD6BT-zPHU.mp4 14 617 | /video_path/fJBcBEBcKKg.mp4 14 618 | /video_path/Gds4pc2E8cw.mp4 14 619 | /video_path/h7J28x6fRaQ.mp4 14 620 | /video_path/iQCLPg5f3tE.mp4 14 621 | /video_path/j2iuJUSaUT0.mp4 14 622 | /video_path/ljJnlOOAkXQ.mp4 14 623 | /video_path/mXn3f-o-l_M.mp4 14 624 | /video_path/NAleiCTByWc.mp4 14 625 | /video_path/NPDxtgCLBmY.mp4 14 626 | /video_path/NxHCozu-sBM.mp4 14 627 | /video_path/nZxbfboIRvU.mp4 14 628 | /video_path/p0ydXpe9QDI.mp4 14 629 | /video_path/pN1tZo4eaOM.mp4 14 630 | /video_path/R5JTKMWCzQ0.mp4 14 631 | /video_path/rHt_bX0MfQ8.mp4 14 632 | /video_path/RSpxA3MwdVc.mp4 14 633 | /video_path/S3uPFcU4qRo.mp4 14 634 | /video_path/-_OkMf_umyE.mp4 12 635 | /video_path/34TOon0KiPQ.mp4 12 636 | /video_path/5FUnepktYxE.mp4 12 637 | /video_path/5SJxq-D6-Bk.mp4 12 638 | /video_path/5wxGEfY9egw.mp4 12 639 | /video_path/6Ayxz5p7GBs.mp4 12 640 | /video_path/7Bm_BwZrq6c.mp4 12 641 | /video_path/95lKeVet2qQ.mp4 12 642 | /video_path/arqG_2ftfOY.mp4 12 643 | /video_path/bVbBCtiFIPU.mp4 12 644 | /video_path/cbT18UtpGJQ.mp4 12 645 | /video_path/Dngvez7MLiM.mp4 12 646 | /video_path/F5MRDLajCz0.mp4 12 647 | /video_path/FjHtL7gIQLk.mp4 12 648 | /video_path/fY7SAR5RXbY.mp4 12 649 | /video_path/fyDyN2PRNGU.mp4 12 650 | /video_path/hVwmifJdlfg.mp4 12 651 | /video_path/i4qwUWVR0ik.mp4 12 652 | /video_path/I4U5qBSdUb0.mp4 12 653 | /video_path/I5qc5frLypE.mp4 12 654 | /video_path/jaAehsIKB40.mp4 12 655 | /video_path/jmkX612KfQE.mp4 12 656 | /video_path/JNoEDzEMzYw.mp4 12 657 | /video_path/KImmBXpM7js.mp4 12 658 | /video_path/nf-WaUkzTGc.mp4 12 659 | /video_path/oPH-8S-d9Dw.mp4 12 660 | /video_path/OQYI20QZhRg.mp4 12 661 | /video_path/O_0pglA201U.mp4 12 662 | /video_path/pbmC27Z3kuc.mp4 12 663 | /video_path/PDbkTqHgziA.mp4 12 664 | /video_path/poKa9lU4Pxs.mp4 12 665 | /video_path/qoaSvUkPDWk.mp4 12 666 | /video_path/07wJDVB95dI.mp4 16 667 | /video_path/1OakmxZDa5c.mp4 16 668 | /video_path/25efi9K5eOQ.mp4 16 669 | /video_path/3yA1e4RFlfg.mp4 16 670 | /video_path/44mJ9VUsGHM.mp4 16 671 | /video_path/4GpXy_srgRs.mp4 16 672 | /video_path/6n--CYH4Pw4.mp4 16 673 | /video_path/8PZqdLjy5Tc.mp4 16 674 | /video_path/99TlXo46g0I.mp4 16 675 | /video_path/aQYQtmzkd28.mp4 16 676 | /video_path/BWph-kU5VcM.mp4 16 677 | /video_path/CgNZLuHrV0o.mp4 16 678 | /video_path/fwvVdw3tzg0.mp4 16 679 | /video_path/gt6PsX4upCU.mp4 16 680 | /video_path/IIeq4I3pwHA.mp4 16 681 | /video_path/JGOFzgtKvXM.mp4 16 682 | /video_path/kZ6i3JSqE8w.mp4 16 683 | /video_path/M66jTwPBL9Q.mp4 16 684 | /video_path/NJib85nKy5k.mp4 16 685 | /video_path/nUjRM_ya1m4.mp4 16 686 | /video_path/s89pcR9TzFc.mp4 16 687 | /video_path/SDl6psYRA_0.mp4 16 688 | /video_path/sgiGXaeT-EU.mp4 16 689 | /video_path/SPxisxSv-dM.mp4 16 690 | /video_path/TS_AG7lHr3E.mp4 16 691 | /video_path/U8kUTZXyDfU.mp4 16 692 | /video_path/ucpj5J7H9jA.mp4 16 693 | /video_path/08eXvhJZprk.mp4 27 694 | /video_path/0xT5mfWrW_I.mp4 27 695 | /video_path/48M_CwJE7Z0.mp4 27 696 | /video_path/4fQUQ94fPYM.mp4 27 697 | /video_path/77XNYG1twd4.mp4 27 698 | /video_path/8BaeLRCb0B4.mp4 27 699 | /video_path/ae1lL3GLVdM.mp4 27 700 | /video_path/AGnKuYiN1Bg.mp4 27 701 | /video_path/aV9JJSTU6Ak.mp4 27 702 | /video_path/BLoV1TTTe9Y.mp4 27 703 | /video_path/dWE2jGv8-8E.mp4 27 704 | /video_path/GhqVaxDZZ1c.mp4 27 705 | /video_path/HWOadHxYUgA.mp4 27 706 | /video_path/KlRTtDJbyxQ.mp4 27 707 | /video_path/Lz3gtI1fDdk.mp4 27 708 | /video_path/NRp7xXLpyjc.mp4 27 709 | /video_path/OANJbkMy_Ss.mp4 27 710 | /video_path/P4JOSZbfrGM.mp4 27 711 | /video_path/0B4x_mHgVN4.mp4 5 712 | /video_path/1OgR_bJM_Zw.mp4 5 713 | /video_path/40ad0Iq23KA.mp4 5 714 | /video_path/40bZthiD2o0.mp4 5 715 | /video_path/4ntqS_R1r70.mp4 5 716 | /video_path/58Ku24EerKw.mp4 5 717 | /video_path/6zcsYUqaWCE.mp4 5 718 | /video_path/9LYBiLy_a-k.mp4 5 719 | /video_path/a1DFmgLJmMk.mp4 5 720 | /video_path/aN78RVfe0Js.mp4 5 721 | /video_path/aq8OwFaIQ4I.mp4 5 722 | /video_path/B7SWLiDjMvI.mp4 5 723 | /video_path/bNLtwX2LDQI.mp4 5 724 | /video_path/bnvs8IzCQqk.mp4 5 725 | /video_path/CEq6QWOHTlo.mp4 5 726 | /video_path/cHPUPBFVHaU.mp4 5 727 | /video_path/crSd9cVn0qo.mp4 5 728 | /video_path/D7FnXaoPwR0.mp4 5 729 | /video_path/enDCSfO4GRo.mp4 5 730 | /video_path/F88btEbzdw0.mp4 5 731 | /video_path/F98AtFqq2q4.mp4 5 732 | /video_path/Gj8z6bFOU24.mp4 5 733 | /video_path/hCbdqjnstXE.mp4 5 734 | /video_path/HxT7E14euZ8.mp4 5 735 | /video_path/IiB3ZV3FHdQ.mp4 5 736 | /video_path/JoGYWfM7UG0.mp4 5 737 | /video_path/Ki388Otp0U8.mp4 5 738 | /video_path/MYaFQFiVz4I.mp4 5 739 | /video_path/NG7E1OKqpIk.mp4 5 740 | /video_path/Nw2bLljtueg.mp4 5 741 | /video_path/O_c6g8fAMxs.mp4 5 742 | /video_path/PiZbnalFlww.mp4 5 743 | /video_path/Qdha875hRYs.mp4 5 744 | /video_path/qM_GS8Swk-k.mp4 5 745 | /video_path/R3Fx9G0r5iY.mp4 5 746 | /video_path/raiufF7FuQg.mp4 5 747 | /video_path/RCfmV_oW-Jc.mp4 5 748 | /video_path/rfRjmz5DvLw.mp4 5 749 | /video_path/ruhNNUsD4jk.mp4 5 750 | /video_path/rV1rttrlA08.mp4 5 751 | /video_path/SClSnPYIay0.mp4 5 752 | /video_path/si5p5QoINvA.mp4 5 753 | /video_path/0CCSV5QFgGo.mp4 21 754 | /video_path/2paEgKKEK5o.mp4 21 755 | /video_path/2Ux_m8iCgcU.mp4 21 756 | /video_path/3dTzfSRxRZc.mp4 21 757 | /video_path/9rDS5VK1Xqs.mp4 21 758 | /video_path/a4L_014Czao.mp4 21 759 | /video_path/cIx7mOV8FM8.mp4 21 760 | /video_path/cx5G1VdC9UA.mp4 21 761 | /video_path/cZ_eoeZx6kY.mp4 21 762 | /video_path/DNAtW0EVR9w.mp4 21 763 | /video_path/e49kAYjvMcQ.mp4 21 764 | /video_path/F0863luTyfA.mp4 21 765 | /video_path/GQbJ495g0nI.mp4 21 766 | /video_path/IZORhyAHhZs.mp4 21 767 | /video_path/KBDLtoPR140.mp4 21 768 | /video_path/MkvKYP9vLsE.mp4 21 769 | /video_path/Np90zUnCB-g.mp4 21 770 | /video_path/Nv8tTPsiFCA.mp4 21 771 | /video_path/QeZF3chcmIk.mp4 21 772 | /video_path/RH-gsrUwLrA.mp4 21 773 | /video_path/s1NiJOmyaLI.mp4 21 774 | /video_path/0cGHykGfO-U.mp4 10 775 | /video_path/1jOmhNgJNuY.mp4 10 776 | /video_path/1jw80-_vWtA.mp4 10 777 | /video_path/3lorXZWgnDI.mp4 10 778 | /video_path/41y1unGur-Q.mp4 10 779 | /video_path/47FjtSgpN4U.mp4 10 780 | /video_path/4B_rg5uTRIo.mp4 10 781 | /video_path/5FfVjiou_YE.mp4 10 782 | /video_path/7q6HHVy-bjw.mp4 10 783 | /video_path/9kOYDulwQv0.mp4 10 784 | /video_path/AI8jESrzqx0.mp4 10 785 | /video_path/B9LzzcN3JmE.mp4 10 786 | /video_path/BJ76KUwrn3I.mp4 10 787 | /video_path/cCgdYZoybhY.mp4 10 788 | /video_path/DbUNhWmKw4M.mp4 10 789 | /video_path/E844Aa1b5hg.mp4 10 790 | /video_path/EF84272YoPE.mp4 10 791 | /video_path/Fd8GDFzySQ8.mp4 10 792 | /video_path/g_1YRGKtQkU.mp4 10 793 | /video_path/HJh3Sro1e44.mp4 10 794 | /video_path/i9InFg2vGf8.mp4 10 795 | /video_path/JwSSrQzw5FM.mp4 10 796 | /video_path/K9cYoQ1BScI.mp4 10 797 | /video_path/l55OSJl6hIk.mp4 10 798 | /video_path/nkBTikaXrck.mp4 10 799 | /video_path/OdDDaVpHojg.mp4 10 800 | /video_path/orcK0EeVkgo.mp4 10 801 | /video_path/OY_W2-ZtPRU.mp4 10 802 | /video_path/PBeKnXxiblQ.mp4 10 803 | /video_path/Plu2rBU_Snc.mp4 10 804 | /video_path/PWMIqJRXx0Q.mp4 10 805 | /video_path/QizxF-7AVRQ.mp4 10 806 | /video_path/qzaPWudLatE.mp4 10 807 | /video_path/r9tBp-sKMbU.mp4 10 808 | /video_path/sAkzifd81rk.mp4 10 809 | /video_path/0h9Bj-OLSr0.mp4 40 810 | /video_path/0VGuYnlB2Yc.mp4 40 811 | /video_path/1f4VGwqUKYI.mp4 40 812 | /video_path/3kXnL0AQhYA.mp4 40 813 | /video_path/4rifH8nB48o.mp4 40 814 | /video_path/9ba1LjgPHGg.mp4 40 815 | /video_path/ARRfrFwC87M.mp4 40 816 | /video_path/Ez-dyu4gJEg.mp4 40 817 | /video_path/grtEi24r2b8.mp4 40 818 | /video_path/0IWzSE0ZSlE.mp4 32 819 | /video_path/57zApLuswoo.mp4 32 820 | /video_path/71LlfdW548U.mp4 32 821 | /video_path/8z44ryOVEEM.mp4 32 822 | /video_path/AuGRfsWTFnA.mp4 32 823 | /video_path/Doqwn0_xe8I.mp4 32 824 | /video_path/FMmoEUEiFVY.mp4 32 825 | /video_path/JjETsqPoCzA.mp4 32 826 | /video_path/l0nNt6GOEMM.mp4 32 827 | /video_path/m0yFpcqKAm4.mp4 32 828 | /video_path/n6l19CWi710.mp4 32 829 | /video_path/nany227g7to.mp4 32 830 | /video_path/nopgqBoUmYg.mp4 32 831 | /video_path/qvK05MslzKA.mp4 32 832 | /video_path/0LPkpY4KIkU.mp4 41 833 | /video_path/2sNV9dixX4o.mp4 41 834 | /video_path/6Er52I7LxPs.mp4 41 835 | /video_path/7l7hZVYkgto.mp4 41 836 | /video_path/CztDIt5nen8.mp4 41 837 | /video_path/jusD8raVyT4.mp4 41 838 | /video_path/Jwo92kqtUTg.mp4 41 839 | /video_path/kSHJ27s6Jsk.mp4 41 840 | /video_path/Nvrlfmg8QkY.mp4 41 841 | /video_path/0Oj4AsZruZk.mp4 42 842 | /video_path/1mfjSry8WUQ.mp4 42 843 | /video_path/8w-3h50E17Q.mp4 42 844 | /video_path/9Dgjirf3Dss.mp4 42 845 | /video_path/AqBOMERKS_4.mp4 42 846 | /video_path/IfNLtevR64c.mp4 42 847 | /video_path/OEWTy2FUIiA.mp4 42 848 | /video_path/qX7qRYKxN4g.mp4 42 849 | /video_path/rmht42iboYQ.mp4 42 850 | /video_path/0RcsKGEc-fw.mp4 28 851 | /video_path/0_XPg6jBVvY.mp4 28 852 | /video_path/2hAmWBEzFBU.mp4 28 853 | /video_path/9jAc3y6Gv4k.mp4 28 854 | /video_path/AnYWNPDKwjc.mp4 28 855 | /video_path/aZOYJigvPbI.mp4 28 856 | /video_path/B7SJ3QW5nik.mp4 28 857 | /video_path/C5lVMsrp33E.mp4 28 858 | /video_path/DlENkC5Zwg4.mp4 28 859 | /video_path/dS9H3EMxQJI.mp4 28 860 | /video_path/gTxix8KzjkQ.mp4 28 861 | /video_path/J9V8oVSIqXI.mp4 28 862 | /video_path/JEiHJoC6ChY.mp4 28 863 | /video_path/KPRlLx6-WKg.mp4 28 864 | /video_path/L8j9F0zm-4A.mp4 28 865 | /video_path/mtgdUp17Zx0.mp4 28 866 | /video_path/PqB19w4v_fc.mp4 28 867 | /video_path/prHuJ_74iZc.mp4 28 868 | /video_path/0tKSN4M_YZI.mp4 24 869 | /video_path/7F4nYxJgoJY.mp4 24 870 | /video_path/87mdfPOh_Rw.mp4 24 871 | /video_path/8PKKTwzxG7k.mp4 24 872 | /video_path/bmI0TI0M9D4.mp4 24 873 | /video_path/BQHKdSKK7kk.mp4 24 874 | /video_path/cbltQ7-EZJ0.mp4 24 875 | /video_path/cpnRZgCWIXU.mp4 24 876 | /video_path/dFebX7PCg3w.mp4 24 877 | /video_path/et4GjVERUR4.mp4 24 878 | /video_path/idL717ww3jE.mp4 24 879 | /video_path/kaJv3ap5y2g.mp4 24 880 | /video_path/KIDsL-6Y2G8.mp4 24 881 | /video_path/kvfiB4a5AHg.mp4 24 882 | /video_path/lB1-Rmlr4hg.mp4 24 883 | /video_path/lmzLNpyDnF4.mp4 24 884 | /video_path/Mn-iKqxvUyk.mp4 24 885 | /video_path/p3yBBNM3l4Y.mp4 24 886 | /video_path/qZpmrTBIiD0.mp4 24 887 | /video_path/11hwCe3w_UU.mp4 29 888 | /video_path/6Y4DDmlWtwo.mp4 29 889 | /video_path/a0RhbpehcQg.mp4 29 890 | /video_path/BwJL9FO6fMg.mp4 29 891 | /video_path/d97m4pNuBEI.mp4 29 892 | /video_path/dCyakRWH9a0.mp4 29 893 | /video_path/DxA2Nng_KBo.mp4 29 894 | /video_path/e61ASYkJIRw.mp4 29 895 | /video_path/eQzsy3NCFEs.mp4 29 896 | /video_path/HkeNWHeizbg.mp4 29 897 | /video_path/jDRvxKq8JzU.mp4 29 898 | /video_path/knuKaVRdR5k.mp4 29 899 | /video_path/mzkLYjDznPw.mp4 29 900 | /video_path/NU-J9jkNp8Q.mp4 29 901 | /video_path/PPm23MshGio.mp4 29 902 | /video_path/pXJDcHhQ_QE.mp4 29 903 | /video_path/S2TzVzgRyLY.mp4 29 904 | /video_path/25DJ1kvaN60.mp4 6 905 | /video_path/5-F_W5WYLKI.mp4 6 906 | /video_path/6BnxXcUxcBs.mp4 6 907 | /video_path/6ydbP1_C8rk.mp4 6 908 | /video_path/968cu9kFRPM.mp4 6 909 | /video_path/b26uL9PtfKE.mp4 6 910 | /video_path/b7WIr_JkgLQ.mp4 6 911 | /video_path/Ba55wzNxM2w.mp4 6 912 | /video_path/bFrFHy_JEDk.mp4 6 913 | /video_path/bGRpVOlkmSI.mp4 6 914 | /video_path/CosdRXJ9jAw.mp4 6 915 | /video_path/DhGuOzl5Aks.mp4 6 916 | /video_path/DJd02xCNNc0.mp4 6 917 | /video_path/DMh25N3Qa4Y.mp4 6 918 | /video_path/EDdzJnJyIdM.mp4 6 919 | /video_path/eylbjkgzFVk.mp4 6 920 | /video_path/fkBuY4iMK7E.mp4 6 921 | /video_path/FkyW7DoWHAM.mp4 6 922 | /video_path/fnBA9l-3liw.mp4 6 923 | /video_path/Gf9B_X02XWA.mp4 6 924 | /video_path/H0EtSorwGnU.mp4 6 925 | /video_path/hhl8qC8wf3M.mp4 6 926 | /video_path/hmCduOw52N4.mp4 6 927 | /video_path/hOc3uL4alwI.mp4 6 928 | /video_path/IccSohdKw5o.mp4 6 929 | /video_path/Ixzc6RJv3GM.mp4 6 930 | /video_path/jt7SYhALtPk.mp4 6 931 | /video_path/jx7SAKhFhHc.mp4 6 932 | /video_path/kCJWzRrD71M.mp4 6 933 | /video_path/ljSkvtnTlIo.mp4 6 934 | /video_path/MAikOv859sY.mp4 6 935 | /video_path/mHeETNVXeoY.mp4 6 936 | /video_path/MMuDoHHZyhI.mp4 6 937 | /video_path/N18GtJ7znh8.mp4 6 938 | /video_path/Nf1mw11UHAg.mp4 6 939 | /video_path/O6W7r7PzjMA.mp4 6 940 | /video_path/Obloj84_72k.mp4 6 941 | /video_path/oWjA-D0ugg8.mp4 6 942 | /video_path/PLk3Yfj3lM8.mp4 6 943 | /video_path/pnxRN_Yuyss.mp4 6 944 | /video_path/qzZD-XzxIMw.mp4 6 945 | /video_path/R5jd4SDEcsA.mp4 6 946 | /video_path/45C8N8mRKcc.mp4 49 947 | /video_path/9r1ShyTIJ90.mp4 49 948 | /video_path/SSFkoA3qt68.mp4 49 949 | /video_path/47dMHoWKpWI.mp4 33 950 | /video_path/4rQkQj3gv3Q.mp4 33 951 | /video_path/AdkoFiFrz7o.mp4 33 952 | /video_path/Ca-nhIeZxuo.mp4 33 953 | /video_path/CWEIWlqueBY.mp4 33 954 | /video_path/DALragCYQr8.mp4 33 955 | /video_path/GicBmU8bEIs.mp4 33 956 | /video_path/kJnHKsvBjho.mp4 33 957 | /video_path/nW35FpRBOFE.mp4 33 958 | /video_path/OAHG5xAeuZQ.mp4 33 959 | /video_path/oH7SorAES80.mp4 33 960 | /video_path/PEuYlcxUuHw.mp4 33 961 | /video_path/r2ZnKUawEsM.mp4 33 962 | /video_path/47UgIBUoR_A.mp4 30 963 | /video_path/4MVIhgbTOsk.mp4 30 964 | /video_path/6gc07xlcuWU.mp4 30 965 | /video_path/B02i_pL7CnA.mp4 30 966 | /video_path/bJ7ilV9872k.mp4 30 967 | /video_path/gYM6F3Yyzs0.mp4 30 968 | /video_path/HZEx6iNVDpw.mp4 30 969 | /video_path/I-y9hYJVHc0.mp4 30 970 | /video_path/iJvKxxn40zE.mp4 30 971 | /video_path/IKjNOP0W76I.mp4 30 972 | /video_path/ipliu022a3k.mp4 30 973 | /video_path/kLKJF1yy4T8.mp4 30 974 | /video_path/lgdj4hOEYuM.mp4 30 975 | /video_path/Lgjy-w7uv7o.mp4 30 976 | /video_path/PeEVL3aB-T0.mp4 30 977 | /video_path/rfCpegI5fHE.mp4 30 978 | /video_path/4eJAxp-gqn4.mp4 46 979 | /video_path/7XyfHY9iSWY.mp4 46 980 | /video_path/8j0fucgtSGM.mp4 46 981 | /video_path/GASkp3nW4ZI.mp4 46 982 | /video_path/4UdYawfe1R0.mp4 43 983 | /video_path/9OCVSsKJsdE.mp4 43 984 | /video_path/B1oCcX1BCrQ.mp4 43 985 | /video_path/cnp4XfHaQgE.mp4 43 986 | /video_path/LPKSw4VUhew.mp4 43 987 | /video_path/oRSDFuBCia0.mp4 43 988 | /video_path/5jci72lIJ-8.mp4 36 989 | /video_path/afFMH2lgH-U.mp4 36 990 | /video_path/azQ7tuTFmno.mp4 36 991 | /video_path/ClWyk7-Idq4.mp4 36 992 | /video_path/E3lxXZHSkdA.mp4 36 993 | /video_path/GtX9CV7-EIU.mp4 36 994 | /video_path/iONubn3sC98.mp4 36 995 | /video_path/kjYJfpQ1v5k.mp4 36 996 | /video_path/ms1ZwHe-g3A.mp4 36 997 | /video_path/mYr92slTr0k.mp4 36 998 | /video_path/Nc2zl2SeQNo.mp4 36 999 | /video_path/5qd1EONfJi4.mp4 18 1000 | /video_path/86RzAgHu75U.mp4 18 1001 | /video_path/8Ab1Z-c3EjU.mp4 18 1002 | /video_path/8pKp9dnRX7c.mp4 18 1003 | /video_path/8WEjKytxNxg.mp4 18 1004 | /video_path/apJZq1vEjLQ.mp4 18 1005 | /video_path/dAF1K6DR8i0.mp4 18 1006 | /video_path/FifaSTgtaBU.mp4 18 1007 | /video_path/G-RjMWCE3U4.mp4 18 1008 | /video_path/hA52-4LDYng.mp4 18 1009 | /video_path/jU4PVlIKvlY.mp4 18 1010 | /video_path/kFtMQc70MS0.mp4 18 1011 | /video_path/khKKkn-7vQM.mp4 18 1012 | /video_path/LdhWCPdV0T8.mp4 18 1013 | /video_path/LGYxwWtJWLg.mp4 18 1014 | /video_path/mDqdX0fDb24.mp4 18 1015 | /video_path/oyIb_WQJU80.mp4 18 1016 | /video_path/PRFGSwr7-Po.mp4 18 1017 | /video_path/R1hxfEuYlbM.mp4 18 1018 | /video_path/rFF2z5nnW2Y.mp4 18 1019 | /video_path/rh0vqINBrpM.mp4 18 1020 | /video_path/sgtYQbNfURI.mp4 18 1021 | /video_path/Sh000UgtLiM.mp4 18 1022 | /video_path/SQm4M4GCtOk.mp4 18 1023 | /video_path/6cSbLJnjzTA.mp4 47 1024 | /video_path/B-g_5WLffMM.mp4 47 1025 | /video_path/hjMuvERM3aY.mp4 47 1026 | /video_path/i9VGEtH__zU.mp4 47 1027 | /video_path/7CTdDHBzj7Q.mp4 35 1028 | /video_path/b1nxS_yjiEk.mp4 35 1029 | /video_path/BLm4fCyj1CY.mp4 35 1030 | /video_path/C5PgxwxA9XU.mp4 35 1031 | /video_path/cWyPbYD9lGo.mp4 35 1032 | /video_path/DQRPCEbGFSk.mp4 35 1033 | /video_path/edjwF_XlNzE.mp4 35 1034 | /video_path/efIdLoYdxps.mp4 35 1035 | /video_path/EkKtFMKRIXM.mp4 35 1036 | /video_path/heTQcEMDSGU.mp4 35 1037 | /video_path/jXLIvgWNW1A.mp4 35 1038 | /video_path/kfSEV8o6-wY.mp4 35 1039 | /video_path/9vhOSbxGle8.mp4 44 1040 | /video_path/dSPO1KBwUXo.mp4 44 1041 | /video_path/dtL-2hf6RHk.mp4 44 1042 | /video_path/fIiMJ80KVy0.mp4 44 1043 | /video_path/hR6sH_NSAfs.mp4 44 1044 | /video_path/Bpng0Ex9pho.mp4 48 1045 | /video_path/d4EOOvtqj6Y.mp4 48 1046 | /video_path/gbAYUh77P7k.mp4 48 1047 | /video_path/tP8SXuK2veI.mp4 48 1048 | /video_path/CYiHiRd6l1g.mp4 45 1049 | /video_path/Lojv2N_bz_M.mp4 45 1050 | /video_path/Lta0GbIKCZA.mp4 45 1051 | /video_path/Q9daM1wqPxs.mp4 45 1052 | /video_path/QbCDXXlGDdI.mp4 45 1053 | /video_path/lk6GYVM7enk.mp4 50 1054 | /video_path/P6sfE4T9FvM.mp4 50 1055 | /video_path/aR73Ik_GthM.mp4 51 1056 | --------------------------------------------------------------------------------