]>
Commit | Line | Data |
---|---|---|
1 | # coding: utf-8 | |
2 | from __future__ import unicode_literals | |
3 | ||
4 | import json | |
5 | import os | |
6 | import random | |
7 | import re | |
8 | import subprocess | |
9 | import tempfile | |
10 | ||
11 | from .common import InfoExtractor | |
12 | from ..compat import ( | |
13 | compat_urlparse, | |
14 | compat_kwargs, | |
15 | ) | |
16 | from ..utils import ( | |
17 | check_executable, | |
18 | determine_ext, | |
19 | encodeArgument, | |
20 | ExtractorError, | |
21 | get_element_by_id, | |
22 | get_exe_version, | |
23 | is_outdated_version, | |
24 | std_headers, | |
25 | ) | |
26 | ||
27 | ||
28 | def cookie_to_dict(cookie): | |
29 | cookie_dict = { | |
30 | 'name': cookie.name, | |
31 | 'value': cookie.value, | |
32 | } | |
33 | if cookie.port_specified: | |
34 | cookie_dict['port'] = cookie.port | |
35 | if cookie.domain_specified: | |
36 | cookie_dict['domain'] = cookie.domain | |
37 | if cookie.path_specified: | |
38 | cookie_dict['path'] = cookie.path | |
39 | if cookie.expires is not None: | |
40 | cookie_dict['expires'] = cookie.expires | |
41 | if cookie.secure is not None: | |
42 | cookie_dict['secure'] = cookie.secure | |
43 | if cookie.discard is not None: | |
44 | cookie_dict['discard'] = cookie.discard | |
45 | try: | |
46 | if (cookie.has_nonstandard_attr('httpOnly') | |
47 | or cookie.has_nonstandard_attr('httponly') | |
48 | or cookie.has_nonstandard_attr('HttpOnly')): | |
49 | cookie_dict['httponly'] = True | |
50 | except TypeError: | |
51 | pass | |
52 | return cookie_dict | |
53 | ||
54 | ||
55 | def cookie_jar_to_list(cookie_jar): | |
56 | return [cookie_to_dict(cookie) for cookie in cookie_jar] | |
57 | ||
58 | ||
59 | class PhantomJSwrapper(object): | |
60 | """PhantomJS wrapper class | |
61 | ||
62 | This class is experimental. | |
63 | """ | |
64 | ||
65 | _TEMPLATE = r''' | |
66 | phantom.onError = function(msg, trace) {{ | |
67 | var msgStack = ['PHANTOM ERROR: ' + msg]; | |
68 | if(trace && trace.length) {{ | |
69 | msgStack.push('TRACE:'); | |
70 | trace.forEach(function(t) {{ | |
71 | msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line | |
72 | + (t.function ? ' (in function ' + t.function +')' : '')); | |
73 | }}); | |
74 | }} | |
75 | console.error(msgStack.join('\n')); | |
76 | phantom.exit(1); | |
77 | }}; | |
78 | var page = require('webpage').create(); | |
79 | var fs = require('fs'); | |
80 | var read = {{ mode: 'r', charset: 'utf-8' }}; | |
81 | var write = {{ mode: 'w', charset: 'utf-8' }}; | |
82 | JSON.parse(fs.read("{cookies}", read)).forEach(function(x) {{ | |
83 | phantom.addCookie(x); | |
84 | }}); | |
85 | page.settings.resourceTimeout = {timeout}; | |
86 | page.settings.userAgent = "{ua}"; | |
87 | page.onLoadStarted = function() {{ | |
88 | page.evaluate(function() {{ | |
89 | delete window._phantom; | |
90 | delete window.callPhantom; | |
91 | }}); | |
92 | }}; | |
93 | var saveAndExit = function() {{ | |
94 | fs.write("{html}", page.content, write); | |
95 | fs.write("{cookies}", JSON.stringify(phantom.cookies), write); | |
96 | phantom.exit(); | |
97 | }}; | |
98 | page.onLoadFinished = function(status) {{ | |
99 | if(page.url === "") {{ | |
100 | page.setContent(fs.read("{html}", read), "{url}"); | |
101 | }} | |
102 | else {{ | |
103 | {jscode} | |
104 | }} | |
105 | }}; | |
106 | page.open(""); | |
107 | ''' | |
108 | ||
109 | _TMP_FILE_NAMES = ['script', 'html', 'cookies'] | |
110 | ||
111 | @staticmethod | |
112 | def _version(): | |
113 | return get_exe_version('phantomjs', version_re=r'([0-9.]+)') | |
114 | ||
115 | def __init__(self, extractor, required_version=None, timeout=10000): | |
116 | self._TMP_FILES = {} | |
117 | ||
118 | self.exe = check_executable('phantomjs', ['-v']) | |
119 | if not self.exe: | |
120 | raise ExtractorError('PhantomJS executable not found in PATH, ' | |
121 | 'download it from http://phantomjs.org', | |
122 | expected=True) | |
123 | ||
124 | self.extractor = extractor | |
125 | ||
126 | if required_version: | |
127 | version = self._version() | |
128 | if is_outdated_version(version, required_version): | |
129 | self.extractor._downloader.report_warning( | |
130 | 'Your copy of PhantomJS is outdated, update it to version ' | |
131 | '%s or newer if you encounter any errors.' % required_version) | |
132 | ||
133 | self.options = { | |
134 | 'timeout': timeout, | |
135 | } | |
136 | for name in self._TMP_FILE_NAMES: | |
137 | tmp = tempfile.NamedTemporaryFile(delete=False) | |
138 | tmp.close() | |
139 | self._TMP_FILES[name] = tmp | |
140 | ||
141 | def __del__(self): | |
142 | for name in self._TMP_FILE_NAMES: | |
143 | try: | |
144 | os.remove(self._TMP_FILES[name].name) | |
145 | except (IOError, OSError, KeyError): | |
146 | pass | |
147 | ||
148 | def _save_cookies(self, url): | |
149 | cookies = cookie_jar_to_list(self.extractor._downloader.cookiejar) | |
150 | for cookie in cookies: | |
151 | if 'path' not in cookie: | |
152 | cookie['path'] = '/' | |
153 | if 'domain' not in cookie: | |
154 | cookie['domain'] = compat_urlparse.urlparse(url).netloc | |
155 | with open(self._TMP_FILES['cookies'].name, 'wb') as f: | |
156 | f.write(json.dumps(cookies).encode('utf-8')) | |
157 | ||
158 | def _load_cookies(self): | |
159 | with open(self._TMP_FILES['cookies'].name, 'rb') as f: | |
160 | cookies = json.loads(f.read().decode('utf-8')) | |
161 | for cookie in cookies: | |
162 | if cookie['httponly'] is True: | |
163 | cookie['rest'] = {'httpOnly': None} | |
164 | if 'expiry' in cookie: | |
165 | cookie['expire_time'] = cookie['expiry'] | |
166 | self.extractor._set_cookie(**compat_kwargs(cookie)) | |
167 | ||
168 | def get(self, url, html=None, video_id=None, note=None, note2='Executing JS on webpage', headers={}, jscode='saveAndExit();'): | |
169 | """ | |
170 | Downloads webpage (if needed) and executes JS | |
171 | ||
172 | Params: | |
173 | url: website url | |
174 | html: optional, html code of website | |
175 | video_id: video id | |
176 | note: optional, displayed when downloading webpage | |
177 | note2: optional, displayed when executing JS | |
178 | headers: custom http headers | |
179 | jscode: code to be executed when page is loaded | |
180 | ||
181 | Returns tuple with: | |
182 | * downloaded website (after JS execution) | |
183 | * anything you print with `console.log` (but not inside `page.execute`!) | |
184 | ||
185 | In most cases you don't need to add any `jscode`. | |
186 | It is executed in `page.onLoadFinished`. | |
187 | `saveAndExit();` is mandatory, use it instead of `phantom.exit()` | |
188 | It is possible to wait for some element on the webpage, for example: | |
189 | var check = function() { | |
190 | var elementFound = page.evaluate(function() { | |
191 | return document.querySelector('#b.done') !== null; | |
192 | }); | |
193 | if(elementFound) | |
194 | saveAndExit(); | |
195 | else | |
196 | window.setTimeout(check, 500); | |
197 | } | |
198 | ||
199 | page.evaluate(function(){ | |
200 | document.querySelector('#a').click(); | |
201 | }); | |
202 | check(); | |
203 | """ | |
204 | if 'saveAndExit();' not in jscode: | |
205 | raise ExtractorError('`saveAndExit();` not found in `jscode`') | |
206 | if not html: | |
207 | html = self.extractor._download_webpage(url, video_id, note=note, headers=headers) | |
208 | with open(self._TMP_FILES['html'].name, 'wb') as f: | |
209 | f.write(html.encode('utf-8')) | |
210 | ||
211 | self._save_cookies(url) | |
212 | ||
213 | replaces = self.options | |
214 | replaces['url'] = url | |
215 | user_agent = headers.get('User-Agent') or std_headers['User-Agent'] | |
216 | replaces['ua'] = user_agent.replace('"', '\\"') | |
217 | replaces['jscode'] = jscode | |
218 | ||
219 | for x in self._TMP_FILE_NAMES: | |
220 | replaces[x] = self._TMP_FILES[x].name.replace('\\', '\\\\').replace('"', '\\"') | |
221 | ||
222 | with open(self._TMP_FILES['script'].name, 'wb') as f: | |
223 | f.write(self._TEMPLATE.format(**replaces).encode('utf-8')) | |
224 | ||
225 | if video_id is None: | |
226 | self.extractor.to_screen('%s' % (note2,)) | |
227 | else: | |
228 | self.extractor.to_screen('%s: %s' % (video_id, note2)) | |
229 | ||
230 | p = subprocess.Popen([ | |
231 | self.exe, '--ssl-protocol=any', | |
232 | self._TMP_FILES['script'].name | |
233 | ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
234 | out, err = p.communicate() | |
235 | if p.returncode != 0: | |
236 | raise ExtractorError( | |
237 | 'Executing JS failed\n:' + encodeArgument(err)) | |
238 | with open(self._TMP_FILES['html'].name, 'rb') as f: | |
239 | html = f.read().decode('utf-8') | |
240 | ||
241 | self._load_cookies() | |
242 | ||
243 | return (html, encodeArgument(out)) | |
244 | ||
245 | ||
246 | class OpenloadIE(InfoExtractor): | |
247 | _DOMAINS = r'(?:openload\.(?:co|io|link|pw)|oload\.(?:tv|stream|site|xyz|win|download|cloud|cc|icu|fun|club|info|pw|live|space|services)|oladblock\.(?:services|xyz|me)|openloed\.co)' | |
248 | _VALID_URL = r'''(?x) | |
249 | https?:// | |
250 | (?P<host> | |
251 | (?:www\.)? | |
252 | %s | |
253 | )/ | |
254 | (?:f|embed)/ | |
255 | (?P<id>[a-zA-Z0-9-_]+) | |
256 | ''' % _DOMAINS | |
257 | _EMBED_WORD = 'embed' | |
258 | _STREAM_WORD = 'f' | |
259 | _REDIR_WORD = 'stream' | |
260 | _URL_IDS = ('streamurl', 'streamuri', 'streamurj') | |
261 | _TESTS = [{ | |
262 | 'url': 'https://openload.co/f/kUEfGclsU9o', | |
263 | 'md5': 'bf1c059b004ebc7a256f89408e65c36e', | |
264 | 'info_dict': { | |
265 | 'id': 'kUEfGclsU9o', | |
266 | 'ext': 'mp4', | |
267 | 'title': 'skyrim_no-audio_1080.mp4', | |
268 | 'thumbnail': r're:^https?://.*\.jpg$', | |
269 | }, | |
270 | }, { | |
271 | 'url': 'https://openload.co/embed/rjC09fkPLYs', | |
272 | 'info_dict': { | |
273 | 'id': 'rjC09fkPLYs', | |
274 | 'ext': 'mp4', | |
275 | 'title': 'movie.mp4', | |
276 | 'thumbnail': r're:^https?://.*\.jpg$', | |
277 | 'subtitles': { | |
278 | 'en': [{ | |
279 | 'ext': 'vtt', | |
280 | }], | |
281 | }, | |
282 | }, | |
283 | 'params': { | |
284 | 'skip_download': True, # test subtitles only | |
285 | }, | |
286 | }, { | |
287 | 'url': 'https://openload.co/embed/kUEfGclsU9o/skyrim_no-audio_1080.mp4', | |
288 | 'only_matching': True, | |
289 | }, { | |
290 | 'url': 'https://openload.io/f/ZAn6oz-VZGE/', | |
291 | 'only_matching': True, | |
292 | }, { | |
293 | 'url': 'https://openload.co/f/_-ztPaZtMhM/', | |
294 | 'only_matching': True, | |
295 | }, { | |
296 | # unavailable via https://openload.co/f/Sxz5sADo82g/, different layout | |
297 | # for title and ext | |
298 | 'url': 'https://openload.co/embed/Sxz5sADo82g/', | |
299 | 'only_matching': True, | |
300 | }, { | |
301 | # unavailable via https://openload.co/embed/e-Ixz9ZR5L0/ but available | |
302 | # via https://openload.co/f/e-Ixz9ZR5L0/ | |
303 | 'url': 'https://openload.co/f/e-Ixz9ZR5L0/', | |
304 | 'only_matching': True, | |
305 | }, { | |
306 | 'url': 'https://oload.tv/embed/KnG-kKZdcfY/', | |
307 | 'only_matching': True, | |
308 | }, { | |
309 | 'url': 'http://www.openload.link/f/KnG-kKZdcfY', | |
310 | 'only_matching': True, | |
311 | }, { | |
312 | 'url': 'https://oload.stream/f/KnG-kKZdcfY', | |
313 | 'only_matching': True, | |
314 | }, { | |
315 | 'url': 'https://oload.xyz/f/WwRBpzW8Wtk', | |
316 | 'only_matching': True, | |
317 | }, { | |
318 | 'url': 'https://oload.win/f/kUEfGclsU9o', | |
319 | 'only_matching': True, | |
320 | }, { | |
321 | 'url': 'https://oload.download/f/kUEfGclsU9o', | |
322 | 'only_matching': True, | |
323 | }, { | |
324 | 'url': 'https://oload.cloud/f/4ZDnBXRWiB8', | |
325 | 'only_matching': True, | |
326 | }, { | |
327 | # Its title has not got its extension but url has it | |
328 | 'url': 'https://oload.download/f/N4Otkw39VCw/Tomb.Raider.2018.HDRip.XviD.AC3-EVO.avi.mp4', | |
329 | 'only_matching': True, | |
330 | }, { | |
331 | 'url': 'https://oload.cc/embed/5NEAbI2BDSk', | |
332 | 'only_matching': True, | |
333 | }, { | |
334 | 'url': 'https://oload.icu/f/-_i4y_F_Hs8', | |
335 | 'only_matching': True, | |
336 | }, { | |
337 | 'url': 'https://oload.fun/f/gb6G1H4sHXY', | |
338 | 'only_matching': True, | |
339 | }, { | |
340 | 'url': 'https://oload.club/f/Nr1L-aZ2dbQ', | |
341 | 'only_matching': True, | |
342 | }, { | |
343 | 'url': 'https://oload.info/f/5NEAbI2BDSk', | |
344 | 'only_matching': True, | |
345 | }, { | |
346 | 'url': 'https://openload.pw/f/WyKgK8s94N0', | |
347 | 'only_matching': True, | |
348 | }, { | |
349 | 'url': 'https://oload.pw/f/WyKgK8s94N0', | |
350 | 'only_matching': True, | |
351 | }, { | |
352 | 'url': 'https://oload.live/f/-Z58UZ-GR4M', | |
353 | 'only_matching': True, | |
354 | }, { | |
355 | 'url': 'https://oload.space/f/IY4eZSst3u8/', | |
356 | 'only_matching': True, | |
357 | }, { | |
358 | 'url': 'https://oload.services/embed/bs1NWj1dCag/', | |
359 | 'only_matching': True, | |
360 | }, { | |
361 | 'url': 'https://oladblock.services/f/b8NWEgkqNLI/', | |
362 | 'only_matching': True, | |
363 | }, { | |
364 | 'url': 'https://oladblock.xyz/f/b8NWEgkqNLI/', | |
365 | 'only_matching': True, | |
366 | }, { | |
367 | 'url': 'https://oladblock.me/f/b8NWEgkqNLI/', | |
368 | 'only_matching': True, | |
369 | }, { | |
370 | 'url': 'https://openloed.co/f/b8NWEgkqNLI/', | |
371 | 'only_matching': True, | |
372 | }] | |
373 | ||
374 | _USER_AGENT_TPL = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36' | |
375 | _CHROME_VERSIONS = ( | |
376 | '74.0.3729.129', | |
377 | '76.0.3780.3', | |
378 | '76.0.3780.2', | |
379 | '74.0.3729.128', | |
380 | '76.0.3780.1', | |
381 | '76.0.3780.0', | |
382 | '75.0.3770.15', | |
383 | '74.0.3729.127', | |
384 | '74.0.3729.126', | |
385 | '76.0.3779.1', | |
386 | '76.0.3779.0', | |
387 | '75.0.3770.14', | |
388 | '74.0.3729.125', | |
389 | '76.0.3778.1', | |
390 | '76.0.3778.0', | |
391 | '75.0.3770.13', | |
392 | '74.0.3729.124', | |
393 | '74.0.3729.123', | |
394 | '73.0.3683.121', | |
395 | '76.0.3777.1', | |
396 | '76.0.3777.0', | |
397 | '75.0.3770.12', | |
398 | '74.0.3729.122', | |
399 | '76.0.3776.4', | |
400 | '75.0.3770.11', | |
401 | '74.0.3729.121', | |
402 | '76.0.3776.3', | |
403 | '76.0.3776.2', | |
404 | '73.0.3683.120', | |
405 | '74.0.3729.120', | |
406 | '74.0.3729.119', | |
407 | '74.0.3729.118', | |
408 | '76.0.3776.1', | |
409 | '76.0.3776.0', | |
410 | '76.0.3775.5', | |
411 | '75.0.3770.10', | |
412 | '74.0.3729.117', | |
413 | '76.0.3775.4', | |
414 | '76.0.3775.3', | |
415 | '74.0.3729.116', | |
416 | '75.0.3770.9', | |
417 | '76.0.3775.2', | |
418 | '76.0.3775.1', | |
419 | '76.0.3775.0', | |
420 | '75.0.3770.8', | |
421 | '74.0.3729.115', | |
422 | '74.0.3729.114', | |
423 | '76.0.3774.1', | |
424 | '76.0.3774.0', | |
425 | '75.0.3770.7', | |
426 | '74.0.3729.113', | |
427 | '74.0.3729.112', | |
428 | '74.0.3729.111', | |
429 | '76.0.3773.1', | |
430 | '76.0.3773.0', | |
431 | '75.0.3770.6', | |
432 | '74.0.3729.110', | |
433 | '74.0.3729.109', | |
434 | '76.0.3772.1', | |
435 | '76.0.3772.0', | |
436 | '75.0.3770.5', | |
437 | '74.0.3729.108', | |
438 | '74.0.3729.107', | |
439 | '76.0.3771.1', | |
440 | '76.0.3771.0', | |
441 | '75.0.3770.4', | |
442 | '74.0.3729.106', | |
443 | '74.0.3729.105', | |
444 | '75.0.3770.3', | |
445 | '74.0.3729.104', | |
446 | '74.0.3729.103', | |
447 | '74.0.3729.102', | |
448 | '75.0.3770.2', | |
449 | '74.0.3729.101', | |
450 | '75.0.3770.1', | |
451 | '75.0.3770.0', | |
452 | '74.0.3729.100', | |
453 | '75.0.3769.5', | |
454 | '75.0.3769.4', | |
455 | '74.0.3729.99', | |
456 | '75.0.3769.3', | |
457 | '75.0.3769.2', | |
458 | '75.0.3768.6', | |
459 | '74.0.3729.98', | |
460 | '75.0.3769.1', | |
461 | '75.0.3769.0', | |
462 | '74.0.3729.97', | |
463 | '73.0.3683.119', | |
464 | '73.0.3683.118', | |
465 | '74.0.3729.96', | |
466 | '75.0.3768.5', | |
467 | '75.0.3768.4', | |
468 | '75.0.3768.3', | |
469 | '75.0.3768.2', | |
470 | '74.0.3729.95', | |
471 | '74.0.3729.94', | |
472 | '75.0.3768.1', | |
473 | '75.0.3768.0', | |
474 | '74.0.3729.93', | |
475 | '74.0.3729.92', | |
476 | '73.0.3683.117', | |
477 | '74.0.3729.91', | |
478 | '75.0.3766.3', | |
479 | '74.0.3729.90', | |
480 | '75.0.3767.2', | |
481 | '75.0.3767.1', | |
482 | '75.0.3767.0', | |
483 | '74.0.3729.89', | |
484 | '73.0.3683.116', | |
485 | '75.0.3766.2', | |
486 | '74.0.3729.88', | |
487 | '75.0.3766.1', | |
488 | '75.0.3766.0', | |
489 | '74.0.3729.87', | |
490 | '73.0.3683.115', | |
491 | '74.0.3729.86', | |
492 | '75.0.3765.1', | |
493 | '75.0.3765.0', | |
494 | '74.0.3729.85', | |
495 | '73.0.3683.114', | |
496 | '74.0.3729.84', | |
497 | '75.0.3764.1', | |
498 | '75.0.3764.0', | |
499 | '74.0.3729.83', | |
500 | '73.0.3683.113', | |
501 | '75.0.3763.2', | |
502 | '75.0.3761.4', | |
503 | '74.0.3729.82', | |
504 | '75.0.3763.1', | |
505 | '75.0.3763.0', | |
506 | '74.0.3729.81', | |
507 | '73.0.3683.112', | |
508 | '75.0.3762.1', | |
509 | '75.0.3762.0', | |
510 | '74.0.3729.80', | |
511 | '75.0.3761.3', | |
512 | '74.0.3729.79', | |
513 | '73.0.3683.111', | |
514 | '75.0.3761.2', | |
515 | '74.0.3729.78', | |
516 | '74.0.3729.77', | |
517 | '75.0.3761.1', | |
518 | '75.0.3761.0', | |
519 | '73.0.3683.110', | |
520 | '74.0.3729.76', | |
521 | '74.0.3729.75', | |
522 | '75.0.3760.0', | |
523 | '74.0.3729.74', | |
524 | '75.0.3759.8', | |
525 | '75.0.3759.7', | |
526 | '75.0.3759.6', | |
527 | '74.0.3729.73', | |
528 | '75.0.3759.5', | |
529 | '74.0.3729.72', | |
530 | '73.0.3683.109', | |
531 | '75.0.3759.4', | |
532 | '75.0.3759.3', | |
533 | '74.0.3729.71', | |
534 | '75.0.3759.2', | |
535 | '74.0.3729.70', | |
536 | '73.0.3683.108', | |
537 | '74.0.3729.69', | |
538 | '75.0.3759.1', | |
539 | '75.0.3759.0', | |
540 | '74.0.3729.68', | |
541 | '73.0.3683.107', | |
542 | '74.0.3729.67', | |
543 | '75.0.3758.1', | |
544 | '75.0.3758.0', | |
545 | '74.0.3729.66', | |
546 | '73.0.3683.106', | |
547 | '74.0.3729.65', | |
548 | '75.0.3757.1', | |
549 | '75.0.3757.0', | |
550 | '74.0.3729.64', | |
551 | '73.0.3683.105', | |
552 | '74.0.3729.63', | |
553 | '75.0.3756.1', | |
554 | '75.0.3756.0', | |
555 | '74.0.3729.62', | |
556 | '73.0.3683.104', | |
557 | '75.0.3755.3', | |
558 | '75.0.3755.2', | |
559 | '73.0.3683.103', | |
560 | '75.0.3755.1', | |
561 | '75.0.3755.0', | |
562 | '74.0.3729.61', | |
563 | '73.0.3683.102', | |
564 | '74.0.3729.60', | |
565 | '75.0.3754.2', | |
566 | '74.0.3729.59', | |
567 | '75.0.3753.4', | |
568 | '74.0.3729.58', | |
569 | '75.0.3754.1', | |
570 | '75.0.3754.0', | |
571 | '74.0.3729.57', | |
572 | '73.0.3683.101', | |
573 | '75.0.3753.3', | |
574 | '75.0.3752.2', | |
575 | '75.0.3753.2', | |
576 | '74.0.3729.56', | |
577 | '75.0.3753.1', | |
578 | '75.0.3753.0', | |
579 | '74.0.3729.55', | |
580 | '73.0.3683.100', | |
581 | '74.0.3729.54', | |
582 | '75.0.3752.1', | |
583 | '75.0.3752.0', | |
584 | '74.0.3729.53', | |
585 | '73.0.3683.99', | |
586 | '74.0.3729.52', | |
587 | '75.0.3751.1', | |
588 | '75.0.3751.0', | |
589 | '74.0.3729.51', | |
590 | '73.0.3683.98', | |
591 | '74.0.3729.50', | |
592 | '75.0.3750.0', | |
593 | '74.0.3729.49', | |
594 | '74.0.3729.48', | |
595 | '74.0.3729.47', | |
596 | '75.0.3749.3', | |
597 | '74.0.3729.46', | |
598 | '73.0.3683.97', | |
599 | '75.0.3749.2', | |
600 | '74.0.3729.45', | |
601 | '75.0.3749.1', | |
602 | '75.0.3749.0', | |
603 | '74.0.3729.44', | |
604 | '73.0.3683.96', | |
605 | '74.0.3729.43', | |
606 | '74.0.3729.42', | |
607 | '75.0.3748.1', | |
608 | '75.0.3748.0', | |
609 | '74.0.3729.41', | |
610 | '75.0.3747.1', | |
611 | '73.0.3683.95', | |
612 | '75.0.3746.4', | |
613 | '74.0.3729.40', | |
614 | '74.0.3729.39', | |
615 | '75.0.3747.0', | |
616 | '75.0.3746.3', | |
617 | '75.0.3746.2', | |
618 | '74.0.3729.38', | |
619 | '75.0.3746.1', | |
620 | '75.0.3746.0', | |
621 | '74.0.3729.37', | |
622 | '73.0.3683.94', | |
623 | '75.0.3745.5', | |
624 | '75.0.3745.4', | |
625 | '75.0.3745.3', | |
626 | '75.0.3745.2', | |
627 | '74.0.3729.36', | |
628 | '75.0.3745.1', | |
629 | '75.0.3745.0', | |
630 | '75.0.3744.2', | |
631 | '74.0.3729.35', | |
632 | '73.0.3683.93', | |
633 | '74.0.3729.34', | |
634 | '75.0.3744.1', | |
635 | '75.0.3744.0', | |
636 | '74.0.3729.33', | |
637 | '73.0.3683.92', | |
638 | '74.0.3729.32', | |
639 | '74.0.3729.31', | |
640 | '73.0.3683.91', | |
641 | '75.0.3741.2', | |
642 | '75.0.3740.5', | |
643 | '74.0.3729.30', | |
644 | '75.0.3741.1', | |
645 | '75.0.3741.0', | |
646 | '74.0.3729.29', | |
647 | '75.0.3740.4', | |
648 | '73.0.3683.90', | |
649 | '74.0.3729.28', | |
650 | '75.0.3740.3', | |
651 | '73.0.3683.89', | |
652 | '75.0.3740.2', | |
653 | '74.0.3729.27', | |
654 | '75.0.3740.1', | |
655 | '75.0.3740.0', | |
656 | '74.0.3729.26', | |
657 | '73.0.3683.88', | |
658 | '73.0.3683.87', | |
659 | '74.0.3729.25', | |
660 | '75.0.3739.1', | |
661 | '75.0.3739.0', | |
662 | '73.0.3683.86', | |
663 | '74.0.3729.24', | |
664 | '73.0.3683.85', | |
665 | '75.0.3738.4', | |
666 | '75.0.3738.3', | |
667 | '75.0.3738.2', | |
668 | '75.0.3738.1', | |
669 | '75.0.3738.0', | |
670 | '74.0.3729.23', | |
671 | '73.0.3683.84', | |
672 | '74.0.3729.22', | |
673 | '74.0.3729.21', | |
674 | '75.0.3737.1', | |
675 | '75.0.3737.0', | |
676 | '74.0.3729.20', | |
677 | '73.0.3683.83', | |
678 | '74.0.3729.19', | |
679 | '75.0.3736.1', | |
680 | '75.0.3736.0', | |
681 | '74.0.3729.18', | |
682 | '73.0.3683.82', | |
683 | '74.0.3729.17', | |
684 | '75.0.3735.1', | |
685 | '75.0.3735.0', | |
686 | '74.0.3729.16', | |
687 | '73.0.3683.81', | |
688 | '75.0.3734.1', | |
689 | '75.0.3734.0', | |
690 | '74.0.3729.15', | |
691 | '73.0.3683.80', | |
692 | '74.0.3729.14', | |
693 | '75.0.3733.1', | |
694 | '75.0.3733.0', | |
695 | '75.0.3732.1', | |
696 | '74.0.3729.13', | |
697 | '74.0.3729.12', | |
698 | '73.0.3683.79', | |
699 | '74.0.3729.11', | |
700 | '75.0.3732.0', | |
701 | '74.0.3729.10', | |
702 | '73.0.3683.78', | |
703 | '74.0.3729.9', | |
704 | '74.0.3729.8', | |
705 | '74.0.3729.7', | |
706 | '75.0.3731.3', | |
707 | '75.0.3731.2', | |
708 | '75.0.3731.0', | |
709 | '74.0.3729.6', | |
710 | '73.0.3683.77', | |
711 | '73.0.3683.76', | |
712 | '75.0.3730.5', | |
713 | '75.0.3730.4', | |
714 | '73.0.3683.75', | |
715 | '74.0.3729.5', | |
716 | '73.0.3683.74', | |
717 | '75.0.3730.3', | |
718 | '75.0.3730.2', | |
719 | '74.0.3729.4', | |
720 | '73.0.3683.73', | |
721 | '73.0.3683.72', | |
722 | '75.0.3730.1', | |
723 | '75.0.3730.0', | |
724 | '74.0.3729.3', | |
725 | '73.0.3683.71', | |
726 | '74.0.3729.2', | |
727 | '73.0.3683.70', | |
728 | '74.0.3729.1', | |
729 | '74.0.3729.0', | |
730 | '74.0.3726.4', | |
731 | '73.0.3683.69', | |
732 | '74.0.3726.3', | |
733 | '74.0.3728.0', | |
734 | '74.0.3726.2', | |
735 | '73.0.3683.68', | |
736 | '74.0.3726.1', | |
737 | '74.0.3726.0', | |
738 | '74.0.3725.4', | |
739 | '73.0.3683.67', | |
740 | '73.0.3683.66', | |
741 | '74.0.3725.3', | |
742 | '74.0.3725.2', | |
743 | '74.0.3725.1', | |
744 | '74.0.3724.8', | |
745 | '74.0.3725.0', | |
746 | '73.0.3683.65', | |
747 | '74.0.3724.7', | |
748 | '74.0.3724.6', | |
749 | '74.0.3724.5', | |
750 | '74.0.3724.4', | |
751 | '74.0.3724.3', | |
752 | '74.0.3724.2', | |
753 | '74.0.3724.1', | |
754 | '74.0.3724.0', | |
755 | '73.0.3683.64', | |
756 | '74.0.3723.1', | |
757 | '74.0.3723.0', | |
758 | '73.0.3683.63', | |
759 | '74.0.3722.1', | |
760 | '74.0.3722.0', | |
761 | '73.0.3683.62', | |
762 | '74.0.3718.9', | |
763 | '74.0.3702.3', | |
764 | '74.0.3721.3', | |
765 | '74.0.3721.2', | |
766 | '74.0.3721.1', | |
767 | '74.0.3721.0', | |
768 | '74.0.3720.6', | |
769 | '73.0.3683.61', | |
770 | '72.0.3626.122', | |
771 | '73.0.3683.60', | |
772 | '74.0.3720.5', | |
773 | '72.0.3626.121', | |
774 | '74.0.3718.8', | |
775 | '74.0.3720.4', | |
776 | '74.0.3720.3', | |
777 | '74.0.3718.7', | |
778 | '74.0.3720.2', | |
779 | '74.0.3720.1', | |
780 | '74.0.3720.0', | |
781 | '74.0.3718.6', | |
782 | '74.0.3719.5', | |
783 | '73.0.3683.59', | |
784 | '74.0.3718.5', | |
785 | '74.0.3718.4', | |
786 | '74.0.3719.4', | |
787 | '74.0.3719.3', | |
788 | '74.0.3719.2', | |
789 | '74.0.3719.1', | |
790 | '73.0.3683.58', | |
791 | '74.0.3719.0', | |
792 | '73.0.3683.57', | |
793 | '73.0.3683.56', | |
794 | '74.0.3718.3', | |
795 | '73.0.3683.55', | |
796 | '74.0.3718.2', | |
797 | '74.0.3718.1', | |
798 | '74.0.3718.0', | |
799 | '73.0.3683.54', | |
800 | '74.0.3717.2', | |
801 | '73.0.3683.53', | |
802 | '74.0.3717.1', | |
803 | '74.0.3717.0', | |
804 | '73.0.3683.52', | |
805 | '74.0.3716.1', | |
806 | '74.0.3716.0', | |
807 | '73.0.3683.51', | |
808 | '74.0.3715.1', | |
809 | '74.0.3715.0', | |
810 | '73.0.3683.50', | |
811 | '74.0.3711.2', | |
812 | '74.0.3714.2', | |
813 | '74.0.3713.3', | |
814 | '74.0.3714.1', | |
815 | '74.0.3714.0', | |
816 | '73.0.3683.49', | |
817 | '74.0.3713.1', | |
818 | '74.0.3713.0', | |
819 | '72.0.3626.120', | |
820 | '73.0.3683.48', | |
821 | '74.0.3712.2', | |
822 | '74.0.3712.1', | |
823 | '74.0.3712.0', | |
824 | '73.0.3683.47', | |
825 | '72.0.3626.119', | |
826 | '73.0.3683.46', | |
827 | '74.0.3710.2', | |
828 | '72.0.3626.118', | |
829 | '74.0.3711.1', | |
830 | '74.0.3711.0', | |
831 | '73.0.3683.45', | |
832 | '72.0.3626.117', | |
833 | '74.0.3710.1', | |
834 | '74.0.3710.0', | |
835 | '73.0.3683.44', | |
836 | '72.0.3626.116', | |
837 | '74.0.3709.1', | |
838 | '74.0.3709.0', | |
839 | '74.0.3704.9', | |
840 | '73.0.3683.43', | |
841 | '72.0.3626.115', | |
842 | '74.0.3704.8', | |
843 | '74.0.3704.7', | |
844 | '74.0.3708.0', | |
845 | '74.0.3706.7', | |
846 | '74.0.3704.6', | |
847 | '73.0.3683.42', | |
848 | '72.0.3626.114', | |
849 | '74.0.3706.6', | |
850 | '72.0.3626.113', | |
851 | '74.0.3704.5', | |
852 | '74.0.3706.5', | |
853 | '74.0.3706.4', | |
854 | '74.0.3706.3', | |
855 | '74.0.3706.2', | |
856 | '74.0.3706.1', | |
857 | '74.0.3706.0', | |
858 | '73.0.3683.41', | |
859 | '72.0.3626.112', | |
860 | '74.0.3705.1', | |
861 | '74.0.3705.0', | |
862 | '73.0.3683.40', | |
863 | '72.0.3626.111', | |
864 | '73.0.3683.39', | |
865 | '74.0.3704.4', | |
866 | '73.0.3683.38', | |
867 | '74.0.3704.3', | |
868 | '74.0.3704.2', | |
869 | '74.0.3704.1', | |
870 | '74.0.3704.0', | |
871 | '73.0.3683.37', | |
872 | '72.0.3626.110', | |
873 | '72.0.3626.109', | |
874 | '74.0.3703.3', | |
875 | '74.0.3703.2', | |
876 | '73.0.3683.36', | |
877 | '74.0.3703.1', | |
878 | '74.0.3703.0', | |
879 | '73.0.3683.35', | |
880 | '72.0.3626.108', | |
881 | '74.0.3702.2', | |
882 | '74.0.3699.3', | |
883 | '74.0.3702.1', | |
884 | '74.0.3702.0', | |
885 | '73.0.3683.34', | |
886 | '72.0.3626.107', | |
887 | '73.0.3683.33', | |
888 | '74.0.3701.1', | |
889 | '74.0.3701.0', | |
890 | '73.0.3683.32', | |
891 | '73.0.3683.31', | |
892 | '72.0.3626.105', | |
893 | '74.0.3700.1', | |
894 | '74.0.3700.0', | |
895 | '73.0.3683.29', | |
896 | '72.0.3626.103', | |
897 | '74.0.3699.2', | |
898 | '74.0.3699.1', | |
899 | '74.0.3699.0', | |
900 | '73.0.3683.28', | |
901 | '72.0.3626.102', | |
902 | '73.0.3683.27', | |
903 | '73.0.3683.26', | |
904 | '74.0.3698.0', | |
905 | '74.0.3696.2', | |
906 | '72.0.3626.101', | |
907 | '73.0.3683.25', | |
908 | '74.0.3696.1', | |
909 | '74.0.3696.0', | |
910 | '74.0.3694.8', | |
911 | '72.0.3626.100', | |
912 | '74.0.3694.7', | |
913 | '74.0.3694.6', | |
914 | '74.0.3694.5', | |
915 | '74.0.3694.4', | |
916 | '72.0.3626.99', | |
917 | '72.0.3626.98', | |
918 | '74.0.3694.3', | |
919 | '73.0.3683.24', | |
920 | '72.0.3626.97', | |
921 | '72.0.3626.96', | |
922 | '72.0.3626.95', | |
923 | '73.0.3683.23', | |
924 | '72.0.3626.94', | |
925 | '73.0.3683.22', | |
926 | '73.0.3683.21', | |
927 | '72.0.3626.93', | |
928 | '74.0.3694.2', | |
929 | '72.0.3626.92', | |
930 | '74.0.3694.1', | |
931 | '74.0.3694.0', | |
932 | '74.0.3693.6', | |
933 | '73.0.3683.20', | |
934 | '72.0.3626.91', | |
935 | '74.0.3693.5', | |
936 | '74.0.3693.4', | |
937 | '74.0.3693.3', | |
938 | '74.0.3693.2', | |
939 | '73.0.3683.19', | |
940 | '74.0.3693.1', | |
941 | '74.0.3693.0', | |
942 | '73.0.3683.18', | |
943 | '72.0.3626.90', | |
944 | '74.0.3692.1', | |
945 | '74.0.3692.0', | |
946 | '73.0.3683.17', | |
947 | '72.0.3626.89', | |
948 | '74.0.3687.3', | |
949 | '74.0.3691.1', | |
950 | '74.0.3691.0', | |
951 | '73.0.3683.16', | |
952 | '72.0.3626.88', | |
953 | '72.0.3626.87', | |
954 | '73.0.3683.15', | |
955 | '74.0.3690.1', | |
956 | '74.0.3690.0', | |
957 | '73.0.3683.14', | |
958 | '72.0.3626.86', | |
959 | '73.0.3683.13', | |
960 | '73.0.3683.12', | |
961 | '74.0.3689.1', | |
962 | '74.0.3689.0', | |
963 | '73.0.3683.11', | |
964 | '72.0.3626.85', | |
965 | '73.0.3683.10', | |
966 | '72.0.3626.84', | |
967 | '73.0.3683.9', | |
968 | '74.0.3688.1', | |
969 | '74.0.3688.0', | |
970 | '73.0.3683.8', | |
971 | '72.0.3626.83', | |
972 | '74.0.3687.2', | |
973 | '74.0.3687.1', | |
974 | '74.0.3687.0', | |
975 | '73.0.3683.7', | |
976 | '72.0.3626.82', | |
977 | '74.0.3686.4', | |
978 | '72.0.3626.81', | |
979 | '74.0.3686.3', | |
980 | '74.0.3686.2', | |
981 | '74.0.3686.1', | |
982 | '74.0.3686.0', | |
983 | '73.0.3683.6', | |
984 | '72.0.3626.80', | |
985 | '74.0.3685.1', | |
986 | '74.0.3685.0', | |
987 | '73.0.3683.5', | |
988 | '72.0.3626.79', | |
989 | '74.0.3684.1', | |
990 | '74.0.3684.0', | |
991 | '73.0.3683.4', | |
992 | '72.0.3626.78', | |
993 | '72.0.3626.77', | |
994 | '73.0.3683.3', | |
995 | '73.0.3683.2', | |
996 | '72.0.3626.76', | |
997 | '73.0.3683.1', | |
998 | '73.0.3683.0', | |
999 | '72.0.3626.75', | |
1000 | '71.0.3578.141', | |
1001 | '73.0.3682.1', | |
1002 | '73.0.3682.0', | |
1003 | '72.0.3626.74', | |
1004 | '71.0.3578.140', | |
1005 | '73.0.3681.4', | |
1006 | '73.0.3681.3', | |
1007 | '73.0.3681.2', | |
1008 | '73.0.3681.1', | |
1009 | '73.0.3681.0', | |
1010 | '72.0.3626.73', | |
1011 | '71.0.3578.139', | |
1012 | '72.0.3626.72', | |
1013 | '72.0.3626.71', | |
1014 | '73.0.3680.1', | |
1015 | '73.0.3680.0', | |
1016 | '72.0.3626.70', | |
1017 | '71.0.3578.138', | |
1018 | '73.0.3678.2', | |
1019 | '73.0.3679.1', | |
1020 | '73.0.3679.0', | |
1021 | '72.0.3626.69', | |
1022 | '71.0.3578.137', | |
1023 | '73.0.3678.1', | |
1024 | '73.0.3678.0', | |
1025 | '71.0.3578.136', | |
1026 | '73.0.3677.1', | |
1027 | '73.0.3677.0', | |
1028 | '72.0.3626.68', | |
1029 | '72.0.3626.67', | |
1030 | '71.0.3578.135', | |
1031 | '73.0.3676.1', | |
1032 | '73.0.3676.0', | |
1033 | '73.0.3674.2', | |
1034 | '72.0.3626.66', | |
1035 | '71.0.3578.134', | |
1036 | '73.0.3674.1', | |
1037 | '73.0.3674.0', | |
1038 | '72.0.3626.65', | |
1039 | '71.0.3578.133', | |
1040 | '73.0.3673.2', | |
1041 | '73.0.3673.1', | |
1042 | '73.0.3673.0', | |
1043 | '72.0.3626.64', | |
1044 | '71.0.3578.132', | |
1045 | '72.0.3626.63', | |
1046 | '72.0.3626.62', | |
1047 | '72.0.3626.61', | |
1048 | '72.0.3626.60', | |
1049 | '73.0.3672.1', | |
1050 | '73.0.3672.0', | |
1051 | '72.0.3626.59', | |
1052 | '71.0.3578.131', | |
1053 | '73.0.3671.3', | |
1054 | '73.0.3671.2', | |
1055 | '73.0.3671.1', | |
1056 | '73.0.3671.0', | |
1057 | '72.0.3626.58', | |
1058 | '71.0.3578.130', | |
1059 | '73.0.3670.1', | |
1060 | '73.0.3670.0', | |
1061 | '72.0.3626.57', | |
1062 | '71.0.3578.129', | |
1063 | '73.0.3669.1', | |
1064 | '73.0.3669.0', | |
1065 | '72.0.3626.56', | |
1066 | '71.0.3578.128', | |
1067 | '73.0.3668.2', | |
1068 | '73.0.3668.1', | |
1069 | '73.0.3668.0', | |
1070 | '72.0.3626.55', | |
1071 | '71.0.3578.127', | |
1072 | '73.0.3667.2', | |
1073 | '73.0.3667.1', | |
1074 | '73.0.3667.0', | |
1075 | '72.0.3626.54', | |
1076 | '71.0.3578.126', | |
1077 | '73.0.3666.1', | |
1078 | '73.0.3666.0', | |
1079 | '72.0.3626.53', | |
1080 | '71.0.3578.125', | |
1081 | '73.0.3665.4', | |
1082 | '73.0.3665.3', | |
1083 | '72.0.3626.52', | |
1084 | '73.0.3665.2', | |
1085 | '73.0.3664.4', | |
1086 | '73.0.3665.1', | |
1087 | '73.0.3665.0', | |
1088 | '72.0.3626.51', | |
1089 | '71.0.3578.124', | |
1090 | '72.0.3626.50', | |
1091 | '73.0.3664.3', | |
1092 | '73.0.3664.2', | |
1093 | '73.0.3664.1', | |
1094 | '73.0.3664.0', | |
1095 | '73.0.3663.2', | |
1096 | '72.0.3626.49', | |
1097 | '71.0.3578.123', | |
1098 | '73.0.3663.1', | |
1099 | '73.0.3663.0', | |
1100 | '72.0.3626.48', | |
1101 | '71.0.3578.122', | |
1102 | '73.0.3662.1', | |
1103 | '73.0.3662.0', | |
1104 | '72.0.3626.47', | |
1105 | '71.0.3578.121', | |
1106 | '73.0.3661.1', | |
1107 | '72.0.3626.46', | |
1108 | '73.0.3661.0', | |
1109 | '72.0.3626.45', | |
1110 | '71.0.3578.120', | |
1111 | '73.0.3660.2', | |
1112 | '73.0.3660.1', | |
1113 | '73.0.3660.0', | |
1114 | '72.0.3626.44', | |
1115 | '71.0.3578.119', | |
1116 | '73.0.3659.1', | |
1117 | '73.0.3659.0', | |
1118 | '72.0.3626.43', | |
1119 | '71.0.3578.118', | |
1120 | '73.0.3658.1', | |
1121 | '73.0.3658.0', | |
1122 | '72.0.3626.42', | |
1123 | '71.0.3578.117', | |
1124 | '73.0.3657.1', | |
1125 | '73.0.3657.0', | |
1126 | '72.0.3626.41', | |
1127 | '71.0.3578.116', | |
1128 | '73.0.3656.1', | |
1129 | '73.0.3656.0', | |
1130 | '72.0.3626.40', | |
1131 | '71.0.3578.115', | |
1132 | '73.0.3655.1', | |
1133 | '73.0.3655.0', | |
1134 | '72.0.3626.39', | |
1135 | '71.0.3578.114', | |
1136 | '73.0.3654.1', | |
1137 | '73.0.3654.0', | |
1138 | '72.0.3626.38', | |
1139 | '71.0.3578.113', | |
1140 | '73.0.3653.1', | |
1141 | '73.0.3653.0', | |
1142 | '72.0.3626.37', | |
1143 | '71.0.3578.112', | |
1144 | '73.0.3652.1', | |
1145 | '73.0.3652.0', | |
1146 | '72.0.3626.36', | |
1147 | '71.0.3578.111', | |
1148 | '73.0.3651.1', | |
1149 | '73.0.3651.0', | |
1150 | '72.0.3626.35', | |
1151 | '71.0.3578.110', | |
1152 | '73.0.3650.1', | |
1153 | '73.0.3650.0', | |
1154 | '72.0.3626.34', | |
1155 | '71.0.3578.109', | |
1156 | '73.0.3649.1', | |
1157 | '73.0.3649.0', | |
1158 | '72.0.3626.33', | |
1159 | '71.0.3578.108', | |
1160 | '73.0.3648.2', | |
1161 | '73.0.3648.1', | |
1162 | '73.0.3648.0', | |
1163 | '72.0.3626.32', | |
1164 | '71.0.3578.107', | |
1165 | '73.0.3647.2', | |
1166 | '73.0.3647.1', | |
1167 | '73.0.3647.0', | |
1168 | '72.0.3626.31', | |
1169 | '71.0.3578.106', | |
1170 | '73.0.3635.3', | |
1171 | '73.0.3646.2', | |
1172 | '73.0.3646.1', | |
1173 | '73.0.3646.0', | |
1174 | '72.0.3626.30', | |
1175 | '71.0.3578.105', | |
1176 | '72.0.3626.29', | |
1177 | '73.0.3645.2', | |
1178 | '73.0.3645.1', | |
1179 | '73.0.3645.0', | |
1180 | '72.0.3626.28', | |
1181 | '71.0.3578.104', | |
1182 | '72.0.3626.27', | |
1183 | '72.0.3626.26', | |
1184 | '72.0.3626.25', | |
1185 | '72.0.3626.24', | |
1186 | '73.0.3644.0', | |
1187 | '73.0.3643.2', | |
1188 | '72.0.3626.23', | |
1189 | '71.0.3578.103', | |
1190 | '73.0.3643.1', | |
1191 | '73.0.3643.0', | |
1192 | '72.0.3626.22', | |
1193 | '71.0.3578.102', | |
1194 | '73.0.3642.1', | |
1195 | '73.0.3642.0', | |
1196 | '72.0.3626.21', | |
1197 | '71.0.3578.101', | |
1198 | '73.0.3641.1', | |
1199 | '73.0.3641.0', | |
1200 | '72.0.3626.20', | |
1201 | '71.0.3578.100', | |
1202 | '72.0.3626.19', | |
1203 | '73.0.3640.1', | |
1204 | '73.0.3640.0', | |
1205 | '72.0.3626.18', | |
1206 | '73.0.3639.1', | |
1207 | '71.0.3578.99', | |
1208 | '73.0.3639.0', | |
1209 | '72.0.3626.17', | |
1210 | '73.0.3638.2', | |
1211 | '72.0.3626.16', | |
1212 | '73.0.3638.1', | |
1213 | '73.0.3638.0', | |
1214 | '72.0.3626.15', | |
1215 | '71.0.3578.98', | |
1216 | '73.0.3635.2', | |
1217 | '71.0.3578.97', | |
1218 | '73.0.3637.1', | |
1219 | '73.0.3637.0', | |
1220 | '72.0.3626.14', | |
1221 | '71.0.3578.96', | |
1222 | '71.0.3578.95', | |
1223 | '72.0.3626.13', | |
1224 | '71.0.3578.94', | |
1225 | '73.0.3636.2', | |
1226 | '71.0.3578.93', | |
1227 | '73.0.3636.1', | |
1228 | '73.0.3636.0', | |
1229 | '72.0.3626.12', | |
1230 | '71.0.3578.92', | |
1231 | '73.0.3635.1', | |
1232 | '73.0.3635.0', | |
1233 | '72.0.3626.11', | |
1234 | '71.0.3578.91', | |
1235 | '73.0.3634.2', | |
1236 | '73.0.3634.1', | |
1237 | '73.0.3634.0', | |
1238 | '72.0.3626.10', | |
1239 | '71.0.3578.90', | |
1240 | '71.0.3578.89', | |
1241 | '73.0.3633.2', | |
1242 | '73.0.3633.1', | |
1243 | '73.0.3633.0', | |
1244 | '72.0.3610.4', | |
1245 | '72.0.3626.9', | |
1246 | '71.0.3578.88', | |
1247 | '73.0.3632.5', | |
1248 | '73.0.3632.4', | |
1249 | '73.0.3632.3', | |
1250 | '73.0.3632.2', | |
1251 | '73.0.3632.1', | |
1252 | '73.0.3632.0', | |
1253 | '72.0.3626.8', | |
1254 | '71.0.3578.87', | |
1255 | '73.0.3631.2', | |
1256 | '73.0.3631.1', | |
1257 | '73.0.3631.0', | |
1258 | '72.0.3626.7', | |
1259 | '71.0.3578.86', | |
1260 | '72.0.3626.6', | |
1261 | '73.0.3630.1', | |
1262 | '73.0.3630.0', | |
1263 | '72.0.3626.5', | |
1264 | '71.0.3578.85', | |
1265 | '72.0.3626.4', | |
1266 | '73.0.3628.3', | |
1267 | '73.0.3628.2', | |
1268 | '73.0.3629.1', | |
1269 | '73.0.3629.0', | |
1270 | '72.0.3626.3', | |
1271 | '71.0.3578.84', | |
1272 | '73.0.3628.1', | |
1273 | '73.0.3628.0', | |
1274 | '71.0.3578.83', | |
1275 | '73.0.3627.1', | |
1276 | '73.0.3627.0', | |
1277 | '72.0.3626.2', | |
1278 | '71.0.3578.82', | |
1279 | '71.0.3578.81', | |
1280 | '71.0.3578.80', | |
1281 | '72.0.3626.1', | |
1282 | '72.0.3626.0', | |
1283 | '71.0.3578.79', | |
1284 | '70.0.3538.124', | |
1285 | '71.0.3578.78', | |
1286 | '72.0.3623.4', | |
1287 | '72.0.3625.2', | |
1288 | '72.0.3625.1', | |
1289 | '72.0.3625.0', | |
1290 | '71.0.3578.77', | |
1291 | '70.0.3538.123', | |
1292 | '72.0.3624.4', | |
1293 | '72.0.3624.3', | |
1294 | '72.0.3624.2', | |
1295 | '71.0.3578.76', | |
1296 | '72.0.3624.1', | |
1297 | '72.0.3624.0', | |
1298 | '72.0.3623.3', | |
1299 | '71.0.3578.75', | |
1300 | '70.0.3538.122', | |
1301 | '71.0.3578.74', | |
1302 | '72.0.3623.2', | |
1303 | '72.0.3610.3', | |
1304 | '72.0.3623.1', | |
1305 | '72.0.3623.0', | |
1306 | '72.0.3622.3', | |
1307 | '72.0.3622.2', | |
1308 | '71.0.3578.73', | |
1309 | '70.0.3538.121', | |
1310 | '72.0.3622.1', | |
1311 | '72.0.3622.0', | |
1312 | '71.0.3578.72', | |
1313 | '70.0.3538.120', | |
1314 | '72.0.3621.1', | |
1315 | '72.0.3621.0', | |
1316 | '71.0.3578.71', | |
1317 | '70.0.3538.119', | |
1318 | '72.0.3620.1', | |
1319 | '72.0.3620.0', | |
1320 | '71.0.3578.70', | |
1321 | '70.0.3538.118', | |
1322 | '71.0.3578.69', | |
1323 | '72.0.3619.1', | |
1324 | '72.0.3619.0', | |
1325 | '71.0.3578.68', | |
1326 | '70.0.3538.117', | |
1327 | '71.0.3578.67', | |
1328 | '72.0.3618.1', | |
1329 | '72.0.3618.0', | |
1330 | '71.0.3578.66', | |
1331 | '70.0.3538.116', | |
1332 | '72.0.3617.1', | |
1333 | '72.0.3617.0', | |
1334 | '71.0.3578.65', | |
1335 | '70.0.3538.115', | |
1336 | '72.0.3602.3', | |
1337 | '71.0.3578.64', | |
1338 | '72.0.3616.1', | |
1339 | '72.0.3616.0', | |
1340 | '71.0.3578.63', | |
1341 | '70.0.3538.114', | |
1342 | '71.0.3578.62', | |
1343 | '72.0.3615.1', | |
1344 | '72.0.3615.0', | |
1345 | '71.0.3578.61', | |
1346 | '70.0.3538.113', | |
1347 | '72.0.3614.1', | |
1348 | '72.0.3614.0', | |
1349 | '71.0.3578.60', | |
1350 | '70.0.3538.112', | |
1351 | '72.0.3613.1', | |
1352 | '72.0.3613.0', | |
1353 | '71.0.3578.59', | |
1354 | '70.0.3538.111', | |
1355 | '72.0.3612.2', | |
1356 | '72.0.3612.1', | |
1357 | '72.0.3612.0', | |
1358 | '70.0.3538.110', | |
1359 | '71.0.3578.58', | |
1360 | '70.0.3538.109', | |
1361 | '72.0.3611.2', | |
1362 | '72.0.3611.1', | |
1363 | '72.0.3611.0', | |
1364 | '71.0.3578.57', | |
1365 | '70.0.3538.108', | |
1366 | '72.0.3610.2', | |
1367 | '71.0.3578.56', | |
1368 | '71.0.3578.55', | |
1369 | '72.0.3610.1', | |
1370 | '72.0.3610.0', | |
1371 | '71.0.3578.54', | |
1372 | '70.0.3538.107', | |
1373 | '71.0.3578.53', | |
1374 | '72.0.3609.3', | |
1375 | '71.0.3578.52', | |
1376 | '72.0.3609.2', | |
1377 | '71.0.3578.51', | |
1378 | '72.0.3608.5', | |
1379 | '72.0.3609.1', | |
1380 | '72.0.3609.0', | |
1381 | '71.0.3578.50', | |
1382 | '70.0.3538.106', | |
1383 | '72.0.3608.4', | |
1384 | '72.0.3608.3', | |
1385 | '72.0.3608.2', | |
1386 | '71.0.3578.49', | |
1387 | '72.0.3608.1', | |
1388 | '72.0.3608.0', | |
1389 | '70.0.3538.105', | |
1390 | '71.0.3578.48', | |
1391 | '72.0.3607.1', | |
1392 | '72.0.3607.0', | |
1393 | '71.0.3578.47', | |
1394 | '70.0.3538.104', | |
1395 | '72.0.3606.2', | |
1396 | '72.0.3606.1', | |
1397 | '72.0.3606.0', | |
1398 | '71.0.3578.46', | |
1399 | '70.0.3538.103', | |
1400 | '70.0.3538.102', | |
1401 | '72.0.3605.3', | |
1402 | '72.0.3605.2', | |
1403 | '72.0.3605.1', | |
1404 | '72.0.3605.0', | |
1405 | '71.0.3578.45', | |
1406 | '70.0.3538.101', | |
1407 | '71.0.3578.44', | |
1408 | '71.0.3578.43', | |
1409 | '70.0.3538.100', | |
1410 | '70.0.3538.99', | |
1411 | '71.0.3578.42', | |
1412 | '72.0.3604.1', | |
1413 | '72.0.3604.0', | |
1414 | '71.0.3578.41', | |
1415 | '70.0.3538.98', | |
1416 | '71.0.3578.40', | |
1417 | '72.0.3603.2', | |
1418 | '72.0.3603.1', | |
1419 | '72.0.3603.0', | |
1420 | '71.0.3578.39', | |
1421 | '70.0.3538.97', | |
1422 | '72.0.3602.2', | |
1423 | '71.0.3578.38', | |
1424 | '71.0.3578.37', | |
1425 | '72.0.3602.1', | |
1426 | '72.0.3602.0', | |
1427 | '71.0.3578.36', | |
1428 | '70.0.3538.96', | |
1429 | '72.0.3601.1', | |
1430 | '72.0.3601.0', | |
1431 | '71.0.3578.35', | |
1432 | '70.0.3538.95', | |
1433 | '72.0.3600.1', | |
1434 | '72.0.3600.0', | |
1435 | '71.0.3578.34', | |
1436 | '70.0.3538.94', | |
1437 | '72.0.3599.3', | |
1438 | '72.0.3599.2', | |
1439 | '72.0.3599.1', | |
1440 | '72.0.3599.0', | |
1441 | '71.0.3578.33', | |
1442 | '70.0.3538.93', | |
1443 | '72.0.3598.1', | |
1444 | '72.0.3598.0', | |
1445 | '71.0.3578.32', | |
1446 | '70.0.3538.87', | |
1447 | '72.0.3597.1', | |
1448 | '72.0.3597.0', | |
1449 | '72.0.3596.2', | |
1450 | '71.0.3578.31', | |
1451 | '70.0.3538.86', | |
1452 | '71.0.3578.30', | |
1453 | '71.0.3578.29', | |
1454 | '72.0.3596.1', | |
1455 | '72.0.3596.0', | |
1456 | '71.0.3578.28', | |
1457 | '70.0.3538.85', | |
1458 | '72.0.3595.2', | |
1459 | '72.0.3591.3', | |
1460 | '72.0.3595.1', | |
1461 | '72.0.3595.0', | |
1462 | '71.0.3578.27', | |
1463 | '70.0.3538.84', | |
1464 | '72.0.3594.1', | |
1465 | '72.0.3594.0', | |
1466 | '71.0.3578.26', | |
1467 | '70.0.3538.83', | |
1468 | '72.0.3593.2', | |
1469 | '72.0.3593.1', | |
1470 | '72.0.3593.0', | |
1471 | '71.0.3578.25', | |
1472 | '70.0.3538.82', | |
1473 | '72.0.3589.3', | |
1474 | '72.0.3592.2', | |
1475 | '72.0.3592.1', | |
1476 | '72.0.3592.0', | |
1477 | '71.0.3578.24', | |
1478 | '72.0.3589.2', | |
1479 | '70.0.3538.81', | |
1480 | '70.0.3538.80', | |
1481 | '72.0.3591.2', | |
1482 | '72.0.3591.1', | |
1483 | '72.0.3591.0', | |
1484 | '71.0.3578.23', | |
1485 | '70.0.3538.79', | |
1486 | '71.0.3578.22', | |
1487 | '72.0.3590.1', | |
1488 | '72.0.3590.0', | |
1489 | '71.0.3578.21', | |
1490 | '70.0.3538.78', | |
1491 | '70.0.3538.77', | |
1492 | '72.0.3589.1', | |
1493 | '72.0.3589.0', | |
1494 | '71.0.3578.20', | |
1495 | '70.0.3538.76', | |
1496 | '71.0.3578.19', | |
1497 | '70.0.3538.75', | |
1498 | '72.0.3588.1', | |
1499 | '72.0.3588.0', | |
1500 | '71.0.3578.18', | |
1501 | '70.0.3538.74', | |
1502 | '72.0.3586.2', | |
1503 | '72.0.3587.0', | |
1504 | '71.0.3578.17', | |
1505 | '70.0.3538.73', | |
1506 | '72.0.3586.1', | |
1507 | '72.0.3586.0', | |
1508 | '71.0.3578.16', | |
1509 | '70.0.3538.72', | |
1510 | '72.0.3585.1', | |
1511 | '72.0.3585.0', | |
1512 | '71.0.3578.15', | |
1513 | '70.0.3538.71', | |
1514 | '71.0.3578.14', | |
1515 | '72.0.3584.1', | |
1516 | '72.0.3584.0', | |
1517 | '71.0.3578.13', | |
1518 | '70.0.3538.70', | |
1519 | '72.0.3583.2', | |
1520 | '71.0.3578.12', | |
1521 | '72.0.3583.1', | |
1522 | '72.0.3583.0', | |
1523 | '71.0.3578.11', | |
1524 | '70.0.3538.69', | |
1525 | '71.0.3578.10', | |
1526 | '72.0.3582.0', | |
1527 | '72.0.3581.4', | |
1528 | '71.0.3578.9', | |
1529 | '70.0.3538.67', | |
1530 | '72.0.3581.3', | |
1531 | '72.0.3581.2', | |
1532 | '72.0.3581.1', | |
1533 | '72.0.3581.0', | |
1534 | '71.0.3578.8', | |
1535 | '70.0.3538.66', | |
1536 | '72.0.3580.1', | |
1537 | '72.0.3580.0', | |
1538 | '71.0.3578.7', | |
1539 | '70.0.3538.65', | |
1540 | '71.0.3578.6', | |
1541 | '72.0.3579.1', | |
1542 | '72.0.3579.0', | |
1543 | '71.0.3578.5', | |
1544 | '70.0.3538.64', | |
1545 | '71.0.3578.4', | |
1546 | '71.0.3578.3', | |
1547 | '71.0.3578.2', | |
1548 | '71.0.3578.1', | |
1549 | '71.0.3578.0', | |
1550 | '70.0.3538.63', | |
1551 | '69.0.3497.128', | |
1552 | '70.0.3538.62', | |
1553 | '70.0.3538.61', | |
1554 | '70.0.3538.60', | |
1555 | '70.0.3538.59', | |
1556 | '71.0.3577.1', | |
1557 | '71.0.3577.0', | |
1558 | '70.0.3538.58', | |
1559 | '69.0.3497.127', | |
1560 | '71.0.3576.2', | |
1561 | '71.0.3576.1', | |
1562 | '71.0.3576.0', | |
1563 | '70.0.3538.57', | |
1564 | '70.0.3538.56', | |
1565 | '71.0.3575.2', | |
1566 | '70.0.3538.55', | |
1567 | '69.0.3497.126', | |
1568 | '70.0.3538.54', | |
1569 | '71.0.3575.1', | |
1570 | '71.0.3575.0', | |
1571 | '71.0.3574.1', | |
1572 | '71.0.3574.0', | |
1573 | '70.0.3538.53', | |
1574 | '69.0.3497.125', | |
1575 | '70.0.3538.52', | |
1576 | '71.0.3573.1', | |
1577 | '71.0.3573.0', | |
1578 | '70.0.3538.51', | |
1579 | '69.0.3497.124', | |
1580 | '71.0.3572.1', | |
1581 | '71.0.3572.0', | |
1582 | '70.0.3538.50', | |
1583 | '69.0.3497.123', | |
1584 | '71.0.3571.2', | |
1585 | '70.0.3538.49', | |
1586 | '69.0.3497.122', | |
1587 | '71.0.3571.1', | |
1588 | '71.0.3571.0', | |
1589 | '70.0.3538.48', | |
1590 | '69.0.3497.121', | |
1591 | '71.0.3570.1', | |
1592 | '71.0.3570.0', | |
1593 | '70.0.3538.47', | |
1594 | '69.0.3497.120', | |
1595 | '71.0.3568.2', | |
1596 | '71.0.3569.1', | |
1597 | '71.0.3569.0', | |
1598 | '70.0.3538.46', | |
1599 | '69.0.3497.119', | |
1600 | '70.0.3538.45', | |
1601 | '71.0.3568.1', | |
1602 | '71.0.3568.0', | |
1603 | '70.0.3538.44', | |
1604 | '69.0.3497.118', | |
1605 | '70.0.3538.43', | |
1606 | '70.0.3538.42', | |
1607 | '71.0.3567.1', | |
1608 | '71.0.3567.0', | |
1609 | '70.0.3538.41', | |
1610 | '69.0.3497.117', | |
1611 | '71.0.3566.1', | |
1612 | '71.0.3566.0', | |
1613 | '70.0.3538.40', | |
1614 | '69.0.3497.116', | |
1615 | '71.0.3565.1', | |
1616 | '71.0.3565.0', | |
1617 | '70.0.3538.39', | |
1618 | '69.0.3497.115', | |
1619 | '71.0.3564.1', | |
1620 | '71.0.3564.0', | |
1621 | '70.0.3538.38', | |
1622 | '69.0.3497.114', | |
1623 | '71.0.3563.0', | |
1624 | '71.0.3562.2', | |
1625 | '70.0.3538.37', | |
1626 | '69.0.3497.113', | |
1627 | '70.0.3538.36', | |
1628 | '70.0.3538.35', | |
1629 | '71.0.3562.1', | |
1630 | '71.0.3562.0', | |
1631 | '70.0.3538.34', | |
1632 | '69.0.3497.112', | |
1633 | '70.0.3538.33', | |
1634 | '71.0.3561.1', | |
1635 | '71.0.3561.0', | |
1636 | '70.0.3538.32', | |
1637 | '69.0.3497.111', | |
1638 | '71.0.3559.6', | |
1639 | '71.0.3560.1', | |
1640 | '71.0.3560.0', | |
1641 | '71.0.3559.5', | |
1642 | '71.0.3559.4', | |
1643 | '70.0.3538.31', | |
1644 | '69.0.3497.110', | |
1645 | '71.0.3559.3', | |
1646 | '70.0.3538.30', | |
1647 | '69.0.3497.109', | |
1648 | '71.0.3559.2', | |
1649 | '71.0.3559.1', | |
1650 | '71.0.3559.0', | |
1651 | '70.0.3538.29', | |
1652 | '69.0.3497.108', | |
1653 | '71.0.3558.2', | |
1654 | '71.0.3558.1', | |
1655 | '71.0.3558.0', | |
1656 | '70.0.3538.28', | |
1657 | '69.0.3497.107', | |
1658 | '71.0.3557.2', | |
1659 | '71.0.3557.1', | |
1660 | '71.0.3557.0', | |
1661 | '70.0.3538.27', | |
1662 | '69.0.3497.106', | |
1663 | '71.0.3554.4', | |
1664 | '70.0.3538.26', | |
1665 | '71.0.3556.1', | |
1666 | '71.0.3556.0', | |
1667 | '70.0.3538.25', | |
1668 | '71.0.3554.3', | |
1669 | '69.0.3497.105', | |
1670 | '71.0.3554.2', | |
1671 | '70.0.3538.24', | |
1672 | '69.0.3497.104', | |
1673 | '71.0.3555.2', | |
1674 | '70.0.3538.23', | |
1675 | '71.0.3555.1', | |
1676 | '71.0.3555.0', | |
1677 | '70.0.3538.22', | |
1678 | '69.0.3497.103', | |
1679 | '71.0.3554.1', | |
1680 | '71.0.3554.0', | |
1681 | '70.0.3538.21', | |
1682 | '69.0.3497.102', | |
1683 | '71.0.3553.3', | |
1684 | '70.0.3538.20', | |
1685 | '69.0.3497.101', | |
1686 | '71.0.3553.2', | |
1687 | '69.0.3497.100', | |
1688 | '71.0.3553.1', | |
1689 | '71.0.3553.0', | |
1690 | '70.0.3538.19', | |
1691 | '69.0.3497.99', | |
1692 | '69.0.3497.98', | |
1693 | '69.0.3497.97', | |
1694 | '71.0.3552.6', | |
1695 | '71.0.3552.5', | |
1696 | '71.0.3552.4', | |
1697 | '71.0.3552.3', | |
1698 | '71.0.3552.2', | |
1699 | '71.0.3552.1', | |
1700 | '71.0.3552.0', | |
1701 | '70.0.3538.18', | |
1702 | '69.0.3497.96', | |
1703 | '71.0.3551.3', | |
1704 | '71.0.3551.2', | |
1705 | '71.0.3551.1', | |
1706 | '71.0.3551.0', | |
1707 | '70.0.3538.17', | |
1708 | '69.0.3497.95', | |
1709 | '71.0.3550.3', | |
1710 | '71.0.3550.2', | |
1711 | '71.0.3550.1', | |
1712 | '71.0.3550.0', | |
1713 | '70.0.3538.16', | |
1714 | '69.0.3497.94', | |
1715 | '71.0.3549.1', | |
1716 | '71.0.3549.0', | |
1717 | '70.0.3538.15', | |
1718 | '69.0.3497.93', | |
1719 | '69.0.3497.92', | |
1720 | '71.0.3548.1', | |
1721 | '71.0.3548.0', | |
1722 | '70.0.3538.14', | |
1723 | '69.0.3497.91', | |
1724 | '71.0.3547.1', | |
1725 | '71.0.3547.0', | |
1726 | '70.0.3538.13', | |
1727 | '69.0.3497.90', | |
1728 | '71.0.3546.2', | |
1729 | '69.0.3497.89', | |
1730 | '71.0.3546.1', | |
1731 | '71.0.3546.0', | |
1732 | '70.0.3538.12', | |
1733 | '69.0.3497.88', | |
1734 | '71.0.3545.4', | |
1735 | '71.0.3545.3', | |
1736 | '71.0.3545.2', | |
1737 | '71.0.3545.1', | |
1738 | '71.0.3545.0', | |
1739 | '70.0.3538.11', | |
1740 | '69.0.3497.87', | |
1741 | '71.0.3544.5', | |
1742 | '71.0.3544.4', | |
1743 | '71.0.3544.3', | |
1744 | '71.0.3544.2', | |
1745 | '71.0.3544.1', | |
1746 | '71.0.3544.0', | |
1747 | '69.0.3497.86', | |
1748 | '70.0.3538.10', | |
1749 | '69.0.3497.85', | |
1750 | '70.0.3538.9', | |
1751 | '69.0.3497.84', | |
1752 | '71.0.3543.4', | |
1753 | '70.0.3538.8', | |
1754 | '71.0.3543.3', | |
1755 | '71.0.3543.2', | |
1756 | '71.0.3543.1', | |
1757 | '71.0.3543.0', | |
1758 | '70.0.3538.7', | |
1759 | '69.0.3497.83', | |
1760 | '71.0.3542.2', | |
1761 | '71.0.3542.1', | |
1762 | '71.0.3542.0', | |
1763 | '70.0.3538.6', | |
1764 | '69.0.3497.82', | |
1765 | '69.0.3497.81', | |
1766 | '71.0.3541.1', | |
1767 | '71.0.3541.0', | |
1768 | '70.0.3538.5', | |
1769 | '69.0.3497.80', | |
1770 | '71.0.3540.1', | |
1771 | '71.0.3540.0', | |
1772 | '70.0.3538.4', | |
1773 | '69.0.3497.79', | |
1774 | '70.0.3538.3', | |
1775 | '71.0.3539.1', | |
1776 | '71.0.3539.0', | |
1777 | '69.0.3497.78', | |
1778 | '68.0.3440.134', | |
1779 | '69.0.3497.77', | |
1780 | '70.0.3538.2', | |
1781 | '70.0.3538.1', | |
1782 | '70.0.3538.0', | |
1783 | '69.0.3497.76', | |
1784 | '68.0.3440.133', | |
1785 | '69.0.3497.75', | |
1786 | '70.0.3537.2', | |
1787 | '70.0.3537.1', | |
1788 | '70.0.3537.0', | |
1789 | '69.0.3497.74', | |
1790 | '68.0.3440.132', | |
1791 | '70.0.3536.0', | |
1792 | '70.0.3535.5', | |
1793 | '70.0.3535.4', | |
1794 | '70.0.3535.3', | |
1795 | '69.0.3497.73', | |
1796 | '68.0.3440.131', | |
1797 | '70.0.3532.8', | |
1798 | '70.0.3532.7', | |
1799 | '69.0.3497.72', | |
1800 | '69.0.3497.71', | |
1801 | '70.0.3535.2', | |
1802 | '70.0.3535.1', | |
1803 | '70.0.3535.0', | |
1804 | '69.0.3497.70', | |
1805 | '68.0.3440.130', | |
1806 | '69.0.3497.69', | |
1807 | '68.0.3440.129', | |
1808 | '70.0.3534.4', | |
1809 | '70.0.3534.3', | |
1810 | '70.0.3534.2', | |
1811 | '70.0.3534.1', | |
1812 | '70.0.3534.0', | |
1813 | '69.0.3497.68', | |
1814 | '68.0.3440.128', | |
1815 | '70.0.3533.2', | |
1816 | '70.0.3533.1', | |
1817 | '70.0.3533.0', | |
1818 | '69.0.3497.67', | |
1819 | '68.0.3440.127', | |
1820 | '70.0.3532.6', | |
1821 | '70.0.3532.5', | |
1822 | '70.0.3532.4', | |
1823 | '69.0.3497.66', | |
1824 | '68.0.3440.126', | |
1825 | '70.0.3532.3', | |
1826 | '70.0.3532.2', | |
1827 | '70.0.3532.1', | |
1828 | '69.0.3497.60', | |
1829 | '69.0.3497.65', | |
1830 | '69.0.3497.64', | |
1831 | '70.0.3532.0', | |
1832 | '70.0.3531.0', | |
1833 | '70.0.3530.4', | |
1834 | '70.0.3530.3', | |
1835 | '70.0.3530.2', | |
1836 | '69.0.3497.58', | |
1837 | '68.0.3440.125', | |
1838 | '69.0.3497.57', | |
1839 | '69.0.3497.56', | |
1840 | '69.0.3497.55', | |
1841 | '69.0.3497.54', | |
1842 | '70.0.3530.1', | |
1843 | '70.0.3530.0', | |
1844 | '69.0.3497.53', | |
1845 | '68.0.3440.124', | |
1846 | '69.0.3497.52', | |
1847 | '70.0.3529.3', | |
1848 | '70.0.3529.2', | |
1849 | '70.0.3529.1', | |
1850 | '70.0.3529.0', | |
1851 | '69.0.3497.51', | |
1852 | '70.0.3528.4', | |
1853 | '68.0.3440.123', | |
1854 | '70.0.3528.3', | |
1855 | '70.0.3528.2', | |
1856 | '70.0.3528.1', | |
1857 | '70.0.3528.0', | |
1858 | '69.0.3497.50', | |
1859 | '68.0.3440.122', | |
1860 | '70.0.3527.1', | |
1861 | '70.0.3527.0', | |
1862 | '69.0.3497.49', | |
1863 | '68.0.3440.121', | |
1864 | '70.0.3526.1', | |
1865 | '70.0.3526.0', | |
1866 | '68.0.3440.120', | |
1867 | '69.0.3497.48', | |
1868 | '69.0.3497.47', | |
1869 | '68.0.3440.119', | |
1870 | '68.0.3440.118', | |
1871 | '70.0.3525.5', | |
1872 | '70.0.3525.4', | |
1873 | '70.0.3525.3', | |
1874 | '68.0.3440.117', | |
1875 | '69.0.3497.46', | |
1876 | '70.0.3525.2', | |
1877 | '70.0.3525.1', | |
1878 | '70.0.3525.0', | |
1879 | '69.0.3497.45', | |
1880 | '68.0.3440.116', | |
1881 | '70.0.3524.4', | |
1882 | '70.0.3524.3', | |
1883 | '69.0.3497.44', | |
1884 | '70.0.3524.2', | |
1885 | '70.0.3524.1', | |
1886 | '70.0.3524.0', | |
1887 | '70.0.3523.2', | |
1888 | '69.0.3497.43', | |
1889 | '68.0.3440.115', | |
1890 | '70.0.3505.9', | |
1891 | '69.0.3497.42', | |
1892 | '70.0.3505.8', | |
1893 | '70.0.3523.1', | |
1894 | '70.0.3523.0', | |
1895 | '69.0.3497.41', | |
1896 | '68.0.3440.114', | |
1897 | '70.0.3505.7', | |
1898 | '69.0.3497.40', | |
1899 | '70.0.3522.1', | |
1900 | '70.0.3522.0', | |
1901 | '70.0.3521.2', | |
1902 | '69.0.3497.39', | |
1903 | '68.0.3440.113', | |
1904 | '70.0.3505.6', | |
1905 | '70.0.3521.1', | |
1906 | '70.0.3521.0', | |
1907 | '69.0.3497.38', | |
1908 | '68.0.3440.112', | |
1909 | '70.0.3520.1', | |
1910 | '70.0.3520.0', | |
1911 | '69.0.3497.37', | |
1912 | '68.0.3440.111', | |
1913 | '70.0.3519.3', | |
1914 | '70.0.3519.2', | |
1915 | '70.0.3519.1', | |
1916 | '70.0.3519.0', | |
1917 | '69.0.3497.36', | |
1918 | '68.0.3440.110', | |
1919 | '70.0.3518.1', | |
1920 | '70.0.3518.0', | |
1921 | '69.0.3497.35', | |
1922 | '69.0.3497.34', | |
1923 | '68.0.3440.109', | |
1924 | '70.0.3517.1', | |
1925 | '70.0.3517.0', | |
1926 | '69.0.3497.33', | |
1927 | '68.0.3440.108', | |
1928 | '69.0.3497.32', | |
1929 | '70.0.3516.3', | |
1930 | '70.0.3516.2', | |
1931 | '70.0.3516.1', | |
1932 | '70.0.3516.0', | |
1933 | '69.0.3497.31', | |
1934 | '68.0.3440.107', | |
1935 | '70.0.3515.4', | |
1936 | '68.0.3440.106', | |
1937 | '70.0.3515.3', | |
1938 | '70.0.3515.2', | |
1939 | '70.0.3515.1', | |
1940 | '70.0.3515.0', | |
1941 | '69.0.3497.30', | |
1942 | '68.0.3440.105', | |
1943 | '68.0.3440.104', | |
1944 | '70.0.3514.2', | |
1945 | '70.0.3514.1', | |
1946 | '70.0.3514.0', | |
1947 | '69.0.3497.29', | |
1948 | '68.0.3440.103', | |
1949 | '70.0.3513.1', | |
1950 | '70.0.3513.0', | |
1951 | '69.0.3497.28', | |
1952 | ) | |
1953 | ||
1954 | @classmethod | |
1955 | def _extract_urls(cls, webpage): | |
1956 | return re.findall( | |
1957 | r'<iframe[^>]+src=["\']((?:https?://)?%s/%s/[a-zA-Z0-9-_]+)' | |
1958 | % (cls._DOMAINS, cls._EMBED_WORD), webpage) | |
1959 | ||
1960 | def _extract_decrypted_page(self, page_url, webpage, video_id, headers): | |
1961 | phantom = PhantomJSwrapper(self, required_version='2.0') | |
1962 | webpage, _ = phantom.get(page_url, html=webpage, video_id=video_id, headers=headers) | |
1963 | return webpage | |
1964 | ||
1965 | def _real_extract(self, url): | |
1966 | mobj = re.match(self._VALID_URL, url) | |
1967 | host = mobj.group('host') | |
1968 | video_id = mobj.group('id') | |
1969 | ||
1970 | url_pattern = 'https://%s/%%s/%s/' % (host, video_id) | |
1971 | headers = { | |
1972 | 'User-Agent': self._USER_AGENT_TPL % random.choice(self._CHROME_VERSIONS), | |
1973 | } | |
1974 | ||
1975 | for path in (self._EMBED_WORD, self._STREAM_WORD): | |
1976 | page_url = url_pattern % path | |
1977 | last = path == self._STREAM_WORD | |
1978 | webpage = self._download_webpage( | |
1979 | page_url, video_id, 'Downloading %s webpage' % path, | |
1980 | headers=headers, fatal=last) | |
1981 | if not webpage: | |
1982 | continue | |
1983 | if 'File not found' in webpage or 'deleted by the owner' in webpage: | |
1984 | if not last: | |
1985 | continue | |
1986 | raise ExtractorError('File not found', expected=True, video_id=video_id) | |
1987 | break | |
1988 | ||
1989 | webpage = self._extract_decrypted_page(page_url, webpage, video_id, headers) | |
1990 | for element_id in self._URL_IDS: | |
1991 | decoded_id = get_element_by_id(element_id, webpage) | |
1992 | if decoded_id: | |
1993 | break | |
1994 | if not decoded_id: | |
1995 | decoded_id = self._search_regex( | |
1996 | (r'>\s*([\w-]+~\d{10,}~\d+\.\d+\.0\.0~[\w-]+)\s*<', | |
1997 | r'>\s*([\w~-]+~\d+\.\d+\.\d+\.\d+~[\w~-]+)', | |
1998 | r'>\s*([\w-]+~\d{10,}~(?:[a-f\d]+:){2}:~[\w-]+)\s*<', | |
1999 | r'>\s*([\w~-]+~[a-f0-9:]+~[\w~-]+)\s*<', | |
2000 | r'>\s*([\w~-]+~[a-f0-9:]+~[\w~-]+)'), webpage, | |
2001 | 'stream URL') | |
2002 | video_url = 'https://%s/%s/%s?mime=true' % (host, self._REDIR_WORD, decoded_id) | |
2003 | ||
2004 | title = self._og_search_title(webpage, default=None) or self._search_regex( | |
2005 | r'<span[^>]+class=["\']title["\'][^>]*>([^<]+)', webpage, | |
2006 | 'title', default=None) or self._html_search_meta( | |
2007 | 'description', webpage, 'title', fatal=True) | |
2008 | ||
2009 | entries = self._parse_html5_media_entries(page_url, webpage, video_id) | |
2010 | entry = entries[0] if entries else {} | |
2011 | subtitles = entry.get('subtitles') | |
2012 | ||
2013 | return { | |
2014 | 'id': video_id, | |
2015 | 'title': title, | |
2016 | 'thumbnail': entry.get('thumbnail') or self._og_search_thumbnail(webpage, default=None), | |
2017 | 'url': video_url, | |
2018 | 'ext': determine_ext(title, None) or determine_ext(url, 'mp4'), | |
2019 | 'subtitles': subtitles, | |
2020 | 'http_headers': headers, | |
2021 | } | |
2022 | ||
2023 | ||
2024 | class VerystreamIE(OpenloadIE): | |
2025 | IE_NAME = 'verystream' | |
2026 | ||
2027 | _DOMAINS = r'(?:verystream\.com)' | |
2028 | _VALID_URL = r'''(?x) | |
2029 | https?:// | |
2030 | (?P<host> | |
2031 | (?:www\.)? | |
2032 | %s | |
2033 | )/ | |
2034 | (?:stream|e)/ | |
2035 | (?P<id>[a-zA-Z0-9-_]+) | |
2036 | ''' % _DOMAINS | |
2037 | _EMBED_WORD = 'e' | |
2038 | _STREAM_WORD = 'stream' | |
2039 | _REDIR_WORD = 'gettoken' | |
2040 | _URL_IDS = ('videolink', ) | |
2041 | _TESTS = [{ | |
2042 | 'url': 'https://verystream.com/stream/c1GWQ9ngBBx/', | |
2043 | 'md5': 'd3e8c5628ccb9970b65fd65269886795', | |
2044 | 'info_dict': { | |
2045 | 'id': 'c1GWQ9ngBBx', | |
2046 | 'ext': 'mp4', | |
2047 | 'title': 'Big Buck Bunny.mp4', | |
2048 | 'thumbnail': r're:^https?://.*\.jpg$', | |
2049 | }, | |
2050 | }, { | |
2051 | 'url': 'https://verystream.com/e/c1GWQ9ngBBx/', | |
2052 | 'only_matching': True, | |
2053 | }] | |
2054 | ||
2055 | def _extract_decrypted_page(self, page_url, webpage, video_id, headers): | |
2056 | return webpage # for Verystream, the webpage is already decrypted |