Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't download Twitch VOD #6628

Closed
Joker-vD opened this issue Aug 20, 2015 · 15 comments
Closed

Can't download Twitch VOD #6628

Joker-vD opened this issue Aug 20, 2015 · 15 comments

Comments

@Joker-vD
Copy link

@Joker-vD Joker-vD commented Aug 20, 2015

Here is the output:

c:\Python27\Scripts>youtube-dl.exe --verbose --hls-prefer-native http://www.twitch.tv/totalbiscuit/v/11720328
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'--verbose', u'--hls-prefer-native', u'http://www.twitch.tv/totalbiscuit/v/11720328']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.08.16.1
[debug] Git HEAD: f738dd7
[debug] Python version 2.7.9 - Windows-7-6.1.7601-SP1
[debug] exe versions: none
[debug] Proxy map: {}
[twitch:vod] 11720328: Downloading vod info JSON
[twitch:vod] 11720328: Downloading vod access token
[twitch:vod] 11720328: Downloading m3u8 information
ERROR: Failed to download m3u8 information: HTTP Error 403: ERROR (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are
 using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "c:\users\joker\documents\pip\youtube-dl\youtube_dl\extractor\common.py", line 326, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "c:\users\joker\documents\pip\youtube-dl\youtube_dl\YoutubeDL.py", line 1860, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "C:\Python27\lib\urllib2.py", line 437, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
@dstftw
Copy link
Collaborator

@dstftw dstftw commented Aug 21, 2015

Can you watch it in browser?

@Joker-vD
Copy link
Author

@Joker-vD Joker-vD commented Aug 21, 2015

Yes, I can. This exact error happends regardless whether I supply Twitch credentials or not.

@dstftw
Copy link
Collaborator

@dstftw dstftw commented Aug 21, 2015

I'm getting the same 403 in browser:

<table border="1"><tr><td><b>url</b></td><td>/vod/11720328?nauth=%7B%22user_id%22%3Anull%2C%22vod_id%22%3A11720328%2C%22expires%22%3A1440268197%2C%22chansub%22%3A%7B%22restricted_bitrates%22%3A%5B%22audio_only%22%2C%22medium%22%2C%22mobile%22%2C%22high%22%2C%22low%22%2C%22chunked%22%5D%7D%2C%22privileged%22%3Afalse%7D&amp;nauthsig=38e16cb533d2f3c6b5e597c0dff3bbc9e15ad6a2&amp;allow_source=true</td></tr>
<tr><td><b>type</b></td><td>error</td></tr>
<tr><td><b>error</b></td><td>All formats are restricted</td></tr></table>
@Joker-vD
Copy link
Author

@Joker-vD Joker-vD commented Aug 21, 2015

Well, If I logout in browser, I can see "?nauth" request in console with 403 response, too. Apparently that's because this VoD is subscribers-only?

@dstftw
Copy link
Collaborator

@dstftw dstftw commented Aug 21, 2015

I don't know, there is no indication of that. It should work with login and password provided. Post the output of youtube-dl -u login -p pass --dump-pages http://www.twitch.tv/totalbiscuit/v/11720328.

@Joker-vD
Copy link
Author

@Joker-vD Joker-vD commented Aug 21, 2015

[twitch:vod] Downloading login page
[twitch:vod] Dumping request to https://secure.twitch.tv/login
Cgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iIGRhdGEtcGFzc3BvcnQtdmVyc2lvbj0iMiI+CjxoZWFkPgoJPG1ldGEgY2hhcnNldD0idXRmLTgiPgoJPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KCTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CgkKCTxsaW5rIGhyZWY9Ii9hc3NldHMvY3NzL3N0eWxlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KCgkKCTxzY3JpcHQgc3JjPSdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/aGw9ZW4nPjwvc2NyaXB0PgoKCQoJCgkKCiAgICA8dGl0bGU+TG9naW48L3RpdGxlPgo8L2hlYWQ+Cjxib2R5IGNsYXNzPSJrcmFrZW4tcGFnZSI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyIiByb2xlPSJtYWluIj4KICAgIDxkaXYgY2xhc3M9ImF1dGhvcml6ZSI+CiAgICAgIDxkaXYgY2xhc3M9IndyYXAiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciBjbGVhcmZpeCI+CiAgICAgICAgICA8YSBocmVmPSIvIiBpZD0iaGVhZGVyX2xvZ28iPgogICAgICAgICAgICA8c3ZnIGNsYXNzPSJzdmctbG9nb190d2l0Y2giIGhlaWdodD0iMzJweCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgOTQgMzIiIHdpZHRoPSI5NHB4IiB4PSIwcHgiIHk9IjBweCI+CiAgICAgICAgICAgICAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNODgsNWgtNlYwaC05bC02LDVoLTUuNUw1OSw3LjVWNWgtNVYwSDM2djVIMTZsLTUtNUgwdjIybDUsNS4yNUwxNCwzMmg2di0xLjVsMywxLjVoMTJsMi0zbDEsM2g3di0zbDMsM2g4bDAuNS0zbDIuNSwzaDEwbDMtM3YzaDRsMy0zdjNoN2w3LTZWMTBMODgsNXogTTEzLDEzSDh2Nmg1djZINmwtNC00VjJoNnY1aDVWMTN6IE0zNiwyMS41TDMyLjUsMjVIMTVWN2g2djEyaDJWN2g2djEyaDJWN2g1VjIxLjV6IE00NCwyNWgtNlY3aDZWMjV6IE00NCw1aC02VjJoNlY1eiBNNTcsMTNoLTV2Nmg1djZoLTdsLTQtNFYyaDZ2NWg1VjEzeiBNNzIsMTNoLTd2Nmg3djZoLTlsLTQtNFYxMWw0LTRoOVYxM3ogTTkxLDI1aC02VjEzaC01djEyaC02VjJoNnY1aDdsNCw0VjI1eiIgZmlsbC1ydWxlPSJldmVub2RkIj48L3BhdGg+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZmJfYnV0dG9uIGJ1dHRvbiIgZGlzYWJsZWQ+CiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNi45MzYgMEguOTlDLjQ0MiAwIDAgLjQ0MyAwIC45OXYxNS45NDZjMCAuNTQ3LjQ0My45OS45OS45OWg4LjU4NXYtNi45NDJINy4yNFY4LjI4aDIuMzM1VjYuMjgyYzAtMi4zMTUgMS40MTQtMy41NzYgMy40OC0zLjU3Ni45OSAwIDEuODQuMDc0IDIuMDg3LjEwN3YyLjQySDEzLjcxYy0xLjEyNCAwLTEuMzQyLjUzNC0xLjM0MiAxLjMxN3YxLjczaDIuNjhsLS4zNSAyLjcwNGgtMi4zM3Y2Ljk0Mmg0LjU2OGMuNTQ3IDAgLjk5LS40NDMuOTktLjk5Vi45OWMwLS41NDctLjQ0My0uOTktLjk5LS45OSIgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+CiAgICAgICAgICAgICAgICA8c3Bhbj5Db25uZWN0IHdpdGggRmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KICAgICAgICAgICAgICA8dWwgY2xhc3M9InRhYnMiPgogICAgICAgICAgICAgICAgPGxpIGlkPSJsb2dpbl90YWIiIGNsYXNzPSJ0YWIgc2VsZWN0ZWQiPjxhIGhyZWY9Imh0dHA6Ly93d3cudHdpdGNoLnR2L2xvZ2luIj5Mb2cgSW48L2E+PC9saT4KICAgICAgICAgICAgICAgIDxsaSBpZD0ic2lnbnVwX3RhYiIgY2xhc3M9InRhYiI+PGEgaHJlZj0iaHR0cDovL3d3dy50d2l0Y2gudHYvc2lnbnVwIj5TaWduIFVwPC9hPjwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgogICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvYXV0aGVudGljYXRpb25zL25ldyIgY2xhc3M9ImNvbC1tZC02IiBpZD0ibG9naW5Gb3JtIj4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2NvcGUiIHZhbHVlPSJvcGVuaWQiIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudF9pZCIgdmFsdWU9IjM2OTI2ODkyNDk1MzAxYTYzYjJlOTM1MGEzOGQzZDZkYmY3MmFkODFlNTcxYTNlYmJhNDY4NzI1MGVjOGYzNTJjNzBiM2U5MTIyOTYwMmY3M2UxMzM1NTI4ZjNjYWEwMGE1Y2Y1MTNmNDg0ZDcwMDM3ODRlNzIyZjJjZTdhMjE2IiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF91cmkiIHZhbHVlPSJodHRwczovL3NlY3VyZS50d2l0Y2gudHYvcGFzc3BvcnQvY2FsbGJhY2siIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlc3BvbnNlX3R5cGUiIHZhbHVlPSJjb2RlIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGF0ZSIgdmFsdWU9ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSklVekkxTmlKOS5leUp5WldScGNtVmpkRjl3WVhSb0lqb2lhSFIwY0RvdkwzZDNkeTUwZDJsMFkyZ3VkSFl2SW4wLmJ2Sm5teHl2bWVwQlY0Y3hkR2JOZXZNSmpfa2k0Y1RuME94bUpCeThMa2MiIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im5vbmNlIiB2YWx1ZT0iNGM5MDE0MmM2ZTcyNGEwN2JhZWU1N2RjNzljNGRiZjZkMTZjMjVjYSIgLz4KCgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIGl0ZW0iPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJsb2dpbiI+VXNlcm5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibG9naW4iIGNsYXNzPSJ0ZXh0IiB2YWx1ZT0iIiBhdXRvZm9jdXMgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkIGl0ZW0iPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwYXNzd29yZCI+UGFzc3dvcmQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiBjbGFzcz0idGV4dCIgLz4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscCBzdWIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cudHdpdGNoLnR2L3VzZXIvcmVzZXRfcGFzc3dvcmQiIGNsYXNzPSJzbWFsbCIgPlRyb3VibGUgbG9nZ2luZyBpbj88L2E+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidXR0b24gcHJpbWFyeSBqcy1sb2dpbi1idXR0b24iIHZhbHVlPSJMb2cgSW4iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBpZD0iZm9vdGVyIj48L2Rpdj4KICAgICAgCiAgICAgIDxkaXYgaWQ9ImZiLXJvb3QiPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS4xMS4wL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3BhcnNsZXkuanMvMi4wLjAvcGFyc2xleS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pxdWVyeS1ub3R5LzIuMy41L2pxdWVyeS5ub3R5LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnktbm90eS8yLjMuNS9sYXlvdXRzL3RvcC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanF1ZXJ5LW5vdHkvMi4zLjUvdGhlbWVzL3JlbGF4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIvYXNzZXRzL2pzL3RyYW5zbGF0aW9ucy9lbi5qcyI+PC9zY3JpcHQ+CgogIDxzY3JpcHQgc3JjPSIvYXNzZXRzL2pzL2ZhY2Vib29rLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iL2Fzc2V0cy9qcy9hdXRob3JpemUuanMiPjwvc2NyaXB0Pgo8L2JvZHk+Cg==
[twitch:vod] Logging in as Joker_vD
[twitch:vod] Dumping request to https://secure.twitch.tv/authentications/new
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9J2VuJyBzdHlsZT0nb3ZlcmZsb3c6IGhpZGRlbjsnIHhtbDpsYW5nPSdlbicgeG1sbnM6ZmI9J2h0dHA6Ly93d3cuZmFjZWJvb2suY29tLzIwMDgvZmJtbCcgeG1sbnM6b2c9J2h0dHA6Ly9vcGVuZ3JhcGhwcm90b2NvbC5vcmcvc2NoZW1hLycgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCIgLz4KPHRpdGxlPlR3aXRjaDwvdGl0bGU+CjxtZXRhIGNvbnRlbnQ9J0lFPWVkZ2UsY2hyb21lPTEnIGh0dHAtZXF1aXY9J1gtVUEtQ29tcGF0aWJsZSc+CjxtZXRhIGNvbnRlbnQ9J2FwcC1pZD00NjAxNzczOTYsIGFwcC1hcmd1bWVudD10d2l0Y2g6Ly9vcGVuJyBuYW1lPSdhcHBsZS1pdHVuZXMtYXBwJz4KPG1ldGEgY29udGVudD0nVHdpdGNoJyBuYW1lPSdkZXNjcmlwdGlvbic+CjxsaW5rIGhyZWY9Jy9mYXZpY29uLmljbycgcmVsPSdzaG9ydGN1dCBpY29uJyB0eXBlPSdpbWFnZS94LWljb24nPgo8bWV0YSBjb250ZW50PSduZnNaZDM4WlY4M1Q2TWRqQXNMaHdkY1FIUFQzSGtpZGNURUxaa1Z4RTNrJyBuYW1lPSdnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24nPgo8bGluayBocmVmPSdodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8xMTU0NjMxMDY4MzE4NzA3MDM0MzEnIHJlbD0ncHVibGlzaGVyJz4KPG1ldGEgY29udGVudD0nVHdpdGNoJyBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJz4KPG1ldGEgY29udGVudD0nVHdpdGNoJyBwcm9wZXJ0eT0nb2c6dGl0bGUnPgo8bWV0YSBjb250ZW50PSJUd2l0Y2ggaXMgdGhlIHdvcmxkJ3MgbGVhZGluZyB2aWRlbyBwbGF0Zm9ybSBhbmQgY29tbXVuaXR5IGZvciBnYW1lcnMuIiBwcm9wZXJ0eT0nb2c6ZGVzY3JpcHRpb24nPgo8bWV0YSBjb250ZW50PSdodHRwOi8vd3d3LWNkbi5qdHZudy5uZXQvaW1hZ2VzL3R3aXRjaF9sb2dvMy5qcGcnIHByb3BlcnR5PSdvZzppbWFnZSc+CjxtZXRhIGNvbnRlbnQ9J2h0dHA6Ly93d3cudHdpdGNoLnR2L2F1dGhlbnRpY2F0aW9ucycgcHJvcGVydHk9J29nOnVybCc+CjxtZXRhIGNvbnRlbnQ9J3dlYnNpdGUnIHByb3BlcnR5PSdvZzp0eXBlJz4KPG1ldGEgY29udGVudD0nQHR3aXRjaCcgcHJvcGVydHk9J3R3aXR0ZXI6c2l0ZSc+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCndpbmRvdy5TaXRlT3B0aW9ucyA9IHsiZGVwbG95X2ZsYXZvciI6InByb2R1Y3Rpb24iLCJyZWNhcHRjaGFfcHVibGljX2tleSI6IjZMZkJGd01UQUFBQUFOUFNsMXFNUVYwMkpTbUVURjBlMTJuWEZKM2QiLCJ0d2l0Y2hfYXBpX2hvc3Rwb3J0IjoiYXBpLnR3aXRjaC50diIsInR3aXRjaF9zZWN1cmVfbG9naW5faG9zdHBvcnQiOiJzZWN1cmUtbG9naW4udHdpdGNoLnR2IiwidHdpdGNoX2Nkbl9ob3N0cG9ydCI6Ind3dy1jZG4uanR2bncubmV0Iiwid3d3X2hvc3Rwb3J0Ijoid3d3LnR3aXRjaC50diIsInNlY3VyZV93d3dfaG9zdHBvcnQiOiJzZWN1cmUudHdpdGNoLnR2IiwiY2RuX2hvc3Rwb3J0Ijoid3d3LWNkbi5qdHZudy5uZXQiLCJhcGlfaG9zdHBvcnQiOiJhcGkudHdpdGNoLnR2Iiwid2ViY2xpZW50X2hvc3Rwb3J0Ijoid2ViLWNkbi50dHZudy5uZXQiLCJzZWN1cmVfbG9naW5faG9zdHBvcnQiOiJzZWN1cmUtbG9naW4udHdpdGNoLnR2IiwibWl4cGFuZWxfdG9rZW4iOiI4MDk1NzY0Njg1NzIxMzRmOTA5ZGZmYTZiZDBkY2ZjZiIsImZvbGxvd2luZ19ob3N0c19leHBlcmltZW50Ijp0cnVlLCJlbmFibGVfcm9sbGJhcl9qcyI6ZmFsc2UsImN1cnJlbnRfZXhwZXJpbWVudHMiOnt9LCJicm9hZGNhc3Rlcl9sYW5ndWFnZXMiOnsiZW4iOiJFbmdsaXNoIiwiemgiOiLkuK3mlociLCJ6aC1UVyI6IuS4reaWhyAo5Y+w54GjKSIsInpoLUhLIjoi5Lit5paHICjpppnmuK8pIiwiamEiOiLml6XmnKzoqp4iLCJrbyI6Iu2VnOq1reyWtCIsImVzIjoiRXNwYcOxb2wiLCJlcy1NWCI6IkVzcGHDsW9sIChNw6l4aWNvKSIsImZyIjoiRnJhbsOnYWlzIiwiZGUiOiJEZXV0c2NoIiwiaXQiOiJJdGFsaWFubyIsInB0IjoiUG9ydHVndcOqcyIsInB0LUJSIjoiUG9ydHVndcOqcyAoQnJhc2lsKSIsInN2IjoiU3ZlbnNrYSIsIm5vIjoiTm9yc2siLCJkYSI6IkRhbnNrIiwibmwiOiJOZWRlcmxhbmRzIiwiZmkiOiJTdW9taSIsInBsIjoiUG9sc2tpIiwicnUiOiLQoNGD0YHRgdC60LjQuSIsInRyIjoiVMO8cmvDp2UiLCJjcyI6IsSMZcWhdGluYSIsInNrIjoiU2xvdmVuxI1pbmEiLCJodSI6Ik1hZ3lhciIsImFyIjoi2KfZhNi52LHYqNmK2KkiLCJiZyI6ItCR0YrQu9Cz0LDRgNGB0LrQuCIsInRoIjoi4Lig4Liy4Lip4Liy4LmE4LiX4LiiIiwidmkiOiJUaeG6v25nIFZp4buHdCIsIm90aGVyIjoiT3RoZXIifSwiZGVmYXVsdF9ibGNfbGFuZ3VhZ2VzIjpbImphIiwia28iXSwiZW5hYmxlX2hvc3RfbW9kZSI6dHJ1ZSwiZGlzYWJsZV9ncm91cF9jaGF0IjpmYWxzZSwiZGlzYWJsZV9mb2xsb3dzX3NpZGVfcGFuZWwiOmZhbHNlLCJkaXNhYmxlX2ZvbGxvd2luZ19kaXJlY3RvcnkiOmZhbHNlLCJuZXdfY2hhdF9jbGllbnQiOnRydWUsIm5ld19jaGF0X2NsaWVudF9kYXJrbGF1bmNoX3JhbmdlIjoiMC0xMDAiLCJmaXJlYmFzZV9uYW1lc3BhY2UiOiJwcm9kdWN0aW9uIiwibG9hZF9tb3JlX29uX2ZvbGxvd3MiOnRydWUsImZvbGxvd2luZ192aWRlb3MiOnRydWUsImRmcF9zaWRlYmFyX2NoYW5uZWxfYWQiOnRydWUsImRmcF9mcF9zaXp6bGVzdHJpcCI6dHJ1ZSwiY2hhdF9kYXJrbGF1bmNoX3BjdCI6MS4wLCJkZnBfZXNsIjp0cnVlLCJkaXNhYmxlX3lvdXR1YmVfZXhwb3J0ZXIiOmZhbHNlLCJhd3NfYXJ0aWZpY2lhbF9sb2FkX2ZhY3RvciI6IjAiLCJ0YXhfbm90aWZpY2F0aW9uc19lbmFibGVkIjp0cnVlLCJtYWludGVuYW5jZV9tb2RlIjpmYWxzZSwiZW5hYmxlX3ZvZF9hcHBlYWxzIjp0cnVlLCJkb3RhX2ludGVybmF0aW9uYWxfcGFuZWxfd2hpdGVsaXN0Ijoie1wiZG90YTJ0aVwiIDogXCJlblwiLCBcImRvdGEydGlfcnVcIiA6IFwicnVcIiwgXCJkb3RhMnRpX2NuXCIgOiBcImNuXCIsIFwiZG90YTJ0aV9uZXdjb21lclwiIDogXCJlblwiLCBcImNoaXJhc2hpaVwiIDogXCJlblwiLCBcImNvZHltYTFcIiA6IFwiZW5cIiwgXCJjaGFuZHltYW5cIiA6IFwiY25cIiwgXCJ0cmFuY2VcIiA6IFwiZW5cIiwgXCJyaWNoZWxsZXRlc3RcIiA6IFwiZW5cIn0iLCJicm9hZGNhc3RfbGFuZ3VhZ2VfY2hhdF9lbmFibGVkIjp0cnVlLCJ2aWRlb19leHBlcmltZW50cyI6IntcImFmMDNhNGQwLTg3NTQtNDQ4YS1hZWY2LTBhYTlkYWFiODYxZFwiOntcImdyb3Vwc1wiOlt7XCJ2YWx1ZVwiOlwiYnJhbmNoX2NvbnRyb2xcIixcIndlaWdodFwiOjcwfSx7XCJ2YWx1ZVwiOlwiYnJhbmNoX2V4cGVyaW1lbnRcIixcIndlaWdodFwiOjIwfSx7XCJ2YWx1ZVwiOlwiZXhwZXJpbWVudFwiLFwid2VpZ2h0XCI6MTB9XX0sXCJjZTUxNmM0Yy1lMDliLTQ3M2MtOTIyNC1kMTI1MTE2OGJmMmFcIjp7XCJncm91cHNcIjpbe1widmFsdWVcIjpcImNvbnRyb2xcIixcIndlaWdodFwiOjEwMH0se1widmFsdWVcIjpcImV4cGVyaW1lbnRcIixcIndlaWdodFwiOjB9XX0sXCJhNDYxZTJhMC04NDU3LTRjMTgtYmRhMS1kMDEzYzRjNmY4NGNcIjp7XCJncm91cHNcIjpbe1widmFsdWVcIjpcImNvbnRyb2xcIixcIndlaWdodFwiOjEwMH0se1widmFsdWVcIjpcImV4cGVyaW1lbnRcIixcIndlaWdodFwiOjB9XX19In07Ci8vXV0+Cjwvc2NyaXB0PgoKPGxpbmsgaHJlZj0iLy93d3ctY2RuLmp0dm53Lm5ldC9hc3NldHMvYXBwbGljYXRpb24tYWNlOGJiNDAyNzQxMzUzZjA2MmM3NjIyMGJmMmEyMDYuY3NzIiBtZWRpYT0ic2NyZWVuIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCndpbmRvdy5TaXRlT3B0aW9ucyA9IHsiZGVwbG95X2ZsYXZvciI6InByb2R1Y3Rpb24iLCJyZWNhcHRjaGFfcHVibGljX2tleSI6IjZMZkJGd01UQUFBQUFOUFNsMXFNUVYwMkpTbUVURjBlMTJuWEZKM2QiLCJ0d2l0Y2hfYXBpX2hvc3Rwb3J0IjoiYXBpLnR3aXRjaC50diIsInR3aXRjaF9zZWN1cmVfbG9naW5faG9zdHBvcnQiOiJzZWN1cmUtbG9naW4udHdpdGNoLnR2IiwidHdpdGNoX2Nkbl9ob3N0cG9ydCI6Ind3dy1jZG4uanR2bncubmV0Iiwid3d3X2hvc3Rwb3J0Ijoid3d3LnR3aXRjaC50diIsInNlY3VyZV93d3dfaG9zdHBvcnQiOiJzZWN1cmUudHdpdGNoLnR2IiwiY2RuX2hvc3Rwb3J0Ijoid3d3LWNkbi5qdHZudy5uZXQiLCJhcGlfaG9zdHBvcnQiOiJhcGkudHdpdGNoLnR2Iiwid2ViY2xpZW50X2hvc3Rwb3J0Ijoid2ViLWNkbi50dHZudy5uZXQiLCJzZWN1cmVfbG9naW5faG9zdHBvcnQiOiJzZWN1cmUtbG9naW4udHdpdGNoLnR2IiwibWl4cGFuZWxfdG9rZW4iOiI4MDk1NzY0Njg1NzIxMzRmOTA5ZGZmYTZiZDBkY2ZjZiIsImZvbGxvd2luZ19ob3N0c19leHBlcmltZW50Ijp0cnVlLCJlbmFibGVfcm9sbGJhcl9qcyI6ZmFsc2UsImN1cnJlbnRfZXhwZXJpbWVudHMiOnt9LCJicm9hZGNhc3Rlcl9sYW5ndWFnZXMiOnsiZW4iOiJFbmdsaXNoIiwiemgiOiLkuK3mlociLCJ6aC1UVyI6IuS4reaWhyAo5Y+w54GjKSIsInpoLUhLIjoi5Lit5paHICjpppnmuK8pIiwiamEiOiLml6XmnKzoqp4iLCJrbyI6Iu2VnOq1reyWtCIsImVzIjoiRXNwYcOxb2wiLCJlcy1NWCI6IkVzcGHDsW9sIChNw6l4aWNvKSIsImZyIjoiRnJhbsOnYWlzIiwiZGUiOiJEZXV0c2NoIiwiaXQiOiJJdGFsaWFubyIsInB0IjoiUG9ydHVndcOqcyIsInB0LUJSIjoiUG9ydHVndcOqcyAoQnJhc2lsKSIsInN2IjoiU3ZlbnNrYSIsIm5vIjoiTm9yc2siLCJkYSI6IkRhbnNrIiwibmwiOiJOZWRlcmxhbmRzIiwiZmkiOiJTdW9taSIsInBsIjoiUG9sc2tpIiwicnUiOiLQoNGD0YHRgdC60LjQuSIsInRyIjoiVMO8cmvDp2UiLCJjcyI6IsSMZcWhdGluYSIsInNrIjoiU2xvdmVuxI1pbmEiLCJodSI6Ik1hZ3lhciIsImFyIjoi2KfZhNi52LHYqNmK2KkiLCJiZyI6ItCR0YrQu9Cz0LDRgNGB0LrQuCIsInRoIjoi4Lig4Liy4Lip4Liy4LmE4LiX4LiiIiwidmkiOiJUaeG6v25nIFZp4buHdCIsIm90aGVyIjoiT3RoZXIifSwiZGVmYXVsdF9ibGNfbGFuZ3VhZ2VzIjpbImphIiwia28iXSwiZW5hYmxlX2hvc3RfbW9kZSI6dHJ1ZSwiZGlzYWJsZV9ncm91cF9jaGF0IjpmYWxzZSwiZGlzYWJsZV9mb2xsb3dzX3NpZGVfcGFuZWwiOmZhbHNlLCJkaXNhYmxlX2ZvbGxvd2luZ19kaXJlY3RvcnkiOmZhbHNlLCJuZXdfY2hhdF9jbGllbnQiOnRydWUsIm5ld19jaGF0X2NsaWVudF9kYXJrbGF1bmNoX3JhbmdlIjoiMC0xMDAiLCJmaXJlYmFzZV9uYW1lc3BhY2UiOiJwcm9kdWN0aW9uIiwibG9hZF9tb3JlX29uX2ZvbGxvd3MiOnRydWUsImZvbGxvd2luZ192aWRlb3MiOnRydWUsImRmcF9zaWRlYmFyX2NoYW5uZWxfYWQiOnRydWUsImRmcF9mcF9zaXp6bGVzdHJpcCI6dHJ1ZSwiY2hhdF9kYXJrbGF1bmNoX3BjdCI6MS4wLCJkZnBfZXNsIjp0cnVlLCJkaXNhYmxlX3lvdXR1YmVfZXhwb3J0ZXIiOmZhbHNlLCJhd3NfYXJ0aWZpY2lhbF9sb2FkX2ZhY3RvciI6IjAiLCJ0YXhfbm90aWZpY2F0aW9uc19lbmFibGVkIjp0cnVlLCJtYWludGVuYW5jZV9tb2RlIjpmYWxzZSwiZW5hYmxlX3ZvZF9hcHBlYWxzIjp0cnVlLCJkb3RhX2ludGVybmF0aW9uYWxfcGFuZWxfd2hpdGVsaXN0Ijoie1wiZG90YTJ0aVwiIDogXCJlblwiLCBcImRvdGEydGlfcnVcIiA6IFwicnVcIiwgXCJkb3RhMnRpX2NuXCIgOiBcImNuXCIsIFwiZG90YTJ0aV9uZXdjb21lclwiIDogXCJlblwiLCBcImNoaXJhc2hpaVwiIDogXCJlblwiLCBcImNvZHltYTFcIiA6IFwiZW5cIiwgXCJjaGFuZHltYW5cIiA6IFwiY25cIiwgXCJ0cmFuY2VcIiA6IFwiZW5cIiwgXCJyaWNoZWxsZXRlc3RcIiA6IFwiZW5cIn0iLCJicm9hZGNhc3RfbGFuZ3VhZ2VfY2hhdF9lbmFibGVkIjp0cnVlLCJ2aWRlb19leHBlcmltZW50cyI6IntcImFmMDNhNGQwLTg3NTQtNDQ4YS1hZWY2LTBhYTlkYWFiODYxZFwiOntcImdyb3Vwc1wiOlt7XCJ2YWx1ZVwiOlwiYnJhbmNoX2NvbnRyb2xcIixcIndlaWdodFwiOjcwfSx7XCJ2YWx1ZVwiOlwiYnJhbmNoX2V4cGVyaW1lbnRcIixcIndlaWdodFwiOjIwfSx7XCJ2YWx1ZVwiOlwiZXhwZXJpbWVudFwiLFwid2VpZ2h0XCI6MTB9XX0sXCJjZTUxNmM0Yy1lMDliLTQ3M2MtOTIyNC1kMTI1MTE2OGJmMmFcIjp7XCJncm91cHNcIjpbe1widmFsdWVcIjpcImNvbnRyb2xcIixcIndlaWdodFwiOjEwMH0se1widmFsdWVcIjpcImV4cGVyaW1lbnRcIixcIndlaWdodFwiOjB9XX0sXCJhNDYxZTJhMC04NDU3LTRjMTgtYmRhMS1kMDEzYzRjNmY4NGNcIjp7XCJncm91cHNcIjpbe1widmFsdWVcIjpcImNvbnRyb2xcIixcIndlaWdodFwiOjEwMH0se1widmFsdWVcIjpcImV4cGVyaW1lbnRcIixcIndlaWdodFwiOjB9XX19In07Ci8vXV0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iLy93d3ctY2RuLmp0dm53Lm5ldC9hc3NldHMvZ2xvYmFsLTBlZjY0MmMyMGNjMDI4NzRhZmUwMDhjMjYxZTkwY2EyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8bWV0YSBjb250ZW50PSchJyBuYW1lPSdmcmFnbWVudCc+CgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKCiAgICAoZnVuY3Rpb24oKSB7CiAgLy8gaGFzIHRvIGJlIHRoZSBzYW1lIGFzIGluIGxpYi90cmFuc2xhdGlvbnMucmIKICAvLyBhbmQgaW4gc2NyaXB0L3RyYW5zbGF0aW9ucy91cGRhdGVfdHJhbnNsYXRpb25zCiAgdmFyIG5vcm1fd3MgPSBmdW5jdGlvbihzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFxzXG4pKy9nLCAiICIpOwogIH07CgogIHZhciBfID0gZnVuY3Rpb24obXNnaWQpIHsKICAgIG5vcm1lZCA9IG5vcm1fd3MobXNnaWQpOwogICAgcmV0dXJuIF8ubXNnc1tub3JtZWRdIHx8IG5vcm1lZDsKICB9OwoKICBfLm1zZ3MgPSB7fTsKCiAgd2luZG93LmkxOG4gPSBfOwoKICB3aW5kb3cuYXZhaWxhYmxlTG9jYWxlcyA9IFsiYXIiLCJiZyIsImNzIiwiZGEiLCJkZSIsImVsIiwiZW4iLCJlcyIsImVzLW14IiwiZmkiLCJmciIsImh1IiwiaXQiLCJqYSIsImtvIiwibmwiLCJubyIsInBsIiwicHQiLCJwdC1iciIsInJ1Iiwic2siLCJzdiIsInRoIiwidHIiLCJ2aSIsInpoLWNuIiwiemgtdHciXQp9KSgpOwoKCi8vXV0+Cjwvc2NyaXB0Pgo8c2NyaXB0PgogIHdpbmRvdy50dFBhZ2VQcm9wZXJ0aWVzID0gbnVsbCB8fCB7fTsKICB3aW5kb3cuU2l0ZVBhZ2VUeXBlID0gbnVsbDsKPC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iLy93d3ctY2RuLmp0dm53Lm5ldC9hc3NldHMvZW1iZXJoZWxwZXItMzJlYzE1N2FkYTI5M2JlZjk1ZWM2MGFmZmVjMGU0OGYuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvL3dlYi1jZG4udHR2bncubmV0L2VtYmVyYXBwLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iLy93d3ctY2RuLmp0dm53Lm5ldC90bWlsaWJzL3RtaS12My5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHA6Ly9wbGF5ZXIudHdpdGNoLnR2L2pzL2VtYmVkLXYwLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cDovL3BsYXllci50d2l0Y2gudHYvanMvcGxheWVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8bGluayBocmVmPSJodHRwOi8vcGxheWVyLnR3aXRjaC50di9jc3MvcGxheWVyLmNzcyIgbWVkaWE9InNjcmVlbiIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPGRpdiBpZD0nbGFuZ3VhZ2VzX3BvcHVwJyBzdHlsZT0nZGlzcGxheTogbm9uZSc+CjxkaXYgY2xhc3M9J2Ryb3BtZW51X3RvZ2dsZWQgcmlnaHQgc3RlbScgaWQ9J2xhbmd1YWdlc19zdGVtJz4KPGEgY2xhc3M9Im1haW4iIGhyZWY9IiMiIG9uY2xpY2s9IjsgcmV0dXJuIGZhbHNlOyI+TGFuZ3VhZ2U8L2E+CjxidXR0b24gY2xhc3M9J2Ryb3BtZW51X3RvZ2dsZWRfYXJyb3cgcGllY2UgY2xvc2UnIGlkPSdsYW5ndWFnZXNfZHJvcG1lbnVfdG9nZ2xlZF9hcnJvdyc+PC9idXR0b24+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdkcm9wbWVudSBzaXRlX2hlYWRlciBtZW51LWxpa2UnIGlkPSdoZWFkZXJfbGFuZ3VhZ2VfZHJvcG1lbnUnPgo8ZGl2IGNsYXNzPSdkcm9wbWVudV9saW5rc19jb250YWluZXIgY2xlYXJmaXgnPgo8dWwgY2xhc3M9J2Ryb3BtZW51X2NvbCBkcm9wbWVudV9sZWZ0IGxhbmd1YWdlX2NvbCBsZWZ0Jz4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnZGEnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnZGEnKTsiPjxzcGFuPkRhbnNrPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdkZScpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdkZScpOyI+PHNwYW4+RGV1dHNjaDwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnZW4nKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnZW4nKTsiPjxzcGFuPkVuZ2xpc2g8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ2VzJyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ2VzJyk7Ij48c3Bhbj5Fc3Bhw7FvbDwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnZXMtbXgnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnZXMtbXgnKTsiPjxzcGFuPkVzcGHDsW9sIC0gTcOpeGljbzwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnZnInKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnZnInKTsiPjxzcGFuPkZyYW7Dp2Fpczwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnaXQnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnaXQnKTsiPjxzcGFuPkl0YWxpYW5vPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdodScpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdodScpOyI+PHNwYW4+TWFneWFyPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdubCcpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdubCcpOyI+PHNwYW4+TmVkZXJsYW5kczwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnbm8nKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnbm8nKTsiPjxzcGFuPk5vcnNrPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdwbCcpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdwbCcpOyI+PHNwYW4+UG9sc2tpPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdwdCcpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdwdCcpOyI+PHNwYW4+UG9ydHVndcOqczwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgncHQtYnInKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgncHQtYnInKTsiPjxzcGFuPlBvcnR1Z3XDqnMgQnJhc2lsZWlybzwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnc2snKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnc2snKTsiPjxzcGFuPlNsb3ZlbsSNaW5hPC9zcGFuPjwvYT48L2xpPgo8L3VsPgo8dWwgY2xhc3M9J2Ryb3BtZW51X2NvbCBkcm9wbWVudV9yaWdodCBsYW5ndWFnZV9jb2wnPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCdmaScpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCdmaScpOyI+PHNwYW4+U3VvbWk8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ3N2Jyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ3N2Jyk7Ij48c3Bhbj5TdmVuc2thPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCd2aScpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCd2aScpOyI+PHNwYW4+VGnhur9uZyBWaeG7h3Q8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ3RyJyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ3RyJyk7Ij48c3Bhbj5Uw7xya8OnZTwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnY3MnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnY3MnKTsiPjxzcGFuPsSMZcWhdGluYTwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnZWwnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnZWwnKTsiPjxzcGFuPs6VzrvOu863zr3Ouc66zqw8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ2JnJyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ2JnJyk7Ij48c3Bhbj7QkdGK0LvQs9Cw0YDRgdC60Lg8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ3J1Jyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ3J1Jyk7Ij48c3Bhbj7QoNGD0YHRgdC60LjQuTwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnYXInKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnYXInKTsiPjxzcGFuPtin2YTYudix2KjZitipPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCd0aCcpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCd0aCcpOyI+PHNwYW4+4Lig4Liy4Lip4Liy4LmE4LiX4LiiPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0ibGFuZ3VhZ2UiIG9uY2xpY2s9IlR3aXRjaC5sYW5ndWFnZS5zZXRCeUFzeW5jUHV0KCd6aC1jbicpOyBUd2l0Y2gubGFuZ3VhZ2Uuc2V0Q29va2llQW5kUmVsb2FkKCd6aC1jbicpOyI+PHNwYW4+5Lit5paHIOeugOS9kzwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9Imxhbmd1YWdlIiBvbmNsaWNrPSJUd2l0Y2gubGFuZ3VhZ2Uuc2V0QnlBc3luY1B1dCgnemgtdHcnKTsgVHdpdGNoLmxhbmd1YWdlLnNldENvb2tpZUFuZFJlbG9hZCgnemgtdHcnKTsiPjxzcGFuPuS4reaWhyDnuYHpq5Q8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ2phJyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ2phJyk7Ij48c3Bhbj7ml6XmnKzoqp48L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJsYW5ndWFnZSIgb25jbGljaz0iVHdpdGNoLmxhbmd1YWdlLnNldEJ5QXN5bmNQdXQoJ2tvJyk7IFR3aXRjaC5sYW5ndWFnZS5zZXRDb29raWVBbmRSZWxvYWQoJ2tvJyk7Ij48c3Bhbj7tlZzqta3slrQ8L3NwYW4+PC9hPjwvbGk+CjwvdWw+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0IGlkPSdnYW1lc2VsZWN0b3ItZ2FtZScgdHlwZT0ndGV4dC9odG1sJz4KPGxpIGNsYXNzPSdnYW1lJz4KPGEgY2xhc3M9J2dhbWVsaW5rJz4KPHNwYW4gY2xhc3M9J2dhbWVfbWV0YSc+CjxzcGFuIGNsYXNzPSduYW1lJz57e25hbWV9fTwvc3Bhbj4KPHNwYW4gY2xhc3M9J2NoYW5uZWxzJz57e2NoYW5uZWxfY291bnR9fTwvc3Bhbj4KPC9zcGFuPgo8L2E+CjwvbGk+Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0na2V5YmluZHMnIHR5cGU9J3RleHQvaHRtbCc+CjxkaXYgY2xhc3M9J2NhcmQnPgo8ZGl2IGNsYXNzPSd0ZXh0LWNvbnRlbnQnPgo8ZGl2IGNsYXNzPSdjb250ZW50LWhlYWRlcic+CjxoND5LZXlib2FyZCBTaG9ydGN1dHM8L2g0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0naXRlbScgaWQ9J2tleWJpbmRzX3BvcHVwJz4KPGRpdiBjbGFzcz0na2V5YmluZCc+CjxkaXYgY2xhc3M9J2tleSc+YWx0PC9kaXY+CjxzcGFuIGNsYXNzPSdwbHVzJz4rPC9zcGFuPgo8ZGl2IGNsYXNzPSdrZXknPmM8L2Rpdj4KPHNwYW4gY2xhc3M9J2xhYmVsJz5DZW50ZXIgQnJvYWRjYXN0IFBsYXllcjwvc3Bhbj4KPC9kaXY+CjxkaXYgY2xhc3M9J2tleWJpbmQnPgo8ZGl2IGNsYXNzPSdrZXknPmFsdDwvZGl2Pgo8c3BhbiBjbGFzcz0ncGx1cyc+Kzwvc3Bhbj4KPGRpdiBjbGFzcz0na2V5Jz5FbnRlcjwvZGl2Pgo8c3BhbiBjbGFzcz0nbGFiZWwnPkNoYXQgRmllbGQgRm9jdXM8L3NwYW4+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdrZXliaW5kJz4KPGRpdiBjbGFzcz0na2V5Jz5hbHQ8L2Rpdj4KPHNwYW4gY2xhc3M9J3BsdXMnPis8L3NwYW4+CjxkaXYgY2xhc3M9J2tleSc+bDwvZGl2Pgo8c3BhbiBjbGFzcz0nbGFiZWwnPkxlZnQgQ29sdW1uIE9wZW4vQ2xvc2U8L3NwYW4+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdrZXliaW5kJz4KPGRpdiBjbGFzcz0na2V5Jz5hbHQ8L2Rpdj4KPHNwYW4gY2xhc3M9J3BsdXMnPis8L3NwYW4+CjxkaXYgY2xhc3M9J2tleSc+cjwvZGl2Pgo8c3BhbiBjbGFzcz0nbGFiZWwnPlJpZ2h0IENvbHVtbiBPcGVuL0Nsb3NlPC9zcGFuPgo8L2Rpdj4KPGRpdiBjbGFzcz0na2V5YmluZCc+CjxkaXYgY2xhc3M9J2tleSc+YWx0PC9kaXY+CjxzcGFuIGNsYXNzPSdwbHVzJz4rPC9zcGFuPgo8ZGl2IGNsYXNzPSdrZXknPm08L2Rpdj4KPHNwYW4gY2xhc3M9J2xhYmVsJz5DcmVhdGUgQm9va21hcms8L3NwYW4+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdrZXliaW5kJz4KPGRpdiBjbGFzcz0na2V5Jz5hbHQ8L2Rpdj4KPHNwYW4gY2xhc3M9J3BsdXMnPis8L3NwYW4+CjxkaXYgY2xhc3M9J2tleSc+dDwvZGl2Pgo8c3BhbiBjbGFzcz0nbGFiZWwnPlRoZWF0ZXIgTW9kZTwvc3Bhbj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9J21vZGFsLWNsb3NlLWJ1dHRvbicgaWQ9J3N1YndpbmRvd19jbG9zZSc+CjxzdmcgY2xhc3M9J3N2Zy1jbG9zZScgaGVpZ2h0PScxNnB4JyB2ZXJzaW9uPScxLjEnIHZpZXdib3g9JzAgMCAxNiAxNicgd2lkdGg9JzE2cHgnIHg9JzBweCcgeT0nMHB4Jz4KPHBhdGggY2xpcC1ydWxlPSdldmVub2RkJyBkPSdNMTMuNjU3LDMuNzU3TDkuNDE0LDhsNC4yNDMsNC4yNDJsLTEuNDE1LDEuNDE1TDgsOS40MTRsLTQuMjQzLDQuMjQzbC0xLjQxNC0xLjQxNUw2LjU4Niw4TDIuMzQzLDMuNzU3bDEuNDE0LTEuNDE0TDgsNi41ODZsNC4yNDItNC4yNDNMMTMuNjU3LDMuNzU3eicgZmlsbC1ydWxlPSdldmVub2RkJz48L3BhdGg+Cjwvc3ZnPgo8L2Rpdj4KCjwvc2NyaXB0Pgo8c2NyaXB0IGlkPSdzbWFsbF9zZWFyY2gnIHR5cGU9J3RleHQvaHRtbCc+Cjxmb3JtIGFjdGlvbj0nL3NlYXJjaCcgaWQ9J3NpZGViYXJfc2VhcmNoX3NtYWxsJyBtZXRob2Q9J2dldCc+CjxpbnB1dCBhdXRvY29tcGxldGU9J29mZicgY2xhc3M9J3NlYXJjaF9pbnB1dCcgaWQ9J3NpZGViYXJfcXVlcnlfc21hbGwnIG5hbWU9J3F1ZXJ5JyBwbGFjZWhvbGRlcj0nU2VhcmNoJyB0YWJpbmRleD0nOTknPgo8L2Zvcm0+Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0nc21hbGxfbW9yZScgdHlwZT0ndGV4dC9odG1sJz4KPGRpdiBjbGFzcz0nbGlua2xpc3QnPgo8YSBocmVmPScvcC9hYm91dCc+QWJvdXQ8L2E+CjxhIGhyZWY9J2h0dHA6Ly9ibG9nLnR3aXRjaC50dic+QmxvZzwvYT4KPGEgaHJlZj0naHR0cDovL2hlbHAudHdpdGNoLnR2Jz5IZWxwPC9hPgo8YSBocmVmPSdodHRwOi8vd3d3LnR3aXRjaC50di9wL2RldmVsb3BlcnMnPkRldmVsb3BlcnM8L2E+CjxhIGhyZWY9Jy9wL3BhcnRuZXJzJz5QYXJ0bmVyczwvYT4KPGEgaHJlZj0naHR0cDovL3R3aXRjaG1lZGlhZ3JvdXAuY29tLyc+QWR2ZXJ0aXNlcnM8L2E+CjxhIGhyZWY9Jy9qb2JzJz5Kb2JzPC9hPgo8YSBjbGFzcz0nZXh0cmEtZm9vdGVyLWxpbmsnIGhyZWY9Jy9wL3ByZXNzJz5QcmVzczwvYT4KPGEgY2xhc3M9J2V4dHJhLWZvb3Rlci1saW5rJyBocmVmPScvdXNlci9sZWdhbD9wYWdlPXRlcm1zX29mX3NlcnZpY2UnPlRlcm1zPC9hPgo8YSBjbGFzcz0nZXh0cmEtZm9vdGVyLWxpbmsnIGhyZWY9Jy91c2VyL2xlZ2FsP3BhZ2U9cHJpdmFjeV9wb2xpY3knPlByaXZhY3kgUG9saWN5PC9hPgo8YSBjbGFzcz0nZXh0cmEtZm9vdGVyLWxpbmsnIGhyZWY9Jy91c2VyL2xlZ2FsP3BhZ2U9YWRfY2hvaWNlcyc+QWQgQ2hvaWNlczwvYT4KPGEgY2xhc3M9J2V4dHJhLWZvb3Rlci1saW5rJyBocmVmPScvdXNlci9sZWdhbD9wYWdlPWNvb2tpZV9wb2xpY3knPkNvb2tpZSBQb2xpY3k8L2E+Cgo8L2Rpdj4KCjwvc2NyaXB0Pgo8c2NyaXB0IGlkPSdzbWFsbF9hY2NvdW50JyB0eXBlPSd0ZXh0L2h0bWwnPgo8ZGl2IGNsYXNzPSdhY2NvdW50X2FjdGlvbnMnPgo8YSBocmVmPScve3t1c2VyfX0nIGlkPSdzZWxmX2NoYW5uZWwnPkNoYW5uZWw8L2E+CjxhIGhyZWY9Jy97e3VzZXJ9fS9wcm9maWxlJyBpZD0nc2VsZl92aWRlb3MnPlByb2ZpbGU8L2E+CjxhIGhyZWY9Jy9kYXNoYm9hcmQnIGlkPSdzZWxmX2Rhc2hib2FyZCc+RGFzaGJvYXJkPC9hPgo8YSBocmVmPScvbWVzc2FnZXMvaW5ib3gnIGlkPSdzZWxmX21lc3NhZ2VzJz5NZXNzYWdlczwvYT4KPGEgaHJlZj0nL3NldHRpbmdzJyBpZD0nc2VsZl9zZXR0aW5ncyc+U2V0dGluZ3M8L2E+Cjxmb3JtIGFjdGlvbj0nL2xvZ291dCcgaWQ9J2xvZ291dF9mb3JtJyBtZXRob2Q9J3Bvc3QnPgo8YSBjbGFzcz0nanMtbG9nb3V0X2xpbmsnIGhyZWY9Jy9sb2dvdXQnIGlkPSdzZWxmX2xvZ291dCc+TG9nb3V0PC9hPgo8L2Zvcm0+CjwvZGl2PgoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9J2ltYWdlX3VwbG9hZF9mb3JtJyB0eXBlPSd0ZXh0L2h0bWwnPgo8ZGl2IGNsYXNzPSdjYXJkIGNoYW5nZS1iYW5uZXInPgo8ZGl2IGNsYXNzPSd0ZXh0LWNvbnRlbnQnPgo8ZGl2IGNsYXNzPSdjb250ZW50LWhlYWRlcic+CjxoND5Qcm9maWxlIEJhbm5lcjwvaDQ+CjwvZGl2Pgo8Zm9ybSBhY3Rpb249J3t7aHJlZn19JyBjbGFzcz0nanMtcHJvZmlsZS1iYW5uZXItZm9ybScgaWQ9J3Byb2ZpbGVfYmFubmVyX2Zvcm0nPgo8ZGl2IGNsYXNzPSdpdGVtJz4KPGRpdiBjbGFzcz0nYmFubmVyLXByZXZpZXcganMtcHJldmlldy1jb250YWluZXInPgo8ZGl2IGNsYXNzPSdwcm9maWxlLXBpYy1zYW1wbGUnPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwcm9maWxlLWluZm8tYmFubmVyJz48L2Rpdj4KPGltZyBjbGFzcz0nanMtaW1hZ2UtdXBsb2FkLXByZXZpZXcnPgo8L2Rpdj4KPGRpdiBjbGFzcz0nYWRkX2ltYWdlIGJ1dHRvbiBwcmltYXJ5Jz4KPHNwYW4+VXBsb2FkIEltYWdlPC9zcGFuPgo8aW5wdXQgY2xhc3M9J2ZpbGUgYWpheF9pbWFnZSBqcy1hZGQtaW1hZ2UnIHR5cGU9J2ZpbGUnPgo8L2Rpdj4KPGRpdiBjbGFzcz0nYnV0dG9uIGpzLXJlbW92ZS1pbWFnZSc+CjxzcGFuPlJlbW92ZSBJbWFnZTwvc3Bhbj4KPC9kaXY+CjxpbnB1dCBjbGFzcz0nanMtY29sb3ItcGlja2VyJz4KPGRpdiBjbGFzcz0nc3ViJz5XZSByZWNvbW1lbmQgYW4gaW1hZ2Ugc2l6ZSBvZiA5MDB4NDgwPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdidXR0b25zJz4KPGEgY2xhc3M9J2pzLXN1YndpbmRvdy1jbG9zZSBidXR0b24nPgo8c3Bhbj5DYW5jZWw8L3NwYW4+CjwvYT4KPGJ1dHRvbiBjbGFzcz0ncHJpbWFyeSBidXR0b24nPgo8c3Bhbj5Eb25lPC9zcGFuPgo8L2J1dHRvbj4KPC9kaXY+CjwvZm9ybT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdtb2RhbC1jbG9zZS1idXR0b24ganMtc3Vid2luZG93LWNsb3NlJz4KPHN2ZyBjbGFzcz0nc3ZnLWNsb3NlJyBoZWlnaHQ9JzE2cHgnIHZlcnNpb249JzEuMScgdmlld2JveD0nMCAwIDE2IDE2JyB3aWR0aD0nMTZweCcgeD0nMHB4JyB5PScwcHgnPgo8cGF0aCBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xMy42NTcsMy43NTdMOS40MTQsOGw0LjI0Myw0LjI0MmwtMS40MTUsMS40MTVMOCw5LjQxNGwtNC4yNDMsNC4yNDNsLTEuNDE0LTEuNDE1TDYuNTg2LDhMMi4zNDMsMy43NTdsMS40MTQtMS40MTRMOCw2LjU4Nmw0LjI0Mi00LjI0M0wxMy42NTcsMy43NTd6JyBmaWxsLXJ1bGU9J2V2ZW5vZGQnPjwvcGF0aD4KPC9zdmc+CjwvZGl2PgoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9J2Nyb3BfZm9ybV9idXR0b25zJyB0eXBlPSd0ZXh0L2h0bWwnPgo8ZGl2IGNsYXNzPSdidXR0b25zJz4KPGJ1dHRvbiBjbGFzcz0nanMtdXBsb2FkIHByaW1hcnkgYnV0dG9uJz4KPHNwYW4+RG9uZTwvc3Bhbj4KPC9idXR0b24+CjxhIGNsYXNzPSdqcy1jYW5jZWwtdXBsb2FkIGJ1dHRvbic+CjxzcGFuPkNhbmNlbDwvc3Bhbj4KPC9hPgo8L2Rpdj4KCjwvc2NyaXB0Pgo8c2NyaXB0IGlkPSdhcmNoaXZlX3VwbG9hZF9tb2RhbCcgdHlwZT0ndGV4dC9odG1sJz4KPGRpdiBjbGFzcz0nYXJjaGl2ZS11cGxvYWRlciBjYXJkJz4KPGRpdiBjbGFzcz0ndGV4dC1jb250ZW50Jz4KPGRpdiBjbGFzcz0nY29udGVudC1oZWFkZXInPgo8aDQ+VXBsb2FkaW5nIFZpZGVvPC9oND4KPC9kaXY+Cjxmb3JtPgo8ZGl2IGNsYXNzPSdpdGVtJz4KPGxhYmVsPlZpZGVvIE5hbWU6PC9sYWJlbD4KPHA+e3tuYW1lfX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdpdGVtJz4KPGxhYmVsPlByb2dyZXNzOjwvbGFiZWw+CjxwIGlkPSd1cGxvYWQtcHJvZ3Jlc3MnPjwvcD4KPC9kaXY+CjwvZm9ybT4KPC9kaXY+CjwvZGl2PgoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9J3RheF9ub3RpZmljYXRpb25fYmFubmVyJyB0eXBlPSd0ZXh0L2h0bWwnPgo8ZGl2IGNsYXNzPSdjbGVhcmZpeCcgaWQ9J2NoYW5uZWwtcHJvbXB0Jz4KPGRpdiBjbGFzcz0nbWVzc2FnZSc+Cnt7I2luQmFkU3RhdGV9fQo8ZGl2IGNsYXNzPSd0aXRsZSc+Cnt7I3NlcnZpY2V9fQpBY3Rpb24gUmVxdWlyZWQgLSBTZXJ2aWNlcyBJbmNvbWUKe3svc2VydmljZX19Cnt7XnNlcnZpY2V9fQpBY3Rpb24gUmVxdWlyZWQKe3svc2VydmljZX19CjwvZGl2Pgp7ey9pbkJhZFN0YXRlfX0Ke3sjcm95YWx0eX19Cnt7I3BhcnRuZXJ9fQp7eyNzdWNjZXNzfX0KQ29uZ3JhdHVsYXRpb25zISBZb3VyIHRheCBkb2N1bWVudHMgYXJlIGNvbXBsZXRlLgp7ey9zdWNjZXNzfX0Ke3sjc3RhcnR9fQo8cD4KVGhlIGRlYWRsaW5lIHRvIHN1Ym1pdCB5b3VyIHRheCBkb2N1bWVudHMgaGFzIGV4cGlyZWQuIFBsZWFzZSBzdWJtaXQgeW91ciBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSBvciB5b3VyIHBheW1lbnRzIG1heSBiZSBzdWJqZWN0IHRvIFUuUy4gd2l0aGhvbGRpbmcgdGF4Lgo8L3A+CjxwPgpCeSBjbGlja2luZyBCZWdpbiwgeW91IHdpbGwgYmUgYXNrZWQgdG8gbG9naW4gYWdhaW4gYW5kIHRoZW4gcmVkaXJlY3RlZCB0byB0aGUgQW1hem9uIFRheCBJbmZvcm1hdGlvbiBJbnRlcnZpZXcuCjwvcD4KPHA+CklmIHlvdSBuZWVkIGFkZGl0aW9uYWwgYXNzaXN0YW5jZSwgcGxlYXNlIGVtYWlsIDxhIGhyZWY9Im1haWx0bzp0d2l0Y2h0YXhoZWxwQGFtYXpvbi5jb20iPnR3aXRjaHRheGhlbHBAYW1hem9uLmNvbTwvYT4uCjwvcD4KPHA+CldlIGFwb2xvZ2l6ZSBmb3IgYW55IGluY29udmVuaWVuY2UuCjxpbWcgY2xhc3M9J3NvcnJ5JyBzcmM9J2h0dHA6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEvODYvMS4wJz4KPC9wPgp7ey9zdGFydH19Cnt7I2ZhaWxlZH19CjxwPgpUaGUgdGF4IGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBmb3IgeW91ciBhY2NvdW50IGRvZXMgbm90IG1hdGNoIEludGVybmFsIFJldmVudWUgU2VydmljZSAoSVJTKSByZWNvcmRzLiBQbGVhc2UgcmV0YWtlIHRoZSB0YXggaW5mb3JtYXRpb24gaW50ZXJ2aWV3IGJ5IDxzdHJvbmc+QXVndXN0IDE1LCAyMDE1PC9zdHJvbmc+LCBvciB5b3UgbWF5IGJlIHN1YmplY3QgdG8gVS5TLiB3aXRoaG9sZGluZyB0YXguCjwvcD4KPHA+CkJ5IGNsaWNraW5nIEJlZ2luLCB5b3Ugd2lsbCBiZSBhc2tlZCB0byBsb2dpbiBhZ2FpbiBhbmQgdGhlbiByZWRpcmVjdGVkIHRvIHRoZSBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldy4KPC9wPgp7ey9mYWlsZWR9fQp7eyNtaXNzaW5nfX0KPHA+CllvdXIgdGF4IGRvY3VtZW50cyBhcmUgaW5jb21wbGV0ZS4gSWYgeW91IHNlbGVjdGVkIHRvIG1haWwtaW4gYSBwYXBlciBmb3JtLCB5b3UgbXVzdCBtYWlsIHlvdXIgZG9jdW1lbnRzIHRvIEFtYXpvbiBhcyBzb29uIGFzIHBvc3NpYmxlLiBCZSBzdXJlIHRvIGluY2x1ZGUg4oCcVHdpdGNo4oCdIG9uIHRoZSB0b3Agb2YgdGhlIGZvcm0sIGFsb25nIHdpdGggeW91ciBUd2l0Y2ggdXNlcm5hbWUgYW5kIHRoZSBlbWFpbCBhZGRyZXNzIHVzZWQgdG8gYWNjZXNzIHlvdXIgYWNjb3VudC4gVG8gZXhwZWRpdGUgdGhpcyBwcm9jZXNzLCB5b3UgY2FuIHJldGFrZSB0aGUgdGF4IGluZm9ybWF0aW9uIGludGVydmlldyBhdCBhbnkgdGltZSBhbmQgY29uc2VudCB0byBwcm92aWRlIGFuIGVsZWN0cm9uaWMgc2lnbmF0dXJlLiBQbGVhc2Ugc3VibWl0IHlvdXIgdGF4IGluZm9ybWF0aW9uIGJ5IDxzdHJvbmc+QXVndXN0IDE1LCAyMDE1PC9zdHJvbmc+IG9yIHlvdSBtYXkgYmUgc3ViamVjdCB0byBVLlMuIHdpdGhob2xkaW5nIHRheC4KPC9wPgo8cD4KQnkgY2xpY2tpbmcgQmVnaW4sIHlvdSB3aWxsIGJlIGFza2VkIHRvIGxvZ2luIGFnYWluIGFuZCB0aGVuIHJlZGlyZWN0ZWQgdG8gdGhlIEFtYXpvbiBUYXggSW5mb3JtYXRpb24gSW50ZXJ2aWV3Lgo8L3A+Cnt7L21pc3Npbmd9fQp7eyNub19mb3JtfX0KPHA+ClRoZSAzMCBkYXkgcGVyaW9kIHRvIG1haWwtaW4geW91ciBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldyBwYXBlciBmb3JtIGhhcyBwYXNzZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBtYWlsZWQgdGhlIHBhcGVyIGZvcm0gdG8gQW1hem9uIGF0IHRoZSBhZGRyZXNzIHByb3ZpZGVkLiBUbyBleHBlZGl0ZSB0aGlzIHByb2Nlc3MsIHlvdSBtYXkgcmV0YWtlIHRoZSB0YXggaW5mb3JtYXRpb24gaW50ZXJ2aWV3IGF0IGFueSB0aW1lIGFuZCBjb25zZW50IHRvIHByb3ZpZGUgYW4gZWxlY3Ryb25pYyBzaWduYXR1cmUuIElmIHlvdXIgdGF4IGluZm9ybWF0aW9uIGlzIG5vdCByZWNlaXZlZCBieSA8c3Ryb25nPkF1Z3VzdCAxNSwgMjAxNTwvc3Ryb25nPiwgeW91IG1heSBiZSBzdWJqZWN0IHRvIFUuUy4gd2l0aGhvbGRpbmcgdGF4Lgo8L3A+CjxwPgpCeSBjbGlja2luZyBCZWdpbiwgeW91IHdpbGwgYmUgYXNrZWQgdG8gbG9naW4gYWdhaW4gYW5kIHRoZW4gcmVkaXJlY3RlZCB0byB0aGUgQW1hem9uIFRheCBJbmZvcm1hdGlvbiBJbnRlcnZpZXcuCjwvcD4Ke3svbm9fZm9ybX19Cnt7I3JlcXVpcmVzX3N1YnN0YW50aWF0aW9ufX0KPHA+CllvdXIgdGF4IGRvY3VtZW50cyBhcmUgaW5jb21wbGV0ZS4gVGhlcmUgd2VyZSBzb21lIGRpc2NyZXBhbmNpZXMgd2l0aCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYW5kIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gUGxlYXNlIHVwbG9hZCB0aGUgcmVxdWlyZWQgZG9jdW1lbnRzIGJ5IDxzdHJvbmc+QXVndXN0IDE1LCAyMDE1PC9zdHJvbmc+IG9yIHlvdSBtYXkgYmUgc3ViamVjdCB0byBVLlMuIHdpdGhob2xkaW5nIHRheC4gVG8gdXBsb2FkIHRoZSByZXF1aXJlZCBkb2N1bWVudHMsIGNsaWNrIEJlZ2luIGF0IGFueSB0aW1lLiBJZiB5b3UgbmVlZCBhZGRpdGlvbmFsIGFzc2lzdGFuY2UsIHBsZWFzZSBlbWFpbCA8YSBocmVmPSJtYWlsdG86dHdpdGNodGF4aGVscEBhbWF6b24uY29tIj50d2l0Y2h0YXhoZWxwQGFtYXpvbi5jb208L2E+Lgo8L3A+Cnt7L3JlcXVpcmVzX3N1YnN0YW50aWF0aW9ufX0Ke3sjcGVuZGluZ319ClRoYW5rcyEgWW91ciB0YXggZG9jdW1lbnRzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgYXJlIHBlbmRpbmcgYXBwcm92YWwuCnt7L3BlbmRpbmd9fQp7ey9wYXJ0bmVyfX0Ke3sjb25ib2FyZGluZ319Cnt7I3N1Y2Nlc3N9fQpDb25ncmF0dWxhdGlvbnMhIFlvdXIgdGF4IGRvY3VtZW50cyBhcmUgY29tcGxldGUuCnt7L3N1Y2Nlc3N9fQp7eyNzdGFydH19CjxwPgpDb25ncmF0dWxhdGlvbnMhIFlvdXIgYXBwbGljYXRpb24gZm9yIHBhcnRuZXJzaGlwIGhhcyBiZWVuIGFwcHJvdmVkISBCZWZvcmUgeW91IGJlY29tZSBhIGZ1bGwtZmxlZGdlZCBwYXJ0bmVyLCB3ZSBuZWVkIHRvIGNvbGxlY3QgeW91ciB0YXggaW5mb3JtYXRpb24uCjwvcD4KPHA+CkJ5IGNsaWNraW5nIEJlZ2luLCB5b3Ugd2lsbCBiZSBhc2tlZCB0byBsb2dpbiBhZ2FpbiBhbmQgdGhlbiByZWRpcmVjdGVkIHRvIHRoZSBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldy4KPC9wPgo8cD4KSWYgeW91IG5lZWQgYWRkaXRpb25hbCBhc3Npc3RhbmNlLCBwbGVhc2UgZW1haWwgPGEgaHJlZj0ibWFpbHRvOnR3aXRjaHRheGhlbHBAYW1hem9uLmNvbSI+dHdpdGNodGF4aGVscEBhbWF6b24uY29tPC9hPi4KPC9wPgp7ey9zdGFydH19Cnt7I2ZhaWxlZH19CjxwPgpUaGUgdGF4IGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBmb3IgeW91ciBhY2NvdW50IGRvZXMgbm90IG1hdGNoIEludGVybmFsIFJldmVudWUgU2VydmljZSAoSVJTKSByZWNvcmRzLiBQbGVhc2UgcmV0YWtlIHRoZSB0YXggaW5mb3JtYXRpb24gaW50ZXJ2aWV3IHRvIGNvbXBsZXRlIHRoZSBQYXJ0bmVyIE9uYm9hcmRpbmcgcHJvY2Vzcy4KPC9wPgo8cD4KQnkgY2xpY2tpbmcgQmVnaW4sIHlvdSB3aWxsIGJlIGFza2VkIHRvIGxvZ2luIGFnYWluIGFuZCB0aGVuIHJlZGlyZWN0ZWQgdG8gdGhlIEFtYXpvbiBUYXggSW5mb3JtYXRpb24gSW50ZXJ2aWV3Lgo8L3A+Cnt7L2ZhaWxlZH19Cnt7I21pc3Npbmd9fQo8cD4KWW91ciB0YXggZG9jdW1lbnRzIGFyZSBpbmNvbXBsZXRlLiBJZiB5b3Ugc2VsZWN0ZWQgdG8gbWFpbC1pbiBhIHBhcGVyIGZvcm0sIHlvdSBtdXN0IG1haWwgeW91ciBkb2N1bWVudHMgdG8gQW1hem9uIGFzIHNvb24gYXMgcG9zc2libGUuIEJlIHN1cmUgdG8gaW5jbHVkZSDigJxUd2l0Y2jigJ0gb24gdGhlIHRvcCBvZiB0aGUgZm9ybSwgYWxvbmcgd2l0aCB5b3VyIFR3aXRjaCB1c2VybmFtZSBhbmQgdGhlIGVtYWlsIGFkZHJlc3MgdXNlZCB0byBhY2Nlc3MgeW91ciBhY2NvdW50LiBUbyBleHBlZGl0ZSB0aGlzIHByb2Nlc3MsIHlvdSBjYW4gcmV0YWtlIHRoZSB0YXggaW5mb3JtYXRpb24gaW50ZXJ2aWV3IGF0IGFueSB0aW1lIGFuZCBjb25zZW50IHRvIHByb3ZpZGUgYW4gZWxlY3Ryb25pYyBzaWduYXR1cmUuIFBsZWFzZSBzdWJtaXQgeW91ciB0YXggaW5mb3JtYXRpb24gYXMgc29vbiBhcyBwb3NzaWJsZSBvciB5b3UgbWF5IGJlIHN1YmplY3QgdG8gVS5TLiB3aXRoaG9sZGluZyB0YXguCjwvcD4KPHA+CkJ5IGNsaWNraW5nIEJlZ2luLCB5b3Ugd2lsbCBiZSBhc2tlZCB0byBsb2dpbiBhZ2FpbiBhbmQgdGhlbiByZWRpcmVjdGVkIHRvIHRoZSBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldy4KPC9wPgp7ey9taXNzaW5nfX0Ke3sjbm9fZm9ybX19CjxwPgpUaGUgMzAgZGF5IHBlcmlvZCB0byBtYWlsLWluIHlvdXIgQW1hem9uIFRheCBJbmZvcm1hdGlvbiBJbnRlcnZpZXcgcGFwZXIgZm9ybSBoYXMgcGFzc2VkLiBQbGVhc2UgZW5zdXJlIHRoYXQgeW91IGhhdmUgbWFpbGVkIHRoZSBwYXBlciBmb3JtIHRvIEFtYXpvbiBhdCB0aGUgYWRkcmVzcyBwcm92aWRlZC4gVG8gZXhwZWRpdGUgdGhpcyBwcm9jZXNzLCB5b3UgbWF5IHJldGFrZSB0aGUgdGF4IGluZm9ybWF0aW9uIGludGVydmlldyBhdCBhbnkgdGltZSBhbmQgY29uc2VudCB0byBwcm92aWRlIGFuIGVsZWN0cm9uaWMgc2lnbmF0dXJlLiBCeSBjbGlja2luZyBCZWdpbiwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgQW1hem9uIFRheCBJbmZvcm1hdGlvbiBJbnRlcnZpZXcuCjwvcD4Ke3svbm9fZm9ybX19Cnt7I3JlcXVpcmVzX3N1YnN0YW50aWF0aW9ufX0KPHA+CllvdXIgdGF4IGRvY3VtZW50cyBhcmUgaW5jb21wbGV0ZS4gVGhlcmUgd2VyZSBzb21lIGRpc2NyZXBhbmNpZXMgd2l0aCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYW5kIHdlIHJlcXVpcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gUGxlYXNlIHVwbG9hZCB0aGUgcmVxdWlyZWQgZG9jdW1lbnRzIHRvIGNvbXBsZXRlIHRoZSBQYXJ0bmVyIE9uYm9hcmRpbmcgcHJvY2Vzcy4gVG8gdXBsb2FkIHRoZSByZXF1aXJlZCBkb2N1bWVudHMsIGNsaWNrIEJlZ2luIGF0IGFueSB0aW1lLiBJZiB5b3UgbmVlZCBhZGRpdGlvbmFsIGFzc2lzdGFuY2UsIHBsZWFzZSBlbWFpbCA8YSBocmVmPSJtYWlsdG86dHdpdGNodGF4aGVscEBhbWF6b24uY29tIj50d2l0Y2h0YXhoZWxwQGFtYXpvbi5jb208L2E+Lgo8L3A+Cnt7L3JlcXVpcmVzX3N1YnN0YW50aWF0aW9ufX0Ke3sjcGVuZGluZ319ClRoYW5rcyEgWW91ciB0YXggZG9jdW1lbnRzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgYXJlIHBlbmRpbmcgYXBwcm92YWwuCnt7L3BlbmRpbmd9fQp7ey9vbmJvYXJkaW5nfX0Ke3svcm95YWx0eX19Cnt7I3NlcnZpY2V9fQp7eyNzdWNjZXNzfX0KQ29uZ3JhdHVsYXRpb25zISBZb3VyIHNlcnZpY2VzIHRheCBkb2N1bWVudHMgYXJlIGNvbXBsZXRlLgp7ey9zdWNjZXNzfX0Ke3sjc3RhcnR9fQo8cD4KVGhlIGRlYWRsaW5lIHRvIHN1Ym1pdCB5b3VyIHNlcnZpY2VzIHRheCBkb2N1bWVudHMgaGFzIGV4cGlyZWQuIFBsZWFzZSBzdWJtaXQgeW91ciBkb2N1bWVudHMgYXMgc29vbiBhcyBwb3NzaWJsZSBvciB5b3VyIHBheW1lbnRzIG1heSBiZSBzdWJqZWN0IHRvIFUuUy4gd2l0aGhvbGRpbmcgdGF4Lgo8L3A+CjxwPgpCeSBjbGlja2luZyBCZWdpbiwgeW91IHdpbGwgYmUgYXNrZWQgdG8gbG9naW4gYWdhaW4gYW5kIHRoZW4gcmVkaXJlY3RlZCB0byB0aGUgQW1hem9uIFRheCBJbmZvcm1hdGlvbiBJbnRlcnZpZXcuCjwvcD4KPHA+CklmIHlvdSBuZWVkIGFkZGl0aW9uYWwgYXNzaXN0YW5jZSwgcGxlYXNlIGVtYWlsIDxhIGhyZWY9Im1haWx0bzp0d2l0Y2h0YXhoZWxwQGFtYXpvbi5jb20iPnR3aXRjaHRheGhlbHBAYW1hem9uLmNvbTwvYT4uCjwvcD4KPHA+CldlIGFwb2xvZ2l6ZSBmb3IgYW55IGluY29udmVuaWVuY2UuCjxpbWcgY2xhc3M9J3NvcnJ5JyBzcmM9J2h0dHA6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEvODYvMS4wJz4KPC9wPgp7ey9zdGFydH19Cnt7I2ZhaWxlZH19CjxwPgpUaGUgc2VydmljZXMgdGF4IGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBmb3IgeW91ciBhY2NvdW50IGRvZXMgbm90IG1hdGNoIEludGVybmFsIFJldmVudWUgU2VydmljZSAoSVJTKSByZWNvcmRzLiBQbGVhc2UgcmV0YWtlIHRoZSB0YXggaW5mb3JtYXRpb24gaW50ZXJ2aWV3IGJ5IDxzdHJvbmc+QXVndXN0IDE1LCAyMDE1PC9zdHJvbmc+LCBvciB5b3UgbWF5IGJlIHN1YmplY3QgdG8gVS5TLiB3aXRoaG9sZGluZyB0YXguCjwvcD4KPHA+CkJ5IGNsaWNraW5nIEJlZ2luLCB5b3Ugd2lsbCBiZSBhc2tlZCB0byBsb2dpbiBhZ2FpbiBhbmQgdGhlbiByZWRpcmVjdGVkIHRvIHRoZSBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldy4KPC9wPgp7ey9mYWlsZWR9fQp7eyNtaXNzaW5nfX0KPHA+CllvdXIgc2VydmljZXMgdGF4IGRvY3VtZW50cyBhcmUgaW5jb21wbGV0ZS4gSWYgeW91IHNlbGVjdGVkIHRvIG1haWwtaW4gYSBwYXBlciBmb3JtLCB5b3UgbXVzdCBtYWlsIHlvdXIgZG9jdW1lbnRzIHRvIEFtYXpvbiBhcyBzb29uIGFzIHBvc3NpYmxlLiBCZSBzdXJlIHRvIGluY2x1ZGUg4oCcVHdpdGNo4oCdIG9uIHRoZSB0b3Agb2YgdGhlIGZvcm0sIGFsb25nIHdpdGggeW91ciBUd2l0Y2ggdXNlcm5hbWUgYW5kIHRoZSBlbWFpbCBhZGRyZXNzIHVzZWQgdG8gYWNjZXNzIHlvdXIgYWNjb3VudC4gVG8gZXhwZWRpdGUgdGhpcyBwcm9jZXNzLCB5b3UgY2FuIHJldGFrZSB0aGUgdGF4IGluZm9ybWF0aW9uIGludGVydmlldyBhdCBhbnkgdGltZSBhbmQgY29uc2VudCB0byBwcm92aWRlIGFuIGVsZWN0cm9uaWMgc2lnbmF0dXJlLiBQbGVhc2Ugc3VibWl0IHlvdXIgdGF4IGluZm9ybWF0aW9uIGJ5IDxzdHJvbmc+QXVndXN0IDE1LCAyMDE1PC9zdHJvbmc+IG9yIHlvdSBtYXkgYmUgc3ViamVjdCB0byBVLlMuIHdpdGhob2xkaW5nIHRheC4KPC9wPgo8cD4KQnkgY2xpY2tpbmcgQmVnaW4sIHlvdSB3aWxsIGJlIGFza2VkIHRvIGxvZ2luIGFnYWluIGFuZCB0aGVuIHJlZGlyZWN0ZWQgdG8gdGhlIEFtYXpvbiBUYXggSW5mb3JtYXRpb24gSW50ZXJ2aWV3Lgo8L3A+Cnt7L21pc3Npbmd9fQp7eyNub19mb3JtfX0KPHA+ClRoZSAzMCBkYXkgcGVyaW9kIHRvIG1haWwtaW4geW91ciBBbWF6b24gVGF4IEluZm9ybWF0aW9uIEludGVydmlldyBwYXBlciBmb3JtIGhhcyBwYXNzZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBtYWlsZWQgdGhlIHBhcGVyIGZvcm0gZm9yIHlvdXIgc2VydmljZXMgaW5jb21lIHRvIEFtYXpvbiBhdCB0aGUgYWRkcmVzcyBwcm92aWRlZC4gVG8gZXhwZWRpdGUgdGhpcyBwcm9jZXNzLCB5b3UgbWF5IHJldGFrZSB0aGUgdGF4IGluZm9ybWF0aW9uIGludGVydmlldyBhdCBhbnkgdGltZSBhbmQgY29uc2VudCB0byBwcm92aWRlIGFuIGVsZWN0cm9uaWMgc2lnbmF0dXJlLiBJZiB5b3VyIHRheCBpbmZvcm1hdGlvbiBpcyBub3QgcmVjZWl2ZWQgYnkgPHN0cm9uZz5BdWd1c3QgMTUsIDIwMTU8L3N0cm9uZz4sIHlvdSBtYXkgYmUgc3ViamVjdCB0byBVLlMuIHdpdGhob2xkaW5nIHRheC4KPC9wPgo8cD4KQnkgY2xpY2tpbmcgQmVnaW4sIHlvdSB3aWxsIGJlIGFza2VkIHRvIGxvZ2luIGFnYWluIGFuZCB0aGVuIHJlZGlyZWN0ZWQgdG8gdGhlIEFtYXpvbiBUYXggSW5mb3JtYXRpb24gSW50ZXJ2aWV3Lgo8L3A+Cnt7L25vX2Zvcm19fQp7eyNyZXF1aXJlc19zdWJzdGFudGlhdGlvbn19CjxwPgpZb3VyIHNlcnZpY2VzIHRheCBkb2N1bWVudHMgYXJlIGluY29tcGxldGUuIFRoZXJlIHdlcmUgc29tZSBkaXNjcmVwYW5jaWVzIHdpdGggdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGFuZCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIFBsZWFzZSB1cGxvYWQgdGhlIHJlcXVpcmVkIGRvY3VtZW50cyBieSA8c3Ryb25nPkF1Z3VzdCAxNSwgMjAxNTwvc3Ryb25nPiBvciB5b3UgbWF5IGJlIHN1YmplY3QgdG8gVS5TLiB3aXRoaG9sZGluZyB0YXguIFRvIHVwbG9hZCB0aGUgcmVxdWlyZWQgZG9jdW1lbnRzLCBjbGljayBCZWdpbiBhdCBhbnkgdGltZS4gSWYgeW91IG5lZWQgYWRkaXRpb25hbCBhc3Npc3RhbmNlLCBwbGVhc2UgZW1haWwgPGEgaHJlZj0ibWFpbHRvOnR3aXRjaHRheGhlbHBAYW1hem9uLmNvbSI+dHdpdGNodGF4aGVscEBhbWF6b24uY29tPC9hPi4KPC9wPgp7ey9yZXF1aXJlc19zdWJzdGFudGlhdGlvbn19Cnt7I3BlbmRpbmd9fQpUaGFua3MhIFlvdXIgc2VydmljZXMgdGF4IGRvY3VtZW50cyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIGFyZSBwZW5kaW5nIGFwcHJvdmFsLgp7ey9wZW5kaW5nfX0Ke3svc2VydmljZX19CjwvZGl2Pgo8ZGl2IGNsYXNzPSdidXR0b25zJz4Ke3sjc2hvdWxkU2hvd0Rpc21pc3NCdXR0b259fQo8ZGl2IGNsYXNzPSdidXR0b24nIGlkPSdkaXNtaXNzLWJhbm5lcic+CkRpc21pc3MKPC9kaXY+Cnt7L3Nob3VsZFNob3dEaXNtaXNzQnV0dG9ufX0Ke3sjc2hvdWxkU2hvd0JlZ2luQnV0dG9ufX0KPGEgaHJlZj0iL3RheF9pbnRlcnZpZXcvbmV3P2luY29tZV90eXBlPXt7aW5jb21lVHlwZX19IiBjbGFzcz0iYnV0dG9uIHt7XnN1Y2Nlc3N9fWFsZXJ0e3svc3VjY2Vzc319IHt7I3N1Y2Nlc3N9fXByaW1hcnl7ey9zdWNjZXNzfX0iIGlkPSJzdGFydC10YXgtaW50ZXJ2aWV3Ij48c3Bhbj4Ke3sjc3VjY2Vzc319ClRha2UgQWdhaW4Ke3svc3VjY2Vzc319Cnt7XnN1Y2Nlc3N9fQpCZWdpbgp7ey9zdWNjZXNzfX0KPC9zcGFuPgo8L2E+e3svc2hvdWxkU2hvd0JlZ2luQnV0dG9ufX0KPC9kaXY+CjwvZGl2PgoKPC9zY3JpcHQ+Cgo8c2NyaXB0IGNsYXNzPSdwYXJ0aWFsJyBpZD0nbGl2ZScgdHlwZT0ndGV4dC9odG1sJz4KPGxpIGNsYXNzPSdsaXZlIHJlc3VsdCBkcm9wbWVudV9hY3Rpb24nPgo8cD4Ke3sjc3RhdHVzfX0KICB7e3N0YXR1c319Cnt7L3N0YXR1c319Cnt7XnN0YXR1c319CiAge3t0aXRsZX19Cnt7L3N0YXR1c319CjwvcD4KPHNwYW4+b24ge3tuYW1lfX08L3NwYW4+CjwvbGk+Cjwvc2NyaXB0Pgo8c2NyaXB0IGNsYXNzPSdwYXJ0aWFsJyBpZD0ndXNlcnMnIHR5cGU9J3RleHQvaHRtbCc+CjxsaSBjbGFzcz0ndXNlcnMgcmVzdWx0IGRyb3BtZW51X2FjdGlvbic+CjxwPnt7bmFtZX19PC9wPgo8L2xpPgo8L3NjcmlwdD4KPHNjcmlwdCBjbGFzcz0ncGFydGlhbCcgaWQ9J2Jyb2FkY2FzdHMnIHR5cGU9J3RleHQvaHRtbCc+CjxsaSBjbGFzcz0nYnJvYWRjYXN0cyByZXN1bHQgZHJvcG1lbnVfYWN0aW9uJz4KPHA+e3t0aXRsZX19PC9wPgo8c3Bhbj5vbiB7e3VzZXJ9fTwvc3Bhbj4KPC9saT4KPC9zY3JpcHQ+CjxzY3JpcHQgY2xhc3M9J3BhcnRpYWwnIGlkPSd2b2RzJyB0eXBlPSd0ZXh0L2h0bWwnPgo8bGkgY2xhc3M9J3ZvZHMgcmVzdWx0IGRyb3BtZW51X2FjdGlvbic+CjxwPnt7dGl0bGV9fTwvcD4KPHNwYW4+b24ge3t1c2VyfX08L3NwYW4+CjwvbGk+Cjwvc2NyaXB0Pgo8c2NyaXB0IGlkPSdkcm9wZG93bicgdHlwZT0ndGV4dC9odG1sJz4KPHRhYmxlIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+Cnt7XmVtcHR5LmxpdmV9fQo8dHIgY2xhc3M9J2xpdmUnPgo8dGQgY2xhc3M9J2xhYmVsJz5MaXZlPC90ZD4KPHRkIGNsYXNzPSdsaXN0Jz4KPHVsPgp7eyNsaXZlfX0Ke3s+IGxpdmV9fQp7ey9saXZlfX0KPC91bD4KPC90ZD4KPC90cj4Ke3svZW1wdHkubGl2ZX19Cnt7XmVtcHR5LnVzZXJzfX0KPHRyIGNsYXNzPSd1c2Vycyc+Cjx0ZCBjbGFzcz0nbGFiZWwnPlVzZXJzPC90ZD4KPHRkIGNsYXNzPSdsaXN0Jz4KPHVsPgp7eyN1c2Vyc319Cnt7PiB1c2Vyc319Cnt7L3VzZXJzfX0KPC91bD4KPC90ZD4KPC90cj4Ke3svZW1wdHkudXNlcnN9fQp7e15lbXB0eS5icm9hZGNhc3RzfX0KPHRyIGNsYXNzPSdicm9hZGNhc3RzJz4KPHRkIGNsYXNzPSdsYWJlbCc+VmlkZW9zPC90ZD4KPHRkIGNsYXNzPSdsaXN0Jz4KPHVsPgp7eyNicm9hZGNhc3RzfX0Ke3s+IGJyb2FkY2FzdHN9fQp7ey9icm9hZGNhc3RzfX0KPC91bD4KPC90ZD4KPC90cj4Ke3svZW1wdHkuYnJvYWRjYXN0c319Cnt7XmVtcHR5LnZvZHN9fQo8dHIgY2xhc3M9J3ZvZHMnPgo8dGQgY2xhc3M9J2xhYmVsJz5WaWRlb3M8L3RkPgo8dGQgY2xhc3M9J2xpc3QnPgo8dWw+Cnt7I3ZvZHN9fQp7ez4gdm9kc319Cnt7L3ZvZHN9fQo8L3VsPgo8L3RkPgo8L3RyPgp7ey9lbXB0eS52b2RzfX0KPC90YWJsZT4KPGRpdiBjbGFzcz0nYWxsJz4KPHAgY2xhc3M9J2Ryb3BtZW51X2FjdGlvbiByZXN1bHQnPkFsbCByZXN1bHRzLi4uPC9wPgo8L2Rpdj4KCjwvc2NyaXB0PgoKCjwvaGVhZD4KPGJvZHkgY2xhc3M9J2NoYW5uZWxfbmV3IGNvbHVtbnMnIGRhdGEtcGFnZT0nZW1iZXIjZW1iZXInPgo8ZGl2IGlkPSdoZWFkZXJfbm90aWZpY2F0aW9uJyBzdHlsZT0nZGlzcGxheTpub25lJz48L2Rpdj4KCjxzY3JpcHQ+CiAgKGZ1bmN0aW9uKCkgewogICAgdmFyIGdhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOyBnYS50eXBlPSd0ZXh0L2phdmFzY3JpcHQnOyBnYS5hc3luYz10cnVlOwogICAgZ2Euc3JjPSgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAnaHR0cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7CiAgICB2YXIgcz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2Escyk7CiAgfSkoKTsKPC9zY3JpcHQ+Cgo8c2NyaXB0PgogIFR3aXRjaC50cmFja2luZy5zZW5kQ29tc2NvcmVCZWFjb24oeyJjMSI6MiwiYzIiOjY3NDUzMDYsImMzIjoxLCJjNSI6IjAxIn0pOwo8L3NjcmlwdD4KPG5vc2NyaXB0Pgo8aW1nIHNyYz0naHR0cDovL2Iuc2NvcmVjYXJkcmVzZWFyY2guY29tL3A/YzE9MiZhbXA7YzI9Njc0NTMwNiZhbXA7YzM9MSZhbXA7YzU9MDEmYW1wO2NqPTEnPgo8L25vc2NyaXB0Pgo8aW1nIGJvcmRlcj0nMCcgY2xhc3M9J2FtYXpvbi1hZHN5c3RlbS10cmFja2luZy1waXhlbCcgaGVpZ2h0PScxJyBzcmM9Jycgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7JyB3aWR0aD0nMSc+CjxzY3JpcHQ+CiAgVHdpdGNoLmdlby50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICBpZiAoZGF0YS5nZW8gPT09ICJVUyIpIHsKICAgICAgJCgnLmFtYXpvbi1hZHN5c3RlbS10cmFja2luZy1waXhlbCcpLmF0dHIoJ3NyYycsICdodHRwOi8vcy5hbWF6b24tYWRzeXN0ZW0uY29tL2l1aTM/ZD0zcC1oYmcmZXgtc3JjPXR3aXRjaC50diZleC1oYXJncz12JTNEMS4wJTNCYyUzRDg4NTgyMTQxMjI2ODMlM0JwJTNEZTc1NDI1ZmItNTQwNy03YmQ1LWZkMjAtZjQ2MmU5OGE4Nzc3Jyk7CiAgICB9CiAgfSk7Cjwvc2NyaXB0Pgo8c2NyaXB0PgogIF9xb3B0aW9ucyA9IHtxYWNjdDogInAtMTZ1TlZ3aXlHb1d5ZyIsIGxhYmVsczogImdhbWluZyJ9Owo8L3NjcmlwdD4KPHNjcmlwdCBzcmM9J2h0dHA6Ly9lZGdlLnF1YW50c2VydmUuY29tL3F1YW50LmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0Pgo8bm9zY3JpcHQ+CjxhIGhyZWY9J2h0dHA6Ly93d3cucXVhbnRjYXN0LmNvbS9wLTE2dU5Wd2l5R29XeWcnIHRhcmdldD0nX2JsYW5rJz4KPGltZyBhbHQ9J1F1YW50Y2FzdCcgYm9yZGVyPScwJyBoZWlnaHQ9JzEnIHNyYz0naHR0cDovL3BpeGVsLnF1YW50c2VydmUuY29tL3BpeGVsL3AtMTZ1TlZ3aXlHb1d5Zy5naWYnIHN0eWxlPSdkaXNwbGF5OiBub25lOycgd2lkdGg9JzEnPgo8L2E+Cjwvbm9zY3JpcHQ+CjxzY3JpcHQ+CiAgLy8gRW1iZXIgYXBwIHNlbmRzIGl0cyBvd24gR2VybWFuIEJlYWNvbnMKICBpZiAodHlwZW9mIEVtYmVyID09PSAidW5kZWZpbmVkIikgewogICAgVHdpdGNoLnRyYWNraW5nLnNlbmRHZXJtYW5CZWFjb25zKCk7CiAgfQo8L3NjcmlwdD4KPCEtLSBCRUdJTiBLcnV4IENvbnRyb2wgVGFnIGZvciAiZGVtbyB0d2l0Y2giIC0tPgo8IS0tIFNvdXJjZTogL3NuaXBwZXQvY29udHJvbHRhZz9jb25maWQ9SllrOExDc0Mmc2l0ZT1kZW1vJTIwdHdpdGNoJmVkaXQ9MSAtLT4KPHNjcmlwdCBjbGFzcz0na3hjdCcgZGF0YS1pZD0nSllrOExDc0MnIGRhdGEtdGltaW5nPSdhc3luYycgZGF0YS12ZXJzaW9uPScxLjknIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ClR3aXRjaC5nZW8udGhlbihmdW5jdGlvbiAoZGF0YSkgewogIGlmIChkYXRhLmdlbyA9PT0gIlVTIikgewogICAgLy8gS3J1eCBDb250cm9sIFRhZwogICAgd2luZG93LktydXh8fCgoS3J1eD1mdW5jdGlvbigpe0tydXgucS5wdXNoKGFyZ3VtZW50cyl9KS5xPVtdKTsKICAgIChmdW5jdGlvbigpewogICAgICB2YXIgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtrLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7ay5hc3luYz10cnVlOwogICAgICB2YXIgbSxzcmM9KG09bG9jYXRpb24uaHJlZi5tYXRjaCgvXGJreHNyYz0oW14mXSspLykpJiZkZWNvZGVVUklDb21wb25lbnQobVsxXSk7CiAgICAgIGsuc3JjID0gL15odHRwcz86XC9cLyhbYS16MC05X1wtXC5dK1wuKT9rcnhkXC5uZXQoOlxkezEsNX0pP1wvL2kudGVzdChzcmMpID8gc3JjIDogc3JjID09PSAiZGlzYWJsZSIgPyAiIiA6IChsb2NhdGlvbi5wcm90b2NvbD09PSJodHRwczoiPyJodHRwczoiOiJodHRwOiIpKyIvL2Nkbi5rcnhkLm5ldC9jb250cm9sdGFnP2NvbmZpZD1KWWs4TENzQyI7CiAgICAgIHZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGsscyk7CiAgICB9KCkpOwogICAgLy8gS3J1eCBJbnRlcmNoYW5nZSBTbmlwcGV0CiAgICB3aW5kb3cuS3J1eHx8KChLcnV4PWZ1bmN0aW9uKCl7S3J1eC5xLnB1c2goYXJndW1lbnRzKTt9KS5xPVtdKTsKICAgIChmdW5jdGlvbigpewogICAgICBmdW5jdGlvbiByZXRyaWV2ZShuKXsKICAgICAgICB2YXIgbSwgaz0na3gnK247CiAgICAgICAgaWYod2luZG93LmxvY2FsU3RvcmFnZSl7CiAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZVtrXSB8fCAiIjsKICAgICAgICB9IGVsc2UgaWYgKG5hdmlnYXRvci5jb29raWVFbmFibGVkKXsKICAgICAgICAgIG0gPSBkb2N1bWVudC5jb29raWUubWF0Y2goaysnPShbXjtdKiknKTsKICAgICAgICAgIHJldHVybiAobSAmJiB1bmVzY2FwZShtWzFdKSkgfHwgIiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgIH0KICAgICAgS3J1eC51c2VyID0gcmV0cmlldmUoJ3VzZXInKTsKICAgICAgS3J1eC5zZWdtZW50cyA9IHJldHJpZXZlKCdzZWdzJykgJiYgcmV0cmlldmUoJ3NlZ3MnKS5zcGxpdCgnLCcpIHx8IFtdOwogICAgfSkoKTsKICB9Cn0pOwo8L3NjcmlwdD4KPCEtLSBFTkQgS3J1eCBDb250cm9sdGFnIC0tPgoKCgo8ZGl2IGlkPSdmbHlvdXQnPgo8ZGl2IGNsYXNzPSdwb2ludCc+PC9kaXY+CjxkaXYgY2xhc3M9J2NvbnRlbnQnPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9J2pzLWVtYmVyLWxvYWRpbmctc2NyZWVuIGxvYWRpbmctc2NyZWVuJz4KPGRpdiBjbGFzcz0ndHdpdGNoLWxvZ28nPjwvZGl2Pgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=
[twitch:vod] 11720328: Downloading vod info JSON
[twitch:vod] Dumping request to https://api.twitch.tv/kraken/videos/v11720328
eyJ0aXRsZSI6IlN0cmVhbWluZzogVGhlIEdyYW5kIFRvdXJuYW1lbnQgQnJhd2wiLCJkZXNjcmlwdGlvbiI6bnVsbCwiYnJvYWRjYXN0X2lkIjoxNTg4ODI5MDMwNCwic3RhdHVzIjoicmVjb3JkZWQiLCJ0YWdfbGlzdCI6IiIsIl9pZCI6InYxMTcyMDMyOCIsInJlY29yZGVkX2F0IjoiMjAxNS0wOC0xOVQxNzowOTozOVoiLCJnYW1lIjoiSGVhcnRoc3RvbmU6IEhlcm9lcyBvZiBXYXJjcmFmdCIsImxlbmd0aCI6NzczNywicHJldmlldyI6Imh0dHA6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC92MS9BVVRIX3N5c3RlbS92b2RzXzUyNWEvdG90YWxiaXNjdWl0XzE1ODg4MjkwMzA0XzI5MDIxMjA0Ni90aHVtYi90aHVtYjAtMzIweDI0MC5qcGciLCJ1cmwiOiJodHRwOi8vd3d3LnR3aXRjaC50di90b3RhbGJpc2N1aXQvdi8xMTcyMDMyOCIsInZpZXdzIjo3MTcsImZwcyI6eyJhdWRpb19vbmx5IjowLjAsIm1lZGl1bSI6MzAuMDAwMDI5NzI3MDU3OCwibW9iaWxlIjoxOS45ODk3NjYxMzcyMzY0LCJoaWdoIjozMC4wMDAwMjk3MjcwNTc4LCJsb3ciOjMwLjAwMDAyOTcyNzA1NzgsImNodW5rZWQiOjMwLjAwMDAyOTcyNzA1Nzh9LCJyZXNvbHV0aW9ucyI6eyJtZWRpdW0iOiI4NTJ4NDgwIiwibW9iaWxlIjoiNDAweDIyNiIsImhpZ2giOiIxMjgweDcyMCIsImxvdyI6IjY0MHgzNjAiLCJjaHVua2VkIjoiMTkyMHgxMDgwIn0sImJyb2FkY2FzdF90eXBlIjoiYXJjaGl2ZSIsIl9saW5rcyI6eyJzZWxmIjoiaHR0cHM6Ly9hcGkudHdpdGNoLnR2L2tyYWtlbi92aWRlb3MvdjExNzIwMzI4IiwiY2hhbm5lbCI6Imh0dHBzOi8vYXBpLnR3aXRjaC50di9rcmFrZW4vY2hhbm5lbHMvdG90YWxiaXNjdWl0In0sImNoYW5uZWwiOnsibmFtZSI6InRvdGFsYmlzY3VpdCIsImRpc3BsYXlfbmFtZSI6IlRvdGFsYmlzY3VpdCJ9fQ==
[twitch:vod] 11720328: Downloading vod access token
[twitch:vod] Dumping request to https://api.twitch.tv/api/vods/11720328/access_token
eyJ0b2tlbiI6IntcInVzZXJfaWRcIjpudWxsLFwidm9kX2lkXCI6MTE3MjAzMjgsXCJleHBpcmVzXCI6MTQ0MDI3MTc5NixcImNoYW5zdWJcIjp7XCJyZXN0cmljdGVkX2JpdHJhdGVzXCI6W1wiYXVkaW9fb25seVwiLFwibWVkaXVtXCIsXCJtb2JpbGVcIixcImhpZ2hcIixcImxvd1wiLFwiY2h1bmtlZFwiXX0sXCJwcml2aWxlZ2VkXCI6ZmFsc2V9Iiwic2lnIjoiZGE1Zjk5MzRjNmI0NDllMjM5MWU2ZjM3OGFlNWMxODFhMWEyNWQ3NyJ9
[twitch:vod] 11720328: Downloading m3u8 information
ERROR: Failed to download m3u8 information: HTTP Error 403: ERROR (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
@dstftw
Copy link
Collaborator

@dstftw dstftw commented Aug 22, 2015

Some extra params are probably passed for premium videos or even a different request. Can't tell anything concrete without a premium account.

@abergeron
Copy link

@abergeron abergeron commented Sep 3, 2015

I just discovered that twitch login is broken and "succeeds" from the point of view of youtube-dl but fails in reality. This is because it tries to post the login to https://secure.twitch.tv/authentications/new while it really should post to https://passport.twitch.tv/authentications/new.

The later url is available as self._LOGIN_POST_URL, but since it finds action="/authentications/new" on the login form it tries to urljoin "https://secure.twitch.tv/login" (aka self._LOGIN_URL) and "/authentications/new" giving the first url.

The first url gives a page that essentially says "page not found", but more importantly it does not contain an element with class "subwindow_notice", which is what youtube-dl looks for to indicate a login error.

As to why it gets the wrong url, I think this is because "https://secure.twitch.tv/login" redirects to "https://passport.twitch.tv/authentications/new?" but _download_webpage doesn't inform us of that.

I don't know how to fix it (except for forcing the use of self._LOGIN_POST_URL), which is why this is not a PR.

@abergeron
Copy link

@abergeron abergeron commented Sep 3, 2015

Also once you fix this you may encounter (rather often) a captcha error. This I don't know how to bypass.

@jvoostv1
Copy link

@jvoostv1 jvoostv1 commented Oct 16, 2015

Getting the same errors:

Joass-MBP:~ pettenstein$ youtube-dl --verbose http://www.twitch.tv/geekandsundry/v/19784593
[debug] System config: [u'--netrc']
[debug] User config: []
[debug] Command-line args: [u'--verbose', u'http://www.twitch.tv/geekandsundry/v/19784593']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2015.10.16
[debug] Python version 2.7.10 - Darwin-14.5.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg 2.8, ffprobe 2.8
[debug] Proxy map: {}
[twitch:vod] Downloading login page
[twitch:vod] Logging in as pettenstein
[twitch:vod] 19784593: Downloading vod info JSON
[twitch:vod] 19784593: Downloading vod access token
[twitch:vod] 19784593: Downloading m3u8 information
ERROR: Failed to download m3u8 information: HTTP Error 403: ERROR (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 329, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1872, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
@dstftw
Copy link
Collaborator

@dstftw dstftw commented Oct 16, 2015

This won't be fixed until somebody provides premium for testing.

@jvoostv1
Copy link

@jvoostv1 jvoostv1 commented Oct 16, 2015

Can I mail you at the address on your profile?

@dstftw
Copy link
Collaborator

@dstftw dstftw commented Oct 16, 2015

Yes.

@stephenwade
Copy link

@stephenwade stephenwade commented Jul 8, 2016

I'm also having the same problem (can't download a VOD that's only available to channel subscribers), and I'm happy to help debug.

@jvoostv1
Copy link

@jvoostv1 jvoostv1 commented Jul 9, 2016

I would be willing to donate a subscribed Twitch account again. (@dstftw)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.