SSC Polskie Znaki Drogowe

Wyświetla znak drogowy, o którym mowa w treści wiadomości na forum.

// ==UserScript==
// @name        SSC Polskie Znaki Drogowe
// @namespace   http://skyscrapercity.com/
// @description Wyświetla znak drogowy, o którym mowa w treści wiadomości na forum.
// @include     /^https?://www\.skyscrapercity\.com/show(post|thread)\.php.*$/
// @version     1.4.1 (LA02)
// @grant       GM.getValue
// @grant       GM.setValue
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

const reSignCode = /[^A-Za-z0-9_-]([ABCDEFGPRSTUW]T?\-\d+(\/\d+)*[a-z]?)( ["„”](.*?)["„”])?/gi;

////// DATABASE BEGIN ///////
const signIndex = {
    /* Warning signs */
    "A-1": {
        "name":  "niebezpieczny zakręt w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Znak_A-1.svg"
    },
    "A-2": {
        "name":  "niebezpieczny zakręt w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Znak_A-2.svg"
    },
    "A-3": {
        "name":  "niebezpieczne zakręty - pierwszy w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d0/Znak_A-3.svg"
    },
    "A-4": {
        "name":  "niebezpieczne zakręty - pierwszy w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/aa/Znak_A-4.svg"
    },
    "A-5": {
        "name": "skrzyżowanie dróg",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/43/Znak_A-5.svg"
    },
    "A-6": {
        "name": "skrzyżowanie z drogą podporządkowaną",
        "image": "@A-6a"
    },
    "A-6x": {
        "name": "skrzyżowanie z drogą podporządkowaną",
        "image": "@A-6a"
    },
    "A-6a": {
        "name": "skrzyżowanie z drogą podporządkowaną występującą po obu stronach",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0f/Znak_A-6a.svg"
    },
    "A-6b": {
        "name": "skrzyżowanie z drogą podporządkowaną występującą po prawej stronie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a3/Znak_A-6b.svg"
    },
    "A-6c": {
        "name": "skrzyżowanie z drogą podporządkowaną występującą po lewej stronie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9c/Znak_A-6c.svg"
    },
    "A-6d": {
        "name": "wlot drogi jednokierunkowej z prawej strony",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_A-6d.svg"
    },
    "A-6e": {
        "name": "wlot drogi jednokierunkowej z lewej strony",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Znak_A-6e.svg"
    },
    "A-7": {
        "name":  "ustąp pierwszeństwa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c8/Znak_A-7.svg"
    },
    "A-8": {
        "name":  "skrzyżowanie o ruchu okrężnym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Znak_A-8.svg"
    },
    "A-9": {
        "name":  "przejazd kolejowy z zaporami",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/56/Znak_A-9.svg"
    },
    "A-10": {
        "name":  "przejazd kolejowy bez zapór",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/14/Znak_A-10.svg"
    },
    "A-11": {
        "name":  "nierówna droga",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Znak_A-11.svg"
    },
    "A-11a": {
        "name":  "próg zwalniający",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/23/Znak_A-11a.svg"
    },
    "A-12": {
        "name":  "zwężenie jezdni",
        "image": "@A-12a"
    },
    "A-12a": {
        "name":  "zwężenie jezdni - dwustronne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/61/Znak_A-12a.svg"
    },
    "A-12b": {
        "name":  "zwężenie jezdni - prawostronne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f8/Znak_A-12b.svg"
    },
    "A-12c": {
        "name":  "zwężenie jezdni - lewostronne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/73/Znak_A-12c.svg"
    },
    "A-13": {
        "name":  "ruchomy most",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_A-13.svg"
    },
    "A-14": {
        "name":  "roboty na drodze",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/28/Znak_A-14.svg"
    },
    "A-15": {
        "name":  "śliska jezdnia",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/39/Znak_A-15.svg"
    },
    "A-16": {
        "name":  "przejście dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/52/Znak_A-16.svg"
    },
    "A-17": {
        "name":  "dzieci",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f9/Znak_A-17.svg"
    },
    "A-18": {
        "name":  "zwierzęta",
        "image": "@A-18a"
    },
    "A-18a": {
        "name":  "zwierzęta gospodarskie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Znak_A-18a.svg"
    },
    "A-18b": {
        "name":  "zwierzęta dzikie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Znak_A-18b.svg"
    },
    "A-19": {
        "name":  "boczny wiatr",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ab/Znak_A-19.svg"
    },
    "A-20": {
        "name":  "odcinek jezdni o ruchu dwukierunkowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Znak_A-20.svg"
    },
    "A-21": {
        "name":  "tramwaj",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_A-21.svg"
    },
    "A-22": {
        "name":  "niebezpieczny zjazd",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/94/Znak_A-22.svg"
    },
    "A-23": {
        "name":  "stromy podjazd",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/60/Znak_A-23.svg"
    },
    "A-24": {
        "name":  "rowerzyści",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9a/Znak_A-24.svg"
    },
    "A-25": {
        "name":  "spadające odłamki skalne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/42/Znak_A-25.svg"
    },
    "A-26": {
        "name":  "lotnisko",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e7/Znak_A-26.svg"
    },
    "A-27": {
        "name":  "nabrzeże lub brzeg rzeki",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/66/Znak_A-27.svg"
    },
    "A-28": {
        "name":  "sypki żwir",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Znak_A-28.svg"
    },
    "A-29": {
        "name":  "sygnały świetlne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d4/Znak_A-29.svg"
    },
    "A-30": {
        "name":  "inne niebezpieczeństwo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/66/Znak_A-30.svg"
    },
    "A-31": {
        "name":  "niebezpieczne pobocze",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/28/Znak_A-31.svg"
    },
    "A-31a": {
        "name":  "niebezpieczne pobocze po lewej stronie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/40/Znak_A-31_lewa.svg"
    },
    "A-32": {
        "name":  "oszronienie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/77/Znak_A-32.svg"
    },
    "A-33": {
        "name":  "zator drogowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/87/Znak_A-33.svg"
    },
    "A-34": {
        "name":  "wypadek drogowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/45/Znak_A-34.svg"
    },

    /* Prohibition signs */
    "B-1": {
        "name": "zakaz ruchu w obu kierunkach",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ed/Znak_B-1.svg"
    },
    "B-1a": {
        "name": "zakaz ruchu w obu kierunkach w określonych godzinach",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6d/Znak_B-1a.png"
    },
    "B-2": {
        "name": "zakaz wjazdu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/16/Znak_B-2.svg"
    },
    "B-3": {
        "name": "zakaz wjazdu pojazdów silnikowych, z wyjątkiem motocykli jednośladowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/47/Znak_B-3.svg"
    },
    "B-3a": {
        "name": "zakaz wjazdu autobusów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b3/Znak_B-3a.svg"
    },
    "B-4": {
        "name": "zakaz wjazdu motocykli",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Znak_B-4.svg"
    },
    "B-5": {
        "name": "zakaz wjazdu samochodów ciężarowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/76/Znak_B-5.svg"
    },
    "B-5a": {
        "name": "zakaz wjazdu pojazdów i zespołów pojazdów o określonej na znaku masie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/90/Znak_B-5_6ton.svg"
    },
    "B-6": {
        "name": "zakaz wjazdu ciągników rolniczych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/22/Znak_B-6.svg"
    },
    "B-7": {
        "name": "zakaz wjazdu pojazdów silnikowych z przyczepą",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fa/Znak_B-7.svg"
    },
    "B-7a": {
        "name": "zakaz wjazdu pojazdów silnikowych z przyczepą o określonej masie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/39/Znak_B-7_5ton.svg"
    },
    "B-8": {
        "name": "zakaz wjazdu pojazdów zaprzęgowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7e/Znak_B-8.svg"
    },
    "B-9": {
        "name": "zakaz wjazdu rowerów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/02/Znak_B-9.svg"
    },
    "B-10": {
        "name": "zakaz wjazdu motorowerów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_B-10.svg"
    },
    "B-11": {
        "name": "zakaz wjazdu wózków rowerowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b0/Znak_B-11.svg"
    },
    "B-12": {
        "name": "zakaz wjazdu wózków ręcznych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/36/Znak_B-12.svg"
    },
    "B-13": {
        "name": "zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Znak_B-13.svg"
    },
    "B-13a": {
        "name": "zakaz wjazdu pojazdów z towarami niebezpiecznymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_B-13a.svg"
    },
    "B-14": {
        "name": "zakaz wjazdu pojazdów z towarami, które mogą skazić wodę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/80/Znak_B-14.svg"
    },
    "B-15": {
        "name": "zakaz wjazdu pojazdów o szerokości ponad ...m",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/20/Znak_B-15.svg"
    },
    "B-16": {
        "name": "zakaz wjazdu pojazdów o wysokości ponad ...m",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/65/Znak_B-16.svg"
    },
    "B-17": {
        "name": "zakaz wjazdu pojazdów o długości ponad ...m",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/be/Znak_B-17.svg"
    },
    "B-18": {
        "name": "zakaz wjazdu pojazdów o rzeczywistej masie całkowitej ponad ...t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/92/Znak_B-18.svg"
    },
    "B-19": {
        "name": "zakaz wjazdu pojazdów o nacisku osi większym niż ...t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e1/Znak_B-19.svg"
    },
    "B-20": {
        "name": "stop",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8a/Poland_road_sign_B-20.svg"
    },
    "B-21": {
        "name": "zakaz skręcania w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_B-21.svg"
    },
    "B-22": {
        "name": "zakaz skręcania w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0b/Znak_B-22.svg"
    },
    "B-23": {
        "name": "zakaz zawracania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2d/Znak_B-23.svg"
    },
    "B-24": {
        "name": "koniec zakazu zawracania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/91/Znak_B-24.svg"
    },
    "B-25": {
        "name": "zakaz wyprzedzania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ad/Znak_B-25.svg"
    },
    "B-26": {
        "name": "zakaz wyprzedzania przez samochody ciężarowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/14/Znak_B-26.svg"
    },
    "B-27": {
        "name": "koniec zakazu wyprzedzania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f8/Znak_B-27.svg"
    },
    "B-28": {
        "name": "koniec zakazu wyprzedzania przez samochody ciężarowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4f/Znak_B-28.svg"
    },
    "B-29": {
        "name": "zakaz używania sygnałów dźwiękowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1f/Znak_B-29.svg"
    },
    "B-30": {
        "name": "koniec zakazu używania sygnałów dźwiękowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Znak_B-30.svg"
    },
    "B-31": {
        "name": "pierwszeństwo dla nadjeżdżających z przeciwka",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/94/Znak_B-31.svg"
    },
    "B-32": {
        "name": "stój – kontrola celna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_B-32.svg"
    },
    "B-32a": {
        "name": "stój – kontrola graniczna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Znak_B-32a.svg"
    },
    "B-32b": {
        "name": "stój – rogatka uszkodzona",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Znak_B-32b.svg"
    },
    "B-32c": {
        "name": "stój – sygnalizacja uszkodzona",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d2/Znak_B-32c.svg"
    },
    "B-32d": {
        "name": "stój – wjazd na prom",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/aa/Znak_B-32d.svg"
    },
    "B-32e": {
        "name": "stój – kontrola drogowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/70/Znak_B-32e.svg"
    },
    "B-32f": {
        "name": "stój – pobór opłat",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/38/Znak_B-32f.svg"
    },
    "B-33": {
        "name": "ograniczenie prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Znak_B-33.svg"
    },
    "B-34": {
        "name": "koniec ograniczenia prędkości",
     "B-34": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Znak_B-34.svg"
    },
    "B-35": {
        "name": "zakaz postoju",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f2/Znak_B-35.svg"
    },
    "B-36": {
        "name": "zakaz zatrzymywania się",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Znak_B-36.svg"
     
    },
    "B-37": {
        "name": "zakaz postoju w dni nieparzyste",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ea/Znak_B-37.svg"
    },
    "B-38": {
        "name": "zakaz postoju w dni parzyste",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/27/Znak_B-38.svg"
    },
    "B-39": {
        "name": "strefa ograniczonego postoju",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_B-39.svg",
    },
    "B-40": {
        "name": "koniec strefy ograniczonego postoju",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Znak_B-40.svg"
    },
    "B-41": {
        "name": "zakaz ruchu pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Znak_B-41.svg"
    },
    "B-42": {
        "name": "koniec zakazów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/30/Znak_B-42.svg"
    },
    "B-43": {
        "name": "strefa ograniczonej prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/84/Znak_B-43.svg"
    },
    "B-44": {
        "name": "koniec strefy ograniczonej prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/13/Znak_B-44.svg"
    },
    "B-3/4": {
        "name": "zakaz wjazdu pojazdów silnikowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Znak_B-3-4.svg"
    },
    "B-6/8": {
        "name": "zakaz wjazdu ciągników rolniczych i pojazdów zaprzęgowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Znak_B-6-8.svg"
    },
    "B-6/8/9": {
        "name": "zakaz wjazdu pojazdów innych niż samochodowe (z wyłączeniem motorowerów)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Znak_B-6-8-9.svg"
    },
    "B-9/12": {
        "name": "zakaz wjazdu rowerów i wózków ręcznych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/19/Znak_B-9-12.svg"
    },
    "B-13/14": {
        "name": "zakaz wjazdu pojazdów z towarami wybuchowymi lub łatwo zapalnymi oraz towarami mogącymi skazić wodę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/88/Znak_B-13-14.svg"
    },
    "B-3/4/10": {
        "name": "zakaz wjazdu pojazdów silnikowych, motocykli i motorowerów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8a/Znak_B-3-4-10.svg"
    },
    "C-1": {
        "name": "nakaz jazdy w prawo przed znakiem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/92/Znak_C-1.svg"
    },
    "C-2": {
        "name": "nakaz jazdy w prawo za znakiem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_C-2.svg"
    },
    "C-3": {
        "name": "nakaz jazdy w lewo przed znakiem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Znak_C-3.svg"
    },
    "C-4": {
        "name": "nakaz jazdy w lewo za znakiem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Znak_C-4.svg"
    },
    "C-5": {
        "name": "nakaz jazdy prosto",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Znak_C-5.svg"
    },
    "C-6": {
        "name": "nakaz jazdy prosto lub w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/01/Znak_C-6.svg"
    },
    "C-7": {
        "name": "nakaz jazdy prosto lub w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/be/Znak_C-7.svg"
    },
    "C-8": {
        "name": "nakaz jazdy w prawo lub w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8c/Znak_C-8.svg"
    },
    "C-9": {
        "name": "nakaz jazdy z prawej strony znaku",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Znak_C-9.svg"
    },
    "C-10": {
        "name": "nakaz jazdy z lewej strony znaku",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cc/Znak_C-10.svg"
    },
    "C-11": {
        "name": "nakaz jazdy z prawej lub z lewej strony znaku",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/38/Znak_C-11.svg"
    },
    "C-12": {
        "name": "ruch okrężny",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/78/Znak_C-12.svg"
    },
    "C-13": {
        "name": "droga dla rowerów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/96/Znak_C-13.svg"
    },
    "C-13a": {
        "name": "koniec drogi dla rowerów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_C-13a.svg"
    },
    "C-14": {
        "name": "prędkość minimalna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fe/Znak_C-14.svg"
    },
    "C-15": {
        "name": "koniec prędkości minimalnej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ab/Znak_C-15.svg"
    },
    "C-16": {
        "name": "droga dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/38/Znak_C-16.svg"
    },
    "C-16a": {
        "name": "koniec drogi dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/64/Znak_C-16a.svg"
    },
    "C-17": {
        "name": "nakazany kierunek jazdy dla pojazdów z towarami niebezpiecznymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cf/Znak_C-17.svg"
    },
    "C-18": {
        "name": "nakaz używania łańcuchów przeciwpoślizgowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4c/Znak_C-18.svg"
    },
    "C-19": {
        "name": "koniec nakazu używania łańcuchów przeciwpoślizgowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/19/Znak_C-19.svg"
    },
    "C-13/16": {
        "name": "droga dla rowerów i pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5d/Znak_C-13-16_r-p.svg"
    },

    "D-1": {
        "name": "droga z pierwszeństwem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Znak_D-1.svg"
    },
    "D-2": {
        "name": "koniec drogi z pierwszeństwem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/15/Znak_D-2.svg"
    },
    "D-3": {
        "name": "droga jednokierunkowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Znak_D-3.svg"
    },
    "D-4a": {
        "name": "droga bez przejazdu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/91/Znak_D-4a.svg"
    },
    "D-4b": {
        "name": "wjazd na drogę bez przejazdu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/17/Znak_D-4b.svg"
    },
    "D-4c": {
        "name": "wjazd na drogę bez przejazdu z lewej strony",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Znak_D-4c.svg"
    },
    "D-5": {
        "name": "pierwszeństwo na zwężonym odcinku jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_D-5.svg"
    },
    "D-6": {
        "name": "przejście dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/40/Znak_D-6.svg"
    },
    "D-6a": {
        "name": "przejazd dla rowerzystów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b3/Znak_D-6a.svg"
    },
    "D-6b": {
        "name": "przejście dla pieszych i przejazd dla rowerzystów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/70/Znak_D-6b.svg"
    },
    "D-7": {
        "name": "droga ekspresowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/ce/Znak_D7.svg"
    },
    "D-8": {
        "name": "koniec drogi ekspresowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Znak_D-8.svg"
    },
    "D-9": {
        "name": "autostrada",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e9/Znak_D9.svg"
    },
    "D-10": {
        "name": "koniec autostrady",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/29/Znak_D-10.svg"
    },
    "D-11": {
        "name": "początek pasa ruchu dla autobusów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_D-11.svg"
    },
    "D-12": {
        "name": "pas ruchu dla autobusów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ed/Znak_D-12.svg"
    },
    "D-13": {
        "name": "początek pasa ruchu powolnego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/27/Znak_D-13.svg"
    },
    "D-13a": {
        "name": "początek pasa ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/36/Znak_D-13a.svg"
    },
    "D-13b": {
        "name": "początek pasa ruchu na jezdni dwukierunkowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/79/Znak_D-13b.svg"
    },
    "D-14": {
        "name": "koniec pasa ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/81/Znak_D-14.svg"
    },
    "D-15": {
        "name": "przystanek autobusowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b0/Znak_D-15.svg"
    },
    "D-16": {
        "name": "przystanek trolejbusowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cf/Znak_D-16.svg"
    },
    "D-17": {
        "name": "przystanek tramwajowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/45/Znak_D-17.svg"
    },
    "D-18": {
        "name": "parking",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Znak_D-18.svg"
    },
    "D-18a": {
        "name": "parking - miejsce zastrzeżone",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0c/Znak_D-18a.svg"
    },
    "D-18b": {
        "name": "parking zadaszony",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a6/Znak_D-18b.svg"
    },
    "D-19": {
        "name": "postój taksówek",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Znak_D-19.svg"
    },
    "D-19a": {
        "name": "postój taksówek bagażowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_D-19a.svg"
    },
    "D-20": {
        "name": "koniec postoju taksówek",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/66/Znak_D-20.svg"
    },
    "D-20a": {
        "name": "koniec postoju taksówek bagażowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e8/Znak_D-20a.svg"
    },
    "D-21": {
        "name": "szpital",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4a/Znak_D-21.svg"
    },
    "D-21a": {
        "name": "policja",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/45/Znak_D-21a.svg"
    },
    "D-22": {
        "name": "punkt opatrunkowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8c/Znak_D-22.svg"
    },
    "D-23": {
        "name": "stacja paliwowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Znak_D-23.svg"
    },
    "D-23a": {
        "name": "stacja paliwowa tylko z gazem do napędu pojazdów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/42/Znak_D-23a.svg"
    },
    "D-24": {
        "name": "telefon",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/27/Znak_D-24.svg"
    },
    "D-25": {
        "name": "poczta",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/81/Znak_D-25.svg"
    },
    "D-26": {
        "name": "stacja obsługi technicznej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_D-26.svg"
    },
    "D-26a": {
        "name": "wulkanizacja",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_D-26a.svg"
    },
    "D-26b": {
        "name": "myjnia",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/97/Znak_D-26b.svg"
    },
    "D-26c": {
        "name": "toaleta publiczna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/07/Znak_D-26c.svg"
    },
    "D-26d": {
        "name": "natrysk",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/aa/Znak_D-26d.svg"
    },
    "D-27": {
        "name": "bufet lub kawiarnia",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1a/Znak_D-27.svg"
    },
    "D-28": {
        "name": "restauracja",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Znak_D-28.svg"
    },
    "D-29": {
        "name": "hotel",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/26/Znak_D-29.svg"
    },
    "D-30": {
        "name": "obozowisko",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/02/Znak_D-30.svg"
    },
    "D-31": {
        "name": "obozowisko wyposażone w podłączenia elektryczne dla przyczep kempingowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/49/Znak_D-31.svg"
    },
    "D-32": {
        "name": "pole biwakowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/63/Znak_D-32.svg"
    },
    "D-33": {
        "name": "schronisko młodzieżowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6c/Znak_D-33.svg"
    },
    "D-34": {
        "name": "punkt informacji turystycznej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/29/Znak_D-34.svg"
    },
    "D-34a": {
        "name": "informacja radiowa o ruchu drogowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fe/Znak_D-34a.svg"
    },
    "D-35": {
        "name": "przejście podziemne dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/71/Znak_D-35.svg"
    },
    "D-35a": {
        "name": "schody ruchome w dół",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0b/Znak_D-35a.svg"
    },
    "D-36": {
        "name": "przejście nadziemne dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Znak_D-36.svg"
    },
    "D-36a": {
        "name": "schody ruchome w górę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e5/Znak_D-36a.svg"
    },
    "D-37": {
        "name": "tunel",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1d/Znak_D-37.svg"
    },
    "D-38": {
        "name": "koniec tunelu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ad/Znak_D-38.svg"
    },
    "D-39": {
        "name": "dopuszczalne prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1c/Znak_D-39._Ograniczenia_pr%C4%99dko%C5%9Bci_w_Polsce_od_2011.svg"
    },
    "D-39a": {
        "name": "opłaty drogowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/86/Znak_D-39a.svg"
    },
    "D-40": {
        "name": "strefa zamieszkania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f8/Znak_D-40.svg"
    },
    "D-41": {
        "name": "koniec strefy zamieszkania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_D-41.svg"
    },
    "D-42": {
        "name": "obszar zabudowany",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/83/Znak_d42.svg"
    },
    "D-43": {
        "name": "koniec obszaru zabudowanego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/95/Znak_d43.svg"
    },
    "D-44": {
        "name": "strefa płatnego parkowania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Znak_D-44.svg"
    },
    "D-45": {
        "name": "koniec strefy płatnego parkowania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Znak_D-45.svg"
    },
    "D-46": {
        "name": "droga wewnętrzna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Znak_D-46.svg"
    },
    "D-47": {
        "name": "koniec drogi wewnętrznej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b9/Znak_D-47.svg"
    },
    "D-48": {
        "name": "zmiana pierwszeństwa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Znak_D-48.svg"
    },
    "D-48a": {
        "name": "zmiana pierwszeństwa z trójkątem wskazujący wlot podporządkowany",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/21/Znak_D-48a.svg"
    },
    "D-49": {
        "name": "pobór opłat",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Znak_D-49.svg"
    },
    "D-50": {
        "name": "zatoka",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Znak_D-50.svg"
    },
    "D-51": {
        "name": "automatyczna kontrola prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/41/Znak_D-51.svg"
    },
    "D-52": {
        "name": "strefa ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8b/Znak_D-52.svg"
    },
    "D-53": {
        "name": "koniec strefy ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d5/Znak_D-53.svg"
    },
    "E-1": {
        "name": "tablica przeddrogowskazowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/98/Znak_E-1.svg"
    },
    "E-1a": {
        "name": "tablica przeddrogowskazowa na autostradzie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/dc/Znak_E-1a.svg"
    },
    "E-1b": {
        "name": "tablica przeddrogowskazowa przed wjazdem na autostradę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d2/Znak_E-1b.svg"
    },
    "E-2a": {
        "name": "drogowskaz tablicowy umieszczany obok jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e0/Znak_E-2a.svg"
    },
    "E-2b": {
        "name": "drogowskaz tablicowy umieszczany nad jezdnią",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c0/Znak_E-2b.svg"
    },
    "E-2c": {
        "name": "drogowskaz tablicowy umieszczany obok jezdni na autostradzie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/21/Znak_E-2c.svg"
    },
    "E-2d": {
        "name": "drogowskaz tablicowy umieszczany nad jezdnią na autostradzie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/83/Znak_E-2d.svg"
    },
    "E-2e": {
        "name": "drogowskaz tablicowy umieszczony obok jezdni przed wjazdem na autostradę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Znak_E-2e.svg"
    },
    "E-2f": {
        "name": "drogowskaz tablicowy umieszczany nad jezdnią przed wjazdem na autostradę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Znak_E-2f.svg"
    },
    "E-3": {
        "name": "drogowskaz w kształcie strzały do miejscowości wskazujący numer drogi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/92/Znak_E-3.svg"
    },
    "E-3a": {
        "name": "drogowskaz w kształcie strzały do miejscowości wskazujący numer drogi – wersja z dwiema miejscowościami kierunkowymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Znak_E-3a.svg"
    },
    "E-4": {
        "name": "drogowskaz w kształcie strzały do miejscowości podający do niej odległość",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e7/Znak_E-4.svg"
    },
    "E-5": {
        "name": "drogowskaz do dzielnicy miasta",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/91/Znak_E-5.svg"
    },
    "E-5a": {
        "name": "drogowskaz do centrum miasta",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/21/Znak_E-5a.svg"
    },
    "E-6": {
        "name": "drogowskaz do lotniska",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Znak_E-6.svg"
    },
    "E-6a": {
        "name": "drogowskaz do dworca lub stacji kolejowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fb/Znak_E-6a.svg"
    },
    "E-6b": {
        "name": "drogowskaz do dworca autobusowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/78/Znak_E-6b.svg"
    },
    "E-6c": {
        "name": "drogowskaz do przystani promowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Znak_E-6c.svg"
    },
    "E-7": {
        "name": "drogowskaz do przystani wodnej lub żeglugi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d3/Znak_E-7.svg"
    },
    "E-8": {
        "name": "drogowskaz do plaży lub miejsca kąpielowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/df/Znak_E-8.svg"
    },
    "E-9": {
        "name": "drogowskaz do muzeum",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/64/Znak_E-9.svg"
    },
    "E-10": {
        "name": "drogowskaz do zabytku jako dobra kultury",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e2/Znak_E-10.svg"
    },
    "E-11": {
        "name": "drogowskaz do zabytku przyrody",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/08/Znak_E-11.svg"
    },
    "E-12": {
        "name": "drogowskaz do punktu widokowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cb/Znak_E-12.svg"
    },
    "E-12a": {
        "name": "drogowskaz do szlaku rowerowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Znak_E-12a.svg"
    },
    "E-13": {
        "name": "tablica kierunkowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/49/Znak_E-13.svg"
    },
    "E-14": {
        "name": "tablica szlaku drogowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cf/Znak_E-14.svg"
   },
    "E-14a": {
        "name": "tablica szlaku drogowego na autostradzie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/15/Znak_E-14a.svg"
    },
    "E-15": {
        "name": "numer drogi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/df/DK65-PL.svg"
    },
    "E-15a": {
        "name": "numer drogi krajowej o dopuszczalnym nacisku osi pojazdu do 11,5 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/df/DK65-PL.svg"
    },
    "E-15b": {
        "name": "numer drogi wojewódzkiej o dopuszczalnym nacisku osi pojazdu do 8 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d6/DW178-PL.svg"
    },
    "E-15c": {
        "name": "numer autostrady",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/60/A4-PL.svg"
    },
    "E-15d": {
        "name": "numer drogi ekspresowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/S14-PL.svg"
    },
    "E-15e": {
        "name": "numer drogi wojewódzkiej o dopuszczalnym nacisku osi pojazdu do 10 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9f/Znak_E-15e.svg"
    },
    "E-15f": {
        "name": "numer drogi krajowej o dopuszczalnym nacisku osi pojazdu do 10 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Znak_E-15f.svg"
    },
    "E-15g": {
        "name": "numer drogi krajowej o dopuszczalnym nacisku osi pojazdu do 8 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Znak_E-15g.svg"
    },
    "E-15h": {
        "name": "numer drogi wojewódzkiej o dopuszczalnym nacisku osi pojazdu do 11,5 t",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/48/Znak_E-15h.svg"
    },
    "E-16": {
        "name": "numer szlaku międzynarodowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2e/E30-PL.svg"
    },
    "E-17": {
        "name": "miejscowość",
        "image":  "@E-17a"
    },
    "E-17a": {
        "name": "miejscowość",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ee/Znak_E-17a.svg"
    },
    "E-18": {
        "name": "koniec miejscowości",
        "image":  "@E-18a"
    },
    "E-18a": {
        "name": "koniec miejscowości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6c/Znak_E-18a.svg"
    },
    "E-19a": {
        "name": "obwodnica",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c9/Znak_E-19a.svg"
    },
    "E-20": {
        "name": "tablica węzła drogowego na autostradzie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3a/Znak_E-20.svg"
    },
    "E-20a": {
        "name": "tablica węzła drogowego na autostradzie z nazwą i oznaczeniem węzła",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Znak_E-20a.svg"
    },
    "E-21": {
        "name": "dzielnica (osiedle)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/89/Znak_E-21.svg"
    },
    "E-22a": {
        "name": "samochodowy szlak turystyczny",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/09/Znak_E-22a.svg"
    },
    "E-22b": {
        "name": "obiekt na samochodowym szlaku turystycznym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Znak_E-22b.svg"
    },
    "E-22c": {
        "name": "informacja o obiektach turystycznych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/ce/Znak_E-22c.svg"
    },

    "F-1": {
        "name": "przejście graniczne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bd/Znak_F-1.svg"
    },
    "F-2": {
        "name": "przekraczanie granicy zabronione",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_F-2.svg"
    },
    "F-2a": {
        "name": "granica państwa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Znak_F-2a.svg"
    },
    "F-3": {
        "name": "granica obszaru administracyjnego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_F-3.svg"
    },
    "F-3a": {
        "name": "granica obszaru administracyjnego na granicy powiatu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e6/Znak_F-3a.svg"
    },
    "F-3b": {
        "name": "granica obszaru administracyjnego na granicy gminy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/50/Znak_F-3b.svg"
    },
    "F-3c": {
        "name": "granica obszaru administracyjnego miasta na prawach powiatu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5e/Znak_F-3c.svg"
    },
    "F-4": {
        "name": "nazwa rzeki",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/14/Znak_F-4.svg"
    },
    "F-5": {
        "name": "uprzedzenie o zakazie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/27/Znak_F-5.svg"
    },
    "F-6": {
        "name": "znak uprzedzający umieszczany przed skrzyżowaniem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/07/Znak_F-6.svg"
    },
    "F-6a": {
        "name": "znak uprzedzający umieszczany przed skrzyżowaniem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/07/Znak_F-6a.svg"
    },
    "F-7": {
        "name": "sposób jazdy w związku z zakazem skręcania w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3e/Znak_F-7.svg"
    },
    "F-8": {
        "name": "objazd w związku z zamknięciem drogi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Znak_F-8.svg"
    },
    "F-9": {
        "name": "znak prowadzący na drodze objazdowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ac/Znak_F-9.svg"
    },
    "F-10": {
        "name": "kierunki na pasach ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/58/Znak_F-10.svg"
    },
    "F-11": {
        "name": "kierunki na pasie ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/70/Znak_F-11.svg"
    },
    "F-12": {
        "name": "znak wskazujący przejazd tranzytowy umieszczany przed skrzyżowaniem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5f/Znak_F-12.svg"
    },
    "F-13": {
        "name": "przejazd tranzytowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Znak_F-13.svg"
    },
    "F-14a": {
        "name": "tablica wskaźnikowa na autostradzie umieszczana w odległości 300 m przed pasem wyłączania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8a/Znak_F-14a.svg"
    },
    "F-14b": {
        "name": "tablica wskaźnikowa na autostradzie umieszczana w odległości 200 m przed pasem wyłączania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/05/Znak_F-14b.svg"
    },
    "F-14c": {
        "name": "tablica wskaźnikowa na autostradzie umieszczana w odległości 100 m przed pasem wyłączania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ae/Znak_F-14c.svg"
    },
    "F-15": {
        "name": "niesymetryczny podział jezdni dla przeciwnych kierunków ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Znak_F-15.svg"
    },
    "F-16": {
        "name": "koniec pasa ruchu na jezdni dwukierunkowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7d/Znak_F-16.svg"
    },
    "F-17": {
        "name": "koniec pasa ruchu na jezdni jednokierunkowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/83/Znak_F-17.svg"
    },
    "F-18": {
        "name": "przeciwny kierunek dla określonych pojazdów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1f/Znak_F-18.svg"
    },
    "F-19": {
        "name": "pas ruchu dla określonych pojazdów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/65/Znak_F-19.svg"
    },
    "F-20": {
        "name": "część drogi (pas ruchu) dla określonych pojazdów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/30/Znak_F-20.svg"
    },
    "F-21": {
        "name": "ruch skierowany na sąsiednią jezdnię",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7d/Znak_F-21.svg"
    },
    "F-22": {
        "name": "ograniczenia na pasie ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/21/Znak_F-22.svg"
    },
    "G-1a": {
        "name": "słupek wskaźnikowy z trzema kreskami umieszczany po prawej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c5/Znak_G-1a.svg"
    },
    "G-1b": {
        "name": "słupek wskaźnikowy z dwiema kreskami umieszczany po prawej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f6/Znak_G-1b.svg"
    },
    "G-1c": {
        "name": "słupek wskaźnikowy z jedną kreską umieszczany po prawej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/0d/Znak_G-1c.svg"
    },
    "G-1d": {
        "name": "słupek wskaźnikowy z trzema kreskami umieszczany po lewej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/de/Znak_G-1d.svg"
    },
    "G-1e": {
        "name": "słupek wskaźnikowy z dwiema kreskami umieszczany po lewej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6e/Znak_G-1e.svg"
    },
    "G-1f": {
        "name": "słupek wskaźnikowy z jedną kreską umieszczany po lewej stronie jezdni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Znak_G-1f.svg"
    },
    "G-2": {
        "name": "sieć pod napięciem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cb/Znak_G-2.svg"
    },
    "G-3": {
        "name": "krzyż św. Andrzeja przed przejazdem kolejowym jednotorowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Znak_G-3.svg"
    },
    "G-4": {
        "name": "krzyż św. Andrzeja przed przejazdem kolejowym wielotorowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/51/Znak_G-4.svg"
    },
    "P-1": {
        "name": "linia pojedyncza przerywana",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/71/Znak_P-1.svg"
    },
    "P-1a": {
        "name": "linia pojedyncza przerywana - długa",
        "image": "@P-1" /* TODO: find actual image */
    },
    "P-1b": {
        "name": "linia pojedyncza przerywana - krótka",
        "image": "@P-1" /* TODO: find actual image */
    },
    "P-1c": {
        "name": "linia pojedyncza przerywana - wydzielająca",
        "image": "@P-1" /* TODO: find actual image */
    },
    "P-1d": {
        "name": "linia pojedyncza przerywana - prowadząca wąska",
        "image": "@P-1" /* TODO: find actual image */
    },
    "P-1e": {
        "name": "linia pojedyncza przerywana-prowadząca szeroko",
        "image": "@P-1" /* TODO: find actual image */
    },
    "P-2": {
        "name": "linia pojedyncza ciągła",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/01/Znak_P-2.svg"
    },
    "P-2a": {
        "name": "linia pojedyncza ciągła - wąska",
        "image": "@P-2" /* TODO: find actual image */
    },
    "P-2b": {
        "name": "linia pojedyncza ciągła - szeroka",
        "image": "@P-2" /* TODO: find actual image */
    },
    "P-3": {
        "name": "linia jednostronnie przekraczalna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/af/Znak_P-3.svg"
    },
    "P-3a": {
        "name": "linia jednostronnie przekraczalna - długa",
        "image": "@P-3" /* TODO: find actual image */
    },
    "P-3b": {
        "name": "linia jednostronnie przekraczalna - krótka",
        "image": "@P-3" /* TODO: find actual image */
    },
    "P-4": {
        "name": "linia podwójna ciągła",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a5/Znak_P-4.svg"
    },
    "P-5": {
        "name": "linia podwójna przerywana",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ab/Znak_P-5.svg"
    },
    "P-6": {
        "name": "linia ostrzegawcza",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cf/Znak_P-6.svg"
    },
    "P-6a": {
        "name": "linia ostrzegawcza - naprowadzająca",
        "image": "@P-6" /* TODO: find actual image */
    },
    "P-7": {
        "name": "linia krawędziowa",
        "image": "@P-7a"
    },
    "P-7a": {
        "name": "linia krawędziowa - przerywana szeroka",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Znak_P-7a.svg"
    },
    "P-7b": {
        "name": "linia krawędziowa - ciągła szeroka",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/57/Znak_P-7b.svg"
    },
    "P-7c": {
        "name": "linia krawędziowa - przerywana wąska",
        "image": "@P-7a" /* TODO: find actual image */
    },
    "P-7d": {
        "name": "linia krawędziowa - ciągła wąska",
        "image": "@P-7c" /* TODO: find actual image */
    },
    "P-8": {
        "name": "strzałka kierunkowa",
        "image": "@P-8a"
    },
    "P-8x": {
        "name": "strzałka kierunkowa",
        "image": "@P-8a"
    },
    "P-8a": {
        "name": "strzałka kierunkowa na wprost",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Znak_P-8a.svg"
    },
    "P-8b": {
        "name": "strzałka kierunkowa w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Znak_P-8b.svg"
    },
    "P-8c": {
        "name": "strzałka kierunkowa do zawracania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Znak_P-8c.svg"
    },
    "P-8d": {
        "name": "strzałka kierunkowa w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ad/Znak_P-8d.svg"
    },
    "P-9": {
        "name": "strzałka naprowadzająca",
        "image": "@P-9a"
    },
    "P-9a": {
        "name": "strzałka naprowadzająca w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Znak_P-9.svg"
    },
    "P-9b": {
        "name": "strzałka naprowadzająca w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/34/Znak_P-9b.svg"
    },
    "P-10": {
        "name": "przejście dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b0/Znak_P-10.svg"
    },
    "P-11": {
        "name": "przejazd dla rowerzystów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Znak_P-11.svg"
    },
    "P-12": {
        "name": "linia bezwzględnego zatrzymania - stop",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Znak_P-12.svg"
    },
    "P-13": {
        "name": "linia warunkowego zatrzymania złożona z trójkątów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/39/Znak_P-13.svg"
    },
    "P-14": {
        "name": "linia warunkowego zatrzymania złożona z prostokątów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/00/Znak_P-14.svg"
    },
    "P-15": {
        "name": "trójkąt podporządkowania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/52/Znak_P-15.svg"
    },
    "P-16": {
        "name": "napis stop",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/70/Znak_P-16.svg"
    },
    "P-17": {
        "name": "linia przystankowa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c7/Znak_P-17.svg"
    },
    "P-18": {
        "name": "stanowisko postojowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9b/Znak_P-18.svg"
    },
    "P-19": {
        "name": "linia wyznaczająca pas postojowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a8/Znak_P-19.svg"
    },
    "P-20": {
        "name": "koperta",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ec/Znak_P-20.svg"
    },
    "P-21": {
        "name": "powierzchnia wyłączona",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/64/Znak_P-21.svg"
    },
    "P-22": {
        "name": "BUS",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/64/Znak_P-22.svg"
    },
    "P-23": {
        "name": "rower",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Znak_P-23.svg"
    },
    "P-24": {
        "name": "miejsce dla pojazdu osoby niepełnosprawnej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/78/Znak_P-24.svg"
    },
    "P-25": {
        "name": "próg zwalniający",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d6/Znak_P-25.svg"
    },
    "P-26": {
        "name": "piesi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/58/Znak_P-26.png"
    },
    "P-27": {
        "name": "kierunek i tor ruchu roweru",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Znak_P-27.png"
    },
    "R-1": {
        "name": "szlak rowerowy lokalny",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/70/Znak_R-1.svg"
    },
    "R-1a": {
        "name": "początek (koniec) szlaku rowerowego lokalnego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ab/Znak_R-1a.svg"
    },
    "R-1b": {
        "name": "zmiana kierunku szlaku rowerowego lokalnego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/24/Znak_R-1b.svg"
    },
    "R-2": {
        "name": "szlak rowerowy międzynarodowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/26/Znak_R-2.svg"
    },
    "R-2a": {
        "name": "zmiana kierunku szlaku rowerowego międzynarodowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/46/Znak_R-2a.svg"
    },
    "R-3": {
        "name": "tablica szlaku rowerowego lokalnego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/35/Znak_R-3.svg"
    },
    "R-4": {
        "name": "informacja o szlaku rowerowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1f/Znak_R-4.svg"
    },
    "R-4a": {
        "name": "informacja o rzeczywistym przebiegu szlaku rowerowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/94/Znak_R-4a.svg"
    },
    "R-4b": {
        "name": "zmiana kierunku szlaku rowerowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3c/Znak_R-4b.svg"
    },
    "R-4c": {
        "name": "drogowskaz tablicowy szlaku rowerowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bc/Znak_R-4c.svg"
    },
    "R-4d": {
        "name": "drogowskaz szlaku rowerowego w kształcie strzały podający odległość",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c4/Znak_R-4d.svg"
    },
    "R-4e": {
        "name": "tablica przeddrogowskazowa szlaku rowerowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8f/Znak_R-4e.svg"
    },
    "S-1": {
        "name": "sygnalizator ogólny z sygnałami do kierowania ruchem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fa/Sygnalizator_S-1.svg"
    },
    "S-1a": {
        "name": "sygnalizator z sygnałami dla kierujących rowerem",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Znak_S-1a.png"
    },
    "S-2": {
        "name": "sygnalizator z sygnałem dopuszczającym skręcanie w kierunku wskazanym strzałką",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c2/Sygnalizator_S-2.svg"
    },
    "S-3": {
        "name": "sygnalizator kierunkowy",
        "image": "@S-3c"
    },
    "S-3a": {
        "name": "sygnalizator kierunkowy na wprost i w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bf/Sygnalizator_S-3a.png",
    },
    "S-3b": {
        "name": "sygnalizator kierunkowy na wprost i w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/65/Sygnalizator_S-3b.png"
    },
    "S-3c": {
        "name": "sygnalizator kierunkowy na wprost",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/ff/Sygnalizator_S-3.svg"
    },
    "S-3d": {
        "name": "sygnalizator kierunkowy w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/52/Sygnalizator_S-3d.svg"
    },
    "S-3e": {
        "name": "sygnalizator kierunkowy w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8e/Sygnalizator_S-3e.svg"
    },
    "S-3f": {
        "name": "sygnalizator kierunkowy w lewo zezwalający na zawracanie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/59/Sygnalizator_S-3f.png"
    },
    "S-3g": {
        "name": "sygnalizator kierunkowy dla zawracających",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/ce/Sygnalizator_S-3g.png"
    },
    "S-3h": {
        "name": "sygnalizator kierunkowy w lewo i w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Sygnalizator_S-3h.png"
    },
    "S-4": {
        "name": "sygnalizator z sygnałami dla pasów ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Sygnalizator_S-4.svg"
    },
    "S-5": {
        "name": "sygnalizator z sygnałami dla pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Sygnalizator_S-5.svg"
    },
    "S-6": {
        "name": "sygnalizator z sygnałami dla rowerzystów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/97/Sygnalizator_S-6.svg"
    },
    "S-7": {
        "name": "sygnalizator z sygnałem nakazującym opuszczenie pasa ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Sygnalizator_S-7.svg"
    },
    "T-1": {
        "name": "tabliczka wskazująca odległość znaku ostrzegawczego od miejsca niebezpiecznego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a4/Znak_T-1.svg"
    },
    "T-1a": {
        "name": "tabliczka wskazująca odległość znaku informacyjnego od początku (końca) drogi lub pasa ruchu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/89/Znak_T-1a.svg"
    },
    "T-1b": {
        "name": "tabliczka wskazująca długość tunelu lub odcinek drogi do końca tunelu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1e/Znak_T-1b.svg"
    },
    "T-2": {
        "name": "tabliczka wskazująca długość odcinka drogi, na którym powtarza się lub występuje niebezpieczeństwo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Znak_T-2.svg"
    },
    "T-3": {
        "name": "tabliczka wskazująca koniec odcinka, na którym powtarza się lub występuje niebezpieczeństwo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/49/Znak_T-3.svg"
    },
    "T-3a": {
        "name": "tabliczka wskazująca koniec miejsca przeznaczonego na postój",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_T-3a.svg"
    },
    "T-4": {
        "name": "tabliczka wskazująca liczbę zakrętów",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/23/Znak_T-4.svg"
    },
    "T-5": {
        "name": "tabliczka wskazująca początek drogi krętej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/59/Znak_T-5.svg"
    },
    "T-6": {
        "name": "tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie",
        "image": "@T-6a"
    },
    "T-6x": {
        "name": "tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie",
        "image": "@T-6a"
    },
    "T-6a": {
        "name": "tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie(umieszczana na drodze z pierwszeństwem)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d1/Znak_T-6a.svg"
    },
    "T-6b": {
        "name": "tabliczka wskazująca układ dróg podporządkowanych (umieszczana na drodze z pierwszeństwem)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/79/Znak_T-6b.svg"
    },
    "T-6c": {
        "name": "tabliczka wskazująca rzeczywisty przebieg drogi z pierwszeństwem przez skrzyżowanie (umieszczana na drodze podporządkowanej)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Znak_T-6c.svg"
    },
    "T-6d": {
        "name": "tabliczka wskazująca prostopadły przebieg drogi z pierwszeństwem przez skrzyżowanie oraz układ dróg podporządkowanych (umieszczana na drodze podporządkowanej)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Znak_T-6d.svg"
    },
    "T-7": {
        "name": "tabliczka wskazująca układ torów i drogi na przejeździe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/4a/Znak_T-7.svg"
    },
    "T-8": {
        "name": "tabliczka wskazująca miejsce, w którym ruch pojazdów został skierowany na tory tramwajowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d4/Znak_T-8.svg"
    },
    "T-9": {
        "name": "tabliczka wskazująca rzeczywistą wielkość spadku lub wzniesienia drogi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/be/Znak_T-9.svg"
    },
    "T-10": {
        "name": "tabliczka wskazująca bocznicę kolejową lub tor o podobnym charakterze",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b1/Znak_T-10_poprawny.svg"
    },
    "T-11": {
        "name": "tabliczka wskazująca przeprawę promową",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/1b/Znak_T-11.svg"
    },
    "T-12": {
        "name": "tabliczka wskazująca podłużny uskok nawierzchni",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/83/Znak_T-12.svg"
    },
    "T-13": {
        "name": "tabliczka wskazująca odcinek drogi, na którym występują deformacje nawierzchni w postaci kolein",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Znak_T-13.svg"
    },
    "T-14": {
        "name": "tabliczka wskazująca miejsce częstych potrąceń pieszych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3d/Znak_T-14.svg"
    },
    "T-14a": {
        "name": "tabliczka wskazująca miejsce częstych zderzeń z poprzedzającymi pojazdami",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/da/Znak_T-14a.svg"
    },
    "T-14b": {
        "name": "tabliczka wskazująca miejsce częstych zderzeń czołowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d7/Znak_T-14b.svg"
    },
    "T-14c": {
        "name": "tabliczka wskazująca miejsce częstych zderzeń z tramwajami",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/87/Znak_T-14c.svg"
    },
    "T-14d": {
        "name": "tabliczka wskazująca przejazd kolejowy na którym warunki powodują szczególne niebezpieczeństwo powstania wypadków",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/49/Znak_T-14d.svg"
    },
    "T-15": {
        "name": "tabliczka wskazująca miejsce częstych wypadków spowodowanych śliską nawierzchnią jezdni ze względu na opady deszczu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/ba/Znak_T-15.svg"
    },
    "T-16": {
        "name": "tabliczka wskazująca miejsce wyjazdu wozów strażackich",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/65/Znak_T-16.svg"
    },
    "T-16a": {
        "name": "tabliczka wskazująca miejsce wyjazdu karetek pogotowia",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Znak_T-16a.svg"
    },
    "T-17": {
        "name": "tabliczka wskazująca granicę państwa",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5a/Znak_T-17.svg"
    },
    "T-18": {
        "name": "tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu wskazanym na tabliczce",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Znak_T-18.svg"
    },
    "T-18a": {
        "name": ["tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu najpierw w prawo, a potem w lewo",
                 "tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu wskazanym na tabliczce",
                 "tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu"
                 ],
        "image": "@T-18" /* TODO: find actual image */
    },
    "T-18b": {
        "name": "tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu w lewo",
        "image": "@T-18" /* TODO: find actual image */
    },
    "T-18c": {
        "name": "tabliczka wskazująca nieoczekiwaną zmianę kierunku ruchu o przebiegu w prawo",
        "image": "@T-18" /* TODO: find actual image */
    },
    "T-19": {
        "name": "tabliczka wskazująca na malowanie znaków poziomych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7f/Znak_T-19.svg"
    },
    "T-20": {
        "name": "tabliczka wskazująca długość odcinka jezdni, na którym zakaz obowiązuje",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/77/Znak_T-20.svg"
    },
    "T-21": {
        "name": "tabliczka wskazująca odległość znaku od miejsca, od którego lub w którym zakaz obowiązuje",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Znak_T-21.svg"
    },
    "T-22": {
        "name": "tabliczka wskazująca, że znak nie dotyczy rowerów jednośladowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/72/Znak_T-22.svg"
    },
    "T-23a": {
        "name": "tabliczka wskazująca motocykle",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f3/Znak_T-23a.svg"
    },
    "T-23b": {
        "name": "tabliczka wskazująca samochody ciężarowe, pojazdy specjalne, pojazdy używane do celów specjalnych, o dopuszczalnej masie całkowitej przekraczającej 3,5 t, oraz ciągniki samochodowe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/a6/Znak_T-23b.svg"
    },
    "T-23c": {
        "name": "tabliczka wskazująca ciągniki rolnicze i pojazdy wolnobieżne",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c9/Znak_T-23c.svg"
    },
    "T-23d": {
        "name": "tabliczka wskazująca pojazdy silnikowe z przyczepą, z wyjątkiem pojazdów z przyczepą jednoosiową lub naczepą",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Znak_T-23d.svg"
    },
    "T-23e": {
        "name": "tabliczka wskazująca pojazdy z przyczepą kempingową",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b3/Znak_T-23e.svg"
    },
    "T-23f": {
        "name": "tabliczka wskazująca autobusy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/00/Znak_T-23f.svg"
    },
    "T-23g": {
        "name": "tabliczka wskazująca trolejbusy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7a/Znak_T-23g.svg"
    },
    "T-23h": {
        "name": "tabliczka wskazująca pojazdy z towarami niebezpiecznymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/47/Znak_T-23h.svg"
    },
    "T-23i": {
        "name": "tabliczka wskazująca pojazdy z towarami wybuchowymi lub łatwopalnymi",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Znak_T-23i.svg"
    },
    "T-23j": {
        "name": "tabliczka wskazująca pojazdy z towarami, które mogą skazić wodę",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/56/Znak_T-23j.svg"
    },
    "T-24": {
        "name": "tabliczka wskazująca, że pozostawiony pojazd zostanie usunięty na koszt właściciela",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Znak_T-24.svg"
    },
    "T-25": {
        "name": "tabliczka wskazująca początek zakazu postoju lub zatrzymywania",
        "image": "@T-25a"
    },
    "T-25a": {
        "name": "tabliczka wskazująca początek zakazu postoju lub zatrzymywania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Znak_T-25a.svg"
    },
    "T-25b": {
        "name": "tabliczka wskazująca kontynuację zakazu postoju lub zatrzymywania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/9c/Znak_T-25b.svg"
    },
    "T-25c": {
        "name": "tabliczka wskazująca odwołanie zakazu postoju lub zatrzymywania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/89/Znak_T-25c.svg"
    },
    "T-26": {
        "name": "tabliczka wskazująca, że zakaz postoju lub zatrzymywania dotyczy strony placu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/79/Znak_T-26.svg"
    },
    "T-27": {
        "name": "tabliczka wskazująca, że przejście dla pieszych jest szczególnie uczęszczane przez dzieci",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/21/Znak_T-27.svg"
    },
    "T-28": {
        "name": "tabliczka wskazująca, że za przejazd drogą pobierana jest opłata",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e3/Znak_T-28.svg"
    },
    "T-28a": {
        "name": "tabliczka wskazująca koniec odcinka drogi, za przejazd którym pobierana jest opłata",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c7/Znak_T-28a.svg"
    },
    "T-29": {
        "name": "tabliczka informująca o miejscu przeznaczonym dla pojazdu samochodowego uprawnionej osoby niepełnosprawnej o obniżonej sprawności ruchowej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2b/Znak_T-29.svg"
    },
    "T-30": {
        "name": "tabliczka wskazująca sposób ustawienia pojazdu względem krawędzi jezdni",
        "image": "@T-30a"
    },
    "T-30a": {
        "name": "tabliczka wskazująca postój całego pojazdu na chodniku równolegle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/7e/Znak_T-30.svg"
    },
    "T-30b": {
        "name": "tabliczka wskazująca postój całego pojazdu na chodniku prostopadle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/16/Znak_T-30b.svg"
    },
    "T-30c": {
        "name": "tabliczka wskazująca postój całego pojazdu na chodniku skośnie do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/4/46/Znak_T-30c.svg"
    },
    "T-30d": {
        "name": "tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu prostopadle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_T-30d.svg"
    },
    "T-30e": {
        "name": "tabliczka wskazująca postój na chodniku kołami przedniej osi pojazdu skośnie do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Znak_T-30e.svg"
    },
    "T-30f": {
        "name": "tabliczka wskazująca postój całego pojazdu na jezdni prostopadle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/5d/Znak_T-30f.svg"
    },
    "T-30g": {
        "name": "tabliczka wskazująca postój całego pojazdu na jezdni skośnie do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/df/Znak_T-30g.svg"
    },
    "T-30h": {
        "name": "tabliczka wskazująca postój na chodniku kołami jednego boku pojazdu równolegle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/15/Znak_T-30h.svg"
    },
    "T-30i": {
        "name": "tabliczka wskazująca postój całego pojazdu na jezdni równolegle do krawężnika",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f5/Znak_T-30i.svg"
    },
    "T-31": {
        "name": "tabliczka wskazująca kategorię tunelu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/62/Znak_T-31.svg"
    },
    "T-32": {
        "name": "tabliczka wskazująca minimalny odstęp od poprzedzającego pojazdu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/bb/Znak_T-32.svg"
    },
    "T-33": {
        "name": "tabliczka wskazująca umieszczenie w zatoce telefonu alarmowego i gaśnicy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/6a/Znak_T-33.svg"
    },
    "T-34": {
        "name": "tabliczka wskazująca pobór opłaty elektronicznej za przejazd drogą publiczną",
        "image": "https://upload.wikimedia.org/wikipedia/commons/5/55/Znak_T-34.svg"
    },
    "U-1a": {
        "name": "słupek prowadzący umieszczany samodzielnie na poboczu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8f/U-1a_prawy.svg"
    },
    "U-1b": {
        "name": "słupek prowadzący umieszczony na barierze ochronnej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/3b/Slupek3.png"
    },
    "U-1c": {
        "name": "punktowy element odblaskowy umieszczony na barierze ochronnej",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/37/U-1c_%28p%29.png"
    },
    "U-1d": {
        "name": "symbol słuchawki telefonicznej wskazującej kierunek do najbliższego telefonu alarmowego (w lewo)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e6/U-1d_Polish_road_sign.svg"
    },
    "U-1e": {
        "name": "symbol słuchawki telefonicznej wskazujący kierunek do najbliższego telefonu alarmowego (w prawo)",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2d/U-1e_Polish_road_sign.svg"
    },
    "U-1f": {
        "name": "znak z numerem drogi umieszczany na słupkach prowadzących",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e0/U-1f.png"
    },
    "U-2": {
        "name": "słupek krawędziowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c0/U-2_Slupek.png"
    },
    "U-3a": {
        "name": "tablica pojedyncza prowadząca w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/71/U-3a_Polish_road_sign.svg"
    },
    "U-3b": {
        "name": "tablica pojedyncza prowadząca w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/e/e0/U-3b_Polish_road_sign.svg"
    },
    "U-3c": {
        "name": "tablica prowadząca ciągła w prawo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/fc/U-3c_Polish_road_sign.svg"
    },
    "U-3d": {
        "name": "tablica prowadząca ciągła w lewo",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/99/U-3d.svg"
    },
    "U-3e": {
        "name": "tablica prowadząca dwustronna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8a/U-3e_Polish_road_sign.svg"
    },
    "U-4a": {
        "name": "tablica rozdzielająca stosowana na autostradach i drogach ekspresowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/04/U-4a.svg"
    },
    "U-4b": {
        "name": ["tablica rozdzielająca stosowana na drogach publicznych",
                 "tablica rozdzielająca stosowana na drogach publicznych, z wyjątkiem autostrad i dróg ekspresowych"],
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2c/U-4b.svg"
    },
    "U-4c": {
        "name": "tablica rozdzielająca stosowana podczas robót drogowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/63/U-4c.svg"
    },
    "U-5a": {
        "name": "słupek przeszkodowy",
        "image": null
    },
    "U-5b": {
        "name": "słupek przeszkodowy zespolony ze znakiem C-9",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/cd/U-5b.svg"
    },
    "U-5c": {
        "name": "aktywny słupek przeszkodowy zespolony ze znakiem C-9",
        "image": null
    },
    "U-6a": {
        "name": "tablica kierująca szeroka",
        "image": null
    },
    "U-6b": {
        "name": "tablica kierująca szeroka",
        "image": null
    },
    "U-6c": {
        "name": "tablica kierująca wąska",
        "image": null
    },
    "U-6d": {
        "name": "tablica kierująca wąska",
        "image": null
    },
    "U-7": {
        "name": "znak kilometrowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/a/ac/U-7.svg"
    },
    "U-8": {
        "name": "znak hektometrowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f9/U-8.svg"
    },
    "U-8": {
        "name": "znak hektometrowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f9/U-8.svg"
    },
    "U-8": {
        "name": "znak hektometrowy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f9/U-8.svg"
    },
    "U-9a": {
        "name": "skrajnia pozioma lewa",
        "image": ""
    },
    "U-9b": {
        "name": "U-9a",
        "image": null
    },
    "U-9a": {
        "name": "skrajnia pozioma prawa",
        "image": null
    },
    "U-9c": {
        "name": "skrajnia pionowa",
        "image": null
    },
    "U-10a": {
        "name": "urządzenie bramowe bez elementów uchylnych",
        "image": null
    },
    "U-10b": {
        "name": "urządzenie bramowe z elementami uchylnymi",
        "image": null
    },
    "U-11a": {
        "name": "balustrada",
        "image": null
    },
    "U-11b": {
        "name": "balustrada",
        "image": null
    },
    "U-12a": {
        "name": "ogrodzenie segmentowe",
        "image": null
    },
    "U-12b": {
        "name": "ogrodzenie łańcuchowe",
        "image": null
    },
    "U-12c": {
        "name": "słupek blokujący",
        "image": null
    },
    "U-13a": {
        "name": "rogatka z urządzeniem dzwonkowym i siatką",
        "image": null
    },
    "U-13b": {
        "name": "rogatka bez dodatkowych urządzeń",
        "image": null
    },
    "U-13c": {
        "name": "półrogatka",
        "image": null
    },
    "U-14a": {
        "name": "bariera drogowa stalowa",
        "image": null
    },
    "U-14b": {
        "name": "bariera drogowa betonowa",
        "image": null
    },
    "U-14c": {
        "name": "bariera drogowa stalowo-betonowa",
        "image": null
    },
    "U-14d": {
        "name": "bariera drogowa linowa",
        "image": null
    },
    "U-14e": {
        "name": "bariera drogowa kubaturowa",
        "image": null
    },
    "U-15a": {
        "name": "osłona energochłonna wielosegmentowa",
        "image": null
    },
    "U-15b": {
        "name": "osłona zabezpieczająca w postaci monobloku",
        "image": null
    },
    "U-16a": {
        "name": "liniowy próg zwalniający listwowy",
        "image": null
    },
    "U-16b": {
        "name": "liniowy próg zwalniający płytowy",
        "image": null
    },
    "U-16c": {
        "name": "liniowy próg zwalniający płytowy",
        "image": null
    },
    "U-16d": {
        "name": "liniowy próg zwalniający listwowy",
        "image": null
    },
    "U-17": {
        "name": "próg podrzutowy",
        "image": null
    },
    "U-18a": {
        "name": "lustro drogowe okrągłe",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8b/Golczewo_DW106_kier._Kamień.jpg"
    },
    "U-18d": {
        "name": "lustro drogowe prostokątne",
        "image": null
    },
    "U-19": {
        "name": "osłona przeciwolśnieniowa",
        "image": null
    },
    "U-20a": {
        "name": "zapora drogowa pojedyncza wąska",
        "image": null
    },
    "U-20b": {
        "name": "zapora drogowa pojedyncza szeroka",
        "image": null
    },
    "U-20c": {
        "name": "zapora drogowa podwójna",
        "image": null
    },
    "U-20d": {
        "name": "zapora drogowa potrójna",
        "image": null
    },
    "U-21a": {
        "name": "tablica kierująca",
        "image": null
    },
    "U-21b": {
        "name": "tablica kierująca",
        "image": null
    },
    "U-21c": {
        "name": "tablica kierująca",
        "image": null
    },
    "U-21d": {
        "name": "tablica kierująca",
        "image": null
    },
    "U-21e": {
        "name": "tablica kierująca z elementami odblaskowymi",
        "image": null
    },
    "U-21f": {
        "name": "tablica kierująca z elementami odblaskowymi",
        "image": null
    },
    "U-22": {
        "name": "taśma ostrzegawcza",
        "image": null
    },
    "U-23": {
        "name": "pachołek drogowy",
        "image": null
    },
    "U-24": {
        "name": "tablica uchylna z elementami odblaskowymi",
        "image": null
    },
    "U-25a": {
        "name": "separator ciągły",
        "image": null
    },
    "U-25b": {
        "name": "separator punktowy",
        "image": null
    },
    "U-26": {
        "name": "tablica ostrzegawcza ze znakiem A-14",
        "image": null
    },
    "U-26a": {
        "name": "tablica zamykająca",
        "image": null
    },
    "U-26b": {
        "name": "tablica zamykająca",
        "image": null
    },
    "U-26c": {
        "name": "tablica zamykająca",
        "image": null
    },
    "U-26d": {
        "name": "tablica zamykająca",
        "image": null
    },
    "U-27": {
        "name": "tablica wcześnie ostrzegająca",
        "image": null
    },
    "U-28": {
        "name": "kładka dla pieszych",
        "image": null
    },
    "W-1": {
        "name": "klasa obciążenia mostu o ruchu jednokierunkowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/15/Znak_W-1.svg"
    },
    "W-2": {
        "name": "klasa obciążenia mostu o ruchu dwukierunkowym",
        "image": "https://upload.wikimedia.org/wikipedia/commons/c/c8/Znak_W-2.svg"
    },
    "W-3": {
        "name": "klasa obciążenia mostu o ruchu jednokierunkowym dla pojazdów kołowych i gąsienicowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/f/f4/Znak_W-3.svg"
    },
    "W-4": {
        "name": "klasa obciążenia mostu o ruchu dwukierunkowym dla pojazdów kołowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/27/Znak_W-4.svg"
    },
    "W-5": {
        "name": "klasa obciążenia mostu o ruchu dwukierunkowym dla pojazdów gąsienicowych",
        "image": "https://upload.wikimedia.org/wikipedia/commons/0/02/Znak_W-5.svg"
    },
    "W-6": {
        "name": "szerokość mostu lub środka przeprawowego",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/33/Znak_W-6.svg"
    },
    "W-7": {
        "name": "wysokość skrajni pionowej na moście lub w tunelu",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/d3/Znak_W-7.svg"
    },
    "AT-1": {
        "name": "sygnalizacja świetlna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/3/32/Znak_AT-1.svg"
    },
    "AT-2": {
        "name": "sygnalizacja świetlna wzbudzana",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/80/Znak_AT-2.svg"
    },
    "AT-3": {
        "name": "niebezpieczny zjazd",
        "image": "https://upload.wikimedia.org/wikipedia/commons/1/15/Znak_AT-3.svg"
    },
    "AT-4": {
        "name": "stromy podjazd",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b4/Znak_AT-4.svg"
    },
    "AT-5": {
        "name": "ruch kolizyjny",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2c/Znak_AT-5.svg"
    },
    "BT-1": {
        "name": "ograniczenie prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8b/Znak_BT-1.svg"
    },
    "BT-2": {
        "name": "koniec ograniczenia prędkości",
        "image": "https://upload.wikimedia.org/wikipedia/commons/8/8c/Znak_BT-2.svg"
    },
    "BT-3": {
        "name": "blokada zwrotnicy",
        "image": "https://upload.wikimedia.org/wikipedia/commons/2/2e/Znak_BT-3.svg"
    },
    "BT-4": {
        "name": "stop – zwrotnica eksploatowana jednostronnie",
        "image": "https://upload.wikimedia.org/wikipedia/commons/7/76/Znak_BT-4.svg"
    },
    "CT-1": {
        "name": "izolator sekcyjny",
        "image": "https://upload.wikimedia.org/wikipedia/commons/b/b4/Znak_CT-1.svg"
    },
    "CT-2": {
        "name": "granica zasilania",
        "image": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Znak_CT-2.svg"
    },
    "DT-1": {
        "name": "zwrotnica elektryczna lewoskrętna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/6/66/Znak_DT-1.svg"
    },
    "DT-2": {
        "name": "zwrotnica elektryczna prawoskrętna",
        "image": "https://upload.wikimedia.org/wikipedia/commons/9/97/Znak_DT-2.svg"
    }
};

