commit fce2286c69fbf80f4ea0369a93016cf9e8a8ab49 Author: xzeldon Date: Thu May 4 04:17:03 2023 +0300 Initial commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5d23cf8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +/target \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f20fda2 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1173 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "async-trait" +version = "0.1.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" +dependencies = [ + "async-trait", + "axum-core", + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "emoji-captcha-api" +version = "0.1.0" +dependencies = [ + "axum", + "image", + "rand", + "tokio", +] + +[[package]] +name = "exr" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd2162b720141a91a054640662d3edce3d50a944a50ffca5313cd951abb35b4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.6.2", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide 0.7.1", +] + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "image" +version = "0.24.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", + "qoi", + "tiff", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.45.0", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "png" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.7.1", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro2" +version = "1.0.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7f05c1d5476066defcdfacce1f52fc3cae3af1d3089727100c02ae92e5abbe0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "simd-adler32" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "tiff" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7449334f9ff2baf290d55d73983a7d6fa15e01198faef72af07e2a8db851e471" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tokio" +version = "1.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" +dependencies = [ + "autocfg", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.15", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..70b02d0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "emoji-captcha-api" +version = "0.1.0" +edition = "2021" + +# This seems redundant, but it's necessary for Docker to work +[[bin]] +name = "emoji-captcha-api" +path = "src/main.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +axum = "0.6.18" +image = "0.24.6" +rand = "0.8.5" +tokio = { version = "1.28.0", features = ["macros", "rt-multi-thread"] } diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0af649a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM rust:1.69.0-slim as builder + +ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse + +WORKDIR /usr/src/emoji-captcha-api + +COPY Cargo.toml . +COPY Cargo.lock . +COPY docker_utils/dummy.rs . +RUN sed -i 's|src/main.rs|dummy.rs|' Cargo.toml +RUN cargo build --release +RUN sed -i 's|dummy.rs|src/main.rs|' Cargo.toml + +COPY . . +RUN cargo build --release + +FROM gcr.io/distroless/cc + +COPY --from=builder /usr/src/emoji-captcha-api/target/release/emoji-captcha-api /opt/emoji-captcha-api/ +ADD emojis /opt/emoji-captcha-api/emojis +COPY allowed-emojis.txt /opt/emoji-captcha-api + +WORKDIR /opt/emoji-captcha-api + +ENTRYPOINT [ "./emoji-captcha-api" ] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e10ded3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,617 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bcc4b57 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +IMAGE_NAME = emoji-captcha-api +IMAGE_TAG = latest +REGISTY = ghcr.io/xzeldon +IMAGE = $(IMAGE_NAME):$(IMAGE_TAG) +PORT = 8080 + +build: + docker buildx build -t $(IMAGE) . + +run: + docker run --name $(IMAGE_NAME) --init --rm -it -p $(PORT):8080 $(IMAGE) + +tag: + docker tag $(IMAGE) $(REGISTY)/$(IMAGE_NAME) + +push: + docker push $(REGISTY)/$(IMAGE) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8c19fee --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Emoji CAPTCHA + +> 🚨 This is forked from https://github.com/moderent/emoji-captcha and rewrited +> with [Axum](https://lib.rs/crates/axum) instead +> [Actix-Web](https://lib.rs/crates/actix-web) (2x perfomance boost in most +> scenarious unexpected reason) + +### A CAPTCHA implementation based on identifying emojis + +This was exclusively developed to be used in Telegram, but might be used +anywhere else. + +## Brief Description + +1. The client sends an HTTP request to the server. + +2. The server returns a generated photo that has 6 emojis inside it, along with: + + - A custom header called `x-emojis` that includes the code points of the six + emojis in the photo plus 2 random ones in hex, shuffled, splitted by ";", + and the parts of each of them splitted by "-". + + - A custom header called `x-correct-emojis` that only includes the code + points of the 6 emojis in the photo. + +3. The client displays the photo returned by the server, along with the emojis + provided in the `x-emojis` in a way the user can pick them. + +4. The client compares the first six emojis that the user picked with + `x-correct-emojis`. + +## Credits + +This wouldn't be possible without the inspirations from the CAPTCHA system at +[@PyrogramLounge](https://t.me/PyrogramLounge). diff --git a/allowed-emojis.txt b/allowed-emojis.txt new file mode 100644 index 0000000..ea63e43 --- /dev/null +++ b/allowed-emojis.txt @@ -0,0 +1,497 @@ +emoji_u1f50e +emoji_u1f94f +emoji_u1f3d1 +emoji_u1f3ad +emoji_u1fad1 +emoji_u1fad2 +emoji_u1f32f +emoji_u1f9ac +emoji_u1f99d +emoji_u1f3b7 +emoji_u1f372 +emoji_u1fa94 +emoji_u1f48a +emoji_u1f367 +emoji_u1f4ef +emoji_u1f41c +emoji_u1f4f8 +emoji_u1f3b3 +emoji_u1f4c0 +emoji_u1f948 +emoji_u1f4bb +emoji_u1f96a +emoji_u1f376 +emoji_u1f375 +emoji_u1f33e +emoji_u1f35b +emoji_u1f9fa +emoji_u1f9a7 +emoji_u1f38b +emoji_u1f94c +emoji_u1f4c8 +emoji_u1f9ba +emoji_u1f401 +emoji_u1f4e8 +emoji_u1f43d +emoji_u1f4d7 +emoji_u1f34b +emoji_u1f379 +emoji_u1f3ac +emoji_u1f988 +emoji_u1f356 +emoji_u1f994 +emoji_u1f386 +emoji_u1fad4 +emoji_u1f50a +emoji_u1f4c1 +emoji_u1f3a9 +emoji_u1f3d0 +emoji_u1f3a7 +emoji_u1f9a1 +emoji_u1f427 +emoji_u1f98b +emoji_u1f959 +emoji_u1fa93 +emoji_u1f3b9 +emoji_u1f37b +emoji_u1f43b +emoji_u1f3b2 +emoji_u1f9f8 +emoji_u1f36a +emoji_u1f94a +emoji_u1f423 +emoji_u1f508 +emoji_u1f985 +emoji_u1f402 +emoji_u1f380 +emoji_u1f414 +emoji_u1f3c5 +emoji_u1fa91 +emoji_u1f3b0 +emoji_u1f4bf +emoji_u1f3b4 +emoji_u1f36b +emoji_u1f37a +emoji_u1fa9c +emoji_u1f996 +emoji_u1f963 +emoji_u1f368 +emoji_u1f42e +emoji_u1f33b +emoji_u1f484 +emoji_u1faa6 +emoji_u1f426 +emoji_u1f43e +emoji_u1f4eb +emoji_u1f4bd +emoji_u1f391 +emoji_u1f36f +emoji_u1f9a2 +emoji_u1fa78 +emoji_u1f418 +emoji_u1f947 +emoji_u1f340 +emoji_u1f424 +emoji_u1f9cb +emoji_u1fad3 +emoji_u1f4b8 +emoji_u1fa81 +emoji_u1f004 +emoji_u1f943 +emoji_u1f332 +emoji_u1f4b9 +emoji_u1f98f +emoji_u1f9c8 +emoji_u1f405 +emoji_u1f9e9 +emoji_u1f361 +emoji_u1f965 +emoji_u1f34d +emoji_u1f96c +emoji_u1f50f +emoji_u1f998 +emoji_u1f490 +emoji_u1f940 +emoji_u1f3c6 +emoji_u1f421 +emoji_u1f4d5 +emoji_u1f3b1 +emoji_u1f4d4 +emoji_u1f4c6 +emoji_u1f429 +emoji_u1f9af +emoji_u1f359 +emoji_u1f4be +emoji_u1f4c3 +emoji_u1f42d +emoji_u1f4cc +emoji_u1fa85 +emoji_u1f4ff +emoji_u1f4d2 +emoji_u1f52c +emoji_u1f99c +emoji_u1f4c2 +emoji_u1f37c +emoji_u1f514 +emoji_u1f9f9 +emoji_u1f527 +emoji_u1f969 +emoji_u1f4cb +emoji_u1f967 +emoji_u1f431 +emoji_u1f9a4 +emoji_u1f353 +emoji_u1f989 +emoji_u1f94b +emoji_u1f4e9 +emoji_u1f4cd +emoji_u1f37e +emoji_u1f3a4 +emoji_u1f4ed +emoji_u1f3b8 +emoji_u1f451 +emoji_u1f33f +emoji_u1f43a +emoji_u1f335 +emoji_u1f387 +emoji_u1f357 +emoji_u1fad6 +emoji_u1f42b +emoji_u1f363 +emoji_u1f43c +emoji_u1f4e7 +emoji_u1f35c +emoji_u1f513 +emoji_u1f369 +emoji_u1f4c4 +emoji_u1f37f +emoji_u1f358 +emoji_u1f371 +emoji_u1f9c2 +emoji_u1fa95 +emoji_u1f961 +emoji_u1f408 +emoji_u1f41e +emoji_u1f360 +emoji_u1f52a +emoji_u1f41b +emoji_u1f382 +emoji_u1f4cf +emoji_u1f434 +emoji_u1f3ab +emoji_u1f995 +emoji_u1f42a +emoji_u1f9c9 +emoji_u1f982 +emoji_u1f433 +emoji_u1f9ef +emoji_u1f3bc +emoji_u1f32e +emoji_u1f3ee +emoji_u1faa4 +emoji_u1f9a6 +emoji_u1f409 +emoji_u1f9ec +emoji_u1f393 +emoji_u1f436 +emoji_u1f4d3 +emoji_u1f435 +emoji_u1f9fc +emoji_u1f378 +emoji_u1f511 +emoji_u1f986 +emoji_u1faa2 +emoji_u1f389 +emoji_u1f33c +emoji_u1f9c3 +emoji_u1f951 +emoji_u1faa7 +emoji_u1f4c9 +emoji_u1f6ac +emoji_u1f52b +emoji_u1f3a8 +emoji_u1fa97 +emoji_u1f334 +emoji_u1f422 +emoji_u1f993 +emoji_u1f6aa +emoji_u1f96f +emoji_u1f346 +emoji_u1faa3 +emoji_u1f4c5 +emoji_u1f4f0 +emoji_u1f95e +emoji_u1f3af +emoji_u1f968 +emoji_u1f417 +emoji_u1f383 +emoji_u1f40f +emoji_u1fa7a +emoji_u1f9a0 +emoji_u1f384 +emoji_u1f40e +emoji_u1f3bf +emoji_u1f4c7 +emoji_u1f4f7 +emoji_u1f407 +emoji_u1fa98 +emoji_u1f4d8 +emoji_u1f416 +emoji_u1f507 +emoji_u1f97c +emoji_u1f347 +emoji_u1f437 +emoji_u1f410 +emoji_u1f9a8 +emoji_u1f4e1 +emoji_u1f413 +emoji_u1f956 +emoji_u1f4d1 +emoji_u1f516 +emoji_u1f3b5 +emoji_u1f97d +emoji_u1f6c1 +emoji_u1f510 +emoji_u1f458 +emoji_u1f9f2 +emoji_u1f983 +emoji_u1f3b6 +emoji_u1f4d6 +emoji_u1f96d +emoji_u1f430 +emoji_u1f52d +emoji_u1f526 +emoji_u1f35e +emoji_u1f438 +emoji_u1f945 +emoji_u1f34e +emoji_u1f36e +emoji_u1f38a +emoji_u1f509 +emoji_u1f373 +emoji_u1f34c +emoji_u1f40c +emoji_u1f99f +emoji_u1f350 +emoji_u1f338 +emoji_u1f9ee +emoji_u1fa9e +emoji_u1f425 +emoji_u1f6bd +emoji_u1f990 +emoji_u1f4ca +emoji_u1f95b +emoji_u1f48e +emoji_u1f33d +emoji_u1f9e8 +emoji_u1f9a9 +emoji_u1f365 +emoji_u1f381 +emoji_u1f439 +emoji_u1f9a5 +emoji_u1f4b0 +emoji_u1f489 +emoji_u1f400 +emoji_u1f4ec +emoji_u1f9c6 +emoji_u1f6d2 +emoji_u1f96b +emoji_u1f41a +emoji_u1f4de +emoji_u1f991 +emoji_u1f348 +emoji_u1f9e7 +emoji_u1f98d +emoji_u1f3ba +emoji_u1f4ae +emoji_u1f40b +emoji_u1f9c4 +emoji_u1fa86 +emoji_u1f4ee +emoji_u1f4b6 +emoji_u1f515 +emoji_u1f4f1 +emoji_u1f3a3 +emoji_u1f941 +emoji_u1fa83 +emoji_u1f4e4 +emoji_u1f987 +emoji_u1f9ca +emoji_u1f3f8 +emoji_u1f4f9 +emoji_u1f528 +emoji_u1f4df +emoji_u1f48d +emoji_u1f9f4 +emoji_u1f351 +emoji_u1f339 +emoji_u1faa1 +emoji_u1f4d9 +emoji_u1f370 +emoji_u1f93f +emoji_u1f4dd +emoji_u1f9c5 +emoji_u1f35d +emoji_u1fa99 +emoji_u1f958 +emoji_u1f390 +emoji_u1f355 +emoji_u1f9fe +emoji_u1f4fa +emoji_u1f9ab +emoji_u1f4e2 +emoji_u1f9aa +emoji_u1f3d2 +emoji_u1f419 +emoji_u1f517 +emoji_u1f3c8 +emoji_u1f6bf +emoji_u1f98a +emoji_u1f9ad +emoji_u1fa96 +emoji_u1f9f6 +emoji_u1f6d7 +emoji_u1f3cf +emoji_u1f9eb +emoji_u1f95d +emoji_u1f40d +emoji_u1f4b5 +emoji_u1f42f +emoji_u1f3be +emoji_u1f337 +emoji_u1f9ae +emoji_u1f366 +emoji_u1fa79 +emoji_u1f94d +emoji_u1faa5 +emoji_u1fa9d +emoji_u1f35a +emoji_u1fab1 +emoji_u1f4b7 +emoji_u1fa9a +emoji_u1f32d +emoji_u1f428 +emoji_u1f50d +emoji_u1f333 +emoji_u1f6f7 +emoji_u1f41d +emoji_u1f4f2 +emoji_u1f5ff +emoji_u1f36d +emoji_u1f34a +emoji_u1f98c +emoji_u1f4e3 +emoji_u1f4e0 +emoji_u1f0cf +emoji_u1f42c +emoji_u1f3d3 +emoji_u1f41f +emoji_u1f50c +emoji_u1f95a +emoji_u1f4ce +emoji_u1f349 +emoji_u1f388 +emoji_u1f949 +emoji_u1faa0 +emoji_u1fa9f +emoji_u1f352 +emoji_u1f4b4 +emoji_u1f99b +emoji_u1f38d +emoji_u1f3ae +emoji_u1fa92 +emoji_u1f3a5 +emoji_u1f404 +emoji_u1f34f +emoji_u1f944 +emoji_u1f9ea +emoji_u1f36c +emoji_u1f411 +emoji_u1f403 +emoji_u1f33a +emoji_u1fab3 +emoji_u1f9ff +emoji_u1fab6 +emoji_u1f953 +emoji_u1f9a3 +emoji_u1f999 +emoji_u1f9c7 +emoji_u1f374 +emoji_u1f957 +emoji_u1f4dc +emoji_u1f38e +emoji_u1f9f7 +emoji_u1f3c9 +emoji_u1f512 +emoji_u1f997 +emoji_u1f52e +emoji_u1f406 +emoji_u1f964 +emoji_u1f950 +emoji_u1f962 +emoji_u1f954 +emoji_u1f40a +emoji_u1f9fb +emoji_u1f9f5 +emoji_u1f343 +emoji_u1f4e6 +emoji_u1f377 +emoji_u1f9e2 +emoji_u1f96e +emoji_u1f35f +emoji_u1f992 +emoji_u1f420 +emoji_u1fad0 +emoji_u1f415 +emoji_u1f331 +emoji_u1f95f +emoji_u1f4b3 +emoji_u1f98e +emoji_u1f412 +emoji_u1f432 +emoji_u1fad5 +emoji_u1f4ea +emoji_u1f3bd +emoji_u1f38f +emoji_u1f984 +emoji_u1f955 +emoji_u1f529 +emoji_u1f330 +emoji_u1f4a1 +emoji_u1f9c0 +emoji_u1f94e +emoji_u1f942 +emoji_u1f981 +emoji_u1fab0 +emoji_u1f50b +emoji_u1f9f0 +emoji_u1f345 +emoji_u1f362 +emoji_u1f3bb +emoji_u1fa9b +emoji_u1f342 +emoji_u1f4d0 +emoji_u1fa84 +emoji_u1f364 +emoji_u1f9fd +emoji_u1f99e +emoji_u1f4da +emoji_u1f344 +emoji_u1fa80 +emoji_u1f3c0 +emoji_u1f4e5 +emoji_u1f960 +emoji_u1f95c +emoji_u1f952 +emoji_u1f99a +emoji_u1f9c1 +emoji_u1f341 +emoji_u1f4fb +emoji_u1f980 +emoji_u1f4bc +emoji_u1f966 +emoji_u1f462 +emoji_u1f3f9 +emoji_u1f354 +emoji_u1fab4 +emoji_u1f4fc \ No newline at end of file diff --git a/docker_utils/dummy.rs b/docker_utils/dummy.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/docker_utils/dummy.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/emojis/png/160/emoji_u1f004.png b/emojis/png/160/emoji_u1f004.png new file mode 100644 index 0000000..32153e5 Binary files /dev/null and b/emojis/png/160/emoji_u1f004.png differ diff --git a/emojis/png/160/emoji_u1f0cf.png b/emojis/png/160/emoji_u1f0cf.png new file mode 100644 index 0000000..1b24392 Binary files /dev/null and b/emojis/png/160/emoji_u1f0cf.png differ diff --git a/emojis/png/160/emoji_u1f32d.png b/emojis/png/160/emoji_u1f32d.png new file mode 100644 index 0000000..20d777b Binary files /dev/null and b/emojis/png/160/emoji_u1f32d.png differ diff --git a/emojis/png/160/emoji_u1f32e.png b/emojis/png/160/emoji_u1f32e.png new file mode 100644 index 0000000..b27358a Binary files /dev/null and b/emojis/png/160/emoji_u1f32e.png differ diff --git a/emojis/png/160/emoji_u1f32f.png b/emojis/png/160/emoji_u1f32f.png new file mode 100644 index 0000000..fd29882 Binary files /dev/null and b/emojis/png/160/emoji_u1f32f.png differ diff --git a/emojis/png/160/emoji_u1f330.png b/emojis/png/160/emoji_u1f330.png new file mode 100644 index 0000000..e113bed Binary files /dev/null and b/emojis/png/160/emoji_u1f330.png differ diff --git a/emojis/png/160/emoji_u1f331.png b/emojis/png/160/emoji_u1f331.png new file mode 100644 index 0000000..c67870b Binary files /dev/null and b/emojis/png/160/emoji_u1f331.png differ diff --git a/emojis/png/160/emoji_u1f332.png b/emojis/png/160/emoji_u1f332.png new file mode 100644 index 0000000..ef4c1b9 Binary files /dev/null and b/emojis/png/160/emoji_u1f332.png differ diff --git a/emojis/png/160/emoji_u1f333.png b/emojis/png/160/emoji_u1f333.png new file mode 100644 index 0000000..9b578b0 Binary files /dev/null and b/emojis/png/160/emoji_u1f333.png differ diff --git a/emojis/png/160/emoji_u1f334.png b/emojis/png/160/emoji_u1f334.png new file mode 100644 index 0000000..38650a1 Binary files /dev/null and b/emojis/png/160/emoji_u1f334.png differ diff --git a/emojis/png/160/emoji_u1f335.png b/emojis/png/160/emoji_u1f335.png new file mode 100644 index 0000000..6e7d8b5 Binary files /dev/null and b/emojis/png/160/emoji_u1f335.png differ diff --git a/emojis/png/160/emoji_u1f337.png b/emojis/png/160/emoji_u1f337.png new file mode 100644 index 0000000..6f19fb8 Binary files /dev/null and b/emojis/png/160/emoji_u1f337.png differ diff --git a/emojis/png/160/emoji_u1f338.png b/emojis/png/160/emoji_u1f338.png new file mode 100644 index 0000000..e13ba48 Binary files /dev/null and b/emojis/png/160/emoji_u1f338.png differ diff --git a/emojis/png/160/emoji_u1f339.png b/emojis/png/160/emoji_u1f339.png new file mode 100644 index 0000000..459be1a Binary files /dev/null and b/emojis/png/160/emoji_u1f339.png differ diff --git a/emojis/png/160/emoji_u1f33a.png b/emojis/png/160/emoji_u1f33a.png new file mode 100644 index 0000000..67291c4 Binary files /dev/null and b/emojis/png/160/emoji_u1f33a.png differ diff --git a/emojis/png/160/emoji_u1f33b.png b/emojis/png/160/emoji_u1f33b.png new file mode 100644 index 0000000..20111c7 Binary files /dev/null and b/emojis/png/160/emoji_u1f33b.png differ diff --git a/emojis/png/160/emoji_u1f33c.png b/emojis/png/160/emoji_u1f33c.png new file mode 100644 index 0000000..5467777 Binary files /dev/null and b/emojis/png/160/emoji_u1f33c.png differ diff --git a/emojis/png/160/emoji_u1f33d.png b/emojis/png/160/emoji_u1f33d.png new file mode 100644 index 0000000..8f08c10 Binary files /dev/null and b/emojis/png/160/emoji_u1f33d.png differ diff --git a/emojis/png/160/emoji_u1f33e.png b/emojis/png/160/emoji_u1f33e.png new file mode 100644 index 0000000..369c1a9 Binary files /dev/null and b/emojis/png/160/emoji_u1f33e.png differ diff --git a/emojis/png/160/emoji_u1f33f.png b/emojis/png/160/emoji_u1f33f.png new file mode 100644 index 0000000..a24780b Binary files /dev/null and b/emojis/png/160/emoji_u1f33f.png differ diff --git a/emojis/png/160/emoji_u1f340.png b/emojis/png/160/emoji_u1f340.png new file mode 100644 index 0000000..2326668 Binary files /dev/null and b/emojis/png/160/emoji_u1f340.png differ diff --git a/emojis/png/160/emoji_u1f341.png b/emojis/png/160/emoji_u1f341.png new file mode 100644 index 0000000..7e5547e Binary files /dev/null and b/emojis/png/160/emoji_u1f341.png differ diff --git a/emojis/png/160/emoji_u1f342.png b/emojis/png/160/emoji_u1f342.png new file mode 100644 index 0000000..a588156 Binary files /dev/null and b/emojis/png/160/emoji_u1f342.png differ diff --git a/emojis/png/160/emoji_u1f343.png b/emojis/png/160/emoji_u1f343.png new file mode 100644 index 0000000..ed790e6 Binary files /dev/null and b/emojis/png/160/emoji_u1f343.png differ diff --git a/emojis/png/160/emoji_u1f344.png b/emojis/png/160/emoji_u1f344.png new file mode 100644 index 0000000..58b9da3 Binary files /dev/null and b/emojis/png/160/emoji_u1f344.png differ diff --git a/emojis/png/160/emoji_u1f345.png b/emojis/png/160/emoji_u1f345.png new file mode 100644 index 0000000..40f33dc Binary files /dev/null and b/emojis/png/160/emoji_u1f345.png differ diff --git a/emojis/png/160/emoji_u1f346.png b/emojis/png/160/emoji_u1f346.png new file mode 100644 index 0000000..c000dbd Binary files /dev/null and b/emojis/png/160/emoji_u1f346.png differ diff --git a/emojis/png/160/emoji_u1f347.png b/emojis/png/160/emoji_u1f347.png new file mode 100644 index 0000000..733526c Binary files /dev/null and b/emojis/png/160/emoji_u1f347.png differ diff --git a/emojis/png/160/emoji_u1f348.png b/emojis/png/160/emoji_u1f348.png new file mode 100644 index 0000000..7cfce07 Binary files /dev/null and b/emojis/png/160/emoji_u1f348.png differ diff --git a/emojis/png/160/emoji_u1f349.png b/emojis/png/160/emoji_u1f349.png new file mode 100644 index 0000000..2e9a0f1 Binary files /dev/null and b/emojis/png/160/emoji_u1f349.png differ diff --git a/emojis/png/160/emoji_u1f34a.png b/emojis/png/160/emoji_u1f34a.png new file mode 100644 index 0000000..dd08cbe Binary files /dev/null and b/emojis/png/160/emoji_u1f34a.png differ diff --git a/emojis/png/160/emoji_u1f34b.png b/emojis/png/160/emoji_u1f34b.png new file mode 100644 index 0000000..52b9456 Binary files /dev/null and b/emojis/png/160/emoji_u1f34b.png differ diff --git a/emojis/png/160/emoji_u1f34c.png b/emojis/png/160/emoji_u1f34c.png new file mode 100644 index 0000000..f23a42d Binary files /dev/null and b/emojis/png/160/emoji_u1f34c.png differ diff --git a/emojis/png/160/emoji_u1f34d.png b/emojis/png/160/emoji_u1f34d.png new file mode 100644 index 0000000..cd95aa9 Binary files /dev/null and b/emojis/png/160/emoji_u1f34d.png differ diff --git a/emojis/png/160/emoji_u1f34e.png b/emojis/png/160/emoji_u1f34e.png new file mode 100644 index 0000000..bfc25dd Binary files /dev/null and b/emojis/png/160/emoji_u1f34e.png differ diff --git a/emojis/png/160/emoji_u1f34f.png b/emojis/png/160/emoji_u1f34f.png new file mode 100644 index 0000000..729ce84 Binary files /dev/null and b/emojis/png/160/emoji_u1f34f.png differ diff --git a/emojis/png/160/emoji_u1f350.png b/emojis/png/160/emoji_u1f350.png new file mode 100644 index 0000000..a272b0b Binary files /dev/null and b/emojis/png/160/emoji_u1f350.png differ diff --git a/emojis/png/160/emoji_u1f351.png b/emojis/png/160/emoji_u1f351.png new file mode 100644 index 0000000..4ceae16 Binary files /dev/null and b/emojis/png/160/emoji_u1f351.png differ diff --git a/emojis/png/160/emoji_u1f352.png b/emojis/png/160/emoji_u1f352.png new file mode 100644 index 0000000..c31399c Binary files /dev/null and b/emojis/png/160/emoji_u1f352.png differ diff --git a/emojis/png/160/emoji_u1f353.png b/emojis/png/160/emoji_u1f353.png new file mode 100644 index 0000000..236d79f Binary files /dev/null and b/emojis/png/160/emoji_u1f353.png differ diff --git a/emojis/png/160/emoji_u1f354.png b/emojis/png/160/emoji_u1f354.png new file mode 100644 index 0000000..21b18ca Binary files /dev/null and b/emojis/png/160/emoji_u1f354.png differ diff --git a/emojis/png/160/emoji_u1f355.png b/emojis/png/160/emoji_u1f355.png new file mode 100644 index 0000000..b7782ee Binary files /dev/null and b/emojis/png/160/emoji_u1f355.png differ diff --git a/emojis/png/160/emoji_u1f356.png b/emojis/png/160/emoji_u1f356.png new file mode 100644 index 0000000..6f66fe3 Binary files /dev/null and b/emojis/png/160/emoji_u1f356.png differ diff --git a/emojis/png/160/emoji_u1f357.png b/emojis/png/160/emoji_u1f357.png new file mode 100644 index 0000000..7e7929f Binary files /dev/null and b/emojis/png/160/emoji_u1f357.png differ diff --git a/emojis/png/160/emoji_u1f358.png b/emojis/png/160/emoji_u1f358.png new file mode 100644 index 0000000..1d8234f Binary files /dev/null and b/emojis/png/160/emoji_u1f358.png differ diff --git a/emojis/png/160/emoji_u1f359.png b/emojis/png/160/emoji_u1f359.png new file mode 100644 index 0000000..75df2f0 Binary files /dev/null and b/emojis/png/160/emoji_u1f359.png differ diff --git a/emojis/png/160/emoji_u1f35a.png b/emojis/png/160/emoji_u1f35a.png new file mode 100644 index 0000000..108c0f1 Binary files /dev/null and b/emojis/png/160/emoji_u1f35a.png differ diff --git a/emojis/png/160/emoji_u1f35b.png b/emojis/png/160/emoji_u1f35b.png new file mode 100644 index 0000000..de79db9 Binary files /dev/null and b/emojis/png/160/emoji_u1f35b.png differ diff --git a/emojis/png/160/emoji_u1f35c.png b/emojis/png/160/emoji_u1f35c.png new file mode 100644 index 0000000..f92e12b Binary files /dev/null and b/emojis/png/160/emoji_u1f35c.png differ diff --git a/emojis/png/160/emoji_u1f35d.png b/emojis/png/160/emoji_u1f35d.png new file mode 100644 index 0000000..891580b Binary files /dev/null and b/emojis/png/160/emoji_u1f35d.png differ diff --git a/emojis/png/160/emoji_u1f35e.png b/emojis/png/160/emoji_u1f35e.png new file mode 100644 index 0000000..f95aac7 Binary files /dev/null and b/emojis/png/160/emoji_u1f35e.png differ diff --git a/emojis/png/160/emoji_u1f35f.png b/emojis/png/160/emoji_u1f35f.png new file mode 100644 index 0000000..84e9af1 Binary files /dev/null and b/emojis/png/160/emoji_u1f35f.png differ diff --git a/emojis/png/160/emoji_u1f360.png b/emojis/png/160/emoji_u1f360.png new file mode 100644 index 0000000..fe11d5d Binary files /dev/null and b/emojis/png/160/emoji_u1f360.png differ diff --git a/emojis/png/160/emoji_u1f361.png b/emojis/png/160/emoji_u1f361.png new file mode 100644 index 0000000..a67f1e3 Binary files /dev/null and b/emojis/png/160/emoji_u1f361.png differ diff --git a/emojis/png/160/emoji_u1f362.png b/emojis/png/160/emoji_u1f362.png new file mode 100644 index 0000000..ca4593f Binary files /dev/null and b/emojis/png/160/emoji_u1f362.png differ diff --git a/emojis/png/160/emoji_u1f363.png b/emojis/png/160/emoji_u1f363.png new file mode 100644 index 0000000..9e5ed05 Binary files /dev/null and b/emojis/png/160/emoji_u1f363.png differ diff --git a/emojis/png/160/emoji_u1f364.png b/emojis/png/160/emoji_u1f364.png new file mode 100644 index 0000000..98adacd Binary files /dev/null and b/emojis/png/160/emoji_u1f364.png differ diff --git a/emojis/png/160/emoji_u1f365.png b/emojis/png/160/emoji_u1f365.png new file mode 100644 index 0000000..980e1f0 Binary files /dev/null and b/emojis/png/160/emoji_u1f365.png differ diff --git a/emojis/png/160/emoji_u1f366.png b/emojis/png/160/emoji_u1f366.png new file mode 100644 index 0000000..df896e6 Binary files /dev/null and b/emojis/png/160/emoji_u1f366.png differ diff --git a/emojis/png/160/emoji_u1f367.png b/emojis/png/160/emoji_u1f367.png new file mode 100644 index 0000000..713944a Binary files /dev/null and b/emojis/png/160/emoji_u1f367.png differ diff --git a/emojis/png/160/emoji_u1f368.png b/emojis/png/160/emoji_u1f368.png new file mode 100644 index 0000000..6b64ffc Binary files /dev/null and b/emojis/png/160/emoji_u1f368.png differ diff --git a/emojis/png/160/emoji_u1f369.png b/emojis/png/160/emoji_u1f369.png new file mode 100644 index 0000000..e97890e Binary files /dev/null and b/emojis/png/160/emoji_u1f369.png differ diff --git a/emojis/png/160/emoji_u1f36a.png b/emojis/png/160/emoji_u1f36a.png new file mode 100644 index 0000000..a0ff20d Binary files /dev/null and b/emojis/png/160/emoji_u1f36a.png differ diff --git a/emojis/png/160/emoji_u1f36b.png b/emojis/png/160/emoji_u1f36b.png new file mode 100644 index 0000000..3942bb3 Binary files /dev/null and b/emojis/png/160/emoji_u1f36b.png differ diff --git a/emojis/png/160/emoji_u1f36c.png b/emojis/png/160/emoji_u1f36c.png new file mode 100644 index 0000000..e7d28d0 Binary files /dev/null and b/emojis/png/160/emoji_u1f36c.png differ diff --git a/emojis/png/160/emoji_u1f36d.png b/emojis/png/160/emoji_u1f36d.png new file mode 100644 index 0000000..3e62c92 Binary files /dev/null and b/emojis/png/160/emoji_u1f36d.png differ diff --git a/emojis/png/160/emoji_u1f36e.png b/emojis/png/160/emoji_u1f36e.png new file mode 100644 index 0000000..21f588b Binary files /dev/null and b/emojis/png/160/emoji_u1f36e.png differ diff --git a/emojis/png/160/emoji_u1f36f.png b/emojis/png/160/emoji_u1f36f.png new file mode 100644 index 0000000..89c19ae Binary files /dev/null and b/emojis/png/160/emoji_u1f36f.png differ diff --git a/emojis/png/160/emoji_u1f370.png b/emojis/png/160/emoji_u1f370.png new file mode 100644 index 0000000..b5d600c Binary files /dev/null and b/emojis/png/160/emoji_u1f370.png differ diff --git a/emojis/png/160/emoji_u1f371.png b/emojis/png/160/emoji_u1f371.png new file mode 100644 index 0000000..0b73b5b Binary files /dev/null and b/emojis/png/160/emoji_u1f371.png differ diff --git a/emojis/png/160/emoji_u1f372.png b/emojis/png/160/emoji_u1f372.png new file mode 100644 index 0000000..6374d73 Binary files /dev/null and b/emojis/png/160/emoji_u1f372.png differ diff --git a/emojis/png/160/emoji_u1f373.png b/emojis/png/160/emoji_u1f373.png new file mode 100644 index 0000000..63026b5 Binary files /dev/null and b/emojis/png/160/emoji_u1f373.png differ diff --git a/emojis/png/160/emoji_u1f374.png b/emojis/png/160/emoji_u1f374.png new file mode 100644 index 0000000..15df68e Binary files /dev/null and b/emojis/png/160/emoji_u1f374.png differ diff --git a/emojis/png/160/emoji_u1f375.png b/emojis/png/160/emoji_u1f375.png new file mode 100644 index 0000000..995b526 Binary files /dev/null and b/emojis/png/160/emoji_u1f375.png differ diff --git a/emojis/png/160/emoji_u1f376.png b/emojis/png/160/emoji_u1f376.png new file mode 100644 index 0000000..8eb621b Binary files /dev/null and b/emojis/png/160/emoji_u1f376.png differ diff --git a/emojis/png/160/emoji_u1f377.png b/emojis/png/160/emoji_u1f377.png new file mode 100644 index 0000000..2f7d4b1 Binary files /dev/null and b/emojis/png/160/emoji_u1f377.png differ diff --git a/emojis/png/160/emoji_u1f378.png b/emojis/png/160/emoji_u1f378.png new file mode 100644 index 0000000..94a87a8 Binary files /dev/null and b/emojis/png/160/emoji_u1f378.png differ diff --git a/emojis/png/160/emoji_u1f379.png b/emojis/png/160/emoji_u1f379.png new file mode 100644 index 0000000..f979cda Binary files /dev/null and b/emojis/png/160/emoji_u1f379.png differ diff --git a/emojis/png/160/emoji_u1f37a.png b/emojis/png/160/emoji_u1f37a.png new file mode 100644 index 0000000..7048744 Binary files /dev/null and b/emojis/png/160/emoji_u1f37a.png differ diff --git a/emojis/png/160/emoji_u1f37b.png b/emojis/png/160/emoji_u1f37b.png new file mode 100644 index 0000000..fd85758 Binary files /dev/null and b/emojis/png/160/emoji_u1f37b.png differ diff --git a/emojis/png/160/emoji_u1f37c.png b/emojis/png/160/emoji_u1f37c.png new file mode 100644 index 0000000..48bf0c4 Binary files /dev/null and b/emojis/png/160/emoji_u1f37c.png differ diff --git a/emojis/png/160/emoji_u1f37e.png b/emojis/png/160/emoji_u1f37e.png new file mode 100644 index 0000000..d2f3cc0 Binary files /dev/null and b/emojis/png/160/emoji_u1f37e.png differ diff --git a/emojis/png/160/emoji_u1f37f.png b/emojis/png/160/emoji_u1f37f.png new file mode 100644 index 0000000..029091f Binary files /dev/null and b/emojis/png/160/emoji_u1f37f.png differ diff --git a/emojis/png/160/emoji_u1f380.png b/emojis/png/160/emoji_u1f380.png new file mode 100644 index 0000000..2905350 Binary files /dev/null and b/emojis/png/160/emoji_u1f380.png differ diff --git a/emojis/png/160/emoji_u1f381.png b/emojis/png/160/emoji_u1f381.png new file mode 100644 index 0000000..e8158e2 Binary files /dev/null and b/emojis/png/160/emoji_u1f381.png differ diff --git a/emojis/png/160/emoji_u1f382.png b/emojis/png/160/emoji_u1f382.png new file mode 100644 index 0000000..c9184b5 Binary files /dev/null and b/emojis/png/160/emoji_u1f382.png differ diff --git a/emojis/png/160/emoji_u1f383.png b/emojis/png/160/emoji_u1f383.png new file mode 100644 index 0000000..ed0e8c2 Binary files /dev/null and b/emojis/png/160/emoji_u1f383.png differ diff --git a/emojis/png/160/emoji_u1f384.png b/emojis/png/160/emoji_u1f384.png new file mode 100644 index 0000000..fcceab2 Binary files /dev/null and b/emojis/png/160/emoji_u1f384.png differ diff --git a/emojis/png/160/emoji_u1f386.png b/emojis/png/160/emoji_u1f386.png new file mode 100644 index 0000000..108dd2a Binary files /dev/null and b/emojis/png/160/emoji_u1f386.png differ diff --git a/emojis/png/160/emoji_u1f387.png b/emojis/png/160/emoji_u1f387.png new file mode 100644 index 0000000..e4cdf4c Binary files /dev/null and b/emojis/png/160/emoji_u1f387.png differ diff --git a/emojis/png/160/emoji_u1f388.png b/emojis/png/160/emoji_u1f388.png new file mode 100644 index 0000000..3e98d95 Binary files /dev/null and b/emojis/png/160/emoji_u1f388.png differ diff --git a/emojis/png/160/emoji_u1f389.png b/emojis/png/160/emoji_u1f389.png new file mode 100644 index 0000000..e587c9a Binary files /dev/null and b/emojis/png/160/emoji_u1f389.png differ diff --git a/emojis/png/160/emoji_u1f38a.png b/emojis/png/160/emoji_u1f38a.png new file mode 100644 index 0000000..01e0692 Binary files /dev/null and b/emojis/png/160/emoji_u1f38a.png differ diff --git a/emojis/png/160/emoji_u1f38b.png b/emojis/png/160/emoji_u1f38b.png new file mode 100644 index 0000000..865035d Binary files /dev/null and b/emojis/png/160/emoji_u1f38b.png differ diff --git a/emojis/png/160/emoji_u1f38d.png b/emojis/png/160/emoji_u1f38d.png new file mode 100644 index 0000000..0120195 Binary files /dev/null and b/emojis/png/160/emoji_u1f38d.png differ diff --git a/emojis/png/160/emoji_u1f38e.png b/emojis/png/160/emoji_u1f38e.png new file mode 100644 index 0000000..a9407e5 Binary files /dev/null and b/emojis/png/160/emoji_u1f38e.png differ diff --git a/emojis/png/160/emoji_u1f38f.png b/emojis/png/160/emoji_u1f38f.png new file mode 100644 index 0000000..441eca5 Binary files /dev/null and b/emojis/png/160/emoji_u1f38f.png differ diff --git a/emojis/png/160/emoji_u1f390.png b/emojis/png/160/emoji_u1f390.png new file mode 100644 index 0000000..6c17533 Binary files /dev/null and b/emojis/png/160/emoji_u1f390.png differ diff --git a/emojis/png/160/emoji_u1f391.png b/emojis/png/160/emoji_u1f391.png new file mode 100644 index 0000000..097c683 Binary files /dev/null and b/emojis/png/160/emoji_u1f391.png differ diff --git a/emojis/png/160/emoji_u1f393.png b/emojis/png/160/emoji_u1f393.png new file mode 100644 index 0000000..1e0b638 Binary files /dev/null and b/emojis/png/160/emoji_u1f393.png differ diff --git a/emojis/png/160/emoji_u1f3a3.png b/emojis/png/160/emoji_u1f3a3.png new file mode 100644 index 0000000..d047b54 Binary files /dev/null and b/emojis/png/160/emoji_u1f3a3.png differ diff --git a/emojis/png/160/emoji_u1f3a4.png b/emojis/png/160/emoji_u1f3a4.png new file mode 100644 index 0000000..6601dfe Binary files /dev/null and b/emojis/png/160/emoji_u1f3a4.png differ diff --git a/emojis/png/160/emoji_u1f3a5.png b/emojis/png/160/emoji_u1f3a5.png new file mode 100644 index 0000000..fbe1f6d Binary files /dev/null and b/emojis/png/160/emoji_u1f3a5.png differ diff --git a/emojis/png/160/emoji_u1f3a7.png b/emojis/png/160/emoji_u1f3a7.png new file mode 100644 index 0000000..adae589 Binary files /dev/null and b/emojis/png/160/emoji_u1f3a7.png differ diff --git a/emojis/png/160/emoji_u1f3a8.png b/emojis/png/160/emoji_u1f3a8.png new file mode 100644 index 0000000..e16c1b9 Binary files /dev/null and b/emojis/png/160/emoji_u1f3a8.png differ diff --git a/emojis/png/160/emoji_u1f3a9.png b/emojis/png/160/emoji_u1f3a9.png new file mode 100644 index 0000000..3cb9b05 Binary files /dev/null and b/emojis/png/160/emoji_u1f3a9.png differ diff --git a/emojis/png/160/emoji_u1f3ab.png b/emojis/png/160/emoji_u1f3ab.png new file mode 100644 index 0000000..d7fc950 Binary files /dev/null and b/emojis/png/160/emoji_u1f3ab.png differ diff --git a/emojis/png/160/emoji_u1f3ac.png b/emojis/png/160/emoji_u1f3ac.png new file mode 100644 index 0000000..8732a48 Binary files /dev/null and b/emojis/png/160/emoji_u1f3ac.png differ diff --git a/emojis/png/160/emoji_u1f3ad.png b/emojis/png/160/emoji_u1f3ad.png new file mode 100644 index 0000000..d171b0c Binary files /dev/null and b/emojis/png/160/emoji_u1f3ad.png differ diff --git a/emojis/png/160/emoji_u1f3ae.png b/emojis/png/160/emoji_u1f3ae.png new file mode 100644 index 0000000..2f5c3af Binary files /dev/null and b/emojis/png/160/emoji_u1f3ae.png differ diff --git a/emojis/png/160/emoji_u1f3af.png b/emojis/png/160/emoji_u1f3af.png new file mode 100644 index 0000000..0c63115 Binary files /dev/null and b/emojis/png/160/emoji_u1f3af.png differ diff --git a/emojis/png/160/emoji_u1f3b0.png b/emojis/png/160/emoji_u1f3b0.png new file mode 100644 index 0000000..a785f38 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b0.png differ diff --git a/emojis/png/160/emoji_u1f3b1.png b/emojis/png/160/emoji_u1f3b1.png new file mode 100644 index 0000000..c865b63 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b1.png differ diff --git a/emojis/png/160/emoji_u1f3b2.png b/emojis/png/160/emoji_u1f3b2.png new file mode 100644 index 0000000..2690540 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b2.png differ diff --git a/emojis/png/160/emoji_u1f3b3.png b/emojis/png/160/emoji_u1f3b3.png new file mode 100644 index 0000000..d8c4a55 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b3.png differ diff --git a/emojis/png/160/emoji_u1f3b4.png b/emojis/png/160/emoji_u1f3b4.png new file mode 100644 index 0000000..6da28c8 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b4.png differ diff --git a/emojis/png/160/emoji_u1f3b5.png b/emojis/png/160/emoji_u1f3b5.png new file mode 100644 index 0000000..c0ac739 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b5.png differ diff --git a/emojis/png/160/emoji_u1f3b6.png b/emojis/png/160/emoji_u1f3b6.png new file mode 100644 index 0000000..bd111d6 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b6.png differ diff --git a/emojis/png/160/emoji_u1f3b7.png b/emojis/png/160/emoji_u1f3b7.png new file mode 100644 index 0000000..f38ee78 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b7.png differ diff --git a/emojis/png/160/emoji_u1f3b8.png b/emojis/png/160/emoji_u1f3b8.png new file mode 100644 index 0000000..302041e Binary files /dev/null and b/emojis/png/160/emoji_u1f3b8.png differ diff --git a/emojis/png/160/emoji_u1f3b9.png b/emojis/png/160/emoji_u1f3b9.png new file mode 100644 index 0000000..2a3d8b9 Binary files /dev/null and b/emojis/png/160/emoji_u1f3b9.png differ diff --git a/emojis/png/160/emoji_u1f3ba.png b/emojis/png/160/emoji_u1f3ba.png new file mode 100644 index 0000000..a02e653 Binary files /dev/null and b/emojis/png/160/emoji_u1f3ba.png differ diff --git a/emojis/png/160/emoji_u1f3bb.png b/emojis/png/160/emoji_u1f3bb.png new file mode 100644 index 0000000..10de369 Binary files /dev/null and b/emojis/png/160/emoji_u1f3bb.png differ diff --git a/emojis/png/160/emoji_u1f3bc.png b/emojis/png/160/emoji_u1f3bc.png new file mode 100644 index 0000000..8a40f16 Binary files /dev/null and b/emojis/png/160/emoji_u1f3bc.png differ diff --git a/emojis/png/160/emoji_u1f3bd.png b/emojis/png/160/emoji_u1f3bd.png new file mode 100644 index 0000000..4416195 Binary files /dev/null and b/emojis/png/160/emoji_u1f3bd.png differ diff --git a/emojis/png/160/emoji_u1f3be.png b/emojis/png/160/emoji_u1f3be.png new file mode 100644 index 0000000..83f4bf9 Binary files /dev/null and b/emojis/png/160/emoji_u1f3be.png differ diff --git a/emojis/png/160/emoji_u1f3bf.png b/emojis/png/160/emoji_u1f3bf.png new file mode 100644 index 0000000..df90d95 Binary files /dev/null and b/emojis/png/160/emoji_u1f3bf.png differ diff --git a/emojis/png/160/emoji_u1f3c0.png b/emojis/png/160/emoji_u1f3c0.png new file mode 100644 index 0000000..899e367 Binary files /dev/null and b/emojis/png/160/emoji_u1f3c0.png differ diff --git a/emojis/png/160/emoji_u1f3c5.png b/emojis/png/160/emoji_u1f3c5.png new file mode 100644 index 0000000..8cb517f Binary files /dev/null and b/emojis/png/160/emoji_u1f3c5.png differ diff --git a/emojis/png/160/emoji_u1f3c6.png b/emojis/png/160/emoji_u1f3c6.png new file mode 100644 index 0000000..0ea70f2 Binary files /dev/null and b/emojis/png/160/emoji_u1f3c6.png differ diff --git a/emojis/png/160/emoji_u1f3c8.png b/emojis/png/160/emoji_u1f3c8.png new file mode 100644 index 0000000..80d4c18 Binary files /dev/null and b/emojis/png/160/emoji_u1f3c8.png differ diff --git a/emojis/png/160/emoji_u1f3c9.png b/emojis/png/160/emoji_u1f3c9.png new file mode 100644 index 0000000..823c5a1 Binary files /dev/null and b/emojis/png/160/emoji_u1f3c9.png differ diff --git a/emojis/png/160/emoji_u1f3cf.png b/emojis/png/160/emoji_u1f3cf.png new file mode 100644 index 0000000..e0ab14d Binary files /dev/null and b/emojis/png/160/emoji_u1f3cf.png differ diff --git a/emojis/png/160/emoji_u1f3d0.png b/emojis/png/160/emoji_u1f3d0.png new file mode 100644 index 0000000..15391fb Binary files /dev/null and b/emojis/png/160/emoji_u1f3d0.png differ diff --git a/emojis/png/160/emoji_u1f3d1.png b/emojis/png/160/emoji_u1f3d1.png new file mode 100644 index 0000000..8f52175 Binary files /dev/null and b/emojis/png/160/emoji_u1f3d1.png differ diff --git a/emojis/png/160/emoji_u1f3d2.png b/emojis/png/160/emoji_u1f3d2.png new file mode 100644 index 0000000..bee1f0d Binary files /dev/null and b/emojis/png/160/emoji_u1f3d2.png differ diff --git a/emojis/png/160/emoji_u1f3d3.png b/emojis/png/160/emoji_u1f3d3.png new file mode 100644 index 0000000..4e1d543 Binary files /dev/null and b/emojis/png/160/emoji_u1f3d3.png differ diff --git a/emojis/png/160/emoji_u1f3ee.png b/emojis/png/160/emoji_u1f3ee.png new file mode 100644 index 0000000..620fd4e Binary files /dev/null and b/emojis/png/160/emoji_u1f3ee.png differ diff --git a/emojis/png/160/emoji_u1f3f8.png b/emojis/png/160/emoji_u1f3f8.png new file mode 100644 index 0000000..c19e847 Binary files /dev/null and b/emojis/png/160/emoji_u1f3f8.png differ diff --git a/emojis/png/160/emoji_u1f3f9.png b/emojis/png/160/emoji_u1f3f9.png new file mode 100644 index 0000000..cf37920 Binary files /dev/null and b/emojis/png/160/emoji_u1f3f9.png differ diff --git a/emojis/png/160/emoji_u1f400.png b/emojis/png/160/emoji_u1f400.png new file mode 100644 index 0000000..507c471 Binary files /dev/null and b/emojis/png/160/emoji_u1f400.png differ diff --git a/emojis/png/160/emoji_u1f401.png b/emojis/png/160/emoji_u1f401.png new file mode 100644 index 0000000..a3cb6d7 Binary files /dev/null and b/emojis/png/160/emoji_u1f401.png differ diff --git a/emojis/png/160/emoji_u1f402.png b/emojis/png/160/emoji_u1f402.png new file mode 100644 index 0000000..6626b7f Binary files /dev/null and b/emojis/png/160/emoji_u1f402.png differ diff --git a/emojis/png/160/emoji_u1f403.png b/emojis/png/160/emoji_u1f403.png new file mode 100644 index 0000000..abc8612 Binary files /dev/null and b/emojis/png/160/emoji_u1f403.png differ diff --git a/emojis/png/160/emoji_u1f404.png b/emojis/png/160/emoji_u1f404.png new file mode 100644 index 0000000..496d6f3 Binary files /dev/null and b/emojis/png/160/emoji_u1f404.png differ diff --git a/emojis/png/160/emoji_u1f405.png b/emojis/png/160/emoji_u1f405.png new file mode 100644 index 0000000..d155444 Binary files /dev/null and b/emojis/png/160/emoji_u1f405.png differ diff --git a/emojis/png/160/emoji_u1f406.png b/emojis/png/160/emoji_u1f406.png new file mode 100644 index 0000000..0d6b9ac Binary files /dev/null and b/emojis/png/160/emoji_u1f406.png differ diff --git a/emojis/png/160/emoji_u1f407.png b/emojis/png/160/emoji_u1f407.png new file mode 100644 index 0000000..eebbba5 Binary files /dev/null and b/emojis/png/160/emoji_u1f407.png differ diff --git a/emojis/png/160/emoji_u1f408.png b/emojis/png/160/emoji_u1f408.png new file mode 100644 index 0000000..15fa2ff Binary files /dev/null and b/emojis/png/160/emoji_u1f408.png differ diff --git a/emojis/png/160/emoji_u1f409.png b/emojis/png/160/emoji_u1f409.png new file mode 100644 index 0000000..b252b46 Binary files /dev/null and b/emojis/png/160/emoji_u1f409.png differ diff --git a/emojis/png/160/emoji_u1f40a.png b/emojis/png/160/emoji_u1f40a.png new file mode 100644 index 0000000..d0547cd Binary files /dev/null and b/emojis/png/160/emoji_u1f40a.png differ diff --git a/emojis/png/160/emoji_u1f40b.png b/emojis/png/160/emoji_u1f40b.png new file mode 100644 index 0000000..e6c35b0 Binary files /dev/null and b/emojis/png/160/emoji_u1f40b.png differ diff --git a/emojis/png/160/emoji_u1f40c.png b/emojis/png/160/emoji_u1f40c.png new file mode 100644 index 0000000..e2ba21a Binary files /dev/null and b/emojis/png/160/emoji_u1f40c.png differ diff --git a/emojis/png/160/emoji_u1f40d.png b/emojis/png/160/emoji_u1f40d.png new file mode 100644 index 0000000..c4f5120 Binary files /dev/null and b/emojis/png/160/emoji_u1f40d.png differ diff --git a/emojis/png/160/emoji_u1f40e.png b/emojis/png/160/emoji_u1f40e.png new file mode 100644 index 0000000..879b807 Binary files /dev/null and b/emojis/png/160/emoji_u1f40e.png differ diff --git a/emojis/png/160/emoji_u1f40f.png b/emojis/png/160/emoji_u1f40f.png new file mode 100644 index 0000000..d957b2a Binary files /dev/null and b/emojis/png/160/emoji_u1f40f.png differ diff --git a/emojis/png/160/emoji_u1f410.png b/emojis/png/160/emoji_u1f410.png new file mode 100644 index 0000000..3782844 Binary files /dev/null and b/emojis/png/160/emoji_u1f410.png differ diff --git a/emojis/png/160/emoji_u1f411.png b/emojis/png/160/emoji_u1f411.png new file mode 100644 index 0000000..2ab175c Binary files /dev/null and b/emojis/png/160/emoji_u1f411.png differ diff --git a/emojis/png/160/emoji_u1f412.png b/emojis/png/160/emoji_u1f412.png new file mode 100644 index 0000000..a004cf0 Binary files /dev/null and b/emojis/png/160/emoji_u1f412.png differ diff --git a/emojis/png/160/emoji_u1f413.png b/emojis/png/160/emoji_u1f413.png new file mode 100644 index 0000000..a5ab55a Binary files /dev/null and b/emojis/png/160/emoji_u1f413.png differ diff --git a/emojis/png/160/emoji_u1f414.png b/emojis/png/160/emoji_u1f414.png new file mode 100644 index 0000000..5777325 Binary files /dev/null and b/emojis/png/160/emoji_u1f414.png differ diff --git a/emojis/png/160/emoji_u1f415.png b/emojis/png/160/emoji_u1f415.png new file mode 100644 index 0000000..24d77ff Binary files /dev/null and b/emojis/png/160/emoji_u1f415.png differ diff --git a/emojis/png/160/emoji_u1f416.png b/emojis/png/160/emoji_u1f416.png new file mode 100644 index 0000000..5d2f77b Binary files /dev/null and b/emojis/png/160/emoji_u1f416.png differ diff --git a/emojis/png/160/emoji_u1f417.png b/emojis/png/160/emoji_u1f417.png new file mode 100644 index 0000000..723d079 Binary files /dev/null and b/emojis/png/160/emoji_u1f417.png differ diff --git a/emojis/png/160/emoji_u1f418.png b/emojis/png/160/emoji_u1f418.png new file mode 100644 index 0000000..8a1b499 Binary files /dev/null and b/emojis/png/160/emoji_u1f418.png differ diff --git a/emojis/png/160/emoji_u1f419.png b/emojis/png/160/emoji_u1f419.png new file mode 100644 index 0000000..0e0d56e Binary files /dev/null and b/emojis/png/160/emoji_u1f419.png differ diff --git a/emojis/png/160/emoji_u1f41a.png b/emojis/png/160/emoji_u1f41a.png new file mode 100644 index 0000000..3e8b3fb Binary files /dev/null and b/emojis/png/160/emoji_u1f41a.png differ diff --git a/emojis/png/160/emoji_u1f41b.png b/emojis/png/160/emoji_u1f41b.png new file mode 100644 index 0000000..03d51c8 Binary files /dev/null and b/emojis/png/160/emoji_u1f41b.png differ diff --git a/emojis/png/160/emoji_u1f41c.png b/emojis/png/160/emoji_u1f41c.png new file mode 100644 index 0000000..4d20175 Binary files /dev/null and b/emojis/png/160/emoji_u1f41c.png differ diff --git a/emojis/png/160/emoji_u1f41d.png b/emojis/png/160/emoji_u1f41d.png new file mode 100644 index 0000000..358d74d Binary files /dev/null and b/emojis/png/160/emoji_u1f41d.png differ diff --git a/emojis/png/160/emoji_u1f41e.png b/emojis/png/160/emoji_u1f41e.png new file mode 100644 index 0000000..4e0a92a Binary files /dev/null and b/emojis/png/160/emoji_u1f41e.png differ diff --git a/emojis/png/160/emoji_u1f41f.png b/emojis/png/160/emoji_u1f41f.png new file mode 100644 index 0000000..e251cc9 Binary files /dev/null and b/emojis/png/160/emoji_u1f41f.png differ diff --git a/emojis/png/160/emoji_u1f420.png b/emojis/png/160/emoji_u1f420.png new file mode 100644 index 0000000..f18b529 Binary files /dev/null and b/emojis/png/160/emoji_u1f420.png differ diff --git a/emojis/png/160/emoji_u1f421.png b/emojis/png/160/emoji_u1f421.png new file mode 100644 index 0000000..17f8627 Binary files /dev/null and b/emojis/png/160/emoji_u1f421.png differ diff --git a/emojis/png/160/emoji_u1f422.png b/emojis/png/160/emoji_u1f422.png new file mode 100644 index 0000000..7c1ea72 Binary files /dev/null and b/emojis/png/160/emoji_u1f422.png differ diff --git a/emojis/png/160/emoji_u1f423.png b/emojis/png/160/emoji_u1f423.png new file mode 100644 index 0000000..2fc549c Binary files /dev/null and b/emojis/png/160/emoji_u1f423.png differ diff --git a/emojis/png/160/emoji_u1f424.png b/emojis/png/160/emoji_u1f424.png new file mode 100644 index 0000000..d7f1ebb Binary files /dev/null and b/emojis/png/160/emoji_u1f424.png differ diff --git a/emojis/png/160/emoji_u1f425.png b/emojis/png/160/emoji_u1f425.png new file mode 100644 index 0000000..d6d9725 Binary files /dev/null and b/emojis/png/160/emoji_u1f425.png differ diff --git a/emojis/png/160/emoji_u1f426.png b/emojis/png/160/emoji_u1f426.png new file mode 100644 index 0000000..bb12b32 Binary files /dev/null and b/emojis/png/160/emoji_u1f426.png differ diff --git a/emojis/png/160/emoji_u1f427.png b/emojis/png/160/emoji_u1f427.png new file mode 100644 index 0000000..f62d4aa Binary files /dev/null and b/emojis/png/160/emoji_u1f427.png differ diff --git a/emojis/png/160/emoji_u1f428.png b/emojis/png/160/emoji_u1f428.png new file mode 100644 index 0000000..da52587 Binary files /dev/null and b/emojis/png/160/emoji_u1f428.png differ diff --git a/emojis/png/160/emoji_u1f429.png b/emojis/png/160/emoji_u1f429.png new file mode 100644 index 0000000..9b2d77a Binary files /dev/null and b/emojis/png/160/emoji_u1f429.png differ diff --git a/emojis/png/160/emoji_u1f42a.png b/emojis/png/160/emoji_u1f42a.png new file mode 100644 index 0000000..455277f Binary files /dev/null and b/emojis/png/160/emoji_u1f42a.png differ diff --git a/emojis/png/160/emoji_u1f42b.png b/emojis/png/160/emoji_u1f42b.png new file mode 100644 index 0000000..ef22c15 Binary files /dev/null and b/emojis/png/160/emoji_u1f42b.png differ diff --git a/emojis/png/160/emoji_u1f42c.png b/emojis/png/160/emoji_u1f42c.png new file mode 100644 index 0000000..7e1cf5c Binary files /dev/null and b/emojis/png/160/emoji_u1f42c.png differ diff --git a/emojis/png/160/emoji_u1f42d.png b/emojis/png/160/emoji_u1f42d.png new file mode 100644 index 0000000..1a2ca8c Binary files /dev/null and b/emojis/png/160/emoji_u1f42d.png differ diff --git a/emojis/png/160/emoji_u1f42e.png b/emojis/png/160/emoji_u1f42e.png new file mode 100644 index 0000000..00c686d Binary files /dev/null and b/emojis/png/160/emoji_u1f42e.png differ diff --git a/emojis/png/160/emoji_u1f42f.png b/emojis/png/160/emoji_u1f42f.png new file mode 100644 index 0000000..fea1f07 Binary files /dev/null and b/emojis/png/160/emoji_u1f42f.png differ diff --git a/emojis/png/160/emoji_u1f430.png b/emojis/png/160/emoji_u1f430.png new file mode 100644 index 0000000..a6b24ed Binary files /dev/null and b/emojis/png/160/emoji_u1f430.png differ diff --git a/emojis/png/160/emoji_u1f431.png b/emojis/png/160/emoji_u1f431.png new file mode 100644 index 0000000..b56c80e Binary files /dev/null and b/emojis/png/160/emoji_u1f431.png differ diff --git a/emojis/png/160/emoji_u1f432.png b/emojis/png/160/emoji_u1f432.png new file mode 100644 index 0000000..9b00210 Binary files /dev/null and b/emojis/png/160/emoji_u1f432.png differ diff --git a/emojis/png/160/emoji_u1f433.png b/emojis/png/160/emoji_u1f433.png new file mode 100644 index 0000000..c9f97aa Binary files /dev/null and b/emojis/png/160/emoji_u1f433.png differ diff --git a/emojis/png/160/emoji_u1f434.png b/emojis/png/160/emoji_u1f434.png new file mode 100644 index 0000000..f809e57 Binary files /dev/null and b/emojis/png/160/emoji_u1f434.png differ diff --git a/emojis/png/160/emoji_u1f435.png b/emojis/png/160/emoji_u1f435.png new file mode 100644 index 0000000..9200bea Binary files /dev/null and b/emojis/png/160/emoji_u1f435.png differ diff --git a/emojis/png/160/emoji_u1f436.png b/emojis/png/160/emoji_u1f436.png new file mode 100644 index 0000000..091c5e3 Binary files /dev/null and b/emojis/png/160/emoji_u1f436.png differ diff --git a/emojis/png/160/emoji_u1f437.png b/emojis/png/160/emoji_u1f437.png new file mode 100644 index 0000000..9c7e480 Binary files /dev/null and b/emojis/png/160/emoji_u1f437.png differ diff --git a/emojis/png/160/emoji_u1f438.png b/emojis/png/160/emoji_u1f438.png new file mode 100644 index 0000000..367504c Binary files /dev/null and b/emojis/png/160/emoji_u1f438.png differ diff --git a/emojis/png/160/emoji_u1f439.png b/emojis/png/160/emoji_u1f439.png new file mode 100644 index 0000000..089e99d Binary files /dev/null and b/emojis/png/160/emoji_u1f439.png differ diff --git a/emojis/png/160/emoji_u1f43a.png b/emojis/png/160/emoji_u1f43a.png new file mode 100644 index 0000000..cd4ed81 Binary files /dev/null and b/emojis/png/160/emoji_u1f43a.png differ diff --git a/emojis/png/160/emoji_u1f43b.png b/emojis/png/160/emoji_u1f43b.png new file mode 100644 index 0000000..851e234 Binary files /dev/null and b/emojis/png/160/emoji_u1f43b.png differ diff --git a/emojis/png/160/emoji_u1f43c.png b/emojis/png/160/emoji_u1f43c.png new file mode 100644 index 0000000..57e0948 Binary files /dev/null and b/emojis/png/160/emoji_u1f43c.png differ diff --git a/emojis/png/160/emoji_u1f43d.png b/emojis/png/160/emoji_u1f43d.png new file mode 100644 index 0000000..3de23d7 Binary files /dev/null and b/emojis/png/160/emoji_u1f43d.png differ diff --git a/emojis/png/160/emoji_u1f43e.png b/emojis/png/160/emoji_u1f43e.png new file mode 100644 index 0000000..4fd6b8e Binary files /dev/null and b/emojis/png/160/emoji_u1f43e.png differ diff --git a/emojis/png/160/emoji_u1f451.png b/emojis/png/160/emoji_u1f451.png new file mode 100644 index 0000000..3385249 Binary files /dev/null and b/emojis/png/160/emoji_u1f451.png differ diff --git a/emojis/png/160/emoji_u1f458.png b/emojis/png/160/emoji_u1f458.png new file mode 100644 index 0000000..3a279de Binary files /dev/null and b/emojis/png/160/emoji_u1f458.png differ diff --git a/emojis/png/160/emoji_u1f462.png b/emojis/png/160/emoji_u1f462.png new file mode 100644 index 0000000..6d62c95 Binary files /dev/null and b/emojis/png/160/emoji_u1f462.png differ diff --git a/emojis/png/160/emoji_u1f484.png b/emojis/png/160/emoji_u1f484.png new file mode 100644 index 0000000..575fc12 Binary files /dev/null and b/emojis/png/160/emoji_u1f484.png differ diff --git a/emojis/png/160/emoji_u1f489.png b/emojis/png/160/emoji_u1f489.png new file mode 100644 index 0000000..e36f2fa Binary files /dev/null and b/emojis/png/160/emoji_u1f489.png differ diff --git a/emojis/png/160/emoji_u1f48a.png b/emojis/png/160/emoji_u1f48a.png new file mode 100644 index 0000000..d81bcd2 Binary files /dev/null and b/emojis/png/160/emoji_u1f48a.png differ diff --git a/emojis/png/160/emoji_u1f48d.png b/emojis/png/160/emoji_u1f48d.png new file mode 100644 index 0000000..41b9a86 Binary files /dev/null and b/emojis/png/160/emoji_u1f48d.png differ diff --git a/emojis/png/160/emoji_u1f48e.png b/emojis/png/160/emoji_u1f48e.png new file mode 100644 index 0000000..ad2ca8b Binary files /dev/null and b/emojis/png/160/emoji_u1f48e.png differ diff --git a/emojis/png/160/emoji_u1f490.png b/emojis/png/160/emoji_u1f490.png new file mode 100644 index 0000000..b769bb2 Binary files /dev/null and b/emojis/png/160/emoji_u1f490.png differ diff --git a/emojis/png/160/emoji_u1f4a1.png b/emojis/png/160/emoji_u1f4a1.png new file mode 100644 index 0000000..9436d49 Binary files /dev/null and b/emojis/png/160/emoji_u1f4a1.png differ diff --git a/emojis/png/160/emoji_u1f4ae.png b/emojis/png/160/emoji_u1f4ae.png new file mode 100644 index 0000000..6279fd5 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ae.png differ diff --git a/emojis/png/160/emoji_u1f4b0.png b/emojis/png/160/emoji_u1f4b0.png new file mode 100644 index 0000000..d21e836 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b0.png differ diff --git a/emojis/png/160/emoji_u1f4b3.png b/emojis/png/160/emoji_u1f4b3.png new file mode 100644 index 0000000..a6e7df9 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b3.png differ diff --git a/emojis/png/160/emoji_u1f4b4.png b/emojis/png/160/emoji_u1f4b4.png new file mode 100644 index 0000000..4a9642f Binary files /dev/null and b/emojis/png/160/emoji_u1f4b4.png differ diff --git a/emojis/png/160/emoji_u1f4b5.png b/emojis/png/160/emoji_u1f4b5.png new file mode 100644 index 0000000..8c11af7 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b5.png differ diff --git a/emojis/png/160/emoji_u1f4b6.png b/emojis/png/160/emoji_u1f4b6.png new file mode 100644 index 0000000..97309a1 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b6.png differ diff --git a/emojis/png/160/emoji_u1f4b7.png b/emojis/png/160/emoji_u1f4b7.png new file mode 100644 index 0000000..a645f93 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b7.png differ diff --git a/emojis/png/160/emoji_u1f4b8.png b/emojis/png/160/emoji_u1f4b8.png new file mode 100644 index 0000000..7b2f6d7 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b8.png differ diff --git a/emojis/png/160/emoji_u1f4b9.png b/emojis/png/160/emoji_u1f4b9.png new file mode 100644 index 0000000..27c71b4 Binary files /dev/null and b/emojis/png/160/emoji_u1f4b9.png differ diff --git a/emojis/png/160/emoji_u1f4bb.png b/emojis/png/160/emoji_u1f4bb.png new file mode 100644 index 0000000..5f38d97 Binary files /dev/null and b/emojis/png/160/emoji_u1f4bb.png differ diff --git a/emojis/png/160/emoji_u1f4bc.png b/emojis/png/160/emoji_u1f4bc.png new file mode 100644 index 0000000..2756f7b Binary files /dev/null and b/emojis/png/160/emoji_u1f4bc.png differ diff --git a/emojis/png/160/emoji_u1f4bd.png b/emojis/png/160/emoji_u1f4bd.png new file mode 100644 index 0000000..0b9ba6d Binary files /dev/null and b/emojis/png/160/emoji_u1f4bd.png differ diff --git a/emojis/png/160/emoji_u1f4be.png b/emojis/png/160/emoji_u1f4be.png new file mode 100644 index 0000000..9c727cf Binary files /dev/null and b/emojis/png/160/emoji_u1f4be.png differ diff --git a/emojis/png/160/emoji_u1f4bf.png b/emojis/png/160/emoji_u1f4bf.png new file mode 100644 index 0000000..6fb03ba Binary files /dev/null and b/emojis/png/160/emoji_u1f4bf.png differ diff --git a/emojis/png/160/emoji_u1f4c0.png b/emojis/png/160/emoji_u1f4c0.png new file mode 100644 index 0000000..d414f3e Binary files /dev/null and b/emojis/png/160/emoji_u1f4c0.png differ diff --git a/emojis/png/160/emoji_u1f4c1.png b/emojis/png/160/emoji_u1f4c1.png new file mode 100644 index 0000000..31f99e4 Binary files /dev/null and b/emojis/png/160/emoji_u1f4c1.png differ diff --git a/emojis/png/160/emoji_u1f4c2.png b/emojis/png/160/emoji_u1f4c2.png new file mode 100644 index 0000000..d9563d1 Binary files /dev/null and b/emojis/png/160/emoji_u1f4c2.png differ diff --git a/emojis/png/160/emoji_u1f4c3.png b/emojis/png/160/emoji_u1f4c3.png new file mode 100644 index 0000000..bf11b1d Binary files /dev/null and b/emojis/png/160/emoji_u1f4c3.png differ diff --git a/emojis/png/160/emoji_u1f4c4.png b/emojis/png/160/emoji_u1f4c4.png new file mode 100644 index 0000000..e662239 Binary files /dev/null and b/emojis/png/160/emoji_u1f4c4.png differ diff --git a/emojis/png/160/emoji_u1f4c5.png b/emojis/png/160/emoji_u1f4c5.png new file mode 100644 index 0000000..ed023cb Binary files /dev/null and b/emojis/png/160/emoji_u1f4c5.png differ diff --git a/emojis/png/160/emoji_u1f4c6.png b/emojis/png/160/emoji_u1f4c6.png new file mode 100644 index 0000000..d59abf9 Binary files /dev/null and b/emojis/png/160/emoji_u1f4c6.png differ diff --git a/emojis/png/160/emoji_u1f4c7.png b/emojis/png/160/emoji_u1f4c7.png new file mode 100644 index 0000000..8fdce9c Binary files /dev/null and b/emojis/png/160/emoji_u1f4c7.png differ diff --git a/emojis/png/160/emoji_u1f4c8.png b/emojis/png/160/emoji_u1f4c8.png new file mode 100644 index 0000000..5226acf Binary files /dev/null and b/emojis/png/160/emoji_u1f4c8.png differ diff --git a/emojis/png/160/emoji_u1f4c9.png b/emojis/png/160/emoji_u1f4c9.png new file mode 100644 index 0000000..50dca5b Binary files /dev/null and b/emojis/png/160/emoji_u1f4c9.png differ diff --git a/emojis/png/160/emoji_u1f4ca.png b/emojis/png/160/emoji_u1f4ca.png new file mode 100644 index 0000000..e678f3f Binary files /dev/null and b/emojis/png/160/emoji_u1f4ca.png differ diff --git a/emojis/png/160/emoji_u1f4cb.png b/emojis/png/160/emoji_u1f4cb.png new file mode 100644 index 0000000..36d4424 Binary files /dev/null and b/emojis/png/160/emoji_u1f4cb.png differ diff --git a/emojis/png/160/emoji_u1f4cc.png b/emojis/png/160/emoji_u1f4cc.png new file mode 100644 index 0000000..a20ca93 Binary files /dev/null and b/emojis/png/160/emoji_u1f4cc.png differ diff --git a/emojis/png/160/emoji_u1f4cd.png b/emojis/png/160/emoji_u1f4cd.png new file mode 100644 index 0000000..69915c2 Binary files /dev/null and b/emojis/png/160/emoji_u1f4cd.png differ diff --git a/emojis/png/160/emoji_u1f4ce.png b/emojis/png/160/emoji_u1f4ce.png new file mode 100644 index 0000000..ef5a2a8 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ce.png differ diff --git a/emojis/png/160/emoji_u1f4cf.png b/emojis/png/160/emoji_u1f4cf.png new file mode 100644 index 0000000..92014fa Binary files /dev/null and b/emojis/png/160/emoji_u1f4cf.png differ diff --git a/emojis/png/160/emoji_u1f4d0.png b/emojis/png/160/emoji_u1f4d0.png new file mode 100644 index 0000000..36c5c08 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d0.png differ diff --git a/emojis/png/160/emoji_u1f4d1.png b/emojis/png/160/emoji_u1f4d1.png new file mode 100644 index 0000000..df23b42 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d1.png differ diff --git a/emojis/png/160/emoji_u1f4d2.png b/emojis/png/160/emoji_u1f4d2.png new file mode 100644 index 0000000..2ceb124 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d2.png differ diff --git a/emojis/png/160/emoji_u1f4d3.png b/emojis/png/160/emoji_u1f4d3.png new file mode 100644 index 0000000..4b39425 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d3.png differ diff --git a/emojis/png/160/emoji_u1f4d4.png b/emojis/png/160/emoji_u1f4d4.png new file mode 100644 index 0000000..5436b26 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d4.png differ diff --git a/emojis/png/160/emoji_u1f4d5.png b/emojis/png/160/emoji_u1f4d5.png new file mode 100644 index 0000000..b7e8091 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d5.png differ diff --git a/emojis/png/160/emoji_u1f4d6.png b/emojis/png/160/emoji_u1f4d6.png new file mode 100644 index 0000000..2c6186c Binary files /dev/null and b/emojis/png/160/emoji_u1f4d6.png differ diff --git a/emojis/png/160/emoji_u1f4d7.png b/emojis/png/160/emoji_u1f4d7.png new file mode 100644 index 0000000..f3934db Binary files /dev/null and b/emojis/png/160/emoji_u1f4d7.png differ diff --git a/emojis/png/160/emoji_u1f4d8.png b/emojis/png/160/emoji_u1f4d8.png new file mode 100644 index 0000000..9d48b2d Binary files /dev/null and b/emojis/png/160/emoji_u1f4d8.png differ diff --git a/emojis/png/160/emoji_u1f4d9.png b/emojis/png/160/emoji_u1f4d9.png new file mode 100644 index 0000000..684bd92 Binary files /dev/null and b/emojis/png/160/emoji_u1f4d9.png differ diff --git a/emojis/png/160/emoji_u1f4da.png b/emojis/png/160/emoji_u1f4da.png new file mode 100644 index 0000000..95ba0b7 Binary files /dev/null and b/emojis/png/160/emoji_u1f4da.png differ diff --git a/emojis/png/160/emoji_u1f4dc.png b/emojis/png/160/emoji_u1f4dc.png new file mode 100644 index 0000000..473cc54 Binary files /dev/null and b/emojis/png/160/emoji_u1f4dc.png differ diff --git a/emojis/png/160/emoji_u1f4dd.png b/emojis/png/160/emoji_u1f4dd.png new file mode 100644 index 0000000..402b1a5 Binary files /dev/null and b/emojis/png/160/emoji_u1f4dd.png differ diff --git a/emojis/png/160/emoji_u1f4de.png b/emojis/png/160/emoji_u1f4de.png new file mode 100644 index 0000000..8010eda Binary files /dev/null and b/emojis/png/160/emoji_u1f4de.png differ diff --git a/emojis/png/160/emoji_u1f4df.png b/emojis/png/160/emoji_u1f4df.png new file mode 100644 index 0000000..8b2f83d Binary files /dev/null and b/emojis/png/160/emoji_u1f4df.png differ diff --git a/emojis/png/160/emoji_u1f4e0.png b/emojis/png/160/emoji_u1f4e0.png new file mode 100644 index 0000000..1d3e786 Binary files /dev/null and b/emojis/png/160/emoji_u1f4e0.png differ diff --git a/emojis/png/160/emoji_u1f4e1.png b/emojis/png/160/emoji_u1f4e1.png new file mode 100644 index 0000000..105f25d Binary files /dev/null and b/emojis/png/160/emoji_u1f4e1.png differ diff --git a/emojis/png/160/emoji_u1f4e2.png b/emojis/png/160/emoji_u1f4e2.png new file mode 100644 index 0000000..a88194d Binary files /dev/null and b/emojis/png/160/emoji_u1f4e2.png differ diff --git a/emojis/png/160/emoji_u1f4e3.png b/emojis/png/160/emoji_u1f4e3.png new file mode 100644 index 0000000..bca60cb Binary files /dev/null and b/emojis/png/160/emoji_u1f4e3.png differ diff --git a/emojis/png/160/emoji_u1f4e4.png b/emojis/png/160/emoji_u1f4e4.png new file mode 100644 index 0000000..e15d90c Binary files /dev/null and b/emojis/png/160/emoji_u1f4e4.png differ diff --git a/emojis/png/160/emoji_u1f4e5.png b/emojis/png/160/emoji_u1f4e5.png new file mode 100644 index 0000000..a41c6ca Binary files /dev/null and b/emojis/png/160/emoji_u1f4e5.png differ diff --git a/emojis/png/160/emoji_u1f4e6.png b/emojis/png/160/emoji_u1f4e6.png new file mode 100644 index 0000000..32908ac Binary files /dev/null and b/emojis/png/160/emoji_u1f4e6.png differ diff --git a/emojis/png/160/emoji_u1f4e7.png b/emojis/png/160/emoji_u1f4e7.png new file mode 100644 index 0000000..a5ea87c Binary files /dev/null and b/emojis/png/160/emoji_u1f4e7.png differ diff --git a/emojis/png/160/emoji_u1f4e8.png b/emojis/png/160/emoji_u1f4e8.png new file mode 100644 index 0000000..af8f629 Binary files /dev/null and b/emojis/png/160/emoji_u1f4e8.png differ diff --git a/emojis/png/160/emoji_u1f4e9.png b/emojis/png/160/emoji_u1f4e9.png new file mode 100644 index 0000000..5470887 Binary files /dev/null and b/emojis/png/160/emoji_u1f4e9.png differ diff --git a/emojis/png/160/emoji_u1f4ea.png b/emojis/png/160/emoji_u1f4ea.png new file mode 100644 index 0000000..b153a16 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ea.png differ diff --git a/emojis/png/160/emoji_u1f4eb.png b/emojis/png/160/emoji_u1f4eb.png new file mode 100644 index 0000000..1127dcb Binary files /dev/null and b/emojis/png/160/emoji_u1f4eb.png differ diff --git a/emojis/png/160/emoji_u1f4ec.png b/emojis/png/160/emoji_u1f4ec.png new file mode 100644 index 0000000..e3a8a77 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ec.png differ diff --git a/emojis/png/160/emoji_u1f4ed.png b/emojis/png/160/emoji_u1f4ed.png new file mode 100644 index 0000000..ba0c551 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ed.png differ diff --git a/emojis/png/160/emoji_u1f4ee.png b/emojis/png/160/emoji_u1f4ee.png new file mode 100644 index 0000000..0e86ef2 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ee.png differ diff --git a/emojis/png/160/emoji_u1f4ef.png b/emojis/png/160/emoji_u1f4ef.png new file mode 100644 index 0000000..202b27d Binary files /dev/null and b/emojis/png/160/emoji_u1f4ef.png differ diff --git a/emojis/png/160/emoji_u1f4f0.png b/emojis/png/160/emoji_u1f4f0.png new file mode 100644 index 0000000..2665264 Binary files /dev/null and b/emojis/png/160/emoji_u1f4f0.png differ diff --git a/emojis/png/160/emoji_u1f4f1.png b/emojis/png/160/emoji_u1f4f1.png new file mode 100644 index 0000000..b7ade97 Binary files /dev/null and b/emojis/png/160/emoji_u1f4f1.png differ diff --git a/emojis/png/160/emoji_u1f4f2.png b/emojis/png/160/emoji_u1f4f2.png new file mode 100644 index 0000000..e20751e Binary files /dev/null and b/emojis/png/160/emoji_u1f4f2.png differ diff --git a/emojis/png/160/emoji_u1f4f7.png b/emojis/png/160/emoji_u1f4f7.png new file mode 100644 index 0000000..e6abe12 Binary files /dev/null and b/emojis/png/160/emoji_u1f4f7.png differ diff --git a/emojis/png/160/emoji_u1f4f8.png b/emojis/png/160/emoji_u1f4f8.png new file mode 100644 index 0000000..6d83449 Binary files /dev/null and b/emojis/png/160/emoji_u1f4f8.png differ diff --git a/emojis/png/160/emoji_u1f4f9.png b/emojis/png/160/emoji_u1f4f9.png new file mode 100644 index 0000000..d0d16d4 Binary files /dev/null and b/emojis/png/160/emoji_u1f4f9.png differ diff --git a/emojis/png/160/emoji_u1f4fa.png b/emojis/png/160/emoji_u1f4fa.png new file mode 100644 index 0000000..66bf74f Binary files /dev/null and b/emojis/png/160/emoji_u1f4fa.png differ diff --git a/emojis/png/160/emoji_u1f4fb.png b/emojis/png/160/emoji_u1f4fb.png new file mode 100644 index 0000000..a21c98f Binary files /dev/null and b/emojis/png/160/emoji_u1f4fb.png differ diff --git a/emojis/png/160/emoji_u1f4fc.png b/emojis/png/160/emoji_u1f4fc.png new file mode 100644 index 0000000..cf622b8 Binary files /dev/null and b/emojis/png/160/emoji_u1f4fc.png differ diff --git a/emojis/png/160/emoji_u1f4ff.png b/emojis/png/160/emoji_u1f4ff.png new file mode 100644 index 0000000..52c6e68 Binary files /dev/null and b/emojis/png/160/emoji_u1f4ff.png differ diff --git a/emojis/png/160/emoji_u1f507.png b/emojis/png/160/emoji_u1f507.png new file mode 100644 index 0000000..b65c141 Binary files /dev/null and b/emojis/png/160/emoji_u1f507.png differ diff --git a/emojis/png/160/emoji_u1f508.png b/emojis/png/160/emoji_u1f508.png new file mode 100644 index 0000000..a4d8fd8 Binary files /dev/null and b/emojis/png/160/emoji_u1f508.png differ diff --git a/emojis/png/160/emoji_u1f509.png b/emojis/png/160/emoji_u1f509.png new file mode 100644 index 0000000..3daec38 Binary files /dev/null and b/emojis/png/160/emoji_u1f509.png differ diff --git a/emojis/png/160/emoji_u1f50a.png b/emojis/png/160/emoji_u1f50a.png new file mode 100644 index 0000000..20a891b Binary files /dev/null and b/emojis/png/160/emoji_u1f50a.png differ diff --git a/emojis/png/160/emoji_u1f50b.png b/emojis/png/160/emoji_u1f50b.png new file mode 100644 index 0000000..4e519ef Binary files /dev/null and b/emojis/png/160/emoji_u1f50b.png differ diff --git a/emojis/png/160/emoji_u1f50c.png b/emojis/png/160/emoji_u1f50c.png new file mode 100644 index 0000000..96f9cef Binary files /dev/null and b/emojis/png/160/emoji_u1f50c.png differ diff --git a/emojis/png/160/emoji_u1f50d.png b/emojis/png/160/emoji_u1f50d.png new file mode 100644 index 0000000..c8719c1 Binary files /dev/null and b/emojis/png/160/emoji_u1f50d.png differ diff --git a/emojis/png/160/emoji_u1f50e.png b/emojis/png/160/emoji_u1f50e.png new file mode 100644 index 0000000..b688d52 Binary files /dev/null and b/emojis/png/160/emoji_u1f50e.png differ diff --git a/emojis/png/160/emoji_u1f50f.png b/emojis/png/160/emoji_u1f50f.png new file mode 100644 index 0000000..4809448 Binary files /dev/null and b/emojis/png/160/emoji_u1f50f.png differ diff --git a/emojis/png/160/emoji_u1f510.png b/emojis/png/160/emoji_u1f510.png new file mode 100644 index 0000000..c2981be Binary files /dev/null and b/emojis/png/160/emoji_u1f510.png differ diff --git a/emojis/png/160/emoji_u1f511.png b/emojis/png/160/emoji_u1f511.png new file mode 100644 index 0000000..e0c5786 Binary files /dev/null and b/emojis/png/160/emoji_u1f511.png differ diff --git a/emojis/png/160/emoji_u1f512.png b/emojis/png/160/emoji_u1f512.png new file mode 100644 index 0000000..88f2de8 Binary files /dev/null and b/emojis/png/160/emoji_u1f512.png differ diff --git a/emojis/png/160/emoji_u1f513.png b/emojis/png/160/emoji_u1f513.png new file mode 100644 index 0000000..434d4fc Binary files /dev/null and b/emojis/png/160/emoji_u1f513.png differ diff --git a/emojis/png/160/emoji_u1f514.png b/emojis/png/160/emoji_u1f514.png new file mode 100644 index 0000000..8137ccf Binary files /dev/null and b/emojis/png/160/emoji_u1f514.png differ diff --git a/emojis/png/160/emoji_u1f515.png b/emojis/png/160/emoji_u1f515.png new file mode 100644 index 0000000..3375a64 Binary files /dev/null and b/emojis/png/160/emoji_u1f515.png differ diff --git a/emojis/png/160/emoji_u1f516.png b/emojis/png/160/emoji_u1f516.png new file mode 100644 index 0000000..7f0b0a9 Binary files /dev/null and b/emojis/png/160/emoji_u1f516.png differ diff --git a/emojis/png/160/emoji_u1f517.png b/emojis/png/160/emoji_u1f517.png new file mode 100644 index 0000000..f4ae334 Binary files /dev/null and b/emojis/png/160/emoji_u1f517.png differ diff --git a/emojis/png/160/emoji_u1f526.png b/emojis/png/160/emoji_u1f526.png new file mode 100644 index 0000000..c6c01e4 Binary files /dev/null and b/emojis/png/160/emoji_u1f526.png differ diff --git a/emojis/png/160/emoji_u1f527.png b/emojis/png/160/emoji_u1f527.png new file mode 100644 index 0000000..8bad64c Binary files /dev/null and b/emojis/png/160/emoji_u1f527.png differ diff --git a/emojis/png/160/emoji_u1f528.png b/emojis/png/160/emoji_u1f528.png new file mode 100644 index 0000000..ed62826 Binary files /dev/null and b/emojis/png/160/emoji_u1f528.png differ diff --git a/emojis/png/160/emoji_u1f529.png b/emojis/png/160/emoji_u1f529.png new file mode 100644 index 0000000..8a1f1ad Binary files /dev/null and b/emojis/png/160/emoji_u1f529.png differ diff --git a/emojis/png/160/emoji_u1f52a.png b/emojis/png/160/emoji_u1f52a.png new file mode 100644 index 0000000..fb47a0e Binary files /dev/null and b/emojis/png/160/emoji_u1f52a.png differ diff --git a/emojis/png/160/emoji_u1f52b.png b/emojis/png/160/emoji_u1f52b.png new file mode 100644 index 0000000..defac09 Binary files /dev/null and b/emojis/png/160/emoji_u1f52b.png differ diff --git a/emojis/png/160/emoji_u1f52c.png b/emojis/png/160/emoji_u1f52c.png new file mode 100644 index 0000000..75e91a2 Binary files /dev/null and b/emojis/png/160/emoji_u1f52c.png differ diff --git a/emojis/png/160/emoji_u1f52d.png b/emojis/png/160/emoji_u1f52d.png new file mode 100644 index 0000000..62d7c72 Binary files /dev/null and b/emojis/png/160/emoji_u1f52d.png differ diff --git a/emojis/png/160/emoji_u1f52e.png b/emojis/png/160/emoji_u1f52e.png new file mode 100644 index 0000000..9913aa8 Binary files /dev/null and b/emojis/png/160/emoji_u1f52e.png differ diff --git a/emojis/png/160/emoji_u1f5ff.png b/emojis/png/160/emoji_u1f5ff.png new file mode 100644 index 0000000..c9a83c3 Binary files /dev/null and b/emojis/png/160/emoji_u1f5ff.png differ diff --git a/emojis/png/160/emoji_u1f6aa.png b/emojis/png/160/emoji_u1f6aa.png new file mode 100644 index 0000000..2fc36eb Binary files /dev/null and b/emojis/png/160/emoji_u1f6aa.png differ diff --git a/emojis/png/160/emoji_u1f6ac.png b/emojis/png/160/emoji_u1f6ac.png new file mode 100644 index 0000000..40add9e Binary files /dev/null and b/emojis/png/160/emoji_u1f6ac.png differ diff --git a/emojis/png/160/emoji_u1f6bd.png b/emojis/png/160/emoji_u1f6bd.png new file mode 100644 index 0000000..7dbe88a Binary files /dev/null and b/emojis/png/160/emoji_u1f6bd.png differ diff --git a/emojis/png/160/emoji_u1f6bf.png b/emojis/png/160/emoji_u1f6bf.png new file mode 100644 index 0000000..059395a Binary files /dev/null and b/emojis/png/160/emoji_u1f6bf.png differ diff --git a/emojis/png/160/emoji_u1f6c1.png b/emojis/png/160/emoji_u1f6c1.png new file mode 100644 index 0000000..5068a11 Binary files /dev/null and b/emojis/png/160/emoji_u1f6c1.png differ diff --git a/emojis/png/160/emoji_u1f6d2.png b/emojis/png/160/emoji_u1f6d2.png new file mode 100644 index 0000000..5f2dd5c Binary files /dev/null and b/emojis/png/160/emoji_u1f6d2.png differ diff --git a/emojis/png/160/emoji_u1f6d7.png b/emojis/png/160/emoji_u1f6d7.png new file mode 100644 index 0000000..6d39ea8 Binary files /dev/null and b/emojis/png/160/emoji_u1f6d7.png differ diff --git a/emojis/png/160/emoji_u1f6f7.png b/emojis/png/160/emoji_u1f6f7.png new file mode 100644 index 0000000..d775a7c Binary files /dev/null and b/emojis/png/160/emoji_u1f6f7.png differ diff --git a/emojis/png/160/emoji_u1f93f.png b/emojis/png/160/emoji_u1f93f.png new file mode 100644 index 0000000..b594c56 Binary files /dev/null and b/emojis/png/160/emoji_u1f93f.png differ diff --git a/emojis/png/160/emoji_u1f940.png b/emojis/png/160/emoji_u1f940.png new file mode 100644 index 0000000..738627e Binary files /dev/null and b/emojis/png/160/emoji_u1f940.png differ diff --git a/emojis/png/160/emoji_u1f941.png b/emojis/png/160/emoji_u1f941.png new file mode 100644 index 0000000..d32b47d Binary files /dev/null and b/emojis/png/160/emoji_u1f941.png differ diff --git a/emojis/png/160/emoji_u1f942.png b/emojis/png/160/emoji_u1f942.png new file mode 100644 index 0000000..9e1c54d Binary files /dev/null and b/emojis/png/160/emoji_u1f942.png differ diff --git a/emojis/png/160/emoji_u1f943.png b/emojis/png/160/emoji_u1f943.png new file mode 100644 index 0000000..ad118bd Binary files /dev/null and b/emojis/png/160/emoji_u1f943.png differ diff --git a/emojis/png/160/emoji_u1f944.png b/emojis/png/160/emoji_u1f944.png new file mode 100644 index 0000000..e2fec17 Binary files /dev/null and b/emojis/png/160/emoji_u1f944.png differ diff --git a/emojis/png/160/emoji_u1f945.png b/emojis/png/160/emoji_u1f945.png new file mode 100644 index 0000000..aec70df Binary files /dev/null and b/emojis/png/160/emoji_u1f945.png differ diff --git a/emojis/png/160/emoji_u1f947.png b/emojis/png/160/emoji_u1f947.png new file mode 100644 index 0000000..6ce0f65 Binary files /dev/null and b/emojis/png/160/emoji_u1f947.png differ diff --git a/emojis/png/160/emoji_u1f948.png b/emojis/png/160/emoji_u1f948.png new file mode 100644 index 0000000..a35e9a1 Binary files /dev/null and b/emojis/png/160/emoji_u1f948.png differ diff --git a/emojis/png/160/emoji_u1f949.png b/emojis/png/160/emoji_u1f949.png new file mode 100644 index 0000000..a79b592 Binary files /dev/null and b/emojis/png/160/emoji_u1f949.png differ diff --git a/emojis/png/160/emoji_u1f94a.png b/emojis/png/160/emoji_u1f94a.png new file mode 100644 index 0000000..4efd927 Binary files /dev/null and b/emojis/png/160/emoji_u1f94a.png differ diff --git a/emojis/png/160/emoji_u1f94b.png b/emojis/png/160/emoji_u1f94b.png new file mode 100644 index 0000000..b976636 Binary files /dev/null and b/emojis/png/160/emoji_u1f94b.png differ diff --git a/emojis/png/160/emoji_u1f94c.png b/emojis/png/160/emoji_u1f94c.png new file mode 100644 index 0000000..60b6129 Binary files /dev/null and b/emojis/png/160/emoji_u1f94c.png differ diff --git a/emojis/png/160/emoji_u1f94d.png b/emojis/png/160/emoji_u1f94d.png new file mode 100644 index 0000000..019bde4 Binary files /dev/null and b/emojis/png/160/emoji_u1f94d.png differ diff --git a/emojis/png/160/emoji_u1f94e.png b/emojis/png/160/emoji_u1f94e.png new file mode 100644 index 0000000..f20d598 Binary files /dev/null and b/emojis/png/160/emoji_u1f94e.png differ diff --git a/emojis/png/160/emoji_u1f94f.png b/emojis/png/160/emoji_u1f94f.png new file mode 100644 index 0000000..02ce485 Binary files /dev/null and b/emojis/png/160/emoji_u1f94f.png differ diff --git a/emojis/png/160/emoji_u1f950.png b/emojis/png/160/emoji_u1f950.png new file mode 100644 index 0000000..dbc9f0c Binary files /dev/null and b/emojis/png/160/emoji_u1f950.png differ diff --git a/emojis/png/160/emoji_u1f951.png b/emojis/png/160/emoji_u1f951.png new file mode 100644 index 0000000..4a09e99 Binary files /dev/null and b/emojis/png/160/emoji_u1f951.png differ diff --git a/emojis/png/160/emoji_u1f952.png b/emojis/png/160/emoji_u1f952.png new file mode 100644 index 0000000..277c2e0 Binary files /dev/null and b/emojis/png/160/emoji_u1f952.png differ diff --git a/emojis/png/160/emoji_u1f953.png b/emojis/png/160/emoji_u1f953.png new file mode 100644 index 0000000..b993287 Binary files /dev/null and b/emojis/png/160/emoji_u1f953.png differ diff --git a/emojis/png/160/emoji_u1f954.png b/emojis/png/160/emoji_u1f954.png new file mode 100644 index 0000000..5772d7e Binary files /dev/null and b/emojis/png/160/emoji_u1f954.png differ diff --git a/emojis/png/160/emoji_u1f955.png b/emojis/png/160/emoji_u1f955.png new file mode 100644 index 0000000..48190ef Binary files /dev/null and b/emojis/png/160/emoji_u1f955.png differ diff --git a/emojis/png/160/emoji_u1f956.png b/emojis/png/160/emoji_u1f956.png new file mode 100644 index 0000000..3eae4a8 Binary files /dev/null and b/emojis/png/160/emoji_u1f956.png differ diff --git a/emojis/png/160/emoji_u1f957.png b/emojis/png/160/emoji_u1f957.png new file mode 100644 index 0000000..169cc33 Binary files /dev/null and b/emojis/png/160/emoji_u1f957.png differ diff --git a/emojis/png/160/emoji_u1f958.png b/emojis/png/160/emoji_u1f958.png new file mode 100644 index 0000000..77571ea Binary files /dev/null and b/emojis/png/160/emoji_u1f958.png differ diff --git a/emojis/png/160/emoji_u1f959.png b/emojis/png/160/emoji_u1f959.png new file mode 100644 index 0000000..b97dd41 Binary files /dev/null and b/emojis/png/160/emoji_u1f959.png differ diff --git a/emojis/png/160/emoji_u1f95a.png b/emojis/png/160/emoji_u1f95a.png new file mode 100644 index 0000000..f5cc977 Binary files /dev/null and b/emojis/png/160/emoji_u1f95a.png differ diff --git a/emojis/png/160/emoji_u1f95b.png b/emojis/png/160/emoji_u1f95b.png new file mode 100644 index 0000000..db2ec9c Binary files /dev/null and b/emojis/png/160/emoji_u1f95b.png differ diff --git a/emojis/png/160/emoji_u1f95c.png b/emojis/png/160/emoji_u1f95c.png new file mode 100644 index 0000000..17d2888 Binary files /dev/null and b/emojis/png/160/emoji_u1f95c.png differ diff --git a/emojis/png/160/emoji_u1f95d.png b/emojis/png/160/emoji_u1f95d.png new file mode 100644 index 0000000..9420ae8 Binary files /dev/null and b/emojis/png/160/emoji_u1f95d.png differ diff --git a/emojis/png/160/emoji_u1f95e.png b/emojis/png/160/emoji_u1f95e.png new file mode 100644 index 0000000..408dce6 Binary files /dev/null and b/emojis/png/160/emoji_u1f95e.png differ diff --git a/emojis/png/160/emoji_u1f95f.png b/emojis/png/160/emoji_u1f95f.png new file mode 100644 index 0000000..7255057 Binary files /dev/null and b/emojis/png/160/emoji_u1f95f.png differ diff --git a/emojis/png/160/emoji_u1f960.png b/emojis/png/160/emoji_u1f960.png new file mode 100644 index 0000000..abcf111 Binary files /dev/null and b/emojis/png/160/emoji_u1f960.png differ diff --git a/emojis/png/160/emoji_u1f961.png b/emojis/png/160/emoji_u1f961.png new file mode 100644 index 0000000..281ae7a Binary files /dev/null and b/emojis/png/160/emoji_u1f961.png differ diff --git a/emojis/png/160/emoji_u1f962.png b/emojis/png/160/emoji_u1f962.png new file mode 100644 index 0000000..f488c4d Binary files /dev/null and b/emojis/png/160/emoji_u1f962.png differ diff --git a/emojis/png/160/emoji_u1f963.png b/emojis/png/160/emoji_u1f963.png new file mode 100644 index 0000000..10804c4 Binary files /dev/null and b/emojis/png/160/emoji_u1f963.png differ diff --git a/emojis/png/160/emoji_u1f964.png b/emojis/png/160/emoji_u1f964.png new file mode 100644 index 0000000..55d6edd Binary files /dev/null and b/emojis/png/160/emoji_u1f964.png differ diff --git a/emojis/png/160/emoji_u1f965.png b/emojis/png/160/emoji_u1f965.png new file mode 100644 index 0000000..bc3bd50 Binary files /dev/null and b/emojis/png/160/emoji_u1f965.png differ diff --git a/emojis/png/160/emoji_u1f966.png b/emojis/png/160/emoji_u1f966.png new file mode 100644 index 0000000..01e095f Binary files /dev/null and b/emojis/png/160/emoji_u1f966.png differ diff --git a/emojis/png/160/emoji_u1f967.png b/emojis/png/160/emoji_u1f967.png new file mode 100644 index 0000000..f4d5f92 Binary files /dev/null and b/emojis/png/160/emoji_u1f967.png differ diff --git a/emojis/png/160/emoji_u1f968.png b/emojis/png/160/emoji_u1f968.png new file mode 100644 index 0000000..6c1bb4e Binary files /dev/null and b/emojis/png/160/emoji_u1f968.png differ diff --git a/emojis/png/160/emoji_u1f969.png b/emojis/png/160/emoji_u1f969.png new file mode 100644 index 0000000..c2b4a94 Binary files /dev/null and b/emojis/png/160/emoji_u1f969.png differ diff --git a/emojis/png/160/emoji_u1f96a.png b/emojis/png/160/emoji_u1f96a.png new file mode 100644 index 0000000..dc1ed16 Binary files /dev/null and b/emojis/png/160/emoji_u1f96a.png differ diff --git a/emojis/png/160/emoji_u1f96b.png b/emojis/png/160/emoji_u1f96b.png new file mode 100644 index 0000000..6180c64 Binary files /dev/null and b/emojis/png/160/emoji_u1f96b.png differ diff --git a/emojis/png/160/emoji_u1f96c.png b/emojis/png/160/emoji_u1f96c.png new file mode 100644 index 0000000..e5dd7f7 Binary files /dev/null and b/emojis/png/160/emoji_u1f96c.png differ diff --git a/emojis/png/160/emoji_u1f96d.png b/emojis/png/160/emoji_u1f96d.png new file mode 100644 index 0000000..18a8570 Binary files /dev/null and b/emojis/png/160/emoji_u1f96d.png differ diff --git a/emojis/png/160/emoji_u1f96e.png b/emojis/png/160/emoji_u1f96e.png new file mode 100644 index 0000000..730c50a Binary files /dev/null and b/emojis/png/160/emoji_u1f96e.png differ diff --git a/emojis/png/160/emoji_u1f96f.png b/emojis/png/160/emoji_u1f96f.png new file mode 100644 index 0000000..fca10ea Binary files /dev/null and b/emojis/png/160/emoji_u1f96f.png differ diff --git a/emojis/png/160/emoji_u1f97c.png b/emojis/png/160/emoji_u1f97c.png new file mode 100644 index 0000000..de38d01 Binary files /dev/null and b/emojis/png/160/emoji_u1f97c.png differ diff --git a/emojis/png/160/emoji_u1f97d.png b/emojis/png/160/emoji_u1f97d.png new file mode 100644 index 0000000..d8161ba Binary files /dev/null and b/emojis/png/160/emoji_u1f97d.png differ diff --git a/emojis/png/160/emoji_u1f980.png b/emojis/png/160/emoji_u1f980.png new file mode 100644 index 0000000..c37246c Binary files /dev/null and b/emojis/png/160/emoji_u1f980.png differ diff --git a/emojis/png/160/emoji_u1f981.png b/emojis/png/160/emoji_u1f981.png new file mode 100644 index 0000000..68603a7 Binary files /dev/null and b/emojis/png/160/emoji_u1f981.png differ diff --git a/emojis/png/160/emoji_u1f982.png b/emojis/png/160/emoji_u1f982.png new file mode 100644 index 0000000..f261b1c Binary files /dev/null and b/emojis/png/160/emoji_u1f982.png differ diff --git a/emojis/png/160/emoji_u1f983.png b/emojis/png/160/emoji_u1f983.png new file mode 100644 index 0000000..307e3dc Binary files /dev/null and b/emojis/png/160/emoji_u1f983.png differ diff --git a/emojis/png/160/emoji_u1f984.png b/emojis/png/160/emoji_u1f984.png new file mode 100644 index 0000000..0eaaf2d Binary files /dev/null and b/emojis/png/160/emoji_u1f984.png differ diff --git a/emojis/png/160/emoji_u1f985.png b/emojis/png/160/emoji_u1f985.png new file mode 100644 index 0000000..b4c6961 Binary files /dev/null and b/emojis/png/160/emoji_u1f985.png differ diff --git a/emojis/png/160/emoji_u1f986.png b/emojis/png/160/emoji_u1f986.png new file mode 100644 index 0000000..2882a48 Binary files /dev/null and b/emojis/png/160/emoji_u1f986.png differ diff --git a/emojis/png/160/emoji_u1f987.png b/emojis/png/160/emoji_u1f987.png new file mode 100644 index 0000000..2ed8ba1 Binary files /dev/null and b/emojis/png/160/emoji_u1f987.png differ diff --git a/emojis/png/160/emoji_u1f988.png b/emojis/png/160/emoji_u1f988.png new file mode 100644 index 0000000..aeabcec Binary files /dev/null and b/emojis/png/160/emoji_u1f988.png differ diff --git a/emojis/png/160/emoji_u1f989.png b/emojis/png/160/emoji_u1f989.png new file mode 100644 index 0000000..823a51c Binary files /dev/null and b/emojis/png/160/emoji_u1f989.png differ diff --git a/emojis/png/160/emoji_u1f98a.png b/emojis/png/160/emoji_u1f98a.png new file mode 100644 index 0000000..02063bb Binary files /dev/null and b/emojis/png/160/emoji_u1f98a.png differ diff --git a/emojis/png/160/emoji_u1f98b.png b/emojis/png/160/emoji_u1f98b.png new file mode 100644 index 0000000..8349ba3 Binary files /dev/null and b/emojis/png/160/emoji_u1f98b.png differ diff --git a/emojis/png/160/emoji_u1f98c.png b/emojis/png/160/emoji_u1f98c.png new file mode 100644 index 0000000..0db9aac Binary files /dev/null and b/emojis/png/160/emoji_u1f98c.png differ diff --git a/emojis/png/160/emoji_u1f98d.png b/emojis/png/160/emoji_u1f98d.png new file mode 100644 index 0000000..b2bfa26 Binary files /dev/null and b/emojis/png/160/emoji_u1f98d.png differ diff --git a/emojis/png/160/emoji_u1f98e.png b/emojis/png/160/emoji_u1f98e.png new file mode 100644 index 0000000..269c1f5 Binary files /dev/null and b/emojis/png/160/emoji_u1f98e.png differ diff --git a/emojis/png/160/emoji_u1f98f.png b/emojis/png/160/emoji_u1f98f.png new file mode 100644 index 0000000..b83dc01 Binary files /dev/null and b/emojis/png/160/emoji_u1f98f.png differ diff --git a/emojis/png/160/emoji_u1f990.png b/emojis/png/160/emoji_u1f990.png new file mode 100644 index 0000000..4afaf2f Binary files /dev/null and b/emojis/png/160/emoji_u1f990.png differ diff --git a/emojis/png/160/emoji_u1f991.png b/emojis/png/160/emoji_u1f991.png new file mode 100644 index 0000000..0829221 Binary files /dev/null and b/emojis/png/160/emoji_u1f991.png differ diff --git a/emojis/png/160/emoji_u1f992.png b/emojis/png/160/emoji_u1f992.png new file mode 100644 index 0000000..4f9674d Binary files /dev/null and b/emojis/png/160/emoji_u1f992.png differ diff --git a/emojis/png/160/emoji_u1f993.png b/emojis/png/160/emoji_u1f993.png new file mode 100644 index 0000000..fb45ac5 Binary files /dev/null and b/emojis/png/160/emoji_u1f993.png differ diff --git a/emojis/png/160/emoji_u1f994.png b/emojis/png/160/emoji_u1f994.png new file mode 100644 index 0000000..c790452 Binary files /dev/null and b/emojis/png/160/emoji_u1f994.png differ diff --git a/emojis/png/160/emoji_u1f995.png b/emojis/png/160/emoji_u1f995.png new file mode 100644 index 0000000..51d596c Binary files /dev/null and b/emojis/png/160/emoji_u1f995.png differ diff --git a/emojis/png/160/emoji_u1f996.png b/emojis/png/160/emoji_u1f996.png new file mode 100644 index 0000000..c1ca599 Binary files /dev/null and b/emojis/png/160/emoji_u1f996.png differ diff --git a/emojis/png/160/emoji_u1f997.png b/emojis/png/160/emoji_u1f997.png new file mode 100644 index 0000000..c86dad1 Binary files /dev/null and b/emojis/png/160/emoji_u1f997.png differ diff --git a/emojis/png/160/emoji_u1f998.png b/emojis/png/160/emoji_u1f998.png new file mode 100644 index 0000000..8f3bf06 Binary files /dev/null and b/emojis/png/160/emoji_u1f998.png differ diff --git a/emojis/png/160/emoji_u1f999.png b/emojis/png/160/emoji_u1f999.png new file mode 100644 index 0000000..c8d181d Binary files /dev/null and b/emojis/png/160/emoji_u1f999.png differ diff --git a/emojis/png/160/emoji_u1f99a.png b/emojis/png/160/emoji_u1f99a.png new file mode 100644 index 0000000..316403a Binary files /dev/null and b/emojis/png/160/emoji_u1f99a.png differ diff --git a/emojis/png/160/emoji_u1f99b.png b/emojis/png/160/emoji_u1f99b.png new file mode 100644 index 0000000..2381dcd Binary files /dev/null and b/emojis/png/160/emoji_u1f99b.png differ diff --git a/emojis/png/160/emoji_u1f99c.png b/emojis/png/160/emoji_u1f99c.png new file mode 100644 index 0000000..7050f0a Binary files /dev/null and b/emojis/png/160/emoji_u1f99c.png differ diff --git a/emojis/png/160/emoji_u1f99d.png b/emojis/png/160/emoji_u1f99d.png new file mode 100644 index 0000000..cdf8cdd Binary files /dev/null and b/emojis/png/160/emoji_u1f99d.png differ diff --git a/emojis/png/160/emoji_u1f99e.png b/emojis/png/160/emoji_u1f99e.png new file mode 100644 index 0000000..d4e7ee1 Binary files /dev/null and b/emojis/png/160/emoji_u1f99e.png differ diff --git a/emojis/png/160/emoji_u1f99f.png b/emojis/png/160/emoji_u1f99f.png new file mode 100644 index 0000000..90a21fb Binary files /dev/null and b/emojis/png/160/emoji_u1f99f.png differ diff --git a/emojis/png/160/emoji_u1f9a0.png b/emojis/png/160/emoji_u1f9a0.png new file mode 100644 index 0000000..6935b40 Binary files /dev/null and b/emojis/png/160/emoji_u1f9a0.png differ diff --git a/emojis/png/160/emoji_u1f9a1.png b/emojis/png/160/emoji_u1f9a1.png new file mode 100644 index 0000000..72a6581 Binary files /dev/null and b/emojis/png/160/emoji_u1f9a1.png differ diff --git a/emojis/png/160/emoji_u1f9a2.png b/emojis/png/160/emoji_u1f9a2.png new file mode 100644 index 0000000..8f66dcd Binary files /dev/null and b/emojis/png/160/emoji_u1f9a2.png differ diff --git a/emojis/png/160/emoji_u1f9a3.png b/emojis/png/160/emoji_u1f9a3.png new file mode 100644 index 0000000..95ff479 Binary files /dev/null and b/emojis/png/160/emoji_u1f9a3.png differ diff --git a/emojis/png/160/emoji_u1f9a4.png b/emojis/png/160/emoji_u1f9a4.png new file mode 100644 index 0000000..a33b71f Binary files /dev/null and b/emojis/png/160/emoji_u1f9a4.png differ diff --git a/emojis/png/160/emoji_u1f9a5.png b/emojis/png/160/emoji_u1f9a5.png new file mode 100644 index 0000000..d152f0e Binary files /dev/null and b/emojis/png/160/emoji_u1f9a5.png differ diff --git a/emojis/png/160/emoji_u1f9a6.png b/emojis/png/160/emoji_u1f9a6.png new file mode 100644 index 0000000..6e8cff1 Binary files /dev/null and b/emojis/png/160/emoji_u1f9a6.png differ diff --git a/emojis/png/160/emoji_u1f9a7.png b/emojis/png/160/emoji_u1f9a7.png new file mode 100644 index 0000000..89d15bd Binary files /dev/null and b/emojis/png/160/emoji_u1f9a7.png differ diff --git a/emojis/png/160/emoji_u1f9a8.png b/emojis/png/160/emoji_u1f9a8.png new file mode 100644 index 0000000..9a241d7 Binary files /dev/null and b/emojis/png/160/emoji_u1f9a8.png differ diff --git a/emojis/png/160/emoji_u1f9a9.png b/emojis/png/160/emoji_u1f9a9.png new file mode 100644 index 0000000..72d2cdc Binary files /dev/null and b/emojis/png/160/emoji_u1f9a9.png differ diff --git a/emojis/png/160/emoji_u1f9aa.png b/emojis/png/160/emoji_u1f9aa.png new file mode 100644 index 0000000..afb8027 Binary files /dev/null and b/emojis/png/160/emoji_u1f9aa.png differ diff --git a/emojis/png/160/emoji_u1f9ab.png b/emojis/png/160/emoji_u1f9ab.png new file mode 100644 index 0000000..3417a74 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ab.png differ diff --git a/emojis/png/160/emoji_u1f9ac.png b/emojis/png/160/emoji_u1f9ac.png new file mode 100644 index 0000000..f7d3515 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ac.png differ diff --git a/emojis/png/160/emoji_u1f9ad.png b/emojis/png/160/emoji_u1f9ad.png new file mode 100644 index 0000000..55aa540 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ad.png differ diff --git a/emojis/png/160/emoji_u1f9ae.png b/emojis/png/160/emoji_u1f9ae.png new file mode 100644 index 0000000..837c019 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ae.png differ diff --git a/emojis/png/160/emoji_u1f9af.png b/emojis/png/160/emoji_u1f9af.png new file mode 100644 index 0000000..d746db7 Binary files /dev/null and b/emojis/png/160/emoji_u1f9af.png differ diff --git a/emojis/png/160/emoji_u1f9ba.png b/emojis/png/160/emoji_u1f9ba.png new file mode 100644 index 0000000..2c71e8c Binary files /dev/null and b/emojis/png/160/emoji_u1f9ba.png differ diff --git a/emojis/png/160/emoji_u1f9c0.png b/emojis/png/160/emoji_u1f9c0.png new file mode 100644 index 0000000..8693838 Binary files /dev/null and b/emojis/png/160/emoji_u1f9c0.png differ diff --git a/emojis/png/160/emoji_u1f9c1.png b/emojis/png/160/emoji_u1f9c1.png new file mode 100644 index 0000000..99addda Binary files /dev/null and b/emojis/png/160/emoji_u1f9c1.png differ diff --git a/emojis/png/160/emoji_u1f9c2.png b/emojis/png/160/emoji_u1f9c2.png new file mode 100644 index 0000000..1504225 Binary files /dev/null and b/emojis/png/160/emoji_u1f9c2.png differ diff --git a/emojis/png/160/emoji_u1f9c3.png b/emojis/png/160/emoji_u1f9c3.png new file mode 100644 index 0000000..5b92565 Binary files /dev/null and b/emojis/png/160/emoji_u1f9c3.png differ diff --git a/emojis/png/160/emoji_u1f9c4.png b/emojis/png/160/emoji_u1f9c4.png new file mode 100644 index 0000000..51a0fbb Binary files /dev/null and b/emojis/png/160/emoji_u1f9c4.png differ diff --git a/emojis/png/160/emoji_u1f9c5.png b/emojis/png/160/emoji_u1f9c5.png new file mode 100644 index 0000000..aa33dfc Binary files /dev/null and b/emojis/png/160/emoji_u1f9c5.png differ diff --git a/emojis/png/160/emoji_u1f9c6.png b/emojis/png/160/emoji_u1f9c6.png new file mode 100644 index 0000000..d2074e4 Binary files /dev/null and b/emojis/png/160/emoji_u1f9c6.png differ diff --git a/emojis/png/160/emoji_u1f9c7.png b/emojis/png/160/emoji_u1f9c7.png new file mode 100644 index 0000000..49495b0 Binary files /dev/null and b/emojis/png/160/emoji_u1f9c7.png differ diff --git a/emojis/png/160/emoji_u1f9c8.png b/emojis/png/160/emoji_u1f9c8.png new file mode 100644 index 0000000..58b32ff Binary files /dev/null and b/emojis/png/160/emoji_u1f9c8.png differ diff --git a/emojis/png/160/emoji_u1f9c9.png b/emojis/png/160/emoji_u1f9c9.png new file mode 100644 index 0000000..d30473d Binary files /dev/null and b/emojis/png/160/emoji_u1f9c9.png differ diff --git a/emojis/png/160/emoji_u1f9ca.png b/emojis/png/160/emoji_u1f9ca.png new file mode 100644 index 0000000..bc63c65 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ca.png differ diff --git a/emojis/png/160/emoji_u1f9cb.png b/emojis/png/160/emoji_u1f9cb.png new file mode 100644 index 0000000..643d21e Binary files /dev/null and b/emojis/png/160/emoji_u1f9cb.png differ diff --git a/emojis/png/160/emoji_u1f9e2.png b/emojis/png/160/emoji_u1f9e2.png new file mode 100644 index 0000000..8eb92ea Binary files /dev/null and b/emojis/png/160/emoji_u1f9e2.png differ diff --git a/emojis/png/160/emoji_u1f9e7.png b/emojis/png/160/emoji_u1f9e7.png new file mode 100644 index 0000000..5bbdf4c Binary files /dev/null and b/emojis/png/160/emoji_u1f9e7.png differ diff --git a/emojis/png/160/emoji_u1f9e8.png b/emojis/png/160/emoji_u1f9e8.png new file mode 100644 index 0000000..ef70f22 Binary files /dev/null and b/emojis/png/160/emoji_u1f9e8.png differ diff --git a/emojis/png/160/emoji_u1f9e9.png b/emojis/png/160/emoji_u1f9e9.png new file mode 100644 index 0000000..76da7ab Binary files /dev/null and b/emojis/png/160/emoji_u1f9e9.png differ diff --git a/emojis/png/160/emoji_u1f9ea.png b/emojis/png/160/emoji_u1f9ea.png new file mode 100644 index 0000000..e630bd5 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ea.png differ diff --git a/emojis/png/160/emoji_u1f9eb.png b/emojis/png/160/emoji_u1f9eb.png new file mode 100644 index 0000000..f173783 Binary files /dev/null and b/emojis/png/160/emoji_u1f9eb.png differ diff --git a/emojis/png/160/emoji_u1f9ec.png b/emojis/png/160/emoji_u1f9ec.png new file mode 100644 index 0000000..2ea330d Binary files /dev/null and b/emojis/png/160/emoji_u1f9ec.png differ diff --git a/emojis/png/160/emoji_u1f9ee.png b/emojis/png/160/emoji_u1f9ee.png new file mode 100644 index 0000000..3d3e1b7 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ee.png differ diff --git a/emojis/png/160/emoji_u1f9ef.png b/emojis/png/160/emoji_u1f9ef.png new file mode 100644 index 0000000..f65a410 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ef.png differ diff --git a/emojis/png/160/emoji_u1f9f0.png b/emojis/png/160/emoji_u1f9f0.png new file mode 100644 index 0000000..983d7a9 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f0.png differ diff --git a/emojis/png/160/emoji_u1f9f2.png b/emojis/png/160/emoji_u1f9f2.png new file mode 100644 index 0000000..fcb15b0 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f2.png differ diff --git a/emojis/png/160/emoji_u1f9f4.png b/emojis/png/160/emoji_u1f9f4.png new file mode 100644 index 0000000..34f78c7 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f4.png differ diff --git a/emojis/png/160/emoji_u1f9f5.png b/emojis/png/160/emoji_u1f9f5.png new file mode 100644 index 0000000..36eaa55 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f5.png differ diff --git a/emojis/png/160/emoji_u1f9f6.png b/emojis/png/160/emoji_u1f9f6.png new file mode 100644 index 0000000..fa45132 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f6.png differ diff --git a/emojis/png/160/emoji_u1f9f7.png b/emojis/png/160/emoji_u1f9f7.png new file mode 100644 index 0000000..538a32d Binary files /dev/null and b/emojis/png/160/emoji_u1f9f7.png differ diff --git a/emojis/png/160/emoji_u1f9f8.png b/emojis/png/160/emoji_u1f9f8.png new file mode 100644 index 0000000..cc73c18 Binary files /dev/null and b/emojis/png/160/emoji_u1f9f8.png differ diff --git a/emojis/png/160/emoji_u1f9f9.png b/emojis/png/160/emoji_u1f9f9.png new file mode 100644 index 0000000..9bc347f Binary files /dev/null and b/emojis/png/160/emoji_u1f9f9.png differ diff --git a/emojis/png/160/emoji_u1f9fa.png b/emojis/png/160/emoji_u1f9fa.png new file mode 100644 index 0000000..dd6f628 Binary files /dev/null and b/emojis/png/160/emoji_u1f9fa.png differ diff --git a/emojis/png/160/emoji_u1f9fb.png b/emojis/png/160/emoji_u1f9fb.png new file mode 100644 index 0000000..272b7a3 Binary files /dev/null and b/emojis/png/160/emoji_u1f9fb.png differ diff --git a/emojis/png/160/emoji_u1f9fc.png b/emojis/png/160/emoji_u1f9fc.png new file mode 100644 index 0000000..d137d52 Binary files /dev/null and b/emojis/png/160/emoji_u1f9fc.png differ diff --git a/emojis/png/160/emoji_u1f9fd.png b/emojis/png/160/emoji_u1f9fd.png new file mode 100644 index 0000000..44496f8 Binary files /dev/null and b/emojis/png/160/emoji_u1f9fd.png differ diff --git a/emojis/png/160/emoji_u1f9fe.png b/emojis/png/160/emoji_u1f9fe.png new file mode 100644 index 0000000..fd5cd7b Binary files /dev/null and b/emojis/png/160/emoji_u1f9fe.png differ diff --git a/emojis/png/160/emoji_u1f9ff.png b/emojis/png/160/emoji_u1f9ff.png new file mode 100644 index 0000000..fb36d32 Binary files /dev/null and b/emojis/png/160/emoji_u1f9ff.png differ diff --git a/emojis/png/160/emoji_u1fa78.png b/emojis/png/160/emoji_u1fa78.png new file mode 100644 index 0000000..f98a9fb Binary files /dev/null and b/emojis/png/160/emoji_u1fa78.png differ diff --git a/emojis/png/160/emoji_u1fa79.png b/emojis/png/160/emoji_u1fa79.png new file mode 100644 index 0000000..ce47170 Binary files /dev/null and b/emojis/png/160/emoji_u1fa79.png differ diff --git a/emojis/png/160/emoji_u1fa7a.png b/emojis/png/160/emoji_u1fa7a.png new file mode 100644 index 0000000..a36cf24 Binary files /dev/null and b/emojis/png/160/emoji_u1fa7a.png differ diff --git a/emojis/png/160/emoji_u1fa80.png b/emojis/png/160/emoji_u1fa80.png new file mode 100644 index 0000000..94e0e9c Binary files /dev/null and b/emojis/png/160/emoji_u1fa80.png differ diff --git a/emojis/png/160/emoji_u1fa81.png b/emojis/png/160/emoji_u1fa81.png new file mode 100644 index 0000000..9d9c34d Binary files /dev/null and b/emojis/png/160/emoji_u1fa81.png differ diff --git a/emojis/png/160/emoji_u1fa83.png b/emojis/png/160/emoji_u1fa83.png new file mode 100644 index 0000000..8a38ab1 Binary files /dev/null and b/emojis/png/160/emoji_u1fa83.png differ diff --git a/emojis/png/160/emoji_u1fa84.png b/emojis/png/160/emoji_u1fa84.png new file mode 100644 index 0000000..423e4e8 Binary files /dev/null and b/emojis/png/160/emoji_u1fa84.png differ diff --git a/emojis/png/160/emoji_u1fa85.png b/emojis/png/160/emoji_u1fa85.png new file mode 100644 index 0000000..c2b2ad5 Binary files /dev/null and b/emojis/png/160/emoji_u1fa85.png differ diff --git a/emojis/png/160/emoji_u1fa86.png b/emojis/png/160/emoji_u1fa86.png new file mode 100644 index 0000000..bed537f Binary files /dev/null and b/emojis/png/160/emoji_u1fa86.png differ diff --git a/emojis/png/160/emoji_u1fa91.png b/emojis/png/160/emoji_u1fa91.png new file mode 100644 index 0000000..c1c1bcf Binary files /dev/null and b/emojis/png/160/emoji_u1fa91.png differ diff --git a/emojis/png/160/emoji_u1fa92.png b/emojis/png/160/emoji_u1fa92.png new file mode 100644 index 0000000..3d732e9 Binary files /dev/null and b/emojis/png/160/emoji_u1fa92.png differ diff --git a/emojis/png/160/emoji_u1fa93.png b/emojis/png/160/emoji_u1fa93.png new file mode 100644 index 0000000..04289de Binary files /dev/null and b/emojis/png/160/emoji_u1fa93.png differ diff --git a/emojis/png/160/emoji_u1fa94.png b/emojis/png/160/emoji_u1fa94.png new file mode 100644 index 0000000..654b84a Binary files /dev/null and b/emojis/png/160/emoji_u1fa94.png differ diff --git a/emojis/png/160/emoji_u1fa95.png b/emojis/png/160/emoji_u1fa95.png new file mode 100644 index 0000000..f3e5ed9 Binary files /dev/null and b/emojis/png/160/emoji_u1fa95.png differ diff --git a/emojis/png/160/emoji_u1fa96.png b/emojis/png/160/emoji_u1fa96.png new file mode 100644 index 0000000..3ed3747 Binary files /dev/null and b/emojis/png/160/emoji_u1fa96.png differ diff --git a/emojis/png/160/emoji_u1fa97.png b/emojis/png/160/emoji_u1fa97.png new file mode 100644 index 0000000..d2f9d40 Binary files /dev/null and b/emojis/png/160/emoji_u1fa97.png differ diff --git a/emojis/png/160/emoji_u1fa98.png b/emojis/png/160/emoji_u1fa98.png new file mode 100644 index 0000000..a2b5901 Binary files /dev/null and b/emojis/png/160/emoji_u1fa98.png differ diff --git a/emojis/png/160/emoji_u1fa99.png b/emojis/png/160/emoji_u1fa99.png new file mode 100644 index 0000000..4ebb382 Binary files /dev/null and b/emojis/png/160/emoji_u1fa99.png differ diff --git a/emojis/png/160/emoji_u1fa9a.png b/emojis/png/160/emoji_u1fa9a.png new file mode 100644 index 0000000..a74d0bd Binary files /dev/null and b/emojis/png/160/emoji_u1fa9a.png differ diff --git a/emojis/png/160/emoji_u1fa9b.png b/emojis/png/160/emoji_u1fa9b.png new file mode 100644 index 0000000..6427948 Binary files /dev/null and b/emojis/png/160/emoji_u1fa9b.png differ diff --git a/emojis/png/160/emoji_u1fa9c.png b/emojis/png/160/emoji_u1fa9c.png new file mode 100644 index 0000000..dcfea07 Binary files /dev/null and b/emojis/png/160/emoji_u1fa9c.png differ diff --git a/emojis/png/160/emoji_u1fa9d.png b/emojis/png/160/emoji_u1fa9d.png new file mode 100644 index 0000000..b13fa2e Binary files /dev/null and b/emojis/png/160/emoji_u1fa9d.png differ diff --git a/emojis/png/160/emoji_u1fa9e.png b/emojis/png/160/emoji_u1fa9e.png new file mode 100644 index 0000000..a46886c Binary files /dev/null and b/emojis/png/160/emoji_u1fa9e.png differ diff --git a/emojis/png/160/emoji_u1fa9f.png b/emojis/png/160/emoji_u1fa9f.png new file mode 100644 index 0000000..dc4f326 Binary files /dev/null and b/emojis/png/160/emoji_u1fa9f.png differ diff --git a/emojis/png/160/emoji_u1faa0.png b/emojis/png/160/emoji_u1faa0.png new file mode 100644 index 0000000..d958938 Binary files /dev/null and b/emojis/png/160/emoji_u1faa0.png differ diff --git a/emojis/png/160/emoji_u1faa1.png b/emojis/png/160/emoji_u1faa1.png new file mode 100644 index 0000000..a802b55 Binary files /dev/null and b/emojis/png/160/emoji_u1faa1.png differ diff --git a/emojis/png/160/emoji_u1faa2.png b/emojis/png/160/emoji_u1faa2.png new file mode 100644 index 0000000..de99ae0 Binary files /dev/null and b/emojis/png/160/emoji_u1faa2.png differ diff --git a/emojis/png/160/emoji_u1faa3.png b/emojis/png/160/emoji_u1faa3.png new file mode 100644 index 0000000..ea4de39 Binary files /dev/null and b/emojis/png/160/emoji_u1faa3.png differ diff --git a/emojis/png/160/emoji_u1faa4.png b/emojis/png/160/emoji_u1faa4.png new file mode 100644 index 0000000..f75bf17 Binary files /dev/null and b/emojis/png/160/emoji_u1faa4.png differ diff --git a/emojis/png/160/emoji_u1faa5.png b/emojis/png/160/emoji_u1faa5.png new file mode 100644 index 0000000..0a6957f Binary files /dev/null and b/emojis/png/160/emoji_u1faa5.png differ diff --git a/emojis/png/160/emoji_u1faa6.png b/emojis/png/160/emoji_u1faa6.png new file mode 100644 index 0000000..72d21e1 Binary files /dev/null and b/emojis/png/160/emoji_u1faa6.png differ diff --git a/emojis/png/160/emoji_u1faa7.png b/emojis/png/160/emoji_u1faa7.png new file mode 100644 index 0000000..7b3d06b Binary files /dev/null and b/emojis/png/160/emoji_u1faa7.png differ diff --git a/emojis/png/160/emoji_u1fab0.png b/emojis/png/160/emoji_u1fab0.png new file mode 100644 index 0000000..47db9a3 Binary files /dev/null and b/emojis/png/160/emoji_u1fab0.png differ diff --git a/emojis/png/160/emoji_u1fab1.png b/emojis/png/160/emoji_u1fab1.png new file mode 100644 index 0000000..c229de3 Binary files /dev/null and b/emojis/png/160/emoji_u1fab1.png differ diff --git a/emojis/png/160/emoji_u1fab3.png b/emojis/png/160/emoji_u1fab3.png new file mode 100644 index 0000000..6833e43 Binary files /dev/null and b/emojis/png/160/emoji_u1fab3.png differ diff --git a/emojis/png/160/emoji_u1fab4.png b/emojis/png/160/emoji_u1fab4.png new file mode 100644 index 0000000..ecb3ca4 Binary files /dev/null and b/emojis/png/160/emoji_u1fab4.png differ diff --git a/emojis/png/160/emoji_u1fab6.png b/emojis/png/160/emoji_u1fab6.png new file mode 100644 index 0000000..0d79c82 Binary files /dev/null and b/emojis/png/160/emoji_u1fab6.png differ diff --git a/emojis/png/160/emoji_u1fad0.png b/emojis/png/160/emoji_u1fad0.png new file mode 100644 index 0000000..5cc8e68 Binary files /dev/null and b/emojis/png/160/emoji_u1fad0.png differ diff --git a/emojis/png/160/emoji_u1fad1.png b/emojis/png/160/emoji_u1fad1.png new file mode 100644 index 0000000..974390d Binary files /dev/null and b/emojis/png/160/emoji_u1fad1.png differ diff --git a/emojis/png/160/emoji_u1fad2.png b/emojis/png/160/emoji_u1fad2.png new file mode 100644 index 0000000..8cf2405 Binary files /dev/null and b/emojis/png/160/emoji_u1fad2.png differ diff --git a/emojis/png/160/emoji_u1fad3.png b/emojis/png/160/emoji_u1fad3.png new file mode 100644 index 0000000..6fb21f0 Binary files /dev/null and b/emojis/png/160/emoji_u1fad3.png differ diff --git a/emojis/png/160/emoji_u1fad4.png b/emojis/png/160/emoji_u1fad4.png new file mode 100644 index 0000000..1098ee6 Binary files /dev/null and b/emojis/png/160/emoji_u1fad4.png differ diff --git a/emojis/png/160/emoji_u1fad5.png b/emojis/png/160/emoji_u1fad5.png new file mode 100644 index 0000000..fcfe948 Binary files /dev/null and b/emojis/png/160/emoji_u1fad5.png differ diff --git a/emojis/png/160/emoji_u1fad6.png b/emojis/png/160/emoji_u1fad6.png new file mode 100644 index 0000000..e3c9499 Binary files /dev/null and b/emojis/png/160/emoji_u1fad6.png differ diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..bf5d801 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,2 @@ +imports_granularity = "Item" +group_imports = "StdExternalCrate" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..7230db0 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,126 @@ +use std::env::var; +use std::fs::read_to_string; +use std::io; +use std::io::Cursor; +use std::net::SocketAddr; +use std::path::Path; + +use axum::body::Bytes; +use axum::body::Full; +use axum::http::Response; +use axum::http::StatusCode; +use axum::routing::get; +use axum::Router; +use image::imageops; +use image::Rgba; +use image::RgbaImage; +use rand::seq::SliceRandom; + +static mut EMOJIS: Vec<(String, String)> = vec![]; +static POSITIONS: [(i64, i64); 6] = [ + (50, 50), + (260, 50), + (470, 50), + (50, 260), + (266, 260), + (470, 260), +]; + +#[tokio::main] +async fn main() -> io::Result<()> { + let codes = read_to_string("allowed-emojis.txt")? + .split("\n") + .filter(|c| !c.is_empty()) + .map(|c| c.to_string()) + .collect::>(); + + let files = codes + .iter() + .map(|c| { + Path::new("./emojis/png/160") + .join(c.to_lowercase().to_owned() + ".png") + .into_os_string() + .into_string() + .unwrap() + }) + .collect::>(); + for (i, c) in codes.iter().enumerate() { + unsafe { + EMOJIS.push((c.to_owned(), files[i].to_owned())); + } + } + + axum::Server::bind(&SocketAddr::from(( + [0, 0, 0, 0], + match var("SERVER_PORT") { + Ok(port) => port.parse::().unwrap(), + Err(_) => 8080, + }, + ))) + .serve( + Router::new() + .route("/", get(handle_request)) + .into_make_service(), + ) + .await + .unwrap(); + + Ok(()) +} + +async fn handle_request() -> Response> { + let mut emojis = unsafe { + EMOJIS + .choose_multiple(&mut rand::thread_rng(), 15) + .cloned() + .collect::>() + }; + + let correct_emojis = &emojis.clone()[0..6]; + let mut image = RgbaImage::from_fn(680, 470, |_, _| Rgba([0, 0, 0, 255])); + + imageops::vertical_gradient( + &mut image, + &Rgba([20, 20, 20, 255]), + &Rgba([25, 25, 25, 255]), + ); + + for i in 0..6 { + let path = &emojis.get(i).unwrap().1; + let mut emoji = image::open(path).unwrap().into_rgba8(); + let (x, y) = POSITIONS[i]; + imageops::overlay(&mut image, &mut emoji, x, y) + } + + emojis.shuffle(&mut rand::thread_rng()); + + let mut body = Vec::new(); + + image + .write_to(&mut Cursor::new(&mut body), image::ImageOutputFormat::Png) + .unwrap(); + + Response::builder() + .status(StatusCode::OK) + .header( + "x-emojis", + emojis + .iter() + .map(|e| e.0.as_str()) + .collect::>() + .join(";") + .as_str(), + ) + .header( + "x-correct-emojis", + correct_emojis + .iter() + .map(|e| e.0.as_str()) + .collect::>() + .join(";") + .as_str(), + ) + .header("Content-Type", "image/png") + .body(Full::from(body)) + .unwrap() +}