musicbrainz-userscripts/mb_relationship_shortcuts.user.js
David Kellner 7bfd4a8977 mb_relationship_shortcuts: Recover missing icons
Luckily the missing 'lyrics' and 'single from' icons were captured by
the Wayback Machine.
I have Base64 encoded them since the image files are tiny and most of
the other icons are already stored as data URIs.
2021-08-06 22:16:21 +02:00

208 lines
47 KiB
JavaScript

// ==UserScript==
// @name Display shortcut for relationships on MusicBrainz
// @description Display icon shortcut for relationships of release-group, release, recording and work: e.g. Amazon, Discogs, Wikipedia, ... links. This allows to access some relationships without opening the entity page.
// @version 2021.8.5.1
// @author Aurelien Mino <aurelien.mino@gmail.com>
// @licence GPL (http://www.gnu.org/copyleft/gpl.html)
// @downloadURL https://raw.github.com/murdos/musicbrainz-userscripts/master/mb_relationship_shortcuts.user.js
// @updateURL https://raw.github.com/murdos/musicbrainz-userscripts/master/mb_relationship_shortcuts.user.js
// @include http*://*musicbrainz.org/artist/*
// @include http*://*musicbrainz.org/release-group/*
// @include http*://*musicbrainz.org/label/*
// @require https://code.jquery.com/jquery-3.2.1.min.js
// ==/UserScript==
// Definitions: relations-type and corresponding icons we are going to treat
const relationsIconsURLs = {
url: {
'amazon asin': `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAgAAAAIACH+pydAAABEVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////8DBAQDBQUEBQUcHR0wMTEwMjIxMjJDRUVERUVVVlZlZmZmZ2d2dnaFhoaTlJSioqKvsLCwsLCwsbG9vb3MzMzNzc3Z2dnl5eXm5uby8vLz8/Lz8/P+pwD/pwD/qAD/rRP/sin/syn/uD3/uD7/uT7/vlD/v1D/v1H/xGL/yXL/ynL/1JD/1ZD/1ZH/2p//363/4K7/5bz/6cr/6sr/6sv/79j/8Nj/9OX/9eX/+vL/+vP/+/P////K77b0AAAAHnRSTlMAAwYJDBIYHidIUWZvcnV4fpyfpbHDzM/S2Nvw9vy8HjzKAAAAAWJLR0RaA7ulogAAAYJJREFUeAF10Wt70jAAxfE47/eLzuHF5jC0SFdxdNjqknmxilYdzOJWPd//g5iwpg9P1v7gXf4cIBVCXLj9iK16N88L48pjdupdNp9fP8+SJNlL14sNcYeNcQhAAuGYjRuiGchCCSei81DQGQIIXNNsPG2C17AGwxDWCzpN8NJNR7DOBiMYGcmplNIP3F/cowVDeoGTJnE8RNARpDsDGLJrYdyHO2/9kQmkPYziScfCNozwDcn2hSmshGQKyJaFXch6eAIr9YMYVuZuDLt+MEFwetWvVteA55kXpLDkdl/Ckoi9gEM4Axj9qR9kIYwAMnoXmaVpy8OKQwSDUUJyZ/SWPC6PqjooDnnGSa6V+lEHy4O8pOdfeVx9KNxXVJ9UfviX6xa5XqojGzxbFd+02p8VZUWjKn/NDpSeLz6TfCJ6XCnfK62Voc3b+PKHv5ckN8Ut1uYftTIvvW+K7yVr18XGFp2T+c88/zorFhWdzXNCXHrATvcvCuvavR5bbN29ag7/AyOWFvMjKdpaAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA0LTE1VDAwOjE0OjQ4KzAwOjAwWqeMnwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMC0wOS0yMVQxNzozNzo0MSswMDowMBZM5OAAAAAASUVORK5CYII=`,
discogs: `data:image/png;base64,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/GMzLdsAADo2aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzA2NyA3OS4xNTc3NDcsIDIwMTUvMDMvMzAtMjM6NDA6NDIgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA5LTA0VDEzOjM3OjE3LTA3OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wOS0wNFQxMzozNzoxNy0wNzowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDktMDRUMTM6Mzc6MTctMDc6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmU3ZWU5YTM4LWViM2YtNDMyMy1iYmIyLTNkMzRlMzlhMTAyZjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjI0YWU2Mzg1LTkzZDMtMTE3OC04YjEzLWFlYWVhNDM3OGI5MDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjBlY2E2NWVkLWZkNmItNDc0Ni1iYjBkLTc3ZmUyOTU2MTQyNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowZWNhNjVlZC1mZDZiLTQ3NDYtYmIwZC03N2ZlMjk1NjE0MjY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDktMDRUMTM6Mzc6MTctMDc6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDplN2VlOWEzOC1lYjNmLTQzMjMtYmJiMi0zZDM0ZTM5YTEwMmY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDktMDRUMTM6Mzc6MTctMDc6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4nflpZAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAATNSURBVHjapJddaJV1HMc/5znzbM7pNqdztrktWpZZRhEUZC+gYjeBBEFgEYEQEpFFd10F1UVBhdRFFwlmXUQXYXVhkfZiJHghlOVLprn5NqfuxU3ddnbOuvn849dJ11YPHM7zPP////fy/X1/L09uVnU107zmAWuB+4HbgHagwbUh4ASwH/ge+BIYnI7Q3DQM6AI2AY8D9dM0dhj4ENgG7JlqY9W/CHoFeCk89+ltybOzgBxQ9JeJVAuwUYP3/BcE2oBPgbt87gZGVDgXaARqKs6MAQPARWC2xtwDnJwpAjcDP6pkGDiusqUagEoGKs7N1vMWn5+pUF4HdAC/ToVAM3BEGPuAMx5qEPZuYBTIa0yNIbhiCEqScxRoBcaD7H3AHb4/fS0EvlH5OaAXuFVlp4ELetEFFK6B6BhQDayvUP66ygG+FU0A8vmqv2x4DXhE2HuA5Rp4FLgM3AQ06WkyaNBfin2Ta08H5e+aRUd0plUnv4ohaA3xOhg2/SGsXa4d08taYL6ERIL2C/99wA++3wS8Ffb0AMsMWyfQnbn4sv+9kilxYFzlReCAHiyTF3MrCNYO7A3Kn1V5r6jUeeaU668mBOaY23lh6tDCo8ANhuGw8C708PvAVjMEYAnwBPCBeb/eQoROHNPjWd7f6Fp9FfCwyockV8Fw1HnghJYn5auBnWbGXGDSsG10/SlgCzChnE73ntW5gvxpAtZlwCoPDhrbZHWz/+NyAuABla8GrjOuw8AiYA2wQOGIYkkCN3s/aXgvumdVBtweYlnvgbyWng8V7xMbzUpgt5wYELlDwC7T9jOZnwfmaFBmKIfVkVPmisz4paugASk3S6HjvanQXjOh8iqZNbXAZt8tqKi6VzRmMpX8LHS4ySAoF2Cc4/1JU+9sELoV2B6ez7jnfGhYuWDARIXRdRkzv3LhvlhR8XIzFZYZw3g4H9CYBC6FVOuXcOnaADwanhcb84XKKQJl1yauUvpHMtOMwP5aDybY0mTzorC2hGyp7Kwdxvl5310Ijk1Y5Mrh3akM+DkIGVJ4WWOaJFzZPrEB+CmMZU3G/BbgQeA74M7QCy65p6QB83QoIbw/A772ocEMwI7WZ1ZUB+KtNYd3WAULFqtTyrk3TEC9olKrrKowrs3zfmcGfK6F9Xo9ZpxHvG81th+FeL9h06kW1hXAe/aBglwZcLIq6fUiURgTFYDtqRtusYT2GsPrnQn6bcN7gbtDk9k8BbF79LJLA3+zZC92LbXkj4HHkgFtgYwHLbOpPuwCHpKYs+VMjb2iIYxo/RpfsIlhQ8PnS05UqR13AUfTQJIGyZXG7LiQnZNUxTBcrNHDEUk7pPBMR1LdPxwUlX1eovHvGNJ/zISHhLwE/C7pul1rtNKVNfZq17iEHHF/m4z/RcMWKa/zWkNpi0pIE0tY+8JQHNbb6jAbFiVXyfcdsn5IGc3KLjoLdE/1XbDK1NoR3i1VMWG8uhyqXC5MUsmgbjnRLp9GTdN9M/00w9xeHkarxqtUwyum3oihqAtQHwDWOXHN6NMM4Dm/cLDqDQbS5UMHTSW2vqJfvA28EKrf3644lk/VsMqGodEikkpwo7/54X2dcG8DnnRO/F9fx+lqkoSpD7RV1IGTfp7vlj990xH65wDqvkn9NRkBtAAAAABJRU5ErkJggg==`,
wikidata: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAABiUlEQVR4Ae3WS27TQBzA4W/GbuIgBGm7AbacAHqlPhAHAlI4EzdgxaItEi2VoLFJnKEbQCSqGrKJR/K39cLz0zz018tZr9fr9cKEBDVVRW3VU3zBGF8tiewfcXkwOU4w3b0ajq52G0gpPfv46v2Z40my7PQkwJ9vw7rSVGOcWzVwejL7/Y/relg9rpoaIkBFAS2tf13UJNSYW9IyfDE52gN49DkV/nrg8E2wjnIenZ5cWMWwjgdvD58A3C6+AIjuFxEw00Gl9QP2dVB0vxkizmxZq51uEgBJR0WZ2uAS5xtQoUGZa8ANoM01YAcQcg2YIyHmGjBCyHkHBoC5/3Q7yH3qQsCU/O8AJJv48DptO2CMYENL4/RWAn4AUq5HaBfRPdrUTvthrmsBL98dPe9KwAJBB5XWExCzCCgorFrk/ApBATkHxJwDrhFyHqdvct+BPTRYdDpgcPcCf+6Q7nq1AjNF+FaEYgTj8vsCoIypWXsanZcLdzm/TDHEq0IxgoeDZqHX6/V6vfzxC8zqbKqGoAQZAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA0LTE0VDIzOjQ4OjA0KzAwOjAwgOqdLwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0wNC0xNFQyMzo0Nzo1OSswMDowMCmLEboAAAAASUVORK5CYII=`,
imdb: `data:image/png;base64,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`,
'creative commons licensed download': 'http://creativecommons.org/favicon.ico',
'cover art link': 'http://www.cdcovers.cc/favicon.ico',
secondhandsongs: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkZGQjc0NzQ3NkRGMTFFM0I3QkE5QjYzNDdBNDY2M0EiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkZGQjc0NzU3NkRGMTFFM0I3QkE5QjYzNDdBNDY2M0EiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRkZCNzQ3Mjc2REYxMUUzQjdCQTlCNjM0N0E0NjYzQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRkZCNzQ3Mzc2REYxMUUzQjdCQTlCNjM0N0E0NjYzQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpJO+yoAAATrSURBVHjatFZJbBtlGPWMZ7x7vMZL4riOsznQkEBFUOy0UkVIAtmkCBWkAqWISiyCAwfgzoULF8oBIXFAQYUCrZpGVRLUUqXYrRJVzVJI0qx1Yrt2HMfLePcsfHaEiFzbcRCMfJiZ//d73/LeNz8i/vYy5/+80MP+gc39yr+wMvchCJJhmBRF87hceEzTNLwSYVzkPyEA9DhFVQj4n7Q1W7UqyGAxGPl53TXh8uIoiiGlWJADewDosQxlJsS/vGBtVcn2L3237PzAMZNmmBIcWDnoJqn42ovHG2WSvNUzDUcwFH3z5jSXW5QBPRC9WiK62mN7HH3vOl1XfaKyIkkzh1bRHrpBIhrt6TiqIG55dy6sbhXc2aKSMwxzuBLtdbVKLBztsT2lJBy+wMu/3olRlIkQWzXKvM3QcBRFDpHBHrpeBOgdLcpsV+/4Av5oDJo5OO4YXtnc74NvljZuuH2CnHbLUhGgJyhaI+QD+jG1fCYQMkslUhx7/eb0hQcbKMZlWY5Vp+qs0sp4+G1fYOShG0NKJMDh8gZf2f9MsaxawL/SbXu2QgGV6RydfJRIDRzRD5oqEwy7GCQTFLUVIiddvgmXbyFEQuxoSbPlE0D4Xx1/prdaNxsId1+7Fafou/4gxbCdVZoug/a1emOrWqGXiDhclKRo8DPNYbFSCRTKQCcS9hn1cHPV6fElUjAPfnP7pvxBrUjQrJSD13qN+nNN5iGzoVFOkGlqPRJjOQjQlEUA+6ClgPV8paarWjex5fPG4gIcWwqRP6xuXlx3TW3vehJJqMyTCqJNozzbaGqQS+3enVA6zSvU6gKjgmazMrnY2Q6l98STH0/Njzo9kWSGg/wzUYU8rEEm6TNWvn+0Vi8UzO9GBsbtrlhCmFUBWyqDrHJRlGbYEafHKBHZdKqhmqpT5mqLghDiWJph4zRDsQwE4U+mJ90+yKlFrWjXKDv06p/Wt5IUkzc1ChBk36IoxTCXNtyLIRLK1aqSg6hOmQ3vPlHbb9LXy6ShdMYVjQtxHG6uPHTbdOp2jcpESOAehI4cSJDNA4G+IbM7we9XNy9teBZCERg4YAiLXAoT+21LDcHnXXf7wASxdHomED5rMYErb28HloIkvq/hpaYpBCLGsQRNz/kCc17/+fsrCgEPwh8yVX3YXPdRcz045syNKULA+/y5Zj6KgrLnA2EeFy13XEOhUzTTqpbXEpLdZHo2ENpNJKdTmelHfujQ5S7rG/XG1XD0WIW826D9IxgZmHB448m8Phf94DC5DL5ob3mrsYaXc9JKJPrl/dWvF9egjakMfdKgHem2QtFgCSzdO/a7k4xDxnkqKjquExn606ct7zSZeX/7tJ6QnLe1Dp9syw4fFJkLhLyJJLxfCpP9Y/aC6EUJIHyCj5+uMz6+9GptNaQlx7GRbhtQPghH+8bs62SsIHrRHrBZFXGKfQfPWWpOVKqbZNLlSLR/3L4WiUmKoBfNACwfSmWuu7eLKJgD6BA1VGYlHC2BXqoHPBT97N6CMxovuLoZjQ+MO5YPQi9JwEU3yXjfuOPuTjBvCTTz0pj9z2DkQPRSTs5xcD3xxI9rLncsycdgeLCQ0PCK8z37vQ0yVg56WQcvsFuSomGMi3BuhmbhiwbEkF856GUdHUFLWQlyOIAOshLnnFUm+mEOv9nzwL85vv8lwADUZ1hgAbiJKAAAAABJRU5ErkJggg==`,
// 'http://www.nomy.nu/img/lyrics-icon.gif'
lyrics: `data:image/gif;base64,R0lGODlhEQARALMAAAAAAP////z8/Onp6dzc3KmpqaGhoZGRkYyMjHx8fP///wAAAAAAAAAAAAAAAAAAACH5BAEAAAoALAAAAAARABEAAARNUBCUqr0JEVnI+GA4EJ0WnGiKTskQGEcsy0YwVK6q2/g7/7Vba6cTumA/Gm9ITBl9yViw10Q9kdEps7o8RqU8EzcwIXlEIrOEgsFoBBEAOw==`,
allmusic: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABaFBMVEUjHyAkICEnq+EsKCksreItKSowLC0yr+M0r+I0r+M1sOI2r+M3seQ9tOQ/Ozw/tORBteVCteRDtuVFt+VGQkNGtuZHt+ZHuOZIuOZJuOVLSEhVUlNVvedXvudaV1hav+hbWFhbv+lcwOleW1xewOlfwehhwuliwelkYmJkwuhmw+ltxetua2xxbm9xyOxzcHF0yex3yux9enuAze2Bze6Dz+6Eg4OFz+6G0O+J0e+R1PCWlZWZl5eZl5idm5yf2fKgnp6i2vKi2/Kl3POsq6us3vSs3/Stq6yx4fS3tba44/W75Pa85fa95fbFxMXGxcXH6ffJ6vfK6vfNzMzQz8/R7fjS0dLU7vnY8Prc8fre3d3e8vrf8vvg8/vj9Pvl9fvn9vzr9/zs7Ozs8PLs+Pzv7+/v+f3w+f3x8PDx+f3x+v3z+v309PT0+v30+/32+/349/j5/f76/Pz7/v/8/v/9/v79/v////+KKYFdAAAAyklEQVQYGQXBByMWABQAwGcrm2Rkr4yM7LL3JpvskU3Rx/19dwFHg6XFZdUz9xD435v9Y3H5Z07bEwJdDVfwt6MuQbBS+Gi+sXbiNVE5SfB11ljL/vH3Pr9KCDJOFTz9u3n7fJtIvRMkPz4XWxvXdOjjiSB/V8XedP9ZUeI69VnQM2DvtDz9Yt1kK8HJhw2rEaOOsrYJLGVeNqd9yn3Jm0LA/u+kzpFYOIAA3TG3GV9AwJ+UiIjYgoChqB8ebo9vENBetcN5Tf0D3gHTvVN12wWaYQAAAABJRU5ErkJggg==`,
vgmdb: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDElEQVR4AWL4//8/XnyFAdAIWUJlGERBFCoFJ5Fx94i7ZBru7g49kHCpdNwS7i4RibhT0Amz57zfv3DX5u1dsUoAC+CPnANflVvabAeaQT7IBB+UXGoVWIuxsxC8mhWgIAmMgSrO/cEr+LMoQNguCktAqJibFyBwBd8sWuWaMcGVKUEXC36BO4gAHuAWfDPPBqVSIH/8kYJuUMOxjd4hveDVmKCKG05AIHgGVSLvYw6MC/YZenPuIrIKi5/I4FbvuiHsm7UIfhn6cj4IfjiOABNkEVwbE7xS8AE+Od5ilq5Q9cYEe3rXXAVxzNq4NgqiTAk8wDI4Axlca2HfIMSeRgVECmfBkBKpG+jX/QNlATUdEbOUaAAAAABJRU5ErkJggg==`,
},
'release-group': {
// http://www.amaesingtools.com/images/left_arrow_icon.gif
'single from': `data:image/gif;base64,R0lGODlhDwALAJEAAP2ZAZmZmf///wAAACH5BAAAAAAALAAAAAAPAAsAAAIflI+pq2ABY0DAiYmwqOyaCoaHxjHaZp0e9UhQB8dCAQA7`,
},
release: {
'part of set': 'http://web.archive.org/web/20060709091901/http://wiki.musicbrainz.org/-/musicbrainz/img/moin-inter.png',
remaster: 'http://web.archive.org/web/20060708200714/http://wiki.musicbrainz.org/-/musicbrainz/img/moin-www.png',
},
};
const otherDatabasesIconURLs = {
'd-nb.info': `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAQlBMVEUAZswTa8IZHBwlKC06bqFGSEhLeqlUVlZVmd1WWVliZGSIuOeUlZWav+WbnZ2vxNqys7O71vHCwsLO2+jg4eH///9dbbdbAAAATUlEQVR42q2OyQ2AMADDQjjKXaB4/1URajsB+GklUWRbLy58FG0WwCKiMXAHmWtDpA5zTOwya8MIEQOEKk5yYq4VpVKpoxryaP/v9cIDQFsGHWYbgn0AAAAASUVORK5CYII=`,
'www.musik-sammler.de': `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAgAAAAIACH+pydAAAAM1BMVEUAAAANDg4cHR0eICAfIB0kJSQwMTE9Pj9KTU9XW11yc3KPj4+urq7MzMzk5OXv7+////80u7S3AAAAAXRSTlMAQObYZgAAAAFiS0dEEJWyDSwAAAGFSURBVBgZBcEBchRHEATArJ4VECCj/z9TgrBBd9vlzADAW7eSeQdAAHjde2vNmTMfAAF4vR+wGHtd5xcQ4OfzDwM7OzudvFzvcMA/n58IRHY60X77ROD175bRYEfHiFy/GPzzuWQqxeiIiPuNi7e/m6xqYhFJRD05XI/VSbU9Z2adREj7/e/l55/V2Zl1XSN9uTdC1e2yT5Tt1zPSmF1UtY5zI9pv1ySSSFot9eP6+QfUywgQsqXWXn0iOBloiLQW22lQJNj/ft8Q96pOpwUOvO+jTxCh7o4ggLdwEFWDXFPgbsN57aAq3VmZXKRoizmh3Xt01mQ+hhKfLUD7sCBzOUiPPC8J7D7uU7Pm+ricc3MMz5NB93EfMHtcPr6vCbEPJ7pP06RmvxwX59qI4r4bBpWa613w4xFoFx2wQ17+ZXAdaEFarF3XCw7+fldlNQiKr1/eEfD2uNtVSHaW68tvEMDr895KSWedl/MLCMDb3eeuipxzfgEEAG/brjHzDgAAAACA/wGAv/Nq2LSo4gAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wNC0xNFQyMzo1MDowNCswMDowMFKzAhsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDItMTNUMDY6Mjk6NTQrMDA6MDAiRA5SAAAAAElFTkSuQmCC`,
'www.worldcat.org': `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAgAAAAIACH+pydAAAA6lBMVEUAAAD///8gebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giA+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giA+mjxgSJSpMG/1giAgebU+mjypMG/1giAgebU+mjxgSJT1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giAgebU+mjxgSJSpMG/1giDTbSdxAAAASXRSTlMAABAQEBAQICAgICAwMDAwMEBAQEBAUFBQUGBgYGBgcHBwcHCAgICAj4+Pj5+fn5+vr6+vr7+/v7+/z8/Pz8/f39/f3+/v7+/vp7T4QAAAAAFiS0dEAf8CLd4AAAGCSURBVHjahdDpUsJAEATglktQIBAFBFQUMHhyiuFUEDBsIO//Os7OEhZUyu9XqrozMwl+CZ2xEP6UrE9XytduIzAQg4B8ub3SbqHdCyFKlI9WO5LQPqhQADa5bddt285BiwsSwJ1MpzrQSpQ3AXneKAQY55Z1YWBHlzfk5OkxGM6afVph+OZUiPOGOtBb+8bbKYIANhUugc56yzF0Ya5OSALG2Ok9Wh2HZ+xNaNMJ2ArzJEsX4ojV20lovMtRhzbVZ2qpfj+PsNxShlQQ5BnazPOWEVj6ioEg3TR8S8/zajhZEwNSfC64EoBSo8JSXWFht1GCEpEj8ihToQeY1Sxw3PULURPA03ZHB1HXdV+CQLrLK4quOwTyVOgDVw797huXTEwwyomJDBcYTWCtBEiVnxOoUKGBDXPismHrbcEPRf4RXgW+YMvVOG945BRMD1EWWZWrDVqxpeKHICKU86/+IWiapjw09c55Cgdce4dztpT57HDOH/gawWGZ2ayCPUf/+AYZLXX1QAK+AgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNS0wNC0xNFQyMzoyNDoyOCswMDowMPfm2usAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDQtMDhUMTg6MjQ6MzQrMDA6MDA2nYpOAAAAAElFTkSuQmCC`,
'rateyourmusic.com': `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH3gkKBQwFXFksggAAB4JJREFUWMOVl9tvXFcVxn9r733OjGc8Y8eNE9slbdrYMS2kcUibFyQSaGlTLlUlhAT0JXnhIoFEhcR/gSJekPqUgkDiCR6oqiBRqUFcRJpbm9LUbi6tHcfj2HXm4hnPnMtePJyx4zgObpa0dWaOzt7ft9f69tprCZtYb28v7168iACI4FWNERkHngWOAPuAYaDQndIC5oBLwNvAW1510oh4VQVg/8QEy8vL92DJxhcz09MkcYwC3nsxxhwCjgFHgV2A5f9bAtwATgGve+/PGGMUIAgCdj3yyP0JfDQ1BSJYYwCGgFcFjhthcPUbr6B8ZlsATiqcEKik3oMqY3v33kvgo6kpjDGICMBB4FdGOFyLlP/ejplf8TyUN3xxm2MgZ/APwAI4DfwCOKeqeO/XSAjAuxcvUigWV3d+GHhNYPzS7YTfX13hg2pClEJgYLTs+P7jeQ4NBg/EAJgEfgScTr2n1Wyyf2ICCcOQDy9fXv3oIPAHYPzv8zG/u9JhseMxcsdVqUJfIPzg8TxfHwmw8kAhmQReAc4BfP6JJ5CrV66sun0I+KPA4X8uJPz2akQjVozcu4oq5K3w3d0hzw+7ByVxGvgeUFHtru+9F+BVIxyeanj+PJOSYugNLYXAUQhsdzh6AksxtBhjeGM25W+VlEQ3OU73t8PAq+q9COAQwYgcEjjeiOHUnNJWQzHceklV+GtFaXvP13YaykH2Drb0yHEx5k/Af5z33hhjjgGD79bgZsdQDM1n3w/w7yWY6yhPbxMeKUDJZYJdrx3tElbAZsf6mPf+HWeMGRc42kzh/YYh59g07lvZXAfenIeig7LLnjkDrrtWqhAr5A08t8NTtBw1xow74FkRds22DcveUgy3BuuKdkM8QFEShU+TbGxmTuDJNuzt9btUedYBR1SxlcgSWEcoXT9twBAyf/rEs9Jo06y26DQ7oEqumKc82EtPb76rjfurUlWoRDCm3gJHHLAvVqgmBmcFs8lMESFaiVicWaJybZHqrQZRO8anmdSMFQrlPA+P7WBk7xA9pXVENqyjwO3EECs4YZ8TGI690ErlHmgRIYkSbl1f5JMPblK9tYxPPYggcsdL3iuN6gqTZ6e5eW2Rh8d2sv1z28j35rDOgEKaejorEdWFZeZbTb7y1e30F+2wAwqJQqJ3wwtQu1Xn2oVp5qeXSBNFDIg1IKCsk7gIiKACtXqH2vlpwstz9BRzBDkHQBSltFdi2p2EwZKjEw8g2IJbQ1u36zROuPFhhavvzdJa7iBGIDBkHAW9Czh7+jTGpzEmyCE2oJ0o7Vo7ywfdb0QEbw0auLU84YCWg5ITRcSw0mgzdX6a2WuLeFUI3QbgO6CrJKJ2jebix6RJBxcWKQzuJugpdcFXPZXNV4VcT0AuMCi0nMJcYLRUdHB9rs7ls5+wtLAM1qwDAV0HyDoiqp5WfYEoiRFxdKIOvlqhXCwh1t2JZ1c0Xj0D+ZhCKKgy54BLgZG9LFU5/68bNJfbSHD3RN0EePWZpkqigtqeLkkhTjyJprggdye2xoBPiCsfMzLSRy4YRZVLDnjbCC9vN7HtxAkELltoFWQtLXpUffbTWjAWRcEZTKGMT0DEZKk2CCEMUWfXvKbtBtGNKXz9Fvv3PI8Rk6bq33ZkBeTMEw8Xdj86VGDqVgdjMlWjKX6lRtJYIllp4OMIBGyuh6BvENO/A4Ic+Z3DJGpI2hFiLLnBAUyhBzUG0pj001k6s1fpLDd48rEdPDU6hFedAd5yqfeT1phT2wr2x899oY8r1aWsIG3V6CzcIKovkSbx3Qmi1UJqtwlvL5AbeRRXfojSY7tJOhHGWVxPDvUpvr5IVJkhri7iU48Je/jGl59koFzAez2Vpumks8Z44HWF7xwZKw3+43qTM+9dp7MwSxpHgM1cvjGlAu3lZaJrk4R9A7j+AVwuD5ES1+ZJqkvEjTo+TYCAVJRD40O8cGgPqiwAr1trvVNVVPWMMeZkf8H+8pX9Bd5/p0ojEYzNs5WlCiu3a1Ctr11S6rtaEQfW4b2yc3sPP/zWfraV8nivJ733Z0QEkwnUqMIJ7/X0xKP9/PSlpyiXS6QSoia39bB51OTwEuIlzP5336USUi6X+NnLE3xpbBDv9TRwYrVXkDAMmbx8eTUzrRWlb569ya/fmGK+monyQUsE7d4RO/vz/PzbY7x4cAQ2KUpdFEXU6nWKxSLW2nNkpfNr33xmZHxooMBvTn3M+es1klSz0/EZzHvFWuGZsT5+8sJuDu7pR3WtLD+XpinNZpMoirZoTIwcXmpEvHlhkb+cW+BKpUU79t2jLRvKrcyH+dAwurPASwcHefHAdgZK4arb79+YrCchgMlUn7VmwnFBBhcbERc/Webs1TofVVos1mNW4hRByIeGwVLA2HCBpx8vM7G7xEO9AYouqHISOAFU0jQF2Lw1W7WLFy7QVy7f05yKcNSI7PKqdiXyNDspndgjQC4wFHOWfGgwIqlXnVG9uzkVoFqvc+DAgbvwNg3qldVmRTW7nr031pi19lxgH8KwQLEbgibKnK5rz7sJLmvPRVBVRkdH78H6Hy2kll3XTQbIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA1LTI4VDA5OjA5OjQzKzAyOjAw9QZ6swAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wOS0xMFQwNToxMjowNSswMjowMC4FeS8AAAAASUVORK5CYII=`,
};
const incOptions = {
'release-group': ['release-group-rels', 'url-rels'],
release: ['release-rels', 'url-rels', 'discids'],
recording: ['work-rels'],
work: ['url-rels'],
};
// prevent JQuery conflicts, see http://wiki.greasespot.net/@grant
this.$ = this.jQuery = jQuery.noConflict(true);
if (!unsafeWindow) unsafeWindow = window;
$(document).ready(function () {
// Get pageType (label or artist)
let parent = {};
let child = {};
let m;
if ((m = window.location.href.match('/artist/(.{36})[^/]*$'))) {
parent.type = 'artist';
parent.mbid = m[1];
child.type = 'release-group';
} else if ((m = window.location.href.match('/(release-group|label)/(.{36})[^/]*$'))) {
parent.type = m[1];
parent.mbid = m[2];
child.type = 'release';
} else if ((m = window.location.href.match('/artist/(.{36})/(releases|recordings|works)'))) {
parent.type = 'artist';
parent.mbid = m[1];
child.type = m[2].replace(/s$/, '');
} else {
// Not supported
return;
}
let mbidRE = /(release|release-group|work)\/([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/;
// Determine target column
let columnindex = 0;
$("table.tbl tbody tr[class!='subh']").each(function () {
$(this)
.children('td')
.each(function () {
if ($(this).find('a').attr('href') !== undefined && $(this).find('a').attr('href').match(mbidRE)) {
return false;
}
columnindex++;
});
return false;
});
// Set MBID to row in tables to get easiest fastest access
$("table.tbl tr[class!='subh']").each(function () {
let $tr = $(this);
$tr.children(`th:eq(${columnindex})`).after("<th style='width: 150px;'>Relationships</th>");
$tr.children(`td:eq(${columnindex})`).after("<td class='relationships'></td>");
$(this)
.find('a')
.each(function () {
let href = $(this).attr('href');
if ((m = href.match(mbidRE))) {
$tr.attr('id', m[2]);
return false;
}
});
});
// Adapt width of subheader rows by incrementing the colspan of a cell
$('table.tbl tr.subh').each(function () {
$(this)
.children('th[colspan]')
.attr('colspan', function (index, oldValue) {
if (index === 0) {
return Number(oldValue) + 1;
} else {
return oldValue;
}
});
});
// Calculate offset for multi-page lists
let page = 1;
if ((m = window.location.href.match('[?&]page=([0-9]*)'))) {
page = m[1];
}
let offset = (page - 1) * 100;
// Call the MB webservice
let url = `/ws/2/${child.type}?${parent.type}=${parent.mbid}&inc=${incOptions[child.type].join('+')}&limit=100&offset=${offset}`;
//console.log("MB WS url: " + url);
$.get(url, function (data, textStatus, jqXHR) {
// Parse each child
$(data)
.find(child.type)
.each(function () {
let mbid = $(this).attr('id');
// URL relationships
$(this)
.find("relation-list[target-type='url'] relation")
.each(function () {
let reltype = $(this).attr('type');
let target = $(this).children('target').text();
if (Object.prototype.hasOwnProperty.call(relationsIconsURLs.url, reltype)) {
$(`#${mbid} td.relationships`).append(
`<a href='${target.replace(/'/g, '&apos;')}'>` +
`<img style='max-height: 16px;' src='${relationsIconsURLs.url[reltype]}' />&nbsp;` +
`</a>`
);
} else
for (let rel in otherDatabasesIconURLs) {
if (target.indexOf(rel) != -1) {
$(`#${mbid} td.relationships`).append(
`<a href='${target.replace(/'/g, '&apos;')}'>` +
`<img style='max-height: 16px;' src='${otherDatabasesIconURLs[rel]}' />&nbsp;` +
`</a>`
);
}
}
});
// Other relationships
$(this)
.find("relation-list[target-type!='url']")
.each(function () {
let targettype = $(this).attr('target-type').replace('release_group', 'release-group');
let relations = {};
if (relationsIconsURLs[targettype] === undefined) {
return;
}
$(this)
.children('relation')
.each(function () {
let reltype = $(this).attr('type');
let target = $(this).children('target').text();
let url = targettype == 'url' ? target : `/${targettype}/${target}`;
if (Object.prototype.hasOwnProperty.call(relationsIconsURLs[targettype], reltype)) {
if (!Object.prototype.hasOwnProperty.call(relations, reltype)) relations[reltype] = [url];
else relations[reltype].push(url);
}
});
$.each(relations, function (reltype, urls) {
let html = '';
if (urls.length < -1) {
html += `<img src='${relationsIconsURLs[targettype][reltype]}' />(${urls.length})&nbsp;`;
} else {
$.each(urls, function (index, url) {
html += `<a href='${url}'><img src='${relationsIconsURLs[targettype][reltype]}' /></a>&nbsp;`;
});
}
$(`#${mbid} td.relationships`).append(html);
});
});
});
});
});