////// DATABASE END ///////

/* New flags */
const PM_DATAFMT_MASK           = 0xFF000000;
const PM_DATAFMT_1_0            = 0x00000000; /**< Data format for versions 1.0 to 1.3 */
const PM_DATAFMT_1_4            = 0x01000000; /**< Data format for version 1.4 */

const PM_POST_MASK              = 0x0000000F;
const PM_POST_SHOW_THUMB_R      = 0x00000001;
const PM_POST_SHOW_THUMB_L      = 0x00000002;
const PM_POST_SHOW_SYMBOL       = 0x00000004;
const PM_POST_SHOW_NAME         = 0x00000008;
const PM_SHOW_HINT              = 0x00000010;
const PM_SHOW_HIGHLIGHT         = 0x00000020;

var presentationMode      = 0;
var resolvedTrafficSigns  = 0;
var potentialTrafficSigns = 0;

var signSpans = [];

////////////////////////////////////////////////////////////////////////////////////////
Document.prototype.showHintFrame = function(trafficSignId) {

  if ((presentationMode & PM_SHOW_HINT) === 0)
    return;

  var hintFrame = document.getElementById("hintFrame");
  hintFrame.style.display = "block";

  var hintFrameImage = document.getElementById("hintFrameImage");
  hintFrameImage.src = getImageForSign(trafficSignId);
};

