-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3aab8b8
commit 93fc4ce
Showing
237 changed files
with
163,863 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
15,439 changes: 15,439 additions & 0 deletions
15,439
Sources/ContentScopeScripts/dist/contentScopeIsolated.js
Large diffs are not rendered by default.
Oops, something went wrong.
4,286 changes: 4,286 additions & 0 deletions
4,286
Sources/ContentScopeScripts/dist/pages/duckplayer/index.html
Large diffs are not rendered by default.
Oops, something went wrong.
693 changes: 693 additions & 0 deletions
693
Sources/ContentScopeScripts/dist/pages/duckplayer/js/index.css
Large diffs are not rendered by default.
Oops, something went wrong.
3,559 changes: 3,559 additions & 0 deletions
3,559
Sources/ContentScopeScripts/dist/pages/duckplayer/js/index.js
Large diffs are not rendered by default.
Oops, something went wrong.
14 changes: 14 additions & 0 deletions
14
Sources/ContentScopeScripts/dist/pages/duckplayer/js/inline.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
"use strict"; | ||
(() => { | ||
// pages/duckplayer/src/js/inline.js | ||
var param = new URLSearchParams(window.location.search).get("platform"); | ||
if (isAllowed(param)) { | ||
document.documentElement.dataset.platform = String(param); | ||
} else { | ||
document.documentElement.dataset.platform = "apple"; | ||
} | ||
function isAllowed(input) { | ||
const allowed = ["windows", "apple", "integration"]; | ||
return allowed.includes(input); | ||
} | ||
})(); |
Binary file added
BIN
+7.52 KB
Sources/ContentScopeScripts/dist/pages/duckplayer/js/mobile-bg-GCRU67TC.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+8.58 KB
Sources/ContentScopeScripts/dist/pages/duckplayer/js/player-bg-F7QLKTXS.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions
32
Sources/ContentScopeScripts/dist/pages/duckplayer/js/storage.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
function deleteStorage (subject) { | ||
Object.keys(subject).forEach((key) => { | ||
if (key.indexOf('yt-player') === 0) { | ||
return | ||
} | ||
subject.removeItem(key) | ||
}) | ||
} | ||
|
||
function deleteAllCookies () { | ||
const cookies = document.cookie.split(';') | ||
for (let i = 0; i < cookies.length; i++) { | ||
const cookie = cookies[i] | ||
const eqPos = cookie.indexOf('=') | ||
const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie | ||
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;domain=youtube-nocookie.com;path=/;' | ||
} | ||
} | ||
|
||
export function initStorage () { | ||
window.addEventListener('unload', () => { | ||
deleteStorage(localStorage) | ||
deleteStorage(sessionStorage) | ||
deleteAllCookies() | ||
}) | ||
|
||
window.addEventListener('load', () => { | ||
deleteStorage(localStorage) | ||
deleteStorage(sessionStorage) | ||
deleteAllCookies() | ||
}) | ||
} |
40 changes: 40 additions & 0 deletions
40
Sources/ContentScopeScripts/dist/pages/duckplayer/js/utils.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import { VideoParams } from '../../../../../../src/features/duckplayer/util' | ||
|
||
/** | ||
* @param {string} href | ||
* @param {string} urlBase | ||
* @return {null | string} | ||
*/ | ||
export function createYoutubeURLForError (href, urlBase) { | ||
const valid = VideoParams.forWatchPage(href) | ||
if (!valid) return null | ||
|
||
// this will not throw, since it was guarded above | ||
const original = new URL(href) | ||
|
||
// for now, we're only intercepting clicks when `emb_err_woyt` is present | ||
// this may not be enough to cover all situations, but it solves our immediate | ||
// problems whilst keeping the blast radius low | ||
if (original.searchParams.get('feature') !== 'emb_err_woyt') return null | ||
|
||
// if we get this far, we think a click is occurring that would cause a navigation loop | ||
// construct the 'next' url | ||
const url = new URL(urlBase) | ||
url.searchParams.set('v', valid.id) | ||
|
||
if (typeof valid.time === 'string') { | ||
url.searchParams.set('t', valid.time) | ||
} | ||
|
||
return url.toString() | ||
} | ||
|
||
/** | ||
* @param {string|null|undefined} iframeTitle | ||
* @return {string | null} | ||
*/ | ||
export function getValidVideoTitle (iframeTitle) { | ||
if (typeof iframeTitle !== 'string') return null | ||
if (iframeTitle === 'YouTube') return null | ||
return iframeTitle.replace(/ - YouTube$/g, '') | ||
} |
36 changes: 36 additions & 0 deletions
36
Sources/ContentScopeScripts/dist/pages/duckplayer/locales/en/duckplayer.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
{ | ||
"smartling": { | ||
"string_format": "icu", | ||
"translate_paths": [ | ||
{ | ||
"path": "*/title", | ||
"key": "{*}/title", | ||
"instruction": "*/note" | ||
} | ||
] | ||
}, | ||
"alwaysWatchHere": { | ||
"title": "Always open YouTube videos here", | ||
"note": "label text for a checkbox that enables this feature for all videos, not just the current one" | ||
}, | ||
"keepEnabled": { | ||
"title": "Keep Duck Player turned on", | ||
"note": "label text for a checkbox that enables this feature for all videos, not just the current one" | ||
}, | ||
"openInfoButton": { | ||
"title": "Open Info", | ||
"note": "aria label text on a button, to indicate there's more information to be shown if clicked" | ||
}, | ||
"openSettingsButton": { | ||
"title": "Open Settings", | ||
"note": "aria label text on a button, opens a screen where the user can change settings" | ||
}, | ||
"watchOnYoutube": { | ||
"title": "Watch on YouTube", | ||
"note": "text on a link that takes the user from the current page back onto YouTube.com" | ||
}, | ||
"invalidIdError": { | ||
"title": "<b>ERROR:</b> Invalid video id", | ||
"note": "Shown when the page URL doesn't match a known video ID. Note for translators: The <b> tag makes the word 'ERROR:' bold. Depending on the grammar of the target language, you might need to move it so that the correct word is emphasized." | ||
} | ||
} |
15 changes: 15 additions & 0 deletions
15
Sources/ContentScopeScripts/dist/pages/errorpage/img/logo-horizontal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 94 additions & 0 deletions
94
Sources/ContentScopeScripts/dist/pages/errorpage/index.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
<!doctype html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" | ||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> | ||
<meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
<style> | ||
body { | ||
font-family:'-apple-system-font'; | ||
background: rgb(255, 255, 255); | ||
|
||
display: flex; | ||
height: 100vh; | ||
margin: 0 auto; | ||
|
||
text-align: center; | ||
align-items: center; | ||
|
||
cursor: default; | ||
} | ||
|
||
.content-container { | ||
min-width: 320px; | ||
max-width: 580px; | ||
margin: 0 auto; | ||
} | ||
|
||
.error-header { | ||
font-size: 14px; | ||
font-weight: 600; | ||
line-height: 18px; | ||
margin: 0 auto; | ||
padding: 0px; | ||
} | ||
|
||
.error-description { | ||
font-size: 13px; | ||
line-height: 16px; | ||
margin: 0 auto; | ||
padding: 8px; | ||
} | ||
|
||
.header-container .description-container { | ||
color: rgb(44, 44, 44); | ||
position: relative; | ||
width: 100%; | ||
word-wrap: break-word; | ||
} | ||
|
||
.watermark-container { | ||
display: inline-block; | ||
position: fixed; | ||
width: 100px; | ||
height: 100px; | ||
bottom: 20px; | ||
right: 20px; | ||
opacity: 0.5; | ||
filter: grayscale(100%); | ||
pointer-events: none; | ||
} | ||
|
||
.watermark { | ||
max-width: 100px; | ||
max-height: 100px; | ||
} | ||
|
||
@media (prefers-color-scheme: dark) { | ||
body { | ||
background: rgb(51, 51, 51); | ||
} | ||
|
||
.error-description, .error-header { | ||
color: rgb(210, 210, 210); | ||
} | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<div class="content-container"> | ||
<div class="error-container"> | ||
<div class="header-container"> | ||
<h1 class="error-header">$HEADER$</h1> | ||
</div> | ||
<div class="description-container"> | ||
<p class="error-description">$ERROR_DESCRIPTION$</p> | ||
</div> | ||
</div> | ||
<div class="watermark-container"> | ||
<img alt="DuckDuckGo" class="watermark" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjU2IDUxMkMzOTcuMzg1IDUxMiA1MTIgMzk3LjM4NSA1MTIgMjU2QzUxMiAxMTQuNjE1IDM5Ny4zODUgMCAyNTYgMEMxMTQuNjE1IDAgMCAxMTQuNjE1IDAgMjU2QzAgMzk3LjM4NSAxMTQuNjE1IDUxMiAyNTYgNTEyWiIgZmlsbD0iI0RFNTgzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI5MiA0NDdDMjkyIDQ0NSAyOTIuNDkxIDQ0NC41NDQgMjg2LjEzMyA0MzEuODcyQzI2OS4yMzcgMzk4LjAzNyAyNTIuMjU2IDM1MC4zMzYgMjU5Ljk3OSAzMTkuNTczQzI2MS4zODcgMzEzLjk4NCAyNDQuMDY0IDExMi41OTcgMjMxLjgxOSAxMDYuMTEyQzIxOC4yMDggOTguODU4NCAyMDEuNDYyIDg3LjM1MjMgMTg2LjE0NCA4NC43OTIzQzE3OC4zNzMgODMuNTQ4OSAxNjguMTgzIDg0LjEzNzggMTYwLjIxNyA4NS4yMTA2QzE1OC44MDEgODUuNDAxMyAxNTguNzQzIDg3Ljk0NiAxNjAuMDk2IDg4LjQwNDRDMTY1LjMyNiA5MC4xNzYyIDE3MS42NzYgOTMuMjUyNSAxNzUuNDE4IDk3LjkwMzhDMTc2LjEyNyA5OC43ODQyIDE3NS4xNzYgMTAwLjE2OSAxNzQuMDQ3IDEwMC4yMTFDMTcwLjUxOSAxMDAuMzQxIDE2NC4xMTkgMTAxLjgyIDE1NS42NzYgMTA4Ljk5MkMxNTQuNjk5IDEwOS44MjEgMTU1LjUxIDExMS4zNjIgMTU2Ljc2NyAxMTEuMTEzQzE3NC45MTMgMTA3LjUyMyAxOTMuNDQ1IDEwOS4yOTIgMjA0LjM2NyAxMTkuMjE4QzIwNS4wNzUgMTE5Ljg2MyAyMDQuNzA1IDEyMS4wMTggMjAzLjc4MSAxMjEuMjdDMTA5LjAwNCAxNDcuMDI2IDEyNy43NjYgMjI5LjQ3IDE1Mi45OTcgMzMwLjY0NUMxNzUuNDcgNDIwLjc2NCAxODMuOTI4IDQ0OS44MTEgMTg2LjU5NCA0NTguNjZDMTg2Ljg1MiA0NTkuNTE3IDE4Ny40NTUgNDYwLjE5NiAxODguMjg2IDQ2MC41MjdDMjIwLjkxMiA0NzMuNTE5IDI5MiA0NzQuMDk2IDI5MiA0NTJWNDQ3WiIgZmlsbD0iI0RERERERCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ5MSAyNTZDNDkxIDM4NS43ODcgMzg1Ljc4NyA0OTEgMjU2IDQ5MUMxMjYuMjEzIDQ5MSAyMSAzODUuNzg3IDIxIDI1NkMyMSAxMjYuMjEzIDEyNi4yMTMgMjEgMjU2IDIxQzM4NS43ODcgMjEgNDkxIDEyNi4yMTMgNDkxIDI1NlpNMjAxLjE1NyA0NjMuOTQyQzE5NC42NjMgNDQzLjg4MiAxNzYuNTE0IDM4NS43MzkgMTU4LjU4OSAzMTIuMjZDMTU3Ljk5MiAzMDkuODEyIDE1Ny4zOTYgMzA3LjM3NSAxNTYuODAyIDMwNC45NTFMMTU2Ljc4NyAzMDQuODlDMTM1LjA5IDIxNi4yNjYgMTE3LjM2OCAxNDMuODggMjE0LjQ5NSAxMjEuMTRDMjE1LjM4MyAxMjAuOTMyIDIxNS44MTggMTE5Ljg3IDIxNS4yMyAxMTkuMTczQzIwNC4wODYgMTA1Ljk1MyAxODMuMjA5IDEwMS42MTkgMTU2LjgxMiAxMTAuNzI2QzE1NS43MjkgMTExLjEgMTU0Ljc4OSAxMTAuMDA4IDE1NS40NjEgMTA5LjA4MUMxNjAuNjM4IDEwMS45NDYgMTcwLjc1MyA5Ni40NjAyIDE3NS43NDcgOTQuMDU1M0MxNzYuNzggOTMuNTU4MiAxNzYuNzE3IDkyLjA0NjkgMTc1LjYyMyA5MS43MDQ2QzE3Mi4zNTcgOTAuNjgyMSAxNjYuNzk1IDg5LjExNzMgMTYwLjUzOSA4OC4xMDc1QzE1OS4wNTkgODcuODY4NiAxNTguOTI1IDg1LjMzMiAxNjAuNDExIDg1LjEzMkMxOTcuODM0IDgwLjA5NzEgMjM2LjkxMyA5MS4zMzI1IDI1Ni41MjMgMTE2LjAzNUMyNTYuNzA4IDExNi4yNjggMjU2Ljk3NSAxMTYuNDMgMjU3LjI2NSAxMTYuNDkyQzMyOS4wNzcgMTMxLjkxNCAzMzQuMjE4IDI0NS40MzIgMzI1Ljk0NiAyNTAuNjAzQzMyNC4zMTUgMjUxLjYyMiAzMTkuMDg4IDI1MS4wMzcgMzEyLjE5NCAyNTAuMjY2QzI4NC4yNTIgMjQ3LjEzOSAyMjguOTIyIDI0MC45NDkgMjc0LjU4OCAzMjYuMDU1QzI3NS4wMzkgMzI2Ljg5NSAyNzQuNDQxIDMyOC4wMDggMjczLjQ5OSAzMjguMTU1QzI0Ny44MzYgMzMyLjE0NSAyODAuNTIgNDEyLjI5MiAzMDQuNzQ5IDQ2NS40NUM0MDAuMDA3IDQ0My4zNjcgNDcxIDM1Ny45NzQgNDcxIDI1NkM0NzEgMTM3LjI1OSAzNzQuNzQxIDQxIDI1NiA0MUMxMzcuMjU5IDQxIDQxIDEzNy4yNTkgNDEgMjU2QzQxIDM1NS43ODcgMTA4Ljk4MSA0MzkuNjk3IDIwMS4xNTcgNDYzLjk0MloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zMzcuMTIxIDM2Mi43OTJDMzMxLjY1NCAzNjAuMjU5IDMxMC42MzQgMzc1LjMzMyAyOTYuNjgzIDM4Ni45MDVDMjkzLjc2NyAzODIuNzggMjg4LjI2OSAzNzkuNzgxIDI3NS44NjggMzgxLjkzOEMyNjUuMDE0IDM4My44MjUgMjU5LjAyMiAzODYuNDQyIDI1Ni4zNDkgMzkwLjk1NEMyMzkuMjE3IDM4NC40NTggMjEwLjM5NiAzNzQuNDM1IDIwMy40MzQgMzg0LjExNUMxOTUuODIzIDM5NC42OTcgMjA1LjMzNiA0NDQuNzU3IDIxNS40NDQgNDUxLjI1N0MyMjAuNzIyIDQ1NC42NSAyNDUuOTY3IDQzOC40MjQgMjU5LjE1IDQyNy4yMzRDMjYxLjI3NyA0MzAuMjMxIDI2NC43MDEgNDMxLjk0NiAyNzEuNzQgNDMxLjc4M0MyODIuMzg3IDQzMS41MzYgMjk5LjY1NCA0MjkuMDU5IDMwMi4zMzQgNDI0LjFDMzAyLjQ5NyA0MjMuNzk5IDMwMi42MzcgNDIzLjQ0MyAzMDIuNzU3IDQyMy4wMzhDMzE2LjMwNyA0MjguMTAyIDM0MC4xNTQgNDMzLjQ2MiAzNDUuNDgyIDQzMi42NjFDMzU5LjM2NSA0MzAuNTc2IDM0My41NDggMzY1Ljc3IDMzNy4xMjEgMzYyLjc5MloiIGZpbGw9IiMzQ0E4MkIiLz4KPHBhdGggZD0iTTI5Ny45NjEgMzg4LjM4NkMyOTguNTM2IDM4OS40MTEgMjk4Ljk5OCAzOTAuNDkyIDI5OS4zOTEgMzkxLjU5MkMzMDEuMzIyIDM5Ni45OTQgMzA0LjQ3IDQxNC4xOCAzMDIuMDkgNDE4LjQyNUMyOTkuNzEgNDIyLjY3IDI4NC4yNTIgNDI0LjcyIDI3NC43MTYgNDI0Ljg4NUMyNjUuMTgxIDQyNS4wNDkgMjYzLjAzNCA0MjEuNTYyIDI2MS4xMDIgNDE2LjE2QzI1OS41NTcgNDExLjgzOCAyNTguNzk2IDQwMS42NzcgMjU4LjgxNSAzOTUuODU5QzI1OC40MjQgMzg3LjIyOSAyNjEuNTc3IDM4NC4xOTUgMjc2LjE1MSAzODEuODM3QzI4Ni45MzYgMzgwLjA5MSAyOTIuNjM4IDM4Mi4xMjEgMjk1LjkyOSAzODUuNTk1QzMxMS4yNDEgMzc0LjE2NyAzMzYuNzg4IDM1OC4wNCAzMzkuMjggMzYwLjk4N0MzNTEuNzA0IDM3NS42ODQgMzUzLjI3NSA0MTAuNjcgMzUwLjU4NCA0MjQuNzQ1QzM0OS43MDUgNDI5LjM0NyAzMDguNTY1IDQyMC4xODYgMzA4LjU2NSA0MTUuMjI0QzMwOC41NjUgMzk0LjYxNyAzMDMuMjE4IDM4OC45NjQgMjk3Ljk2MSAzODguMzg2WiIgZmlsbD0iIzRDQkEzQyIvPgo8cGF0aCBkPSJNMjA3Ljg0MiAzODEuOTUxQzIxMS4yMTEgMzc2LjYxOCAyMzguNTM2IDM4My4yNSAyNTMuNTM1IDM4OS45MjVDMjUzLjUzNSAzODkuOTI1IDI1MC40NTMgNDAzLjg4OSAyNTUuMzYgNDIwLjM0MUMyNTYuNzk1IDQyNS4xNTMgMjIwLjg1MiA0NDYuNTcyIDIxNi4xNiA0NDIuODg3QzIxMC43MzggNDM4LjYyOCAyMDAuNzU5IDM5My4xNiAyMDcuODQyIDM4MS45NTFaIiBmaWxsPSIjNENCQTNDIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjIxLjA3NiAyNzMuNjI2QzIyMy4yODYgMjY0LjAxMyAyMzMuNTg1IDI0NS44OTggMjcwLjM2IDI0Ni4zMzhDMjg4Ljk1MiAyNDYuMjYgMzEyLjA0NiAyNDYuMzMgMzI3LjM1NyAyNDQuNTkxQzM1MC4xMTQgMjQyLjAwNiAzNjcuMDA2IDIzNi41MDEgMzc4LjI2MiAyMzIuMjExQzM5NC4xODEgMjI2LjEzNyAzOTkuODMxIDIyNy40OTIgNDAxLjgxMSAyMzEuMTI2QzQwMy45ODggMjM1LjExOCA0MDEuNDIzIDI0Mi4wMTMgMzk1Ljg2MSAyNDguMzZDMzg1LjIzNiAyNjAuNDg0IDM2Ni4xMzUgMjY5Ljg3OCAzMzIuNDAxIDI3Mi42NjZDMjk4LjY2NyAyNzUuNDU0IDI3Ni4zMTkgMjY2LjQwNSAyNjYuNjk4IDI4MS4xMzhDMjYyLjU0OSAyODcuNDkyIDI2NS43NTcgMzAyLjQ2OCAyOTguMzggMzA3LjE4NEMzNDIuNDY0IDMxMy41NDYgMzc4LjY2OSAyOTkuNTE4IDM4My4xNDIgMzA3Ljk5QzM4Ny42MTYgMzE2LjQ2MiAzNjEuODQ3IDMzMy43IDMxNy42OTIgMzM0LjA2MUMyNzMuNTM3IDMzNC40MjIgMjQ1Ljk1NyAzMTguNjAxIDIzNi4xNzYgMzEwLjczN0MyMjMuNzY3IDMwMC43NiAyMTguMjE1IDI4Ni4yMDkgMjIxLjA3NiAyNzMuNjI2WiIgZmlsbD0iI0ZGQ0MzMyIvPgo8ZyBvcGFjaXR5PSIwLjgiPgo8cGF0aCBkPSJNMjc3LjMwOCAxNjguNTA4QzI3OS43NyAxNjQuNDc1IDI4NS4yMzIgMTYxLjM2MiAyOTQuMTcgMTYxLjM2MkMzMDMuMTA4IDE2MS4zNjIgMzA3LjMxMiAxNjQuOTE5IDMxMC4yMjMgMTY4Ljg4NUMzMTAuODE1IDE2OS42OTIgMzA5LjkxOCAxNzAuNjQxIDMwOSAxNzAuMjQ0QzMwOC43NzkgMTcwLjE0OSAzMDguNTU1IDE3MC4wNTEgMzA4LjMyOCAxNjkuOTUyQzMwNS4wNTkgMTY4LjUyNCAzMDEuMDQ2IDE2Ni43NzEgMjk0LjE3IDE2Ni42NzNDMjg2LjgxNiAxNjYuNTY5IDI4Mi4xNzkgMTY4LjQxIDI3OS4yNTkgMTY5Ljk5OEMyNzguMjc1IDE3MC41MzMgMjc2LjcyNCAxNjkuNDY0IDI3Ny4zMDggMTY4LjUwOFoiIGZpbGw9IiMxNDMwN0UiLz4KPHBhdGggZD0iTTE3Ni42ODMgMTczLjY2OEMxODUuMzYyIDE3MC4wNDEgMTkyLjE4MiAxNzAuNTEgMTk3LjAwNSAxNzEuNjVDMTk4LjAyIDE3MS44OTEgMTk4LjcyNSAxNzAuNzk4IDE5Ny45MTMgMTcwLjE0M0MxOTQuMTcxIDE2Ny4xMjQgMTg1Ljc5NCAxNjMuMzc2IDE3NC44NjkgMTY3LjQ1QzE2NS4xMjQgMTcxLjA4NCAxNjAuNTMxIDE3OC42MzQgMTYwLjUwMyAxODMuNTk4QzE2MC40OTcgMTg0Ljc2OCAxNjIuOTA0IDE4NC44NjcgMTYzLjUyNiAxODMuODc3QzE2NS4yMDggMTgxLjIwMSAxNjguMDA0IDE3Ny4yOTUgMTc2LjY4MyAxNzMuNjY4WiIgZmlsbD0iIzE0MzA3RSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMwMS43NjIgMjIzLjY3OUMyOTQuMDg5IDIyMy42NzkgMjg3Ljg2NSAyMTcuNDczIDI4Ny44NjUgMjA5LjgzNEMyODcuODY1IDIwMi4xOTUgMjk0LjA4OSAxOTUuOTg5IDMwMS43NjIgMTk1Ljk4OUMzMDkuNDM0IDE5NS45ODkgMzE1LjY1OCAyMDIuMTk1IDMxNS42NTggMjA5LjgzNEMzMTUuNjU4IDIxNy40NzMgMzA5LjQzNCAyMjMuNjc5IDMwMS43NjIgMjIzLjY3OVpNMzExLjU0OSAyMDUuMjQ4QzMxMS41NDkgMjAzLjI3IDMwOS45MjkgMjAxLjY2NyAzMDcuOTUxIDIwMS42NjdDMzA1Ljk3MyAyMDEuNjY3IDMwNC4zNyAyMDMuMjcgMzA0LjM1MyAyMDUuMjQ4QzMwNC4zNTMgMjA3LjIyNSAzMDUuOTczIDIwOC44MjggMzA3Ljk1MSAyMDguODI4QzMwOS45NDYgMjA4LjgyOCAzMTEuNTQ5IDIwNy4yMjUgMzExLjU0OSAyMDUuMjQ4WiIgZmlsbD0iIzE0MzA3RSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwOS42OTMgMjE5LjQxNkMyMDkuNjkzIDIyOC4zMzMgMjAyLjQ0NyAyMzUuNTYzIDE5My40OTUgMjM1LjU2M0MxODQuNTYxIDIzNS41NjMgMTc3LjI5OCAyMjguMzMzIDE3Ny4yOTggMjE5LjQxNkMxNzcuMjk4IDIxMC40OTggMTg0LjU2MSAyMDMuMjY5IDE5My40OTUgMjAzLjI2OUMyMDIuNDMgMjAzLjI2OSAyMDkuNjkzIDIxMC40OTggMjA5LjY5MyAyMTkuNDE2Wk0yMDQuOTE5IDIxNC4wNjJDMjA0LjkxOSAyMTEuNzYgMjAzLjA0MyAyMDkuODg1IDIwMC43MjUgMjA5Ljg4NUMxOTguNDIzIDIwOS44ODUgMTk2LjU0NyAyMTEuNzQzIDE5Ni41MyAyMTQuMDYyQzE5Ni41MyAyMTYuMzY0IDE5OC40MDYgMjE4LjIzOSAyMDAuNzI1IDIxOC4yMzlDMjAzLjA0MyAyMTguMjM5IDIwNC45MTkgMjE2LjM2NCAyMDQuOTE5IDIxNC4wNjJaIiBmaWxsPSIjMTQzMDdFIi8+CjwvZz4KPC9zdmc+Cg==" /> | ||
</div> | ||
</div> | ||
</body> | ||
</html> |
Oops, something went wrong.