From 3ad639521ff70db4198be0d1e44f808503c102c6 Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Tue, 27 Dec 2016 16:09:20 -0800 Subject: [PATCH] fixes #2805: Improve nico seiga support --- app/logical/sources/strategies/nico_seiga.rb | 36 +- app/logical/sources/strategies/pixiv.rb | 2 +- .../artist-url-test/nico-seiga.yml | 334 ++++++++++++++++++ test/unit/artist_url_test.rb | 15 +- 4 files changed, 376 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/vcr_cassettes/artist-url-test/nico-seiga.yml diff --git a/app/logical/sources/strategies/nico_seiga.rb b/app/logical/sources/strategies/nico_seiga.rb index 1d10fd56a..51018726f 100644 --- a/app/logical/sources/strategies/nico_seiga.rb +++ b/app/logical/sources/strategies/nico_seiga.rb @@ -23,14 +23,7 @@ module Sources end def get - page = agent.get(normalized_url) - - if page.search("a#link_btn_login").any? - # Session cache is invalid, clear it and log in normally. - Cache.delete("nico-seiga-session") - @agent = nil - page = agent.get(normalized_url) - end + page = load_page @artist_name, @profile_url = get_profile_from_page(page) @image_url = get_image_url_from_page(page) @@ -44,8 +37,35 @@ module Sources end end + def normalized_for_artist_finder? + url =~ %r!https?://seiga\.nicovideo\.jp/user/illust/\d+!i + end + + def normalizable_for_artist_finder? + url =~ %r!https?://seiga\.nicovideo\.jp/seiga/im\d+!i + end + + def normalize_for_artist_finder! + page = load_page + @artist_name, @profile_url = get_profile_from_page(page) + profile_url + end + protected + def load_page + page = agent.get(normalized_url) + + if page.search("a#link_btn_login").any? + # Session cache is invalid, clear it and log in normally. + Cache.delete("nico-seiga-session") + @agent = nil + page = agent.get(normalized_url) + end + + page + end + def get_profile_from_page(page) links = page.search("li a").select {|x| x["href"] =~ /user\/illust/} diff --git a/app/logical/sources/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb index eb98a80c6..dc307560e 100644 --- a/app/logical/sources/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -45,7 +45,7 @@ module Sources end def normalized_for_artist_finder? - url =~ %r!http://img\.pixiv\.net/img/#{MONIKER}/?$!i + url =~ %r!https?://img\.pixiv\.net/img/#{MONIKER}/?$!i end def normalizable_for_artist_finder? diff --git a/test/fixtures/vcr_cassettes/artist-url-test/nico-seiga.yml b/test/fixtures/vcr_cassettes/artist-url-test/nico-seiga.yml new file mode 100644 index 000000000..188b0d597 --- /dev/null +++ b/test/fixtures/vcr_cassettes/artist-url-test/nico-seiga.yml @@ -0,0 +1,334 @@ +--- +http_interactions: +- request: + method: get + uri: https://secure.nicovideo.jp/secure/login_form + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip,deflate,identity + Accept: + - "*/*" + User-Agent: + - Mechanize/2.7.3 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/) + Accept-Charset: + - ISO-8859-1,utf-8;q=0.7,*;q=0.7 + Accept-Language: + - en-us,en;q=0.5 + Host: + - secure.nicovideo.jp + Connection: + - keep-alive + Keep-Alive: + - 300 + response: + status: + code: 301 + message: Moved Permanently + headers: + Date: + - Wed, 28 Dec 2016 00:06:34 GMT + Server: + - Apache + Content-Location: + - login_form.php + Vary: + - negotiate + Tcn: + - choice + X-Niconico-Authflag: + - '0' + Set-Cookie: + - nicosid=1482883594.910287802; expires=Sat, 26-Dec-2026 00:06:34 GMT; Max-Age=315360000; + path=/; domain=.nicovideo.jp + X-Niconico-Sid: + - '1482883594.910287802' + Location: + - https://account.nicovideo.jp/login + Content-Length: + - '0' + Connection: + - close + Content-Type: + - text/html; charset=UTF-8 + Content-Language: + - ja + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Wed, 28 Dec 2016 00:06:34 GMT +- request: + method: get + uri: https://account.nicovideo.jp/login + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip,deflate,identity + Accept: + - "*/*" + User-Agent: + - Mechanize/2.7.3 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/) + Accept-Charset: + - ISO-8859-1,utf-8;q=0.7,*;q=0.7 + Accept-Language: + - en-us,en;q=0.5 + Cookie: + - nicosid=1482883594.910287802 + Host: + - account.nicovideo.jp + Connection: + - keep-alive + Keep-Alive: + - 300 + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Wed, 28 Dec 2016 00:06:35 GMT + Content-Type: + - text/html; charset=utf-8 + Content-Length: + - '10250' + Connection: + - close + Cache-Control: + - no-cache + Content-Language: + - en + Expires: + - "-1" + Pragma: + - no-cache + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Niconico-Authflag: + - '0' + body: + encoding: ASCII-8BIT + string: !binary |- + Cgo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CiAgPGhlYWQgcHJlZml4PSJvZzogaHR0cDovL29ncC5tZS9ucyMiPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1FZGdlIj4KICAgIDxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iJmNvcHk7IERXQU5HTyBDby4sIEx0ZC4iPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iUHJhZ21hIiBjb250ZW50PSJuby1jYWNoZSI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDYWNoZS1Db250cm9sIiBjb250ZW50PSJuby1jYWNoZSI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJFeHBpcmVzIiBjb250ZW50PSItMSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9Im5pY29uaWNvIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIj4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0ibmljb25pY2/jga/jg4njg6/jg7PjgrTjgYzpgYvllrbjgZnjgovml6XmnKzmnIDlpKfntJrjga7li5XnlLvjgrXjg7zjg5PjgrnjgafjgZnjgILjg4vjgrPjg4vjgrPli5XnlLvjgoTjg4vjgrPjg4vjgrPnlJ/mlL7pgIHjgIHjg4vjgrPjg4vjgrPpnZnnlLvjgarjganjgIHjgrLjg7zjg6DjgoTpn7Pmpb3jgIHjgqjjg7Pjgr/jg7zjg4bjgqTjg6Hjg7Pjg4jjga/lhajjgaZuaWNvbmljb+OBp++8gSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwOi8vd3d3Lm5pY292aWRlby5qcC8iPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2FjY291bnQubmljb3ZpZGVvLmpwL2Fzc2V0cy9pbWFnZXMvb2dwL25pY29uaWNvLnBuZyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJuaWNvbmljbyI+CiAgICA8dGl0bGU+CiAgICAgIExvZ2luIC0gbmljb25pY288L3RpdGxlPgogICAgCiAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Fzc2V0cy9wdWJsaWMvY3NzL2xvZ2luL2xvZ2luX2Zvcm0uY3NzIj4KICAgIAogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS9pY28iIGhyZWY9Ii9hc3NldHMvcHVibGljL2ltZy9iYXNlL2Zhdmljb24uaWNvIj4KICAgIDxzY3JpcHQgc3JjPSIvYXNzZXRzL3B1YmxpYy9qcy9saWIvZmluZ2VycHJpbnQuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iL2Fzc2V0cy9wdWJsaWMvanMvbGliL2pxdWVyeS0xLjExLjEubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii9hc3NldHMvcHVibGljL2pzL2xpYi9odG1sNXNoaXYubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii9hc3NldHMvcHVibGljL2pzL2xvZ2luL3VpLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii9hc3NldHMvcHVibGljL2pzL2FwaS1jbGllbnQuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgPC9oZWFkPgogIDxib2R5IGNsYXNzPSJlbi11cyI+CiAgCiAgPGhlYWRlciByb2xlPSJiYW5uZXIiIGNsYXNzPSJoZWFkZXIiPgogIAogICAgPGgxIGNsYXNzPSJoZWFkZXJfX3RpdGxlIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm5pY292aWRlby5qcC8iPgogICAgICAgICAgICA8aW1nIHNyYz0iL2Fzc2V0cy9pbWFnZXMvbG9nby9sb2dvX25pY29uaWNvLnBuZyIgYWx0PSJuaWNvbmljbyI+CiAgICAgICAgPC9hPgogICAgPC9oMT4KICAKICA8L2hlYWRlcj4KICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+CiAgICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJtYWluIGluc19fYWRzIGxvZ2luIj4KICAgICAgPGhlYWRlciBjbGFzcz0iY29udGVudHMtaGVhZGVyIGJvcmRlci1hcm91bmQiPgogICAgICAgIDxoMSBjbGFzcz0iY29udGVudHMtaGVhZGVyX190aXRsZSI+TG9naW48L2gxPgogICAgICA8L2hlYWRlcj4KICAgICAgCgoKICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMtYm9keSI+CgogICAgICAgIAogICAgICAgIDxkaXYgY2xhc3M9InJvdyBmb3JtLWdyb3VwIGJvcmRlci1hcm91bmQgbG9naW4tZm9ybSByb3VuZCBib3JkZXItZW0tYXJvdW5kIHNoYWRvdy1hcm91bmQiPgogICAgICAgICAgCjxmb3JtIGFjdGlvbj0iL2FwaS92MS9sb2dpbj9zaG93X2J1dHRvbl90d2l0dGVyPTEmc2l0ZT1uaWNvbmljbyZzaG93X2J1dHRvbl9mYWNlYm9vaz0xIiBtZXRob2Q9IlBPU1QiIGlkPSJsb2dpbl9mb3JtIj4KICAgIAogICAgICAgICAgICA8cCBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iaW5wdXQtZ3JvdXBfX2xhYmVsIj5Mb2dpbiBFbWFpbCBBZGRyZXNzIC8gUGhvbmUgTnVtYmVyPC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImlucHV0X19tYWlsdGVsIiB0eXBlPSJ0ZXh0IiBuYW1lPSJtYWlsX3RlbCIgdmFsdWU9IiI+CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImlucHV0LWdyb3VwIG5laWdoYm9yIj4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImlucHV0LWdyb3VwX19sYWJlbCI+UGFzc3dvcmQ8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0iaW5wdXRfX3Bhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiPgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJidXR0b24td3JhcCBuZWlnaGJvciI+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJsb2dpbl9fc3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJMb2dpbiIgY2xhc3M9ImJ1dHRvbiBidXR0b24tcHJpbWFyeSByb3VuZCBzaGFkb3ctYXJvdW5kIj4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgCjwvZm9ybT4KCiAgICAgICAgICAKICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtbXV0ZWQiPjxhIGhyZWY9Ii9wYXNzd29yZC9yZXNldCIgY2xhc3M9InRleHQtbGluayI+IGZvcmdvdCB5b3VyIHBhc3N3b3JkPyA8L2E+PC9wPgogICAgICAgICAgCiAgICAgICAgPC9kaXY+CgogICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBzbnMtZ3JvdXAiPgogICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWRlc2NyaXB0aW9uIj5Mb2cgaW4gdG8gdGhlIHNlcnZpY2UgYWNjb3VudCBiZWxvdy48L3A+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9uLXdyYXAiPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPjxhIGhyZWY9Ii9sb2dpbi9saW5rYWdlcy90d2l0dGVyL2F1dGhvcml6ZT9zaXRlPW5pY29uaWNvIiBjbGFzcz0iYnV0dG9uIGJ0bi10dyIgaWQ9InR3aXR0ZXJfX2xvZ2luIiB0aXRsZT0iTG9naW4gd2l0aCBUd2l0dGVyIj5Mb2dpbiB3aXRoIFR3aXR0ZXI8L2E+PC9wPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPjxhIGhyZWY9Ii9sb2dpbi9saW5rYWdlcy9mYWNlYm9vay9hdXRob3JpemU/c2l0ZT1uaWNvbmljbyIgY2xhc3M9ImJ1dHRvbiBidG4tZmIiIGlkPSJmYWNlYm9va19fbG9naW4iIHRpdGxlPSJMb2dpbiB3aXRoIEZhY2Vib29rIj5Mb2dpbiB3aXRoIEZhY2Vib29rPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj48YSBocmVmPSIvbG9naW4vbGlua2FnZXMvbmludGVuZG8vYXV0aG9yaXplP3NpdGU9bmljb25pY28iIGNsYXNzPSJidXR0b24gYnRuLW5uaWQiIGlkPSJubmlkX19sb2dpbiIgdGl0bGU9IkxvZ2luIHdpdGggTmludGVuZG8gTmV0d29yayI+TG9naW4gd2l0aCBOaW50ZW5kbyBOZXR3b3JrPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj48YSBocmVmPSIvbG9naW4vbGlua2FnZXMvbGluZS9hdXRob3JpemU/c2l0ZT1uaWNvbmljbyIgY2xhc3M9ImJ1dHRvbiBidG4tbGluZSIgaWQ9ImxpbmVfX2xvZ2luIiB0aXRsZT0iTG9naW4gd2l0aCBMSU5FIj5Mb2dpbiB3aXRoIExJTkU8L2E+PC9wPgogICAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImJ1dHRvbi1jb250YWluZXIiPjxhIGhyZWY9Ii9sb2dpbi9saW5rYWdlcy9nb29nbGVfcGx1cy9hdXRob3JpemU/c2l0ZT1uaWNvbmljbyIgY2xhc3M9ImJ1dHRvbiBidG4tZ29vZ2xlIiBpZD0iZ29vZ2xlX3BsdXNfX2xvZ2luIiB0aXRsZT0iTG9naW4gd2l0aCBHb29nbGUiPkxvZ2luIHdpdGggR29vZ2xlPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJidXR0b24tY29udGFpbmVyIj48YSBocmVmPSIvbG9naW4vbGlua2FnZXMveWFob28vYXV0aG9yaXplP3NpdGU9bmljb25pY28iIGNsYXNzPSJidXR0b24gYnRuLXlhaG9vIiBpZD0ieWFob29fX2xvZ2luIiB0aXRsZT0iTG9naW4gd2l0aCBZYWhvbyEgSkFQQU4iPkxvZ2luIHdpdGggWWFob28hIEpBUEFOPC9hPjwvcD4KICAgICAgICAgICAgICAKICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBzaWdudXAiPgogICAgICAgICAgICA8cCBjbGFzcz0iYnV0dG9uLXdyYXAiPgogICAgICAgICAgICAgIDxhIGhyZWY9Ii9yZWdpc3Rlcj9zaXRlPW5pY29uaWNvJmZyb209bG9naW4iIGNsYXNzPSJidXR0b24gYnV0dG9uLXNpZ251cCByb3VuZCB3ZWlnaHQgc2hhZG93LWFyb3VuZCI+CiAgICAgICAgICAgICAgICA8c3Bhbj5Eb24mI3gyNzt0IGhhdmUgYW4gYWNjb3VudD88L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1idXR0b24iPlNpZ24gdXAgbm93PC9zcGFuPgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cgYWRzIj4KICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDxpZnJhbWUgc3JjPSJodHRwczovL2Fkcy5uaWNvdmlkZW8uanAvP3pvbmVpZD0xMjQmdHlwZT1uaWNvTG9naW4iIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgaHNwYWNlPSIwIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIiB2c3BhY2U9IjAiIG5vcmVzaXplPjxpbWcgc3JjPSIvYXNzZXRzL2ltYWdlcy9sb2dpbi1mb3JtL2R1bW15X2Fkcy5naWYiIGFsdD0iIiAvPjwvaWZyYW1lPgogICAgICAgICAgICAKICAgICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8Zm9vdGVyIHJvbGU9ImNvbnRlbnRpbmZvIiBjbGFzcz0iZm9vdGVyIj4KICAgIDxkaXYgY2xhc3M9ImNlcnRNYXJrQ29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iY2VydE1hcmsiPgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vdHJ1c3RlZC13ZWItc2VhbC5jeWJlcnRydXN0Lm5lLmpwL3NlYWwvZ2V0U2NyaXB0P2hvc3RfbmFtZT1hY2NvdW50Lm5pY292aWRlby5qcCZhbXA7dHlwZT0zMSI+PC9zY3JpcHQ+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iY2VydGlmaWNhdGUiPgogICAgICAgIAogICAgICAgICAgVGhpcyBzaXRlIGlzIGF1dGhvcml6ZWQgYnkgY3liZXIgdHJ1c3QgPGEgaHJlZj0iaHR0cHM6Ly93d3cuY3liZXJ0cnVzdC5uZS5qcC9TdXJlU2VydmVyLyIgdGFyZ2V0PSJfYmxhbmsiPlNlcnZlciBDZXJ0aWZpY2F0aW9uPC9hPi4gPGJyPldlIHV0aWxpemUgc2VjdXJlIGNvbm5lY3Rpb25zIGFuZCBTU0wgdG8gZW5zdXJlIHlvdXIgcHJpdmFjeS4KICAgICAgICAKICAgICAgICAKICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYW1wYWlnbkJhbm5lckNvbnRhaW5lciI+CiAgICAgIAogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmpwY2VydC5vci5qcC9wci8yMDE2L3ByMTYwMDAzLmh0bWwiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvaW1hZ2VzL2xvZ2luLWZvcm0vc3RvcDI0MF8xMTBfbmFzaS5wbmciIGFsdD0iIj4KICAgICAgICA8L2E+CiAgICAgIAogICAgICAKICAgIDwvZGl2PgogICAgPHAgY2xhc3M9ImNvcHlyaWdodCI+PHNtYWxsPiZjb3B5OyBEV0FOR08gQ28uLCBMdGQuPC9zbWFsbD48L3A+CiAgPC9mb290ZXI+CgogIAogICAgPGRpdiBjbGFzcz0iZXh0LWNvbnRhaW5lciI+CiAgICAgIAo8c3R5bGU+Ci8qe2xpdGVyYWx9Ki8KI2xhbmdfc3dpdGNoZXIsCiNsYW5nX2NvbnRyb2wge3Bvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgL2Rpc3BsYXk6aW5saW5lOyAvem9vbToxOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7fQojbGFuZ19jb250cm9sIHtwYWRkaW5nOjIwcHggMDt9CiNsYW5nX3N3aXRjaGVyICNsYW5nX2N1cnJlbnQgeyBkaXNwbGF5OmJsb2NrOyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgZm9udC13ZWlnaHQ6Ym9sZDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjVweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NXB4OwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NXB4Owp9CiNsYW5nX3N3aXRjaGVyICNsYW5nX2xpbmV1cCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoyODBweDsgcGFkZGluZzo1cHg7IG1hcmdpbjowIC01cHggLTVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjVweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NXB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo1cHg7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjVweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo1cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NXB4OwogICAgLW1vei1ib3gtc2hhZG93OjAgMnB4IDJweCByZ2JhKDAsMCwwLDAuMjUpOyBib3gtc2hhZG93OjAgMnB4IDJweCByZ2JhKDAsMCwwLDAuMjUpOwp9CiNsYW5nX3N3aXRjaGVyICNsYW5nX2xpbmV1cCB1bCB7bWFyZ2luOjA7cGFkZGluZzowOyB0ZXh0LWFsaWduOmxlZnQ7fQojbGFuZ19zd2l0Y2hlciAjbGFuZ19saW5ldXAgbGkgewogICAgZGlzcGxheTppbmxpbmUtYmxvY2s7IC9kaXNwbGF5OmlubGluZTsgL3pvb206MTsKICAgIHdpZHRoOjgwcHg7IG1hcmdpbjowOyBwYWRkaW5nOjVweDsgY3Vyc29yOnBvaW50ZXI7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsKfQojbGFuZ19zd2l0Y2hlciAjbGFuZ19saW5ldXAgYSB7CiAgICBjb2xvcjojZGRkOwp9CiNsYW5nX3N3aXRjaGVyICNsYW5nX2xpbmV1cCBhOmhvdmVyIHsKICAgIGNvbG9yOiNmZmY7Cn0KCiNsYW5nX3N3aXRjaGVyLmV4cGFuZGVkICNsYW5nX2N1cnJlbnQgeyBiYWNrZ3JvdW5kOiMzNTc7IGNvbG9yOiNmZmY7CiAgICBwYWRkaW5nOjVweDsgbWFyZ2luOi01cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOwp9CiNsYW5nX3N3aXRjaGVyLmV4cGFuZGVkICNsYW5nX2xpbmV1cCB7IGJhY2tncm91bmQ6IzM1NzsgY29sb3I6I2ZmZjsgfQojbGFuZ19zd2l0Y2hlci5leHBhbmRlZCAjbGFuZ19saW5ldXAgbGk6aG92ZXIge2JhY2tncm91bmQ6IzEyMzt9Ci8qey9saXRlcmFsfSovCjwvc3R5bGU+Cgo8ZGl2IGlkPSJsYW5nX2NvbnRyb2wiPgogIAogICAgTGFuZ3VhZ2UgOgogIDxkaXYgaWQ9Imxhbmdfc3dpdGNoZXIiPgogICAgPHNwYW4gaWQ9ImxhbmdfY3VycmVudCI+RW5nbGlzaCAoVVMpPC9zcGFuPgogICAgPGRpdiBpZD0ibGFuZ19saW5ldXAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9sb2dpbj9zaXRlPW5pY29uaWNvIiBkYXRhLWxhbmc9ImphLWpwIj7ml6XmnKzoqp48L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL2xvZ2luP3NpdGU9bmljb25pY28iIGRhdGEtbGFuZz0iZW4tdXMiPkVuZ2xpc2ggKFVTKTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvbG9naW4/c2l0ZT1uaWNvbmljbyIgZGF0YS1sYW5nPSJ6aC10dyI+5Lit5paHICjnuYHpq5QpPC9hPjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgovKntsaXRlcmFsfSovCnZhciBsYW5nQ29udHJvbCA9IHsKICAgIC8v6Zai5L+C6KaB57SgCiAgICBlbGVtIDogewogICAgICAgIGxhbmdfc3dpdGNoZXIgOiBqUXVlcnkoIiNsYW5nX3N3aXRjaGVyIiksCiAgICAgICAgbGFuZ19jdXJyZW50ICA6IGpRdWVyeSgiI2xhbmdfY3VycmVudCIpLAogICAgICAgIGxhbmdfbGluZXVwICAgOiBqUXVlcnkoIiNsYW5nX2xpbmV1cCIpCiAgICB9LAogICAgLy/liJ3mnJ/ljJYo44GZ44GQ5LiL44Gn5a6f6KGM44GV44KM44G+44GZKQogICAgaW5pdCA6IGZ1bmN0aW9uKCl7CiAgICAgICAgdGhpcy5lbGVtLmxhbmdfY3VycmVudC5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICBsYW5nQ29udHJvbC50b2dnbGUoKTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLmVsZW0ubGFuZ19saW5ldXAuZmluZCgiYSIpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIGV4cGlyZSA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgIGV4cGlyZS5zZXRUaW1lKGV4cGlyZS5nZXRUaW1lKCkgKyAzMCoyNCo2MCo2MCoxMDAwKTsKCiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IFsKICAgICAgICAgICAgICAgICJsYW5nPSIgKyBqUXVlcnkodGhpcykuYXR0cigiZGF0YS1sYW5nIiksCiAgICAgICAgICAgICAgICAiZXhwaXJlcz0iICsgZXhwaXJlLnRvR01UU3RyaW5nKCksCiAgICAgICAgICAgICAgICAiZG9tYWluPW5pY292aWRlby5qcCIsCiAgICAgICAgICAgICAgICAicGF0aD0vIgogICAgICAgICAgICBdLmpvaW4oIjsgIik7CiAgICAgICAgfSk7CiAgICB9LAogICAgLy/oqIDoqp7kuIDopqfjga7ooajnpLov6Z2e6KGo56S6CiAgICB0b2dnbGUgOiBmdW5jdGlvbigpewogICAgICAgIGlmKHRoaXMuZWxlbS5sYW5nX3N3aXRjaGVyLmhhc0NsYXNzKCJleHBhbmRlZCIpKXsKICAgICAgICAgICAgdGhpcy5lbGVtLmxhbmdfbGluZXVwLmhpZGUoKTsKICAgICAgICAgICAgdGhpcy5lbGVtLmxhbmdfc3dpdGNoZXIucmVtb3ZlQ2xhc3MoImV4cGFuZGVkIik7CiAgICAgICAgICAgIGpRdWVyeSgiYm9keSIpLnVuYmluZCgiY2xpY2siKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgdGhpcy5lbGVtLmxhbmdfbGluZXVwLnNob3coKTsKICAgICAgICAgICAgdGhpcy5lbGVtLmxhbmdfc3dpdGNoZXIuYWRkQ2xhc3MoImV4cGFuZGVkIikKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICBqUXVlcnkoImJvZHkiKS5jbGljayhmdW5jdGlvbihldmVudCl7CiAgICAgICAgICAgICAgICBpZihqUXVlcnkoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCIjbGFuZ19zd2l0Y2hlciIpLnNpemUoKT49MSl7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBsYW5nQ29udHJvbC50b2dnbGUoKTsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkoImJvZHkiKS51bmJpbmQoImNsaWNrIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LDEwMCk7CiAgICAgICAgfQogICAgfQp9OwpsYW5nQ29udHJvbC5pbml0KCk7Ci8qey9saXRlcmFsfSovCjwvc2NyaXB0PgoKICAgIDwvZGl2PgogIAogIDxzY3JpcHQ+CiAgJChmdW5jdGlvbigpewogICAgJCgnPGlucHV0PicpLmF0dHIoewogICAgICB0eXBlOiAnaGlkZGVuJywKICAgICAgCiAgICAgIG5hbWU6ICdhdXRoX2lkJywKICAgICAgdmFsdWU6IG5ldyBGaW5nZXJwcmludCh7Y2FudmFzOiB0cnVlfSkuZ2V0KCksCiAgICB9KS5hcHBlbmRUbygkKCcjbG9naW5fZm9ybScpKTsKICB9KTsKICA8L3NjcmlwdD4KCiAgPC9ib2R5Pgo8L2h0bWw+Cgo= + http_version: + recorded_at: Wed, 28 Dec 2016 00:06:35 GMT +- request: + method: post + uri: https://account.nicovideo.jp/api/v1/login?show_button_facebook=1&show_button_twitter=1&site=niconico + body: + encoding: UTF-8 + string: mail_tel=SENSITIVE&password=SENSITIVE + headers: + Accept-Encoding: + - gzip,deflate,identity + Accept: + - "*/*" + User-Agent: + - Mechanize/2.7.3 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/) + Accept-Charset: + - ISO-8859-1,utf-8;q=0.7,*;q=0.7 + Accept-Language: + - en-us,en;q=0.5 + Cookie: + - nicosid=1482883594.910287802 + Host: + - account.nicovideo.jp + Referer: + - !ruby/object:URI::HTTPS + scheme: https + user: + password: + host: account.nicovideo.jp + port: 443 + path: "/login" + query: + opaque: + fragment: + parser: !ruby/object:URI::RFC3986_Parser + regexp: + :SCHEME: !ruby/regexp /\A[A-Za-z][A-Za-z0-9+\-.]*\z/ + :USERINFO: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=A-Z_a-z~])*\z/ + :HOST: !ruby/regexp /\A(?:(?\[(?:(?(?:\h{1,4}:){6}(?\h{1,4}:\h{1,4}|(?(?[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)\.\g\.\g\.\g))|::(?:\h{1,4}:){5}\g|\h{,4}::(?:\h{1,4}:){4}\g|(?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g|(?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g|(?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g|(?:(?:\h{1,4}:){,4}\h{1,4})?::\g|(?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}|(?:(?:\h{1,4}:){,6}\h{1,4})?::)|(?v\h+\.[!$&-.0-;=A-Z_a-z~]+))\])|\g|(?(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*))\z/ + :ABS_PATH: !ruby/regexp /\A\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/ + :REL_PATH: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~])+(?:\/(?:%\h\h|[!$&-.0-;=@-Z_a-z~])*)*\z/ + :QUERY: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/ + :FRAGMENT: !ruby/regexp /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/ + :OPAQUE: !ruby/regexp /\A(?:[^\/].*)?\z/ + :PORT: !ruby/regexp /\A[\x09\x0a\x0c\x0d ]*\d*[\x09\x0a\x0c\x0d ]*\z/ + Content-Type: + - application/x-www-form-urlencoded + Content-Length: + - '60' + Connection: + - keep-alive + Keep-Alive: + - 300 + response: + status: + code: 302 + message: Found + headers: + Server: + - nginx + Date: + - Wed, 28 Dec 2016 00:06:35 GMT + Content-Length: + - '0' + Connection: + - close + Cache-Control: + - no-cache + Content-Language: + - en + Expires: + - "-1" + Location: + - http://www.nicovideo.jp/ + Pragma: + - no-cache + Set-Cookie: + - user_session=deleted; Max-Age=-1073741822; Expires=Sun, 19 Dec 1982 10:29:33 + GMT; Path=/ + - user_session=user_session_23669858_f87bcecbd5459dbc9c5f370cc447ce5e3fcc789c4bc4bf075da1c814d4d5356e; + Max-Age=2591999; Expires=Fri, 27 Jan 2017 00:06:34 GMT; Path=/; Domain=.nicovideo.jp + - user_session_secure=MjM2Njk4NTg6aERhRzJ5Nm8wNVV0c0dkM2JqNGhpaUxjcmVqZjhzbEc5eVlmcUkzbnpPRQ; + Max-Age=2591999; Expires=Fri, 27 Jan 2017 00:06:34 GMT; Path=/; Domain=.nicovideo.jp; + Secure; HTTPOnly + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Nico-Account-Authentication: + - '2' + X-Niconico-Authflag: + - '0' + body: + encoding: UTF-8 + string: '' + http_version: + recorded_at: Wed, 28 Dec 2016 00:06:35 GMT +- request: + method: get + uri: http://www.nicovideo.jp/ + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip,deflate,identity + Accept: + - "*/*" + User-Agent: + - Mechanize/2.7.3 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/) + Accept-Charset: + - ISO-8859-1,utf-8;q=0.7,*;q=0.7 + Accept-Language: + - en-us,en;q=0.5 + Cookie: + - nicosid=1482883594.910287802; user_session=user_session_23669858_f87bcecbd5459dbc9c5f370cc447ce5e3fcc789c4bc4bf075da1c814d4d5356e + Host: + - www.nicovideo.jp + Connection: + - keep-alive + Keep-Alive: + - 300 + response: + status: + code: 200 + message: OK + headers: + Date: + - Wed, 28 Dec 2016 00:06:36 GMT + Server: + - Apache + Vary: + - Host,Accept-Encoding + X-Niconico-Id: + - '23669858' + X-Niconico-Authflag: + - '1' + Content-Encoding: + - gzip + Access-Control-Allow-Credentials: + - 'true' + Content-Length: + - '11183' + Connection: + - close + Content-Type: + - text/html; charset=UTF-8 + Content-Language: + - ja + body: + encoding: ASCII-8BIT + string: !binary |- + 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 + http_version: + recorded_at: Wed, 28 Dec 2016 00:06:36 GMT +- request: + method: get + uri: http://seiga.nicovideo.jp/seiga/im4937663 + body: + encoding: US-ASCII + string: '' + headers: + Accept-Encoding: + - gzip,deflate,identity + Accept: + - "*/*" + User-Agent: + - Mechanize/2.7.3 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/) + Accept-Charset: + - ISO-8859-1,utf-8;q=0.7,*;q=0.7 + Accept-Language: + - en-us,en;q=0.5 + Cookie: + - nicosid=1482883594.910287802; skip_fetish_warning=1; user_session=user_session_23669858_f87bcecbd5459dbc9c5f370cc447ce5e3fcc789c4bc4bf075da1c814d4d5356e + Host: + - seiga.nicovideo.jp + Connection: + - keep-alive + Keep-Alive: + - 300 + response: + status: + code: 200 + message: OK + headers: + Date: + - Wed, 28 Dec 2016 00:06:36 GMT + Server: + - Apache + X-Niconico-Id: + - '23669858' + X-Niconico-Authflag: + - '1' + X-Frame-Options: + - SAMEORIGIN + X-Content-Type-Options: + - nosniff + Set-Cookie: + - __ah_i=a%3A1%3A%7Bi%3A4937663%3Bi%3A1482883596%3B%7D; expires=Fri, 27-Jan-2017 + 00:06:36 GMT; Max-Age=2592000; path=/ + - target=illust; path=/ + Connection: + - close + Transfer-Encoding: + - chunked + Content-Type: + - text/html; charset=UTF-8 + body: + encoding: ASCII-8BIT + string: !binary |- + ICAgICAgICAKPCFET0NUWVBFIGh0bWw+CjwhLS1baWYgSUUgNyBdPiAgICA8aHRtbCBsYW5nPSJqYSIgY2xhc3M9ImllNyBpZWx0ZTggaWVsdGU5Ij4gPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUgOCBdPiAgICA8aHRtbCBsYW5nPSJqYSIgY2xhc3M9ImllOCBpZWx0ZTggaWVsdGU5Ij4gPCFbZW5kaWZdLS0+CjwhLS1baWYgSUUgOSBdPiAgICA8aHRtbCBsYW5nPSJqYSIgY2xhc3M9ImllOSBpZWx0ZTkiPiA8IVtlbmRpZl0tLT4KPCEtLVtpZiBsdCBJRSA5XT4gIDxzY3JpcHQgc3JjPSIvanMvbGliL2h0bWw1c2hpdi5qcyI+PC9zY3JpcHQ+IDwhW2VuZGlmXS0tPgo8IS0tW2lmICEoSUUpXT48IS0tPiA8aHRtbCBsYW5nPSJqYSIgeG1sbnM6b2c9Imh0dHA6Ly9vZ3AubWUvbnMjIiB4bWxuczptaXhpPSJodHRwOi8vbWl4aS1wbGF0Zm9ybS5jb20vbnMjIj4gPCEtLTwhW2VuZGlmXS0tPgoKPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9RWRnZSxjaHJvbWU9MSIvPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2NyaXB0LVR5cGUiIGNvbnRlbnQ9InRleHQvamF2YXNjcmlwdCI+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0i44Kz44K444Kz44K444Gu44OJ44OD44OI57W1CuOBk+OCk+OBquOBi+OCj+OBhOOCieOBl+OBhOWuueWnv+OBp+avkuOCkuWQkOOBj+OCs+OCuOOCs+OCuOOBjOWgquOCieOCk++8iOWIh+Wun++8iSI+CjxtZXRhIG5hbWU9ImNvcHlyaWdodCIgY29udGVudD0iJmNvcHk7IERXQU5HTyBDby4sIEx0ZC4iPgo8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0i44Ki44OL44OhLOOCs+OCuOOCs+OCuCzjgZXjgY/jgonjgoLjgoLjgZMs44OJ44OD44OI57W1LOODi+OCs+ODi+OCs+Wkp+eZvuenkSI+CjxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWVhtak5aajZCNGJ2N1NXWHJRZ3Qwd0Y3NFdTYnR6ZENzTEVHVHU2TFdzOCIgLz4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5Ij4KPG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAbmljb25pY29fc2VpZ2EiPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSLjgrPjgrjjgrPjgrjjga7jg4njg4Pjg4jntbUK44GT44KT44Gq44GL44KP44GE44KJ44GX44GE5a655ae/44Gn5q+S44KS5ZCQ44GP44Kz44K444Kz44K444GM5aCq44KJ44KT77yI5YiH5a6f77yJIj4KPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9ImFydGljbGUiIC8+CjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0i44Kz44K444Kz44K4IC8gb3NhbWFyaSDjgZXjgpPjga7jgqTjg6njgrnjg4giIC8+CjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHA6Ly9zZWlnYS5uaWNvdmlkZW8uanAvc2VpZ2EvaW00OTM3NjYzIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IuOCs+OCuOOCs+OCuOOBruODieODg+ODiOe1tQrjgZPjgpPjgarjgYvjgo/jgYTjgonjgZfjgYTlrrnlp7/jgafmr5LjgpLlkJDjgY/jgrPjgrjjgrPjgrjjgYzloKrjgonjgpPvvIjliIflrp/vvIkiIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IuODi+OCs+ODi+OCs+mdmeeUuyAo44Kk44Op44K544OIKSIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwL3RodW1iLzQ5Mzc2NjNpPyIgLz4KPHRpdGxlPuOCs+OCuOOCs+OCuCAvIG9zYW1hcmkg44GV44KT44Gu44Kk44Op44K544OIIC0g44OL44Kz44OL44Kz6Z2Z55S7ICjjgqTjg6njgrnjg4gpPC90aXRsZT4KPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHA6Ly9zZWlnYS5uaWNvdmlkZW8uanAvc2VpZ2EvaW00OTM3NjYzIiAvPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii9mYXZpY29uLmljbyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9jc3MvY29tbW9uL2NvbW1vbl9sLmNzcz9wenNmM3YiPgo8bGluayBocmVmPSIvY3NzL2ljaGliYS5jc3M/MjAxMDA5MDEyMTMwIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL2Nzcy9pY2hpYmFfMi5jc3M/MjAxNTExMjQyMjM5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPCEtLVtpZiBJRSA3XT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy9tYW5nYS9pZTcuY3NzIj4KPCFbZW5kaWZdLS0+CjxzY3JpcHQgc3JjPSIvanMvY29tbW9uLm1pbi5qcz9zZTJ4dXoiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIvanMvaWxsdXN0L2NvbW1vbi5taW4uanM/eGptcWFlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iL2pzL2lsbHVzdC93YXRjaC5taW4uanM/enN0cHJuIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8IS0tIEdvb2dsZSBUYWcgTWFuYWdlciAtLT4KPHNjcmlwdD4oZnVuY3Rpb24odyxkLHMsbCxpKXt3W2xdPXdbbF18fFtdO3dbbF0ucHVzaCh7J2d0bS5zdGFydCc6Cm5ldyBEYXRlKCkuZ2V0VGltZSgpLGV2ZW50OidndG0uanMnfSk7dmFyIGY9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXSwKaj1kLmNyZWF0ZUVsZW1lbnQocyksZGw9bCE9J2RhdGFMYXllcic/JyZsPScrbDonJztqLmFzeW5jPXRydWU7ai5zcmM9CicvL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM/aWQ9JytpK2RsO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaixmKTsKfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdkYXRhTGF5ZXInLCdHVE0tNThTUThLJyk7PC9zY3JpcHQ+CjwhLS0gRW5kIEdvb2dsZSBUYWcgTWFuYWdlciAtLT4gICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9jc3MvaWxsdXN0L2FsbF9sLmNzcz82bHlqc2oiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvY3NzL2NwcC9jcHBfbC5jc3M/dWljc2dvIj4KPHNjcmlwdCBzcmM9Imh0dHA6Ly9hZHMubmljb3ZpZGVvLmpwL2Fzc2V0cy9qcy9hZHMtMi45LjAubWluLmpzPzIwMTQwOTE2MjEwOSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2pzL25pY29oZWFkZXIvcmVzb3VyY2VzL3NpdGVIZWFkZXIuY3NzPzIwMTUwMzI3MjA0MCIgLz4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2pzL25pY29oZWFkZXIvcmVzb3VyY2VzL25pY29saWItQ29tbW9uTm90aWZpY2F0aW9uSGVhZGVyLmNzcz8yMDE0MTAwNDA1NTAiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9uaWNvaGVhZGVyL3NpdGVIZWFkZXIuanM/MjAxNTA5MDcyMzAwIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL25pY29oZWFkZXIvbmljb2xpYi1Db21tb25Ob3RpZmljYXRpb25IZWFkZXIuanM/MjAxNTA2MTUxOTI4Ij48L3NjcmlwdD4gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL2Nzcy9kaXN0L2FwcC5jc3M/MGR1cnV2Ij4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2Rpc3QvYXBwLmJ1bmRsZS5qcz9haWVwY3oiPjwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keSBjbGFzcz0ibW9kZV8yIj4KPGRpdiBpZD0id3JhcHBlciI+CjxkaXYgaWQ9ImhlYWRlcl9ibG9jayI+CjxkaXYgaWQ9ImJhciIgY2xhc3M9ImJhcl9tb2RlIj4KPGRpdiBpZD0iYmFyX2NudCIgY2xhc3M9ImNmaXgiPgo8ZGl2IGlkPSJzaXRlSGVhZGVyIj4KPGRpdiBpZD0ic2l0ZUhlYWRlcklubmVyIj4KPHVsIGNsYXNzPSJzaXRlSGVhZGVyR2xvdmFsTmF2aWdhdGlvbiI+CjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm5pY292aWRlby5qcC8/aGVhZGVyIiBjbGFzcz0iaWNvbk5pY29uaWNvIj48c3Bhbj5uaWNvbmljbzwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubmljb3ZpZGVvLmpwL3ZpZGVvX3RvcC8/aGVhZGVyIj48c3Bhbj7li5XnlLs8L3NwYW4+PC9hPjwvbGk+CjxsaT48YSBocmVmPSIvP2hlYWRlciI+PHNwYW4+6Z2Z55S7PC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2xpdmUubmljb3ZpZGVvLmpwLz9oZWFkZXIiPjxzcGFuPueUn+aUvumAgTwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9jaC5uaWNvdmlkZW8uanAvP2hlYWRlciI+PHNwYW4+44OB44Oj44Oz44ON44OrPC9zcGFuPjwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2NoLm5pY292aWRlby5qcC9wb3J0YWwvYmxvbWFnYT9oZWFkZXIiPjxzcGFuPuODluODreODnuOCrDwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9nYW1lLm5pY292aWRlby5qcC9hdHN1bWFydS8/aGVhZGVyIj48c3Bhbj5SUEfjgqLjg4Tjg57jg7zjg6s8L3NwYW4+PC9hPjwvbGk+CjxsaSBjbGFzcz0ic2l0ZUhlYWRlck90aGVyIiBpZD0ic2l0ZUhlYWRlckxlZnRNZW51Ij4KPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyI+PHNwYW4+44Gd44Gu5LuW4pa8PC9zcGFuPjwvYT4KPHVsIGlkPSJzaXRlSGVhZGVyTGVmdE1lbnVDb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CjxsaT48YSBocmVmPSJodHRwOi8vYXBwLm5pY292aWRlby5qcC8/aGVhZGVyIj7jgqLjg5fjg6o8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9pY2hpYmEubmljb3ZpZGVvLmpwLz9oZWFkZXIiPuW4guWgtDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2RpYy5uaWNvdmlkZW8uanAvP2hlYWRlciI+5aSn55m+56eRPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vdWFkLm5pY292aWRlby5qcC8/aGVhZGVyIj7jg4vjgrPjg4vluoPlkYo8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9jb21tb25zLm5pY292aWRlby5qcC8/aGVhZGVyIj7jgrPjg6Ljg7Pjgro8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9uaWNvbmFyZS5uaWNvdmlkZW8uanAvP2hlYWRlciI+44OL44Kz44OK44OsPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vM2Qubmljb3ZpZGVvLmpwLz9oZWFkZXIiPuODi+OCs+ODi+eri+S9kzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2prLm5pY292aWRlby5qcC8/aGVhZGVyIj7lrp/ms4E8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9jb20ubmljb3ZpZGVvLmpwLz9oZWFkZXIiPuOCs+ODn+ODpeODi+ODhuOCozwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL25ld3Mubmljb3ZpZGVvLmpwLz9oZWFkZXIiPuODi+ODpeODvOOCuTwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZGVuZmFtaW5pY29nYW1lci5qcC8/aGVhZGVyIiB0YXJnZXQ9Il9ibGFuayI+6Zu744OV44Kh44OfPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwczovL2tha3V5b211LmpwLz91dG1fc291cmNlPW5pY29uaWNvJnV0bV9tZWRpdW09dG9wX2hlYWRlciZ1dG1fY2FtcGFpZ249bmljb25pY29fdG9wIiB0YXJnZXQ9Il9ibGFuayI+44Kr44Kv44Oo44OgPC9hPjwvbGk+CjxsaSBjbGFzcz0ibWVudVNlcnZpY2VMaXN0Ij48YSBocmVmPSJodHRwOi8vd3d3Lm5pY292aWRlby5qcC90b3Bfc2VydmljZT9oZWFkZXIiPuOCteODvOODk+OCueODu+ODh+ODkOOCpOOCueS4gOimpzwvYT48L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWwgY2xhc3M9InNpdGVIZWFkZXJNZW51TGlzdCI+CjwhLS0gc3RhcnQgbm90aWZpY2F0aW9uIGhlYWRlciAtLT4KPGxpIGlkPSJzaXRlSGVhZGVyTm90aWZpY2F0aW9uIiBkYXRhLW5pY28tdXNlcklkPSIyMzY2OTg1OCIgZGF0YS1uaWNvLXNpdGVJZD0ic2VpZ2EiCmRhdGEtbmljby1BUEktRGF0ZT0iMTQ4Mjg4MzU5NiIgZGF0YS1uaWNvLUFQSS1WZXJzaW9uPSIyIiBkYXRhLW5pY28tbG9jYWxlPSJqYV9KUCIKZGF0YS1uaWNvLUFQSS1LZXk9IjkxNDk0ZWI4NDU4MDc0OWM2ZjkzZDNhNGU3YmNkYTBiM2NiZDc2MDciCmRhdGEtbmljby1KU09OUC1VUkw9Imh0dHA6Ly9ub3RpZnkubmljb3ZpZGVvLmpwL2FwaS9ub3RpZnkiCj4KPGEgaHJlZj0iaHR0cDovL3d3dy5uaWNvdmlkZW8uanAvbXkvdG9wIiBpZD0ic2l0ZUhlYWRlclVzZXJDb250YWluZXIiPgo8c3BhbiBjbGFzcz0ic2l0ZUhlYWRlckF2YSIgaWQ9InNpdGVIZWFkZXJVc2VySWNvbkNvbnRhaW5lciI+PC9zcGFuPgo8c3BhbiBpZD0ic2l0ZUhlYWRlclVzZXJOaWNrTmFtZUNvbnRhaW5lciIgZGF0YS1uaWNrbmFtZT0idXJvb2JuYWQiPnVyb29ibuKApiDjgZXjgpM8L3NwYW4+CjwvYT4KPGRpdiBjbGFzcz0ic2l0ZUhlYWRlck5vdGlmaWNhdGlvbkNvbnRhaW5lciIgaWQ9InNpdGVIZWFkZXJOb3RpZmljYXRpb25Db250YWluZXIiPgo8ZGwgaWQ9InNpdGVIZWFkZXJOb3RpZmljYXRpb25XaXRoTm90aWZpY2F0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgo8L2RsPgo8ZGl2IGlkPSJzaXRlSGVhZGVyTm90aWZpY2F0aW9uV2l0aG91dE5vdGlmaWNhdGlvbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KPHNwYW4+PC9zcGFuPgo8cD7jgYLjgarjgZ/lrpvjga7jgYrnn6XjgonjgZvjgYzlsYrjgY/jgajjgZPjgZPjgavooajnpLrjgZXjgozjgb7jgZnjgII8L3A+CjxwIGlkPSJzaXRlSGVhZGVyU2hvd0NvbmZpZ0J1dHRvbiIgY2xhc3M9InNpdGVIZWFkZXJJbmZvcm1hdGlvbk9wdGlvbiI+6Kit5a6a5aSJ5pu0PC9wPgo8L2Rpdj4KPGRsIGlkPSJzaXRlSGVhZGVyTm90aWZpY2F0aW9uTG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KPGR0PuOBiuefpeOCieOBmzxzcGFuPjwvc3Bhbj48L2R0Pgo8ZGQ+PHNwYW4+PGltZyBzcmM9Imh0dHA6Ly9yZXMubmltZy5qcC9pbWcvbG9hZGluZy5naWYiIC8+PC9zcGFuPuOBiuefpeOCieOBm+OCkuiqreOBv+i+vOOCk+OBp+OBhOOBvuOBmeKApjwvZGQ+CjwvZGw+CjxkbCBpZD0ic2l0ZUhlYWRlck5vdGlmaWNhdGlvbkVycm9yIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgo8ZHQ+44GK55+l44KJ44GbPHNwYW4+PC9zcGFuPjwvZHQ+CjxkZCBpZD0ic2l0ZUhlYWRlck5vdGlmaWNhdGlvbkVycm9yNTAzRGV0YWlsIj7jgYrnn6XjgonjgZvjgYzlj5blvpfjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgILjgZfjgbDjgonjgY/lvoXjgaPjgablho3luqbjgYroqabjgZfjgY/jgaDjgZXjgYTjgII8L2RkPgo8ZGQgaWQ9InNpdGVIZWFkZXJOb3RpZmljYXRpb25FcnJvcjUwM0NvbmZpZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij7oqK3lrprjgYzlj43mmKDjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgILjgZfjgbDjgonjgY/lvoXjgaPjgablho3luqbjgYroqabjgZfjgY/jgaDjgZXjgYTjgII8L2RkPgo8ZGQgaWQ9InNpdGVIZWFkZXJOb3RpZmljYXRpb25FcnJvcjQwMSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij7jg63jgrDjgqTjg7PjgZXjgozjgabjgYrjgorjgb7jgZvjgpPjgILlho3luqbjg63jgrDjgqTjg7PjgZfjgarjgYrjgZfjgabjgY/jgaDjgZXjgYTjgII8L2RkPgo8L2RsPgo8ZGwgaWQ9InNpdGVIZWFkZXJOb3RpZmljYXRpb25NYWludGVuYW5jZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KPGR0PuOBiuefpeOCieOBmzxzcGFuPjwvc3Bhbj48L2R0Pgo8ZGQ+5Y+q5LuK44Oh44Oz44OG44OK44Oz44K55Lit44Gn44GZ44CCPC9kZD4KPC9kbD4KPGRsIGlkPSJzaXRlSGVhZGVyTm90aWZpY2F0aW9uT3B0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgo8ZHQ+6Kit5a6aPHNwYW4+PC9zcGFuPjwvZHQ+CjxkZD4KPHAgY2xhc3M9InNpdGVIZWFkZXJTd2l0Y2ggc2l0ZUhlYWRlckZpcnN0Q2hpbGQiPuODi+OCs+ODrOODneOCs+ODoeODs+ODiOOBruOBiuefpeOCieOBmwo8c3BhbiBpZD0ic2l0ZUhlYWRlckNvbmZpZ05pY29yZXBvcmVzQnV0dG9uIiBjbGFzcz0ic2l0ZUhlYWRlckVuYWJsZSI+PC9zcGFuPgo8L3A+CjxwIGNsYXNzPSJzaXRlSGVhZGVyU3dpdGNoIj7jgrnjgr/jg7Pjg5flj5blvpfjga7jgYrnn6XjgonjgZsKPHNwYW4gaWQ9InNpdGVIZWFkZXJDb25maWdTdGFtcGdldEJ1dHRvbiIgY2xhc3M9InNpdGVIZWFkZXJFbmFibGUiPjwvc3Bhbj4KPC9wPgo8cCBjbGFzcz0ic2l0ZUhlYWRlclN3aXRjaCBsYXN0Q2hpbGQiPuODluODreODnuOCrOOCs+ODoeODs+ODiOOBruOBiuefpeOCieOBmwo8c3BhbiBpZD0ic2l0ZUhlYWRlckNvbmZpZ0Jsb21hZ2Fjb21tZW50QnV0dG9uIiBjbGFzcz0ic2l0ZUhlYWRlckVuYWJsZSI+PC9zcGFuPgo8L3A+CjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJzaXRlSGVhZGVyQXBwbHlDb25maWdCdXR0b24iIGNsYXNzPSJzaXRlSGVhZGVyU3VibWl0QnV0dG9uRGlzYWJsZSI+5aSJ5pu044KS6YGp55So44GZ44KLPC9hPgo8L2RkPgo8ZGQgY2xhc3M9InNpdGVIZWFkZXJJbmZvcm1hdGlvbk9wdGlvbiI+CjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJzaXRlSGVhZGVyQmFja0RldGFpbCI+5LiA6Kan44Gr5oi744KLPC9hPgo8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0ic2l0ZUhlYWRlckJhY2tEZXRhaWxDaGFuZ2VkIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPumWieOBmOOCizwvYT4KPC9kZD4KPC9kbD4KPC9kaXY+CjxzcGFuIGNsYXNzPSJzaXRlSGVhZGVyTmljb3BvIj4KPGEgaHJlZj0iaHR0cDovL3BvaW50Lm5pY292aWRlby5qcC9pbmRleC9iYW5rLz9mcm9tX25vdGlmaWNhdGlvbj0xIiBjbGFzcz0ic2l0ZUhlYWRlck5pY29wb0JhbGFuY2UiPjxzcGFuIGlkPSJzaXRlSGVhZGVyTmljb3BvaW50Q29udGFpbmVyIj4tPC9zcGFuPjxzcGFuIGNsYXNzPSJ1bml0Ij5wdDwvc3Bhbj48L2E+CjxhIGhyZWY9Imh0dHA6Ly9wb2ludC5uaWNvdmlkZW8uanAvaW5kZXgvYXNwL3B1cmNoYXNlX3BvaW50P2Zyb21fbm90aWZpY2F0aW9uPTEiIGNsYXNzPSJzaXRlSGVhZGVyTmljb3BvUHVyY2hhc2UiIGlkPSJzaXRlSGVhZGVyTmljb3BvUHVyY2hhc2UiCmRhdGEtRl9zaXRlX2NkPSJTMDAxMSI+PHNwYW4gY2xhc3M9InRvb2x0aXAiPuODi+OCs+ODi+OCs+ODneOCpOODs+ODiOOCkuizvOWFpTwvc3Bhbj4KPC9hPgo8L3NwYW4+CjxhIGhyZWY9Imh0dHBzOi8vYWNjb3VudC5uaWNvdmlkZW8uanAvcHJlbWl1bS9yZWdpc3Rlcj9zZWM9YmFyJmFtcDtzaXRlPXNlaWdhJmFtcDtuZXh0X3VybD0lMkZzZWlnYSUyRmltNDkzNzY2MyIgY2xhc3M9InNpdGVIZWFkZXJVcGdyYWRlIiBpZD0ic2l0ZUhlYWRlck5vdGlmaWNhdGlvblByZW1pdW0iPgo8c3Bhbj7jg5fjg6zjg5/jgqLjg6DnmbvpjLI8L3NwYW4+CjwvYT4KPC9saT4KPCEtLSBlbmQgbm90aWZpY2F0aW9uIGhlYWRlciAtLT4KPGxpIGNsYXNzPSJzaXRlSGVhZGVySG9yaXpvbiI+CjxhIGNsYXNzPSJzaXRlSGVhZGVyUmFua2luZ0xpbmsiIGhyZWY9Ii9pbGx1c3QvcmFua2luZy8iIHRpdGxlPSLjgqTjg6njgrnjg4jjg6njg7Pjgq3jg7PjgrAiPjxzcGFuPuODqeODs+OCreODs+OCsDwvc3Bhbj48L2E+CjwvbGk+CjxsaSBjbGFzcz0ic2l0ZUhlYWRlckNyZWF0ZUxpbmsiPjxhIGhyZWY9Ii9jcmVhdGUvP2hlYWRlciI+PHNwYW4+5oqV56i/44GZ44KLPC9zcGFuPjwvYT48L2xpPgo8bGkgY2xhc3M9InNpdGVIZWFkZXJPdGhlciIgaWQ9InNpdGVIZWFkZXJSaWdodE1lbnUiPgo8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48c3Bhbj7jg6Hjg4vjg6Xjg7zilrw8L3NwYW4+PC9hPgo8dWwgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0ic2l0ZUhlYWRlclJpZ2h0TWVudUNvbnRhaW5lciI+CjxsaSBjbGFzcz0ic2l0ZUhlYWRlclJpZ2h0TWVudUdyb3VwTGFiZWwiPjxhIGhyZWY9Ii9pbGx1c3QvIj7jgqTjg6njgrnjg4g8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9teS9jbGlwIj7jgq/jg6rjg4Pjg5c8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9teS9wZXJzb25hbGl6ZSI+5a6a54K56Kaz5risPC9hPjwvbGk+CjxsaT48YSBocmVmPSIvbXkvaW1hZ2UiPuaKleeov+OCpOODqeOCueODiDwvYT48L2xpPgo8bGkgY2xhc3M9InNpdGVIZWFkZXJSaWdodE1lbnVHcm91cExhYmVsIj48YSBocmVmPSIvbWFuZ2EvIj7jg57jg7Pjgqw8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9teS9tYW5nYS9mYXZvcml0ZSI+44GK5rCX44Gr5YWl44KKPC9hPjwvbGk+CjxsaT48YSBocmVmPSIvbXkvbWFuZ2EiPuaKleeov+ODnuODs+OCrDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iL215L21hbmdhL2JvdWdodCI+6LO85YWl44GX44Gf44Oe44Oz44KsPC9hPjwvbGk+CjxsaSBjbGFzcz0ic2l0ZUhlYWRlclJpZ2h0TWVudUdyb3VwTGFiZWwiPjxhIGhyZWY9Ii9ib29rLyI+6Zu75a2Q5pu457GNPC9hPjwvbGk+CjxsaT48YSBocmVmPSIvbXkvYm9vay90c3VuZG9rdSI+44GC44Go44Gn6Kqt44KA5pu457GNPC9hPjwvbGk+CjxsaT48YSBocmVmPSIvbXkvYm9vay9oaXN0b3J5Ij7mnIDov5Hoqq3jgpPjgaDmm7jnsY08L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9teS9ib29rL2JvdWdodCI+6LO85YWl44GX44Gf5pu457GNPC9hPjwvbGk+CjxsaSBjbGFzcz0ic2l0ZUhlYWRlclJpZ2h0TWVudVNlcGFyYXRvciI+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9wb2ludC5uaWNvdmlkZW8uanAvaW5kZXgvYmFuay8/ZnJvbV9ub3RpZmljYXRpb249MiI+44Od44Kk44Oz44OI6LO85YWlPC9hPjwvbGk+CjxsaSBpZD0ic2l0ZUhlYWRlclJpZ2h0TWVudVVuZml4Ij48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij7jg5jjg4Pjg4Djg7w6PHNwYW4gY2xhc3M9InNpdGVIZWFkZXJTY3JvbGwiPui/veW+kzwvc3Bhbj48L2E+PC9saT4KPGxpIGlkPSJzaXRlSGVhZGVyUmlnaHRNZW51Rml4Ij48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij7jg5jjg4Pjg4Djg7w6PHNwYW4gY2xhc3M9InNpdGVIZWFkZXJGaXgiPuWbuuWumjwvc3Bhbj48L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9sb2dvdXQiPuODreOCsOOCouOCpuODiDwvYT48L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdiBpZD0iaGVhZGVyIiBjbGFzcz0iaGVhZGVyX21vZGUiPgo8ZGl2IGlkPSJoZWFkZXJfY250IiBjbGFzcz0iY2ZpeCI+CjxkaXYgaWQ9ImxvZ28iIGNsYXNzPSJtdDEwIj4KPGgxPgo8YSBocmVmPSIvaWxsdXN0Lz90cmFjaz1ob21lIiA+CjxpbWcgc3JjPSIvaW1nL2NvbW1vbi9sb2dvX2lsbHVzdC5wbmciIGFsdD0i44OL44Kz44OL44Kz6Z2Z55S7Jm5ic3A744Kk44Op44K544OIIj4KPC9hPgo8L2gxPgo8L2Rpdj4KPGRpdiBpZD0ic2dfbWVudV9zZWFyY2giPgo8ZGl2IGlkPSJzZ19zZWFyY2hfYm94Ij4KPGZvcm0gaWQ9ImhlYWRfc2VhcmNoX2Zvcm0iIGFjdGlvbj0ic2VhcmNoIiBtZXRob2Q9ImdldCI+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJxIiBpZD0iYmFyX3NlYXJjaCIgcGxhY2Vob2xkZXI9IuOCpOODqeOCueODiOOCkuaknOe0oiIgY2xhc3M9InNlYXJjaF9mb3JtX3RleHQgaGVhZGVyX2xlZnQgZWRpdGVkIiBtYXhsZW5ndGg9IjUxMCI+CjxpbnB1dCBpZD0ic2VhcmNoX2J1dHRvbiIgdHlwZT0iaW1hZ2UiIHNyYz0iL2ltZy9jb21tb24vaGVhZGVyL2J0bl9zZWFyY2gucG5nIiBhbHQ9IuaknOe0oiI+CjwvZm9ybT4KPC9kaXY+CjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CihmdW5jdGlvbigkLHdpbmRvdyxzZWFyY2hUYXJnZXQpewokKGZ1bmN0aW9uKCl7CnNlYXJjaC5pbml0KCJzZWFyY2giLCBzZWFyY2hUYXJnZXQpOwp9KTsKfSkKKGpRdWVyeSx3aW5kb3csImlsbHVzdCIpOwo8L3NjcmlwdD4KPGRpdiBpZD0iYWRfNDY4XzYwIj4KPGRpdiBpZD0iYWRzX3BjX3NlaWdhX2hlYWRlciI+PC9kaXY+CjwvZGl2PiAgICAgICAgPGRpdiBpZD0ic2dfZ2xvYmFsX25hdmkiIGNsYXNzPSJjZml4Ij4KPHVsIGlkPSJzZ19nbG9iYWxfbmF2aV9tYWluIiBkYXRhLWFjdGl2ZT0iaWxsdXN0Ij4KPGxpPjxhIGNsYXNzPSJzZ19uYXZpX3RvcCIgaHJlZj0iLz90cmFjaz1nbG9iYWxfbmF2aV90b3AiPuODiOODg+ODlzwvYT48L2xpPgo8bGk+PGEgY2xhc3M9InNnX25hdmlfaWxsdXN0IiBocmVmPSIvaWxsdXN0Lz90cmFjaz1nbG9iYWxfbmF2aV9pbGx1c3QiPuOCpOODqeOCueODiDwvYT48L2xpPgo8bGk+PGEgY2xhc3M9InNnX25hdmlfbWFuZ2EiIGhyZWY9Ii9tYW5nYS8/dHJhY2s9Z2xvYmFsX25hdmlfaWxsdXN0Ij7jg57jg7Pjgqw8L2E+PC9saT4KPGxpPjxhIGNsYXNzPSJzZ19uYXZpX2Jvb2siIGhyZWY9Ii9ib29rLz90cmFjaz1nbG9iYWxfbmF2aV9pbGx1c3QiPumbu+WtkOabuOexjTwvYT48L2xpPgo8L3VsPgo8c2NyaXB0PgooZnVuY3Rpb24oJCl7CnZhciBhY3RpdmUgPSAkKCIjc2dfZ2xvYmFsX25hdmlfbWFpbiIpLmRhdGEoImFjdGl2ZSIpOwppZiAoYWN0aXZlID09ICdzaHVuZ2EnKSB7CmFjdGl2ZSA9ICdpbGx1c3QnOwp9IGVsc2UgaWYgKGFjdGl2ZSA9PSAnbXknKSB7CmFjdGl2ZSA9ICd0b3AnOwp9CiQoIiNzZ19nbG9iYWxfbmF2aV9tYWluIikuZmluZCgibGkgLnNnX25hdmlfIithY3RpdmUpLmFkZENsYXNzKCJhY3RpdmUiKTsKfSkKKGpRdWVyeSkKPC9zY3JpcHQ+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2dfZ2xvYmFsX2JhciBjZml4Ij4KPHVsIGNsYXNzPSJzZ19wYW5rdXp1Ij4KPGxpIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL2RhdGEtdm9jYWJ1bGFyeS5vcmcvQnJlYWRjcnVtYiI+PGEgaHJlZj0iL2lsbHVzdC8iIGl0ZW1wcm9wPSJ1cmwiPjxzcGFuIGl0ZW1wcm9wPSJ0aXRsZSI+44Kk44Op44K544OIPC9zcGFuPjwvYT48L2xpPgo8bGkgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vZGF0YS12b2NhYnVsYXJ5Lm9yZy9CcmVhZGNydW1iIj48YSBocmVmPSIvdXNlci9pbGx1c3QvNzAxNzc3NyIgaXRlbXByb3A9InVybCI+PHNwYW4gaXRlbXByb3A9InRpdGxlIj5vc2FtYXJpPHNwYW4gY2xhc3M9InBhbmt1enVfc3VmZml4Ij4mbmJzcDvjgZXjgpPjga7jgqTjg6njgrnjg4g8L3NwYW4+PC9zcGFuPjwvYT48L2xpPgo8bGkgY2xhc3M9ImFjdGl2ZSIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vZGF0YS12b2NhYnVsYXJ5Lm9yZy9CcmVhZGNydW1iIj48c3BhbiBpdGVtcHJvcD0idGl0bGUiPuOCs+OCuOOCs+OCuDwvc3Bhbj48L2xpPgo8L3VsPgo8dWwgaWQ9InNnX2dsb2JhbF9uYXZpX3N1YiI+CjxsaT48YSBjbGFzcz0ic2dfbmF2aV9jcmVhdGUiIGhyZWY9Ii9jcmVhdGUvP3RyYWNrPWdsb2JhbF9uYXZpX3RvcCI+5oqV56i/44GZ44KLPC9hPjwvbGk+CjxsaT48YSBjbGFzcz0ic2dfbmF2aV9teSIgaHJlZj0iL215Lz90cmFjaz1nbG9iYWxfbmF2aV90b3AiPuODnuOCpOODmuODvOOCuDwvYT48L2xpPgo8L3VsPgo8L2Rpdj4KPC9kaXY+CjwvZGl2PiAgICA8L2Rpdj4KCgogIDxkaXYgaWQ9IndhdGNoX2ZiX2JhciIgY2xhc3M9ImZiX2JhciBmYl9iYXJfNjM0Mjg4MyIgc3R5bGU9ImJhY2tncm91bmQ6ICNmYzZmODYiIGRhdGEtYmFubmVyLWltYWdlLWlkPSI2MzQyODgzIj4KICA8YSBocmVmPSJodHRwOi8vc2VpZ2Eubmljb3ZpZGVvLmpwL21hbmdhL2V4cG8vYzkxL2NpcmNsZXMvP3RyYWNrPWlsbHVzdGZiIiA+PGRpdiBjbGFzcz0iaW5uZXIiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vbWF0ZXJpYWwvZGQxZGUwLzYzNDI4ODMpIj48cCBjbGFzcz0iZmJfY2xvc2UgZmJfY2xvc2VfNjM0Mjg4MyI+w5c8L3A+PC9kaXY+PC9hPgo8L2Rpdj4KICAKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAoZnVuY3Rpb24oJCkgewogICAgdmFyICRmYkJhciAgICAgPSAkKCcjd2F0Y2hfZmJfYmFyJyk7CiAgICB2YXIgaW1hZ2VJZCAgICA9ICRmYkJhci5kYXRhKCdiYW5uZXItaW1hZ2UtaWQnKSB8IDA7CiAgICB2YXIgY29va2llTmFtZSA9ICdmYl9oaWRlXycrIGltYWdlSWQ7CgogICAgaWYgKCEkLmNvb2tpZShjb29raWVOYW1lKSkgewogICAgICAkZmJCYXIuc2hvdygpOwogICAgfQoKICAgICRmYkJhci5maW5kKCcuZmJfY2xvc2UnKS5jbGljayhmdW5jdGlvbihlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgJC5jb29raWUoY29va2llTmFtZSwgMSwge3BhdGg6ICcvJywgZXhwaXJlczogMzB9KTsKICAgICAgJGZiQmFyLnNsaWRlVXAoJ2Zhc3QnKTsKICAgIH0pOwogIH0pKGpRdWVyeSk7Cjwvc2NyaXB0PgoKICAKPCEtLSAjY29udGVudCAtLT4KPGRpdiBpZD0iY29udGVudCIgY2xhc3M9ImlsbHVzdCBuZXdfdmVyIj4KCiAgCgogIAogIDwhLS0gI21haW4gLS0+CiAgPGRpdiBpZD0ibWFpbiIgY2xhc3M9ImpzX2hlYXRtYXBfbWFpbiIgZGF0YS1zaG93LWhlYXRtYXA9ImZhbHNlIj4KCiAgICAKICAgIDxhcnRpY2xlIGlkPSJkZXRhaWwiPgogICAgICAKICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsX2lubmVyIj4KICAgICAgICA8IS0t44Kk44Op44K544OI5oOF5aCxLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImltX2hlYWRfYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyIGNmaXgiPgogICAgICAgICAgICA8dWwgY2xhc3M9Im90aGVyX2luZm8iPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iZGF0ZSI+PHNwYW4gY2xhc3M9ImNyZWF0ZWQiPjIwMTXlubQwNeaciDMx5pelIDAyOjE1PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJraW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNvdW50cyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9jb3VudCI+CiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idmlldyIgICA+PHNwYW4gY2xhc3M9Imljb25fdmlld19iaWciICAgPjwvc3Bhbj48c3BhbiBjbGFzcz0idHh0Ij7plrLopqc8L3NwYW4+PHNwYW4gY2xhc3M9ImNvdW50X3ZhbHVlIj4xMDA8L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjb21tZW50Ij48c3BhbiBjbGFzcz0iaWNvbl9jb21tZW50X2JpZyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJ0eHQiPuOCs+ODoeODs+ODiDwvc3Bhbj48c3BhbiBjbGFzcz0iY291bnRfdmFsdWUiPjI8L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGlwIiAgID48c3BhbiBjbGFzcz0iaWNvbl9jbGlwX2JpZyIgICA+PC9zcGFuPjxzcGFuIGNsYXNzPSJ0eHQiPuOCr+ODquODg+ODlzwvc3Bhbj48YSA+PHNwYW4gY2xhc3M9ImNvdW50X3ZhbHVlIj4wPC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+44Kz44K444Kz44K4PC9oMT4KICAgICAgICAgICAgPHAgY2xhc3M9ImRpc2NyaXB0aW9uIj4KICAgICAgICAgICAgICDjgrPjgrjjgrPjgrjjga7jg4njg4Pjg4jntbUK44GT44KT44Gq44GL44KP44GE44KJ44GX44GE5a655ae/44Gn5q+S44KS5ZCQ44GP44Kz44K444Kz44K444GM5aCq44KJ44KT77yI5YiH5a6f77yJCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlsbHVzdF90YWdfY29udGFpbmVyIiBpZD0ia29fdGFnbGlzdCIgZGF0YS1saW5rX3RhcmdldD0iIiBkYXRhLXRhcmdldF9pZD0iNDkzNzY2MyI+PGRpdiBjbGFzcz0iaWxsdXN0X3RhZyBjZml4IHN0YXRpYyIgZGF0YS1iaW5kPSJ2aXNpYmxlOiAobW9kZSgpID09ICd2aWV3JyksIGNzczoge2lsbHVzdF90YWc6IHBhZ2VUYXJnZXQgPT0gJ2lsbHVzdCcsIG1hbmdhX3RhZzogcGFnZVRhcmdldCA9PSAnbWFuZ2EnfSI+CiAgPGgyPueZu+mMsuOCv+OCsDwvaDI+CgogIDx1bD4KICAgIDwhLS0ga28gZm9yZWFjaDogdGFncyAtLT4KICAgIDxsaSBjbGFzcz0idGFnIj4KICAgICAgPGEgZGF0YS1iaW5kPSJ0ZXh0OiBuYW1lLCBhdHRyOiB7IGhyZWY6IGhyZWYgfSIgY2xhc3M9InRleHQiIHJlbD0idGFnIj48L2E+CiAgICAgIDx1bD4KICAgICAgICA8bGk+CiAgICAgICAgICA8IS0tIGtvIGlmOiAoJHBhcmVudC5wYWdlVGFyZ2V0ID09ICdtYW5nYScgJiYgZHVtbXkpLS0+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZHVtbXlfaWNvbiBpY29uIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb25fZHVtbXkiIGRhdGEtYmluZD0ic3R5bGU6IHtiYWNrZ3JvdW5kSW1hZ2U6ICd1cmwoXCcnICsgaWNvbiArICdcJyknIH0iPjwvc3Bhbj4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwhLS0gL2tvIC0tPgogICAgICAgICAgPCEtLSBrbyBpZm5vdDogKCRwYXJlbnQucGFnZVRhcmdldCA9PSAnbWFuZ2EnICYmIGR1bW15KS0tPgogICAgICAgICAgPGEgZGF0YS1iaW5kPSJhdHRyOnsgaHJlZjogbmljb2RpY191cmwgfSIgY2xhc3M9Im5pY29kaWNfaWNvbiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0idG9vbHRpcCI+CiAgICAgICAgICAgIDxzcGFuIGRhdGEtYmluZD0iY3NzOnsnaWNvbl9kaXNhYmxlX2RpYyc6ICFuaWNvZGljX2F2YWlsYWJsZSgpLCAnaWNvbl9kaWMnOiBuaWNvZGljX2F2YWlsYWJsZSgpfSI+PC9zcGFuPgogICAgICAgICAgPC9hPgogICAgICAgICAgPCEtLSAva28gLS0+CiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8IS0tIC9rbyAtLT4KICAgIDxsaSBjbGFzcz0idGFnX2VkaXRfbGluayIgZGF0YS1iaW5kPSJjbGljazogdG9nZ2xlTW9kZSI+W+OCv+OCsOe3qOmbhl08L2xpPgogIDwvdWw+CjwvZGl2PjxkaXYgY2xhc3M9ImNmaXggZWRpdCIgZGF0YS1iaW5kPSJ2aXNpYmxlOiAobW9kZSgpID09ICdlZGl0JyksIGNzczoge2lsbHVzdF90YWc6IHBhZ2VUYXJnZXQgPT0gJ2lsbHVzdCcsIG1hbmdhX3RhZzogcGFnZVRhcmdldCA9PSAnbWFuZ2EnfSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgPGgyPjxzcGFuIGNsYXNzPSJpY29uX3RhZ19iaWciPjwvc3Bhbj7nmbvpjLLjgr/jgrA8L2gyPgogIDx1bCBpZD0idGFnX2xpc3RfZWRpdCI+CiAgICA8bGkgY2xhc3M9InRhZ19saXN0X2Jsb2NrIj4KICAgICAgPHVsPgogICAgICAgIDwhLS0ga28gZm9yZWFjaDogdGFncyAtLT4KICAgICAgICAgIDwhLS0ga28gaWZub3Q6ICgkcGFyZW50LnBhZ2VUYXJnZXQgPT0gJ21hbmdhJykgJiYgaWNvbiAtLT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJ0YWciPgogICAgICAgICAgICAgIDxhIGNsYXNzPSJ0ZXh0IiByZWw9InRhZyIgZGF0YS1iaW5kPSJ0ZXh0OiBuYW1lIj48L2E+CiAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgPCEtLSBrbyBpZm5vdDogKCRwYXJlbnQucGFnZVRhcmdldCA9PSAnbWFuZ2EnKSAmJiBpY29uIC0tPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsb2NrIiBkYXRhLWJpbmQ9InZpc2libGU6ICRwYXJlbnQuaXNPd25lciI+CiAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYmluZD0iY2xpY2s6ICRwYXJlbnQubG9ja1RhZywgYXR0cjp7IHRpdGxlOiBpc19sb2NrZWQoKT8gJ+ODreODg+OCr+OCkuino+mZpOOBmeOCiyc6J+ODreODg+OCr+OBmeOCiycgfSIgcmVsPSJ0b29sdGlwIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBkYXRhLWJpbmQ9ImNzczogeydpY29uX2xvY2snOiBpc19sb2NrZWQoKSwgJ2ljb25fdW5sb2NrJzogIWlzX2xvY2tlZCgpIH0sIHRleHQ6IGlzX2xvY2tlZD8gJ+ODreODg+OCr+a4iOOBvyc6J+acquODreODg+OCryciPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwhLS0gL2tvIC0tPgogICAgICAgICAgICAgICAgPCEtLSBrbyBpZjogKCRwYXJlbnQucGFnZVRhcmdldCA9PSAnaWxsdXN0JykgLS0+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNhdGVnb3J5IiBkYXRhLWJpbmQ9InZpc2libGU6ICgoJHBhcmVudC5pc093bmVyIHx8ICgkcGFyZW50LmNhdGVnb3J5VGFnSWQoKSA9PSBpZCkpICAmJiBpc19sb2NrZWQoKSAmJiBpc19jYXRlZ29yeSkiPgogICAgICAgICAgICAgICAgICA8YSBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LmNhdGVnb3JpemVUYWcsIGF0dHI6eyB0aXRsZTogKCRwYXJlbnQuaXNPd25lciAmJiAoJHBhcmVudC5jYXRlZ29yeV90YWdfaWQgPT0gaWQpKT8gJ+OCq+ODhuOCtOODquOBq+ioreWumic6Jyd9IiByZWw9InRvb2x0aXAiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtYmluZD0iY3NzOiB7J2ljb25fY2F0ZWdvcnknOiAoJHBhcmVudC5jYXRlZ29yeVRhZ0lkKCkgPT0gaWQpLCAnaWNvbl91bmNhdGVnb3J5JzogKCRwYXJlbnQuY2F0ZWdvcnlUYWdJZCgpICE9IGlkKX0iIHJlbD0idG9vbHRpcCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPCEtLSAva28gLS0+CiAgICAgICAgICAgICAgICA8IS0tIGtvIGlmOiAoJHBhcmVudC5wYWdlVGFyZ2V0ID09ICdtYW5nYScpICYmIGljb24gLS0+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIGRhdGEtYmluZD0iYXR0cjoge3NyYzogaWNvbn0iPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPCEtLSAva28gLS0+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRlbGV0ZSIgZGF0YS1iaW5kPSJ2aXNpYmxlOiAhaXNfbG9ja2VkKCksIGVuYWJsZTogIWlzX2xvY2tlZCgpIj4KICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IuWJiumZpCIgcmVsPSJ0b29sdGlwIiBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LnJlbW92ZVRhZyI+PHNwYW4gY2xhc3M9Imljb25fZGVsZXRlIj7liYrpmaQ8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPCEtLSAva28gLS0+CiAgICAgICAgPCEtLSAva28gLS0+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpIGNsYXNzPSJ0YWdfZGVmYXVsdF9idXR0b24gYnRuIG1pbiBhY3RpdmUiIGRhdGEtYmluZD0iY2xpY2s6IHRvZ2dsZU1vZGUiPuOCv+OCsOe3qOmbhuOCkue1guS6hjwvbGk+CgogICAgPGxpIGNsYXNzPSJhZGRfdGFnIj4KICAgICAgPGRpdiBjbGFzcz0idGFnX2lucHV0X3RleHQgbWVzc2FnZV90YXJnZXQiPgogICAgICAgIDxmb3JtIGRhdGEtYmluZD0ic3VibWl0OiBhZGRUYWciPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRhZ3MiIHNpemU9IjI1NSIgcGxhY2Vob2xkZXI9IuOCv+OCsOOCkui/veWKoOeZu+mMsiIgZGF0YS1iaW5kPSJ2YWx1ZTogaW5wdXRUZXh0LCB2YWx1ZVVwZGF0ZTogJ2FmdGVya2V5ZG93bicsIGVuYWJsZWQ6ICFpc0Nvbm5lY3RpbmcoKSwgaGFzRm9jdXM6IGhhc0ZvY3VzIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IueZu+mMsiIgY2xhc3M9ImJ0biBtaW4iIGRhdGEtYmluZD0iY2xpY2s6IGFkZFRhZywgZW5hYmxlZDogIWlzQ29ubmVjdGluZygpIj4KICAgICAgICA8L2Zvcm0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRleHRfY291bnQiPgogICAgICAgICAgPHN0cm9uZyBkYXRhLWJpbmQ9InRleHQ6IGNvdW50Ij4wPC9zdHJvbmc+LzEwCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAg5Y2Y6Kqe44KS56m655m944Gn5Yy65YiH44KL44Go5LiA5bqm44Gr6KSH5pWw44Gu44K/44Kw44KS55m76Yyy44Gn44GN44G+44GZ44CCPGJyPgogICAgICA8IS0tIGtvIGlmOiAocGFnZVRhcmdldCA9PSAnaWxsdXN0JykgLS0+CiAgICAgIDxzcGFuIGRhdGEtYmluZD0idmlzaWJsZTogaXNPd25lciI+CiAgICAgICAgPHN0cm9uZyBkYXRhLWJpbmQ9ImZvcmVhY2g6IGNhdGVnb3J5TGlzdCI+PHNwYW4gZGF0YS1iaW5kPSJ0ZXh0OiAn44CMJyskZGF0YSsn44CNJyI+PC9zcGFuPjwvc3Ryb25nPgogICAgICAgIOOBrjxicj7jgYTjgZrjgozjgYvjga7jgr/jgrDjgpLnmbvpjLLjgZfjgZ/loLTlkIjjgIHjgqvjg4bjgrTjg6rjgavoqK3lrprjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIKICAgICAgPC9zcGFuPgogICAgICA8IS0tIC9rbyAtLT4KICAgIDwvbGk+CgogICAgPCEtLSBrbyBpZjogKHBhZ2VUYXJnZXQgPT0gJ2lsbHVzdCcpIC0tPgogICAgPGxpIGNsYXNzPSJjYW5jZWxfZXZlbnQiIGRhdGEtYmluZD0idmlzaWJsZTogZmFsc2UiPgogICAgICA8c3Ryb25nIGRhdGEtYmluZD0idGFnczogZXZlbnRsb2NrVGFncyI+PC9zdHJvbmc+CiAgICAgIOOCkuino+mZpOOBmeOCi+OBq+OBr+OCpOODmeODs+ODiOOCkui+numAgOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgjxicj4KICAgICAg5LiA5bqm6L6e6YCA44GZ44KL44Go44CB5YaN6Kit5a6a44Gv44Gn44GN44G+44Gb44KT44CCCiAgICAgIDx1bD48bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBtaW4iPui+numAgOOBmeOCizwvYT48L2xpPjwvdWw+CiAgICA8L2xpPgogICAgPCEtLSAva28gLS0+CiAgPC91bD4KPC9kaXY+CjwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0idXNlciIgaWQ9ImtvX3dhdGNobGlzdF9oZWFkZXIiIGRhdGEtaWQ9IjcwMTc3NzciIGRhdGEtc3RhdHVzPSIwIiBkYXRhLWNvdW50PSIxNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXJfbGluayI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii91c2VyL2lsbHVzdC83MDE3Nzc3Ij4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwczovL3NlY3VyZS1kY2RuLmNkbi5uaW1nLmpwL25pY29hY2NvdW50L3VzZXJpY29uLzcwMS83MDE3Nzc3LmpwZz8xMjU2OTI1ODkzIiBhbHQ9IiIgLz48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyX25hbWUiPjxzcGFuIGNsYXNzPSJjYXB0aW9uIj7mipXnqL/ogIU8L3NwYW4+PHN0cm9uZz5vc2FtYXJpPC9zdHJvbmc+44GV44KTPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyX2Zhdm9yaXRlIG1lc3NhZ2VfdGFyZ2V0Ij4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9ImJ0biBmYXZvcml0ZSIgdGl0bGU9IuODpuODvOOCtuODvOOCkuODleOCqeODreODvOOBmeOCiyIgcmVsPSJ0b29sdGlwIgogICAgICAgICAgICAgICAgICAgIGRhdGEtYmluZD0iY3NzOnsgYWN0aXZlOiBpc0FjdGl2ZSgpIH0sIGF0dHI6eyB0aXRsZTogaXNBY3RpdmUoKT8gJ+ODpuODvOOCtuODvOOBruODleOCqeODreODvOOCkuino+mZpCc6J+ODpuODvOOCtuODvOOCkuODleOCqeODreODvOOBmeOCiycgfSwgY2xpY2s6IHRvZ2dsZVN0YXRlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbl93YXRjaGxpc3RfYWRkIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidG5fdGV4dCIgZGF0YS1iaW5kPSJ0ZXh0OiBpc0FjdGl2ZSgpPyAn44Om44O844K244O844Gu44OV44Kp44Ot44O844KS6Kej6ZmkJzon44Om44O844K244O844KS44OV44Kp44Ot44O844GZ44KLJyI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwhLS0vL+OCpOODqeOCueODiOaDheWgsS0tPgoKICAgICAgICA8IS0tIC5pbGx1c3RfbWFpbiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJpbGx1c3RfbWFpbiBjZml4Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImlsbHVzdF93cmFwcGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRodW1fbGFyZ2UiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ltYWdlL3NvdXJjZS80OTM3NjYzIiBpZD0iaWxsdXN0X2xpbmsiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvdGh1bWIvNDkzNzY2M2kiIGFsdD0iIj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWxsdXN0X3N1Yl9pbmZvIj4KCiAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImlsbHVzdF9wb3AiIGNsYXNzPSJwb3AiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIGRhdGEtdGFyZ2V0X2lkPSI0OTM3NjYzIj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJidG5fY2xvc2UiIHRpdGxlPSJQT1DjgpLplonjgZjjgosiPjxzcGFuIGNsYXNzPSJpY29uX2Nsb3NlX2Jvb2tzdXBwb3J0Ij5QT1DjgpLplonjgZjjgos8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgPGgyPuOBk+OBruabuOexjeOCkuW/nOaPtOS4re+8gTwvaDI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvd2F0Y2gvYmsiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgIDxwPjwvcD4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudF90cmVlIGNmaXgiIGlkPSJrb19jcHAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiCiAgZGF0YS1iaW5kPSJ2aXNpYmxlOiB0cmVlQXZhaWxhYmxlKCksIGNzczp7IGFjdGl2ZTogdHJlZUF2YWlsYWJsZSgpIH0sIGF0dHI6eyAnZGF0YS1pbml0aWFsaXplZCc6IGluaXRpYWxpemVkIH0iCiAgZGF0YS1jb21tb25zX3dlYl91cmw9Imh0dHA6Ly9jb21tb25zLm5pY292aWRlby5qcCIKICBkYXRhLWNvbW1vbnNfYXBpX3VybD0iaHR0cDovL2FwaS5jb21tb25zLm5pY292aWRlby5qcCIKICBkYXRhLXRhcmdldF9pZD0iaW00OTM3NjYzIj4KCiAgPHAgY2xhc3M9IndhdGNoX3RyZWUiIGRhdGEtYmluZD0idmlzaWJsZTogdHJlZUF2YWlsYWJsZSgpIj4KICAgIDxhIGRhdGEtYmluZD0iYXR0cjp7IGhyZWY6IHRyZWVVcmwgfSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSLjgrPjg7Pjg4bjg7Pjg4Tjg4Tjg6rjg7zjgpLnorroqo3jgZnjgosiPgogICAgPGltZyBzcmM9Ii9pbWcvaWxsdXN0L25ldy9jb21tb24vaWNvbl90cmVlLnBuZyIgYWx0PSLjgrPjg7Pjg4bjg7Pjg4Tjg4Tjg6rjg7wiPuOCs+ODs+ODhuODs+ODhOODhOODquODvOOCkueiuuiqjeOBmeOCizwvYT4KICA8L3A+CgogIDxkaXYgY2xhc3M9InRyZWVfY29udGVudCIgZGF0YS1iaW5kPSJ2aXNpYmxlOiAocGFyZW50Q291bnQoKSA+IDApIj4KICAgIDxkaXYgY2xhc3M9InRodW0iPgogICAgICA8YSBkYXRhLWJpbmQ9ImF0dHI6eyBocmVmOiBwYXJlbnRVcmwgfSI+CiAgICAgICAgPGltZyBkYXRhLWJpbmQ9ImF0dHI6eyBzcmM6IHBhcmVudFRodW1iVXJsLCBhbHQ6IHBhcmVudFRpdGxlIH0iPgogICAgICA8L2E+CiAgICA8L2Rpdj4KICAgIDx1bD4KICAgICAgPGxpIGNsYXNzPSJwYXJlbnQiPgogICAgICAgIDxhIGRhdGEtYmluZD0iYXR0cjp7IGhyZWY6IHRyZWVVcmwgfSI+6Kaq5L2c5ZOBKDxzcGFuIGRhdGEtYmluZD0idGV4dDogcGFyZW50Q291bnQoKSI+MDwvc3Bhbj4pPC9hPgogICAgICA8L2xpPgogICAgICA8bGkgY2xhc3M9InBhcmVudF90aXRsZSI+PGEgZGF0YS1iaW5kPSJhdHRyOnsgaHJlZjogcGFyZW50VXJsIH0sIHRleHQ6IHBhcmVudFRpdGxlIj48L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJwYXJlbnRfZGF0ZSI+PHNwYW4gZGF0YS1iaW5kPSJ0ZXh0OiBwYXJlbnRSZWdpc3RlcmVkIj48L3NwYW4+IOOBq+OCs+ODs+ODhuODs+ODhOODhOODquODvOOBq+eZu+mMsuOBleOCjOOBvuOBl+OBnzwvbGk+CiAgICA8L3VsPgogIDwvZGl2Pgo8L2Rpdj4gICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDwhLS0gLmlsbHVzdF9zaWRlIC0tPgogICAgICAgICAgPGRpdiBjbGFzcz0iaWxsdXN0X3NpZGUiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpcCIgaWQ9ImtvX2NsaXAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZF9jbGlwIGNmaXgiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0X2NsaXAiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3RfY2xpcF9idXR0b24iIHJlbD0idG9vbHRpcCIgdGl0bGU9IuOCr+ODquODg+ODl+WFiOOCkumBuOaKniI+PHNwYW4gY2xhc3M9Imljb25fY2xpcF9hZGQiPjwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpcF9saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmdWtpZGFzaGkgdG9wIGNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZV9iYXIiPjxoMj7jgq/jg6rjg4Pjg5flhYjjgpLpgbjmip48L2gyPjxwIGNsYXNzPSJpY29uX2Nsb3NlX2Jvb2tzdXBwb3J0IGJ0bl9jbG9zZSI+PC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJjbGlwX2dyb3VwX2xpc3QiIGRhdGEtYmluZD0iZm9yZWFjaDogZ3JvdXBzIiBkYXRhLWluaXRpYWxpemU9IltdIiBkYXRhLXRhcmdldF9pZD0iNDkzNzY2MyIgZGF0YS1sYXN0X3NlbGVjdGVkPSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBkYXRhLWJpbmQ9ImlmOiAkaW5kZXgoKSA9PSAwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFkZF9saXN0IiBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LmNyZWF0ZUdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uX2NsaXBfbmV3X2ZvbGRlciI+77yLPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQiPuaWsOimj+S9nOaIkDxzcGFuIGNsYXNzPSJjYXB0aW9uIj7pnZ7lhazplovnirbmhYvjgafkvZzmiJDjgZXjgozjgb7jgZk8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtYmluZD0iY3NzOntzZWxlY3RlZDogKGlkID09ICRwYXJlbnQuc2VsZWN0ZWQoKSl9LCBjbGljazogJHBhcmVudC5zZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzdGF0dXMiIGRhdGEtYmluZD0iY3NzOntvcGVuZWQ6IGlzX3B1YmxpYywgY2xvc2VkOiAhaXNfcHVibGljIH0sIHRleHQ6IGlzX3B1YmxpYz8gJ+WFrOmWiyc6J+mdnuWFrOmWiyciPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCIgZGF0YS1iaW5kPSJ0ZXh0OiBuYW1lIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpcF9idXR0b24gIG1lc3NhZ2VfdGFyZ2V0Ij4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRkX2NsaXBfYnV0dG9uIiBkYXRhLWJpbmQ9ImNsaWNrOiAoZ3JvdXBzKCkubGVuZ3RoID4gMCk/IGFkZENsaXAgOiBjcmVhdGVHcm91cCI+PHN0cm9uZyBkYXRhLWJpbmQ9InRleHQ6IHNlbGVjdGVkR3JvdXBOYW1lIj7mlrDjgZfjgYTjgq/jg6rjg4Pjg5c8L3N0cm9uZz48c3BhbiBkYXRhLWJpbmQ9InRleHQ6IChncm91cHMoKS5sZW5ndGggPiAwKT8gJ+OBq+i/veWKoCc6J+OCkuS9nOaIkCciPjwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gbmdjb21tZW50IC0tPgogICAgICAgICAgICA8c2VjdGlvbiBpZD0ia29fY29tbWVudG5nIgogICAgICAgICAgICAgIGRhdGEtdXNlcl9pZD0iMjM2Njk4NTgiCiAgICAgICAgICAgICAgZGF0YS11c2VyX3ByZW1pdW09IjAiCiAgICAgICAgICAgICAgZGF0YS1jbGllbnRfbmc9IltdIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ19jb21tZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZ1a2lkYXNoaSByaWdodCB0b3AiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ19jb21tZW50X2lubmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZV9iYXIiPgogICAgICAgICAgICAgICAgICAgICAgPGgzPk5H6Kit5a6aPC9oMz4KICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJpY29uX2Nsb3NlX2Jvb2tzdXBwb3J0IGNsb3NlX25nX2NvbW1lbnQiPuioreWumuOCkumWieOBmOOCizwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBkYXRhLWJpbmQ9InN1Ym1pdDogcG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iTkfoqK3lrprjgpLkvb/nlKgiIGRhdGEtYmluZD0iY2hlY2tlZDogdXNlTmciPiBOR+ioreWumuOCkuS9v+eUqDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICA8aDQ+6Kit5a6a44KS6L+95YqgPC9oND4KICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icmFkaW9fbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJuZ190eXBlIiB2YWx1ZT0iMCIgZGF0YS1iaW5kPSJjaGVja2VkOiB0eXBlIj7jgrPjg6Hjg7Pjg4g8L2xhYmVsPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJuZ190eXBlIiB2YWx1ZT0iMSIgZGF0YS1iaW5kPSJjaGVja2VkOiB0eXBlIj7jg6bjg7zjgrbjg7xJRDwvbGFiZWw+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ193b3JkIG1lc3NhZ2VfdGFyZ2V0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtYmluZD0idmFsdWU6IHNvdXJjZSwgdmFsdWVVcGRhdGU6ICdhZnRlcmtleWRvd24nIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i6L+95YqgIiBjbGFzcz0iYnRuIG1pbiI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxoND4KICAgICAgICAgICAgICAgICAgICAgICAg6Kit5a6a5riI44G/5LiA6KanCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGF0YS1iaW5kPSJ0ZXh0OiBuZ0NvdW50KCkiPjwvc3Bhbj4mbmJzcDsvJm5ic3A7PHNwYW4gZGF0YS1iaW5kPSJ0ZXh0OiBuZ0NvdW50TGltaXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJuZ19lbXB0eSIgZGF0YS1iaW5kPSJ2aXNpYmxlOiBuZ0xpc3QoKS5sZW5ndGggPT0gMCI+TkfoqK3lrprjga/jgb7jgaDjgYLjgorjgb7jgZvjgpPjgII8L3A+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ19jb21tZW50X2xpc3QiIGRhdGEtYmluZD0idmlzaWJsZSA6IG5nTGlzdCgpLmxlbmd0aCA+IDAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9InRvcF90ciI+56iu5YilPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJ0b3BfdHIiPuWApDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0idG9wX3RyIj7liYrpmaQ8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBkYXRhLWJpbmQ9ImZvcmVhY2g6IG5nTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0ia2luZCIgZGF0YS1iaW5kPSJ0ZXh0OiB0eXBlX25hbWUiPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idmFsdWUiIGRhdGEtYmluZD0idGV4dDogc291cmNlIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImRlbGV0ZSI+PHNwYW4gY2xhc3M9ImxpbmtfZGVsZXRlIiBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LnJlbW92ZUl0ZW0iPuWJiumZpDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwhLS0gLy8ubmdjb21tZW50IC0tPgoKICAgICAgICAgICAgPCEtLSAuaWxsdXN0X2NvbW1lbnQgLS0+CiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJrb19jb21tZW50IiBjbGFzcz0iaWxsdXN0X2NvbW1lbnQiCiAgICAgICAgICAgICAgZGF0YS10YXJnZXRfaWQ9IjQ5Mzc2NjMiCiAgICAgICAgICAgICAgZGF0YS1jb21tZW50X2NvdW50PSIyIgogICAgICAgICAgICAgIGRhdGEtcG9zdF9tb2RlPSJhbm9ueW1vdXMiCiAgICAgICAgICAgICAgZGF0YS1pbml0aWFsaXplPSJbeyZxdW90O2lkJnF1b3Q7OiZxdW90OzIzMjE5NDIyJnF1b3Q7LCZxdW90O3RleHQmcXVvdDs6JnF1b3Q7XHUzMDdlXHUzMDVmXHU2MWQwXHUzMDRiXHUzMDU3XHUzMDQ0XHUzMDgyXHUzMDZlXHUzMDkyJnF1b3Q7LCZxdW90O2RhdGUmcXVvdDs6JnF1b3Q7MTVcLzA2XC8wNSAxNzowMCZxdW90OywmcXVvdDt1c2VyJnF1b3Q7OiZxdW90O0IwUGRIaGVBSXgyOXNwa1JVVXZJTmxMdUJucyZxdW90OywmcXVvdDtpc19vd25lciZxdW90OzpmYWxzZSwmcXVvdDtpc192aXNpYmxlJnF1b3Q7OnRydWUsJnF1b3Q7aXNfbmV3JnF1b3Q7OmZhbHNlfSx7JnF1b3Q7aWQmcXVvdDs6JnF1b3Q7MjMyMjUxMTkmcXVvdDssJnF1b3Q7dGV4dCZxdW90OzomcXVvdDtcdTYxZDBcdTMwNGJcdTMwNTdcdTMwNDRcdTMwNjdcdTMwNTlcdTMwODhcdTMwNmRcdTMwMDJcdTMwYzZcdTMwZWNcdTMwZDNcdTMwYTJcdTMwY2JcdTMwZTFcdTMwOTJcdTMwNmFcdTMwOTNcdTMwNjhcdTMwNmFcdTMwNGZcdTg5OGJcdTMwNjZcdTMwMDFcdTMwNTlcdTMwNjNcdTMwNGJcdTMwOGFcdTMwNmZcdTMwN2VcdTMwNjNcdTMwNWZcdTYwMWRcdTMwNDRcdTUxZmFcdTMwNjdcdTMwNTlcdTMwMDImcXVvdDssJnF1b3Q7ZGF0ZSZxdW90OzomcXVvdDsxNVwvMDZcLzA2IDAwOjQ3JnF1b3Q7LCZxdW90O3VzZXImcXVvdDs6JnF1b3Q7NzAxNzc3NyZxdW90OywmcXVvdDtpc19vd25lciZxdW90Ozp0cnVlLCZxdW90O2lzX3Zpc2libGUmcXVvdDs6dHJ1ZSwmcXVvdDtpc19uZXcmcXVvdDs6ZmFsc2V9XSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVfYmFyIj4KICAgICAgICAgICAgICAgIDxoMj4KICAgICAgICAgICAgICAgICAg44Kz44Oh44Oz44OICiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudF9jb21tZW50Ij4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJzaG93X2NvdW50IiBkYXRhLWJpbmQ9InRleHQ6IGNvbW1lbnRTaG93Q291bnQoKSI+MDwvc3Ryb25nPuS7tiAvIOWFqDxzcGFuIGNsYXNzPSJ0b3RhbF9jb3VudCIgZGF0YS1iaW5kPSJ0ZXh0OiBjb21tZW50Q291bnQoKSI+MDwvc3Bhbj7ku7YKICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjb21tZW50X21vcmVfbGluayI+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyI+PHNwYW4gY2xhc3M9Imljb25fY29tbWVudF9hbGwiPjwvc3Bhbj7jgZnjgbnjgaboqq3jgoA8L2E+PC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9Im5nX2NvbW1lbnRfbGluayIgdGl0bGU9IuOCs+ODoeODs+ODiE5H6Kit5a6aIiByZWw9InRvb2x0aXAiPjxzcGFuIGNsYXNzPSJpY29uX25nX2NvbW1lbnQiPk5H6Kit5a6aPC9zcGFuPjwvcD4KICAgICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICAgIDxwIGNsYXNzPSJjb21tZW50X2VtcHR5IiBkYXRhLWJpbmQ9InZpc2libGU6IGl0ZW1zKCkubGVuZ3RoID09IDAiPuOCs+ODoeODs+ODiOOBr+OBvuOBoOOBguOCiuOBvuOBm+OCk+OAgjwvcD4KICAgICAgICAgICAgICA8dWwgaWQ9ImNvbW1lbnRfbGlzdCIgY2xhc3M9ImNvbW1lbnRfbGlzdCIgZGF0YS1iaW5kPSJmb3JlYWNoOiBpdGVtcyI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNvbW1lbnRfbGlzdF9pdGVtIgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBkYXRhLWJpbmQ9ImNzczp7dW5wdWJsaWM6ICFpc192aXNpYmxlKCksIHVzZXI6IGlzX293bmVyLCB1bnB1YmxpYyA6IGlzX2ZpbHRlcmVkKCl9LCBldmVudDp7Y29udGV4dG1lbnU6ICRwYXJlbnQuc2hvd05nTWVudX0iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb21tZW50X2luZm8iIGRhdGEtZGlzcGxheV9mbGFnPSIiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY291bnRfbmV3IiBkYXRhLWJpbmQ9InZpc2libGU6IGlzX25ldyI+TkVXPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRhdGUiPjxzcGFuIGRhdGEtYmluZD0idGV4dDogZGF0ZSI+PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJpZCI+Tm8uPHNwYW4gZGF0YS1iaW5kPSJ0ZXh0OiBpZCI+PC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIiBkYXRhLWJpbmQ9InZpc2libGU6IGlzX293bmVyIj7mipXnqL/ogIU8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGV4dCIKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWJpbmQ9InRleHQ6IGlzX2ZpbHRlcmVkKCk/ICcjIyPjgZPjga7jgrPjg6Hjg7Pjg4jjga/ooajnpLrjgZXjgozjgb7jgZvjgpMjIyMnIDogdGV4dCIKICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmdfbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5nX21lbnVfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYWRkX25nX2NvbW1lbnQiIGRhdGEtYmluZD0iY2xpY2s6ICRwYXJlbnQuYWRkTmdDb21tZW50Ij5OR+OCs+ODoeODs+ODiOOBq+i/veWKoDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYWRkX25nX3VzZXIiICAgIGRhdGEtYmluZD0iY2xpY2s6ICRwYXJlbnQuYWRkTmdVc2VyIj5OR+ODpuODvOOCtuODvOOBq+i/veWKoDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ib3Blbl9uZ19jb21tZW50Ij5OR+ioreWumuS4gOimp+OCkuimi+OCizwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyIj4KICAgICAgICAgICAgICAgICAgPG5vc2NyaXB0PgogICAgICAgICAgICAgICAgICDjgrPjg6Hjg7Pjg4jjgZnjgovjgavjga9qYXZhc2NyaXB044KS5pyJ5Yq544Gr44GX44Gm44GP44Gg44GV44GECiAgICAgICAgICAgICAgICAgIDwvbm9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgIDxmb3JtIGlkPSJjb21tZW50X3Bvc3RfZm9ybSIgY2xhc3M9ImNvbW1lbnRfcG9zdF9ldmVudGVkIiBkYXRhLWJpbmQ9InN1Ym1pdDogcG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWVudF9wb3N0IGNmaXgiPgoKICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRfdGV4dCBtZXNzYWdlX3RhcmdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjb250ZW50IiBjbGFzcz0iY29udGVudCIgaWQ9ImNvbW1lbnRfcG9zdF9pbnB1dCIgZGF0YS1iaW5kPSJ2YWx1ZTogY29udGVudCwgdmFsdWVVcGRhdGU6ICdhZnRlcmtleWRvd24nLCBlbmFibGU6ICFpc0Nvbm5lY3RpbmcoKSIgcGxhY2Vob2xkZXI9IuOCs+ODoeODs+ODiOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhCIgbWF4bGVuZ3RoPSIxMjAiPgogICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWVudF9wb3N0X2J1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0X2NvdW50Ij48c3Ryb25nIGRhdGEtYmluZD0idGV4dDogbGV0dGVyQ291bnQiPjA8L3N0cm9uZz4vNjA8L3NwYW4+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgY2xhc3M9ImNvbW1lbnRfYnRuIGJ0biBub3JtYWwiID48c3BhbiBjbGFzcz0iaWNvbl9jb21tZW50X3Bvc3QiPjwvc3Bhbj7jgrPjg6Hjg7Pjg4jjgZnjgos8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8IS0tIC8vLmlsbHVzdF9jb21tZW50IC0tPgoKICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPCEtLSAvLy5pbGx1c3Rfc2lkZSAtLT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8IS0tIC8vLmlsbHVzdF9tYWluIC0tPgogICAgICA8L2Rpdj4KICAgIDwvYXJ0aWNsZT4KCiAgICA8IS0tIC5kZXRhaWwtLT4KICAgIDxkaXYgY2xhc3M9InJlbGF0ZWRfaW5mbyBjZml4IiBpZD0icmVsYXRlZF9pbmZvIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIDwhLS0gLmlsbHVzdF9zdWJfaW5mby0tPgogICAgICA8ZGl2IGNsYXNzPSJyZWxhdGVkX2luZm9fbWFpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGVkX3VzZXIgcmVsYXRlZF9ib3giPgogICAgICAgICAgPGRpdiBjbGFzcz0idXNlciIgaWQ9ImtvX3dhdGNobGlzdF9pbmZvIgogICAgICAgICAgICBkYXRhLWlkPSI3MDE3Nzc3IgogICAgICAgICAgICBkYXRhLXN0YXR1cz0iMCIKICAgICAgICAgICAgZGF0YS1jb3VudD0iMTQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImNmaXgiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0idGh1bSI+PGEgaHJlZj0iL3VzZXIvaWxsdXN0LzcwMTc3NzciPjxpbWcgc3JjPSJodHRwczovL3NlY3VyZS1kY2RuLmNkbi5uaW1nLmpwL25pY29hY2NvdW50L3VzZXJpY29uLzcwMS83MDE3Nzc3LmpwZz8xMjU2OTI1ODkzIiBhbHQ9IiI+PC9hPjwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyX25hbWUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL3VzZXIvaWxsdXN0LzcwMTc3NzciPjxzdHJvbmc+b3NhbWFyaTwvc3Ryb25nPuOBleOCkzwvYT4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlcl9mYXZvcml0ZSBtZXNzYWdlX3RhcmdldCI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0iYnRuIGZhdm9yaXRlIGJpZyIgdGl0bGU9IiIgcmVsPSJ0b29sdGlwIgogICAgICAgICAgICAgICAgICBkYXRhLWJpbmQ9ImNzczp7IGFjdGl2ZTogaXNBY3RpdmUoKSB9LCBhdHRyOnsgdGl0bGU6IGlzQWN0aXZlKCk/ICfjg6bjg7zjgrbjg7zjga7jg5Xjgqnjg63jg7zjgpLop6PpmaQnOicnIH0sIGNsaWNrOiB0b2dnbGVTdGF0ZSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uX3dhdGNobGlzdF9hZGQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ0bl90ZXh0IiBkYXRhLWJpbmQ9InRleHQ6IGlzQWN0aXZlKCk/ICfjg5Xjgqnjg63jg7zmuIjjgb8nOifjg5Xjgqnjg63jg7zjgZnjgosnIj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmF2b3JpdGVfY291bnQiPjxzdHJvbmcgZGF0YS1iaW5kPSJ0ZXh0OiB3YXRjaENvdW50Ij48L3N0cm9uZz51c2VyPC9zcGFuPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJvdGhlcl9pbGx1c3QgdXNlcl9pbGx1c3QiPgogICAgICAgICAgICA8aDI+b3NhbWFyaeOBleOCk+OBjOaKleeov+OBl+OBn+S7luOBruOCpOODqeOCueODiDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlsbHVzdF9saXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpdGVtX2xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW00OTg0MDU0IiB0aXRsZT0i44Os44Kk44OB44Kn44OrIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi80OTg0MDU0Y3o/IiBhbHQ9IiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuODrOOCpOODgeOCp+ODqzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+b3NhbWFyaTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltNDk2ODAyNCIgdGl0bGU9IuOCouOCt+ODpeODqeODluODrOODvOODiSI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvNDk2ODAyNGN6PyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaWxsdXN0X2luZm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7jgqLjgrfjg6Xjg6njg5bjg6zjg7zjg4k8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPm9zYW1hcmk8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTQ5NTg4NDIiIHRpdGxlPSLjg5bjg6vjg57jg6rjgqIiPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzQ5NTg4NDJjej8iIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+44OW44Or44Oe44Oq44KiPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj5vc2FtYXJpPC9saT4KICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW00OTU3MTk1IiB0aXRsZT0i44GE44KN44GvIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi80OTU3MTk1Y3o/IiBhbHQ9IiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuOBhOOCjeOBrzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+b3NhbWFyaTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltNDk1MjMwNCIgdGl0bGU9IuOBjOOCk+OBsOOCjOOCtOOCqOODouODs+WkluS8neOCqOODs+ODh+OCo+ODs+OCsCI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvNDk1MjMwNGN6PyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaWxsdXN0X2luZm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7jgYzjgpPjgbDjgozjgrTjgqjjg6Ljg7PlpJbkvJ3jgqjjg7Pjg4fjgqPjg7PjgrA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPm9zYW1hcmk8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X21vcmVfbGluayI+PGEgaHJlZj0iL3VzZXIvaWxsdXN0LzcwMTc3NzciPuOCguOBo+OBqOimi+OCizwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVsYXRlZF9pbGx1c3QgcmVsYXRlZF9ib3giPgogICAgICAgICAgPGRpdiBjbGFzcz0ib3RoZXJfaWxsdXN0IHJlbGF0ZWRfaWxsdXN0Ij4KICAgICAgICAgICAgPGgyPumWoumAo+W6puOBrumrmOOBhOOCpOODqeOCueODiDwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlsbHVzdF9saXN0Ij4KICAgICAgICAgICAgICA8dWwgY2xhc3M9Iml0ZW1fbGlzdCI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTEyODg3MTQiIHRpdGxlPSIowrTjg7vPieODu++9gCnjgYLjgYHvvZ7jgIIiPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzEyODg3MTRjej8iIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj4owrTjg7vPieODu++9gCnjgYLjgYHvvZ7jgII8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj5BcnVzaGlhPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltMzg0MTY2NiIgdGl0bGU9IuOAkEdJRuOCouODi+ODoeOAkeOCs+OCuCI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvMzg0MTY2NmN6PyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuOAkEdJRuOCouODi+ODoeOAkeOCs+OCuDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPlcgciBpIEcgKjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTExMTQ1MjUiIHRpdGxlPSLmhoLvvZ4iPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzExMTQ1MjVjej8iIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7mhoLvvZ48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj7jgb3jgYnvvKBzdWlrYTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTI2Nzc5NTMiIHRpdGxlPSLjgonjgY/jgYzjgY3jgbLjg7zjgbPjg7zjgY3jg7wiPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzI2Nzc5NTNjej8iIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7jgonjgY/jgYzjgY3jgbLjg7zjgbPjg7zjgY3jg7w8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj5yYWNlcjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTYzNjE2OTAiIHRpdGxlPSLjg57jgrfjg6UiPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzYzNjE2OTBjej8xNDgyNzg0Njc1IiBhbHQ9IiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaWxsdXN0X2luZm8iPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+44Oe44K344OlPC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+MzY15bqm54K65YWr6YOOPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltMTIyNzA5MSIgdGl0bGU9IuOCpOODrOOCpOOCtuODvOOCreODo+ODjuODsyI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvMTIyNzA5MWN6PyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuOCpOODrOOCpOOCtuODvOOCreODo+ODjuODszwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPm10PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltNjI5MjcwOCIgdGl0bGU9IlVCMDUgR0xVVFRPTlkg44Ki44Kv44K444Kt44Oz44KwIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi82MjkyNzA4Y3o/MTQ4MDYwODkyNCIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPlVCMDUgR0xVVFRPTlkg44Ki44Kv44K444Kt44Oz44KwPC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+VE9NPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltNjI1NTkwMiIgdGl0bGU9IuOCveODq+OCrOODrOOCqiI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvNjI1NTkwMmN6PzE0NzkyNzc4MTQiIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7jgr3jg6vjgqzjg6zjgqo8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj5UT008L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW0xMDE5OTkyIiB0aXRsZT0i44GE44Gj44GX44KHIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi8xMDE5OTkyY3o/IiBhbHQ9IiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaWxsdXN0X2luZm8iPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+44GE44Gj44GX44KHPC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+44Gf44G+44GTPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltMTE3NDU3OCIgdGl0bGU9Iumjm+OBtuOCs+OCuOOCs+OCuOKZqiI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvMTE3NDU3OGN6PyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPumjm+OBtuOCs+OCuOOCs+OCuOKZqjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPuODjuOCqOODq+OBo+OBoe+8oOODqeODoOODrOODvOOCuuODs+OBr+WlveeJqTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfbW9yZV9saW5rIj48YSBocmVmPSIvY2xpcC9saXN0L2ltNDkzNzY2MyI+44GT44Gu44Kk44Op44K544OI44KS5ZCr44KA5YWs6ZaL44Kv44Oq44OD44OX5LiA6KanPC9hPjwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0ZWRfaWxsdXN0IHJlbGF0ZWRfYm94Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im90aGVyX2lsbHVzdCBwb3B1bGFyX2lsbHVzdCI+CiAgICAgICAgICAgIDxoMj7kurrmsJfjga7jgqTjg6njgrnjg4g8L2gyPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbGx1c3RfbGlzdCI+CiAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpdGVtX2xpc3QiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW02MzYzMjE0IiB0aXRsZT0i44GK44Kx44Kk44GV44KTIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi82MzYzMjE0Y3o/MTQ4MjgyMzQ2NSIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuOBiuOCseOCpOOBleOCkzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPmJsZXdfYW5kd2hpdGU8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW02MzUwNTA4IiB0aXRsZT0i5Yag5L2N5pmC6ZaT56We5q6/44K944Ot44Oi44Oz44KI44KK5Lit57aZ44Gn44GZIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi82MzUwNTA4Y3o/MTQ4MjQ5NDc1MyIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuWGoOS9jeaZgumWk+elnuauv+OCveODreODouODs+OCiOOCiuS4ree2meOBp+OBmTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPumdkuWkojwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9pdGVtX2N1dG91dCBtaWRkbGUiPjxhIGhyZWY9Ii9zZWlnYS9pbTYzNTc2MDIiIHRpdGxlPSLjgrXjg7Pjgr/jg7vjgrjjg6Pjg7Pjg4wiPiA8c3BhbiBjbGFzcz0idGh1bSI+PGltZyBzcmM9Imh0dHA6Ly9sb2hhcy5uaWNvc2VpZ2EuanAvL3RodW1iLzYzNTc2MDJjej8xNDgyNjc4MzgwIiBhbHQ9IiI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaWxsdXN0X2luZm8iPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0aXRsZSI+44K144Oz44K/44O744K444Oj44Oz44OMPC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idXNlciI+6Jek55yf5ouT5ZOJQOWGrOOCs+ODnzPml6Xnm65BNjFiPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJsaXN0X2l0ZW1fY3V0b3V0IG1pZGRsZSI+PGEgaHJlZj0iL3NlaWdhL2ltNjM2Mjg5MCIgdGl0bGU9Iue1huOCkuWKm+OBqyI+IDxzcGFuIGNsYXNzPSJ0aHVtIj48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC8vdGh1bWIvNjM2Mjg5MGN6PzE0ODI4MjAyNzgiIGFsdD0iIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJpbGx1c3RfaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRpdGxlIj7ntYbjgpLlipvjgas8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIj7jgZfjgofvvZ7jgoo8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Imxpc3RfaXRlbV9jdXRvdXQgbWlkZGxlIj48YSBocmVmPSIvc2VpZ2EvaW02MzYwMDczIiB0aXRsZT0i44G144GB44Gm44GUICMxMSjntYLlsYDnibnnlbDngrnjgq/jg6rjgqLlvozjg43jgr/jg5Djg6zmnIkpIj4gPHNwYW4gY2xhc3M9InRodW0iPjxpbWcgc3JjPSJodHRwOi8vbG9oYXMubmljb3NlaWdhLmpwLy90aHVtYi82MzYwMDczY3o/MTQ4Mjc0NjcyNiIgYWx0PSIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImlsbHVzdF9pbmZvIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGl0bGUiPuOBteOBgeOBpuOBlCAjMTEo57WC5bGA54m555Ww54K544Kv44Oq44Ki5b6M44ON44K/44OQ44Os5pyJKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVzZXIiPnRha3V0ZWtzPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibGlzdF9tb3JlX2xpbmsiPjxhIGhyZWY9Ii9pbGx1c3QvcmFua2luZy9wb2ludC9kYWlseS9nX2ZhbmFydCI+44GT44Gu44K444Oj44Oz44Or44Gu44Op44Oz44Kt44Oz44Kw44KS44KC44Gj44Go6KaL44KLPC9hPjwvbGk+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICAgICAgICA8L2Rpdj4KCgogICAgICA8YXNpZGUgY2xhc3M9InN1Yl9pbmZvX3NpZGUiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJmZWVkYmFjayI+CiAgICAgICAgICA8cD7jgZTmhI/opovjg7vjgZTopoHmnJvjga/jgZPjgaHjgonjgavjgYrlr4TjgZvjgY/jgaDjgZXjgYTjgII8L3A+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvaW5xdWlyeT9tb2RlPWZlZWRiYWNrIiBjbGFzcz0iYnRuX2ZlZWRiYWNrIj48c3BhbiBjbGFzcz0iaWNvbl9mZWVkYmFjayI+PC9zcGFuPuODleOCo+ODvOODieODkOODg+OCrzwvYT48L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic25zIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAKPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjE1cHg7IHdpZHRoOjkwcHg7Ij4KICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3NoYXJlIiBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iIGRhdGEtdXJsPSJodHRwOi8vbmljby5tcy9pbTQ5Mzc2NjMiIGRhdGEtY291bnR1cmw9Imh0dHA6Ly9zZWlnYS5uaWNvdmlkZW8uanAvc2VpZ2EvaW00OTM3NjYzIiBkYXRhLXRleHQ9IuOCs+OCuOOCs+OCuCAvIG9zYW1hcmkg44GV44KT44Gu44Kk44Op44K544OIICNuaWNvc2VpZ2EgI2ltNDkzNzY2MyI+VHdlZXQ8L2E+CiAgCiAgPHNjcmlwdD4hZnVuY3Rpb24oZCxzLGlkKXt2YXIganMsZmpzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0scD0vXmh0dHA6Ly50ZXN0KGQubG9jYXRpb24pPydodHRwJzonaHR0cHMnO2lmKCFkLmdldEVsZW1lbnRCeUlkKGlkKSl7anM9ZC5jcmVhdGVFbGVtZW50KHMpO2pzLmlkPWlkO2pzLnNyYz1wKyc6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzJztmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsZmpzKTt9fShkb2N1bWVudCwgJ3NjcmlwdCcsICd0d2l0dGVyLXdqcycpOzwvc2NyaXB0PgogIAo8L2Rpdj4gICAgICAgICAgICAgIAo8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NDBweDsgd2lkdGg6OTBweDsiPgogIDxpZnJhbWUgc3JjPSIvL3d3dy5mYWNlYm9vay5jb20vcGx1Z2lucy9saWtlLnBocD9ocmVmPWh0dHAlM0ElMkYlMkZzZWlnYS5uaWNvdmlkZW8uanAlMkZzZWlnYSUyRmltNDkzNzY2MyZhbXA7d2lkdGgmYW1wO2xheW91dD1idXR0b25fY291bnQmYW1wO2FjdGlvbj1saWtlJmFtcDtzaG93X2ZhY2VzPWZhbHNlJmFtcDtzaGFyZT1mYWxzZSZhbXA7aGVpZ2h0PTIxIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjpub25lOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDoyMXB4OyIgYWxsb3dUcmFuc3BhcmVuY3k9InRydWUiPjwvaWZyYW1lPgo8L2Rpdj4gICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsgaGVpZ2h0OjFweDsiPjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9nIj4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iYnRuIGJsb2cgbWluIj7jg5bjg63jgrDjgavosrzjgos8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iYmxvZ19zb3VyY2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZnVraWRhc2hpIHRvcCByaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7ku6XkuIvjga7jgrPjg7zjg4njgpLjgrPjg5Tjg7zjgZfjgabjg5bjg63jgrDjgavosrzku5jjgZHjgabjgY/jgaDjgZXjgYTjgIIKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdmFsdWU9IiZsdDtpZnJhbWUgd2lkdGg9JnF1b3Q7MzEyJnF1b3Q7IGhlaWdodD0mcXVvdDsxNzYmcXVvdDsgc3JjPSZxdW90O2h0dHA6Ly9leHQuc2VpZ2Eubmljb3ZpZGVvLmpwL3RodW1iL2ltNDkzNzY2MyZxdW90OyBzY3JvbGxpbmc9JnF1b3Q7bm8mcXVvdDsgc3R5bGU9JnF1b3Q7Ym9yZGVyOnNvbGlkIDFweCAjODg4OyZxdW90OyBmcmFtZWJvcmRlcj0mcXVvdDswJnF1b3Q7Jmd0OyZsdDthIGhyZWY9JnF1b3Q7aHR0cDovL3NlaWdhLm5pY292aWRlby5qcC9zZWlnYS9pbTQ5Mzc2NjMmcXVvdDsmZ3Q744Kz44K444Kz44K4Jmx0Oy9hJmd0OyZsdDsvaWZyYW1lJmd0OyIgc2l6ZT0iMzAiIHN0eWxlPSJib3JkZXI6c29saWQgMXB4ICM4ODgiPgogICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iYWRzX3BjX3NlaWdhX3NpemVfZWFzdCIgY2xhc3M9InNpZGVfYWQiIGRhdGEtYWRzX3Njcm9sbF9mb2xsb3dpbmc9InRydWUiPjwvZGl2PgoKICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgogICAgPCEtLSAvLy5kZXRhaWwtLT4KCiAgICA8ZGl2IGNsYXNzPSJyZXBvcnQiPgogICAgICA8YSBocmVmPSIvaW1hZ2UvYWxsZWdhdGlvbi80OTM3NjYzIiB0YXJnZXQ9Il9ibGFuayI+6YGV5Y+N55S75YOP44O75qip5Yip5L615a6z55S75YOP44KS6YCa5aCxPC9hPgogICAgICB8IDxhIGhyZWY9Ii9jb21tZW50L2FsbGVnYXRpb24vaW00OTM3NjYzIiB0YXJnZXQ9Il9ibGFuayI+5LiN6YGp5YiH44Gq44Kz44Oh44Oz44OI44KS6YCa5aCxPC9hPgogICAgICAgICAgICB8IDxhIGhyZWY9Ii9zaHVuZ2EvYWxsZWdhdGlvbi9jb25maXJtP2ltYWdlX2lkPTQ5Mzc2NjMiIHRhcmdldD0iX2JsYW5rIj7jgqLjg4Djg6vjg4jloLHlkYo8L2E+CiAgICAgICAgICA8L2Rpdj4KCiAgICA8IS0tIC5sZXZlbF9hZCAtLT4KICAgIDxkaXYgaWQ9ImFkc19wY19zZWlnYV9mb290ZXIiIGNsYXNzPSJsZXZlbF9hZCIgZGF0YS1hZHNfZmxvb3I9InRydWUiPjwvZGl2PgogICAgICAgIDwhLS0gaWNoaWJhIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KdmFyIFVzZXIgPSB7CiAgaWQ6IDIzNjY5ODU4LAogIGlzUHJlbWl1bTogZmFsc2V9Owp2YXIgY291bnRyeSA9ICJqcCI7CnZhciBWaWRlbyA9IHsKICBpZDogImltNDkzNzY2MyIsCiAgdGFnczogW10sCiAgbG9ja2VkVGFnczogW10sCiAgY2hhbm5lbElkOiBmYWxzZSwKICBpc01vbmV0aXplZDogZmFsc2UsCiAgaXNSMTg6IGZhbHNlfTsKCiAgVmlkZW8udGFncy5wdXNoKCLjgqLjg4vjg6EiKTsKICAgICAgVmlkZW8ubG9ja2VkVGFncy5wdXNoKCLjgqLjg4vjg6EiKTsKICAgIFZpZGVvLnRhZ3MucHVzaCgi44Kz44K444Kz44K4Iik7CiAgICAgIFZpZGVvLmxvY2tlZFRhZ3MucHVzaCgi44Kz44K444Kz44K4Iik7CiAgICBWaWRlby50YWdzLnB1c2goIuOBleOBj+OCieOCguOCguOBkyIpOwogICAgICBWaWRlby5sb2NrZWRUYWdzLnB1c2goIuOBleOBj+OCieOCguOCguOBkyIpOwogICAgVmlkZW8udGFncy5wdXNoKCLjg4njg4Pjg4jntbUiKTsKICAgICAgVmlkZW8ubG9ja2VkVGFncy5wdXNoKCLjg4njg4Pjg4jntbUiKTsKICAgIFZpZGVvLnRhZ3MucHVzaCgi44OL44Kz44OL44Kz5aSn55m+56eRIik7CiAgICAgIFZpZGVvLmxvY2tlZFRhZ3MucHVzaCgi44OL44Kz44OL44Kz5aSn55m+56eRIik7CiAgICBWaWRlby50YWdzLnB1c2goIuOBiue1teOCq+OCreOCsyIpOwogIC8vLS0+Cjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2ljaGliYS9wcm90b3R5cGUtMS41LjEuMi5qcz8yMDE1MDEyNjE0MzAiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvaWNoaWJhL2ljaGliYS5qcz8yMDEyMDgyOSI+PC9zY3JpcHQ+CjxkaXYgaWQ9ImljaGliYV9ib3giPgo8ZGl2IGlkPSJpY2hpYmFfcGxhY2Vob2xkZXIiPjxkaXYgY2xhc3M9ImljaGliYV9sb2FkIj7luILloLTmg4XloLHjgpLoqq3jgb/ovrzjgb/kuK3igKY8L2Rpdj48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9Im10MjAiPjwvZGl2Pgo8IS0tLy9pY2hpYmEtLT4KCgogIDwvZGl2PgogIDwhLS0gLy8jbWFpbiAtLT4KCgogIDwhLS0gLy8jcGFnZXRvcCAtLT4KICA8ZGl2IGlkPSJwYWdldG9wIiBkYXRhLXRhcmdldD0iI2RldGFpbCI+CiAgPGltZyBzcmM9Ii9pbWcvY29tbW9uL25ldy9tb2R1bGUvYnRuX3BhZ2V0b3AucG5nIiBhbHQ9IuODmuODvOOCuOS4iumDqOOBuCIgPgo8L2Rpdj4KPC9kaXY+CjwhLS0gLy8jY29udGVudCAtLT4KCgoKPCEtLXBhbmt1enUtLT4KPGRpdiBjbGFzcz0icGFua3V6dSI+CiAgPGRpdiBjbGFzcz0ic2dfZ2xvYmFsX2JhciBjZml4Ij4KICAgIDx1bCBjbGFzcz0ic2dfcGFua3V6dSI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vZGF0YS12b2NhYnVsYXJ5Lm9yZy9CcmVhZGNydW1iIj48YSBocmVmPSIvaWxsdXN0LyIgaXRlbXByb3A9InVybCI+PHNwYW4gaXRlbXByb3A9InRpdGxlIj7jgqTjg6njgrnjg4g8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL2RhdGEtdm9jYWJ1bGFyeS5vcmcvQnJlYWRjcnVtYiI+PGEgaHJlZj0iL3VzZXIvaWxsdXN0LzcwMTc3NzciIGl0ZW1wcm9wPSJ1cmwiPjxzcGFuIGl0ZW1wcm9wPSJ0aXRsZSI+b3NhbWFyaTxzcGFuIGNsYXNzPSJwYW5rdXp1X3N1ZmZpeCI+Jm5ic3A744GV44KT44Gu44Kk44Op44K544OIPC9zcGFuPjwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFjdGl2ZSIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vZGF0YS12b2NhYnVsYXJ5Lm9yZy9CcmVhZGNydW1iIj48c3BhbiBpdGVtcHJvcD0idGl0bGUiPuOCs+OCuOOCs+OCuDwvc3Bhbj48L2xpPgogICAgICAgICAgPC91bD4KICA8L2Rpdj4KPC9kaXY+CjwhLS0gLy8ucGFua3V6dS0tPgo8IS0tIC5pbGx1c3RfbWFpbiDjgrPjg6Hjg7Pjg4jlhajku7booajnpLotLT4KPGRpdiBjbGFzcz0ib3Zlcl9yYXkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+CjxkaXYgY2xhc3M9ImNvbW1lbnRfYWxsIG5ld192ZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgPGRpdiBjbGFzcz0iY29tbWVudF9hbGxfaGVhZGVyIj4KICAgIDx1bCBjbGFzcz0iY29udHJvbGwiPgogICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9ImJ0bl9jbG9zZSI+PHNwYW4gY2xhc3M9Imljb25fY2xvc2VfY29tbWVudCI+PC9zcGFuPumWieOBmOOCizwvYT48L2xpPgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjb21tZW50X2FsbF9pbm5lciI+CiAgICA8ZGl2IGNsYXNzPSJpbGx1c3RfbWFpbiBjZml4Ij4KICAgICAgPGRpdiBjbGFzcz0iaWxsdXN0X3dyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImlubmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRodW1fbGFyZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8YT48aW1nIHNyYz0iaHR0cDovL2xvaGFzLm5pY29zZWlnYS5qcC90aHVtYi80OTM3NjYzaSIgYWx0PSIiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gLmlsbHVzdF9jb21tZW50IC0tPgogICAgICA8ZGl2IGNsYXNzPSJpbGx1c3Rfc2lkZSI+CgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlX2JhciI+CiAgICAgICAgICA8aDI+44Kz44Oh44Oz44OIPC9oMj4KICAgICAgICAgIDxwIGNsYXNzPSJuZ19jb21tZW50X2xpbmsiIHRpdGxlPSLjgrPjg6Hjg7Pjg4hOR+ioreWumiIgcmVsPSJ0b29sdGlwIj48c3BhbiBjbGFzcz0iaWNvbl9uZ19jb21tZW50Ij5OR+ioreWumjwvc3Bhbj48L3A+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxzZWN0aW9uIGlkPSJrb19jb21tZW50bmdfYWxsIgogICAgICAgICAgZGF0YS11c2VyX2lkPSIyMzY2OTg1OCIKICAgICAgICAgIGRhdGEtY2xpZW50X25nPSJbXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ19jb21tZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZnVraWRhc2hpIHJpZ2h0IHRvcCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmdfY29tbWVudF9pbm5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZV9iYXIiPgogICAgICAgICAgICAgICAgICA8aDM+TkfoqK3lrpo8L2gzPgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iaWNvbl9jbG9zZV9ib29rc3VwcG9ydCBjbG9zZV9uZ19jb21tZW50Ij7oqK3lrprjgpLplonjgZjjgos8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGRhdGEtYmluZD0ic3VibWl0OiBwb3N0Ij4KICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9Ik5H6Kit5a6a44KS5L2/55SoIiBkYXRhLWJpbmQ9ImNoZWNrZWQ6IHVzZU5nIj4gTkfoqK3lrprjgpLkvb/nlKg8L2xhYmVsPgogICAgICAgICAgICAgICAgICA8aDQ+6Kit5a6a44KS6L+95YqgPC9oND4KICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJyYWRpb19saXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ibmdfdHlwZSIgdmFsdWU9IjAiIGRhdGEtYmluZD0iY2hlY2tlZDogdHlwZSI+44Kz44Oh44Oz44OIPC9sYWJlbD48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJuZ190eXBlIiB2YWx1ZT0iMSIgZGF0YS1iaW5kPSJjaGVja2VkOiB0eXBlIj7jg6bjg7zjgrbjg7xJRDwvbGFiZWw+PC9saT4KICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmdfd29yZCBtZXNzYWdlX3RhcmdldCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtYmluZD0idmFsdWU6IHNvdXJjZSwgdmFsdWVVcGRhdGU6ICdhZnRlcmtleWRvd24nIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i6L+95YqgIiBjbGFzcz0iYnRuIG1pbiI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8aDQ+CiAgICAgICAgICAgICAgICAgICAg6Kit5a6a5riI44G/5LiA6KanCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtYmluZD0idGV4dDogbmdDb3VudCgpIj48L3NwYW4+Jm5ic3A7LyZuYnNwOzxzcGFuIGRhdGEtYmluZD0idGV4dDogbmdDb3VudExpbWl0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2g0PgogICAgICAgICAgICAgICAgICA8cCBjbGFzcz0ibmdfZW1wdHkiIGRhdGEtYmluZD0idmlzaWJsZTogbmdMaXN0KCkubGVuZ3RoID09IDAiPk5H6Kit5a6a44Gv44G+44Gg44GC44KK44G+44Gb44KT44CCPC9wPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuZ19jb21tZW50X2xpc3QiIGRhdGEtYmluZD0iaWYgOiBuZ0xpc3QoKS5sZW5ndGggPiAwIj4KICAgICAgICAgICAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9InRvcF90ciI+56iu5YilPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9InRvcF90ciI+5YCkPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9InRvcF90ciI+5YmK6ZmkPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgZGF0YS1iaW5kPSJmb3JlYWNoOiBuZ0xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJraW5kIiBkYXRhLWJpbmQ9InRleHQ6IHR5cGVfbmFtZSI+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InZhbHVlIiBkYXRhLWJpbmQ9InRleHQ6IHNvdXJjZSI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImRlbGV0ZSI+PHNwYW4gY2xhc3M9ImxpbmtfZGVsZXRlIiBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LnJlbW92ZUl0ZW0iPuWJiumZpDwvc3Bhbj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gLmlsbHVzdF9jb21tZW50IC0tPgogICAgICAgIDxzZWN0aW9uIGlkPSJrb19jb21tZW50X2FsbCIgY2xhc3M9ImlsbHVzdF9jb21tZW50IgogICAgICAgICAgZGF0YS10YXJnZXRfaWQ9IjQ5Mzc2NjMiCiAgICAgICAgICBkYXRhLWNvbW1lbnRfY291bnQ9IjIiCiAgICAgICAgICBkYXRhLXBvc3RfbW9kZT0iYW5vbnltb3VzIgogICAgICAgICAgZGF0YS1iaW5kPSJldmVudDogeyAncmVsb2FkJzogcmVsb2FkIH0sIGF0dHI6IHsgJ2RhdGEtaXNfbG9hZGluZyc6IGlzQ29ubmVjdGluZygpPyAndHJ1ZSc6J2ZhbHNlJyB9Ij4KCiAgICAgICAgICA8cCBjbGFzcz0iY29tbWVudF9lbXB0eSIgZGF0YS1iaW5kPSJ2aXNpYmxlOiBpdGVtcygpLmxlbmd0aCA9PSAwLCB0ZXh0OiAoY29tbWVudENvdW50KCkgIT0gMCk/ICfjgrPjg6Hjg7Pjg4joqq3jgb/ovrzjgb/kuK3igKYnOifjgrPjg6Hjg7Pjg4jjga/jgb7jgaDjgYLjgorjgb7jgZvjgpPjgIInIj48L3A+CiAgICAgICAgICA8dWwgaWQ9ImNvbW1lbnRfbGlzdCIgY2xhc3M9ImNvbW1lbnRfbGlzdCIgZGF0YS1iaW5kPSJmb3JlYWNoOiBpdGVtcyI+CiAgICAgICAgICAgIDxsaSBjbGFzcz0iY29tbWVudF9saXN0X2l0ZW0iCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkYXRhLWJpbmQ9ImNzczp7dW5wdWJsaWM6ICFpc192aXNpYmxlKCksIHVzZXI6IGlzX293bmVyLCB1bnB1YmxpYyA6IGlzX2ZpbHRlcmVkKCl9LCBldmVudDp7Y29udGV4dG1lbnU6ICRwYXJlbnQuc2hvd05nTWVudX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx1bCBjbGFzcz0iY29tbWVudF9pbmZvIiBkYXRhLWRpc3BsYXlfZmxhZz0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY291bnRfbmV3IiBkYXRhLWJpbmQ9InZpc2libGU6IGlzX25ldyI+TkVXPC9saT4KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkYXRlIj48c3BhbiBkYXRhLWJpbmQ9InRleHQ6IGRhdGUiPjwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImlkIj5Oby48c3BhbiBkYXRhLWJpbmQ9InRleHQ6IGlkIj48L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1c2VyIiBkYXRhLWJpbmQ9InZpc2libGU6IGlzX293bmVyIj7mipXnqL/ogIU8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idGV4dCIKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZGF0YS1iaW5kPSJ0ZXh0OiBpc19maWx0ZXJlZCgpPyAnIyMj44GT44Gu44Kz44Oh44Oz44OI44Gv6KGo56S644GV44KM44G+44Gb44KTIyMjJyA6IHRleHQiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Im5nX21lbnUiPgogICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5nX21lbnVfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJhZGRfbmdfY29tbWVudCIgZGF0YS1iaW5kPSJjbGljazogJHBhcmVudC5hZGROZ0NvbW1lbnQiPk5H44Kz44Oh44Oz44OI44Gr6L+95YqgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFkZF9uZ191c2VyIiAgICBkYXRhLWJpbmQ9ImNsaWNrOiAkcGFyZW50LmFkZE5nVXNlciI+Tkfjg6bjg7zjgrbjg7zjgavov73liqA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ib3Blbl9uZ19jb21tZW50Ij5OR+ioreWumuS4gOimp+OCkuimi+OCizwvbGk+CiAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgoKICAgICAgICAgIDxkaXYgY2xhc3M9InJlcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyIj4KICAgICAgICAgICAgICA8bm9zY3JpcHQ+CiAgICAgICAgICAgICAg44Kz44Oh44Oz44OI44GZ44KL44Gr44GvamF2YXNjcmlwdOOCkuacieWKueOBq+OBl+OBpuOBj+OBoOOBleOBhAogICAgICAgICAgICAgIDwvbm9zY3JpcHQ+CgogICAgICAgICAgICAgIDxmb3JtIGlkPSJjb21tZW50X3Bvc3RfZm9ybSIgY2xhc3M9ImNvbW1lbnRfcG9zdF9ldmVudGVkIiBkYXRhLWJpbmQ9InN1Ym1pdDogcG9zdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50X3Bvc3QgY2ZpeCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRfdGV4dCBtZXNzYWdlX3RhcmdldCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNvbnRlbnQiIGNsYXNzPSJjb250ZW50IiBpZD0iY29tbWVudF9wb3N0X2lucHV0IiBkYXRhLWJpbmQ9InZhbHVlOiBjb250ZW50LCB2YWx1ZVVwZGF0ZTogJ2FmdGVya2V5ZG93biciIHBsYWNlaG9sZGVyPSLjgrPjg6Hjg7Pjg4jjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQiIG1heGxlbmd0aD0iMTIwIj4KICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50X3Bvc3RfYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dF9jb3VudCI+PHN0cm9uZyBkYXRhLWJpbmQ9InRleHQ6IGxldHRlckNvdW50Ij4wPC9zdHJvbmc+LzYwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIGNsYXNzPSJjb21tZW50X2J0biBidG4gbm9ybWFsIiA+PHNwYW4gY2xhc3M9Imljb25fY29tbWVudF9wb3N0Ij48L3NwYW4+44Kz44Oh44Oz44OI44GZ44KLPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8IS0tIC8vLmlsbHVzdF9jb21tZW50IC0tPgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICAgIDwhLS0gLy8uaWxsdXN0X3NpZGUgLS0+CgogIDwvZGl2PgogIDwhLS0gLy8uaWxsdXN0X21haW4gLS0+CjwvZGl2PjxkaXYgY2xhc3M9ImNyZWF0ZV9jb21wIj4KICA8ZGl2IGNsYXNzPSJpbm5lciI+CiAgICA8aDI+44Kk44Op44K544OI44Gu5oqV56i/44GM5a6M5LqG44GX44G+44GX44GfPC9oMj4KICAgIDxwIGNsYXNzPSJ1cmwiPlVSTCA8YSBocmVmPSIvc2VpZ2EvaW00OTM3NjYzIj5odHRwOi8vc2VpZ2Eubmljb3ZpZGVvLmpwL3NlaWdhL2ltNDkzNzY2MzwvYT48L3A+CiAgICA8ZGl2IGNsYXNzPSJzaGFyZSI+CiAgICAgIDxoMz7jgqTjg6njgrnjg4jjgpLjgb/jgpPjgarjgavnn6XjgonjgZvjgojjgYY8L2gzPgogICAgICA8ZGl2IGNsYXNzPSJzbnMiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAKPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjE1cHg7IHdpZHRoOjEyMHB4OyI+CiAgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9zaGFyZSIgY2xhc3M9InR3aXR0ZXItc2hhcmUtYnV0dG9uIiBkYXRhLXVybD0iaHR0cDovL25pY28ubXMvaW00OTM3NjYzIiBkYXRhLWNvdW50dXJsPSJodHRwOi8vc2VpZ2Eubmljb3ZpZGVvLmpwL3NlaWdhL2ltNDkzNzY2MyIgZGF0YS10ZXh0PSLjgrPjgrjjgrPjgrggLyBvc2FtYXJpIOOBleOCk+OBruOCpOODqeOCueODiCAjbmljb3NlaWdhICNpbTQ5Mzc2NjMiPlR3ZWV0PC9hPgogIAogIDxzY3JpcHQ+IWZ1bmN0aW9uKGQscyxpZCl7dmFyIGpzLGZqcz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpWzBdLHA9L15odHRwOi8udGVzdChkLmxvY2F0aW9uKT8naHR0cCc6J2h0dHBzJztpZighZC5nZXRFbGVtZW50QnlJZChpZCkpe2pzPWQuY3JlYXRlRWxlbWVudChzKTtqcy5pZD1pZDtqcy5zcmM9cCsnOi8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyc7ZmpzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpzLGZqcyk7fX0oZG9jdW1lbnQsICdzY3JpcHQnLCAndHdpdHRlci13anMnKTs8L3NjcmlwdD4KICAKPC9kaXY+ICAgICAgICAgIAo8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NDBweDsgd2lkdGg6MTIwcHg7Ij4KICA8aWZyYW1lIHNyYz0iLy93d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvbGlrZS5waHA/aHJlZj1odHRwJTNBJTJGJTJGc2VpZ2Eubmljb3ZpZGVvLmpwJTJGc2VpZ2ElMkZpbTQ5Mzc2NjMmYW1wO3dpZHRoJmFtcDtsYXlvdXQ9YnV0dG9uX2NvdW50JmFtcDthY3Rpb249bGlrZSZhbXA7c2hvd19mYWNlcz1mYWxzZSZhbXA7c2hhcmU9ZmFsc2UmYW1wO2hlaWdodD0yMSIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6bm9uZTsgb3ZlcmZsb3c6aGlkZGVuOyBoZWlnaHQ6MjFweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT4KPC9kaXY+ICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyBoZWlnaHQ6MXB4OyI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJibG9nIj4KICAgICAgICA8dWw+CiAgICAgICAgICA8bGkgY2xhc3M9ImJ0biBibG9nIG1pbiI+44OW44Ot44Kw44Gr6LK844KLPC9saT4KICAgICAgICAgIDxsaSBjbGFzcz0iYmxvZ19zb3VyY2UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgPHVsIGNsYXNzPSJmdWtpZGFzaGkgdG9wIHJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7ku6XkuIvjga7jgrPjg7zjg4njgpLjgrPjg5Tjg7zjgZfjgabjg5bjg63jgrDjgavosrzku5jjgZHjgabjgY/jgaDjgZXjgYTjgIIKICAgICAgICAgICAgICAgIDxpbnB1dCB2YWx1ZT0iJmx0O2lmcmFtZSB3aWR0aD0mcXVvdDszMTImcXVvdDsgaGVpZ2h0PSZxdW90OzE3NiZxdW90OyBzcmM9JnF1b3Q7aHR0cDovL2V4dC5zZWlnYS5uaWNvdmlkZW8uanAvdGh1bWIvaW00OTM3NjYzJnF1b3Q7IHNjcm9sbGluZz0mcXVvdDtubyZxdW90OyBzdHlsZT0mcXVvdDtib3JkZXI6c29saWQgMXB4ICM4ODg7JnF1b3Q7IGZyYW1lYm9yZGVyPSZxdW90OzAmcXVvdDsmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vc2VpZ2Eubmljb3ZpZGVvLmpwL3NlaWdhL2ltNDkzNzY2MyZxdW90OyZndDvjgrPjgrjjgrPjgrgmbHQ7L2EmZ3Q7Jmx0Oy9pZnJhbWUmZ3Q7IiBzaXplPSIzMCIgc3R5bGU9ImJvcmRlcjpzb2xpZCAxcHggIzg4OCI+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8dWwgY2xhc3M9ImNvbnRyb2xsIj4KICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGNsYXNzPSJidG5fY2xvc2UiPjxzcGFuIGNsYXNzPSJpY29uX2Nsb3NlX2Jvb2tzdXBwb3J0Ij7plonjgZjjgos8L3NwYW4+PC9hPjwvbGk+CiAgICA8L3VsPgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCiAgCgooZnVuY3Rpb24odGFyZ2V0LCB6b25lX2lkLCBvZmZzZXQpIHsKICB6b25lX2lkICs9IG9mZnNldDsKICBuZXcgQWRzLkFkdmVydGlzZW1lbnQoeyB6b25lOiB6b25lX2lkIH0pLnNldCh0YXJnZXQpOwp9KSgnYWRzX3BjX3NlaWdhX2hlYWRlcicsIDQ5OSwgMCk7Ci8vIC0tPgo8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KICAKCihmdW5jdGlvbih0YXJnZXQsIHpvbmVfaWQsIG9mZnNldCkgewogIHpvbmVfaWQgKz0gb2Zmc2V0OwogIG5ldyBBZHMuQWR2ZXJ0aXNlbWVudCh7IHpvbmU6IHpvbmVfaWQgfSkuc2V0KHRhcmdldCk7Cn0pKCdhZHNfcGNfc2VpZ2FfZm9vdGVyJywgNTAxLCAwKTsKLy8gLS0+Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPCEtLQogIAoKKGZ1bmN0aW9uKHRhcmdldCwgem9uZV9pZCwgb2Zmc2V0KSB7CiAgem9uZV9pZCArPSBvZmZzZXQ7CiAgbmV3IEFkcy5BZHZlcnRpc2VtZW50KHsgem9uZTogem9uZV9pZCB9KS5zZXQodGFyZ2V0KTsKfSkoJ2Fkc19wY19zZWlnYV9zaXplX2Vhc3QnLCA1MDAsIDApOwovLyAtLT4KPC9zY3JpcHQ+CgogIDwhLS0gI2Zvb3RlciAtLT4KICA8ZGl2IGlkPSJmb290ZXIiPgogICAgPGRpdiBjbGFzcz0iaW5uZXIiPgogICAgICA8ZGl2IGlkPSJmb290ZXJfbWVudSIgY2xhc3M9InIiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9kd2FuZ28uY28uanAvIj7pgYvllrbkvJrnpL48L2E+IO+9nAogICAgICAgIDxhIGhyZWY9Ii9ydWxlIj7liKnnlKjopo/ntIQ8L2E+IO+9nAogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9xYS5uaWNvdmlkZW8uanAvY2F0ZWdvcnkvc2hvdy80MDIiPuODmOODq+ODlzwvYT4g772cCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL2Jicy5uaWNvdmlkZW8uanAvcmVxdWVzdC8iPuimgeacm+aOsuekuuadvzwvYT4g772cCiAgICAgICAgPGEgaHJlZj0iLyI+44OI44OD44OX44Oa44O844K4PC9hPgogICAgICA8L2Rpdj4KICAgICAgPGFkZHJlc3M+CiAgICAgIDxhIGhyZWY9Imh0dHA6Ly9kd2FuZ28uY28uanAiPsKpIERXQU5HTyBDby4sIEx0ZC48L2E+CiAgICAgIDwvYWRkcmVzcz4KICAgIDwvZGl2PgogIDwvZGl2PgoKPC9kaXY+CjwhLS0gLy8gd3JhcHBlciAtLT4KCiAgPHNjcmlwdD4NCihmdW5jdGlvbigkKSB7DQoJdmFyIGtleXdvcmRzID0gJCgibWV0YVtuYW1lPSdrZXl3b3JkcyddIikuYXR0cigiY29udGVudCIpOw0KCWlmIChrZXl3b3Jkcy5tYXRjaCgv6KiO6ay85Lyd5qW144Of44K/44Oe44OH44K244Kk44Oz44Kk44Op44K544OI44Kz44Oz44OG44K544OILykpIHsNCgkJJCgiLmltX2V2ZW50X2JhciIpLmhpZGUoKTsNCgl9DQoNCgl2YXIgZXZlbnRfdGl0bGUgPSAkKCIuaW1fZXZlbnRfYmFyIC5ldmVudF90aXRsZSBhIik7DQoJaWYgKGV2ZW50X3RpdGxlLnRleHQoKSA9PSAn6KiO6ay85LydIOaltSDjgqTjg6njgrnjg4jjgrPjg7Pjg4bjgrnjg4gnKSB7DQoJCSQoIi5pbV9ldmVudF9iYXIiKS5oaWRlKCk7DQoJfQ0KfSkoalF1ZXJ5KTsNCjwvc2NyaXB0PjxzY3JpcHQ+DQo8IS0tDQpqUXVlcnkoZnVuY3Rpb24oJCkgew0KJCgiLmNvbnRlbnRfZ29vZHMiKS5jc3MoIm1hcmdpbi1ib3R0b20iLCAiMzBweCIpOw0KfSk7DQovLyAtLT4NCjwvc2NyaXB0PjxzY3JpcHQ+DQpqUXVlcnkoZnVuY3Rpb24oJCkgew0KICB2YXIgc2VsZWN0b3IgPSAiI2NvbnRlbnQgLmltX2hlYWRfYmFyIC5pbm5lciBwLmRpc2NyaXB0aW9uIjsNCiAgdmFyIGh0bWwgPSAkKHNlbGVjdG9yKS5odG1sKCk7DQogIGlmIChodG1sKSB7DQogICAgaWYgKGh0bWwubWF0Y2goL2ZvbnQvKSkgew0KICAgICAgJChzZWxlY3RvcikuY3NzKHsnbGluZS1oZWlnaHQnOiAnMS4yJ30pOyAgDQogICAgfQ0KICB9DQp9KTsNCjwvc2NyaXB0PjxzY3JpcHQ+DQpqUXVlcnkoIi50YWdfdG9wX2Jhbm5lciIpLmhpZGUoKTsNCg0KalF1ZXJ5KGZ1bmN0aW9uKCQpIHsNCiAgdmFyIGhpZGVfdm90ZV9iYW5uZXIgPSBmYWxzZTsNCiAgJCgiYS50YWciKS5lYWNoKGZ1bmN0aW9uKCkgew0KICAgIGlmICgkKHRoaXMpLnRleHQoKSA9PSAn44Ot44OD44Kv44Oe44Oz44GU5b2T5Zyw44Oc44K544Kt44Oj44Op44Kz44Oz44OG44K544OIJykgew0KICAgICAgaGlkZV92b3RlX2Jhbm5lciA9IHRydWU7DQogICAgfQ0KICAgIGlmICgkKHRoaXMpLnRleHQoKSA9PSAn6KiO6ay85Lyd44Of44K/44Oe44Kk44Op44K544OI44Kz44Oz44OG44K544OIJykgew0KICAgICAgaGlkZV92b3RlX2Jhbm5lciA9IHRydWU7DQogICAgfQ0KICB9KTsNCiAgDQogIGlmIChoaWRlX3ZvdGVfYmFubmVyKSB7DQogICAgJCgiLnRhZ190b3BfYmFubmVyIikuaHRtbCgiIik7DQogIH0gZWxzZSB7DQogICAgJCgiLnRhZ190b3BfYmFubmVyIikuc2hvdygpOw0KICB9DQp9KTsNCjwvc2NyaXB0PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9Imh0dHA6Ly9ub3RpZmljYXRpb24ubmljb3ZpZGVvLmpwL3Jlcy9ub3RpZnkuanMiIGFzeW5jIGRlZmVyPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIHNyYz0iaHR0cDovL2VtYmVkLmVucXVldGUubmljb3ZpZGVvLmpwL3N0YXRpYy9qcy9lbnF1ZXRlLmpzIiBhc3luYyBkZWZlcj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+ + http_version: + recorded_at: Wed, 28 Dec 2016 00:06:37 GMT +recorded_with: VCR 2.9.3 diff --git a/test/unit/artist_url_test.rb b/test/unit/artist_url_test.rb index 8fe379be6..d466a180f 100644 --- a/test/unit/artist_url_test.rb +++ b/test/unit/artist_url_test.rb @@ -1,6 +1,12 @@ require 'test_helper' class ArtistUrlTest < ActiveSupport::TestCase + def setup + super + @record = false + setup_vcr + end + context "An artist url" do setup do MEMCACHE.flush_all @@ -40,8 +46,13 @@ class ArtistUrlTest < ActiveSupport::TestCase end should "normalize nico seiga artist urls" do - url = FactoryGirl.create(:artist_url, :url => "http://seiga.nicovideo.jp/user/illust/1826959?target=illust_all") - assert_equal("http://seiga.nicovideo.jp/user/illust/1826959/", url.normalized_url) + url = FactoryGirl.create(:artist_url, :url => "http://seiga.nicovideo.jp/user/illust/1826959") + assert_equal("http://seiga.nicovideo.jp/user/illust/1826959", url.normalized_url) + + VCR.use_cassette("artist-url-test/nico-seiga", :record => @vcr_record_option) do + url = FactoryGirl.create(:artist_url, :url => "http://seiga.nicovideo.jp/seiga/im4937663") + assert_equal("http://seiga.nicovideo.jp/user/illust/7017777/", url.normalized_url) + end end should "normalize hentai foundry artist urls" do