////////////////////////////////////////////////////////////////////////////////////////
Document.prototype.hideHintFrame = function() {
  if ((presentationMode & PM_SHOW_HINT) === 0)
    return;
  var hintFrame = document.getElementById("hintFrame");
  hintFrame.style.display = "none";
};

////////////////////////////////////////////////////////////////////////////////////////
function getImageForSign(sign) {
  var imgLink;
  if (signIndex[sign] && signIndex[sign].image) {
    imgLink = signIndex[sign].image;
  } else {
    return null;
  }

  if (imgLink.charAt(0) == '@') {
    imgLink = getImageForSign(imgLink.substr(1));
  }
  return imgLink;
}

function getSignName(sign) {
  if (!signIndex[sign] || !signIndex[sign].name) {
    return null;
  } else {
    if (Array.isArray(signIndex[sign].name)) {
      return signIndex[sign].name[0];
    } else {
      return signIndex[sign].name;
    }
  }
}

function getSignNames(sign) {
  if (!signIndex[sign] || !signIndex[sign].name) {
    return [];
  } else {
    if (Array.isArray(signIndex[sign].name)) {
      return signIndex[sign].name;
    } else {
      return [signIndex[sign].name];
    }
  }
}

function stringsSimilar(s1, s2) {
    if (s1) {
        s1 = s1.trim().toUpperCase();
    }
    if (s2) {
        s2 = s2.trim().toUpperCase();
    }
    return s1 === s2;
}

