user profile stuff
authorhgn <hgodden00@gmail.com>
Thu, 1 May 2025 08:53:37 +0000 (09:53 +0100)
committerhgn <hgodden00@gmail.com>
Thu, 1 May 2025 08:53:37 +0000 (09:53 +0100)
295 files changed:
.gitignore
build.c
ccflags/comb.png [new file with mode: 0644]
ccflags/make_png.sh [new file with mode: 0755]
ccflags/make_world.py [new file with mode: 0644]
ccflags/svg/01.svg [new file with mode: 0644]
ccflags/svg/AD.svg [new file with mode: 0644]
ccflags/svg/AE.svg [new file with mode: 0644]
ccflags/svg/AF.svg [new file with mode: 0644]
ccflags/svg/AG.svg [new file with mode: 0644]
ccflags/svg/AI.svg [new file with mode: 0644]
ccflags/svg/AL.svg [new file with mode: 0644]
ccflags/svg/AM.svg [new file with mode: 0644]
ccflags/svg/AO.svg [new file with mode: 0644]
ccflags/svg/AQ.svg [new file with mode: 0644]
ccflags/svg/AR.svg [new file with mode: 0644]
ccflags/svg/AS.svg [new file with mode: 0644]
ccflags/svg/AT.svg [new file with mode: 0644]
ccflags/svg/AU.svg [new file with mode: 0644]
ccflags/svg/AW.svg [new file with mode: 0644]
ccflags/svg/AX.svg [new file with mode: 0644]
ccflags/svg/AZ.svg [new file with mode: 0644]
ccflags/svg/BA.svg [new file with mode: 0644]
ccflags/svg/BB.svg [new file with mode: 0644]
ccflags/svg/BD.svg [new file with mode: 0644]
ccflags/svg/BE.svg [new file with mode: 0644]
ccflags/svg/BF.svg [new file with mode: 0644]
ccflags/svg/BG.svg [new file with mode: 0644]
ccflags/svg/BH.svg [new file with mode: 0644]
ccflags/svg/BI.svg [new file with mode: 0644]
ccflags/svg/BJ.svg [new file with mode: 0644]
ccflags/svg/BL.svg [new file with mode: 0644]
ccflags/svg/BM.svg [new file with mode: 0644]
ccflags/svg/BN.svg [new file with mode: 0644]
ccflags/svg/BO.svg [new file with mode: 0644]
ccflags/svg/BQ.svg [new file with mode: 0644]
ccflags/svg/BR.svg [new file with mode: 0644]
ccflags/svg/BS.svg [new file with mode: 0644]
ccflags/svg/BT.svg [new file with mode: 0644]
ccflags/svg/BV.svg [new file with mode: 0644]
ccflags/svg/BW.svg [new file with mode: 0644]
ccflags/svg/BY.svg [new file with mode: 0644]
ccflags/svg/BZ.svg [new file with mode: 0644]
ccflags/svg/CA.svg [new file with mode: 0644]
ccflags/svg/CC.svg [new file with mode: 0644]
ccflags/svg/CD.svg [new file with mode: 0644]
ccflags/svg/CF.svg [new file with mode: 0644]
ccflags/svg/CG.svg [new file with mode: 0644]
ccflags/svg/CH.svg [new file with mode: 0644]
ccflags/svg/CI.svg [new file with mode: 0644]
ccflags/svg/CK.svg [new file with mode: 0644]
ccflags/svg/CL.svg [new file with mode: 0644]
ccflags/svg/CM.svg [new file with mode: 0644]
ccflags/svg/CN.svg [new file with mode: 0644]
ccflags/svg/CO.svg [new file with mode: 0644]
ccflags/svg/CR.svg [new file with mode: 0644]
ccflags/svg/CU.svg [new file with mode: 0644]
ccflags/svg/CV.svg [new file with mode: 0644]
ccflags/svg/CW.svg [new file with mode: 0644]
ccflags/svg/CX.svg [new file with mode: 0644]
ccflags/svg/CY.svg [new file with mode: 0644]
ccflags/svg/CZ.svg [new file with mode: 0644]
ccflags/svg/DE.svg [new file with mode: 0644]
ccflags/svg/DJ.svg [new file with mode: 0644]
ccflags/svg/DK.svg [new file with mode: 0644]
ccflags/svg/DM.svg [new file with mode: 0644]
ccflags/svg/DO.svg [new file with mode: 0644]
ccflags/svg/DZ.svg [new file with mode: 0644]
ccflags/svg/EC.svg [new file with mode: 0644]
ccflags/svg/EE.svg [new file with mode: 0644]
ccflags/svg/EG.svg [new file with mode: 0644]
ccflags/svg/EH.svg [new file with mode: 0644]
ccflags/svg/EN.svg [new file with mode: 0644]
ccflags/svg/ER.svg [new file with mode: 0644]
ccflags/svg/ES.svg [new file with mode: 0644]
ccflags/svg/ET.svg [new file with mode: 0644]
ccflags/svg/EU.svg [new file with mode: 0644]
ccflags/svg/FI.svg [new file with mode: 0644]
ccflags/svg/FJ.svg [new file with mode: 0644]
ccflags/svg/FK.svg [new file with mode: 0644]
ccflags/svg/FM.svg [new file with mode: 0644]
ccflags/svg/FO.svg [new file with mode: 0644]
ccflags/svg/FR.svg [new file with mode: 0644]
ccflags/svg/GA.svg [new file with mode: 0644]
ccflags/svg/GB.svg [new file with mode: 0644]
ccflags/svg/GD.svg [new file with mode: 0644]
ccflags/svg/GE.svg [new file with mode: 0644]
ccflags/svg/GF.svg [new file with mode: 0644]
ccflags/svg/GG.svg [new file with mode: 0644]
ccflags/svg/GH.svg [new file with mode: 0644]
ccflags/svg/GI.svg [new file with mode: 0644]
ccflags/svg/GL.svg [new file with mode: 0644]
ccflags/svg/GM.svg [new file with mode: 0644]
ccflags/svg/GN.svg [new file with mode: 0644]
ccflags/svg/GP.svg [new file with mode: 0644]
ccflags/svg/GQ.svg [new file with mode: 0644]
ccflags/svg/GR.svg [new file with mode: 0644]
ccflags/svg/GS.svg [new file with mode: 0644]
ccflags/svg/GT.svg [new file with mode: 0644]
ccflags/svg/GU.svg [new file with mode: 0644]
ccflags/svg/GW.svg [new file with mode: 0644]
ccflags/svg/GY.svg [new file with mode: 0644]
ccflags/svg/HK.svg [new file with mode: 0644]
ccflags/svg/HM.svg [new file with mode: 0644]
ccflags/svg/HN.svg [new file with mode: 0644]
ccflags/svg/HR.svg [new file with mode: 0644]
ccflags/svg/HT.svg [new file with mode: 0644]
ccflags/svg/HU.svg [new file with mode: 0644]
ccflags/svg/IC.svg [new file with mode: 0644]
ccflags/svg/ID.svg [new file with mode: 0644]
ccflags/svg/IE.svg [new file with mode: 0644]
ccflags/svg/IL.svg [new file with mode: 0644]
ccflags/svg/IM.svg [new file with mode: 0644]
ccflags/svg/IN.svg [new file with mode: 0644]
ccflags/svg/IO.svg [new file with mode: 0644]
ccflags/svg/IQ.svg [new file with mode: 0644]
ccflags/svg/IR.svg [new file with mode: 0644]
ccflags/svg/IS.svg [new file with mode: 0644]
ccflags/svg/IT.svg [new file with mode: 0644]
ccflags/svg/JE.svg [new file with mode: 0644]
ccflags/svg/JM.svg [new file with mode: 0644]
ccflags/svg/JO.svg [new file with mode: 0644]
ccflags/svg/JP.svg [new file with mode: 0644]
ccflags/svg/KE.svg [new file with mode: 0644]
ccflags/svg/KG.svg [new file with mode: 0644]
ccflags/svg/KH.svg [new file with mode: 0644]
ccflags/svg/KI.svg [new file with mode: 0644]
ccflags/svg/KM.svg [new file with mode: 0644]
ccflags/svg/KN.svg [new file with mode: 0644]
ccflags/svg/KP.svg [new file with mode: 0644]
ccflags/svg/KR.svg [new file with mode: 0644]
ccflags/svg/KW.svg [new file with mode: 0644]
ccflags/svg/KY.svg [new file with mode: 0644]
ccflags/svg/KZ.svg [new file with mode: 0644]
ccflags/svg/LA.svg [new file with mode: 0644]
ccflags/svg/LB.svg [new file with mode: 0644]
ccflags/svg/LC.svg [new file with mode: 0644]
ccflags/svg/LI.svg [new file with mode: 0644]
ccflags/svg/LK.svg [new file with mode: 0644]
ccflags/svg/LR.svg [new file with mode: 0644]
ccflags/svg/LS.svg [new file with mode: 0644]
ccflags/svg/LT.svg [new file with mode: 0644]
ccflags/svg/LU.svg [new file with mode: 0644]
ccflags/svg/LV.svg [new file with mode: 0644]
ccflags/svg/LY.svg [new file with mode: 0644]
ccflags/svg/MA.svg [new file with mode: 0644]
ccflags/svg/MC.svg [new file with mode: 0644]
ccflags/svg/MD.svg [new file with mode: 0644]
ccflags/svg/ME.svg [new file with mode: 0644]
ccflags/svg/MF.svg [new file with mode: 0644]
ccflags/svg/MG.svg [new file with mode: 0644]
ccflags/svg/MH.svg [new file with mode: 0644]
ccflags/svg/MK.svg [new file with mode: 0644]
ccflags/svg/ML.svg [new file with mode: 0644]
ccflags/svg/MM.svg [new file with mode: 0644]
ccflags/svg/MN.svg [new file with mode: 0644]
ccflags/svg/MO.svg [new file with mode: 0644]
ccflags/svg/MP.svg [new file with mode: 0644]
ccflags/svg/MQ.svg [new file with mode: 0644]
ccflags/svg/MR.svg [new file with mode: 0644]
ccflags/svg/MS.svg [new file with mode: 0644]
ccflags/svg/MT.svg [new file with mode: 0644]
ccflags/svg/MU.svg [new file with mode: 0644]
ccflags/svg/MV.svg [new file with mode: 0644]
ccflags/svg/MW.svg [new file with mode: 0644]
ccflags/svg/MX.svg [new file with mode: 0644]
ccflags/svg/MY.svg [new file with mode: 0644]
ccflags/svg/MZ.svg [new file with mode: 0644]
ccflags/svg/NA.svg [new file with mode: 0644]
ccflags/svg/NC.svg [new file with mode: 0644]
ccflags/svg/NE.svg [new file with mode: 0644]
ccflags/svg/NF.svg [new file with mode: 0644]
ccflags/svg/NG.svg [new file with mode: 0644]
ccflags/svg/NI.svg [new file with mode: 0644]
ccflags/svg/NL.svg [new file with mode: 0644]
ccflags/svg/NO.svg [new file with mode: 0644]
ccflags/svg/NP.svg [new file with mode: 0644]
ccflags/svg/NR.svg [new file with mode: 0644]
ccflags/svg/NU.svg [new file with mode: 0644]
ccflags/svg/NZ.svg [new file with mode: 0644]
ccflags/svg/OL.svg [new file with mode: 0644]
ccflags/svg/OM.svg [new file with mode: 0644]
ccflags/svg/PA.svg [new file with mode: 0644]
ccflags/svg/PE.svg [new file with mode: 0644]
ccflags/svg/PF.svg [new file with mode: 0644]
ccflags/svg/PG.svg [new file with mode: 0644]
ccflags/svg/PH.svg [new file with mode: 0644]
ccflags/svg/PK.svg [new file with mode: 0644]
ccflags/svg/PL.svg [new file with mode: 0644]
ccflags/svg/PM.svg [new file with mode: 0644]
ccflags/svg/PN.svg [new file with mode: 0644]
ccflags/svg/PR.svg [new file with mode: 0644]
ccflags/svg/PS.svg [new file with mode: 0644]
ccflags/svg/PT.svg [new file with mode: 0644]
ccflags/svg/PW.svg [new file with mode: 0644]
ccflags/svg/PY.svg [new file with mode: 0644]
ccflags/svg/QA.svg [new file with mode: 0644]
ccflags/svg/RE.svg [new file with mode: 0644]
ccflags/svg/RO.svg [new file with mode: 0644]
ccflags/svg/RS.svg [new file with mode: 0644]
ccflags/svg/RU.svg [new file with mode: 0644]
ccflags/svg/RW.svg [new file with mode: 0644]
ccflags/svg/SA.svg [new file with mode: 0644]
ccflags/svg/SB.svg [new file with mode: 0644]
ccflags/svg/SC.svg [new file with mode: 0644]
ccflags/svg/SD.svg [new file with mode: 0644]
ccflags/svg/SE.svg [new file with mode: 0644]
ccflags/svg/SG.svg [new file with mode: 0644]
ccflags/svg/SH.svg [new file with mode: 0644]
ccflags/svg/SI.svg [new file with mode: 0644]
ccflags/svg/SJ.svg [new file with mode: 0644]
ccflags/svg/SK.svg [new file with mode: 0644]
ccflags/svg/SL.svg [new file with mode: 0644]
ccflags/svg/SM.svg [new file with mode: 0644]
ccflags/svg/SN.svg [new file with mode: 0644]
ccflags/svg/SO.svg [new file with mode: 0644]
ccflags/svg/SR.svg [new file with mode: 0644]
ccflags/svg/SS.svg [new file with mode: 0644]
ccflags/svg/ST.svg [new file with mode: 0644]
ccflags/svg/SV.svg [new file with mode: 0644]
ccflags/svg/SX.svg [new file with mode: 0644]
ccflags/svg/SY.svg [new file with mode: 0644]
ccflags/svg/SZ.svg [new file with mode: 0644]
ccflags/svg/TA.svg [new file with mode: 0644]
ccflags/svg/TC.svg [new file with mode: 0644]
ccflags/svg/TD.svg [new file with mode: 0644]
ccflags/svg/TF.svg [new file with mode: 0644]
ccflags/svg/TG.svg [new file with mode: 0644]
ccflags/svg/TH.svg [new file with mode: 0644]
ccflags/svg/TJ.svg [new file with mode: 0644]
ccflags/svg/TK.svg [new file with mode: 0644]
ccflags/svg/TL.svg [new file with mode: 0644]
ccflags/svg/TM.svg [new file with mode: 0644]
ccflags/svg/TN.svg [new file with mode: 0644]
ccflags/svg/TO.svg [new file with mode: 0644]
ccflags/svg/TR.svg [new file with mode: 0644]
ccflags/svg/TT.svg [new file with mode: 0644]
ccflags/svg/TV.svg [new file with mode: 0644]
ccflags/svg/TW.svg [new file with mode: 0644]
ccflags/svg/TZ.svg [new file with mode: 0644]
ccflags/svg/UA.svg [new file with mode: 0644]
ccflags/svg/UG.svg [new file with mode: 0644]
ccflags/svg/UM.svg [new file with mode: 0644]
ccflags/svg/US.svg [new file with mode: 0644]
ccflags/svg/UY.svg [new file with mode: 0644]
ccflags/svg/UZ.svg [new file with mode: 0644]
ccflags/svg/VA.svg [new file with mode: 0644]
ccflags/svg/VC.svg [new file with mode: 0644]
ccflags/svg/VE.svg [new file with mode: 0644]
ccflags/svg/VG.svg [new file with mode: 0644]
ccflags/svg/VI.svg [new file with mode: 0644]
ccflags/svg/VN.svg [new file with mode: 0644]
ccflags/svg/VU.svg [new file with mode: 0644]
ccflags/svg/WA.svg [new file with mode: 0644]
ccflags/svg/WF.svg [new file with mode: 0644]
ccflags/svg/WS.svg [new file with mode: 0644]
ccflags/svg/XK.svg [new file with mode: 0644]
ccflags/svg/YE.svg [new file with mode: 0644]
ccflags/svg/YT.svg [new file with mode: 0644]
ccflags/svg/ZA.svg [new file with mode: 0644]
ccflags/svg/ZM.svg [new file with mode: 0644]
ccflags/svg/ZW.svg [new file with mode: 0644]
ccflags/svg/unused/AC.svg [new file with mode: 0644]
ccflags/svg/unused/GE-AB.svg [new file with mode: 0644]
ccflags/svg/unused/GE-OS.svg [new file with mode: 0644]
ccflags/world_map.png [new file with mode: 0644]
ccflags/world_map.svg [new file with mode: 0644]
content_skaterift/textures/cc.qoi [new file with mode: 0644]
content_skaterift/textures/menu_icons.qoi [new file with mode: 0644]
content_skaterift/textures/world_map.qoi [new file with mode: 0644]
icons/blank.svg [new file with mode: 0644]
icons/early.svg [new file with mode: 0644]
icons/icon_comb.png [new file with mode: 0644]
icons/make.py [new file with mode: 0644]
icons/top10.svg [new file with mode: 0644]
icons/top3.svg [new file with mode: 0644]
src/cc.h [new file with mode: 0644]
src/dbtest.c [new file with mode: 0644]
src/ent_route.c
src/gameserver.c
src/gameserver.h
src/gameserver_database.c
src/gameserver_database.h
src/gameserver_requests.c
src/menu.c
src/menu.h
src/network.c
src/network.h
src/network_common.h
src/network_msg.h
src/player_remote.c
src/skaterift.c
src/ui_menu_icons.h0 [new file with mode: 0644]
src/user_profile.c [new file with mode: 0644]
src/user_profile.h [new file with mode: 0644]

index ac4266bfd493a22f3f28cb3ff685d0a22ba99f20..4fa1699e8637325e55aea3f1cb1e473c3a6fe664 100755 (executable)
@@ -15,6 +15,8 @@ vg
 bin/
 dist/
 models_src/boards/workshop
+ccflags/png
+icons/png
 
 # auto generated code
 shaders/*.h
diff --git a/build.c b/build.c
index 32c6d06275fbcc2be86a6f2fda0cd23ff5892bf5..bdb8aa76c648896b487ab072b3d9e95f2241adb1 100644 (file)
--- a/build.c
+++ b/build.c
@@ -251,6 +251,7 @@ void build_game_bin( struct vg_project *proj, struct vg_compiler_env *env )
    vg_add_controller_database( proj );
 }
 
+#if 0
 struct compile_result 
 build_sqlite_for_env( struct vg_compiler_env *env )
 {
@@ -268,14 +269,19 @@ build_sqlite_for_env( struct vg_compiler_env *env )
                            "dep/sqlite3/sqlite3.c ", "sqlite3",
                            k_obj_type_obj );
 }
+#endif
 
 void compile_server( struct vg_project *proj, struct vg_compiler_env *env )
 {
+#if 0
    struct compile_result sqlite = build_sqlite_for_env( env );
+#endif
 
    vg_str sources = {0};
    vg_strcat( &sources, "src/gameserver.c vg/vg_tool.c vg/vg_steam.c \\\n " );
+#if 0
    vg_strcat( &sources, sqlite.path.buffer );
+#endif
 
    struct vg_compiler_conf conf = {0};
    vg_strcat( &conf.include, "-Isrc -I./dep " );
@@ -407,22 +413,22 @@ void s_testing_server(void)
    compile_server( &test_proj, &vg_test_env );
 }
 
-void s_queuetest_build(void)
+void s_dbtest_build(void)
 {
-   vg_info( "running script: s_queuetest_build(void)\n" );
+   vg_info( "running script: s_dbtest_build(void)\n" );
 
    struct vg_project test_proj;
-   vg_project_init( &test_proj, "bin", "queuetest", &vg_test_env, 0 );
+   vg_project_init( &test_proj, "bin", "dbtest", &vg_test_env, 0 );
 
    vg_str sources = {0};
-   vg_strcat( &sources, "src/queuetest.c vg/vg_tool.c \\\n " );
+   vg_strcat( &sources, "src/dbtest.c vg/vg_tool.c \\\n " );
 
    struct vg_compiler_conf conf = {0};
    vg_strcat( &conf.include, "-Isrc -I./dep " );
    vg_strcat( &conf.include, "-I. -I./vg -I./vg/dep " );
    vg_strcat( &conf.library, "-L./vg/dep/steam " );
    vg_strcat( &conf.link, "-ldl -lpthread -lm " );
-   vg_compiler_run( &test_proj, &vg_test_env, &conf, sources.buffer, "qtest", k_obj_type_exe );
+   vg_compiler_run( &test_proj, &vg_test_env, &conf, sources.buffer, "dbtest", k_obj_type_exe );
 }
 
 int main( int argc, const char *argv[] )
@@ -443,8 +449,8 @@ int main( int argc, const char *argv[] )
    if( vg_long_opt( "testing-server", NULL ) )
       s_testing_server();
 
-   if( vg_long_opt( "queuetest", NULL ) )
-      s_queuetest_build();
+   if( vg_long_opt( "dbtest", NULL ) )
+      s_dbtest_build();
 
    if( vg_long_opt( "tools", NULL ) )
       s_compile_tools();
diff --git a/ccflags/comb.png b/ccflags/comb.png
new file mode 100644 (file)
index 0000000..264e45b
Binary files /dev/null and b/ccflags/comb.png differ
diff --git a/ccflags/make_png.sh b/ccflags/make_png.sh
new file mode 100755 (executable)
index 0000000..27cc407
--- /dev/null
@@ -0,0 +1,2 @@
+mkdir png
+for i in svg/*.svg; do inkscape -w 96 -h 64 "$i" -o "png/$(basename $i).png"; done
diff --git a/ccflags/make_world.py b/ccflags/make_world.py
new file mode 100644 (file)
index 0000000..8d1852a
--- /dev/null
@@ -0,0 +1,320 @@
+import os.path
+
+all = [\
+"Afghanistan", "AF", "AFG", "4", "33", "65",
+"Aland Islands", "AX", "ALA", "248",  "60.116667", "19.9",
+"Sealand", "01", "SLN", "826", "51.8", "1.49",
+"Albania", "AL", "ALB", "8", "41", "20",
+"Algeria", "DZ", "DZA", "12", "28", "3",
+"American Samoa", "AS", "ASM", "16", "-14.3333", "-170",
+"Andorra", "AD", "AND", "20", "42.5", "1.6",
+"Angola", "AO", "AGO", "24", "-12.5", "18.5",
+"Anguilla", "AI", "AIA", "660", "18.25", "-63.1667",
+"Antarctica", "AQ", "ATA", "10", "-90", "0",
+"Antigua and Barbuda", "AG", "ATG", "28", "17.05", "-61.8",
+"Argentina", "AR", "ARG", "32", "-34", "-64",
+"Armenia", "AM", "ARM", "51", "40", "45",
+"Aruba", "AW", "ABW", "533", "12.5", "-69.9667",
+"Australia", "AU", "AUS", "36", "-27", "133",
+"Austria", "AT", "AUT", "40", "47.3333", "13.3333",
+"Azerbaijan", "AZ", "AZE", "31", "40.5", "47.5",
+"Bahamas", "BS", "BHS", "44", "24.25", "-76",
+"Bahrain", "BH", "BHR", "48", "26", "50.55",
+"Bangladesh", "BD", "BGD", "50", "24", "90",
+"Barbados", "BB", "BRB", "52", "13.1667", "-59.5333",
+"Belarus", "BY", "BLR", "112", "53", "28",
+"Belgium", "BE", "BEL", "56", "50.8333", "4",
+"Belize", "BZ", "BLZ", "84", "17.25", "-88.75",
+"Benin", "BJ", "BEN", "204", "9.5", "2.25",
+"Bermuda", "BM", "BMU", "60", "32.3333", "-64.75",
+"Bhutan", "BT", "BTN", "64", "27.5", "90.5",
+"Bolivia", "BO", "BOL", "68", "-17", "-65",
+"Bonaire, Sint Eustatius and Saba", "BQ", "BES", "535", "12.183333", "-68.233333",
+"Bosnia and Herzegovina", "BA", "BIH", "70", "44", "18",
+"Botswana", "BW", "BWA", "72", "-22", "24",
+"Bouvet Island", "BV", "BVT", "74", "-54.4333", "3.4",
+"Brazil", "BR", "BRA", "76", "-10", "-55",
+"British Indian Ocean Territory", "IO", "IOT", "86", "-6", "71.5",
+"Brunei", "BN", "BRN", "96", "4.5", "114.6667",
+"Bulgaria", "BG", "BGR", "100", "43", "25",
+"Burkina Faso", "BF", "BFA", "854", "13", "-2",
+"Burundi", "BI", "BDI", "108", "-3.5", "30",
+"Cambodia", "KH", "KHM", "116", "13", "105",
+"Cameroon", "CM", "CMR", "120", "6", "12",
+"Canada", "CA", "CAN", "124", "60", "-95",
+"Cape Verde", "CV", "CPV", "132", "16", "-24",
+"Cayman Islands", "KY", "CYM", "136", "19.5", "-80.5",
+"Central African Republic", "CF", "CAF", "140", "7", "21",
+"Chad", "TD", "TCD", "148", "15", "19",
+"Chile", "CL", "CHL", "152", "-30", "-71",
+"China", "CN", "CHN", "156", "35", "105",
+"Christmas Island", "CX", "CXR", "162", "-10.5", "105.6667",
+"Cocos (Keeling) Islands", "CC", "CCK", "166", "-12.5", "96.8333",
+"Colombia", "CO", "COL", "170", "4", "-72",
+"Comoros", "KM", "COM", "174", "-12.1667", "44.25",
+"Congo, DR", "CD", "COD", "180", "0", "25",
+"Congo", "CG", "COG", "178", "-1", "15",
+"Cook Islands", "CK", "COK", "184", "-21.2333", "-159.7667",
+"Costa Rica", "CR", "CRI", "188", "10", "-84",
+"Croatia", "HR", "HRV", "191", "45.1667", "15.5",
+"Cuba", "CU", "CUB", "192", "21.5", "-80",
+"CuraCao", "CW", "CUW", "531", "12.166667", "-68.966667",
+"Cyprus", "CY", "CYP", "196", "35", "33",
+"Czech Republic", "CZ", "CZE", "203", "49.75", "15.5",
+"Denmark", "DK", "DNK", "208", "56", "10",
+"Djibouti", "DJ", "DJI", "262", "11.5", "43",
+"Dominica", "DM", "DMA", "212", "15.4167", "-61.3333",
+"Dominican Republic", "DO", "DOM", "214", "19", "-70.6667",
+"Ecuador", "EC", "ECU", "218", "-2", "-77.5",
+"Egypt", "EG", "EGY", "818", "27", "30",
+"El Salvador", "SV", "SLV", "222", "13.8333", "-88.9167",
+"Equatorial Guinea", "GQ", "GNQ", "226", "2", "10",
+"Eritrea", "ER", "ERI", "232", "15", "39",
+"Estonia", "EE", "EST", "233", "59", "26",
+"Ethiopia", "ET", "ETH", "231", "8", "38",
+"Falkland Islands (Malvinas)", "FK", "FLK", "238", "-51.75", "-59",
+"Faroe Islands", "FO", "FRO", "234", "62", "-7",
+"Fiji", "FJ", "FJI", "242", "-18", "175",
+"Finland", "FI", "FIN", "246", "64", "26",
+"France", "FR", "FRA", "250", "46", "2",
+"French Guiana", "GF", "GUF", "254", "4", "-53",
+"French Polynesia", "PF", "PYF", "258", "-15", "-140",
+"French Southern Territories", "TF", "ATF", "260", "-43", "67",
+"Gabon", "GA", "GAB", "266", "-1", "11.75",
+"Gambia", "GM", "GMB", "270", "13.4667", "-16.5667",
+"Georgia", "GE", "GEO", "268", "42", "43.5",
+"Germany", "DE", "DEU", "276", "51", "9",
+"Ghana", "GH", "GHA", "288", "8", "-2",
+"Gibraltar", "GI", "GIB", "292", "36.1833", "-5.3667",
+"Greece", "GR", "GRC", "300", "39", "22",
+"Greenland", "GL", "GRL", "304", "72", "-40",
+"Grenada", "GD", "GRD", "308", "12.1167", "-61.6667",
+"Guadeloupe", "GP", "GLP", "312", "16.25", "-61.5833",
+"Guam", "GU", "GUM", "316", "13.4667", "144.7833",
+"Guatemala", "GT", "GTM", "320", "15.5", "-90.25",
+"Guernsey", "GG", "GGY", "831", "49.5", "-2.56",
+"Guinea-Bissau", "GW", "GNB", "624", "12", "-15",
+"Guinea", "GN", "GIN", "324", "11", "-10",
+"Guyana", "GY", "GUY", "328", "5", "-59",
+"Haiti", "HT", "HTI", "332", "19", "-72.4167",
+"Heard and McDonald", "HM", "HMD", "334", "-53.1", "72.5167",
+"Vatican City", "VA", "VAT", "336", "41.9", "12.45",
+"Honduras", "HN", "HND", "340", "15", "-86.5",
+"Hong Kong", "HK", "HKG", "344", "22.25", "114.1667",
+"Hungary", "HU", "HUN", "348", "47", "20",
+"Iceland", "IS", "ISL", "352", "65", "-18",
+"India", "IN", "IND", "356", "20", "77",
+"Indonesia", "ID", "IDN", "360", "-5", "120",
+"Iran", "IR", "IRN", "364", "32", "53",
+"Iraq", "IQ", "IRQ", "368", "33", "44",
+"Isle of Man", "IM", "IMN", "833", "54.23", "-4.55",
+"Israel", "IL", "ISR", "376", "31.5", "34.75",
+"Italy", "IT", "ITA", "380", "42.8333", "12.8333",
+"Ivory Coast", "CI", "CIV", "384", "8", "-5",
+"Jamaica", "JM", "JAM", "388", "18.25", "-77.5",
+"Japan", "JP", "JPN", "392", "36", "138",
+"Jersey", "JE", "JEY", "832", "49.21", "-2.13",
+"Jordan", "JO", "JOR", "400", "31", "36",
+"Kazakhstan", "KZ", "KAZ", "398", "48", "68",
+"Kenya", "KE", "KEN", "404", "1", "38",
+"Kiribati", "KI", "KIR", "296", "1.4167", "173",
+"Korea, DPRK", "KP", "PRK", "408", "40", "127",
+"Kosovo", "XK", "XKX", "95", "42.583333", "21",
+"Kuwait", "KW", "KWT", "414", "29.3375", "47.6581",
+"Kyrgyzstan", "KG", "KGZ", "417", "41", "75",
+"Lao PDR", "LA", "LAO", "418", "18", "105",
+"Latvia", "LV", "LVA", "428", "57", "25",
+"Lebanon", "LB", "LBN", "422", "33.8333", "35.8333",
+"Lesotho", "LS", "LSO", "426", "-29.5", "28.5",
+"Liberia", "LR", "LBR", "430", "6.5", "-9.5",
+"Libya", "LY", "LBY", "434", "25", "17",
+"Liechtenstein", "LI", "LIE", "438", "47.1667", "9.5333",
+"Lithuania", "LT", "LTU", "440", "56", "24",
+"Luxembourg", "LU", "LUX", "442", "49.75", "6.1667",
+"Macao", "MO", "MAC", "446", "22.1667", "113.55",
+"Macedonia", "MK", "MKD", "807", "41.8333", "22",
+"Madagascar", "MG", "MDG", "450", "-20", "47",
+"Malawi", "MW", "MWI", "454", "-13.5", "34",
+"Malaysia", "MY", "MYS", "458", "2.5", "112.5",
+"Maldives", "MV", "MDV", "462", "3.25", "73",
+"Mali", "ML", "MLI", "466", "17", "-4",
+"Malta", "MT", "MLT", "470", "35.8333", "14.5833",
+"Marshall Islands", "MH", "MHL", "584", "9", "168",
+"Martinique", "MQ", "MTQ", "474", "14.6667", "-61",
+"Mauritania", "MR", "MRT", "478", "20", "-12",
+"Mauritius", "MU", "MUS", "480", "-20.2833", "57.55",
+"Mayotte", "YT", "MYT", "175", "-12.8333", "45.1667",
+"Mexico", "MX", "MEX", "484", "23", "-102",
+"Micronesia, Federated States of", "FM", "FSM", "583", "6.9167", "158.25",
+"Moldova, Republic of", "MD", "MDA", "498", "47", "29",
+"Monaco", "MC", "MCO", "492", "43.7333", "7.4",
+"Mongolia", "MN", "MNG", "496", "46", "105",
+"Montenegro", "ME", "MNE", "499", "42", "19",
+"Montserrat", "MS", "MSR", "500", "16.75", "-62.2",
+"Morocco", "MA", "MAR", "504", "32", "-5",
+"Mozambique", "MZ", "MOZ", "508", "-18.25", "35",
+"Myanmar", "MM", "MMR", "104", "22", "98",
+"Namibia", "NA", "NAM", "516", "-22", "17",
+"Nauru", "NR", "NRU", "520", "-0.5333", "166.9167",
+"Nepal", "NP", "NPL", "524", "28", "84",
+"Netherlands", "NL", "NLD", "528", "52.5", "5.75",
+"New Caledonia", "NC", "NCL", "540", "-21.5", "165.5",
+"New Zealand", "NZ", "NZL", "554", "-41", "174",
+"Nicaragua", "NI", "NIC", "558", "13", "-85",
+"Niger", "NE", "NER", "562", "16", "8",
+"Nigeria", "NG", "NGA", "566", "10", "8",
+"Niue", "NU", "NIU", "570", "-19.0333", "-169.8667",
+"Norfolk Island", "NF", "NFK", "574", "-29.0333", "167.95",
+"Northern Mariana Islands", "MP", "MNP", "580", "15.2", "145.75",
+"Norway", "NO", "NOR", "578", "62", "10",
+"Oman", "OM", "OMN", "512", "21", "57",
+"Pakistan", "PK", "PAK", "586", "30", "70",
+"Palau", "PW", "PLW", "585", "7.5", "134.5",
+"Palestine", "PS", "PSE", "275", "32", "35.25",
+"Panama", "PA", "PAN", "591", "9", "-80",
+"Papua New Guinea", "PG", "PNG", "598", "-6", "147",
+"Paraguay", "PY", "PRY", "600", "-23", "-58",
+"Peru", "PE", "PER", "604", "-10", "-76",
+"Philippines", "PH", "PHL", "608", "13", "122",
+"Pitcairn", "PN", "PCN", "612", "-24.7", "-127.4",
+"Poland", "PL", "POL", "616", "52", "20",
+"Portugal", "PT", "PRT", "620", "39.5", "-8",
+"Puerto Rico", "PR", "PRI", "630", "18.25", "-66.5",
+"Qatar", "QA", "QAT", "634", "25.5", "51.25",
+"Reunion", "RE", "REU", "638", "-21.1", "55.6",
+"Romania", "RO", "ROU", "642", "46", "25",
+"Russia", "RU", "RUS", "643", "60", "100",
+"Rwanda", "RW", "RWA", "646", "-2", "30",
+"Saint Barthelemy", "BL", "BLM", "652", "17.897728", "-62.834244",
+"Saint Helena, Ascension and Tristan da Cunha", "SH", "SHN", "654", "-15.9333", "-5.7",
+"Saint Kitts and Nevis", "KN", "KNA", "659", "17.3333", "-62.75",
+"Saint Lucia", "LC", "LCA", "662", "13.8833", "-61.1333",
+"Saint Martin (French part)", "MF", "MAF", "663", "18.075278", "-63.06",
+"Saint Pierre and Miquelon", "PM", "SPM", "666", "46.8333", "-56.3333",
+"Saint Vincent & the Grenadines", "VC", "VCT", "670", "13.25", "-61.2",
+"Samoa", "WS", "WSM", "882", "-13.5833", "-172.3333",
+"San Marino", "SM", "SMR", "674", "43.7667", "12.4167",
+"Sao Tome and Principe", "ST", "STP", "678", "1", "7",
+"Saudi Arabia", "SA", "SAU", "682", "25", "45",
+"Senegal", "SN", "SEN", "686", "14", "-14",
+"Serbia", "RS", "SRB", "688", "44", "21",
+"Seychelles", "SC", "SYC", "690", "-4.5833", "55.6667",
+"Sierra Leone", "SL", "SLE", "694", "8.5", "-11.5",
+"Singapore", "SG", "SGP", "702", "1.3667", "103.8",
+"Sint Maarten (Dutch part)", "SX", "SXM", "534", "18.033333", "-63.05",
+"Slovakia", "SK", "SVK", "703", "48.6667", "19.5",
+"Slovenia", "SI", "SVN", "705", "46", "15",
+"Solomon Islands", "SB", "SLB", "90", "-8", "159",
+"Somalia", "SO", "SOM", "706", "10", "49",
+"South Africa", "ZA", "ZAF", "710", "-29", "24",
+"South Georgia and the South Sandwich Islands", "GS", "SGS", "239", "-54.5", "-37",
+"South Korea", "KR", "KOR", "410", "37", "127.5",
+"South Sudan", "SS", "SSD", "728", "8", "30",
+"Spain", "ES", "ESP", "724", "40", "-4",
+"Sri Lanka", "LK", "LKA", "144", "7", "81",
+"Sudan", "SD", "SDN", "736", "15", "30",
+"Suriname", "SR", "SUR", "740", "4", "-56",
+"Svalbard and Jan Mayen", "SJ", "SJM", "744", "78", "20",
+"Swaziland", "SZ", "SWZ", "748", "-26.5", "31.5",
+"Sweden", "SE", "SWE", "752", "62", "15",
+"Switzerland", "CH", "CHE", "756", "47", "8",
+"Syrian Arab Republic", "SY", "SYR", "760", "35", "38",
+"Taiwan", "TW", "TWN", "158", "23.5", "121",
+"Tajikistan", "TJ", "TJK", "762", "39", "71",
+"Tanzania, United Republic of", "TZ", "TZA", "834", "-6", "35",
+"Thailand", "TH", "THA", "764", "15", "100",
+"Timor-Leste", "TL", "TLS", "626", "-8.55", "125.5167",
+"Togo", "TG", "TGO", "768", "8", "1.1667",
+"Tokelau", "TK", "TKL", "772", "-9", "-172",
+"Tonga", "TO", "TON", "776", "-20", "-175",
+"Trinidad and Tobago", "TT", "TTO", "780", "11", "-61",
+"Tunisia", "TN", "TUN", "788", "34", "9",
+"Turkey", "TR", "TUR", "792", "39", "35",
+"Turkmenistan", "TM", "TKM", "795", "40", "60",
+"Turks and Caicos Islands", "TC", "TCA", "796", "21.75", "-71.5833",
+"Tuvalu", "TV", "TUV", "798", "-8", "178",
+"Uganda", "UG", "UGA", "800", "1", "32",
+"Ukraine", "UA", "UKR", "804", "49", "32",
+"United Arab Emirates", "AE", "ARE", "784", "24", "54",
+"England", "EN", "ENG", "826", "51.42", "0.00",
+"Scotland", "OL", "SCT", "826", "56.36", "-3.96",
+"Wales", "WA", "WAL", "826", "52.15", "-3.83",
+"United States Minor Outlying Islands", "UM", "UMI", "581", "19.2833", "166.6",
+"United States", "US", "USA", "840", "38", "-97",
+"Uruguay", "UY", "URY", "858", "-33", "-56",
+"Uzbekistan", "UZ", "UZB", "860", "41", "64",
+"Vanuatu", "VU", "VUT", "548", "-16", "167",
+"Venezuela", "VE", "VEN", "862", "8", "-66",
+"Vietnam", "VN", "VNM", "704", "16", "106",
+"Ireland", "IE", "IRL", "372", "53", "-8",
+"Virgin Islands, British", "VG", "VGB", "92", "18.5", "-64.5",
+"Virgin Islands, U.S.", "VI", "VIR", "850", "18.3333", "-64.8333",
+"Wallis and Futuna", "WF", "WLF", "876", "-13.3", "-176.2",
+"Western Sahara", "EH", "ESH", "732", "24.5", "-13",
+"Yemen", "YE", "YEM", "887", "15", "48",
+"Zambia", "ZM", "ZMB", "894", "-15", "30",
+"EU", "EU", "EUR", "894", "49.53", "11.8",
+"United Kingdom", "GB", "GBR", "826", "54", "-2",
+"Zimbabwe", "ZW", "ZWE", "716", "-20", "30"]
+
+def floaty(x):
+   if '.' in x: return x + 'f'
+   else: return x + '.0f'
+
+mega_string = ""
+msl = 0
+
+f = open( "../src/cc.h", "w" )
+
+f.write( 'struct country k_countries[] = {' )
+for i in range(0,len(all)//6):
+#{
+   j = i*6
+   ofs = msl
+   name = all[j].encode( 'ascii', 'ignore' ).decode('ascii')
+
+   for c in name:
+      mega_string += F"{ord(c)},"
+      msl += 1
+   mega_string += "0,"
+   msl += 1
+
+   top=83.633402
+   bot=-55.9277
+   x = (float(all[j+5])/180.0)*0.5+0.5
+   y = (float(all[j+4])-bot) / (top-bot)
+   if y < 0.0: y = 0.0
+   if y > 1.0: y = 1.0
+   f.write( '{'+ F'{ofs},{x:.6f}f,{y:.6f}f' + '},\n' )
+#}
+f.write( '};\n' )
+f.write( F'const char k_country_names[] = {'{'}{mega_string}{'}'};\n' )
+
+used = []
+monstr = ""
+
+f.write( 'const char k_country_iso2[] = {')
+for i in range(0,len(all)//6):
+#{
+   j = i*6
+   cc = all[j+1]
+
+   if cc in used:
+      print( F"Duplicate! {cc}" )
+
+   monstr += "png/" + cc + ".svg.png "
+      
+   used.append(cc)
+   f.write( F'{ord(cc[0])},{ord(cc[1])},0,' )
+
+   if not os.path.isfile( F"png/{all[j+1]}.svg.png" ):
+      print( F"Not found! {all[j+1]}.svg.png" )
+#}
+f.write( '};\n')
+f.write( F'u32 k_country_count = {len(all)//6};\n' )
+
+f.close()
+
+os.system( F'montage {monstr} -tile 16x16 -geometry +0+0 comb.png' )
+
+print( "done" )
diff --git a/ccflags/svg/01.svg b/ccflags/svg/01.svg
new file mode 100644 (file)
index 0000000..07b4421
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"><rect width="900" height="600" fill="#ED2939"/><path d="M0 600 900.0.0v200l-600 400z" fill="#FFF"/><path d="m900 200-600 400h600z" fill="#2D2C2F"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AD.svg b/ccflags/svg/AD.svg
new file mode 100644 (file)
index 0000000..2aba7c1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#0052B4" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342zM198.9 113.6H256v64.8h-57.1z"/><g stroke="#D80027" stroke-width="7"><path d="M267.6 113.6v64.7M284.2 113.6v64.7M300.8 113.6v64.7"/></g><g stroke="#D80027" stroke-width="5"><path d="M247.4 178.4v64.7M234.1 178.4v64.7M220.8 178.5v53.9M207.1 178.5v47.1"/></g><path fill="#FFDA44" d="m199.9 146 27.6-32.4 28.5 32.3-28.1 32.4z"/><path fill="#BC8B00" d="M182.2 95.9v92.2c0 34.3 27.3 54.2 48.6 64.5-.8 1.4 25.1 8.3 25.1 8.3s25.9-6.9 25.1-8.3c21.4-10.3 48.6-30.1 48.6-64.5V95.9H182.2zm129.9 92.2c0 16.9-10 29.4-32.8 43.9-8.6 5.5-17.5 9-23.3 11-5.8-2-14.7-5.5-23.3-11-22.8-14.5-32.8-28-32.8-43.9v-74.5h112.2v74.5z"/><path fill="#D80027" d="M264.4 188.9h29.5v8.6h-29.5zM264.4 206.5h29.5v8.6h-29.5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AE.svg b/ccflags/svg/AE.svg
new file mode 100644 (file)
index 0000000..59ddafd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#009e49" d="M0 0h513v114H0z"/><path d="M0 228h513v114H0z"/><path fill="#ce1126" d="M0 0h171v342H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AF.svg b/ccflags/svg/AF.svg
new file mode 100644 (file)
index 0000000..9cec9d8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#DB3E00" d="M0 0h513v342H0z"/><path fill="#479900" d="M331 0h182v342H331z"/><path d="M0 0h181.8v342H0z"/><path fill="#FFF" d="M256 126.7c-19.4 0-35.2 15.8-35.2 35.2v52.8h70.4v-52.8c0-19.5-15.8-35.2-35.2-35.2z"/><path fill="#FFF" d="M256 84.3c-47.7 0-86.4 38.7-86.4 86.4S208.3 257 256 257s86.4-38.7 86.4-86.4-38.7-86.3-86.4-86.3zm0 157.7c-39.4 0-71.4-32-71.4-71.4 0-39.4 32-71.4 71.4-71.4 39.4 0 71.4 32 71.4 71.4 0 39.5-32 71.4-71.4 71.4z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AG.svg b/ccflags/svg/AG.svg
new file mode 100644 (file)
index 0000000..16881fe
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path d="M0 0h513v342H0z"/><path fill="#0072c6" d="M88.8 136.5c-2.2 12.9-3.4 26.2-3.4 39.8 0 13.6 1.2 27 3.4 39.8L256 228.3l167.2-12.1c2.2-12.9 3.4-26.2 3.4-39.8s-1.2-27-3.4-39.8"/><path fill="#FFF" d="M423.2 219H88.8c15.8 69.8 84.7 122.3 167.2 122.3S407.4 288.8 423.2 219z"/><path fill="#FFDA44" d="M365.9 136.5H146.1l44.9-21.1-23.9-43.5 48.8 9.4L222 32l34 36.2L290 32l6.1 49.3 48.8-9.4-23.9 43.5z"/><g fill="#ce1126"><path d="M256.5 342 0 0v342z"/><path d="M513 342V0L256 342z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AI.svg b/ccflags/svg/AI.svg
new file mode 100644 (file)
index 0000000..a7fcfd0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#00318b" d="M0 0h513v342H0z"/><path fill="#FFF" d="M454.8 265.38c7.94-10.93 13.24-24.27 13.24-40.42V104.89a59.754 59.754 0 0 1-36.02 12.01c-19.64 0-37.07-9.43-48.03-24.01-10.95 14.58-28.39 24.01-48.03 24.01-13.52 0-25.99-4.47-36.02-12v120.06c0 16.16 5.3 29.5 13.24 40.42H454.8z"/><path fill="#8DCCFF" d="M310.23 260.98C332.65 296.96 384 309 384 309s51.35-12.04 73.77-48.02H310.23z"/><path fill="#D87B00" d="M396.66 172.21c.32 1.42 8.72 10.17 17.56 20.15 1.39 1.57-8.74 12.63-6.91 12.59 4.75-.12 19.27-17.26 19.34 6.65.05 15.94-30 27.51-30 27.51h17.47l.65 14.96s4.97-13.34 7.59-16.57c8.1-9.97 20.18-30.07 34.59-27.1 14.41 2.97-13.66-13.92-13.66-13.92s-5.2-15.19-16.63-16.97c-10.06-1.57-14.29-2.51-26.64-7.3-1.68-.65-3.88-2.32-3.36 0z"/><path fill="#D87B00" d="M359.69 198.69c1.07-.99 4.46-12.63 8.69-25.28.67-1.99 15.31 1.27 14.35-.3-2.47-4.06-24.58-8.08-3.9-20.08 13.79-8 38.82 12.27 38.82 12.27l-8.72-15.14 12.64-8.03s-14.05 2.35-18.14 1.69c-12.68-2.04-36.13-2.48-40.75-16.45-4.62-13.97-5.25 18.79-5.25 18.79s-10.56 12.08-6.4 22.88c3.66 9.5 4.96 13.64 6.97 26.73.29 1.79-.06 4.53 1.69 2.92z"/><path fill="#D87B00" d="M395.67 219.87c-1.39-.43-13.16 2.49-26.22 5.18-2.06.42-6.59-13.88-7.47-12.26-2.27 4.17 5.36 25.31-15.41 13.45-13.84-7.91-8.89-39.73-8.89-39.73l-8.71 15.14-13.29-6.9s9.09 10.96 10.57 14.84c4.6 11.99 16 32.49 6.24 43.49-9.76 11.01 18.88-4.9 18.88-4.9s15.76 3.07 23-5.96c6.38-7.94 9.3-11.14 19.61-19.45 1.43-1.12 3.97-2.19 1.69-2.9z"/><path fill="#FFF" d="M256.5 0h-23.1L160 48.9V0H96v48.9L22.6 0H0v22.7l46.1 30.7H0v64h46.1L0 148.1V171h22.6L96 121.8V171h64v-49.2l73.4 49.2h23.1v-22.9l-46.6-30.7h46.6v-64h-46.6l46.6-30.7z"/><path fill="#D80027" d="M144 0h-32v69.4H0v32h112V171h32v-69.6h112.5v-32H144z"/><path fill="#D80027" d="M0 171v-11.3l62.5-42.3h22.6L7.3 171zM7.3.1l77.8 53.2H62.5L0 11.1V.1zM256.5.1v11l-63 42.3h-22.6L248.7.1zM248.7 171l-77.8-53.6h22.6l63 42.3V171z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AL.svg b/ccflags/svg/AL.svg
new file mode 100644 (file)
index 0000000..d7989d9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 60"><path fill="#ED2024" d="M0 0h90v60H0z"/><path fill="#212121" d="M32.5 12.2v16l7.1 2.5-5 4.9 2.4 3 5.3-5.5 1.2 2.3-3 4.9 3.6 5.6-1.8 2.6 2.8 3.6 2.7-3.7-1.5-2.6 3-5.8-2.7-4.6 1.2-2.3 5.2 5.5 2.5-2.9-5.2-5.1 7.2-2.6V12.2l-5.2 1.9-.1 3.8-3.3.3v-2.6l1.7-2.3 5.6-2.2-2.3-.4 1.4-1.2.9.4-.8-1.4L54 9l-1-1.1L47.5 9l1.4 1.1-3.8 4.9-3.8-4.8 1.3-1.1-5-1.2L36.2 9l-1.5-.4-.8 1.4.9-.6 1.6 1.1-2.3.5 5.5 2 1.6 2.3v2.9l-3.3-.3v-3.6z"/><g fill="#212121"><path d="M26.2 25h6.4v2.5h-6.4zM26.2 20.9h6.4v2.7h-6.4zM26.2 16.7h6.4v2.6h-6.4zM26.2 12.7h6.4v2.5h-6.4z"/></g><g fill="#212121"><path d="M57.4 25h6.4v2.5h-6.4zM57.4 20.9h6.4v2.7h-6.4zM57.4 16.7h6.4v2.6h-6.4zM57.4 12.7h6.4v2.5h-6.4z"/></g><path fill="#212121" d="M53.4 36.1h6.4V38h-6.4zM30.2 36.1h6.4V38h-6.4z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AM.svg b/ccflags/svg/AM.svg
new file mode 100644 (file)
index 0000000..d49087d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#FF9811" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AO.svg b/ccflags/svg/AO.svg
new file mode 100644 (file)
index 0000000..ebb14c1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path d="M0 171h513v171H0z"/><path fill="#D80027" d="M0 0h513v171H0z"/><g fill="#FFDA44"><path d="m332.7 135.6 17.5-8.6-7.4-19-18.7 6.2zM287.1 79.6l5.5-18.8-19.1-7.2-8 18zM316.5 102.8l12.2-15.3-14.9-13.9-14.2 13.6zM335.9 171.7l19.5-.8v-21.3l-22.9.2zM323.3 209.8l18.8 5.5 7.3-19-18-8zM294.3 242.2l14.9 12.7 14.4-14.4-13.1-14.7zM247.3 94.5l9.8 19.9 21.9 3.3-15.9 15.5 3.6 21.9-19.6-10.4-19.7 10.2 3.8-21.9-15.8-15.5 22-3.1z"/><path d="m250.8 61.3-2.7 18.3c43.1 3.2 77 39.2 77 83.1 0 46-37.3 82.9-83.4 83.4-29.2.3-51.3-14.8-67-33.7l-13.9 12.3c15 19 40.8 39.9 80.9 39.9 56.3 0 101.9-45.6 101.9-101.9.1-53.2-40.7-96.9-92.8-101.4z"/><path fill="#000" d="m291.9 223.4-11.8 14s51.9 38.9 53.6 40.4c1.7 1.5 5.2 2 9.1-2.7 3.7-4.5 2.8-8.1.9-9.7-2-1.5-51.8-42-51.8-42z"/><path d="M206.1 157.2c-7.7 10.3-7.5 23.1 2.8 30.9 0 0 135.2 101.5 136.9 103 1.7 1.5 5.2 2 9.1-2.7 3.7-4.5 2.8-8.1.9-9.7-1.9-1.5-149.7-121.5-149.7-121.5zM253.8 256.3l7.3 18.2 19.5-6-4.8-19.1zM213.4 252.6l-2 19.5 20.1 3.6 4.5-19.1zM177.7 231.4 167.4 248l16.4 12.1 12.5-15.2z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AQ.svg b/ccflags/svg/AQ.svg
new file mode 100644 (file)
index 0000000..14d59c7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 744 496"><path fill="#3A7DCE" d="M0 0h744v496H0V0z"/><path fill="#fff" d="m120 125 90 63 54-14 23-81 61-36 92 14 105 55 6 90 34 12v92l-65 115-78 24-72-17 18-30-8-32-10 9-162-25-49-85 20-46-49-62z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AR.svg b/ccflags/svg/AR.svg
new file mode 100644 (file)
index 0000000..8dfd3df
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h512v342H0z"/><path fill="#338AF3" d="M0 0h512v114H0zM0 228h512v114H0z"/><circle fill="#FFDA44" stroke="#d6ab00" stroke-width="5" cx="256.5" cy="171" r="40"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AS.svg b/ccflags/svg/AS.svg
new file mode 100644 (file)
index 0000000..bd00809
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#10338c" d="M0 0h513v342H0z"/><path fill="#D80027" d="M513 33 95.3 171 513 310.76V342L0 171 513 0z"/><path fill="#FFF" d="M513 287.18v24.58L81.72 171 513 30v24.16"/><path fill="#A2001D" d="m476.98 140.21-21.89 10.68-3.18-15.32 31.19-29.77s-9.42-40.65-13.75-44.98l-112.32 55.82-6.84 36.76-31.9 28.59-.4 34.2 34.29-22.76 67.23-2.66-1.51 38.11h22.23l11.9-44.64 31.55-24.61-6.6-19.42z"/><path fill="#EFC100" stroke="#231F20" stroke-miterlimit="10" d="m317.89 238.41-22.24-11.11 22.24-11.11h144.46v22.22z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AT.svg b/ccflags/svg/AT.svg
new file mode 100644 (file)
index 0000000..6ccf7c4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 114h513v114H0z"/><path fill="#D80027" d="M0 0h513v114H0zM0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AU.svg b/ccflags/svg/AU.svg
new file mode 100644 (file)
index 0000000..f91b013
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#10338c" d="M0 0h513v342H0z"/><g fill="#FFF"><path d="M222.2 170.7c.3-.3.5-.6.8-.9-.2.3-.5.6-.8.9zM188 212.6l11 22.9 24.7-5.7-11 22.8 19.9 15.8-24.8 5.6.1 25.4-19.9-15.9-19.8 15.9.1-25.4-24.8-5.6 19.9-15.8-11.1-22.8 24.8 5.7zM385.9 241.1l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.6v12.2l-9.4-7.6-9.5 7.6.1-12.2-11.8-2.6 9.5-7.5-5.3-10.9 11.8 2.7zM337.3 125.1l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.7v12.1l-9.4-7.6-9.5 7.6.1-12.1-11.9-2.7 9.5-7.5-5.3-10.9L332 136zM385.9 58.9l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.7v12.1l-9.4-7.6-9.5 7.6.1-12.1-11.8-2.7 9.5-7.5-5.3-10.9 11.8 2.7zM428.4 108.6l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.6V150l-9.4-7.6-9.5 7.6v-12.2l-11.8-2.6 9.5-7.5-5.3-10.9 11.8 2.7zM398 166.5l4.1 12.7h13.3l-10.8 7.8 4.2 12.7-10.8-7.9-10.8 7.9 4.1-12.7-10.7-7.8h13.3z"/><path d="M254.8 0v30.6l-45.1 25.1h45.1V115h-59.1l59.1 32.8v22.9h-26.7l-73.5-40.9v40.9H99v-48.6l-87.4 48.6H-1.2v-30.6L44 115H-1.2V55.7h59.1L-1.2 22.8V0h26.7L99 40.8V0h55.6v48.6L242.1 0z"/></g><path fill="#D80027" d="M142.8 0h-32v69.3h-112v32h112v69.4h32v-69.4h112v-32h-112z"/><path fill="#0052B4" d="m154.6 115 100.2 55.7v-15.8L183 115z"/><path fill="#FFF" d="m154.6 115 100.2 55.7v-15.8L183 115z"/><g fill="#D80027"><path d="m154.6 115 100.2 55.7v-15.8L183 115zM70.7 115l-71.9 39.9v15.8L99 115z"/></g><path fill="#0052B4" d="M99 55.7-1.2 0v15.7l71.9 40z"/><path fill="#FFF" d="M99 55.7-1.2 0v15.7l71.9 40z"/><g fill="#D80027"><path d="M99 55.7-1.2 0v15.7l71.9 40zM183 55.7l71.8-40V0L154.6 55.7z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AW.svg b/ccflags/svg/AW.svg
new file mode 100644 (file)
index 0000000..cff670d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 363 242"><path fill="#338AF3" d="M0 0h363v242H0z"/><path fill="#FFF" d="M57 96.9 14.7 78.2 57 59.6l18.6-42.2 18.6 42.2 42.3 18.6-42.3 18.7-18.6 42.2z"/><path fill="#f30028" d="m75.6 40.6 11.5 26.1 26.1 11.5-26.1 11.5-11.5 26.1-11.5-26.1L38 78.2l26.1-11.5z"/><g fill="#FFDA44"><path d="M0 152.2h363v15.7H0zM0 183.6h363v15.7H0z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AX.svg b/ccflags/svg/AX.svg
new file mode 100644 (file)
index 0000000..9bbfa51
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFDA44" d="M513 210.9H202.2V342h-79.8V210.9H0V131.1h122.4V0h79.8v131.1H513v61.2z"/><path fill="#D80027" d="M513 149.7v42.6H183.7V342H141V192.3H0v-42.6h141V0h42.7v149.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/AZ.svg b/ccflags/svg/AZ.svg
new file mode 100644 (file)
index 0000000..486d3b8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#ef3340" d="M0 0h513v342H0z"/><path fill="#00b5e2" d="M0 0h513v114H0z"/><path fill="#509e2f" d="M0 228h513v114H0z"/><g fill="#FFF"><path d="M265.6 212.6c-23 0-41.6-18.6-41.6-41.6s18.6-41.6 41.6-41.6c7.2 0 13.9 1.8 19.8 5-9.2-9-21.9-14.6-35.8-14.6-28.3 0-51.2 22.9-51.2 51.2s22.9 51.2 51.2 51.2c13.9 0 26.6-5.6 35.8-14.6-5.9 3.2-12.6 5-19.8 5z"/><path d="m297.6 142.2 5.5 15.5 14.9-7.1-7.1 14.9 15.5 5.5-15.5 5.5 7.1 14.9-14.9-7.1-5.5 15.5-5.5-15.5-14.9 7.1 7.1-14.9-15.5-5.5 15.5-5.5-7.1-14.9 14.9 7.1z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BA.svg b/ccflags/svg/BA.svg
new file mode 100644 (file)
index 0000000..1731a3a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#10338C" d="M0 0h513.1v342H0z"/><path fill="#F6C500" d="M99.9 0h342v342"/><g fill="#FFF"><path d="M19.9 21.1 40.3 6.2 60.9 21 54 0H26.7z"/><path d="M92.3 25.5 84.4 1.3l-7.8 24.2H51.3l20.5 14.8-7.8 24 20.4-14.8L105 64.3l-7.9-24 20.5-14.9z"/><path d="m136.3 69.2-7.8-24-7.8 24H95.5l20.4 14.9-7.8 24 20.4-14.8 20.6 14.8-7.8-24 20.4-14.9z"/><path d="m179.4 112.3-7.8-24.1-7.8 24.1h-25.3l20.5 14.9-7.8 24 20.4-14.8 20.6 14.8-7.9-24 20.5-15z"/><path d="m222.5 155.3-7.8-24-7.8 24h-25.4l20.6 15-7.8 24 20.4-14.9 20.4 14.9-7.8-24 20.6-15z"/><path d="m265.6 198.4-7.8-24-7.8 24h-25.4l20.6 14.9-7.8 24.1 20.4-14.9 20.4 14.9-7.8-24.2 20.5-14.8z"/><path d="m308.7 241.5-7.9-24-7.8 24h-25.3l20.5 14.8-7.9 24.2 20.6-14.9 20.4 14.8-7.8-24.1 20.5-14.8z"/><path d="m351.7 284.6-7.8-24.2-7.8 24.2h-25.3l20.4 14.8-7.8 24.1 20.5-14.9 20.5 14.9-7.8-24.1 20.4-14.8z"/><path d="m387 303.5-7.9 24.1-25.3.1 19.8 14.3h26.6l19.9-14.4h-25.3z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BB.svg b/ccflags/svg/BB.svg
new file mode 100644 (file)
index 0000000..05e0dd9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#ffc726" d="M0 0h513v342H0z"/><g fill="#00267f"><path d="M0 0h171v342H0zM342 0h171v342H342z"/></g><path d="m325.74 101.02-31.97 12.4c-.68 1.35-5.79 7.54-8.18 53.06h-17.05v-60.42L256 78.68l-12.54 27v60.8H226.4c-2.39-45.53-7.8-52.48-8.47-53.84l-31.68-11.63c.15.31 15.4 31.34 15.4 78.01v12.54h41.81v71.07h25.08v-71.07h41.81v-12.54c0-24.13 4.17-44.02 7.68-56.46 3.82-13.57 7.7-21.49 7.74-21.57l-.03.03z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BD.svg b/ccflags/svg/BD.svg
new file mode 100644 (file)
index 0000000..e3c7267
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="#2d6e41" d="M0 85.331h513v342H0z"/><circle fill="#F40B32" cx="218.902" cy="256.5" r="115"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BE.svg b/ccflags/svg/BE.svg
new file mode 100644 (file)
index 0000000..cc1b013
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#fdda25" d="M0 0h513v342H0z"/><path d="M0 0h171v342H0z"/><path fill="#ef3340" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BF.svg b/ccflags/svg/BF.svg
new file mode 100644 (file)
index 0000000..126e61f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#3d944f" d="M0 0h513v342H0z"/><path fill="#ef2b2d" d="M0 0h513v171H0z"/><path fill="#FFDA44" d="m256 102.6 16.9 52h54.7l-44.2 32.2 16.8 52-44.2-32.1-44.2 32.1 16.8-52-44.2-32.2h54.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BG.svg b/ccflags/svg/BG.svg
new file mode 100644 (file)
index 0000000..7ebee38
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#00966e" d="M0 0h513v342H0z"/><path fill="#FFF" d="M0 0h513v114H0z"/><path fill="#d62612" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BH.svg b/ccflags/svg/BH.svg
new file mode 100644 (file)
index 0000000..5134d60
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#FFF" d="m222.8 34.3-85.2 34.2 85.2 34.1-85.2 34.1 85.2 34.1-85.2 34.1 85.2 34.1-85.2 34.1 85.2 34.1-85.2 34.8H0V0h137.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BI.svg b/ccflags/svg/BI.svg
new file mode 100644 (file)
index 0000000..68ac163
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><g fill="#47a644"><path d="M215.9 170.7 0 314.6V26.8zM513 26.8v287.8L297.1 170.7z"/></g><path fill="#0052B4" d="M513 26.8 296.1 170.7 513 314.6V342h-41.1L256 197.4 40.1 342H0v-27.4l215.9-143.9L0 26.8V0h40.1L256 143.9 471.9 0H513z"/><path fill="#FFF" d="M513 26.8 297.1 170.7 513 314.6V342h-40L256 197.4 39 342H0v-27.4l215.9-143.9L0 26.8V0h40.1L256 143.9 471.9 0H513z"/><circle fill="#FFF" cx="251.6" cy="170.7" r="100.2"/><g fill="#D80027" stroke="#47a644" stroke-width="3"><path d="m251.4 103.6 7.4 12.9h14.8l-7.4 12.8 7.4 12.8h-14.8l-7.4 12.9-7.4-12.9h-14.8l7.4-12.8-7.4-12.8H244zM290.2 170.3l7.4 12.9h14.8L305 196l7.4 12.8h-14.8l-7.4 12.9-7.4-12.9h-14.9l7.4-12.8-7.4-12.8h14.9zM213 170.3l7.4 12.9h14.9l-7.4 12.8 7.4 12.8h-14.9l-7.4 12.9-7.4-12.9h-14.8l7.4-12.8-7.4-12.8h14.8z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BJ.svg b/ccflags/svg/BJ.svg
new file mode 100644 (file)
index 0000000..63a6f9b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="#008751" d="M0 85.333h513v342H0z"/><path fill="#fcd116" d="M196.666 85.333H513v171H196.666z"/><path fill="#e8112d" d="M196.666 256H513v171H196.666z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BL.svg b/ccflags/svg/BL.svg
new file mode 100644 (file)
index 0000000..dd9cdb5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#E6BC00" d="M157.31 199.76s-9.04 43.93-19.31 40.39c-10.62-3.54-17.53-18.76-17.53-18.76l-14.52 21.24s38.18 8.48 41.01 5.47c1.22-1.14 8.21-15.1 10.34-26.05v-22.29zm-56.13 60.57s-2.48 20.18-1.06 22.66c1.24 2.3 39.48 11.33 39.48 11.33s-24.96 16.46-29.74 20.54L91.8 284.94l-.71-24.61h10.09zM112.51 94.64s39.65 41.6 40.36 45.5c.71 3.72-4.25 3.19-4.25 3.19s-44.79-37.53-49.92-41.07c-5.31-3.55 13.81-7.62 13.81-7.62z"/><path fill="#ADADAD" d="M99.41 104.73s16.99-.71 16.64-11.51c-.35-10.62-11.15-14.87-19.12-12.39-7.97 2.3-23.01 13.45-13.63 35.05 9.38 21.42 23.37 29.39 26.2 47.8 0 0-5.46 9.86-19.12.35-16.9-11.77-6.2-38.24-10.44-44.96-4.25-7.08-40.95-38.92-40.95-38.92s-30.24 39.37-18 74.92c16.95 49.21 51.74 31.98 64.61 36.76 0 0-42.13 61.96-49.57 67.09 0 0 24.08 8.32 47.8-18.76 0 0 5.84 9.74 7.08 20.18h10.27c4.78-26.2 51.51-64.26 49.92-82.32-1.77-21.25-49.21-49.39-51.69-73.29z"/><path fill="#E6BC00" d="M359.17 201.27s8.96 42.43 19.23 38.89c10.62-3.54 17.53-18.76 17.53-18.76l14.52 21.24s-37 8.48-39.83 5.47c-1.21-1.14-9.32-13.79-11.52-24.66l.07-22.18zm56.05 59.06s2.48 20.18 1.06 22.66c-1.24 2.3-39.48 11.33-39.48 11.33s24.96 16.46 29.74 20.54l18.06-29.92.71-24.61h-10.09zM403.89 94.64s-39.65 41.6-40.36 45.5c-.71 3.72 4.25 3.19 4.25 3.19s44.79-37.53 49.92-41.07c5.14-3.55-13.81-7.62-13.81-7.62z"/><path fill="#125ECC" d="M157.31 87.06H359.1v145.46c0 16.06-9.69 21.39-21.91 31.85l-45.92 39.41c-18.25 15.62-47.91 15.57-66.07 0l-46.01-39.43c-12.08-10.35-21.88-15.71-21.88-31.82V87.06z"/><path fill="#FFE600" d="M200.55 147.71c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41zm57.65-3c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41zm57.65 3c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41zM214.96 274.43c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41c.01 7.96-6.45 14.41-14.41 14.41zm43.24 14.42c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41c0 7.95-6.45 14.41-14.41 14.41zm43.24-14.42c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41z"/><path fill="#D60537" d="M157.31 175.36H359.1v57.65H157.31v-57.65z"/><path fill="#EACE00" d="M142.9 43.82s57.65-14.41 115.31-14.41 115.31 14.41 115.31 14.41l-14.41 57.65s-50.45-14.41-100.89-14.41-100.89 14.41-100.89 14.41L142.9 43.82z"/><path fill="#7A6920" d="M258.2 72.65c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41zm57.65 5c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41zm-115.3 0c-7.96 0-14.41-6.45-14.41-14.41s6.45-14.41 14.41-14.41 14.41 6.45 14.41 14.41-6.45 14.41-14.41 14.41z"/><path fill="#ADADAD" d="M365.08 178.02c-1.59 18.06 45.14 56.12 49.92 82.32h10.27c1.24-10.44 7.08-20.18 7.08-20.18 23.72 27.09 47.8 18.76 47.8 18.76-7.44-5.13-49.57-67.09-49.57-67.09 12.88-4.78 47.67 12.45 64.61-36.76 12.24-35.55-18-74.92-18-74.92s-36.7 31.84-40.95 38.92c-4.25 6.73 6.46 33.2-10.44 44.96-13.66 9.51-19.12-.35-19.12-.35 2.83-18.41 16.82-26.38 26.2-47.8 9.38-21.6-5.66-32.75-13.63-35.05-7.97-2.48-18.76 1.77-19.12 12.39-.35 10.8 16.64 11.51 16.64 11.51-2.48 23.9-49.92 52.04-51.69 73.29z"/><circle fill="#FFF" cx="258.2" cy="204.19" r="16.93"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BM.svg b/ccflags/svg/BM.svg
new file mode 100644 (file)
index 0000000..97a7d2b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#c8102e" d="M0 0h513v342H0z"/><path fill="#012169" d="M0 .1h256.5v171H0z"/><path fill="#FFF" d="M256 0h-22.6L160 48.9V0H96v48.9L22.6 0H0v22.7l46.1 30.7H0v64h46.1L0 148.1v22.6h22.6L96 121.8v48.9h64v-48.9l73.4 48.9H256v-22.6l-46.1-30.7H256v-64h-46.1L256 22.7z"/><path fill="#c8102e" d="M144 0h-32v69.4H0v32h112v69.3h32v-69.3h112v-32H144z"/><path fill="#c8102e" d="M0 170.7v-11l62.5-42.3h22.6L7.3 170.7zM7.3.1l77.8 53.2H62.5L0 11.1V.1zM256 .1v11l-62.5 42.3h-22.6L248.7.1zM248.7 170.7l-77.8-53.3h22.6l62.5 42.3v11z"/><g transform="translate(13 5)"><path fill="#fff" d="M303.9 94.94v99.69c0 59.81 79.75 99.69 79.75 99.69s79.75-39.88 79.75-99.69V94.94H303.9z"/><path fill="#2F8F22" d="M436.37 254.44H330.93c23.13 25.08 52.72 39.88 52.72 39.88s29.59-14.8 52.72-39.88z"/><circle fill="#65B5D2" cx="383.65" cy="214.56" r="39.88"/><circle fill="#c8102e" cx="343.77" cy="194.63" r="19.94"/><circle fill="#c8102e" cx="423.52" cy="194.63" r="19.94"/><circle fill="#c8102e" cx="383.65" cy="154.75" r="19.94"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BN.svg b/ccflags/svg/BN.svg
new file mode 100644 (file)
index 0000000..3b758a0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path d="m0 193.74 513 127.19V214.26L0 97.08z"/><path fill="#FFF" d="M513 234.26v-86.67L0 20.41v86.67"/><g fill="#D80027" stroke="#231F20" stroke-width="3" stroke-miterlimit="10"><path d="M306.4 134.01a50.28 50.28 0 0 1 6.07 24.02c0 21.55-13.51 39.94-32.52 47.19v-59.51c5.7-1.19 10-6.37 10-12.59 6.9 0 12.5-5.75 12.5-12.85h-.42c6.9 0 12.91-5.75 12.91-12.85h-34.99V76.58l-14.99-27.71-15 27.71v30.84h-34.99c0 7.1 6.01 12.85 12.91 12.85h-.42c0 7.1 5.6 12.85 12.5 12.85 0 6.22 4.29 11.4 9.99 12.59v61.37c-22.09-5.39-38.48-25.3-38.48-49.05 0-8.7 2.2-16.88 6.07-24.02-10.96 11.21-17.72 26.53-17.72 43.44 0 34.32 27.82 62.15 62.15 62.15s62.15-27.83 62.15-62.15c0-16.91-6.77-32.24-17.72-43.44z"/><path d="M198.46 226.81s20.69 27.71 66.5 27.71 66.5-27.71 66.5-27.71l13.47 28.37s-21.03 27.71-79.97 27.71-79.97-27.71-79.97-27.71l13.47-28.37zM129.24 133.18h20.88l24.93 27.26v73.45h-26.28v-68.37zM400 133.18h-20.88l-24.93 27.26v73.45h26.27v-68.37z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BO.svg b/ccflags/svg/BO.svg
new file mode 100644 (file)
index 0000000..6a0996e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#d52b1e" d="M0 0h513v114H0z"/><path fill="#f9e300" d="M0 114h513v114H0z"/><path fill="#007934" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BQ.svg b/ccflags/svg/BQ.svg
new file mode 100644 (file)
index 0000000..6318504
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#012a87" d="M0 342h513V0z"/><path fill="#f9d90f" d="M250.4 0H0v166.9z"/><path fill="#dc171d" d="m140.4 118.3 12.2 21.2h24.5l-12.3 21.1 12.3 21.2h-24.5L140.4 203l-12.2-21.2h-24.5l12.3-21.2-12.3-21.1h24.5z"/><circle fill="none" stroke="#000" stroke-width="9" stroke-miterlimit="10" cx="140.4" cy="160.6" r="57.7"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BR.svg b/ccflags/svg/BR.svg
new file mode 100644 (file)
index 0000000..f4dbb02
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#009b3a" d="M0 0h513v342H0z"/><path fill="#fedf00" d="m256.5 19.3 204.9 151.4L256.5 322 50.6 170.7z"/><circle fill="#FFF" cx="256.5" cy="171" r="80.4"/><path fill="#002776" d="M215.9 165.7c-13.9 0-27.4 2.1-40.1 6 .6 43.9 36.3 79.3 80.3 79.3 27.2 0 51.3-13.6 65.8-34.3-24.9-31-63.2-51-106-51zM334.9 186c.9-5 1.5-10.1 1.5-15.4 0-44.4-36-80.4-80.4-80.4-33.1 0-61.5 20.1-73.9 48.6 10.9-2.2 22.1-3.4 33.6-3.4 46.8.1 89 19.5 119.2 50.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BS.svg b/ccflags/svg/BS.svg
new file mode 100644 (file)
index 0000000..aac6004
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#ffc72c" d="M0 0h513v342H0z"/><g fill="#00778b"><path d="M0 0h513v114H0zM0 228h513v114H0z"/></g><path d="M256 171 0 342V0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BT.svg b/ccflags/svg/BT.svg
new file mode 100644 (file)
index 0000000..ed53f32
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FF7415" d="M0 0h513v342H0z"/><path fill="#FFDA44" d="M513 0H0v342"/><path fill="none" stroke="#FFF" stroke-width="42" stroke-miterlimit="10" d="M128.7 255.5s35 54 67.3 32.4c56.9-37.9-68.9-108.6-2.9-152.6 58.3-38.8 76.6 103.5 137.6 62.8 59-39.3-64.7-111.4-9.2-148.4 33.4-22.2 67.1 32.6 67.1 32.6"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BV.svg b/ccflags/svg/BV.svg
new file mode 100644 (file)
index 0000000..c3652bf
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 33.333 1100 733.333"><path fill="#ef2b2d" d="M0 0h1100v800H0z"/><path fill="#fff" d="M300 0h200v800H300z"/><path fill="#fff" d="M0 300h1100v200H0z"/><path fill="#002868" d="M350 0h100v800H350z"/><path fill="#002868" d="M0 350h1100v100H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BW.svg b/ccflags/svg/BW.svg
new file mode 100644 (file)
index 0000000..5343de6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#6da9d2"><path d="M0 238h513v104H0zM0 0h513v104H0z"/></g><path d="M0 125.5h513v89.656H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BY.svg b/ccflags/svg/BY.svg
new file mode 100644 (file)
index 0000000..86a423a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#007C30" d="M0 0h513v342H0z"/><path fill="#CE1720" d="M0 230h513V0H0"/><path fill="#FFF" d="M100 230V0H0v342h513-413z"/><g fill="#CE1720"><path d="M28 159.6 8.6 128.2 28 97.4l19.3 30.8zM72.6 159.6l-19.3-31.4 19.3-30.8L92 128.2zM28 241.2 8.6 209.8 28 179l19.3 30.8zM72.6 241.2l-19.3-31.4L72.6 179 92 209.8z"/></g><g fill="none" stroke="#CE1720" stroke-width="7"><path d="m28 73.8-16.1-26L28 22.2l16 25.6zM72.6 73.8l-16-26 16-25.6 16.1 25.6zM28 318l-16.1-26.1L28 266.3l16 25.6zM72.6 318l-16-26.1 16-25.6 16.1 25.6z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/BZ.svg b/ccflags/svg/BZ.svg
new file mode 100644 (file)
index 0000000..9ac59b0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#003e87" d="M0 0h513v342H0z"/><circle fill="#FFF" cx="260.9" cy="170.9" r="118.9"/><circle fill="none" stroke="#6DA544" stroke-width="18" stroke-miterlimit="10" cx="261.9" cy="173.1" r="94.5"/><g stroke="#000"><path fill="#003e87" d="m261.9 151.5-50.6 23.4v20c0 11.8 6.1 22.8 16.2 28.9L262 239l34.5-15.2c10-6.2 16.2-17.1 16.2-28.9v-20l-50.8-23.4z"/><path fill="#FFDA44" d="M211.3 128.1h101.3v46.7H211.3z"/></g><g fill="#ce1127"><path d="M0 0h513v35H0zM0 306h513v35H0z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CA.svg b/ccflags/svg/CA.svg
new file mode 100644 (file)
index 0000000..457d316
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="red"><path d="M0 0h142v342H0zM371 0h142v342H371zM306.5 206l50.4-25.2-25.2-12.6V143l-50.4 25.2 25.2-50.4h-25.2L256.1 80l-25.2 37.8h-25.2l25.2 50.4-50.4-25.2v25.2l-25.2 12.6 50.4 25.2-12.6 25.2h50.4V269h25.2v-37.8h50.4z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CC.svg b/ccflags/svg/CC.svg
new file mode 100644 (file)
index 0000000..16c3b66
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="green" d="M0 0h513v342H0z"/><g fill="#FFDA44"><path d="m422.7 252.4 6.2 12.8 13.8-3.2-6.2 12.8 11.2 8.8-13.9 3.2V301l-11.1-8.9-11.1 8.9v-14.2l-13.8-3.2 11.1-8.8-6.2-12.8 13.9 3.2zM376.1 116.1l6.2 12.9 13.8-3.2-6.2 12.8 11.2 8.8-13.9 3.1v14.3l-11.1-8.9-11.1 8.9.1-14.3-13.9-3.1 11.1-8.8-6.2-12.8L370 129zM413.1 38.3l6.2 12.8 13.8-3.2-6.2 12.8 11.2 8.9-13.9 3.1v14.2L413.1 78 402 86.9l.1-14.2-13.9-3.1 11.1-8.9-6.2-12.8 13.9 3.2zM464.9 96.7l6.2 12.8 13.9-3.2-6.3 12.8 11.2 8.9-13.9 3.1.1 14.2-11.2-8.9-11.1 8.9.1-14.2L440 128l11.2-8.9-6.3-12.8 13.9 3.2zM436.9 164.8l4.9 14.8h15.6l-12.6 9.2 4.8 14.9-12.7-9.2-12.6 9.2 4.8-14.9-12.6-9.2h15.6z"/></g><path fill="#FFDA44" d="M306.8 254.7c-49.2 0-89.1-39.9-89.1-89.1s39.9-89.1 89.1-89.1c15.3 0 29.8 3.9 42.4 10.7C329.4 67.9 302.3 56 272.5 56c-60.5 0-109.6 49.1-109.6 109.6S212 275.3 272.5 275.3c29.8 0 56.9-11.9 76.6-31.3-12.6 6.8-27 10.7-42.3 10.7zM140.4 59.5C129.7 41 109.7 28.6 86.8 28.6S44 41 33.3 59.5h107.1zM140.6 59.9l-53.8 53.8-53.7-53.8C28 68.9 25 79.3 25 90.5c0 34.2 27.7 61.9 61.9 61.9s61.9-27.7 61.9-61.9c-.1-11.2-3.1-21.6-8.2-30.6z"/><path fill="#A2001D" d="M71.4 98.2v52.2c4.9 1.3 10.1 1.9 15.5 1.9s10.5-.7 15.5-1.9V98.2h-31z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CD.svg b/ccflags/svg/CD.svg
new file mode 100644 (file)
index 0000000..203b3c6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#338AF3" d="M0 0h513v342H0z"/><path fill="#FFDA44" d="M513 66.9V0H411.7L0 274.4V342h100.3z"/><path fill="#D80027" d="M513 0v40.1L60.2 342H0v-40.8L451.8 0z"/><path fill="#FFDA44" d="m93.6 31.2 16.3 50.4H163l-42.9 31.2 16.4 50.5-42.9-31.2-43 31.2L67 112.8 24.1 81.6h53.1z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CF.svg b/ccflags/svg/CF.svg
new file mode 100644 (file)
index 0000000..f7eaa95
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#d21034" d="M0 0h513v342H0z"/><g fill="#3a9927"><path d="M0 171h211.5v85.3H0zM300.5 171H512v85.3H300.5z"/></g><path fill="#003082" d="M0 0v85.3h211.5V0h89v85.3H513V0z"/><g fill="#FFF"><path d="M300.5 85.3H512v85.3H300.5zM0 85.3h211.5v85.3H0z"/></g><g fill="#ffce00"><path d="M300.5 342h-89v-86H0v86h513v-86H300.5zM105.7 8.6l8.6 26.2h27.5L119.5 51l8.6 26.2L105.7 61 83.4 77.2 91.9 51 69.6 34.8h27.6z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CG.svg b/ccflags/svg/CG.svg
new file mode 100644 (file)
index 0000000..d8b6c13
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="#da1a35" d="M0 85.331h513v342H0z"/><path fill="#009543" d="M443.726 85.331 102.4 426.657H0V85.331z"/><path fill="#fbde4a" d="M500.124 85.331 158.798 426.657H11.876L353.202 85.331z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CH.svg b/ccflags/svg/CH.svg
new file mode 100644 (file)
index 0000000..498b7d1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="red" d="M0 85.337h513v342H0z"/><path fill="#FFF" d="M356.174 222.609h-66.783v-66.783h-66.782v66.783h-66.783v66.782h66.783v66.783h66.782v-66.783h66.783z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CI.svg b/ccflags/svg/CI.svg
new file mode 100644 (file)
index 0000000..24ae0ea
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#009e60" d="M342 0h171v342H342z"/><path fill="#f77f00" d="M0 0h171v342H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CK.svg b/ccflags/svg/CK.svg
new file mode 100644 (file)
index 0000000..0e21062
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="#01237a" d="M0 85.332h513v342H0z"/><g fill="#FFF"><path d="m384 156.705 5.283 16.254h17.089l-13.826 10.045 5.281 16.254L384 189.211l-13.825 10.047 5.28-16.254-13.825-10.045h17.089zM313.791 185.786l15.228 7.758 12.084-12.083-2.673 16.879 15.227 7.759-16.879 2.673-2.674 16.88-7.76-15.227-16.878 2.673 12.086-12.084zM284.71 255.995l16.254-5.281.001-17.089 10.044 13.825 16.254-5.282-10.046 13.827 10.046 13.826-16.254-5.28-10.044 13.825v-17.09zM313.791 326.204l7.759-15.229-12.084-12.084 16.881 2.674 7.757-15.227 2.674 16.879 16.879 2.672-15.227 7.759 2.673 16.882-12.084-12.087zM384 355.284l-5.281-16.253h-17.091l13.827-10.045-5.28-16.254L384 322.776l13.827-10.044-5.281 16.254 13.826 10.045h-17.089zM454.209 326.204l-15.229-7.758-12.083 12.084 2.673-16.882-15.227-7.756 16.879-2.675 2.675-16.879 7.756 15.227 16.881-2.674-12.086 12.085zM483.29 255.995l-16.254 5.281v17.09l-10.045-13.826-16.254 5.281 10.046-13.826-10.046-13.827 16.254 5.282 10.045-13.825v17.089zM454.209 185.788l-7.757 15.226 12.082 12.084-16.881-2.673-7.756 15.227-2.675-16.88-16.879-2.675 15.227-7.757-2.673-16.878 12.084 12.082zM0 186.665v16h46.069L0 233.377v7.539l57.377-38.252H80L0 255.998h112v-69.334H0zm96 69.331H22.628L96 207.083v48.913zM176 138.665l80-53.334H144v69.334h112v-16h-46.069L256 107.951v-7.539l-57.377 38.251H176v.002zm-16-53.332h73.372L160 134.246V85.333zM144 255.998h112l-80-53.334h22.623L256 240.917v-7.539l-46.069-30.713H256v-16H144v69.333zm16-48.915 73.372 48.913H160v-48.913zM112 85.331H0l80 53.334H57.377L0 100.413v7.539l46.069 30.712H0v16h112V85.331zm-16 48.915L22.628 85.333H96v48.913z"/></g><g fill="#D80027"><path d="M144 85.331h-32v69.334H0v32h112v69.333h32v-69.333h112v-32H144z"/><path d="M80 138.665 0 85.331v15.082l57.377 38.252zM176 138.665h22.623L256 100.413V85.331zM57.377 202.665 0 240.917v15.081l80-53.333zM176 202.665l80 53.333v-15.081l-57.377-38.252z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CL.svg b/ccflags/svg/CL.svg
new file mode 100644 (file)
index 0000000..cd2f03a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#FFF" d="M196 0h317v171H196z"/><path fill="#0037A1" d="M0 0h196v171H0z"/><path fill="#FFF" d="M98 24.5 113.1 71H162l-39.6 28.7 15.2 46.5L98 117.5l-39.6 28.7 15.2-46.5L34 71h48.9z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CM.svg b/ccflags/svg/CM.svg
new file mode 100644 (file)
index 0000000..f564968
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#ce1126" d="M0 0h513v342H0z"/><path fill="#007a5e" d="M0 0h171v342H0z"/><g fill="#fcd116"><path d="M342 0h171v342H342zM256 102.2l17.2 53H329L283.9 188l17.2 53-45.1-32.7-45.1 32.7 17.2-53-45.1-32.8h55.8z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CN.svg b/ccflags/svg/CN.svg
new file mode 100644 (file)
index 0000000..64629b2
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><g fill="#FFDA44"><path d="m226.8 239.2-9.7-15.6-17.9 4.4 11.9-14.1-9.7-15.6 17.1 6.9 11.8-14.1-1.3 18.4 17.1 6.9-17.9 4.4zM290.6 82l-10.1 15.4 11.6 14.3-17.7-4.8-10.1 15.5-1-18.4-17.7-4.8 17.2-6.6-1-18.4 11.6 14.3zM236.2 25.4l-2 18.3 16.8 7.6-18 3.8-2 18.3-9.2-16-17.9 3.8 12.3-13.7-9.2-15.9 16.8 7.5zM292.8 161.8l-14.9 10.9 5.8 17.5-14.9-10.8-14.9 11 5.6-17.6-14.9-10.7 18.4-.1 5.6-17.6 5.8 17.5zM115 46.3l17.3 53.5h56.2l-45.4 32.9 17.3 53.5-45.4-33-45.5 33 17.4-53.5-45.5-32.9h56.3z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CO.svg b/ccflags/svg/CO.svg
new file mode 100644 (file)
index 0000000..dc46df0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 256.5h513V342H0z"/><path fill="#0052B4" d="M0 171h513v85.5H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CR.svg b/ccflags/svg/CR.svg
new file mode 100644 (file)
index 0000000..57ce8cb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 114h513v114H0z"/><path fill="#0052B4" d="M0 285h513v57H0zM0 0h513v57H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CU.svg b/ccflags/svg/CU.svg
new file mode 100644 (file)
index 0000000..780e99c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FF9811" d="M0-40.8v422.9-211.4z"/><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#0052B4"><path d="M0 0h513v68.3H0zM0 136.5h513v68.3H0zM0 273.1h513v68.3H0z"/></g><path fill="#D80027" d="M256 170.7 0 342V0z"/><path fill="#FFF" d="m86.5 111.4 12.7 39.2h41.3l-33.4 24.2 12.8 39.3-33.4-24.2-33.4 24.2 12.8-39.3-33.4-24.2h41.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CV.svg b/ccflags/svg/CV.svg
new file mode 100644 (file)
index 0000000..a3e3ed4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#003893" d="M0 0h513v342H0z"/><path fill="#cf2027" d="M0 182.2h513v41.4H0z"/><path fill="#FFF" d="M0 140.8h513v41.4H0zM0 223.6h513V265H0z"/><g fill="#f7d116" stroke="#000"><path d="m150.4 70 6.9 21.1h22.2l-18 13.1 6.9 21.1-18-13.1-17.9 13.1 6.8-21.1-17.9-13.1h22.2zM150.4 279.7l6.9 21.1h22.2l-18 13 6.9 21.2-18-13.1-17.9 13.1 6.8-21.2-17.9-13h22.2zM52.8 208.8l6.9 21.1h22.2l-18 13 6.9 21.2-18-13.1-17.9 13.1 6.8-21.2-17.9-13H46zM90.1 91l6.9 21.1h22.2l-18 13 6.9 21.2-18-13.1-17.9 13.1 6.8-21.2-18-13h22.3zM23.8 162H46l6.8-21.1 6.9 21.1h22.2l-18 13.1 6.9 21.1-18-13-17.9 13 6.8-21.1zM72.2 310.9l6.8-21.1-18-13h22.3l6.8-21.2 6.9 21.2h22.2l-18 13 6.9 21.1-18-13zM248 208.8l-6.9 21.1h-22.2l18 13-6.9 21.2 18-13.1 18 13.1-6.9-21.2 18-13h-22.2zM210.7 91l-6.8 21.1h-22.2l17.9 13-6.8 21.2 17.9-13.1 18 13.1-6.9-21.2 18-13h-22.2zM277.1 162h-22.2l-6.9-21.1-6.9 21.1h-22.2l18 13.1-6.9 21.1 18-13 18 13-6.9-21.1zM228.7 310.9l-6.9-21.1 18-13h-22.2l-6.9-21.2-6.8 21.2h-22.2l17.9 13-6.8 21.1 17.9-13z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CW.svg b/ccflags/svg/CW.svg
new file mode 100644 (file)
index 0000000..6fdf223
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#002b7f" d="M0 0h513v342H0z"/><path fill="#f9e814" d="M0 233.5h513v51H0z"/><g fill="#FFF"><path d="m168.7 86.5 12.9 39.8h41.8l-33.8 24.5 12.9 39.7-33.8-24.5-33.8 24.5 12.9-39.7-33.8-24.5h41.8zM85.4 32.5l7.8 23.9h25L97.9 71.1l7.8 23.8-20.3-14.7-20.3 14.7 7.8-23.8-20.3-14.7h25.1z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CX.svg b/ccflags/svg/CX.svg
new file mode 100644 (file)
index 0000000..197201d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0021ad" d="M0 0h513v342H0z"/><path fill="#1c8a42" d="M0 0h513v342"/><g fill="#FFF"><path d="m77.6 272 5.7 11.9 12.8-3-5.7 11.9 10.3 8.1-12.8 2.9V317l-10.3-8.3-10.2 8.3v-13.2l-12.8-2.9 10.3-8.1-5.8-11.9 12.9 3zM40.5 173.1l5.7 11.9 12.8-3-5.7 11.8 10.3 8.2-12.9 2.9.1 13.2-10.3-8.3-10.3 8.3.1-13.2-12.9-2.9 10.4-8.2L22 182l12.8 3zM77.6 92.2l5.7 11.8 12.8-2.9-5.7 11.8 10.3 8.2-12.8 2.9v13.1l-10.3-8.2-10.2 8.2V124l-12.8-2.9 10.3-8.2-5.8-11.8L72 104zM123.7 155.1l5.7 11.9 12.8-3-5.7 11.9 10.3 8.1-12.8 2.9v13.2l-10.3-8.2-10.2 8.2v-13.2l-12.8-2.9 10.3-8.1-5.7-11.9 12.8 3zM90.8 209.1l4.4 13.7h14.5L98 231.3l4.5 13.7-11.7-8.4-11.7 8.4 4.5-13.7-11.7-8.5h14.4z"/></g><circle fill="#ffc639" cx="267.1" cy="170.7" r="74.5"/><path fill="#1c8a42" d="M267.1 220.3h24.8s10.8-19 0-37.2l24.8-24.8-12.4-24.8h-12.4s-6.2 18.6-31 18.6-31-18.6-31-18.6h-12.4l12.4 24.8-12.4 24.8 12.4 12.4s12.4-24.8 37.2-12.4c0 0 10.5 15.5 0 37.2z"/><path fill="#ffc639" d="M464.4 92.2c.6-2.9-.2-17.6-.2-20.7 0-21.3-13.9-39.4-33.2-45.7 5.9 12 9.2 25.4 9.2 39.7 0 4.8-.4 9.5-1.1 14.1-2.9-4.7-6.6-8.9-11.2-12.6-17.1-13.6-40.6-14-57.9-2.5 13.4 2.9 26.3 8.9 37.7 18 9 7.1 16.2 16.8 21.7 26.1 0 0-17.8 10.9-31 15.1s-42.3 7.9-42.3 7.9c72 12 132-36 132-36-6.5-13.4-15.8-4-23.7-3.4z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CY.svg b/ccflags/svg/CY.svg
new file mode 100644 (file)
index 0000000..3998689
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#DB7D00" d="M141.7 154.7s.2 67.1 74.7 65.3l4.5 13.9h8.9s-7.4-41.1 60.1-41.5c0 0 0-27.6 27.6-27.6H359s-66-51.8 58.9-118l1.8-13.1s-129.9 71-198.9 57.2c0 0 10.7 42.5-10.8 42.5-10.8 0-9.7-8.1-32.3-8.1-18.7 0-17.3 19.7-26.3 19.5-8.9-.2-18.8-12.3-19.6-10.2-.7 2.1 9.9 20.1 9.9 20.1z"/><g fill="#006651"><path d="M237.2 308.1c6.9-5 13-6.6 22.4-8.3s19.4-4.4 24.6-5.8-17.7 6.6-23.5 8.3c-5.8 1.6-23.5 5.8-23.5 5.8zM275.1 293.4c-1.9-11.9 2.8-24.3 13.5-29.3 2.5 8.6-5.2 23.2-13.5 29.3zM293.3 287.2c-5.8-9.8 4-22.6 11.1-28.8 3.3 6-2.5 23.7-11.1 28.8zM310.2 279.6c-6.2-8.4 1.1-23.2 8.8-29 3.1 8.2.1 23.2-8.8 29zM327.1 269c-5.6-8-1.7-20.4 6.3-28.4 5.8 6.6.9 21-6.3 28.4zM340.6 258.3c-4.7-7.5 1.1-25.4 8.6-30.4 3.3 6.6.8 25.4-8.6 30.4zM351.4 255.5c-1.4-10.8 17.4-22.7 25.2-22.4-.9 8.9-8.9 18.6-25.2 22.4zM340.9 267.7c8.8-9.1 26-9.1 32.1-7.2-1.7 5.3-21.9 16.9-32.1 7.2z"/><path d="M328.7 276.8c12.4-3.3 20.5-6.1 27.9 1.7-5.2 6.6-25.4 4.7-27.9-1.7zM311 284.8c11.9-6.4 26.3 3 28.5 8.6-13.3 5.5-28.7-7.2-28.5-8.6zM294.7 294c10.8-4.1 23.2 1.4 28.2 7.5-5.8 2.7-21 5.7-28.2-7.5zM279.8 298.7c12.4-1.4 24.4 8 27 13.4-15.9 1.5-22-3.2-27-13.4zM275.8 308.1c-6.9-5-13-6.6-22.4-8.3-9.4-1.7-19.4-4.4-24.6-5.8-5.3-1.4 17.7 6.6 23.5 8.3 5.8 1.6 23.5 5.8 23.5 5.8zM237.9 293.4c1.9-11.9-2.8-24.3-13.5-29.3-2.5 8.6 5.2 23.2 13.5 29.3zM219.7 287.2c5.8-9.8-4-22.6-11.1-28.8-3.3 6 2.5 23.7 11.1 28.8zM202.8 279.6c6.2-8.4-1.1-23.2-8.8-29-3.1 8.2-.1 23.2 8.8 29zM185.9 269c5.6-8 1.7-20.4-6.3-28.4-5.8 6.6-.9 21 6.3 28.4zM172.4 258.3c4.7-7.5-1.1-25.4-8.6-30.4-3.3 6.6-.8 25.4 8.6 30.4zM161.6 255.5c1.4-10.8-17.4-22.7-25.2-22.4.9 8.9 8.9 18.6 25.2 22.4zM172.1 267.7c-8.8-9.1-26-9.1-32.1-7.2 1.7 5.3 21.9 16.9 32.1 7.2z"/><path d="M184.3 276.8c-12.4-3.3-20.5-6.1-27.9 1.7 5.2 6.6 25.4 4.7 27.9-1.7zM202 284.8c-11.9-6.4-26.3 3-28.5 8.6 13.3 5.5 28.7-7.2 28.5-8.6zM218.3 294c-10.8-4.1-23.2 1.4-28.2 7.5 5.8 2.7 21 5.7 28.2-7.5zM233.2 298.7c-12.4-1.4-24.4 8-27 13.4 15.9 1.5 22-3.2 27-13.4z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/CZ.svg b/ccflags/svg/CZ.svg
new file mode 100644 (file)
index 0000000..c6ae614
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#11457e" d="M0 0h513v342H0z"/><path fill="#d7141a" d="M513 171v171H0l256.5-171z"/><path fill="#FFF" d="M513 0v171H256.5L0 0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DE.svg b/ccflags/svg/DE.svg
new file mode 100644 (file)
index 0000000..295d13e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path d="M0 0h513v114H0z"/><path fill="#FFDA44" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DJ.svg b/ccflags/svg/DJ.svg
new file mode 100644 (file)
index 0000000..e79b3bd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#12ad2b" d="M0 0h513v342H0z"/><path fill="#6ab2e7" d="M513 0v166.7L0 170.8V0z"/><path fill="#FFF" d="M256 170.7 0 342V0z"/><path fill="#d7141a" d="m89.8 92.5 17 52.4H162l-44.6 32.5 17 52.4-44.6-32.4-44.6 32.4 17-52.4-44.6-32.5h55.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DK.svg b/ccflags/svg/DK.svg
new file mode 100644 (file)
index 0000000..1fecf56
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#c60c30" d="M0 0h513v342H0z"/><path fill="#FFF" d="M190 0h-60v140H0v60h130v142h60V200h323v-60H190z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DM.svg b/ccflags/svg/DM.svg
new file mode 100644 (file)
index 0000000..6b8da64
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#496E2D" d="M0 0h513v342H0z"/><path d="M0 110.7v120h513v-120z"/><path fill="#FFDA44" d="M0 110.7h513v40H0z"/><path fill="#FFF" d="M0 190.7h513v40H0z"/><path d="M196 0h120v342H196z"/><path fill="#FFDA44" d="M196 0h40v342h-40z"/><path fill="#FFF" d="M274.7 0h40v342h-40z"/><circle fill="#D80027" cx="256" cy="170.7" r="123.1"/><g fill="#496E2D"><path d="m256 58.6 4.6 14.2h15l-12.1 8.9 4.6 14.2-12.1-8.8-12.1 8.8 4.6-14.2-12.1-8.9h15zM190.1 80l12.2 8.8 12.1-8.8-4.6 14.3 12.1 8.8h-15l-4.6 14.2-4.7-14.2h-15l12.1-8.8zM149.4 136h15l4.6-14.2 4.7 14.2h15l-12.2 8.8 4.7 14.3-12.2-8.8-12.1 8.8 4.6-14.3zM149.4 205.3l12.1-8.8-4.6-14.3L169 191l12.2-8.8-4.7 14.3 12.2 8.8h-15l-4.7 14.3-4.6-14.3zM190.1 261.4l4.6-14.3-12.1-8.8h15l4.7-14.3 4.6 14.3h15l-12.1 8.8 4.6 14.3-12.1-8.9zM256 282.8l-4.6-14.3h-15l12.1-8.8-4.6-14.3 12.1 8.8 12.1-8.8-4.6 14.3 12.1 8.8h-15zM321.9 261.4l-12.2-8.9-12.1 8.9 4.6-14.3-12.1-8.8h15l4.6-14.3 4.7 14.3h15l-12.1 8.8zM362.6 205.3h-15l-4.6 14.3-4.7-14.3h-15l12.2-8.8-4.7-14.3L343 191l12.1-8.8-4.6 14.3zM362.6 136l-12.1 8.8 4.6 14.3-12.1-8.8-12.2 8.8 4.7-14.3-12.2-8.8h15l4.7-14.2 4.6 14.2zM321.9 80l-4.6 14.3 12.1 8.8h-15l-4.7 14.2-4.6-14.2h-15l12.1-8.8-4.6-14.3 12.1 8.8z"/></g><path fill="#496E2D" d="M279.3 168.7c-11-21.1-14.5-25.1-14.5-25.1s.4-9.7.4-15.6c0-8.8-7.4-15.8-16.5-15.8-8.6 0-15.7 2.9-16.5 11-4.2.9-8.6 4.1-8.6 10.7 0 4.8 1 7.3 5.2 9.3 2.1-4.6 4.3-4.8 9.3-6.4.8.6 1.7 3 2.6 3.4l.3 1s-13.3 6.6-13.3 30.9c0 29.5 22 45.4 22 45.4l-1.8.3-1.9 7.1h22v-7.2l11 17.5c.3-.3 10.2-47.6.3-66.5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DO.svg b/ccflags/svg/DO.svg
new file mode 100644 (file)
index 0000000..4fa3817
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 215.2h211.5v126.1H0z"/><path fill="#0052B4" d="M0 0h211.5v126.2H0z"/><path fill="#D80027" d="M300.5 0H512v126.2H300.5z"/><path fill="#0052B4" d="M300.5 215.2H512v126.1H300.5z"/><g stroke="#FFF" stroke-width="5" stroke-miterlimit="10"><path fill="#0052B4" d="M256 130h-49.9v49.4s19.5 6 49.9 6V130z"/><path fill="#D80027" d="M206.1 179.4v6c0 27.5 22.3 49.9 49.9 49.9v-49.9c-30.4 0-49.9-6-49.9-6z"/><path fill="#0052B4" d="M256 235.3c27.5 0 49.9-22.3 49.9-49.9v-6s-19.5 6-49.9 6v49.9z"/><path fill="#D80027" d="M256 130v55.4c30.4 0 49.9-6 49.9-6V130H256z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/DZ.svg b/ccflags/svg/DZ.svg
new file mode 100644 (file)
index 0000000..fe8bb71
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#41662E" d="M0 0h513v342H0z"/><path fill="#FFF" d="M256.5 0H513v342H256.5z"/><g fill="#D80027"><path d="m341.5 105.3-29.4 40.4-47.5-15.4 29.4 40.4-29.4 40.4 47.5-15.4 29.4 40.4v-50l47.5-15.5-47.5-15.4z"/><path d="M309.9 276.7c-58.5 0-106-47.5-106-106s47.5-106 106-106c18.3 0 35.4 4.6 50.4 12.7-23.5-23-55.7-37.2-91.2-37.2-72 0-130.4 58.4-130.4 130.4S197.1 301 269.1 301c35.5 0 67.7-14.2 91.2-37.2-14.9 8.2-32.1 12.9-50.4 12.9z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EC.svg b/ccflags/svg/EC.svg
new file mode 100644 (file)
index 0000000..bb8e07f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#0052B4" d="M0 170.7h513V256H0z"/><path fill="#D80027" d="M0 256h513v85.3H0z"/><circle fill="#FFDA44" cx="256" cy="171" r="60"/><path fill="#4C1F00" d="M369.2 79.9s-27.2-13.8-33.9-16c-6.7-2.2-49.1-13.2-49.1-7 0 10.3-13.5 12-15.5 12s-2-5.3-14.8-5.3-13.7 4.8-15.8 4.8c-2.2 0-14.5-1-14.5-11.5 0-5.2-42.9 4-49.1 7-6.1 3.1-33.9 16-33.9 16s45.8 2.7 53.9 6.2 43.8 16.5 43.8 16.5l-2.8 13.3h37.8l-3.8-13.3s35.1-12.7 43.8-16.5 53.9-6.2 53.9-6.2z"/><path fill="#57BA17" d="M217.7 171.7c0 21.1 17.2 38.3 38.3 38.3 21.1 0 38.3-17.2 38.3-38.3v-11.5h-76.5v11.5z"/><path fill="#338AF3" d="M256 110.5c-21.1 0-38.3 17.2-38.3 38.3v11.5h76.5v-11.5c.1-21.1-17.1-38.3-38.2-38.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EE.svg b/ccflags/svg/EE.svg
new file mode 100644 (file)
index 0000000..28a9e16
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#111" d="M0 0h513v342H0z"/><path fill="#368FD8" d="M0 0h513v114H0z"/><path fill="#FFF" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EG.svg b/ccflags/svg/EG.svg
new file mode 100644 (file)
index 0000000..3aa0fee
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path d="M0 228h513v114H0z"/><path fill="#C09300" d="M220.3 204.4s0-58.4 4.5-64.7c3.1-4.3 16.8 5.2 22.7 4.5 0 0 4.2-7.5 4.5-12 .3-4.6-1.1-7.6-4.9-6.2 0 0-1.2-2.1.5-3.3 1.6-1.2 5.6.1 5.6.1s-.5-1 1.6-.9c2.9.2 7.2 1.4 7.4 5.6.2 3.1.3 7.7.4 8.7.7 6.8 2.7 8.7 2.7 8.7s18.4-9.2 22-5.2c3.3 3.8 4.5 64.7 4.5 64.7l-18.1-16.8 12.1 29.5s-14.4 2.4-28.9 2.4c-14.5 0-31.1-4.2-31.1-4.2l13.8-28.2-19.3 17.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EH.svg b/ccflags/svg/EH.svg
new file mode 100644 (file)
index 0000000..c2e0c07
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path d="M0 0h513v114H0z"/><path fill="#428823" d="M0 228h513v114H0z"/><g fill="#D80027"><path d="M256 171 0 342V0zM309.1 171c0-22.9 13.1-42.1 34.6-46.8-3.3-.7-6.7-1.1-10.3-1.1-26.4 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9c3.5 0 7-.4 10.3-1.1-21.5-5.1-34.6-24.2-34.6-46.8z"/><path d="m365 129.2 10.3 31.7h33.3l-27 19.6 10.3 31.7-26.9-19.6-27 19.6 10.3-31.7-27-19.6h33.4z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EN.svg b/ccflags/svg/EN.svg
new file mode 100644 (file)
index 0000000..b2989e6
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 513 342"
+   version="1.1"
+   id="svg2"
+   sodipodi:docname="EN.svg"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="namedview2"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:zoom="1.5360624"
+     inkscape:cx="256.17449"
+     inkscape:cy="171.21701"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     fill="#FFF"
+     d="M0 0h513v342H0z"
+     id="path1" />
+  <path
+     fill="#2e52b2"
+     d="M 513,129.3 V 212 H 293.5401 v 130 h -82.7 V 212 H 0 V 129.3 H 210.8401 V 0 h 82.7 v 129.3 z"
+     id="path2"
+     sodipodi:nodetypes="ccccccccccccc"
+     style="fill:#c83737" />
+</svg>
diff --git a/ccflags/svg/ER.svg b/ccflags/svg/ER.svg
new file mode 100644 (file)
index 0000000..b361deb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#338AF3" d="M0 0h513v342H0z"/><path fill="#56AF35" d="M0 0h513v171H0z"/><path fill="#D80027" d="m0 342 513-171L0 0v342z"/><g fill="#ffc945"><path d="M134.7 231.5c33.6 0 60.8-27.2 60.8-60.8s-27.2-60.8-60.8-60.8-60.8 27.2-60.8 60.8 27.2 60.8 60.8 60.8zm0 24.3c-47 0-85.2-38.1-85.2-85.2s38.1-85.2 85.2-85.2 85.2 38.1 85.2 85.2-38.2 85.2-85.2 85.2z"/><circle cx="119.5" cy="148.3" r="17.5"/><circle cx="148.9" cy="158.5" r="17.5"/><circle cx="134.7" cy="135.2" r="17.5"/><circle cx="119.5" cy="172.7" r="17.5"/><circle cx="149.9" cy="182.8" r="17.5"/><circle cx="122.5" cy="198" r="17.5"/><circle cx="145.9" cy="205.2" r="17.5"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ES.svg b/ccflags/svg/ES.svg
new file mode 100644 (file)
index 0000000..e143324
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15"><path fill="#FFF" d="M0 0h22.5v15H0V0z"/><path fill="#D03433" d="M0 0h22.5v4H0V0zm0 11h22.5v4H0v-4z"/><path fill="#FBCA46" d="M0 4h22.5v7H0V4z"/><path fill="#FFF" d="M7.8 7h1v.5h-1V7z"/><path fill="#A41517" d="M7.2 8.5c0 .3.3.5.6.5s.6-.2.6-.5L8.5 7H7.1l.1 1.5zM6.6 7c0-.3.2-.5.4-.5h1.5c.3 0 .5.2.5.4V7l-.1 1.5c-.1.6-.5 1-1.1 1-.6 0-1-.4-1.1-1L6.6 7z"/><path fill="#A41517" d="M6.8 7.5h2V8h-.5l-.5 1-.5-1h-.5v-.5zM5.3 6h1v3.5h-1V6zm4 0h1v3.5h-1V6zm-2.5-.5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v.2c0 .2-.1.3-.3.3H7c-.1 0-.2-.1-.2-.2v-.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ET.svg b/ccflags/svg/ET.svg
new file mode 100644 (file)
index 0000000..a4c6e32
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15"><path fill="#20AA46" d="M0 0h22.5v5H0V0z"/><path fill="#E92F3B" d="M0 10h22.5v5H0v-5z"/><path fill="#FADF50" d="M0 5h22.5v5H0V5z"/><circle fill="#205CCA" cx="11.3" cy="7.5" r="5.2"/><g stroke="#FFDB3D" fill="none"><g stroke-width=".5"><path d="m11.3 8.8-2.1 1.5.8-2.4-2-1.5h2.5l.8-2.3.8 2.3h2.6l-2.1 1.5.8 2.4-2.1-1.5zM10.3 6.4h1.9M9.9 7.8l1.3 1M12 6.2l.7 1.8M10 7.9l.6-1.8M11 9l1.6-1.1"/></g><g stroke-width=".25"><path d="m8.7 3.9 1.1 1.6M13.8 3.8l-1 1.6M11.3 10.1V12M8.9 8.3 7.1 9M15.5 9l-1.8-.7"/></g></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/EU.svg b/ccflags/svg/EU.svg
new file mode 100644 (file)
index 0000000..a359b05
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 810 540"><path fill="#039" d="M0 0h810v540H0z"/><path fill="#FC0" d="m404.951 59.865 6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zm-90 24 6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zm-66 66 6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zm-24 89.999 6.735 20.719h21.894l-17.633 12.813 6.638 20.74-17.634-12.813-17.634 12.813 6.736-20.731-17.633-12.811h21.796zm24 90.001 6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zm66 66 6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zm180-312 6.735 20.718h21.894l-17.633 12.812 6.637 20.74-17.633-12.812-17.635 12.812 6.737-20.729-17.633-12.812h21.795zm66 66 6.735 20.718h21.894l-17.633 12.812 6.637 20.74-17.633-12.812-17.635 12.812 6.737-20.729-17.633-12.812h21.795zm24 90 6.735 20.718h21.894l-17.633 12.813 6.638 20.74-17.634-12.813-17.634 12.813 6.736-20.731-17.633-12.811h21.796zm-24 90 6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zm-156 90 6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zm90-24.001 6.735 20.719h21.894l-17.633 12.812 6.639 20.74-17.635-12.812-17.633 12.812 6.735-20.73-17.633-12.811h21.797z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FI.svg b/ccflags/svg/FI.svg
new file mode 100644 (file)
index 0000000..285363e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#2E52B2" d="M513 129.3V212H203.7v130H121V212H0v-82.7h121V0h82.7v129.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FJ.svg b/ccflags/svg/FJ.svg
new file mode 100644 (file)
index 0000000..f59c63d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#62B5E5" d="M0 0h513v342H0z"/><path fill="#F3F3F3" d="M307.1 127.1v92c0 61.6 80.5 80.5 80.5 80.5s80.4-19 80.4-80.6v-92l-80.5-23-80.4 23.1z"/><path fill="#D80027" d="M468 132.8V98.3H307.1v34.5h69v69h-69v23h69V296c6.9 2.5 11.5 3.5 11.5 3.5s4.6-1.1 11.5-3.5v-71.2h69v-23h-69v-69H468z"/><g fill="#FFF"><path d="M0 0h256.5v170.6H0V0z"/><path d="m155.9 115 100.6 55.6v-15.8L184.6 115h-28.7zM100.2 55.7 0 0v15.8l71.8 39.9h28.4z"/></g><g fill="#0052B4"><path d="m196.9 115 59.6 32.9V115h-59.6zm-41 0 100.6 55.6v-15.8L184.6 115h-28.7zm73.4 55.6-73.5-40.9v40.9h73.5zM45.2 115 0 140.1V115h45.2zm55 7.1v48.6H12.8l87.4-48.6zM59.1 55.7 0 22.8v32.8s59.1 0 59.1.1zm41.1 0L0 0v15.8l71.8 39.9h28.4zM26.7 0l73.5 40.8V0H26.7zM210.9 55.7l45.6-25.1v25.1h-45.6zm-55-7.2V0h87.4l-87.4 48.5z"/></g><g fill="#D80027"><path d="M144.3-.2h-32.1v69.5H0v32.1h112.2v69.5h32.1v-69.5h112.2V69.3H144.3V-.2z"/><path d="m155.9 115 100.6 55.6v-15.8L184.6 115h-28.7zM71.8 115 0 154.9v15.8L100.2 115H71.8zM100.2 55.7 0 0v15.8l71.8 39.9h28.4zM184.1 55.7l72.4-39.9V0L155.9 55.7h28.2z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FK.svg b/ccflags/svg/FK.svg
new file mode 100644 (file)
index 0000000..3c17685
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFF" d="M256 0v30.6l-45.2 25.1H256V115h-59.1l59.1 32.8v22.9h-26.7l-73.5-40.9v40.9h-55.6v-48.6l-87.5 48.6H0v-30.6L45.2 115H0V55.7h59.1L0 22.8V0h26.7l73.5 40.8V0h55.6v48.6L243.3 0z"/><path fill="#D80027" d="M144 0h-32v69.3H0v32h112v69.4h32v-69.4h112v-32H144z"/><path fill="#0052B4" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><path fill="#FFF" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><g fill="#D80027"><path d="M155.8 115 256 170.7v-15.8L184.2 115zM71.8 115 0 154.9v15.8L100.2 115z"/></g><path fill="#0052B4" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><path fill="#FFF" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><g fill="#D80027"><path d="M100.2 55.6 0 0v15.7l71.8 39.9zM184.2 55.6 256 15.7V0L155.8 55.6z"/></g><path fill="#1F8BDE" d="M312.2 194.2v-90c0-8.5 6.5-15.3 15-15.3h120.5c8.3 0 15 6.8 15 15.3v90c0 75.2-75.2 105.3-75.2 105.3s-75.3-30.1-75.3-105.3z"/><path fill="#FFF" d="M312.2 194.2v-90c0-8.5 6.5-15.3 15-15.3h120.5c8.3 0 15 6.8 15 15.3v90c0 75.2-75.2 105.3-75.2 105.3s-75.3-30.1-75.3-105.3zm79.6 86.3c7.9-4.5 15.9-10 23.2-16.7 20.5-18.5 32.6-41.4 32.6-69.7v-90c0-.3-120.4-.3-120.4-.3v90.3c0 28.3 12.1 51.2 32.6 69.7 8.3 7.5 17.6 13.9 27.6 19 1.4-.6 2.8-1.4 4.4-2.3z"/><path fill="#187536" d="M347.1 193.4c-2.6-7.9 1.7-14.3 10.1-14.3h60.5c8.2 0 12.8 6.3 10.1 14.3l-5.5 16.5c-2.6 7.9-8.9 9.2-15.8 4 0 0 2.6-4.8-19.1-4.8-21.7 0-19.1 4.8-19.1 4.8-6.1 5.7-13.1 4-15.8-4 .1.1-5.4-16.5-5.4-16.5z"/><path fill="#FFF" d="M357.4 179.1c8.1 1.6 17.8-15 30.1-15 13.1 0 21.8 17.1 30.1 15 7.4-1.8 15-22.2 15-30.1 0-16.6-20.2-30.1-45.1-30.1-24.9 0-45.1 13.5-45.1 30.1-.1 8.5 6.6 28.5 15 30.1zM356 270.7c6.2.4 12.5-1.8 17.2-6.5l9-9c2.9-2.9 7.5-2.9 10.4 0l9 9c4.7 4.7 11 6.9 17.1 6.5 5.3-.3 32.5-33.5 25.7-32.6-4.6.6-9.1 2.8-12.7 6.3l-.1.1-9 9c-2.9 2.9-7.5 2.9-10.4 0l-9-9c-8.7-8.8-22.9-8.8-31.7-.1l-.1.1-9 9c-2.9 2.9-7.5 2.9-10.4 0l-9-9c-3.5-3.5-7.8-5.6-12.3-6.3-6.7-1.1 20.1 32.2 25.3 32.5zM322.1 210c2.9-2.9 7.5-2.9 10.4 0l9 9c8.8 8.7 22.9 8.7 31.7 0l9-9c2.9-2.9 7.5-2.9 10.4 0l9 9c8.8 8.7 22.9 8.7 31.7 0l9-9c2.9-2.9 7.5-2.9 10.4 0 0 0 5.5-14.8 2.5-15.9-7.9-2.9-17.2-1.2-23.5 5.2l-.1.1-9 9c-2.9 2.9-7.5 2.9-10.4 0l-9-9c-8.7-8.8-22.9-8.8-31.7-.1l-.1.1-9 9c-2.9 2.9-7.5 2.9-10.4 0l-9-9c-6.2-6.2-15.1-8-22.8-5.5-3.1 1.1 1.9 16.1 1.9 16.1z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FM.svg b/ccflags/svg/FM.svg
new file mode 100644 (file)
index 0000000..36aec4c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#338AF3" d="M0 0h513v342H0z"/><g fill="#FFF"><path d="m256 37.9 10.1 31.2H299l-26.6 19.3 10.2 31.2-26.6-19.3-26.6 19.3 10.2-31.2L213 69.1h32.9zM123.2 170.7l31.2-10.2v-32.8l19.3 26.6 31.2-10.2-19.3 26.6 19.3 26.5-31.2-10.1-19.3 26.5v-32.8zM256 303.5l-10.1-31.2H213l26.6-19.3-10.2-31.3L256 241l26.6-19.3-10.2 31.3 26.6 19.3h-32.9zM388.8 170.7l-31.2 10.1v32.8l-19.3-26.5-31.2 10.1 19.3-26.5-19.3-26.6 31.2 10.2 19.3-26.6v32.8z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FO.svg b/ccflags/svg/FO.svg
new file mode 100644 (file)
index 0000000..524e87b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#0F61A5" d="M513 214.5H206.2V342H118.4V214.5H0v-87.7h118.4V0H206.2v126.8H513V192z"/><path fill="#E50E3D" d="M513 149.3V192H183.7v150H141V192H0v-42.7h141V0h42.7v149.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/FR.svg b/ccflags/svg/FR.svg
new file mode 100644 (file)
index 0000000..ec311d7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#00318A" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GA.svg b/ccflags/svg/GA.svg
new file mode 100644 (file)
index 0000000..7291224
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#6DA544" d="M0 0h513v114H0z"/><path fill="#0052B4" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GB.svg b/ccflags/svg/GB.svg
new file mode 100644 (file)
index 0000000..91f11d8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><g fill="#FFF"><path d="M0 0h513v341.3H0V0z"/><path d="M311.7 230 513 341.3v-31.5L369.3 230h-57.6zM200.3 111.3 0 0v31.5l143.7 79.8h56.6z"/></g><g fill="#0052B4"><path d="M393.8 230 513 295.7V230H393.8zm-82.1 0L513 341.3v-31.5L369.3 230h-57.6zm146.9 111.3-147-81.7v81.7h147zM90.3 230 0 280.2V230h90.3zm110 14.2v97.2H25.5l174.8-97.2zM118.2 111.3 0 45.6v65.7h118.2zm82.1 0L0 0v31.5l143.7 79.8h56.6zM53.4 0l147 81.7V0h-147zM421.7 111.3 513 61.1v50.2h-91.3zm-110-14.2V0h174.9L311.7 97.1z"/></g><g fill="#D80027"><path d="M288 0h-64v138.7H0v64h224v138.7h64V202.7h224v-64H288V0z"/><path d="M311.7 230 513 341.3v-31.5L369.3 230h-57.6zM143.7 230 0 309.9v31.5L200.3 230h-56.6zM200.3 111.3 0 0v31.5l143.7 79.8h56.6zM368.3 111.3 513 31.5V0L311.7 111.3h56.6z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GD.svg b/ccflags/svg/GD.svg
new file mode 100644 (file)
index 0000000..e257d21
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#c60a0a" d="M0 0h513v342H0z"/><path fill="#3E8446" d="m256.5 170.7-212 126.1V44.5z"/><g fill="#FFDA44"><path d="m256.5 170.7 211 126.1h-423zM467.5 44.5l-211 126.2-212-126.2z"/></g><path fill="#3E8446" d="M467.5 44.5v252.3l-211-126.1z"/><g fill="#FFDA44"><path d="m256.5 10.4 2.8 10.2H270l-8.6 6.3 3.3 10.2-8.2-6.3-9.2 6.3 3.3-10.2-8.6-6.3h10.7zM170.1 10.4l3.3 10.2h10.7l-8.6 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.2-8.6-6.3h10.7zM341.9 10.4l3.3 10.2H356l-8.7 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.2-8.6-6.3h10.7zM256.5 304.2l2.8 10.2H270l-8.6 6.3 3.3 10.2-8.2-6.3-9.2 6.3 3.3-10.2-8.6-6.3h10.7zM170.1 304.2l3.3 10.2h10.7l-8.6 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.2-8.6-6.3h10.7zM341.9 304.2l3.3 10.2H356l-8.7 6.3 3.3 10.2-8.7-6.3-8.7 6.3 3.3-10.2-8.6-6.3h10.7z"/></g><circle fill="#c60a0a" cx="244.5" cy="170.7" r="76.2"/><path fill="#FFDA44" d="m244.5 110.1 13.6 41.8h44l-35.6 25.8 13.6 41.8-35.6-25.8-35.5 25.8 13.6-41.8-35.6-25.8h44zM107.7 167.8c4.4 6.9 2.3 16.1-4.6 20.5s-16.1 2.3-20.5-4.6c-7.9-12.5-3.3-33-3.3-33s20.4 4.6 28.4 17.1z"/><circle fill="#A2001D" cx="99.1" cy="182.1" r="7.4"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GE.svg b/ccflags/svg/GE.svg
new file mode 100644 (file)
index 0000000..b418200
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15"><path fill="#FFF" d="M.8 0h21v15H.8V0z"/><path fill="#eb000e" d="M9.8 6H0v3h9.8v6h3V9h9.8V6h-9.8V0h-3v6z"/><path fill="#eb000e" d="m17.3 2.7-.2-1.2h1l-.2 1.2 1.2-.2v1l-1.2-.2.2 1.2h-1l.2-1.2-1.2.2v-1l1.2.2zm-12.7 0-.2-1.2h1l-.2 1.2 1.2-.2v1l-1.2-.2.2 1.2h-1l.2-1.2-1.2.2v-1l1.2.2zm0 9-.2-1.2h1l-.2 1.2 1.2-.2v1l-1.2-.2.2 1.2h-1l.2-1.2-1.2.2v-1l1.2.2zm12.7 0-.2-1.2h1l-.2 1.2 1.2-.2v1l-1.2-.2.2 1.2h-1l.2-1.2-1.2.2v-1l1.2.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GF.svg b/ccflags/svg/GF.svg
new file mode 100644 (file)
index 0000000..a163357
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 60"><path fill="#FDEB01" d="m0 0 90 60H0z"/><path fill="#58A846" d="M90 0v60L0 0z"/><path fill="#ED3D24" d="m50.7 33.3 9.3-6.7H48.5L45 15.7l-3.5 10.9H30l9.3 6.7-3.6 11 9.3-6.7 9.3 6.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GG.svg b/ccflags/svg/GG.svg
new file mode 100644 (file)
index 0000000..48f90b5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M308 0H204v118.7H0v104h204V342h104V222.7h205v-104H308z"/><path fill="#FFDA44" d="m368.6 188 26 17.3V136l-26 17.3h-95.3V58.1l17.3-26h-69.2l17.3 26v95.2h-95.3l-26-17.3v69.3l26-17.3h95.3v95.2l-17.3 26h69.2l-17.3-26V188z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GH.svg b/ccflags/svg/GH.svg
new file mode 100644 (file)
index 0000000..f59c0a4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#496E2D" d="M0 228h513v114H0z"/><path d="m255.9 113.8 14.1 43.4 40.4 3.2-37 26.9 19.5 40.3-37-26.9-37 26.9 14.1-43.5-36.9-26.9h45.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GI.svg b/ccflags/svg/GI.svg
new file mode 100644 (file)
index 0000000..da68f69
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 230h513v112H0z"/><path fill="#D80027" stroke="#000" stroke-miterlimit="10" d="M363.1 131.8V99.1H374V77.3h-21.9v10.9h-21.8V77.3h-21.8v21.8h10.9v32.7h-21.8V55.5h10.9V33.7h-21.8v10.9h-10.9V33.7H254v10.9h-10.9V33.7h-21.8v21.8h10.9v76.3h-21.8V99.1h10.9V77.3h-21.8v10.9h-21.8V77.3h-21.8v21.8h10.9v32.7H145V219h239.9v-87.2z"/><path fill="#FFDA44" stroke="#000" stroke-miterlimit="10" d="m264.9 235.5-24.2 18.2 19.1 14.3v31.3h-23.2v9h23v7.9h-23v9.3H270V268l19.1-14.3-24.2-18.2zm0 25.3-10.1-7.1 10.1-7.1 10.1 7.1-10.1 7.1z"/><path d="M239.6 209.7v-27.9s.1-22.3 25-22.3c24.8 0 25.7 22 25.7 22v28.2h-50.7zM170.5 209.7v-24.3s.1-18.7 19.6-18.7 20.2 18.4 20.2 18.4v24.5h-39.8z"/><path d="M169.1 209.7v-24.3s.1-18.7 19.6-18.7 20.2 18.4 20.2 18.4v24.5h-39.8zM320.9 209.7v-24.3s.1-18.7 19.6-18.7 20.2 18.4 20.2 18.4v24.5h-39.8zM329.3 132v-15.7s.1-12.1 11.3-12.1c11.3 0 11.7 11.9 11.7 11.9V132h-23zM250.5 132v-23.7s.1-18.3 14.3-18.3c14.2 0 14.7 18 14.7 18v24h-29zM177.5 132v-15.7s.1-12.1 11.3-12.1 11.7 11.9 11.7 11.9V132h-23z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GL.svg b/ccflags/svg/GL.svg
new file mode 100644 (file)
index 0000000..0cbd6ff
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#FFF" d="M513 0v171H0V0z"/><circle fill="#FFF" cx="185.8" cy="171.2" r="117.8"/><path fill="#D80027" d="M68 171c0-65.1 52.8-117.8 117.8-117.8 65.1 0 117.8 52.8 117.8 117.8"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GM.svg b/ccflags/svg/GM.svg
new file mode 100644 (file)
index 0000000..30e0c6a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#cf0d19" d="M0 0h513v100H0z"/><path fill="#0052B4" d="M0 121h513v100H0z"/><path fill="#1a7e25" d="M0 242h513v100H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GN.svg b/ccflags/svg/GN.svg
new file mode 100644 (file)
index 0000000..62427f4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h512v342H0z"/><path fill="#6DA544" d="M342 0h171v342H342z"/><path fill="#D80027" d="M0 0h171v342H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GP.svg b/ccflags/svg/GP.svg
new file mode 100644 (file)
index 0000000..ec311d7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#00318A" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GQ.svg b/ccflags/svg/GQ.svg
new file mode 100644 (file)
index 0000000..42f6b11
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#6DA544" d="M0 0h513v113.8H0z"/><path fill="#D80027" d="M0 227.6h513V342H0z"/><path fill="#0070C8" d="M126 171 0 342V0z"/><path fill="none" stroke="#000" stroke-miterlimit="10" d="M233.8 139.4v40.4c0 35.6 35.6 35.6 35.6 35.6s35.6 0 35.6-35.6v-40.4h-71.2z"/><path fill="#786145" d="M264.5 179.8h9.8l4 25.8h-17.8z"/><path fill="#6DA544" d="M287.2 162c0-9.8-8-14.8-17.8-14.8s-17.8 5-17.8 14.8c-4.9 0-8.9 4-8.9 8.9s4 8.9 8.9 8.9h35.6c4.9 0 8.9-4 8.9-8.9s-4-8.9-8.9-8.9z"/><g fill="#FFDA00" stroke="#000" stroke-miterlimit="10"><path d="m230.7 120 1.9 3.3h3.8l-1.9 3.3 1.9 3.2h-3.8l-1.9 3.3-1.9-3.3H225l1.9-3.2-1.9-3.3h3.8zM246 120l1.9 3.3h3.7l-1.9 3.3 1.9 3.2h-3.7l-1.9 3.3-1.9-3.3h-3.8l1.9-3.2-1.9-3.3h3.8zM261.3 120l1.9 3.3h3.7l-1.9 3.3 1.9 3.2h-3.7l-1.9 3.3-1.9-3.3h-3.8l1.9-3.2-1.9-3.3h3.8zM277.1 120l1.9 3.3h3.8l-1.9 3.3 1.9 3.2H279l-1.9 3.3-1.9-3.3h-3.7l1.8-3.2-1.8-3.3h3.7zM293.1 120l1.9 3.3h3.8l-1.9 3.3 1.9 3.2H295l-1.9 3.3-1.9-3.3h-3.7l1.8-3.2-1.8-3.3h3.7zM308.1 120l1.9 3.3h3.7l-1.9 3.3 1.9 3.2H310l-1.9 3.3-1.9-3.3h-3.8l1.9-3.2-1.9-3.3h3.8z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GR.svg b/ccflags/svg/GR.svg
new file mode 100644 (file)
index 0000000..0067170
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#0d5eaf"><path d="M0 0h513v38H0zM0 76h513v38H0zM0 152h513v38H0zM0 228h513v38H0zM0 304h513v38H0z"/><path d="M0 0h190v190H0z"/></g><g fill="#FFF"><path d="M0 76h190v38H0z"/><path d="M76 0h38v190H76z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GS.svg b/ccflags/svg/GS.svg
new file mode 100644 (file)
index 0000000..0706e7b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFF" d="M256 0v117.4h-46.1l46.1 30.7v22.6h-22.6L160 121.8v48.9H96v-48.9l-73.4 48.9H0v-22.6l46.1-30.7H0v-64h46.1L0 22.7V0h22.6L96 48.9V0h64v48.9L233.4 0z"/><path fill="#D80027" d="M144 0h-32v69.4H0v32h112v69.3h32v-69.3h112v-32H144z"/><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><path fill="#D80027" d="M0 170.7v-11l62.5-42.3h22.6L7.3 170.7zM7.3.1l77.8 53.2H62.5L0 11.1V.1zM256 .1v11l-62.5 42.3h-22.6L248.7.1zM248.7 170.7l-77.8-53.3h22.6l62.5 42.3v11z"/><ellipse fill="#FFF" cx="443.4" cy="233.6" rx="29" ry="43.5"/><ellipse fill="#FFCE00" cx="406.9" cy="317.7" rx="22" ry="9.3"/><ellipse fill="#FFCE00" cx="364" cy="317.7" rx="22" ry="9.3"/><path fill="#39B200" d="m342 190.1 43.4 86.9 43.5-86.9z"/><ellipse fill="#9B9B9B" cx="327.5" cy="233.6" rx="29" ry="43.5"/><path fill="#757575" d="m371 175.6-14.5 14.5h57.9l-14.5-14.5 14.5-43.5s-13-29-29-29-29 29-29 29l14.6 43.5z"/><circle fill="#C6B56F" cx="385.4" cy="67" r="29"/><circle fill="#A54A00" cx="386" cy="88.7" r="29"/><circle fill="#FFF" cx="443.4" cy="117.7" r="29"/><circle fill="#0049FF" cx="342.2" cy="146.7" r="29"/><circle fill="#0041F9" cx="429.8" cy="146.7" r="29"/><circle fill="#F7D71E" cx="386" cy="233.6" r="29"/><circle fill="#CEC851" cx="457.9" cy="190.1" r="29"/><circle fill="#FFF" cx="385.4" cy="289.5" r="29"/><path fill="#7C0B29" d="m371 135.7 14.5-3.5 14.5 3.5c0 7.5-14.5 11-14.5 11s-14.5-3.5-14.5-11z"/><circle fill="#FFF" cx="327.5" cy="117.4" r="29"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GT.svg b/ccflags/svg/GT.svg
new file mode 100644 (file)
index 0000000..20882e9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#338AF3"><path d="M0 0h171v342H0zM342 0h171v342H342z"/></g><circle fill="#DCC26D" cx="256" cy="155.8" r="25.5"/><path fill="#628A40" d="M194.2 155.9c0 22.1 11.8 42.5 30.8 53.5 5.9 3.4 13.5 1.4 16.9-4.5 3.4-5.9 1.4-13.5-4.5-16.9-11.5-6.6-18.5-18.9-18.5-32.1 0-6.8-5.5-12.4-12.4-12.4s-12.3 5.5-12.3 12.4zm95.1 52.1c17.8-11.4 28.6-31 28.5-52.1 0-6.8-5.5-12.4-12.4-12.4-6.8 0-12.4 5.5-12.4 12.4 0 12.7-6.5 24.5-17.1 31.3-5.8 3.6-7.7 11.2-4.1 17 3.6 5.8 11.2 7.7 17 4.1.2-.1.3-.2.5-.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GU.svg b/ccflags/svg/GU.svg
new file mode 100644 (file)
index 0000000..553d206
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#0052B4" d="M11.1 11.1h489.7v319.1H11.1z"/><path fill="#7DBEF1" d="M256 285.3s76.4-51.3 76.4-114.6S256 56 256 56s-76.4 51.3-76.4 114.6S256 285.3 256 285.3z"/><path fill="#1C8AE6" d="M179.8 180.7h152.6l-29.3 64.9h-95.2z"/><path fill="#FFF042" d="M192.3 205.9s40.5 38.2 51 38.2c12.4 0 12.6-18.4 25.5-25.5 20.2-11.1 51-12.7 51-12.7L297 248.7l-41 36.6-46.8-39.7-16.9-39.7z"/><path fill="#259C7B" d="m256 157.5-22.5 15.6 7.9-26.2-21.8-16.5 27.4-.5 9-25.9 9 25.9 27.4.5-21.8 16.6 7.9 26.2-22.5-15.7z"/><path fill="#8E5715" d="M249.7 144.6c-.9 9.2-1.5 18.4-1.7 27.6-.3 11.9.3 20.7 2 26 2.2 6.6 7.2 12.9 14.2 18.9 5.3 4.6 10.6 8.1 14.2 10.1 3.1 1.7 7 .6 8.7-2.4 1.7-3.1.6-7-2.4-8.7-4.3-2.5-8.4-5.4-12.2-8.7-5.4-4.6-9.1-9.2-10.4-13.3-1.1-3.4-1.6-11.3-1.4-21.7.2-8.9.8-17.8 1.7-26.6.4-3.5-2.2-6.6-5.7-7-3.6-.3-6.7 2.3-7 5.8z"/><path fill="#FFF" d="m217.8 170.7 25.5 38.2h-25.5v-38.2z"/><path fill="none" stroke="#D80027" stroke-width="12" stroke-miterlimit="10" d="M256 285.3s76.4-51.3 76.4-114.6S256 56 256 56s-76.4 51.3-76.4 114.6S256 285.3 256 285.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GW.svg b/ccflags/svg/GW.svg
new file mode 100644 (file)
index 0000000..48d9a9c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#6DA544" d="M0 0h512v342H0z"/><path fill="#FFDA44" d="M0 0h512v171H0z"/><path fill="#D80027" d="M0 0h182v342H0z"/><path d="m98.3 109.8 15.1 46.5h48.9L122.8 185l15.1 46.5-39.6-28.7-39.5 28.7L73.9 185l-39.6-28.7h48.9z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/GY.svg b/ccflags/svg/GY.svg
new file mode 100644 (file)
index 0000000..f2d09f0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600"><path fill="#009E49" d="M0 0h900v600H0V0z"/><path fill="#FFF" d="m0 0 947 300L0 600V0z"/><path fill="#FFD00D" d="M0 26.1 870 300 0 573.9V26.1z"/><path fill="#2D2D2D" d="m0 0 450 300L0 600V0z"/><path fill="#D3132F" d="m0 35 397.5 265L0 565V35z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HK.svg b/ccflags/svg/HK.svg
new file mode 100644 (file)
index 0000000..284a722
--- /dev/null
@@ -0,0 +1 @@
+<svg viewBox="0 0.5 21 14" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M0 0h21v15H0z"/><path fill="#ee1c25" d="M0 0h21v15H0z"/><path d="M12 7.19c-.798-.5-1 .409-1 0 0-.828.895-1.5 2-1.5s2 .672 2 1.5c-.949 0-1.044.5-1.5.5-.56 0-.702 0-1.5-.5zM13.25 7a.25.25 0 1 0 0-.5.25.25 0 0 0 0 .5zm-1.81 1.962c.228-.913-.698-.824-.31-.95.788-.257 1.703.387 2.045 1.438.341 1.05-.021 2.11-.809 2.366-.293-.903-.798-.838-.939-1.272-.173-.533-.217-.668.012-1.582zm.566 1.13a.25.25 0 1 0 .476-.154.25.25 0 0 0-.476.154zM9.58 8.977c.94-.065.57-.919.81-.588.486.67.157 1.74-.737 2.389-.894.65-2.013.632-2.5-.038.768-.558.55-1.018.92-1.286.453-.33.568-.413 1.507-.477zm-.899.888a.25.25 0 1 0 .294.405.25.25 0 0 0-.294-.405zm.312-2.652c.351.874 1.049.258.809.588-.487.67-1.606.687-2.5.038-.894-.65-1.223-1.719-.736-2.39.767.559 1.138.21 1.507.478.453.33.568.413.92 1.286zm-1.124-.58a.25.25 0 1 0-.293.404.25.25 0 0 0 .293-.404zm2.619-.524c-.722.605.08 1.078-.309.951-.788-.256-1.15-1.315-.809-2.365.342-1.05 1.257-1.695 2.045-1.439-.293.903.153 1.147.012 1.581-.173.533-.217.668-.939 1.272zm.205-1.247a.25.25 0 1 0-.475-.155.25.25 0 0 0 .475.155z" fill="#FFF"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HM.svg b/ccflags/svg/HM.svg
new file mode 100644 (file)
index 0000000..a0e8ac2
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><g fill="#FFF"><path d="M223.4 170.7c.3-.3.5-.6.8-.9-.3.3-.5.6-.8.9zM189.2 212.6l11 22.9 24.7-5.7-11.1 22.8 19.9 15.8L209 274v25.4l-19.8-15.9-19.8 15.9.1-25.4-24.8-5.6 19.9-15.8-11.1-22.8 24.8 5.7zM387.1 241.1l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.6v12.2l-9.4-7.6-9.5 7.6.1-12.2-11.9-2.6 9.5-7.5-5.3-10.9 11.9 2.7zM338.5 125.1l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.7v12.1l-9.4-7.6-9.5 7.6v-12.1l-11.8-2.7 9.5-7.5-5.3-10.9 11.8 2.7zM387.1 58.9l5.2 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.7v12.1l-9.4-7.6-9.5 7.6.1-12.1-11.9-2.7 9.5-7.5-5.3-10.9 11.9 2.7zM429.5 108.6l5.3 10.9 11.8-2.7-5.3 10.9 9.5 7.5-11.8 2.6V150l-9.5-7.6-9.4 7.6v-12.2l-11.8-2.6 9.5-7.5-5.3-10.9 11.8 2.7zM399.2 166.5l4.1 12.7h13.3l-10.8 7.8 4.1 12.6-10.7-7.8-10.8 7.8 4.1-12.6-10.7-7.8h13.3z"/><path d="M256 0v30.6l-45.2 25.1H256V115h-59.1l59.1 32.8v22.9h-26.7l-73.5-40.9v40.9h-55.6v-48.6l-87.5 48.6H0v-30.6L45.2 115H0V55.7h59.1L0 22.8V0h26.7l73.5 40.8V0h55.6v48.6L243.3 0z"/></g><path fill="#D80027" d="M144 0h-32v69.3H0v32h112v69.4h32v-69.4h112v-32H144z"/><path fill="#0052B4" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><path fill="#FFF" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><g fill="#D80027"><path d="M155.8 115 256 170.7v-15.8L184.2 115zM71.8 115 0 154.9v15.8L100.2 115z"/></g><path fill="#0052B4" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><path fill="#FFF" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><g fill="#D80027"><path d="M100.2 55.6 0 0v15.7l71.8 39.9zM184.2 55.6 256 15.7V0L155.8 55.6z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HN.svg b/ccflags/svg/HN.svg
new file mode 100644 (file)
index 0000000..15ec213
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#338AF3"><path d="M0 0h513v114H0zM0 228h513v114H0zM203.5 117.9l6.7 16.6 17.6 1-14 10.9 4.7 17.7-15-9.9-15 9.9 4.7-17.7-14-10.9 17.6-1zM308.5 117.9l6.7 16.6 17.6 1-14 10.9 4.7 17.7-15-9.9-15 9.9 4.7-17.7-14-10.9 17.6-1zM256 147.6l6.7 16.6 17.6 1-14 10.9 4.7 17.7-15-9.9-15 9.9 4.7-17.7-14-10.9 17.6-1zM203.5 177.3l6.7 16.6 17.6 1-14 10.9 4.7 17.6-15-9.9-15 9.9 4.7-17.6-14-10.9 17.6-1zM308.5 177.3l6.7 16.6 17.6 1-14 10.9 4.7 17.6-15-9.9-15 9.9 4.7-17.6-14-10.9 17.6-1z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HR.svg b/ccflags/svg/HR.svg
new file mode 100644 (file)
index 0000000..c61e8c8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#0052B4" d="M0 228h513v114H0z"/><g fill="#338AF3"><path d="M309.3 113.2v-44l17.5-14.4 17.7 14.4v44zM203.7 113.2v-44l-17.3-14.4-17.9 14.4v44zM238.9 113.2v-44l17.6-14.4 17.6 14.4v44z"/></g><g fill="#0052B4"><path d="M309.3 113.2h-35.2v-44l17.5-14.4 17.7 14.4zM238.9 113.2h-35.2v-44l17.5-14.4 17.7 14.4z"/></g><path stroke="#D80027" fill="#FFF" d="M168.5 113.2v101.9c0 24.3 14.4 46.2 35.4 59.4 21.3 13.4 42.1 14.7 52.6 14.7s31.4-1.7 52.6-14.8c21-13 35.4-35.1 35.4-59.3V113.2h-176z"/><g fill="#D80027"><path d="M168.5 113.2h35.2v35.2h-35.2zM238.9 113.2h35.2v35.2h-35.2zM309.3 113.2h35.2v35.2h-35.2zM203.7 148.4h35.2v35.2h-35.2zM274.1 148.4h35.2v35.2h-35.2zM168.5 183.6h35.2v35.2h-35.2zM203.7 218.8h35.2V254h-35.2zM238.9 183.6h35.2v35.2h-35.2zM309.3 183.6h35.2v35.2h-35.2zM274.1 218.8h35.2V254h-35.2zM309.3 274.3c8.6-5.4 16.2-12.3 22-20.3h-22v20.3zM181.7 254c5.8 8 13.3 14.9 22 20.4V254h-22zM238.9 254v33.7c7.2 1.2 13.3 1.5 17.6 1.5 4.3 0 10.4-.3 17.6-1.6V254h-35.2z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HT.svg b/ccflags/svg/HT.svg
new file mode 100644 (file)
index 0000000..3120c71
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#A2001D" d="M0 0h513v172H0z"/><path fill="#0052B4" d="M0 172h513v172H0z"/><path fill="#FFF" d="m381.4 251.5-110.7-13.8-110.8 13.8V85.4h221.5z"/><circle fill="#0052B4" cx="270.7" cy="182.3" r="55.4"/><circle fill="#A2001D" cx="270.7" cy="182.3" r="27.7"/><path fill="#6DA544" d="M229.1 113.1h83.1l-41.5 41.5z"/><path fill="#FFDA44" d="M256.8 140.8h27.7v83h-27.7z"/><path fill="#6DA544" d="M314.9 215.5h-88.5l-66.5 36h221.5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/HU.svg b/ccflags/svg/HU.svg
new file mode 100644 (file)
index 0000000..8d92a84
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#6DA544" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IC.svg b/ccflags/svg/IC.svg
new file mode 100644 (file)
index 0000000..0370157
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 200"><path fill="#fc0" d="M0 0h300v200H0z"/><path fill="#0768a9" d="M0 0h200v200H0z"/><path fill="#fff" d="M0 0h100v200H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ID.svg b/ccflags/svg/ID.svg
new file mode 100644 (file)
index 0000000..2684a3d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#E00" d="M0 0h513v171H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IE.svg b/ccflags/svg/IE.svg
new file mode 100644 (file)
index 0000000..f3f99d9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#6DA544" d="M0 0h171v342H0z"/><path fill="#FF9811" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IL.svg b/ccflags/svg/IL.svg
new file mode 100644 (file)
index 0000000..da41218
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#2E52B2"><path d="M340.6 122.4h-56.1l-28-48.6-28 48.6h-56.1l28 48.6-28 48.6h56.1l28 48.6 28-48.6h56.1l-28-48.6 28-48.6zM293.2 171 276 204.2h-38.9L219.8 171l17.2-33.2h38.9l17.3 33.2zm-36.7-71.8 11.9 23.3h-23.9l12-23.3zm-58.3 38.6h23.9l-10.8 21-13.1-21zm0 66.4 13-22.1 11.9 22.1h-24.9zm58.3 37.5-11.9-22.1h23.9l-12 22.1zm59.4-37.5h-25l11.9-22.1 13.1 22.1zm-26.1-66.4h26.1l-13 22.1-13.1-22.1zM0 21.3h512V64H0zM0 277.3h512V320H0z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IM.svg b/ccflags/svg/IM.svg
new file mode 100644 (file)
index 0000000..26c2721
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#E52D42" d="M0 0h513v342H0z"/><path fill="#FFF" d="M393.3 68.2h-45.8l-33.8 80.2-34.4-22.9s-24.7-59.1-34.4-68.2c-9.7-9.7-18.7-.6-48.9 7.8-29.6 8.4-30.8 18.7-42.2 18.7-4.8 0-19.9-17.5-27.7-22.3-12.1-7.8-16.9-4.2-13.9 7.2 1.2 4.8 10.9 10.9 16.9 19.9 7.8 11.5 12.7 25.9 12.7 25.9s10.9-10.3 16.9-12.1c9-2.4 19.3 1.8 31.4 0 15.1-2.4 31.4-10.9 31.4-10.9l4.2 43.4s-54.3 50.7-49.5 70.6 56.1 44.6 68.2 62.7c12.1 17.5-7.2 24.1-7.2 32.6s-1.8 19.9 7.2 16.3c9-3.6 10.3-18.1 18.7-31.4 6-9 10.3-13.9 11.5-17.5 1.8-9-23.5-32-37.4-48.9-6.6-7.8-19.9-18.7-19.9-18.7l39.2-29.6s67.6 27.7 82.6 18.7c15.1-9 19.3-98.3 19.3-98.3l47-11.5-12.1-11.7z"/><path fill="#F8DD4E" d="M279.3 262.4c-6 0-11.5-4.8-11.5-11.5s4.8-11.5 11.5-11.5c6 0 11.5 4.8 11.5 11.5s-5.5 11.5-11.5 11.5zm45.8-182.8c-6 0-11.5-4.8-11.5-11.5s4.8-11.5 11.5-11.5c6 0 11.5 4.8 11.5 11.5s-5.5 11.5-11.5 11.5zm0 91.1c-6 0-11.5-4.8-11.5-11.5 0-6 4.8-11.5 11.5-11.5 6 0 11.5 4.8 11.5 11.5-.6 6.7-5.5 11.5-11.5 11.5zm-136.9 45.8c-6 0-11.5-4.8-11.5-11.5 0-6 4.8-11.5 11.5-11.5 6.6 0 11.5 4.8 11.5 11.5s-5.5 11.5-11.5 11.5zm45.2-136.9c-6 0-11.5-4.8-11.5-11.5s4.8-11.5 11.5-11.5c6 0 11.5 4.8 11.5 11.5s-4.8 11.5-11.5 11.5zm22.9 91.1c-6 0-11.5-10.3-11.5-22.9s4.8-22.9 11.5-22.9c6 0 11.5 10.3 11.5 22.9s-4.8 22.9-11.5 22.9zm-114-45.2c-6 0-11.5-4.8-11.5-11.5 0-6.6 4.8-11.5 11.5-11.5 6.6 0 11.5 4.8 11.5 11.5 0 6.6-4.8 11.5-11.5 11.5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IN.svg b/ccflags/svg/IN.svg
new file mode 100644 (file)
index 0000000..8e3537f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#F93" d="M0 0h513v114H0z"/><path fill="#fff" d="M0 114h513v114H0z"/><path fill="#138808" d="M0 228h513v114H0z"/><circle cx="256.5" cy="171" r="34.2" stroke="navy" stroke-width="4" fill="none"/><circle cx="256.5" cy="171" r="3.42" fill="navy"/><g stroke="navy" stroke-width="2"><path d="m265.3 138.159-17.6 65.682m17.6-65.682-17.6 65.682M273.5 141.555l-34 58.89M280.542 146.958l-48.084 48.084M285.945 154l-58.89 34M289.341 162.2l-65.682 17.6M290.5 171h-68M289.341 179.8l-65.682-17.6M285.945 188l-58.89-34M280.542 195.042l-48.084-48.084M273.5 200.445l-34-58.89M265.3 203.841l-17.6-65.682M256.5 205v-68M247.7 203.841l17.6-65.682M239.5 200.445l34-58.89M232.458 195.042l48.084-48.084M227.055 188l58.89-34M223.659 179.8l65.682-17.6M222.5 171h68M223.659 162.2l65.682 17.6M227.055 154l58.89 34M232.458 146.958l48.084 48.084M239.5 141.555l34 58.89M247.7 138.159l17.6 65.682"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IO.svg b/ccflags/svg/IO.svg
new file mode 100644 (file)
index 0000000..0f3ef14
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0-.3h513V342H0V-.3z"/><path fill="#0052B4" d="M462.9 198.1c-4 0-14-5-21-9-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 9-20 9s-14-5-20-9c-11-6-22-12-32.1-12-9 0-20 6-31.1 12-7 4-16 9-20 9s-13-5-20-9c-11-6-22-12-31.1-12-10 0-21 6-32.1 12-6 4-16 9-20 9s-13-5-20-9c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 9-21 9s-13-5-20-9c-10-6-20-12-30.1-12v22l19 10c11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-10 20-10s13 6 20 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-10 21-10s13 6 20 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-10 20-10s14 6 21 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-10 20-10s14 6 20 10c11 6 22 12 32.1 12s20-6 31.1-12l19-10v-22c-10 0-20 6-30.1 12-7 4-16 9-20 9zM0 31.7l19 10c11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-10 20-10s13 6 20 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-10 21-10s13 6 20 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-10 20-10s14 6 21 10c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-10 20-10s14 6 20 10c11 6 22 12 32.1 12s20-6 31.1-12l19-10v-22c-10 1-20 6-30.1 12-7 4-16 9-20 9s-14-5-21-9c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 9-20 9s-14-5-20-9c-11-6-22-12-32.1-12s-20 6-31.1 12c-7 4-16 9-20 9s-13-5-20-9c-11-6-22-12-31.1-12s-21 6-32.1 12c-6 4-16 9-20 9s-13-5-20-9c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 9-21 9s-13-5-20-9c-10-6-20-11-30.1-12v22zm462.9 55.2c-4 0-14-5-21-9-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 9-20 9s-14-5-20-9c-11-6-22-12-32.1-12-9 0-20 6-31.1 12-7 4-16 9-20 9s-13-5-20-9c-11-6-22-12-31.1-12-10 0-21 6-32.1 12-6 4-16 9-20 9s-13-5-20-9c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 9-21 9s-13-5-20-9c-10-6-20-12-30.1-12v22l19 9c11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-9 20-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-9 21-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 21 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 20 9c11 6 22 12 32.1 12s20-6 31.1-12l19-9v-22c-10 0-20 6-30.1 12-7 3.9-16 9-20 9zm50.1 34c-10 1-20 6-30.1 12-7 4-16 10-20 10s-14-6-21-10c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 10-20 10s-14-6-20-10c-11-6-22-12-32.1-12s-20 6-31.1 12c-7 4-16 10-20 10s-13-6-20-10c-11-6-22-12-31.1-12s-21 6-32.1 12c-6 4-16 10-20 10s-13-6-20-10c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 10-21 10s-13-6-20-10c-10-6-20-11-30.1-12v23c4 1 13 5 19 9 11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-9 20-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-9 21-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 21 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 20 9c11 6 22 12 32.1 12s20-6 31.1-12c6-4 15-8 19-9v-23zm-50.1 133.3c-4 0-14-5-21-9-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 9-20 9s-14-5-20-9c-11-6-22-12-32.1-12-9 0-20 6-31.1 12-7 4-16 9-20 9s-13-5-20-9c-11-6-22-12-31.1-12-10 0-21 6-32.1 12-6 4-16 9-20 9s-13-5-20-9c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 9-21 9s-13-5-20-9c-10-6-20-12-30.1-12v22l19 9c11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-9 20-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-9 21-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 21 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 20 9c11 6 22 12 32.1 12s20-6 31.1-12l19-9v-22c-10 0-20 6-30.1 12-7 4-16 9-20 9zm50.1 34c-10 1-20 6-30.1 12-7 4-16 10-20 10s-14-6-21-10c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-16 10-20 10s-14-6-20-10c-11-6-22-12-32.1-12s-20 6-31.1 12c-7 4-16 10-20 10s-13-6-20-10c-11-6-22-12-31.1-12s-21 6-32.1 12c-6 4-16 10-20 10s-13-6-20-10c-11-6-21-12-31.1-12s-20 6-31.1 12c-7 4-17 10-21 10s-13-6-20-10c-10-6-20-11-30.1-12v23c4 0 13 5 19 9 11 6 21 12 31.1 12s21-6 32.1-12c6-4 16-9 20-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 17-9 21-9s13 5 20 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 21 9c11 6 21 12 31.1 12s20-6 31.1-12c7-4 16-9 20-9s14 5 20 9c11 6 22 12 32.1 12s20-6 31.1-12c6-4 15-9 19-9v-23z"/><path fill="#FFF" d="M0-.3h256v171H0V-.3z"/><path d="M389.8 119.9H408v78.8h-18.3l.1-78.8zm0 117.8H408v75.1h-18.3l.1-75.1z" fill="#A2001D"/><g fill="#D80027"><path d="M144-.3h-32v70H0v32h112v69h32v-69h112v-32H144v-70z"/><path d="M0-.3v15l57 39h23L0-.3zM256-.3v15l-57 39h-23l80-54z"/><path d="M0-.3v15l57 39h23L0-.3zM256-.3v15l-57 39h-23l80-54zM0 170.7v-15l57-38h23l-80 53zM256 170.7v-15l-57-38h-23l80 53z"/></g><g fill="#2E52B2"><path d="M0 22.7v31h46l-46-31zm96-23v49L23-.3h73zM256 22.7v31h-46l46-31zm-96-23v49l73-49h-73z"/><path d="M0 22.7v31h46l-46-31zm96-23v49L23-.3h73zM256 22.7v31h-46l46-31zm-96-23v49l73-49h-73zM0 147.7v-30h46l-46 30zm96 23v-49l-73 49h73zM256 147.7v-30h-46l46 30zm-96 23v-49l73 49h-73z"/></g><path fill="#5DA51E" stroke="#45602C" stroke-width="4" stroke-miterlimit="10" d="M462.8 91.5h-29.1l25.7-25.7c4.5-4.4 4.5-11.4 0-15.8l-3.4-3.4c-4.4-4.4-11.4-4.4-15.8 0l-25.9 25.9V37.4c0-6.2-5.1-11.3-11.3-11.3h-4.7c-6.2 0-11.3 5.1-11.3 11.3v31.7l-23.5-23.8c-4.7-4.7-12.2-4.7-16.9 0l-3.6 3.6c-4.7 4.7-4.7 12.4 0 17.2l25 25.4h-30.6c-6 0-10.9 4.9-10.9 10.9v4.6c0 6 4.9 10.9 10.9 10.9H369l-20.7 20.7c-4.4 4.4-4.4 11.4 0 15.8l3.4 3.4c4.4 4.4 11.4 4.4 15.8 0l19.6-19.6V167c0 6.1 5.1 11.1 11.3 11.3h4.7c6.2 0 11.3-5.1 11.3-11.3v-28.3l22.2 22.6c4.7 4.7 12.4 4.7 17.1 0l3.6-3.6c4.7-4.7 4.7-12.4 0-17.2L435.2 118h27.6c5.9 0 10.7-4.9 10.9-10.9v-4.6c0-6.1-4.9-11-10.9-11z"/><path fill="#E2DD24" stroke="#525625" stroke-width="4" stroke-miterlimit="10" d="M439.2 249.1h-79.8s-.9-13.4-6-21.8c-6.2-10.4-13.9-28.1-1.4-36.7 15.9-10.9 33.7.8 48.2.8 11.8.1 26.9-14 45-.8 12.2 8.9 3.9 28.2-1.3 36.7-7 11.5-4.7 21.8-4.7 21.8z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IQ.svg b/ccflags/svg/IQ.svg
new file mode 100644 (file)
index 0000000..5937321
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#CE1126" d="M0 0h513v114H0z"/><path d="M0 228h513v114H0z"/><g fill="#547C31"><path d="M219.2 160.7h-29.3c1.5-5.7 6.6-9.9 12.8-9.9v-19.9c-18.3 0-33.1 14.9-33.1 33.1v16.5h49.6c1.8 0 3.3 1.5 3.3 3.3v6.6h-66.2v19.9h86.1v-26.5c0-12.7-10.4-23.1-23.2-23.1zM268.8 190.5v-59.6H249v79.5h33.1v-19.9zM335 190.5v-59.6h-19.8v59.6h-6.6v-19.8h-19.9v39.7h59.6v-19.9z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IR.svg b/ccflags/svg/IR.svg
new file mode 100644 (file)
index 0000000..5f4ba03
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h512v342H0z"/><path fill="#6DA544" d="M0 0h513v114H0z"/><g fill="#D80027"><path d="M0 227.9h513v114H0zM278.8 134.8c.1 2 8.7 26.2 4.4 39.4-6.6 20.3-15.8 21.8-19.8 24.5V134l-6.9-4.2-6.9 4.2v64.7c-4-2.7-12.4-2.4-19.8-24.5-4.3-12.7 5.7-37.3 5.8-39.2 0 0-9.5 8.1-15.8 24-5.9 14.8 1.9 49.6 29.5 54.8 2.3.4 4.7 5.6 7.2 5.6 2.1 0 4.1-5.2 6-5.5 28.4-4.6 35-41.7 29.9-55.6-5.4-14.6-13.6-23.5-13.6-23.5z"/></g><g fill="#FFF" opacity=".5"><path d="M44.6 98.9h22.3v24.4H44.6zM0 98.9h22.3v24.4H0zM89.2 98.9h22.3v24.4H89.2zM133.8 98.9h22.3v24.4h-22.3zM178.4 98.9h22.3v24.4h-22.3zM223 98.9h22.3v24.4H223zM267.7 98.9H290v24.4h-22.3zM312.3 98.9h22.3v24.4h-22.3zM356.9 98.9h22.3v24.4h-22.3zM401.5 98.9h22.3v24.4h-22.3zM446.1 98.9h22.3v24.4h-22.3zM490.7 98.9H513v24.4h-22.3zM44.6 216.9h22.3v25.5H44.6zM0 216.9h22.3v25.5H0zM89.2 216.9h22.3v25.5H89.2zM133.8 216.9h22.3v25.5h-22.3zM178.4 216.9h22.3v25.5h-22.3zM223 216.9h22.3v25.5H223zM267.7 216.9H290v25.5h-22.3zM312.3 216.9h22.3v25.5h-22.3zM356.9 216.9h22.3v25.5h-22.3zM401.5 216.9h22.3v25.5h-22.3zM446.1 216.9h22.3v25.5h-22.3zM490.7 216.9H513v25.5h-22.3z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IS.svg b/ccflags/svg/IS.svg
new file mode 100644 (file)
index 0000000..43cf1d4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFF" d="M513 210.6H202.2v130.7H122.4V210.6H0V130.8h122.4V0H202.2v130.8H513v18.5l-1 42.7z"/><path fill="#D80027" d="M513 149.3V192H183.7v149.3H141V192H0v-42.7h141V0h42.7v149.3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/IT.svg b/ccflags/svg/IT.svg
new file mode 100644 (file)
index 0000000..2eb1289
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#F4F5F0" d="M342 0H0v341.3h512V0z"/><path fill="#008C45" d="M0 0h171v342H0z"/><path fill="#CD212A" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/JE.svg b/ccflags/svg/JE.svg
new file mode 100644 (file)
index 0000000..63726b6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M301.8 171 513 30.2V0h-45.3L256.5 140.8 45.3 0H0v30.2L211.2 171 0 311.8V342h45.3l211.2-140.8L467.7 342H513v-30.2z"/><path fill="#FFDA44" d="m233.7 44.6 22.3 5.6 22.3-5.6 4-20.9-14.9 6.5L256 14.8l-11.4 15.4-14.9-6.5z"/><path fill="#D80027" d="M233.7 44.6s-4 12.9-4 29.9c0 27.9 26.3 41.3 26.3 41.3s26.3-15.5 26.3-41.3c0-15.4-4-29.9-4-29.9s-8.1-5-22.3-5-22.3 5-22.3 5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/JM.svg b/ccflags/svg/JM.svg
new file mode 100644 (file)
index 0000000..98d4f4b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#6DA544" d="M0 0h513v342H0z"/><path d="M215.9 171 0 314.6V26.8zM513 26.8v287.8L296.1 171z"/><path fill="#0052B4" d="M513 26.8 296.1 171 513 314.6V342h-41.1L256 197.4 40.1 342H0v-27.4L215.9 171 0 26.8V0h40.1L256 143.9 471.9 0H513z"/><path fill="#FFDA44" d="M513 26.8 296.1 171 513 314.6V342h-41.1L256 197.4 40.1 342H0v-27.4L215.9 171 0 26.8V0h40.1L256 143.9 471.9 0H513z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/JO.svg b/ccflags/svg/JO.svg
new file mode 100644 (file)
index 0000000..fa3f9ad
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path d="M0 0h513v114H0z"/><path fill="#6DA544" d="M0 228h513v114H0z"/><path fill="#D80027" d="M256.5 170.7 0 341.3V0z"/><path fill="#FFF" d="m77.9 139.5 7.9 16.4 17.8-4.1-8 16.5 14.3 11.3-17.8 4 .1 18.3-14.3-11.5-14.2 11.5v-18.3l-17.8-4 14.3-11.3-7.9-16.5 17.7 4.1z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/JP.svg b/ccflags/svg/JP.svg
new file mode 100644 (file)
index 0000000..8714514
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h512v342H0z"/><circle fill="#D80027" cx="256.5" cy="171" r="96"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KE.svg b/ccflags/svg/KE.svg
new file mode 100644 (file)
index 0000000..ff76773
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path d="M0 0h512v90.579H0z"/><path fill="#496E2D" d="M0 251h513v91H0z"/><path fill="#A2001D" d="M0 114h513v114H0z"/><g fill="#FFF"><path d="m323.3 54.5-25.6-11.8L256 137l-41.7-94.3-25.6 11.8 51.8 116.2-51.8 116.2 25.6 11.8 41.7-94.4 41.7 94.4 25.6-11.8-51.8-116.2z"/><path d="M273.4 65.6c-9.9-10.8-17.4-17-17.4-17s-7.5 6.2-17.4 17v210.1c9.9 10.8 17.4 17 17.4 17s7.5-6.2 17.4-17V65.6z"/></g><g fill="#A2001D"><path d="M209 105.9v129.5c10.5 18.5 23.3 33.7 32.9 43.8V62.1c-9.6 10.1-22.4 25.3-32.9 43.8zM303 105.9c-10.5-18.5-23.3-33.7-32.9-43.8v217.2c9.6-10.1 22.4-25.3 32.9-43.8V105.9z"/></g><path d="M303 105.9v129.5c10.6-18.8 18.8-41 18.8-64.8s-8.2-45.9-18.8-64.7zM209 105.9v129.5c-10.6-18.8-18.8-41-18.8-64.8s8.2-45.9 18.8-64.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KG.svg b/ccflags/svg/KG.svg
new file mode 100644 (file)
index 0000000..2d78279
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 342"><g fill="#D80027"><path d="M0 0h513v342H0z"/><circle cx="256" cy="170.7" r="170.7"/></g><path fill="#FFDA44" d="M382.4 170.7 330.8 195l27.5 50-56.1-10.7-7.1 56.6-39.1-41.7-39.1 41.7-7.1-56.6-56.1 10.7 27.5-50-51.6-24.3 51.6-24.3-27.5-50.1 56.1 10.8 7.1-56.7L256 92.1l39.1-41.7 7.1 56.7 56.1-10.8-27.5 50.1z"/><circle fill="#D80027" cx="257.4" cy="170.7" r="71.6"/><g fill="#FFDA44"><path d="M214.2 170.7c-2.1 0-4.1.1-6.2.3.1 12 4.4 22.9 11.6 31.5 3.8-10.3 9.5-19.6 16.7-27.7-6.9-2.7-14.3-4.1-22.1-4.1zM240.8 217.2c5.2 1.9 10.8 2.9 16.6 2.9 5.8 0 11.4-1 16.6-2.9-2.8-11.1-8.7-21-16.6-28.8-7.9 7.8-13.8 17.7-16.6 28.8zM300.2 146c-8.5-14.8-24.5-24.7-42.8-24.7-18.3 0-34.2 9.9-42.8 24.7 15.6.1 30.2 4.3 42.8 11.6 12.6-7.3 27.2-11.6 42.8-11.6zM278.5 174.8c7.2 8 12.9 17.4 16.7 27.7 7.2-8.5 11.5-19.5 11.6-31.5-2-.2-4.1-.3-6.2-.3-7.7 0-15.2 1.4-22.1 4.1z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KH.svg b/ccflags/svg/KH.svg
new file mode 100644 (file)
index 0000000..7f9df82
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><g fill="#0052B4"><path d="M0 0h513v114H0zM0 228h513v114H0z"/></g><path fill="#FFF" d="M303.5 196.6v-17.8h-11.9v-23.7l-11.9-11.9-11.8 11.9v-23.8L256 119.5l-11.9 11.8v23.8l-11.8-11.9-11.9 11.9v23.7h-11.9v17.8h-11.9v17.8h118.8v-17.8z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KI.svg b/ccflags/svg/KI.svg
new file mode 100644 (file)
index 0000000..2f4abd8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 450 300"><path fill="#CE1126" d="M0 0h450v300H0V0z"/><g fill="#FCD116"><circle cx="227.6" cy="161.2" r="56.2"/><path d="m254.1 73.4-23.7 26 28.6 6.5zM202.6 73.6l-4.8 33.1 28.5-8zM296.9 100.3l-34.7 8.5 20.1 23.7zM158.6 98.5l15.5 32.7 20.2-22.7zM317.6 143.8l-34.4-9.9 5.6 29.5zM135.6 141.2l31.9 19.8 5.2-27.7z"/></g><path fill="#003F87" d="M0 175h450v125H0V175z"/><path fill="#FFF" d="M0 267c15 0 30 13 45 13s30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13v-21c-15 0-30 13-45 13s-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13v21zm0-43c15 0 30 13 45 13s30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13v-21c-15 0-30 13-45 13s-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13v21zm0-43c15 0 30 13 45 13s30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13 30 13 45 13 30-13 45-13v-21c-15 0-30 13-45 13s-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13-30 13-45 13-30-13-45-13v21z"/><path fill-rule="evenodd" clip-rule="evenodd" fill="#FCD116" d="m183.2 48.3-1.1-5.3 22.4-3.7s-30.1-7.1-40-10.7c-14.3-5.1-16.3-12.1-16.3-12.1s44.7 11 64.8 11c4.3 0 12.8 10.7 12.8 10.7s14.8-14.9 21.9-15.4c32.1-2.3 66.6-6.4 66.6-6.4s-10 6.7-16 8.5c-16.2 4.9-50.6 11.7-50.6 11.7l-4.8 7.5H277l-14.4 4.3 7.4 6.9s-7.8-4.1-18.1-2.1c-7.1 1.3-15.4 6-22.9 8-18.7 4.8-29.9-12.8-29.9-12.8l-15.9-.1z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KM.svg b/ccflags/svg/KM.svg
new file mode 100644 (file)
index 0000000..82121dc
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFDA44" d="M0 0h513v85.5H0z"/><path fill="#FFF" d="M0 85.5h513V171H0z"/><path fill="#D80027" d="M0 171h513v85.5H0z"/><path fill="#6DA544" d="M256.5 171 0 342V0z"/><g fill="#FFF"><path d="M68.6 170.7c0-24.9 17.5-45.6 40.8-50.7-3.6-.8-7.3-1.2-11.1-1.2-28.7 0-51.9 23.3-51.9 51.9s23.3 51.9 51.9 51.9c3.8 0 7.5-.4 11.1-1.2-23.3-5.1-40.8-25.9-40.8-50.7z"/><path d="m108.9 126.1 2.7 8.5h9l-7.3 5.3 2.8 8.5-7.2-5.2-7.3 5.2 2.8-8.5-7.2-5.3h8.9zM108.9 148.4l2.7 8.5h9l-7.3 5.3 2.8 8.5-7.2-5.3-7.3 5.3 2.8-8.5-7.2-5.3h8.9z"/><path d="m108.9 170.7 2.7 8.5h9l-7.3 5.2 2.8 8.5-7.2-5.2-7.3 5.2 2.8-8.5-7.2-5.2h8.9zM108.9 192.9l2.7 8.5h9l-7.3 5.3 2.8 8.5-7.2-5.3-7.3 5.3 2.8-8.5-7.2-5.3h8.9z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KN.svg b/ccflags/svg/KN.svg
new file mode 100644 (file)
index 0000000..1ad001b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#6DA544" d="M512 0H0v342"/><path fill="#FFDA44" d="M307.7 0 0 194.5V342h206.9L513 148.5V0z"/><path d="M513 0H385.2L0 249.4V341l126.2 1L513 91.6z"/><g fill="#FFF"><path d="m141.1 187 31.2 24 32.3-22.2-13.1 37 31.1 23.9-39.2-1.1-13.2 37-11.1-37.6-39.2-1.1 32.3-22.2zM310.6 70.8l31.2 23.9 32.3-22.2-13.1 37 31.1 23.9-39.2-1.1-13.2 37-11.1-37.6-39.2-1.1 32.4-22.2z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KP.svg b/ccflags/svg/KP.svg
new file mode 100644 (file)
index 0000000..cbd271f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#91DC5A" d="M0 0h513v342H0z"/><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#0052B4"><path d="M0 0h513v57.188H0zM0 284.1h513v57.177H0z"/></g><path fill="#D80027" d="M0 79.9h513v181.582H0z"/><circle fill="#FFF" cx="190.33" cy="171" r="65.668"/><path fill="#D80027" d="m190.3 105 14.8 45.3h47.7l-38.6 28.1 14.8 45.5-38.7-28.2-38.6 28.1 14.8-45.4-38.6-28.1h47.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KR.svg b/ccflags/svg/KR.svg
new file mode 100644 (file)
index 0000000..93b93ec
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600"><path fill="#FFF" d="M0 0h900v600H0z"/><g transform="rotate(-56.31)"><g stroke="#000" stroke-width="25"><path d="M-75 228.3H75m-150 37.5H75m-150 37.5H75M-75 778.3H75m-150 37.5H75m-150 37.5H75"/></g><path stroke="#FFF" stroke-width="12.5" d="M0 753.3v125"/><circle fill="#ca163a" cy="540.8" r="150"/><path fill="#0e4896" d="M0 390.8c-41.4 0-75 33.6-75 75s33.6 75 75 75 75 33.6 75 75-33.6 75-75 75c-82.8 0-150-67.2-150-150s67.2-150 150-150z"/></g><g stroke="#000" stroke-width="25"><path d="m231.56 535.73-83.205-124.808M262.76 514.928l-83.205-124.807m114.407 104.006-83.205-124.808M689.187 230.644l-83.205-124.807M720.39 209.843 637.184 85.036m114.407 104.006L668.386 64.234"/></g><path stroke="#FFF" stroke-width="12.5" d="m205.6 462.897 31.202-20.8m389.981-259.989 36.444-24.296m31.202-20.801 31.202-20.801"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KW.svg b/ccflags/svg/KW.svg
new file mode 100644 (file)
index 0000000..266cda3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#6DA544" d="M0 0h513v114H0z"/><path fill="#D80027" d="M0 228h513v114H0z"/><path d="M167 227.6 0 341.3V0l167 113.8z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KY.svg b/ccflags/svg/KY.svg
new file mode 100644 (file)
index 0000000..d70f115
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><circle fill="#6DA544" cx="384" cy="96.5" r="29.7"/><path fill="#D80027" d="M332.1 89H436v44.5H332.1z"/><path fill="#496E2D" d="M435.9 170.7z"/><path fill="#FFDA44" d="M332.1 200.3V230h15.6c9.4 9.2 22.2 14.8 36.3 14.8 14.1 0 27-5.7 36.3-14.8H435.9v-29.7H332.1z"/><path fill="#338AF3" d="M332.1 126.1v44.5c0 39.8 51.9 51.9 51.9 51.9s51.9-12.2 51.9-51.9v-44.5H332.1z"/><g fill="#F3F3F3"><path d="M384 149.9c-13 0-13 11.9-26 11.9s-13-11.9-26-11.9v20.8c13 0 13 11.9 26 11.9s13-11.9 26-11.9 13 11.9 26 11.9 13-11.9 26-11.9v-20.8c-13 0-13 11.9-26 11.9s-13-11.9-26-11.9zM384 108.3c-13 0-13 11.9-26 11.9s-13-11.9-26-11.9v20.8c13 0 13 11.9 26 11.9s13-11.9 26-11.9 13 11.9 26 11.9 13-11.9 26-11.9v-20.8c-13 0-13 11.9-26 11.9s-13-11.9-26-11.9z"/></g><path fill="#FFF" d="M256 0v22.6l-46.1 30.7H256v64h-46.1L256 148v22.7h-22.6l-73.4-49v49H96v-49l-73.4 49H0V148l46.1-30.7H0v-64h46.1L0 22.6V0h22.6L96 48.9V0h64v48.9L233.4 0z"/><g fill="#D80027"><path d="M144 0h-32v69.3H0v32h112v69.4h32v-69.4h112v-32H144z"/><path d="M0 0v15.1l57.4 38.2H80zM256 0v15.1l-57.4 38.2H176z"/><path d="M0 0v15.1l57.4 38.2H80zM256 0v15.1l-57.4 38.2H176zM0 170.7v-15.1l57.4-38.3H80zM256 170.7v-15.1l-57.4-38.3H176z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/KZ.svg b/ccflags/svg/KZ.svg
new file mode 100644 (file)
index 0000000..bb020c9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#36B6CC" d="M0 0h513v342H0V0z"/><circle fill="#FFD400" cx="256.5" cy="170.9" r="68.4"/><path fill="#FFD400" d="m256.5 251.5-27.9 41.7-7.1-49.7-43.2 25.5 15.2-47.8-50 4.2 34.4-36.5-46.9-18 46.8-18-34.4-36.5 50 4.2-15.2-47.8 43.2 25.4 7.1-49.7 27.9 41.7 27.9-41.7 7.1 49.7 43.2-25.4-15.2 47.8 50-4.2-34.3 36.6 46.8 17.9-46.8 18 34.4 36.5-50-4.2 15.2 47.8-43.2-25.4-7.1 49.7c0-.1-27.9-41.8-27.9-41.8zm0-.8c44.1 0 79.9-35.8 79.9-79.9S300.6 91 256.5 91s-79.9 35.8-79.9 79.9 35.8 79.8 79.9 79.8zM22.8 28.3c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6V28.3zm0 45.7c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6V74zm0 45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0 45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0 45.7c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0 45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0 45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H28.5c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm22.8-22.8c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0-45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7V245c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0-45.7c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6V188zm0-45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6v-11.4zm0-45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6V96.8zm0-45.6c0-3.2 2.4-5.7 5.7-5.7h11.3c3.2 0 5.7 2.4 5.7 5.7v11.3c.1 3.1-2.4 5.7-5.6 5.7H51.3c-3.1 0-5.7-2.5-5.7-5.6V51.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LA.svg b/ccflags/svg/LA.svg
new file mode 100644 (file)
index 0000000..09281c3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><g fill="#D80027"><path d="M0 .1h513v90.7H0zM0 251.3h513V342H0z"/></g><circle fill="#FFF" cx="256.5" cy="171" r="65.9"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LB.svg b/ccflags/svg/LB.svg
new file mode 100644 (file)
index 0000000..bd663ac
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#D80027"><path d="M0 .2h513v90.7H0zM.5 251.3H513V342H.5z"/></g><path fill="#6DA544" d="M290.3 193.5 256 130.7l-34.3 62.8h25.7v17.2h17.2v-17.2z"/><path fill="#14AF5A" d="M241.3 213.1c4.4-4.4 4.4-11.6-.1-16l4.7 4.7c-5.2-4.7-12.2-6.6-19.1-5.3l-23.5 5.9c-6.1 1.5-6.8-.4-1.8-4.2l27.1-20.3c5.1-3.8 4.2-6.9-2.3-6.9h-11c-6.4 0-7-2.3-1.5-5.1l25.3-12.7c5.6-2.8 5.1-5.1-1.5-5.1h-11c-6.4 0-7.4-3.1-2.3-6.9l27.1-20.3c5.6-3.8 12.9-3.8 18.5 0l27.1 20.3c5.1 3.8 4.2 6.9-2.3 6.9h-11c-6.4 0-7 2.3-1.5 5.1l25.3 12.7c5.6 2.8 5.1 5.1-1.5 5.1h-11c-6.4 0-7.4 3.1-2.3 6.9l27.1 20.3c5.1 3.8 4.4 5.7-1.8 4.2l-23.5-5.9c-6.8-1.3-13.9.6-19.1 5.3l4.7-4.7c-4.4 4.4-4.5 11.5-.1 16l6.8 6.8c4.4 4.4 3.1 8-3.3 8h-45.8c-6.2 0-7.7-3.6-3.3-8 .1.1 6.9-6.8 6.9-6.8z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LC.svg b/ccflags/svg/LC.svg
new file mode 100644 (file)
index 0000000..33511bb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#55B2FF" d="M0 0h513v342H0z"/><path fill="#F3F3F3" d="M148.5 298.1h216l-108-254.2z"/><path fill="#333" d="m186 272.7 70.5-160.3L327 272.7z"/><path fill="#FFDA44" d="M148.5 298.1h216l-108-101.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LI.svg b/ccflags/svg/LI.svg
new file mode 100644 (file)
index 0000000..20e2ca3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#0052B4" d="M0 0h513v171H0z"/><path fill="#FFDA44" d="M149.3 98.1c0-14-11.3-25.3-25.3-25.3-6.5 0-12.4 2.4-16.9 6.4V64.4h8.4V47.5h-8.4v-8.4H90.3v8.4h-8.4v16.9h8.4v14.9c-4.5-4-10.4-6.4-16.9-6.4-14 0-25.3 11.3-25.3 25.3 0 7.5 3.3 14.2 8.4 18.8v14.9h84.3V117c5.3-4.7 8.5-11.5 8.5-18.9z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LK.svg b/ccflags/svg/LK.svg
new file mode 100644 (file)
index 0000000..78b239c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#A2001D" d="M222.6 22.3h267.1v296.8H222.6z"/><path fill="#D80027" d="M22.3 22.3h200.3v296.8H22.3z"/><path fill="#FFDA44" d="M200.3 0h22.3v342h-22.3z"/><path fill="#6DA544" d="M22.3 22.3h89v296.8h-89z"/><path fill="#FF9811" d="M111.3 22.3h89v296.8h-89z"/><path fill="#FFDA44" d="M368.2 156.8c-1.4-2 0-37.9 0-37.9.9-7.4.1-8.4 1-11.4.9-2.9 5.4-11.6 5.4-11.6s-6-2.3-10.3-.6c-4.3 1.7-24.7-7.5-31.2 3.4-4.4 7-23.6 16.2-24.6 14-1-2.2-5.9-5-6.9-2.9s-.7 13.9 0 16c.8 2.6 9.8 2 12.3 3.1 3.7 1.8 12.2 8.2 11.9 10.7-.3 2.5-22.5-6-24.2-4.5-1.4 1.2-1.9 13.2-.4 15 1.8 2.1 23.4 5.6 25 7.5 1.6 1.9-13.1 7.4-12.3 25 .7 14.7 8 17.4 8 17.4s-2.4 3.6-7.8 3.1c-6.2-.6-27.4-17.7-27.4-17.7s-3.5-109 3.6-121.4c4.9-8.5-22.7 10.1-22.7 50.8V151c0 6.6-1.4 22.4 2.6 34 0 0-.4 46.9 1.5 49.6s12.7 2.2 14.8 0 0-30 0-30c7.7.2 18.3 17.5 32.5 16.4 20.6-1.6 28.7-9.9 34.3-5 8.1 7.1 5.5 23.2.4 31.5-2.2 3.5-14.3 4.7-15.7 7.6-1.4 2.9.5 5.4.5 5.4h29.7s1.4-20.5 2.7-26.1c1.3-5.7-.6-10.7 5.9-10.4 23.5 1.1 39.8-15.3 45.5-8 3.2 4.1 5.6 29.9 3.3 33.3-2.2 3.4-13.8 2.8-15.2 6.7-1.4 4 .8 4.4.8 4.4h29.7s-.4-21.2 2.5-27.7 4.9-10.4 9.3-17.2c4.4-6.8 11.3-15.7 11.3-36.2 0-14.2-8.1-22.8-8.1-22.8H417c-14.1.2-47.4 2.3-48.8.3zM232.2 32.3c10.7-10.6 20.2-2.7 22.2 2.1 1.9 4.8 2.1 8.2 2.8 13.6.9 6.9 4.9 14 4.9 14s-7.1-3.8-14.7-4.2c-4.7-.3-9-.6-13.6-2.5-5.7-2.3-11.7-12.9-1.6-23zM480.6 32.2c10.7 10.6 2.8 20.2-2 22.2s-8.2 2.1-13.6 2.8c-6.9.9-14 5-14 5s3.7-7.1 4.2-14.7c.3-4.7.6-9.1 2.4-13.6 2.2-5.7 12.8-11.8 23-1.7zM480.7 309.1c-10.7 10.6-20.2 2.6-22.2-2.2-1.9-4.8-2.1-8.2-2.7-13.6-.8-6.9-4.9-14.1-4.9-14.1s7 3.8 14.7 4.3c4.7.3 9 .6 13.6 2.5 5.7 2.4 11.7 13.1 1.5 23.1zM232.5 309c-10.6-10.7-2.7-20.2 2.1-22.2 4.8-1.9 8.2-2.1 13.6-2.8 6.9-.9 14-4.9 14-4.9s-3.8 7.1-4.2 14.7c-.3 4.7-.6 9-2.5 13.6-2.3 5.7-12.9 11.8-23 1.6z"/><path fill="none" stroke="#FFDA44" stroke-width="6" stroke-miterlimit="10" d="M446.9 162.4s7.5-2.6 8.4-16.1c.6-8.6-19.8-16-39-11.5-19.7 4.6-34-3.1-34-14.6 0-22.9 29.7-16.2 38.9-11.3 9.1 4.9 29.7 23.5 35.1 9.4"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LR.svg b/ccflags/svg/LR.svg
new file mode 100644 (file)
index 0000000..9866be4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#bf0a30"><path d="M0 0h513v31.1H0zM0 62.2h513v31.1H0zM0 124.5h513v31.1H0zM0 186.8h513v31.1H0zM0 249.3h513v31.1H0zM0 310.9h513V342H0z"/></g><path fill="#002868" d="M0 0h155.6v155.6H0z"/><path fill="#FFF" d="m77.8 30.2 10.7 32.9h34.6l-28 20.4 10.7 32.9-28-20.3-28 20.3 10.7-32.9-28-20.4h34.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LS.svg b/ccflags/svg/LS.svg
new file mode 100644 (file)
index 0000000..2450492
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#0052B4" d="M0 0h513v114H0z"/><path fill="#6DA544" d="M0 227.6h513v114H0z"/><path d="m245.2 171 7.7-23.1c2-5.9 5.1-6 7.1 0l7.7 23.1 19.4 29.1c1.7 2.6 1.3 6.3-1.2 8 0 0-6.9 8-29.5 8s-29.5-8-29.5-8c-2.4-2-2.9-5.4-1.2-8l19.5-29.1z"/><path d="M256.5 171c-12.5 0-22.6-10.1-22.6-22.6 0-12.5 10.1-22.6 22.6-22.6s22.6 10.1 22.6 22.6c0 12.5-10.2 22.6-22.6 22.6zm0 0c6.2 0 11.3-16.3 11.3-22.6 0-6.2-5.1-11.3-11.3-11.3-6.2 0-11.3 5.1-11.3 11.3 0 6.3 5 22.6 11.3 22.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LT.svg b/ccflags/svg/LT.svg
new file mode 100644 (file)
index 0000000..47343ca
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#6DA544" d="M0 0h513v342H0z"/><path fill="#FFDA44" d="M0 0h513v114H0z"/><path fill="#D80027" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LU.svg b/ccflags/svg/LU.svg
new file mode 100644 (file)
index 0000000..8aa2421
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#338AF3" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LV.svg b/ccflags/svg/LV.svg
new file mode 100644 (file)
index 0000000..a420dbf
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#A2001D"><path class="st1" d="M0 0h513v127.6H0zM0 214.4h513V342H0z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/LY.svg b/ccflags/svg/LY.svg
new file mode 100644 (file)
index 0000000..1f3ff6b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path d="M0 0h513v342H0z"/><path fill="#D80027" d="M0 0h513v114H0z"/><path fill="#496E2D" d="M0 228h513v114H0z"/><g fill="#FFF"><path d="m281.4 150.7 9 12.3 14.5-4.7-9 12.4 9 12.3-14.5-4.7-9 12.3v-15.2l-14.5-4.7 14.5-4.7z"/><path d="M257 201.5c-17 0-30.9-13.8-30.9-30.9s13.8-30.9 30.9-30.9c5.3 0 10.3 1.3 14.7 3.7-6.9-6.7-16.2-10.8-26.6-10.8-21 0-38 17-38 38s17 38 38 38c10.3 0 19.7-4.1 26.6-10.8-4.4 2.4-9.4 3.7-14.7 3.7z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MA.svg b/ccflags/svg/MA.svg
new file mode 100644 (file)
index 0000000..8b33ccf
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 .3V342h513V.3z"/><path fill="#20661B" d="M359.8 148.9h-73.3l-22.7-69.7-22.7 69.7h-73.3l59.3 43.1-22.7 69.7 59.3-43.1 59.3 43.1-22.5-69.7 59.3-43.1zm-116.1 37.7 7.7-23.6h24.8l7.7 23.6-20.1 14.6-20.1-14.6zm27.9-37.7H256l7.8-24 7.8 24zm24.3 29-4.8-14.9h25.3l-20.5 14.9zM236.6 163l-4.8 14.9-20.5-14.9h25.3zm-5.3 61.8 7.8-24 12.6 9.2-20.4 14.8zm44.5-14.9 12.6-9.2 7.8 24-20.4-14.8z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MC.svg b/ccflags/svg/MC.svg
new file mode 100644 (file)
index 0000000..06df387
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.333h512v341.333H0z"/><path fill="#c70000" d="M0 85.333h512V256H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MD.svg b/ccflags/svg/MD.svg
new file mode 100644 (file)
index 0000000..c755eee
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFDA44" d="M0 0h513v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/><path fill="#0052B4" d="M0 0h171v342H0z"/><path fill="#AF7F59" d="M206.2 129.1h33.2L256 79.3l16.6 49.8h33.2v99.6L256 262l-49.8-33.2v-99.7zm33.2 33.3v49.8h33.2v-49.8h-33.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ME.svg b/ccflags/svg/ME.svg
new file mode 100644 (file)
index 0000000..35ccee2
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#E6BE53" d="M0 0h513v342H0z"/><path fill="#E01D24" d="M20 20h473v302H20z"/><path fill="#E6BE53" d="M248.5 112.9c4.4 4.4 11.6 4.4 16 0l-4.7 4.7 22.7-22.7c4.9-4.5 12.1-5.6 18.2-2.8l2.1 1c5.7 2.9 6.7 8.7 2.3 13.1l4.7-4.7-22.8 22.8c-4.5 4.9-5.6 12.1-2.8 18.2l1 2.1c2.9 5.7 5.1 15.4 5.1 21.6v-11.3c0 6.2 4.4 9.1 10.2 6.2l2.1-1c5.7-2.9 6.7-8.7 2.3-13.1l4.7 4.7c-4.4-4.4-4.4-11.6 0-16l-4.7 4.7c5.2-5.5 9.6-11.6 13.1-18.2l1-2.1c2.9-5.7 6.3-15.1 7.9-21.2l5.8-23.3c1.5-6 5.9-6.8 9.6-1.8l20.2 26.9c3.8 5.1 6.9 14 6.9 20.6v22.4c0 6.3-2.2 15.8-5.1 21.7l-1 2.1c-3.5 6.6-7.9 12.7-13.1 18.2l-6.8 6.8c-5.4 5.2-11.5 9.6-18.2 13.1l-2.1 1c-5.7 2.9-15.5 5.1-21.6 5.1-6.2 0-6.9 2.2-1.1 5.1l2.1 1c5.7 2.9 13.8 8.7 18.2 13.1l-4.7-4.7c4.4 4.4 11.6 4.4 16 0l-4.7 4.7c4.4-4.4 11.6-4.4 16 0L339 226c4.6 4.9 5.7 12.1 2.9 18.2l-1 2.1c-2.9 5.7-10.4 10.2-16.4 10.2-7.5-.3-14.8-2-21.6-5.1l-2.1-1c-6.5-3.6-11.8-8.9-15.4-15.4l-1-2.1c-2.9-5.7-8.7-6.7-13.1-2.3l4.7-4.7c-4.4 4.7-5.2 11.8-1.8 17.3l10.3 15.4c3.4 5.1 2 12.1-3.1 15.5L266 284.4c-5.7 3.4-12.8 3.4-18.6 0L232 274.1c-5.1-3.4-6.5-10.3-3.1-15.5l10.3-15.4c3.4-5.5 2.6-12.6-1.8-17.3l4.7 4.7c-4.4-4.4-10.2-3.6-13.1 2.3l-1 2.1c-2.9 5.7-9.5 12.4-15.4 15.4l-2.1 1c-5.7 2.9-15.5 5.1-21.6 5.1-6.9-.3-13.1-4.2-16.4-10.2l-1-2.1c-2.8-6.1-1.6-13.3 2.9-18.2l-4.7 4.7c4.4-4.4 11.6-4.4 16 0L181 226c4.4 4.4 11.6 4.4 16 0l-4.7 4.7c5.5-5.2 11.6-9.6 18.2-13.1l2.1-1c5.7-2.9 5-5.1-1.1-5.1-7.5-.3-14.8-2-21.6-5.1l-2.1-1c-6.6-3.5-12.7-7.9-18.2-13.1l-6.8-6.8c-5.2-5.4-9.6-11.5-13.1-18.2l-1-2.1c-3.1-6.8-4.9-14.2-5.1-21.7V121c0-6.3 3.1-15.6 6.9-20.6l20.2-26.9c3.8-5.1 8.1-4.3 9.6 1.8l5.8 23.3c2 7.3 4.6 14.4 7.9 21.2l1 2.1c2.9 5.7 8.7 13.8 13.1 18.2l-4.7-4.7c4.4 4.4 4.4 11.6 0 16l4.7-4.7c-4.4 4.4-3.6 10.2 2.3 13.1l2.1 1c5.7 2.9 10.2 0 10.2-6.2v11.3c0-6.2 2.2-15.7 5.1-21.6l1-2.1c2.8-6.1 1.7-13.2-2.8-18.2l-22.7-22.7 4.7 4.7c-4.4-4.4-3.6-10.2 2.3-13.1l2.1-1c6.1-2.8 13.2-1.7 18.2 2.8l22.7 22.7-4.8-4.5zm-18-40.7c-4.4-4.4-3.2-9.5 2.8-11.5l12.4-4.2c6-2 15.5-2 21.5 0l12.4 4.2c6 2 7.2 7.1 2.8 11.5l-6.8 6.8c-5.3 4.7-12.1 7.5-19.2 7.9-6.2 0-14.8-3.5-19.2-7.9.1 0-6.7-6.8-6.7-6.8z"/><path fill="#215F90" d="M233.9 200.2c0 6.2 1.7 6.4 4.2.5 0 0 7.1-23.2 18.4-23.2 11.3 0 18.6 23.6 18.6 23.6 2.2 5.7 4 5.3 4-1.1v-11.2c0-18.7-10.1-33.9-22.6-33.9-12.5 0-22.6 15.2-22.6 33.9v11.4z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MF.svg b/ccflags/svg/MF.svg
new file mode 100644 (file)
index 0000000..ff13ef7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 108 72"><path d="M0 0h108v72H0z" fill="#003787"/><path d="M0 0h108L60 48v24H48V48z" fill="#fff"/><circle cx="54" cy="30" r="8" fill="#f9d90f"/><path d="M44 30h20L54 48z" fill="#fff"/><path d="M54 48 38 33h32z" fill="#cf142b"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MG.svg b/ccflags/svg/MG.svg
new file mode 100644 (file)
index 0000000..25fb05d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#6DA544" d="M512 426.666V85.329H0v341.337h512z"/><path fill="#D80027" d="M512 85.331H0v170.666h512V85.331z"/><path fill="#FFF" d="M0 85.334h181.793v341.337H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MH.svg b/ccflags/svg/MH.svg
new file mode 100644 (file)
index 0000000..ee87421
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#1E509C" d="M0 0h513v342H0z"/><path fill="#FFF" d="M513 176.1V81.3L0 342l513-165.9z"/><path fill="#F18D36" d="M513 0v81.3L0 342 513 0z"/><path fill="#FFF" d="m126.7 99.3-7.8-54.1-7.7 54.1-20.8-23.7 10.7 31.6-31.5-10.7 23.6 20.8-54.1 7.7 54.1 7.7-23.6 20.8 31.5-10.7-10.7 31.6 20.8-23.7 7.7 54.1 7.8-54.1 20.7 23.7-10.6-31.6 31.5 10.7-23.6-20.8 54-7.7-54-7.7 23.6-20.8-31.5 10.7 10.6-31.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MK.svg b/ccflags/svg/MK.svg
new file mode 100644 (file)
index 0000000..56ee6e1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.333h512V426.67H0z"/><g fill="#D80027"><path d="M383.875 426.662 256 252.286l26.827 174.376zM133.565 85.33 256 252.286 230.314 85.33zM229.171 426.662 256 252.286 128.124 426.662zM0 85.33V212.9l256 39.386L28.333 85.33zM0 426.662h18.212L256 252.286 0 291.67zM256 252.286 512 212.9V85.33h-28.331zM281.686 85.33 256 252.286 378.434 85.33zM512 426.662V291.671l-256-39.385 237.787 174.376z"/><circle cx="256" cy="252.29" r="59.359"/></g><circle fill="#FFDA44" cx="256" cy="252.29" r="44.522"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ML.svg b/ccflags/svg/ML.svg
new file mode 100644 (file)
index 0000000..1727bc8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.337H0z"/><path fill="#6DA544" d="M0 85.331h170.663v341.337H0z"/><path fill="#D80027" d="M341.337 85.331H512v341.337H341.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MM.svg b/ccflags/svg/MM.svg
new file mode 100644 (file)
index 0000000..4eff4ee
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#6DA544" d="M0 85.337h512v341.326H0z"/><path fill="#FFDA44" d="M0 85.337h512v113.775H0z"/><path fill="#D80027" d="M0 312.888h512v113.775H0z"/><path fill="#FFF" d="M384 227.261h-97.783L256 134.265l-30.217 92.997H128l79.108 57.475-30.217 92.998L256 320.925l79.108 56.81-30.217-92.998L384 227.261z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MN.svg b/ccflags/svg/MN.svg
new file mode 100644 (file)
index 0000000..6624023
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#095FAD" d="M0 0h513v342H0z"/><g fill="#BE1229"><path d="M342 0h171v342H342zM0 0h171v342H0z"/></g><g fill="#FFDA44"><path d="M108.3 166.3h14.8v74.2h-14.8zM48.9 166.3h14.8v74.2H48.9z"/><circle cx="86" cy="203.4" r="14.8"/><path d="M71.2 225.7h29.7v14.8H71.2zM71.2 166.3h29.7v14.8H71.2z"/><circle cx="86" cy="144" r="14.8"/><path d="M76.3 123.9h19.5L86 108.3z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MO.svg b/ccflags/svg/MO.svg
new file mode 100644 (file)
index 0000000..cf248f9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#00745a" d="M0 85.331h512v341.337H0z"/><path fill="#FFF" d="M285.682 248.878c-4.19 0-8.166.836-11.861 2.164 2.023-4.509 3.379-9.527 3.379-14.885 0-21.201-21.201-37.101-21.201-37.101s-21.201 15.901-21.201 37.101c0 5.357 1.356 10.375 3.379 14.885-3.693-1.328-7.671-2.164-11.861-2.164-21.201 0-37.101 21.201-37.101 21.201s15.901 21.201 37.101 21.201c12.429 0 23.031-7.286 29.682-13.315 6.65 6.03 17.251 13.315 29.682 13.315 21.201 0 37.101-21.201 37.101-21.201s-15.899-21.201-37.099-21.201z"/><g fill="#FFDA44"><path d="m256 152.111 4.38 13.476h14.171l-11.464 8.332 4.376 13.476-11.463-8.33-11.463 8.33 4.376-13.476-11.464-8.332h14.171zM202.112 175.683l8.425 7.585 9.818-5.667-4.61 10.355 8.423 7.588-11.274-1.185-4.611 10.355-2.358-11.088-11.275-1.185 9.818-5.669zM162.662 215.132l11.09 2.358 5.668-9.818 1.186 11.274 11.089 2.358-10.357 4.61 1.186 11.274-7.587-8.423-10.357 4.61 5.669-9.818zM309.889 175.683l-8.425 7.585-9.818-5.667 4.611 10.355-8.425 7.588 11.275-1.185 4.61 10.355 2.359-11.088 11.275-1.185-9.818-5.669zM349.338 215.132l-11.089 2.358-5.669-9.818-1.186 11.274-11.088 2.358 10.357 4.61-1.185 11.274 7.586-8.423 10.357 4.61-5.669-9.818z"/></g><g fill="#FFF"><path d="M256 350.642c16.84 0 32.363-5.619 44.816-15.073h-89.63c12.451 9.454 27.974 15.073 44.814 15.073zM187.977 306.12a74.138 74.138 0 0 0 8.85 15.073h118.345a74.13 74.13 0 0 0 8.85-15.073H187.977z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MP.svg b/ccflags/svg/MP.svg
new file mode 100644 (file)
index 0000000..0bd240a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 500"><path fill="#0071BC" d="M0 0h750v500H0V0z"/><g fill="#FFF" stroke="#000" stroke-width="1.9"><circle cx="375" cy="245" r="225" fill="#fff"/><circle cx="375" cy="245" r="165" fill="#0071BC"/></g><g stroke="#000"><path fill="#8C8A8C" stroke-width="1.9" d="M444.7 450c.7 11-7.8 20-18.8 20H323.6c-11 0-19.5-9-19-20l16.7-325c.6-11 10-20 21-20h61.4c11 0 20.5 9 21.2 20l19.8 325z"/><path fill="#FFF" stroke-width="2" stroke-linejoin="round" d="m373 114 30 93h97l-78 56 29 92-78-56-78 57 30-93-79-57h97l30-92z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MQ.svg b/ccflags/svg/MQ.svg
new file mode 100644 (file)
index 0000000..6bdf4b6
--- /dev/null
@@ -0,0 +1 @@
+<svg viewBox="0 0 900 600" xmlns="http://www.w3.org/2000/svg"><path fill="#231f1e" d="M0 0h900v600H0z"/><path fill="#00a650" d="M0 0h900v300H0z"/><path fill="#ef1923" d="m0 0 450 300L0 600z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MR.svg b/ccflags/svg/MR.svg
new file mode 100644 (file)
index 0000000..0311a1c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 100 513 342"><path fill="#006233" d="M0 100h513v342H0z"/><path fill="#cd2a3e" d="M0 100h513v46H0zM0 396h513v46H0z"/><path fill="#ffc400" d="M256 298.851c-45.956 0-84.348-32.298-93.767-75.429A96.288 96.288 0 0 0 160 243.994c0 53.02 42.979 96 96 96s96-42.98 96-96c0-7.066-.785-13.942-2.233-20.572-9.419 43.131-47.811 75.429-93.767 75.429z"/><path fill="#ffc400" d="m255.999 171.994 8.935 27.502h28.918l-23.394 16.996 8.936 27.503-23.395-16.998-23.394 16.998 8.937-27.503-23.394-16.996h28.915z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MS.svg b/ccflags/svg/MS.svg
new file mode 100644 (file)
index 0000000..f4f9735
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#1B4991" d="M0 0h513v342H0z"/><path fill="#00A2B8" stroke="#FFF" stroke-width="3" d="M318.2 106.7v106.5c0 51.9 67.8 67.8 67.8 67.8s67.8-15.9 67.8-67.8V106.7H318.2z"/><path fill="#A35023" d="M319.7 212.7c0 50.8 66.3 66.3 66.3 66.3s66.3-15.6 66.3-66.3H319.7z"/><path d="M415.1 155.1h-19.4v-19.4h-19.4v19.4H357v19.4h19.3v58.1h19.4v-58.1h19.4z"/><path fill="#FFF" d="M256 0v30.6l-45.2 25.1H256V115h-59.1l59.1 32.8v22.9h-26.7l-73.5-40.9v40.9h-55.6v-48.6l-87.5 48.6H0v-30.6L45.2 115H0V55.7h59.1L0 22.8V0h26.7l73.5 40.8V0h55.6v48.6L243.3 0z"/><path fill="#D80027" d="M144 0h-32v69.3H0v32h112v69.4h32v-69.4h112v-32H144z"/><path fill="#0052B4" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><path fill="#FFF" d="M155.8 115 256 170.7v-15.8L184.2 115z"/><path fill="#D80027" d="M155.8 115 256 170.7v-15.8L184.2 115zM71.8 115 0 154.9v15.8L100.2 115z"/><path fill="#0052B4" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><path fill="#FFF" d="M100.2 55.6 0 0v15.7l71.8 39.9z"/><path fill="#D80027" d="M100.2 55.6 0 0v15.7l71.8 39.9zM184.2 55.6 256 15.7V0L155.8 55.6z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MT.svg b/ccflags/svg/MT.svg
new file mode 100644 (file)
index 0000000..cc11c9e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#C31B28" d="M256 0h256.5v342H256z"/><path fill="#ACABB1" stroke="#C31B28" stroke-width="2" d="M101.2 68.2V33H66v35.2H30.8v35.2H66v35.2h35.2v-35.2h35.2V68.2z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MU.svg b/ccflags/svg/MU.svg
new file mode 100644 (file)
index 0000000..a367b14
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#f7ce00" d="M0 85.331h512v341.326H0z"/><path fill="#e32737" d="M0 85.331h512v85.337H0z"/><path fill="#191f6a" d="M0 170.657h512v85.337H0z"/><path fill="#00a04e" d="M0 341.331h512v85.337H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MV.svg b/ccflags/svg/MV.svg
new file mode 100644 (file)
index 0000000..4cc7ebc
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#d01920" d="M0 85.331h512v341.333H0z"/><path fill="#017c3b" d="M144.696 174.375h222.609v163.25H144.696z"/><path fill="#FFF" d="M283.484 304.226c-26.637 0-48.232-21.594-48.232-48.232s21.594-48.232 48.232-48.232c8.306 0 16.12 2.1 22.943 5.797-10.703-10.467-25.341-16.927-41.494-16.927-32.784 0-59.362 26.577-59.362 59.362s26.578 59.362 59.362 59.362c16.154 0 30.791-6.461 41.494-16.927-6.822 3.698-14.636 5.797-22.943 5.797z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MW.svg b/ccflags/svg/MW.svg
new file mode 100644 (file)
index 0000000..44fb0cb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 342"><path fill="#272727" d="M0 0h512v114H0z"/><path fill="#e40112" d="M0 114h512v114H0z"/><path fill="#07893f" d="M0 228h512v114H0z"/><circle fill="#e40112" cx="256" cy="125" r="95"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MX.svg b/ccflags/svg/MX.svg
new file mode 100644 (file)
index 0000000..bbdf84d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#dc2339" d="M342 0H0v341.3h513V0z"/><path fill="#11865d" d="M0 0h171v342H0z"/><path fill="#FFF" d="M171 0h171v342H171z"/><path fill="#8C9157" d="M195.8 171.2c0 21.6 11.5 41.7 30.3 52.5 5.8 3.4 13.2 1.4 16.6-4.4 3.4-5.8 1.4-13.2-4.4-16.6-11.3-6.5-18.2-18.5-18.2-31.5 0-6.7-5.4-12.1-12.1-12.1-6.7 0-12.2 5.4-12.2 12.1zm93.4 51.1c17.5-11.1 28-30.4 28-51.1 0-6.7-5.4-12.1-12.1-12.1s-12.1 5.4-12.1 12.1c0 12.4-6.3 24-16.8 30.7-5.7 3.5-7.5 10.9-4.1 16.7s10.9 7.5 16.7 4.1c0-.2.2-.3.4-.4z"/><ellipse fill="#C59262" cx="256.5" cy="159.1" rx="24.3" ry="36.4"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MY.svg b/ccflags/svg/MY.svg
new file mode 100644 (file)
index 0000000..38cc877
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#c00"><path d="M0 0h513v24.4H0zM0 48.9h513v24.4H0zM0 97.7h513v24.4H0zM0 146.6h513V171H0zM0 195.4h513v24.4H0zM0 244.3h513v24.4H0zM0 293.1h513v24.4H0z"/></g><path fill="#006" d="M0 0h256.5v195.4H0z"/><path d="M153.3 42.1C122.6 30.7 88.5 46.3 77.1 77s4.2 64.8 34.9 76.2c13.3 5 28 5 41.4 0-30.7 24.5-75.4 19.6-100-11.1s-19.6-75.4 11.1-100c26-20.7 62.9-20.7 88.8 0zm26.7 75-20.6 23.3 5.4-30.6-31-1.6 27.3-14.9L143 68l28.6 12 8.4-29.9 8.4 29.9L217 68l-18 25.4 27.3 14.9-31 1.6 5.4 30.6-20.7-23.4z" fill="#fc0"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/MZ.svg b/ccflags/svg/MZ.svg
new file mode 100644 (file)
index 0000000..a11eeda
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342"><path fill="#FFF" d="M0 85.333h513v342H0z"/><path fill="#f4d900" d="M0 323.333h513v104H0z"/><path fill="#006d66" d="M0 85.333h513v104H0z"/><path d="M0 204.333h513v104H0z"/><path fill="#cb0f31" d="M256 256.006 0 426.668V85.331z"/><path fill="#f4d900" d="m83.477 195.132 15.107 46.498h48.894l-39.554 28.739 15.107 46.499-39.554-28.738-39.555 28.738 15.11-46.499-39.554-28.739H68.37z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NA.svg b/ccflags/svg/NA.svg
new file mode 100644 (file)
index 0000000..a9f5a41
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#496E2D" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M0 426.663V85.337h512"/><path fill="#FFF" d="M512 152.222V85.337H411.67L0 359.778v66.885h100.33z"/><path fill="#A2001D" d="M512 85.337v40.125L60.193 426.663H0v-40.125L451.807 85.337z"/><path fill="#FFDA44" d="m187.737 189.212-22.741 10.696 12.11 22.024-24.693-4.724-3.129 24.945-17.199-18.347-17.2 18.347-3.129-24.945-24.693 4.723 12.109-22.023-22.739-10.696 22.74-10.697-12.11-22.022 24.693 4.722 3.13-24.944 17.199 18.347 17.2-18.347 3.128 24.944 24.693-4.722-12.108 22.024z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NC.svg b/ccflags/svg/NC.svg
new file mode 100644 (file)
index 0000000..09ee863
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 426.7"><path fill="#009543" d="M0 293h640v133.7H0V293z"/><path fill="#ED4135" d="M0 132h640v161.3H0V132z"/><path fill="#0035AD" d="M0 0h640v133.3H0V0z"/><circle fill="#FAE600" stroke="#000" stroke-width="5.3" cx="240" cy="213.3" r="157.3"/><path d="m307.9 354.5-31.8 12-36.1 4.2-37.8-2.4-35.9-15.5s28.6-29.3 40.7-33.5c8.6-3 22.4-3.7 22.4-3.7V122l-.3-66H246l-.5 67.5v191.7s15.3 1.2 22.1 4.1c11.3 4.9 40.3 35.2 40.3 35.2z"/><path d="m212.727 102.375 42.955-21.418 5.577 11.187-42.955 21.417z"/><ellipse cx="237.8" cy="280.5" rx="16.8" ry="26.5"/><circle cx="237.4" cy="143.4" r="20.9"/><ellipse cx="238.4" cy="211.1" rx="19.9" ry="12.1"/><path d="M213.8 177h47v10h-47zM213.8 234h47v10h-47z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NE.svg b/ccflags/svg/NE.svg
new file mode 100644 (file)
index 0000000..3c09399
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#e05206" d="M0 85.337h512v113.775H0z"/><path fill="#0db02b" d="M0 312.888h512v113.775H0z"/><circle fill="#e05206" cx="256" cy="256" r="32"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NF.svg b/ccflags/svg/NF.svg
new file mode 100644 (file)
index 0000000..f08fdbd
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.5 513 342"><path fill="#FFF" d="M0 85.5h513v342H0z"/><g fill="#007b23"><path d="M0 85.5h171v342H0zM342 85.5h171v342H342zM304 311.995l-48-152.001-48 152.001h36v39.999h24v-39.999z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NG.svg b/ccflags/svg/NG.svg
new file mode 100644 (file)
index 0000000..624166b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.5 513 342"><path fill="#FFF" d="M0 85.5h513v342H0z"/><g fill="#007b23"><path d="M0 85.5h171v342H0zM342 85.5h171v342H342z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NI.svg b/ccflags/svg/NI.svg
new file mode 100644 (file)
index 0000000..c0a05ca
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><g fill="#338AF3"><path d="M0 85.337h512v113.775H0zM0 312.888h512v113.775H0z"/></g><path fill="#FFDA44" d="M256 214.447c-22.949 0-41.553 18.603-41.553 41.553S233.05 297.553 256 297.553c22.949 0 41.553-18.603 41.553-41.553S278.949 214.447 256 214.447zm0 65.298c-13.114 0-23.745-10.631-23.745-23.745s10.631-23.745 23.745-23.745 23.745 10.631 23.745 23.745-10.631 23.745-23.745 23.745z"/><path fill="#0052B4" d="M276.563 261.936 256 256l-20.563 5.936-6.855 11.873h54.836z"/><path fill="#338AF3" d="m256 226.32-13.709 23.744L256 256l13.709-5.936z"/><path fill="#6DA544" d="M235.437 261.936h41.126l-6.854-11.872h-27.418z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NL.svg b/ccflags/svg/NL.svg
new file mode 100644 (file)
index 0000000..3c762c3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 114h513v114H0z"/><path fill="#cd1f2a" d="M0 0h513v114H0z"/><path fill="#1d4185" d="M0 228h513v114H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NO.svg b/ccflags/svg/NO.svg
new file mode 100644 (file)
index 0000000..28a0c5d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.334h512v341.337H0z"/><path fill="#FFF" d="M512 295.883H202.195v130.783H122.435V295.883H0V216.111h122.435V85.329H202.195v130.782H512V277.329z"/><path fill="#2E52B2" d="M512 234.666v42.663H183.652v149.337h-42.674V277.329H0v-42.663h140.978V85.329h42.674v149.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NP.svg b/ccflags/svg/NP.svg
new file mode 100644 (file)
index 0000000..373df1e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M0 426.663V85.337l280.419 174.75H87.61l183.576 166.576z"/><path fill="#D80027" d="M244.769 249.888 10.199 103.71v312.754h234.57L61.193 249.888z"/><g fill="#FFF"><path d="m98.003 324.433-14.589-6.863 7.77-14.13-15.844 3.03-2.008-16.005-11.035 11.772-11.036-11.772-2.008 16.005-15.843-3.031 7.77 14.131-14.591 6.863 14.591 6.862-7.77 14.13 15.844-3.029 2.007 16.004 11.036-11.772L73.332 358.4l2.008-16.004 15.843 3.03-7.769-14.13zM88.268 191.662l-10.612-4.991 5.651-10.278-11.523 2.205-1.461-11.641-8.026 8.561-8.026-8.561-1.46 11.641-11.525-2.205 5.652 10.278-10.613 4.991 25.972 5.194z"/><path d="M93.462 191.662c0 17.212-13.953 31.165-31.165 31.165s-31.165-13.953-31.165-31.165"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NR.svg b/ccflags/svg/NR.svg
new file mode 100644 (file)
index 0000000..9552cc3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.337h512v341.326H0z"/><path fill="#FFDA44" d="M0 239.994h512v32H0z"/><path fill="#FFF" d="m174.802 341.329-19.124 8.996 10.184 18.521-20.767-3.973-2.631 20.978L128 370.422l-14.465 15.429-2.63-20.978-20.767 3.973 10.183-18.521-19.123-8.996 19.124-8.995-10.184-18.52 20.766 3.971 2.632-20.978L128 312.236l14.465-15.429 2.63 20.978 20.767-3.971-10.183 18.521z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NU.svg b/ccflags/svg/NU.svg
new file mode 100644 (file)
index 0000000..fc5183e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.334h512v341.337H0z"/><path fill="#FFF" d="M0 85.334h256v170.663H0z"/><g fill="#D80027"><path d="M144 85.33h-32v69.333H0v32h112v69.334h32v-69.334h112v-32H144z"/><path d="M0 85.329v15.083l57.377 38.251H80z"/></g><g fill="#2E52B2"><path d="M0 107.951v30.712h46.069zM96 85.331v48.913L22.628 85.331z"/></g><path fill="#D80027" d="M256 85.329v15.083l-57.377 38.251H176z"/><g fill="#2E52B2"><path d="M256 107.951v30.712h-46.069zM160 85.331v48.913l73.372-48.913z"/></g><path fill="#D80027" d="M0 85.329v15.083l57.377 38.251H80z"/><g fill="#2E52B2"><path d="M0 107.951v30.712h46.069zM96 85.331v48.913L22.628 85.331z"/></g><path fill="#D80027" d="M256 85.329v15.083l-57.377 38.251H176z"/><g fill="#2E52B2"><path d="M256 107.951v30.712h-46.069zM160 85.331v48.913l73.372-48.913z"/></g><path fill="#D80027" d="M0 255.997v-15.082l57.377-38.252H80z"/><g fill="#2E52B2"><path d="M0 233.376v-30.713h46.069zM96 255.994v-48.912l-73.372 48.912z"/></g><path fill="#D80027" d="M256 255.997v-15.082l-57.377-38.252H176z"/><g fill="#2E52B2"><path d="M256 233.376v-30.713h-46.069zM160 255.994v-48.912l73.372 48.912z"/><circle cx="128" cy="170.66" r="22.627"/></g><g fill="#FFDA44"><path d="m128 154.663 3.97 12.222h12.854l-10.398 7.556 3.971 12.222L128 179.109l-10.398 7.554 3.972-12.222-10.398-7.556h12.853zM128 219.803l2.364 7.278h7.653l-6.19 4.498 2.364 7.278-6.191-4.498-6.191 4.498 2.364-7.278-6.19-4.498h7.652zM128 102.469l2.364 7.278h7.653l-6.19 4.498 2.364 7.278-6.191-4.498-6.191 4.498 2.364-7.278-6.19-4.498h7.652zM197.931 161.136l2.365 7.277h7.653l-6.192 4.499 2.365 7.279-6.191-4.498-6.191 4.498 2.365-7.279-6.191-4.499h7.652zM58.069 161.136l2.364 7.277h7.653l-6.191 4.499 2.364 7.279-6.19-4.498-6.191 4.498 2.365-7.279-6.192-4.499h7.653z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/NZ.svg b/ccflags/svg/NZ.svg
new file mode 100644 (file)
index 0000000..c5b41b5
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.334h512v341.337H0z"/><g fill="#D80027"><path d="m425.301 233.745 3.388 10.428h10.963l-8.87 6.444 3.388 10.427-8.869-6.444-8.871 6.444 3.388-10.427-8.87-6.444h10.963zM386.107 308.817l5.083 15.642h16.445l-13.305 9.667 5.082 15.64-13.305-9.667-13.305 9.667 5.083-15.64-13.305-9.667h16.445zM387.588 185.971l4.236 13.036h13.704l-11.088 8.054 4.235 13.034-11.087-8.056-11.088 8.056 4.235-13.034-11.087-8.054h13.704zM349.876 233.291l5.082 15.641h16.446l-13.306 9.666 5.084 15.641-13.306-9.666-13.305 9.666 5.082-15.641-13.305-9.666h16.445z"/></g><path fill="#FFF" d="M256.003 85.329v30.564l-45.178 25.088h45.178v59.359H196.89l59.113 32.846v22.806h-26.69l-73.484-40.826v40.826h-55.652v-48.573l-87.429 48.573H.003v-30.553l45.168-25.099H.003v-59.359h59.103L.003 108.147V85.329h26.68l73.494 40.838V85.329h55.652v48.573l87.43-48.573z"/><path fill="#D80027" d="M144 85.33h-32v69.334H0v32h112v69.334h32v-69.334h112v-32H144z"/><path fill="#0052B4" d="M155.826 200.344 256 255.998v-15.739l-71.847-39.915z"/><path fill="#FFF" d="M155.826 200.344 256 255.998v-15.739l-71.847-39.915z"/><g fill="#D80027"><path d="M155.826 200.344 256 255.998v-15.739l-71.847-39.915zM71.846 200.344 0 240.259v15.739l100.174-55.654z"/></g><path fill="#0052B4" d="M100.174 140.983 0 85.33v15.738l71.847 39.915z"/><path fill="#FFF" d="M100.174 140.983 0 85.33v15.738l71.847 39.915z"/><g fill="#D80027"><path d="M100.174 140.983 0 85.33v15.738l71.847 39.915zM184.154 140.983 256 101.068V85.33l-100.174 55.653z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/OL.svg b/ccflags/svg/OL.svg
new file mode 100644 (file)
index 0000000..7d852b6
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 513 342"
+   version="1.1"
+   id="svg2"
+   sodipodi:docname="OL.svg"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="namedview2"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:zoom="1.0861601"
+     inkscape:cx="154.21299"
+     inkscape:cy="109.56027"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     fill="#FFF"
+     d="M 0,0 H 513 V 342 H 0 Z"
+     id="path1"
+     style="fill:#3771c8"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     fill="#2e52b2"
+     d="M 500.69576,-47.902527 563.51612,18.481375 317.27379,180.50059 556.09929,329.60964 505.44451,392.14492 252.80889,221.86036 2.0665561,387.96876 -45.102341,334.4743 190.9092,175.7313 -42.806059,18.447752 6.9280503,-45.008203 254.45342,134.37152 Z"
+     id="path2"
+     sodipodi:nodetypes="ccccccccccccc"
+     style="fill:#d7e3f4;stroke-width:1.23024" />
+</svg>
diff --git a/ccflags/svg/OM.svg b/ccflags/svg/OM.svg
new file mode 100644 (file)
index 0000000..3fba679
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#D80027" d="M0 0h513v342H0z"/><path fill="#FFF" d="M138 0h377v114H138z"/><path fill="#4A7C3A" d="M138 230h377v114H138z"/><g fill="none" stroke="#FFF" stroke-width="10" stroke-miterlimit="2"><path d="M40.3 35.2s37.1 48 50.8 54.5c13.7 6.5 17.1 5.7 17.1 5.7"/><path d="M100 35.2S62.9 80.6 53.3 87.6c-9.6 7-18.7 7.8-18.7 7.8M51.7 65.3h37.9M70.7 35.2v30.1"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PA.svg b/ccflags/svg/PA.svg
new file mode 100644 (file)
index 0000000..a6f5940
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M256 256v170.663H0V256h256z"/><path fill="#D80027" d="M512 85.337V256H256V85.337h256z"/><path fill="#0052B4" d="m128 123.034 11.824 36.389h38.263l-30.955 22.491 11.823 36.389L128 195.813l-30.955 22.49 11.823-36.389-30.955-22.491h38.263z"/><path fill="#D80027" d="m384 293.697 11.824 36.389h38.263l-30.955 22.491 11.823 36.389L384 366.476l-30.955 22.49 11.823-36.389-30.955-22.491h38.263z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PE.svg b/ccflags/svg/PE.svg
new file mode 100644 (file)
index 0000000..16360e3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.331h512v341.326H0z"/><g fill="#D80027"><path d="M0 85.331h170.663v341.337H0zM341.337 85.331H512v341.337H341.337z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PF.svg b/ccflags/svg/PF.svg
new file mode 100644 (file)
index 0000000..a66c420
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><g fill="#D80027"><path d="M0 85.337h512v113.775H0zM0 312.888h512v113.775H0z"/></g><path fill="#FFDA44" d="M293.991 256c0 20.982-17.01 33.243-37.992 33.243S218.008 276.982 218.008 256s17.01-37.992 37.992-37.992 37.991 17.01 37.991 37.992z"/><path fill="#0052B4" d="M293.991 256c0 20.982-17.01 37.992-37.992 37.992s-37.992-17.01-37.992-37.992"/><g fill="#D80027"><path d="M232.259 246.506h9.498v19h-9.498zM270.247 246.506h9.498v19h-9.498zM251.247 232.259h9.498v33.243h-9.498z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PG.svg b/ccflags/svg/PG.svg
new file mode 100644 (file)
index 0000000..6ef2aa3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path d="M0 85.333h512V426.67H0z"/><path fill="#A2001D" d="M0 85.33h512v341.332"/><g fill="#FFF"><path d="m204.631 326.488 2.762 8.504h8.941l-7.233 5.255 2.763 8.502-7.233-5.254-7.233 5.254 2.762-8.502-7.233-5.255h8.94zM181.797 244.866l4.605 14.172h14.901l-12.056 8.757 4.605 14.172-12.055-8.759-12.055 8.759 4.606-14.172-12.056-8.757h14.901zM181.797 348.749l4.604 14.173h14.902l-12.057 8.757 4.606 14.173-12.055-8.759-12.055 8.759 4.604-14.173-12.054-8.757h14.899zM225.363 281.967l4.606 14.172h14.901l-12.056 8.758 4.605 14.172-12.056-8.759-12.054 8.759 4.606-14.172-12.056-8.758h14.901zM138.23 281.967l4.606 14.172h14.899l-12.054 8.758 4.603 14.172-12.054-8.759-12.055 8.759 4.605-14.172-12.055-8.758h14.9z"/></g><path fill="#FFDA44" d="M376.526 204.163c-7.628-7.628-17.538-12.133-28.189-12.908l31.88-24.795c-12.698-12.698-29.714-18.431-46.319-17.218a44.31 44.31 0 0 0-11.396-19.511l-12.593 25.186a18.47 18.47 0 0 0-3.148-4.197c-7.245-7.245-18.991-7.244-26.234 0s-7.245 18.99 0 26.234a18.536 18.536 0 0 0 4.197 3.148l-25.186 12.593a44.303 44.303 0 0 0 19.519 11.399c-1.217 16.606 4.511 33.619 17.209 46.317L324.12 214.6a11.053 11.053 0 0 1 7.807-3.202c2.973 0 5.768 1.158 7.87 3.26a11.055 11.055 0 0 1 3.26 7.87c0 2.974-1.158 5.768-3.26 7.87l10.494 10.494c4.905-4.905 7.607-11.428 7.607-18.364 0-5.675-1.81-11.071-5.153-15.534a29.492 29.492 0 0 1 13.288 7.662c11.573 11.572 11.573 30.403 0 41.975l10.494 10.494c8.409-8.409 13.039-19.59 13.039-31.481-.001-11.892-4.632-23.072-13.04-31.481z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PH.svg b/ccflags/svg/PH.svg
new file mode 100644 (file)
index 0000000..7533140
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M512 85.337V256H256L0 85.337z"/><path fill="#D80027" d="M512 256v170.663H0L256 256z"/><g fill="#FFDA44"><path d="m161.908 256-27.288-12.835 14.532-26.428-29.632 5.668-3.755-29.933-20.64 22.015-20.639-22.015-3.755 29.933-29.631-5.669 14.531 26.428L28.343 256l27.288 12.835L41.1 295.263l29.633-5.668 3.753 29.933 20.639-22.015 20.64 22.015 3.755-29.933 29.631 5.669-14.532-26.427zM21.789 117.607l9.081 12.696 14.879-4.714-9.268 12.56 9.081 12.694-14.809-4.932-9.268 12.559.117-15.608-14.809-4.934 14.88-4.712zM21.789 353.53l9.081 12.696 14.879-4.714-9.268 12.56 9.081 12.695-14.809-4.933-9.268 12.558.117-15.607-14.809-4.934 14.88-4.712zM210.395 235.569l-9.081 12.695-14.879-4.713 9.268 12.559-9.081 12.696 14.809-4.933 9.268 12.558-.117-15.607 14.809-4.934-14.88-4.713z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PK.svg b/ccflags/svg/PK.svg
new file mode 100644 (file)
index 0000000..f16fe95
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><g fill="#FFF"><path d="m393.508 170.516 17.512 18.875 23.363-10.821-12.541 22.487 17.513 18.876-25.263-4.978-12.539 22.488-3.073-25.564-25.263-4.978 23.363-10.82z"/><path d="M0 85.343h512v341.326H0z"/></g><path fill="#01411c" d="M128 85.331h384v341.337H128z"/><g fill="#FFF"><path d="M361.909 298.793c-31.037 22.426-74.378 15.446-96.804-15.592-22.427-31.038-15.446-74.379 15.593-96.804 9.677-6.992 20.55-11.125 31.613-12.563-21.283-3.183-43.777 1.613-62.598 15.211-38.2 27.602-46.792 80.944-19.191 119.145 27.601 38.199 80.944 46.792 119.145 19.189 18.82-13.598 30.436-33.448 34.096-54.655-4.839 10.05-12.176 19.076-21.854 26.069zM360.58 172.889l17.484 18.842 23.322-10.802-12.519 22.447 17.483 18.844-25.219-4.968-12.519 22.45-3.067-25.521-25.22-4.969 23.323-10.802z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PL.svg b/ccflags/svg/PL.svg
new file mode 100644 (file)
index 0000000..82b564b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><g fill="#FFF"><path d="M0 85.337h512v341.326H0z"/><path d="M0 85.337h512V256H0z"/></g><path fill="#D80027" d="M0 256h512v170.663H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PM.svg b/ccflags/svg/PM.svg
new file mode 100644 (file)
index 0000000..ec311d7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#00318A" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PN.svg b/ccflags/svg/PN.svg
new file mode 100644 (file)
index 0000000..1593ef6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.333h512V426.67H0z"/><path fill="#ACABB1" d="M400.696 219.822 384 225.387l-16.696-5.565-5.565-13.913 5.565-13.913h33.392l-5.566 13.913z"/><path fill="#338AF3" d="M345.043 219.822v61.217c0 29.821 38.957 38.957 38.957 38.957s38.957-9.137 38.957-38.957v-61.217h-77.914z"/><path fill="#6DA544" d="M348.555 295.541C358.131 313.927 384 319.996 384 319.996s25.869-6.069 35.445-24.455L384 236.518l-35.445 59.023z"/><path fill="#FFDA44" d="M422.957 280.421 384 219.822l-38.957 60.599v.618c0 5.518 1.337 10.328 3.512 14.503L384 240.405l35.445 55.137c2.175-4.175 3.512-8.983 3.512-14.503v-.618z"/><path fill="#FFF" d="M256 85.333v30.553l-45.167 25.099H256v59.359h-59.103L256 233.179v22.817h-26.68l-73.494-40.826v40.826h-55.652v-48.573l-87.43 48.573H0v-30.554l45.167-25.098H0v-59.359h59.103L0 108.139V85.333h26.68l73.494 40.825V85.333h55.652v48.572l87.43-48.572z"/><path fill="#D80027" d="M144 85.33h-32v69.332H0v32h112v69.334h32v-69.334h112v-32H144z"/><path fill="#0052B4" d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915z"/><path fill="#FFF" d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915z"/><g fill="#D80027"><path d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915zM71.846 200.344 0 240.259v15.737l100.174-55.652z"/></g><path fill="#0052B4" d="M100.174 140.982 0 85.33v15.737l71.847 39.915z"/><path fill="#FFF" d="M100.174 140.982 0 85.33v15.737l71.847 39.915z"/><g fill="#D80027"><path d="M100.174 140.982 0 85.33v15.737l71.847 39.915zM184.154 140.982 256 101.067V85.33l-100.174 55.652z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PR.svg b/ccflags/svg/PR.svg
new file mode 100644 (file)
index 0000000..c0878bb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><g fill="#D80027"><path d="M0 85.337h512V153.6H0zM0 221.863h512v68.263H0zM0 358.4h512v68.263H0z"/></g><path fill="#0052B4" d="M256 256.006 0 426.668V85.331z"/><path fill="#FFF" d="m83.477 195.132 15.107 46.498h48.894l-39.554 28.739 15.107 46.499-39.554-28.738-39.555 28.738 15.11-46.499-39.554-28.739H68.37z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PS.svg b/ccflags/svg/PS.svg
new file mode 100644 (file)
index 0000000..3f5fed7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path d="M0 85.337h512v113.775H0z"/><path fill="#268024" d="M0 312.888h512v113.775H0z"/><path fill="#e4312b" d="M256 256.006 0 426.668V85.331z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PT.svg b/ccflags/svg/PT.svg
new file mode 100644 (file)
index 0000000..407b0ec
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.337h512v341.326H0z"/><path fill="#6DA544" d="M196.641 85.337v341.326H0V85.337z"/><circle fill="#FFDA44" cx="196.641" cy="256" r="64"/><path fill="#D80027" d="M160.638 224v40.001c0 19.882 16.118 36 36 36s36-16.118 36-36V224h-72z"/><path fill="#FFF" d="M196.638 276c-6.617 0-12-5.383-12-12v-16h24.001v16c-.001 6.616-5.385 12-12.001 12z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PW.svg b/ccflags/svg/PW.svg
new file mode 100644 (file)
index 0000000..1ac8419
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#338AF3" d="M0 85.331h512v341.337H0z"/><circle fill="#FFDA44" cx="218.902" cy="255.994" r="74.207"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/PY.svg b/ccflags/svg/PY.svg
new file mode 100644 (file)
index 0000000..967a7e7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M0 85.337h512v113.775H0z"/><path fill="#0052B4" d="M0 312.888h512v113.775H0z"/><path fill="#6DA544" d="m289.579 216.738-12.592 12.592c5.37 5.372 8.693 12.792 8.693 20.988 0 16.392-13.289 29.68-29.68 29.68-16.392 0-29.68-13.289-29.68-29.68 0-8.195 3.322-15.616 8.693-20.988l-12.592-12.592c-8.594 8.594-13.91 20.466-13.91 33.579 0 26.228 21.261 47.489 47.489 47.489s47.489-21.261 47.489-47.489c0-13.112-5.316-24.985-13.91-33.579z"/><path fill="#FFDA44" d="m256 232.51 4.421 13.605h14.304l-11.573 8.408 4.421 13.604L256 259.719l-11.573 8.408 4.421-13.604-11.573-8.408h14.304z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/QA.svg b/ccflags/svg/QA.svg
new file mode 100644 (file)
index 0000000..a0a666f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#751A46" d="M0 0h512v342H0z"/><path fill="#FFF" d="M0 0v342h150.3l37.7-19.6-37.7-18.9 37.7-19-37.7-18.9 37.7-19-37.7-19 37.7-18.9-37.7-19 37.7-19-37.7-18.9 37.7-19-37.7-18.9 37.7-19-37.7-19L188 57l-37.7-19L188 19.1 150.3 0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/RE.svg b/ccflags/svg/RE.svg
new file mode 100644 (file)
index 0000000..ec311d7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><path fill="#00318A" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/RO.svg b/ccflags/svg/RO.svg
new file mode 100644 (file)
index 0000000..fabf12e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.326H0z"/><path fill="#0052B4" d="M0 85.331h170.663v341.337H0z"/><path fill="#D80027" d="M341.337 85.331H512v341.337H341.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/RS.svg b/ccflags/svg/RS.svg
new file mode 100644 (file)
index 0000000..de18ca1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.331h512v341.337H0z"/><path fill="#D80027" d="M0 85.331h512v113.775H0z"/><path fill="#FFF" d="M0 312.882h512v113.775H0z"/><path fill="#D80027" d="M129.468 181.793v85.136c0 48.429 63.267 63.267 63.267 63.267S256 315.356 256 266.929v-85.136H129.468z"/><g fill="#FFDA44"><path d="M155.634 196.634h74.201v-29.681l-14.841 7.42-22.261-22.26-22.259 22.26-14.84-7.42zM241.16 278.782l-48.231-48.231-48.231 48.231 15.741 15.74 32.49-32.49 32.49 32.49z"/></g><path fill="#FFF" d="M241.16 233.734h-22.504a14.74 14.74 0 0 0 2.001-7.418c0-8.196-6.645-14.84-14.84-14.84-5.663 0-10.581 3.172-13.083 7.836-2.502-4.663-7.421-7.836-13.083-7.836-8.195 0-14.84 6.644-14.84 14.84 0 2.706.736 5.235 2.001 7.418h-22.114c0 8.196 7.139 14.84 15.334 14.84h-.494c0 8.196 6.644 14.84 14.84 14.84 0 7.257 5.211 13.286 12.094 14.576l-11.694 26.401a48.075 48.075 0 0 0 18.149 3.544 48.079 48.079 0 0 0 18.149-3.544l-11.694-26.401c6.883-1.29 12.094-7.319 12.094-14.576 8.196 0 14.84-6.644 14.84-14.84h-.494c8.199 0 15.338-6.644 15.338-14.84z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/RU.svg b/ccflags/svg/RU.svg
new file mode 100644 (file)
index 0000000..1117270
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.33v341.332h512V85.33z"/><path fill="#0052B4" d="M0 85.333h512V426.67H0z"/><path fill="#FFF" d="M0 85.333h512v113.775H0z"/><path fill="#D80027" d="M0 312.884h512v113.775H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/RW.svg b/ccflags/svg/RW.svg
new file mode 100644 (file)
index 0000000..73a7a7c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#338AF3" d="M0 85.331h512v341.337H0z"/><path fill="#FFDA44" d="M0 255.994h512v81.619H0z"/><path fill="#496E2D" d="M0 337.614h512v89.043H0z"/><path fill="#FFDA44" d="m278.261 185.209 20.844 9.804-11.099 20.186 22.632-4.33 2.868 22.865 15.765-16.816 15.766 16.816 2.867-22.865 22.633 4.33-11.099-20.186 20.843-9.804-20.844-9.805 11.1-20.185-22.633 4.329-2.868-22.864-15.765 16.816-15.766-16.816-2.867 22.864-22.634-4.329 11.1 20.187z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SA.svg b/ccflags/svg/SA.svg
new file mode 100644 (file)
index 0000000..d898f67
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#055e1c" d="M0 85.333h512v341.333H0z"/><g fill="#FFF"><path d="M183.548 289.386c0 12.295 9.731 22.261 21.736 22.261h65.208c0 10.244 8.11 18.551 18.114 18.551h21.736c10.004 0 18.114-8.306 18.114-18.551v-22.261H183.548zM330.264 181.791v51.942c0 8.183-6.5 14.84-14.491 14.84v22.261c19.976 0 36.226-16.643 36.226-37.101v-51.942h-21.735zM174.491 233.734c0 8.183-6.5 14.84-14.491 14.84v22.261c19.976 0 36.226-16.643 36.226-37.101v-51.942H174.49v51.942z"/><path d="M297.661 181.788h21.736v51.942h-21.736zM265.057 211.473c0 2.046-1.625 3.71-3.623 3.71-1.998 0-3.623-1.664-3.623-3.71v-29.682h-21.736v29.682c0 2.046-1.625 3.71-3.623 3.71s-3.623-1.664-3.623-3.71v-29.682h-21.736v29.682c0 14.32 11.376 25.971 25.358 25.971 5.385 0 10.38-1.733 14.491-4.677 4.11 2.944 9.106 4.677 14.491 4.677 1.084 0 2.15-.078 3.2-.215-1.54 6.499-7.255 11.345-14.068 11.345v22.261c19.976 0 36.226-16.643 36.226-37.101v-51.943h-21.736l.002 29.682z"/><path d="M207.093 248.57h32.601v22.261h-32.601z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SB.svg b/ccflags/svg/SB.svg
new file mode 100644 (file)
index 0000000..9970ee8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#496E2D" d="M0 85.334h512v341.337H0z"/><path fill="#0052B4" d="M0 426.663V85.329h512"/><path fill="#FFDA44" d="M0 396.494v30.169h45.255L512 115.499v-30.17h-45.255z"/><g fill="#FFF"><path d="m85.688 108.787 5.12 15.756h16.566l-13.403 9.737 5.12 15.757-13.403-9.738-13.405 9.738 5.12-15.757L64 124.543h16.567zM170.312 108.787l5.121 15.756H192l-13.403 9.737 5.12 15.757-13.405-9.738-13.403 9.738 5.12-15.757-13.403-9.737h16.566zM85.688 191.289l5.12 15.756h16.566l-13.403 9.738 5.12 15.757-13.403-9.739-13.405 9.739 5.12-15.757L64 207.045h16.567zM170.312 191.289l5.121 15.756H192l-13.403 9.738 5.12 15.757-13.405-9.739-13.403 9.739 5.12-15.757-13.403-9.738h16.566zM128 150.037l5.12 15.756h16.568l-13.405 9.738 5.12 15.758L128 181.55l-13.403 9.739 5.12-15.758-13.405-9.738h16.568z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SC.svg b/ccflags/svg/SC.svg
new file mode 100644 (file)
index 0000000..df5386b
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#FFDA44" d="M235.454 85.337 0 426.663 427.345 85.337z"/><path fill="#6DA544" d="M512 329.393 0 426.663h512z"/><path fill="#D80027" d="M512 85.337h-84.655L0 426.663l512-204.512z"/><path fill="#0052B4" d="M0 85.337v341.326L235.454 85.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SD.svg b/ccflags/svg/SD.svg
new file mode 100644 (file)
index 0000000..0a5f70f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M0 85.337h512v113.775H0z"/><path d="M0 312.888h512v113.775H0z"/><path fill="#496E2D" d="M0 426.668V85.331l256 170.675z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SE.svg b/ccflags/svg/SE.svg
new file mode 100644 (file)
index 0000000..7ec1787
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.333h512V426.67H0z"/><path fill="#FFDA44" d="M192 85.33h-64v138.666H0v64h128v138.666h64V287.996h320v-64H192z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SG.svg b/ccflags/svg/SG.svg
new file mode 100644 (file)
index 0000000..c374c47
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M0 85.337h512V256H0z"/><g fill="#FFF"><path d="M83.478 170.666c0-24.865 17.476-45.637 40.812-50.734a52.059 52.059 0 0 0-11.13-1.208c-28.688 0-51.942 23.254-51.942 51.941s23.255 51.942 51.942 51.942c3.822 0 7.543-.425 11.13-1.208-23.336-5.095-40.812-25.867-40.812-50.733zM150.261 122.435l3.684 11.337h11.921l-9.645 7.007 3.684 11.337-9.644-7.006-9.645 7.006 3.685-11.337-9.645-7.007h11.921z"/><path d="m121.344 144.696 3.683 11.337h11.921l-9.645 7.007 3.684 11.337-9.643-7.006-9.645 7.006 3.685-11.337-9.645-7.007h11.921zM179.178 144.696l3.684 11.337h11.921l-9.645 7.007 3.684 11.337-9.644-7.006-9.644 7.006 3.685-11.337-9.645-7.007h11.921zM168.047 178.087l3.684 11.337h11.921l-9.644 7.007 3.684 11.337-9.645-7.006-9.643 7.006 3.684-11.337-9.644-7.007h11.92zM132.474 178.087l3.683 11.337h11.921l-9.644 7.007 3.684 11.337-9.644-7.006-9.644 7.006 3.684-11.337-9.644-7.007h11.92z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SH.svg b/ccflags/svg/SH.svg
new file mode 100644 (file)
index 0000000..67f09f7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 341.3"><path fill="#0052B4" d="M0 0h512v341.3H0z"/><path fill="#FFF" d="M256 0v117.4h-46.1l46.1 30.7v22.6h-22.6L160 121.8v48.9H96v-48.9l-73.4 48.9H0v-22.6l46.1-30.7H0v-64h46.1L0 22.7V0h22.6L96 48.9V0h64v48.9L233.4 0z"/><g fill="#D80027"><path d="M144 0h-32v69.4H0v32h112v69.3h32v-69.3h112v-32H144z"/><path d="M0 0v15.1l57.4 38.3H80zM256 0v15.1l-57.4 38.3H176z"/></g><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><g fill="#D80027"><path d="M0 0v15.1l57.4 38.3H80zM256 0v15.1l-57.4 38.3H176z"/></g><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><g fill="#D80027"><path d="M0 170.7v-15.1l57.4-38.2H80zM256 170.7v-15.1l-57.4-38.2H176z"/></g><path fill="#29DBFF" d="M449 139.7c-.1 44.4-7.2 92.1-65 114.9-57.8-22.8-64.9-70.5-65-114.9h130z"/><path fill="#ffda44" d="M449 139.7c0-16.7-.9-32.9-.5-47.1C426.9 83 398.4 81 383.9 81s-42.9 2-64.6 11.6c.4 14.2-.5 30.4-.5 47.1H449z"/><path fill="#BF521B" d="m369.5 204.5.3 10.3-12.8.2 4.9 13.2h-17.3c-18-20.2-23.4-42.4-24.9-68.1l9.1-9.7 8.3 14.3 10.8-12.8 7 7.8.8 15.7 13.8 29.1z"/><path fill="#474747" d="m436.6 192.5-8.6 18.3h-47l-29.2-19.5 25.7 10.5h25.1l3.7-6.5 7.2.2 2-3z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SI.svg b/ccflags/svg/SI.svg
new file mode 100644 (file)
index 0000000..8d8c70c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M0 199.112h512v113.775H0z"/><path fill="#D80027" d="M0 312.888h512v113.775H0z"/><path fill="#FFF" d="M233.606 196.639v14.837c0 34.081-44.522 44.522-44.522 44.522s-44.522-10.44-44.522-44.522v-14.837l-.145-44.188 89.043-.266.146 44.454z"/><path fill="#0052B4" d="M233.606 196.639v14.837c0 34.081-44.522 44.522-44.522 44.522s-44.522-10.44-44.522-44.522v-14.837l-.145-44.188 89.043-.266.146 44.454z"/><path fill="#FFF" d="M233.606 196.639v14.837c0 34.081-44.522 44.522-44.522 44.522s-44.522-10.44-44.522-44.522v-14.837l14.848 14.837 29.674-22.261 29.685 22.261 14.837-14.837z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SJ.svg b/ccflags/svg/SJ.svg
new file mode 100644 (file)
index 0000000..28a0c5d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.334h512v341.337H0z"/><path fill="#FFF" d="M512 295.883H202.195v130.783H122.435V295.883H0V216.111h122.435V85.329H202.195v130.782H512V277.329z"/><path fill="#2E52B2" d="M512 234.666v42.663H183.652v149.337h-42.674V277.329H0v-42.663h140.978V85.329h42.674v149.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SK.svg b/ccflags/svg/SK.svg
new file mode 100644 (file)
index 0000000..300f814
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M0 196.641h512v118.717H0z"/><path fill="#D80027" d="M0 315.359h512v111.304H0z"/><path fill="#FFF" d="M129.468 181.799v85.136c0 48.429 63.267 63.267 63.267 63.267S256 315.362 256 266.935v-85.136H129.468z"/><path fill="#D80027" d="M146.126 184.294v81.941c0 5.472 1.215 10.64 3.623 15.485h85.97c2.408-4.844 3.623-10.012 3.623-15.485v-81.941h-93.216z"/><path fill="#FFF" d="M221.301 241.427h-21.425v-14.283h14.284v-14.283h-14.284v-14.284h-14.283v14.284h-14.282v14.283h14.282v14.283h-21.426v14.284h21.426v14.283h14.283v-14.283h21.425z"/><path fill="#0052B4" d="M169.232 301.658c9.204 5.783 18.66 9.143 23.502 10.636 4.842-1.494 14.298-4.852 23.502-10.636 9.282-5.833 15.79-12.506 19.484-19.939a24.878 24.878 0 0 0-14.418-4.583c-1.956 0-3.856.232-5.682.657-3.871-8.796-12.658-14.94-22.884-14.94-10.227 0-19.013 6.144-22.884 14.94a25.048 25.048 0 0 0-5.682-.657 24.88 24.88 0 0 0-14.418 4.583c3.691 7.433 10.198 14.106 19.48 19.939z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SL.svg b/ccflags/svg/SL.svg
new file mode 100644 (file)
index 0000000..588393d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#6DA544" d="M0 85.337h512v113.775H0z"/><path fill="#338AF3" d="M0 312.888h512v113.775H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SM.svg b/ccflags/svg/SM.svg
new file mode 100644 (file)
index 0000000..cfd3f1a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#338AF3" d="M0 85.34h512v341.326H0z"/><path fill="#FFF" d="M512 85.334v166.69L0 256.175V85.334z"/><path fill="#6DA544" d="M323.744 203.099 256 270.843l-67.744-67.744a81.156 81.156 0 0 0-13.879 45.483v22.261c0 35.744 23.097 66.193 55.148 77.213-4.277 8.385-3.556 18.848 2.712 26.671l24.258-19.439 24.258 19.439c6.342-7.915 7.011-18.534 2.564-26.968 31.614-11.261 54.308-41.485 54.308-76.916v-22.261a81.174 81.174 0 0 0-13.881-45.483z"/><path fill="#FFDA44" d="M256 330.206c-32.732 0-59.362-26.63-59.362-59.362v-22.261c0-32.733 26.63-59.363 59.362-59.363s59.362 26.63 59.362 59.362v22.261c0 32.733-26.63 59.363-59.362 59.363z"/><path fill="#338AF3" d="M293.101 270.843v-22.261c0-20.458-16.643-37.101-37.101-37.101s-37.101 16.643-37.101 37.101v22.261L256 278.264l37.101-7.421z"/><path fill="#6DA544" d="M218.899 270.843c0 20.458 16.643 37.101 37.101 37.101s37.101-16.643 37.101-37.101h-74.202z"/><path fill="#FFDA44" d="M300.522 189.22c0-12.295-9.966-22.261-22.261-22.261a22.173 22.173 0 0 0-14.84 5.672v-13.093h7.421v-14.84h-7.421v-7.421h-14.84v7.421h-7.421v14.84h7.421v13.093a22.177 22.177 0 0 0-14.841-5.672c-12.295 0-22.261 9.966-22.261 22.261 0 6.591 2.867 12.512 7.421 16.589v13.093h74.203v-13.093c4.552-4.077 7.419-9.997 7.419-16.589z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SN.svg b/ccflags/svg/SN.svg
new file mode 100644 (file)
index 0000000..85b2c85
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.326H0z"/><path fill="#D80027" d="M330.207 85.331H512v341.337H330.207z"/><g fill="#496E2D"><path d="M0 85.331h181.793v341.337H0zM255.999 196.632l14.733 45.347h47.685l-38.576 28.029 14.734 45.348-38.576-28.026-38.577 28.026 14.737-45.348-38.576-28.029h47.681z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SO.svg b/ccflags/svg/SO.svg
new file mode 100644 (file)
index 0000000..1ee75a6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#338AF3" d="M0 85.331h512v341.337H0z"/><path fill="#FFF" d="m256 157.273 22.663 69.748H352l-59.332 43.106 22.664 69.749L256 296.769l-59.332 43.107 22.664-69.749L160 227.021h73.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SR.svg b/ccflags/svg/SR.svg
new file mode 100644 (file)
index 0000000..c6e1ba6
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.331h512v341.337H0z"/><path fill="#A2001D" d="M0 196.636h512v118.728H0z"/><g fill="#6DA544"><path d="M0 352.462h512v74.207H0zM0 85.331h512v74.207H0z"/></g><path fill="#FFDA44" d="m256.742 218.003 9.43 29.021h30.518L272 264.963l9.431 29.023-24.689-17.937-24.689 17.937 9.431-29.023-24.69-17.939h30.518z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SS.svg b/ccflags/svg/SS.svg
new file mode 100644 (file)
index 0000000..65f8191
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#496E2D" d="M0 322.783h512v103.88H0z"/><path d="M0 85.337h512v104.515H0z"/><path fill="#A2001D" d="M0 210.877h512v89.656H0z"/><path fill="#0052B4" d="M256 256.006 0 426.668V85.331z"/><path fill="#FFDA44" d="m73.178 209.188 20.831 29.067 34.084-10.83-21.207 28.795 20.83 29.069-33.939-11.271-21.208 28.794.234-35.762-33.94-11.273 34.083-10.83z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ST.svg b/ccflags/svg/ST.svg
new file mode 100644 (file)
index 0000000..2f4f5f4
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.337h512v341.326H0z"/><g fill="#6DA544"><path d="M0 85.337h512v113.775H0zM0 312.888h512v113.775H0z"/></g><path fill="#D80027" d="M256 256.006 0 426.668V85.331z"/><path d="m302.049 226.318 7.368 22.674h23.842l-19.288 14.016 7.366 22.674-19.288-14.015-19.287 14.015 7.366-22.674-19.288-14.016h23.842zM376.252 226.318l7.367 22.674h23.842l-19.288 14.016 7.367 22.674-19.288-14.015-19.288 14.015 7.367-22.674-19.288-14.016h23.842z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SV.svg b/ccflags/svg/SV.svg
new file mode 100644 (file)
index 0000000..c4b1c30
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><g fill="#0052B4"><path d="M0 85.337h512v113.775H0zM0 312.888h512v113.775H0z"/></g><path fill="#FFDA44" d="M228.582 261.936 256 214.447l27.418 47.489z"/><path fill="#6DA544" d="M291.616 277.616 256 295.425l-35.616-17.809v-23.744h71.232z"/><path fill="#FFDA44" d="m289.579 216.485-12.592 12.592c5.37 5.372 8.693 12.791 8.693 20.988 0 16.392-13.289 29.68-29.68 29.68-16.392 0-29.68-13.289-29.68-29.68 0-8.195 3.322-15.616 8.693-20.988l-12.592-12.592c-8.594 8.594-13.91 20.466-13.91 33.579 0 26.228 21.261 47.489 47.489 47.489s47.489-21.261 47.489-47.489c0-13.114-5.316-24.987-13.91-33.579z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SX.svg b/ccflags/svg/SX.svg
new file mode 100644 (file)
index 0000000..5511e2f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M512 85.331v166.69L0 256.173V85.331z"/><path fill="#FFF" d="M256 256.006 0 426.668V85.331z"/><g fill="#FFDA44"><path d="M59.621 256a59.546 59.546 0 0 0-.193 4.57c0 32.821 26.607 59.429 59.429 59.429s59.429-26.607 59.429-59.429c0-1.539-.078-3.061-.193-4.57H59.621z"/><circle cx="118.862" cy="210.287" r="18.286"/></g><path fill="#D80027" d="M77.715 205.714v59.429c0 31.494 41.144 41.143 41.144 41.143s41.144-9.649 41.144-41.143v-59.429H77.715z"/><path fill="#338AF3" d="M118.877 287.148c-7.632-2.746-22.876-9.767-22.876-22.006v-41.144h45.715v41.144c-.001 12.28-15.244 19.283-22.839 22.006z"/><path fill="#F3F3F3" d="M128.001 246.856v-9.142l-9.144-4.571-9.142 4.571v9.142l-4.571 4.573v18.285h27.428v-18.285z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SY.svg b/ccflags/svg/SY.svg
new file mode 100644 (file)
index 0000000..bb439bf
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600"><path d="M0 0h900v600H0z" fill="#0f0f0f"/><path d="M0 0h900v400H0z" fill="#fff"/><path d="M0 0h900v200H0z" fill="#047a3f"/><path d="m176.26 375 48.738-150 48.738 150-127.6-92.705h157.72M626.256 375l48.738-150 48.738 150-127.6-92.705h157.72M401.252 375l48.738-150 48.738 150-127.6-92.705h157.72" fill="#ce1126"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/SZ.svg b/ccflags/svg/SZ.svg
new file mode 100644 (file)
index 0000000..acf86aa
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600"><path fill="#2B5DEA" d="M0 0h900v600H0V0z"/><path fill="#FFDF29" d="M0 100h900v400H0V100z"/><path fill="#D70000" d="M0 150h900v300H0V150z"/><path fill="#FFF" d="M450 171.4v257.2c114.3 0 171.4-85.7 214.3-128.6-42.9-42.9-100-128.6-214.3-128.6z"/><path d="M450 171.4c-100 0-171.4 85.7-214.3 128.6C278.6 342.9 350 428.6 450 428.6V171.4z"/><path fill="#FFF" d="M346.3 254.3h21v91.3h-21zM398.2 254.3h21v91.3h-21z"/><path d="M477.8 254.3h21v91.3h-21zM529.7 254.3h21v91.3h-21z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TA.svg b/ccflags/svg/TA.svg
new file mode 100644 (file)
index 0000000..502683a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 341.3"><path fill="#0052B4" d="M0 0h512v341.3H0z"/><path fill="#FFF" d="M256 0v117.4h-46.1l46.1 30.7v22.6h-22.6L160 121.8v48.9H96v-48.9l-73.4 48.9H0v-22.6l46.1-30.7H0v-64h46.1L0 22.7V0h22.6L96 48.9V0h64v48.9L233.4 0z"/><g fill="#D80027"><path d="M144 0h-32v69.4H0v32h112v69.3h32v-69.3h112v-32H144z"/><path d="M0 0v15.1l57.4 38.3H80zM256 0v15.1l-57.4 38.3H176z"/></g><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><g fill="#D80027"><path d="M0 0v15.1l57.4 38.3H80zM256 0v15.1l-57.4 38.3H176z"/></g><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><g fill="#D80027"><path d="M0 170.7v-15.1l57.4-38.2H80zM256 170.7v-15.1l-57.4-38.2H176z"/></g><path fill="#29DBFF" d="M448.9 169.5c0 9.6-.3 29.6-1.4 39.2-4.1 34.9-23.5 68.8-62.1 85.9-45.3-17.9-60.8-51-64.9-85.9-1.1-9.6-1.5-19.4-1.5-29l.3-47.1h129.2l.4 36.9z"/><path fill="#FFF" d="M447.5 208.7c-.2 1.6-.4 3.3-.6 4.9-4.8 33.1-22.9 65.4-61.5 81-43.2-17-59.4-47.9-64.2-81-.2-1.6-.4-3.2-.6-4.9"/><path fill="#29DBFF" d="m385.4 251.7-22.9-43h45.8z"/><path fill="#FFF" d="m385.4 165.8-22.9 42.9h45.8z"/><ellipse fill="#FFBE57" cx="474.8" cy="236.8" rx="16.8" ry="43.3"/><ellipse fill="#FFBE57" cx="295.3" cy="236.8" rx="16.8" ry="43.3"/><path fill="#FFF" d="m385.4 31.5-33.4 44h68.5zM315.5 280s33.8 29.5 69.9 29.5 67.1-29.5 67.1-29.5l8.5 14.6S439.2 326 385.4 326 307 294.6 307 294.6l8.5-14.6z"/><ellipse fill="#A5A5A5" cx="386.3" cy="104.3" rx="34.3" ry="23.3"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TC.svg b/ccflags/svg/TC.svg
new file mode 100644 (file)
index 0000000..b510da0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.333h512V426.67H0z"/><path fill="#FFDA44" d="M332.058 191.996v78.221c0 38.103 51.942 49.779 51.942 49.779s51.942-11.675 51.942-49.779v-78.221H332.058z"/><path fill="#FF9811" d="M376.579 220.44c0 7.855-6.644 28.445-14.84 28.445s-14.84-20.589-14.84-28.445c0-7.856 14.84-14.222 14.84-14.222s14.84 6.367 14.84 14.222z"/><path fill="#A2001D" d="M415.961 235.93c2.394-5.6 4.257-13.785 4.257-17.86 0-6.546-8.904-11.852-8.904-11.852s-8.904 5.306-8.904 11.852c0 4.075 1.862 12.26 4.257 17.86l-5.141 11.123a26.898 26.898 0 0 0 9.788 1.831c3.463 0 6.766-.654 9.788-1.831l-5.141-11.123z"/><path fill="#6DA544" d="M372.87 270.217s-7.421 14.222-7.421 28.445h37.101c0-14.222-7.421-28.445-7.421-28.445l-11.13-7.111-11.129 7.111z"/><path fill="#D80027" d="M395.13 270.217v-3.555c0-5.891-4.983-10.666-11.13-10.666-6.147 0-11.13 4.776-11.13 10.666v3.555h22.26z"/><path fill="#FFF" d="M256 85.333v30.553l-45.167 25.099H256v59.359h-59.103L256 233.179v22.817h-26.68l-73.494-40.826v40.826h-55.652v-48.573l-87.43 48.573H0v-30.554l45.167-25.098H0v-59.359h59.103L0 108.139V85.333h26.68l73.494 40.825V85.333h55.652v48.572l87.43-48.572z"/><path fill="#D80027" d="M144 85.33h-32v69.332H0v32h112v69.334h32v-69.334h112v-32H144z"/><path fill="#0052B4" d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915z"/><path fill="#FFF" d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915z"/><g fill="#D80027"><path d="M155.826 200.344 256 255.996v-15.737l-71.847-39.915zM71.846 200.344 0 240.259v15.737l100.174-55.652z"/></g><path fill="#0052B4" d="M100.174 140.982 0 85.33v15.737l71.847 39.915z"/><path fill="#FFF" d="M100.174 140.982 0 85.33v15.737l71.847 39.915z"/><g fill="#D80027"><path d="M100.174 140.982 0 85.33v15.737l71.847 39.915zM184.154 140.982 256 101.067V85.33l-100.174 55.652z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TD.svg b/ccflags/svg/TD.svg
new file mode 100644 (file)
index 0000000..3c11067
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.337H0z"/><path fill="#0052B4" d="M0 85.331h170.663v341.337H0z"/><path fill="#D80027" d="M341.337 85.331H512v341.337H341.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TF.svg b/ccflags/svg/TF.svg
new file mode 100644 (file)
index 0000000..f9232b9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15"><path fill="#FFF" d="M0 0h21v15H0V0z"/><path fill="#0A388A" d="M0 0h22.5v15H0V0z"/><path fill="#FFF" d="M0 0h11.3v7.5H0V0z"/><path fill="#D80027" d="M7.1 0h3.6v7H7.1V0z"/><path fill="#0A388A" d="M0 0h3.6v7H0V0z"/><path fill="#FFF" d="M3.6 0h3.6v7H3.6V0zM14.5 6h5L19 7h-1.5v.5h1l-.5 1h-.5V10h-1V7H15l-.5-1zm4 2.5 1 1.5h-2l1-1.5zm-3 0 1 1.5h-2l1-1.5zm1.5 3L16 10h2l-1 1.5zM20 8c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5zm-6 0c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5zm1 4c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5zm4 0c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5zm-2 1c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TG.svg b/ccflags/svg/TG.svg
new file mode 100644 (file)
index 0000000..e1e26c2
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.337h512v341.326H0z"/><g fill="#496E2D"><path d="M0 85.337h512V153.6H0zM0 358.4h512v68.263H0zM0 221.863h512v68.263H0z"/></g><path fill="#D80027" d="M0 85.337h204.054v204.054H0z"/><path fill="#FFF" d="m102.026 133.938 13.26 40.812h42.916l-34.718 25.226 13.26 40.814-34.718-25.224-34.719 25.224 13.263-40.814-34.718-25.226h42.913z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TH.svg b/ccflags/svg/TH.svg
new file mode 100644 (file)
index 0000000..01b837c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.334h512V426.66H0z"/><path fill="#0052B4" d="M0 194.056h512v123.882H0z"/><g fill="#D80027"><path d="M0 85.334h512v54.522H0zM0 372.143h512v54.522H0z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TJ.svg b/ccflags/svg/TJ.svg
new file mode 100644 (file)
index 0000000..f9d8ffa
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M0 85.337h512v113.775H0z"/><path fill="#6DA544" d="M0 312.888h512v113.775H0z"/><g fill="#FFDA44"><path d="M226.318 300.522h59.364v-25.23l-11.873 5.937L256 263.421l-17.809 17.808-11.873-5.937zM192.355 270.84l2.763 8.504h8.94l-7.233 5.255 2.763 8.502-7.233-5.255-7.234 5.255 2.763-8.502-7.233-5.255h8.94zM200.921 241.16l2.763 8.502h8.94l-7.233 5.255 2.763 8.504-7.233-5.256-7.234 5.256 2.763-8.504-7.233-5.255h8.94zM225.409 218.899l2.763 8.502h8.94l-7.233 5.255 2.763 8.504-7.233-5.256-7.234 5.256 2.763-8.504-7.233-5.255h8.94zM319.645 270.84l-2.763 8.504h-8.94l7.233 5.255-2.763 8.502 7.233-5.255 7.234 5.255-2.763-8.502 7.233-5.255h-8.94zM311.079 241.16l-2.763 8.502h-8.94l7.233 5.255-2.763 8.504 7.233-5.256 7.234 5.256-2.763-8.504 7.233-5.255h-8.94zM286.591 218.899l-2.763 8.502h-8.94l7.233 5.255-2.763 8.504 7.233-5.256 7.234 5.256-2.763-8.504 7.233-5.255h-8.94zM256 207.767l2.763 8.503h8.941l-7.234 5.256 2.763 8.502-7.233-5.254-7.233 5.254 2.763-8.502-7.234-5.256h8.941z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TK.svg b/ccflags/svg/TK.svg
new file mode 100644 (file)
index 0000000..080b4af
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.337h512v341.326H0z"/><g fill="#FFF"><path d="m210.715 174.377 3.684 11.338h11.919l-9.643 7.006 3.684 11.337-9.644-7.007-9.644 7.007 3.684-11.337-9.645-7.006h11.921zM116.816 281.971l4.605 14.172h14.9l-12.055 8.757 4.606 14.173-12.056-8.76-12.055 8.76 4.604-14.173-12.054-8.757h14.899zM144.696 119.679l4.604 14.172h14.901l-12.056 8.758 4.606 14.171-12.055-8.759-12.056 8.759 4.606-14.171-12.055-8.758h14.9zM69.539 175.331l4.604 14.172h14.9l-12.055 8.758 4.606 14.171-12.055-8.758-12.056 8.758 4.606-14.171-12.055-8.758h14.9z"/></g><g fill="#FFDA44"><path d="M483.386 354.503H117.801s109.234-88.562 310.593-220.938c.001 0-88.443 128.935 54.992 220.938zM117.801 366.089c-11.177 0-11.195 17.37 0 17.37h365.585c11.177 0 11.195-17.37 0-17.37H117.801z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TL.svg b/ccflags/svg/TL.svg
new file mode 100644 (file)
index 0000000..c2d3e1e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.337h512v341.326H0z"/><path fill="#FFDA44" d="M256 256 0 90.691v44.242L155.826 256 0 377.067v44.242z"/><path d="M0 90.691v330.618L189.217 256z"/><path fill="#FFF" d="m44.184 213.36 24.912 23.577 30.121-16.41-14.723 30.98 24.911 23.575-34.012-4.43L60.67 301.63l-6.296-33.716-34.012-4.43 30.119-16.408z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TM.svg b/ccflags/svg/TM.svg
new file mode 100644 (file)
index 0000000..75d107f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#496E2D" d="M0 85.337h512v341.326H0z"/><g fill="#FFF"><path d="M357.208 183.679c8.397-23.404-1.036-48.858-21.281-61.536a52.131 52.131 0 0 1 10.884 2.621c27.002 9.688 41.038 39.428 31.35 66.431s-39.428 41.038-66.431 31.35a52.182 52.182 0 0 1-10.069-4.895c23.686 3.084 47.15-10.566 55.547-33.971zM310.637 115.729l-7.297 9.427-11.22-4.026 6.712 9.852-7.296 9.427 11.443-3.338 6.712 9.852.361-11.914 11.444-3.339-11.221-4.025z"/><path d="m330.338 146.448-7.296 9.427-11.221-4.026 6.712 9.852-7.296 9.427 11.443-3.339 6.712 9.853.36-11.915 11.445-3.34-11.221-4.024zM275.9 126.916l-7.296 9.427-11.219-4.024 6.711 9.851-7.296 9.426 11.443-3.338 6.712 9.852.361-11.915 11.444-3.337-11.221-4.027zM275.101 162.105l-7.296 9.427-11.221-4.026 6.712 9.852-7.296 9.427 11.444-3.338 6.711 9.852.362-11.915 11.443-3.338-11.22-4.026zM308.585 174.118l-7.296 9.427-11.22-4.026 6.712 9.853-7.297 9.426 11.444-3.338 6.712 9.852.36-11.915 11.443-3.338-11.219-4.025z"/></g><path fill="#D80027" d="M83.478 85.337h89.043v341.326H83.478z"/><path fill="#FFF" d="m117.458 175.191-14.908-11.105v-15.705l14.908-11.105h21.084l14.908 11.105v15.705l-14.908 11.105z"/><g fill="#FF9811"><path d="M128 137.276h-10.542l-14.908 11.105v7.678H128zM128 175.191h10.542l14.908-11.105v-8.012H128z"/></g><path fill="#FFF" d="m117.458 374.725-14.908-11.106v-15.704l14.908-11.105h21.084l14.908 11.105v15.704l-14.908 11.106z"/><g fill="#FF9811"><path d="M128 336.81h-10.542l-14.908 11.105v7.678H128zM128 374.725h10.542l14.908-11.106v-8.011H128z"/></g><g fill="#496E2D"><path d="m117.458 274.957-14.908-11.105v-15.703l14.908-11.106h21.084l14.908 11.106v15.703l-14.908 11.105zM153.971 299.391h-6.493v-6.493h-11.411l-8.068-8.068-8.067 8.068h-11.41v6.493h-6.493v12.986h6.493v6.492h11.41l8.068 8.069 8.068-8.069h11.41v-6.492h6.493zM153.971 199.623h-6.493v-6.492h-11.411l-8.068-8.069-8.067 8.069h-11.41v6.492h-6.493v12.986h6.493v6.492h11.41l8.068 8.07 8.068-8.07h11.41v-6.492h6.493z"/></g><g fill="#D80027"><path d="M120.576 248.576h14.84v14.84h-14.84z"/><circle cx="128" cy="206.113" r="7.421"/><circle cx="128" cy="305.887" r="7.421"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TN.svg b/ccflags/svg/TN.svg
new file mode 100644 (file)
index 0000000..7cbdb90
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.331h512v341.337H0z"/><circle fill="#FFF" cx="256" cy="255.994" r="96"/><g fill="#D80027"><path d="m267.826 219.291 16.47 22.695 26.673-8.649-16.496 22.676 16.468 22.695-26.664-8.681-16.495 22.676.017-28.04-26.664-8.682 26.674-8.648z"/><path d="M277.818 312.724c-31.33 0-56.727-25.397-56.727-56.727s25.397-56.727 56.727-56.727c9.769 0 18.96 2.47 26.985 6.819-12.589-12.31-29.804-19.909-48.803-19.909-38.558 0-69.818 31.259-69.818 69.818s31.26 69.818 69.818 69.818c18.999 0 36.215-7.599 48.803-19.909-8.026 4.347-17.216 6.817-26.985 6.817z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TO.svg b/ccflags/svg/TO.svg
new file mode 100644 (file)
index 0000000..4e31c70
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.331h512v341.337H0z"/><path fill="#FFF" d="M0 85.331h256v170.663H0z"/><path fill="#D80027" d="M141.357 157.303V130.59h-26.714v26.713H87.93v26.713h26.713v26.713h26.714v-26.713h26.713v-26.713z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TR.svg b/ccflags/svg/TR.svg
new file mode 100644 (file)
index 0000000..1e08e23
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#E30A17" d="M0 0h513v342H0z"/><path fill="#FFF" d="M259.7 118.6c-13.1-9.5-29-14.6-45.3-14.5-40.8 0-73.8 30.8-73.8 68.9s33.1 68.9 73.8 68.9c17.1 0 32.9-5.4 45.3-14.5-30 38.6-85.7 45.6-124.3 15.5s-45.6-85.7-15.5-124.3 85.7-45.6 124.3-15.5c5.8 4.5 11 9.8 15.5 15.5zm39.9 65.8-18.1 21.9 1.2-28.4-26.4-10.4 27.3-7.6 1.8-28.3 15.6 23.7 27.5-7.1-17.5 22 15.3 23.9-26.7-9.7z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TT.svg b/ccflags/svg/TT.svg
new file mode 100644 (file)
index 0000000..23886ae
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.337h512v341.326H0z"/><path fill="#FFF" d="m6.066 85.337 207.961 212.636 131.584 128.69h160.323L297.973 214.027 166.389 85.337z"/><path d="M43.364 85.337 384.69 426.663h83.946L127.31 85.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TV.svg b/ccflags/svg/TV.svg
new file mode 100644 (file)
index 0000000..d8caff3
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 600"><path fill="#0052B4" d="M0 0h900v600H0z"/><path fill="#00B2EE" d="M0 300h450V0h450v600H0V300z"/><path fill="#FFDA44" d="m345.3 480.9 29.4 90.6-77.1-56H393l-77.1 56 29.4-90.6zM706.4 340l29.4 90.6-77.1-56H754l-77.1 56 29.5-90.6zM812.8 261.5l29.4 90.6-77.1-56h95.3l-77.1 56 29.5-90.6zM812.8 37.4l29.4 90.6-77.1-56h95.3l-77.1 56 29.5-90.6z"/><path fill="#FFF" d="M449.9 0v206.3h-81l81 54V300h-39.7l-129-85.9V300H168.7v-85.9L39.7 300H0v-39.7l81-54H0V93.8h81L0 39.9V0h39.7l129 85.9V0h112.5v85.9L410.2 0z"/><path fill="#D80027" d="M253.1 0h-56.3v122H0v56.2h196.8V300h56.3V178.2h196.8V122H253.1z"/><path fill="#2E52B2" d="M449.9 39.9v53.9h-81z"/><path fill="#D80027" d="M0 300v-19.3l109.9-74.4h39.7L12.8 300zM12.8.1l136.8 93.7h-39.7L0 19.4V.1zM449.9.2v19.3L340 93.8h-39.7L437.1.2zM437.1 300l-136.8-93.7H340l109.9 74.4V300z"/><path fill="#FFDA44" d="m719.9 131.6 29.4 90.6-77.1-56h95.3l-77.1 56 29.5-90.6zM584 187.7l29.4 90.6-77.1-56h95.3l-77.1 56 29.5-90.6zM614 430.6l29.4 90.6-77.1-56h95.3l-77.1 56 29.5-90.6zM488 332l29.4 90.6-77.1-56h95.3l-77.1 56L488 332zM488 464l29.4 90.6-77.1-56h95.3l-77.1 56L488 464z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TW.svg b/ccflags/svg/TW.svg
new file mode 100644 (file)
index 0000000..c3660f1
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.337h512v341.326H0z"/><path fill="#0052B4" d="M0 85.337h256V256H0z"/><path fill="#FFF" d="M186.435 170.669 162.558 181.9l12.714 23.125-25.927-4.961-3.286 26.192L128 206.993l-18.06 19.263-3.285-26.192-25.927 4.96 12.714-23.125-23.877-11.23 23.877-11.231-12.714-23.125 25.927 4.96 3.286-26.192L128 134.344l18.06-19.263 3.285 26.192 25.928-4.96-12.715 23.125z"/><circle fill="#0052B4" cx="128" cy="170.674" r="29.006"/><path fill="#FFF" d="M128 190.06c-10.692 0-19.391-8.7-19.391-19.391 0-10.692 8.7-19.391 19.391-19.391 10.692 0 19.391 8.7 19.391 19.391 0 10.691-8.699 19.391-19.391 19.391z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/TZ.svg b/ccflags/svg/TZ.svg
new file mode 100644 (file)
index 0000000..480cbec
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#338AF3" d="M0 85.337h512v341.326H0z"/><path fill="#6DA544" d="M0 426.663V85.337h512"/><path fill="#FFDA44" d="M512 152.222V85.337H411.67L0 359.778v66.885h100.33z"/><path d="M512 85.337v40.125L60.193 426.663H0v-40.125L451.807 85.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/UA.svg b/ccflags/svg/UA.svg
new file mode 100644 (file)
index 0000000..8eaa507
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.337h512v341.326H0z"/><path fill="#338AF3" d="M0 85.337h512V256H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/UG.svg b/ccflags/svg/UG.svg
new file mode 100644 (file)
index 0000000..488d395
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 341.3"><path fill="#232323" d="M0 0h512v341.3H0z"/><path fill="#FFDA44" d="M0 56.9h512v56.9H0z"/><path fill="#D32300" d="M0 113.8h512v56.9H0z"/><path fill="#FFDA44" d="M0 227.6h512v56.9H0z"/><path fill="#D32300" d="M0 284.4h512v56.9H0z"/><circle fill="#FFF" cx="256" cy="170.7" r="80.7"/><path d="M234.5 127.5c.9-1.4-19.6-2-19.6-2 1.7-2.5 18.4-10.5 18.4-10.5s-.9-6 2.7-9.8l-4.5-9.8s7-3.4 18.4-3.4 19.9 7 21 13.1l-6.4 3.4c-.1 4.7 1.7 11.6-4.3 17.3-5.9 5.7-8.3 6.9-8.5 18.8 0 3.9 2.3 8.2 8.8 11.7 17.4 9.3 38.6 28.2 44.6 33.9 6.1 5.7 5.1 19.2 2.6 25.2s-12.1 14.3-14.3 13.6c-2.2-.6 1.2-9.2-3.5-11.6 0 0-8.9-7.6-16.8.6s-.2 25.2 3.9 28c4.1 2.8 1.7 5-1.9 5H247c-3.8 0-5.4-2.3-1.9-5 7.6-3.8 12.4-15.3 7.4-20.3-4.9-4.9-18.3 1.5-21.5 6.3-2.8 2.8-8.8 3.6-12.9-1.4s-4.1-10.4-1.1-12.5c7-4.8 0 0 .1-.1 0 0 11.9-8.6 29.9-9 3.9 0 4.8-2.2 2.2-4.8 0 0-30.9-27.4-28.1-44.2 3-18.3 20-26.3 13.4-32.5-1.3-1.8 0 0 0 0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/UM.svg b/ccflags/svg/UM.svg
new file mode 100644 (file)
index 0000000..dc427e7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#D80027"><path d="M0 0h513v26.3H0zM0 52.6h513v26.3H0zM0 105.2h513v26.3H0zM0 157.8h513v26.3H0zM0 210.5h513v26.3H0zM0 263.1h513v26.3H0zM0 315.7h513V342H0z"/></g><path fill="#2E52B2" d="M0 0h256.5v184.1H0z"/><g fill="#FFF"><path d="m47.8 138.9-4-12.8-4.4 12.8H26.2l10.7 7.7-4 12.8 10.9-7.9 10.6 7.9-4.1-12.8 10.9-7.7zM104.1 138.9l-4.1-12.8-4.2 12.8H82.6l10.7 7.7-4 12.8 10.7-7.9 10.8 7.9-4-12.8 10.7-7.7zM160.6 138.9l-4.3-12.8-4 12.8h-13.5l11 7.7-4.2 12.8 10.7-7.9 11 7.9-4.2-12.8 10.7-7.7zM216.8 138.9l-4-12.8-4.2 12.8h-13.3l10.8 7.7-4 12.8 10.7-7.9 10.8 7.9-4.3-12.8 11-7.7zM100 75.3l-4.2 12.8H82.6L93.3 96l-4 12.6 10.7-7.8 10.8 7.8-4-12.6 10.7-7.9h-13.4zM43.8 75.3l-4.4 12.8H26.2L36.9 96l-4 12.6 10.9-7.8 10.6 7.8L50.3 96l10.9-7.9H47.8zM156.3 75.3l-4 12.8h-13.5l11 7.9-4.2 12.6 10.7-7.8 11 7.8-4.2-12.6 10.7-7.9h-13.2zM212.8 75.3l-4.2 12.8h-13.3l10.8 7.9-4 12.6 10.7-7.8 10.8 7.8-4.3-12.6 11-7.9h-13.5zM43.8 24.7l-4.4 12.6H26.2l10.7 7.9-4 12.7L43.8 50l10.6 7.9-4.1-12.7 10.9-7.9H47.8zM100 24.7l-4.2 12.6H82.6l10.7 7.9-4 12.7L100 50l10.8 7.9-4-12.7 10.7-7.9h-13.4zM156.3 24.7l-4 12.6h-13.5l11 7.9-4.2 12.7 10.7-7.9 11 7.9-4.2-12.7 10.7-7.9h-13.2zM212.8 24.7l-4.2 12.6h-13.3l10.8 7.9-4 12.7 10.7-7.9 10.8 7.9-4.3-12.7 11-7.9h-13.5z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/US.svg b/ccflags/svg/US.svg
new file mode 100644 (file)
index 0000000..dc427e7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#D80027"><path d="M0 0h513v26.3H0zM0 52.6h513v26.3H0zM0 105.2h513v26.3H0zM0 157.8h513v26.3H0zM0 210.5h513v26.3H0zM0 263.1h513v26.3H0zM0 315.7h513V342H0z"/></g><path fill="#2E52B2" d="M0 0h256.5v184.1H0z"/><g fill="#FFF"><path d="m47.8 138.9-4-12.8-4.4 12.8H26.2l10.7 7.7-4 12.8 10.9-7.9 10.6 7.9-4.1-12.8 10.9-7.7zM104.1 138.9l-4.1-12.8-4.2 12.8H82.6l10.7 7.7-4 12.8 10.7-7.9 10.8 7.9-4-12.8 10.7-7.7zM160.6 138.9l-4.3-12.8-4 12.8h-13.5l11 7.7-4.2 12.8 10.7-7.9 11 7.9-4.2-12.8 10.7-7.7zM216.8 138.9l-4-12.8-4.2 12.8h-13.3l10.8 7.7-4 12.8 10.7-7.9 10.8 7.9-4.3-12.8 11-7.7zM100 75.3l-4.2 12.8H82.6L93.3 96l-4 12.6 10.7-7.8 10.8 7.8-4-12.6 10.7-7.9h-13.4zM43.8 75.3l-4.4 12.8H26.2L36.9 96l-4 12.6 10.9-7.8 10.6 7.8L50.3 96l10.9-7.9H47.8zM156.3 75.3l-4 12.8h-13.5l11 7.9-4.2 12.6 10.7-7.8 11 7.8-4.2-12.6 10.7-7.9h-13.2zM212.8 75.3l-4.2 12.8h-13.3l10.8 7.9-4 12.6 10.7-7.8 10.8 7.8-4.3-12.6 11-7.9h-13.5zM43.8 24.7l-4.4 12.6H26.2l10.7 7.9-4 12.7L43.8 50l10.6 7.9-4.1-12.7 10.9-7.9H47.8zM100 24.7l-4.2 12.6H82.6l10.7 7.9-4 12.7L100 50l10.8 7.9-4-12.7 10.7-7.9h-13.4zM156.3 24.7l-4 12.6h-13.5l11 7.9-4.2 12.7 10.7-7.9 11 7.9-4.2-12.7 10.7-7.9h-13.2zM212.8 24.7l-4.2 12.6h-13.3l10.8 7.9-4 12.7 10.7-7.9 10.8 7.9-4.3-12.7 11-7.9h-13.5z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/UY.svg b/ccflags/svg/UY.svg
new file mode 100644 (file)
index 0000000..9ee475c
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#0038a8"><path d="M0 38h513v38H0zM0 114h513v38H0zM0 190h513v38H0zM0 266h513v38H0z"/></g><path fill="#FFF" d="M0 0h256.5v190H0z"/><path fill="#FED443" d="m128.3 138.7-15.1 22.6-3.8-26.9L86 148.2l8.2-25.9-27.2 2.2 18.6-19.8L60.3 95l25.4-9.7L67 65.5l27.1 2.3-8.2-25.9 23.4 13.8 3.9-26.9 15.1 22.6 15.1-22.6 3.8 26.9 23.4-13.8-8.2 25.9 27.1-2.2-18.6 19.8 25.4 9.7-25.4 9.7 18.6 19.8-27.1-2.2 8.2 25.9-23.4-13.8-3.9 26.9-15-22.7zm0-.5c23.9.9 44-17.6 44.9-41.5.9-23.9-17.6-44-41.5-44.9h-3.4c-23.9.8-42.6 20.8-41.8 44.6.6 22.8 19 41.1 41.8 41.8zm0-10.6c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.3 34-34 34z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/UZ.svg b/ccflags/svg/UZ.svg
new file mode 100644 (file)
index 0000000..cec70f0
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.337h512v341.326H0z"/><path fill="#6DA544" d="M0 322.783h512v103.88H0z"/><path fill="#338AF3" d="M0 85.337h512v104.515H0z"/><path fill="#FFF" d="M0 210.877h512v89.656H0z"/><path fill="#338AF3" d="M0 85.337h512v104.515H0z"/><g fill="#FFF"><path d="M188.688 137.589c0-15.984 11.234-29.339 26.236-32.614a33.531 33.531 0 0 0-7.155-.777c-18.442 0-33.391 14.949-33.391 33.391s14.949 33.391 33.391 33.391c2.458 0 4.85-.273 7.155-.777-15.002-3.275-26.236-16.63-26.236-32.614zM234.658 152.766l2.261 6.957h7.315l-5.918 4.301 2.261 6.956-5.919-4.3-5.918 4.3 2.261-6.956-5.918-4.301h7.315zM258.006 152.766l2.26 6.957h7.315l-5.918 4.301 2.261 6.956-5.918-4.3-5.918 4.3 2.26-6.956-5.917-4.301h7.314zM281.353 152.766l2.26 6.957h7.315l-5.917 4.301 2.26 6.956-5.918-4.3-5.918 4.3 2.26-6.956-5.918-4.301h7.315zM304.7 152.766l2.262 6.957h7.315l-5.919 4.301 2.261 6.956-5.919-4.3-5.918 4.3 2.262-6.956-5.919-4.301h7.314zM328.048 152.766l2.26 6.957h7.315l-5.918 4.301 2.261 6.956-5.918-4.3-5.918 4.3 2.26-6.956-5.917-4.301h7.314zM258.006 128.482l2.26 6.956h7.315l-5.918 4.3 2.261 6.957-5.918-4.299-5.918 4.299 2.26-6.957-5.917-4.3h7.314zM281.353 128.482l2.26 6.956h7.315l-5.917 4.3 2.26 6.957-5.918-4.299-5.918 4.299 2.26-6.957-5.918-4.3h7.315zM304.7 128.482l2.262 6.956h7.315l-5.919 4.3 2.261 6.957-5.919-4.299-5.918 4.299 2.262-6.957-5.919-4.3h7.314zM328.048 128.482l2.26 6.956h7.315l-5.918 4.3 2.261 6.957-5.918-4.299-5.918 4.299 2.26-6.957-5.917-4.3h7.314zM281.353 104.198l2.26 6.956h7.315l-5.917 4.3 2.26 6.957-5.918-4.3-5.918 4.3 2.26-6.957-5.918-4.3h7.315zM304.7 104.198l2.262 6.956h7.315l-5.919 4.3 2.261 6.957-5.919-4.3-5.918 4.3 2.262-6.957-5.919-4.3h7.314zM328.048 104.198l2.26 6.956h7.315l-5.918 4.3 2.261 6.957-5.918-4.3-5.918 4.3 2.26-6.957-5.917-4.3h7.314z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VA.svg b/ccflags/svg/VA.svg
new file mode 100644 (file)
index 0000000..15621e7
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.326H0z"/><path fill="#FFF" d="M256 85.331h256v341.337H256z"/><path fill="#ACABB1" d="m321.353 233.837 32.073 42.43c-5.053 7.651-5.026 17.961.817 25.692 7.414 9.807 21.374 11.748 31.182 4.335 9.807-7.414 11.748-21.374 4.334-31.182-5.843-7.731-15.756-10.568-24.495-7.795l-49.988-66.129-11.838 8.949-17.759 13.424 17.899 23.677 17.775-13.401zm46.175 48.78a7.421 7.421 0 1 1 8.95 11.84 7.421 7.421 0 0 1-8.95-11.84z"/><path fill="#FFDA44" d="m376.367 247.24 17.899-23.677-17.759-13.424-11.838-8.949-49.988 66.129c-8.74-2.775-18.651.063-24.495 7.795-7.414 9.808-5.473 23.768 4.334 31.182 9.808 7.414 23.768 5.473 31.182-4.335 5.845-7.731 5.871-18.041.817-25.692l32.073-42.43 17.775 13.401zm-62.504 45.771a7.42 7.42 0 1 1-11.84-8.95 7.42 7.42 0 0 1 11.84 8.95z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VC.svg b/ccflags/svg/VC.svg
new file mode 100644 (file)
index 0000000..2db5414
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFDA44" d="M0 85.331h512v341.337H0z"/><path fill="#338AF3" d="M0 85.331h170.663v341.337H0z"/><g fill="#6DA544"><path d="M341.337 85.331H512v341.337H341.337zM214.261 283.82l-33.393-50.086 33.392-50.087 33.392 50.087zM297.739 283.82l-33.391-50.086 33.391-50.087 33.393 50.087zM256 350.603l-33.391-50.087L256 250.429l33.391 50.087z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VE.svg b/ccflags/svg/VE.svg
new file mode 100644 (file)
index 0000000..07cf3a8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15"><path fill="#FFCE00" d="M0 0h22.5v5H0z"/><path fill="#203899" d="M0 5h22.5v5H0z"/><path fill="#D82B2B" d="M0 10h22.5v5H0z"/><path fill="#FFF" d="m12.13 5.38.14.46.45.14-.39.27.01.48-.38-.29-.45.15.15-.44-.28-.38h.47zM10.36 5.38l.27.39h.47l-.28.38.15.45-.45-.16-.38.28.01-.47-.39-.28.45-.13zM13.8 5.94l-.01.48.39.27-.46.14-.14.45-.27-.38h-.48l.29-.38-.15-.45.45.16zM8.69 5.96l.4.27.44-.18-.13.46.3.36-.47.02-.26.4-.16-.44-.46-.12.37-.3zM15.24 7.13l-.2.44.25.4-.47-.05-.31.36-.1-.46-.43-.18.41-.24.03-.47.35.31zM15.43 8.25l.21.43.47.07-.34.33.08.46-.42-.22-.42.22.08-.46-.34-.33.47-.07zM7 8.2l.21.43.47.06-.34.33.08.47L7 9.27l-.42.22.08-.47-.34-.33.47-.06zM7.31 7.05l.45.14.38-.29v.48l.39.26-.45.15-.13.46-.28-.38-.47.01.27-.38z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VG.svg b/ccflags/svg/VG.svg
new file mode 100644 (file)
index 0000000..a66195e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#0052B4" d="M0 85.334h512v341.337H0z"/><path fill="#FFF" d="M256 85.334V202.66h-46.069L256 233.38v22.617h-22.628L160 207.078v48.919H96v-48.919l-73.372 48.919H0V233.38l46.069-30.72H0v-64h46.069L0 107.951V85.334h22.628L96 134.241V85.334h64v48.907l73.372-48.907z"/><g fill="#D80027"><path d="M144 85.33h-32v69.333H0v32h112v69.334h32v-69.334h112v-32H144z"/><path d="M0 85.329v15.083l57.377 38.251H80zM256 85.329v15.083l-57.377 38.251H176z"/></g><path fill="#2E52B2" d="M256 107.951v30.712h-46.069z"/><g fill="#D80027"><path d="M0 85.329v15.083l57.377 38.251H80zM256 85.329v15.083l-57.377 38.251H176z"/></g><path fill="#2E52B2" d="M256 107.951v30.712h-46.069z"/><g fill="#D80027"><path d="M0 255.997v-15.082l57.377-38.252H80zM256 255.997v-15.082l-57.377-38.252H176z"/></g><path fill="#FFDA44" d="m384 259.706-46.129 46.129c8.645 16.675 26.051 28.074 46.129 28.074s37.484-11.4 46.129-28.074L384 259.706z"/><path fill="#6DA544" d="M332.058 178.084V259.708c.001 39.759 51.942 51.941 51.942 51.941s51.941-12.182 51.942-51.942v-81.623H332.058z"/><path fill="#FFF" d="M372.87 215.181h22.261v59.359H372.87z"/><circle fill="#A2001D" cx="384" cy="215.181" r="11.13"/><g fill="#FFDA44"><path d="M346.902 192.92h14.84v14.84h-14.84zM346.902 226.312h14.84v14.84h-14.84zM346.902 259.703h14.84v14.84h-14.84zM406.261 192.92h14.84v14.84h-14.84zM406.261 226.312h14.84v14.84h-14.84zM406.261 259.703h14.84v14.84h-14.84z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VI.svg b/ccflags/svg/VI.svg
new file mode 100644 (file)
index 0000000..3d5556e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 341.3"><path fill="#FFF" d="M0 0h512v341.3H0z"/><path fill="#1583C4" d="m397.7 166.3-51 97.7c-1.1 2-.3 4.5 1.8 5.6 2 1.1 4.5.3 5.6-1.8l51-97.7c1-2.1.1-4.6-2-5.5-2-.9-4.3-.2-5.4 1.7z"/><path fill="#1583C4" d="m404.9 188-57.8 75.4c-1.3 1.9-.8 4.5 1.1 5.8 1.7 1.2 4.1.9 5.5-.7l57.8-75.4c1.4-1.8 1.1-4.4-.8-5.8-1.8-1.5-4.4-1.1-5.8.7z"/><path fill="#1583C4" d="m379 181.3-32.5 83.1c-.8 2.1.2 4.6 2.4 5.4 2.1.8 4.6-.2 5.4-2.4l32.5-83.1c.7-2.2-.4-4.5-2.6-5.3-2.1-.6-4.3.4-5.2 2.3z"/><path fill="#409347" d="M122.1 171.9c.4 1.7 1.2 4.7 2.2 8.5 1.7 6.4 3.6 12.8 5.6 18.7 2.3 6.9 14.7 31.4 20.2 39.1 6.9 9.7 14.1 19.3 21.5 28.6 1.6 1.9 4.5 2.1 6.4.5 1.8-1.6 2.1-4.3.7-6.2-7.3-9.2-14.4-18.6-21.2-28.2-4.2-5.8-17.2-31.1-19-36.7-2.9-8.7-5.4-17.6-7.6-26.5-.5-2.4-2.9-4-5.3-3.5s-4 2.9-3.5 5.3c-.1.2 0 .3 0 .4z"/><g fill="#FFD836" stroke="#231F20" stroke-miterlimit="10"><path d="M297.1 114.9S279.5 42.8 261 42.8c-6.9 0-11.9-.6-15.4 6.4-.9 1.7-20.7-1.6-19.1 20.8.5 6.9 1.1-9.8 14.9-3.4 6.3 3-16.4 48.2-16.4 48.2h72.1z"/><path d="m466.1 48.4-90.9 22c-75.3 18.3-42.1 44.4-42.1 44.4l-72.1 12-72.1-12s33.2-26.1-42.1-44.4l-90.9-22C43.1 45.3 38.1 51.8 45.3 63c0 0 106.6 104 126.8 112 20.2 8.1 40.8 0 40.8 0s-14.9 8.7-24 24c-9.2 15.3-4.6 34.7-38.9 40.2-5.5 6.6-5 14 2.9 19.9 7.9 5.8 72.1-48.1 72.1-48.1s-24 24.4-24 36.1c0 5.1 44.1 53.8 60.1 53.8s60.1-48.7 60.1-53.8c0-11.7-24-36.1-24-36.1s64.2 53.9 72.1 48.1 11.4-19.3 2.8-19.9c-28-1.8-29.7-24.9-38.9-40.2-9.2-15.3-24-24-24-24s20.6 8.1 40.8 0S476.7 63 476.7 63c7.2-11.2 2.3-17.7-10.6-14.6z"/></g><path fill="#FFF" stroke="#231F20" stroke-miterlimit="10" d="M201.3 111.8v80.3c0 45.7 59.7 59.7 59.7 59.7s59.7-14 59.7-59.7v-80.3H201.3z"/><g fill="#D80027"><path d="M225.2 137.7V235c8.2 6 17 10.2 23.9 12.9V137.7h-23.9zM296.8 137.7V235c-8.2 6-17 10.2-23.9 12.9V137.7h23.9z"/></g><path fill="#0052B4" d="M201.3 111.8h119.4v37.9H201.3z"/><path fill="#1583C4" d="m60.1 210.5-21.9-58.1H15.7l31.8 80.8h25.2l31.5-80.8H81.7zM451.5 151.9h18.9v81.7h-18.9z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VN.svg b/ccflags/svg/VN.svg
new file mode 100644 (file)
index 0000000..d52233d
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M196.641 85.337H0v341.326h512V85.337z"/><path fill="#FFDA44" d="m256 157.279 22.663 69.747H352l-59.332 43.106 22.664 69.749L256 296.774l-59.332 43.107 22.664-69.749L160 227.026h73.337z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/VU.svg b/ccflags/svg/VU.svg
new file mode 100644 (file)
index 0000000..a1c9397
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path d="M0 85.337h512v341.326H0z"/><path fill="#6DA544" d="M512 256v170.663H0L215.185 256z"/><path fill="#D80027" d="M512 85.337V256H215.185L0 85.337z"/><path d="M221.001 239.304 26.868 85.337H8.956l208.168 165.098H512v-11.131zM8.956 426.663h17.912l194.133-153.967H512v-11.131H217.124zM0 92.44v14.206L188.317 256 0 405.354v14.205L206.229 256z"/><g fill="#FFDA44"><path d="M8.956 85.337H0v7.103L206.229 256 0 419.559v7.104h8.956l208.168-165.098H512v-11.13H217.124z"/><path d="M63.718 292.382v-14.295c14.265 0 25.87-11.606 25.87-25.869 0-10.092-8.211-18.303-18.304-18.303-6.875 0-12.469 5.593-12.469 12.469 0 4.397 3.577 7.974 7.974 7.974a4.514 4.514 0 0 0 4.508-4.508h14.295c0 10.368-8.435 18.804-18.802 18.804-12.279-.002-22.269-9.993-22.269-22.271 0-14.758 12.006-26.764 26.764-26.764 17.975 0 32.599 14.623 32.599 32.599 0 22.145-18.018 40.164-40.166 40.164z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/WA.svg b/ccflags/svg/WA.svg
new file mode 100644 (file)
index 0000000..da4893b
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 513 342"
+   version="1.1"
+   id="svg3"
+   sodipodi:docname="WA.svg"
+   inkscape:export-filename="WA.svg"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     id="namedview3"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:zoom="1.5360624"
+     inkscape:cx="290.35279"
+     inkscape:cy="178.37817"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg3" />
+  <path
+     fill="#FF7415"
+     d="M 0,0 H 513 V 342 H 0 Z"
+     id="path1"
+     style="fill:#5aa02c"
+     sodipodi:nodetypes="ccccc" />
+  <path
+     fill="#ffda44"
+     d="M 573.54442,176.42513 575.86152,-10.353424 0,0 -11.067259,175.3401"
+     id="path2"
+     sodipodi:nodetypes="cccc"
+     style="fill:#e2e3db" />
+  <path
+     style="fill:#ff2a2a;stroke-miterlimit:10"
+     d="m 250.26451,94.432493 c -25.50506,-0.07856 -46.59807,13.875367 -55.54296,31.458987 -8.9449,17.58362 -9.77801,35.90249 -10.89649,52.26953 -1.11848,16.36704 -2.50124,31.09147 -5.18945,37.89844 -1.34411,3.40348 -2.41204,4.4884 -3.3125,5.1289 -0.90047,0.64051 -2.42518,1.58668 -7.67969,1.56836 h -0.0195 -0.0195 c -3.91845,-0.006 -4.39993,-0.51942 -6.63867,-3.03906 -2.23875,-2.51964 -4.92615,-7.78919 -6.68946,-13.95898 -2.98374,-10.44003 -1.16711,-54.49153 -0.73754,-73.61946 0.0782,-3.48035 29.42764,-45.222481 29.42764,-45.222481 l -66.40721,21.788151 -49.504521,17.87053 c 0,0 27.356654,24.02292 43.414761,42.69395 0,0 0.48027,37.73007 3.42406,48.03032 2.83621,9.92382 7.17729,20.75184 15.67383,30.31445 8.49291,9.55854 22.44724,17.10859 37.94922,17.14063 11.82998,0.0378 23.21811,-2.98627 32.15039,-9.33984 8.93727,-6.35713 14.62308,-15.29473 18.0332,-23.92969 6.82024,-17.26992 6.94935,-34.68625 8.02735,-50.46094 1.078,-15.77469 3.12729,-29.59808 6.42968,-36.08984 3.3024,-6.49176 3.82271,-8.54556 17.97852,-8.50196 l -0.0176,-0.002 c 11.08038,0.0429 9.49223,0.45771 12.28711,7.22852 2.79488,6.7708 4.27016,21.28407 5.22266,37.44726 0.95249,16.16319 1.3674,34.06762 9.1875,51.55078 7.81924,17.48128 28.11448,32.53026 52.57812,32.59961 24.06736,0.0802 44.17474,-15.29959 51.62695,-32.72265 7.45304,-17.42499 7.72343,-35.23053 8.51172,-51.41602 0.78829,-16.18549 2.06993,-30.85926 4.68946,-37.67969 1.30976,-3.41021 2.38223,-4.5028 3.18359,-5.08593 0.79997,-0.58213 2.0869,-1.45554 7.0293,-1.44336 4.39935,0.0214 5.01314,0.67713 7.19922,3.12695 2.18897,2.45307 4.77649,7.58834 6.43164,13.67773 3.31029,12.1788 3.01757,25.82032 3.01757,25.82032 l 41.9668,1.66797 c 0,0 0.983,-18.49881 -4.45508,-38.50586 -2.71903,-10.00353 -7.01179,-20.97286 -15.62304,-30.62305 -8.61125,-9.65019 -22.72435,-17.09622 -38.36133,-17.166017 h -0.0137 -0.0156 c -11.7119,-0.03608 -23.0657,3.065978 -31.88867,9.486327 -8.82297,6.42035 -14.3624,15.35424 -17.67774,23.98633 -6.63066,17.26418 -6.65442,34.73713 -7.43164,50.69531 -0.77722,15.95819 -2.33361,30.29389 -5.17773,36.94336 -2.84412,6.64947 -1.4988,7.27777 -12.87305,7.23828 h -0.01 -0.008 c -12.19836,-0.033 -11.38595,-1.10241 -14.35937,-7.75 -2.97342,-6.64758 -4.65766,-20.88688 -5.59961,-36.87109 -0.94194,-15.98421 -1.15467,-33.62375 -8.32812,-51.00195 -7.17307,-17.37816 -27.01207,-33.108437 -50.94689,-33.201127 h -0.008 z"
+     id="path3"
+     sodipodi:nodetypes="sssssccsssscccssscssssccssscsssscssccssscsssssscssscscs" />
+  <path
+     style="fill:#ff2a2a;stroke:none;stroke-width:1.21323;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+     d="m 90.03078,285.95364 37.75888,-17.57741 -1.30203,-37.10786 26.69162,-0.65102 0.35203,55.79663 z"
+     id="path4"
+     sodipodi:nodetypes="cccccc" />
+  <path
+     style="fill:#ff2a2a;stroke:none;stroke-width:1.21323;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+     d="m 263.70456,288.08145 37.75888,-17.57741 -1.30203,-37.10786 26.69162,-0.65102 0.35203,55.79663 z"
+     id="path4-3"
+     sodipodi:nodetypes="cccccc" />
+  <path
+     style="fill:#ff2a2a;stroke:none;stroke-width:1.21323;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+     d="m 318.69956,288.44685 37.75888,-17.57741 -1.30203,-37.10786 26.69162,-0.65102 0.35203,55.79663 z"
+     id="path4-3-6"
+     sodipodi:nodetypes="cccccc" />
+  <path
+     style="fill:#ff2a2a;stroke:none;stroke-width:1.21323;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+     d="m 68.573478,160.19125 15.815638,38.53004 37.128404,0.41234 -0.58182,26.69322 -55.753399,-2.22404 z"
+     id="path4-3-6-7"
+     sodipodi:nodetypes="cccccc" />
+  <path
+     style="fill:#ff2a2a;stroke:none;stroke-width:1.21323;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+     d="M 213.346,115.93396 351.09458,68.736311 329.9693,134.07614 220.10268,196.54649 Z"
+     id="path5"
+     sodipodi:nodetypes="ccccc" />
+</svg>
diff --git a/ccflags/svg/WF.svg b/ccflags/svg/WF.svg
new file mode 100644 (file)
index 0000000..592f0fb
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 100"><path fill="#D80B30" d="M0 0h150v100H0z"/><path fill="#00318A" d="M0 0h20v44.33H0z"/><path fill="#FFF" d="M20 0h20v44.33H20z"/><path fill="none" stroke="#FFF" stroke-width="3" d="M0 44.33h62.75V0"/><path fill="#FFF" d="M108.08 43.29 87.96 23.17h40.25l-20.13 20.12zm-6.7 6.71L81.25 29.88v40.25L101.38 50zm6.7 6.71L87.96 76.83h40.25l-20.13-20.12zm6.71-6.71 20.13-20.13v40.25L114.79 50z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/WS.svg b/ccflags/svg/WS.svg
new file mode 100644 (file)
index 0000000..b198a8f
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#D80027" d="M0 85.331h512v341.337H0z"/><path fill="#0052B4" d="M0 85.331h256v170.663H0z"/><g fill="#FFF"><path d="m165.483 181.79 2.764 8.504h8.939l-7.232 5.254 2.763 8.503-7.234-5.255-7.233 5.255 2.763-8.503-7.233-5.254h8.94zM120.579 115.007l4.606 14.173h14.9l-12.055 8.757 4.605 14.171-12.056-8.758-12.054 8.758 4.605-14.171-12.056-8.757h14.901zM165.101 129.848l4.606 14.172h14.9l-12.055 8.757 4.604 14.173-12.055-8.76-12.054 8.76 4.604-14.173-12.055-8.757h14.9zM129.909 189.211l4.606 14.172h14.9l-12.055 8.758 4.604 14.171-12.055-8.759-12.054 8.759 4.604-14.171-12.055-8.758h14.9zM90.899 152.108l4.605 14.173h14.9l-12.055 8.757 4.604 14.173-12.054-8.76-12.055 8.76 4.604-14.173-12.055-8.757h14.9z"/></g></svg>
\ No newline at end of file
diff --git a/ccflags/svg/XK.svg b/ccflags/svg/XK.svg
new file mode 100644 (file)
index 0000000..d31fca8
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 341.33"><path fill="#0052B4" d="M0 0h512v341.34H0z"/><g fill="#FFF"><path d="m220.72 42.63 7.95 16.11 17.77 2.58-12.86 12.54 3.04 17.7-15.9-8.36-15.9 8.36 3.03-17.7-12.86-12.54 17.78-2.58zM291.28 42.57l7.95 16.1 17.78 2.59-12.86 12.53 3.03 17.71-15.9-8.36-15.9 8.36 3.04-17.71-12.86-12.53 17.77-2.59zM353.36 53.93l7.95 16.11 17.77 2.58-12.86 12.54 3.04 17.7-15.9-8.35-15.9 8.35 3.04-17.7-12.87-12.54 17.78-2.58zM416.37 72.23l7.95 16.11 17.77 2.59-12.86 12.53 3.04 17.71-15.9-8.36-15.9 8.36 3.03-17.71-12.86-12.53 17.78-2.59zM158.64 53.93l7.95 16.11 17.78 2.58-12.87 12.54 3.04 17.7-15.9-8.35-15.9 8.35 3.04-17.7-12.86-12.54 17.77-2.58zM95.63 72.23l7.95 16.11 17.78 2.59-12.86 12.53 3.03 17.71-15.9-8.36-15.9 8.36 3.04-17.71-12.86-12.53 17.77-2.59z"/></g><path fill="#FFDA44" d="m217.53 259.33-27.22-13.61-27.22-54.43h27.22l27.22-27.22 13.61-27.22 27.22-13.61 13.61 13.61 27.22 13.61v13.61l13.61 13.61 40.83 27.22L340 245.73l-40.83 40.83-13.61-27.22-40.83 27.22v27.22l-13.61-13.61-13.59-40.84z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/YE.svg b/ccflags/svg/YE.svg
new file mode 100644 (file)
index 0000000..0149232
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path fill="#D80027" d="M0 85.337h512v113.775H0z"/><path d="M0 312.888h512v113.775H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/YT.svg b/ccflags/svg/YT.svg
new file mode 100644 (file)
index 0000000..1196883
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 60"><path fill="#FFF" d="M0 0h90v60H0z"/><path stroke="#7f7f7f" stroke-width=".25" fill="#ABABAB" d="M75.6 39.6c-1.1.7 0 1.8-.6 1.9-.6.1-1.5-1.4-.2-2.5 1.6-1.5 5.8 0 5.9 4.3 0 2.2-.9 6.8-7.2 6.8-7.6 0-11.4-5.7-11.4-11.4 0-4.8 3.7-13.5 6.5-14.6 3.1-1.2 6.7-3.5 6.8-5 0-.5-1.4-.1-3.3.9-3.1 1.7-6.6 2.5-6.6 1.4s2.9-3.1 4-4.6c1.2-1.6.9-5.5 3-5.5 7.6 0 9.9 7.7 7 11.7-1.9 2.6 4.3 1 4.3 1s0 5.3-3.2 7.3c-3 1.8-4.8 3.9-4.8 3.9s.2-4.6-.5-3.9c-.6.7-11.1 4.5-10.3 12 .3 3 4.5 5.4 8.5 5.2s5.7-2.4 5.8-4.9c.1-3.9-3-4.4-3.7-4zM10.7 43.6c.1 2.5 1.8 4.7 5.8 4.9s8.2-2.2 8.5-5.2c.8-7.5-9.7-11.3-10.3-12-.7-.7-.5 3.9-.5 3.9s-1.8-2.1-4.8-3.9c-3.2-2-3.2-7.3-3.2-7.3s6.2 1.6 4.3-1c-2.9-4-.6-11.7 7-11.7 2.1 0 1.8 3.9 3 5.5 1.1 1.5 4 3.5 4 4.6s-3.5.3-6.6-1.4c-1.9-1-3.3-1.4-3.3-.9.1 1.5 3.7 3.8 6.8 5 2.8 1.1 6.5 9.8 6.5 14.6 0 5.7-3.8 11.4-11.4 11.4-6.3 0-7.2-4.6-7.2-6.8.1-4.3 4.3-5.8 5.9-4.3 1.2 1.1.4 2.7-.2 2.5-.6-.1.6-1.2-.6-1.9-.6-.4-3.7.1-3.7 4z"/><path fill="#DE393A" d="M31 28.8v14c0 1.9 2.1 1.6 2.1 1.6h9.3c1.2 0 2.6 2.3 2.6 2.3s1.4-2.3 2.5-2.3h9.6s2 .2 2-1.8V28.7H31z"/><path fill="#3951A3" d="M31 13.1h28v15.7H31z"/><path fill="#FFF" d="M50.1 16.5c-.4 2.4-2.5 4.2-5.1 4.2-2.5 0-4.6-1.8-5.1-4.2-.5.9-.8 1.9-.8 3 0 3.3 2.6 5.9 5.9 5.9 3.3 0 5.9-2.6 5.9-5.9 0-1.1-.3-2.1-.8-3z"/><circle fill="#FEE05F" cx="39.1" cy="36.5" r="3"/><circle fill="#FEE05F" cx="50.9" cy="36.5" r="3"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ZA.svg b/ccflags/svg/ZA.svg
new file mode 100644 (file)
index 0000000..1b294c9
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#FFF" d="M0 85.337h512v341.326H0z"/><path d="M114.024 256.001 0 141.926v228.17z"/><path fill="#ffb915" d="M161.192 256 0 94.7v47.226l114.024 114.075L0 370.096v47.138z"/><path fill="#007847" d="M509.833 289.391c.058-.44.804-.878 2.167-1.318v-65.464H222.602L85.33 85.337H0V94.7L161.192 256 0 417.234v9.429h85.33l137.272-137.272h287.231z"/><path fill="#000c8a" d="M503.181 322.783H236.433l-103.881 103.88H512v-103.88z"/><path fill="#e1392d" d="M503.181 189.217H512V85.337H132.552l103.881 103.88z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ZM.svg b/ccflags/svg/ZM.svg
new file mode 100644 (file)
index 0000000..5ab44ec
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path fill="#496E2D" d="M0 85.331h512v341.337H0z"/><path fill="#FF9811" d="M490.668 195.476h-48c0-8.836-7.164-16-16-16s-16 7.164-16 16h-48c0 8.836 7.697 16 16.533 16h-.533c0 8.836 7.162 16 16 16 0 8.836 7.162 16 16 16h32c8.836 0 16-7.164 16-16 8.836 0 16-7.164 16-16h-.533c8.837 0 16.533-7.164 16.533-16z"/><path fill="#D80027" d="M341.337 255.994h56.888v170.663h-56.888z"/><path fill="#FF9811" d="M455.112 255.994H512v170.663h-56.888z"/><path d="M398.225 255.994h56.888v170.663h-56.888z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/ZW.svg b/ccflags/svg/ZW.svg
new file mode 100644 (file)
index 0000000..8bba16a
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 512 341.333"><path d="M0 85.333h512V426.67H0z"/><g fill="#FFDA44"><path d="M0 134.196h512v48.868H0zM0 329.668h512v48.868H0z"/></g><path fill="#057f44" d="M0 85.333h512v48.868H0z"/><g fill="#D80027"><path d="M0 183.069h512v48.868H0zM0 280.806h512v48.868H0z"/></g><path fill="#057f44" d="M0 378.542h512v48.128H0z"/><path fill="#FFF" d="M276.992 255.996 106.329 426.659H0V85.333h106.329z"/><path d="M256 255.996 85.334 426.662h20.987l170.667-170.666L106.321 85.33H85.334z"/><path fill="#D80027" d="m102.465 202.57 13.259 40.812h42.917l-34.718 25.226 13.26 40.814-34.718-25.224-34.72 25.224 13.262-40.814-34.718-25.226h42.915z"/><path fill="#FFDA44" d="m138.94 259.335-34.559-12.243s-2.553-23.955-2.708-24.766c-1.173-6.18-6.603-10.851-13.123-10.851-7.376 0-13.357 5.98-13.357 13.357 0 1.223.178 2.402.486 3.528l-9.689 9.755h17.229c0 17.882-13.344 17.882-13.344 35.691l7.402 17.809h44.522l7.422-17.809h-.004a17.782 17.782 0 0 0 1.381-5.231c6.397-2.589 8.342-9.24 8.342-9.24z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/unused/AC.svg b/ccflags/svg/unused/AC.svg
new file mode 100644 (file)
index 0000000..5339332
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#0052B4" d="M0 0h513v342H0z"/><path fill="#FFF" d="M440.1 181.1c-.1 39.2-6.4 81.4-57.4 101.5-51.1-20.1-57.3-62.3-57.4-101.5h114.8z"/><path fill="#29DBFF" d="M439.6 197.7c-2.8 34.9-12.4 67.4-57 85-44.4-17.6-54.5-51.2-56.9-84.9"/><path fill="#FFF" d="M437.8 214.1c-3.2 24.3-16.7 53.5-55.1 68.6-38.4-15.1-50.5-42.5-55.1-68.4"/><path fill="#29DBFF" d="M434.2 230.3c-5.7 17.7-19.3 39.4-51.3 52.8-32-12.6-45.2-33.8-51.4-53"/><path fill="#FFF" d="M426.7 246.9c-6.5 11.3-17.7 25.4-44 35.9-27.5-11.5-37.4-25.3-44-36.1"/><path fill="#29DBFF" d="M412.4 265.1c-8.1 7.2-12 11.2-29.6 17.9-20.1-7.9-22.6-11.6-29.2-17.5"/><path fill="#5CC85C" d="M383.3 231.6c-.2-.2-27.9 35.7-27.9 35.7-1.8-1.3-10-9.5-13.3-15l41.3-50.1 40.2 49.7c-3.9 6.5-11.4 13.6-13.2 15M382.6 85.3l-26.5 45h53z"/><ellipse transform="rotate(-82.3 291.431 225.686)" fill="#F7A226" cx="291.4" cy="225.7" rx="48.7" ry="15.7"/><ellipse transform="rotate(-68.099 303.087 164.67)" fill="#DDC7AB" cx="303.1" cy="164.7" rx="11.7" ry="7.2"/><ellipse transform="rotate(-81.738 291.697 271.697)" fill="#DDC7AB" cx="291.7" cy="271.7" rx="11.4" ry="3.3"/><ellipse transform="matrix(.9986 -.05353 .05353 .9986 -13.992 16.424)" fill="#DDC7AB" cx="299.6" cy="269.4" rx="3.3" ry="11"/><ellipse transform="rotate(-21.518 314.54 201.06)" fill="#DDC7AB" cx="314.5" cy="201.1" rx="4.1" ry="13.7"/><ellipse transform="rotate(-21.518 317.511 178.077)" fill="#DDC7AB" cx="317.5" cy="178.1" rx="13.7" ry="4.1"/><ellipse transform="rotate(-7.7 473.781 225.857)" fill="#F7A226" cx="473.6" cy="225.9" rx="15.7" ry="48.7"/><ellipse transform="rotate(-21.901 462.057 164.866)" fill="#DDC7AB" cx="462" cy="164.9" rx="7.2" ry="11.7"/><ellipse transform="rotate(-8.27 473.27 271.908)" fill="#DDC7AB" cx="473.4" cy="271.9" rx="3.3" ry="11.4"/><ellipse transform="matrix(.05353 -.9986 .9986 .05353 171.34 719.998)" fill="#DDC7AB" cx="465.5" cy="269.6" rx="11" ry="3.3"/><ellipse transform="rotate(-68.482 450.552 201.247)" fill="#DDC7AB" cx="450.6" cy="201.2" rx="13.7" ry="4.1"/><ellipse transform="rotate(-68.482 447.58 178.265)" fill="#DDC7AB" cx="447.6" cy="178.3" rx="4.1" ry="13.7"/><path fill="#B0C6CC" d="M373.3 130.3 356.1 155l17.8 26.1H396l4.7-25.4-5.4-25.4z"/><path fill="#FFF" d="M256 0v117.4h-46.1l46.1 30.7v22.6h-22.6L160 121.8v48.9H96v-48.9l-73.4 48.9H0v-22.6l46.1-30.7H0v-64h46.1L0 22.7V0h22.6L96 48.9V0h64v48.9L233.4 0z"/><path fill="#D80027" d="M144 0h-32v69.4H0v32h112v69.3h32v-69.3h112v-32H144z"/><path fill="#2E52B2" d="M256 22.7v30.7h-46.1z"/><path fill="#D80027" d="M0 170.7v-11l62.5-42.3h22.6L7.3 170.7zM7.3.1l77.8 53.2H62.5L0 11.1V.1zM256 .1v11l-62.5 42.3h-22.6L248.7.1zM248.7 170.7l-77.8-53.3h22.6l62.5 42.3v11z"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/unused/GE-AB.svg b/ccflags/svg/unused/GE-AB.svg
new file mode 100644 (file)
index 0000000..544852e
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M0 0h513v342H0z"/><g fill="#6DA544"><path d="M0 0h513v48.8H0zM0 97.5h513v48.8H0zM0 195h513v48.8H0zM0 292.6h513v48.8H0z"/></g><path fill="#D80027" d="M0 0h256.5v146.3H0z"/><path fill="#FFF" d="m116.9 114.4-7.5-14.8V69.9L128 59l18.6 10.9v22.3l7.4-7.4 4.2 3-4.2 11.8-14.9 14.8z"/><circle fill="#FFF" cx="82" cy="82.8" r="5.4"/><circle fill="#FFF" cx="90.8" cy="61.7" r="5.4"/><circle fill="#FFF" cx="106.6" cy="46.2" r="5.4"/><circle fill="#FFF" cx="128" cy="40.8" r="5.4"/><circle fill="#FFF" cx="149.4" cy="46.2" r="5.4"/><circle fill="#FFF" cx="165.2" cy="61.7" r="5.4"/><circle fill="#FFF" cx="174" cy="82.8" r="5.4"/></svg>
\ No newline at end of file
diff --git a/ccflags/svg/unused/GE-OS.svg b/ccflags/svg/unused/GE-OS.svg
new file mode 100644 (file)
index 0000000..18344e2
--- /dev/null
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 450 300"><path fill="#FFF" d="M0 0h450v300H0z"/><path fill="red" d="M0 100h450v200H0z"/><path fill="#FFDF00" d="M0 200h450v100H0z"/></svg>
\ No newline at end of file
diff --git a/ccflags/world_map.png b/ccflags/world_map.png
new file mode 100644 (file)
index 0000000..ac88fcf
Binary files /dev/null and b/ccflags/world_map.png differ
diff --git a/ccflags/world_map.svg b/ccflags/world_map.svg
new file mode 100644 (file)
index 0000000..f1e25bc
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="265.7"
+   width="494.7"
+   version="1.1"
+   id="svg13063"
+   sodipodi:docname="Simple world map.svg"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+  <metadata
+     id="metadata13069">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs13067" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1017"
+     id="namedview13065"
+     showgrid="false"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="284.3189"
+     inkscape:cy="133.85176"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg13063" />
+  <g
+     stroke-linejoin="bevel"
+     stroke-width="0.25"
+     stroke="#000"
+     id="g13061">
+    <use
+       stroke-width="1.5"
+       xlink:href="#a"
+       id="use13054" />
+    <g
+       id="a"
+       fill="#bcbec0">
+      <path
+         d="m275.9 201.8-1.4 1.46h-2.36v-2.15l1.83-1.18h1.93v1.87zm4.05-6.3v2.12l-1.8-1.08v-1.65h1.8v-5.97h-4.6l-10.94 7.33-2.69-3.09v6.07h-6.65l3.86 10.57h12.67l9.75-11.28 0.44-3.05-1.84 0.03zm-171.6-119.4 2.52-1.719h3.04l-2.51 1.719h-3.05zm22.97-9.127-3.22 2.792h-7.46l-2.31 1.582h1.78l-2.48 1.692h-1.77l2.47-1.692h-4.87l-2.11 1.64-2.15 0.215 0.43-3.705h-1.66l-1.94 1.289-3.6 5.315h-2.12l4.08-6.604 4.81-1.029-0.27-0.903-3.17-0.108-1.5-0.913-1.88 0.913h-2.2l0.9-1.945-4.551-2.082h-38.81l-12.78 13.48v10.36l4.666 4.667 16.32 2.098 2.177 3.302 4.59-0.161 3.788 7.44 7.058-8.861 16.78 0.053 1.11 8.388 2.66 0.07 0.07-10.44 27.16-23.22 1.85-0.32 1.05-3.307h-2.9zm16.06-1.435h9.48l-1.97-3.138-1.78-0.425v-2.251zm-70.28 50.76-3.657-7.88 3.036-3.81-3.787-7.442-4.59 0.161-2.177-3.301-16.32-2.098 0.031 0.032 0.695 7.348 5.02 9.5 2.057-1.59-3.959-8.441v-4.751h2.335l0.091 4.419 7.5 17.62 12.23 5.1 3.052-0.81 2.686 2.74 1.338-2.38h2.818l-0.402-3.09h2.415l3.141-2.34 0.133-3.41-3.435-0.06-2.731 4.48zm135.4-76.39 4.54-2.209v-0.622l-2.25-2.282-3.15 1.046-3.78-0.08-0.8 1.09-2.15-0.05v2.02zm40.41 47.95 0.01-2.144-2.43-0.064-0.02 1.58zm-92.08-68.56v2.26l11.28 0.161 2.89 4.987v4.51l-5.41 3.073 0.16 6.12 3.4 3.437h4.02l6.14-6.489 8.67-2.557 3.25-2.489 6.56-0.405 4.59-1.355 8.65-13.75 5.33-1.09 1.88-1.89-15.37-1.546-13.28 1.546h-16.08l-9.27 3.221zm261.6 87.05-1.31-1.37-2.15 3.06 2.15 2.01zm-20.64-37.93 0.43-2.416-4.51-0.725-1.72-2.819h-8.59l-17.56-4.348-1.93 4.348-7.14-2.174-5.33 4.06 17.36 10.14 20.08 0.215 2.42-4.924zm3.81 45.98-2.58 0.57v1.52l1.05 1.27 1.53-1.91zm-9.61-51.94 1.72 2.819 4.51 0.725-0.43 2.416-6.48 1.357-2.43 4.924-20.08-0.215-17.36-10.14-7.51 5.725 1.25 5.811-7.52 2.793 2.15 5.26 8 3.65 0.32 6.443 20.94 7.242 3.86-3.538 8.22 3.538-1.13 3.06 4.35 7.25 7.62-3.86 4.98 4.26 2.11-1.2 0.08 2.05 12.48-4.46 4.08-9.132-7.28-11.98 3.74-4.079h-4.3l-1.38 0.893-2.7-4.435 3.44-3.007 2.36 4.504 3.31-2.277 6.35-4.374v-8.483l-10.52-2.684-7.73-7.571h-7.51l1.71 6.067zm43.39 12.76 2.94-0.04 1.25-2.134-6.53-2.738 0.13 5.395 1.29 0.765zm-8.12 12.47-0.48 1.659 6.47-0.955 0.5 2.498 1.47-0.624 0.16-1.966 4.34-1.115-0.23-5.673-1.97-3.439-1.96-0.568 1.12 5.154-4.01 3.637zm-1.14 3.202 2.34-0.295 0.76 1.128-0.84 2.657zm6.24-1.1-1.13 2.053-1.49-1.691zm-7.08 35.04-3.55-0.37-1.29-1.61 1.29-2.96-1.28-2.84-2.34-0.05-0.57 5 3.31 3.99 3.88 0.49zm-11.18 8.87 1.57 0.31 2.79-2.32-0.06-1.9zm12.25 3.59v2.23l2.33-0.7-0.79-1.44 1.88-0.48-1.6-4.99-1.18 3.08h-3.86zm-6.87-11.13 1.66 1.63-0.54 1-1.34-1.31zm1.66 3.99 1.18 0.8 1.29-1.95-1.72-0.21zm4.4-2.04 1.62 2.09h1.77l-1.69-2.72zm0 1.76 0.91 1.59-0.73 0.97-1.28-1.93zm-1.93 1.61 0.83 1.25-0.83 1-0.95-1.16zm3.15 32.76 1.09 1.5 3.06-0.37v-1.13zm-24.59-17.64 0.15 4.32 2.46 4.3h7.82l3.87-4.94v-8.96l-2.79 0.29-2.26 4.27-7.57 1.69-1.63-0.99zm-5.56 11.28v-3.3l-12.89-13.37-4.41-1.69 14.93 20.33zm15.06 5.88 0.24 1.12-16.11-2.73 2.42-1.94 4.02 1.53 3.63-0.8zm10.3 0h-2.49l0.48 1.61h2.38l1-0.81zm-4.35 2.61 0.73 0.89h1.73l-0.6-1.29zm9.14-2.13-2.49 2.78 1.89 0.24 1.69-1.52zm-8.29-4.91 1.85-0.57-0.56-3.26 1.09-1.21 0.92 2.42 2.22 0.77v-1.74l-1.25-2.76 2.37-1.99-3.78 0.16-0.78-1.08 1.5-1.65 2.78 0.96 1.37-0.12 2.05-2.42-1.8-0.04-1.17 0.77-3.87-0.94-2.56 2.31 0.18 3.66-1.49 1.98zm13.89-5.19-0.43 1.51 4.19-0.43v-1.08zm0.97-9.75-1.4 1.38-0.53 3.44 1.93 0.47-0.43-3.05 1.12-1.4zm9.49 9.15-0.56-2.98-4.59 0.65zm-0.31 2.48 6.4 2.67 1.15 3.27-2.13 1.3 5.48 1.9v-10.79l-4.45-2.32-4.15 3.37-4.39-1.73-0.49 2.42zm-19.06-71.18-4.32-3.535-1.91 1.764 2.58 5.584 3.12-0.215zm-4.32-3.535-1.91-1.564 2.47-0.322-0.43-4.939-6.35 4.374 1.86 3.53 2.45 0.685zm-5.53 56.98-3.44 4.63-7.94 3.67 1.63 0.99 7.57-1.69 2.26-4.27 2.79-0.29v-3.28zm-26.32 0 1.38 4.48 5.68 4.84 0.44-1.72-5.36-7.92zm68.12 27.58 3.81-3.5 4.94 4.82 4.51 0.92-5.58-5.58 0.27-2.95-9.94-5.2v10.79zm10.46-5.78 2.01 1.2 3.47-1.95v-2.02zm2.8-5.67 4.05 2.9 1.62-0.55-4.11-2.45zm-84.29-42.84-4.35-7.25 1.12-3.06-2.52-1.08-3.38 2.43-1.59 10.99 2.51 2.1 0.96 5.02 1.77 0.53 1.27-1.59 2.36 2.66 1.31 4.86-0.31 5.02 2.03-3.98-3.65-13.16 2.47-1.79zm7.3 6.18 2.92 3.97-2.73 2.74h6.12v-1.56l-5.96-6.34-1.32-4.08-4.14-2.02-2.19 1.11v1.7l2.14 1.25v3.23zm-5.16 0v-3.23l-2.14-1.25-2.47 1.79 3.65 13.16-2.03 3.98-0.12 1.98 3.54 3 0.34 1.1 2.14-0.32-3.44-5.07 0.8-7.84 3.87 3.83v-3.21l3.94-3.95-2.92-3.97zm4.14 7.92v3.21l1.93 1.92 2.17-0.3 3.23-2.42v-3.62h-6.12zm1.37-9.11 5.96 6.34v5.18l-3.23 2.42 0.08 3.46 6.18-4.08-0.21-6.07-6.45-6.81 0.32-3.73 2.3-1.3-4.98-4.26-5.43 2.75 4.14 2.02zm-25.77-13.2-1.37 0.64 1.94 6.13 1.25-1.21 5.58 4.68 0.36-2.5-2.93-2.74-0.48-3.28-2.34 0.96zm2.01-0.42-3.38-0.84 0.47-2.12-0.97-0.336-2.07 3.296-11.37-4.306 0.03-3.632-2.84-0.984-0.32-6.443-2.48-1.13h-2.29l-3.4 2.416-0.09 2.057 2.06 1.167 0.98 4.021-4.47 4.114h-2.86v3.04l2.14 0.81v2.62l-3.86 1.03 0.33 0.39 3.19 1.01-1.49 1.53 1.41 1.83 2.53 0.3 0.45-2.1 1 0.01 8.13 23.38 5.16-3.17 0.8-9.4 11.77-11.37-1.94-6.13 1.37-0.64 2.01 2.68 2.34-0.96 0.48 3.28 2.93 2.74 1.23-8.49 3.38-2.43-5.69-2.458-3.86 3.538zm-17.29-7.938-0.03 3.632 11.37 4.306 2.07-3.296zm14.38 4.978-0.47 2.12 3.38 0.84 0.81-1.68zm-64.41-27.17 2.41 2.002 3.07-0.848 2.72 2.27-0.47-5.894 4.19-0.966 5.52 3.785 4.62-0.886 3.38 4.456 3.26-0.144 3.19-2.621 7.53-0.327 4.82 2.233-1.25-5.811 7.51-5.723-4.33-2.532-25.24-8.901-9.95 2.243v4.498h-17.64v5.812l2.36 2.952 5.05-2.04 3.01 2.04-3.65 1.771zm19.32 13.88-1.69-2.737-6.6-2.094-3.9 1.3-0.07 1.737-4.97-0.003-2.74-4.835-6.55 0.647v1.933l7.95 13.49 2.36 0.226 5.48 5.717 10.09 3.01h2.8l2.03-3.49-2.25-2.821-3.22-9.341zm-11.12-10.45-2.72-2.27-3.07 0.848 4.9 4.058-0.18 4.286 3.9-1.3 6.61 2.094 1.69 2.737 6.28-3.221-10.35-8.283h-4.39zm26.12 23.98h2.86l4.47-4.114-0.98-4.021-2.06-1.167 0.09-2.057 3.4-2.416h2.29l-4.77-2.179-5.08 0.733-1.61 6.978-5.87 5.427-6.3-0.063 0.5 1.428 2.25 2.821-2.03 3.49h8.8l2.32 2.64 3.86-1.03v-2.62l-2.14-0.81zm-16.88-27.06-5.52-3.785-4.19 0.966 0.47 5.894 2.67-1.051h4.39l10.35 8.283 3.39 0.907-1.54-4.53 4.81-1.38 0.27-2.048-7.1 0.314-3.38-4.456zm1.88 13.53-1.28 2.739 2.72 7.913 6.3 0.063 5.87-5.427 1.61-6.978-1.04-2.94-4.5 2.316-3.39-0.907zm13.75-5.985-4.04-1.311-1.57 0.452 1.54 4.53 4.5-2.316 1.04 2.94 5.08-0.733-0.75-0.341-1.48-3.631zm-1.18-6.738-3.19 2.621 3.84-0.17-0.27 2.048-3.24 0.928 4.04 1.311 4.32-0.41-0.67-1.629 7.52-2.793-4.82-2.233zm-38.55 3.772 2.88 2.628 3.13-0.309-2.18-3.841-2.36-0.584zm-6.19-1.087 4.27 1.087h1.92l1.47-2.106-5.45-2.471-2.21 0.478zm5.65 4.053 3.42-0.338-2.88-2.628h-1.92zm-32.55-32.75-1.13 0.267 0.29 0.217-0.32 1.45-3.17-1.45 0.01 1.882 4.32 1.102 3.11 1.423 1.2-1.026-0.43-3.056-1.58 0.48zm-4.31 4.517 2.41 0.803 0.66 1.364 0.52 1.455 3.83-3.248-3.11-1.423-4.32-1.102zm12.24-0.652h-3.62l-5.03 4.274 0.8 2.205 7.21 1.15 4.5-0.982-2.68-1.09 1.61-1.027zm-10.04-5.588-0.38 0.966 1.36 1.024 1.13-0.267 2.3 1.289 1.58-0.48-0.49-3.481-0.9 0.845zm9.4 13.22-7.21-1.15 0.45 1.252-2.58 3.217v1.82h9.75l0.94 1.782-1.69 2.649 1.48 0.619 0.4-1.228h5.78l-1.28 1.328 1.78 1.007 2.4-0.188-2.28-2.912 6-1.275 1.53-3.436-10.97-4.467zm-13.73-28.16-10.1 7.408v6.589l-1.39 2.177 3.8 4.375 6.2-5.49-2.9-3.6 6.53-7.137h1.29l-1.78-4.322zm-17.81 16.67 5.91-0.966 0.41 0.471 1.39-2.177v-6.589l10.11-7.408h5.59v-1.845l-5.73 0.292-19.65 13.6zm23.41-16.67h-3.94l1.77 4.322h1.04l-3.14 7.113 3.67 1.852h5.59l3.14-3.624-5.21-11.66-2.92 0.148zm169.4 32.4h1.93l-6.81-6.979-1.93-0.055 5.47 6.765 2.68 4.993h1.99zm-170.5-10.41-2.41-0.803 0.01 1.603 3.06 0.564zm144.1-24.13-1.85-2.513-11.44-1.87-3.22 2.899h-9.26l-3.86-2.899h-20.94l-1.29-4.616h-19.33l-17.04 7.622 3.73 4.618-3.22 3.328-2.91-9.511-5.14-0.407 2.47 5.623-19.87 0.537-18.57 7.623-2.45-4.668 7.06 0.266 3.44-1.718-13.53-4.314-2.88 0.147 5.21 11.66-3.14 3.624-0.76 0.71 0.49 3.481 0.43 3.056h3.62l2.79 4.53-1.61 1.027 2.68 1.09 10.97 4.467-1.53 3.436 0.72 1.717-1.77 0.483 0.31 2.824 6.41 2.245 2.21-0.478 5.45 2.471 2.36 0.584-1.47-2.577v-5.229l-2.36-2.952v-5.812h17.64v-4.498l9.95-2.243 25.24 8.901 4.33 2.53 5.33-4.06 7.14 2.174 1.93-4.348 17.56 4.348h8.59l3.22-0.644-1.72-6.067h7.52l7.73 7.571 10.52 2.684v8.483l4.61-0.81 2.48-3.7v-6.872l-7.09-8.053-6.87-0.107 1.18-8.482 14.17 0.107 1.54-4.814 5.98 2.263 0.02-2.219 1.48 0.153 2.58 2.469-2.49 1.695-0.3 5.069 10.09 9.557v-9.234l-5.69-5.477 13.48-4.268 0.17-1.376-6.78-1.845 2.64-2.057 6.06 1.252 4.11 0.081-3.3-3.541-21.16-4.191zm-151.1 35.94-2.49 2.041 3.62 1.345 3.86-0.666 3.06-3.218h-1.21v-0.761zm-1.85-1.75 1.85 1.75 6.84-1.259v-1.059l-6.2-0.753-0.26-0.102zm-13.06 4.977 2.22 0.159 2.01-0.464-0.72-2.175h-1.89l-1.23 0.567zm8.5-4.977h4.56l2.23-1.423-4.36-1.718-3.9 1.208zm-30.64 20.96 0.9 0.068 1.04-8.736-3.38-0.565-0.17 6.388zm52.89-15.28 1.69-2.649-0.94-1.782h-2.89zm-8.19-14.38-3.06-0.564-3.22 0.106-0.73-0.669-4.62 1.127-0.41-0.005 0.41 5.561 4.37 1.718 0.25 0.102 6.2 0.753 2.58-3.217-0.45-1.252-0.8-2.205zm0.4 9.949-3.06 3.218 2.74 4.55 6.84-0.779 1.95 0.537 0.8-2.476-1.48-0.619-2.14-4.431zm-12.45-9.954-5.93-0.068-0.27-1.054h-2.08l0.42 1.015-3.12 1.869-0.28 5.385 1.89 0.987-0.75 3.632 1.23-0.567h4.4l0.38-0.111 3.19-0.936-1.09-1.45-1.47-1.933 3.9-1.208zm-8.28-1.122h2.08l-0.11-0.446 0.68-3.822-1.87-0.026-1.33 2.998zm5.55-1.338-1.17-1.159-1.04 0.427-0.32 1.643 1.94-0.019zm1.81 12.61-3.57 1.047h-2.51l0.72 2.175 3.81-0.881h4.38l1.83-1.504 0.66-0.537-1.85-1.75h-4.56zm2.18 17.39h-3.87v0.967l1.45 0.993 2.42 0.375zm-10.15-5.449v3.973h1.85v-3.436zm-1.62-8.418-0.35 1.707 2.24 1.021h2.6l8 7.983 0.41 3.397 1.47-0.859 0.46-2.442 1.82-0.365-9.76-8.447 2.77-0.166-1.62-3.015-5.82 1.345zm2.55 5.681v1.638l0.92 0.347 0.41-1.985zm-18.46-10.04v1.181l3.32 1.794 0.44 5.883 4.92 3.147 1.52-1.965 7.2 0.052 0.21-3.005h0.19l-2.24-1.021 1.49-7.252-6.55-3.417-7.68 4.603zm12.33-5.696-1.83 1.093 3.67 1.914 1.05-0.566 0.04-0.886zm2.93 1.555 0.18-3.417-3.11 1.862zm-1.09 1.452 0.99 0.516 0.05-1.082zm-12.02-8.37 0.04 2.469-1.69 0.926 1.49 2.169-3.02 2.864 3.99-0.725 4.06-0.644 0.26-1.49h0.83l0.18-1.663-2.63-0.555-3.29-7.56-2.51-0.077v4.071zm-3.18 1.784v-1.613l-2.94-0.199 1.69 2.255zm-5.92 0.373v4.403l1.69-0.011v-1.503l3.22 0.443-0.24-3.262-1.69-2.255zm1.62 29.32 7.05 0.527 6.96-8.936-4.92-3.147-11.38 0.082-0.05 2.173 3.38 0.565zm15.62-3.76v-1.891l-2.18 1.891zm25.76-2.199 4.47-1.446-1.03-2.402-3.68 0.72zm-2.83-10.16 0.82 4.56 1.77 2.469 3.68-0.72-0.94-2.205-2.74-4.55zm-7.65 1.89 0.41-0.024 2.1-1.099 0.95-1.63-0.7-0.262h-4.38zm22.32 8.844-3.33-0.027 2.74 5.506 12.59 0.695 12.37-2.523v-1.933l-1.38-2.966-4.27-1.087-17.24 0.564zm-3.34-1.248h3.07l-1.24-2.67-1.86 0.601zm-13.75-3.57 1.11 0.275 2.13-1.631-0.6-3.354-4.55 0.616zm3.59 4.777 1.42 1.64 2.74 0.766-1.67 0.708 2.21 2.778 1.39-2.2-1.55-3.383 3.08-1.516h2.54l-0.03-2.069zm-2.44-10.47-2.92-1.083-0.95 1.63-2.1 1.099 0.73-0.044 3.39 3.92 0.7 0.174-1.91-4.094 4.55-0.616-0.22-1.206zm1.29 6.3 1.6-0.851-0.8-1.109-2.13 1.631zl0.9 3.881 0.25 0.292 1.66-0.536-0.24-3.128-0.97-1.36zm7.28 2.191 5.86-1.895 0.96-2.954-1.95-0.537-6.84 0.779zm43.73 28.14 1.36 0.9 0.89-0.92-1.56-2.2zm-27.13-18.53-3.59 1.329 2.57 0.644zm2.31 4.593v6.453l1.35 0.161 2.01-0.94 0.62-3.624 1.57-0.664 0.08-0.034-0.46-1.925-3.23 1.925zm24.38 13.65-3.55-5.8h-1.55l-1.11-1.439-3.03-0.01-9.59-5.013-1.58 0.664-0.61 3.624-2.02 0.94-1.34-0.161 12.51 21.74 0.25 0.81 1.3-2.23 4.44 0.56-0.41 1.69 6.29-3.3 8.85-2.37v-4.61l-4.61-0.65-1.4-2.57zm-7.61-7.244 1.41 0.005 1.1 1.439h1.55l-1.88-3.06h-1.77zm-8.98-8.541-2.62 1.564 0.48 2.011 9.49 4.961 1.63 0.005 0.41-1.616 3.49-0.021-7.84-13.29-3.6 0.735zm22.79 18.32-3.36-0.66 1.4 2.57 2.6 0.37 3.7-3.76-1.69-1.5zm0.64 2.28 2.01 0.28v4.61l-4.45 1.19v2.68l2.48 1.68 8.2-10.16-4.54-4.04-3.7 3.76zm-29.76-21.17-1.46 2.701 1.94 1.352 5.85-3.489 1.44-5.653-8.77 1.788-0.59 2.75zm22.92 28.43-6.29 3.3 0.41-1.69-4.44-0.56-1.3 2.23 2.22 7.24 16.28-7.34-2.48-1.68v-2.68zm-24.38-25.73 1.46-2.701-1.59-0.551-0.58 2.748zm-0.04 6.548 0.04-0.095v-6.453l-0.71-0.504-1.12 4.135zm13.38 92.14 1.7 4.02 4.07 0.18 6.93-22.23h-2.47l-8.05 8.36-0.81 5.8zm-44.74-54.6-1.18-3.49h2.36l-2.91-6.18v3.42l-4.18 8.66-3.65 0.21-0.51 3.56h1.58l-0.08 3.64h10.07l0.45-1.29h-0.02l-3.01-4.24zm-5.8 12.47h-2.83l-0.09 4.33 3.63 4.85v-4.15h4.66l-2.38-7.68h-2.99zv-2.65h-2.76l-0.07 2.65zm-9.45-9.14 0.64 2.85h4.54l0.51-3.56 3.65-0.21 4.18-8.66v-3.42h-15.65l-2.54 12.32zm-23.09-2.36 1.15 1.29v5.37l8.52-2.46v-7.88l-8.32-1.64v4.14zm1.15 6.66v-5.37l-3.08-3.47-2.73 2.57zm51.29 25.06-2.94-1.45v-5.36h-3.32l-0.67 2.36-3.31 0.11-0.86-2.97-5.26 0.04v11.73l-3 4.94 0.26 3.22h18.55l-3.03-3.76v-4.19h3.7zm-36.99-29.19-1.38-8.44h-4.4v10.11zm20.08 6.32 2.38 7.68h-4.66v4.15l1.83 2.44 4.44-2.03 4.67-7.75 0.74-5.78h-4.64l-0.45 1.29zm43.4-21.29 2.75 4.35 1.05-0.88-6.97-11.97-3.6 8.5zm-83.58 12.83 2.72-2.57-2.79-3.14-2.71 2.72zm87.06-5.64 1.75-1.26-1.43-2.46-2.09 1.75zm-12.94 39.06v2.58l2.26 1.51v3.22l-2.15 1.88v-3.77l-2.15-1.76-0.06 0.04-4.06 2.83 4.06 2.66v3.72l-2.54 5.94v6.58l1.84-0.03 0.12-0.89 3.81-2.66-0.28-8.01 8.94-7.33-0.89-8.36zm14.69-40.32-1.75 1.26 1.78 2 7.09 2.51-11.07 9.22v8.02l17.35-20.18-0.71-3.54-12.06 1.79zm-44.21 69.48h6.66v-17.03h8.84l-1.15-1.6h-20.96zm32.98-58.29-3.04 0.43 0.87 3.74-0.43 3.17-1.36 2.4 8.32 5.49 2.92-3.41v-8.02l3.22-2.69h-9.44zm-3.96 9.74-0.52 0.91h-2.99l0.77-1.32h-1.36l-3.06 7.58 5.56 7.83h2.1v4.39l8.9-1.85-1.08-12.05zm-68.11-47.5h-4.94v5.67l-1.82 2.76h-6.1l-0.22 6.37 7.5 5.39v-1.93h9.02l-0.86-15.38h4.75l-7.33-5.41zm62.77 50.17 1.24-3.08h-2.64l-0.84 3.55zm-1.82 4.5 1.82-4.5-2.24 0.47-0.61 2.57zm-72.13-27.31 2.89 3.12 2.71-2.72 2.79 3.14 1.93 2.18 1.35-1.18v-4.14l-0.65-2.95h-8.59zm14.62-9.1h-9.02v1.93l2.04 4.62h3.38l0.65 2.95 4.16 0.82v-4.17l15.97-6.47v-5.27l-13.29-9.79h-4.75zm55.51 47.67 3.22 1.29-1.12 2.25-9.47-4.67 0.12 4.67h-3.7v4.19l3.03 3.76h5.67l9.81-6.83v-8.09l-1.23-1.73-5.36 0.81zm-13.2 24.05 2.68 3.09 10.94-7.33-4.78-6.72h-8.84zm-41.1-61.4 4.16 0.82v-2.23h4.4l5.11-1.88-4.88-4.44-8.79 3.56zm61.86 33.92v8.09l0.06-0.04 2.15 1.76v3.77l2.15-1.88v-3.22l-2.26-1.51v-6.97zm14.31-37.51-2.75-4.35h-6.77l-4.79 11.31 6.62 6.92h9.44l7.85-6.53-7.09-2.51-3.55-3.97zm-19.45 22.1h4l1.14-1.99h2.96l0.43-3.17-0.87-3.74-5.73 0.8zm-40.75-34.42v5.27l-7.18 2.91 4.89 4.44 1.28-0.47 0.49-2.38h15.65l3.53-7.24-1.39-9.53h-6.96zm-33.47-4.24h6.09l1.83-2.76v-5.67h4.94v-3.439h-5.44l-7.34 9.559zm-0.45 12.57 4.93 1.44h-4.98l-0.09 2.37h9.9l-2.04-4.62-7.5-5.39zm4.93 1.44-4.93-1.44-0.05 1.44zm47.64-7.24-3.52 7.24 2.91 6.18h-2.36l1.18 3.49 11.68-5.52v-6.01l2.6-2.56 0.26-5.84-10.14-6.51h-3.99zm0.03-23.68-2.13-2.582-4.57-1.097-4.25 4.571 2.76 13.26h10.77l10.14 6.51 0.99-22.44-5.9-0.8-2.44 3.651zm-40.15 5.038h0.86v-0.731l12.24-6.681v-4.794l-9.02 0.94-8.66 11.27zm13.1-12.2v4.794l-12.24 6.681v1.64l20.61 15.2 10.31-7h0.18l-5.03-24.17-5.92-0.171zm13.83-2.859 2.27 10.92 4.25-4.571-1.67-0.4 0.21-5.8zm27.36 95.92 5.93 8.32h4.6l2.54-5.94v-3.72l-4.06-2.66-5.75 4zm2.72 22.66h2.36l1.4-1.46v-1.87h-1.93l-1.83 1.18zm7.81-8.37h-1.8v1.65l1.8 1.08zm4.84-97.06 0.03-0.084-1.79-2.917-14.04-1.908-0.75 17.02h15.39l3.1-1.77-6.38-10.96 3.49 2.845zm1.94 10.35-3.1 1.77h-15.4l-0.49 11.25-2.6 2.56v6.01l9.21 10.6 4.93 1.8 8.76-1.23-5.55-5.81 4.79-11.31 3.6-8.5zm-10.83 48.21 3.38-14.22-4.93-1.8-13.91 0.39-1.13 8.84-4.67 7.75-4.44 2.03 1 1.33 5.26-0.04 0.86 2.97 3.31-0.11 0.67-2.36h3.32v5.36l12.41 6.12 1.12-2.25-3.22-1.29 0.97-4.35 5.36-0.81zm-23.52-16.81 3.01 4.24h4.66l0.39-3.06 13.91-0.39-9.21-10.6-11.68 5.52zm-16.79-11.58-4.36 1.6 1.43 8.59 0.88-0.25zm-4.36 1.6-2.04 0.75 1.38 8.44 2.09-0.6zm-26.43 0.94 2.43-2.55h-4.68l-0.01 0.11zm-136.3-100.3-3.65-1.504-19.11 0.108-7.73 3.114v3.436l-8.696-0.107-1.65 2.303 7.339-0.264-9.448 3.544-4.565 6.185 3.921-0.065-7.517 4.939 2.748 0.215 14.39-6.871 16.61-0.58 5.046 5.047 1.906-2.052-1.665-1.719h-1.878l-1.834-2.102 15.79-13.63zm-12.49 31.96-2.631-2.148-1.128 0.967 1.834 2.398h1.925zm100.8 3.325-1.97-3.138-1.78-0.425v-2.251l-5.73 5.814zm-3-36.32-11.54-4.713-1.72-0.018-4.01 3.294 1.34-3.314-1.94-0.015-4.67 4.965 11.35-0.617 6.93 6.201-4.66-0.08-2.35 1.925h-5.29v1.512h5.37l4.55 3.763 1.24-0.542-1.08-2.39 3.13 1.49 1.02-0.443v-4.671l3.6 1.281 2.07-1.381-1.17-2.185-2.08-0.758zm-38.86 42.13h3.33l2.31-1.582h7.46l3.22-2.792h2.9l-1.05 3.304 5.15-0.888-3.38 1.61 0.32 1.397 9.18-3.225-4.48-0.213-2.09-1.883 2.07-3.21-1.01-0.964-6.49 2.945v-1.691l6.21-2.98 9.95-0.429 7.48-3.981 0.04-1.817-5.45-0.944-0.66-8.91-7.13 2.806 0.05-4.192-3.44-2.926h-4.67l-12.63 18.38-3.06 0.01 0.06-6.045-10.88-5.905 10.88-8.053 6.17-1.126-1.29-1.908 9.5-1.047 3.87-4.026-3.63-0.402-4.99 3.301 0.56-2.818-2.33-0.242-0.55-3.405-4.04 1.794 1.05 2.175-5.4 2.576-9.42-1.771-4.98 2.335-12.09-4.831-23.11 0.483-15.79 13.63 1.834 2.102h1.878l1.665 1.719-1.906 2.052-1.933 8.846 3.463 3.141v1.691h38.82l4.56 2.081 7.72-1.639 0.97 3.423 1.56 1.152 2.62-0.185zm13.93-34.5-2.96 2.407 5.85 0.619 0.62-1.514zm-11.42-6.123 1.09 1.407 2.76-1.407-0.82-1.306zm2.09-4.726 1.76 1.784 3.78-1.262 0.99-2.642zm7.21-1.062 0.48 1.691 5.15-1.369-1.04-1.38zm13.13-3.503-2.82-1.168-2.74 2.335 11.11 0.875 2.9-2.042zm27.05-6.241 5.8-3.273-23.03 1.708v1.243l7.77-0.161-1.09 1.45-8.05 0.16 1.05 1.853-3.47-0.564 1.37 1.771h-5.96l0.89 0.886h6.52l1.05 0.886 9.5-4.429zm-28.18 1.344 4.29 0.811 2.46-1.575-1.78-1.329zm-45.31 11.25 10.08-3.429-2.32-1.075-9.53 2.427zm11.38-2.803-5.431 1.847 3.201 1.348-4.993 1.272 6.203 2.416 4.27-1.853 4.75 1.128 3.56-0.817-3.48-1.607 2.68-3.46h-2.68l-1.61 2.082-0.65-2.082-2.84 1.102zm-7.867 84.83h4.947l3.99 2.66-1.52 1.69h6.92l-8.27-5.96h-4.376zm6.927 7.41 1.04 0.89h2.98v-1.05l-1.04-1.05h-2.98zm18.35-0.82-0.61 1.01h1.67l0.61-1.01zm-36.79 4.32h-2.818l-1.338 2.38 3.99 2.01 2.703-4.88-0.524-2.6h-2.415zm3.141 3.95-0.485 1.71 0.726 0.33 6.665-5.58-8.032 0.08-1.325 2.37zm-0.485 1.71 0.485-1.71-2.451-1.09-0.856 1.53zm2.498-11.09-3.141 2.34 0.524 2.6zm0.764 14.84 4.345 0.46-0.216-9.46-6.665 5.58zm7 26.34 3.555 1.7 6.34-7.78-6.46-3.69-3.065 3.86zm13.06-27.54-1.72-0.01-3.59 4.85-1.83 0.12 0.52 1.76-0.96 1.36 0.74 2.46-0.7 4.59-2.09 2.64 14.76 8.43v-9.46l3.43-0.23v-7.51l-5.63-0.58-2.45-2.71zm23.44 114.8 2.2 2.02 6.78 0.25-7.32-3.82zm10.42-48.75-2.96 1.8h-3.98v-3.54l-8.13-5.5-0.46 0.84h-6.78l-1.82 16.9 3.83 16.75 3.46 6.16 0.16 4.62 5.14 7.87 1.87 0.19-0.97-20.13 10.9-4.72-4.94-6.88v-7.57l4.81-4.94zm1.2 16.52 2.36-4.09-8.24-5.64v7.57zm-22.95-79.89-3.65-2.6-8.46-0.08 0.48 5.71 2.45 2.71 5.63 0.58v7.51l0.9-0.06 1.14 2.55 3.66-1.18-0.3-3.96 4.9-1.8 1.45-7.16-1.65-1.58zm-32.18-1.48 2.893 3.91 1.044 0.37 1.466-1.9-1.027-0.57-0.031-1.35zm45.48 8.56-5.11-4.86-1.45 7.16 2.13-0.78-0.29 6.11 4.89-0.55-1.67-4.28zm-12.64 29.49-4.99 1.41v11.41l3.76 7.58h6.78l2.64-4.84 5.11-0.03-0.12-3.82-8.7-7.11zm17.2-22.89 3.28-0.37 0.97-2.75-1.29-2.83-2.74-0.23zm-3.9 38.42-5.11 0.03-2.18 4 8.13 5.5v3.54h3.98l2.96-1.8-0.2-2.8-7.44-3.97zm-0.49-37.94 4.39-0.48 0.22-6.18-4.78-0.42-1.5 2.8zm20.55 6.13-3.72-1.61-3.72 2.18 1.21-3.26-2.47-1.07-3.51 2.7 2.55-3.76-2.25-4.91-0.97 2.75-12.56 1.4 0.29-6.11-2.13 0.78-4.9 1.8 0.3 3.96-3.66 1.18-1.14-2.55-4.33 0.29v11.17l-4.4 0.54-1.94 6.33 7.36 6.34 6.63-1.87 4.48 4.6 8.7 7.11 0.26 8.32 7.44 3.97 0.33 4.65-4.81 4.94 8.24 5.64 4.8-8.37 1.13-7.25 11.66-5.16 2.17-16.12 5.03-6.58v-3.98l-8.23-5.36-8.05-0.49zm-57.62-19.53-1.366 1.14-1.812-1-1.466 1.9 4.313 1.54 1.045-1.56 2.47 0.24 0.72 2.38 0.96-1.36-0.45-1.65-0.54-1.97zm12.21 25.01 4.4-0.54v-1.71l-8.3-4.74-6.34 7.78-3.555-1.7-0.114 1.82 10.8 18.39 9.33 6.25 0.84-1.93v-11.41l-1.64 0.46-7.36-6.34zm12.83 64.85-3.83-16.75 1.82-16.9-3.76-7.58-0.84 1.93 1.57 38.25 4.13 3.34 0.19 6.86 7.16 9.26 2.32 0.24-5.14-7.87-0.16-4.62zm-5-107.2-4.87-0.54v2.69l1.63-1.21h2.6zm-4.87 1.49v-2.03h-3.04l0.99 1.4h-1.77v0.63zm319.7 17.33"
+         id="path13056" />
+      <path
+         d="m481.4 220-1 3.2 7.3-5.2-2.1-2.8v-3.2l-1.2 0.5v4.5zm-19.2 10.5 15.2-7.7v2l-11.7 7.7zm-62.3-39.5 12.8-6 9.5-10.5 5.2 2.3 2.3-4.8 8.7-0.2-2.2 4 7.2 6.2 4.8-4.8v-6.7l2.2 0.7 2.5 12 7.8 11-0.8 8.3-14.2 14.7-12.3-0.7-1.5-8.3-4.2 1.8-4-3.5-24.3 5.3-1.5-1.8 2-4.8z"
+         id="path13058" />
+    </g>
+  </g>
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 267.21815,132.10483 11.04145,-0.63348 3.23604,-4.3489 2.2862,4.94543"
+     id="path13085"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="cccc" />
+</svg>
diff --git a/content_skaterift/textures/cc.qoi b/content_skaterift/textures/cc.qoi
new file mode 100644 (file)
index 0000000..251ebaf
Binary files /dev/null and b/content_skaterift/textures/cc.qoi differ
diff --git a/content_skaterift/textures/menu_icons.qoi b/content_skaterift/textures/menu_icons.qoi
new file mode 100644 (file)
index 0000000..695abb3
Binary files /dev/null and b/content_skaterift/textures/menu_icons.qoi differ
diff --git a/content_skaterift/textures/world_map.qoi b/content_skaterift/textures/world_map.qoi
new file mode 100644 (file)
index 0000000..b7acd84
Binary files /dev/null and b/content_skaterift/textures/world_map.qoi differ
diff --git a/icons/blank.svg b/icons/blank.svg
new file mode 100644 (file)
index 0000000..86e856d
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="100mm"
+   height="100mm"
+   viewBox="0 0 100 100"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   sodipodi:docname="blank.svg"
+   xml:space="preserve"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="true"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.0633188"
+     inkscape:cx="76.646816"
+     inkscape:cy="185.26899"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" /><defs
+     id="defs1"><linearGradient
+       id="swatch55"
+       inkscape:swatch="solid"><stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop55" /></linearGradient><rect
+       x="31.034908"
+       y="280.25462"
+       width="314.58111"
+       height="71.944559"
+       id="rect12" /><rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-3" /><rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-7" /></defs><g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1" /></svg>
diff --git a/icons/early.svg b/icons/early.svg
new file mode 100644 (file)
index 0000000..cb26e52
--- /dev/null
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="100mm"
+   height="100mm"
+   viewBox="0 0 100 100"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   sodipodi:docname="early.svg"
+   xml:space="preserve"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="true"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="2.1266376"
+     inkscape:cx="170.9271"
+     inkscape:cy="215.36345"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" /><defs
+     id="defs1"><linearGradient
+       id="swatch55"
+       inkscape:swatch="solid"><stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop55" /></linearGradient><linearGradient
+       id="linearGradient28"
+       inkscape:collect="always"><stop
+         style="stop-color:#30263a;stop-opacity:1;"
+         offset="0.09419964"
+         id="stop28" /><stop
+         style="stop-color:#ada89e;stop-opacity:1;"
+         offset="1"
+         id="stop29" /></linearGradient><linearGradient
+       id="linearGradient18"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:0.93194095;"
+         offset="0"
+         id="stop18" /><stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop19" /></linearGradient><linearGradient
+       id="linearGradient16"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:0.93194131;"
+         offset="0"
+         id="stop16" /><stop
+         style="stop-color:#ffffff;stop-opacity:0.6298418;"
+         offset="1"
+         id="stop17" /></linearGradient><linearGradient
+       id="linearGradient5"
+       inkscape:collect="always"><stop
+         style="stop-color:#f5e8de;stop-opacity:1;"
+         offset="0"
+         id="stop5" /><stop
+         style="stop-color:#f1cccc;stop-opacity:1;"
+         offset="0.58006924"
+         id="stop6" /><stop
+         style="stop-color:#ffdbcb;stop-opacity:1;"
+         offset="0.59029508"
+         id="stop7" /><stop
+         style="stop-color:#faebeb;stop-opacity:1;"
+         offset="0.99843603"
+         id="stop10" /></linearGradient><linearGradient
+       id="linearGradient1"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop1" /><stop
+         style="stop-color:#2d96cc;stop-opacity:0;"
+         offset="1"
+         id="stop2" /></linearGradient><rect
+       x="31.034908"
+       y="280.25462"
+       width="314.58111"
+       height="71.944559"
+       id="rect12" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1"
+       id="linearGradient2"
+       x1="65.184967"
+       y1="291.25983"
+       x2="65.184967"
+       y2="279.94586"
+       gradientUnits="userSpaceOnUse" /><rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-3" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5"
+       id="linearGradient6"
+       x1="61.591267"
+       y1="292.61707"
+       x2="59.829739"
+       y2="278.86011"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16"
+       id="linearGradient17"
+       x1="-6.2307429"
+       y1="55.262547"
+       x2="63.948498"
+       y2="83.942047"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,2.7864347,0.24882785,-154.0723)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient18"
+       id="linearGradient19"
+       x1="49.327995"
+       y1="100.03583"
+       x2="26.261688"
+       y2="76.646011"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,2.3739286,0,-131.56688)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient28"
+       id="linearGradient29"
+       x1="51.044708"
+       y1="68.030342"
+       x2="52.575924"
+       y2="112.0173"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,2,0,-96.171963)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5"
+       id="linearGradient6-6"
+       x1="61.591267"
+       y1="292.61707"
+       x2="59.829739"
+       y2="278.86011"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1"
+       id="linearGradient2-8"
+       x1="65.184967"
+       y1="291.25983"
+       x2="65.184967"
+       y2="279.94586"
+       gradientUnits="userSpaceOnUse" /><rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-7" /></defs><g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"><path
+       id="rect2"
+       style="fill:url(#linearGradient29);stroke-width:0.453963;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="M 5.4742131,47.650532 51.00971,27.122234 94.803414,47.650532 V 96.171963 H 5.4742131 Z"
+       sodipodi:nodetypes="cccccc" /><text
+       xml:space="preserve"
+       transform="matrix(1.2395552,0,0,1.6562531,-180.29016,-411.14557)"
+       id="text12"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:MODERNIZ;-inkscape-font-specification:'MODERNIZ, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect12);display:inline;opacity:1;fill:url(#linearGradient6);stroke:url(#linearGradient2);stroke-width:0.440004;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       x="52.721981"
+       y="0"><tspan
+         x="157.46788"
+         y="290.88953"
+         id="tspan4"><tspan
+   style="font-size:12.285px"
+   id="tspan2">EARLY</tspan> 
+</tspan></text><text
+       xml:space="preserve"
+       transform="matrix(1.6416651,0,0,2.1935391,-257.02243,-541.44013)"
+       id="text12-2"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.41661px;font-family:MODERNIZ;-inkscape-font-specification:'MODERNIZ, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect12-7);display:inline;fill:url(#linearGradient6-6);stroke:url(#linearGradient2-8);stroke-width:0.440004;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       x="52.721981"
+       y="0"><tspan
+         x="163.49818"
+         y="284.94329"
+         id="tspan5">Supporter 
+</tspan></text><path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient17);fill-opacity:0.931941;stroke:none;stroke-width:1.23525;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="M 6.1584892,48.210396 6.2464632,71.870276 61.75901,95.754514 93.932512,48.383728 51.025394,27.539582 Z"
+       id="path15"
+       sodipodi:nodetypes="cccccc" /><path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient19);stroke:none;stroke-width:1.14016;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 5.9822271,95.341937 0.021994,-34.407024 87.9103609,32.179831 0.08556,2.644879 z"
+       id="path17"
+       sodipodi:nodetypes="ccccc" /></g></svg>
diff --git a/icons/icon_comb.png b/icons/icon_comb.png
new file mode 100644 (file)
index 0000000..2263421
Binary files /dev/null and b/icons/icon_comb.png differ
diff --git a/icons/make.py b/icons/make.py
new file mode 100644 (file)
index 0000000..7302a10
--- /dev/null
@@ -0,0 +1,49 @@
+import os.path
+
+f = open( "../src/ui_menu_icons.h0", "w" )
+
+all = [ "early", "Early adopter",
+        "top3", "Global top 3 time record",
+        "top10", "Global top 10 time record" ]
+
+mega_string = ""
+msl = 0
+enumvs = []
+
+f.write( 'struct menu_icon_inf k_menu_icons[] = {' )
+for i in range(0,len(all)//2):
+#{
+   j = i*2
+   ofs = msl
+   desc = all[j+1]
+   for c in desc:
+      mega_string += F"{ord(c)},"
+      msl += 1
+   mega_string += "0,"
+   msl += 1
+   
+   f.write( '{'+ F'{ofs}' + '},\n' )
+#}
+f.write( '};\n' )
+f.write( F'const char k_menu_icon_descriptions[] = {'{'}{mega_string}{'}'};\n' )
+
+monstr = ""
+
+os.system( F"mkdir -p png" )
+f.write( 'enum menu_icon {\n' )
+for i in range(0,len(all)//2):
+#{
+   j = i*2
+   f.write( F"k_menu_icon_{all[j]} = {i},\n" )
+   os.system( F"inkscape -w 128 -h 128 {all[j]}.svg -o png/{all[j]}.png" )
+   monstr += F"png/{all[j]}.png " 
+#}
+f.write( '};\n' )
+f.close()
+
+os.system( F"inkscape -w 128 -h 128 blank.svg -o png/blank.png" )
+for i in range(8*8-len(all)//2):
+   monstr += "png/blank.png "
+
+os.system( F'montage {monstr} -tile 8x8 -geometry +0+0 -background transparent icon_comb.png' )
+print( "done" )
diff --git a/icons/top10.svg b/icons/top10.svg
new file mode 100644 (file)
index 0000000..39d81da
--- /dev/null
@@ -0,0 +1,465 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="100mm"
+   height="100mm"
+   viewBox="0 0 100 100"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   sodipodi:docname="top10.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="true"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="0.75187993"
+     inkscape:cx="-71.154978"
+     inkscape:cy="242.05992"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs1">
+    <linearGradient
+       id="linearGradient36"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#edf8fa;stop-opacity:0.75103128;"
+         offset="0"
+         id="stop35" />
+      <stop
+         style="stop-color:#d7eef4;stop-opacity:0;"
+         offset="1"
+         id="stop36" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient34"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#ecf9fb;stop-opacity:0.75103128;"
+         offset="0"
+         id="stop33" />
+      <stop
+         style="stop-color:#d7eef4;stop-opacity:0;"
+         offset="1"
+         id="stop34" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient32"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#fafafa;stop-opacity:0.75103128;"
+         offset="0"
+         id="stop31" />
+      <stop
+         style="stop-color:#d7eef4;stop-opacity:0;"
+         offset="1"
+         id="stop32" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient28"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#51b6cf;stop-opacity:1;"
+         offset="0"
+         id="stop28" />
+      <stop
+         style="stop-color:#a2f6ba;stop-opacity:1;"
+         offset="1"
+         id="stop29" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient26"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#5fbcd3;stop-opacity:1;"
+         offset="0"
+         id="stop26" />
+      <stop
+         style="stop-color:#5fd3b7;stop-opacity:0;"
+         offset="1"
+         id="stop27" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient24"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#5fbcd3;stop-opacity:1;"
+         offset="0"
+         id="stop24" />
+      <stop
+         style="stop-color:#5fd3b7;stop-opacity:0;"
+         offset="1"
+         id="stop25" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient22"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#5fbcd3;stop-opacity:1;"
+         offset="0"
+         id="stop22" />
+      <stop
+         style="stop-color:#5fd3b8;stop-opacity:0;"
+         offset="1"
+         id="stop23" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient20"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#5fbcd3;stop-opacity:1;"
+         offset="0"
+         id="stop20" />
+      <stop
+         style="stop-color:#5fd3d0;stop-opacity:0;"
+         offset="1"
+         id="stop21" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient18"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.93194095;"
+         offset="0"
+         id="stop18" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop19" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient16"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.93194131;"
+         offset="0"
+         id="stop16" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.6298418;"
+         offset="1"
+         id="stop17" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#fbfbfb;stop-opacity:1;"
+         offset="0"
+         id="stop5" />
+      <stop
+         style="stop-color:#ccecf1;stop-opacity:1;"
+         offset="0.58006924"
+         id="stop6" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0.58820182"
+         id="stop7" />
+      <stop
+         style="stop-color:#ebf5fa;stop-opacity:1;"
+         offset="0.99843603"
+         id="stop10" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop1" />
+      <stop
+         style="stop-color:#2d96cc;stop-opacity:0;"
+         offset="1"
+         id="stop2" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#9bd7e5;stop-opacity:1;"
+         offset="0"
+         id="stop13" />
+      <stop
+         style="stop-color:#d0f0ed;stop-opacity:1;"
+         offset="1"
+         id="stop14" />
+    </linearGradient>
+    <rect
+       x="31.034908"
+       y="280.25462"
+       width="314.58111"
+       height="71.944559"
+       id="rect12" />
+    <linearGradient
+       id="linearGradient8"
+       inkscape:collect="always">
+      <stop
+         style="stop-color:#d7eef4;stop-opacity:0.75103128;"
+         offset="0"
+         id="stop8" />
+      <stop
+         style="stop-color:#d7eef4;stop-opacity:0;"
+         offset="1"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient36"
+       id="linearGradient9"
+       x1="6.9499412"
+       y1="45.117058"
+       x2="24.808647"
+       y2="70.9814"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient32"
+       id="linearGradient10"
+       gradientUnits="userSpaceOnUse"
+       x1="4.2128348"
+       y1="22.349308"
+       x2="34.13969"
+       y2="70.483742"
+       gradientTransform="translate(30.678499,-0.06597007)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient34"
+       id="linearGradient11"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(64.055117,0.60557001)"
+       x1="4.2128348"
+       y1="22.349308"
+       x2="34.13969"
+       y2="70.483742" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8"
+       id="linearGradient12"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(23.986767,-0.05724621)"
+       x1="4.2128348"
+       y1="22.349308"
+       x2="34.13969"
+       y2="70.483742" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient13"
+       id="linearGradient14"
+       x1="56.050755"
+       y1="0.096815854"
+       x2="56.009914"
+       y2="51.604183"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1"
+       id="linearGradient2"
+       x1="65.184967"
+       y1="291.25983"
+       x2="65.184967"
+       y2="279.94586"
+       gradientUnits="userSpaceOnUse" />
+    <rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-3" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5"
+       id="linearGradient6"
+       x1="61.591267"
+       y1="292.61707"
+       x2="59.829739"
+       y2="278.86011"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16"
+       id="linearGradient17"
+       x1="-6.2307429"
+       y1="55.262547"
+       x2="63.948498"
+       y2="83.942047"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient18"
+       id="linearGradient19"
+       x1="49.327995"
+       y1="100.03583"
+       x2="26.261688"
+       y2="76.646011"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient20"
+       id="linearGradient21"
+       x1="33.588055"
+       y1="57.188107"
+       x2="-15.635695"
+       y2="19.225538"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient22"
+       id="linearGradient23"
+       x1="63.201775"
+       y1="72.408539"
+       x2="17.89654"
+       y2="2.4879105"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient24"
+       id="linearGradient25"
+       x1="34.737347"
+       y1="65.489159"
+       x2="20.674274"
+       y2="-0.45022497"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26"
+       id="linearGradient27"
+       x1="77.246826"
+       y1="77.732132"
+       x2="61.86348"
+       y2="6.8161969"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient28"
+       id="linearGradient29"
+       x1="51.044708"
+       y1="68.030342"
+       x2="52.575924"
+       y2="112.0173"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:url(#linearGradient14);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 7.6537322,72.842415 v -51.02488 l 15.6593598,-6.598045 9.14929,4.952308 5.677444,-2.447261 0.05153,-5.340643 24.161726,-10.2929501 19.924533,16.6914911 1.869447,-0.835753 9.809094,7.037915 v 48.170794 z"
+       id="path12"
+       sodipodi:nodetypes="cccccccccccc" />
+    <path
+       id="rect1"
+       style="fill:url(#linearGradient23);stroke-width:0.559399;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 39.438712,13.635482 22.624771,-9.3951154 0,70.3969604 H 39.438712 Z"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       id="rect1-6"
+       style="fill:url(#linearGradient25);stroke-width:0.521181;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 38.465466,19.27725 -5.843156,2.426208 0,52.922257 h 5.843156 z"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       id="rect1-5"
+       style="fill:url(#linearGradient21);stroke-width:0.667216;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="M 23.362209,16.640034 8.8693442,22.658433 V 74.065932 H 23.362209 Z"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       id="rect1-5-6"
+       style="fill:url(#linearGradient27);stroke-width:0.523246;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="M 83.760328,19.990477 72.394681,24.710248 V 73.515655 H 83.760328 Z"
+       sodipodi:nodetypes="ccccc" />
+    <rect
+       style="fill:url(#linearGradient29);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       id="rect2"
+       width="89.329201"
+       height="24.260715"
+       x="5.4742131"
+       y="71.911247" />
+    <g
+       id="g27"
+       style="fill:#fefefe;fill-opacity:1">
+      <path
+         style="fill:#fefefe;stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill;fill-opacity:1"
+         d="m 23.752962,16.890995 8.357524,4.662618 0,5.865139 z"
+         id="path2"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#fefefe;stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill;fill-opacity:1"
+         d="m 84.103079,20.234005 8.445498,5.806279 0,7.894791 z"
+         id="path3"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#fefefe;stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill;fill-opacity:1"
+         d="M 62.704619,4.4789015 81.242295,20.27947 74.648359,23.140991 Z"
+         id="path4"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <path
+       style="fill:url(#linearGradient9);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 9.4132108,71.61078 0.087974,-28.906539 c 0,0 0.6907692,-4.936503 5.5316582,-9.16006 5.003832,-4.365721 7.488484,-3.772107 7.488484,-3.772107 l -0.08797,41.310862 z"
+       id="path8"
+       sodipodi:nodetypes="ccsccc" />
+    <path
+       style="fill:url(#linearGradient10);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 40.091709,71.54481 0.08797,-33.634268 c 0,0 0.06188,-9.421956 6.402556,-16.500482 6.842734,-7.639013 14.455664,-8.002181 14.455664,-8.002181 l -0.08797,57.609087 z"
+       id="path8-0"
+       sodipodi:nodetypes="ccsccc" />
+    <path
+       style="fill:url(#linearGradient11);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 73.468327,72.21635 0.08797,-33.634268 c 0,0 0.493553,-5.287469 2.918966,-8.911232 1.789298,-2.673357 5.746689,-3.647694 5.746689,-3.647694 l 0.03644,45.66535 z"
+       id="path8-0-2"
+       sodipodi:nodetypes="ccsccc" />
+    <path
+       style="fill:url(#linearGradient12);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       d="m 33.399977,71.553534 0.08797,-22.901448 c 0,0 -0.09232,-3.881757 1.394895,-5.925298 0.814514,-1.119201 2.418617,-1.781485 2.418617,-1.781485 l 0.03644,30.080387 z"
+       id="path8-0-2-6"
+       sodipodi:nodetypes="ccsccc" />
+    <text
+       xml:space="preserve"
+       transform="matrix(1.4549392,0,0,1.9440421,-37.826112,-471.33113)"
+       id="text12"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:MODERNIZ;-inkscape-font-specification:'MODERNIZ, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect12);display:inline;opacity:1;fill:url(#linearGradient6);stroke:url(#linearGradient2);stroke-width:0.440004;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"><tspan
+         x="31.035156"
+         y="290.6428"
+         id="tspan2">TOP 10</tspan></text>
+    <path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient17);fill-opacity:0.93194133;stroke:none;stroke-width:0.74;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 5.9096613,72.595525 0.087974,8.491094 55.5125467,8.571612 32.173502,-17.0005 z"
+       id="path15"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient19);stroke:none;stroke-width:0.74;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 5.9822271,95.583676 0.021994,-14.493707 87.9103613,13.555518 0.08556,1.114136 z"
+       id="path17"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="opacity:1;fill:#fefefe;fill-opacity:1;stroke:none;stroke-width:0.74;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 23.664987,18.024742 0,1.753983 8.621445,11.876482 0,-2.105882 z"
+       id="path27"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#fefefe;fill-opacity:1;stroke:none;stroke-width:0.80349;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 84.353117,23.284656 v 2.155864 l 8.269549,14.597676 v -2.588392 z"
+       id="path27-5"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#fefefe;fill-opacity:1;stroke:none;stroke-width:1.08131;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 62.678542,5.9267757 v 2.8426439 l 9.555085,15.5090764 1.363596,-0.729754 z"
+       id="path27-9"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/icons/top3.svg b/icons/top3.svg
new file mode 100644 (file)
index 0000000..968fd8c
--- /dev/null
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="100mm"
+   height="100mm"
+   viewBox="0 0 100 100"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   sodipodi:docname="top3.svg"
+   xml:space="preserve"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="true"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="0.75187993"
+     inkscape:cx="318.5349"
+     inkscape:cy="388.35988"
+     inkscape:window-width="1920"
+     inkscape:window-height="1053"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" /><defs
+     id="defs1"><linearGradient
+       id="linearGradient151"
+       inkscape:collect="always"><stop
+         style="stop-color:#470505;stop-opacity:1;"
+         offset="0"
+         id="stop151" /><stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop152" /></linearGradient><linearGradient
+       id="linearGradient147"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop148" /><stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="0.76379693"
+         id="stop149" /></linearGradient><linearGradient
+       id="linearGradient144"
+       inkscape:collect="always"><stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0.72778296"
+         id="stop145" /><stop
+         style="stop-color:#3e3e3e;stop-opacity:1;"
+         offset="0.89041239"
+         id="stop147" /><stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop146" /></linearGradient><linearGradient
+       id="swatch55"
+       inkscape:swatch="solid"><stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop55" /></linearGradient><linearGradient
+       id="linearGradient36"
+       inkscape:collect="always"><stop
+         style="stop-color:#e2b850;stop-opacity:1;"
+         offset="0"
+         id="stop36" /><stop
+         style="stop-color:#ff638d;stop-opacity:1;"
+         offset="1"
+         id="stop37" /></linearGradient><linearGradient
+       id="linearGradient28"
+       inkscape:collect="always"><stop
+         style="stop-color:#eb3549;stop-opacity:1;"
+         offset="0"
+         id="stop28" /><stop
+         style="stop-color:#f0e45b;stop-opacity:1;"
+         offset="1"
+         id="stop29" /></linearGradient><linearGradient
+       id="linearGradient18"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:0.93194095;"
+         offset="0"
+         id="stop18" /><stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop19" /></linearGradient><linearGradient
+       id="linearGradient16"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:0.93194131;"
+         offset="0"
+         id="stop16" /><stop
+         style="stop-color:#ffffff;stop-opacity:0.6298418;"
+         offset="1"
+         id="stop17" /></linearGradient><linearGradient
+       id="linearGradient5"
+       inkscape:collect="always"><stop
+         style="stop-color:#f5e8de;stop-opacity:1;"
+         offset="0"
+         id="stop5" /><stop
+         style="stop-color:#f1cccc;stop-opacity:1;"
+         offset="0.58006924"
+         id="stop6" /><stop
+         style="stop-color:#ffdbcb;stop-opacity:1;"
+         offset="0.59029508"
+         id="stop7" /><stop
+         style="stop-color:#faebeb;stop-opacity:1;"
+         offset="0.99843603"
+         id="stop10" /></linearGradient><linearGradient
+       id="linearGradient1"
+       inkscape:collect="always"><stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop1" /><stop
+         style="stop-color:#2d96cc;stop-opacity:0;"
+         offset="1"
+         id="stop2" /></linearGradient><rect
+       x="31.034908"
+       y="280.25462"
+       width="314.58111"
+       height="71.944559"
+       id="rect12" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1"
+       id="linearGradient2"
+       x1="65.184967"
+       y1="291.25983"
+       x2="65.184967"
+       y2="279.94586"
+       gradientUnits="userSpaceOnUse" /><rect
+       x="31.034908"
+       y="280.25461"
+       width="314.58112"
+       height="71.944557"
+       id="rect12-3" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5"
+       id="linearGradient6"
+       x1="61.591267"
+       y1="292.61707"
+       x2="59.829739"
+       y2="278.86011"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16"
+       id="linearGradient17"
+       x1="-6.2307429"
+       y1="55.262547"
+       x2="63.948498"
+       y2="83.942047"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient18"
+       id="linearGradient19"
+       x1="49.327995"
+       y1="100.03583"
+       x2="26.261688"
+       y2="76.646011"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient28"
+       id="linearGradient29"
+       x1="51.044708"
+       y1="68.030342"
+       x2="52.575924"
+       y2="112.0173"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient36"
+       id="linearGradient37"
+       x1="32.994961"
+       y1="8.07932"
+       x2="58.30933"
+       y2="90.598869"
+       gradientUnits="userSpaceOnUse" /><meshgradient
+       inkscape:collect="always"
+       id="meshgradient55"
+       gradientUnits="userSpaceOnUse"
+       x="20.97157"
+       y="17.092763"><meshrow
+         id="meshrow55"><meshpatch
+           id="meshpatch55"><stop
+             path="c 16.1086,-16.1086  42.2259,-16.1086  58.3345,0"
+             style="stop-color:#ffffff;stop-opacity:1"
+             id="stop56" /><stop
+             path="c 16.1086,16.1086  16.1086,42.2259  0,58.3345"
+             style="stop-color:#000000;stop-opacity:1"
+             id="stop57" /><stop
+             path="c -16.1086,16.1086  -42.2259,16.1086  -58.3345,1.42109e-14"
+             style="stop-color:#ffffff;stop-opacity:1"
+             id="stop58" /><stop
+             path="c -16.1086,-16.1086  -16.1086,-42.2259  -1.06581e-14,-58.3345"
+             style="stop-color:#000000;stop-opacity:1"
+             id="stop59" /></meshpatch></meshrow></meshgradient><radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient144"
+       id="radialGradient146"
+       cx="50.138813"
+       cy="46.260006"
+       fx="50.138813"
+       fy="46.260006"
+       r="38.884846"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0319955,0,0,1.0319955,-1.6042153,-1.480111)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient147"
+       id="linearGradient149"
+       x1="33.476307"
+       y1="3.7663639"
+       x2="94.63237"
+       y2="25.196198"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0162501,0,0,0.9785625,-1.7965636,-8.0629784)" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient151"
+       id="linearGradient152"
+       x1="76.78009"
+       y1="8.535017"
+       x2="120.65966"
+       y2="11.285713"
+       gradientUnits="userSpaceOnUse" /></defs><g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"><circle
+       style="opacity:1;fill:url(#linearGradient37);fill-opacity:1;stroke:#ffffff;stroke-width:1.98700038;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="path36"
+       cx="50.138813"
+       cy="46.260006"
+       r="41.248711" /><ellipse
+       style="opacity:0.2523947;mix-blend-mode:color-burn;fill:url(#linearGradient152);stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="path151"
+       cx="92.997185"
+       cy="9.8219299"
+       rx="12.31635"
+       ry="24.6327"
+       transform="rotate(36.607308)" /><g
+       id="g40"
+       style="opacity:0.54443803;stroke-width:0.40000001;stroke-dasharray:none"><path
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 44.62222,8.1533758 C 18.141256,29.17674 16.920293,76.39015 48.770259,90.573338"
+         id="path37"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 46.911241,8.7346126 C 34.862292,29.135907 33.01926,74.483108 47.948932,91.403403"
+         id="path37-9"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 50.172505,9.0388572 c 0.143616,21.5210188 0.04238,63.0113888 1.037691,82.6687898"
+         id="path37-9-1"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 53.599689,8.6341031 C 62.576694,26.049462 67.949671,68.783972 53.019999,91.302893"
+         id="path37-9-1-4"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 55.698619,8.1407593 C 79.093325,26.978102 84.178796,76.691317 51.323172,90.871132"
+         id="path37-3"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 56.386405,6.8215361 C 93.342229,22.672945 94.570868,77.113889 61.715244,91.293704"
+         id="path37-3-7"
+         sodipodi:nodetypes="cc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 12.674045,64.476078 c 13.001254,8.0247 27.262251,10.241305 38.740285,10.080119 14.364315,-0.201718 29.937715,-6.942172 37.903997,-14.360652"
+         id="path39-1-7-5-3"
+         sodipodi:nodetypes="csc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 44.343307,6.9751368 C -2.3640766,25.553738 11.724767,87.368483 49.952077,91.167374"
+         id="path37-3-7-7"
+         sodipodi:nodetypes="cc" /><path
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 33.218519,8.211319 C 25.753682,13.561118 38.599015,19.101154 50.076604,18.910917 61.336064,18.724295 71.724626,13.623324 67.37014,8.149112"
+         id="path39"
+         sodipodi:nodetypes="csc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 17.110738,21.251271 c 8.273525,7.838078 21.553064,9.854064 33.031895,9.766494 12.930965,-0.09865 27.040069,-4.077304 32.098793,-11.135047"
+         id="path39-1"
+         sodipodi:nodetypes="csc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 10.552722,34.716446 c 10.63739,10.201943 28.488358,10.351427 39.966742,10.485379 12.868758,0.150178 29.69438,-5.675928 38.096114,-13.965306"
+         id="path39-1-7"
+         sodipodi:nodetypes="csc" /><path
+         style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="M 8.6979936,49.779174 C 19.335384,59.981117 38.945393,60.7035 50.424214,60.792397 64.539701,60.901714 83.901474,53.79686 91.68739,44.627743"
+         id="path39-1-7-5"
+         sodipodi:nodetypes="csc" /><ellipse
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         id="path40"
+         cx="50.519032"
+         cy="6.993928"
+         rx="5.845531"
+         ry="2.0631278" /></g><circle
+       style="opacity:0.61288111;mix-blend-mode:overlay;fill:url(#meshgradient55);fill-opacity:1;stroke:none;stroke-width:1.987;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="circle42"
+       cx="50.138813"
+       cy="46.260006"
+       r="41.248711" /><circle
+       style="opacity:0.794417;mix-blend-mode:screen;fill:url(#radialGradient146);stroke:none;stroke-width:1.93306;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="circle141"
+       cx="50.138813"
+       cy="46.260006"
+       r="40.128986" /><g
+       id="g173"
+       style="fill:#ffffff;fill-opacity:1"><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.7937,84.60147 -4.85214,-2.239452 -0.497658,-4.354486 -0.373242,-6.345111 -0.124412,-3.608003 -1.86621,-2.115037 -2.33276,-1.088623 0.0311,-0.71538 -3.079245,-5.100971 -0.497654,-1.86621 0.71538,-0.373239 -0.559864,-0.62207 0.09331,-1.150829 0.404344,-0.497658 0.03111,-0.559861 0.746484,-0.186621 0.311034,-0.777586 0.808691,-0.746485 -0.311036,-0.37324 0.155519,-1.772899 -0.435448,-1.026416 -0.311037,-0.62207 -0.559863,-0.217723 -0.590966,0.528759 0.186622,0.653172 -0.342138,0.06221 -0.435449,-0.248827 -0.342138,-0.653174 h -0.62207 L 28.459688,47.557226 27.899825,47.3395 27.650997,46.344188 26.842306,44.75791 l -2.05283,-1.026414 -0.684276,-1.71069 -0.684277,-0.34214 -0.902001,0.279931 -1.959519,-1.959517 -1.088622,-2.05283 0.404346,-0.902002 -0.373242,-3.483589 -0.01566,-2.3739 0.461863,-1.473562 -0.263922,-0.769771 -0.527843,1.341602 -0.109968,1.495557 -0.153954,2.485263 -0.175948,0.219935 0.175948,0.04399 0.04399,0.813757 -0.43987,0.351896 0.022,-1.055687 -0.307909,-0.63781 0.395883,-0.813758 -0.373889,-1.385591 0.175947,-0.593823 0.153955,0.527844 0.285915,-0.505852 -0.02199,-1.099674 0.791765,-2.15536 -0.263922,-1.143661 1.080723,-2.384713 1.617381,-2.86152 2.674899,-2.643796 1.90684,-2.644849 2.661213,-2.815166 1.385589,-1.187648 0.241927,-0.791766 3.415408,-1.9538223 4.19897,-1.4618636 -1.772899,1.6484846 1.057518,0.1555173 -0.124412,1.244139 0.769181,-0.688142 0.76977,0.02199 -0.131961,-0.6158173 c 0,0 -0.879737,0.2859153 -0.725783,0.087974 0.153953,-0.1979412 1.077679,-0.9457198 1.077679,-0.9457198 l 1.231636,0.021992 0.08797,0.5718307 c 0,0 -0.263922,0.4618634 -0.131961,0.4398694 0.131961,-0.022 0.769773,-0.06598 0.769773,-0.06598 l 0.593823,-0.087974 0.747779,0.175948 0.153953,-0.4178761 -1.165654,-0.175948 -0.43987,-0.1979414 0.901735,-1.0336937 2.705198,0.3518958 1.979411,-0.3738893 2.551245,-0.087974 1.033695,0.4178763 1.429576,-0.2199349 1.759479,-0.065981 1.583531,0.4618633 -0.109969,0.7257849 1.121667,0.461863 0.04399,0.4618631 0.02508,0.402874 0.902002,0.373242 0.746482,0.559862 -0.808691,0.995312 -1.213035,0.217724 -0.248828,0.559863 -0.528759,0.684276 -0.902001,0.248828 -0.217723,1.057519 -0.404347,1.213035 -0.684276,0.0311 -0.279932,-0.497656 -0.746482,0.09331 -0.715381,-0.777587 -0.528759,-1.026414 -0.435448,-0.715381 0.155516,-0.870897 0.466553,-0.248828 -0.622069,-0.373242 -0.311037,0.435449 0.09331,-1.088622 -0.155517,-0.590966 -0.311033,-0.559862 -0.311037,-0.342139 H 48.303701 L 48.117079,9.67318 V 9.3932488 l 0.466553,-0.1555176 1.026414,-0.2177243 -0.311033,-0.2177243 0.62207,-0.2177243 -0.777587,0.1555173 -1.088623,0.4043452 -1.057518,0.4354486 -0.839793,0.3732419 -0.373242,0.4043457 -1.057519,-0.0311 -0.684276,-0.186621 -0.62207,0.590966 -0.590968,0.559863 0.590968,0.124414 0.653172,-0.590966 0.590965,-0.248828 0.77759,0.155517 c 0,0 0.497654,0.155518 0.46655,0.311035 -0.0311,0.155518 -0.62207,0.466552 -0.342138,0.590966 0.279932,0.124414 1.150829,0.528759 1.150829,0.528759 l 0.528759,0.62207 -0.155517,0.435449 0.902002,0.528759 -0.279932,0.155517 -0.653174,0.311035 -0.404344,-0.342138 -0.839796,0.217724 0.52876,0.435449 -0.09331,0.933105 -0.37324,-0.435449 h -0.373242 l 0.373242,0.373242 c 0,0 0.466551,0.435448 0.217723,0.435448 -0.248827,0 -0.684276,-0.155517 -0.870897,-0.155517 -0.186621,0 -0.777587,-0.590966 -0.777587,-0.590966 l -0.186621,-0.62207 -0.808691,-0.06221 c 0,0 -0.684276,0.248828 -0.559861,0 0.124413,-0.248828 0.497655,-0.62207 0.497655,-0.62207 l 0.528759,-0.09331 c 0,0 0.311034,0.217724 0.466553,0.09331 0.155517,-0.124413 0.528759,-0.622069 0.528759,-0.622069 0,0 0.933104,-0.373242 0.52876,-0.373242 -0.404347,0 -1.399657,0.248828 -1.399657,0.248828 0,0 -0.09331,-0.311035 0.06221,-0.404345 0.155517,-0.09331 0.933104,-0.435446 0.435449,-0.497656 -0.148877,-0.01861 -3.012543,1.532841 -3.012543,1.532841 l -4.034988,1.294953 -1.069386,1.877536 2.269355,1.512297 -0.274127,1.814489 1.120891,-0.204886 0.0061,-1.185559 1.883576,-1.125352 -0.256228,-0.981602 1.262474,-1.55107 1.393498,0.05166 0.754292,0.775855 -0.292768,1.069718 0.576004,0.453609 1.359246,-1.140399 1.77643,3.11335 0.88495,1.45472 -1.624596,0.411458 c -0.67748,0.465863 -1.354961,0.235229 -2.032442,0.330173 -0.338989,0.04751 -2.844978,1.167805 -2.844978,1.167805 l 2.342655,-0.151199 1.531307,1.751578 -2.798633,0.76007 -2.368228,0.115175 -0.406569,1.195605 -2.713763,1.043106 -1.037319,2.644616 -3.849278,2.44619 -0.04971,4.035144 -1.062235,0.08143 -0.545944,-3.276002 -4.683534,-0.875472 -2.095269,1.08888 -1.7208,4.292625 1.076493,2.521023 1.769798,0.06704 0.995067,-1.738348 1.803576,0.06435 -0.657456,1.255793 -1.215194,2.537917 2.334628,0.357002 0.683334,0.765807 -0.661646,2.829563 1.246505,1.699801 1.105075,-0.511433 1.726379,1.004831 1.177319,-1.523681 2.575725,-0.530627 2.40677,1.303485 3.859887,0.379261 2.842623,2.936053 4.401638,1.36892 1.126992,1.869134 0.620033,1.350102 3.068157,1.641452 5.701557,0.665876 1.190587,3.04217 -2.893516,3.389528 -1.773954,5.500602 -4.87555,1.615845 -0.19614,1.732303 -3.403021,3.539951 -2.003693,-0.02098 0.43234,1.518753 -2.691676,0.214227 -1.833215,2.842086"
+         id="path152"
+         sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsscccccccccccccsscccsccscscssccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccc" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 83.170709,72.657731 -0.06221,-1.119725 1.306345,-2.861519 1.119725,-3.29697 0.311036,-2.799313 1.555173,-4.354488 -0.124415,-3.732416 -1.119724,-2.612695 0.311033,-3.234761 -1.18193,-0.124412 -0.995313,-1.119728 -2.923727,1.990625 -2.612692,0.870897 -2.861519,-1.928416 -2.861522,-4.416694 -0.186621,-3.483589 -0.808691,-1.24414 0.995312,-4.852143 1.306346,-1.741795 -0.37324,-1.430761 0.186619,-0.839795 0.497657,-1.772896 1.213036,0.124412 1.928415,-1.617379 2.177243,-0.808692 0.684279,2.208348 2.083932,0.0311 1.741795,0.902002 -0.62207,-1.835105 1.430761,0.155516 0.840732,-1.101087 0.659804,-0.08797 c 0,0 6.026505,11.235486 5.280023,19.197976 -0.746485,7.962493 -3.856832,22.207887 -8.895596,26.935615 z"
+         id="path153" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 68.531692,9.5451714 -4.046803,0.2199349 0.571831,1.1436607 1.803466,1.847453 0.483857,0.967713 2.375297,1.803466 c 0,0 -0.131961,-1.495557 -0.131961,-1.319609 0,0.175948 1.583531,1.539543 1.583531,1.539543 l 0.131961,0.615818 0.615818,1.187648 -0.351896,0.527844 0.04399,2.419283 -0.703792,0.791765 2.15536,1.407583 0.439869,0.923726 -2.067385,0.395883 -0.307909,0.527843 1.407581,3.343011 1.187648,-0.175948 0.659805,0.791765 1.319609,-0.923726 -0.175948,-1.275623 -0.08797,-1.671505 0.219934,-0.57183 -0.395882,-1.0117 0.791765,0.131961 0.351896,-1.099675 0.615818,0.483857 3.123075,1.539544 0.263922,0.835752 -0.527844,0.703792 1.187646,0.263921 -0.307906,-0.703791 -0.219935,-1.143661 -0.527844,-0.351896 0.43987,-0.131961 -0.131961,-0.351895 -1.539544,-0.351896 -1.935427,-1.583531 2.991114,1.143661 1.363594,1.45157 1.275622,1.143661 -1.0117,-1.539544 -0.307909,-1.0117 0.219935,-0.131961 0.175948,-0.659804 -1.099672,-0.791766 -1.099674,-1.627517 -0.307909,-0.527844 1.231635,0.307909 1.495555,0.923726 0.395883,0.703792 -0.483857,-0.04399 -0.131961,0.747778 0.175948,0.747778 0.131961,1.011701 1.231635,0.967713 0.791766,0.483856 0.967713,-0.08797 1.099675,0.615818 -1.055688,-2.155361 -5.102487,-6.114188 -5.146476,-4.486671 -5.190461,-2.8151656 z"
+         id="path154" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 69.631366,20.321978 1.715492,-1.0117 -0.483857,-0.395883 -0.04399,-0.395883 -0.615817,-0.131961 -0.835753,-0.747778 -1.363596,-0.615818 -0.351896,-0.615817 -0.615818,-0.08797 -0.483857,-0.659804 -0.175947,0.659804 0.659804,0.747778 0.395883,0.219935 0.527844,0.483857 0.483857,-0.175948 0.791765,0.791765 h -0.527844 l 0.527844,0.43987 -0.131961,0.43987 0.791766,0.263921 z"
+         id="path155" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 67.893882,19.70616 0.63781,-0.615817 -0.615818,-0.835752 0.04399,-0.241929 -0.549836,-0.263922 -0.373891,0.395883 0.175948,0.175948 -0.483857,0.131961 0.285917,0.329902 0.395883,0.022 0.219935,0.395882 -0.08797,0.307909 z"
+         id="path156" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 59.734298,14.427724 1.121667,0.02199 0.615818,-0.527844 v -0.351896 l -0.483857,-0.175948 -0.483857,-0.351895 -0.549836,0.461863 -0.791765,-0.04399 -0.483857,0.06598 0.131961,0.285916 0.505851,-0.02199 z"
+         id="path157" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 46.912098,23.137144 1.473563,-1.89144 0.285916,0.241928 -0.329903,0.659805 0.527843,0.241928 0.725787,-0.08797 0.219935,0.813759 0.219935,0.527844 -0.395883,0.285915 -0.527844,-0.549837 0.241927,-0.285915 -0.505849,0.175948 h -1.385591 z"
+         id="path158" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 29.781584,38.957109 1.150829,-0.544308 0.590966,0.10886 -0.217726,0.279931 0.870897,0.279932 0.544312,0.248828 0.342138,0.04666 0.139967,0.777587 0.746482,0.217723 -0.590965,0.435448 2.286105,-0.01556 -0.544311,-0.419899 -0.466553,-0.171069 -0.124412,-0.311034 -1.228588,-1.119727 -0.62207,0.09331 0.01556,-0.35769 -1.150829,-0.357688 -1.135277,0.04665 -0.699828,0.497655 z"
+         id="path159" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 35.728412,42.150508 0.736783,-0.461862 -0.230931,-0.714787 0.714787,0.153953 0.989706,-0.04399 0.670801,0.593825 0.450866,0.604819 -0.97871,-0.08797 -0.670801,0.08797 -0.285914,0.494853 -0.318907,-0.582827 z"
+         id="path160" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 39.905768,42.767287 0.07776,-0.373243 0.71538,-0.01556 0.295482,0.186621 -0.202171,0.155519 z"
+         id="path161" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 33.803984,42.227486 h -0.505852 l -0.373888,-0.527844 h 0.461862 l 0.637813,0.351896 z"
+         id="path162" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 24.47844,54.524401 -0.233276,-0.171069 0.01555,-0.435448 -0.124414,-0.186621 0.35769,-0.233276 0.139966,0.451001 -0.07776,0.186621 c 0,0 -0.124414,0.06221 -0.0311,0.09331 0.09331,0.0311 0.248828,0.01556 0.373242,0.01556 0.124414,0 0.326587,0.07776 0.326587,0.07776 0,0 0.171069,0.07776 0.06221,0.155517 -0.108862,0.07776 -0.466552,0.186621 -0.466552,0.186621 z"
+         id="path163" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.622631,44.384669 -0.233275,-0.202174 c 0,0 0.07776,-0.155517 0.139965,-0.186621 0.06221,-0.03111 0.217726,0.07776 0.217726,0.07776 z"
+         id="path164" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 42.580665,42.845045 -0.06221,-0.217723 0.233275,-0.09331 -0.01556,0.186622 z"
+         id="path165" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 41.507595,42.518459 -0.295482,-0.01556 0.124413,-0.171069 h 0.419899 z"
+         id="path166" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 42.909283,43.459122 -0.252923,-0.09897 0.04399,-0.175948 0.175948,0.08797 z"
+         id="path167" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.415135,43.624073 -0.131961,-0.09897 0.08797,-0.109966 0.120965,-0.02199 z"
+         id="path168" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.975969,45.405545 -0.219935,-0.01101 -0.02199,-0.186947 0.142957,-0.13196 z"
+         id="path169" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.76703,45.691459 -0.04399,0.109969 0.164951,0.142957 0.03299,-0.153953 z"
+         id="path170" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 43.679057,46.120333 -0.109969,0.219934 0.142959,0.05498 0.06598,-0.164949 z"
+         id="path171" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 33.949449,37.868489 -0.233275,-0.373242 0.0311,-0.311037 0.217723,-0.233275 0.0311,0.35769 0.01556,0.295485 z"
+         id="path172" /><path
+         style="opacity:0.414441;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+         d="m 78.536291,25.411544 -0.559864,-0.855346 -0.342138,-0.264379 0.26438,-0.217724 -0.435449,-0.342139 -0.528759,-0.326586 0.295482,-0.435449 0.373242,0.279931 -0.04665,0.295483 0.342138,0.388794 0.186621,0.139966 0.606518,0.902 -0.124415,0.311035 z"
+         id="path173" /></g><rect
+       style="fill:url(#linearGradient29);stroke:none;stroke-width:0.321;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke markers fill"
+       id="rect2"
+       width="89.329201"
+       height="24.260715"
+       x="5.4742131"
+       y="71.911247" /><text
+       xml:space="preserve"
+       transform="matrix(1.4549392,0,0,1.9440421,-32.371728,-471.33113)"
+       id="text12"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:MODERNIZ;-inkscape-font-specification:'MODERNIZ, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect12);display:inline;opacity:1;fill:url(#linearGradient6);stroke:url(#linearGradient2);stroke-width:0.440004;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"><tspan
+         x="31.035156"
+         y="290.6428"
+         id="tspan2">TOP 3</tspan></text><path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient17);fill-opacity:0.93194133;stroke:none;stroke-width:0.74;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 5.9096613,72.595525 0.087974,8.491094 55.5125467,8.571612 32.173502,-17.0005 z"
+       id="path15"
+       sodipodi:nodetypes="ccccc" /><path
+       style="opacity:1;mix-blend-mode:soft-light;fill:url(#linearGradient19);stroke:none;stroke-width:0.74;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="m 5.9822271,95.583676 0.021994,-14.493707 87.9103613,13.555518 0.08556,1.114136 z"
+       id="path17"
+       sodipodi:nodetypes="ccccc" /><ellipse
+       style="opacity:1;fill:url(#linearGradient149);fill-opacity:0.559435;stroke:none;stroke-width:0.369741;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="path147"
+       transform="matrix(0.89841006,0.43915755,-0.80769418,0.58960165,0,0)"
+       ry="23.650969"
+       rx="20.681128"
+       cy="2.2027662"
+       cx="48.707882" /><path
+       id="path149"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       d="M 50.139058,5.0110636 A 41.248711,41.248711 0 0 0 9.0170207,44.482556 C 10.342744,36.524536 13.939162,25.104807 23.727751,17.662488 40.068718,5.2383593 61.018093,7.8544418 68.454736,9.3141602 A 41.248711,41.248711 0 0 0 50.139058,5.0110636 Z" /><ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.287462;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
+       id="path150"
+       cx="28.731466"
+       cy="20.478767"
+       rx="1.5492361"
+       ry="3.5398591"
+       transform="rotate(25.556752)"
+       inkscape:transform-center-x="2.3228764"
+       inkscape:transform-center-y="3.7477532" /></g><script
+     id="mesh_polyfill"
+     type="text/javascript">
+!function(){const t=&quot;http://www.w3.org/2000/svg&quot;,e=&quot;http://www.w3.org/1999/xlink&quot;,s=&quot;http://www.w3.org/1999/xhtml&quot;,r=2;if(document.createElementNS(t,&quot;meshgradient&quot;).x)return;const n=(t,e,s,r)=&gt;{let n=new x(.5*(e.x+s.x),.5*(e.y+s.y)),o=new x(.5*(t.x+e.x),.5*(t.y+e.y)),i=new x(.5*(s.x+r.x),.5*(s.y+r.y)),a=new x(.5*(n.x+o.x),.5*(n.y+o.y)),h=new x(.5*(n.x+i.x),.5*(n.y+i.y)),l=new x(.5*(a.x+h.x),.5*(a.y+h.y));return[[t,o,a,l],[l,h,i,r]]},o=t=&gt;{let e=t[0].distSquared(t[1]),s=t[2].distSquared(t[3]),r=.25*t[0].distSquared(t[2]),n=.25*t[1].distSquared(t[3]),o=e&gt;s?e:s,i=r&gt;n?r:n;return 18*(o&gt;i?o:i)},i=(t,e)=&gt;Math.sqrt(t.distSquared(e)),a=(t,e)=&gt;t.scale(2/3).add(e.scale(1/3)),h=t=&gt;{let e,s,r,n,o,i,a,h=new g;return t.match(/(\w+\(\s*[^)]+\))+/g).forEach(t=&gt;{let l=t.match(/[\w.-]+/g),d=l.shift();switch(d){case&quot;translate&quot;:2===l.length?e=new g(1,0,0,1,l[0],l[1]):(console.error(&quot;mesh.js: translate does not have 2 arguments!&quot;),e=new g(1,0,0,1,0,0)),h=h.append(e);break;case&quot;scale&quot;:1===l.length?s=new g(l[0],0,0,l[0],0,0):2===l.length?s=new g(l[0],0,0,l[1],0,0):(console.error(&quot;mesh.js: scale does not have 1 or 2 arguments!&quot;),s=new g(1,0,0,1,0,0)),h=h.append(s);break;case&quot;rotate&quot;:if(3===l.length&amp;&amp;(e=new g(1,0,0,1,l[1],l[2]),h=h.append(e)),l[0]){r=l[0]*Math.PI/180;let t=Math.cos(r),e=Math.sin(r);Math.abs(t)&lt;1e-16&amp;&amp;(t=0),Math.abs(e)&lt;1e-16&amp;&amp;(e=0),a=new g(t,e,-e,t,0,0),h=h.append(a)}else console.error(&quot;math.js: No argument to rotate transform!&quot;);3===l.length&amp;&amp;(e=new g(1,0,0,1,-l[1],-l[2]),h=h.append(e));break;case&quot;skewX&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),o=new g(1,0,n,1,0,0),h=h.append(o)):console.error(&quot;math.js: No argument to skewX transform!&quot;);break;case&quot;skewY&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),i=new g(1,n,0,1,0,0),h=h.append(i)):console.error(&quot;math.js: No argument to skewY transform!&quot;);break;case&quot;matrix&quot;:6===l.length?h=h.append(new g(...l)):console.error(&quot;math.js: Incorrect number of arguments for matrix!&quot;);break;default:console.error(&quot;mesh.js: Unhandled transform type: &quot;+d)}}),h},l=t=&gt;{let e=[],s=t.split(/[ ,]+/);for(let t=0,r=s.length-1;t&lt;r;t+=2)e.push(new x(parseFloat(s[t]),parseFloat(s[t+1])));return e},d=(t,e)=&gt;{for(let s in e)t.setAttribute(s,e[s])},c=(t,e,s,r,n)=&gt;{let o,i,a=[0,0,0,0];for(let h=0;h&lt;3;++h)e[h]&lt;t[h]&amp;&amp;e[h]&lt;s[h]||t[h]&lt;e[h]&amp;&amp;s[h]&lt;e[h]?a[h]=0:(a[h]=.5*((e[h]-t[h])/r+(s[h]-e[h])/n),o=Math.abs(3*(e[h]-t[h])/r),i=Math.abs(3*(s[h]-e[h])/n),a[h]&gt;o?a[h]=o:a[h]&gt;i&amp;&amp;(a[h]=i));return a},u=[[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[-3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0],[2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0],[0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0],[-3,0,3,0,0,0,0,0,-2,0,-1,0,0,0,0,0],[0,0,0,0,-3,0,3,0,0,0,0,0,-2,0,-1,0],[9,-9,-9,9,6,3,-6,-3,6,-6,3,-3,4,2,2,1],[-6,6,6,-6,-3,-3,3,3,-4,4,-2,2,-2,-2,-1,-1],[2,0,-2,0,0,0,0,0,1,0,1,0,0,0,0,0],[0,0,0,0,2,0,-2,0,0,0,0,0,1,0,1,0],[-6,6,6,-6,-4,-2,4,2,-3,3,-3,3,-2,-1,-2,-1],[4,-4,-4,4,2,2,-2,-2,2,-2,2,-2,1,1,1,1]],f=t=&gt;{let e=[];for(let s=0;s&lt;16;++s){e[s]=0;for(let r=0;r&lt;16;++r)e[s]+=u[s][r]*t[r]}return e},p=(t,e,s)=&gt;{const r=e*e,n=s*s,o=e*e*e,i=s*s*s;return t[0]+t[1]*e+t[2]*r+t[3]*o+t[4]*s+t[5]*s*e+t[6]*s*r+t[7]*s*o+t[8]*n+t[9]*n*e+t[10]*n*r+t[11]*n*o+t[12]*i+t[13]*i*e+t[14]*i*r+t[15]*i*o},y=t=&gt;{let e=[],s=[],r=[];for(let s=0;s&lt;4;++s)e[s]=[],e[s][0]=n(t[0][s],t[1][s],t[2][s],t[3][s]),e[s][1]=[],e[s][1].push(...n(...e[s][0][0])),e[s][1].push(...n(...e[s][0][1])),e[s][2]=[],e[s][2].push(...n(...e[s][1][0])),e[s][2].push(...n(...e[s][1][1])),e[s][2].push(...n(...e[s][1][2])),e[s][2].push(...n(...e[s][1][3]));for(let t=0;t&lt;8;++t){s[t]=[];for(let r=0;r&lt;4;++r)s[t][r]=[],s[t][r][0]=n(e[0][2][t][r],e[1][2][t][r],e[2][2][t][r],e[3][2][t][r]),s[t][r][1]=[],s[t][r][1].push(...n(...s[t][r][0][0])),s[t][r][1].push(...n(...s[t][r][0][1])),s[t][r][2]=[],s[t][r][2].push(...n(...s[t][r][1][0])),s[t][r][2].push(...n(...s[t][r][1][1])),s[t][r][2].push(...n(...s[t][r][1][2])),s[t][r][2].push(...n(...s[t][r][1][3]))}for(let t=0;t&lt;8;++t){r[t]=[];for(let e=0;e&lt;8;++e)r[t][e]=[],r[t][e][0]=s[t][0][2][e],r[t][e][1]=s[t][1][2][e],r[t][e][2]=s[t][2][2][e],r[t][e][3]=s[t][3][2][e]}return r};class x{constructor(t,e){this.x=t||0,this.y=e||0}toString(){return`(x=${this.x}, y=${this.y})`}clone(){return new x(this.x,this.y)}add(t){return new x(this.x+t.x,this.y+t.y)}scale(t){return void 0===t.x?new x(this.x*t,this.y*t):new x(this.x*t.x,this.y*t.y)}distSquared(t){let e=this.x-t.x,s=this.y-t.y;return e*e+s*s}transform(t){let e=this.x*t.a+this.y*t.c+t.e,s=this.x*t.b+this.y*t.d+t.f;return new x(e,s)}}class g{constructor(t,e,s,r,n,o){void 0===t?(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0):(this.a=t,this.b=e,this.c=s,this.d=r,this.e=n,this.f=o)}toString(){return`affine: ${this.a} ${this.c} ${this.e} \n       ${this.b} ${this.d} ${this.f}`}append(t){t instanceof g||console.error(&quot;mesh.js: argument to Affine.append is not affine!&quot;);let e=this.a*t.a+this.c*t.b,s=this.b*t.a+this.d*t.b,r=this.a*t.c+this.c*t.d,n=this.b*t.c+this.d*t.d,o=this.a*t.e+this.c*t.f+this.e,i=this.b*t.e+this.d*t.f+this.f;return new g(e,s,r,n,o,i)}}class w{constructor(t,e){this.nodes=t,this.colors=e}paintCurve(t,e){if(o(this.nodes)&gt;r){const s=n(...this.nodes);let r=[[],[]],o=[[],[]];for(let t=0;t&lt;4;++t)r[0][t]=this.colors[0][t],r[1][t]=(this.colors[0][t]+this.colors[1][t])/2,o[0][t]=r[1][t],o[1][t]=this.colors[1][t];let i=new w(s[0],r),a=new w(s[1],o);i.paintCurve(t,e),a.paintCurve(t,e)}else{let s=Math.round(this.nodes[0].x);if(s&gt;=0&amp;&amp;s&lt;e){let r=4*(~~this.nodes[0].y*e+s);t[r]=Math.round(this.colors[0][0]),t[r+1]=Math.round(this.colors[0][1]),t[r+2]=Math.round(this.colors[0][2]),t[r+3]=Math.round(this.colors[0][3])}}}}class m{constructor(t,e){this.nodes=t,this.colors=e}split(){let t=[[],[],[],[]],e=[[],[],[],[]],s=[[[],[]],[[],[]]],r=[[[],[]],[[],[]]];for(let s=0;s&lt;4;++s){const r=n(this.nodes[0][s],this.nodes[1][s],this.nodes[2][s],this.nodes[3][s]);t[0][s]=r[0][0],t[1][s]=r[0][1],t[2][s]=r[0][2],t[3][s]=r[0][3],e[0][s]=r[1][0],e[1][s]=r[1][1],e[2][s]=r[1][2],e[3][s]=r[1][3]}for(let t=0;t&lt;4;++t)s[0][0][t]=this.colors[0][0][t],s[0][1][t]=this.colors[0][1][t],s[1][0][t]=(this.colors[0][0][t]+this.colors[1][0][t])/2,s[1][1][t]=(this.colors[0][1][t]+this.colors[1][1][t])/2,r[0][0][t]=s[1][0][t],r[0][1][t]=s[1][1][t],r[1][0][t]=this.colors[1][0][t],r[1][1][t]=this.colors[1][1][t];return[new m(t,s),new m(e,r)]}paint(t,e){let s,n=!1;for(let t=0;t&lt;4;++t)if((s=o([this.nodes[0][t],this.nodes[1][t],this.nodes[2][t],this.nodes[3][t]]))&gt;r){n=!0;break}if(n){let s=this.split();s[0].paint(t,e),s[1].paint(t,e)}else{new w([...this.nodes[0]],[...this.colors[0]]).paintCurve(t,e)}}}class b{constructor(t){this.readMesh(t),this.type=t.getAttribute(&quot;type&quot;)||&quot;bilinear&quot;}readMesh(t){let e=[[]],s=[[]],r=Number(t.getAttribute(&quot;x&quot;)),n=Number(t.getAttribute(&quot;y&quot;));e[0][0]=new x(r,n);let o=t.children;for(let t=0,r=o.length;t&lt;r;++t){e[3*t+1]=[],e[3*t+2]=[],e[3*t+3]=[],s[t+1]=[];let r=o[t].children;for(let n=0,o=r.length;n&lt;o;++n){let o=r[n].children;for(let r=0,i=o.length;r&lt;i;++r){let i=r;0!==t&amp;&amp;++i;let h,d=o[r].getAttribute(&quot;path&quot;),c=&quot;l&quot;;null!=d&amp;&amp;(c=(h=d.match(/\s*([lLcC])\s*(.*)/))[1]);let u=l(h[2]);switch(c){case&quot;l&quot;:0===i?(e[3*t][3*n+3]=u[0].add(e[3*t][3*n]),e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&amp;&amp;(e[3*t+3][3*n+0]=u[0].add(e[3*t+3][3*n+3])),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case&quot;L&quot;:0===i?(e[3*t][3*n+3]=u[0],e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0],e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&amp;&amp;(e[3*t+3][3*n+0]=u[0]),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case&quot;c&quot;:0===i?(e[3*t][3*n+1]=u[0].add(e[3*t][3*n]),e[3*t][3*n+2]=u[1].add(e[3*t][3*n]),e[3*t][3*n+3]=u[2].add(e[3*t][3*n])):1===i?(e[3*t+1][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+2][3*n+3]=u[1].add(e[3*t][3*n+3]),e[3*t+3][3*n+3]=u[2].add(e[3*t][3*n+3])):2===i?(e[3*t+3][3*n+2]=u[0].add(e[3*t+3][3*n+3]),e[3*t+3][3*n+1]=u[1].add(e[3*t+3][3*n+3]),0===n&amp;&amp;(e[3*t+3][3*n+0]=u[2].add(e[3*t+3][3*n+3]))):(e[3*t+2][3*n]=u[0].add(e[3*t+3][3*n]),e[3*t+1][3*n]=u[1].add(e[3*t+3][3*n]));break;case&quot;C&quot;:0===i?(e[3*t][3*n+1]=u[0],e[3*t][3*n+2]=u[1],e[3*t][3*n+3]=u[2]):1===i?(e[3*t+1][3*n+3]=u[0],e[3*t+2][3*n+3]=u[1],e[3*t+3][3*n+3]=u[2]):2===i?(e[3*t+3][3*n+2]=u[0],e[3*t+3][3*n+1]=u[1],0===n&amp;&amp;(e[3*t+3][3*n+0]=u[2])):(e[3*t+2][3*n]=u[0],e[3*t+1][3*n]=u[1]);break;default:console.error(&quot;mesh.js: &quot;+c+&quot; invalid path type.&quot;)}if(0===t&amp;&amp;0===n||r&gt;0){let e=window.getComputedStyle(o[r]).stopColor.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i),a=window.getComputedStyle(o[r]).stopOpacity,h=255;a&amp;&amp;(h=Math.floor(255*a)),e&amp;&amp;(0===i?(s[t][n]=[],s[t][n][0]=Math.floor(e[1]),s[t][n][1]=Math.floor(e[2]),s[t][n][2]=Math.floor(e[3]),s[t][n][3]=h):1===i?(s[t][n+1]=[],s[t][n+1][0]=Math.floor(e[1]),s[t][n+1][1]=Math.floor(e[2]),s[t][n+1][2]=Math.floor(e[3]),s[t][n+1][3]=h):2===i?(s[t+1][n+1]=[],s[t+1][n+1][0]=Math.floor(e[1]),s[t+1][n+1][1]=Math.floor(e[2]),s[t+1][n+1][2]=Math.floor(e[3]),s[t+1][n+1][3]=h):3===i&amp;&amp;(s[t+1][n]=[],s[t+1][n][0]=Math.floor(e[1]),s[t+1][n][1]=Math.floor(e[2]),s[t+1][n][2]=Math.floor(e[3]),s[t+1][n][3]=h))}}e[3*t+1][3*n+1]=new x,e[3*t+1][3*n+2]=new x,e[3*t+2][3*n+1]=new x,e[3*t+2][3*n+2]=new x,e[3*t+1][3*n+1].x=(-4*e[3*t][3*n].x+6*(e[3*t][3*n+1].x+e[3*t+1][3*n].x)+-2*(e[3*t][3*n+3].x+e[3*t+3][3*n].x)+3*(e[3*t+3][3*n+1].x+e[3*t+1][3*n+3].x)+-1*e[3*t+3][3*n+3].x)/9,e[3*t+1][3*n+2].x=(-4*e[3*t][3*n+3].x+6*(e[3*t][3*n+2].x+e[3*t+1][3*n+3].x)+-2*(e[3*t][3*n].x+e[3*t+3][3*n+3].x)+3*(e[3*t+3][3*n+2].x+e[3*t+1][3*n].x)+-1*e[3*t+3][3*n].x)/9,e[3*t+2][3*n+1].x=(-4*e[3*t+3][3*n].x+6*(e[3*t+3][3*n+1].x+e[3*t+2][3*n].x)+-2*(e[3*t+3][3*n+3].x+e[3*t][3*n].x)+3*(e[3*t][3*n+1].x+e[3*t+2][3*n+3].x)+-1*e[3*t][3*n+3].x)/9,e[3*t+2][3*n+2].x=(-4*e[3*t+3][3*n+3].x+6*(e[3*t+3][3*n+2].x+e[3*t+2][3*n+3].x)+-2*(e[3*t+3][3*n].x+e[3*t][3*n+3].x)+3*(e[3*t][3*n+2].x+e[3*t+2][3*n].x)+-1*e[3*t][3*n].x)/9,e[3*t+1][3*n+1].y=(-4*e[3*t][3*n].y+6*(e[3*t][3*n+1].y+e[3*t+1][3*n].y)+-2*(e[3*t][3*n+3].y+e[3*t+3][3*n].y)+3*(e[3*t+3][3*n+1].y+e[3*t+1][3*n+3].y)+-1*e[3*t+3][3*n+3].y)/9,e[3*t+1][3*n+2].y=(-4*e[3*t][3*n+3].y+6*(e[3*t][3*n+2].y+e[3*t+1][3*n+3].y)+-2*(e[3*t][3*n].y+e[3*t+3][3*n+3].y)+3*(e[3*t+3][3*n+2].y+e[3*t+1][3*n].y)+-1*e[3*t+3][3*n].y)/9,e[3*t+2][3*n+1].y=(-4*e[3*t+3][3*n].y+6*(e[3*t+3][3*n+1].y+e[3*t+2][3*n].y)+-2*(e[3*t+3][3*n+3].y+e[3*t][3*n].y)+3*(e[3*t][3*n+1].y+e[3*t+2][3*n+3].y)+-1*e[3*t][3*n+3].y)/9,e[3*t+2][3*n+2].y=(-4*e[3*t+3][3*n+3].y+6*(e[3*t+3][3*n+2].y+e[3*t+2][3*n+3].y)+-2*(e[3*t+3][3*n].y+e[3*t][3*n+3].y)+3*(e[3*t][3*n+2].y+e[3*t+2][3*n].y)+-1*e[3*t][3*n].y)/9}}this.nodes=e,this.colors=s}paintMesh(t,e){let s=(this.nodes.length-1)/3,r=(this.nodes[0].length-1)/3;if(&quot;bilinear&quot;===this.type||s&lt;2||r&lt;2){let n;for(let o=0;o&lt;s;++o)for(let s=0;s&lt;r;++s){let r=[];for(let t=3*o,e=3*o+4;t&lt;e;++t)r.push(this.nodes[t].slice(3*s,3*s+4));let i=[];i.push(this.colors[o].slice(s,s+2)),i.push(this.colors[o+1].slice(s,s+2)),(n=new m(r,i)).paint(t,e)}}else{let n,o,a,h,l,d,u;const x=s,g=r;s++,r++;let w=new Array(s);for(let t=0;t&lt;s;++t){w[t]=new Array(r);for(let e=0;e&lt;r;++e)w[t][e]=[],w[t][e][0]=this.nodes[3*t][3*e],w[t][e][1]=this.colors[t][e]}for(let t=0;t&lt;s;++t)for(let e=0;e&lt;r;++e)0!==t&amp;&amp;t!==x&amp;&amp;(n=i(w[t-1][e][0],w[t][e][0]),o=i(w[t+1][e][0],w[t][e][0]),w[t][e][2]=c(w[t-1][e][1],w[t][e][1],w[t+1][e][1],n,o)),0!==e&amp;&amp;e!==g&amp;&amp;(n=i(w[t][e-1][0],w[t][e][0]),o=i(w[t][e+1][0],w[t][e][0]),w[t][e][3]=c(w[t][e-1][1],w[t][e][1],w[t][e+1][1],n,o));for(let t=0;t&lt;r;++t){w[0][t][2]=[],w[x][t][2]=[];for(let e=0;e&lt;4;++e)n=i(w[1][t][0],w[0][t][0]),o=i(w[x][t][0],w[x-1][t][0]),w[0][t][2][e]=n&gt;0?2*(w[1][t][1][e]-w[0][t][1][e])/n-w[1][t][2][e]:0,w[x][t][2][e]=o&gt;0?2*(w[x][t][1][e]-w[x-1][t][1][e])/o-w[x-1][t][2][e]:0}for(let t=0;t&lt;s;++t){w[t][0][3]=[],w[t][g][3]=[];for(let e=0;e&lt;4;++e)n=i(w[t][1][0],w[t][0][0]),o=i(w[t][g][0],w[t][g-1][0]),w[t][0][3][e]=n&gt;0?2*(w[t][1][1][e]-w[t][0][1][e])/n-w[t][1][3][e]:0,w[t][g][3][e]=o&gt;0?2*(w[t][g][1][e]-w[t][g-1][1][e])/o-w[t][g-1][3][e]:0}for(let s=0;s&lt;x;++s)for(let r=0;r&lt;g;++r){let n=i(w[s][r][0],w[s+1][r][0]),o=i(w[s][r+1][0],w[s+1][r+1][0]),c=i(w[s][r][0],w[s][r+1][0]),x=i(w[s+1][r][0],w[s+1][r+1][0]),g=[[],[],[],[]];for(let t=0;t&lt;4;++t){(d=[])[0]=w[s][r][1][t],d[1]=w[s+1][r][1][t],d[2]=w[s][r+1][1][t],d[3]=w[s+1][r+1][1][t],d[4]=w[s][r][2][t]*n,d[5]=w[s+1][r][2][t]*n,d[6]=w[s][r+1][2][t]*o,d[7]=w[s+1][r+1][2][t]*o,d[8]=w[s][r][3][t]*c,d[9]=w[s+1][r][3][t]*x,d[10]=w[s][r+1][3][t]*c,d[11]=w[s+1][r+1][3][t]*x,d[12]=0,d[13]=0,d[14]=0,d[15]=0,u=f(d);for(let e=0;e&lt;9;++e){g[t][e]=[];for(let s=0;s&lt;9;++s)g[t][e][s]=p(u,e/8,s/8),g[t][e][s]&gt;255?g[t][e][s]=255:g[t][e][s]&lt;0&amp;&amp;(g[t][e][s]=0)}}h=[];for(let t=3*s,e=3*s+4;t&lt;e;++t)h.push(this.nodes[t].slice(3*r,3*r+4));l=y(h);for(let s=0;s&lt;8;++s)for(let r=0;r&lt;8;++r)(a=new m(l[s][r],[[[g[0][s][r],g[1][s][r],g[2][s][r],g[3][s][r]],[g[0][s][r+1],g[1][s][r+1],g[2][s][r+1],g[3][s][r+1]]],[[g[0][s+1][r],g[1][s+1][r],g[2][s+1][r],g[3][s+1][r]],[g[0][s+1][r+1],g[1][s+1][r+1],g[2][s+1][r+1],g[3][s+1][r+1]]]])).paint(t,e)}}}transform(t){if(t instanceof x)for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].add(t);else if(t instanceof g)for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].transform(t)}scale(t){for(let e=0,s=this.nodes.length;e&lt;s;++e)for(let s=0,r=this.nodes[0].length;s&lt;r;++s)this.nodes[e][s]=this.nodes[e][s].scale(t)}}document.querySelectorAll(&quot;rect,circle,ellipse,path,text&quot;).forEach((r,n)=&gt;{let o=r.getAttribute(&quot;id&quot;);o||(o=&quot;patchjs_shape&quot;+n,r.setAttribute(&quot;id&quot;,o));const i=r.style.fill.match(/^url\(\s*&quot;?\s*#([^\s&quot;]+)&quot;?\s*\)/),a=r.style.stroke.match(/^url\(\s*&quot;?\s*#([^\s&quot;]+)&quot;?\s*\)/);if(i&amp;&amp;i[1]){const a=document.getElementById(i[1]);if(a&amp;&amp;&quot;meshgradient&quot;===a.nodeName){const i=r.getBBox();let l=document.createElementNS(s,&quot;canvas&quot;);d(l,{width:i.width,height:i.height});const c=l.getContext(&quot;2d&quot;);let u=c.createImageData(i.width,i.height);const f=new b(a);&quot;objectBoundingBox&quot;===a.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;f.scale(new x(i.width,i.height));const p=a.getAttribute(&quot;gradientTransform&quot;);null!=p&amp;&amp;f.transform(h(p)),&quot;userSpaceOnUse&quot;===a.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;f.transform(new x(-i.x,-i.y)),f.paintMesh(u.data,l.width),c.putImageData(u,0,0);const y=document.createElementNS(t,&quot;image&quot;);d(y,{width:i.width,height:i.height,x:i.x,y:i.y});let g=l.toDataURL();y.setAttributeNS(e,&quot;xlink:href&quot;,g),r.parentNode.insertBefore(y,r),r.style.fill=&quot;none&quot;;const w=document.createElementNS(t,&quot;use&quot;);w.setAttributeNS(e,&quot;xlink:href&quot;,&quot;#&quot;+o);const m=&quot;patchjs_clip&quot;+n,M=document.createElementNS(t,&quot;clipPath&quot;);M.setAttribute(&quot;id&quot;,m),M.appendChild(w),r.parentElement.insertBefore(M,r),y.setAttribute(&quot;clip-path&quot;,&quot;url(#&quot;+m+&quot;)&quot;),u=null,l=null,g=null}}if(a&amp;&amp;a[1]){const o=document.getElementById(a[1]);if(o&amp;&amp;&quot;meshgradient&quot;===o.nodeName){const i=parseFloat(r.style.strokeWidth.slice(0,-2))*(parseFloat(r.style.strokeMiterlimit)||parseFloat(r.getAttribute(&quot;stroke-miterlimit&quot;))||1),a=r.getBBox(),l=Math.trunc(a.width+i),c=Math.trunc(a.height+i),u=Math.trunc(a.x-i/2),f=Math.trunc(a.y-i/2);let p=document.createElementNS(s,&quot;canvas&quot;);d(p,{width:l,height:c});const y=p.getContext(&quot;2d&quot;);let g=y.createImageData(l,c);const w=new b(o);&quot;objectBoundingBox&quot;===o.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;w.scale(new x(l,c));const m=o.getAttribute(&quot;gradientTransform&quot;);null!=m&amp;&amp;w.transform(h(m)),&quot;userSpaceOnUse&quot;===o.getAttribute(&quot;gradientUnits&quot;)&amp;&amp;w.transform(new x(-u,-f)),w.paintMesh(g.data,p.width),y.putImageData(g,0,0);const M=document.createElementNS(t,&quot;image&quot;);d(M,{width:l,height:c,x:0,y:0});let S=p.toDataURL();M.setAttributeNS(e,&quot;xlink:href&quot;,S);const k=&quot;pattern_clip&quot;+n,A=document.createElementNS(t,&quot;pattern&quot;);d(A,{id:k,patternUnits:&quot;userSpaceOnUse&quot;,width:l,height:c,x:u,y:f}),A.appendChild(M),o.parentNode.appendChild(A),r.style.stroke=&quot;url(#&quot;+k+&quot;)&quot;,g=null,p=null,S=null}}})}();
+</script></svg>
diff --git a/src/cc.h b/src/cc.h
new file mode 100644 (file)
index 0000000..9adb09b
--- /dev/null
+++ b/src/cc.h
@@ -0,0 +1,259 @@
+struct country k_countries[] = {{0,0.680556f,0.637195f},
+{12,0.555278f,0.831495f},
+{26,0.504139f,0.771903f},
+{34,0.555556f,0.694518f},
+{42,0.508333f,0.601369f},
+{50,0.027778f,0.298037f},
+{65,0.504444f,0.705266f},
+{73,0.551389f,0.311173f},
+{80,0.324537f,0.531507f},
+{89,0.500000f,0.000000f},
+{100,0.328333f,0.522909f},
+{120,0.322222f,0.157119f},
+{130,0.625000f,0.687353f},
+{138,0.305648f,0.490306f},
+{144,0.869444f,0.207276f},
+{154,0.537037f,0.739898f},
+{162,0.631944f,0.690935f},
+{173,0.288889f,0.574499f},
+{181,0.640417f,0.587038f},
+{189,0.750000f,0.572708f},
+{200,0.334630f,0.495084f},
+{209,0.577778f,0.780502f},
+{217,0.511111f,0.764977f},
+{225,0.253472f,0.524342f},
+{232,0.506250f,0.468810f},
+{238,0.320139f,0.632418f},
+{246,0.751389f,0.597786f},
+{253,0.319444f,0.278929f},
+{261,0.310463f,0.488037f},
+{294,0.550000f,0.716014f},
+{317,0.566667f,0.243103f},
+{326,0.509444f,0.010708f},
+{340,0.347222f,0.329087f},
+{347,0.698611f,0.357748f},
+{378,0.818519f,0.432984f},
+{385,0.569444f,0.708849f},
+{394,0.494444f,0.493889f},
+{407,0.583333f,0.375661f},
+{415,0.791667f,0.493889f},
+{424,0.533333f,0.443732f},
+{433,0.236111f,0.830659f},
+{440,0.433333f,0.515385f},
+{451,0.276389f,0.540464f},
+{466,0.558333f,0.450897f},
+{491,0.552778f,0.508220f},
+{496,0.302778f,0.185780f},
+{502,0.791667f,0.651526f},
+{508,0.793519f,0.325504f},
+{525,0.768981f,0.311173f},
+{549,0.300000f,0.429401f},
+{558,0.622917f,0.313562f},
+{566,0.569444f,0.400740f},
+{576,0.541667f,0.393575f},
+{582,0.056204f,0.248596f},
+{595,0.266667f,0.472393f},
+{606,0.543056f,0.724374f},
+{614,0.277778f,0.554794f},
+{619,0.308426f,0.487918f},
+{627,0.591667f,0.651526f},
+{634,0.543056f,0.757215f},
+{649,0.527778f,0.801998f},
+{657,0.619444f,0.483141f},
+{666,0.329630f,0.511205f},
+{675,0.303704f,0.536881f},
+{694,0.284722f,0.386409f},
+{702,0.583333f,0.594204f},
+{708,0.253009f,0.499860f},
+{720,0.527778f,0.415071f},
+{738,0.608333f,0.508220f},
+{746,0.572222f,0.823494f},
+{754,0.605556f,0.458062f},
+{763,0.336111f,0.029935f},
+{791,0.480556f,0.844990f},
+{805,0.986111f,0.271764f},
+{810,0.572222f,0.859320f},
+{818,0.505556f,0.730345f},
+{825,0.352778f,0.429401f},
+{839,0.111111f,0.293260f},
+{856,0.686111f,0.092631f},
+{884,0.532639f,0.393575f},
+{890,0.453981f,0.497233f},
+{897,0.620833f,0.701683f},
+{905,0.525000f,0.766171f},
+{913,0.494444f,0.458062f},
+{919,0.485092f,0.660005f},
+{929,0.561111f,0.680187f},
+{936,0.388889f,0.916643f},
+{946,0.328704f,0.487560f},
+{954,0.328935f,0.517176f},
+{965,0.902176f,0.497233f},
+{970,0.249306f,0.511802f},
+{980,0.492889f,0.755423f},
+{989,0.458333f,0.486724f},
+{1003,0.472222f,0.479558f},
+{1010,0.336111f,0.436566f},
+{1017,0.298843f,0.536881f},
+{1023,0.701435f,0.020261f},
+{1042,0.534583f,0.700967f},
+{1055,0.259722f,0.508220f},
+{1064,0.817130f,0.560168f},
+{1074,0.555556f,0.737510f},
+{1082,0.450000f,0.866486f},
+{1090,0.713889f,0.544046f},
+{1096,0.833333f,0.364913f},
+{1106,0.647222f,0.630030f},
+{1111,0.622222f,0.637195f},
+{1116,0.487361f,0.789315f},
+{1128,0.596528f,0.626447f},
+{1135,0.535648f,0.707654f},
+{1141,0.486111f,0.458062f},
+{1153,0.284722f,0.531507f},
+{1161,0.883333f,0.658691f},
+{1167,0.494083f,0.753345f},
+{1174,0.600000f,0.622865f},
+{1181,0.688889f,0.744675f},
+{1192,0.605556f,0.407905f},
+{1198,0.980556f,0.410891f},
+{1207,0.852778f,0.687353f},
+{1219,0.558333f,0.705863f},
+{1226,0.632384f,0.610952f},
+{1233,0.708333f,0.694518f},
+{1244,0.791667f,0.529716f},
+{1252,0.569444f,0.809163f},
+{1259,0.599537f,0.643166f},
+{1267,0.579167f,0.189363f},
+{1275,0.473611f,0.447314f},
+{1283,0.547222f,0.579873f},
+{1289,0.526481f,0.738704f},
+{1303,0.566667f,0.801998f},
+{1313,0.517130f,0.757215f},
+{1324,0.815417f,0.559571f},
+{1330,0.561111f,0.700489f},
+{1340,0.630556f,0.257433f},
+{1351,0.594444f,0.304008f},
+{1358,0.812500f,0.418653f},
+{1367,0.702778f,0.424027f},
+{1376,0.488889f,0.522550f},
+{1381,0.540509f,0.657497f},
+{1387,0.966667f,0.465228f},
+{1404,0.330556f,0.505831f},
+{1415,0.466667f,0.544046f},
+{1426,0.659861f,0.255404f},
+{1436,0.625463f,0.308785f},
+{1444,0.216667f,0.565542f},
+{1451,0.939583f,0.450300f},
+{1483,0.580556f,0.737510f},
+{1504,0.520556f,0.714103f},
+{1511,0.791667f,0.730345f},
+{1520,0.552778f,0.701683f},
+{1531,0.327222f,0.520759f},
+{1542,0.486111f,0.630030f},
+{1550,0.597222f,0.269973f},
+{1561,0.772222f,0.558377f},
+{1569,0.547222f,0.243103f},
+{1577,0.963658f,0.396919f},
+{1583,0.733333f,0.601369f},
+{1589,0.515972f,0.776919f},
+{1601,0.959722f,0.246685f},
+{1615,0.983333f,0.106962f},
+{1627,0.263889f,0.493889f},
+{1637,0.522222f,0.515385f},
+{1643,0.522222f,0.472393f},
+{1651,0.028148f,0.264360f},
+{1656,0.966528f,0.192707f},
+{1671,0.904861f,0.509653f},
+{1696,0.527778f,0.844990f},
+{1703,0.658333f,0.551212f},
+{1708,0.694444f,0.615699f},
+{1717,0.873611f,0.454480f},
+{1723,0.597917f,0.630030f},
+{1733,0.277778f,0.465228f},
+{1740,0.908333f,0.357748f},
+{1757,0.338889f,0.235938f},
+{1766,0.288889f,0.329087f},
+{1771,0.838889f,0.493889f},
+{1783,0.146111f,0.223756f},
+{1792,0.555556f,0.773337f},
+{1799,0.477778f,0.683770f},
+{1808,0.315278f,0.531507f},
+{1820,0.642361f,0.583456f},
+{1826,0.654444f,0.249552f},
+{1834,0.569444f,0.730345f},
+{1842,0.777778f,0.830659f},
+{1849,0.583333f,0.386409f},
+{1856,0.325460f,0.528983f},
+{1873,0.484167f,0.286573f},
+{1918,0.325694f,0.524939f},
+{1940,0.330185f,0.500218f},
+{1952,0.324833f,0.530255f},
+{1979,0.343519f,0.736315f},
+{2005,0.330000f,0.495680f},
+{2036,0.021296f,0.303411f},
+{2042,0.534491f,0.714342f},
+{2053,0.519444f,0.407905f},
+{2075,0.625000f,0.579873f},
+{2088,0.461111f,0.501054f},
+{2096,0.558333f,0.716014f},
+{2103,0.654630f,0.367899f},
+{2114,0.468056f,0.461645f},
+{2127,0.788333f,0.410533f},
+{2137,0.324861f,0.529954f},
+{2163,0.554167f,0.749452f},
+{2172,0.541667f,0.730345f},
+{2181,0.941667f,0.343417f},
+{2197,0.636111f,0.472393f},
+{2205,0.566667f,0.192946f},
+{2218,0.397222f,0.010230f},
+{2263,0.854167f,0.665857f},
+{2275,0.583333f,0.458062f},
+{2287,0.488889f,0.687353f},
+{2293,0.725000f,0.450897f},
+{2303,0.583333f,0.508220f},
+{2309,0.344444f,0.429401f},
+{2318,0.555556f,0.959635f},
+{2341,0.587500f,0.210859f},
+{2351,0.541667f,0.844990f},
+{2358,0.522222f,0.737510f},
+{2370,0.605556f,0.651526f},
+{2391,0.836111f,0.569125f},
+{2398,0.697222f,0.680187f},
+{2409,0.597222f,0.357748f},
+{2438,0.777778f,0.508220f},
+{2447,0.848658f,0.339476f},
+{2459,0.503241f,0.458062f},
+{2464,0.022222f,0.336252f},
+{2472,0.013889f,0.257433f},
+{2478,0.330556f,0.479558f},
+{2498,0.525000f,0.644361f},
+{2506,0.597222f,0.680187f},
+{2513,0.666667f,0.687353f},
+{2526,0.301158f,0.556586f},
+{2551,0.994444f,0.343417f},
+{2558,0.588889f,0.407905f},
+{2565,0.588889f,0.751841f},
+{2573,0.650000f,0.572708f},
+{2594,0.500000f,0.769181f},
+{2602,0.489000f,0.804577f},
+{2611,0.489361f,0.774411f},
+{2617,0.962778f,0.538911f},
+{2654,0.230556f,0.673022f},
+{2668,0.344444f,0.164284f},
+{2676,0.677778f,0.694518f},
+{2687,0.963889f,0.286095f},
+{2695,0.316667f,0.458062f},
+{2705,0.794444f,0.515385f},
+{2713,0.477778f,0.780502f},
+{2721,0.320833f,0.533298f},
+{2745,0.319908f,0.532104f},
+{2766,0.010556f,0.305441f},
+{2784,0.463889f,0.576290f},
+{2799,0.633333f,0.508220f},
+{2805,0.583333f,0.293260f},
+{2812,0.532778f,0.755638f},
+{2815,0.494444f,0.787667f},
+{2830,0.583333f,0.257433f},
+};
+const char k_country_names[] = {65,102,103,104,97,110,105,115,116,97,110,0,65,108,97,110,100,32,73,115,108,97,110,100,115,0,83,101,97,108,97,110,100,0,65,108,98,97,110,105,97,0,65,108,103,101,114,105,97,0,65,109,101,114,105,99,97,110,32,83,97,109,111,97,0,65,110,100,111,114,114,97,0,65,110,103,111,108,97,0,65,110,103,117,105,108,108,97,0,65,110,116,97,114,99,116,105,99,97,0,65,110,116,105,103,117,97,32,97,110,100,32,66,97,114,98,117,100,97,0,65,114,103,101,110,116,105,110,97,0,65,114,109,101,110,105,97,0,65,114,117,98,97,0,65,117,115,116,114,97,108,105,97,0,65,117,115,116,114,105,97,0,65,122,101,114,98,97,105,106,97,110,0,66,97,104,97,109,97,115,0,66,97,104,114,97,105,110,0,66,97,110,103,108,97,100,101,115,104,0,66,97,114,98,97,100,111,115,0,66,101,108,97,114,117,115,0,66,101,108,103,105,117,109,0,66,101,108,105,122,101,0,66,101,110,105,110,0,66,101,114,109,117,100,97,0,66,104,117,116,97,110,0,66,111,108,105,118,105,97,0,66,111,110,97,105,114,101,44,32,83,105,110,116,32,69,117,115,116,97,116,105,117,115,32,97,110,100,32,83,97,98,97,0,66,111,115,110,105,97,32,97,110,100,32,72,101,114,122,101,103,111,118,105,110,97,0,66,111,116,115,119,97,110,97,0,66,111,117,118,101,116,32,73,115,108,97,110,100,0,66,114,97,122,105,108,0,66,114,105,116,105,115,104,32,73,110,100,105,97,110,32,79,99,101,97,110,32,84,101,114,114,105,116,111,114,121,0,66,114,117,110,101,105,0,66,117,108,103,97,114,105,97,0,66,117,114,107,105,110,97,32,70,97,115,111,0,66,117,114,117,110,100,105,0,67,97,109,98,111,100,105,97,0,67,97,109,101,114,111,111,110,0,67,97,110,97,100,97,0,67,97,112,101,32,86,101,114,100,101,0,67,97,121,109,97,110,32,73,115,108,97,110,100,115,0,67,101,110,116,114,97,108,32,65,102,114,105,99,97,110,32,82,101,112,117,98,108,105,99,0,67,104,97,100,0,67,104,105,108,101,0,67,104,105,110,97,0,67,104,114,105,115,116,109,97,115,32,73,115,108,97,110,100,0,67,111,99,111,115,32,40,75,101,101,108,105,110,103,41,32,73,115,108,97,110,100,115,0,67,111,108,111,109,98,105,97,0,67,111,109,111,114,111,115,0,67,111,110,103,111,44,32,68,82,0,67,111,110,103,111,0,67,111,111,107,32,73,115,108,97,110,100,115,0,67,111,115,116,97,32,82,105,99,97,0,67,114,111,97,116,105,97,0,67,117,98,97,0,67,117,114,97,67,97,111,0,67,121,112,114,117,115,0,67,122,101,99,104,32,82,101,112,117,98,108,105,99,0,68,101,110,109,97,114,107,0,68,106,105,98,111,117,116,105,0,68,111,109,105,110,105,99,97,0,68,111,109,105,110,105,99,97,110,32,82,101,112,117,98,108,105,99,0,69,99,117,97,100,111,114,0,69,103,121,112,116,0,69,108,32,83,97,108,118,97,100,111,114,0,69,113,117,97,116,111,114,105,97,108,32,71,117,105,110,101,97,0,69,114,105,116,114,101,97,0,69,115,116,111,110,105,97,0,69,116,104,105,111,112,105,97,0,70,97,108,107,108,97,110,100,32,73,115,108,97,110,100,115,32,40,77,97,108,118,105,110,97,115,41,0,70,97,114,111,101,32,73,115,108,97,110,100,115,0,70,105,106,105,0,70,105,110,108,97,110,100,0,70,114,97,110,99,101,0,70,114,101,110,99,104,32,71,117,105,97,110,97,0,70,114,101,110,99,104,32,80,111,108,121,110,101,115,105,97,0,70,114,101,110,99,104,32,83,111,117,116,104,101,114,110,32,84,101,114,114,105,116,111,114,105,101,115,0,71,97,98,111,110,0,71,97,109,98,105,97,0,71,101,111,114,103,105,97,0,71,101,114,109,97,110,121,0,71,104,97,110,97,0,71,105,98,114,97,108,116,97,114,0,71,114,101,101,99,101,0,71,114,101,101,110,108,97,110,100,0,71,114,101,110,97,100,97,0,71,117,97,100,101,108,111,117,112,101,0,71,117,97,109,0,71,117,97,116,101,109,97,108,97,0,71,117,101,114,110,115,101,121,0,71,117,105,110,101,97,45,66,105,115,115,97,117,0,71,117,105,110,101,97,0,71,117,121,97,110,97,0,72,97,105,116,105,0,72,101,97,114,100,32,97,110,100,32,77,99,68,111,110,97,108,100,0,86,97,116,105,99,97,110,32,67,105,116,121,0,72,111,110,100,117,114,97,115,0,72,111,110,103,32,75,111,110,103,0,72,117,110,103,97,114,121,0,73,99,101,108,97,110,100,0,73,110,100,105,97,0,73,110,100,111,110,101,115,105,97,0,73,114,97,110,0,73,114,97,113,0,73,115,108,101,32,111,102,32,77,97,110,0,73,115,114,97,101,108,0,73,116,97,108,121,0,73,118,111,114,121,32,67,111,97,115,116,0,74,97,109,97,105,99,97,0,74,97,112,97,110,0,74,101,114,115,101,121,0,74,111,114,100,97,110,0,75,97,122,97,107,104,115,116,97,110,0,75,101,110,121,97,0,75,105,114,105,98,97,116,105,0,75,111,114,101,97,44,32,68,80,82,75,0,75,111,115,111,118,111,0,75,117,119,97,105,116,0,75,121,114,103,121,122,115,116,97,110,0,76,97,111,32,80,68,82,0,76,97,116,118,105,97,0,76,101,98,97,110,111,110,0,76,101,115,111,116,104,111,0,76,105,98,101,114,105,97,0,76,105,98,121,97,0,76,105,101,99,104,116,101,110,115,116,101,105,110,0,76,105,116,104,117,97,110,105,97,0,76,117,120,101,109,98,111,117,114,103,0,77,97,99,97,111,0,77,97,99,101,100,111,110,105,97,0,77,97,100,97,103,97,115,99,97,114,0,77,97,108,97,119,105,0,77,97,108,97,121,115,105,97,0,77,97,108,100,105,118,101,115,0,77,97,108,105,0,77,97,108,116,97,0,77,97,114,115,104,97,108,108,32,73,115,108,97,110,100,115,0,77,97,114,116,105,110,105,113,117,101,0,77,97,117,114,105,116,97,110,105,97,0,77,97,117,114,105,116,105,117,115,0,77,97,121,111,116,116,101,0,77,101,120,105,99,111,0,77,105,99,114,111,110,101,115,105,97,44,32,70,101,100,101,114,97,116,101,100,32,83,116,97,116,101,115,32,111,102,0,77,111,108,100,111,118,97,44,32,82,101,112,117,98,108,105,99,32,111,102,0,77,111,110,97,99,111,0,77,111,110,103,111,108,105,97,0,77,111,110,116,101,110,101,103,114,111,0,77,111,110,116,115,101,114,114,97,116,0,77,111,114,111,99,99,111,0,77,111,122,97,109,98,105,113,117,101,0,77,121,97,110,109,97,114,0,78,97,109,105,98,105,97,0,78,97,117,114,117,0,78,101,112,97,108,0,78,101,116,104,101,114,108,97,110,100,115,0,78,101,119,32,67,97,108,101,100,111,110,105,97,0,78,101,119,32,90,101,97,108,97,110,100,0,78,105,99,97,114,97,103,117,97,0,78,105,103,101,114,0,78,105,103,101,114,105,97,0,78,105,117,101,0,78,111,114,102,111,108,107,32,73,115,108,97,110,100,0,78,111,114,116,104,101,114,110,32,77,97,114,105,97,110,97,32,73,115,108,97,110,100,115,0,78,111,114,119,97,121,0,79,109,97,110,0,80,97,107,105,115,116,97,110,0,80,97,108,97,117,0,80,97,108,101,115,116,105,110,101,0,80,97,110,97,109,97,0,80,97,112,117,97,32,78,101,119,32,71,117,105,110,101,97,0,80,97,114,97,103,117,97,121,0,80,101,114,117,0,80,104,105,108,105,112,112,105,110,101,115,0,80,105,116,99,97,105,114,110,0,80,111,108,97,110,100,0,80,111,114,116,117,103,97,108,0,80,117,101,114,116,111,32,82,105,99,111,0,81,97,116,97,114,0,82,101,117,110,105,111,110,0,82,111,109,97,110,105,97,0,82,117,115,115,105,97,0,82,119,97,110,100,97,0,83,97,105,110,116,32,66,97,114,116,104,101,108,101,109,121,0,83,97,105,110,116,32,72,101,108,101,110,97,44,32,65,115,99,101,110,115,105,111,110,32,97,110,100,32,84,114,105,115,116,97,110,32,100,97,32,67,117,110,104,97,0,83,97,105,110,116,32,75,105,116,116,115,32,97,110,100,32,78,101,118,105,115,0,83,97,105,110,116,32,76,117,99,105,97,0,83,97,105,110,116,32,77,97,114,116,105,110,32,40,70,114,101,110,99,104,32,112,97,114,116,41,0,83,97,105,110,116,32,80,105,101,114,114,101,32,97,110,100,32,77,105,113,117,101,108,111,110,0,83,97,105,110,116,32,86,105,110,99,101,110,116,32,38,32,116,104,101,32,71,114,101,110,97,100,105,110,101,115,0,83,97,109,111,97,0,83,97,110,32,77,97,114,105,110,111,0,83,97,111,32,84,111,109,101,32,97,110,100,32,80,114,105,110,99,105,112,101,0,83,97,117,100,105,32,65,114,97,98,105,97,0,83,101,110,101,103,97,108,0,83,101,114,98,105,97,0,83,101,121,99,104,101,108,108,101,115,0,83,105,101,114,114,97,32,76,101,111,110,101,0,83,105,110,103,97,112,111,114,101,0,83,105,110,116,32,77,97,97,114,116,101,110,32,40,68,117,116,99,104,32,112,97,114,116,41,0,83,108,111,118,97,107,105,97,0,83,108,111,118,101,110,105,97,0,83,111,108,111,109,111,110,32,73,115,108,97,110,100,115,0,83,111,109,97,108,105,97,0,83,111,117,116,104,32,65,102,114,105,99,97,0,83,111,117,116,104,32,71,101,111,114,103,105,97,32,97,110,100,32,116,104,101,32,83,111,117,116,104,32,83,97,110,100,119,105,99,104,32,73,115,108,97,110,100,115,0,83,111,117,116,104,32,75,111,114,101,97,0,83,111,117,116,104,32,83,117,100,97,110,0,83,112,97,105,110,0,83,114,105,32,76,97,110,107,97,0,83,117,100,97,110,0,83,117,114,105,110,97,109,101,0,83,118,97,108,98,97,114,100,32,97,110,100,32,74,97,110,32,77,97,121,101,110,0,83,119,97,122,105,108,97,110,100,0,83,119,101,100,101,110,0,83,119,105,116,122,101,114,108,97,110,100,0,83,121,114,105,97,110,32,65,114,97,98,32,82,101,112,117,98,108,105,99,0,84,97,105,119,97,110,0,84,97,106,105,107,105,115,116,97,110,0,84,97,110,122,97,110,105,97,44,32,85,110,105,116,101,100,32,82,101,112,117,98,108,105,99,32,111,102,0,84,104,97,105,108,97,110,100,0,84,105,109,111,114,45,76,101,115,116,101,0,84,111,103,111,0,84,111,107,101,108,97,117,0,84,111,110,103,97,0,84,114,105,110,105,100,97,100,32,97,110,100,32,84,111,98,97,103,111,0,84,117,110,105,115,105,97,0,84,117,114,107,101,121,0,84,117,114,107,109,101,110,105,115,116,97,110,0,84,117,114,107,115,32,97,110,100,32,67,97,105,99,111,115,32,73,115,108,97,110,100,115,0,84,117,118,97,108,117,0,85,103,97,110,100,97,0,85,107,114,97,105,110,101,0,85,110,105,116,101,100,32,65,114,97,98,32,69,109,105,114,97,116,101,115,0,69,110,103,108,97,110,100,0,83,99,111,116,108,97,110,100,0,87,97,108,101,115,0,85,110,105,116,101,100,32,83,116,97,116,101,115,32,77,105,110,111,114,32,79,117,116,108,121,105,110,103,32,73,115,108,97,110,100,115,0,85,110,105,116,101,100,32,83,116,97,116,101,115,0,85,114,117,103,117,97,121,0,85,122,98,101,107,105,115,116,97,110,0,86,97,110,117,97,116,117,0,86,101,110,101,122,117,101,108,97,0,86,105,101,116,110,97,109,0,73,114,101,108,97,110,100,0,86,105,114,103,105,110,32,73,115,108,97,110,100,115,44,32,66,114,105,116,105,115,104,0,86,105,114,103,105,110,32,73,115,108,97,110,100,115,44,32,85,46,83,46,0,87,97,108,108,105,115,32,97,110,100,32,70,117,116,117,110,97,0,87,101,115,116,101,114,110,32,83,97,104,97,114,97,0,89,101,109,101,110,0,90,97,109,98,105,97,0,69,85,0,85,110,105,116,101,100,32,75,105,110,103,100,111,109,0,90,105,109,98,97,98,119,101,0,};
+const char k_country_iso2[] = {65,70,0,65,88,0,48,49,0,65,76,0,68,90,0,65,83,0,65,68,0,65,79,0,65,73,0,65,81,0,65,71,0,65,82,0,65,77,0,65,87,0,65,85,0,65,84,0,65,90,0,66,83,0,66,72,0,66,68,0,66,66,0,66,89,0,66,69,0,66,90,0,66,74,0,66,77,0,66,84,0,66,79,0,66,81,0,66,65,0,66,87,0,66,86,0,66,82,0,73,79,0,66,78,0,66,71,0,66,70,0,66,73,0,75,72,0,67,77,0,67,65,0,67,86,0,75,89,0,67,70,0,84,68,0,67,76,0,67,78,0,67,88,0,67,67,0,67,79,0,75,77,0,67,68,0,67,71,0,67,75,0,67,82,0,72,82,0,67,85,0,67,87,0,67,89,0,67,90,0,68,75,0,68,74,0,68,77,0,68,79,0,69,67,0,69,71,0,83,86,0,71,81,0,69,82,0,69,69,0,69,84,0,70,75,0,70,79,0,70,74,0,70,73,0,70,82,0,71,70,0,80,70,0,84,70,0,71,65,0,71,77,0,71,69,0,68,69,0,71,72,0,71,73,0,71,82,0,71,76,0,71,68,0,71,80,0,71,85,0,71,84,0,71,71,0,71,87,0,71,78,0,71,89,0,72,84,0,72,77,0,86,65,0,72,78,0,72,75,0,72,85,0,73,83,0,73,78,0,73,68,0,73,82,0,73,81,0,73,77,0,73,76,0,73,84,0,67,73,0,74,77,0,74,80,0,74,69,0,74,79,0,75,90,0,75,69,0,75,73,0,75,80,0,88,75,0,75,87,0,75,71,0,76,65,0,76,86,0,76,66,0,76,83,0,76,82,0,76,89,0,76,73,0,76,84,0,76,85,0,77,79,0,77,75,0,77,71,0,77,87,0,77,89,0,77,86,0,77,76,0,77,84,0,77,72,0,77,81,0,77,82,0,77,85,0,89,84,0,77,88,0,70,77,0,77,68,0,77,67,0,77,78,0,77,69,0,77,83,0,77,65,0,77,90,0,77,77,0,78,65,0,78,82,0,78,80,0,78,76,0,78,67,0,78,90,0,78,73,0,78,69,0,78,71,0,78,85,0,78,70,0,77,80,0,78,79,0,79,77,0,80,75,0,80,87,0,80,83,0,80,65,0,80,71,0,80,89,0,80,69,0,80,72,0,80,78,0,80,76,0,80,84,0,80,82,0,81,65,0,82,69,0,82,79,0,82,85,0,82,87,0,66,76,0,83,72,0,75,78,0,76,67,0,77,70,0,80,77,0,86,67,0,87,83,0,83,77,0,83,84,0,83,65,0,83,78,0,82,83,0,83,67,0,83,76,0,83,71,0,83,88,0,83,75,0,83,73,0,83,66,0,83,79,0,90,65,0,71,83,0,75,82,0,83,83,0,69,83,0,76,75,0,83,68,0,83,82,0,83,74,0,83,90,0,83,69,0,67,72,0,83,89,0,84,87,0,84,74,0,84,90,0,84,72,0,84,76,0,84,71,0,84,75,0,84,79,0,84,84,0,84,78,0,84,82,0,84,77,0,84,67,0,84,86,0,85,71,0,85,65,0,65,69,0,69,78,0,79,76,0,87,65,0,85,77,0,85,83,0,85,89,0,85,90,0,86,85,0,86,69,0,86,78,0,73,69,0,86,71,0,86,73,0,87,70,0,69,72,0,89,69,0,90,77,0,69,85,0,71,66,0,90,87,0,};
+u32 k_country_count = 255;
diff --git a/src/dbtest.c b/src/dbtest.c
new file mode 100644 (file)
index 0000000..db34a7f
--- /dev/null
@@ -0,0 +1,127 @@
+#define _DEFAULT_SOURCE
+#include <signal.h>
+#include <unistd.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+
+#include "vg/vg_platform.h"
+#include "vg/vg_async2.h"
+#include "vg/vg_log.h"
+#include "vg/vg_m.h"
+#include "vg/vg_db.h"
+
+const char *stringybob = "Hello World!";
+
+struct entry
+{
+   u64 steamid;
+   u32 something_else;
+};
+
+struct playground
+{
+   vg_db_dumb_table table;
+   vg_db_skipper steamid_skipper;
+};
+
+vg_db db={0};
+static i32 entry_comp_steamid( vg_skipper_context *ctx, void *comparand, u16 item_index )
+{
+   u64 item_addr = vg_db_dumb_table_get( &db, ctx->table_address, item_index );
+   u64 steamid;
+   vg_db_read( &db, item_addr + offsetof(struct entry,steamid), &steamid, sizeof(steamid) );
+
+   u64 compid = *((u64 *)comparand);
+   if( compid == steamid ) return 0;
+   else return compid < steamid? -1: 1;
+}
+
+int main( int argc, char *argv[] )
+{
+   vg_log_init();
+   char yes[512];
+   strcpy( yes, stringybob );
+
+   vg_db_open( &db, "main.db" );
+
+   u64 table_addr = db.userdata_address+offsetof(struct playground,table),
+       steamid_skip_addr = db.userdata_address+offsetof(struct playground,steamid_skipper);
+
+   u16 max = 0xffff;
+   vg_db_dumb_table_init( &db, table_addr, sizeof(struct entry), max );
+   vg_db_skipper_init( &db, steamid_skip_addr, max );
+   //vg_db_skipper_init( &db, db.userdata_address+offsetof(struct playground,time_skipper), max );
+   
+   vg_skipper_context ctx = {
+      .address = steamid_skip_addr,
+      .table_address = table_addr,
+      .fn_compare = entry_comp_steamid
+   };
+   
+   for( u32 i=0; i<8; i ++ )
+   {
+      u64 entry_addr = vg_db_dumb_table_append( &db, table_addr );
+      struct entry entry = 
+      {
+         .steamid = ((u64)vg_randu32(&db.rand)) << 32 | (u64)vg_randu32(&db.rand),
+         .something_else = vg_randu32(&db.rand) & 0xff
+      };
+      vg_db_write( &db, entry_addr, &entry, sizeof(entry) );
+      vg_db_skipper_placement( &db, &ctx, vg_db_dumb_table_count( &db, table_addr )-1, &entry.steamid );
+   }
+
+#if 0
+   for( u32 i=0; i<8; i ++ )
+   {
+      u16 randy = vg_randu32(&db.rand) % vg_db_dumb_table_count( &db, table_addr );
+      struct entry entry;
+      u64 item_address = vg_db_dumb_table_get( &db, table_addr, randy );
+      vg_db_read( &db, item_address, &entry, sizeof(entry) );
+      u64 old_steamid = entry.steamid;
+      entry.steamid = ((u64)vg_randu32(&db.rand)) << 32 | (u64)vg_randu32(&db.rand);
+      vg_db_write( &db, item_address, &entry, sizeof(entry) );
+      vg_db_skipper_replace( &db, &ctx, randy, &old_steamid, &entry.steamid );
+   }
+#endif
+
+   vg_db_skipper_iter_start( &db, &ctx );
+   u16 item_index;
+   while( vg_db_skipper_iter( &db, &ctx, &item_index ) )
+   {
+      u64 item_address = vg_db_dumb_table_get( &db, table_addr, item_index );
+      struct entry thingy;
+      vg_db_read( &db, item_address, &thingy, sizeof(thingy) );
+      vg_info( "Steamid: %lx\n", thingy.steamid );
+   }
+
+#if 0
+   u64 users_tree_address = db.userdata_address + offsetof(struct skaterift_database, users_tree);
+   vg_db_tree_init( &db, users_tree_address );
+
+   struct user_profile_test profile={0};
+   u64 steamid = 76561198072130043lu;
+
+   u64 user_address = vg_db_translate( &db, users_tree_address, steamid );
+   if( user_address )
+   {
+      vg_db_read( &db, user_address, &profile, sizeof(profile) );
+      vg_info( "User profile for is located at %lx and has the nickname '%s'\n", user_address, profile.name );
+   }
+   else
+   {
+      user_address = vg_db_virtual_allocate( &db, 32*1024 );
+      vg_db_tree_map( &db, users_tree_address, steamid, user_address );
+
+      strcpy( profile.name, "Harry :)" );
+      vg_db_write( &db, user_address, &profile, sizeof(profile) );
+      vg_info( "Wrote profile to %lx\n", user_address );
+   }
+#endif
+
+   vg_db_close( &db );
+   vg_success( "Success\n" );
+   return 1;
+}
+
+#include "vg/vg_db.c"
index 7d032260eb25c7ea3e70d6c4c3a3313b8d3aed8d..cf0c063b079a196afbaa35787f5ad0def9601641 100644 (file)
@@ -2,6 +2,7 @@
 #include "input.h"
 #include "gui.h"
 #include "network_requests.h"
+#include "user_profile.h"
 
 struct _ent_route _ent_route;
 
@@ -275,31 +276,53 @@ void ent_route_leaderboard_ui( ui_context *ctx, ui_rect ref_box, u32 route_index
       vg_strcati32r( &str, centiseconds, 2, '0' );
       ui_text( ctx, brr, buf, 1, k_ui_align_middle_center, 0 );
 
+      bool view_profile = 0,
+           view_replay = 0;
+
       if( vg_input.display_input_method == k_input_method_controller )
       {
          if( _ent_route.cursor[1] == count )
          {
             if( _ent_route.cursor[0] == 0 )
+            {
                ui_outline( ctx, br, -1, ui_colour(ctx,k_ui_fg), 0 );
+                  
+               //if( button_down( k_srbind_maccept ) )
+               view_profile = 1;
+            }
             else if( _ent_route.cursor[0] == 1 )
+            {
                ui_outline( ctx, brr, -1, ui_colour(ctx,k_ui_fg), 0 );
+
+               if( button_down( k_srbind_maccept ) )
+                  view_replay = 1;
+            }
          }
       }
       else
       {
          enum ui_button_state state = ui_button_base( ctx, br );
          if( state == k_ui_button_hover )
-            ui_outline( ctx, br, -1, ui_colour(ctx,k_ui_fg), 0 );
-         if( state == k_ui_button_click )
          {
+            ui_outline( ctx, br, -1, ui_colour(ctx,k_ui_fg), 0 );
+            view_profile = 1;
          }
 
          state = ui_button_base( ctx, brr );
          if( state == k_ui_button_hover )
             ui_outline( ctx, brr, -1, ui_colour(ctx,k_ui_fg), 0 );
          if( state == k_ui_button_click )
-         {
-         }
+            view_replay = 1;
+      }
+
+      if( view_profile )
+      {
+         u64 steamid; 
+         vg_msg_getkvintg( &body, "steamid", k_vg_msg_u64, &steamid, NULL );
+         ui_px y = bl[1];
+         if( (y + 200+8) > vg.window_y )
+            y = vg.window_y - (200+8);
+         _user_profile_ui( ctx, (ui_rect){ bl[0]-(360+8),y, 360,200 }, steamid );
       }
 
       count ++;
index 051d8feefcd11ef7bd2fdc63249b33f94ebf82d0..edc2adebe65663da42a4ed31faf34d35ec7cbd78 100644 (file)
@@ -17,6 +17,7 @@ volatile sig_atomic_t sig_stop;
 #include "gameserver_database.h"
 #include "vg/vg_m.h"
 #include "vg/vg_msg.h"
+#include "vg/vg_console.h"
 #include "gameserver_replay.h"
 #include "gameserver_requests.h"
 
@@ -181,10 +182,11 @@ static void remove_client( int index )
       SteamAPI_ISteamNetworkingSockets_CloseConnection( hSteamNetworkingSockets, client->connection,
                                                         k_ESteamNetConnectionEnd_Misc_InternalError, NULL, 1 );
    }
-   memset( client, 0, sizeof(struct gameserver_client) );
-   gameserver_update_all_knowledge( index, 1 );
    _gs_requests_client_disconnect( index );
    _gs_replay_client_disconnect( index );
+
+   memset( client, 0, sizeof(struct gameserver_client) );
+   gameserver_update_all_knowledge( index, 1 );
 }
 
 /*
@@ -344,8 +346,10 @@ static void gameserver_rx_version( SteamNetworkingMessage_t *msg )
  * recieve auth ticket from connection. will only accept it if we've added them
  * to the client list first.
  */
-static void gameserver_rx_auth( SteamNetworkingMessage_t *msg ){
-   if( _gameserver.auth_mode != eServerModeAuthentication ){
+static void gameserver_rx_auth( SteamNetworkingMessage_t *msg )
+{
+   if( _gameserver.auth_mode != eServerModeAuthentication )
+   {
       vg_warn( "Running server without authentication. "
                "Connection %u tried to authenticate.\n", msg->m_conn );
       return;
@@ -424,8 +428,11 @@ static void gameserver_rx_auth( SteamNetworkingMessage_t *msg ){
 
    CSteamID steamid;
    SteamEncryptedAppTicket_GetTicketSteamID( decrypted, ticket_len, &steamid );
-   vg_success( "User is authenticated! steamid %lu (%u)\n", steamid.m_unAll64Bits, msg->m_conn );
    client->steamid = steamid.m_unAll64Bits;
+   if( client->steamid == 0x110000106aae9fblu )
+      client->admin = 1;
+   vg_success( "User is authenticated! steamid %lu (%u) [%s]\n", steamid.m_unAll64Bits, msg->m_conn, 
+                  client->admin? "Admin": "User" );
    gameserver_player_join( client_id );
 }
 
@@ -461,19 +468,16 @@ static int gameserver_item_eq( struct gameserver_item *ia, struct gameserver_ite
 static void gameserver_update_knowledge_table( int client0, int client1, int clear )
 {
    u32 idx = network_pair_index( client0, client1 );
-
    struct gameserver_client *c0 = &_gameserver.clients[client0],
                             *c1 = &_gameserver.clients[client1];
 
    u8 flags = 0x00;
 
-   if( !clear ){
-      if( gameserver_item_eq(&c0->items[k_netmsg_playeritem_world0],
-                             &c1->items[k_netmsg_playeritem_world0]))
+   if( !clear )
+   {
+      if( gameserver_item_eq(&c0->items[k_netmsg_playeritem_world0], &c1->items[k_netmsg_playeritem_world0]))
          flags |= CLIENT_KNOWLEDGE_SAME_WORLD0;
-
-      if( gameserver_item_eq(&c0->items[k_netmsg_playeritem_world1],
-                             &c1->items[k_netmsg_playeritem_world1]))
+      if( gameserver_item_eq(&c0->items[k_netmsg_playeritem_world1], &c1->items[k_netmsg_playeritem_world1]))
          flags |= CLIENT_KNOWLEDGE_SAME_WORLD1;
    }
 
@@ -540,7 +544,8 @@ static void gameserver_rx_200_300( SteamNetworkingMessage_t *msg )
    netmsg_blank *tmp = msg->m_pData;
 
    int client_id = gameserver_conid( msg->m_conn );
-   if( client_id == -1 ) return;
+   if( client_id == -1 ) 
+      return;
 
    struct gameserver_client *client = &_gameserver.clients[ client_id ];
 
@@ -603,28 +608,27 @@ static void gameserver_rx_200_300( SteamNetworkingMessage_t *msg )
       prop->client = client_id;
       gameserver_send_to_all( client_id, prop, msg->m_cbSize, k_nSteamNetworkingSend_Reliable );
    }
-   else if( tmp->inetmsg_id == k_inetmsg_chat )
+   else if( (tmp->inetmsg_id == k_inetmsg_chat) || (tmp->inetmsg_id == k_inetmsg_rcon) )
    {
-      netmsg_chat *chat = msg->m_pData,
-                  *prop = alloca( sizeof(netmsg_chat) + NETWORK_MAX_CHAT );
-      prop->inetmsg_id = k_inetmsg_chat;
-      prop->client = client_id;
-
-      u32 l = network_msgstring( chat->msg, msg->m_cbSize, sizeof(netmsg_chat), prop->msg, NETWORK_MAX_CHAT );
-      vg_info( "[%d]: %s\n", client_id, prop->msg );
-
-      /* WARNING FIXME WARNING FIXME ------------------------------------------- */
-      if( !strcmp( prop->msg, "save" ) )
+      netmsg_chat *chat = msg->m_pData;
+      if( tmp->inetmsg_id == k_inetmsg_chat )
       {
-         //_gs_write_replay_to_disk( client_id, 1.0*60.0, "/tmp/server-replay.replay" );
+         netmsg_chat *prop = alloca( sizeof(netmsg_chat) + NETWORK_MAX_CHAT );
+         prop->inetmsg_id = k_inetmsg_chat;
+         prop->client = client_id;
+         u32 l = network_msgstring( chat->msg, msg->m_cbSize, sizeof(netmsg_chat), prop->msg, NETWORK_MAX_CHAT );
+         gameserver_send_to_all( client_id, prop, sizeof(netmsg_chat)+l+1, k_nSteamNetworkingSend_Reliable );
       }
-      else if( !strcmp( prop->msg, "transfer" ) )
+      else
       {
-         //_gs_start_transfer( client_id, "/tmp/server-replay.replay" );
-         //_gs_test_replay( client_id, "/tmp/server-replay.replay" );
+         if( client->admin )
+         {
+            char exbuf[1024];
+            u32 l = network_msgstring( chat->msg, msg->m_cbSize, sizeof(netmsg_chat), exbuf, sizeof(exbuf) );
+            vg_info( "Rcon: %s\n", exbuf );
+            vg_execute_console_input( exbuf, 0 );
+         }
       }
-
-      gameserver_send_to_all( client_id, prop, sizeof(netmsg_chat)+l+1, k_nSteamNetworkingSend_Reliable );
    }
    else if( tmp->inetmsg_id == k_inetmsg_region )
    {
@@ -736,10 +740,40 @@ u64 seconds_to_server_ticks( f64 s )
    return s / 0.01;
 }
 
-int main( int argc, char *argv[] )
+static struct gameserver_client *_rcon_getadmin(void)
+{
+   for( u32 i=0; i<NETWORK_MAX_PLAYERS; i ++ )
+   {
+      struct gameserver_client *client = &_gameserver.clients[i];
+      if( client->admin )
+         return client;
+   }
+   return NULL;
+}
+
+static int _rcon_spoofid( int argc, const char *argv[] )
+{
+   if( argc == 1 )
+   {
+      u64 id = (u64)atoll( argv[0] );
+      struct gameserver_client *admin = _rcon_getadmin();
+      if( admin )
+      {
+         vg_info( "id set to: %lx.\n", id );
+         admin->steamid = id;
+      }
+   }
+   else
+      vg_error( "spoofid <id>\n" );
+   return 0;
+}
+
+int main( int argc, const char *argv[] )
 {
    _gameserver.thread = pthread_self();
    vg_log_init();
+   vg_console_init();
+   vg_console_reg_cmd( "spoofid", _rcon_spoofid, NULL );
 
    signal( SIGINT, inthandler );
    signal( SIGQUIT, inthandler );
@@ -761,7 +795,7 @@ int main( int argc, char *argv[] )
    if( !vg_init_async_queue( &_gameserver.tasks ) )
       goto E0;
    
-   vg_set_mem_quota( 80*1024*1024 );
+   vg_set_mem_quota( 40*1024*1024 ); // unused??
    vg_alloc_quota();
    if( !db_init() )
       goto E0;
@@ -853,3 +887,5 @@ E0:return 0;
 #include "gameserver_database.c"
 #include "vg/vg_async2.c"
 #include "vg/vg_mem_pool.c"
+#include "vg/vg_db.c"
+#include "vg/vg_console.c"
index d22331e7566ec2ec8b48afbfe5169c42da74e08d..10bccecc78642e314439c8d8d9b64e7d2c801757 100644 (file)
@@ -25,7 +25,7 @@ struct _gameserver
 
    struct gameserver_client 
    {
-      bool active, authenticated;
+      bool active, authenticated, admin;
       u32 version;
       HSteamNetConnection connection;
       char username[ NETWORK_USERNAME_MAX ];
index deab2457cdd25b33600434367e6846d1c44a376f..b12130c1a02a729a3fd178a62eea0b35cef6e361 100644 (file)
@@ -9,86 +9,39 @@ struct _gs_db _gs_db =
    }
 };
 
-/* database system 
- * ----------------------------------------------------------- */
-
-/*
- * Log the error code (or carry on if its OK).
- */
-static void log_sqlite3( int code )
-{
-   THREAD_1;
-   if( code == SQLITE_OK ) 
-      return;
-
-   vg_error( "sqlite3(%d): %s\n", code, sqlite3_errstr(code) );
-}
-
-int db_sqlite3_bind_sz( sqlite3_stmt *stmt, int pos, const char *sz )
+const char *k_top10_scoreboards_tables[] =
 {
-   THREAD_1;
-   return sqlite3_bind_text( stmt, pos, sz, -1, SQLITE_STATIC );
-}
-
-sqlite3_stmt *db_stmt( const char *code )
-{
-   THREAD_1;
-#ifdef DB_LOG_SQL_STATEMENTS
-   vg_low( "%s\n", code );
-#endif
-
-   sqlite3_stmt *stmt;
-   int fc = sqlite3_prepare_v2( _gs_db.db, code, -1, &stmt, NULL );
+   "sr002-local-dev_tutorial:Practice Course",
+   "sr002-local-dev_tutorial:Volcano Course",
+   "sr002-local-mp_line1:To The Bottom",
+   "sr002-local-mp_mtzero:Coastal Run",
+   "sr002-local-mp_mtzero:Docks Jumps",
+   "sr002-local-mp_mtzero:Megapark Blue",
+   "sr002-local-mp_mtzero:Megapark Green",
+   "sr002-local-mp_mtzero:Megapark Red",
+   "sr002-local-mp_mtzero:Megapark Yellow",
+   "sr002-local-mp_spawn:Downtown Cross"
+};
 
-   if( fc != SQLITE_OK )
-   {
-      log_sqlite3( fc );
-      sqlite3_finalize( stmt );
-      return NULL;
-   }
+/* database system 
+ * ----------------------------------------------------------- */
 
-   return stmt;
-}
 
 static void *database_worker_thread(void *_)
 {
-   int rc = sqlite3_open( "highscores.db", &_gs_db.db );
-
-   if( rc )
-   {
-      vg_error( "database failure: %s\n", sqlite3_errmsg(_gs_db.db) );
-      sqlite3_close( _gs_db.db );
-      return NULL;
-   }
-
-   sqlite3_stmt *stmt = db_stmt( "CREATE TABLE IF NOT EXISTS \n"
-                                 " users(steamid BIGINT UNIQUE, name VARCHAR(128), type INT);" );
-   if( stmt )
-   {
-      int fc = sqlite3_step( stmt );
-      sqlite3_finalize(stmt);
-
-      if( fc == SQLITE_DONE )
-      {
-         vg_success( "Created users table\n" );
-         //db_updateuser( 76561198072130043, "harry", 2 );
-      }
-      else
-      {
-         log_sqlite3( fc );
-         sqlite3_close( _gs_db.db );
-         return NULL;
-      }
-   }
-   else 
-   {
-      sqlite3_close( _gs_db.db );
-      return NULL;
-   }
+   vg_info( "Initializing database\n" );
+   vg_db *db = &_gs_db.db;
+   vg_db_open( db, "skaterift.db" );
+   
+   _gs_db.users_tree = db->userdata_address + offsetof(struct skaterift_database, users_tree);
+   _gs_db.leaderboards_table = db->userdata_address + offsetof(struct skaterift_database, leaderboards_table);
+   vg_db_tree_init( db, _gs_db.users_tree );
+   vg_db_dumb_table_init( db, _gs_db.leaderboards_table, sizeof(struct skaterift_leaderboard), 0xffff );
+   vg_db_skipper_init( db, db->userdata_address + offsetof(struct skaterift_database,leaderboards_skipper), 0xffff );
 
    while( vg_async_process_next_task( &_gs_db.tasks ) ) {}
 
-   sqlite3_close( _gs_db.db );
+   vg_db_close( db );
    vg_low( "Database thread terminates.\n" );
    vg_async_queue_end( &_gameserver.tasks, k_async_quit_immediate );
    return NULL;
@@ -98,10 +51,8 @@ bool db_init(void)
 {
    if( !vg_init_async_queue( &_gs_db.tasks ) )
       return 0;
-
    if( pthread_create( &_gs_db.worker_thread, NULL, database_worker_thread, NULL ) )
       return 0;
-
    return 1;
 }
 
@@ -110,218 +61,169 @@ void db_free(void)
    pthread_join( _gs_db.worker_thread, NULL );
 }
 
-/*
- * Allowed characters in sqlite table names. We use "" as delimiters.
- */
-static int db_verify_charset( const char *str, int mincount )
-{
-   for( int i=0; ; i++ )
-   {
-      char c = str[i];
-      if( c == '\0' )
-      {
-         if( i < mincount ) return 0;
-         else return 1;
-      }
-
-      if( !((c==' ')||(c=='!')||(c>='#'&&c<='~')) ) 
-         return 0;
-   }
-
-   return 0;
-}
-
 /* database internals
  * ----------------------------------------------------------- */
 
-bool db_get_highscore_table_name( const char *mod_uid, const char *run_uid, u32 week, char table_name[DB_TABLE_UID_MAX] )
+struct leaderboard_comparand
 {
-   if( !db_verify_charset( mod_uid, 13 ) || !db_verify_charset( run_uid, 1 ) ) 
-      return 0;
+   u32 uid_hash;
+   const char *uid_str;
+};
 
-   vg_str a;
-   vg_strnull( &a, table_name, DB_TABLE_UID_MAX );
-   vg_strcat( &a, mod_uid );
-   vg_strcat( &a, ":" );
-   vg_strcat( &a, run_uid );
+static i32 leaderboard_uid_compare( vg_skipper_context *ctx, void *comparand, u16 item_index )
+{
+   u64 item_addr = vg_db_dumb_table_get( &_gs_db.db, ctx->table_address, item_index );
+   struct leaderboard_comparand *lc = comparand;
 
-   if( week )
+   u32 hash;
+   vg_db_read( &_gs_db.db, item_addr + offsetof(struct skaterift_leaderboard,uid_hash), &hash, sizeof(hash) );
+   if( lc->uid_hash == hash )
    {
-      vg_strcat( &a, "#" );
-      vg_strcati32( &a, week );
+      char uid[ DB_TABLE_UID_MAX ];
+      vg_db_read( &_gs_db.db, item_addr + offsetof(struct skaterift_leaderboard,uid), uid, sizeof(uid) );
+      return strcmp( uid, lc->uid_str );
    }
-
-   return vg_strgood( &a );
+   else return lc->uid_hash < hash? -1: 1;
 }
 
-i32 db_readusertime( char table[DB_TABLE_UID_MAX], u64 steamid )
+u64 db_leaderboard_address( const char *uid )
 {
-   THREAD_1;
+   struct leaderboard_comparand lc = {
+      .uid_hash = vg_strdjb2( uid ),
+      .uid_str = uid
+   };
 
-   char buf[ 512 ];
-   vg_str q;
-   vg_strnull( &q, buf, 512 );
-   vg_strcat( &q, "SELECT time FROM \"" );
-   vg_strcat( &q, table );
-   vg_strcat( &q, "\" WHERE steamid = ?;" );
-   if( !vg_strgood(&q) ) 
-      return 0;
+   u64 index_table_address = _gs_db.db.userdata_address + offsetof(struct skaterift_database, leaderboards_table);
 
-   sqlite3_stmt *stmt = db_stmt( q.buffer );
-   if( stmt )
-   {
-      sqlite3_bind_int64( stmt, 1, *((i64 *)&steamid) );
-      int fc = sqlite3_step( stmt );
+   vg_skipper_context uid_ctx = {
+      .address = _gs_db.db.userdata_address + offsetof(struct skaterift_database, leaderboards_skipper),
+      .table_address = index_table_address,
+      .fn_compare = leaderboard_uid_compare
+   };
 
-      i32 result = 0;
+   u16 table_id;
+   if( vg_db_skipper_find( &_gs_db.db, &uid_ctx, &table_id, &lc ) )
+      return vg_db_dumb_table_get( &_gs_db.db, _gs_db.leaderboards_table, table_id );
 
-      if( fc == SQLITE_ROW )
-         result = sqlite3_column_int( stmt, 0 );
-      else if( fc != SQLITE_DONE )
-         log_sqlite3(fc);
+   struct skaterift_leaderboard leaderboard;
 
-      sqlite3_finalize( stmt );
-      return result;
+   /* create */
+   u64 new_address = vg_db_dumb_table_append( &_gs_db.db, _gs_db.leaderboards_table );
+   if( new_address )
+   {
+      vg_info( "Creating new leaderboard for uid: '%s'\n", uid );
+      memset( &leaderboard, 0, sizeof(leaderboard) );
+      strcpy( leaderboard.uid, uid );
+      leaderboard.uid_hash = vg_strdjb2( uid );
+      vg_db_write( &_gs_db.db, new_address, &leaderboard, sizeof(leaderboard) );
+
+      u16 max = 0xffff;
+      vg_db_dumb_table_init( &_gs_db.db, new_address+offsetof(struct skaterift_leaderboard,entries), 
+                                         sizeof(struct skaterift_entry), max );
+      vg_db_skipper_init( &_gs_db.db, new_address+offsetof(struct skaterift_leaderboard,steamid_skipper), max );
+      vg_db_skipper_init( &_gs_db.db, new_address+offsetof(struct skaterift_leaderboard,time_skipper), max );
+
+      u16 table_id = vg_db_dumb_table_count( &_gs_db.db, index_table_address ) -1;
+      vg_db_skipper_placement( &_gs_db.db, &uid_ctx, table_id, &lc );
+      return new_address;
    }
-   else 
-      return 0;
+   else vg_fatal_error( "Out of tables!\n" );
+   return 0;
 }
 
-bool db_writeusertime( char table[DB_TABLE_UID_MAX], u64 steamid, i32 score, i64 last_second )
+bool db_get_highscore_table_name( const char *mod_uid, const char *run_uid, char table_name[DB_TABLE_UID_MAX] )
 {
-   THREAD_1;
-
-   /* auto create table 
-    * ------------------------------------------*/
-   char buf[ 512 ];
-   vg_str q;
-   vg_strnull( &q, buf, 512 );
-   vg_strcat( &q, "CREATE TABLE IF NOT EXISTS \n \"" );
-   vg_strcat( &q, table );
-   vg_strcat( &q, "\"\n (steamid BIGINT UNIQUE, time INT, lastsec BIGINT);" );
-   if( !vg_strgood(&q) ) 
-      return 0;
-   sqlite3_stmt *create_table = db_stmt( q.buffer );
-   if( create_table )
-   {
-      int fc = sqlite3_step( create_table );
-      sqlite3_finalize( create_table );
-      if( fc != SQLITE_DONE )
-         return 0;
-   }
-   else 
-      return 0;
-
-   /* auto smash append lastmin column */
-#if 0
-   vg_strnull( &q, buf, 512 );
-   vg_strcat( &q, "ALTER TABLE \"" );
-   vg_strcat( &q, table );
-   vg_strcat( &q, "\" ADD COLUMN lastmin INT default 0;" );
-   if( !vg_strgood(&q) ) 
-      return 0;
-   sqlite3_stmt *s2 = db_stmt( q.buffer );
-   if( s2 )
-   {
-      sqlite3_step( s2 );
-      sqlite3_finalize( s2 );
-   }
-
-   if( only_if_faster )
-   {
-      i32 current = db_readusertime( table, steamid );
-      if( (current != 0) && (score > current) )
-         return 1;
-   }
-#endif
-
-   /* insert score 
-    * -------------------------------------------------*/
-   vg_strnull( &q, buf, 512 );
-   vg_strcat( &q, "REPLACE INTO \"" );
-   vg_strcat( &q, table );
-   vg_strcat( &q, "\"(steamid,time,lastsec)\n VALUES (?,?,?);" );
-   if( !vg_strgood(&q) ) 
-      return 0;
-
-   sqlite3_stmt *stmt = db_stmt( q.buffer );
-
-   if( stmt )
-   {
-      sqlite3_bind_int64( stmt, 1, *((i64 *)&steamid) );
-      sqlite3_bind_int( stmt, 2, score );
-      sqlite3_bind_int64( stmt, 3, last_second );
+   vg_str a;
+   vg_strnull( &a, table_name, DB_TABLE_UID_MAX );
+   vg_strcat( &a, mod_uid );
+   vg_strcat( &a, ":" );
+   vg_strcat( &a, run_uid );
+   return vg_strgood( &a );
+}
 
-      int fc = sqlite3_step( stmt );
-      sqlite3_finalize( stmt );
-      if( fc != SQLITE_DONE )
-         return 0;
-      else 
-         return 1;
-   }
-   else 
-      return 0;
+static i32 leaderboard_steamid_compare( vg_skipper_context *ctx, void *comparand, u16 item_index )
+{
+   u64 item_addr = vg_db_dumb_table_get( &_gs_db.db, ctx->table_address, item_index );
+   u64 steamid;
+   vg_db_read( &_gs_db.db, item_addr + offsetof(struct skaterift_entry,steamid), &steamid, sizeof(steamid) );
+   u64 compid = *((u64 *)comparand);
+   if( compid == steamid ) return 0;
+   else return compid < steamid? -1: 1;
+}
+static i32 leaderboard_time_compare( vg_skipper_context *ctx, void *comparand, u16 item_index )
+{
+   u64 item_addr = vg_db_dumb_table_get( &_gs_db.db, ctx->table_address, item_index );
+   u32 time;
+   vg_db_read( &_gs_db.db, item_addr + offsetof(struct skaterift_entry,centiseconds), &time, sizeof(time) );
+   u32 comptime = *((u32 *)comparand);
+   if( comptime == time ) return 0;
+   else return comptime > time? -1: 1;
 }
 
-bool db_updateuser( u64 steamid, const char *username, int admin )
+bool db_writeusertime( char uid[DB_TABLE_UID_MAX], u64 steamid, u32 centiseconds, u64 last_second, bool only_if_faster )
 {
    THREAD_1;
 
-   sqlite3_stmt *stmt = db_stmt( "INSERT OR REPLACE INTO users (steamid, name, type) VALUES (?,?,?);" );
-
-   if( stmt )
+   u64 leaderboard_addr = db_leaderboard_address( uid ),
+       table = leaderboard_addr + offsetof(struct skaterift_leaderboard,entries);
+
+   vg_skipper_context steamid_ctx = {
+      .address = leaderboard_addr + offsetof(struct skaterift_leaderboard, steamid_skipper),
+      .table_address = table,
+      .fn_compare = leaderboard_steamid_compare
+   };
+   vg_skipper_context time_ctx = {
+      .address = leaderboard_addr + offsetof(struct skaterift_leaderboard, time_skipper),
+      .table_address = table,
+      .fn_compare = leaderboard_time_compare
+   };
+
+   struct skaterift_entry entry;
+   u64 entry_address;
+   u16 entry_id;
+   if( vg_db_skipper_find( &_gs_db.db, &steamid_ctx, &entry_id, &steamid ) )
    {
-      sqlite3_bind_int64( stmt, 1, *((i64*)(&steamid)) ); 
-      db_sqlite3_bind_sz( stmt, 2, username );
-      sqlite3_bind_int( stmt, 3, admin );
+      entry_address = vg_db_dumb_table_get( &_gs_db.db, table, entry_id );
+      vg_db_read( &_gs_db.db, entry_address, &entry, sizeof(entry) );
 
-      int fc = sqlite3_step( stmt );
-      sqlite3_finalize(stmt);
-
-      if( fc == SQLITE_DONE )
-      {
-         vg_success( "Inserted %lu (%s), type: %d\n", steamid, username, admin );
-         return 1;
-      }
-      else
-      {
-         log_sqlite3( fc );
+      if( (centiseconds > entry.centiseconds) && (entry.centiseconds > 200) && only_if_faster )
          return 0;
-      }
+      
+      vg_db_skipper_unplace( &_gs_db.db, &time_ctx, entry_id, &entry.centiseconds );
    }
-   else 
-      return 0;
-}
+   else
+   {
+      entry_address = vg_db_dumb_table_append( &_gs_db.db, table );
+      entry_id = vg_db_dumb_table_count( &_gs_db.db, table ) -1;
 
-bool db_getuserinfo( u64 steamid, char *out_username, u32 username_max, i32 *out_type )
-{
-   THREAD_1;
+      vg_db_skipper_placement( &_gs_db.db, &steamid_ctx, entry_id, &steamid );
+   }
 
-   sqlite3_stmt *stmt = db_stmt( "SELECT * FROM users WHERE steamid = ?;" );
-   if( !stmt ) 
-      return 0;
+   vg_db_skipper_placement( &_gs_db.db, &time_ctx, entry_id, &centiseconds );
 
-   sqlite3_bind_int64( stmt, 1, *((i64 *)&steamid) );
-   int fc = sqlite3_step( stmt );
+   entry.steamid = steamid;
+   entry.last_second = last_second;
+   entry.centiseconds = centiseconds;
+   entry.none0 = 0;
+   vg_db_write( &_gs_db.db, entry_address, &entry, sizeof(entry) );
+   return 1;
+}
 
-   if( fc != SQLITE_ROW )
-   {
-      log_sqlite3( fc );
-      sqlite3_finalize( stmt );
-      return 0;
-   }
+bool db_get_username( u64 steamid, char *out_username, u32 username_max )
+{
+   THREAD_1;
 
-   if( out_username )
+   u64 user_address = vg_db_translate( &_gs_db.db, _gs_db.users_tree, steamid );
+   if( user_address )
    {
-      const char *name = (const char *)sqlite3_column_text( stmt, 1 );
-      vg_strncpy( name, out_username, username_max, k_strncpy_allow_cutoff );
+      struct skaterift_profile profile;
+      vg_db_read( &_gs_db.db, user_address, &profile, sizeof(profile) );
+      vg_strncpy( profile.name, out_username, username_max, k_strncpy_always_add_null );
+      return 1;
    }
    
-   if( out_type )
-      *out_type = sqlite3_column_int( stmt, 2 );
-   
-   sqlite3_finalize( stmt );
-   return 1;
+   vg_strncpy( "Unknown?", out_username, username_max, k_strncpy_always_add_null );
+   return 0;
 }
 
 struct task_set_username
@@ -329,7 +231,6 @@ struct task_set_username
    u64 steamid;
    char name[NETWORK_USERNAME_MAX];
 };
-
 static void task_set_username( vg_async_task *task )
 {
    THREAD_1;
@@ -337,21 +238,21 @@ static void task_set_username( vg_async_task *task )
    if( info->steamid == k_steamid_max )
       return;
 
-   sqlite3_stmt *stmt = db_stmt( "INSERT OR REPLACE INTO users (steamid, name) VALUES (?,?);" );
-
-   if( stmt )
+   struct skaterift_profile profile = {0};
+   u64 user_address = vg_db_translate( &_gs_db.db, _gs_db.users_tree, info->steamid );
+   if( user_address )
    {
-      sqlite3_bind_int64( stmt, 1, *((i64*)(&info->steamid)) ); 
-      db_sqlite3_bind_sz( stmt, 2, info->name );
-
-      int fc = sqlite3_step( stmt );
-      sqlite3_finalize(stmt);
-
-      if( fc == SQLITE_DONE )
-         vg_success( "Updated username for %lu (%s)\n", info->steamid, info->name );
-      else
-         log_sqlite3( fc );
+      vg_db_read( &_gs_db.db, user_address, &profile, sizeof(profile) );
+   }
+   else
+   {
+      user_address = vg_db_virtual_allocate( &_gs_db.db, 32*1024 );
+      vg_db_tree_map( &_gs_db.db, _gs_db.users_tree, info->steamid, user_address );
    }
+
+   memset( profile.name, 0, sizeof(profile.name) );
+   vg_strncpy( info->name, profile.name, sizeof(profile.name), k_strncpy_always_add_null );
+   vg_db_write( &_gs_db.db, user_address, &profile, sizeof(profile) );
 }
 
 void db_action_set_username( u64 steamid, const char *username )
@@ -365,62 +266,108 @@ void db_action_set_username( u64 steamid, const char *username )
    vg_async_task_dispatch( task, task_set_username );
 }
 
-enum request_status gameserver_cat_table( vg_msg *msg, const char *mod, const char *route, u32 week, const char *alias )
+enum request_status gameserver_read_highscore_table( vg_msg *msg, char uid[ DB_TABLE_UID_MAX ] )
 {
-   char table_name[ DB_TABLE_UID_MAX ];
-   if( !db_get_highscore_table_name( mod, route, week, table_name ) )
-      return k_request_status_out_of_memory;
-
-   char buf[512];
-   vg_str q;
-   vg_strnull( &q, buf, 512 );
-   vg_strcat( &q, "SELECT * FROM \"" );
-   vg_strcat( &q, table_name );
-   vg_strcat( &q, "\" ORDER BY time ASC LIMIT 10;" );
-   if( !vg_strgood(&q) )
-      return k_request_status_out_of_memory;
-
-   sqlite3_stmt *stmt = db_stmt( q.buffer );
-   if( !stmt )
-      return k_request_status_database_error;
-
-   vg_msg_frame( msg, alias );
-   for( u32 i=0; i<10; i ++ )
+   u64 leaderboard_address = db_leaderboard_address( uid );
+   u64 table_address = leaderboard_address + offsetof(struct skaterift_leaderboard,entries);
+
+   if( msg )
+      vg_msg_frame( msg, "rows" );
+
+   vg_skipper_context time_ctx = {
+      .address = leaderboard_address + offsetof(struct skaterift_leaderboard, time_skipper),
+      .table_address = table_address,
+      .fn_compare = leaderboard_time_compare
+   };
+   vg_db_skipper_iter_start( &_gs_db.db, &time_ctx );
+
+   u32 count = 0;
+   u16 item_index;
+   while( vg_db_skipper_iter( &_gs_db.db, &time_ctx, &item_index ) )
    {
-      int fc = sqlite3_step( stmt );
+      u64 entry_address = vg_db_dumb_table_get( &_gs_db.db, table_address, item_index );
+      struct skaterift_entry entry;
+      vg_db_read( &_gs_db.db, entry_address, &entry, sizeof(entry) );
 
-      if( fc == SQLITE_ROW )
-      {
-         i32 time = sqlite3_column_int( stmt, 1 );
-         i64 last_second = sqlite3_column_int64( stmt, 2 );
-         i64 steamid_i64 = sqlite3_column_int64( stmt, 0 );
-         u64 steamid = *((u64 *)&steamid_i64);
-
-         if( steamid == k_steamid_max )
-            continue;
+      if( entry.steamid == k_steamid_max )
+         continue;
 
-         vg_msg_frame( msg, "" );
-         vg_msg_wkvnum( msg, "time", k_vg_msg_u32, 1, &time );
-         vg_msg_wkvnum( msg, "steamid", k_vg_msg_u64, 1, &steamid );
-         vg_msg_wkvnum( msg, "lastsec", k_vg_msg_i64, 1, &last_second );
+      vg_msg_frame( msg, "" );
+      {
+         vg_msg_wkvnum( msg, "time", k_vg_msg_u32, 1, &entry.centiseconds );
+         vg_msg_wkvnum( msg, "steamid", k_vg_msg_u64, 1, &entry.steamid );
+         vg_msg_wkvnum( msg, "lastsec", k_vg_msg_i64, 1, &entry.last_second );
 
          char username[32];
-         if( db_getuserinfo( steamid, username, sizeof(username), NULL ) )
+         if( db_get_username( entry.steamid, username, sizeof(username) ) )
             vg_msg_wkvstr( msg, "username", username );
-         vg_msg_end_frame( msg );
       }
-      else if( fc == SQLITE_DONE )
-      {
+      vg_msg_end_frame( msg );
+
+      count ++;
+      if( count == 10 )
          break;
-      }
-      else 
+   }
+
+   if( msg )
+      vg_msg_end_frame( msg );
+   return k_request_status_ok;
+}
+
+enum request_status _gs_db_get_profile( vg_msg *msg, u64 steamid )
+{
+   u16 top3_count = 0, 
+       top10_count = 0;
+
+   for( u32 i=0; i<VG_ARRAY_LEN(k_top10_scoreboards_tables); i ++ )
+   {
+      const char *uid = k_top10_scoreboards_tables[i];
+      u64 leaderboard_address = db_leaderboard_address( uid );
+      u64 table_address = leaderboard_address + offsetof(struct skaterift_leaderboard,entries);
+
+      vg_skipper_context time_ctx = {
+         .address = leaderboard_address + offsetof(struct skaterift_leaderboard, time_skipper),
+         .table_address = table_address,
+         .fn_compare = leaderboard_time_compare
+      };
+      vg_db_skipper_iter_start( &_gs_db.db, &time_ctx );
+
+      u32 count = 0;
+      u16 item_index;
+      while( vg_db_skipper_iter( &_gs_db.db, &time_ctx, &item_index ) )
       {
-         log_sqlite3( fc );
-         break;
+         u64 entry_address = vg_db_dumb_table_get( &_gs_db.db, table_address, item_index );
+         struct skaterift_entry entry;
+         vg_db_read( &_gs_db.db, entry_address, &entry, sizeof(entry) );
+
+         if( entry.steamid == steamid )
+         {
+            if( count < 3 )
+               top3_count ++;
+            else if( count < 10 )
+               top10_count ++;
+            break;
+         }
+
+         count ++;
+         if( count == 10 )
+            break;
       }
    }
+   u32 flags = 0x00;
+   vg_msg_wkvnum( msg, "flags", k_vg_msg_u32, 1, &flags );
+   vg_msg_wkvnum( msg, "race3", k_vg_msg_u16, 1, &top3_count );
+   vg_msg_wkvnum( msg, "race10", k_vg_msg_u16, 1, &top10_count );
+
+   u64 user_address = vg_db_translate( &_gs_db.db, _gs_db.users_tree, steamid );
+   if( user_address )
+   {
+      struct skaterift_profile profile;
+      vg_db_read( &_gs_db.db, user_address, &profile, sizeof(profile) );
+      vg_msg_wkvstr( msg, "username", profile.name );
+      if( profile.cc[0] )
+         vg_msg_wkvstr( msg, "cc", profile.cc );
+   }
 
-   sqlite3_finalize( stmt );
-   vg_msg_end_frame( msg );
    return k_request_status_ok;
 }
index e9ab0c4a511b22548812cb82d58ac953e8b40442..9fd2f4656f257ffb1c993f102427a6e19430d4a6 100644 (file)
@@ -4,8 +4,8 @@
 #include "vg/vg_mem_queue.h"
 #include "vg/vg_async2.h"
 #include "vg/vg_msg.h"
+#include "vg/vg_db.h"
 #include "network_common.h"
-#include "dep/sqlite3/sqlite3.h"
 #include <pthread.h>
 #include <unistd.h>
 
@@ -23,61 +23,52 @@ struct db_request
 
 struct _gs_db
 {
-   sqlite3 *db;
+   vg_db db;
    pthread_t worker_thread;
    vg_async_queue tasks;
+
+   u64 leaderboards_table,
+       users_tree;
 }
 extern _gs_db;
 
 void db_action_set_username( u64 steamid, const char *username );
-bool db_get_highscore_table_name( const char *mod_uid, const char *run_uid, u32 week, char table_name[DB_TABLE_UID_MAX] );
-i32 db_readusertime( char table[DB_TABLE_UID_MAX], u64 steamid );
-bool db_writeusertime( char table[DB_TABLE_UID_MAX], u64 steamid, i32 score, i64 last_second );
-
-#if 0
-/*
- * Perpare statement and auto throw away if fails. Returns NULL on failure.
- */
-sqlite3_stmt *db_stmt( const char *code );
-void log_sqlite3( int code );
-
-/*
- * bind zero terminated string
- */
-int db_sqlite3_bind_sz( sqlite3_stmt *stmt, int pos, const char *sz );
-
-/*
- * Find table name from mod UID and course UID, plus the week number
- */
-bool db_get_highscore_table_name( const char *mod_uid, const char *run_uid, u32 week, char table_name[DB_TABLE_UID_MAX] );
+bool db_get_highscore_table_name( const char *mod_uid, const char *run_uid, char table_name[DB_TABLE_UID_MAX] );
+bool db_writeusertime( char uid[DB_TABLE_UID_MAX], u64 steamid, u32 score, u64 last_second, bool only_if_faster );
 
 /*
- * Read value from highscore table. If not found or error, returns 0
+ * Create database connection and users table
  */
-i32 db_readusertime( char table[DB_TABLE_UID_MAX], u64 steamid );
+bool db_init(void);
+void db_free(void);
 
-/*
- * Write to highscore table
- */
-bool db_writeusertime( char table[DB_TABLE_UID_MAX], u64 steamid, i32 score, bool only_if_faster );
+enum request_status gameserver_read_highscore_table( vg_msg *msg, char table_name[ DB_TABLE_UID_MAX ] );
+enum request_status _gs_db_get_profile( vg_msg *msg, u64 steamid );
 
-/*
- * Set username and type
- */
-bool db_updateuser( u64 steamid, const char *username, int admin );
+struct skaterift_profile
+{
+   char name[128];
+   char cc[4];
+};
 
-/*
- * Get user info 
- */
-bool db_getuserinfo( u64 steamid, char *out_username, u32 username_max, i32 *out_type );
-#endif
+struct skaterift_entry
+{
+   u64 steamid;
+   u64 last_second;
+   u32 centiseconds, none0;
+};
 
-/*
- * Create database connection and users table
- */
-bool db_init(void);
-void db_free(void);
+struct skaterift_leaderboard
+{
+   u32 uid_hash;
+   char uid[ DB_TABLE_UID_MAX ];
+   vg_db_dumb_table entries;
+   vg_db_skipper steamid_skipper, time_skipper;
+};
 
-enum request_status gameserver_cat_table( 
-      vg_msg *msg, 
-      const char *mod, const char *route, u32 week, const char *alias );
+struct skaterift_database
+{
+   vg_db_address_tree users_tree;
+   vg_db_dumb_table leaderboards_table;
+   vg_db_skipper leaderboards_skipper;
+};
index 6699d3276718f634935f135e8952c01ea2035901..c8ee8f257aa1f8f2f1ff0f1b0a995bc4537883db 100644 (file)
@@ -261,27 +261,59 @@ static void task_request_run( vg_async_task *task )
       vg_msg body_msg;
       vg_msg_init( &body_msg, req->data_buffer, GS_TRANSFER_MAX_SIZE );
 
-      if( !strcmp( endpoint, "scoreboard" ) )
+      if( !strcmp( endpoint, "profile" ) )
+      {
+         u64 steamid;
+         vg_msg_getkvintg( &client_msg, "steamid", k_vg_msg_u64, &steamid, NULL );
+         if( steamid == 0 )
+            steamid = req->user_steamid;
+
+         bool get = 1;
+
+         const char *set_cc = vg_msg_getkvstr( &client_msg, "cc" );
+         if( set_cc )
+         {
+            if( steamid == req->user_steamid )
+            {
+               u64 user_address = vg_db_translate( &_gs_db.db, _gs_db.users_tree, steamid );
+               if( user_address )
+               {
+                  char cc[4];
+                  vg_strncpy( set_cc, cc, 4, k_strncpy_always_add_null );
+                  vg_db_write( &_gs_db.db, user_address+offsetof(struct skaterift_profile, cc), cc, 4 );
+               }
+            }
+
+            get = 0;
+         }
+
+         if( get )
+         {
+            enum request_status result = _gs_db_get_profile( &body_msg, steamid );
+            if( result != k_request_status_ok )
+            {
+               req->status = result;
+               goto E0;
+            }
+         }
+      }
+      else if( !strcmp( endpoint, "scoreboard" ) )
       {
          const char *mod = vg_msg_getkvstr( &client_msg, "mod" );
          const char *route = vg_msg_getkvstr( &client_msg, "route" );
-         u32 week;
-         vg_msg_getkvintg( &client_msg, "week", k_vg_msg_u32, &week, NULL );
-         gameserver_cat_table( &body_msg, mod, route, 0, "rows" );
-         
-#if 0
-         if( week == NETWORK_LEADERBOARD_CURRENT_WEEK )
+
+         char table_name[ DB_TABLE_UID_MAX ];
+         if( !db_get_highscore_table_name( mod, route, table_name ) )
          {
-            gameserver_cat_table( &body_msg, mod, route, gameserver_get_current_week(), "rows_weekly" );
+            req->status = k_request_status_out_of_memory;
+            goto E0;
          }
-         else if( week == NETWORK_LEADERBOARD_ALLTIME_AND_CURRENT_WEEK )
+         enum request_status result = gameserver_read_highscore_table( &body_msg, table_name );
+         if( result != k_request_status_ok )
          {
-            gameserver_cat_table( &body_msg, mod, route, 0, "rows" );
-            gameserver_cat_table( &body_msg, mod, route, gameserver_get_current_week(), "rows_weekly" );
+            req->status = result;
+            goto E0;
          }
-         else 
-            gameserver_cat_table( &body_msg, mod, route, week, "rows" );
-#endif
       }
       else if( !strcmp( endpoint, "replay" ) )
       {
@@ -338,13 +370,14 @@ static void task_request_run( vg_async_task *task )
             goto E0;
          }
 
+         i64 last_second = time(NULL);
          const char *mod = vg_msg_getkvstr( &client_msg, "mod" );
          const char *route = vg_msg_getkvstr( &client_msg, "route" );
          
          //char weekly_table[ DB_TABLE_UID_MAX ],
          char table[ DB_TABLE_UID_MAX ];
 
-         if( !db_get_highscore_table_name( mod, route, 0, table ) )
+         if( !db_get_highscore_table_name( mod, route, table ) )
          {
             req->status = k_request_status_out_of_memory;
             goto E0;
@@ -358,15 +391,8 @@ static void task_request_run( vg_async_task *task )
             goto E0;
          }
 
-         i32 current_time = db_readusertime( table, req->user_steamid );
-         if( (current_time == 0) || (centiseconds < current_time) )
-         {
-            i64 last_second = time(NULL);
+         if( db_writeusertime( table, req->user_steamid, centiseconds, last_second, 1 ) )
             _gs_replay_request_save( req->client_id, req->user_steamid, last_second, centiseconds, 1 );
-            db_writeusertime( table, req->user_steamid, centiseconds, last_second );
-         }
-
-         //db_writeusertime( weekly_table, req->user_steamid, centiseconds, 1, last_minute );
       }
       else
       {
@@ -375,6 +401,7 @@ static void task_request_run( vg_async_task *task )
       
       if( body_msg.error != k_vg_msg_error_OK )
       {
+         vg_error( "msg error: %u\n", body_msg.error );
          req->status = k_request_status_out_of_memory;
       }
 
@@ -425,6 +452,7 @@ void _gs_handle_request_message( u32 client_id, SteamNetworkingMessage_t *msg )
          req->data_buffer = NULL;
          req->data_buffer_send_size = 0;
          req->send_offset = 0;
+         req->waiting_request = 0;
          
          gs_request *last_request = vg_pool_item( &_gs_requests.request_pool, rc->current_request ),
                     *next = last_request;
index b98dddb82536308ef620ada4b7d1f41ff2018f2a..d402ca5a4cfd9d9536f04a223997f2651c152226 100644 (file)
@@ -12,7 +12,7 @@
 #include "network.h"
 #include "shaders/model_menu.h"
 
-struct global_menu menu = { .skip_starter = 0 };
+struct global_menu menu = { .skip_starter = 0, .prof_row = -1 };
 
 void menu_at_begin(void)
 {
@@ -792,7 +792,8 @@ void menu_gui( ui_context *ctx )
       [k_menu_main_main] = "Menu",
       [k_menu_main_map]  = "Map",
       [k_menu_main_settings ] = "Settings",
-      [k_menu_main_guide ] = "Guides"
+      [k_menu_main_guide ] = "Guides",
+      [k_menu_main_online ] = "Online"
    };
 
    i32 main_index_before = menu.main_index;
@@ -954,6 +955,137 @@ void menu_gui( ui_context *ctx )
             vg.window_should_close = 1;
          }
       }
+/* PAGE main */
+      else if( menu.main_index == k_menu_main_online )
+      {
+         if( menu.choosing_country )
+         {
+            menu_backable_to_exit = 0;
+            bool close = _user_profile_country_picker( ctx, (ui_rect){ 8, height+32, 
+                                                                       vg.window_x-16, vg.window_y-(height+32+16) } );
+            if( close )
+               menu.choosing_country = 0;
+         }
+         else
+         {
+            bool connected = network_connected(),
+                 edit_profile = (menu.prof_row!=-1) && connected;
+
+            i32 R = -1,
+                S = -1;
+            
+            if( edit_profile )
+            {
+               S = menu_nav( &menu.prof_row, mv, 1 );
+               menu_backable_to_exit = 0;
+               if( button_down( k_srbind_mback ) )
+                  menu.prof_row = -1;
+            }
+            else
+               R = menu_nav( &menu.main_row, mv, connected? 2: 1 );
+
+            /* online box */
+            ui_rect online_box;
+            ui_split( list, k_ui_axis_h, 128, 8, online_box, list );
+            ui_fill( ctx, online_box, ui_opacity( GUI_COL_DARK, 0.3f ) );
+            ui_outline( ctx, online_box, 1, GUI_COL_NORM, 0 );
+
+            ui_rect inner_online_panel;
+            rect_copy( online_box, inner_online_panel );
+            ui_rect_pad( inner_online_panel, (ui_px[2]){8,8} );
+            
+            ctx->font = &vgf_default_large;
+            i32 temp = network_client.user_intent;
+            if( menu_checkbox( ctx, inner_online_panel, R == 0, "Online Mode", &temp ) )
+               network_client.user_intent = temp;
+               
+            ui_rect label_box;
+            ctx->font = &vgf_default_small;
+            menu_standard_widget( ctx, inner_online_panel, label_box, 1 );
+            ui_text( ctx, label_box, "Connection status:", 1, k_ui_align_middle_left, 0 );
+
+            char buf[128];
+            vg_str str;
+            vg_strnull( &str, buf, sizeof(buf) );
+            u32 colour = 0;
+            network_status_string( &str, &colour );
+            menu_standard_widget( ctx, inner_online_panel, label_box, 1 );
+            ui_text( ctx, label_box, buf, 1, k_ui_align_middle_left, colour );
+
+            ctx->font = &vgf_default_title;
+            
+            if( connected )
+            {
+               ui_rect profile_box;
+               ui_split( list, k_ui_axis_h, 200, 8, profile_box, list );
+               ui_fill( ctx, profile_box, ui_opacity( GUI_COL_DARK, 0.3f ) );
+               ui_outline( ctx, profile_box, 1, GUI_COL_NORM, 0 );
+               _user_profile_ui( ctx, profile_box, 0 );
+
+               bool click_edit = 0, hover_edit = 0;
+               if( !edit_profile )
+               {
+                  if( vg_input.display_input_method == k_input_method_controller )
+                  {
+                     if( R == 1 )
+                     {
+                        menu_decor_select( ctx, profile_box );
+                        if( button_down( k_srbind_maccept ) )
+                           click_edit = 1;
+                        hover_edit = 1;
+                     }
+                  }
+                  else
+                  {
+                     enum ui_button_state state = ui_button_base( ctx, profile_box );
+                     if( state == k_ui_button_hover )
+                        hover_edit = 1;
+
+                     if( state == 1 )
+                        click_edit = 1;
+                  }
+
+                  if( hover_edit )
+                  {
+                     vg_ui.frosting = 0.015f;
+                     ui_flush( ctx, k_ui_shader_colour, NULL );
+                     vg_ui.frosting = 0.0f;
+                     ui_fill( ctx, profile_box, ui_opacity( GUI_COL_DARK, 0.4f ) );
+                     ui_flush( ctx, k_ui_shader_colour, NULL );
+                     ui_text( ctx, profile_box, "Edit profile?", 1, k_ui_align_middle_center, 0 );
+                  }
+
+                  if( click_edit )
+                     menu.prof_row = 0;
+               }
+
+               if( edit_profile )
+               {
+                  ui_rect edit_box = { profile_box[0]+profile_box[2]+8, profile_box[1], 260, 400 },
+                          edit_title;
+                  ui_fill( ctx, edit_box, ui_opacity( GUI_COL_DARK, 0.3f ) );
+                  ui_outline( ctx, edit_box, 1, GUI_COL_NORM, 0 );
+
+                  if( vg_input.display_input_method == k_input_method_kbm )
+                  {
+                     ui_rect close_box = {edit_box[0]+edit_box[2]+2,edit_box[1],32,32};
+                     if( menu_button_rect( ctx, close_box, 0, 1, "X" ) )
+                     {
+                        menu.prof_row = -1;
+                     }
+                  }
+
+                  ui_split( edit_box, k_ui_axis_h, 48, 8, edit_title, edit_box );
+                  ui_text( ctx, edit_title, "Edit Profile", 1, k_ui_align_middle_center, 0 );
+                  ctx->font = &vgf_default_large;
+
+                  if( menu_button( ctx, edit_box, S == 0, 1, "Represent Country" ) )
+                     menu.choosing_country = 1;
+               }
+            }
+            ctx->font = &vgf_default_small;
+         }
+      }
 /* PAGE settings */
       else if( menu.main_index == k_menu_main_settings )
       {
@@ -1076,36 +1208,31 @@ void menu_gui( ui_context *ctx )
          if( menu_button( ctx, list, R == 2, 1, "Skating \xb2" ) )
          {
             menu.guide_sel = 0;
-            menu_link_modal( 
-                  "https://skaterift.com/index.php?page=movement" );
+            menu_link_modal( "https://skaterift.com/index.php?page=movement" );
          }
          //if( menu.guide_sel == 0 || menu.guide_sel > 3 ) menu_try_find_cam( 3 );
 
          if( menu_button( ctx, list, R == 3, 1, "Tricks \xb2" ) )
          {
             menu.guide_sel = 0;
-            menu_link_modal( 
-                  "https://skaterift.com/index.php?page=tricks" );
+            menu_link_modal( "https://skaterift.com/index.php?page=tricks" );
          }
 
          menu_heading( ctx, list, "Workshop", 0 );
          if( menu_button( ctx, list, R == 4, 1, "Create a Board \xb2" ) )
          {
             menu.guide_sel = 0;
-            menu_link_modal( 
-                  "https://skaterift.com/index.php?page=workshop_board" );
+            menu_link_modal( "https://skaterift.com/index.php?page=workshop_board" );
          }
          if( menu_button( ctx, list, R == 5, 1, "Create a World \xb2" ) )
          {
             menu.guide_sel = 0;
-            menu_link_modal( 
-                  "https://skaterift.com/index.php?page=workshop_world" );
+            menu_link_modal( "https://skaterift.com/index.php?page=workshop_world" );
          }
          if( menu_button( ctx, list, R == 6, 1, "Create a Playermodel \xb2" ) )
          {
             menu.guide_sel = 0;
-            menu_link_modal( 
-                  "https://skaterift.com/index.php?page=workshop_player" );
+            menu_link_modal( "https://skaterift.com/index.php?page=workshop_player" );
          }
       }
    }
index fddd0cf97b68996de838bbd171df720a5d4d560c..2e27922ca041290b78d9e68b2e1849874dad94cb 100644 (file)
@@ -15,15 +15,16 @@ enum menu_page
    k_menu_page_main,
    k_menu_page_credits,
    k_menu_page_help,
-   k_menu_page_impromptu_guide
+   k_menu_page_impromptu_guide,
 };
 
 enum menu_main_subpage
 {
    k_menu_main_main = 0,
    k_menu_main_map  = 1,
-   k_menu_main_settings = 2,
-   k_menu_main_guide = 3
+   k_menu_main_online = 2,
+   k_menu_main_settings = 3,
+   k_menu_main_guide = 4
 };
 
 struct global_menu
@@ -37,10 +38,12 @@ struct global_menu
        guides_row,
        intro_row,
        guide_sel,
-       prem_row;
+       prem_row,
+       prof_row;
    f32 mouse_dist;  /* used for waking up mouse */
 
    f32 repeater;
+   bool choosing_country;
 
    bool bg_blur;
    ent_camera *bg_cam;
index b41ff9e45cddd28ea8b72ad41985364f765a1914..01d1764e803bac056fb53bb6006360392e30b3ac 100644 (file)
@@ -647,38 +647,34 @@ void network_update(void)
    }
 }
 
-void chat_send_message( const char *message )
+void chat_send_message( const char *message, bool rcon )
 {
-   if( !network_connected() ){
+   if( !network_connected() )
       return;
-   }
 
    netmsg_chat *chat = alloca( sizeof(netmsg_chat) + NETWORK_MAX_CHAT );
-   chat->inetmsg_id = k_inetmsg_chat;
+   chat->inetmsg_id = rcon? k_inetmsg_rcon: k_inetmsg_chat;
    chat->client = 0;
-
-   u32 l = vg_strncpy( message, chat->msg, NETWORK_MAX_CHAT, 
-                       k_strncpy_always_add_null );
-
+   u32 l = vg_strncpy( message, chat->msg, NETWORK_MAX_CHAT, k_strncpy_always_add_null );
    SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
          hSteamNetworkingSockets, network_client.remote, 
          chat, sizeof(netmsg_chat)+l+1,
          k_nSteamNetworkingSend_Reliable, NULL );
 }
 
-static int cmd_network_send_message( int argc, const char *argv[] ){
+static int cmd_network_send_rcon( int argc, const char *argv[] )
+{
    char buf[ NETWORK_MAX_CHAT ];
    vg_str str;
    vg_strnull( &str, buf, NETWORK_MAX_CHAT );
-
-   for( int i=0; i<argc; i ++ ){
+   for( int i=0; i<argc; i ++ )
+   {
       vg_strcat( &str, argv[i] );
-
       if( i < argc-1 )
          vg_strcatch( &str, ' ' );
    }
 
-   chat_send_message( buf );
+   chat_send_message( buf, 1 );
    return 0;
 }
 
@@ -692,7 +688,7 @@ void network_init(void)
       steam_register_callback( k_iPersonaStateChange, on_persona_state_change );
       request_auth_ticket();
 
-      vg_console_reg_cmd( "say", cmd_network_send_message, NULL );
+      vg_console_reg_cmd( "rcon", cmd_network_send_rcon, NULL );
    }
 }
 
index 07e8dd7428f3138b7141c4736fa5405230813367..6c84a2e39f366325df2acef14b88d624e89f65bd 100644 (file)
@@ -79,7 +79,7 @@ int packet_minsize( SteamNetworkingMessage_t *msg, u32 size );
 void network_send_item( enum netmsg_playeritem_type type );
 void network_request_scoreboard( const char *mod_uid, const char *route_uid, u32 week, u64 userdata );
 void network_publish_laptime( const char *mod_uid, const char *route_uid, f64 lap_time );
-void chat_send_message( const char *message );
+void chat_send_message( const char *message, bool rcon );
 void render_server_status_gui(void);
 void network_status_string( vg_str *str, u32 *colour );
 void network_send_region(void);
index b2ecd562bf4216a1edcae58e360880539ad70554..8181e759894e23370a58bea6fb3173470f54797e 100644 (file)
 
 #include "addon_types.h"
 
-static u32 network_msgstring( const char *src, 
-                              u32 m_cbSize, u32 base_size,
-                              char *buf, u32 buf_size ){
-   
+static u32 network_msgstring( const char *src, u32 m_cbSize, u32 base_size, char *buf, u32 buf_size )
+{
    u32 string_len = VG_MIN( m_cbSize - base_size, buf_size );
    return vg_strncpy( src, buf, string_len, k_strncpy_always_add_null );
 }
index 29669c41efd353befb3028fb39c9ffedad9411ec..1f2d64531b30de13049bd7d8a6d0254e90a69779 100644 (file)
@@ -36,8 +36,6 @@ struct netmsg_version{
    u32 version;
 };
 
-/* server control 100 */
-
 /* player updates 200 */
 
 #define NETMSG_BOUNDARY_BIT 0x8000
@@ -102,6 +100,7 @@ enum netmsg_playeritem_type {
 
 typedef struct netmsg_chat netmsg_chat;
 enum{ k_inetmsg_chat = 205 };
+enum{ k_inetmsg_rcon = 207 }; // is identical to msg_chat
 struct netmsg_chat {
    u16 inetmsg_id;
    u8 client;
index 7c54d858542c534da967ea572d88946d3e29bfec..f798125bf97fafaf2ac1c11152e285059970a202 100644 (file)
@@ -1032,7 +1032,7 @@ static void chat_enter( ui_context *ctx, char *buf, u32 len, void *userdata )
    vg_strncpy( buf, netplayers.chat_message, NETWORK_MAX_CHAT, k_strncpy_always_add_null );
    netplayers.chatting = -1;
    netplayers.chat_time = vg.time_real;
-   chat_send_message( buf );
+   chat_send_message( buf, 0 );
 }
 
 void remote_players_chat_imgui( ui_context *ctx )
index 4ed8d9c5f62a1979dfb4d152e1b885cd8918900e..1ef1f192be27397b76c3ed25a5dd10229fdf5489 100644 (file)
@@ -55,6 +55,7 @@
 #include "board_maker.h"
 #include "compass.h"
 #include "replay2.h"
+#include "user_profile.h"
 
 struct skaterift_globals skaterift = 
 { 
@@ -107,6 +108,7 @@ static void game_load_co( vg_coroutine *co )
       vg_console_reg_var( "immobile", &localplayer.immobile, k_var_dtype_i32, 0 );
       vg_console_reg_var( "allow_resume", &skaterift.allow_replay_resume, k_var_dtype_i32, VG_VAR_CHEAT );
       vg_loader_step( menu_init, NULL );
+      vg_loader_step( _user_profile_init, NULL );
       vg_loader_step( control_overlay_init, NULL );
       vg_loader_step( world_init, NULL );
       vg_loader_step( vehicle_init, NULL );
@@ -637,6 +639,7 @@ void vg_framebuffer_resize( int w, int h )
 #include "board_maker.c"
 #include "compass.c"
 #include "replay2.c"
+#include "user_profile.c"
 
 //TODO
 //#include "vg/submodules/hashmap.c/hashmap.c"
diff --git a/src/ui_menu_icons.h0 b/src/ui_menu_icons.h0
new file mode 100644 (file)
index 0000000..f01cf7b
--- /dev/null
@@ -0,0 +1,10 @@
+struct menu_icon_inf k_menu_icons[] = {{0},
+{14},
+{39},
+};
+const char k_menu_icon_descriptions[] = {69,97,114,108,121,32,97,100,111,112,116,101,114,0,71,108,111,98,97,108,32,116,111,112,32,51,32,116,105,109,101,32,114,101,99,111,114,100,0,71,108,111,98,97,108,32,116,111,112,32,49,48,32,116,105,109,101,32,114,101,99,111,114,100,0,};
+enum menu_icon {
+k_menu_icon_early = 0,
+k_menu_icon_top3 = 1,
+k_menu_icon_top10 = 2,
+};
diff --git a/src/user_profile.c b/src/user_profile.c
new file mode 100644 (file)
index 0000000..36e2586
--- /dev/null
@@ -0,0 +1,478 @@
+#include "user_profile.h"
+
+struct menu_icon_inf
+{
+   u16 desc_offset;
+};
+#include "ui_menu_icons.h0"
+
+struct 
+{
+   char username[128];
+   u32 flags;
+   u64 current_steamid;
+
+   u32 country_index;
+
+   u16 race3, race10;
+   f32 timer;
+
+   enum user_profile_state
+   {
+      k_user_profile_state_none,
+      k_user_profile_state_downloading,
+      k_user_profile_state_open,
+      k_user_profile_state_fail
+   }
+   state;
+
+   v2f country_coords;
+
+   GLuint cc_tex, map_tex, icon_tex;
+}
+_user_profile = { .country_coords = {0.5f, 0.5f} };
+
+struct country
+{
+   u16 name_offset;
+   f32 x,y;
+};
+
+#include "cc.h"
+
+void _user_profile_init(void)
+{
+   vg_tex2d_load_qoi_async_file( "textures/cc.qoi", VG_TEX2D_CLAMP, &_user_profile.cc_tex );
+   vg_tex2d_load_qoi_async_file( "textures/world_map.qoi", VG_TEX2D_CLAMP, &_user_profile.map_tex );
+   vg_tex2d_load_qoi_async_file( "textures/menu_icons.qoi", VG_TEX2D_CLAMP, &_user_profile.icon_tex );
+}
+
+static void _profile_download_callback( void *data, u32 data_size, u64 userdata, enum request_status status )
+{
+   THREAD_0;
+
+   u64 steamid = userdata;
+   if( steamid != _user_profile.current_steamid ) 
+      return;
+
+   if( status != k_request_status_ok )
+   {
+      _user_profile.state = k_user_profile_state_fail;
+      return;
+   }
+
+   _user_profile.state = k_user_profile_state_open;
+
+   vg_msg body;
+   vg_msg_init( &body, data, data_size );
+
+   const char *username = vg_msg_getkvstr( &body, "username" );
+   vg_strncpy( username, _user_profile.username, sizeof(_user_profile.username), k_strncpy_always_add_null );
+
+   vg_msg_getkvintg( &body, "flags", k_vg_msg_u32, &_user_profile.flags, NULL );
+   vg_msg_getkvintg( &body, "race3", k_vg_msg_u16, &_user_profile.race3, NULL );
+   vg_msg_getkvintg( &body, "race10", k_vg_msg_u16, &_user_profile.race10, NULL );
+   _user_profile.country_index = 0;
+
+   const char *cc = vg_msg_getkvstr( &body, "cc" );
+
+   if( cc && strlen(cc)>=2 )
+   {
+      for( u32 i=0; i<k_country_count; i ++ )
+      {
+         if( (k_country_iso2[i*3+0] == cc[0]) && (k_country_iso2[i*3+1] == cc[1]) )
+         {
+            _user_profile.country_index = i+1;
+            break;
+         }
+      }
+   }
+}
+
+void _user_profile_ui( ui_context *ctx, ui_rect box, u64 steamid )
+{
+   _user_profile.timer -= vg.time_frame_delta;
+
+   if( (steamid != _user_profile.current_steamid) || (_user_profile.state == k_user_profile_state_none) )
+   {  
+      if( _user_profile.timer < 0.0f )
+      {
+         _user_profile.state = k_user_profile_state_downloading;
+
+         _user_profile.current_steamid = steamid;
+         _user_profile.timer = 1.0f;
+
+         vg_info( "Request profile for: %lx\n", steamid );
+         netmsg_request *packet = alloca( sizeof(netmsg_request) + 512 );
+         packet->inetmsg_id = k_inetmsg_request;
+
+         vg_msg data;
+         vg_msg_init( &data, packet->buffer, 512 );
+         vg_msg_wkvstr( &data, "endpoint", "profile" );
+         vg_msg_wkvnum( &data, "steamid", k_vg_msg_u64, 1, &steamid );
+         network_send_request( packet, &data, _profile_download_callback, steamid );
+      }
+   }
+
+   ui_fill( ctx, box, ui_opacity( GUI_COL_DARK, 0.36f ) );
+   const ui_px p = 16;
+      
+   ui_rect inner;
+   rect_copy( box, inner );
+   ui_rect_pad( inner, (ui_px[2]){p,p} );
+
+   ui_rect span;
+   rect_copy( inner, span );
+   span[3] = 2;
+   ui_fill( ctx, span, ui_colour( ctx, k_ui_fg ) );
+   span[1] = inner[1] + inner[3] - span[3];
+   ui_fill( ctx, span, ui_colour( ctx, k_ui_fg ) );
+
+   inner[1] += p;
+   inner[3] -= p*2;
+
+   if( _user_profile.state != k_user_profile_state_open )
+   {
+      bool download = _user_profile.state == k_user_profile_state_downloading;
+      ctx->font = &vgf_default_title;
+      ui_text( ctx, inner, download? "...": "???", 1, k_ui_align_middle_center, ui_colour(ctx,k_ui_fg) );
+      ctx->font = &vgf_default_large;
+      return;
+   }
+
+   ui_px pfpw = inner[3]/2;
+   ui_rect pfp = { inner[0], inner[1], pfpw, pfpw };
+   ui_rect flagbox = { inner[0], inner[1] + pfpw, pfpw, pfpw };
+   ui_rect flag = {0,0, pfpw-p, ((pfpw-p)*2)/3 };
+   ui_rect_center( flagbox, flag );
+
+   if( _user_profile.country_index )
+   {
+      vg_ui.frosting = 0.015f;
+      ui_flush( ctx, k_ui_shader_colour, NULL );
+      vg_ui.frosting = 0.0f;
+
+      u32 i = _user_profile.country_index-1,
+          x = (i & 0xf)*16,
+          y = ((i>>4) & 0xf)*16;
+      ui_fill_rect( ctx, flag, 0xffffffff, (ui_px[4]){ x,y,x+16,y+16 } );
+
+      struct ui_batch_shader_data_image inf = { .resource = &_user_profile.cc_tex };
+      ui_flush( ctx, k_ui_shader_image, &inf );
+   }
+
+   ui_fill( ctx, pfp, ui_colour( ctx, k_ui_blue ) );
+
+   ui_rect a2 = { inner[0] + pfpw + p, inner[1], inner[2] - (pfpw+p), inner[3] };
+   ui_rect title_box;
+   ui_split( a2, k_ui_axis_h, 48, 4, title_box, a2 );
+
+   ctx->font = &vgf_default_title;
+   ui_text( ctx, title_box, _user_profile.username, 1, k_ui_align_middle_center, ui_colour(ctx,k_ui_yellow) );
+   ctx->font = &vgf_default_large;
+
+   ui_rect medal_row;
+   ui_px mw = 64;
+   ui_split( a2, k_ui_axis_h, mw, 0, medal_row, a2 );
+
+   struct
+   {
+      enum menu_icon which;
+      u16 count;
+   }
+   medal_list[5];
+
+   u32 medal_count = 0;
+   u16 race3 = 0, race10 = 0;
+
+   if( _user_profile.race3 )
+   {
+      medal_list[ medal_count   ].which = k_menu_icon_top3;
+      medal_list[ medal_count++ ].count = _user_profile.race3;
+   }
+
+   if( _user_profile.race10 )
+   {
+      medal_list[ medal_count   ].which = k_menu_icon_top10;
+      medal_list[ medal_count++ ].count = _user_profile.race10;
+   }
+
+   if( medal_count )
+   {
+      vg_ui.frosting = 0.015f;
+      ui_flush( ctx, k_ui_shader_colour, NULL );
+      vg_ui.frosting = 0.0f;
+
+      ui_px row_width = (mw*medal_count + 8*(medal_count-1)),
+            base = medal_row[0] + (medal_row[2]-row_width)/2,
+            x = base;
+
+      for( u32 i=0; i<medal_count; i ++ )
+      {
+         ui_rect medal_box = { x, medal_row[1]+medal_row[3]-mw, mw, mw };
+         x += mw + 8;
+
+         u32 icon_index = medal_list[i].which;
+         u32 z = (icon_index & 0x7)*32,
+             w = ((icon_index>>3) & 0x7)*32;
+         ui_fill_rect( ctx, medal_box, 0xffffffff, (ui_px[4]){ z,w,z+32,w+32 } );
+      }
+
+      struct ui_batch_shader_data_image inf = { .resource = &_user_profile.icon_tex };
+      ui_flush( ctx, k_ui_shader_image, &inf );
+
+      x = base;
+      for( u32 i=0; i<medal_count; i ++ )
+      {
+         ui_rect count_box = { x, a2[1], mw, 30 };
+         x += mw + 8;
+
+         if( medal_list[i].count > 1 )
+         {
+            char buf[32];
+            vg_str str;
+            vg_strnull( &str, buf, sizeof(buf) );
+            vg_strcatch( &str, 'x' );
+            vg_strcati32( &str, medal_list[i].count );
+            ui_text( ctx, count_box, buf, 1, k_ui_align_middle, ui_colour(ctx,k_ui_fg) );
+         }
+      }
+   }
+}
+
+bool _user_profile_country_picker( ui_context *ctx, ui_rect box )
+{
+   bool close = 0,
+        picking = 0;
+
+   ui_fill( ctx, box, ui_opacity( GUI_COL_DARK, 0.36f ) );
+   ui_outline( ctx, box, 1, ui_colour( ctx, k_ui_fg ), 0 );
+   
+   v2f co;
+
+   if( _user_profile.country_index )
+   {
+      struct country *country = &k_countries[_user_profile.country_index-1];
+      co[0] = country->x;
+      co[1] = 1.0f-country->y;
+   }
+   else
+   {
+      picking = 1;
+      if( vg_input.display_input_method == k_input_method_controller )
+      {
+         v2f steer;
+         joystick_state( k_srjoystick_steer, steer );
+         v2_muladds( _user_profile.country_coords, steer, vg.time_frame_delta*0.33f, co );
+         co[0] = vg_fractf( co[0] );
+         co[1] = vg_fractf( co[1] );
+      }
+      else
+      {
+         co[0] = ((f32)ctx->mouse[0] - (f32)box[0]) / (f32)box[2];
+         co[1] = ((f32)ctx->mouse[1] - (f32)box[1]) / (f32)box[3];
+      }
+   }
+
+   v2_copy( co, _user_profile.country_coords );
+
+   ui_px cx = co[0] * (f32)box[2],
+         cy = co[1] * (f32)box[3];
+
+   ui_px r = 8;
+   ui_px c[2] = { box[0]+cx, box[1]+cy };
+   ui_rect c1 = { c[0]-1, c[1]-1, 3, 3 },
+           c2 = { c[0]-r, c[1]-r, r*2, r*2 },
+           cv = { c[0], box[1], 1, box[3] },
+           ch = { box[0], c[1], box[2], 1 };
+
+   f32 min_dist = 0.2f;
+   i32 min_country = -1;
+
+   ui_rect min_country_rect={0};
+
+   vg_ui.frosting = 0.015f;
+   ui_flush( ctx, k_ui_shader_colour, NULL );
+   vg_ui.frosting = 0.0f;
+
+   ui_fill_rect( ctx, box, 0xffffffff, (ui_px[4]){ 0,0,256,256 } );
+
+   struct ui_batch_shader_data_image inf1 = { .resource = &_user_profile.map_tex };
+   ui_flush( ctx, k_ui_shader_image, &inf1 );
+
+   for( u32 i=0; i<k_country_count; i ++ )
+   {
+      struct country *country = &k_countries[i];
+      v2f v0, cco = {country->x,1.0f-country->y};
+      v2_sub( co, cco, v0 );
+
+      f32 d = v2_length(v0);
+
+      f32 s = vg_maxf((0.5f - d) / 0.5f,0.0f),
+          s2 = vg_maxf(powf(s,5.0f), 0.2f),
+          s5 = powf(vg_maxf((0.05f - d) / 0.05f,0.0f), 2.0f)*0.5f;
+      ui_px size = 64.0f*s2,
+            w = size,
+            h = (size*2)/3;
+
+      cx = vg_clampf(cco[0]-v0[0]*s5,0.0f,1.0f) * (f32)box[2],
+      cy = vg_clampf(cco[1]-v0[1]*2.0f*s5,0.0f,1.0f) * (f32)box[3];
+      ui_rect flag = { box[0] + cx-w/2, box[1] + cy-h/2, w, h };
+      u32 x = (i & 0xf)*16,
+          y = ((i>>4) & 0xf)*16;
+      ui_fill_rect( ctx, flag, picking? 0xffffffff: ui_opacity(0xffffffff,0.2f), (ui_px[4]){ x,y,x+16,y+16 } );
+
+      if( d < min_dist )
+      {
+         min_dist = d;
+         min_country = i;
+         rect_copy( flag, min_country_rect );
+      }
+   }
+
+   if( min_country >= 0 )
+   {
+      u32 x = (min_country & 0xf)*16,
+          y = ((min_country>>4) & 0xf)*16;
+      ui_fill_rect( ctx, min_country_rect, 0xffffffff, (ui_px[4]){ x,y,x+16,y+16 } );
+   }
+
+   struct ui_batch_shader_data_image inf = { .resource = &_user_profile.cc_tex };
+   ui_flush( ctx, k_ui_shader_image, &inf );
+
+   if( min_country >= 0 )
+   {
+      ui_outline( ctx, min_country_rect, 1, ui_colour( ctx, k_ui_fg ), 0 );
+   }
+
+   ui_fill( ctx, c1, ui_colour( ctx, k_ui_fg ) );
+   ui_fill( ctx, cv, ui_opacity(ui_colour( ctx, k_ui_fg ), 0.4f) );
+   ui_fill( ctx, ch, ui_opacity(ui_colour( ctx, k_ui_fg ), 0.4f) );
+   ui_outline( ctx, c2, 1, ui_colour( ctx, k_ui_fg ), 0 );
+
+   ctx->font = &vgf_default_large;
+   ui_rect descriptor_box = { box[0] + (box[2]-600)/2, box[1]-16, 600, 32 };
+
+   ui_fill( ctx, descriptor_box, ui_opacity( GUI_COL_DARK, 0.3f ) );
+   ui_outline( ctx, descriptor_box, 1, ui_colour( ctx, k_ui_fg ), 0 );
+
+   if( picking && (min_country >=0) )
+   {
+      bool set=0;
+      u32 offset = k_countries[min_country].name_offset;
+      ui_text( ctx, descriptor_box, k_country_names+offset, 1, k_ui_align_middle_center, 0 );
+
+      if( vg_input.display_input_method == k_input_method_controller )
+      {
+         if( button_down( k_srbind_maccept ) )
+         {
+            vg_audio_lock();
+            vg_audio_oneshot( &audio_ui[3], 1.0f, 0.0f, 0, 0 );
+            vg_audio_unlock();
+            set = 1;
+         }
+      }
+      else
+      {
+         if( ui_click_down(ctx, UI_MOUSE_LEFT) )
+            set = 1;
+      }
+
+      if( set )
+         _user_profile.country_index = min_country+1;
+   }
+
+   if( !picking && _user_profile.country_index )
+   {
+      bool rid=0;
+      u32 offset = k_countries[_user_profile.country_index-1].name_offset;
+      ui_text( ctx, descriptor_box, k_country_names+offset, 1, k_ui_align_middle_center, 0 );
+
+      ui_rect box_under;
+      rect_copy( descriptor_box, box_under );
+      box_under[1] += box_under[3] + 8;
+      ui_fill( ctx, box_under, ui_opacity( GUI_COL_DARK, 0.3f ) );
+      ctx->font = &vgf_default_small;
+      ui_text( ctx, box_under, ">> representing <<", 1, k_ui_align_middle_center, ui_colour(ctx,k_ui_yellow) );
+
+      if( vg_input.display_input_method == k_input_method_controller )
+      {
+         ctx->font = &vgf_default_large;
+         char buf[50];
+         vg_str helper_text;
+         vg_strnull( &helper_text, buf, sizeof(buf) );
+         vg_strcat( &helper_text, "Stop (" );
+         vg_input_string( &helper_text, input_button_list[k_srbind_mback], 1 );
+         vg_strcat( &helper_text, "\x07) Confirm (" );
+         vg_input_string( &helper_text, input_button_list[k_srbind_maccept], 1 );
+         vg_strcat( &helper_text, "\x07)" );
+         ui_px w = 300;
+         
+         ui_rect helper_label_box = { box_under[0] + (box_under[2]-w)/2, box[1] + box[3]-(70), w, 32 };
+         ui_fill( ctx, helper_label_box, ui_opacity( GUI_COL_DARK, 0.36f ) );
+         ui_text( ctx, helper_label_box, buf, 1, k_ui_align_middle_center, 0 );
+
+         if( button_down( k_srbind_mback ) )
+         {
+            vg_audio_lock();
+            vg_audio_oneshot( &audio_ui[3], 1.0f, 0.0f, 0, 0 );
+            vg_audio_unlock();
+            rid =1;
+         }
+         if( button_down( k_srbind_maccept ) )
+         {
+            vg_audio_lock();
+            vg_audio_oneshot( &audio_ui[3], 1.0f, 0.0f, 0, 0 );
+            vg_audio_unlock();
+            close = 1;
+         }
+      }
+      else
+      {
+         ui_rect no_box = {box_under[0]+box_under[2]-32, box_under[1], 32, box_under[3] };
+         if( ui_button_text( ctx, no_box, "X", 1 ) == 1 )
+            rid = 1;
+      }
+
+      if( rid )
+         _user_profile.country_index = 0;
+   }
+
+   if( vg_input.display_input_method == k_input_method_controller )
+   {
+      if( picking && button_down( k_srbind_mback ) )
+      {
+         vg_audio_lock();
+         vg_audio_oneshot( &audio_ui[3], 1.0f, 0.0f, 0, 0 );
+         vg_audio_unlock();
+         close = 1;
+      }
+   }
+
+   if( vg_input.display_input_method == k_input_method_kbm )
+   {
+      ctx->font = &vgf_default_large;
+
+      ui_px w = 200;
+      ui_rect close_button = { box[0] + (box[2]-w)/2, box[1] + box[3]-(70), w, 48 };
+      if( menu_button_rect( ctx, close_button, 0, 1, "Confirm" ) )
+         close = 1;
+   }
+   
+   if( close )
+   {
+      _user_profile.state = k_user_profile_state_none;
+      netmsg_request *packet = alloca( sizeof(netmsg_request) + 512 );
+      packet->inetmsg_id = k_inetmsg_request;
+
+      vg_msg data;
+      vg_msg_init( &data, packet->buffer, 512 );
+      vg_msg_wkvstr( &data, "endpoint", "profile" );
+
+      u32 index = _user_profile.country_index;
+      vg_msg_wkvstr( &data, "cc", index == 0? "00": k_country_iso2+(index-1)*3 );
+      network_send_request( packet, &data, _profile_download_callback, 0 );
+   }
+
+   return close;
+}
diff --git a/src/user_profile.h b/src/user_profile.h
new file mode 100644 (file)
index 0000000..6accf55
--- /dev/null
@@ -0,0 +1,4 @@
+#pragma once
+void _user_profile_init(void);
+void _user_profile_ui( ui_context *ctx, ui_rect box, u64 steamid );
+bool _user_profile_country_picker( ui_context *ctx, ui_rect box );