////////////////////////////////////////////////////////////////////////////////////////
function createReplacementFor(replacedElement) {
  var code = "";
  var signCode = replacedElement.code;
  var followingQuotedText = replacedElement.followingQuotedText;
  if (getImageForSign(signCode)) {
    
    caption = getSignName(signCode);
    code = "<span title=\"" + signCode + ": " + caption + "\"";
    if ((presentationMode & PM_SHOW_HINT) !== 0) {
      code += " id=\"trafficSign_" + signSpans.length + "\"";
      signSpans.push(signCode);
    }
    if ((presentationMode & PM_SHOW_HIGHLIGHT) !== 0) {
      code += " style=\"border-bottom: 1px solid #080;\"";
    }
    code += ">";
    var thumbnailCode = " <img src=\""+getImageForSign(signCode)+"\"";
    thumbnailCode += " style=\"max-height: 16px\"";
    thumbnailCode += " alt=\"" + signCode + ": " + caption + "\"";
    thumbnailCode += " title=\"" + signCode + ": " + caption + "\" />";
      
    if ((presentationMode & PM_POST_SHOW_THUMB_L) !== 0) {
      code += thumbnailCode;
    }
    if ((presentationMode & PM_POST_SHOW_SYMBOL) !== 0) {
      code += signCode;
    }
    if ((presentationMode & PM_POST_SHOW_NAME) !== 0) {
      var signNames = getSignNames(signCode);
      var insertName = true;
      for (var ix = 0; ix < signNames.length; ix++) {
        if (stringsSimilar(signNames[ix], followingQuotedText)) {
          insertName = false;
        }
      }
      if (signNames.length > 0) {
        if (insertName) {
            code += ' <span style=\"color: #080\">"' + signNames[0] + '"</span>';
        }
      } else if ((presentationMode & PM_POST_SHOW_SYMBOL) === 0) {
        /* If the sign name is unknown, append symbol information unless this information has been already presented */
        code += signCode;
      }
    }
    if ((presentationMode & PM_POST_SHOW_THUMB_R) !== 0) {
      code += thumbnailCode;
    }
      
    code += "</span>";

    resolvedTrafficSigns++;
  } else {
    code = signCode;
    potentialTrafficSigns++;
  }
  return code;
}

////////////////////////////////////////////////////////////////////////////////////////
function decorateTrafficSigns() {
  var posts = document.querySelectorAll("div[id^=post_message]");

  for (var postIx = 0; postIx < posts.length; postIx++) {
    var post = posts[postIx];

    /* For each found post, look for the symbols */
    var content = post.innerHTML;
    var symbols;
    var tokens = [];
    while ((symbols = reSignCode.exec(content)) !== null) {
      
      var signCode = symbols[1];
      var followingQuotedText = symbols[4];

      content = content.replace(signCode, "##token" + tokens.length + "##");
      //content = content.replace(signCode, "<pre style=\"color: #f00\">" + symbols[4] + "</pre>");
      tokens.push({"code": signCode, "followingQuotedText": followingQuotedText});
    }

    for (var ix=0; ix < tokens.length; ix++) {
      content = content.replace("##token" + ix + "##", createReplacementFor(tokens[ix]));
    }

    post.innerHTML = content;
  }

  var settingsBtn = document.getElementById("tsSettingsButton");
  settingsBtn.innerHTML = "Polskie Znaki Drogowe";

}

////////////////////////////////////////////////////////////////////////////////////////
function createHintFrame() {
  var hintFrame = document.createElement("div");
  hintFrame.setAttribute("id", "hintFrame");
  hintFrame.style.display    = "none";
  hintFrame.style.position   = "fixed";
  hintFrame.style.left       = "0px";
  hintFrame.style.top        = "0px";
  hintFrame.style.background = "none";
  hintFrame.style.overflow   = "hidden";

  var hintFrameImage = document.createElement("img");
  hintFrameImage.setAttribute("id", "hintFrameImage");
  hintFrameImage.style.maxWidth  = "460px";
  hintFrameImage.style.maxHeight = "220px";
  hintFrameImage.src             = "";
  hintFrame.appendChild(hintFrameImage);
  document.body.appendChild(hintFrame);
}

function appendOptions(select, availableOptions, selectedOption) {
  for (var ix=0; ix < availableOptions.length; ix++) {
    var option = availableOptions[ix];
    var optionNode = document.createElement("option");
    optionNode.value = option.value;
    optionNode.innerHTML = option.caption;
    if (option.value == selectedOption) {
      optionNode.setAttribute("selected", "selected");
    }
    select.appendChild(optionNode);
  }
}

function createSettingsMenu() {
  var threadToolsItem = document.querySelector("td#threadtools");
  
  if (!threadToolsItem) {
    console.debug("td#threadtools does not exist, skipping");
    return;
  }
  
  var topMenu = threadToolsItem.parentNode;
  

  var newItemTD = document.createElement("td");
  newItemTD.setAttribute("class", "vbmenu_control");
  newItemTD.setAttribute("id", "trafficSignsSettings");
  
  var tsSettings = document.createElement("dl");
  tsSettings.setAttribute("id", "tsSettings");
  tsSettings.style.display  = "none";
  tsSettings.style.position = "fixed";
  tsSettings.style.overflow = "hidden";
  tsSettings.style.right = 0;
  tsSettings.style.top = 0;
  tsSettings.style.width = 300;
  tsSettings.style.height = 100;
  tsSettings.style.background = "#D1D1E1";
  tsSettings.style.border = "1px solid #0B198C";
  tsSettings.style.padding = "8px";

  var newItemA = document.createElement("a");
  newItemA.setAttribute("id", "tsSettingsButton");
  newItemA.innerHTML = "";
  newItemA.style.cursor = "pointer";
  newItemA.onmousedown = function() {
    var tsModeSelector = document.getElementById("tsModeSelector");

    if (tsSettings.style.display == "none") {
      tsSettings.style.display = "block";
      newItemA.innerHTML = "Polskie Znaki Drogowe: ustawienia";
    } else {
      tsSettings.style.display = "none";
      newItemA.innerHTML = "Polskie Znaki Drogowe";
    }

  };
  newItemTD.appendChild(newItemA);
  
  var tsSettingsRow1a = document.createElement("dt");
  var tsSettingsRow1b = document.createElement("dd");
  tsSettingsRow1a.innerHTML = "Podgląd po wskazaniu";

  var tsSettingsRow2a = document.createElement("dt");
  var tsSettingsRow2b = document.createElement("dd");
  tsSettingsRow2a.innerHTML = "W treści posta";
  
  var tsSettingsRow3a = document.createElement("dt");
  var tsSettingsRow3b = document.createElement("dd");
  tsSettingsRow3a.innerHTML = "Wyróżnienie kodu znaku";
  
  var tsSelHint = document.createElement("select");
  tsSelHint.setAttribute("id", "tsSelHint");
  appendOptions(tsSelHint, [
    {"value": 0, "caption": "Nie pokazuj"},
    {"value": PM_SHOW_HINT, "caption": "Pokazuj"}], presentationMode & PM_SHOW_HINT);
    
  var tsSelCode = document.createElement("select");
  tsSelCode.setAttribute("id", "tsSelCode");
  appendOptions(tsSelCode, [
    {"value": PM_POST_SHOW_SYMBOL, "caption": "Nic nie zmieniaj"},
    {"value": PM_POST_SHOW_THUMB_L | PM_POST_SHOW_SYMBOL, "caption": "Dodaj miniaturę przed kodem"},
    {"value": PM_POST_SHOW_THUMB_R | PM_POST_SHOW_SYMBOL, "caption": "Dodaj miniaturę za kodem"},
    {"value": PM_POST_SHOW_THUMB_R, "caption": "Zastąp kod miniaturą"},
    {"value": PM_POST_SHOW_SYMBOL | PM_POST_SHOW_NAME, "caption": "Dodaj nazwę znaku do kodu"},
    {"value": PM_POST_SHOW_NAME, "caption": "Zastąp kod nazwą znaku"},
    {"value": PM_POST_SHOW_NAME | PM_POST_SHOW_THUMB_L, "caption": "Zastąp kod miniaturą i nazwą znaku"},
    {"value": PM_POST_SHOW_NAME | PM_POST_SHOW_THUMB_R, "caption": "Zastąp kod nazwą znaku i miniaturą"}
  ], presentationMode & PM_POST_MASK);
    
  var tsSelHighlight = document.createElement("select");
  tsSelHighlight.setAttribute("id", "tsSelHighlight");
  appendOptions(tsSelHighlight, [
    {"value": 0, "caption": "Wyłączone"},
    {"value": PM_SHOW_HIGHLIGHT, "caption": "Włączone"}], presentationMode & PM_SHOW_HIGHLIGHT);
    
  
  var tsBtnSave = document.createElement("input");
  tsBtnSave.setAttribute("type", "button");
  tsBtnSave.setAttribute("value", "Zapisz");

  
  tsBtnSave.onclick = function() {
    presentationMode = document.getElementById("tsSelHint").value | document.getElementById("tsSelCode").value | document.getElementById("tsSelHighlight").value;
    presentationMode |= PM_DATAFMT_1_4;
    if (typeof(GM) !== "undefined") {
      GM.setValue("presentationMode", presentationMode).then(
        function(result) {
          location.reload();
        },
        function(err) {
          alert("value not set");
        }
      );
    } else if (typeof(GM_setValue) !== "undefined") {
      GM_setValue("presentationMode", presentationMode);
      location.reload();
    }
  };

  document.body.appendChild(tsSettings);
  tsSettings.appendChild(tsSettingsRow1a);
  tsSettings.appendChild(tsSettingsRow1b);
  tsSettings.appendChild(tsSettingsRow2a);
  tsSettings.appendChild(tsSettingsRow2b);
  tsSettings.appendChild(tsSettingsRow3a);
  tsSettings.appendChild(tsSettingsRow3b);
  tsSettings.appendChild(tsBtnSave);
  
  tsSettingsRow1b.appendChild(tsSelHint);
  tsSettingsRow2b.appendChild(tsSelCode);
  tsSettingsRow3b.appendChild(tsSelHighlight);

  topMenu.appendChild(newItemTD);

}

function enableEvents() {
  for (var ix=0; ix < signSpans.length; ix++) {
    var trafficSignCode = signSpans[ix];
    var elem = document.getElementById("trafficSign_" + ix);
    elem.trafficSignCode = trafficSignCode;
    elem.addEventListener('mouseenter',function(e) {
      document.showHintFrame(this.trafficSignCode);
    }, false);
    elem.addEventListener('mouseout',function(e) {
      document.hideHintFrame();
    }, false);
  }
}

function onStartupReady() {
  if ((presentationMode & PM_DATAFMT_MASK) == PM_DATAFMT_1_0) {
    /* data format migration 1.0 (0x00) to 1.4 (0x01) */
    var newPresentationMode = 0;
    switch (presentationMode) {
      case 2:  newPresentationMode = PM_POST_SHOW_SYMBOL | PM_SHOW_HINT;                        /* Podgląd, kod */
               break;
      case 10: newPresentationMode = PM_POST_SHOW_SYMBOL | PM_SHOW_HINT | PM_SHOW_HIGHLIGHT;    /* Podgląd, kod wyróżniony */
               break;
      case 3:  newPresentationMode = PM_POST_SHOW_SYMBOL | PM_SHOW_HINT | PM_POST_SHOW_THUMB_R; /* Podgląd, kod + miniatura */
               break;
      case 7:  newPresentationMode = PM_SHOW_HINT | PM_POST_SHOW_THUMB_R;                       /* Podgląd, miniatura */
               break;
      case 1:  newPresentationMode = PM_POST_SHOW_SYMBOL | PM_POST_SHOW_THUMB_R;                /* Bez podglądu, kod + miniatura */
               break;
      case 5:  newPresentationMode = PM_POST_SHOW_THUMB_R;                                      /* Bez podglądu, miniatura */
               break;
      default: console.warn("Cannot migrate from presentationMode=" + presentationMode);
               newPresentationMode = PM_POST_SHOW_SYMBOL | PM_SHOW_HINT;
               break;
    }
    presentationMode = newPresentationMode | PM_DATAFMT_1_4;
  }
  createHintFrame();
  createSettingsMenu();
  decorateTrafficSigns();
  enableEvents();
}

if (typeof(GM) !== "undefined") {
  /* Using new API - Greasemonkey, Tampermonkey on Chrome */
    GM.getValue("presentationMode").then(
        function(_presentationMode) {
            presentationMode = parseInt(_presentationMode);
            if (presentationMode === null) {
                presentationMode = PM_DATAFMT_1_4 | PM_POST_SHOW_SYMBOL | PM_SHOW_HINT;
            }
            onStartupReady();
        },
        function(err) {
            presentationMode = PM_DATAFMT_1_4 | PM_POST_SHOW_SYMBOL | PM_SHOW_HINT;
            onStartupReady();
        }
    );

} else if (typeof(GM_getValue) !== "undefined") {
  /* Using old API - Tampermonkey and Violentmonkey on Chrome */
  presentationMode = parseInt(GM_getValue("presentationMode"));
  if (!presentationMode) presentationMode = PM_DATAFMT_1_4 | PM_POST_SHOW_SYMBOL | PM_SHOW_HINT;
  onStartupReady();
}