From d5246c9689aac08b710af4e2cbc11b0c6673e5d3 Mon Sep 17 00:00:00 2001 From: Umputun Date: Tue, 27 Apr 2021 00:30:38 -0500 Subject: [PATCH] Deps bump (#956) * remove redundant sprintf * bump many deps * missing vendors --- backend/_example/memory_store/go.mod | 10 +- backend/_example/memory_store/go.sum | 60 + backend/app/cmd/cleanup_test.go | 2 +- backend/app/cmd/server.go | 8 +- backend/app/notify/slack.go | 3 +- backend/app/notify/slack_test.go | 2 +- backend/app/notify/telegram_test.go | 2 +- backend/app/rest/api/admin.go | 2 +- backend/app/rest/api/rest.go | 4 +- backend/app/rest/api/rest_private.go | 2 +- backend/app/rest/api/rest_public.go | 2 +- backend/app/rest/api/ssl.go | 4 +- backend/go.mod | 16 +- backend/go.sum | 24 +- .../github.com/go-chi/chi/v5/.gitignore | 3 + .../github.com/go-chi/chi/v5/CHANGELOG.md | 290 + .../github.com/go-chi/chi/v5/CONTRIBUTING.md | 31 + .../vendor/github.com/go-chi/chi/v5/LICENSE | 20 + .../vendor/github.com/go-chi/chi/v5/Makefile | 14 + .../vendor/github.com/go-chi/chi/v5/README.md | 511 ++ .../vendor/github.com/go-chi/chi/v5/chain.go | 49 + .../vendor/github.com/go-chi/chi/v5/chi.go | 134 + .../github.com/go-chi/chi/v5/context.go | 157 + .../vendor/github.com/go-chi/chi/v5/go.mod | 3 + .../go-chi/chi/v5/middleware/basic_auth.go | 33 + .../go-chi/chi/v5/middleware/clean_path.go | 28 + .../go-chi/chi/v5/middleware/compress.go | 399 + .../chi/v5/middleware/content_charset.go | 51 + .../chi/v5/middleware/content_encoding.go | 34 + .../go-chi/chi/v5/middleware/content_type.go | 49 + .../go-chi/chi/v5/middleware/get_head.go | 39 + .../go-chi/chi/v5/middleware/heartbeat.go | 26 + .../go-chi/chi/v5/middleware/logger.go | 174 + .../go-chi/chi/v5/middleware/middleware.go | 23 + .../go-chi/chi/v5/middleware/nocache.go | 58 + .../go-chi/chi/v5/middleware/profiler.go | 55 + .../go-chi/chi/v5/middleware/realip.go | 54 + .../go-chi/chi/v5/middleware/recoverer.go | 192 + .../go-chi/chi/v5/middleware/request_id.go | 96 + .../go-chi/chi/v5/middleware/route_headers.go | 160 + .../go-chi/chi/v5/middleware/strip.go | 62 + .../go-chi/chi/v5/middleware/terminal.go | 63 + .../go-chi/chi/v5/middleware/throttle.go | 132 + .../go-chi/chi/v5/middleware/timeout.go | 49 + .../go-chi/chi/v5/middleware/url_format.go | 72 + .../go-chi/chi/v5/middleware/value.go | 17 + .../go-chi/chi/v5/middleware/wrap_writer.go | 165 + .../vendor/github.com/go-chi/chi/v5/mux.go | 485 ++ .../vendor/github.com/go-chi/chi/v5/tree.go | 866 ++ .../vendor/github.com/go-chi/cors/README.md | 4 +- backend/vendor/github.com/go-chi/cors/go.mod | 3 + .../vendor/github.com/go-pkgz/rest/README.md | 31 +- .../github.com/go-pkgz/rest/basic_auth.go | 26 + .../github.com/go-pkgz/rest/cache_control.go | 27 + backend/vendor/github.com/go-pkgz/rest/go.mod | 2 +- backend/vendor/github.com/go-pkgz/rest/go.sum | 2 + .../vendor/github.com/go-pkgz/rest/gzip.go | 89 + .../github.com/go-pkgz/rest/httperrors.go | 6 +- .../github.com/go-pkgz/rest/logger/logger.go | 144 +- .../github.com/go-pkgz/rest/logger/options.go | 8 +- .../github.com/go-pkgz/rest/middleware.go | 37 +- .../vendor/github.com/go-pkgz/rest/nocache.go | 55 + .../vendor/github.com/go-pkgz/rest/rest.go | 14 + .../github.com/kyokomi/emoji/emoji_codemap.go | 7677 ---------------- .../kyokomi/emoji/{ => v2}/.gitignore | 0 .../github.com/kyokomi/emoji/{ => v2}/LICENSE | 0 .../kyokomi/emoji/{ => v2}/README.md | 8 +- .../kyokomi/emoji/{ => v2}/emoji.go | 12 +- .../kyokomi/emoji/v2/emoji_codemap.go | 7715 +++++++++++++++++ .../vendor/github.com/kyokomi/emoji/v2/go.mod | 3 + .../kyokomi/emoji/{ => v2}/wercker.yml | 2 +- .../testify/assert/assertion_compare.go | 172 +- .../testify/assert/assertion_format.go | 97 + .../testify/assert/assertion_forward.go | 194 + .../testify/assert/assertion_order.go | 81 + .../stretchr/testify/assert/assertions.go | 83 +- .../github.com/stretchr/testify/mock/mock.go | 45 +- .../stretchr/testify/require/require.go | 248 + .../testify/require/require_forward.go | 194 + .../vendor/golang.org/x/crypto/acme/acme.go | 4 + .../x/crypto/acme/autocert/autocert.go | 8 +- .../vendor/golang.org/x/crypto/acme/jws.go | 54 +- .../golang.org/x/crypto/acme/rfc8555.go | 30 +- .../vendor/golang.org/x/crypto/acme/types.go | 74 +- .../golang.org/x/crypto/acme/version_go112.go | 1 + .../vendor/golang.org/x/crypto/ocsp/ocsp.go | 29 +- .../x/sys/unix/fcntl_linux_32bit.go | 4 +- .../golang.org/x/sys/unix/syscall_darwin.go | 11 + .../x/sys/unix/syscall_linux_ppc.go | 272 + .../x/sys/unix/zerrors_linux_ppc.go | 860 ++ .../x/sys/unix/zsyscall_linux_ppc.go | 762 ++ .../x/sys/unix/zsysnum_linux_ppc.go | 433 + .../x/sys/unix/ztypes_darwin_386.go | 7 + .../x/sys/unix/ztypes_darwin_amd64.go | 7 + .../x/sys/unix/ztypes_darwin_arm.go | 7 + .../x/sys/unix/ztypes_darwin_arm64.go | 7 + .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 627 ++ backend/vendor/modules.txt | 23 +- 98 files changed, 17085 insertions(+), 7849 deletions(-) create mode 100644 backend/vendor/github.com/go-chi/chi/v5/.gitignore create mode 100644 backend/vendor/github.com/go-chi/chi/v5/CHANGELOG.md create mode 100644 backend/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md create mode 100644 backend/vendor/github.com/go-chi/chi/v5/LICENSE create mode 100644 backend/vendor/github.com/go-chi/chi/v5/Makefile create mode 100644 backend/vendor/github.com/go-chi/chi/v5/README.md create mode 100644 backend/vendor/github.com/go-chi/chi/v5/chain.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/chi.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/context.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/go.mod create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/compress.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/content_type.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/get_head.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/logger.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/middleware.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/nocache.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/profiler.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/realip.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/request_id.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/strip.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/terminal.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/throttle.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/timeout.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/url_format.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/value.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/mux.go create mode 100644 backend/vendor/github.com/go-chi/chi/v5/tree.go create mode 100644 backend/vendor/github.com/go-chi/cors/go.mod create mode 100644 backend/vendor/github.com/go-pkgz/rest/basic_auth.go create mode 100644 backend/vendor/github.com/go-pkgz/rest/gzip.go create mode 100644 backend/vendor/github.com/go-pkgz/rest/nocache.go delete mode 100644 backend/vendor/github.com/kyokomi/emoji/emoji_codemap.go rename backend/vendor/github.com/kyokomi/emoji/{ => v2}/.gitignore (100%) rename backend/vendor/github.com/kyokomi/emoji/{ => v2}/LICENSE (100%) rename backend/vendor/github.com/kyokomi/emoji/{ => v2}/README.md (80%) rename backend/vendor/github.com/kyokomi/emoji/{ => v2}/emoji.go (94%) create mode 100644 backend/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go create mode 100644 backend/vendor/github.com/kyokomi/emoji/v2/go.mod rename backend/vendor/github.com/kyokomi/emoji/{ => v2}/wercker.yml (88%) create mode 100644 backend/vendor/github.com/stretchr/testify/assert/assertion_order.go create mode 100644 backend/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go create mode 100644 backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go create mode 100644 backend/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go create mode 100644 backend/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go create mode 100644 backend/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go diff --git a/backend/_example/memory_store/go.mod b/backend/_example/memory_store/go.mod index 2014a67f..314e0bcd 100644 --- a/backend/_example/memory_store/go.mod +++ b/backend/_example/memory_store/go.mod @@ -3,12 +3,18 @@ module github.com/umputun/remark42/memory_store go 1.14 require ( + github.com/go-pkgz/auth v1.15.0 // indirect + github.com/go-pkgz/expirable-cache v0.0.3 // indirect github.com/go-pkgz/jrpc v0.2.0 + github.com/go-pkgz/lcw v0.8.1 // indirect github.com/go-pkgz/lgr v0.10.4 + github.com/go-pkgz/repeater v1.1.3 // indirect + github.com/go-pkgz/rest v1.9.2 // indirect + github.com/go-pkgz/syncs v1.1.1 // indirect github.com/pkg/errors v0.9.1 - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.7.0 github.com/umputun/go-flags v1.5.1 - github.com/umputun/remark42/backend v1.6.0 + github.com/umputun/remark42/backend v1.7.1 ) replace github.com/umputun/remark42/backend => ../../ diff --git a/backend/_example/memory_store/go.sum b/backend/_example/memory_store/go.sum index ba1da07c..a85b062b 100644 --- a/backend/_example/memory_store/go.sum +++ b/backend/_example/memory_store/go.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Depado/bfchroma v1.2.0 h1:NyYPFVhWvq8S2ts6Ok4kwXVE3TEO5fof+9ZOKbBJQUo= @@ -20,7 +21,10 @@ github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGn github.com/alicebob/miniredis/v2 v2.11.4/go.mod h1:VL3UDEfAH59bSa7MuHMuFToxkqyHh69s/WUbYlOAuyg= github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPIk= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -29,12 +33,18 @@ github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dghubble/oauth1 v0.6.0 h1:m1yC01Ohc/eF38jwZ8JUjL1a+XHHXtGQgK+MxQbmSx0= github.com/dghubble/oauth1 v0.6.0/go.mod h1:8pFdfPkv/jr8mkChVbNVuJ0suiHe278BtWI4Tk1ujxk= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/didip/tollbooth/v6 v6.0.1 h1:QvLvRpB1G2bzKvkRze0muMUBlGN9H1z7tJ4DH4ypWOU= github.com/didip/tollbooth/v6 v6.0.1/go.mod h1:j2pKs+JQ5PvU/K4jFnrnwntrmfUbYLJE5oSdxR37FD0= +github.com/didip/tollbooth/v6 v6.1.0 h1:ZS2fNa9JhFdRSJCj3+V12VfuUifYrGB4Z0jSwXmKMeE= +github.com/didip/tollbooth/v6 v6.1.0/go.mod h1:xjcse6CTHCLuOkzsWrEgdy9WPJFv+p/x6v+MyfP+O9s= github.com/didip/tollbooth_chi v0.0.0-20200524181329-8b84cd7183d9 h1:gTh8fKuI/yLqQtZEPlDX3ZGsiTPZIe0ADHsxXSbwO1I= github.com/didip/tollbooth_chi v0.0.0-20200524181329-8b84cd7183d9/go.mod h1:YWyIfq3y4ArRfWZ9XksmuusP+7Mad+T0iFZ0kv0XG/M= +github.com/didip/tollbooth_chi v0.0.0-20200828173446-a7173453ea21 h1:x7YpwKSBIBcKe9I3aTNOqgSyJ6QKDdtOxnEkxBTsi9w= +github.com/didip/tollbooth_chi v0.0.0-20200828173446-a7173453ea21/go.mod h1:0ZVa6kSzS011nfTC1rELyxK4tjVf6vqBnOv7oY2KlsA= github.com/dlclark/regexp2 v1.1.6 h1:CqB4MjHw0MFCDj+PHHjiESmHX+N7t0tJzKvC6M97BRg= github.com/dlclark/regexp2 v1.1.6/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= @@ -43,30 +53,43 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/go-chi/chi v4.1.1+incompatible h1:MmTgB0R8Bt/jccxp+t6S/1VGIKdJw5J74CK/c9tTfA4= github.com/go-chi/chi v4.1.1+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi/v5 v5.0.2/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-chi/cors v1.1.1/go.mod h1:K2Yje0VW/SJzxiyMYu6iPQYa7hMjQX2i/F491VChg1I= +github.com/go-chi/cors v1.2.0/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-pkgz/auth v0.11.0/go.mod h1:NzVqlTW0E9JXVdAaWRq81XZjICgHnNaNdUfE3CbS2T4= github.com/go-pkgz/auth v1.14.0/go.mod h1:1GVd61pXZcuJ0ZnOUdCTY08V8SreO7MJtsvEd5/WEWA= +github.com/go-pkgz/auth v1.15.0 h1:77z+YdcxHkRcjJSQc1SBtqIrZbp3p8Zo72ZRR3QKsLk= +github.com/go-pkgz/auth v1.15.0/go.mod h1:1HTdNEBMSFRCXoJLLjgCRs8t/gt2TQUaqf6wgYRvsTo= github.com/go-pkgz/expirable-cache v0.0.3 h1:rTh6qNPp78z0bQE6HDhXBHUwqnV9i09Vm6dksJLXQDc= github.com/go-pkgz/expirable-cache v0.0.3/go.mod h1:+IauqN00R2FqNRLCLA+X5YljQJrwB179PfiAoMPlTlQ= github.com/go-pkgz/jrpc v0.2.0 h1:CLy/eZyekjraVrxZV18N2R1mYLMJ/nWrgdfyIOGPY/E= github.com/go-pkgz/jrpc v0.2.0/go.mod h1:wd8vtQ4CgtCnuqua6x2b1SKIgv0VSOh5Dn0uUITbiUE= github.com/go-pkgz/lcw v0.7.1/go.mod h1:3P6g9QrJsDePXEMe42ywO+tW08L17tBJGwIDdI7lZ6g= +github.com/go-pkgz/lcw v0.8.1 h1:Bpt2yYTE1J8hIhz8tjdm1WPOgH13eo5iTNsXyop7cMQ= github.com/go-pkgz/lcw v0.8.1/go.mod h1:Xw0/ZfApATgbjVPYRZO4XHdWyxAjErDWDWJ7TLlw1Vc= github.com/go-pkgz/lgr v0.7.0 h1:S/AAPwt/RE9a5mNJskA7dGVp+Dq6SMIW6LYjG3ITxY8= github.com/go-pkgz/lgr v0.7.0/go.mod h1:yMgxU+GobMRJgIEbSzDKy/67W18S7qmGx/7BVL5AB8Q= github.com/go-pkgz/lgr v0.10.4 h1:l7qyFjqEZgwRgaQQSEp6tve4A3OU80VrfzpvtEX8ngw= github.com/go-pkgz/lgr v0.10.4/go.mod h1:CD0s1z6EFpIUplV067gitF77tn25JItzwHNKAPqeCF0= +github.com/go-pkgz/repeater v1.1.3 h1:q6+JQF14ESSy28Dd7F+wRelY4F+41HJ0LEy/szNnMiE= github.com/go-pkgz/repeater v1.1.3/go.mod h1:hVTavuO5x3Gxnu8zW7d6sQBfAneKV8X2FjU48kGfpKw= github.com/go-pkgz/rest v1.5.0 h1:C8SxXcXza4GiUUAn/95iCkvoIrGbS30qpwK19iqlrWQ= github.com/go-pkgz/rest v1.5.0/go.mod h1:nQaM3RhSTUAmbBZWY4hfe4buyeC9VckvhoCktiQXJxI= +github.com/go-pkgz/rest v1.6.0/go.mod h1:FKpgK5FgSqREG323OIU/JpIc0xA7dqay9BmK7LZXTQE= +github.com/go-pkgz/rest v1.9.2 h1:RyBBRXBYY6eBgTW3UGYOyT4VQPDiBBFh/tesELWsryQ= +github.com/go-pkgz/rest v1.9.2/go.mod h1:wZ/dGipZUaF9to0vIQl7PwDHgWQDB0jsrFg1xnAKLDw= +github.com/go-pkgz/syncs v1.1.1 h1:jWN+y6FS/Xe+8z4l3QMbSnODGyaxDHGojIS+wyKIjxg= github.com/go-pkgz/syncs v1.1.1/go.mod h1:bt9lxWRRJ9vOCMGc8Big8ttjYHLKP88ofj1y38UlaHE= github.com/go-redis/redis/v7 v7.2.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= @@ -92,25 +115,33 @@ github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGt github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.1-0.20190322064113-39e2c31b7ca3/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/feeds v1.1.1/go.mod h1:Nk0jZrvPFZX1OBe5NPiddPw7CfwF6Q9eqzaBbaightA= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= @@ -120,6 +151,7 @@ github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaR github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.5 h1:U+CaK85mrNNb4k8BNOfgJtJ/gr6kswUCFj6miSzVC6M= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -130,6 +162,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kyokomi/emoji v2.2.1+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA= +github.com/kyokomi/emoji/v2 v2.2.8/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -139,9 +172,12 @@ github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/microcosm-cc/bluemonday v1.0.2 h1:5lPfLTTAvAbtS0VqT+94yOtFnGfUWYyx0+iToC3Os3s= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/microcosm-cc/bluemonday v1.0.9 h1:dpCwruVKoyrULicJwhuY76jB+nIxRVKv/e248Vx/BXg= +github.com/microcosm-cc/bluemonday v1.0.9/go.mod h1:B2riunDr9benLHghZB7hjIgdwSUzzs0pjCxFrWYEZFU= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/nullrocks/identicon v0.0.0-20180626043057-7875f45b0022 h1:Ys0rDzh8s4UMlGaDa1UTA0sfKgvF0hQZzTYX8ktjiDc= github.com/nullrocks/identicon v0.0.0-20180626043057-7875f45b0022/go.mod h1:x4NsS+uc7ecH/Cbm9xKQ6XzmJM57rWTkjywjfB2yQ18= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -172,6 +208,7 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/slack-go/slack v0.8.2/go.mod h1:FGqNzJBmxIsZURAxh2a8D21AnOVvvXZvGligs4npPUM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -186,6 +223,7 @@ github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/btree v0.0.0-20170113224114-9876f1454cf0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= github.com/tidwall/buntdb v1.1.0/go.mod h1:Y39xhcDW10WlyYXeLgGftXVbjtM0QP+/kpz8xl9cbzE= github.com/tidwall/gjson v1.3.2/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= @@ -199,7 +237,9 @@ github.com/umputun/go-flags v1.5.1/go.mod h1:nTbvsO/hKqe7Utri/NoyN18GR3+EWf+9Rrm github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc h1:n+nNi93yXLkJvKwXNP9d55HC7lGK4H/SRcwB5IaUZLo= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= @@ -214,6 +254,7 @@ go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.mongodb.org/mongo-driver v1.3.2/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= +go.mongodb.org/mongo-driver v1.4.4 h1:bsPHfODES+/yx2PCWzUYMH8xj6PVniPI8DQrsJuSXSs= go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -221,8 +262,12 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -237,13 +282,19 @@ golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -261,10 +312,17 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -278,6 +336,7 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -285,6 +344,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/oauth2.v3 v3.12.0 h1:yOffAPoolH/i2JxwmC+pgtnY3362iPahsDpLXfDFvNg= gopkg.in/oauth2.v3 v3.12.0/go.mod h1:XEYgKqWX095YiPT+Aw5y3tCn+7/FMnlTFKrupgSiJ3I= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/backend/app/cmd/cleanup_test.go b/backend/app/cmd/cleanup_test.go index e6b23cd1..74552783 100644 --- a/backend/app/cmd/cleanup_test.go +++ b/backend/app/cmd/cleanup_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/umputun/go-flags" diff --git a/backend/app/cmd/server.go b/backend/app/cmd/server.go index 2613ed01..2a7899e1 100644 --- a/backend/app/cmd/server.go +++ b/backend/app/cmd/server.go @@ -18,7 +18,7 @@ import ( "github.com/go-pkgz/jrpc" "github.com/go-pkgz/lcw/eventbus" log "github.com/go-pkgz/lgr" - "github.com/kyokomi/emoji" + "github.com/kyokomi/emoji/v2" "github.com/pkg/errors" bolt "go.etcd.io/bbolt" @@ -211,9 +211,9 @@ type NotifyGroup struct { VerificationSubject string `long:"verification_subj" env:"VERIFICATION_SUBJ" description:"verification message subject"` AdminNotifications bool `long:"notify_admin" env:"ADMIN" description:"notify admin on new comments via ADMIN_SHARED_EMAIL"` } `group:"email" namespace:"email" env-namespace:"EMAIL"` - Slack struct { - Token string `long:"token" env:"TOKEN" description:"slack token"` - Channel string `long:"chan" env:"CHAN" description:"slack channel"` + Slack struct { + Token string `long:"token" env:"TOKEN" description:"slack token"` + Channel string `long:"chan" env:"CHAN" description:"slack channel"` } `group:"slack" namespace:"slack" env-namespace:"SLACK"` } diff --git a/backend/app/notify/slack.go b/backend/app/notify/slack.go index 0addd3cf..37c38eea 100644 --- a/backend/app/notify/slack.go +++ b/backend/app/notify/slack.go @@ -2,7 +2,6 @@ package notify import ( "context" - "fmt" log "github.com/go-pkgz/lgr" "github.com/pkg/errors" @@ -47,7 +46,7 @@ func (t *Slack) Send(ctx context.Context, req Request) error { user += " → " + req.parent.User.Name } - title := fmt.Sprintf("↦ original comment") + title := "↦ original comment" if req.Comment.PostTitle != "" { title = "↦ " + req.Comment.PostTitle } diff --git a/backend/app/notify/slack_test.go b/backend/app/notify/slack_test.go index 5726b2e4..82966fc1 100644 --- a/backend/app/notify/slack_test.go +++ b/backend/app/notify/slack_test.go @@ -7,7 +7,7 @@ import ( "net/http/httptest" "testing" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/slack-go/slack" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/backend/app/notify/telegram_test.go b/backend/app/notify/telegram_test.go index 811b259a..17a2ce9c 100644 --- a/backend/app/notify/telegram_test.go +++ b/backend/app/notify/telegram_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/backend/app/rest/api/admin.go b/backend/app/rest/api/admin.go index 3c6e9192..0c24592f 100644 --- a/backend/app/rest/api/admin.go +++ b/backend/app/rest/api/admin.go @@ -6,7 +6,7 @@ import ( "path" "time" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/go-chi/render" "github.com/go-pkgz/auth" cache "github.com/go-pkgz/lcw" diff --git a/backend/app/rest/api/rest.go b/backend/app/rest/api/rest.go index 9008b255..cf42715e 100644 --- a/backend/app/rest/api/rest.go +++ b/backend/app/rest/api/rest.go @@ -12,8 +12,8 @@ import ( "github.com/didip/tollbooth/v6" "github.com/didip/tollbooth_chi" - "github.com/go-chi/chi" - "github.com/go-chi/chi/middleware" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" "github.com/go-chi/cors" "github.com/go-chi/render" "github.com/go-pkgz/auth" diff --git a/backend/app/rest/api/rest_private.go b/backend/app/rest/api/rest_private.go index 264d966d..8c422dd0 100644 --- a/backend/app/rest/api/rest_private.go +++ b/backend/app/rest/api/rest_private.go @@ -13,7 +13,7 @@ import ( "time" "github.com/dgrijalva/jwt-go" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/go-chi/render" "github.com/go-pkgz/auth" "github.com/go-pkgz/auth/token" diff --git a/backend/app/rest/api/rest_public.go b/backend/app/rest/api/rest_public.go index 5e4c3ab8..2625a774 100644 --- a/backend/app/rest/api/rest_public.go +++ b/backend/app/rest/api/rest_public.go @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/go-chi/chi" + "github.com/go-chi/chi/v5" "github.com/go-chi/render" cache "github.com/go-pkgz/lcw" log "github.com/go-pkgz/lgr" diff --git a/backend/app/rest/api/ssl.go b/backend/app/rest/api/ssl.go index b005ee02..adae64ac 100644 --- a/backend/app/rest/api/ssl.go +++ b/backend/app/rest/api/ssl.go @@ -6,8 +6,8 @@ import ( "net/url" "time" - "github.com/go-chi/chi" - "github.com/go-chi/chi/middleware" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" log "github.com/go-pkgz/lgr" "golang.org/x/crypto/acme/autocert" diff --git a/backend/go.mod b/backend/go.mod index 55d2836c..339bf32c 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -9,31 +9,31 @@ require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/didip/tollbooth/v6 v6.1.0 github.com/didip/tollbooth_chi v0.0.0-20200828173446-a7173453ea21 - github.com/go-chi/chi v4.1.1+incompatible - github.com/go-chi/cors v1.1.1 + github.com/go-chi/chi/v5 v5.0.2 + github.com/go-chi/cors v1.2.0 github.com/go-chi/render v1.0.1 github.com/go-pkgz/auth v1.15.0 github.com/go-pkgz/jrpc v0.2.0 github.com/go-pkgz/lcw v0.8.1 github.com/go-pkgz/lgr v0.10.4 github.com/go-pkgz/repeater v1.1.3 - github.com/go-pkgz/rest v1.7.0 + github.com/go-pkgz/rest v1.9.2 github.com/go-pkgz/syncs v1.1.1 github.com/google/uuid v1.1.2 github.com/gorilla/feeds v1.1.1 github.com/hashicorp/go-multierror v1.1.0 - github.com/kyokomi/emoji v2.2.1+incompatible + github.com/kyokomi/emoji/v2 v2.2.8 github.com/microcosm-cc/bluemonday v1.0.9 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/rs/xid v1.2.1 github.com/russross/blackfriday/v2 v2.1.0 github.com/slack-go/slack v0.8.2 - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.7.0 github.com/umputun/go-flags v1.5.1 go.etcd.io/bbolt v1.3.5 go.uber.org/goleak v1.0.0 - golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 - golang.org/x/image v0.0.0-20200119044424-58c23975cae1 - golang.org/x/net v0.0.0-20210421230115-4e50805a0758 + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b + golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb + golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 ) diff --git a/backend/go.sum b/backend/go.sum index ef8e0b63..8123c23b 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -58,8 +58,12 @@ github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/go-chi/chi v4.1.1+incompatible h1:MmTgB0R8Bt/jccxp+t6S/1VGIKdJw5J74CK/c9tTfA4= github.com/go-chi/chi v4.1.1+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi/v5 v5.0.2 h1:4xKeALZdMEsuI5s05PU2Bm89Uc5iM04qFubUCl5LfAQ= +github.com/go-chi/chi/v5 v5.0.2/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-chi/cors v1.1.1 h1:eHuqxsIw89iXcWnWUN8R72JMibABJTN/4IOYI5WERvw= github.com/go-chi/cors v1.1.1/go.mod h1:K2Yje0VW/SJzxiyMYu6iPQYa7hMjQX2i/F491VChg1I= +github.com/go-chi/cors v1.2.0 h1:tV1g1XENQ8ku4Bq3K9ub2AtgG+p16SmzeMSGTwrOKdE= +github.com/go-chi/cors v1.2.0/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-chi/render v1.0.1 h1:4/5tis2cKaNdnv9zFLfXzcquC9HbeZgCnxGnKrltBS8= github.com/go-chi/render v1.0.1/go.mod h1:pq4Rr7HbnsdaeHagklXub+p6Wd16Af5l9koip1OvJns= github.com/go-pkgz/auth v1.15.0 h1:77z+YdcxHkRcjJSQc1SBtqIrZbp3p8Zo72ZRR3QKsLk= @@ -76,8 +80,8 @@ github.com/go-pkgz/repeater v1.1.3 h1:q6+JQF14ESSy28Dd7F+wRelY4F+41HJ0LEy/szNnMi github.com/go-pkgz/repeater v1.1.3/go.mod h1:hVTavuO5x3Gxnu8zW7d6sQBfAneKV8X2FjU48kGfpKw= github.com/go-pkgz/rest v1.5.0/go.mod h1:nQaM3RhSTUAmbBZWY4hfe4buyeC9VckvhoCktiQXJxI= github.com/go-pkgz/rest v1.6.0/go.mod h1:FKpgK5FgSqREG323OIU/JpIc0xA7dqay9BmK7LZXTQE= -github.com/go-pkgz/rest v1.7.0 h1:5KHWmYPZaJfd6+Htx8bCJ2InVSHJ85MGh8kuO72SAjU= -github.com/go-pkgz/rest v1.7.0/go.mod h1:FKpgK5FgSqREG323OIU/JpIc0xA7dqay9BmK7LZXTQE= +github.com/go-pkgz/rest v1.9.2 h1:RyBBRXBYY6eBgTW3UGYOyT4VQPDiBBFh/tesELWsryQ= +github.com/go-pkgz/rest v1.9.2/go.mod h1:wZ/dGipZUaF9to0vIQl7PwDHgWQDB0jsrFg1xnAKLDw= github.com/go-pkgz/syncs v1.1.1 h1:jWN+y6FS/Xe+8z4l3QMbSnODGyaxDHGojIS+wyKIjxg= github.com/go-pkgz/syncs v1.1.1/go.mod h1:bt9lxWRRJ9vOCMGc8Big8ttjYHLKP88ofj1y38UlaHE= github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= @@ -167,8 +171,8 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kyokomi/emoji v2.2.1+incompatible h1:uP/6J5y5U0XxPh6fv8YximpVD1uMrshXG78I1+uF5SA= -github.com/kyokomi/emoji v2.2.1+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA= +github.com/kyokomi/emoji/v2 v2.2.8 h1:jcofPxjHWEkJtkIbcLHvZhxKgCPl6C7MyjTrD4KDqUE= +github.com/kyokomi/emoji/v2 v2.2.8/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -230,8 +234,9 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/btree v0.0.0-20170113224114-9876f1454cf0 h1:QnyrPZZvPmR0AtJCxxfCtI1qN+fYpKTKJ/5opWmZ34k= github.com/tidwall/btree v0.0.0-20170113224114-9876f1454cf0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= github.com/tidwall/buntdb v1.1.0 h1:H6LzK59KiNjf1nHVPFrYj4Qnl8d8YLBsYamdL8N+Bao= @@ -288,8 +293,12 @@ golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaE golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 h1:DOmugCavvUtnUD114C1Wh+UgTgQZ4pMLzXxi1pSt+/Y= golang.org/x/crypto v0.0.0-20200406173513-056763e48d71/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -304,8 +313,11 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210421230115-4e50805a0758 h1:aEpZnXcAmXkd6AvLb2OPt+EN1Zu/8Ne3pCqPjja5PXY= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -334,6 +346,8 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe h1:WdX7u8s3yOigWAhHEaDl8r9G+4XwFQEQFtBMYyN+kXQ= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/backend/vendor/github.com/go-chi/chi/v5/.gitignore b/backend/vendor/github.com/go-chi/chi/v5/.gitignore new file mode 100644 index 00000000..ba22c99a --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/.gitignore @@ -0,0 +1,3 @@ +.idea +*.sw? +.vscode diff --git a/backend/vendor/github.com/go-chi/chi/v5/CHANGELOG.md b/backend/vendor/github.com/go-chi/chi/v5/CHANGELOG.md new file mode 100644 index 00000000..0c44553d --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/CHANGELOG.md @@ -0,0 +1,290 @@ +# Changelog + +## v5.0.2 (2021-03-25) + +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.1...v5.0.2 + + +## v5.0.1 (2021-03-10) + +- Small improvements +- History of changes: see https://github.com/go-chi/chi/compare/v5.0.0...v5.0.1 + + +## v5.0.0 (2021-02-27) + +- chi v5, `github.com/go-chi/chi/v5` introduces the adoption of Go's SIV to adhere to the current state-of-the-tools in Go. +- chi v1.5.x did not work out as planned, as the Go tooling is too powerful and chi's adoption is too wide. + The most responsible thing to do for everyone's benefit is to just release v5 with SIV, so I present to you all, + chi v5 at `github.com/go-chi/chi/v5`. I hope someday the developer experience and ergonomics I've been seeking + will still come to fruition in some form, see https://github.com/golang/go/issues/44550 +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.4...v5.0.0 + + +## v1.5.4 (2021-02-27) + +- Undo prior retraction in v1.5.3 as we prepare for v5.0.0 release +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.3...v1.5.4 + + +## v1.5.3 (2021-02-21) + +- Update go.mod to go 1.16 with new retract directive marking all versions without prior go.mod support +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.2...v1.5.3 + + +## v1.5.2 (2021-02-10) + +- Reverting allocation optimization as a precaution as go test -race fails. +- Minor improvements, see history below +- History of changes: see https://github.com/go-chi/chi/compare/v1.5.1...v1.5.2 + + +## v1.5.1 (2020-12-06) + +- Performance improvement: removing 1 allocation by foregoing context.WithValue, thank you @bouk for + your contribution (https://github.com/go-chi/chi/pull/555). Note: new benchmarks posted in README. +- `middleware.CleanPath`: new middleware that clean's request path of double slashes +- deprecate & remove `chi.ServerBaseContext` in favour of stdlib `http.Server#BaseContext` +- plus other tiny improvements, see full commit history below +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.2...v1.5.1 + + +## v1.5.0 (2020-11-12) - now with go.mod support + +`chi` dates back to 2016 with it's original implementation as one of the first routers to adopt the newly introduced +context.Context api to the stdlib -- set out to design a router that is faster, more modular and simpler than anything +else out there -- while not introducing any custom handler types or dependencies. Today, `chi` still has zero dependencies, +and in many ways is future proofed from changes, given it's minimal nature. Between versions, chi's iterations have been very +incremental, with the architecture and api being the same today as it was originally designed in 2016. For this reason it +makes chi a pretty easy project to maintain, as well thanks to the many amazing community contributions over the years +to who all help make chi better (total of 86 contributors to date -- thanks all!). + +Chi has been an labour of love, art and engineering, with the goals to offer beautiful ergonomics, flexibility, performance +and simplicity when building HTTP services with Go. I've strived to keep the router very minimal in surface area / code size, +and always improving the code wherever possible -- and as of today the `chi` package is just 1082 lines of code (not counting +middlewares, which are all optional). As well, I don't have the exact metrics, but from my analysis and email exchanges from +companies and developers, chi is used by thousands of projects around the world -- thank you all as there is no better form of +joy for me than to have art I had started be helpful and enjoyed by others. And of course I use chi in all of my own projects too :) + +For me, the asthetics of chi's code and usage are very important. With the introduction of Go's module support +(which I'm a big fan of), chi's past versioning scheme choice to v2, v3 and v4 would mean I'd require the import path +of "github.com/go-chi/chi/v4", leading to the lengthy discussion at https://github.com/go-chi/chi/issues/462. +Haha, to some, you may be scratching your head why I've spent > 1 year stalling to adopt "/vXX" convention in the import +path -- which isn't horrible in general -- but for chi, I'm unable to accept it as I strive for perfection in it's API design, +aesthetics and simplicity. It just doesn't feel good to me given chi's simple nature -- I do not foresee a "v5" or "v6", +and upgrading between versions in the future will also be just incremental. + +I do understand versioning is a part of the API design as well, which is why the solution for a while has been to "do nothing", +as Go supports both old and new import paths with/out go.mod. However, now that Go module support has had time to iron out kinks and +is adopted everywhere, it's time for chi to get with the times. Luckily, I've discovered a path forward that will make me happy, +while also not breaking anyone's app who adopted a prior versioning from tags in v2/v3/v4. I've made an experimental release of +v1.5.0 with go.mod silently, and tested it with new and old projects, to ensure the developer experience is preserved, and it's +largely unnoticed. Fortunately, Go's toolchain will check the tags of a repo and consider the "latest" tag the one with go.mod. +However, you can still request a specific older tag such as v4.1.2, and everything will "just work". But new users can just +`go get github.com/go-chi/chi` or `go get github.com/go-chi/chi@latest` and they will get the latest version which contains +go.mod support, which is v1.5.0+. `chi` will not change very much over the years, just like it hasn't changed much from 4 years ago. +Therefore, we will stay on v1.x from here on, starting from v1.5.0. Any breaking changes will bump a "minor" release and +backwards-compatible improvements/fixes will bump a "tiny" release. + +For existing projects who want to upgrade to the latest go.mod version, run: `go get -u github.com/go-chi/chi@v1.5.0`, +which will get you on the go.mod version line (as Go's mod cache may still remember v4.x). Brand new systems can run +`go get -u github.com/go-chi/chi` or `go get -u github.com/go-chi/chi@latest` to install chi, which will install v1.5.0+ +built with go.mod support. + +My apologies to the developers who will disagree with the decisions above, but, hope you'll try it and see it's a very +minor request which is backwards compatible and won't break your existing installations. + +Cheers all, happy coding! + + +--- + + +## v4.1.2 (2020-06-02) + +- fix that handles MethodNotAllowed with path variables, thank you @caseyhadden for your contribution +- fix to replace nested wildcards correctly in RoutePattern, thank you @@unmultimedio for your contribution +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.1...v4.1.2 + + +## v4.1.1 (2020-04-16) + +- fix for issue https://github.com/go-chi/chi/issues/411 which allows for overlapping regexp + route to the correct handler through a recursive tree search, thanks to @Jahaja for the PR/fix! +- new middleware.RouteHeaders as a simple router for request headers with wildcard support +- History of changes: see https://github.com/go-chi/chi/compare/v4.1.0...v4.1.1 + + +## v4.1.0 (2020-04-1) + +- middleware.LogEntry: Write method on interface now passes the response header + and an extra interface type useful for custom logger implementations. +- middleware.WrapResponseWriter: minor fix +- middleware.Recoverer: a bit prettier +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.4...v4.1.0 + +## v4.0.4 (2020-03-24) + +- middleware.Recoverer: new pretty stack trace printing (https://github.com/go-chi/chi/pull/496) +- a few minor improvements and fixes +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.3...v4.0.4 + + +## v4.0.3 (2020-01-09) + +- core: fix regexp routing to include default value when param is not matched +- middleware: rewrite of middleware.Compress +- middleware: suppress http.ErrAbortHandler in middleware.Recoverer +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.2...v4.0.3 + + +## v4.0.2 (2019-02-26) + +- Minor fixes +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.1...v4.0.2 + + +## v4.0.1 (2019-01-21) + +- Fixes issue with compress middleware: #382 #385 +- History of changes: see https://github.com/go-chi/chi/compare/v4.0.0...v4.0.1 + + +## v4.0.0 (2019-01-10) + +- chi v4 requires Go 1.10.3+ (or Go 1.9.7+) - we have deprecated support for Go 1.7 and 1.8 +- router: respond with 404 on router with no routes (#362) +- router: additional check to ensure wildcard is at the end of a url pattern (#333) +- middleware: deprecate use of http.CloseNotifier (#347) +- middleware: fix RedirectSlashes to include query params on redirect (#334) +- History of changes: see https://github.com/go-chi/chi/compare/v3.3.4...v4.0.0 + + +## v3.3.4 (2019-01-07) + +- Minor middleware improvements. No changes to core library/router. Moving v3 into its +- own branch as a version of chi for Go 1.7, 1.8, 1.9, 1.10, 1.11 +- History of changes: see https://github.com/go-chi/chi/compare/v3.3.3...v3.3.4 + + +## v3.3.3 (2018-08-27) + +- Minor release +- See https://github.com/go-chi/chi/compare/v3.3.2...v3.3.3 + + +## v3.3.2 (2017-12-22) + +- Support to route trailing slashes on mounted sub-routers (#281) +- middleware: new `ContentCharset` to check matching charsets. Thank you + @csucu for your community contribution! + + +## v3.3.1 (2017-11-20) + +- middleware: new `AllowContentType` handler for explicit whitelist of accepted request Content-Types +- middleware: new `SetHeader` handler for short-hand middleware to set a response header key/value +- Minor bug fixes + + +## v3.3.0 (2017-10-10) + +- New chi.RegisterMethod(method) to add support for custom HTTP methods, see _examples/custom-method for usage +- Deprecated LINK and UNLINK methods from the default list, please use `chi.RegisterMethod("LINK")` and `chi.RegisterMethod("UNLINK")` in an `init()` function + + +## v3.2.1 (2017-08-31) + +- Add new `Match(rctx *Context, method, path string) bool` method to `Routes` interface + and `Mux`. Match searches the mux's routing tree for a handler that matches the method/path +- Add new `RouteMethod` to `*Context` +- Add new `Routes` pointer to `*Context` +- Add new `middleware.GetHead` to route missing HEAD requests to GET handler +- Updated benchmarks (see README) + + +## v3.1.5 (2017-08-02) + +- Setup golint and go vet for the project +- As per golint, we've redefined `func ServerBaseContext(h http.Handler, baseCtx context.Context) http.Handler` + to `func ServerBaseContext(baseCtx context.Context, h http.Handler) http.Handler` + + +## v3.1.0 (2017-07-10) + +- Fix a few minor issues after v3 release +- Move `docgen` sub-pkg to https://github.com/go-chi/docgen +- Move `render` sub-pkg to https://github.com/go-chi/render +- Add new `URLFormat` handler to chi/middleware sub-pkg to make working with url mime + suffixes easier, ie. parsing `/articles/1.json` and `/articles/1.xml`. See comments in + https://github.com/go-chi/chi/blob/master/middleware/url_format.go for example usage. + + +## v3.0.0 (2017-06-21) + +- Major update to chi library with many exciting updates, but also some *breaking changes* +- URL parameter syntax changed from `/:id` to `/{id}` for even more flexible routing, such as + `/articles/{month}-{day}-{year}-{slug}`, `/articles/{id}`, and `/articles/{id}.{ext}` on the + same router +- Support for regexp for routing patterns, in the form of `/{paramKey:regExp}` for example: + `r.Get("/articles/{name:[a-z]+}", h)` and `chi.URLParam(r, "name")` +- Add `Method` and `MethodFunc` to `chi.Router` to allow routing definitions such as + `r.Method("GET", "/", h)` which provides a cleaner interface for custom handlers like + in `_examples/custom-handler` +- Deprecating `mux#FileServer` helper function. Instead, we encourage users to create their + own using file handler with the stdlib, see `_examples/fileserver` for an example +- Add support for LINK/UNLINK http methods via `r.Method()` and `r.MethodFunc()` +- Moved the chi project to its own organization, to allow chi-related community packages to + be easily discovered and supported, at: https://github.com/go-chi +- *NOTE:* please update your import paths to `"github.com/go-chi/chi"` +- *NOTE:* chi v2 is still available at https://github.com/go-chi/chi/tree/v2 + + +## v2.1.0 (2017-03-30) + +- Minor improvements and update to the chi core library +- Introduced a brand new `chi/render` sub-package to complete the story of building + APIs to offer a pattern for managing well-defined request / response payloads. Please + check out the updated `_examples/rest` example for how it works. +- Added `MethodNotAllowed(h http.HandlerFunc)` to chi.Router interface + + +## v2.0.0 (2017-01-06) + +- After many months of v2 being in an RC state with many companies and users running it in + production, the inclusion of some improvements to the middlewares, we are very pleased to + announce v2.0.0 of chi. + + +## v2.0.0-rc1 (2016-07-26) + +- Huge update! chi v2 is a large refactor targetting Go 1.7+. As of Go 1.7, the popular + community `"net/context"` package has been included in the standard library as `"context"` and + utilized by `"net/http"` and `http.Request` to managing deadlines, cancelation signals and other + request-scoped values. We're very excited about the new context addition and are proud to + introduce chi v2, a minimal and powerful routing package for building large HTTP services, + with zero external dependencies. Chi focuses on idiomatic design and encourages the use of + stdlib HTTP handlers and middlwares. +- chi v2 deprecates its `chi.Handler` interface and requires `http.Handler` or `http.HandlerFunc` +- chi v2 stores URL routing parameters and patterns in the standard request context: `r.Context()` +- chi v2 lower-level routing context is accessible by `chi.RouteContext(r.Context()) *chi.Context`, + which provides direct access to URL routing parameters, the routing path and the matching + routing patterns. +- Users upgrading from chi v1 to v2, need to: + 1. Update the old chi.Handler signature, `func(ctx context.Context, w http.ResponseWriter, r *http.Request)` to + the standard http.Handler: `func(w http.ResponseWriter, r *http.Request)` + 2. Use `chi.URLParam(r *http.Request, paramKey string) string` + or `URLParamFromCtx(ctx context.Context, paramKey string) string` to access a url parameter value + + +## v1.0.0 (2016-07-01) + +- Released chi v1 stable https://github.com/go-chi/chi/tree/v1.0.0 for Go 1.6 and older. + + +## v0.9.0 (2016-03-31) + +- Reuse context objects via sync.Pool for zero-allocation routing [#33](https://github.com/go-chi/chi/pull/33) +- BREAKING NOTE: due to subtle API changes, previously `chi.URLParams(ctx)["id"]` used to access url parameters + has changed to: `chi.URLParam(ctx, "id")` diff --git a/backend/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md b/backend/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md new file mode 100644 index 00000000..c0ac2dfe --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/CONTRIBUTING.md @@ -0,0 +1,31 @@ +# Contributing + +## Prerequisites + +1. [Install Go][go-install]. +2. Download the sources and switch the working directory: + + ```bash + go get -u -d github.com/go-chi/chi + cd $GOPATH/src/github.com/go-chi/chi + ``` + +## Submitting a Pull Request + +A typical workflow is: + +1. [Fork the repository.][fork] [This tip maybe also helpful.][go-fork-tip] +2. [Create a topic branch.][branch] +3. Add tests for your change. +4. Run `go test`. If your tests pass, return to the step 3. +5. Implement the change and ensure the steps from the previous step pass. +6. Run `goimports -w .`, to ensure the new code conforms to Go formatting guideline. +7. [Add, commit and push your changes.][git-help] +8. [Submit a pull request.][pull-req] + +[go-install]: https://golang.org/doc/install +[go-fork-tip]: http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html +[fork]: https://help.github.com/articles/fork-a-repo +[branch]: http://learn.github.com/p/branching.html +[git-help]: https://guides.github.com +[pull-req]: https://help.github.com/articles/using-pull-requests diff --git a/backend/vendor/github.com/go-chi/chi/v5/LICENSE b/backend/vendor/github.com/go-chi/chi/v5/LICENSE new file mode 100644 index 00000000..d99f02ff --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2015-present Peter Kieltyka (https://github.com/pkieltyka), Google Inc. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/backend/vendor/github.com/go-chi/chi/v5/Makefile b/backend/vendor/github.com/go-chi/chi/v5/Makefile new file mode 100644 index 00000000..b96c92dd --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/Makefile @@ -0,0 +1,14 @@ +all: + @echo "**********************************************************" + @echo "** chi build tool **" + @echo "**********************************************************" + + +test: + go clean -testcache && $(MAKE) test-router && $(MAKE) test-middleware + +test-router: + go test -race -v . + +test-middleware: + go test -race -v ./middleware diff --git a/backend/vendor/github.com/go-chi/chi/v5/README.md b/backend/vendor/github.com/go-chi/chi/v5/README.md new file mode 100644 index 00000000..55416e15 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/README.md @@ -0,0 +1,511 @@ +# chi + + +[![GoDoc Widget]][GoDoc] [![Travis Widget]][Travis] + +`chi` is a lightweight, idiomatic and composable router for building Go HTTP services. It's +especially good at helping you write large REST API services that are kept maintainable as your +project grows and changes. `chi` is built on the new `context` package introduced in Go 1.7 to +handle signaling, cancelation and request-scoped values across a handler chain. + +The focus of the project has been to seek out an elegant and comfortable design for writing +REST API servers, written during the development of the Pressly API service that powers our +public API service, which in turn powers all of our client-side applications. + +The key considerations of chi's design are: project structure, maintainability, standard http +handlers (stdlib-only), developer productivity, and deconstructing a large system into many small +parts. The core router `github.com/go-chi/chi` is quite small (less than 1000 LOC), but we've also +included some useful/optional subpackages: [middleware](/middleware), [render](https://github.com/go-chi/render) +and [docgen](https://github.com/go-chi/docgen). We hope you enjoy it too! + +## Install + +`go get -u github.com/go-chi/chi/v5` + + +## Features + +* **Lightweight** - cloc'd in ~1000 LOC for the chi router +* **Fast** - yes, see [benchmarks](#benchmarks) +* **100% compatible with net/http** - use any http or middleware pkg in the ecosystem that is also compatible with `net/http` +* **Designed for modular/composable APIs** - middlewares, inline middlewares, route groups and sub-router mounting +* **Context control** - built on new `context` package, providing value chaining, cancellations and timeouts +* **Robust** - in production at Pressly, CloudFlare, Heroku, 99Designs, and many others (see [discussion](https://github.com/go-chi/chi/issues/91)) +* **Doc generation** - `docgen` auto-generates routing documentation from your source to JSON or Markdown +* **Go.mod support** - v1.x of chi (starting from v1.5.0), now has go.mod support (see [CHANGELOG](https://github.com/go-chi/chi/blob/master/CHANGELOG.md#v150-2020-11-12---now-with-gomod-support)) +* **No external dependencies** - plain ol' Go stdlib + net/http + + +## Examples + +See [_examples/](https://github.com/go-chi/chi/blob/master/_examples/) for a variety of examples. + + +**As easy as:** + +```go +package main + +import ( + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" +) + +func main() { + r := chi.NewRouter() + r.Use(middleware.Logger) + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("welcome")) + }) + http.ListenAndServe(":3000", r) +} +``` + +**REST Preview:** + +Here is a little preview of how routing looks like with chi. Also take a look at the generated routing docs +in JSON ([routes.json](https://github.com/go-chi/chi/blob/master/_examples/rest/routes.json)) and in +Markdown ([routes.md](https://github.com/go-chi/chi/blob/master/_examples/rest/routes.md)). + +I highly recommend reading the source of the [examples](https://github.com/go-chi/chi/blob/master/_examples/) listed +above, they will show you all the features of chi and serve as a good form of documentation. + +```go +import ( + //... + "context" + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" +) + +func main() { + r := chi.NewRouter() + + // A good base middleware stack + r.Use(middleware.RequestID) + r.Use(middleware.RealIP) + r.Use(middleware.Logger) + r.Use(middleware.Recoverer) + + // Set a timeout value on the request context (ctx), that will signal + // through ctx.Done() that the request has timed out and further + // processing should be stopped. + r.Use(middleware.Timeout(60 * time.Second)) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("hi")) + }) + + // RESTy routes for "articles" resource + r.Route("/articles", func(r chi.Router) { + r.With(paginate).Get("/", listArticles) // GET /articles + r.With(paginate).Get("/{month}-{day}-{year}", listArticlesByDate) // GET /articles/01-16-2017 + + r.Post("/", createArticle) // POST /articles + r.Get("/search", searchArticles) // GET /articles/search + + // Regexp url parameters: + r.Get("/{articleSlug:[a-z-]+}", getArticleBySlug) // GET /articles/home-is-toronto + + // Subrouters: + r.Route("/{articleID}", func(r chi.Router) { + r.Use(ArticleCtx) + r.Get("/", getArticle) // GET /articles/123 + r.Put("/", updateArticle) // PUT /articles/123 + r.Delete("/", deleteArticle) // DELETE /articles/123 + }) + }) + + // Mount the admin sub-router + r.Mount("/admin", adminRouter()) + + http.ListenAndServe(":3333", r) +} + +func ArticleCtx(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + articleID := chi.URLParam(r, "articleID") + article, err := dbGetArticle(articleID) + if err != nil { + http.Error(w, http.StatusText(404), 404) + return + } + ctx := context.WithValue(r.Context(), "article", article) + next.ServeHTTP(w, r.WithContext(ctx)) + }) +} + +func getArticle(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + article, ok := ctx.Value("article").(*Article) + if !ok { + http.Error(w, http.StatusText(422), 422) + return + } + w.Write([]byte(fmt.Sprintf("title:%s", article.Title))) +} + +// A completely separate router for administrator routes +func adminRouter() http.Handler { + r := chi.NewRouter() + r.Use(AdminOnly) + r.Get("/", adminIndex) + r.Get("/accounts", adminListAccounts) + return r +} + +func AdminOnly(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + perm, ok := ctx.Value("acl.permission").(YourPermissionType) + if !ok || !perm.IsAdmin() { + http.Error(w, http.StatusText(403), 403) + return + } + next.ServeHTTP(w, r) + }) +} +``` + + +## Router interface + +chi's router is based on a kind of [Patricia Radix trie](https://en.wikipedia.org/wiki/Radix_tree). +The router is fully compatible with `net/http`. + +Built on top of the tree is the `Router` interface: + +```go +// Router consisting of the core routing methods used by chi's Mux, +// using only the standard net/http. +type Router interface { + http.Handler + Routes + + // Use appends one or more middlewares onto the Router stack. + Use(middlewares ...func(http.Handler) http.Handler) + + // With adds inline middlewares for an endpoint handler. + With(middlewares ...func(http.Handler) http.Handler) Router + + // Group adds a new inline-Router along the current routing + // path, with a fresh middleware stack for the inline-Router. + Group(fn func(r Router)) Router + + // Route mounts a sub-Router along a `pattern`` string. + Route(pattern string, fn func(r Router)) Router + + // Mount attaches another http.Handler along ./pattern/* + Mount(pattern string, h http.Handler) + + // Handle and HandleFunc adds routes for `pattern` that matches + // all HTTP methods. + Handle(pattern string, h http.Handler) + HandleFunc(pattern string, h http.HandlerFunc) + + // Method and MethodFunc adds routes for `pattern` that matches + // the `method` HTTP method. + Method(method, pattern string, h http.Handler) + MethodFunc(method, pattern string, h http.HandlerFunc) + + // HTTP-method routing along `pattern` + Connect(pattern string, h http.HandlerFunc) + Delete(pattern string, h http.HandlerFunc) + Get(pattern string, h http.HandlerFunc) + Head(pattern string, h http.HandlerFunc) + Options(pattern string, h http.HandlerFunc) + Patch(pattern string, h http.HandlerFunc) + Post(pattern string, h http.HandlerFunc) + Put(pattern string, h http.HandlerFunc) + Trace(pattern string, h http.HandlerFunc) + + // NotFound defines a handler to respond whenever a route could + // not be found. + NotFound(h http.HandlerFunc) + + // MethodNotAllowed defines a handler to respond whenever a method is + // not allowed. + MethodNotAllowed(h http.HandlerFunc) +} + +// Routes interface adds two methods for router traversal, which is also +// used by the github.com/go-chi/docgen package to generate documentation for Routers. +type Routes interface { + // Routes returns the routing tree in an easily traversable structure. + Routes() []Route + + // Middlewares returns the list of middlewares in use by the router. + Middlewares() Middlewares + + // Match searches the routing tree for a handler that matches + // the method/path - similar to routing a http request, but without + // executing the handler thereafter. + Match(rctx *Context, method, path string) bool +} +``` + +Each routing method accepts a URL `pattern` and chain of `handlers`. The URL pattern +supports named params (ie. `/users/{userID}`) and wildcards (ie. `/admin/*`). URL parameters +can be fetched at runtime by calling `chi.URLParam(r, "userID")` for named parameters +and `chi.URLParam(r, "*")` for a wildcard parameter. + + +### Middleware handlers + +chi's middlewares are just stdlib net/http middleware handlers. There is nothing special +about them, which means the router and all the tooling is designed to be compatible and +friendly with any middleware in the community. This offers much better extensibility and reuse +of packages and is at the heart of chi's purpose. + +Here is an example of a standard net/http middleware where we assign a context key `"user"` +the value of `"123"`. This middleware sets a hypothetical user identifier on the request +context and calls the next handler in the chain. + +```go +// HTTP middleware setting a value on the request context +func MyMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // create new context from `r` request context, and assign key `"user"` + // to value of `"123"` + ctx := context.WithValue(r.Context(), "user", "123") + + // call the next handler in the chain, passing the response writer and + // the updated request object with the new context value. + // + // note: context.Context values are nested, so any previously set + // values will be accessible as well, and the new `"user"` key + // will be accessible from this point forward. + next.ServeHTTP(w, r.WithContext(ctx)) + }) +} +``` + + +### Request handlers + +chi uses standard net/http request handlers. This little snippet is an example of a http.Handler +func that reads a user identifier from the request context - hypothetically, identifying +the user sending an authenticated request, validated+set by a previous middleware handler. + +```go +// HTTP handler accessing data from the request context. +func MyRequestHandler(w http.ResponseWriter, r *http.Request) { + // here we read from the request context and fetch out `"user"` key set in + // the MyMiddleware example above. + user := r.Context().Value("user").(string) + + // respond to the client + w.Write([]byte(fmt.Sprintf("hi %s", user))) +} +``` + + +### URL parameters + +chi's router parses and stores URL parameters right onto the request context. Here is +an example of how to access URL params in your net/http handlers. And of course, middlewares +are able to access the same information. + +```go +// HTTP handler accessing the url routing parameters. +func MyRequestHandler(w http.ResponseWriter, r *http.Request) { + // fetch the url parameter `"userID"` from the request of a matching + // routing pattern. An example routing pattern could be: /users/{userID} + userID := chi.URLParam(r, "userID") + + // fetch `"key"` from the request context + ctx := r.Context() + key := ctx.Value("key").(string) + + // respond to the client + w.Write([]byte(fmt.Sprintf("hi %v, %v", userID, key))) +} +``` + + +## Middlewares + +chi comes equipped with an optional `middleware` package, providing a suite of standard +`net/http` middlewares. Please note, any middleware in the ecosystem that is also compatible +with `net/http` can be used with chi's mux. + +### Core middlewares + +---------------------------------------------------------------------------------------------------- +| chi/middleware Handler | description | +| :--------------------- | :---------------------------------------------------------------------- | +| [AllowContentEncoding] | Enforces a whitelist of request Content-Encoding headers | +| [AllowContentType] | Explicit whitelist of accepted request Content-Types | +| [BasicAuth] | Basic HTTP authentication | +| [Compress] | Gzip compression for clients that accept compressed responses | +| [ContentCharset] | Ensure charset for Content-Type request headers | +| [CleanPath] | Clean double slashes from request path | +| [GetHead] | Automatically route undefined HEAD requests to GET handlers | +| [Heartbeat] | Monitoring endpoint to check the servers pulse | +| [Logger] | Logs the start and end of each request with the elapsed processing time | +| [NoCache] | Sets response headers to prevent clients from caching | +| [Profiler] | Easily attach net/http/pprof to your routers | +| [RealIP] | Sets a http.Request's RemoteAddr to either X-Forwarded-For or X-Real-IP | +| [Recoverer] | Gracefully absorb panics and prints the stack trace | +| [RequestID] | Injects a request ID into the context of each request | +| [RedirectSlashes] | Redirect slashes on routing paths | +| [RouteHeaders] | Route handling for request headers | +| [SetHeader] | Short-hand middleware to set a response header key/value | +| [StripSlashes] | Strip slashes on routing paths | +| [Throttle] | Puts a ceiling on the number of concurrent requests | +| [Timeout] | Signals to the request context when the timeout deadline is reached | +| [URLFormat] | Parse extension from url and put it on request context | +| [WithValue] | Short-hand middleware to set a key/value on the request context | +---------------------------------------------------------------------------------------------------- + +[AllowContentEncoding]: https://pkg.go.dev/github.com/go-chi/chi/middleware#AllowContentEncoding +[AllowContentType]: https://pkg.go.dev/github.com/go-chi/chi/middleware#AllowContentType +[BasicAuth]: https://pkg.go.dev/github.com/go-chi/chi/middleware#BasicAuth +[Compress]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Compress +[ContentCharset]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ContentCharset +[CleanPath]: https://pkg.go.dev/github.com/go-chi/chi/middleware#CleanPath +[GetHead]: https://pkg.go.dev/github.com/go-chi/chi/middleware#GetHead +[GetReqID]: https://pkg.go.dev/github.com/go-chi/chi/middleware#GetReqID +[Heartbeat]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Heartbeat +[Logger]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Logger +[NoCache]: https://pkg.go.dev/github.com/go-chi/chi/middleware#NoCache +[Profiler]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Profiler +[RealIP]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RealIP +[Recoverer]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Recoverer +[RedirectSlashes]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RedirectSlashes +[RequestLogger]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RequestLogger +[RequestID]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RequestID +[RouteHeaders]: https://pkg.go.dev/github.com/go-chi/chi/middleware#RouteHeaders +[SetHeader]: https://pkg.go.dev/github.com/go-chi/chi/middleware#SetHeader +[StripSlashes]: https://pkg.go.dev/github.com/go-chi/chi/middleware#StripSlashes +[Throttle]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Throttle +[ThrottleBacklog]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleBacklog +[ThrottleWithOpts]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleWithOpts +[Timeout]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Timeout +[URLFormat]: https://pkg.go.dev/github.com/go-chi/chi/middleware#URLFormat +[WithLogEntry]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WithLogEntry +[WithValue]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WithValue +[Compressor]: https://pkg.go.dev/github.com/go-chi/chi/middleware#Compressor +[DefaultLogFormatter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#DefaultLogFormatter +[EncoderFunc]: https://pkg.go.dev/github.com/go-chi/chi/middleware#EncoderFunc +[HeaderRoute]: https://pkg.go.dev/github.com/go-chi/chi/middleware#HeaderRoute +[HeaderRouter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#HeaderRouter +[LogEntry]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LogEntry +[LogFormatter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LogFormatter +[LoggerInterface]: https://pkg.go.dev/github.com/go-chi/chi/middleware#LoggerInterface +[ThrottleOpts]: https://pkg.go.dev/github.com/go-chi/chi/middleware#ThrottleOpts +[WrapResponseWriter]: https://pkg.go.dev/github.com/go-chi/chi/middleware#WrapResponseWriter + +### Extra middlewares & packages + +Please see https://github.com/go-chi for additional packages. + +-------------------------------------------------------------------------------------------------------------------- +| package | description | +|:---------------------------------------------------|:------------------------------------------------------------- +| [cors](https://github.com/go-chi/cors) | Cross-origin resource sharing (CORS) | +| [docgen](https://github.com/go-chi/docgen) | Print chi.Router routes at runtime | +| [jwtauth](https://github.com/go-chi/jwtauth) | JWT authentication | +| [hostrouter](https://github.com/go-chi/hostrouter) | Domain/host based request routing | +| [httplog](https://github.com/go-chi/httplog) | Small but powerful structured HTTP request logging | +| [httprate](https://github.com/go-chi/httprate) | HTTP request rate limiter | +| [httptracer](https://github.com/go-chi/httptracer) | HTTP request performance tracing library | +| [httpvcr](https://github.com/go-chi/httpvcr) | Write deterministic tests for external sources | +| [stampede](https://github.com/go-chi/stampede) | HTTP request coalescer | +-------------------------------------------------------------------------------------------------------------------- + + +## context? + +`context` is a tiny pkg that provides simple interface to signal context across call stacks +and goroutines. It was originally written by [Sameer Ajmani](https://github.com/Sajmani) +and is available in stdlib since go1.7. + +Learn more at https://blog.golang.org/context + +and.. +* Docs: https://golang.org/pkg/context +* Source: https://github.com/golang/go/tree/master/src/context + + +## Benchmarks + +The benchmark suite: https://github.com/pkieltyka/go-http-routing-benchmark + +Results as of Nov 29, 2020 with Go 1.15.5 on Linux AMD 3950x + +```shell +BenchmarkChi_Param 3075895 384 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Param5 2116603 566 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Param20 964117 1227 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParamWrite 2863413 420 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubStatic 3045488 395 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubParam 2204115 540 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GithubAll 10000 113811 ns/op 81203 B/op 406 allocs/op +BenchmarkChi_GPlusStatic 3337485 359 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlusParam 2825853 423 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlus2Params 2471697 483 ns/op 400 B/op 2 allocs/op +BenchmarkChi_GPlusAll 194220 5950 ns/op 5200 B/op 26 allocs/op +BenchmarkChi_ParseStatic 3365324 356 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParseParam 2976614 404 ns/op 400 B/op 2 allocs/op +BenchmarkChi_Parse2Params 2638084 439 ns/op 400 B/op 2 allocs/op +BenchmarkChi_ParseAll 109567 11295 ns/op 10400 B/op 52 allocs/op +BenchmarkChi_StaticAll 16846 71308 ns/op 62802 B/op 314 allocs/op +``` + +Comparison with other routers: https://gist.github.com/pkieltyka/123032f12052520aaccab752bd3e78cc + +NOTE: the allocs in the benchmark above are from the calls to http.Request's +`WithContext(context.Context)` method that clones the http.Request, sets the `Context()` +on the duplicated (alloc'd) request and returns it the new request object. This is just +how setting context on a request in Go works. + + +## Go module support & note on chi's versioning + +* Go.mod support means we reset our versioning starting from v1.5 (see [CHANGELOG](https://github.com/go-chi/chi/blob/master/CHANGELOG.md#v150-2020-11-12---now-with-gomod-support)) +* All older tags are preserved, are backwards-compatible and will "just work" as they +* Brand new systems can run `go get -u github.com/go-chi/chi` as normal, or `go get -u github.com/go-chi/chi@latest` +to install chi, which will install v1.x+ built with go.mod support, starting from v1.5.0. +* For existing projects who want to upgrade to the latest go.mod version, run: `go get -u github.com/go-chi/chi@v1.5.0`, +which will get you on the go.mod version line (as Go's mod cache may still remember v4.x). +* Any breaking changes will bump a "minor" release and backwards-compatible improvements/fixes will bump a "tiny" release. + + +## Credits + +* Carl Jackson for https://github.com/zenazn/goji + * Parts of chi's thinking comes from goji, and chi's middleware package + sources from goji. +* Armon Dadgar for https://github.com/armon/go-radix +* Contributions: [@VojtechVitek](https://github.com/VojtechVitek) + +We'll be more than happy to see [your contributions](./CONTRIBUTING.md)! + + +## Beyond REST + +chi is just a http router that lets you decompose request handling into many smaller layers. +Many companies use chi to write REST services for their public APIs. But, REST is just a convention +for managing state via HTTP, and there's a lot of other pieces required to write a complete client-server +system or network of microservices. + +Looking beyond REST, I also recommend some newer works in the field: +* [webrpc](https://github.com/webrpc/webrpc) - Web-focused RPC client+server framework with code-gen +* [gRPC](https://github.com/grpc/grpc-go) - Google's RPC framework via protobufs +* [graphql](https://github.com/99designs/gqlgen) - Declarative query language +* [NATS](https://nats.io) - lightweight pub-sub + + +## License + +Copyright (c) 2015-present [Peter Kieltyka](https://github.com/pkieltyka) + +Licensed under [MIT License](./LICENSE) + +[GoDoc]: https://pkg.go.dev/github.com/go-chi/chi?tab=versions +[GoDoc Widget]: https://godoc.org/github.com/go-chi/chi?status.svg +[Travis]: https://travis-ci.org/go-chi/chi +[Travis Widget]: https://travis-ci.org/go-chi/chi.svg?branch=master diff --git a/backend/vendor/github.com/go-chi/chi/v5/chain.go b/backend/vendor/github.com/go-chi/chi/v5/chain.go new file mode 100644 index 00000000..a2278414 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/chain.go @@ -0,0 +1,49 @@ +package chi + +import "net/http" + +// Chain returns a Middlewares type from a slice of middleware handlers. +func Chain(middlewares ...func(http.Handler) http.Handler) Middlewares { + return Middlewares(middlewares) +} + +// Handler builds and returns a http.Handler from the chain of middlewares, +// with `h http.Handler` as the final handler. +func (mws Middlewares) Handler(h http.Handler) http.Handler { + return &ChainHandler{h, chain(mws, h), mws} +} + +// HandlerFunc builds and returns a http.Handler from the chain of middlewares, +// with `h http.Handler` as the final handler. +func (mws Middlewares) HandlerFunc(h http.HandlerFunc) http.Handler { + return &ChainHandler{h, chain(mws, h), mws} +} + +// ChainHandler is a http.Handler with support for handler composition and +// execution. +type ChainHandler struct { + Endpoint http.Handler + chain http.Handler + Middlewares Middlewares +} + +func (c *ChainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + c.chain.ServeHTTP(w, r) +} + +// chain builds a http.Handler composed of an inline middleware stack and endpoint +// handler in the order they are passed. +func chain(middlewares []func(http.Handler) http.Handler, endpoint http.Handler) http.Handler { + // Return ahead of time if there aren't any middlewares for the chain + if len(middlewares) == 0 { + return endpoint + } + + // Wrap the end handler with the middleware chain + h := middlewares[len(middlewares)-1](endpoint) + for i := len(middlewares) - 2; i >= 0; i-- { + h = middlewares[i](h) + } + + return h +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/chi.go b/backend/vendor/github.com/go-chi/chi/v5/chi.go new file mode 100644 index 00000000..d2e5354d --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/chi.go @@ -0,0 +1,134 @@ +// +// Package chi is a small, idiomatic and composable router for building HTTP services. +// +// chi requires Go 1.10 or newer. +// +// Example: +// package main +// +// import ( +// "net/http" +// +// "github.com/go-chi/chi/v5" +// "github.com/go-chi/chi/v5/middleware" +// ) +// +// func main() { +// r := chi.NewRouter() +// r.Use(middleware.Logger) +// r.Use(middleware.Recoverer) +// +// r.Get("/", func(w http.ResponseWriter, r *http.Request) { +// w.Write([]byte("root.")) +// }) +// +// http.ListenAndServe(":3333", r) +// } +// +// See github.com/go-chi/chi/_examples/ for more in-depth examples. +// +// URL patterns allow for easy matching of path components in HTTP +// requests. The matching components can then be accessed using +// chi.URLParam(). All patterns must begin with a slash. +// +// A simple named placeholder {name} matches any sequence of characters +// up to the next / or the end of the URL. Trailing slashes on paths must +// be handled explicitly. +// +// A placeholder with a name followed by a colon allows a regular +// expression match, for example {number:\\d+}. The regular expression +// syntax is Go's normal regexp RE2 syntax, except that regular expressions +// including { or } are not supported, and / will never be +// matched. An anonymous regexp pattern is allowed, using an empty string +// before the colon in the placeholder, such as {:\\d+} +// +// The special placeholder of asterisk matches the rest of the requested +// URL. Any trailing characters in the pattern are ignored. This is the only +// placeholder which will match / characters. +// +// Examples: +// "/user/{name}" matches "/user/jsmith" but not "/user/jsmith/info" or "/user/jsmith/" +// "/user/{name}/info" matches "/user/jsmith/info" +// "/page/*" matches "/page/intro/latest" +// "/page/*/index" also matches "/page/intro/latest" +// "/date/{yyyy:\\d\\d\\d\\d}/{mm:\\d\\d}/{dd:\\d\\d}" matches "/date/2017/04/01" +// +package chi + +import "net/http" + +// NewRouter returns a new Mux object that implements the Router interface. +func NewRouter() *Mux { + return NewMux() +} + +// Router consisting of the core routing methods used by chi's Mux, +// using only the standard net/http. +type Router interface { + http.Handler + Routes + + // Use appends one or more middlewares onto the Router stack. + Use(middlewares ...func(http.Handler) http.Handler) + + // With adds inline middlewares for an endpoint handler. + With(middlewares ...func(http.Handler) http.Handler) Router + + // Group adds a new inline-Router along the current routing + // path, with a fresh middleware stack for the inline-Router. + Group(fn func(r Router)) Router + + // Route mounts a sub-Router along a `pattern`` string. + Route(pattern string, fn func(r Router)) Router + + // Mount attaches another http.Handler along ./pattern/* + Mount(pattern string, h http.Handler) + + // Handle and HandleFunc adds routes for `pattern` that matches + // all HTTP methods. + Handle(pattern string, h http.Handler) + HandleFunc(pattern string, h http.HandlerFunc) + + // Method and MethodFunc adds routes for `pattern` that matches + // the `method` HTTP method. + Method(method, pattern string, h http.Handler) + MethodFunc(method, pattern string, h http.HandlerFunc) + + // HTTP-method routing along `pattern` + Connect(pattern string, h http.HandlerFunc) + Delete(pattern string, h http.HandlerFunc) + Get(pattern string, h http.HandlerFunc) + Head(pattern string, h http.HandlerFunc) + Options(pattern string, h http.HandlerFunc) + Patch(pattern string, h http.HandlerFunc) + Post(pattern string, h http.HandlerFunc) + Put(pattern string, h http.HandlerFunc) + Trace(pattern string, h http.HandlerFunc) + + // NotFound defines a handler to respond whenever a route could + // not be found. + NotFound(h http.HandlerFunc) + + // MethodNotAllowed defines a handler to respond whenever a method is + // not allowed. + MethodNotAllowed(h http.HandlerFunc) +} + +// Routes interface adds two methods for router traversal, which is also +// used by the `docgen` subpackage to generation documentation for Routers. +type Routes interface { + // Routes returns the routing tree in an easily traversable structure. + Routes() []Route + + // Middlewares returns the list of middlewares in use by the router. + Middlewares() Middlewares + + // Match searches the routing tree for a handler that matches + // the method/path - similar to routing a http request, but without + // executing the handler thereafter. + Match(rctx *Context, method, path string) bool +} + +// Middlewares type is a slice of standard middleware handlers with methods +// to compose middleware chains and http.Handler's. +type Middlewares []func(http.Handler) http.Handler diff --git a/backend/vendor/github.com/go-chi/chi/v5/context.go b/backend/vendor/github.com/go-chi/chi/v5/context.go new file mode 100644 index 00000000..814c2630 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/context.go @@ -0,0 +1,157 @@ +package chi + +import ( + "context" + "net/http" + "strings" +) + +// URLParam returns the url parameter from a http.Request object. +func URLParam(r *http.Request, key string) string { + if rctx := RouteContext(r.Context()); rctx != nil { + return rctx.URLParam(key) + } + return "" +} + +// URLParamFromCtx returns the url parameter from a http.Request Context. +func URLParamFromCtx(ctx context.Context, key string) string { + if rctx := RouteContext(ctx); rctx != nil { + return rctx.URLParam(key) + } + return "" +} + +// RouteContext returns chi's routing Context object from a +// http.Request Context. +func RouteContext(ctx context.Context) *Context { + val, _ := ctx.Value(RouteCtxKey).(*Context) + return val +} + +// NewRouteContext returns a new routing Context object. +func NewRouteContext() *Context { + return &Context{} +} + +var ( + // RouteCtxKey is the context.Context key to store the request context. + RouteCtxKey = &contextKey{"RouteContext"} +) + +// Context is the default routing context set on the root node of a +// request context to track route patterns, URL parameters and +// an optional routing path. +type Context struct { + Routes Routes + + // parentCtx is the parent of this one, for using Context as a + // context.Context directly. This is an optimization that saves + // 1 allocation. + parentCtx context.Context + + // Routing path/method override used during the route search. + // See Mux#routeHTTP method. + RoutePath string + RouteMethod string + + // URLParams are the stack of routeParams captured during the + // routing lifecycle across a stack of sub-routers. + URLParams RouteParams + + // Route parameters matched for the current sub-router. It is + // intentionally unexported so it cant be tampered. + routeParams RouteParams + + // The endpoint routing pattern that matched the request URI path + // or `RoutePath` of the current sub-router. This value will update + // during the lifecycle of a request passing through a stack of + // sub-routers. + routePattern string + + // Routing pattern stack throughout the lifecycle of the request, + // across all connected routers. It is a record of all matching + // patterns across a stack of sub-routers. + RoutePatterns []string + + // methodNotAllowed hint + methodNotAllowed bool +} + +// Reset a routing context to its initial state. +func (x *Context) Reset() { + x.Routes = nil + x.RoutePath = "" + x.RouteMethod = "" + x.RoutePatterns = x.RoutePatterns[:0] + x.URLParams.Keys = x.URLParams.Keys[:0] + x.URLParams.Values = x.URLParams.Values[:0] + + x.routePattern = "" + x.routeParams.Keys = x.routeParams.Keys[:0] + x.routeParams.Values = x.routeParams.Values[:0] + x.methodNotAllowed = false + x.parentCtx = nil +} + +// URLParam returns the corresponding URL parameter value from the request +// routing context. +func (x *Context) URLParam(key string) string { + for k := len(x.URLParams.Keys) - 1; k >= 0; k-- { + if x.URLParams.Keys[k] == key { + return x.URLParams.Values[k] + } + } + return "" +} + +// RoutePattern builds the routing pattern string for the particular +// request, at the particular point during routing. This means, the value +// will change throughout the execution of a request in a router. That is +// why its advised to only use this value after calling the next handler. +// +// For example, +// +// func Instrument(next http.Handler) http.Handler { +// return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { +// next.ServeHTTP(w, r) +// routePattern := chi.RouteContext(r.Context()).RoutePattern() +// measure(w, r, routePattern) +// }) +// } +func (x *Context) RoutePattern() string { + routePattern := strings.Join(x.RoutePatterns, "") + return replaceWildcards(routePattern) +} + +// replaceWildcards takes a route pattern and recursively replaces all +// occurrences of "/*/" to "/". +func replaceWildcards(p string) string { + if strings.Contains(p, "/*/") { + return replaceWildcards(strings.Replace(p, "/*/", "/", -1)) + } + + return p +} + +// RouteParams is a structure to track URL routing parameters efficiently. +type RouteParams struct { + Keys, Values []string +} + +// Add will append a URL parameter to the end of the route param +func (s *RouteParams) Add(key, value string) { + s.Keys = append(s.Keys, key) + s.Values = append(s.Values, value) +} + +// contextKey is a value for use with context.WithValue. It's used as +// a pointer so it fits in an interface{} without allocation. This technique +// for defining context keys was copied from Go 1.7's new use of context in net/http. +type contextKey struct { + name string +} + +func (k *contextKey) String() string { + return "chi context value " + k.name +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/go.mod b/backend/vendor/github.com/go-chi/chi/v5/go.mod new file mode 100644 index 00000000..c084c1d5 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/go.mod @@ -0,0 +1,3 @@ +module github.com/go-chi/chi/v5 + +go 1.14 diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go new file mode 100644 index 00000000..a546c9e9 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/basic_auth.go @@ -0,0 +1,33 @@ +package middleware + +import ( + "crypto/subtle" + "fmt" + "net/http" +) + +// BasicAuth implements a simple middleware handler for adding basic http auth to a route. +func BasicAuth(realm string, creds map[string]string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + user, pass, ok := r.BasicAuth() + if !ok { + basicAuthFailed(w, realm) + return + } + + credPass, credUserOk := creds[user] + if !credUserOk || subtle.ConstantTimeCompare([]byte(pass), []byte(credPass)) != 1 { + basicAuthFailed(w, realm) + return + } + + next.ServeHTTP(w, r) + }) + } +} + +func basicAuthFailed(w http.ResponseWriter, realm string) { + w.Header().Add("WWW-Authenticate", fmt.Sprintf(`Basic realm="%s"`, realm)) + w.WriteHeader(http.StatusUnauthorized) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go new file mode 100644 index 00000000..adeba429 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/clean_path.go @@ -0,0 +1,28 @@ +package middleware + +import ( + "net/http" + "path" + + "github.com/go-chi/chi/v5" +) + +// CleanPath middleware will clean out double slash mistakes from a user's request path. +// For example, if a user requests /users//1 or //users////1 will both be treated as: /users/1 +func CleanPath(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + rctx := chi.RouteContext(r.Context()) + + routePath := rctx.RoutePath + if routePath == "" { + if r.URL.RawPath != "" { + routePath = r.URL.RawPath + } else { + routePath = r.URL.Path + } + rctx.RoutePath = path.Clean(routePath) + } + + next.ServeHTTP(w, r) + }) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/compress.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/compress.go new file mode 100644 index 00000000..75b56fd1 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/compress.go @@ -0,0 +1,399 @@ +package middleware + +import ( + "bufio" + "compress/flate" + "compress/gzip" + "errors" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "strings" + "sync" +) + +var defaultCompressibleContentTypes = []string{ + "text/html", + "text/css", + "text/plain", + "text/javascript", + "application/javascript", + "application/x-javascript", + "application/json", + "application/atom+xml", + "application/rss+xml", + "image/svg+xml", +} + +// Compress is a middleware that compresses response +// body of a given content types to a data format based +// on Accept-Encoding request header. It uses a given +// compression level. +// +// NOTE: make sure to set the Content-Type header on your response +// otherwise this middleware will not compress the response body. For ex, in +// your handler you should set w.Header().Set("Content-Type", http.DetectContentType(yourBody)) +// or set it manually. +// +// Passing a compression level of 5 is sensible value +func Compress(level int, types ...string) func(next http.Handler) http.Handler { + compressor := NewCompressor(level, types...) + return compressor.Handler +} + +// Compressor represents a set of encoding configurations. +type Compressor struct { + // The mapping of encoder names to encoder functions. + encoders map[string]EncoderFunc + // The mapping of pooled encoders to pools. + pooledEncoders map[string]*sync.Pool + // The set of content types allowed to be compressed. + allowedTypes map[string]struct{} + allowedWildcards map[string]struct{} + // The list of encoders in order of decreasing precedence. + encodingPrecedence []string + level int // The compression level. +} + +// NewCompressor creates a new Compressor that will handle encoding responses. +// +// The level should be one of the ones defined in the flate package. +// The types are the content types that are allowed to be compressed. +func NewCompressor(level int, types ...string) *Compressor { + // If types are provided, set those as the allowed types. If none are + // provided, use the default list. + allowedTypes := make(map[string]struct{}) + allowedWildcards := make(map[string]struct{}) + if len(types) > 0 { + for _, t := range types { + if strings.Contains(strings.TrimSuffix(t, "/*"), "*") { + panic(fmt.Sprintf("middleware/compress: Unsupported content-type wildcard pattern '%s'. Only '/*' supported", t)) + } + if strings.HasSuffix(t, "/*") { + allowedWildcards[strings.TrimSuffix(t, "/*")] = struct{}{} + } else { + allowedTypes[t] = struct{}{} + } + } + } else { + for _, t := range defaultCompressibleContentTypes { + allowedTypes[t] = struct{}{} + } + } + + c := &Compressor{ + level: level, + encoders: make(map[string]EncoderFunc), + pooledEncoders: make(map[string]*sync.Pool), + allowedTypes: allowedTypes, + allowedWildcards: allowedWildcards, + } + + // Set the default encoders. The precedence order uses the reverse + // ordering that the encoders were added. This means adding new encoders + // will move them to the front of the order. + // + // TODO: + // lzma: Opera. + // sdch: Chrome, Android. Gzip output + dictionary header. + // br: Brotli, see https://github.com/go-chi/chi/pull/326 + + // HTTP 1.1 "deflate" (RFC 2616) stands for DEFLATE data (RFC 1951) + // wrapped with zlib (RFC 1950). The zlib wrapper uses Adler-32 + // checksum compared to CRC-32 used in "gzip" and thus is faster. + // + // But.. some old browsers (MSIE, Safari 5.1) incorrectly expect + // raw DEFLATE data only, without the mentioned zlib wrapper. + // Because of this major confusion, most modern browsers try it + // both ways, first looking for zlib headers. + // Quote by Mark Adler: http://stackoverflow.com/a/9186091/385548 + // + // The list of browsers having problems is quite big, see: + // http://zoompf.com/blog/2012/02/lose-the-wait-http-compression + // https://web.archive.org/web/20120321182910/http://www.vervestudios.co/projects/compression-tests/results + // + // That's why we prefer gzip over deflate. It's just more reliable + // and not significantly slower than gzip. + c.SetEncoder("deflate", encoderDeflate) + + // TODO: Exception for old MSIE browsers that can't handle non-HTML? + // https://zoompf.com/blog/2012/02/lose-the-wait-http-compression + c.SetEncoder("gzip", encoderGzip) + + // NOTE: Not implemented, intentionally: + // case "compress": // LZW. Deprecated. + // case "bzip2": // Too slow on-the-fly. + // case "zopfli": // Too slow on-the-fly. + // case "xz": // Too slow on-the-fly. + return c +} + +// SetEncoder can be used to set the implementation of a compression algorithm. +// +// The encoding should be a standardised identifier. See: +// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding +// +// For example, add the Brotli algortithm: +// +// import brotli_enc "gopkg.in/kothar/brotli-go.v0/enc" +// +// compressor := middleware.NewCompressor(5, "text/html") +// compressor.SetEncoder("br", func(w http.ResponseWriter, level int) io.Writer { +// params := brotli_enc.NewBrotliParams() +// params.SetQuality(level) +// return brotli_enc.NewBrotliWriter(params, w) +// }) +func (c *Compressor) SetEncoder(encoding string, fn EncoderFunc) { + encoding = strings.ToLower(encoding) + if encoding == "" { + panic("the encoding can not be empty") + } + if fn == nil { + panic("attempted to set a nil encoder function") + } + + // If we are adding a new encoder that is already registered, we have to + // clear that one out first. + if _, ok := c.pooledEncoders[encoding]; ok { + delete(c.pooledEncoders, encoding) + } + if _, ok := c.encoders[encoding]; ok { + delete(c.encoders, encoding) + } + + // If the encoder supports Resetting (IoReseterWriter), then it can be pooled. + encoder := fn(ioutil.Discard, c.level) + if encoder != nil { + if _, ok := encoder.(ioResetterWriter); ok { + pool := &sync.Pool{ + New: func() interface{} { + return fn(ioutil.Discard, c.level) + }, + } + c.pooledEncoders[encoding] = pool + } + } + // If the encoder is not in the pooledEncoders, add it to the normal encoders. + if _, ok := c.pooledEncoders[encoding]; !ok { + c.encoders[encoding] = fn + } + + for i, v := range c.encodingPrecedence { + if v == encoding { + c.encodingPrecedence = append(c.encodingPrecedence[:i], c.encodingPrecedence[i+1:]...) + } + } + + c.encodingPrecedence = append([]string{encoding}, c.encodingPrecedence...) +} + +// Handler returns a new middleware that will compress the response based on the +// current Compressor. +func (c *Compressor) Handler(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + encoder, encoding, cleanup := c.selectEncoder(r.Header, w) + + cw := &compressResponseWriter{ + ResponseWriter: w, + w: w, + contentTypes: c.allowedTypes, + contentWildcards: c.allowedWildcards, + encoding: encoding, + compressable: false, // determined in post-handler + } + if encoder != nil { + cw.w = encoder + } + // Re-add the encoder to the pool if applicable. + defer cleanup() + defer cw.Close() + + next.ServeHTTP(cw, r) + }) +} + +// selectEncoder returns the encoder, the name of the encoder, and a closer function. +func (c *Compressor) selectEncoder(h http.Header, w io.Writer) (io.Writer, string, func()) { + header := h.Get("Accept-Encoding") + + // Parse the names of all accepted algorithms from the header. + accepted := strings.Split(strings.ToLower(header), ",") + + // Find supported encoder by accepted list by precedence + for _, name := range c.encodingPrecedence { + if matchAcceptEncoding(accepted, name) { + if pool, ok := c.pooledEncoders[name]; ok { + encoder := pool.Get().(ioResetterWriter) + cleanup := func() { + pool.Put(encoder) + } + encoder.Reset(w) + return encoder, name, cleanup + + } + if fn, ok := c.encoders[name]; ok { + return fn(w, c.level), name, func() {} + } + } + + } + + // No encoder found to match the accepted encoding + return nil, "", func() {} +} + +func matchAcceptEncoding(accepted []string, encoding string) bool { + for _, v := range accepted { + if strings.Contains(v, encoding) { + return true + } + } + return false +} + +// An EncoderFunc is a function that wraps the provided io.Writer with a +// streaming compression algorithm and returns it. +// +// In case of failure, the function should return nil. +type EncoderFunc func(w io.Writer, level int) io.Writer + +// Interface for types that allow resetting io.Writers. +type ioResetterWriter interface { + io.Writer + Reset(w io.Writer) +} + +type compressResponseWriter struct { + http.ResponseWriter + + // The streaming encoder writer to be used if there is one. Otherwise, + // this is just the normal writer. + w io.Writer + contentTypes map[string]struct{} + contentWildcards map[string]struct{} + encoding string + wroteHeader bool + compressable bool +} + +func (cw *compressResponseWriter) isCompressable() bool { + // Parse the first part of the Content-Type response header. + contentType := cw.Header().Get("Content-Type") + if idx := strings.Index(contentType, ";"); idx >= 0 { + contentType = contentType[0:idx] + } + + // Is the content type compressable? + if _, ok := cw.contentTypes[contentType]; ok { + return true + } + if idx := strings.Index(contentType, "/"); idx > 0 { + contentType = contentType[0:idx] + _, ok := cw.contentWildcards[contentType] + return ok + } + return false +} + +func (cw *compressResponseWriter) WriteHeader(code int) { + if cw.wroteHeader { + cw.ResponseWriter.WriteHeader(code) // Allow multiple calls to propagate. + return + } + cw.wroteHeader = true + defer cw.ResponseWriter.WriteHeader(code) + + // Already compressed data? + if cw.Header().Get("Content-Encoding") != "" { + return + } + + if !cw.isCompressable() { + cw.compressable = false + return + } + + if cw.encoding != "" { + cw.compressable = true + cw.Header().Set("Content-Encoding", cw.encoding) + cw.Header().Set("Vary", "Accept-Encoding") + + // The content-length after compression is unknown + cw.Header().Del("Content-Length") + } +} + +func (cw *compressResponseWriter) Write(p []byte) (int, error) { + if !cw.wroteHeader { + cw.WriteHeader(http.StatusOK) + } + + return cw.writer().Write(p) +} + +func (cw *compressResponseWriter) writer() io.Writer { + if cw.compressable { + return cw.w + } else { + return cw.ResponseWriter + } +} + +type compressFlusher interface { + Flush() error +} + +func (cw *compressResponseWriter) Flush() { + if f, ok := cw.writer().(http.Flusher); ok { + f.Flush() + } + // If the underlying writer has a compression flush signature, + // call this Flush() method instead + if f, ok := cw.writer().(compressFlusher); ok { + f.Flush() + + // Also flush the underlying response writer + if f, ok := cw.ResponseWriter.(http.Flusher); ok { + f.Flush() + } + } +} + +func (cw *compressResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + if hj, ok := cw.writer().(http.Hijacker); ok { + return hj.Hijack() + } + return nil, nil, errors.New("chi/middleware: http.Hijacker is unavailable on the writer") +} + +func (cw *compressResponseWriter) Push(target string, opts *http.PushOptions) error { + if ps, ok := cw.writer().(http.Pusher); ok { + return ps.Push(target, opts) + } + return errors.New("chi/middleware: http.Pusher is unavailable on the writer") +} + +func (cw *compressResponseWriter) Close() error { + if c, ok := cw.writer().(io.WriteCloser); ok { + return c.Close() + } + return errors.New("chi/middleware: io.WriteCloser is unavailable on the writer") +} + +func encoderGzip(w io.Writer, level int) io.Writer { + gw, err := gzip.NewWriterLevel(w, level) + if err != nil { + return nil + } + return gw +} + +func encoderDeflate(w io.Writer, level int) io.Writer { + dw, err := flate.NewWriter(w, level) + if err != nil { + return nil + } + return dw +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go new file mode 100644 index 00000000..07b5ce6f --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_charset.go @@ -0,0 +1,51 @@ +package middleware + +import ( + "net/http" + "strings" +) + +// ContentCharset generates a handler that writes a 415 Unsupported Media Type response if none of the charsets match. +// An empty charset will allow requests with no Content-Type header or no specified charset. +func ContentCharset(charsets ...string) func(next http.Handler) http.Handler { + for i, c := range charsets { + charsets[i] = strings.ToLower(c) + } + + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if !contentEncoding(r.Header.Get("Content-Type"), charsets...) { + w.WriteHeader(http.StatusUnsupportedMediaType) + return + } + + next.ServeHTTP(w, r) + }) + } +} + +// Check the content encoding against a list of acceptable values. +func contentEncoding(ce string, charsets ...string) bool { + _, ce = split(strings.ToLower(ce), ";") + _, ce = split(ce, "charset=") + ce, _ = split(ce, ";") + for _, c := range charsets { + if ce == c { + return true + } + } + + return false +} + +// Split a string in two parts, cleaning any whitespace. +func split(str, sep string) (string, string) { + var a, b string + var parts = strings.SplitN(str, sep, 2) + a = strings.TrimSpace(parts[0]) + if len(parts) == 2 { + b = strings.TrimSpace(parts[1]) + } + + return a, b +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go new file mode 100644 index 00000000..e0b9ccc0 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_encoding.go @@ -0,0 +1,34 @@ +package middleware + +import ( + "net/http" + "strings" +) + +// AllowContentEncoding enforces a whitelist of request Content-Encoding otherwise responds +// with a 415 Unsupported Media Type status. +func AllowContentEncoding(contentEncoding ...string) func(next http.Handler) http.Handler { + allowedEncodings := make(map[string]struct{}, len(contentEncoding)) + for _, encoding := range contentEncoding { + allowedEncodings[strings.TrimSpace(strings.ToLower(encoding))] = struct{}{} + } + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + requestEncodings := r.Header["Content-Encoding"] + // skip check for empty content body or no Content-Encoding + if r.ContentLength == 0 { + next.ServeHTTP(w, r) + return + } + // All encodings in the request must be allowed + for _, encoding := range requestEncodings { + if _, ok := allowedEncodings[strings.TrimSpace(strings.ToLower(encoding))]; !ok { + w.WriteHeader(http.StatusUnsupportedMediaType) + return + } + } + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/content_type.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_type.go new file mode 100644 index 00000000..023978fa --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/content_type.go @@ -0,0 +1,49 @@ +package middleware + +import ( + "net/http" + "strings" +) + +// SetHeader is a convenience handler to set a response header key/value +func SetHeader(key, value string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + w.Header().Set(key, value) + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} + +// AllowContentType enforces a whitelist of request Content-Types otherwise responds +// with a 415 Unsupported Media Type status. +func AllowContentType(contentTypes ...string) func(next http.Handler) http.Handler { + allowedContentTypes := make(map[string]struct{}, len(contentTypes)) + for _, ctype := range contentTypes { + allowedContentTypes[strings.TrimSpace(strings.ToLower(ctype))] = struct{}{} + } + + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + if r.ContentLength == 0 { + // skip check for empty content body + next.ServeHTTP(w, r) + return + } + + s := strings.ToLower(strings.TrimSpace(r.Header.Get("Content-Type"))) + if i := strings.Index(s, ";"); i > -1 { + s = s[0:i] + } + + if _, ok := allowedContentTypes[s]; ok { + next.ServeHTTP(w, r) + return + } + + w.WriteHeader(http.StatusUnsupportedMediaType) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/get_head.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/get_head.go new file mode 100644 index 00000000..d4606d8b --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/get_head.go @@ -0,0 +1,39 @@ +package middleware + +import ( + "net/http" + + "github.com/go-chi/chi/v5" +) + +// GetHead automatically route undefined HEAD requests to GET handlers. +func GetHead(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method == "HEAD" { + rctx := chi.RouteContext(r.Context()) + routePath := rctx.RoutePath + if routePath == "" { + if r.URL.RawPath != "" { + routePath = r.URL.RawPath + } else { + routePath = r.URL.Path + } + } + + // Temporary routing context to look-ahead before routing the request + tctx := chi.NewRouteContext() + + // Attempt to find a HEAD handler for the routing path, if not found, traverse + // the router as through its a GET route, but proceed with the request + // with the HEAD method. + if !rctx.Routes.Match(tctx, "HEAD", routePath) { + rctx.RouteMethod = "GET" + rctx.RoutePath = routePath + next.ServeHTTP(w, r) + return + } + } + + next.ServeHTTP(w, r) + }) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go new file mode 100644 index 00000000..fe822fb5 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/heartbeat.go @@ -0,0 +1,26 @@ +package middleware + +import ( + "net/http" + "strings" +) + +// Heartbeat endpoint middleware useful to setting up a path like +// `/ping` that load balancers or uptime testing external services +// can make a request before hitting any routes. It's also convenient +// to place this above ACL middlewares as well. +func Heartbeat(endpoint string) func(http.Handler) http.Handler { + f := func(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + if r.Method == "GET" && strings.EqualFold(r.URL.Path, endpoint) { + w.Header().Set("Content-Type", "text/plain") + w.WriteHeader(http.StatusOK) + w.Write([]byte(".")) + return + } + h.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } + return f +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/logger.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/logger.go new file mode 100644 index 00000000..66edc3dd --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/logger.go @@ -0,0 +1,174 @@ +package middleware + +import ( + "bytes" + "context" + "log" + "net/http" + "os" + "runtime" + "time" +) + +var ( + // LogEntryCtxKey is the context.Context key to store the request log entry. + LogEntryCtxKey = &contextKey{"LogEntry"} + + // DefaultLogger is called by the Logger middleware handler to log each request. + // Its made a package-level variable so that it can be reconfigured for custom + // logging configurations. + DefaultLogger func(next http.Handler) http.Handler +) + +// Logger is a middleware that logs the start and end of each request, along +// with some useful data about what was requested, what the response status was, +// and how long it took to return. When standard output is a TTY, Logger will +// print in color, otherwise it will print in black and white. Logger prints a +// request ID if one is provided. +// +// Alternatively, look at https://github.com/goware/httplog for a more in-depth +// http logger with structured logging support. +// +// IMPORTANT NOTE: Logger should go before any other middleware that may change +// the response, such as `middleware.Recoverer`. Example: +// +// ```go +// r := chi.NewRouter() +// r.Use(middleware.Logger) // <--<< Logger should come before Recoverer +// r.Use(middleware.Recoverer) +// r.Get("/", handler) +// ``` +func Logger(next http.Handler) http.Handler { + return DefaultLogger(next) +} + +// RequestLogger returns a logger handler using a custom LogFormatter. +func RequestLogger(f LogFormatter) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + entry := f.NewLogEntry(r) + ww := NewWrapResponseWriter(w, r.ProtoMajor) + + t1 := time.Now() + defer func() { + entry.Write(ww.Status(), ww.BytesWritten(), ww.Header(), time.Since(t1), nil) + }() + + next.ServeHTTP(ww, WithLogEntry(r, entry)) + } + return http.HandlerFunc(fn) + } +} + +// LogFormatter initiates the beginning of a new LogEntry per request. +// See DefaultLogFormatter for an example implementation. +type LogFormatter interface { + NewLogEntry(r *http.Request) LogEntry +} + +// LogEntry records the final log when a request completes. +// See defaultLogEntry for an example implementation. +type LogEntry interface { + Write(status, bytes int, header http.Header, elapsed time.Duration, extra interface{}) + Panic(v interface{}, stack []byte) +} + +// GetLogEntry returns the in-context LogEntry for a request. +func GetLogEntry(r *http.Request) LogEntry { + entry, _ := r.Context().Value(LogEntryCtxKey).(LogEntry) + return entry +} + +// WithLogEntry sets the in-context LogEntry for a request. +func WithLogEntry(r *http.Request, entry LogEntry) *http.Request { + r = r.WithContext(context.WithValue(r.Context(), LogEntryCtxKey, entry)) + return r +} + +// LoggerInterface accepts printing to stdlib logger or compatible logger. +type LoggerInterface interface { + Print(v ...interface{}) +} + +// DefaultLogFormatter is a simple logger that implements a LogFormatter. +type DefaultLogFormatter struct { + Logger LoggerInterface + NoColor bool +} + +// NewLogEntry creates a new LogEntry for the request. +func (l *DefaultLogFormatter) NewLogEntry(r *http.Request) LogEntry { + useColor := !l.NoColor + entry := &defaultLogEntry{ + DefaultLogFormatter: l, + request: r, + buf: &bytes.Buffer{}, + useColor: useColor, + } + + reqID := GetReqID(r.Context()) + if reqID != "" { + cW(entry.buf, useColor, nYellow, "[%s] ", reqID) + } + cW(entry.buf, useColor, nCyan, "\"") + cW(entry.buf, useColor, bMagenta, "%s ", r.Method) + + scheme := "http" + if r.TLS != nil { + scheme = "https" + } + cW(entry.buf, useColor, nCyan, "%s://%s%s %s\" ", scheme, r.Host, r.RequestURI, r.Proto) + + entry.buf.WriteString("from ") + entry.buf.WriteString(r.RemoteAddr) + entry.buf.WriteString(" - ") + + return entry +} + +type defaultLogEntry struct { + *DefaultLogFormatter + request *http.Request + buf *bytes.Buffer + useColor bool +} + +func (l *defaultLogEntry) Write(status, bytes int, header http.Header, elapsed time.Duration, extra interface{}) { + switch { + case status < 200: + cW(l.buf, l.useColor, bBlue, "%03d", status) + case status < 300: + cW(l.buf, l.useColor, bGreen, "%03d", status) + case status < 400: + cW(l.buf, l.useColor, bCyan, "%03d", status) + case status < 500: + cW(l.buf, l.useColor, bYellow, "%03d", status) + default: + cW(l.buf, l.useColor, bRed, "%03d", status) + } + + cW(l.buf, l.useColor, bBlue, " %dB", bytes) + + l.buf.WriteString(" in ") + if elapsed < 500*time.Millisecond { + cW(l.buf, l.useColor, nGreen, "%s", elapsed) + } else if elapsed < 5*time.Second { + cW(l.buf, l.useColor, nYellow, "%s", elapsed) + } else { + cW(l.buf, l.useColor, nRed, "%s", elapsed) + } + + l.Logger.Print(l.buf.String()) +} + +func (l *defaultLogEntry) Panic(v interface{}, stack []byte) { + PrintPrettyStack(v) +} + +func init() { + color := true + if runtime.GOOS == "windows" { + color = false + } + DefaultLogger = RequestLogger(&DefaultLogFormatter{Logger: log.New(os.Stdout, "", log.LstdFlags), NoColor: !color}) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/middleware.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/middleware.go new file mode 100644 index 00000000..cc371e00 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/middleware.go @@ -0,0 +1,23 @@ +package middleware + +import "net/http" + +// New will create a new middleware handler from a http.Handler. +func New(h http.Handler) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + }) + } +} + +// contextKey is a value for use with context.WithValue. It's used as +// a pointer so it fits in an interface{} without allocation. This technique +// for defining context keys was copied from Go 1.7's new use of context in net/http. +type contextKey struct { + name string +} + +func (k *contextKey) String() string { + return "chi/middleware context value " + k.name +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/nocache.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/nocache.go new file mode 100644 index 00000000..2412829e --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/nocache.go @@ -0,0 +1,58 @@ +package middleware + +// Ported from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "net/http" + "time" +) + +// Unix epoch time +var epoch = time.Unix(0, 0).Format(time.RFC1123) + +// Taken from https://github.com/mytrile/nocache +var noCacheHeaders = map[string]string{ + "Expires": epoch, + "Cache-Control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", + "Pragma": "no-cache", + "X-Accel-Expires": "0", +} + +var etagHeaders = []string{ + "ETag", + "If-Modified-Since", + "If-Match", + "If-None-Match", + "If-Range", + "If-Unmodified-Since", +} + +// NoCache is a simple piece of middleware that sets a number of HTTP headers to prevent +// a router (or subrouter) from being cached by an upstream proxy and/or client. +// +// As per http://wiki.nginx.org/HttpProxyModule - NoCache sets: +// Expires: Thu, 01 Jan 1970 00:00:00 UTC +// Cache-Control: no-cache, private, max-age=0 +// X-Accel-Expires: 0 +// Pragma: no-cache (for HTTP/1.0 proxies/clients) +func NoCache(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + + // Delete any ETag headers that may have been set + for _, v := range etagHeaders { + if r.Header.Get(v) != "" { + r.Header.Del(v) + } + } + + // Set our NoCache headers + for k, v := range noCacheHeaders { + w.Header().Set(k, v) + } + + h.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/profiler.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/profiler.go new file mode 100644 index 00000000..18158e56 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/profiler.go @@ -0,0 +1,55 @@ +package middleware + +import ( + "expvar" + "fmt" + "net/http" + "net/http/pprof" + + "github.com/go-chi/chi/v5" +) + +// Profiler is a convenient subrouter used for mounting net/http/pprof. ie. +// +// func MyService() http.Handler { +// r := chi.NewRouter() +// // ..middlewares +// r.Mount("/debug", middleware.Profiler()) +// // ..routes +// return r +// } +func Profiler() http.Handler { + r := chi.NewRouter() + r.Use(NoCache) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, r.RequestURI+"/pprof/", http.StatusMovedPermanently) + }) + r.HandleFunc("/pprof", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, r.RequestURI+"/", http.StatusMovedPermanently) + }) + + r.HandleFunc("/pprof/*", pprof.Index) + r.HandleFunc("/pprof/cmdline", pprof.Cmdline) + r.HandleFunc("/pprof/profile", pprof.Profile) + r.HandleFunc("/pprof/symbol", pprof.Symbol) + r.HandleFunc("/pprof/trace", pprof.Trace) + r.HandleFunc("/vars", expVars) + + return r +} + +// Replicated from expvar.go as not public. +func expVars(w http.ResponseWriter, r *http.Request) { + first := true + w.Header().Set("Content-Type", "application/json") + fmt.Fprintf(w, "{\n") + expvar.Do(func(kv expvar.KeyValue) { + if !first { + fmt.Fprintf(w, ",\n") + } + first = false + fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value) + }) + fmt.Fprintf(w, "\n}\n") +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/realip.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/realip.go new file mode 100644 index 00000000..72db6ca9 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/realip.go @@ -0,0 +1,54 @@ +package middleware + +// Ported from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "net/http" + "strings" +) + +var xForwardedFor = http.CanonicalHeaderKey("X-Forwarded-For") +var xRealIP = http.CanonicalHeaderKey("X-Real-IP") + +// RealIP is a middleware that sets a http.Request's RemoteAddr to the results +// of parsing either the X-Forwarded-For header or the X-Real-IP header (in that +// order). +// +// This middleware should be inserted fairly early in the middleware stack to +// ensure that subsequent layers (e.g., request loggers) which examine the +// RemoteAddr will see the intended value. +// +// You should only use this middleware if you can trust the headers passed to +// you (in particular, the two headers this middleware uses), for example +// because you have placed a reverse proxy like HAProxy or nginx in front of +// chi. If your reverse proxies are configured to pass along arbitrary header +// values from the client, or if you use this middleware without a reverse +// proxy, malicious clients will be able to make you very sad (or, depending on +// how you're using RemoteAddr, vulnerable to an attack of some sort). +func RealIP(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + if rip := realIP(r); rip != "" { + r.RemoteAddr = rip + } + h.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} + +func realIP(r *http.Request) string { + var ip string + + if xrip := r.Header.Get(xRealIP); xrip != "" { + ip = xrip + } else if xff := r.Header.Get(xForwardedFor); xff != "" { + i := strings.Index(xff, ", ") + if i == -1 { + i = len(xff) + } + ip = xff[:i] + } + + return ip +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go new file mode 100644 index 00000000..785b18c5 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/recoverer.go @@ -0,0 +1,192 @@ +package middleware + +// The original work was derived from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "bytes" + "errors" + "fmt" + "net/http" + "os" + "runtime/debug" + "strings" +) + +// Recoverer is a middleware that recovers from panics, logs the panic (and a +// backtrace), and returns a HTTP 500 (Internal Server Error) status if +// possible. Recoverer prints a request ID if one is provided. +// +// Alternatively, look at https://github.com/pressly/lg middleware pkgs. +func Recoverer(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + defer func() { + if rvr := recover(); rvr != nil && rvr != http.ErrAbortHandler { + + logEntry := GetLogEntry(r) + if logEntry != nil { + logEntry.Panic(rvr, debug.Stack()) + } else { + PrintPrettyStack(rvr) + } + + w.WriteHeader(http.StatusInternalServerError) + } + }() + + next.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} + +func PrintPrettyStack(rvr interface{}) { + debugStack := debug.Stack() + s := prettyStack{} + out, err := s.parse(debugStack, rvr) + if err == nil { + os.Stderr.Write(out) + } else { + // print stdlib output as a fallback + os.Stderr.Write(debugStack) + } +} + +type prettyStack struct { +} + +func (s prettyStack) parse(debugStack []byte, rvr interface{}) ([]byte, error) { + var err error + useColor := true + buf := &bytes.Buffer{} + + cW(buf, false, bRed, "\n") + cW(buf, useColor, bCyan, " panic: ") + cW(buf, useColor, bBlue, "%v", rvr) + cW(buf, false, bWhite, "\n \n") + + // process debug stack info + stack := strings.Split(string(debugStack), "\n") + lines := []string{} + + // locate panic line, as we may have nested panics + for i := len(stack) - 1; i > 0; i-- { + lines = append(lines, stack[i]) + if strings.HasPrefix(stack[i], "panic(0x") { + lines = lines[0 : len(lines)-2] // remove boilerplate + break + } + } + + // reverse + for i := len(lines)/2 - 1; i >= 0; i-- { + opp := len(lines) - 1 - i + lines[i], lines[opp] = lines[opp], lines[i] + } + + // decorate + for i, line := range lines { + lines[i], err = s.decorateLine(line, useColor, i) + if err != nil { + return nil, err + } + } + + for _, l := range lines { + fmt.Fprintf(buf, "%s", l) + } + return buf.Bytes(), nil +} + +func (s prettyStack) decorateLine(line string, useColor bool, num int) (string, error) { + line = strings.TrimSpace(line) + if strings.HasPrefix(line, "\t") || strings.Contains(line, ".go:") { + return s.decorateSourceLine(line, useColor, num) + } else if strings.HasSuffix(line, ")") { + return s.decorateFuncCallLine(line, useColor, num) + } else { + if strings.HasPrefix(line, "\t") { + return strings.Replace(line, "\t", " ", 1), nil + } else { + return fmt.Sprintf(" %s\n", line), nil + } + } +} + +func (s prettyStack) decorateFuncCallLine(line string, useColor bool, num int) (string, error) { + idx := strings.LastIndex(line, "(") + if idx < 0 { + return "", errors.New("not a func call line") + } + + buf := &bytes.Buffer{} + pkg := line[0:idx] + // addr := line[idx:] + method := "" + + idx = strings.LastIndex(pkg, string(os.PathSeparator)) + if idx < 0 { + idx = strings.Index(pkg, ".") + method = pkg[idx:] + pkg = pkg[0:idx] + } else { + method = pkg[idx+1:] + pkg = pkg[0 : idx+1] + idx = strings.Index(method, ".") + pkg += method[0:idx] + method = method[idx:] + } + pkgColor := nYellow + methodColor := bGreen + + if num == 0 { + cW(buf, useColor, bRed, " -> ") + pkgColor = bMagenta + methodColor = bRed + } else { + cW(buf, useColor, bWhite, " ") + } + cW(buf, useColor, pkgColor, "%s", pkg) + cW(buf, useColor, methodColor, "%s\n", method) + // cW(buf, useColor, nBlack, "%s", addr) + return buf.String(), nil +} + +func (s prettyStack) decorateSourceLine(line string, useColor bool, num int) (string, error) { + idx := strings.LastIndex(line, ".go:") + if idx < 0 { + return "", errors.New("not a source line") + } + + buf := &bytes.Buffer{} + path := line[0 : idx+3] + lineno := line[idx+3:] + + idx = strings.LastIndex(path, string(os.PathSeparator)) + dir := path[0 : idx+1] + file := path[idx+1:] + + idx = strings.Index(lineno, " ") + if idx > 0 { + lineno = lineno[0:idx] + } + fileColor := bCyan + lineColor := bGreen + + if num == 1 { + cW(buf, useColor, bRed, " -> ") + fileColor = bRed + lineColor = bMagenta + } else { + cW(buf, false, bWhite, " ") + } + cW(buf, useColor, bWhite, "%s", dir) + cW(buf, useColor, fileColor, "%s", file) + cW(buf, useColor, lineColor, "%s", lineno) + if num == 1 { + cW(buf, false, bWhite, "\n") + } + cW(buf, false, bWhite, "\n") + + return buf.String(), nil +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/request_id.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/request_id.go new file mode 100644 index 00000000..4903ecc2 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/request_id.go @@ -0,0 +1,96 @@ +package middleware + +// Ported from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "context" + "crypto/rand" + "encoding/base64" + "fmt" + "net/http" + "os" + "strings" + "sync/atomic" +) + +// Key to use when setting the request ID. +type ctxKeyRequestID int + +// RequestIDKey is the key that holds the unique request ID in a request context. +const RequestIDKey ctxKeyRequestID = 0 + +// RequestIDHeader is the name of the HTTP Header which contains the request id. +// Exported so that it can be changed by developers +var RequestIDHeader = "X-Request-Id" + +var prefix string +var reqid uint64 + +// A quick note on the statistics here: we're trying to calculate the chance that +// two randomly generated base62 prefixes will collide. We use the formula from +// http://en.wikipedia.org/wiki/Birthday_problem +// +// P[m, n] \approx 1 - e^{-m^2/2n} +// +// We ballpark an upper bound for $m$ by imagining (for whatever reason) a server +// that restarts every second over 10 years, for $m = 86400 * 365 * 10 = 315360000$ +// +// For a $k$ character base-62 identifier, we have $n(k) = 62^k$ +// +// Plugging this in, we find $P[m, n(10)] \approx 5.75%$, which is good enough for +// our purposes, and is surely more than anyone would ever need in practice -- a +// process that is rebooted a handful of times a day for a hundred years has less +// than a millionth of a percent chance of generating two colliding IDs. + +func init() { + hostname, err := os.Hostname() + if hostname == "" || err != nil { + hostname = "localhost" + } + var buf [12]byte + var b64 string + for len(b64) < 10 { + rand.Read(buf[:]) + b64 = base64.StdEncoding.EncodeToString(buf[:]) + b64 = strings.NewReplacer("+", "", "/", "").Replace(b64) + } + + prefix = fmt.Sprintf("%s/%s", hostname, b64[0:10]) +} + +// RequestID is a middleware that injects a request ID into the context of each +// request. A request ID is a string of the form "host.example.com/random-0001", +// where "random" is a base62 random string that uniquely identifies this go +// process, and where the last number is an atomically incremented request +// counter. +func RequestID(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + requestID := r.Header.Get(RequestIDHeader) + if requestID == "" { + myid := atomic.AddUint64(&reqid, 1) + requestID = fmt.Sprintf("%s-%06d", prefix, myid) + } + ctx = context.WithValue(ctx, RequestIDKey, requestID) + next.ServeHTTP(w, r.WithContext(ctx)) + } + return http.HandlerFunc(fn) +} + +// GetReqID returns a request ID from the given context if one is present. +// Returns the empty string if a request ID cannot be found. +func GetReqID(ctx context.Context) string { + if ctx == nil { + return "" + } + if reqID, ok := ctx.Value(RequestIDKey).(string); ok { + return reqID + } + return "" +} + +// NextRequestID generates the next request ID in the sequence. +func NextRequestID() uint64 { + return atomic.AddUint64(&reqid, 1) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go new file mode 100644 index 00000000..ea914a1d --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/route_headers.go @@ -0,0 +1,160 @@ +package middleware + +import ( + "net/http" + "strings" +) + +// RouteHeaders is a neat little header-based router that allows you to direct +// the flow of a request through a middleware stack based on a request header. +// +// For example, lets say you'd like to setup multiple routers depending on the +// request Host header, you could then do something as so: +// +// r := chi.NewRouter() +// rSubdomain := chi.NewRouter() +// +// r.Use(middleware.RouteHeaders(). +// Route("Host", "example.com", middleware.New(r)). +// Route("Host", "*.example.com", middleware.New(rSubdomain)). +// Handler) +// +// r.Get("/", h) +// rSubdomain.Get("/", h2) +// +// +// Another example, imagine you want to setup multiple CORS handlers, where for +// your origin servers you allow authorized requests, but for third-party public +// requests, authorization is disabled. +// +// r := chi.NewRouter() +// +// r.Use(middleware.RouteHeaders(). +// Route("Origin", "https://app.skyweaver.net", cors.Handler(cors.Options{ +// AllowedOrigins: []string{"https://api.skyweaver.net"}, +// AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, +// AllowedHeaders: []string{"Accept", "Authorization", "Content-Type"}, +// AllowCredentials: true, // <----------<<< allow credentials +// })). +// Route("Origin", "*", cors.Handler(cors.Options{ +// AllowedOrigins: []string{"*"}, +// AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, +// AllowedHeaders: []string{"Accept", "Content-Type"}, +// AllowCredentials: false, // <----------<<< do not allow credentials +// })). +// Handler) +// +func RouteHeaders() HeaderRouter { + return HeaderRouter{} +} + +type HeaderRouter map[string][]HeaderRoute + +func (hr HeaderRouter) Route(header, match string, middlewareHandler func(next http.Handler) http.Handler) HeaderRouter { + header = strings.ToLower(header) + k := hr[header] + if k == nil { + hr[header] = []HeaderRoute{} + } + hr[header] = append(hr[header], HeaderRoute{MatchOne: NewPattern(match), Middleware: middlewareHandler}) + return hr +} + +func (hr HeaderRouter) RouteAny(header string, match []string, middlewareHandler func(next http.Handler) http.Handler) HeaderRouter { + header = strings.ToLower(header) + k := hr[header] + if k == nil { + hr[header] = []HeaderRoute{} + } + patterns := []Pattern{} + for _, m := range match { + patterns = append(patterns, NewPattern(m)) + } + hr[header] = append(hr[header], HeaderRoute{MatchAny: patterns, Middleware: middlewareHandler}) + return hr +} + +func (hr HeaderRouter) RouteDefault(handler func(next http.Handler) http.Handler) HeaderRouter { + hr["*"] = []HeaderRoute{{Middleware: handler}} + return hr +} + +func (hr HeaderRouter) Handler(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if len(hr) == 0 { + // skip if no routes set + next.ServeHTTP(w, r) + } + + // find first matching header route, and continue + for header, matchers := range hr { + headerValue := r.Header.Get(header) + if headerValue == "" { + continue + } + headerValue = strings.ToLower(headerValue) + for _, matcher := range matchers { + if matcher.IsMatch(headerValue) { + matcher.Middleware(next).ServeHTTP(w, r) + return + } + } + } + + // if no match, check for "*" default route + matcher, ok := hr["*"] + if !ok || matcher[0].Middleware == nil { + next.ServeHTTP(w, r) + return + } + matcher[0].Middleware(next).ServeHTTP(w, r) + }) +} + +type HeaderRoute struct { + Middleware func(next http.Handler) http.Handler + MatchOne Pattern + MatchAny []Pattern +} + +func (r HeaderRoute) IsMatch(value string) bool { + if len(r.MatchAny) > 0 { + for _, m := range r.MatchAny { + if m.Match(value) { + return true + } + } + } else if r.MatchOne.Match(value) { + return true + } + return false +} + +type Pattern struct { + prefix string + suffix string + wildcard bool +} + +func NewPattern(value string) Pattern { + p := Pattern{} + if i := strings.IndexByte(value, '*'); i >= 0 { + p.wildcard = true + p.prefix = value[0:i] + p.suffix = value[i+1:] + } else { + p.prefix = value + } + return p +} + +func (p Pattern) Match(v string) bool { + if !p.wildcard { + if p.prefix == v { + return true + } else { + return false + } + } + return len(v) >= len(p.prefix+p.suffix) && strings.HasPrefix(v, p.prefix) && strings.HasSuffix(v, p.suffix) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/strip.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/strip.go new file mode 100644 index 00000000..ce8ebfcc --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/strip.go @@ -0,0 +1,62 @@ +package middleware + +import ( + "fmt" + "net/http" + + "github.com/go-chi/chi/v5" +) + +// StripSlashes is a middleware that will match request paths with a trailing +// slash, strip it from the path and continue routing through the mux, if a route +// matches, then it will serve the handler. +func StripSlashes(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + var path string + rctx := chi.RouteContext(r.Context()) + if rctx != nil && rctx.RoutePath != "" { + path = rctx.RoutePath + } else { + path = r.URL.Path + } + if len(path) > 1 && path[len(path)-1] == '/' { + newPath := path[:len(path)-1] + if rctx == nil { + r.URL.Path = newPath + } else { + rctx.RoutePath = newPath + } + } + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) +} + +// RedirectSlashes is a middleware that will match request paths with a trailing +// slash and redirect to the same path, less the trailing slash. +// +// NOTE: RedirectSlashes middleware is *incompatible* with http.FileServer, +// see https://github.com/go-chi/chi/issues/343 +func RedirectSlashes(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + var path string + rctx := chi.RouteContext(r.Context()) + if rctx != nil && rctx.RoutePath != "" { + path = rctx.RoutePath + } else { + path = r.URL.Path + } + if len(path) > 1 && path[len(path)-1] == '/' { + if r.URL.RawQuery != "" { + path = fmt.Sprintf("%s?%s", path[:len(path)-1], r.URL.RawQuery) + } else { + path = path[:len(path)-1] + } + redirectURL := fmt.Sprintf("//%s%s", r.Host, path) + http.Redirect(w, r, redirectURL, 301) + return + } + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/terminal.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/terminal.go new file mode 100644 index 00000000..5ead7b92 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/terminal.go @@ -0,0 +1,63 @@ +package middleware + +// Ported from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "fmt" + "io" + "os" +) + +var ( + // Normal colors + nBlack = []byte{'\033', '[', '3', '0', 'm'} + nRed = []byte{'\033', '[', '3', '1', 'm'} + nGreen = []byte{'\033', '[', '3', '2', 'm'} + nYellow = []byte{'\033', '[', '3', '3', 'm'} + nBlue = []byte{'\033', '[', '3', '4', 'm'} + nMagenta = []byte{'\033', '[', '3', '5', 'm'} + nCyan = []byte{'\033', '[', '3', '6', 'm'} + nWhite = []byte{'\033', '[', '3', '7', 'm'} + // Bright colors + bBlack = []byte{'\033', '[', '3', '0', ';', '1', 'm'} + bRed = []byte{'\033', '[', '3', '1', ';', '1', 'm'} + bGreen = []byte{'\033', '[', '3', '2', ';', '1', 'm'} + bYellow = []byte{'\033', '[', '3', '3', ';', '1', 'm'} + bBlue = []byte{'\033', '[', '3', '4', ';', '1', 'm'} + bMagenta = []byte{'\033', '[', '3', '5', ';', '1', 'm'} + bCyan = []byte{'\033', '[', '3', '6', ';', '1', 'm'} + bWhite = []byte{'\033', '[', '3', '7', ';', '1', 'm'} + + reset = []byte{'\033', '[', '0', 'm'} +) + +var IsTTY bool + +func init() { + // This is sort of cheating: if stdout is a character device, we assume + // that means it's a TTY. Unfortunately, there are many non-TTY + // character devices, but fortunately stdout is rarely set to any of + // them. + // + // We could solve this properly by pulling in a dependency on + // code.google.com/p/go.crypto/ssh/terminal, for instance, but as a + // heuristic for whether to print in color or in black-and-white, I'd + // really rather not. + fi, err := os.Stdout.Stat() + if err == nil { + m := os.ModeDevice | os.ModeCharDevice + IsTTY = fi.Mode()&m == m + } +} + +// colorWrite +func cW(w io.Writer, useColor bool, color []byte, s string, args ...interface{}) { + if IsTTY && useColor { + w.Write(color) + } + fmt.Fprintf(w, s, args...) + if IsTTY && useColor { + w.Write(reset) + } +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/throttle.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/throttle.go new file mode 100644 index 00000000..8dcb9440 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/throttle.go @@ -0,0 +1,132 @@ +package middleware + +import ( + "net/http" + "strconv" + "time" +) + +const ( + errCapacityExceeded = "Server capacity exceeded." + errTimedOut = "Timed out while waiting for a pending request to complete." + errContextCanceled = "Context was canceled." +) + +var ( + defaultBacklogTimeout = time.Second * 60 +) + +// ThrottleOpts represents a set of throttling options. +type ThrottleOpts struct { + RetryAfterFn func(ctxDone bool) time.Duration + Limit int + BacklogLimit int + BacklogTimeout time.Duration +} + +// Throttle is a middleware that limits number of currently processed requests +// at a time across all users. Note: Throttle is not a rate-limiter per user, +// instead it just puts a ceiling on the number of currentl in-flight requests +// being processed from the point from where the Throttle middleware is mounted. +func Throttle(limit int) func(http.Handler) http.Handler { + return ThrottleWithOpts(ThrottleOpts{Limit: limit, BacklogTimeout: defaultBacklogTimeout}) +} + +// ThrottleBacklog is a middleware that limits number of currently processed +// requests at a time and provides a backlog for holding a finite number of +// pending requests. +func ThrottleBacklog(limit, backlogLimit int, backlogTimeout time.Duration) func(http.Handler) http.Handler { + return ThrottleWithOpts(ThrottleOpts{Limit: limit, BacklogLimit: backlogLimit, BacklogTimeout: backlogTimeout}) +} + +// ThrottleWithOpts is a middleware that limits number of currently processed requests using passed ThrottleOpts. +func ThrottleWithOpts(opts ThrottleOpts) func(http.Handler) http.Handler { + if opts.Limit < 1 { + panic("chi/middleware: Throttle expects limit > 0") + } + + if opts.BacklogLimit < 0 { + panic("chi/middleware: Throttle expects backlogLimit to be positive") + } + + t := throttler{ + tokens: make(chan token, opts.Limit), + backlogTokens: make(chan token, opts.Limit+opts.BacklogLimit), + backlogTimeout: opts.BacklogTimeout, + retryAfterFn: opts.RetryAfterFn, + } + + // Filling tokens. + for i := 0; i < opts.Limit+opts.BacklogLimit; i++ { + if i < opts.Limit { + t.tokens <- token{} + } + t.backlogTokens <- token{} + } + + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + select { + + case <-ctx.Done(): + t.setRetryAfterHeaderIfNeeded(w, true) + http.Error(w, errContextCanceled, http.StatusTooManyRequests) + return + + case btok := <-t.backlogTokens: + timer := time.NewTimer(t.backlogTimeout) + + defer func() { + t.backlogTokens <- btok + }() + + select { + case <-timer.C: + t.setRetryAfterHeaderIfNeeded(w, false) + http.Error(w, errTimedOut, http.StatusTooManyRequests) + return + case <-ctx.Done(): + timer.Stop() + t.setRetryAfterHeaderIfNeeded(w, true) + http.Error(w, errContextCanceled, http.StatusTooManyRequests) + return + case tok := <-t.tokens: + defer func() { + timer.Stop() + t.tokens <- tok + }() + next.ServeHTTP(w, r) + } + return + + default: + t.setRetryAfterHeaderIfNeeded(w, false) + http.Error(w, errCapacityExceeded, http.StatusTooManyRequests) + return + } + } + + return http.HandlerFunc(fn) + } +} + +// token represents a request that is being processed. +type token struct{} + +// throttler limits number of currently processed requests at a time. +type throttler struct { + tokens chan token + backlogTokens chan token + retryAfterFn func(ctxDone bool) time.Duration + backlogTimeout time.Duration +} + +// setRetryAfterHeaderIfNeeded sets Retry-After HTTP header if corresponding retryAfterFn option of throttler is initialized. +func (t throttler) setRetryAfterHeaderIfNeeded(w http.ResponseWriter, ctxDone bool) { + if t.retryAfterFn == nil { + return + } + w.Header().Set("Retry-After", strconv.Itoa(int(t.retryAfterFn(ctxDone).Seconds()))) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/timeout.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/timeout.go new file mode 100644 index 00000000..8e373536 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/timeout.go @@ -0,0 +1,49 @@ +package middleware + +import ( + "context" + "net/http" + "time" +) + +// Timeout is a middleware that cancels ctx after a given timeout and return +// a 504 Gateway Timeout error to the client. +// +// It's required that you select the ctx.Done() channel to check for the signal +// if the context has reached its deadline and return, otherwise the timeout +// signal will be just ignored. +// +// ie. a route/handler may look like: +// +// r.Get("/long", func(w http.ResponseWriter, r *http.Request) { +// ctx := r.Context() +// processTime := time.Duration(rand.Intn(4)+1) * time.Second +// +// select { +// case <-ctx.Done(): +// return +// +// case <-time.After(processTime): +// // The above channel simulates some hard work. +// } +// +// w.Write([]byte("done")) +// }) +// +func Timeout(timeout time.Duration) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx, cancel := context.WithTimeout(r.Context(), timeout) + defer func() { + cancel() + if ctx.Err() == context.DeadlineExceeded { + w.WriteHeader(http.StatusGatewayTimeout) + } + }() + + r = r.WithContext(ctx) + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/url_format.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/url_format.go new file mode 100644 index 00000000..10d7134d --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/url_format.go @@ -0,0 +1,72 @@ +package middleware + +import ( + "context" + "net/http" + "strings" + + "github.com/go-chi/chi/v5" +) + +var ( + // URLFormatCtxKey is the context.Context key to store the URL format data + // for a request. + URLFormatCtxKey = &contextKey{"URLFormat"} +) + +// URLFormat is a middleware that parses the url extension from a request path and stores it +// on the context as a string under the key `middleware.URLFormatCtxKey`. The middleware will +// trim the suffix from the routing path and continue routing. +// +// Routers should not include a url parameter for the suffix when using this middleware. +// +// Sample usage.. for url paths: `/articles/1`, `/articles/1.json` and `/articles/1.xml` +// +// func routes() http.Handler { +// r := chi.NewRouter() +// r.Use(middleware.URLFormat) +// +// r.Get("/articles/{id}", ListArticles) +// +// return r +// } +// +// func ListArticles(w http.ResponseWriter, r *http.Request) { +// urlFormat, _ := r.Context().Value(middleware.URLFormatCtxKey).(string) +// +// switch urlFormat { +// case "json": +// render.JSON(w, r, articles) +// case "xml:" +// render.XML(w, r, articles) +// default: +// render.JSON(w, r, articles) +// } +// } +// +func URLFormat(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + var format string + path := r.URL.Path + + if strings.Index(path, ".") > 0 { + base := strings.LastIndex(path, "/") + idx := strings.LastIndex(path[base:], ".") + + if idx > 0 { + idx += base + format = path[idx+1:] + + rctx := chi.RouteContext(r.Context()) + rctx.RoutePath = path[:idx] + } + } + + r = r.WithContext(context.WithValue(ctx, URLFormatCtxKey, format)) + + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/value.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/value.go new file mode 100644 index 00000000..a9dfd434 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/value.go @@ -0,0 +1,17 @@ +package middleware + +import ( + "context" + "net/http" +) + +// WithValue is a middleware that sets a given key/value in a context chain. +func WithValue(key, val interface{}) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + r = r.WithContext(context.WithValue(r.Context(), key, val)) + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go b/backend/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go new file mode 100644 index 00000000..588887b8 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/middleware/wrap_writer.go @@ -0,0 +1,165 @@ +package middleware + +// The original work was derived from Goji's middleware, source: +// https://github.com/zenazn/goji/tree/master/web/middleware + +import ( + "bufio" + "io" + "net" + "net/http" +) + +// NewWrapResponseWriter wraps an http.ResponseWriter, returning a proxy that allows you to +// hook into various parts of the response process. +func NewWrapResponseWriter(w http.ResponseWriter, protoMajor int) WrapResponseWriter { + _, fl := w.(http.Flusher) + + bw := basicWriter{ResponseWriter: w} + + if protoMajor == 2 { + _, ps := w.(http.Pusher) + if fl || ps { + return &http2FancyWriter{bw} + } + } else { + _, hj := w.(http.Hijacker) + _, rf := w.(io.ReaderFrom) + if fl || hj || rf { + return &httpFancyWriter{bw} + } + } + + return &bw +} + +// WrapResponseWriter is a proxy around an http.ResponseWriter that allows you to hook +// into various parts of the response process. +type WrapResponseWriter interface { + http.ResponseWriter + // Status returns the HTTP status of the request, or 0 if one has not + // yet been sent. + Status() int + // BytesWritten returns the total number of bytes sent to the client. + BytesWritten() int + // Tee causes the response body to be written to the given io.Writer in + // addition to proxying the writes through. Only one io.Writer can be + // tee'd to at once: setting a second one will overwrite the first. + // Writes will be sent to the proxy before being written to this + // io.Writer. It is illegal for the tee'd writer to be modified + // concurrently with writes. + Tee(io.Writer) + // Unwrap returns the original proxied target. + Unwrap() http.ResponseWriter +} + +// basicWriter wraps a http.ResponseWriter that implements the minimal +// http.ResponseWriter interface. +type basicWriter struct { + http.ResponseWriter + tee io.Writer + code int + bytes int + wroteHeader bool +} + +func (b *basicWriter) WriteHeader(code int) { + if !b.wroteHeader { + b.code = code + b.wroteHeader = true + b.ResponseWriter.WriteHeader(code) + } +} + +func (b *basicWriter) Write(buf []byte) (int, error) { + b.maybeWriteHeader() + n, err := b.ResponseWriter.Write(buf) + if b.tee != nil { + _, err2 := b.tee.Write(buf[:n]) + // Prefer errors generated by the proxied writer. + if err == nil { + err = err2 + } + } + b.bytes += n + return n, err +} + +func (b *basicWriter) maybeWriteHeader() { + if !b.wroteHeader { + b.WriteHeader(http.StatusOK) + } +} + +func (b *basicWriter) Status() int { + return b.code +} + +func (b *basicWriter) BytesWritten() int { + return b.bytes +} + +func (b *basicWriter) Tee(w io.Writer) { + b.tee = w +} + +func (b *basicWriter) Unwrap() http.ResponseWriter { + return b.ResponseWriter +} + +// httpFancyWriter is a HTTP writer that additionally satisfies +// http.Flusher, http.Hijacker, and io.ReaderFrom. It exists for the common case +// of wrapping the http.ResponseWriter that package http gives you, in order to +// make the proxied object support the full method set of the proxied object. +type httpFancyWriter struct { + basicWriter +} + +func (f *httpFancyWriter) Flush() { + f.wroteHeader = true + fl := f.basicWriter.ResponseWriter.(http.Flusher) + fl.Flush() +} + +func (f *httpFancyWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + hj := f.basicWriter.ResponseWriter.(http.Hijacker) + return hj.Hijack() +} + +func (f *httpFancyWriter) ReadFrom(r io.Reader) (int64, error) { + if f.basicWriter.tee != nil { + n, err := io.Copy(&f.basicWriter, r) + f.basicWriter.bytes += int(n) + return n, err + } + rf := f.basicWriter.ResponseWriter.(io.ReaderFrom) + f.basicWriter.maybeWriteHeader() + n, err := rf.ReadFrom(r) + f.basicWriter.bytes += int(n) + return n, err +} + +var _ http.Flusher = &httpFancyWriter{} +var _ http.Hijacker = &httpFancyWriter{} +var _ io.ReaderFrom = &httpFancyWriter{} + +// http2FancyWriter is a HTTP2 writer that additionally satisfies +// http.Flusher, and io.ReaderFrom. It exists for the common case +// of wrapping the http.ResponseWriter that package http gives you, in order to +// make the proxied object support the full method set of the proxied object. +type http2FancyWriter struct { + basicWriter +} + +func (f *http2FancyWriter) Flush() { + f.wroteHeader = true + fl := f.basicWriter.ResponseWriter.(http.Flusher) + fl.Flush() +} + +func (f *http2FancyWriter) Push(target string, opts *http.PushOptions) error { + return f.basicWriter.ResponseWriter.(http.Pusher).Push(target, opts) +} + +var _ http.Flusher = &http2FancyWriter{} +var _ http.Pusher = &http2FancyWriter{} diff --git a/backend/vendor/github.com/go-chi/chi/v5/mux.go b/backend/vendor/github.com/go-chi/chi/v5/mux.go new file mode 100644 index 00000000..fff6a3c5 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/mux.go @@ -0,0 +1,485 @@ +package chi + +import ( + "context" + "fmt" + "net/http" + "strings" + "sync" +) + +var _ Router = &Mux{} + +// Mux is a simple HTTP route multiplexer that parses a request path, +// records any URL params, and executes an end handler. It implements +// the http.Handler interface and is friendly with the standard library. +// +// Mux is designed to be fast, minimal and offer a powerful API for building +// modular and composable HTTP services with a large set of handlers. It's +// particularly useful for writing large REST API services that break a handler +// into many smaller parts composed of middlewares and end handlers. +type Mux struct { + // The computed mux handler made of the chained middleware stack and + // the tree router + handler http.Handler + + // The radix trie router + tree *node + + // Custom method not allowed handler + methodNotAllowedHandler http.HandlerFunc + + // Controls the behaviour of middleware chain generation when a mux + // is registered as an inline group inside another mux. + parent *Mux + + // Routing context pool + pool *sync.Pool + + // Custom route not found handler + notFoundHandler http.HandlerFunc + + // The middleware stack + middlewares []func(http.Handler) http.Handler + + inline bool +} + +// NewMux returns a newly initialized Mux object that implements the Router +// interface. +func NewMux() *Mux { + mux := &Mux{tree: &node{}, pool: &sync.Pool{}} + mux.pool.New = func() interface{} { + return NewRouteContext() + } + return mux +} + +// ServeHTTP is the single method of the http.Handler interface that makes +// Mux interoperable with the standard library. It uses a sync.Pool to get and +// reuse routing contexts for each request. +func (mx *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // Ensure the mux has some routes defined on the mux + if mx.handler == nil { + mx.NotFoundHandler().ServeHTTP(w, r) + return + } + + // Check if a routing context already exists from a parent router. + rctx, _ := r.Context().Value(RouteCtxKey).(*Context) + if rctx != nil { + mx.handler.ServeHTTP(w, r) + return + } + + // Fetch a RouteContext object from the sync pool, and call the computed + // mx.handler that is comprised of mx.middlewares + mx.routeHTTP. + // Once the request is finished, reset the routing context and put it back + // into the pool for reuse from another request. + rctx = mx.pool.Get().(*Context) + rctx.Reset() + rctx.Routes = mx + rctx.parentCtx = r.Context() + + // NOTE: r.WithContext() causes 2 allocations and context.WithValue() causes 1 allocation + r = r.WithContext(context.WithValue(r.Context(), RouteCtxKey, rctx)) + + // Serve the request and once its done, put the request context back in the sync pool + mx.handler.ServeHTTP(w, r) + mx.pool.Put(rctx) +} + +// Use appends a middleware handler to the Mux middleware stack. +// +// The middleware stack for any Mux will execute before searching for a matching +// route to a specific handler, which provides opportunity to respond early, +// change the course of the request execution, or set request-scoped values for +// the next http.Handler. +func (mx *Mux) Use(middlewares ...func(http.Handler) http.Handler) { + if mx.handler != nil { + panic("chi: all middlewares must be defined before routes on a mux") + } + mx.middlewares = append(mx.middlewares, middlewares...) +} + +// Handle adds the route `pattern` that matches any http method to +// execute the `handler` http.Handler. +func (mx *Mux) Handle(pattern string, handler http.Handler) { + mx.handle(mALL, pattern, handler) +} + +// HandleFunc adds the route `pattern` that matches any http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) HandleFunc(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mALL, pattern, handlerFn) +} + +// Method adds the route `pattern` that matches `method` http method to +// execute the `handler` http.Handler. +func (mx *Mux) Method(method, pattern string, handler http.Handler) { + m, ok := methodMap[strings.ToUpper(method)] + if !ok { + panic(fmt.Sprintf("chi: '%s' http method is not supported.", method)) + } + mx.handle(m, pattern, handler) +} + +// MethodFunc adds the route `pattern` that matches `method` http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) MethodFunc(method, pattern string, handlerFn http.HandlerFunc) { + mx.Method(method, pattern, handlerFn) +} + +// Connect adds the route `pattern` that matches a CONNECT http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Connect(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mCONNECT, pattern, handlerFn) +} + +// Delete adds the route `pattern` that matches a DELETE http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Delete(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mDELETE, pattern, handlerFn) +} + +// Get adds the route `pattern` that matches a GET http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Get(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mGET, pattern, handlerFn) +} + +// Head adds the route `pattern` that matches a HEAD http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Head(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mHEAD, pattern, handlerFn) +} + +// Options adds the route `pattern` that matches a OPTIONS http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Options(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mOPTIONS, pattern, handlerFn) +} + +// Patch adds the route `pattern` that matches a PATCH http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Patch(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mPATCH, pattern, handlerFn) +} + +// Post adds the route `pattern` that matches a POST http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Post(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mPOST, pattern, handlerFn) +} + +// Put adds the route `pattern` that matches a PUT http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Put(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mPUT, pattern, handlerFn) +} + +// Trace adds the route `pattern` that matches a TRACE http method to +// execute the `handlerFn` http.HandlerFunc. +func (mx *Mux) Trace(pattern string, handlerFn http.HandlerFunc) { + mx.handle(mTRACE, pattern, handlerFn) +} + +// NotFound sets a custom http.HandlerFunc for routing paths that could +// not be found. The default 404 handler is `http.NotFound`. +func (mx *Mux) NotFound(handlerFn http.HandlerFunc) { + // Build NotFound handler chain + m := mx + hFn := handlerFn + if mx.inline && mx.parent != nil { + m = mx.parent + hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP + } + + // Update the notFoundHandler from this point forward + m.notFoundHandler = hFn + m.updateSubRoutes(func(subMux *Mux) { + if subMux.notFoundHandler == nil { + subMux.NotFound(hFn) + } + }) +} + +// MethodNotAllowed sets a custom http.HandlerFunc for routing paths where the +// method is unresolved. The default handler returns a 405 with an empty body. +func (mx *Mux) MethodNotAllowed(handlerFn http.HandlerFunc) { + // Build MethodNotAllowed handler chain + m := mx + hFn := handlerFn + if mx.inline && mx.parent != nil { + m = mx.parent + hFn = Chain(mx.middlewares...).HandlerFunc(hFn).ServeHTTP + } + + // Update the methodNotAllowedHandler from this point forward + m.methodNotAllowedHandler = hFn + m.updateSubRoutes(func(subMux *Mux) { + if subMux.methodNotAllowedHandler == nil { + subMux.MethodNotAllowed(hFn) + } + }) +} + +// With adds inline middlewares for an endpoint handler. +func (mx *Mux) With(middlewares ...func(http.Handler) http.Handler) Router { + // Similarly as in handle(), we must build the mux handler once additional + // middleware registration isn't allowed for this stack, like now. + if !mx.inline && mx.handler == nil { + mx.updateRouteHandler() + } + + // Copy middlewares from parent inline muxs + var mws Middlewares + if mx.inline { + mws = make(Middlewares, len(mx.middlewares)) + copy(mws, mx.middlewares) + } + mws = append(mws, middlewares...) + + im := &Mux{ + pool: mx.pool, inline: true, parent: mx, tree: mx.tree, middlewares: mws, + notFoundHandler: mx.notFoundHandler, methodNotAllowedHandler: mx.methodNotAllowedHandler, + } + + return im +} + +// Group creates a new inline-Mux with a fresh middleware stack. It's useful +// for a group of handlers along the same routing path that use an additional +// set of middlewares. See _examples/. +func (mx *Mux) Group(fn func(r Router)) Router { + im := mx.With().(*Mux) + if fn != nil { + fn(im) + } + return im +} + +// Route creates a new Mux with a fresh middleware stack and mounts it +// along the `pattern` as a subrouter. Effectively, this is a short-hand +// call to Mount. See _examples/. +func (mx *Mux) Route(pattern string, fn func(r Router)) Router { + if fn == nil { + panic(fmt.Sprintf("chi: attempting to Route() a nil subrouter on '%s'", pattern)) + } + subRouter := NewRouter() + fn(subRouter) + mx.Mount(pattern, subRouter) + return subRouter +} + +// Mount attaches another http.Handler or chi Router as a subrouter along a routing +// path. It's very useful to split up a large API as many independent routers and +// compose them as a single service using Mount. See _examples/. +// +// Note that Mount() simply sets a wildcard along the `pattern` that will continue +// routing at the `handler`, which in most cases is another chi.Router. As a result, +// if you define two Mount() routes on the exact same pattern the mount will panic. +func (mx *Mux) Mount(pattern string, handler http.Handler) { + if handler == nil { + panic(fmt.Sprintf("chi: attempting to Mount() a nil handler on '%s'", pattern)) + } + + // Provide runtime safety for ensuring a pattern isn't mounted on an existing + // routing pattern. + if mx.tree.findPattern(pattern+"*") || mx.tree.findPattern(pattern+"/*") { + panic(fmt.Sprintf("chi: attempting to Mount() a handler on an existing path, '%s'", pattern)) + } + + // Assign sub-Router's with the parent not found & method not allowed handler if not specified. + subr, ok := handler.(*Mux) + if ok && subr.notFoundHandler == nil && mx.notFoundHandler != nil { + subr.NotFound(mx.notFoundHandler) + } + if ok && subr.methodNotAllowedHandler == nil && mx.methodNotAllowedHandler != nil { + subr.MethodNotAllowed(mx.methodNotAllowedHandler) + } + + mountHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + rctx := RouteContext(r.Context()) + + // shift the url path past the previous subrouter + rctx.RoutePath = mx.nextRoutePath(rctx) + + // reset the wildcard URLParam which connects the subrouter + n := len(rctx.URLParams.Keys) - 1 + if n >= 0 && rctx.URLParams.Keys[n] == "*" && len(rctx.URLParams.Values) > n { + rctx.URLParams.Values[n] = "" + } + + handler.ServeHTTP(w, r) + }) + + if pattern == "" || pattern[len(pattern)-1] != '/' { + mx.handle(mALL|mSTUB, pattern, mountHandler) + mx.handle(mALL|mSTUB, pattern+"/", mountHandler) + pattern += "/" + } + + method := mALL + subroutes, _ := handler.(Routes) + if subroutes != nil { + method |= mSTUB + } + n := mx.handle(method, pattern+"*", mountHandler) + + if subroutes != nil { + n.subroutes = subroutes + } +} + +// Routes returns a slice of routing information from the tree, +// useful for traversing available routes of a router. +func (mx *Mux) Routes() []Route { + return mx.tree.routes() +} + +// Middlewares returns a slice of middleware handler functions. +func (mx *Mux) Middlewares() Middlewares { + return mx.middlewares +} + +// Match searches the routing tree for a handler that matches the method/path. +// It's similar to routing a http request, but without executing the handler +// thereafter. +// +// Note: the *Context state is updated during execution, so manage +// the state carefully or make a NewRouteContext(). +func (mx *Mux) Match(rctx *Context, method, path string) bool { + m, ok := methodMap[method] + if !ok { + return false + } + + node, _, h := mx.tree.FindRoute(rctx, m, path) + + if node != nil && node.subroutes != nil { + rctx.RoutePath = mx.nextRoutePath(rctx) + return node.subroutes.Match(rctx, method, rctx.RoutePath) + } + + return h != nil +} + +// NotFoundHandler returns the default Mux 404 responder whenever a route +// cannot be found. +func (mx *Mux) NotFoundHandler() http.HandlerFunc { + if mx.notFoundHandler != nil { + return mx.notFoundHandler + } + return http.NotFound +} + +// MethodNotAllowedHandler returns the default Mux 405 responder whenever +// a method cannot be resolved for a route. +func (mx *Mux) MethodNotAllowedHandler() http.HandlerFunc { + if mx.methodNotAllowedHandler != nil { + return mx.methodNotAllowedHandler + } + return methodNotAllowedHandler +} + +// handle registers a http.Handler in the routing tree for a particular http method +// and routing pattern. +func (mx *Mux) handle(method methodTyp, pattern string, handler http.Handler) *node { + if len(pattern) == 0 || pattern[0] != '/' { + panic(fmt.Sprintf("chi: routing pattern must begin with '/' in '%s'", pattern)) + } + + // Build the computed routing handler for this routing pattern. + if !mx.inline && mx.handler == nil { + mx.updateRouteHandler() + } + + // Build endpoint handler with inline middlewares for the route + var h http.Handler + if mx.inline { + mx.handler = http.HandlerFunc(mx.routeHTTP) + h = Chain(mx.middlewares...).Handler(handler) + } else { + h = handler + } + + // Add the endpoint to the tree and return the node + return mx.tree.InsertRoute(method, pattern, h) +} + +// routeHTTP routes a http.Request through the Mux routing tree to serve +// the matching handler for a particular http method. +func (mx *Mux) routeHTTP(w http.ResponseWriter, r *http.Request) { + // Grab the route context object + rctx := r.Context().Value(RouteCtxKey).(*Context) + + // The request routing path + routePath := rctx.RoutePath + if routePath == "" { + if r.URL.RawPath != "" { + routePath = r.URL.RawPath + } else { + routePath = r.URL.Path + } + if routePath == "" { + routePath = "/" + } + } + + // Check if method is supported by chi + if rctx.RouteMethod == "" { + rctx.RouteMethod = r.Method + } + method, ok := methodMap[rctx.RouteMethod] + if !ok { + mx.MethodNotAllowedHandler().ServeHTTP(w, r) + return + } + + // Find the route + if _, _, h := mx.tree.FindRoute(rctx, method, routePath); h != nil { + h.ServeHTTP(w, r) + return + } + if rctx.methodNotAllowed { + mx.MethodNotAllowedHandler().ServeHTTP(w, r) + } else { + mx.NotFoundHandler().ServeHTTP(w, r) + } +} + +func (mx *Mux) nextRoutePath(rctx *Context) string { + routePath := "/" + nx := len(rctx.routeParams.Keys) - 1 // index of last param in list + if nx >= 0 && rctx.routeParams.Keys[nx] == "*" && len(rctx.routeParams.Values) > nx { + routePath = "/" + rctx.routeParams.Values[nx] + } + return routePath +} + +// Recursively update data on child routers. +func (mx *Mux) updateSubRoutes(fn func(subMux *Mux)) { + for _, r := range mx.tree.routes() { + subMux, ok := r.SubRoutes.(*Mux) + if !ok { + continue + } + fn(subMux) + } +} + +// updateRouteHandler builds the single mux handler that is a chain of the middleware +// stack, as defined by calls to Use(), and the tree router (Mux) itself. After this +// point, no other middlewares can be registered on this Mux's stack. But you can still +// compose additional middlewares via Group()'s or using a chained middleware handler. +func (mx *Mux) updateRouteHandler() { + mx.handler = chain(mx.middlewares, http.HandlerFunc(mx.routeHTTP)) +} + +// methodNotAllowedHandler is a helper function to respond with a 405, +// method not allowed. +func methodNotAllowedHandler(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(405) + w.Write(nil) +} diff --git a/backend/vendor/github.com/go-chi/chi/v5/tree.go b/backend/vendor/github.com/go-chi/chi/v5/tree.go new file mode 100644 index 00000000..4189b522 --- /dev/null +++ b/backend/vendor/github.com/go-chi/chi/v5/tree.go @@ -0,0 +1,866 @@ +package chi + +// Radix tree implementation below is a based on the original work by +// Armon Dadgar in https://github.com/armon/go-radix/blob/master/radix.go +// (MIT licensed). It's been heavily modified for use as a HTTP routing tree. + +import ( + "fmt" + "net/http" + "regexp" + "sort" + "strconv" + "strings" +) + +type methodTyp uint + +const ( + mSTUB methodTyp = 1 << iota + mCONNECT + mDELETE + mGET + mHEAD + mOPTIONS + mPATCH + mPOST + mPUT + mTRACE +) + +var mALL = mCONNECT | mDELETE | mGET | mHEAD | + mOPTIONS | mPATCH | mPOST | mPUT | mTRACE + +var methodMap = map[string]methodTyp{ + http.MethodConnect: mCONNECT, + http.MethodDelete: mDELETE, + http.MethodGet: mGET, + http.MethodHead: mHEAD, + http.MethodOptions: mOPTIONS, + http.MethodPatch: mPATCH, + http.MethodPost: mPOST, + http.MethodPut: mPUT, + http.MethodTrace: mTRACE, +} + +// RegisterMethod adds support for custom HTTP method handlers, available +// via Router#Method and Router#MethodFunc +func RegisterMethod(method string) { + if method == "" { + return + } + method = strings.ToUpper(method) + if _, ok := methodMap[method]; ok { + return + } + n := len(methodMap) + if n > strconv.IntSize-2 { + panic(fmt.Sprintf("chi: max number of methods reached (%d)", strconv.IntSize)) + } + mt := methodTyp(2 << n) + methodMap[method] = mt + mALL |= mt +} + +type nodeTyp uint8 + +const ( + ntStatic nodeTyp = iota // /home + ntRegexp // /{id:[0-9]+} + ntParam // /{user} + ntCatchAll // /api/v1/* +) + +type node struct { + // subroutes on the leaf node + subroutes Routes + + // regexp matcher for regexp nodes + rex *regexp.Regexp + + // HTTP handler endpoints on the leaf node + endpoints endpoints + + // prefix is the common prefix we ignore + prefix string + + // child nodes should be stored in-order for iteration, + // in groups of the node type. + children [ntCatchAll + 1]nodes + + // first byte of the child prefix + tail byte + + // node type: static, regexp, param, catchAll + typ nodeTyp + + // first byte of the prefix + label byte +} + +// endpoints is a mapping of http method constants to handlers +// for a given route. +type endpoints map[methodTyp]*endpoint + +type endpoint struct { + // endpoint handler + handler http.Handler + + // pattern is the routing pattern for handler nodes + pattern string + + // parameter keys recorded on handler nodes + paramKeys []string +} + +func (s endpoints) Value(method methodTyp) *endpoint { + mh, ok := s[method] + if !ok { + mh = &endpoint{} + s[method] = mh + } + return mh +} + +func (n *node) InsertRoute(method methodTyp, pattern string, handler http.Handler) *node { + var parent *node + search := pattern + + for { + // Handle key exhaustion + if len(search) == 0 { + // Insert or update the node's leaf handler + n.setEndpoint(method, handler, pattern) + return n + } + + // We're going to be searching for a wild node next, + // in this case, we need to get the tail + var label = search[0] + var segTail byte + var segEndIdx int + var segTyp nodeTyp + var segRexpat string + if label == '{' || label == '*' { + segTyp, _, segRexpat, segTail, _, segEndIdx = patNextSegment(search) + } + + var prefix string + if segTyp == ntRegexp { + prefix = segRexpat + } + + // Look for the edge to attach to + parent = n + n = n.getEdge(segTyp, label, segTail, prefix) + + // No edge, create one + if n == nil { + child := &node{label: label, tail: segTail, prefix: search} + hn := parent.addChild(child, search) + hn.setEndpoint(method, handler, pattern) + + return hn + } + + // Found an edge to match the pattern + + if n.typ > ntStatic { + // We found a param node, trim the param from the search path and continue. + // This param/wild pattern segment would already be on the tree from a previous + // call to addChild when creating a new node. + search = search[segEndIdx:] + continue + } + + // Static nodes fall below here. + // Determine longest prefix of the search key on match. + commonPrefix := longestPrefix(search, n.prefix) + if commonPrefix == len(n.prefix) { + // the common prefix is as long as the current node's prefix we're attempting to insert. + // keep the search going. + search = search[commonPrefix:] + continue + } + + // Split the node + child := &node{ + typ: ntStatic, + prefix: search[:commonPrefix], + } + parent.replaceChild(search[0], segTail, child) + + // Restore the existing node + n.label = n.prefix[commonPrefix] + n.prefix = n.prefix[commonPrefix:] + child.addChild(n, n.prefix) + + // If the new key is a subset, set the method/handler on this node and finish. + search = search[commonPrefix:] + if len(search) == 0 { + child.setEndpoint(method, handler, pattern) + return child + } + + // Create a new edge for the node + subchild := &node{ + typ: ntStatic, + label: search[0], + prefix: search, + } + hn := child.addChild(subchild, search) + hn.setEndpoint(method, handler, pattern) + return hn + } +} + +// addChild appends the new `child` node to the tree using the `pattern` as the trie key. +// For a URL router like chi's, we split the static, param, regexp and wildcard segments +// into different nodes. In addition, addChild will recursively call itself until every +// pattern segment is added to the url pattern tree as individual nodes, depending on type. +func (n *node) addChild(child *node, prefix string) *node { + search := prefix + + // handler leaf node added to the tree is the child. + // this may be overridden later down the flow + hn := child + + // Parse next segment + segTyp, _, segRexpat, segTail, segStartIdx, segEndIdx := patNextSegment(search) + + // Add child depending on next up segment + switch segTyp { + + case ntStatic: + // Search prefix is all static (that is, has no params in path) + // noop + + default: + // Search prefix contains a param, regexp or wildcard + + if segTyp == ntRegexp { + rex, err := regexp.Compile(segRexpat) + if err != nil { + panic(fmt.Sprintf("chi: invalid regexp pattern '%s' in route param", segRexpat)) + } + child.prefix = segRexpat + child.rex = rex + } + + if segStartIdx == 0 { + // Route starts with a param + child.typ = segTyp + + if segTyp == ntCatchAll { + segStartIdx = -1 + } else { + segStartIdx = segEndIdx + } + if segStartIdx < 0 { + segStartIdx = len(search) + } + child.tail = segTail // for params, we set the tail + + if segStartIdx != len(search) { + // add static edge for the remaining part, split the end. + // its not possible to have adjacent param nodes, so its certainly + // going to be a static node next. + + search = search[segStartIdx:] // advance search position + + nn := &node{ + typ: ntStatic, + label: search[0], + prefix: search, + } + hn = child.addChild(nn, search) + } + + } else if segStartIdx > 0 { + // Route has some param + + // starts with a static segment + child.typ = ntStatic + child.prefix = search[:segStartIdx] + child.rex = nil + + // add the param edge node + search = search[segStartIdx:] + + nn := &node{ + typ: segTyp, + label: search[0], + tail: segTail, + } + hn = child.addChild(nn, search) + + } + } + + n.children[child.typ] = append(n.children[child.typ], child) + n.children[child.typ].Sort() + return hn +} + +func (n *node) replaceChild(label, tail byte, child *node) { + for i := 0; i < len(n.children[child.typ]); i++ { + if n.children[child.typ][i].label == label && n.children[child.typ][i].tail == tail { + n.children[child.typ][i] = child + n.children[child.typ][i].label = label + n.children[child.typ][i].tail = tail + return + } + } + panic("chi: replacing missing child") +} + +func (n *node) getEdge(ntyp nodeTyp, label, tail byte, prefix string) *node { + nds := n.children[ntyp] + for i := 0; i < len(nds); i++ { + if nds[i].label == label && nds[i].tail == tail { + if ntyp == ntRegexp && nds[i].prefix != prefix { + continue + } + return nds[i] + } + } + return nil +} + +func (n *node) setEndpoint(method methodTyp, handler http.Handler, pattern string) { + // Set the handler for the method type on the node + if n.endpoints == nil { + n.endpoints = make(endpoints) + } + + paramKeys := patParamKeys(pattern) + + if method&mSTUB == mSTUB { + n.endpoints.Value(mSTUB).handler = handler + } + if method&mALL == mALL { + h := n.endpoints.Value(mALL) + h.handler = handler + h.pattern = pattern + h.paramKeys = paramKeys + for _, m := range methodMap { + h := n.endpoints.Value(m) + h.handler = handler + h.pattern = pattern + h.paramKeys = paramKeys + } + } else { + h := n.endpoints.Value(method) + h.handler = handler + h.pattern = pattern + h.paramKeys = paramKeys + } +} + +func (n *node) FindRoute(rctx *Context, method methodTyp, path string) (*node, endpoints, http.Handler) { + // Reset the context routing pattern and params + rctx.routePattern = "" + rctx.routeParams.Keys = rctx.routeParams.Keys[:0] + rctx.routeParams.Values = rctx.routeParams.Values[:0] + + // Find the routing handlers for the path + rn := n.findRoute(rctx, method, path) + if rn == nil { + return nil, nil, nil + } + + // Record the routing params in the request lifecycle + rctx.URLParams.Keys = append(rctx.URLParams.Keys, rctx.routeParams.Keys...) + rctx.URLParams.Values = append(rctx.URLParams.Values, rctx.routeParams.Values...) + + // Record the routing pattern in the request lifecycle + if rn.endpoints[method].pattern != "" { + rctx.routePattern = rn.endpoints[method].pattern + rctx.RoutePatterns = append(rctx.RoutePatterns, rctx.routePattern) + } + + return rn, rn.endpoints, rn.endpoints[method].handler +} + +// Recursive edge traversal by checking all nodeTyp groups along the way. +// It's like searching through a multi-dimensional radix trie. +func (n *node) findRoute(rctx *Context, method methodTyp, path string) *node { + nn := n + search := path + + for t, nds := range nn.children { + ntyp := nodeTyp(t) + if len(nds) == 0 { + continue + } + + var xn *node + xsearch := search + + var label byte + if search != "" { + label = search[0] + } + + switch ntyp { + case ntStatic: + xn = nds.findEdge(label) + if xn == nil || !strings.HasPrefix(xsearch, xn.prefix) { + continue + } + xsearch = xsearch[len(xn.prefix):] + + case ntParam, ntRegexp: + // short-circuit and return no matching route for empty param values + if xsearch == "" { + continue + } + + // serially loop through each node grouped by the tail delimiter + for idx := 0; idx < len(nds); idx++ { + xn = nds[idx] + + // label for param nodes is the delimiter byte + p := strings.IndexByte(xsearch, xn.tail) + + if p < 0 { + if xn.tail == '/' { + p = len(xsearch) + } else { + continue + } + } else if ntyp == ntRegexp && p == 0 { + continue + } + + if ntyp == ntRegexp && xn.rex != nil { + if !xn.rex.MatchString(xsearch[:p]) { + continue + } + } else if strings.IndexByte(xsearch[:p], '/') != -1 { + // avoid a match across path segments + continue + } + + prevlen := len(rctx.routeParams.Values) + rctx.routeParams.Values = append(rctx.routeParams.Values, xsearch[:p]) + xsearch = xsearch[p:] + + if len(xsearch) == 0 { + if xn.isLeaf() { + h := xn.endpoints[method] + if h != nil && h.handler != nil { + rctx.routeParams.Keys = append(rctx.routeParams.Keys, h.paramKeys...) + return xn + } + + // flag that the routing context found a route, but not a corresponding + // supported method + rctx.methodNotAllowed = true + } + } + + // recursively find the next node on this branch + fin := xn.findRoute(rctx, method, xsearch) + if fin != nil { + return fin + } + + // not found on this branch, reset vars + rctx.routeParams.Values = rctx.routeParams.Values[:prevlen] + xsearch = search + } + + rctx.routeParams.Values = append(rctx.routeParams.Values, "") + + default: + // catch-all nodes + rctx.routeParams.Values = append(rctx.routeParams.Values, search) + xn = nds[0] + xsearch = "" + } + + if xn == nil { + continue + } + + // did we find it yet? + if len(xsearch) == 0 { + if xn.isLeaf() { + h := xn.endpoints[method] + if h != nil && h.handler != nil { + rctx.routeParams.Keys = append(rctx.routeParams.Keys, h.paramKeys...) + return xn + } + + // flag that the routing context found a route, but not a corresponding + // supported method + rctx.methodNotAllowed = true + } + } + + // recursively find the next node.. + fin := xn.findRoute(rctx, method, xsearch) + if fin != nil { + return fin + } + + // Did not find final handler, let's remove the param here if it was set + if xn.typ > ntStatic { + if len(rctx.routeParams.Values) > 0 { + rctx.routeParams.Values = rctx.routeParams.Values[:len(rctx.routeParams.Values)-1] + } + } + + } + + return nil +} + +func (n *node) findEdge(ntyp nodeTyp, label byte) *node { + nds := n.children[ntyp] + num := len(nds) + idx := 0 + + switch ntyp { + case ntStatic, ntParam, ntRegexp: + i, j := 0, num-1 + for i <= j { + idx = i + (j-i)/2 + if label > nds[idx].label { + i = idx + 1 + } else if label < nds[idx].label { + j = idx - 1 + } else { + i = num // breaks cond + } + } + if nds[idx].label != label { + return nil + } + return nds[idx] + + default: // catch all + return nds[idx] + } +} + +func (n *node) isLeaf() bool { + return n.endpoints != nil +} + +func (n *node) findPattern(pattern string) bool { + nn := n + for _, nds := range nn.children { + if len(nds) == 0 { + continue + } + + n = nn.findEdge(nds[0].typ, pattern[0]) + if n == nil { + continue + } + + var idx int + var xpattern string + + switch n.typ { + case ntStatic: + idx = longestPrefix(pattern, n.prefix) + if idx < len(n.prefix) { + continue + } + + case ntParam, ntRegexp: + idx = strings.IndexByte(pattern, '}') + 1 + + case ntCatchAll: + idx = longestPrefix(pattern, "*") + + default: + panic("chi: unknown node type") + } + + xpattern = pattern[idx:] + if len(xpattern) == 0 { + return true + } + + return n.findPattern(xpattern) + } + return false +} + +func (n *node) routes() []Route { + rts := []Route{} + + n.walk(func(eps endpoints, subroutes Routes) bool { + if eps[mSTUB] != nil && eps[mSTUB].handler != nil && subroutes == nil { + return false + } + + // Group methodHandlers by unique patterns + pats := make(map[string]endpoints) + + for mt, h := range eps { + if h.pattern == "" { + continue + } + p, ok := pats[h.pattern] + if !ok { + p = endpoints{} + pats[h.pattern] = p + } + p[mt] = h + } + + for p, mh := range pats { + hs := make(map[string]http.Handler) + if mh[mALL] != nil && mh[mALL].handler != nil { + hs["*"] = mh[mALL].handler + } + + for mt, h := range mh { + if h.handler == nil { + continue + } + m := methodTypString(mt) + if m == "" { + continue + } + hs[m] = h.handler + } + + rt := Route{subroutes, hs, p} + rts = append(rts, rt) + } + + return false + }) + + return rts +} + +func (n *node) walk(fn func(eps endpoints, subroutes Routes) bool) bool { + // Visit the leaf values if any + if (n.endpoints != nil || n.subroutes != nil) && fn(n.endpoints, n.subroutes) { + return true + } + + // Recurse on the children + for _, ns := range n.children { + for _, cn := range ns { + if cn.walk(fn) { + return true + } + } + } + return false +} + +// patNextSegment returns the next segment details from a pattern: +// node type, param key, regexp string, param tail byte, param starting index, param ending index +func patNextSegment(pattern string) (nodeTyp, string, string, byte, int, int) { + ps := strings.Index(pattern, "{") + ws := strings.Index(pattern, "*") + + if ps < 0 && ws < 0 { + return ntStatic, "", "", 0, 0, len(pattern) // we return the entire thing + } + + // Sanity check + if ps >= 0 && ws >= 0 && ws < ps { + panic("chi: wildcard '*' must be the last pattern in a route, otherwise use a '{param}'") + } + + var tail byte = '/' // Default endpoint tail to / byte + + if ps >= 0 { + // Param/Regexp pattern is next + nt := ntParam + + // Read to closing } taking into account opens and closes in curl count (cc) + cc := 0 + pe := ps + for i, c := range pattern[ps:] { + if c == '{' { + cc++ + } else if c == '}' { + cc-- + if cc == 0 { + pe = ps + i + break + } + } + } + if pe == ps { + panic("chi: route param closing delimiter '}' is missing") + } + + key := pattern[ps+1 : pe] + pe++ // set end to next position + + if pe < len(pattern) { + tail = pattern[pe] + } + + var rexpat string + if idx := strings.Index(key, ":"); idx >= 0 { + nt = ntRegexp + rexpat = key[idx+1:] + key = key[:idx] + } + + if len(rexpat) > 0 { + if rexpat[0] != '^' { + rexpat = "^" + rexpat + } + if rexpat[len(rexpat)-1] != '$' { + rexpat += "$" + } + } + + return nt, key, rexpat, tail, ps, pe + } + + // Wildcard pattern as finale + if ws < len(pattern)-1 { + panic("chi: wildcard '*' must be the last value in a route. trim trailing text or use a '{param}' instead") + } + return ntCatchAll, "*", "", 0, ws, len(pattern) +} + +func patParamKeys(pattern string) []string { + pat := pattern + paramKeys := []string{} + for { + ptyp, paramKey, _, _, _, e := patNextSegment(pat) + if ptyp == ntStatic { + return paramKeys + } + for i := 0; i < len(paramKeys); i++ { + if paramKeys[i] == paramKey { + panic(fmt.Sprintf("chi: routing pattern '%s' contains duplicate param key, '%s'", pattern, paramKey)) + } + } + paramKeys = append(paramKeys, paramKey) + pat = pat[e:] + } +} + +// longestPrefix finds the length of the shared prefix +// of two strings +func longestPrefix(k1, k2 string) int { + max := len(k1) + if l := len(k2); l < max { + max = l + } + var i int + for i = 0; i < max; i++ { + if k1[i] != k2[i] { + break + } + } + return i +} + +func methodTypString(method methodTyp) string { + for s, t := range methodMap { + if method == t { + return s + } + } + return "" +} + +type nodes []*node + +// Sort the list of nodes by label +func (ns nodes) Sort() { sort.Sort(ns); ns.tailSort() } +func (ns nodes) Len() int { return len(ns) } +func (ns nodes) Swap(i, j int) { ns[i], ns[j] = ns[j], ns[i] } +func (ns nodes) Less(i, j int) bool { return ns[i].label < ns[j].label } + +// tailSort pushes nodes with '/' as the tail to the end of the list for param nodes. +// The list order determines the traversal order. +func (ns nodes) tailSort() { + for i := len(ns) - 1; i >= 0; i-- { + if ns[i].typ > ntStatic && ns[i].tail == '/' { + ns.Swap(i, len(ns)-1) + return + } + } +} + +func (ns nodes) findEdge(label byte) *node { + num := len(ns) + idx := 0 + i, j := 0, num-1 + for i <= j { + idx = i + (j-i)/2 + if label > ns[idx].label { + i = idx + 1 + } else if label < ns[idx].label { + j = idx - 1 + } else { + i = num // breaks cond + } + } + if ns[idx].label != label { + return nil + } + return ns[idx] +} + +// Route describes the details of a routing handler. +// Handlers map key is an HTTP method +type Route struct { + SubRoutes Routes + Handlers map[string]http.Handler + Pattern string +} + +// WalkFunc is the type of the function called for each method and route visited by Walk. +type WalkFunc func(method string, route string, handler http.Handler, middlewares ...func(http.Handler) http.Handler) error + +// Walk walks any router tree that implements Routes interface. +func Walk(r Routes, walkFn WalkFunc) error { + return walk(r, walkFn, "") +} + +func walk(r Routes, walkFn WalkFunc, parentRoute string, parentMw ...func(http.Handler) http.Handler) error { + for _, route := range r.Routes() { + mws := make([]func(http.Handler) http.Handler, len(parentMw)) + copy(mws, parentMw) + mws = append(mws, r.Middlewares()...) + + if route.SubRoutes != nil { + if err := walk(route.SubRoutes, walkFn, parentRoute+route.Pattern, mws...); err != nil { + return err + } + continue + } + + for method, handler := range route.Handlers { + if method == "*" { + // Ignore a "catchAll" method, since we pass down all the specific methods for each route. + continue + } + + fullRoute := parentRoute + route.Pattern + fullRoute = strings.Replace(fullRoute, "/*/", "/", -1) + + if chain, ok := handler.(*ChainHandler); ok { + if err := walkFn(method, fullRoute, chain.Endpoint, append(mws, chain.Middlewares...)...); err != nil { + return err + } + } else { + if err := walkFn(method, fullRoute, handler, mws...); err != nil { + return err + } + } + } + } + + return nil +} diff --git a/backend/vendor/github.com/go-chi/cors/README.md b/backend/vendor/github.com/go-chi/cors/README.md index 1cd6b7f1..b41686b6 100644 --- a/backend/vendor/github.com/go-chi/cors/README.md +++ b/backend/vendor/github.com/go-chi/cors/README.md @@ -16,8 +16,8 @@ func main() { // Basic CORS // for more ideas, see: https://developer.github.com/v3/#cross-origin-resource-sharing r.Use(cors.Handler(cors.Options{ - // AllowedOrigins: []string{"https://foo.com"}, // Use this to allow specific origin hosts - AllowedOrigins: []string{"*"}, + // AllowedOrigins: []string{"https://foo.com"}, // Use this to allow specific origin hosts + AllowedOrigins: []string{"https://*", "http://*"}, // AllowOriginFunc: func(r *http.Request, origin string) bool { return true }, AllowedMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, AllowedHeaders: []string{"Accept", "Authorization", "Content-Type", "X-CSRF-Token"}, diff --git a/backend/vendor/github.com/go-chi/cors/go.mod b/backend/vendor/github.com/go-chi/cors/go.mod new file mode 100644 index 00000000..26ddfc1c --- /dev/null +++ b/backend/vendor/github.com/go-chi/cors/go.mod @@ -0,0 +1,3 @@ +module github.com/go-chi/cors + +go 1.14 diff --git a/backend/vendor/github.com/go-pkgz/rest/README.md b/backend/vendor/github.com/go-pkgz/rest/README.md index 243df598..5769f2c9 100644 --- a/backend/vendor/github.com/go-pkgz/rest/README.md +++ b/backend/vendor/github.com/go-pkgz/rest/README.md @@ -83,16 +83,39 @@ It looks for `X-Request-ID` header and makes it as a random id (if not found), then populates it to the result's header and to the request's context. -### Deprecation +### Deprecation middleware -Adds rhe HTTP Deprecation response header, see [draft-dalal-deprecation-header-00](https://tools.ietf.org/id/draft-dalal-deprecation-header-00.html +Adds the HTTP Deprecation response header, see [draft-dalal-deprecation-header-00](https://tools.ietf.org/id/draft-dalal-deprecation-header-00.html ) - + +### BasicAuth middleware + +BasicAuth middleware requires basic auth and matches user & passwd with client-provided checker. In case if no basic auth headers returns +`StatusUnauthorized`, in case if checker failed - `StatusForbidden` + +## Rewrite middleware + +Rewrites requests with from->to rule. Supports regex (like nginx) and prevents multiple rewrites. For example `Rewrite("^/sites/(.*)/settings/$", "/sites/settings/$1")` will change request's URL from `/sites/id1/settings/` to `/sites/settings/id1` + +## NoCache middleware + +Sets a number of HTTP headers to prevent a router (handler's) response from being cached by an upstream proxy and/or client. + +## Headers middleware + +Sets headers (passed as key:value) to requests. I.e. `rest.Headers("Server:MyServer", "X-Blah:Foo")` + +## Gzip middleware + +Compresses response with gzip. + ## Helpers +- `rest.Wrap` - converts a list of middlewares to nested handlers calls (in reverse order) - `rest.JSON` - map alias, just for convenience `type JSON map[string]interface{}` - `rest.RenderJSON` - renders json response from `interface{}` - `rest.RenderJSONFromBytes` - renders json response from `[]byte` - `rest.RenderJSONWithHTML` - renders json response with html tags and forced `charset=utf-8` - `rest.SendErrorJSON` - makes `{error: blah, details: blah}` json body and responds with given error code. Also, adds context to the logged message -- `rest.NewErrorLogger(l logger.Backend)` creates a struct providing shorter form of logger call +- `rest.NewErrorLogger` - creates a struct providing shorter form of logger call +- `rest.FileServer` - creates a file server for static assets with directory listing disabled diff --git a/backend/vendor/github.com/go-pkgz/rest/basic_auth.go b/backend/vendor/github.com/go-pkgz/rest/basic_auth.go new file mode 100644 index 00000000..6ed0c684 --- /dev/null +++ b/backend/vendor/github.com/go-pkgz/rest/basic_auth.go @@ -0,0 +1,26 @@ +package rest + +import ( + "net/http" +) + +// BasicAuth middleware requires basic auth and matches user & passwd with client-provided checker +func BasicAuth(checker func(user, passwd string) bool) func(http.Handler) http.Handler { + + return func(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + + u, p, ok := r.BasicAuth() + if !ok { + w.WriteHeader(http.StatusUnauthorized) + return + } + if !checker(u, p) { + w.WriteHeader(http.StatusForbidden) + return + } + h.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-pkgz/rest/cache_control.go b/backend/vendor/github.com/go-pkgz/rest/cache_control.go index 5a709339..b5950557 100644 --- a/backend/vendor/github.com/go-pkgz/rest/cache_control.go +++ b/backend/vendor/github.com/go-pkgz/rest/cache_control.go @@ -33,3 +33,30 @@ func CacheControl(expiration time.Duration, version string) func(http.Handler) h return http.HandlerFunc(fn) } } + +// CacheControlDynamic is a middleware setting cache expiration. Using url+ func(r) for etag +func CacheControlDynamic(expiration time.Duration, versionFn func(r *http.Request) string) func(http.Handler) http.Handler { + + etag := func(r *http.Request, version string) string { + s := fmt.Sprintf("%s:%s", version, r.URL.String()) + return fmt.Sprintf("%x", sha1.Sum([]byte(s))) //nolint + } + + return func(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + + e := `"` + etag(r, versionFn(r)) + `"` + w.Header().Set("Etag", e) + w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%d, no-cache", int(expiration.Seconds()))) + + if match := r.Header.Get("If-None-Match"); match != "" { + if strings.Contains(match, e) { + w.WriteHeader(http.StatusNotModified) + return + } + } + h.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-pkgz/rest/go.mod b/backend/vendor/github.com/go-pkgz/rest/go.mod index aab6b51d..7898921e 100644 --- a/backend/vendor/github.com/go-pkgz/rest/go.mod +++ b/backend/vendor/github.com/go-pkgz/rest/go.mod @@ -4,5 +4,5 @@ go 1.15 require ( github.com/pkg/errors v0.9.1 - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.7.0 ) diff --git a/backend/vendor/github.com/go-pkgz/rest/go.sum b/backend/vendor/github.com/go-pkgz/rest/go.sum index 7034f5b8..0caa82c6 100644 --- a/backend/vendor/github.com/go-pkgz/rest/go.sum +++ b/backend/vendor/github.com/go-pkgz/rest/go.sum @@ -8,6 +8,8 @@ github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/backend/vendor/github.com/go-pkgz/rest/gzip.go b/backend/vendor/github.com/go-pkgz/rest/gzip.go new file mode 100644 index 00000000..c5e77c90 --- /dev/null +++ b/backend/vendor/github.com/go-pkgz/rest/gzip.go @@ -0,0 +1,89 @@ +package rest + +import ( + "compress/gzip" + "io" + "io/ioutil" + "net/http" + "strings" + "sync" +) + +var gzDefaultContentTypes = []string{ + "text/css", + "text/javascript", + "text/xml", + "text/html", + "text/plain", + "application/javascript", + "application/x-javascript", + "application/json", +} + +var gzPool = sync.Pool{ + New: func() interface{} { return gzip.NewWriter(ioutil.Discard) }, +} + +type gzipResponseWriter struct { + io.Writer + http.ResponseWriter +} + +func (w *gzipResponseWriter) WriteHeader(status int) { + w.Header().Del("Content-Length") + w.ResponseWriter.WriteHeader(status) +} + +func (w *gzipResponseWriter) Write(b []byte) (int, error) { + return w.Writer.Write(b) +} + +// Gzip is a middleware compressing response +func Gzip(contentTypes ...string) func(http.Handler) http.Handler { + + gzCts := gzDefaultContentTypes + if len(contentTypes) > 0 { + gzCts = contentTypes + } + + contentType := func(r *http.Request) string { + result := r.Header.Get("Content-type") + if result == "" { + return "application/octet-stream" + } + return result + } + + f := func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { + next.ServeHTTP(w, r) + return + } + + var gzOk bool + ctype := contentType(r) + for _, c := range gzCts { + if strings.HasPrefix(strings.ToLower(ctype), strings.ToLower(c)) { + gzOk = true + break + } + } + + if !gzOk { + next.ServeHTTP(w, r) + return + } + + w.Header().Set("Content-Encoding", "gzip") + gz := gzPool.Get().(*gzip.Writer) + defer gzPool.Put(gz) + + gz.Reset(w) + defer gz.Close() + + next.ServeHTTP(&gzipResponseWriter{ResponseWriter: w, Writer: gz}, r) + }) + } + return f +} diff --git a/backend/vendor/github.com/go-pkgz/rest/httperrors.go b/backend/vendor/github.com/go-pkgz/rest/httperrors.go index 45bed815..704ef745 100644 --- a/backend/vendor/github.com/go-pkgz/rest/httperrors.go +++ b/backend/vendor/github.com/go-pkgz/rest/httperrors.go @@ -30,8 +30,7 @@ func (e *ErrorLogger) Log(w http.ResponseWriter, r *http.Request, httpCode int, if e.l != nil { e.l.Logf("%s", errDetailsMsg(r, httpCode, err, m)) } - w.WriteHeader(httpCode) - RenderJSON(w, JSON{"error": m}) + renderJSONWithStatus(w, JSON{"error": m}, httpCode) } // SendErrorJSON sends {error: msg} with error code and logging error and caller @@ -39,8 +38,7 @@ func SendErrorJSON(w http.ResponseWriter, r *http.Request, l logger.Backend, cod if l != nil { l.Logf("%s", errDetailsMsg(r, code, err, msg)) } - w.WriteHeader(code) - RenderJSON(w, JSON{"error": msg}) + renderJSONWithStatus(w, JSON{"error": msg}, code) } func errDetailsMsg(r *http.Request, code int, err error, msg string) string { diff --git a/backend/vendor/github.com/go-pkgz/rest/logger/logger.go b/backend/vendor/github.com/go-pkgz/rest/logger/logger.go index 0865dc13..a95d592b 100644 --- a/backend/vendor/github.com/go-pkgz/rest/logger/logger.go +++ b/backend/vendor/github.com/go-pkgz/rest/logger/logger.go @@ -12,19 +12,21 @@ import ( "net/http" "net/url" "regexp" + "strconv" "strings" "time" ) // Middleware is a logger for rest requests. type Middleware struct { - prefix string - logBody bool - maxBodySize int - ipFn func(ip string) string - userFn func(r *http.Request) (string, error) - subjFn func(r *http.Request) (string, error) - log Backend + prefix string + logBody bool + maxBodySize int + ipFn func(ip string) string + userFn func(r *http.Request) (string, error) + subjFn func(r *http.Request) (string, error) + log Backend + apacheCombined bool } // Backend is logging backend @@ -32,6 +34,20 @@ type Backend interface { Logf(format string, args ...interface{}) } +type logParts struct { + duration time.Duration + rawURL string + method string + remoteIP string + statusCode int + respSize int + host string + + prefix string + user string + body string +} + type stdBackend struct{} func (s stdBackend) Logf(format string, args ...interface{}) { @@ -61,6 +77,11 @@ func New(options ...Option) *Middleware { // Handler middleware prints http log func (l *Middleware) Handler(next http.Handler) http.Handler { + formater := l.formatDefault + if l.apacheCombined { + formater = l.formatApacheCombined + } + fn := func(w http.ResponseWriter, r *http.Request) { ww := newCustomResponseWriter(w) @@ -88,37 +109,25 @@ func (l *Middleware) Handler(next http.Handler) http.Handler { remoteIP = l.ipFn(remoteIP) } - var bld strings.Builder - if l.prefix != "" { - _, _ = bld.WriteString(l.prefix) - _, _ = bld.WriteString(" ") + server := r.URL.Hostname() + if server == "" { + server = strings.Split(r.Host, ":")[0] } - _, _ = bld.WriteString(fmt.Sprintf("%s - %s - %s - %d (%d) - %v", r.Method, rawurl, remoteIP, ww.status, ww.size, t2.Sub(t1))) - - if user != "" { - _, _ = bld.WriteString(" - ") - _, _ = bld.WriteString(user) + p := &logParts{ + duration: t2.Sub(t1), + rawURL: rawurl, + method: r.Method, + host: server, + remoteIP: remoteIP, + statusCode: ww.status, + respSize: ww.size, + prefix: l.prefix, + user: user, + body: body, } - if l.subjFn != nil { - if subj, err := l.subjFn(r); err == nil { - _, _ = bld.WriteString(" - ") - _, _ = bld.WriteString(subj) - } - } - - if traceID := r.Header.Get("X-Request-ID"); traceID != "" { - _, _ = bld.WriteString(" - ") - _, _ = bld.WriteString(traceID) - } - - if body != "" { - _, _ = bld.WriteString(" - ") - _, _ = bld.WriteString(body) - } - - l.log.Logf("%s", bld.String()) + l.log.Logf(formater(r, p)) }() next.ServeHTTP(ww, r) @@ -126,6 +135,73 @@ func (l *Middleware) Handler(next http.Handler) http.Handler { return http.HandlerFunc(fn) } +func (l *Middleware) formatDefault(r *http.Request, p *logParts) string { + var bld strings.Builder + if l.prefix != "" { + _, _ = bld.WriteString(l.prefix) + _, _ = bld.WriteString(" ") + } + + _, _ = bld.WriteString(fmt.Sprintf("%s - %s - %s - %s - %d (%d) - %v", + p.method, p.rawURL, p.host, p.remoteIP, p.statusCode, p.respSize, p.duration)) + + if p.user != "" { + _, _ = bld.WriteString(" - ") + _, _ = bld.WriteString(p.user) + } + + if l.subjFn != nil { + if subj, err := l.subjFn(r); err == nil { + _, _ = bld.WriteString(" - ") + _, _ = bld.WriteString(subj) + } + } + + if traceID := r.Header.Get("X-Request-ID"); traceID != "" { + _, _ = bld.WriteString(" - ") + _, _ = bld.WriteString(traceID) + } + + if p.body != "" { + _, _ = bld.WriteString(" - ") + _, _ = bld.WriteString(p.body) + } + return bld.String() +} + +// 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)" +//nolint gosec +func (l *Middleware) formatApacheCombined(r *http.Request, p *logParts) string { + username := "-" + if p.user != "" { + username = p.user + } + + var bld strings.Builder + bld.WriteString(p.remoteIP) + bld.WriteString(" - ") + bld.WriteString(username) + bld.WriteString(" [") + bld.WriteString(time.Now().Format("02/Jan/2006:15:04:05 -0700")) + bld.WriteString(`] "`) + bld.WriteString(p.method) + bld.WriteString(" ") + bld.WriteString(p.rawURL) + bld.WriteString(`" `) + bld.WriteString(r.Proto) + bld.WriteString(`" `) + bld.WriteString(strconv.Itoa(p.statusCode)) + bld.WriteString(" ") + bld.WriteString(strconv.Itoa(p.respSize)) + + bld.WriteString(` "`) + bld.WriteString(r.Header.Get("Referer")) + bld.WriteString(`" "`) + bld.WriteString(r.Header.Get("User-Agent")) + bld.WriteString(`"`) + return bld.String() +} + var reMultWhtsp = regexp.MustCompile(`[\s\p{Zs}]{2,}`) func (l *Middleware) getBody(r *http.Request) string { diff --git a/backend/vendor/github.com/go-pkgz/rest/logger/options.go b/backend/vendor/github.com/go-pkgz/rest/logger/options.go index 21b36ea3..24f99de9 100644 --- a/backend/vendor/github.com/go-pkgz/rest/logger/options.go +++ b/backend/vendor/github.com/go-pkgz/rest/logger/options.go @@ -49,7 +49,13 @@ func SubjFn(subjFn func(r *http.Request) (string, error)) Option { } } -// Log sets logging backend. +// ApacheCombined sets format to Apache Combined Log. +// See http://httpd.apache.org/docs/2.2/logs.html#combined +func ApacheCombined(l *Middleware) { + l.apacheCombined = true +} + +// Log sets logging backend. func Log(log Backend) Option { return func(l *Middleware) { l.log = log diff --git a/backend/vendor/github.com/go-pkgz/rest/middleware.go b/backend/vendor/github.com/go-pkgz/rest/middleware.go index 0e695cfd..a40e02c2 100644 --- a/backend/vendor/github.com/go-pkgz/rest/middleware.go +++ b/backend/vendor/github.com/go-pkgz/rest/middleware.go @@ -9,6 +9,18 @@ import ( "github.com/go-pkgz/rest/logger" ) +// Wrap converts a list of middlewares to nested calls (in reverse order) +func Wrap(handler http.Handler, mws ...func(http.Handler) http.Handler) http.Handler { + if len(mws) == 0 { + return handler + } + res := handler + for i := len(mws) - 1; i >= 0; i-- { + res = mws[i](res) + } + return res +} + // AppInfo adds custom app-info to the response header func AppInfo(app, author, version string) func(http.Handler) http.Handler { f := func(h http.Handler) http.Handler { @@ -47,8 +59,10 @@ func Recoverer(l logger.Backend) func(http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { defer func() { if rvr := recover(); rvr != nil { - l.Logf("request panic, %v", rvr) - l.Logf(string(debug.Stack())) + l.Logf("request panic for %s from %s, %v", r.URL.String(), r.RemoteAddr, rvr) + if rvr != http.ErrAbortHandler { + l.Logf(string(debug.Stack())) + } http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) } }() @@ -57,3 +71,22 @@ func Recoverer(l logger.Backend) func(http.Handler) http.Handler { return http.HandlerFunc(fn) } } + +// Headers middleware adds headers to request +func Headers(headers ...string) func(http.Handler) http.Handler { + + return func(h http.Handler) http.Handler { + + fn := func(w http.ResponseWriter, r *http.Request) { + for _, h := range headers { + elems := strings.Split(h, ":") + if len(elems) != 2 { + continue + } + r.Header.Set(strings.TrimSpace(elems[0]), strings.TrimSpace(elems[1])) + } + h.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/backend/vendor/github.com/go-pkgz/rest/nocache.go b/backend/vendor/github.com/go-pkgz/rest/nocache.go new file mode 100644 index 00000000..aa0fa946 --- /dev/null +++ b/backend/vendor/github.com/go-pkgz/rest/nocache.go @@ -0,0 +1,55 @@ +package rest + +import ( + "net/http" + "time" +) + +// borrowed from https://github.com/go-chi/chi/blob/master/middleware/nocache.go + +var epoch = time.Unix(0, 0).UTC().Format(time.RFC1123) + +var noCacheHeaders = map[string]string{ + "Expires": epoch, + "Cache-Control": "no-cache, no-store, no-transform, must-revalidate, private, max-age=0", + "Pragma": "no-cache", + "X-Accel-Expires": "0", +} + +var etagHeaders = []string{ + "ETag", + "If-Modified-Since", + "If-Match", + "If-None-Match", + "If-Range", + "If-Unmodified-Since", +} + +// NoCache is a simple piece of middleware that sets a number of HTTP headers to prevent +// a router (or subrouter) from being cached by an upstream proxy and/or client. +// +// As per http://wiki.nginx.org/HttpProxyModule - NoCache sets: +// Expires: Thu, 01 Jan 1970 00:00:00 UTC +// Cache-Control: no-cache, private, max-age=0 +// X-Accel-Expires: 0 +// Pragma: no-cache (for HTTP/1.0 proxies/clients) +func NoCache(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + + // Delete any ETag headers that may have been set + for _, v := range etagHeaders { + if r.Header.Get(v) != "" { + r.Header.Del(v) + } + } + + // Set our NoCache headers + for k, v := range noCacheHeaders { + w.Header().Set(k, v) + } + + h.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} diff --git a/backend/vendor/github.com/go-pkgz/rest/rest.go b/backend/vendor/github.com/go-pkgz/rest/rest.go index 4a0f7858..82361bca 100644 --- a/backend/vendor/github.com/go-pkgz/rest/rest.go +++ b/backend/vendor/github.com/go-pkgz/rest/rest.go @@ -53,3 +53,17 @@ func RenderJSONWithHTML(w http.ResponseWriter, r *http.Request, v interface{}) e } return RenderJSONFromBytes(w, r, data) } + +// renderJSONWithStatus sends data as json and enforces status code +func renderJSONWithStatus(w http.ResponseWriter, data interface{}, code int) { + buf := &bytes.Buffer{} + enc := json.NewEncoder(buf) + enc.SetEscapeHTML(true) + if err := enc.Encode(data); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(code) + _, _ = w.Write(buf.Bytes()) +} diff --git a/backend/vendor/github.com/kyokomi/emoji/emoji_codemap.go b/backend/vendor/github.com/kyokomi/emoji/emoji_codemap.go deleted file mode 100644 index b73be32d..00000000 --- a/backend/vendor/github.com/kyokomi/emoji/emoji_codemap.go +++ /dev/null @@ -1,7677 +0,0 @@ -package emoji - -// NOTE: THIS FILE WAS PRODUCED BY THE -// EMOJICODEMAP CODE GENERATION TOOL (github.com/kyokomi/emoji/cmd/generateEmojiCodeMap) -// DO NOT EDIT - -// Mapping from character to concrete escape code. -var emojiCodeMap = map[string]string{ - ":+1:": "\U0001f44d", - ":-1:": "\U0001f44e", - ":100:": "\U0001f4af", - ":1234:": "\U0001f522", - ":1st_place_medal:": "\U0001f947", - ":2nd_place_medal:": "\U0001f948", - ":3rd_place_medal:": "\U0001f949", - ":8ball:": "\U0001f3b1", - ":AB_button_(blood_type):": "\U0001f18e", - ":ATM_sign:": "\U0001f3e7", - ":A_button_(blood_type):": "\U0001f170", - ":Aquarius:": "\u2652", - ":Aries:": "\u2648", - ":BACK_arrow:": "\U0001f519", - ":B_button_(blood_type):": "\U0001f171", - ":CL_button:": "\U0001f191", - ":COOL_button:": "\U0001f192", - ":Cancer:": "\u264b", - ":Capricorn:": "\u2651", - ":Christmas_tree:": "\U0001f384", - ":END_arrow:": "\U0001f51a", - ":FREE_button:": "\U0001f193", - ":Gemini:": "\u264a", - ":ID_button:": "\U0001f194", - ":Japanese_acceptable_button:": "\U0001f251", - ":Japanese_application_button:": "\U0001f238", - ":Japanese_bargain_button:": "\U0001f250", - ":Japanese_castle:": "\U0001f3ef", - ":Japanese_congratulations_button:": "\u3297", - ":Japanese_discount_button:": "\U0001f239", - ":Japanese_dolls:": "\U0001f38e", - ":Japanese_free_of_charge_button:": "\U0001f21a", - ":Japanese_here_button:": "\U0001f201", - ":Japanese_monthly_amount_button:": "\U0001f237", - ":Japanese_no_vacancy_button:": "\U0001f235", - ":Japanese_not_free_of_charge_button:": "\U0001f236", - ":Japanese_open_for_business_button:": "\U0001f23a", - ":Japanese_passing_grade_button:": "\U0001f234", - ":Japanese_post_office:": "\U0001f3e3", - ":Japanese_prohibited_button:": "\U0001f232", - ":Japanese_reserved_button:": "\U0001f22f", - ":Japanese_secret_button:": "\u3299", - ":Japanese_service_charge_button:": "\U0001f202", - ":Japanese_symbol_for_beginner:": "\U0001f530", - ":Japanese_vacancy_button:": "\U0001f233", - ":Leo:": "\u264c", - ":Libra:": "\u264e", - ":Mrs._Claus:": "\U0001f936", - ":NEW_button:": "\U0001f195", - ":NG_button:": "\U0001f196", - ":OK_button:": "\U0001f197", - ":OK_hand:": "\U0001f44c", - ":ON!_arrow:": "\U0001f51b", - ":O_button_(blood_type):": "\U0001f17e", - ":Ophiuchus:": "\u26ce", - ":P_button:": "\U0001f17f", - ":Pisces:": "\u2653", - ":SOON_arrow:": "\U0001f51c", - ":SOS_button:": "\U0001f198", - ":Sagittarius:": "\u2650", - ":Santa_Claus:": "\U0001f385", - ":Scorpio:": "\u264f", - ":Statue_of_Liberty:": "\U0001f5fd", - ":T-Rex:": "\U0001f996", - ":TOP_arrow:": "\U0001f51d", - ":Taurus:": "\u2649", - ":Tokyo_tower:": "\U0001f5fc", - ":UP!_button:": "\U0001f199", - ":VS_button:": "\U0001f19a", - ":Virgo:": "\u264d", - ":a:": "\U0001f170\ufe0f", - ":ab:": "\U0001f18e", - ":abacus:": "\U0001f9ee", - ":abc:": "\U0001f524", - ":abcd:": "\U0001f521", - ":accept:": "\U0001f251", - ":accordion:": "\U0001fa97", - ":adhesive_bandage:": "\U0001fa79", - ":admission_tickets:": "\U0001f39f\ufe0f", - ":adult:": "\U0001f9d1", - ":adult_tone1:": "\U0001f9d1\U0001f3fb", - ":adult_tone2:": "\U0001f9d1\U0001f3fc", - ":adult_tone3:": "\U0001f9d1\U0001f3fd", - ":adult_tone4:": "\U0001f9d1\U0001f3fe", - ":adult_tone5:": "\U0001f9d1\U0001f3ff", - ":aerial_tramway:": "\U0001f6a1", - ":afghanistan:": "\U0001f1e6\U0001f1eb", - ":airplane:": "\u2708\ufe0f", - ":airplane_arrival:": "\U0001f6ec", - ":airplane_arriving:": "\U0001f6ec", - ":airplane_departure:": "\U0001f6eb", - ":airplane_small:": "\U0001f6e9", - ":aland_islands:": "\U0001f1e6\U0001f1fd", - ":alarm_clock:": "\u23f0", - ":albania:": "\U0001f1e6\U0001f1f1", - ":alembic:": "\u2697\ufe0f", - ":algeria:": "\U0001f1e9\U0001f1ff", - ":alien:": "\U0001f47d", - ":alien_monster:": "\U0001f47e", - ":ambulance:": "\U0001f691", - ":american_football:": "\U0001f3c8", - ":american_samoa:": "\U0001f1e6\U0001f1f8", - ":amphora:": "\U0001f3fa", - ":anatomical_heart:": "\U0001fac0", - ":anchor:": "\u2693", - ":andorra:": "\U0001f1e6\U0001f1e9", - ":angel:": "\U0001f47c", - ":angel_tone1:": "\U0001f47c\U0001f3fb", - ":angel_tone2:": "\U0001f47c\U0001f3fc", - ":angel_tone3:": "\U0001f47c\U0001f3fd", - ":angel_tone4:": "\U0001f47c\U0001f3fe", - ":angel_tone5:": "\U0001f47c\U0001f3ff", - ":anger:": "\U0001f4a2", - ":anger_right:": "\U0001f5ef", - ":anger_symbol:": "\U0001f4a2", - ":angola:": "\U0001f1e6\U0001f1f4", - ":angry:": "\U0001f620", - ":angry_face:": "\U0001f620", - ":angry_face_with_horns:": "\U0001f47f", - ":anguilla:": "\U0001f1e6\U0001f1ee", - ":anguished:": "\U0001f627", - ":anguished_face:": "\U0001f627", - ":ant:": "\U0001f41c", - ":antarctica:": "\U0001f1e6\U0001f1f6", - ":antenna_bars:": "\U0001f4f6", - ":antigua_barbuda:": "\U0001f1e6\U0001f1ec", - ":anxious_face_with_sweat:": "\U0001f630", - ":apple:": "\U0001f34e", - ":aquarius:": "\u2652", - ":argentina:": "\U0001f1e6\U0001f1f7", - ":aries:": "\u2648", - ":armenia:": "\U0001f1e6\U0001f1f2", - ":arrow_backward:": "\u25c0\ufe0f", - ":arrow_double_down:": "\u23ec", - ":arrow_double_up:": "\u23eb", - ":arrow_down:": "\u2b07\ufe0f", - ":arrow_down_small:": "\U0001f53d", - ":arrow_forward:": "\u25b6\ufe0f", - ":arrow_heading_down:": "\u2935\ufe0f", - ":arrow_heading_up:": "\u2934\ufe0f", - ":arrow_left:": "\u2b05\ufe0f", - ":arrow_lower_left:": "\u2199\ufe0f", - ":arrow_lower_right:": "\u2198\ufe0f", - ":arrow_right:": "\u27a1\ufe0f", - ":arrow_right_hook:": "\u21aa\ufe0f", - ":arrow_up:": "\u2b06\ufe0f", - ":arrow_up_down:": "\u2195\ufe0f", - ":arrow_up_small:": "\U0001f53c", - ":arrow_upper_left:": "\u2196\ufe0f", - ":arrow_upper_right:": "\u2197\ufe0f", - ":arrows_clockwise:": "\U0001f503", - ":arrows_counterclockwise:": "\U0001f504", - ":art:": "\U0001f3a8", - ":articulated_lorry:": "\U0001f69b", - ":artificial_satellite:": "\U0001f6f0\ufe0f", - ":artist:": "\U0001f9d1\u200d\U0001f3a8", - ":artist_palette:": "\U0001f3a8", - ":aruba:": "\U0001f1e6\U0001f1fc", - ":ascension_island:": "\U0001f1e6\U0001f1e8", - ":asterisk:": "*\ufe0f\u20e3", - ":astonished:": "\U0001f632", - ":astonished_face:": "\U0001f632", - ":astronaut:": "\U0001f9d1\u200d\U0001f680", - ":athletic_shoe:": "\U0001f45f", - ":atm:": "\U0001f3e7", - ":atom:": "\u269b", - ":atom_symbol:": "\u269b\ufe0f", - ":australia:": "\U0001f1e6\U0001f1fa", - ":austria:": "\U0001f1e6\U0001f1f9", - ":auto_rickshaw:": "\U0001f6fa", - ":automobile:": "\U0001f697", - ":avocado:": "\U0001f951", - ":axe:": "\U0001fa93", - ":azerbaijan:": "\U0001f1e6\U0001f1ff", - ":b:": "\U0001f171\ufe0f", - ":baby:": "\U0001f476", - ":baby_angel:": "\U0001f47c", - ":baby_bottle:": "\U0001f37c", - ":baby_chick:": "\U0001f424", - ":baby_symbol:": "\U0001f6bc", - ":baby_tone1:": "\U0001f476\U0001f3fb", - ":baby_tone2:": "\U0001f476\U0001f3fc", - ":baby_tone3:": "\U0001f476\U0001f3fd", - ":baby_tone4:": "\U0001f476\U0001f3fe", - ":baby_tone5:": "\U0001f476\U0001f3ff", - ":back:": "\U0001f519", - ":backhand_index_pointing_down:": "\U0001f447", - ":backhand_index_pointing_left:": "\U0001f448", - ":backhand_index_pointing_right:": "\U0001f449", - ":backhand_index_pointing_up:": "\U0001f446", - ":backpack:": "\U0001f392", - ":bacon:": "\U0001f953", - ":badger:": "\U0001f9a1", - ":badminton:": "\U0001f3f8", - ":badminton_racquet_and_shuttlecock:": "\U0001f3f8", - ":bagel:": "\U0001f96f", - ":baggage_claim:": "\U0001f6c4", - ":baguette_bread:": "\U0001f956", - ":bahamas:": "\U0001f1e7\U0001f1f8", - ":bahrain:": "\U0001f1e7\U0001f1ed", - ":balance_scale:": "\u2696", - ":bald:": "\U0001f9b2", - ":bald_man:": "\U0001f468\u200d\U0001f9b2", - ":bald_person:": "\U0001f9d1\u200d\U0001f9b2", - ":bald_woman:": "\U0001f469\u200d\U0001f9b2", - ":ballet_shoes:": "\U0001fa70", - ":balloon:": "\U0001f388", - ":ballot_box:": "\U0001f5f3", - ":ballot_box_with_ballot:": "\U0001f5f3\ufe0f", - ":ballot_box_with_check:": "\u2611\ufe0f", - ":bamboo:": "\U0001f38d", - ":banana:": "\U0001f34c", - ":bangbang:": "\u203c\ufe0f", - ":bangladesh:": "\U0001f1e7\U0001f1e9", - ":banjo:": "\U0001fa95", - ":bank:": "\U0001f3e6", - ":bar_chart:": "\U0001f4ca", - ":barbados:": "\U0001f1e7\U0001f1e7", - ":barber:": "\U0001f488", - ":barber_pole:": "\U0001f488", - ":barely_sunny:": "\U0001f325\ufe0f", - ":baseball:": "\u26be", - ":basket:": "\U0001f9fa", - ":basketball:": "\U0001f3c0", - ":basketball_man:": "\u26f9\ufe0f\u200d\u2642\ufe0f", - ":basketball_woman:": "\u26f9\ufe0f\u200d\u2640\ufe0f", - ":bat:": "\U0001f987", - ":bath:": "\U0001f6c0", - ":bath_tone1:": "\U0001f6c0\U0001f3fb", - ":bath_tone2:": "\U0001f6c0\U0001f3fc", - ":bath_tone3:": "\U0001f6c0\U0001f3fd", - ":bath_tone4:": "\U0001f6c0\U0001f3fe", - ":bath_tone5:": "\U0001f6c0\U0001f3ff", - ":bathtub:": "\U0001f6c1", - ":battery:": "\U0001f50b", - ":beach:": "\U0001f3d6", - ":beach_umbrella:": "\u26f1", - ":beach_with_umbrella:": "\U0001f3d6\ufe0f", - ":beaming_face_with_smiling_eyes:": "\U0001f601", - ":bear:": "\U0001f43b", - ":bearded_person:": "\U0001f9d4", - ":bearded_person_tone1:": "\U0001f9d4\U0001f3fb", - ":bearded_person_tone2:": "\U0001f9d4\U0001f3fc", - ":bearded_person_tone3:": "\U0001f9d4\U0001f3fd", - ":bearded_person_tone4:": "\U0001f9d4\U0001f3fe", - ":bearded_person_tone5:": "\U0001f9d4\U0001f3ff", - ":beating_heart:": "\U0001f493", - ":beaver:": "\U0001f9ab", - ":bed:": "\U0001f6cf\ufe0f", - ":bee:": "\U0001f41d", - ":beer:": "\U0001f37a", - ":beer_mug:": "\U0001f37a", - ":beers:": "\U0001f37b", - ":beetle:": "\U0001f41e", - ":beginner:": "\U0001f530", - ":belarus:": "\U0001f1e7\U0001f1fe", - ":belgium:": "\U0001f1e7\U0001f1ea", - ":belize:": "\U0001f1e7\U0001f1ff", - ":bell:": "\U0001f514", - ":bell_pepper:": "\U0001fad1", - ":bell_with_slash:": "\U0001f515", - ":bellhop:": "\U0001f6ce", - ":bellhop_bell:": "\U0001f6ce\ufe0f", - ":benin:": "\U0001f1e7\U0001f1ef", - ":bento:": "\U0001f371", - ":bento_box:": "\U0001f371", - ":bermuda:": "\U0001f1e7\U0001f1f2", - ":beverage_box:": "\U0001f9c3", - ":bhutan:": "\U0001f1e7\U0001f1f9", - ":bicycle:": "\U0001f6b2", - ":bicyclist:": "\U0001f6b4\u200d\u2642\ufe0f", - ":bike:": "\U0001f6b2", - ":biking_man:": "\U0001f6b4\u200d\u2642\ufe0f", - ":biking_woman:": "\U0001f6b4\u200d\u2640\ufe0f", - ":bikini:": "\U0001f459", - ":billed_cap:": "\U0001f9e2", - ":biohazard:": "\u2623", - ":biohazard_sign:": "\u2623\ufe0f", - ":bird:": "\U0001f426", - ":birthday:": "\U0001f382", - ":birthday_cake:": "\U0001f382", - ":bison:": "\U0001f9ac", - ":black_cat:": "\U0001f408\u200d\u2b1b", - ":black_circle:": "\u26ab", - ":black_circle_for_record:": "\u23fa\ufe0f", - ":black_flag:": "\U0001f3f4", - ":black_heart:": "\U0001f5a4", - ":black_joker:": "\U0001f0cf", - ":black_large_square:": "\u2b1b", - ":black_left_pointing_double_triangle_with_vertical_bar:": "\u23ee\ufe0f", - ":black_medium-small_square:": "\u25fe", - ":black_medium_small_square:": "\u25fe", - ":black_medium_square:": "\u25fc\ufe0f", - ":black_nib:": "\u2712\ufe0f", - ":black_right_pointing_double_triangle_with_vertical_bar:": "\u23ed\ufe0f", - ":black_right_pointing_triangle_with_double_vertical_bar:": "\u23ef\ufe0f", - ":black_small_square:": "\u25aa\ufe0f", - ":black_square_button:": "\U0001f532", - ":black_square_for_stop:": "\u23f9\ufe0f", - ":blond-haired-man:": "\U0001f471\u200d\u2642\ufe0f", - ":blond-haired-woman:": "\U0001f471\u200d\u2640\ufe0f", - ":blond-haired_man:": "\U0001f471\u200d\u2642\ufe0f", - ":blond-haired_man_tone1:": "\U0001f471\U0001f3fb\u200d\u2642\ufe0f", - ":blond-haired_man_tone2:": "\U0001f471\U0001f3fc\u200d\u2642\ufe0f", - ":blond-haired_man_tone3:": "\U0001f471\U0001f3fd\u200d\u2642\ufe0f", - ":blond-haired_man_tone4:": "\U0001f471\U0001f3fe\u200d\u2642\ufe0f", - ":blond-haired_man_tone5:": "\U0001f471\U0001f3ff\u200d\u2642\ufe0f", - ":blond-haired_woman:": "\U0001f471\u200d\u2640\ufe0f", - ":blond-haired_woman_tone1:": "\U0001f471\U0001f3fb\u200d\u2640\ufe0f", - ":blond-haired_woman_tone2:": "\U0001f471\U0001f3fc\u200d\u2640\ufe0f", - ":blond-haired_woman_tone3:": "\U0001f471\U0001f3fd\u200d\u2640\ufe0f", - ":blond-haired_woman_tone4:": "\U0001f471\U0001f3fe\u200d\u2640\ufe0f", - ":blond-haired_woman_tone5:": "\U0001f471\U0001f3ff\u200d\u2640\ufe0f", - ":blond_haired_man:": "\U0001f471\u200d\u2642\ufe0f", - ":blond_haired_person:": "\U0001f471", - ":blond_haired_person_tone1:": "\U0001f471\U0001f3fb", - ":blond_haired_person_tone2:": "\U0001f471\U0001f3fc", - ":blond_haired_person_tone3:": "\U0001f471\U0001f3fd", - ":blond_haired_person_tone4:": "\U0001f471\U0001f3fe", - ":blond_haired_person_tone5:": "\U0001f471\U0001f3ff", - ":blond_haired_woman:": "\U0001f471\u200d\u2640\ufe0f", - ":blonde_woman:": "\U0001f471\u200d\u2640\ufe0f", - ":blossom:": "\U0001f33c", - ":blowfish:": "\U0001f421", - ":blue_book:": "\U0001f4d8", - ":blue_car:": "\U0001f699", - ":blue_circle:": "\U0001f535", - ":blue_heart:": "\U0001f499", - ":blue_square:": "\U0001f7e6", - ":blueberries:": "\U0001fad0", - ":blush:": "\U0001f60a", - ":boar:": "\U0001f417", - ":boat:": "\u26f5", - ":bolivia:": "\U0001f1e7\U0001f1f4", - ":bomb:": "\U0001f4a3", - ":bone:": "\U0001f9b4", - ":book:": "\U0001f4d6", - ":bookmark:": "\U0001f516", - ":bookmark_tabs:": "\U0001f4d1", - ":books:": "\U0001f4da", - ":boom:": "\U0001f4a5", - ":boomerang:": "\U0001fa83", - ":boot:": "\U0001f462", - ":bosnia_herzegovina:": "\U0001f1e7\U0001f1e6", - ":botswana:": "\U0001f1e7\U0001f1fc", - ":bottle_with_popping_cork:": "\U0001f37e", - ":bouncing_ball_man:": "\u26f9\ufe0f\u200d\u2642\ufe0f", - ":bouncing_ball_person:": "\u26f9\ufe0f", - ":bouncing_ball_woman:": "\u26f9\ufe0f\u200d\u2640\ufe0f", - ":bouquet:": "\U0001f490", - ":bouvet_island:": "\U0001f1e7\U0001f1fb", - ":bow:": "\U0001f647\u200d\u2642\ufe0f", - ":bow_and_arrow:": "\U0001f3f9", - ":bowing_man:": "\U0001f647\u200d\u2642\ufe0f", - ":bowing_woman:": "\U0001f647\u200d\u2640\ufe0f", - ":bowl_with_spoon:": "\U0001f963", - ":bowling:": "\U0001f3b3", - ":boxing_glove:": "\U0001f94a", - ":boy:": "\U0001f466", - ":boy_tone1:": "\U0001f466\U0001f3fb", - ":boy_tone2:": "\U0001f466\U0001f3fc", - ":boy_tone3:": "\U0001f466\U0001f3fd", - ":boy_tone4:": "\U0001f466\U0001f3fe", - ":boy_tone5:": "\U0001f466\U0001f3ff", - ":brain:": "\U0001f9e0", - ":brazil:": "\U0001f1e7\U0001f1f7", - ":bread:": "\U0001f35e", - ":breast-feeding:": "\U0001f931", - ":breast_feeding:": "\U0001f931", - ":breast_feeding_tone1:": "\U0001f931\U0001f3fb", - ":breast_feeding_tone2:": "\U0001f931\U0001f3fc", - ":breast_feeding_tone3:": "\U0001f931\U0001f3fd", - ":breast_feeding_tone4:": "\U0001f931\U0001f3fe", - ":breast_feeding_tone5:": "\U0001f931\U0001f3ff", - ":brick:": "\U0001f9f1", - ":bricks:": "\U0001f9f1", - ":bride_with_veil:": "\U0001f470", - ":bride_with_veil_tone1:": "\U0001f470\U0001f3fb", - ":bride_with_veil_tone2:": "\U0001f470\U0001f3fc", - ":bride_with_veil_tone3:": "\U0001f470\U0001f3fd", - ":bride_with_veil_tone4:": "\U0001f470\U0001f3fe", - ":bride_with_veil_tone5:": "\U0001f470\U0001f3ff", - ":bridge_at_night:": "\U0001f309", - ":briefcase:": "\U0001f4bc", - ":briefs:": "\U0001fa72", - ":bright_button:": "\U0001f506", - ":british_indian_ocean_territory:": "\U0001f1ee\U0001f1f4", - ":british_virgin_islands:": "\U0001f1fb\U0001f1ec", - ":broccoli:": "\U0001f966", - ":broken_heart:": "\U0001f494", - ":broom:": "\U0001f9f9", - ":brown_circle:": "\U0001f7e4", - ":brown_heart:": "\U0001f90e", - ":brown_square:": "\U0001f7eb", - ":brunei:": "\U0001f1e7\U0001f1f3", - ":bubble_tea:": "\U0001f9cb", - ":bucket:": "\U0001faa3", - ":bug:": "\U0001f41b", - ":building_construction:": "\U0001f3d7\ufe0f", - ":bulb:": "\U0001f4a1", - ":bulgaria:": "\U0001f1e7\U0001f1ec", - ":bullet_train:": "\U0001f685", - ":bullettrain_front:": "\U0001f685", - ":bullettrain_side:": "\U0001f684", - ":burkina_faso:": "\U0001f1e7\U0001f1eb", - ":burrito:": "\U0001f32f", - ":burundi:": "\U0001f1e7\U0001f1ee", - ":bus:": "\U0001f68c", - ":bus_stop:": "\U0001f68f", - ":business_suit_levitating:": "\U0001f574\ufe0f", - ":busstop:": "\U0001f68f", - ":bust_in_silhouette:": "\U0001f464", - ":busts_in_silhouette:": "\U0001f465", - ":butter:": "\U0001f9c8", - ":butterfly:": "\U0001f98b", - ":cactus:": "\U0001f335", - ":cake:": "\U0001f370", - ":calendar:": "\U0001f4c6", - ":calendar_spiral:": "\U0001f5d3", - ":call_me:": "\U0001f919", - ":call_me_hand:": "\U0001f919", - ":call_me_tone1:": "\U0001f919\U0001f3fb", - ":call_me_tone2:": "\U0001f919\U0001f3fc", - ":call_me_tone3:": "\U0001f919\U0001f3fd", - ":call_me_tone4:": "\U0001f919\U0001f3fe", - ":call_me_tone5:": "\U0001f919\U0001f3ff", - ":calling:": "\U0001f4f2", - ":cambodia:": "\U0001f1f0\U0001f1ed", - ":camel:": "\U0001f42b", - ":camera:": "\U0001f4f7", - ":camera_flash:": "\U0001f4f8", - ":camera_with_flash:": "\U0001f4f8", - ":cameroon:": "\U0001f1e8\U0001f1f2", - ":camping:": "\U0001f3d5\ufe0f", - ":canada:": "\U0001f1e8\U0001f1e6", - ":canary_islands:": "\U0001f1ee\U0001f1e8", - ":cancer:": "\u264b", - ":candle:": "\U0001f56f\ufe0f", - ":candy:": "\U0001f36c", - ":canned_food:": "\U0001f96b", - ":canoe:": "\U0001f6f6", - ":cape_verde:": "\U0001f1e8\U0001f1fb", - ":capital_abcd:": "\U0001f520", - ":capricorn:": "\u2651", - ":car:": "\U0001f697", - ":card_box:": "\U0001f5c3", - ":card_file_box:": "\U0001f5c3\ufe0f", - ":card_index:": "\U0001f4c7", - ":card_index_dividers:": "\U0001f5c2\ufe0f", - ":caribbean_netherlands:": "\U0001f1e7\U0001f1f6", - ":carousel_horse:": "\U0001f3a0", - ":carp_streamer:": "\U0001f38f", - ":carpentry_saw:": "\U0001fa9a", - ":carrot:": "\U0001f955", - ":cartwheeling:": "\U0001f938", - ":castle:": "\U0001f3f0", - ":cat:": "\U0001f431", - ":cat2:": "\U0001f408", - ":cat_face:": "\U0001f431", - ":cat_with_tears_of_joy:": "\U0001f639", - ":cat_with_wry_smile:": "\U0001f63c", - ":cayman_islands:": "\U0001f1f0\U0001f1fe", - ":cd:": "\U0001f4bf", - ":central_african_republic:": "\U0001f1e8\U0001f1eb", - ":ceuta_melilla:": "\U0001f1ea\U0001f1e6", - ":chad:": "\U0001f1f9\U0001f1e9", - ":chains:": "\u26d3\ufe0f", - ":chair:": "\U0001fa91", - ":champagne:": "\U0001f37e", - ":champagne_glass:": "\U0001f942", - ":chart:": "\U0001f4b9", - ":chart_decreasing:": "\U0001f4c9", - ":chart_increasing:": "\U0001f4c8", - ":chart_increasing_with_yen:": "\U0001f4b9", - ":chart_with_downwards_trend:": "\U0001f4c9", - ":chart_with_upwards_trend:": "\U0001f4c8", - ":check_box_with_check:": "\u2611", - ":check_mark:": "\u2714", - ":check_mark_button:": "\u2705", - ":checkered_flag:": "\U0001f3c1", - ":cheese:": "\U0001f9c0", - ":cheese_wedge:": "\U0001f9c0", - ":chequered_flag:": "\U0001f3c1", - ":cherries:": "\U0001f352", - ":cherry_blossom:": "\U0001f338", - ":chess_pawn:": "\u265f\ufe0f", - ":chestnut:": "\U0001f330", - ":chicken:": "\U0001f414", - ":child:": "\U0001f9d2", - ":child_tone1:": "\U0001f9d2\U0001f3fb", - ":child_tone2:": "\U0001f9d2\U0001f3fc", - ":child_tone3:": "\U0001f9d2\U0001f3fd", - ":child_tone4:": "\U0001f9d2\U0001f3fe", - ":child_tone5:": "\U0001f9d2\U0001f3ff", - ":children_crossing:": "\U0001f6b8", - ":chile:": "\U0001f1e8\U0001f1f1", - ":chipmunk:": "\U0001f43f\ufe0f", - ":chocolate_bar:": "\U0001f36b", - ":chopsticks:": "\U0001f962", - ":christmas_island:": "\U0001f1e8\U0001f1fd", - ":christmas_tree:": "\U0001f384", - ":church:": "\u26ea", - ":cigarette:": "\U0001f6ac", - ":cinema:": "\U0001f3a6", - ":circled_M:": "\u24c2", - ":circus_tent:": "\U0001f3aa", - ":city_dusk:": "\U0001f306", - ":city_sunrise:": "\U0001f307", - ":city_sunset:": "\U0001f306", - ":cityscape:": "\U0001f3d9\ufe0f", - ":cityscape_at_dusk:": "\U0001f306", - ":cl:": "\U0001f191", - ":clamp:": "\U0001f5dc", - ":clap:": "\U0001f44f", - ":clap_tone1:": "\U0001f44f\U0001f3fb", - ":clap_tone2:": "\U0001f44f\U0001f3fc", - ":clap_tone3:": "\U0001f44f\U0001f3fd", - ":clap_tone4:": "\U0001f44f\U0001f3fe", - ":clap_tone5:": "\U0001f44f\U0001f3ff", - ":clapper:": "\U0001f3ac", - ":clapper_board:": "\U0001f3ac", - ":clapping_hands:": "\U0001f44f", - ":classical_building:": "\U0001f3db\ufe0f", - ":climbing:": "\U0001f9d7", - ":climbing_man:": "\U0001f9d7\u200d\u2642\ufe0f", - ":climbing_woman:": "\U0001f9d7\u200d\u2640\ufe0f", - ":clinking_beer_mugs:": "\U0001f37b", - ":clinking_glasses:": "\U0001f942", - ":clipboard:": "\U0001f4cb", - ":clipperton_island:": "\U0001f1e8\U0001f1f5", - ":clock:": "\U0001f570", - ":clock1:": "\U0001f550", - ":clock10:": "\U0001f559", - ":clock1030:": "\U0001f565", - ":clock11:": "\U0001f55a", - ":clock1130:": "\U0001f566", - ":clock12:": "\U0001f55b", - ":clock1230:": "\U0001f567", - ":clock130:": "\U0001f55c", - ":clock2:": "\U0001f551", - ":clock230:": "\U0001f55d", - ":clock3:": "\U0001f552", - ":clock330:": "\U0001f55e", - ":clock4:": "\U0001f553", - ":clock430:": "\U0001f55f", - ":clock5:": "\U0001f554", - ":clock530:": "\U0001f560", - ":clock6:": "\U0001f555", - ":clock630:": "\U0001f561", - ":clock7:": "\U0001f556", - ":clock730:": "\U0001f562", - ":clock8:": "\U0001f557", - ":clock830:": "\U0001f563", - ":clock9:": "\U0001f558", - ":clock930:": "\U0001f564", - ":clockwise_vertical_arrows:": "\U0001f503", - ":closed_book:": "\U0001f4d5", - ":closed_lock_with_key:": "\U0001f510", - ":closed_mailbox_with_lowered_flag:": "\U0001f4ea", - ":closed_mailbox_with_raised_flag:": "\U0001f4eb", - ":closed_umbrella:": "\U0001f302", - ":cloud:": "\u2601\ufe0f", - ":cloud_lightning:": "\U0001f329", - ":cloud_rain:": "\U0001f327", - ":cloud_snow:": "\U0001f328", - ":cloud_tornado:": "\U0001f32a", - ":cloud_with_lightning:": "\U0001f329", - ":cloud_with_lightning_and_rain:": "\u26c8", - ":cloud_with_rain:": "\U0001f327", - ":cloud_with_snow:": "\U0001f328", - ":clown:": "\U0001f921", - ":clown_face:": "\U0001f921", - ":club_suit:": "\u2663", - ":clubs:": "\u2663\ufe0f", - ":clutch_bag:": "\U0001f45d", - ":cn:": "\U0001f1e8\U0001f1f3", - ":coat:": "\U0001f9e5", - ":cockroach:": "\U0001fab3", - ":cocktail:": "\U0001f378", - ":cocktail_glass:": "\U0001f378", - ":coconut:": "\U0001f965", - ":cocos_islands:": "\U0001f1e8\U0001f1e8", - ":coffee:": "\u2615", - ":coffin:": "\u26b0\ufe0f", - ":coin:": "\U0001fa99", - ":cold_face:": "\U0001f976", - ":cold_sweat:": "\U0001f630", - ":collision:": "\U0001f4a5", - ":colombia:": "\U0001f1e8\U0001f1f4", - ":comet:": "\u2604\ufe0f", - ":comoros:": "\U0001f1f0\U0001f1f2", - ":compass:": "\U0001f9ed", - ":compression:": "\U0001f5dc\ufe0f", - ":computer:": "\U0001f4bb", - ":computer_disk:": "\U0001f4bd", - ":computer_mouse:": "\U0001f5b1", - ":confetti_ball:": "\U0001f38a", - ":confounded:": "\U0001f616", - ":confounded_face:": "\U0001f616", - ":confused:": "\U0001f615", - ":confused_face:": "\U0001f615", - ":congo_brazzaville:": "\U0001f1e8\U0001f1ec", - ":congo_kinshasa:": "\U0001f1e8\U0001f1e9", - ":congratulations:": "\u3297\ufe0f", - ":construction:": "\U0001f6a7", - ":construction_site:": "\U0001f3d7", - ":construction_worker:": "\U0001f477\u200d\u2642\ufe0f", - ":construction_worker_man:": "\U0001f477\u200d\u2642\ufe0f", - ":construction_worker_tone1:": "\U0001f477\U0001f3fb", - ":construction_worker_tone2:": "\U0001f477\U0001f3fc", - ":construction_worker_tone3:": "\U0001f477\U0001f3fd", - ":construction_worker_tone4:": "\U0001f477\U0001f3fe", - ":construction_worker_tone5:": "\U0001f477\U0001f3ff", - ":construction_worker_woman:": "\U0001f477\u200d\u2640\ufe0f", - ":control_knobs:": "\U0001f39b\ufe0f", - ":convenience_store:": "\U0001f3ea", - ":cook:": "\U0001f9d1\u200d\U0001f373", - ":cook_islands:": "\U0001f1e8\U0001f1f0", - ":cooked_rice:": "\U0001f35a", - ":cookie:": "\U0001f36a", - ":cooking:": "\U0001f373", - ":cool:": "\U0001f192", - ":cop:": "\U0001f46e\u200d\u2642\ufe0f", - ":copyright:": "\u00a9\ufe0f", - ":corn:": "\U0001f33d", - ":costa_rica:": "\U0001f1e8\U0001f1f7", - ":cote_divoire:": "\U0001f1e8\U0001f1ee", - ":couch:": "\U0001f6cb", - ":couch_and_lamp:": "\U0001f6cb\ufe0f", - ":counterclockwise_arrows_button:": "\U0001f504", - ":couple:": "\U0001f46b", - ":couple_mm:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", - ":couple_with_heart:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", - ":couple_with_heart_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", - ":couple_with_heart_woman_man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", - ":couple_with_heart_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", - ":couple_ww:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", - ":couplekiss:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":couplekiss_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":couplekiss_man_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":couplekiss_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", - ":cow:": "\U0001f42e", - ":cow2:": "\U0001f404", - ":cow_face:": "\U0001f42e", - ":cowboy:": "\U0001f920", - ":cowboy_hat_face:": "\U0001f920", - ":crab:": "\U0001f980", - ":crayon:": "\U0001f58d", - ":crazy_face:": "\U0001f92a", - ":credit_card:": "\U0001f4b3", - ":crescent_moon:": "\U0001f319", - ":cricket:": "\U0001f997", - ":cricket_bat_and_ball:": "\U0001f3cf", - ":cricket_game:": "\U0001f3cf", - ":croatia:": "\U0001f1ed\U0001f1f7", - ":crocodile:": "\U0001f40a", - ":croissant:": "\U0001f950", - ":cross:": "\u271d", - ":cross_mark:": "\u274c", - ":cross_mark_button:": "\u274e", - ":crossed_fingers:": "\U0001f91e", - ":crossed_flags:": "\U0001f38c", - ":crossed_swords:": "\u2694\ufe0f", - ":crown:": "\U0001f451", - ":cruise_ship:": "\U0001f6f3", - ":cry:": "\U0001f622", - ":crying_cat:": "\U0001f63f", - ":crying_cat_face:": "\U0001f63f", - ":crying_face:": "\U0001f622", - ":crystal_ball:": "\U0001f52e", - ":cuba:": "\U0001f1e8\U0001f1fa", - ":cucumber:": "\U0001f952", - ":cup_with_straw:": "\U0001f964", - ":cupcake:": "\U0001f9c1", - ":cupid:": "\U0001f498", - ":curacao:": "\U0001f1e8\U0001f1fc", - ":curling_stone:": "\U0001f94c", - ":curly_hair:": "\U0001f9b1", - ":curly_haired_man:": "\U0001f468\u200d\U0001f9b1", - ":curly_haired_person:": "\U0001f9d1\u200d\U0001f9b1", - ":curly_haired_woman:": "\U0001f469\u200d\U0001f9b1", - ":curly_loop:": "\u27b0", - ":currency_exchange:": "\U0001f4b1", - ":curry:": "\U0001f35b", - ":curry_rice:": "\U0001f35b", - ":cursing_face:": "\U0001f92c", - ":custard:": "\U0001f36e", - ":customs:": "\U0001f6c3", - ":cut_of_meat:": "\U0001f969", - ":cyclone:": "\U0001f300", - ":cyprus:": "\U0001f1e8\U0001f1fe", - ":czech_republic:": "\U0001f1e8\U0001f1ff", - ":dagger:": "\U0001f5e1", - ":dagger_knife:": "\U0001f5e1\ufe0f", - ":dancer:": "\U0001f483", - ":dancer_tone1:": "\U0001f483\U0001f3fb", - ":dancer_tone2:": "\U0001f483\U0001f3fc", - ":dancer_tone3:": "\U0001f483\U0001f3fd", - ":dancer_tone4:": "\U0001f483\U0001f3fe", - ":dancer_tone5:": "\U0001f483\U0001f3ff", - ":dancers:": "\U0001f46f\u200d\u2640\ufe0f", - ":dancing_men:": "\U0001f46f\u200d\u2642\ufe0f", - ":dancing_women:": "\U0001f46f\u200d\u2640\ufe0f", - ":dango:": "\U0001f361", - ":dark_sunglasses:": "\U0001f576\ufe0f", - ":dart:": "\U0001f3af", - ":dash:": "\U0001f4a8", - ":dashing_away:": "\U0001f4a8", - ":date:": "\U0001f4c5", - ":de:": "\U0001f1e9\U0001f1ea", - ":deaf_man:": "\U0001f9cf\u200d\u2642\ufe0f", - ":deaf_person:": "\U0001f9cf", - ":deaf_woman:": "\U0001f9cf\u200d\u2640\ufe0f", - ":deciduous_tree:": "\U0001f333", - ":deer:": "\U0001f98c", - ":delivery_truck:": "\U0001f69a", - ":denmark:": "\U0001f1e9\U0001f1f0", - ":department_store:": "\U0001f3ec", - ":derelict_house:": "\U0001f3da", - ":derelict_house_building:": "\U0001f3da\ufe0f", - ":desert:": "\U0001f3dc\ufe0f", - ":desert_island:": "\U0001f3dd\ufe0f", - ":desktop:": "\U0001f5a5", - ":desktop_computer:": "\U0001f5a5\ufe0f", - ":detective:": "\U0001f575", - ":detective_tone1:": "\U0001f575\U0001f3fb", - ":detective_tone2:": "\U0001f575\U0001f3fc", - ":detective_tone3:": "\U0001f575\U0001f3fd", - ":detective_tone4:": "\U0001f575\U0001f3fe", - ":detective_tone5:": "\U0001f575\U0001f3ff", - ":diamond_shape_with_a_dot_inside:": "\U0001f4a0", - ":diamond_suit:": "\u2666", - ":diamond_with_a_dot:": "\U0001f4a0", - ":diamonds:": "\u2666\ufe0f", - ":diego_garcia:": "\U0001f1e9\U0001f1ec", - ":dim_button:": "\U0001f505", - ":direct_hit:": "\U0001f3af", - ":disappointed:": "\U0001f61e", - ":disappointed_face:": "\U0001f61e", - ":disappointed_relieved:": "\U0001f625", - ":disguised_face:": "\U0001f978", - ":divide:": "\u2797", - ":dividers:": "\U0001f5c2", - ":diving_mask:": "\U0001f93f", - ":diya_lamp:": "\U0001fa94", - ":dizzy:": "\U0001f4ab", - ":dizzy_face:": "\U0001f635", - ":djibouti:": "\U0001f1e9\U0001f1ef", - ":dna:": "\U0001f9ec", - ":do_not_litter:": "\U0001f6af", - ":dodo:": "\U0001f9a4", - ":dog:": "\U0001f436", - ":dog2:": "\U0001f415", - ":dog_face:": "\U0001f436", - ":dollar:": "\U0001f4b5", - ":dollar_banknote:": "\U0001f4b5", - ":dolls:": "\U0001f38e", - ":dolphin:": "\U0001f42c", - ":dominica:": "\U0001f1e9\U0001f1f2", - ":dominican_republic:": "\U0001f1e9\U0001f1f4", - ":door:": "\U0001f6aa", - ":dotted_six-pointed_star:": "\U0001f52f", - ":double_curly_loop:": "\u27bf", - ":double_exclamation_mark:": "\u203c", - ":double_vertical_bar:": "\u23f8\ufe0f", - ":doughnut:": "\U0001f369", - ":dove:": "\U0001f54a", - ":dove_of_peace:": "\U0001f54a\ufe0f", - ":down-left_arrow:": "\u2199", - ":down-right_arrow:": "\u2198", - ":down_arrow:": "\u2b07", - ":downcast_face_with_sweat:": "\U0001f613", - ":downwards_button:": "\U0001f53d", - ":dragon:": "\U0001f409", - ":dragon_face:": "\U0001f432", - ":dress:": "\U0001f457", - ":dromedary_camel:": "\U0001f42a", - ":drooling_face:": "\U0001f924", - ":drop_of_blood:": "\U0001fa78", - ":droplet:": "\U0001f4a7", - ":drum:": "\U0001f941", - ":drum_with_drumsticks:": "\U0001f941", - ":duck:": "\U0001f986", - ":dumpling:": "\U0001f95f", - ":dvd:": "\U0001f4c0", - ":e-mail:": "\U0001f4e7", - ":eagle:": "\U0001f985", - ":ear:": "\U0001f442", - ":ear_of_corn:": "\U0001f33d", - ":ear_of_rice:": "\U0001f33e", - ":ear_tone1:": "\U0001f442\U0001f3fb", - ":ear_tone2:": "\U0001f442\U0001f3fc", - ":ear_tone3:": "\U0001f442\U0001f3fd", - ":ear_tone4:": "\U0001f442\U0001f3fe", - ":ear_tone5:": "\U0001f442\U0001f3ff", - ":ear_with_hearing_aid:": "\U0001f9bb", - ":earth_africa:": "\U0001f30d", - ":earth_americas:": "\U0001f30e", - ":earth_asia:": "\U0001f30f", - ":ecuador:": "\U0001f1ea\U0001f1e8", - ":egg:": "\U0001f95a", - ":eggplant:": "\U0001f346", - ":egypt:": "\U0001f1ea\U0001f1ec", - ":eight:": "8\ufe0f\u20e3", - ":eight-pointed_star:": "\u2734", - ":eight-spoked_asterisk:": "\u2733", - ":eight-thirty:": "\U0001f563", - ":eight_o’clock:": "\U0001f557", - ":eight_pointed_black_star:": "\u2734\ufe0f", - ":eight_spoked_asterisk:": "\u2733\ufe0f", - ":eject:": "\u23cf\ufe0f", - ":eject_button:": "\u23cf", - ":el_salvador:": "\U0001f1f8\U0001f1fb", - ":electric_plug:": "\U0001f50c", - ":elephant:": "\U0001f418", - ":elevator:": "\U0001f6d7", - ":eleven-thirty:": "\U0001f566", - ":eleven_o’clock:": "\U0001f55a", - ":elf:": "\U0001f9dd\u200d\u2642\ufe0f", - ":elf_man:": "\U0001f9dd\u200d\u2642\ufe0f", - ":elf_tone1:": "\U0001f9dd\U0001f3fb", - ":elf_tone2:": "\U0001f9dd\U0001f3fc", - ":elf_tone3:": "\U0001f9dd\U0001f3fd", - ":elf_tone4:": "\U0001f9dd\U0001f3fe", - ":elf_tone5:": "\U0001f9dd\U0001f3ff", - ":elf_woman:": "\U0001f9dd\u200d\u2640\ufe0f", - ":email:": "\u2709\ufe0f", - ":end:": "\U0001f51a", - ":england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", - ":envelope:": "\u2709", - ":envelope_with_arrow:": "\U0001f4e9", - ":equatorial_guinea:": "\U0001f1ec\U0001f1f6", - ":eritrea:": "\U0001f1ea\U0001f1f7", - ":es:": "\U0001f1ea\U0001f1f8", - ":estonia:": "\U0001f1ea\U0001f1ea", - ":ethiopia:": "\U0001f1ea\U0001f1f9", - ":eu:": "\U0001f1ea\U0001f1fa", - ":euro:": "\U0001f4b6", - ":euro_banknote:": "\U0001f4b6", - ":european_castle:": "\U0001f3f0", - ":european_post_office:": "\U0001f3e4", - ":european_union:": "\U0001f1ea\U0001f1fa", - ":evergreen_tree:": "\U0001f332", - ":ewe:": "\U0001f411", - ":exclamation:": "\u2757", - ":exclamation_mark:": "\u2757", - ":exclamation_question_mark:": "\u2049", - ":exploding_head:": "\U0001f92f", - ":expressionless:": "\U0001f611", - ":expressionless_face:": "\U0001f611", - ":eye:": "\U0001f441\ufe0f", - ":eye-in-speech-bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", - ":eye_in_speech_bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", - ":eye_speech_bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", - ":eyeglasses:": "\U0001f453", - ":eyes:": "\U0001f440", - ":face_blowing_a_kiss:": "\U0001f618", - ":face_palm:": "\U0001f926", - ":face_savoring_food:": "\U0001f60b", - ":face_screaming_in_fear:": "\U0001f631", - ":face_vomiting:": "\U0001f92e", - ":face_with_cowboy_hat:": "\U0001f920", - ":face_with_hand_over_mouth:": "\U0001f92d", - ":face_with_head-bandage:": "\U0001f915", - ":face_with_head_bandage:": "\U0001f915", - ":face_with_medical_mask:": "\U0001f637", - ":face_with_monocle:": "\U0001f9d0", - ":face_with_open_mouth:": "\U0001f62e", - ":face_with_raised_eyebrow:": "\U0001f928", - ":face_with_rolling_eyes:": "\U0001f644", - ":face_with_steam_from_nose:": "\U0001f624", - ":face_with_symbols_on_mouth:": "\U0001f92c", - ":face_with_symbols_over_mouth:": "\U0001f92c", - ":face_with_tears_of_joy:": "\U0001f602", - ":face_with_thermometer:": "\U0001f912", - ":face_with_tongue:": "\U0001f61b", - ":face_without_mouth:": "\U0001f636", - ":facepalm:": "\U0001f926", - ":facepunch:": "\U0001f44a", - ":factory:": "\U0001f3ed", - ":factory_worker:": "\U0001f9d1\u200d\U0001f3ed", - ":fairy:": "\U0001f9da\u200d\u2640\ufe0f", - ":fairy_man:": "\U0001f9da\u200d\u2642\ufe0f", - ":fairy_tone1:": "\U0001f9da\U0001f3fb", - ":fairy_tone2:": "\U0001f9da\U0001f3fc", - ":fairy_tone3:": "\U0001f9da\U0001f3fd", - ":fairy_tone4:": "\U0001f9da\U0001f3fe", - ":fairy_tone5:": "\U0001f9da\U0001f3ff", - ":fairy_woman:": "\U0001f9da\u200d\u2640\ufe0f", - ":falafel:": "\U0001f9c6", - ":falkland_islands:": "\U0001f1eb\U0001f1f0", - ":fallen_leaf:": "\U0001f342", - ":family:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", - ":family_man_boy:": "\U0001f468\u200d\U0001f466", - ":family_man_boy_boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466", - ":family_man_girl:": "\U0001f468\u200d\U0001f467", - ":family_man_girl_boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466", - ":family_man_girl_girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467", - ":family_man_man_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", - ":family_man_man_boy_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", - ":family_man_man_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", - ":family_man_man_girl_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", - ":family_man_man_girl_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", - ":family_man_woman_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", - ":family_man_woman_boy_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":family_man_woman_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", - ":family_man_woman_girl_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":family_man_woman_girl_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":family_mmb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", - ":family_mmbb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", - ":family_mmg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", - ":family_mmgb:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", - ":family_mmgg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", - ":family_mwbb:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":family_mwg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", - ":family_mwgb:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":family_mwgg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":family_woman_boy:": "\U0001f469\u200d\U0001f466", - ":family_woman_boy_boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":family_woman_girl:": "\U0001f469\u200d\U0001f467", - ":family_woman_girl_boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":family_woman_girl_girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":family_woman_woman_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", - ":family_woman_woman_boy_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":family_woman_woman_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", - ":family_woman_woman_girl_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":family_woman_woman_girl_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":family_wwb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", - ":family_wwbb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":family_wwg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", - ":family_wwgb:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":family_wwgg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":farmer:": "\U0001f9d1\u200d\U0001f33e", - ":faroe_islands:": "\U0001f1eb\U0001f1f4", - ":fast-forward_button:": "\u23e9", - ":fast_down_button:": "\u23ec", - ":fast_forward:": "\u23e9", - ":fast_reverse_button:": "\u23ea", - ":fast_up_button:": "\u23eb", - ":fax:": "\U0001f4e0", - ":fax_machine:": "\U0001f4e0", - ":fearful:": "\U0001f628", - ":fearful_face:": "\U0001f628", - ":feather:": "\U0001fab6", - ":feet:": "\U0001f43e", - ":female-artist:": "\U0001f469\u200d\U0001f3a8", - ":female-astronaut:": "\U0001f469\u200d\U0001f680", - ":female-construction-worker:": "\U0001f477\u200d\u2640\ufe0f", - ":female-cook:": "\U0001f469\u200d\U0001f373", - ":female-detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", - ":female-doctor:": "\U0001f469\u200d\u2695\ufe0f", - ":female-factory-worker:": "\U0001f469\u200d\U0001f3ed", - ":female-farmer:": "\U0001f469\u200d\U0001f33e", - ":female-firefighter:": "\U0001f469\u200d\U0001f692", - ":female-guard:": "\U0001f482\u200d\u2640\ufe0f", - ":female-judge:": "\U0001f469\u200d\u2696\ufe0f", - ":female-mechanic:": "\U0001f469\u200d\U0001f527", - ":female-office-worker:": "\U0001f469\u200d\U0001f4bc", - ":female-pilot:": "\U0001f469\u200d\u2708\ufe0f", - ":female-police-officer:": "\U0001f46e\u200d\u2640\ufe0f", - ":female-scientist:": "\U0001f469\u200d\U0001f52c", - ":female-singer:": "\U0001f469\u200d\U0001f3a4", - ":female-student:": "\U0001f469\u200d\U0001f393", - ":female-teacher:": "\U0001f469\u200d\U0001f3eb", - ":female-technologist:": "\U0001f469\u200d\U0001f4bb", - ":female_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", - ":female_elf:": "\U0001f9dd\u200d\u2640\ufe0f", - ":female_fairy:": "\U0001f9da\u200d\u2640\ufe0f", - ":female_genie:": "\U0001f9de\u200d\u2640\ufe0f", - ":female_mage:": "\U0001f9d9\u200d\u2640\ufe0f", - ":female_sign:": "\u2640\ufe0f", - ":female_superhero:": "\U0001f9b8\u200d\u2640\ufe0f", - ":female_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f", - ":female_vampire:": "\U0001f9db\u200d\u2640\ufe0f", - ":female_zombie:": "\U0001f9df\u200d\u2640\ufe0f", - ":fencer:": "\U0001f93a", - ":ferris_wheel:": "\U0001f3a1", - ":ferry:": "\u26f4\ufe0f", - ":field_hockey:": "\U0001f3d1", - ":field_hockey_stick_and_ball:": "\U0001f3d1", - ":fiji:": "\U0001f1eb\U0001f1ef", - ":file_cabinet:": "\U0001f5c4\ufe0f", - ":file_folder:": "\U0001f4c1", - ":film_frames:": "\U0001f39e\ufe0f", - ":film_projector:": "\U0001f4fd\ufe0f", - ":film_strip:": "\U0001f39e\ufe0f", - ":fingers_crossed:": "\U0001f91e", - ":fingers_crossed_tone1:": "\U0001f91e\U0001f3fb", - ":fingers_crossed_tone2:": "\U0001f91e\U0001f3fc", - ":fingers_crossed_tone3:": "\U0001f91e\U0001f3fd", - ":fingers_crossed_tone4:": "\U0001f91e\U0001f3fe", - ":fingers_crossed_tone5:": "\U0001f91e\U0001f3ff", - ":finland:": "\U0001f1eb\U0001f1ee", - ":fire:": "\U0001f525", - ":fire_engine:": "\U0001f692", - ":fire_extinguisher:": "\U0001f9ef", - ":firecracker:": "\U0001f9e8", - ":firefighter:": "\U0001f9d1\u200d\U0001f692", - ":fireworks:": "\U0001f386", - ":first_place:": "\U0001f947", - ":first_place_medal:": "\U0001f947", - ":first_quarter_moon:": "\U0001f313", - ":first_quarter_moon_face:": "\U0001f31b", - ":first_quarter_moon_with_face:": "\U0001f31b", - ":fish:": "\U0001f41f", - ":fish_cake:": "\U0001f365", - ":fish_cake_with_swirl:": "\U0001f365", - ":fishing_pole:": "\U0001f3a3", - ":fishing_pole_and_fish:": "\U0001f3a3", - ":fist:": "\u270a", - ":fist_left:": "\U0001f91b", - ":fist_oncoming:": "\U0001f44a", - ":fist_raised:": "\u270a", - ":fist_right:": "\U0001f91c", - ":fist_tone1:": "\u270a\U0001f3fb", - ":fist_tone2:": "\u270a\U0001f3fc", - ":fist_tone3:": "\u270a\U0001f3fd", - ":fist_tone4:": "\u270a\U0001f3fe", - ":fist_tone5:": "\u270a\U0001f3ff", - ":five:": "5\ufe0f\u20e3", - ":five-thirty:": "\U0001f560", - ":five_o’clock:": "\U0001f554", - ":flag-ac:": "\U0001f1e6\U0001f1e8", - ":flag-ad:": "\U0001f1e6\U0001f1e9", - ":flag-ae:": "\U0001f1e6\U0001f1ea", - ":flag-af:": "\U0001f1e6\U0001f1eb", - ":flag-ag:": "\U0001f1e6\U0001f1ec", - ":flag-ai:": "\U0001f1e6\U0001f1ee", - ":flag-al:": "\U0001f1e6\U0001f1f1", - ":flag-am:": "\U0001f1e6\U0001f1f2", - ":flag-ao:": "\U0001f1e6\U0001f1f4", - ":flag-aq:": "\U0001f1e6\U0001f1f6", - ":flag-ar:": "\U0001f1e6\U0001f1f7", - ":flag-as:": "\U0001f1e6\U0001f1f8", - ":flag-at:": "\U0001f1e6\U0001f1f9", - ":flag-au:": "\U0001f1e6\U0001f1fa", - ":flag-aw:": "\U0001f1e6\U0001f1fc", - ":flag-ax:": "\U0001f1e6\U0001f1fd", - ":flag-az:": "\U0001f1e6\U0001f1ff", - ":flag-ba:": "\U0001f1e7\U0001f1e6", - ":flag-bb:": "\U0001f1e7\U0001f1e7", - ":flag-bd:": "\U0001f1e7\U0001f1e9", - ":flag-be:": "\U0001f1e7\U0001f1ea", - ":flag-bf:": "\U0001f1e7\U0001f1eb", - ":flag-bg:": "\U0001f1e7\U0001f1ec", - ":flag-bh:": "\U0001f1e7\U0001f1ed", - ":flag-bi:": "\U0001f1e7\U0001f1ee", - ":flag-bj:": "\U0001f1e7\U0001f1ef", - ":flag-bl:": "\U0001f1e7\U0001f1f1", - ":flag-bm:": "\U0001f1e7\U0001f1f2", - ":flag-bn:": "\U0001f1e7\U0001f1f3", - ":flag-bo:": "\U0001f1e7\U0001f1f4", - ":flag-bq:": "\U0001f1e7\U0001f1f6", - ":flag-br:": "\U0001f1e7\U0001f1f7", - ":flag-bs:": "\U0001f1e7\U0001f1f8", - ":flag-bt:": "\U0001f1e7\U0001f1f9", - ":flag-bv:": "\U0001f1e7\U0001f1fb", - ":flag-bw:": "\U0001f1e7\U0001f1fc", - ":flag-by:": "\U0001f1e7\U0001f1fe", - ":flag-bz:": "\U0001f1e7\U0001f1ff", - ":flag-ca:": "\U0001f1e8\U0001f1e6", - ":flag-cc:": "\U0001f1e8\U0001f1e8", - ":flag-cd:": "\U0001f1e8\U0001f1e9", - ":flag-cf:": "\U0001f1e8\U0001f1eb", - ":flag-cg:": "\U0001f1e8\U0001f1ec", - ":flag-ch:": "\U0001f1e8\U0001f1ed", - ":flag-ci:": "\U0001f1e8\U0001f1ee", - ":flag-ck:": "\U0001f1e8\U0001f1f0", - ":flag-cl:": "\U0001f1e8\U0001f1f1", - ":flag-cm:": "\U0001f1e8\U0001f1f2", - ":flag-co:": "\U0001f1e8\U0001f1f4", - ":flag-cp:": "\U0001f1e8\U0001f1f5", - ":flag-cr:": "\U0001f1e8\U0001f1f7", - ":flag-cu:": "\U0001f1e8\U0001f1fa", - ":flag-cv:": "\U0001f1e8\U0001f1fb", - ":flag-cw:": "\U0001f1e8\U0001f1fc", - ":flag-cx:": "\U0001f1e8\U0001f1fd", - ":flag-cy:": "\U0001f1e8\U0001f1fe", - ":flag-cz:": "\U0001f1e8\U0001f1ff", - ":flag-dg:": "\U0001f1e9\U0001f1ec", - ":flag-dj:": "\U0001f1e9\U0001f1ef", - ":flag-dk:": "\U0001f1e9\U0001f1f0", - ":flag-dm:": "\U0001f1e9\U0001f1f2", - ":flag-do:": "\U0001f1e9\U0001f1f4", - ":flag-dz:": "\U0001f1e9\U0001f1ff", - ":flag-ea:": "\U0001f1ea\U0001f1e6", - ":flag-ec:": "\U0001f1ea\U0001f1e8", - ":flag-ee:": "\U0001f1ea\U0001f1ea", - ":flag-eg:": "\U0001f1ea\U0001f1ec", - ":flag-eh:": "\U0001f1ea\U0001f1ed", - ":flag-england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", - ":flag-er:": "\U0001f1ea\U0001f1f7", - ":flag-et:": "\U0001f1ea\U0001f1f9", - ":flag-eu:": "\U0001f1ea\U0001f1fa", - ":flag-fi:": "\U0001f1eb\U0001f1ee", - ":flag-fj:": "\U0001f1eb\U0001f1ef", - ":flag-fk:": "\U0001f1eb\U0001f1f0", - ":flag-fm:": "\U0001f1eb\U0001f1f2", - ":flag-fo:": "\U0001f1eb\U0001f1f4", - ":flag-ga:": "\U0001f1ec\U0001f1e6", - ":flag-gd:": "\U0001f1ec\U0001f1e9", - ":flag-ge:": "\U0001f1ec\U0001f1ea", - ":flag-gf:": "\U0001f1ec\U0001f1eb", - ":flag-gg:": "\U0001f1ec\U0001f1ec", - ":flag-gh:": "\U0001f1ec\U0001f1ed", - ":flag-gi:": "\U0001f1ec\U0001f1ee", - ":flag-gl:": "\U0001f1ec\U0001f1f1", - ":flag-gm:": "\U0001f1ec\U0001f1f2", - ":flag-gn:": "\U0001f1ec\U0001f1f3", - ":flag-gp:": "\U0001f1ec\U0001f1f5", - ":flag-gq:": "\U0001f1ec\U0001f1f6", - ":flag-gr:": "\U0001f1ec\U0001f1f7", - ":flag-gs:": "\U0001f1ec\U0001f1f8", - ":flag-gt:": "\U0001f1ec\U0001f1f9", - ":flag-gu:": "\U0001f1ec\U0001f1fa", - ":flag-gw:": "\U0001f1ec\U0001f1fc", - ":flag-gy:": "\U0001f1ec\U0001f1fe", - ":flag-hk:": "\U0001f1ed\U0001f1f0", - ":flag-hm:": "\U0001f1ed\U0001f1f2", - ":flag-hn:": "\U0001f1ed\U0001f1f3", - ":flag-hr:": "\U0001f1ed\U0001f1f7", - ":flag-ht:": "\U0001f1ed\U0001f1f9", - ":flag-hu:": "\U0001f1ed\U0001f1fa", - ":flag-ic:": "\U0001f1ee\U0001f1e8", - ":flag-id:": "\U0001f1ee\U0001f1e9", - ":flag-ie:": "\U0001f1ee\U0001f1ea", - ":flag-il:": "\U0001f1ee\U0001f1f1", - ":flag-im:": "\U0001f1ee\U0001f1f2", - ":flag-in:": "\U0001f1ee\U0001f1f3", - ":flag-io:": "\U0001f1ee\U0001f1f4", - ":flag-iq:": "\U0001f1ee\U0001f1f6", - ":flag-ir:": "\U0001f1ee\U0001f1f7", - ":flag-is:": "\U0001f1ee\U0001f1f8", - ":flag-je:": "\U0001f1ef\U0001f1ea", - ":flag-jm:": "\U0001f1ef\U0001f1f2", - ":flag-jo:": "\U0001f1ef\U0001f1f4", - ":flag-ke:": "\U0001f1f0\U0001f1ea", - ":flag-kg:": "\U0001f1f0\U0001f1ec", - ":flag-kh:": "\U0001f1f0\U0001f1ed", - ":flag-ki:": "\U0001f1f0\U0001f1ee", - ":flag-km:": "\U0001f1f0\U0001f1f2", - ":flag-kn:": "\U0001f1f0\U0001f1f3", - ":flag-kp:": "\U0001f1f0\U0001f1f5", - ":flag-kw:": "\U0001f1f0\U0001f1fc", - ":flag-ky:": "\U0001f1f0\U0001f1fe", - ":flag-kz:": "\U0001f1f0\U0001f1ff", - ":flag-la:": "\U0001f1f1\U0001f1e6", - ":flag-lb:": "\U0001f1f1\U0001f1e7", - ":flag-lc:": "\U0001f1f1\U0001f1e8", - ":flag-li:": "\U0001f1f1\U0001f1ee", - ":flag-lk:": "\U0001f1f1\U0001f1f0", - ":flag-lr:": "\U0001f1f1\U0001f1f7", - ":flag-ls:": "\U0001f1f1\U0001f1f8", - ":flag-lt:": "\U0001f1f1\U0001f1f9", - ":flag-lu:": "\U0001f1f1\U0001f1fa", - ":flag-lv:": "\U0001f1f1\U0001f1fb", - ":flag-ly:": "\U0001f1f1\U0001f1fe", - ":flag-ma:": "\U0001f1f2\U0001f1e6", - ":flag-mc:": "\U0001f1f2\U0001f1e8", - ":flag-md:": "\U0001f1f2\U0001f1e9", - ":flag-me:": "\U0001f1f2\U0001f1ea", - ":flag-mf:": "\U0001f1f2\U0001f1eb", - ":flag-mg:": "\U0001f1f2\U0001f1ec", - ":flag-mh:": "\U0001f1f2\U0001f1ed", - ":flag-mk:": "\U0001f1f2\U0001f1f0", - ":flag-ml:": "\U0001f1f2\U0001f1f1", - ":flag-mm:": "\U0001f1f2\U0001f1f2", - ":flag-mn:": "\U0001f1f2\U0001f1f3", - ":flag-mo:": "\U0001f1f2\U0001f1f4", - ":flag-mp:": "\U0001f1f2\U0001f1f5", - ":flag-mq:": "\U0001f1f2\U0001f1f6", - ":flag-mr:": "\U0001f1f2\U0001f1f7", - ":flag-ms:": "\U0001f1f2\U0001f1f8", - ":flag-mt:": "\U0001f1f2\U0001f1f9", - ":flag-mu:": "\U0001f1f2\U0001f1fa", - ":flag-mv:": "\U0001f1f2\U0001f1fb", - ":flag-mw:": "\U0001f1f2\U0001f1fc", - ":flag-mx:": "\U0001f1f2\U0001f1fd", - ":flag-my:": "\U0001f1f2\U0001f1fe", - ":flag-mz:": "\U0001f1f2\U0001f1ff", - ":flag-na:": "\U0001f1f3\U0001f1e6", - ":flag-nc:": "\U0001f1f3\U0001f1e8", - ":flag-ne:": "\U0001f1f3\U0001f1ea", - ":flag-nf:": "\U0001f1f3\U0001f1eb", - ":flag-ng:": "\U0001f1f3\U0001f1ec", - ":flag-ni:": "\U0001f1f3\U0001f1ee", - ":flag-nl:": "\U0001f1f3\U0001f1f1", - ":flag-no:": "\U0001f1f3\U0001f1f4", - ":flag-np:": "\U0001f1f3\U0001f1f5", - ":flag-nr:": "\U0001f1f3\U0001f1f7", - ":flag-nu:": "\U0001f1f3\U0001f1fa", - ":flag-nz:": "\U0001f1f3\U0001f1ff", - ":flag-om:": "\U0001f1f4\U0001f1f2", - ":flag-pa:": "\U0001f1f5\U0001f1e6", - ":flag-pe:": "\U0001f1f5\U0001f1ea", - ":flag-pf:": "\U0001f1f5\U0001f1eb", - ":flag-pg:": "\U0001f1f5\U0001f1ec", - ":flag-ph:": "\U0001f1f5\U0001f1ed", - ":flag-pk:": "\U0001f1f5\U0001f1f0", - ":flag-pl:": "\U0001f1f5\U0001f1f1", - ":flag-pm:": "\U0001f1f5\U0001f1f2", - ":flag-pn:": "\U0001f1f5\U0001f1f3", - ":flag-pr:": "\U0001f1f5\U0001f1f7", - ":flag-ps:": "\U0001f1f5\U0001f1f8", - ":flag-pt:": "\U0001f1f5\U0001f1f9", - ":flag-pw:": "\U0001f1f5\U0001f1fc", - ":flag-py:": "\U0001f1f5\U0001f1fe", - ":flag-qa:": "\U0001f1f6\U0001f1e6", - ":flag-re:": "\U0001f1f7\U0001f1ea", - ":flag-ro:": "\U0001f1f7\U0001f1f4", - ":flag-rs:": "\U0001f1f7\U0001f1f8", - ":flag-rw:": "\U0001f1f7\U0001f1fc", - ":flag-sa:": "\U0001f1f8\U0001f1e6", - ":flag-sb:": "\U0001f1f8\U0001f1e7", - ":flag-sc:": "\U0001f1f8\U0001f1e8", - ":flag-scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", - ":flag-sd:": "\U0001f1f8\U0001f1e9", - ":flag-se:": "\U0001f1f8\U0001f1ea", - ":flag-sg:": "\U0001f1f8\U0001f1ec", - ":flag-sh:": "\U0001f1f8\U0001f1ed", - ":flag-si:": "\U0001f1f8\U0001f1ee", - ":flag-sj:": "\U0001f1f8\U0001f1ef", - ":flag-sk:": "\U0001f1f8\U0001f1f0", - ":flag-sl:": "\U0001f1f8\U0001f1f1", - ":flag-sm:": "\U0001f1f8\U0001f1f2", - ":flag-sn:": "\U0001f1f8\U0001f1f3", - ":flag-so:": "\U0001f1f8\U0001f1f4", - ":flag-sr:": "\U0001f1f8\U0001f1f7", - ":flag-ss:": "\U0001f1f8\U0001f1f8", - ":flag-st:": "\U0001f1f8\U0001f1f9", - ":flag-sv:": "\U0001f1f8\U0001f1fb", - ":flag-sx:": "\U0001f1f8\U0001f1fd", - ":flag-sy:": "\U0001f1f8\U0001f1fe", - ":flag-sz:": "\U0001f1f8\U0001f1ff", - ":flag-ta:": "\U0001f1f9\U0001f1e6", - ":flag-tc:": "\U0001f1f9\U0001f1e8", - ":flag-td:": "\U0001f1f9\U0001f1e9", - ":flag-tf:": "\U0001f1f9\U0001f1eb", - ":flag-tg:": "\U0001f1f9\U0001f1ec", - ":flag-th:": "\U0001f1f9\U0001f1ed", - ":flag-tj:": "\U0001f1f9\U0001f1ef", - ":flag-tk:": "\U0001f1f9\U0001f1f0", - ":flag-tl:": "\U0001f1f9\U0001f1f1", - ":flag-tm:": "\U0001f1f9\U0001f1f2", - ":flag-tn:": "\U0001f1f9\U0001f1f3", - ":flag-to:": "\U0001f1f9\U0001f1f4", - ":flag-tr:": "\U0001f1f9\U0001f1f7", - ":flag-tt:": "\U0001f1f9\U0001f1f9", - ":flag-tv:": "\U0001f1f9\U0001f1fb", - ":flag-tw:": "\U0001f1f9\U0001f1fc", - ":flag-tz:": "\U0001f1f9\U0001f1ff", - ":flag-ua:": "\U0001f1fa\U0001f1e6", - ":flag-ug:": "\U0001f1fa\U0001f1ec", - ":flag-um:": "\U0001f1fa\U0001f1f2", - ":flag-un:": "\U0001f1fa\U0001f1f3", - ":flag-uy:": "\U0001f1fa\U0001f1fe", - ":flag-uz:": "\U0001f1fa\U0001f1ff", - ":flag-va:": "\U0001f1fb\U0001f1e6", - ":flag-vc:": "\U0001f1fb\U0001f1e8", - ":flag-ve:": "\U0001f1fb\U0001f1ea", - ":flag-vg:": "\U0001f1fb\U0001f1ec", - ":flag-vi:": "\U0001f1fb\U0001f1ee", - ":flag-vn:": "\U0001f1fb\U0001f1f3", - ":flag-vu:": "\U0001f1fb\U0001f1fa", - ":flag-wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", - ":flag-wf:": "\U0001f1fc\U0001f1eb", - ":flag-ws:": "\U0001f1fc\U0001f1f8", - ":flag-xk:": "\U0001f1fd\U0001f1f0", - ":flag-ye:": "\U0001f1fe\U0001f1ea", - ":flag-yt:": "\U0001f1fe\U0001f1f9", - ":flag-za:": "\U0001f1ff\U0001f1e6", - ":flag-zm:": "\U0001f1ff\U0001f1f2", - ":flag-zw:": "\U0001f1ff\U0001f1fc", - ":flag_Afghanistan:": "\U0001f1e6\U0001f1eb", - ":flag_Albania:": "\U0001f1e6\U0001f1f1", - ":flag_Algeria:": "\U0001f1e9\U0001f1ff", - ":flag_American_Samoa:": "\U0001f1e6\U0001f1f8", - ":flag_Andorra:": "\U0001f1e6\U0001f1e9", - ":flag_Angola:": "\U0001f1e6\U0001f1f4", - ":flag_Anguilla:": "\U0001f1e6\U0001f1ee", - ":flag_Antarctica:": "\U0001f1e6\U0001f1f6", - ":flag_Antigua_&_Barbuda:": "\U0001f1e6\U0001f1ec", - ":flag_Argentina:": "\U0001f1e6\U0001f1f7", - ":flag_Armenia:": "\U0001f1e6\U0001f1f2", - ":flag_Aruba:": "\U0001f1e6\U0001f1fc", - ":flag_Ascension_Island:": "\U0001f1e6\U0001f1e8", - ":flag_Australia:": "\U0001f1e6\U0001f1fa", - ":flag_Austria:": "\U0001f1e6\U0001f1f9", - ":flag_Azerbaijan:": "\U0001f1e6\U0001f1ff", - ":flag_Bahamas:": "\U0001f1e7\U0001f1f8", - ":flag_Bahrain:": "\U0001f1e7\U0001f1ed", - ":flag_Bangladesh:": "\U0001f1e7\U0001f1e9", - ":flag_Barbados:": "\U0001f1e7\U0001f1e7", - ":flag_Belarus:": "\U0001f1e7\U0001f1fe", - ":flag_Belgium:": "\U0001f1e7\U0001f1ea", - ":flag_Belize:": "\U0001f1e7\U0001f1ff", - ":flag_Benin:": "\U0001f1e7\U0001f1ef", - ":flag_Bermuda:": "\U0001f1e7\U0001f1f2", - ":flag_Bhutan:": "\U0001f1e7\U0001f1f9", - ":flag_Bolivia:": "\U0001f1e7\U0001f1f4", - ":flag_Bosnia_&_Herzegovina:": "\U0001f1e7\U0001f1e6", - ":flag_Botswana:": "\U0001f1e7\U0001f1fc", - ":flag_Bouvet_Island:": "\U0001f1e7\U0001f1fb", - ":flag_Brazil:": "\U0001f1e7\U0001f1f7", - ":flag_British_Indian_Ocean_Territory:": "\U0001f1ee\U0001f1f4", - ":flag_British_Virgin_Islands:": "\U0001f1fb\U0001f1ec", - ":flag_Brunei:": "\U0001f1e7\U0001f1f3", - ":flag_Bulgaria:": "\U0001f1e7\U0001f1ec", - ":flag_Burkina_Faso:": "\U0001f1e7\U0001f1eb", - ":flag_Burundi:": "\U0001f1e7\U0001f1ee", - ":flag_Cambodia:": "\U0001f1f0\U0001f1ed", - ":flag_Cameroon:": "\U0001f1e8\U0001f1f2", - ":flag_Canada:": "\U0001f1e8\U0001f1e6", - ":flag_Canary_Islands:": "\U0001f1ee\U0001f1e8", - ":flag_Cape_Verde:": "\U0001f1e8\U0001f1fb", - ":flag_Caribbean_Netherlands:": "\U0001f1e7\U0001f1f6", - ":flag_Cayman_Islands:": "\U0001f1f0\U0001f1fe", - ":flag_Central_African_Republic:": "\U0001f1e8\U0001f1eb", - ":flag_Ceuta_&_Melilla:": "\U0001f1ea\U0001f1e6", - ":flag_Chad:": "\U0001f1f9\U0001f1e9", - ":flag_Chile:": "\U0001f1e8\U0001f1f1", - ":flag_China:": "\U0001f1e8\U0001f1f3", - ":flag_Christmas_Island:": "\U0001f1e8\U0001f1fd", - ":flag_Clipperton_Island:": "\U0001f1e8\U0001f1f5", - ":flag_Cocos_(Keeling)_Islands:": "\U0001f1e8\U0001f1e8", - ":flag_Colombia:": "\U0001f1e8\U0001f1f4", - ":flag_Comoros:": "\U0001f1f0\U0001f1f2", - ":flag_Congo_-_Brazzaville:": "\U0001f1e8\U0001f1ec", - ":flag_Congo_-_Kinshasa:": "\U0001f1e8\U0001f1e9", - ":flag_Cook_Islands:": "\U0001f1e8\U0001f1f0", - ":flag_Costa_Rica:": "\U0001f1e8\U0001f1f7", - ":flag_Croatia:": "\U0001f1ed\U0001f1f7", - ":flag_Cuba:": "\U0001f1e8\U0001f1fa", - ":flag_Curaçao:": "\U0001f1e8\U0001f1fc", - ":flag_Cyprus:": "\U0001f1e8\U0001f1fe", - ":flag_Czechia:": "\U0001f1e8\U0001f1ff", - ":flag_Côte_d’Ivoire:": "\U0001f1e8\U0001f1ee", - ":flag_Denmark:": "\U0001f1e9\U0001f1f0", - ":flag_Diego_Garcia:": "\U0001f1e9\U0001f1ec", - ":flag_Djibouti:": "\U0001f1e9\U0001f1ef", - ":flag_Dominica:": "\U0001f1e9\U0001f1f2", - ":flag_Dominican_Republic:": "\U0001f1e9\U0001f1f4", - ":flag_Ecuador:": "\U0001f1ea\U0001f1e8", - ":flag_Egypt:": "\U0001f1ea\U0001f1ec", - ":flag_El_Salvador:": "\U0001f1f8\U0001f1fb", - ":flag_England:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", - ":flag_Equatorial_Guinea:": "\U0001f1ec\U0001f1f6", - ":flag_Eritrea:": "\U0001f1ea\U0001f1f7", - ":flag_Estonia:": "\U0001f1ea\U0001f1ea", - ":flag_Eswatini:": "\U0001f1f8\U0001f1ff", - ":flag_Ethiopia:": "\U0001f1ea\U0001f1f9", - ":flag_European_Union:": "\U0001f1ea\U0001f1fa", - ":flag_Falkland_Islands:": "\U0001f1eb\U0001f1f0", - ":flag_Faroe_Islands:": "\U0001f1eb\U0001f1f4", - ":flag_Fiji:": "\U0001f1eb\U0001f1ef", - ":flag_Finland:": "\U0001f1eb\U0001f1ee", - ":flag_France:": "\U0001f1eb\U0001f1f7", - ":flag_French_Guiana:": "\U0001f1ec\U0001f1eb", - ":flag_French_Polynesia:": "\U0001f1f5\U0001f1eb", - ":flag_French_Southern_Territories:": "\U0001f1f9\U0001f1eb", - ":flag_Gabon:": "\U0001f1ec\U0001f1e6", - ":flag_Gambia:": "\U0001f1ec\U0001f1f2", - ":flag_Georgia:": "\U0001f1ec\U0001f1ea", - ":flag_Germany:": "\U0001f1e9\U0001f1ea", - ":flag_Ghana:": "\U0001f1ec\U0001f1ed", - ":flag_Gibraltar:": "\U0001f1ec\U0001f1ee", - ":flag_Greece:": "\U0001f1ec\U0001f1f7", - ":flag_Greenland:": "\U0001f1ec\U0001f1f1", - ":flag_Grenada:": "\U0001f1ec\U0001f1e9", - ":flag_Guadeloupe:": "\U0001f1ec\U0001f1f5", - ":flag_Guam:": "\U0001f1ec\U0001f1fa", - ":flag_Guatemala:": "\U0001f1ec\U0001f1f9", - ":flag_Guernsey:": "\U0001f1ec\U0001f1ec", - ":flag_Guinea:": "\U0001f1ec\U0001f1f3", - ":flag_Guinea-Bissau:": "\U0001f1ec\U0001f1fc", - ":flag_Guyana:": "\U0001f1ec\U0001f1fe", - ":flag_Haiti:": "\U0001f1ed\U0001f1f9", - ":flag_Heard_&_McDonald_Islands:": "\U0001f1ed\U0001f1f2", - ":flag_Honduras:": "\U0001f1ed\U0001f1f3", - ":flag_Hong_Kong_SAR_China:": "\U0001f1ed\U0001f1f0", - ":flag_Hungary:": "\U0001f1ed\U0001f1fa", - ":flag_Iceland:": "\U0001f1ee\U0001f1f8", - ":flag_India:": "\U0001f1ee\U0001f1f3", - ":flag_Indonesia:": "\U0001f1ee\U0001f1e9", - ":flag_Iran:": "\U0001f1ee\U0001f1f7", - ":flag_Iraq:": "\U0001f1ee\U0001f1f6", - ":flag_Ireland:": "\U0001f1ee\U0001f1ea", - ":flag_Isle_of_Man:": "\U0001f1ee\U0001f1f2", - ":flag_Israel:": "\U0001f1ee\U0001f1f1", - ":flag_Italy:": "\U0001f1ee\U0001f1f9", - ":flag_Jamaica:": "\U0001f1ef\U0001f1f2", - ":flag_Japan:": "\U0001f1ef\U0001f1f5", - ":flag_Jersey:": "\U0001f1ef\U0001f1ea", - ":flag_Jordan:": "\U0001f1ef\U0001f1f4", - ":flag_Kazakhstan:": "\U0001f1f0\U0001f1ff", - ":flag_Kenya:": "\U0001f1f0\U0001f1ea", - ":flag_Kiribati:": "\U0001f1f0\U0001f1ee", - ":flag_Kosovo:": "\U0001f1fd\U0001f1f0", - ":flag_Kuwait:": "\U0001f1f0\U0001f1fc", - ":flag_Kyrgyzstan:": "\U0001f1f0\U0001f1ec", - ":flag_Laos:": "\U0001f1f1\U0001f1e6", - ":flag_Latvia:": "\U0001f1f1\U0001f1fb", - ":flag_Lebanon:": "\U0001f1f1\U0001f1e7", - ":flag_Lesotho:": "\U0001f1f1\U0001f1f8", - ":flag_Liberia:": "\U0001f1f1\U0001f1f7", - ":flag_Libya:": "\U0001f1f1\U0001f1fe", - ":flag_Liechtenstein:": "\U0001f1f1\U0001f1ee", - ":flag_Lithuania:": "\U0001f1f1\U0001f1f9", - ":flag_Luxembourg:": "\U0001f1f1\U0001f1fa", - ":flag_Macao_SAR_China:": "\U0001f1f2\U0001f1f4", - ":flag_Madagascar:": "\U0001f1f2\U0001f1ec", - ":flag_Malawi:": "\U0001f1f2\U0001f1fc", - ":flag_Malaysia:": "\U0001f1f2\U0001f1fe", - ":flag_Maldives:": "\U0001f1f2\U0001f1fb", - ":flag_Mali:": "\U0001f1f2\U0001f1f1", - ":flag_Malta:": "\U0001f1f2\U0001f1f9", - ":flag_Marshall_Islands:": "\U0001f1f2\U0001f1ed", - ":flag_Martinique:": "\U0001f1f2\U0001f1f6", - ":flag_Mauritania:": "\U0001f1f2\U0001f1f7", - ":flag_Mauritius:": "\U0001f1f2\U0001f1fa", - ":flag_Mayotte:": "\U0001f1fe\U0001f1f9", - ":flag_Mexico:": "\U0001f1f2\U0001f1fd", - ":flag_Micronesia:": "\U0001f1eb\U0001f1f2", - ":flag_Moldova:": "\U0001f1f2\U0001f1e9", - ":flag_Monaco:": "\U0001f1f2\U0001f1e8", - ":flag_Mongolia:": "\U0001f1f2\U0001f1f3", - ":flag_Montenegro:": "\U0001f1f2\U0001f1ea", - ":flag_Montserrat:": "\U0001f1f2\U0001f1f8", - ":flag_Morocco:": "\U0001f1f2\U0001f1e6", - ":flag_Mozambique:": "\U0001f1f2\U0001f1ff", - ":flag_Myanmar_(Burma):": "\U0001f1f2\U0001f1f2", - ":flag_Namibia:": "\U0001f1f3\U0001f1e6", - ":flag_Nauru:": "\U0001f1f3\U0001f1f7", - ":flag_Nepal:": "\U0001f1f3\U0001f1f5", - ":flag_Netherlands:": "\U0001f1f3\U0001f1f1", - ":flag_New_Caledonia:": "\U0001f1f3\U0001f1e8", - ":flag_New_Zealand:": "\U0001f1f3\U0001f1ff", - ":flag_Nicaragua:": "\U0001f1f3\U0001f1ee", - ":flag_Niger:": "\U0001f1f3\U0001f1ea", - ":flag_Nigeria:": "\U0001f1f3\U0001f1ec", - ":flag_Niue:": "\U0001f1f3\U0001f1fa", - ":flag_Norfolk_Island:": "\U0001f1f3\U0001f1eb", - ":flag_North_Korea:": "\U0001f1f0\U0001f1f5", - ":flag_North_Macedonia:": "\U0001f1f2\U0001f1f0", - ":flag_Northern_Mariana_Islands:": "\U0001f1f2\U0001f1f5", - ":flag_Norway:": "\U0001f1f3\U0001f1f4", - ":flag_Oman:": "\U0001f1f4\U0001f1f2", - ":flag_Pakistan:": "\U0001f1f5\U0001f1f0", - ":flag_Palau:": "\U0001f1f5\U0001f1fc", - ":flag_Palestinian_Territories:": "\U0001f1f5\U0001f1f8", - ":flag_Panama:": "\U0001f1f5\U0001f1e6", - ":flag_Papua_New_Guinea:": "\U0001f1f5\U0001f1ec", - ":flag_Paraguay:": "\U0001f1f5\U0001f1fe", - ":flag_Peru:": "\U0001f1f5\U0001f1ea", - ":flag_Philippines:": "\U0001f1f5\U0001f1ed", - ":flag_Pitcairn_Islands:": "\U0001f1f5\U0001f1f3", - ":flag_Poland:": "\U0001f1f5\U0001f1f1", - ":flag_Portugal:": "\U0001f1f5\U0001f1f9", - ":flag_Puerto_Rico:": "\U0001f1f5\U0001f1f7", - ":flag_Qatar:": "\U0001f1f6\U0001f1e6", - ":flag_Romania:": "\U0001f1f7\U0001f1f4", - ":flag_Russia:": "\U0001f1f7\U0001f1fa", - ":flag_Rwanda:": "\U0001f1f7\U0001f1fc", - ":flag_Réunion:": "\U0001f1f7\U0001f1ea", - ":flag_Samoa:": "\U0001f1fc\U0001f1f8", - ":flag_San_Marino:": "\U0001f1f8\U0001f1f2", - ":flag_Saudi_Arabia:": "\U0001f1f8\U0001f1e6", - ":flag_Scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", - ":flag_Senegal:": "\U0001f1f8\U0001f1f3", - ":flag_Serbia:": "\U0001f1f7\U0001f1f8", - ":flag_Seychelles:": "\U0001f1f8\U0001f1e8", - ":flag_Sierra_Leone:": "\U0001f1f8\U0001f1f1", - ":flag_Singapore:": "\U0001f1f8\U0001f1ec", - ":flag_Sint_Maarten:": "\U0001f1f8\U0001f1fd", - ":flag_Slovakia:": "\U0001f1f8\U0001f1f0", - ":flag_Slovenia:": "\U0001f1f8\U0001f1ee", - ":flag_Solomon_Islands:": "\U0001f1f8\U0001f1e7", - ":flag_Somalia:": "\U0001f1f8\U0001f1f4", - ":flag_South_Africa:": "\U0001f1ff\U0001f1e6", - ":flag_South_Georgia_&_South_Sandwich_Islands:": "\U0001f1ec\U0001f1f8", - ":flag_South_Korea:": "\U0001f1f0\U0001f1f7", - ":flag_South_Sudan:": "\U0001f1f8\U0001f1f8", - ":flag_Spain:": "\U0001f1ea\U0001f1f8", - ":flag_Sri_Lanka:": "\U0001f1f1\U0001f1f0", - ":flag_St._Barthélemy:": "\U0001f1e7\U0001f1f1", - ":flag_St._Helena:": "\U0001f1f8\U0001f1ed", - ":flag_St._Kitts_&_Nevis:": "\U0001f1f0\U0001f1f3", - ":flag_St._Lucia:": "\U0001f1f1\U0001f1e8", - ":flag_St._Martin:": "\U0001f1f2\U0001f1eb", - ":flag_St._Pierre_&_Miquelon:": "\U0001f1f5\U0001f1f2", - ":flag_St._Vincent_&_Grenadines:": "\U0001f1fb\U0001f1e8", - ":flag_Sudan:": "\U0001f1f8\U0001f1e9", - ":flag_Suriname:": "\U0001f1f8\U0001f1f7", - ":flag_Svalbard_&_Jan_Mayen:": "\U0001f1f8\U0001f1ef", - ":flag_Sweden:": "\U0001f1f8\U0001f1ea", - ":flag_Switzerland:": "\U0001f1e8\U0001f1ed", - ":flag_Syria:": "\U0001f1f8\U0001f1fe", - ":flag_São_Tomé_&_Príncipe:": "\U0001f1f8\U0001f1f9", - ":flag_Taiwan:": "\U0001f1f9\U0001f1fc", - ":flag_Tajikistan:": "\U0001f1f9\U0001f1ef", - ":flag_Tanzania:": "\U0001f1f9\U0001f1ff", - ":flag_Thailand:": "\U0001f1f9\U0001f1ed", - ":flag_Timor-Leste:": "\U0001f1f9\U0001f1f1", - ":flag_Togo:": "\U0001f1f9\U0001f1ec", - ":flag_Tokelau:": "\U0001f1f9\U0001f1f0", - ":flag_Tonga:": "\U0001f1f9\U0001f1f4", - ":flag_Trinidad_&_Tobago:": "\U0001f1f9\U0001f1f9", - ":flag_Tristan_da_Cunha:": "\U0001f1f9\U0001f1e6", - ":flag_Tunisia:": "\U0001f1f9\U0001f1f3", - ":flag_Turkey:": "\U0001f1f9\U0001f1f7", - ":flag_Turkmenistan:": "\U0001f1f9\U0001f1f2", - ":flag_Turks_&_Caicos_Islands:": "\U0001f1f9\U0001f1e8", - ":flag_Tuvalu:": "\U0001f1f9\U0001f1fb", - ":flag_U.S._Outlying_Islands:": "\U0001f1fa\U0001f1f2", - ":flag_U.S._Virgin_Islands:": "\U0001f1fb\U0001f1ee", - ":flag_Uganda:": "\U0001f1fa\U0001f1ec", - ":flag_Ukraine:": "\U0001f1fa\U0001f1e6", - ":flag_United_Arab_Emirates:": "\U0001f1e6\U0001f1ea", - ":flag_United_Kingdom:": "\U0001f1ec\U0001f1e7", - ":flag_United_Nations:": "\U0001f1fa\U0001f1f3", - ":flag_United_States:": "\U0001f1fa\U0001f1f8", - ":flag_Uruguay:": "\U0001f1fa\U0001f1fe", - ":flag_Uzbekistan:": "\U0001f1fa\U0001f1ff", - ":flag_Vanuatu:": "\U0001f1fb\U0001f1fa", - ":flag_Vatican_City:": "\U0001f1fb\U0001f1e6", - ":flag_Venezuela:": "\U0001f1fb\U0001f1ea", - ":flag_Vietnam:": "\U0001f1fb\U0001f1f3", - ":flag_Wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", - ":flag_Wallis_&_Futuna:": "\U0001f1fc\U0001f1eb", - ":flag_Western_Sahara:": "\U0001f1ea\U0001f1ed", - ":flag_Yemen:": "\U0001f1fe\U0001f1ea", - ":flag_Zambia:": "\U0001f1ff\U0001f1f2", - ":flag_Zimbabwe:": "\U0001f1ff\U0001f1fc", - ":flag_ac:": "\U0001f1e6\U0001f1e8", - ":flag_ad:": "\U0001f1e6\U0001f1e9", - ":flag_ae:": "\U0001f1e6\U0001f1ea", - ":flag_af:": "\U0001f1e6\U0001f1eb", - ":flag_ag:": "\U0001f1e6\U0001f1ec", - ":flag_ai:": "\U0001f1e6\U0001f1ee", - ":flag_al:": "\U0001f1e6\U0001f1f1", - ":flag_am:": "\U0001f1e6\U0001f1f2", - ":flag_ao:": "\U0001f1e6\U0001f1f4", - ":flag_aq:": "\U0001f1e6\U0001f1f6", - ":flag_ar:": "\U0001f1e6\U0001f1f7", - ":flag_as:": "\U0001f1e6\U0001f1f8", - ":flag_at:": "\U0001f1e6\U0001f1f9", - ":flag_au:": "\U0001f1e6\U0001f1fa", - ":flag_aw:": "\U0001f1e6\U0001f1fc", - ":flag_ax:": "\U0001f1e6\U0001f1fd", - ":flag_az:": "\U0001f1e6\U0001f1ff", - ":flag_ba:": "\U0001f1e7\U0001f1e6", - ":flag_bb:": "\U0001f1e7\U0001f1e7", - ":flag_bd:": "\U0001f1e7\U0001f1e9", - ":flag_be:": "\U0001f1e7\U0001f1ea", - ":flag_bf:": "\U0001f1e7\U0001f1eb", - ":flag_bg:": "\U0001f1e7\U0001f1ec", - ":flag_bh:": "\U0001f1e7\U0001f1ed", - ":flag_bi:": "\U0001f1e7\U0001f1ee", - ":flag_bj:": "\U0001f1e7\U0001f1ef", - ":flag_bl:": "\U0001f1e7\U0001f1f1", - ":flag_black:": "\U0001f3f4", - ":flag_bm:": "\U0001f1e7\U0001f1f2", - ":flag_bn:": "\U0001f1e7\U0001f1f3", - ":flag_bo:": "\U0001f1e7\U0001f1f4", - ":flag_bq:": "\U0001f1e7\U0001f1f6", - ":flag_br:": "\U0001f1e7\U0001f1f7", - ":flag_bs:": "\U0001f1e7\U0001f1f8", - ":flag_bt:": "\U0001f1e7\U0001f1f9", - ":flag_bv:": "\U0001f1e7\U0001f1fb", - ":flag_bw:": "\U0001f1e7\U0001f1fc", - ":flag_by:": "\U0001f1e7\U0001f1fe", - ":flag_bz:": "\U0001f1e7\U0001f1ff", - ":flag_ca:": "\U0001f1e8\U0001f1e6", - ":flag_cc:": "\U0001f1e8\U0001f1e8", - ":flag_cd:": "\U0001f1e8\U0001f1e9", - ":flag_cf:": "\U0001f1e8\U0001f1eb", - ":flag_cg:": "\U0001f1e8\U0001f1ec", - ":flag_ch:": "\U0001f1e8\U0001f1ed", - ":flag_ci:": "\U0001f1e8\U0001f1ee", - ":flag_ck:": "\U0001f1e8\U0001f1f0", - ":flag_cl:": "\U0001f1e8\U0001f1f1", - ":flag_cm:": "\U0001f1e8\U0001f1f2", - ":flag_cn:": "\U0001f1e8\U0001f1f3", - ":flag_co:": "\U0001f1e8\U0001f1f4", - ":flag_cp:": "\U0001f1e8\U0001f1f5", - ":flag_cr:": "\U0001f1e8\U0001f1f7", - ":flag_cu:": "\U0001f1e8\U0001f1fa", - ":flag_cv:": "\U0001f1e8\U0001f1fb", - ":flag_cw:": "\U0001f1e8\U0001f1fc", - ":flag_cx:": "\U0001f1e8\U0001f1fd", - ":flag_cy:": "\U0001f1e8\U0001f1fe", - ":flag_cz:": "\U0001f1e8\U0001f1ff", - ":flag_de:": "\U0001f1e9\U0001f1ea", - ":flag_dg:": "\U0001f1e9\U0001f1ec", - ":flag_dj:": "\U0001f1e9\U0001f1ef", - ":flag_dk:": "\U0001f1e9\U0001f1f0", - ":flag_dm:": "\U0001f1e9\U0001f1f2", - ":flag_do:": "\U0001f1e9\U0001f1f4", - ":flag_dz:": "\U0001f1e9\U0001f1ff", - ":flag_ea:": "\U0001f1ea\U0001f1e6", - ":flag_ec:": "\U0001f1ea\U0001f1e8", - ":flag_ee:": "\U0001f1ea\U0001f1ea", - ":flag_eg:": "\U0001f1ea\U0001f1ec", - ":flag_eh:": "\U0001f1ea\U0001f1ed", - ":flag_er:": "\U0001f1ea\U0001f1f7", - ":flag_es:": "\U0001f1ea\U0001f1f8", - ":flag_et:": "\U0001f1ea\U0001f1f9", - ":flag_eu:": "\U0001f1ea\U0001f1fa", - ":flag_fi:": "\U0001f1eb\U0001f1ee", - ":flag_fj:": "\U0001f1eb\U0001f1ef", - ":flag_fk:": "\U0001f1eb\U0001f1f0", - ":flag_fm:": "\U0001f1eb\U0001f1f2", - ":flag_fo:": "\U0001f1eb\U0001f1f4", - ":flag_fr:": "\U0001f1eb\U0001f1f7", - ":flag_ga:": "\U0001f1ec\U0001f1e6", - ":flag_gb:": "\U0001f1ec\U0001f1e7", - ":flag_gd:": "\U0001f1ec\U0001f1e9", - ":flag_ge:": "\U0001f1ec\U0001f1ea", - ":flag_gf:": "\U0001f1ec\U0001f1eb", - ":flag_gg:": "\U0001f1ec\U0001f1ec", - ":flag_gh:": "\U0001f1ec\U0001f1ed", - ":flag_gi:": "\U0001f1ec\U0001f1ee", - ":flag_gl:": "\U0001f1ec\U0001f1f1", - ":flag_gm:": "\U0001f1ec\U0001f1f2", - ":flag_gn:": "\U0001f1ec\U0001f1f3", - ":flag_gp:": "\U0001f1ec\U0001f1f5", - ":flag_gq:": "\U0001f1ec\U0001f1f6", - ":flag_gr:": "\U0001f1ec\U0001f1f7", - ":flag_gs:": "\U0001f1ec\U0001f1f8", - ":flag_gt:": "\U0001f1ec\U0001f1f9", - ":flag_gu:": "\U0001f1ec\U0001f1fa", - ":flag_gw:": "\U0001f1ec\U0001f1fc", - ":flag_gy:": "\U0001f1ec\U0001f1fe", - ":flag_hk:": "\U0001f1ed\U0001f1f0", - ":flag_hm:": "\U0001f1ed\U0001f1f2", - ":flag_hn:": "\U0001f1ed\U0001f1f3", - ":flag_hr:": "\U0001f1ed\U0001f1f7", - ":flag_ht:": "\U0001f1ed\U0001f1f9", - ":flag_hu:": "\U0001f1ed\U0001f1fa", - ":flag_ic:": "\U0001f1ee\U0001f1e8", - ":flag_id:": "\U0001f1ee\U0001f1e9", - ":flag_ie:": "\U0001f1ee\U0001f1ea", - ":flag_il:": "\U0001f1ee\U0001f1f1", - ":flag_im:": "\U0001f1ee\U0001f1f2", - ":flag_in:": "\U0001f1ee\U0001f1f3", - ":flag_in_hole:": "\u26f3", - ":flag_io:": "\U0001f1ee\U0001f1f4", - ":flag_iq:": "\U0001f1ee\U0001f1f6", - ":flag_ir:": "\U0001f1ee\U0001f1f7", - ":flag_is:": "\U0001f1ee\U0001f1f8", - ":flag_it:": "\U0001f1ee\U0001f1f9", - ":flag_je:": "\U0001f1ef\U0001f1ea", - ":flag_jm:": "\U0001f1ef\U0001f1f2", - ":flag_jo:": "\U0001f1ef\U0001f1f4", - ":flag_jp:": "\U0001f1ef\U0001f1f5", - ":flag_ke:": "\U0001f1f0\U0001f1ea", - ":flag_kg:": "\U0001f1f0\U0001f1ec", - ":flag_kh:": "\U0001f1f0\U0001f1ed", - ":flag_ki:": "\U0001f1f0\U0001f1ee", - ":flag_km:": "\U0001f1f0\U0001f1f2", - ":flag_kn:": "\U0001f1f0\U0001f1f3", - ":flag_kp:": "\U0001f1f0\U0001f1f5", - ":flag_kr:": "\U0001f1f0\U0001f1f7", - ":flag_kw:": "\U0001f1f0\U0001f1fc", - ":flag_ky:": "\U0001f1f0\U0001f1fe", - ":flag_kz:": "\U0001f1f0\U0001f1ff", - ":flag_la:": "\U0001f1f1\U0001f1e6", - ":flag_lb:": "\U0001f1f1\U0001f1e7", - ":flag_lc:": "\U0001f1f1\U0001f1e8", - ":flag_li:": "\U0001f1f1\U0001f1ee", - ":flag_lk:": "\U0001f1f1\U0001f1f0", - ":flag_lr:": "\U0001f1f1\U0001f1f7", - ":flag_ls:": "\U0001f1f1\U0001f1f8", - ":flag_lt:": "\U0001f1f1\U0001f1f9", - ":flag_lu:": "\U0001f1f1\U0001f1fa", - ":flag_lv:": "\U0001f1f1\U0001f1fb", - ":flag_ly:": "\U0001f1f1\U0001f1fe", - ":flag_ma:": "\U0001f1f2\U0001f1e6", - ":flag_mc:": "\U0001f1f2\U0001f1e8", - ":flag_md:": "\U0001f1f2\U0001f1e9", - ":flag_me:": "\U0001f1f2\U0001f1ea", - ":flag_mf:": "\U0001f1f2\U0001f1eb", - ":flag_mg:": "\U0001f1f2\U0001f1ec", - ":flag_mh:": "\U0001f1f2\U0001f1ed", - ":flag_mk:": "\U0001f1f2\U0001f1f0", - ":flag_ml:": "\U0001f1f2\U0001f1f1", - ":flag_mm:": "\U0001f1f2\U0001f1f2", - ":flag_mn:": "\U0001f1f2\U0001f1f3", - ":flag_mo:": "\U0001f1f2\U0001f1f4", - ":flag_mp:": "\U0001f1f2\U0001f1f5", - ":flag_mq:": "\U0001f1f2\U0001f1f6", - ":flag_mr:": "\U0001f1f2\U0001f1f7", - ":flag_ms:": "\U0001f1f2\U0001f1f8", - ":flag_mt:": "\U0001f1f2\U0001f1f9", - ":flag_mu:": "\U0001f1f2\U0001f1fa", - ":flag_mv:": "\U0001f1f2\U0001f1fb", - ":flag_mw:": "\U0001f1f2\U0001f1fc", - ":flag_mx:": "\U0001f1f2\U0001f1fd", - ":flag_my:": "\U0001f1f2\U0001f1fe", - ":flag_mz:": "\U0001f1f2\U0001f1ff", - ":flag_na:": "\U0001f1f3\U0001f1e6", - ":flag_nc:": "\U0001f1f3\U0001f1e8", - ":flag_ne:": "\U0001f1f3\U0001f1ea", - ":flag_nf:": "\U0001f1f3\U0001f1eb", - ":flag_ng:": "\U0001f1f3\U0001f1ec", - ":flag_ni:": "\U0001f1f3\U0001f1ee", - ":flag_nl:": "\U0001f1f3\U0001f1f1", - ":flag_no:": "\U0001f1f3\U0001f1f4", - ":flag_np:": "\U0001f1f3\U0001f1f5", - ":flag_nr:": "\U0001f1f3\U0001f1f7", - ":flag_nu:": "\U0001f1f3\U0001f1fa", - ":flag_nz:": "\U0001f1f3\U0001f1ff", - ":flag_om:": "\U0001f1f4\U0001f1f2", - ":flag_pa:": "\U0001f1f5\U0001f1e6", - ":flag_pe:": "\U0001f1f5\U0001f1ea", - ":flag_pf:": "\U0001f1f5\U0001f1eb", - ":flag_pg:": "\U0001f1f5\U0001f1ec", - ":flag_ph:": "\U0001f1f5\U0001f1ed", - ":flag_pk:": "\U0001f1f5\U0001f1f0", - ":flag_pl:": "\U0001f1f5\U0001f1f1", - ":flag_pm:": "\U0001f1f5\U0001f1f2", - ":flag_pn:": "\U0001f1f5\U0001f1f3", - ":flag_pr:": "\U0001f1f5\U0001f1f7", - ":flag_ps:": "\U0001f1f5\U0001f1f8", - ":flag_pt:": "\U0001f1f5\U0001f1f9", - ":flag_pw:": "\U0001f1f5\U0001f1fc", - ":flag_py:": "\U0001f1f5\U0001f1fe", - ":flag_qa:": "\U0001f1f6\U0001f1e6", - ":flag_re:": "\U0001f1f7\U0001f1ea", - ":flag_ro:": "\U0001f1f7\U0001f1f4", - ":flag_rs:": "\U0001f1f7\U0001f1f8", - ":flag_ru:": "\U0001f1f7\U0001f1fa", - ":flag_rw:": "\U0001f1f7\U0001f1fc", - ":flag_sa:": "\U0001f1f8\U0001f1e6", - ":flag_sb:": "\U0001f1f8\U0001f1e7", - ":flag_sc:": "\U0001f1f8\U0001f1e8", - ":flag_sd:": "\U0001f1f8\U0001f1e9", - ":flag_se:": "\U0001f1f8\U0001f1ea", - ":flag_sg:": "\U0001f1f8\U0001f1ec", - ":flag_sh:": "\U0001f1f8\U0001f1ed", - ":flag_si:": "\U0001f1f8\U0001f1ee", - ":flag_sj:": "\U0001f1f8\U0001f1ef", - ":flag_sk:": "\U0001f1f8\U0001f1f0", - ":flag_sl:": "\U0001f1f8\U0001f1f1", - ":flag_sm:": "\U0001f1f8\U0001f1f2", - ":flag_sn:": "\U0001f1f8\U0001f1f3", - ":flag_so:": "\U0001f1f8\U0001f1f4", - ":flag_sr:": "\U0001f1f8\U0001f1f7", - ":flag_ss:": "\U0001f1f8\U0001f1f8", - ":flag_st:": "\U0001f1f8\U0001f1f9", - ":flag_sv:": "\U0001f1f8\U0001f1fb", - ":flag_sx:": "\U0001f1f8\U0001f1fd", - ":flag_sy:": "\U0001f1f8\U0001f1fe", - ":flag_sz:": "\U0001f1f8\U0001f1ff", - ":flag_ta:": "\U0001f1f9\U0001f1e6", - ":flag_tc:": "\U0001f1f9\U0001f1e8", - ":flag_td:": "\U0001f1f9\U0001f1e9", - ":flag_tf:": "\U0001f1f9\U0001f1eb", - ":flag_tg:": "\U0001f1f9\U0001f1ec", - ":flag_th:": "\U0001f1f9\U0001f1ed", - ":flag_tj:": "\U0001f1f9\U0001f1ef", - ":flag_tk:": "\U0001f1f9\U0001f1f0", - ":flag_tl:": "\U0001f1f9\U0001f1f1", - ":flag_tm:": "\U0001f1f9\U0001f1f2", - ":flag_tn:": "\U0001f1f9\U0001f1f3", - ":flag_to:": "\U0001f1f9\U0001f1f4", - ":flag_tr:": "\U0001f1f9\U0001f1f7", - ":flag_tt:": "\U0001f1f9\U0001f1f9", - ":flag_tv:": "\U0001f1f9\U0001f1fb", - ":flag_tw:": "\U0001f1f9\U0001f1fc", - ":flag_tz:": "\U0001f1f9\U0001f1ff", - ":flag_ua:": "\U0001f1fa\U0001f1e6", - ":flag_ug:": "\U0001f1fa\U0001f1ec", - ":flag_um:": "\U0001f1fa\U0001f1f2", - ":flag_us:": "\U0001f1fa\U0001f1f8", - ":flag_uy:": "\U0001f1fa\U0001f1fe", - ":flag_uz:": "\U0001f1fa\U0001f1ff", - ":flag_va:": "\U0001f1fb\U0001f1e6", - ":flag_vc:": "\U0001f1fb\U0001f1e8", - ":flag_ve:": "\U0001f1fb\U0001f1ea", - ":flag_vg:": "\U0001f1fb\U0001f1ec", - ":flag_vi:": "\U0001f1fb\U0001f1ee", - ":flag_vn:": "\U0001f1fb\U0001f1f3", - ":flag_vu:": "\U0001f1fb\U0001f1fa", - ":flag_wf:": "\U0001f1fc\U0001f1eb", - ":flag_white:": "\U0001f3f3", - ":flag_ws:": "\U0001f1fc\U0001f1f8", - ":flag_xk:": "\U0001f1fd\U0001f1f0", - ":flag_ye:": "\U0001f1fe\U0001f1ea", - ":flag_yt:": "\U0001f1fe\U0001f1f9", - ":flag_za:": "\U0001f1ff\U0001f1e6", - ":flag_zm:": "\U0001f1ff\U0001f1f2", - ":flag_zw:": "\U0001f1ff\U0001f1fc", - ":flag_Åland_Islands:": "\U0001f1e6\U0001f1fd", - ":flags:": "\U0001f38f", - ":flamingo:": "\U0001f9a9", - ":flashlight:": "\U0001f526", - ":flat_shoe:": "\U0001f97f", - ":flatbread:": "\U0001fad3", - ":fleur-de-lis:": "\u269c", - ":fleur_de_lis:": "\u269c\ufe0f", - ":flexed_biceps:": "\U0001f4aa", - ":flight_arrival:": "\U0001f6ec", - ":flight_departure:": "\U0001f6eb", - ":flipper:": "\U0001f42c", - ":floppy_disk:": "\U0001f4be", - ":flower_playing_cards:": "\U0001f3b4", - ":flushed:": "\U0001f633", - ":flushed_face:": "\U0001f633", - ":fly:": "\U0001fab0", - ":flying_disc:": "\U0001f94f", - ":flying_saucer:": "\U0001f6f8", - ":fog:": "\U0001f32b\ufe0f", - ":foggy:": "\U0001f301", - ":folded_hands:": "\U0001f64f", - ":fondue:": "\U0001fad5", - ":foot:": "\U0001f9b6", - ":football:": "\U0001f3c8", - ":footprints:": "\U0001f463", - ":fork_and_knife:": "\U0001f374", - ":fork_and_knife_with_plate:": "\U0001f37d", - ":fork_knife_plate:": "\U0001f37d", - ":fortune_cookie:": "\U0001f960", - ":fountain:": "\u26f2", - ":fountain_pen:": "\U0001f58b", - ":four:": "4\ufe0f\u20e3", - ":four-thirty:": "\U0001f55f", - ":four_leaf_clover:": "\U0001f340", - ":four_o’clock:": "\U0001f553", - ":fox:": "\U0001f98a", - ":fox_face:": "\U0001f98a", - ":fr:": "\U0001f1eb\U0001f1f7", - ":frame_photo:": "\U0001f5bc", - ":frame_with_picture:": "\U0001f5bc\ufe0f", - ":framed_picture:": "\U0001f5bc", - ":free:": "\U0001f193", - ":french_bread:": "\U0001f956", - ":french_fries:": "\U0001f35f", - ":french_guiana:": "\U0001f1ec\U0001f1eb", - ":french_polynesia:": "\U0001f1f5\U0001f1eb", - ":french_southern_territories:": "\U0001f1f9\U0001f1eb", - ":fried_egg:": "\U0001f373", - ":fried_shrimp:": "\U0001f364", - ":fries:": "\U0001f35f", - ":frog:": "\U0001f438", - ":front-facing_baby_chick:": "\U0001f425", - ":frowning:": "\U0001f626", - ":frowning2:": "\u2639", - ":frowning_face:": "\u2639", - ":frowning_face_with_open_mouth:": "\U0001f626", - ":frowning_man:": "\U0001f64d\u200d\u2642\ufe0f", - ":frowning_person:": "\U0001f64d", - ":frowning_woman:": "\U0001f64d\u200d\u2640\ufe0f", - ":fu:": "\U0001f595", - ":fuel_pump:": "\u26fd", - ":fuelpump:": "\u26fd", - ":full_moon:": "\U0001f315", - ":full_moon_face:": "\U0001f31d", - ":full_moon_with_face:": "\U0001f31d", - ":funeral_urn:": "\u26b1\ufe0f", - ":gabon:": "\U0001f1ec\U0001f1e6", - ":gambia:": "\U0001f1ec\U0001f1f2", - ":game_die:": "\U0001f3b2", - ":garlic:": "\U0001f9c4", - ":gb:": "\U0001f1ec\U0001f1e7", - ":gear:": "\u2699\ufe0f", - ":gem:": "\U0001f48e", - ":gem_stone:": "\U0001f48e", - ":gemini:": "\u264a", - ":genie:": "\U0001f9de\u200d\u2642\ufe0f", - ":genie_man:": "\U0001f9de\u200d\u2642\ufe0f", - ":genie_woman:": "\U0001f9de\u200d\u2640\ufe0f", - ":georgia:": "\U0001f1ec\U0001f1ea", - ":ghana:": "\U0001f1ec\U0001f1ed", - ":ghost:": "\U0001f47b", - ":gibraltar:": "\U0001f1ec\U0001f1ee", - ":gift:": "\U0001f381", - ":gift_heart:": "\U0001f49d", - ":giraffe:": "\U0001f992", - ":giraffe_face:": "\U0001f992", - ":girl:": "\U0001f467", - ":girl_tone1:": "\U0001f467\U0001f3fb", - ":girl_tone2:": "\U0001f467\U0001f3fc", - ":girl_tone3:": "\U0001f467\U0001f3fd", - ":girl_tone4:": "\U0001f467\U0001f3fe", - ":girl_tone5:": "\U0001f467\U0001f3ff", - ":glass_of_milk:": "\U0001f95b", - ":glasses:": "\U0001f453", - ":globe_showing_Americas:": "\U0001f30e", - ":globe_showing_Asia-Australia:": "\U0001f30f", - ":globe_showing_Europe-Africa:": "\U0001f30d", - ":globe_with_meridians:": "\U0001f310", - ":gloves:": "\U0001f9e4", - ":glowing_star:": "\U0001f31f", - ":goal:": "\U0001f945", - ":goal_net:": "\U0001f945", - ":goat:": "\U0001f410", - ":goblin:": "\U0001f47a", - ":goggles:": "\U0001f97d", - ":golf:": "\u26f3", - ":golfer:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", - ":golfing:": "\U0001f3cc\ufe0f", - ":golfing_man:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", - ":golfing_woman:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", - ":gorilla:": "\U0001f98d", - ":graduation_cap:": "\U0001f393", - ":grapes:": "\U0001f347", - ":greece:": "\U0001f1ec\U0001f1f7", - ":green_apple:": "\U0001f34f", - ":green_book:": "\U0001f4d7", - ":green_circle:": "\U0001f7e2", - ":green_heart:": "\U0001f49a", - ":green_salad:": "\U0001f957", - ":green_square:": "\U0001f7e9", - ":greenland:": "\U0001f1ec\U0001f1f1", - ":grenada:": "\U0001f1ec\U0001f1e9", - ":grey_exclamation:": "\u2755", - ":grey_question:": "\u2754", - ":grimacing:": "\U0001f62c", - ":grimacing_face:": "\U0001f62c", - ":grin:": "\U0001f601", - ":grinning:": "\U0001f600", - ":grinning_cat:": "\U0001f63a", - ":grinning_cat_with_smiling_eyes:": "\U0001f638", - ":grinning_face:": "\U0001f600", - ":grinning_face_with_big_eyes:": "\U0001f603", - ":grinning_face_with_smiling_eyes:": "\U0001f604", - ":grinning_face_with_sweat:": "\U0001f605", - ":grinning_squinting_face:": "\U0001f606", - ":growing_heart:": "\U0001f497", - ":guadeloupe:": "\U0001f1ec\U0001f1f5", - ":guam:": "\U0001f1ec\U0001f1fa", - ":guard:": "\U0001f482", - ":guard_tone1:": "\U0001f482\U0001f3fb", - ":guard_tone2:": "\U0001f482\U0001f3fc", - ":guard_tone3:": "\U0001f482\U0001f3fd", - ":guard_tone4:": "\U0001f482\U0001f3fe", - ":guard_tone5:": "\U0001f482\U0001f3ff", - ":guardsman:": "\U0001f482\u200d\u2642\ufe0f", - ":guardswoman:": "\U0001f482\u200d\u2640\ufe0f", - ":guatemala:": "\U0001f1ec\U0001f1f9", - ":guernsey:": "\U0001f1ec\U0001f1ec", - ":guide_dog:": "\U0001f9ae", - ":guinea:": "\U0001f1ec\U0001f1f3", - ":guinea_bissau:": "\U0001f1ec\U0001f1fc", - ":guitar:": "\U0001f3b8", - ":gun:": "\U0001f52b", - ":guyana:": "\U0001f1ec\U0001f1fe", - ":haircut:": "\U0001f487\u200d\u2640\ufe0f", - ":haircut_man:": "\U0001f487\u200d\u2642\ufe0f", - ":haircut_woman:": "\U0001f487\u200d\u2640\ufe0f", - ":haiti:": "\U0001f1ed\U0001f1f9", - ":hamburger:": "\U0001f354", - ":hammer:": "\U0001f528", - ":hammer_and_pick:": "\u2692\ufe0f", - ":hammer_and_wrench:": "\U0001f6e0\ufe0f", - ":hammer_pick:": "\u2692", - ":hamster:": "\U0001f439", - ":hand:": "\u270b", - ":hand_over_mouth:": "\U0001f92d", - ":hand_splayed_tone1:": "\U0001f590\U0001f3fb", - ":hand_splayed_tone2:": "\U0001f590\U0001f3fc", - ":hand_splayed_tone3:": "\U0001f590\U0001f3fd", - ":hand_splayed_tone4:": "\U0001f590\U0001f3fe", - ":hand_splayed_tone5:": "\U0001f590\U0001f3ff", - ":hand_with_fingers_splayed:": "\U0001f590", - ":handbag:": "\U0001f45c", - ":handball:": "\U0001f93e", - ":handball_person:": "\U0001f93e", - ":handshake:": "\U0001f91d", - ":hankey:": "\U0001f4a9", - ":hash:": "#\ufe0f\u20e3", - ":hatched_chick:": "\U0001f425", - ":hatching_chick:": "\U0001f423", - ":head_bandage:": "\U0001f915", - ":headphone:": "\U0001f3a7", - ":headphones:": "\U0001f3a7", - ":headstone:": "\U0001faa6", - ":health_worker:": "\U0001f9d1\u200d\u2695\ufe0f", - ":hear-no-evil_monkey:": "\U0001f649", - ":hear_no_evil:": "\U0001f649", - ":heard_mcdonald_islands:": "\U0001f1ed\U0001f1f2", - ":heart:": "\u2764\ufe0f", - ":heart_decoration:": "\U0001f49f", - ":heart_exclamation:": "\u2763", - ":heart_eyes:": "\U0001f60d", - ":heart_eyes_cat:": "\U0001f63b", - ":heart_suit:": "\u2665", - ":heart_with_arrow:": "\U0001f498", - ":heart_with_ribbon:": "\U0001f49d", - ":heartbeat:": "\U0001f493", - ":heartpulse:": "\U0001f497", - ":hearts:": "\u2665\ufe0f", - ":heavy_check_mark:": "\u2714\ufe0f", - ":heavy_division_sign:": "\u2797", - ":heavy_dollar_sign:": "\U0001f4b2", - ":heavy_exclamation_mark:": "\u2757", - ":heavy_heart_exclamation:": "\u2763\ufe0f", - ":heavy_heart_exclamation_mark_ornament:": "\u2763\ufe0f", - ":heavy_minus_sign:": "\u2796", - ":heavy_multiplication_x:": "\u2716\ufe0f", - ":heavy_plus_sign:": "\u2795", - ":hedgehog:": "\U0001f994", - ":helicopter:": "\U0001f681", - ":helmet_with_cross:": "\u26d1", - ":helmet_with_white_cross:": "\u26d1\ufe0f", - ":herb:": "\U0001f33f", - ":hibiscus:": "\U0001f33a", - ":high-heeled_shoe:": "\U0001f460", - ":high-speed_train:": "\U0001f684", - ":high_brightness:": "\U0001f506", - ":high_heel:": "\U0001f460", - ":high_voltage:": "\u26a1", - ":hiking_boot:": "\U0001f97e", - ":hindu_temple:": "\U0001f6d5", - ":hippopotamus:": "\U0001f99b", - ":hocho:": "\U0001f52a", - ":hockey:": "\U0001f3d2", - ":hole:": "\U0001f573\ufe0f", - ":hollow_red_circle:": "\u2b55", - ":homes:": "\U0001f3d8", - ":honduras:": "\U0001f1ed\U0001f1f3", - ":honey_pot:": "\U0001f36f", - ":honeybee:": "\U0001f41d", - ":hong_kong:": "\U0001f1ed\U0001f1f0", - ":hook:": "\U0001fa9d", - ":horizontal_traffic_light:": "\U0001f6a5", - ":horse:": "\U0001f434", - ":horse_face:": "\U0001f434", - ":horse_racing:": "\U0001f3c7", - ":horse_racing_tone1:": "\U0001f3c7\U0001f3fb", - ":horse_racing_tone2:": "\U0001f3c7\U0001f3fc", - ":horse_racing_tone3:": "\U0001f3c7\U0001f3fd", - ":horse_racing_tone4:": "\U0001f3c7\U0001f3fe", - ":horse_racing_tone5:": "\U0001f3c7\U0001f3ff", - ":hospital:": "\U0001f3e5", - ":hot_beverage:": "\u2615", - ":hot_dog:": "\U0001f32d", - ":hot_face:": "\U0001f975", - ":hot_pepper:": "\U0001f336\ufe0f", - ":hot_springs:": "\u2668", - ":hotdog:": "\U0001f32d", - ":hotel:": "\U0001f3e8", - ":hotsprings:": "\u2668\ufe0f", - ":hourglass:": "\u231b", - ":hourglass_done:": "\u231b", - ":hourglass_flowing_sand:": "\u23f3", - ":hourglass_not_done:": "\u23f3", - ":house:": "\U0001f3e0", - ":house_abandoned:": "\U0001f3da", - ":house_buildings:": "\U0001f3d8\ufe0f", - ":house_with_garden:": "\U0001f3e1", - ":houses:": "\U0001f3d8", - ":hugging:": "\U0001f917", - ":hugging_face:": "\U0001f917", - ":hugs:": "\U0001f917", - ":hundred_points:": "\U0001f4af", - ":hungary:": "\U0001f1ed\U0001f1fa", - ":hushed:": "\U0001f62f", - ":hushed_face:": "\U0001f62f", - ":hut:": "\U0001f6d6", - ":i_love_you_hand_sign:": "\U0001f91f", - ":ice:": "\U0001f9ca", - ":ice_cream:": "\U0001f368", - ":ice_cube:": "\U0001f9ca", - ":ice_hockey:": "\U0001f3d2", - ":ice_hockey_stick_and_puck:": "\U0001f3d2", - ":ice_skate:": "\u26f8\ufe0f", - ":icecream:": "\U0001f366", - ":iceland:": "\U0001f1ee\U0001f1f8", - ":id:": "\U0001f194", - ":ideograph_advantage:": "\U0001f250", - ":imp:": "\U0001f47f", - ":inbox_tray:": "\U0001f4e5", - ":incoming_envelope:": "\U0001f4e8", - ":index_pointing_up:": "\u261d", - ":india:": "\U0001f1ee\U0001f1f3", - ":indonesia:": "\U0001f1ee\U0001f1e9", - ":infinity:": "\u267e\ufe0f", - ":information:": "\u2139", - ":information_desk_person:": "\U0001f481\u200d\u2640\ufe0f", - ":information_source:": "\u2139\ufe0f", - ":innocent:": "\U0001f607", - ":input_latin_letters:": "\U0001f524", - ":input_latin_lowercase:": "\U0001f521", - ":input_latin_uppercase:": "\U0001f520", - ":input_numbers:": "\U0001f522", - ":input_symbols:": "\U0001f523", - ":interrobang:": "\u2049\ufe0f", - ":iphone:": "\U0001f4f1", - ":iran:": "\U0001f1ee\U0001f1f7", - ":iraq:": "\U0001f1ee\U0001f1f6", - ":ireland:": "\U0001f1ee\U0001f1ea", - ":island:": "\U0001f3dd", - ":isle_of_man:": "\U0001f1ee\U0001f1f2", - ":israel:": "\U0001f1ee\U0001f1f1", - ":it:": "\U0001f1ee\U0001f1f9", - ":izakaya_lantern:": "\U0001f3ee", - ":jack-o-lantern:": "\U0001f383", - ":jack_o_lantern:": "\U0001f383", - ":jamaica:": "\U0001f1ef\U0001f1f2", - ":japan:": "\U0001f5fe", - ":japanese_castle:": "\U0001f3ef", - ":japanese_goblin:": "\U0001f47a", - ":japanese_ogre:": "\U0001f479", - ":jeans:": "\U0001f456", - ":jersey:": "\U0001f1ef\U0001f1ea", - ":jigsaw:": "\U0001f9e9", - ":joker:": "\U0001f0cf", - ":jordan:": "\U0001f1ef\U0001f1f4", - ":joy:": "\U0001f602", - ":joy_cat:": "\U0001f639", - ":joystick:": "\U0001f579\ufe0f", - ":jp:": "\U0001f1ef\U0001f1f5", - ":judge:": "\U0001f9d1\u200d\u2696\ufe0f", - ":juggling:": "\U0001f939", - ":juggling_person:": "\U0001f939", - ":kaaba:": "\U0001f54b", - ":kangaroo:": "\U0001f998", - ":kazakhstan:": "\U0001f1f0\U0001f1ff", - ":kenya:": "\U0001f1f0\U0001f1ea", - ":key:": "\U0001f511", - ":key2:": "\U0001f5dd", - ":keyboard:": "\u2328\ufe0f", - ":keycap_#:": "#\ufe0f\u20e3", - ":keycap_*:": "*\ufe0f\u20e3", - ":keycap_0:": "0\ufe0f\u20e3", - ":keycap_1:": "1\ufe0f\u20e3", - ":keycap_10:": "\U0001f51f", - ":keycap_2:": "2\ufe0f\u20e3", - ":keycap_3:": "3\ufe0f\u20e3", - ":keycap_4:": "4\ufe0f\u20e3", - ":keycap_5:": "5\ufe0f\u20e3", - ":keycap_6:": "6\ufe0f\u20e3", - ":keycap_7:": "7\ufe0f\u20e3", - ":keycap_8:": "8\ufe0f\u20e3", - ":keycap_9:": "9\ufe0f\u20e3", - ":keycap_star:": "*\ufe0f\u20e3", - ":keycap_ten:": "\U0001f51f", - ":kick_scooter:": "\U0001f6f4", - ":kimono:": "\U0001f458", - ":kiribati:": "\U0001f1f0\U0001f1ee", - ":kiss:": "\U0001f48b", - ":kiss_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":kiss_mark:": "\U0001f48b", - ":kiss_mm:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":kiss_woman_man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":kiss_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", - ":kiss_ww:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", - ":kissing:": "\U0001f617", - ":kissing_cat:": "\U0001f63d", - ":kissing_closed_eyes:": "\U0001f61a", - ":kissing_face:": "\U0001f617", - ":kissing_face_with_closed_eyes:": "\U0001f61a", - ":kissing_face_with_smiling_eyes:": "\U0001f619", - ":kissing_heart:": "\U0001f618", - ":kissing_smiling_eyes:": "\U0001f619", - ":kitchen_knife:": "\U0001f52a", - ":kite:": "\U0001fa81", - ":kiwi:": "\U0001f95d", - ":kiwi_fruit:": "\U0001f95d", - ":kiwifruit:": "\U0001f95d", - ":kneeling_man:": "\U0001f9ce\u200d\u2642\ufe0f", - ":kneeling_person:": "\U0001f9ce", - ":kneeling_woman:": "\U0001f9ce\u200d\u2640\ufe0f", - ":knife:": "\U0001f52a", - ":knife_fork_plate:": "\U0001f37d\ufe0f", - ":knot:": "\U0001faa2", - ":koala:": "\U0001f428", - ":koko:": "\U0001f201", - ":kosovo:": "\U0001f1fd\U0001f1f0", - ":kr:": "\U0001f1f0\U0001f1f7", - ":kuwait:": "\U0001f1f0\U0001f1fc", - ":kyrgyzstan:": "\U0001f1f0\U0001f1ec", - ":lab_coat:": "\U0001f97c", - ":label:": "\U0001f3f7\ufe0f", - ":lacrosse:": "\U0001f94d", - ":ladder:": "\U0001fa9c", - ":lady_beetle:": "\U0001f41e", - ":lantern:": "\U0001f3ee", - ":laos:": "\U0001f1f1\U0001f1e6", - ":laptop:": "\U0001f4bb", - ":large_blue_circle:": "\U0001f535", - ":large_blue_diamond:": "\U0001f537", - ":large_blue_square:": "\U0001f7e6", - ":large_brown_circle:": "\U0001f7e4", - ":large_brown_square:": "\U0001f7eb", - ":large_green_circle:": "\U0001f7e2", - ":large_green_square:": "\U0001f7e9", - ":large_orange_circle:": "\U0001f7e0", - ":large_orange_diamond:": "\U0001f536", - ":large_orange_square:": "\U0001f7e7", - ":large_purple_circle:": "\U0001f7e3", - ":large_purple_square:": "\U0001f7ea", - ":large_red_square:": "\U0001f7e5", - ":large_yellow_circle:": "\U0001f7e1", - ":large_yellow_square:": "\U0001f7e8", - ":last_quarter_moon:": "\U0001f317", - ":last_quarter_moon_face:": "\U0001f31c", - ":last_quarter_moon_with_face:": "\U0001f31c", - ":last_track_button:": "\u23ee", - ":latin_cross:": "\u271d\ufe0f", - ":latvia:": "\U0001f1f1\U0001f1fb", - ":laughing:": "\U0001f606", - ":leaf_fluttering_in_wind:": "\U0001f343", - ":leafy_green:": "\U0001f96c", - ":leaves:": "\U0001f343", - ":lebanon:": "\U0001f1f1\U0001f1e7", - ":ledger:": "\U0001f4d2", - ":left-facing_fist:": "\U0001f91b", - ":left-right_arrow:": "\u2194", - ":left_arrow:": "\u2b05", - ":left_arrow_curving_right:": "\u21aa", - ":left_facing_fist:": "\U0001f91b", - ":left_facing_fist_tone1:": "\U0001f91b\U0001f3fb", - ":left_facing_fist_tone2:": "\U0001f91b\U0001f3fc", - ":left_facing_fist_tone3:": "\U0001f91b\U0001f3fd", - ":left_facing_fist_tone4:": "\U0001f91b\U0001f3fe", - ":left_facing_fist_tone5:": "\U0001f91b\U0001f3ff", - ":left_luggage:": "\U0001f6c5", - ":left_right_arrow:": "\u2194\ufe0f", - ":left_speech_bubble:": "\U0001f5e8\ufe0f", - ":leftwards_arrow_with_hook:": "\u21a9\ufe0f", - ":leg:": "\U0001f9b5", - ":lemon:": "\U0001f34b", - ":leo:": "\u264c", - ":leopard:": "\U0001f406", - ":lesotho:": "\U0001f1f1\U0001f1f8", - ":level_slider:": "\U0001f39a\ufe0f", - ":liberia:": "\U0001f1f1\U0001f1f7", - ":libra:": "\u264e", - ":libya:": "\U0001f1f1\U0001f1fe", - ":liechtenstein:": "\U0001f1f1\U0001f1ee", - ":light_bulb:": "\U0001f4a1", - ":light_rail:": "\U0001f688", - ":lightning:": "\U0001f329\ufe0f", - ":link:": "\U0001f517", - ":linked_paperclips:": "\U0001f587\ufe0f", - ":lion:": "\U0001f981", - ":lion_face:": "\U0001f981", - ":lips:": "\U0001f444", - ":lipstick:": "\U0001f484", - ":lithuania:": "\U0001f1f1\U0001f1f9", - ":litter_in_bin_sign:": "\U0001f6ae", - ":lizard:": "\U0001f98e", - ":llama:": "\U0001f999", - ":lobster:": "\U0001f99e", - ":lock:": "\U0001f512", - ":lock_with_ink_pen:": "\U0001f50f", - ":locked:": "\U0001f512", - ":locked_with_key:": "\U0001f510", - ":locked_with_pen:": "\U0001f50f", - ":locomotive:": "\U0001f682", - ":lollipop:": "\U0001f36d", - ":long_drum:": "\U0001fa98", - ":loop:": "\u27bf", - ":lotion_bottle:": "\U0001f9f4", - ":lotus_position:": "\U0001f9d8", - ":lotus_position_man:": "\U0001f9d8\u200d\u2642\ufe0f", - ":lotus_position_woman:": "\U0001f9d8\u200d\u2640\ufe0f", - ":loud_sound:": "\U0001f50a", - ":loudly_crying_face:": "\U0001f62d", - ":loudspeaker:": "\U0001f4e2", - ":love-you_gesture:": "\U0001f91f", - ":love_hotel:": "\U0001f3e9", - ":love_letter:": "\U0001f48c", - ":love_you_gesture:": "\U0001f91f", - ":love_you_gesture_tone1:": "\U0001f91f\U0001f3fb", - ":love_you_gesture_tone2:": "\U0001f91f\U0001f3fc", - ":love_you_gesture_tone3:": "\U0001f91f\U0001f3fd", - ":love_you_gesture_tone4:": "\U0001f91f\U0001f3fe", - ":love_you_gesture_tone5:": "\U0001f91f\U0001f3ff", - ":low_brightness:": "\U0001f505", - ":lower_left_ballpoint_pen:": "\U0001f58a\ufe0f", - ":lower_left_crayon:": "\U0001f58d\ufe0f", - ":lower_left_fountain_pen:": "\U0001f58b\ufe0f", - ":lower_left_paintbrush:": "\U0001f58c\ufe0f", - ":luggage:": "\U0001f9f3", - ":lungs:": "\U0001fac1", - ":luxembourg:": "\U0001f1f1\U0001f1fa", - ":lying_face:": "\U0001f925", - ":m:": "\u24dc\ufe0f", - ":macau:": "\U0001f1f2\U0001f1f4", - ":macedonia:": "\U0001f1f2\U0001f1f0", - ":madagascar:": "\U0001f1f2\U0001f1ec", - ":mag:": "\U0001f50d", - ":mag_right:": "\U0001f50e", - ":mage:": "\U0001f9d9\u200d\u2640\ufe0f", - ":mage_man:": "\U0001f9d9\u200d\u2642\ufe0f", - ":mage_tone1:": "\U0001f9d9\U0001f3fb", - ":mage_tone2:": "\U0001f9d9\U0001f3fc", - ":mage_tone3:": "\U0001f9d9\U0001f3fd", - ":mage_tone4:": "\U0001f9d9\U0001f3fe", - ":mage_tone5:": "\U0001f9d9\U0001f3ff", - ":mage_woman:": "\U0001f9d9\u200d\u2640\ufe0f", - ":magic_wand:": "\U0001fa84", - ":magnet:": "\U0001f9f2", - ":magnifying_glass_tilted_left:": "\U0001f50d", - ":magnifying_glass_tilted_right:": "\U0001f50e", - ":mahjong:": "\U0001f004", - ":mahjong_red_dragon:": "\U0001f004", - ":mailbox:": "\U0001f4eb", - ":mailbox_closed:": "\U0001f4ea", - ":mailbox_with_mail:": "\U0001f4ec", - ":mailbox_with_no_mail:": "\U0001f4ed", - ":malawi:": "\U0001f1f2\U0001f1fc", - ":malaysia:": "\U0001f1f2\U0001f1fe", - ":maldives:": "\U0001f1f2\U0001f1fb", - ":male-artist:": "\U0001f468\u200d\U0001f3a8", - ":male-astronaut:": "\U0001f468\u200d\U0001f680", - ":male-construction-worker:": "\U0001f477\u200d\u2642\ufe0f", - ":male-cook:": "\U0001f468\u200d\U0001f373", - ":male-detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", - ":male-doctor:": "\U0001f468\u200d\u2695\ufe0f", - ":male-factory-worker:": "\U0001f468\u200d\U0001f3ed", - ":male-farmer:": "\U0001f468\u200d\U0001f33e", - ":male-firefighter:": "\U0001f468\u200d\U0001f692", - ":male-guard:": "\U0001f482\u200d\u2642\ufe0f", - ":male-judge:": "\U0001f468\u200d\u2696\ufe0f", - ":male-mechanic:": "\U0001f468\u200d\U0001f527", - ":male-office-worker:": "\U0001f468\u200d\U0001f4bc", - ":male-pilot:": "\U0001f468\u200d\u2708\ufe0f", - ":male-police-officer:": "\U0001f46e\u200d\u2642\ufe0f", - ":male-scientist:": "\U0001f468\u200d\U0001f52c", - ":male-singer:": "\U0001f468\u200d\U0001f3a4", - ":male-student:": "\U0001f468\u200d\U0001f393", - ":male-teacher:": "\U0001f468\u200d\U0001f3eb", - ":male-technologist:": "\U0001f468\u200d\U0001f4bb", - ":male_detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", - ":male_elf:": "\U0001f9dd\u200d\u2642\ufe0f", - ":male_fairy:": "\U0001f9da\u200d\u2642\ufe0f", - ":male_genie:": "\U0001f9de\u200d\u2642\ufe0f", - ":male_mage:": "\U0001f9d9\u200d\u2642\ufe0f", - ":male_sign:": "\u2642\ufe0f", - ":male_superhero:": "\U0001f9b8\u200d\u2642\ufe0f", - ":male_supervillain:": "\U0001f9b9\u200d\u2642\ufe0f", - ":male_vampire:": "\U0001f9db\u200d\u2642\ufe0f", - ":male_zombie:": "\U0001f9df\u200d\u2642\ufe0f", - ":mali:": "\U0001f1f2\U0001f1f1", - ":malta:": "\U0001f1f2\U0001f1f9", - ":mammoth:": "\U0001f9a3", - ":man:": "\U0001f468", - ":man-biking:": "\U0001f6b4\u200d\u2642\ufe0f", - ":man-bouncing-ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", - ":man-bowing:": "\U0001f647\u200d\u2642\ufe0f", - ":man-boy:": "\U0001f468\u200d\U0001f466", - ":man-boy-boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466", - ":man-cartwheeling:": "\U0001f938\u200d\u2642\ufe0f", - ":man-facepalming:": "\U0001f926\u200d\u2642\ufe0f", - ":man-frowning:": "\U0001f64d\u200d\u2642\ufe0f", - ":man-gesturing-no:": "\U0001f645\u200d\u2642\ufe0f", - ":man-gesturing-ok:": "\U0001f646\u200d\u2642\ufe0f", - ":man-getting-haircut:": "\U0001f487\u200d\u2642\ufe0f", - ":man-getting-massage:": "\U0001f486\u200d\u2642\ufe0f", - ":man-girl:": "\U0001f468\u200d\U0001f467", - ":man-girl-boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466", - ":man-girl-girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467", - ":man-golfing:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", - ":man-heart-man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", - ":man-juggling:": "\U0001f939\u200d\u2642\ufe0f", - ":man-kiss-man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":man-lifting-weights:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", - ":man-man-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", - ":man-man-boy-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", - ":man-man-girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", - ":man-man-girl-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", - ":man-man-girl-girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", - ":man-mountain-biking:": "\U0001f6b5\u200d\u2642\ufe0f", - ":man-playing-handball:": "\U0001f93e\u200d\u2642\ufe0f", - ":man-playing-water-polo:": "\U0001f93d\u200d\u2642\ufe0f", - ":man-pouting:": "\U0001f64e\u200d\u2642\ufe0f", - ":man-raising-hand:": "\U0001f64b\u200d\u2642\ufe0f", - ":man-rowing-boat:": "\U0001f6a3\u200d\u2642\ufe0f", - ":man-running:": "\U0001f3c3\u200d\u2642\ufe0f", - ":man-shrugging:": "\U0001f937\u200d\u2642\ufe0f", - ":man-surfing:": "\U0001f3c4\u200d\u2642\ufe0f", - ":man-swimming:": "\U0001f3ca\u200d\u2642\ufe0f", - ":man-tipping-hand:": "\U0001f481\u200d\u2642\ufe0f", - ":man-walking:": "\U0001f6b6\u200d\u2642\ufe0f", - ":man-wearing-turban:": "\U0001f473\u200d\u2642\ufe0f", - ":man-with-bunny-ears-partying:": "\U0001f46f\u200d\u2642\ufe0f", - ":man-woman-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", - ":man-woman-boy-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":man-woman-girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", - ":man-woman-girl-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":man-woman-girl-girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":man-wrestling:": "\U0001f93c\u200d\u2642\ufe0f", - ":man_artist:": "\U0001f468\u200d\U0001f3a8", - ":man_artist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3a8", - ":man_artist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3a8", - ":man_artist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3a8", - ":man_artist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3a8", - ":man_artist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3a8", - ":man_astronaut:": "\U0001f468\u200d\U0001f680", - ":man_astronaut_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f680", - ":man_astronaut_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f680", - ":man_astronaut_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f680", - ":man_astronaut_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f680", - ":man_astronaut_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f680", - ":man_bald:": "\U0001f468\u200d\U0001f9b2", - ":man_beard:": "\U0001f9d4", - ":man_biking:": "\U0001f6b4\u200d\u2642\ufe0f", - ":man_biking_tone1:": "\U0001f6b4\U0001f3fb\u200d\u2642\ufe0f", - ":man_biking_tone2:": "\U0001f6b4\U0001f3fc\u200d\u2642\ufe0f", - ":man_biking_tone3:": "\U0001f6b4\U0001f3fd\u200d\u2642\ufe0f", - ":man_biking_tone4:": "\U0001f6b4\U0001f3fe\u200d\u2642\ufe0f", - ":man_biking_tone5:": "\U0001f6b4\U0001f3ff\u200d\u2642\ufe0f", - ":man_blond_hair:": "\U0001f471\u200d\u2642\ufe0f", - ":man_bouncing_ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", - ":man_bouncing_ball_tone1:": "\u26f9\U0001f3fb\u200d\u2642\ufe0f", - ":man_bouncing_ball_tone2:": "\u26f9\U0001f3fc\u200d\u2642\ufe0f", - ":man_bouncing_ball_tone3:": "\u26f9\U0001f3fd\u200d\u2642\ufe0f", - ":man_bouncing_ball_tone4:": "\u26f9\U0001f3fe\u200d\u2642\ufe0f", - ":man_bouncing_ball_tone5:": "\u26f9\U0001f3ff\u200d\u2642\ufe0f", - ":man_bowing:": "\U0001f647\u200d\u2642\ufe0f", - ":man_bowing_tone1:": "\U0001f647\U0001f3fb\u200d\u2642\ufe0f", - ":man_bowing_tone2:": "\U0001f647\U0001f3fc\u200d\u2642\ufe0f", - ":man_bowing_tone3:": "\U0001f647\U0001f3fd\u200d\u2642\ufe0f", - ":man_bowing_tone4:": "\U0001f647\U0001f3fe\u200d\u2642\ufe0f", - ":man_bowing_tone5:": "\U0001f647\U0001f3ff\u200d\u2642\ufe0f", - ":man_cartwheeling:": "\U0001f938\u200d\u2642\ufe0f", - ":man_cartwheeling_tone1:": "\U0001f938\U0001f3fb\u200d\u2642\ufe0f", - ":man_cartwheeling_tone2:": "\U0001f938\U0001f3fc\u200d\u2642\ufe0f", - ":man_cartwheeling_tone3:": "\U0001f938\U0001f3fd\u200d\u2642\ufe0f", - ":man_cartwheeling_tone4:": "\U0001f938\U0001f3fe\u200d\u2642\ufe0f", - ":man_cartwheeling_tone5:": "\U0001f938\U0001f3ff\u200d\u2642\ufe0f", - ":man_climbing:": "\U0001f9d7\u200d\u2642\ufe0f", - ":man_climbing_tone1:": "\U0001f9d7\U0001f3fb\u200d\u2642\ufe0f", - ":man_climbing_tone2:": "\U0001f9d7\U0001f3fc\u200d\u2642\ufe0f", - ":man_climbing_tone3:": "\U0001f9d7\U0001f3fd\u200d\u2642\ufe0f", - ":man_climbing_tone4:": "\U0001f9d7\U0001f3fe\u200d\u2642\ufe0f", - ":man_climbing_tone5:": "\U0001f9d7\U0001f3ff\u200d\u2642\ufe0f", - ":man_construction_worker:": "\U0001f477\u200d\u2642\ufe0f", - ":man_construction_worker_tone1:": "\U0001f477\U0001f3fb\u200d\u2642\ufe0f", - ":man_construction_worker_tone2:": "\U0001f477\U0001f3fc\u200d\u2642\ufe0f", - ":man_construction_worker_tone3:": "\U0001f477\U0001f3fd\u200d\u2642\ufe0f", - ":man_construction_worker_tone4:": "\U0001f477\U0001f3fe\u200d\u2642\ufe0f", - ":man_construction_worker_tone5:": "\U0001f477\U0001f3ff\u200d\u2642\ufe0f", - ":man_cook:": "\U0001f468\u200d\U0001f373", - ":man_cook_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f373", - ":man_cook_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f373", - ":man_cook_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f373", - ":man_cook_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f373", - ":man_cook_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f373", - ":man_curly_hair:": "\U0001f468\u200d\U0001f9b1", - ":man_dancing:": "\U0001f57a", - ":man_dancing_tone1:": "\U0001f57a\U0001f3fb", - ":man_dancing_tone2:": "\U0001f57a\U0001f3fc", - ":man_dancing_tone3:": "\U0001f57a\U0001f3fd", - ":man_dancing_tone4:": "\U0001f57a\U0001f3fe", - ":man_dancing_tone5:": "\U0001f57a\U0001f3ff", - ":man_detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", - ":man_detective_tone1:": "\U0001f575\U0001f3fb\u200d\u2642\ufe0f", - ":man_detective_tone2:": "\U0001f575\U0001f3fc\u200d\u2642\ufe0f", - ":man_detective_tone3:": "\U0001f575\U0001f3fd\u200d\u2642\ufe0f", - ":man_detective_tone4:": "\U0001f575\U0001f3fe\u200d\u2642\ufe0f", - ":man_detective_tone5:": "\U0001f575\U0001f3ff\u200d\u2642\ufe0f", - ":man_elf:": "\U0001f9dd\u200d\u2642\ufe0f", - ":man_elf_tone1:": "\U0001f9dd\U0001f3fb\u200d\u2642\ufe0f", - ":man_elf_tone2:": "\U0001f9dd\U0001f3fc\u200d\u2642\ufe0f", - ":man_elf_tone3:": "\U0001f9dd\U0001f3fd\u200d\u2642\ufe0f", - ":man_elf_tone4:": "\U0001f9dd\U0001f3fe\u200d\u2642\ufe0f", - ":man_elf_tone5:": "\U0001f9dd\U0001f3ff\u200d\u2642\ufe0f", - ":man_facepalming:": "\U0001f926\u200d\u2642\ufe0f", - ":man_facepalming_tone1:": "\U0001f926\U0001f3fb\u200d\u2642\ufe0f", - ":man_facepalming_tone2:": "\U0001f926\U0001f3fc\u200d\u2642\ufe0f", - ":man_facepalming_tone3:": "\U0001f926\U0001f3fd\u200d\u2642\ufe0f", - ":man_facepalming_tone4:": "\U0001f926\U0001f3fe\u200d\u2642\ufe0f", - ":man_facepalming_tone5:": "\U0001f926\U0001f3ff\u200d\u2642\ufe0f", - ":man_factory_worker:": "\U0001f468\u200d\U0001f3ed", - ":man_factory_worker_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3ed", - ":man_factory_worker_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3ed", - ":man_factory_worker_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3ed", - ":man_factory_worker_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3ed", - ":man_factory_worker_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3ed", - ":man_fairy:": "\U0001f9da\u200d\u2642\ufe0f", - ":man_fairy_tone1:": "\U0001f9da\U0001f3fb\u200d\u2642\ufe0f", - ":man_fairy_tone2:": "\U0001f9da\U0001f3fc\u200d\u2642\ufe0f", - ":man_fairy_tone3:": "\U0001f9da\U0001f3fd\u200d\u2642\ufe0f", - ":man_fairy_tone4:": "\U0001f9da\U0001f3fe\u200d\u2642\ufe0f", - ":man_fairy_tone5:": "\U0001f9da\U0001f3ff\u200d\u2642\ufe0f", - ":man_farmer:": "\U0001f468\u200d\U0001f33e", - ":man_farmer_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f33e", - ":man_farmer_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f33e", - ":man_farmer_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f33e", - ":man_farmer_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f33e", - ":man_farmer_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f33e", - ":man_feeding_baby:": "\U0001f468\u200d\U0001f37c", - ":man_firefighter:": "\U0001f468\u200d\U0001f692", - ":man_firefighter_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f692", - ":man_firefighter_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f692", - ":man_firefighter_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f692", - ":man_firefighter_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f692", - ":man_firefighter_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f692", - ":man_frowning:": "\U0001f64d\u200d\u2642\ufe0f", - ":man_frowning_tone1:": "\U0001f64d\U0001f3fb\u200d\u2642\ufe0f", - ":man_frowning_tone2:": "\U0001f64d\U0001f3fc\u200d\u2642\ufe0f", - ":man_frowning_tone3:": "\U0001f64d\U0001f3fd\u200d\u2642\ufe0f", - ":man_frowning_tone4:": "\U0001f64d\U0001f3fe\u200d\u2642\ufe0f", - ":man_frowning_tone5:": "\U0001f64d\U0001f3ff\u200d\u2642\ufe0f", - ":man_genie:": "\U0001f9de\u200d\u2642\ufe0f", - ":man_gesturing_NO:": "\U0001f645\u200d\u2642\ufe0f", - ":man_gesturing_OK:": "\U0001f646\u200d\u2642\ufe0f", - ":man_gesturing_no:": "\U0001f645\u200d\u2642\ufe0f", - ":man_gesturing_no_tone1:": "\U0001f645\U0001f3fb\u200d\u2642\ufe0f", - ":man_gesturing_no_tone2:": "\U0001f645\U0001f3fc\u200d\u2642\ufe0f", - ":man_gesturing_no_tone3:": "\U0001f645\U0001f3fd\u200d\u2642\ufe0f", - ":man_gesturing_no_tone4:": "\U0001f645\U0001f3fe\u200d\u2642\ufe0f", - ":man_gesturing_no_tone5:": "\U0001f645\U0001f3ff\u200d\u2642\ufe0f", - ":man_gesturing_ok:": "\U0001f646\u200d\u2642\ufe0f", - ":man_gesturing_ok_tone1:": "\U0001f646\U0001f3fb\u200d\u2642\ufe0f", - ":man_gesturing_ok_tone2:": "\U0001f646\U0001f3fc\u200d\u2642\ufe0f", - ":man_gesturing_ok_tone3:": "\U0001f646\U0001f3fd\u200d\u2642\ufe0f", - ":man_gesturing_ok_tone4:": "\U0001f646\U0001f3fe\u200d\u2642\ufe0f", - ":man_gesturing_ok_tone5:": "\U0001f646\U0001f3ff\u200d\u2642\ufe0f", - ":man_getting_face_massage:": "\U0001f486\u200d\u2642\ufe0f", - ":man_getting_face_massage_tone1:": "\U0001f486\U0001f3fb\u200d\u2642\ufe0f", - ":man_getting_face_massage_tone2:": "\U0001f486\U0001f3fc\u200d\u2642\ufe0f", - ":man_getting_face_massage_tone3:": "\U0001f486\U0001f3fd\u200d\u2642\ufe0f", - ":man_getting_face_massage_tone4:": "\U0001f486\U0001f3fe\u200d\u2642\ufe0f", - ":man_getting_face_massage_tone5:": "\U0001f486\U0001f3ff\u200d\u2642\ufe0f", - ":man_getting_haircut:": "\U0001f487\u200d\u2642\ufe0f", - ":man_getting_haircut_tone1:": "\U0001f487\U0001f3fb\u200d\u2642\ufe0f", - ":man_getting_haircut_tone2:": "\U0001f487\U0001f3fc\u200d\u2642\ufe0f", - ":man_getting_haircut_tone3:": "\U0001f487\U0001f3fd\u200d\u2642\ufe0f", - ":man_getting_haircut_tone4:": "\U0001f487\U0001f3fe\u200d\u2642\ufe0f", - ":man_getting_haircut_tone5:": "\U0001f487\U0001f3ff\u200d\u2642\ufe0f", - ":man_getting_massage:": "\U0001f486\u200d\u2642\ufe0f", - ":man_golfing:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", - ":man_golfing_tone1:": "\U0001f3cc\U0001f3fb\u200d\u2642\ufe0f", - ":man_golfing_tone2:": "\U0001f3cc\U0001f3fc\u200d\u2642\ufe0f", - ":man_golfing_tone3:": "\U0001f3cc\U0001f3fd\u200d\u2642\ufe0f", - ":man_golfing_tone4:": "\U0001f3cc\U0001f3fe\u200d\u2642\ufe0f", - ":man_golfing_tone5:": "\U0001f3cc\U0001f3ff\u200d\u2642\ufe0f", - ":man_guard:": "\U0001f482\u200d\u2642\ufe0f", - ":man_guard_tone1:": "\U0001f482\U0001f3fb\u200d\u2642\ufe0f", - ":man_guard_tone2:": "\U0001f482\U0001f3fc\u200d\u2642\ufe0f", - ":man_guard_tone3:": "\U0001f482\U0001f3fd\u200d\u2642\ufe0f", - ":man_guard_tone4:": "\U0001f482\U0001f3fe\u200d\u2642\ufe0f", - ":man_guard_tone5:": "\U0001f482\U0001f3ff\u200d\u2642\ufe0f", - ":man_health_worker:": "\U0001f468\u200d\u2695\ufe0f", - ":man_health_worker_tone1:": "\U0001f468\U0001f3fb\u200d\u2695\ufe0f", - ":man_health_worker_tone2:": "\U0001f468\U0001f3fc\u200d\u2695\ufe0f", - ":man_health_worker_tone3:": "\U0001f468\U0001f3fd\u200d\u2695\ufe0f", - ":man_health_worker_tone4:": "\U0001f468\U0001f3fe\u200d\u2695\ufe0f", - ":man_health_worker_tone5:": "\U0001f468\U0001f3ff\u200d\u2695\ufe0f", - ":man_in_business_suit_levitating:": "\U0001f574\ufe0f", - ":man_in_business_suit_levitating_tone1:": "\U0001f574\U0001f3fb", - ":man_in_business_suit_levitating_tone2:": "\U0001f574\U0001f3fc", - ":man_in_business_suit_levitating_tone3:": "\U0001f574\U0001f3fd", - ":man_in_business_suit_levitating_tone4:": "\U0001f574\U0001f3fe", - ":man_in_business_suit_levitating_tone5:": "\U0001f574\U0001f3ff", - ":man_in_lotus_position:": "\U0001f9d8\u200d\u2642\ufe0f", - ":man_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb\u200d\u2642\ufe0f", - ":man_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc\u200d\u2642\ufe0f", - ":man_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd\u200d\u2642\ufe0f", - ":man_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe\u200d\u2642\ufe0f", - ":man_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff\u200d\u2642\ufe0f", - ":man_in_manual_wheelchair:": "\U0001f468\u200d\U0001f9bd", - ":man_in_motorized_wheelchair:": "\U0001f468\u200d\U0001f9bc", - ":man_in_steamy_room:": "\U0001f9d6\u200d\u2642\ufe0f", - ":man_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb\u200d\u2642\ufe0f", - ":man_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc\u200d\u2642\ufe0f", - ":man_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd\u200d\u2642\ufe0f", - ":man_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe\u200d\u2642\ufe0f", - ":man_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff\u200d\u2642\ufe0f", - ":man_in_tuxedo:": "\U0001f935", - ":man_in_tuxedo_tone1:": "\U0001f935\U0001f3fb", - ":man_in_tuxedo_tone2:": "\U0001f935\U0001f3fc", - ":man_in_tuxedo_tone3:": "\U0001f935\U0001f3fd", - ":man_in_tuxedo_tone4:": "\U0001f935\U0001f3fe", - ":man_in_tuxedo_tone5:": "\U0001f935\U0001f3ff", - ":man_judge:": "\U0001f468\u200d\u2696\ufe0f", - ":man_judge_tone1:": "\U0001f468\U0001f3fb\u200d\u2696\ufe0f", - ":man_judge_tone2:": "\U0001f468\U0001f3fc\u200d\u2696\ufe0f", - ":man_judge_tone3:": "\U0001f468\U0001f3fd\u200d\u2696\ufe0f", - ":man_judge_tone4:": "\U0001f468\U0001f3fe\u200d\u2696\ufe0f", - ":man_judge_tone5:": "\U0001f468\U0001f3ff\u200d\u2696\ufe0f", - ":man_juggling:": "\U0001f939\u200d\u2642\ufe0f", - ":man_juggling_tone1:": "\U0001f939\U0001f3fb\u200d\u2642\ufe0f", - ":man_juggling_tone2:": "\U0001f939\U0001f3fc\u200d\u2642\ufe0f", - ":man_juggling_tone3:": "\U0001f939\U0001f3fd\u200d\u2642\ufe0f", - ":man_juggling_tone4:": "\U0001f939\U0001f3fe\u200d\u2642\ufe0f", - ":man_juggling_tone5:": "\U0001f939\U0001f3ff\u200d\u2642\ufe0f", - ":man_kneeling:": "\U0001f9ce\u200d\u2642\ufe0f", - ":man_lifting_weights:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", - ":man_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb\u200d\u2642\ufe0f", - ":man_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc\u200d\u2642\ufe0f", - ":man_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd\u200d\u2642\ufe0f", - ":man_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe\u200d\u2642\ufe0f", - ":man_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff\u200d\u2642\ufe0f", - ":man_mage:": "\U0001f9d9\u200d\u2642\ufe0f", - ":man_mage_tone1:": "\U0001f9d9\U0001f3fb\u200d\u2642\ufe0f", - ":man_mage_tone2:": "\U0001f9d9\U0001f3fc\u200d\u2642\ufe0f", - ":man_mage_tone3:": "\U0001f9d9\U0001f3fd\u200d\u2642\ufe0f", - ":man_mage_tone4:": "\U0001f9d9\U0001f3fe\u200d\u2642\ufe0f", - ":man_mage_tone5:": "\U0001f9d9\U0001f3ff\u200d\u2642\ufe0f", - ":man_mechanic:": "\U0001f468\u200d\U0001f527", - ":man_mechanic_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f527", - ":man_mechanic_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f527", - ":man_mechanic_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f527", - ":man_mechanic_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f527", - ":man_mechanic_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f527", - ":man_mountain_biking:": "\U0001f6b5\u200d\u2642\ufe0f", - ":man_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb\u200d\u2642\ufe0f", - ":man_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc\u200d\u2642\ufe0f", - ":man_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd\u200d\u2642\ufe0f", - ":man_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe\u200d\u2642\ufe0f", - ":man_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff\u200d\u2642\ufe0f", - ":man_office_worker:": "\U0001f468\u200d\U0001f4bc", - ":man_office_worker_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f4bc", - ":man_office_worker_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f4bc", - ":man_office_worker_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f4bc", - ":man_office_worker_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f4bc", - ":man_office_worker_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f4bc", - ":man_pilot:": "\U0001f468\u200d\u2708\ufe0f", - ":man_pilot_tone1:": "\U0001f468\U0001f3fb\u200d\u2708\ufe0f", - ":man_pilot_tone2:": "\U0001f468\U0001f3fc\u200d\u2708\ufe0f", - ":man_pilot_tone3:": "\U0001f468\U0001f3fd\u200d\u2708\ufe0f", - ":man_pilot_tone4:": "\U0001f468\U0001f3fe\u200d\u2708\ufe0f", - ":man_pilot_tone5:": "\U0001f468\U0001f3ff\u200d\u2708\ufe0f", - ":man_playing_handball:": "\U0001f93e\u200d\u2642\ufe0f", - ":man_playing_handball_tone1:": "\U0001f93e\U0001f3fb\u200d\u2642\ufe0f", - ":man_playing_handball_tone2:": "\U0001f93e\U0001f3fc\u200d\u2642\ufe0f", - ":man_playing_handball_tone3:": "\U0001f93e\U0001f3fd\u200d\u2642\ufe0f", - ":man_playing_handball_tone4:": "\U0001f93e\U0001f3fe\u200d\u2642\ufe0f", - ":man_playing_handball_tone5:": "\U0001f93e\U0001f3ff\u200d\u2642\ufe0f", - ":man_playing_water_polo:": "\U0001f93d\u200d\u2642\ufe0f", - ":man_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb\u200d\u2642\ufe0f", - ":man_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc\u200d\u2642\ufe0f", - ":man_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd\u200d\u2642\ufe0f", - ":man_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe\u200d\u2642\ufe0f", - ":man_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff\u200d\u2642\ufe0f", - ":man_police_officer:": "\U0001f46e\u200d\u2642\ufe0f", - ":man_police_officer_tone1:": "\U0001f46e\U0001f3fb\u200d\u2642\ufe0f", - ":man_police_officer_tone2:": "\U0001f46e\U0001f3fc\u200d\u2642\ufe0f", - ":man_police_officer_tone3:": "\U0001f46e\U0001f3fd\u200d\u2642\ufe0f", - ":man_police_officer_tone4:": "\U0001f46e\U0001f3fe\u200d\u2642\ufe0f", - ":man_police_officer_tone5:": "\U0001f46e\U0001f3ff\u200d\u2642\ufe0f", - ":man_pouting:": "\U0001f64e\u200d\u2642\ufe0f", - ":man_pouting_tone1:": "\U0001f64e\U0001f3fb\u200d\u2642\ufe0f", - ":man_pouting_tone2:": "\U0001f64e\U0001f3fc\u200d\u2642\ufe0f", - ":man_pouting_tone3:": "\U0001f64e\U0001f3fd\u200d\u2642\ufe0f", - ":man_pouting_tone4:": "\U0001f64e\U0001f3fe\u200d\u2642\ufe0f", - ":man_pouting_tone5:": "\U0001f64e\U0001f3ff\u200d\u2642\ufe0f", - ":man_raising_hand:": "\U0001f64b\u200d\u2642\ufe0f", - ":man_raising_hand_tone1:": "\U0001f64b\U0001f3fb\u200d\u2642\ufe0f", - ":man_raising_hand_tone2:": "\U0001f64b\U0001f3fc\u200d\u2642\ufe0f", - ":man_raising_hand_tone3:": "\U0001f64b\U0001f3fd\u200d\u2642\ufe0f", - ":man_raising_hand_tone4:": "\U0001f64b\U0001f3fe\u200d\u2642\ufe0f", - ":man_raising_hand_tone5:": "\U0001f64b\U0001f3ff\u200d\u2642\ufe0f", - ":man_red_hair:": "\U0001f468\u200d\U0001f9b0", - ":man_rowing_boat:": "\U0001f6a3\u200d\u2642\ufe0f", - ":man_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb\u200d\u2642\ufe0f", - ":man_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc\u200d\u2642\ufe0f", - ":man_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd\u200d\u2642\ufe0f", - ":man_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe\u200d\u2642\ufe0f", - ":man_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff\u200d\u2642\ufe0f", - ":man_running:": "\U0001f3c3\u200d\u2642\ufe0f", - ":man_running_tone1:": "\U0001f3c3\U0001f3fb\u200d\u2642\ufe0f", - ":man_running_tone2:": "\U0001f3c3\U0001f3fc\u200d\u2642\ufe0f", - ":man_running_tone3:": "\U0001f3c3\U0001f3fd\u200d\u2642\ufe0f", - ":man_running_tone4:": "\U0001f3c3\U0001f3fe\u200d\u2642\ufe0f", - ":man_running_tone5:": "\U0001f3c3\U0001f3ff\u200d\u2642\ufe0f", - ":man_scientist:": "\U0001f468\u200d\U0001f52c", - ":man_scientist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f52c", - ":man_scientist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f52c", - ":man_scientist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f52c", - ":man_scientist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f52c", - ":man_scientist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f52c", - ":man_shrugging:": "\U0001f937\u200d\u2642\ufe0f", - ":man_shrugging_tone1:": "\U0001f937\U0001f3fb\u200d\u2642\ufe0f", - ":man_shrugging_tone2:": "\U0001f937\U0001f3fc\u200d\u2642\ufe0f", - ":man_shrugging_tone3:": "\U0001f937\U0001f3fd\u200d\u2642\ufe0f", - ":man_shrugging_tone4:": "\U0001f937\U0001f3fe\u200d\u2642\ufe0f", - ":man_shrugging_tone5:": "\U0001f937\U0001f3ff\u200d\u2642\ufe0f", - ":man_singer:": "\U0001f468\u200d\U0001f3a4", - ":man_singer_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3a4", - ":man_singer_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3a4", - ":man_singer_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3a4", - ":man_singer_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3a4", - ":man_singer_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3a4", - ":man_standing:": "\U0001f9cd\u200d\u2642\ufe0f", - ":man_student:": "\U0001f468\u200d\U0001f393", - ":man_student_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f393", - ":man_student_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f393", - ":man_student_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f393", - ":man_student_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f393", - ":man_student_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f393", - ":man_superhero:": "\U0001f9b8\u200d\u2642\ufe0f", - ":man_supervillain:": "\U0001f9b9\u200d\u2642\ufe0f", - ":man_surfing:": "\U0001f3c4\u200d\u2642\ufe0f", - ":man_surfing_tone1:": "\U0001f3c4\U0001f3fb\u200d\u2642\ufe0f", - ":man_surfing_tone2:": "\U0001f3c4\U0001f3fc\u200d\u2642\ufe0f", - ":man_surfing_tone3:": "\U0001f3c4\U0001f3fd\u200d\u2642\ufe0f", - ":man_surfing_tone4:": "\U0001f3c4\U0001f3fe\u200d\u2642\ufe0f", - ":man_surfing_tone5:": "\U0001f3c4\U0001f3ff\u200d\u2642\ufe0f", - ":man_swimming:": "\U0001f3ca\u200d\u2642\ufe0f", - ":man_swimming_tone1:": "\U0001f3ca\U0001f3fb\u200d\u2642\ufe0f", - ":man_swimming_tone2:": "\U0001f3ca\U0001f3fc\u200d\u2642\ufe0f", - ":man_swimming_tone3:": "\U0001f3ca\U0001f3fd\u200d\u2642\ufe0f", - ":man_swimming_tone4:": "\U0001f3ca\U0001f3fe\u200d\u2642\ufe0f", - ":man_swimming_tone5:": "\U0001f3ca\U0001f3ff\u200d\u2642\ufe0f", - ":man_teacher:": "\U0001f468\u200d\U0001f3eb", - ":man_teacher_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3eb", - ":man_teacher_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3eb", - ":man_teacher_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3eb", - ":man_teacher_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3eb", - ":man_teacher_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3eb", - ":man_technologist:": "\U0001f468\u200d\U0001f4bb", - ":man_technologist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f4bb", - ":man_technologist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f4bb", - ":man_technologist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f4bb", - ":man_technologist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f4bb", - ":man_technologist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f4bb", - ":man_tipping_hand:": "\U0001f481\u200d\u2642\ufe0f", - ":man_tipping_hand_tone1:": "\U0001f481\U0001f3fb\u200d\u2642\ufe0f", - ":man_tipping_hand_tone2:": "\U0001f481\U0001f3fc\u200d\u2642\ufe0f", - ":man_tipping_hand_tone3:": "\U0001f481\U0001f3fd\u200d\u2642\ufe0f", - ":man_tipping_hand_tone4:": "\U0001f481\U0001f3fe\u200d\u2642\ufe0f", - ":man_tipping_hand_tone5:": "\U0001f481\U0001f3ff\u200d\u2642\ufe0f", - ":man_tone1:": "\U0001f468\U0001f3fb", - ":man_tone2:": "\U0001f468\U0001f3fc", - ":man_tone3:": "\U0001f468\U0001f3fd", - ":man_tone4:": "\U0001f468\U0001f3fe", - ":man_tone5:": "\U0001f468\U0001f3ff", - ":man_vampire:": "\U0001f9db\u200d\u2642\ufe0f", - ":man_vampire_tone1:": "\U0001f9db\U0001f3fb\u200d\u2642\ufe0f", - ":man_vampire_tone2:": "\U0001f9db\U0001f3fc\u200d\u2642\ufe0f", - ":man_vampire_tone3:": "\U0001f9db\U0001f3fd\u200d\u2642\ufe0f", - ":man_vampire_tone4:": "\U0001f9db\U0001f3fe\u200d\u2642\ufe0f", - ":man_vampire_tone5:": "\U0001f9db\U0001f3ff\u200d\u2642\ufe0f", - ":man_walking:": "\U0001f6b6\u200d\u2642\ufe0f", - ":man_walking_tone1:": "\U0001f6b6\U0001f3fb\u200d\u2642\ufe0f", - ":man_walking_tone2:": "\U0001f6b6\U0001f3fc\u200d\u2642\ufe0f", - ":man_walking_tone3:": "\U0001f6b6\U0001f3fd\u200d\u2642\ufe0f", - ":man_walking_tone4:": "\U0001f6b6\U0001f3fe\u200d\u2642\ufe0f", - ":man_walking_tone5:": "\U0001f6b6\U0001f3ff\u200d\u2642\ufe0f", - ":man_wearing_turban:": "\U0001f473\u200d\u2642\ufe0f", - ":man_wearing_turban_tone1:": "\U0001f473\U0001f3fb\u200d\u2642\ufe0f", - ":man_wearing_turban_tone2:": "\U0001f473\U0001f3fc\u200d\u2642\ufe0f", - ":man_wearing_turban_tone3:": "\U0001f473\U0001f3fd\u200d\u2642\ufe0f", - ":man_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2642\ufe0f", - ":man_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2642\ufe0f", - ":man_white_hair:": "\U0001f468\u200d\U0001f9b3", - ":man_with_chinese_cap:": "\U0001f472", - ":man_with_chinese_cap_tone1:": "\U0001f472\U0001f3fb", - ":man_with_chinese_cap_tone2:": "\U0001f472\U0001f3fc", - ":man_with_chinese_cap_tone3:": "\U0001f472\U0001f3fd", - ":man_with_chinese_cap_tone4:": "\U0001f472\U0001f3fe", - ":man_with_chinese_cap_tone5:": "\U0001f472\U0001f3ff", - ":man_with_gua_pi_mao:": "\U0001f472", - ":man_with_probing_cane:": "\U0001f468\u200d\U0001f9af", - ":man_with_turban:": "\U0001f473\u200d\u2642\ufe0f", - ":man_with_veil:": "\U0001f470\u200d\u2642\ufe0f", - ":man_with_white_cane:": "\U0001f468\u200d\U0001f9af", - ":man_zombie:": "\U0001f9df\u200d\u2642\ufe0f", - ":mandarin:": "\U0001f34a", - ":mango:": "\U0001f96d", - ":mans_shoe:": "\U0001f45e", - ":mantelpiece_clock:": "\U0001f570\ufe0f", - ":manual_wheelchair:": "\U0001f9bd", - ":man’s_shoe:": "\U0001f45e", - ":map:": "\U0001f5fa", - ":map_of_Japan:": "\U0001f5fe", - ":maple_leaf:": "\U0001f341", - ":marshall_islands:": "\U0001f1f2\U0001f1ed", - ":martial_arts_uniform:": "\U0001f94b", - ":martinique:": "\U0001f1f2\U0001f1f6", - ":mask:": "\U0001f637", - ":massage:": "\U0001f486\u200d\u2640\ufe0f", - ":massage_man:": "\U0001f486\u200d\u2642\ufe0f", - ":massage_woman:": "\U0001f486\u200d\u2640\ufe0f", - ":mate:": "\U0001f9c9", - ":mate_drink:": "\U0001f9c9", - ":mauritania:": "\U0001f1f2\U0001f1f7", - ":mauritius:": "\U0001f1f2\U0001f1fa", - ":mayotte:": "\U0001f1fe\U0001f1f9", - ":meat_on_bone:": "\U0001f356", - ":mechanic:": "\U0001f9d1\u200d\U0001f527", - ":mechanical_arm:": "\U0001f9be", - ":mechanical_leg:": "\U0001f9bf", - ":medal:": "\U0001f396\ufe0f", - ":medal_military:": "\U0001f396\ufe0f", - ":medal_sports:": "\U0001f3c5", - ":medical_symbol:": "\u2695\ufe0f", - ":mega:": "\U0001f4e3", - ":megaphone:": "\U0001f4e3", - ":melon:": "\U0001f348", - ":memo:": "\U0001f4dd", - ":men_holding_hands:": "\U0001f46c", - ":men_with_bunny_ears:": "\U0001f46f\u200d\u2642\ufe0f", - ":men_with_bunny_ears_partying:": "\U0001f46f\u200d\u2642\ufe0f", - ":men_wrestling:": "\U0001f93c\u200d\u2642\ufe0f", - ":menorah:": "\U0001f54e", - ":menorah_with_nine_branches:": "\U0001f54e", - ":mens:": "\U0001f6b9", - ":men’s_room:": "\U0001f6b9", - ":mermaid:": "\U0001f9dc\u200d\u2640\ufe0f", - ":mermaid_tone1:": "\U0001f9dc\U0001f3fb\u200d\u2640\ufe0f", - ":mermaid_tone2:": "\U0001f9dc\U0001f3fc\u200d\u2640\ufe0f", - ":mermaid_tone3:": "\U0001f9dc\U0001f3fd\u200d\u2640\ufe0f", - ":mermaid_tone4:": "\U0001f9dc\U0001f3fe\u200d\u2640\ufe0f", - ":mermaid_tone5:": "\U0001f9dc\U0001f3ff\u200d\u2640\ufe0f", - ":merman:": "\U0001f9dc\u200d\u2642\ufe0f", - ":merman_tone1:": "\U0001f9dc\U0001f3fb\u200d\u2642\ufe0f", - ":merman_tone2:": "\U0001f9dc\U0001f3fc\u200d\u2642\ufe0f", - ":merman_tone3:": "\U0001f9dc\U0001f3fd\u200d\u2642\ufe0f", - ":merman_tone4:": "\U0001f9dc\U0001f3fe\u200d\u2642\ufe0f", - ":merman_tone5:": "\U0001f9dc\U0001f3ff\u200d\u2642\ufe0f", - ":merperson:": "\U0001f9dc\u200d\u2642\ufe0f", - ":merperson_tone1:": "\U0001f9dc\U0001f3fb", - ":merperson_tone2:": "\U0001f9dc\U0001f3fc", - ":merperson_tone3:": "\U0001f9dc\U0001f3fd", - ":merperson_tone4:": "\U0001f9dc\U0001f3fe", - ":merperson_tone5:": "\U0001f9dc\U0001f3ff", - ":metal:": "\U0001f918", - ":metal_tone1:": "\U0001f918\U0001f3fb", - ":metal_tone2:": "\U0001f918\U0001f3fc", - ":metal_tone3:": "\U0001f918\U0001f3fd", - ":metal_tone4:": "\U0001f918\U0001f3fe", - ":metal_tone5:": "\U0001f918\U0001f3ff", - ":metro:": "\U0001f687", - ":mexico:": "\U0001f1f2\U0001f1fd", - ":microbe:": "\U0001f9a0", - ":micronesia:": "\U0001f1eb\U0001f1f2", - ":microphone:": "\U0001f3a4", - ":microphone2:": "\U0001f399", - ":microscope:": "\U0001f52c", - ":middle_finger:": "\U0001f595", - ":middle_finger_tone1:": "\U0001f595\U0001f3fb", - ":middle_finger_tone2:": "\U0001f595\U0001f3fc", - ":middle_finger_tone3:": "\U0001f595\U0001f3fd", - ":middle_finger_tone4:": "\U0001f595\U0001f3fe", - ":middle_finger_tone5:": "\U0001f595\U0001f3ff", - ":military_helmet:": "\U0001fa96", - ":military_medal:": "\U0001f396", - ":milk:": "\U0001f95b", - ":milk_glass:": "\U0001f95b", - ":milky_way:": "\U0001f30c", - ":minibus:": "\U0001f690", - ":minidisc:": "\U0001f4bd", - ":minus:": "\u2796", - ":mirror:": "\U0001fa9e", - ":moai:": "\U0001f5ff", - ":mobile_phone:": "\U0001f4f1", - ":mobile_phone_off:": "\U0001f4f4", - ":mobile_phone_with_arrow:": "\U0001f4f2", - ":moldova:": "\U0001f1f2\U0001f1e9", - ":monaco:": "\U0001f1f2\U0001f1e8", - ":money-mouth_face:": "\U0001f911", - ":money_bag:": "\U0001f4b0", - ":money_mouth:": "\U0001f911", - ":money_mouth_face:": "\U0001f911", - ":money_with_wings:": "\U0001f4b8", - ":moneybag:": "\U0001f4b0", - ":mongolia:": "\U0001f1f2\U0001f1f3", - ":monkey:": "\U0001f412", - ":monkey_face:": "\U0001f435", - ":monocle_face:": "\U0001f9d0", - ":monorail:": "\U0001f69d", - ":montenegro:": "\U0001f1f2\U0001f1ea", - ":montserrat:": "\U0001f1f2\U0001f1f8", - ":moon:": "\U0001f314", - ":moon_cake:": "\U0001f96e", - ":moon_viewing_ceremony:": "\U0001f391", - ":morocco:": "\U0001f1f2\U0001f1e6", - ":mortar_board:": "\U0001f393", - ":mosque:": "\U0001f54c", - ":mosquito:": "\U0001f99f", - ":mostly_sunny:": "\U0001f324\ufe0f", - ":motor_boat:": "\U0001f6e5\ufe0f", - ":motor_scooter:": "\U0001f6f5", - ":motorboat:": "\U0001f6e5", - ":motorcycle:": "\U0001f3cd", - ":motorized_wheelchair:": "\U0001f9bc", - ":motorway:": "\U0001f6e3\ufe0f", - ":mount_fuji:": "\U0001f5fb", - ":mountain:": "\u26f0\ufe0f", - ":mountain_bicyclist:": "\U0001f6b5\u200d\u2642\ufe0f", - ":mountain_biking_man:": "\U0001f6b5\u200d\u2642\ufe0f", - ":mountain_biking_woman:": "\U0001f6b5\u200d\u2640\ufe0f", - ":mountain_cableway:": "\U0001f6a0", - ":mountain_railway:": "\U0001f69e", - ":mountain_snow:": "\U0001f3d4", - ":mouse:": "\U0001f42d", - ":mouse2:": "\U0001f401", - ":mouse_face:": "\U0001f42d", - ":mouse_three_button:": "\U0001f5b1", - ":mouse_trap:": "\U0001faa4", - ":mouth:": "\U0001f444", - ":movie_camera:": "\U0001f3a5", - ":moyai:": "\U0001f5ff", - ":mozambique:": "\U0001f1f2\U0001f1ff", - ":mrs_claus:": "\U0001f936", - ":mrs_claus_tone1:": "\U0001f936\U0001f3fb", - ":mrs_claus_tone2:": "\U0001f936\U0001f3fc", - ":mrs_claus_tone3:": "\U0001f936\U0001f3fd", - ":mrs_claus_tone4:": "\U0001f936\U0001f3fe", - ":mrs_claus_tone5:": "\U0001f936\U0001f3ff", - ":multiply:": "\u2716", - ":muscle:": "\U0001f4aa", - ":muscle_tone1:": "\U0001f4aa\U0001f3fb", - ":muscle_tone2:": "\U0001f4aa\U0001f3fc", - ":muscle_tone3:": "\U0001f4aa\U0001f3fd", - ":muscle_tone4:": "\U0001f4aa\U0001f3fe", - ":muscle_tone5:": "\U0001f4aa\U0001f3ff", - ":mushroom:": "\U0001f344", - ":musical_keyboard:": "\U0001f3b9", - ":musical_note:": "\U0001f3b5", - ":musical_notes:": "\U0001f3b6", - ":musical_score:": "\U0001f3bc", - ":mute:": "\U0001f507", - ":muted_speaker:": "\U0001f507", - ":mx_claus:": "\U0001f9d1\u200d\U0001f384", - ":myanmar:": "\U0001f1f2\U0001f1f2", - ":nail_care:": "\U0001f485", - ":nail_care_tone1:": "\U0001f485\U0001f3fb", - ":nail_care_tone2:": "\U0001f485\U0001f3fc", - ":nail_care_tone3:": "\U0001f485\U0001f3fd", - ":nail_care_tone4:": "\U0001f485\U0001f3fe", - ":nail_care_tone5:": "\U0001f485\U0001f3ff", - ":nail_polish:": "\U0001f485", - ":name_badge:": "\U0001f4db", - ":namibia:": "\U0001f1f3\U0001f1e6", - ":national_park:": "\U0001f3de\ufe0f", - ":nauru:": "\U0001f1f3\U0001f1f7", - ":nauseated_face:": "\U0001f922", - ":nazar_amulet:": "\U0001f9ff", - ":necktie:": "\U0001f454", - ":negative_squared_cross_mark:": "\u274e", - ":nepal:": "\U0001f1f3\U0001f1f5", - ":nerd:": "\U0001f913", - ":nerd_face:": "\U0001f913", - ":nesting_dolls:": "\U0001fa86", - ":netherlands:": "\U0001f1f3\U0001f1f1", - ":neutral_face:": "\U0001f610", - ":new:": "\U0001f195", - ":new_caledonia:": "\U0001f1f3\U0001f1e8", - ":new_moon:": "\U0001f311", - ":new_moon_face:": "\U0001f31a", - ":new_moon_with_face:": "\U0001f31a", - ":new_zealand:": "\U0001f1f3\U0001f1ff", - ":newspaper:": "\U0001f4f0", - ":newspaper2:": "\U0001f5de", - ":newspaper_roll:": "\U0001f5de\ufe0f", - ":next_track_button:": "\u23ed", - ":ng:": "\U0001f196", - ":ng_man:": "\U0001f645\u200d\u2642\ufe0f", - ":ng_woman:": "\U0001f645\u200d\u2640\ufe0f", - ":nicaragua:": "\U0001f1f3\U0001f1ee", - ":niger:": "\U0001f1f3\U0001f1ea", - ":nigeria:": "\U0001f1f3\U0001f1ec", - ":night_with_stars:": "\U0001f303", - ":nine:": "9\ufe0f\u20e3", - ":nine-thirty:": "\U0001f564", - ":nine_o’clock:": "\U0001f558", - ":ninja:": "\U0001f977", - ":niue:": "\U0001f1f3\U0001f1fa", - ":no_bell:": "\U0001f515", - ":no_bicycles:": "\U0001f6b3", - ":no_entry:": "\u26d4", - ":no_entry_sign:": "\U0001f6ab", - ":no_good:": "\U0001f645\u200d\u2640\ufe0f", - ":no_good_man:": "\U0001f645\u200d\u2642\ufe0f", - ":no_good_woman:": "\U0001f645\u200d\u2640\ufe0f", - ":no_littering:": "\U0001f6af", - ":no_mobile_phones:": "\U0001f4f5", - ":no_mouth:": "\U0001f636", - ":no_one_under_eighteen:": "\U0001f51e", - ":no_pedestrians:": "\U0001f6b7", - ":no_smoking:": "\U0001f6ad", - ":non-potable_water:": "\U0001f6b1", - ":norfolk_island:": "\U0001f1f3\U0001f1eb", - ":north_korea:": "\U0001f1f0\U0001f1f5", - ":northern_mariana_islands:": "\U0001f1f2\U0001f1f5", - ":norway:": "\U0001f1f3\U0001f1f4", - ":nose:": "\U0001f443", - ":nose_tone1:": "\U0001f443\U0001f3fb", - ":nose_tone2:": "\U0001f443\U0001f3fc", - ":nose_tone3:": "\U0001f443\U0001f3fd", - ":nose_tone4:": "\U0001f443\U0001f3fe", - ":nose_tone5:": "\U0001f443\U0001f3ff", - ":notebook:": "\U0001f4d3", - ":notebook_with_decorative_cover:": "\U0001f4d4", - ":notepad_spiral:": "\U0001f5d2", - ":notes:": "\U0001f3b6", - ":nut_and_bolt:": "\U0001f529", - ":o:": "\u2b55", - ":o2:": "\U0001f17e\ufe0f", - ":ocean:": "\U0001f30a", - ":octagonal_sign:": "\U0001f6d1", - ":octopus:": "\U0001f419", - ":oden:": "\U0001f362", - ":office:": "\U0001f3e2", - ":office_building:": "\U0001f3e2", - ":office_worker:": "\U0001f9d1\u200d\U0001f4bc", - ":ogre:": "\U0001f479", - ":oil:": "\U0001f6e2", - ":oil_drum:": "\U0001f6e2\ufe0f", - ":ok:": "\U0001f197", - ":ok_hand:": "\U0001f44c", - ":ok_hand_tone1:": "\U0001f44c\U0001f3fb", - ":ok_hand_tone2:": "\U0001f44c\U0001f3fc", - ":ok_hand_tone3:": "\U0001f44c\U0001f3fd", - ":ok_hand_tone4:": "\U0001f44c\U0001f3fe", - ":ok_hand_tone5:": "\U0001f44c\U0001f3ff", - ":ok_man:": "\U0001f646\u200d\u2642\ufe0f", - ":ok_person:": "\U0001f646", - ":ok_woman:": "\U0001f646\u200d\u2640\ufe0f", - ":old_key:": "\U0001f5dd\ufe0f", - ":old_man:": "\U0001f474", - ":old_woman:": "\U0001f475", - ":older_adult:": "\U0001f9d3", - ":older_adult_tone1:": "\U0001f9d3\U0001f3fb", - ":older_adult_tone2:": "\U0001f9d3\U0001f3fc", - ":older_adult_tone3:": "\U0001f9d3\U0001f3fd", - ":older_adult_tone4:": "\U0001f9d3\U0001f3fe", - ":older_adult_tone5:": "\U0001f9d3\U0001f3ff", - ":older_man:": "\U0001f474", - ":older_man_tone1:": "\U0001f474\U0001f3fb", - ":older_man_tone2:": "\U0001f474\U0001f3fc", - ":older_man_tone3:": "\U0001f474\U0001f3fd", - ":older_man_tone4:": "\U0001f474\U0001f3fe", - ":older_man_tone5:": "\U0001f474\U0001f3ff", - ":older_person:": "\U0001f9d3", - ":older_woman:": "\U0001f475", - ":older_woman_tone1:": "\U0001f475\U0001f3fb", - ":older_woman_tone2:": "\U0001f475\U0001f3fc", - ":older_woman_tone3:": "\U0001f475\U0001f3fd", - ":older_woman_tone4:": "\U0001f475\U0001f3fe", - ":older_woman_tone5:": "\U0001f475\U0001f3ff", - ":olive:": "\U0001fad2", - ":om:": "\U0001f549", - ":om_symbol:": "\U0001f549\ufe0f", - ":oman:": "\U0001f1f4\U0001f1f2", - ":on:": "\U0001f51b", - ":oncoming_automobile:": "\U0001f698", - ":oncoming_bus:": "\U0001f68d", - ":oncoming_fist:": "\U0001f44a", - ":oncoming_police_car:": "\U0001f694", - ":oncoming_taxi:": "\U0001f696", - ":one:": "1\ufe0f\u20e3", - ":one-piece_swimsuit:": "\U0001fa71", - ":one-thirty:": "\U0001f55c", - ":one_o’clock:": "\U0001f550", - ":one_piece_swimsuit:": "\U0001fa71", - ":onion:": "\U0001f9c5", - ":open_book:": "\U0001f4d6", - ":open_file_folder:": "\U0001f4c2", - ":open_hands:": "\U0001f450", - ":open_hands_tone1:": "\U0001f450\U0001f3fb", - ":open_hands_tone2:": "\U0001f450\U0001f3fc", - ":open_hands_tone3:": "\U0001f450\U0001f3fd", - ":open_hands_tone4:": "\U0001f450\U0001f3fe", - ":open_hands_tone5:": "\U0001f450\U0001f3ff", - ":open_mailbox_with_lowered_flag:": "\U0001f4ed", - ":open_mailbox_with_raised_flag:": "\U0001f4ec", - ":open_mouth:": "\U0001f62e", - ":open_umbrella:": "\u2602\ufe0f", - ":ophiuchus:": "\u26ce", - ":optical_disk:": "\U0001f4bf", - ":orange:": "\U0001f34a", - ":orange_book:": "\U0001f4d9", - ":orange_circle:": "\U0001f7e0", - ":orange_heart:": "\U0001f9e1", - ":orange_square:": "\U0001f7e7", - ":orangutan:": "\U0001f9a7", - ":orthodox_cross:": "\u2626\ufe0f", - ":otter:": "\U0001f9a6", - ":outbox_tray:": "\U0001f4e4", - ":owl:": "\U0001f989", - ":ox:": "\U0001f402", - ":oyster:": "\U0001f9aa", - ":package:": "\U0001f4e6", - ":page_facing_up:": "\U0001f4c4", - ":page_with_curl:": "\U0001f4c3", - ":pager:": "\U0001f4df", - ":paintbrush:": "\U0001f58c", - ":pakistan:": "\U0001f1f5\U0001f1f0", - ":palau:": "\U0001f1f5\U0001f1fc", - ":palestinian_territories:": "\U0001f1f5\U0001f1f8", - ":palm_tree:": "\U0001f334", - ":palms_up_together:": "\U0001f932", - ":palms_up_together_tone1:": "\U0001f932\U0001f3fb", - ":palms_up_together_tone2:": "\U0001f932\U0001f3fc", - ":palms_up_together_tone3:": "\U0001f932\U0001f3fd", - ":palms_up_together_tone4:": "\U0001f932\U0001f3fe", - ":palms_up_together_tone5:": "\U0001f932\U0001f3ff", - ":panama:": "\U0001f1f5\U0001f1e6", - ":pancakes:": "\U0001f95e", - ":panda:": "\U0001f43c", - ":panda_face:": "\U0001f43c", - ":paperclip:": "\U0001f4ce", - ":paperclips:": "\U0001f587", - ":papua_new_guinea:": "\U0001f1f5\U0001f1ec", - ":parachute:": "\U0001fa82", - ":paraguay:": "\U0001f1f5\U0001f1fe", - ":parasol_on_ground:": "\u26f1\ufe0f", - ":park:": "\U0001f3de", - ":parking:": "\U0001f17f\ufe0f", - ":parrot:": "\U0001f99c", - ":part_alternation_mark:": "\u303d\ufe0f", - ":partly_sunny:": "\u26c5", - ":partly_sunny_rain:": "\U0001f326\ufe0f", - ":party_popper:": "\U0001f389", - ":partying_face:": "\U0001f973", - ":passenger_ship:": "\U0001f6f3\ufe0f", - ":passport_control:": "\U0001f6c2", - ":pause_button:": "\u23f8", - ":paw_prints:": "\U0001f43e", - ":peace:": "\u262e", - ":peace_symbol:": "\u262e\ufe0f", - ":peach:": "\U0001f351", - ":peacock:": "\U0001f99a", - ":peanuts:": "\U0001f95c", - ":pear:": "\U0001f350", - ":pen:": "\U0001f58a", - ":pen_ballpoint:": "\U0001f58a", - ":pen_fountain:": "\U0001f58b", - ":pencil:": "\u270f", - ":pencil2:": "\u270f\ufe0f", - ":penguin:": "\U0001f427", - ":pensive:": "\U0001f614", - ":pensive_face:": "\U0001f614", - ":people_holding_hands:": "\U0001f9d1\u200d\U0001f91d\u200d\U0001f9d1", - ":people_hugging:": "\U0001fac2", - ":people_with_bunny_ears:": "\U0001f46f", - ":people_with_bunny_ears_partying:": "\U0001f46f", - ":people_wrestling:": "\U0001f93c", - ":performing_arts:": "\U0001f3ad", - ":persevere:": "\U0001f623", - ":persevering_face:": "\U0001f623", - ":person:": "\U0001f9d1", - ":person_bald:": "\U0001f9d1\u200d\U0001f9b2", - ":person_biking:": "\U0001f6b4", - ":person_biking_tone1:": "\U0001f6b4\U0001f3fb", - ":person_biking_tone2:": "\U0001f6b4\U0001f3fc", - ":person_biking_tone3:": "\U0001f6b4\U0001f3fd", - ":person_biking_tone4:": "\U0001f6b4\U0001f3fe", - ":person_biking_tone5:": "\U0001f6b4\U0001f3ff", - ":person_blond_hair:": "\U0001f471", - ":person_bouncing_ball:": "\u26f9", - ":person_bouncing_ball_tone1:": "\u26f9\U0001f3fb", - ":person_bouncing_ball_tone2:": "\u26f9\U0001f3fc", - ":person_bouncing_ball_tone3:": "\u26f9\U0001f3fd", - ":person_bouncing_ball_tone4:": "\u26f9\U0001f3fe", - ":person_bouncing_ball_tone5:": "\u26f9\U0001f3ff", - ":person_bowing:": "\U0001f647", - ":person_bowing_tone1:": "\U0001f647\U0001f3fb", - ":person_bowing_tone2:": "\U0001f647\U0001f3fc", - ":person_bowing_tone3:": "\U0001f647\U0001f3fd", - ":person_bowing_tone4:": "\U0001f647\U0001f3fe", - ":person_bowing_tone5:": "\U0001f647\U0001f3ff", - ":person_cartwheeling:": "\U0001f938", - ":person_climbing:": "\U0001f9d7\u200d\u2640\ufe0f", - ":person_climbing_tone1:": "\U0001f9d7\U0001f3fb", - ":person_climbing_tone2:": "\U0001f9d7\U0001f3fc", - ":person_climbing_tone3:": "\U0001f9d7\U0001f3fd", - ":person_climbing_tone4:": "\U0001f9d7\U0001f3fe", - ":person_climbing_tone5:": "\U0001f9d7\U0001f3ff", - ":person_curly_hair:": "\U0001f9d1\u200d\U0001f9b1", - ":person_doing_cartwheel:": "\U0001f938", - ":person_doing_cartwheel_tone1:": "\U0001f938\U0001f3fb", - ":person_doing_cartwheel_tone2:": "\U0001f938\U0001f3fc", - ":person_doing_cartwheel_tone3:": "\U0001f938\U0001f3fd", - ":person_doing_cartwheel_tone4:": "\U0001f938\U0001f3fe", - ":person_doing_cartwheel_tone5:": "\U0001f938\U0001f3ff", - ":person_facepalming:": "\U0001f926", - ":person_facepalming_tone1:": "\U0001f926\U0001f3fb", - ":person_facepalming_tone2:": "\U0001f926\U0001f3fc", - ":person_facepalming_tone3:": "\U0001f926\U0001f3fd", - ":person_facepalming_tone4:": "\U0001f926\U0001f3fe", - ":person_facepalming_tone5:": "\U0001f926\U0001f3ff", - ":person_feeding_baby:": "\U0001f9d1\u200d\U0001f37c", - ":person_fencing:": "\U0001f93a", - ":person_frowning:": "\U0001f64d\u200d\u2640\ufe0f", - ":person_frowning_tone1:": "\U0001f64d\U0001f3fb", - ":person_frowning_tone2:": "\U0001f64d\U0001f3fc", - ":person_frowning_tone3:": "\U0001f64d\U0001f3fd", - ":person_frowning_tone4:": "\U0001f64d\U0001f3fe", - ":person_frowning_tone5:": "\U0001f64d\U0001f3ff", - ":person_gesturing_NO:": "\U0001f645", - ":person_gesturing_OK:": "\U0001f646", - ":person_gesturing_no:": "\U0001f645", - ":person_gesturing_no_tone1:": "\U0001f645\U0001f3fb", - ":person_gesturing_no_tone2:": "\U0001f645\U0001f3fc", - ":person_gesturing_no_tone3:": "\U0001f645\U0001f3fd", - ":person_gesturing_no_tone4:": "\U0001f645\U0001f3fe", - ":person_gesturing_no_tone5:": "\U0001f645\U0001f3ff", - ":person_gesturing_ok:": "\U0001f646", - ":person_gesturing_ok_tone1:": "\U0001f646\U0001f3fb", - ":person_gesturing_ok_tone2:": "\U0001f646\U0001f3fc", - ":person_gesturing_ok_tone3:": "\U0001f646\U0001f3fd", - ":person_gesturing_ok_tone4:": "\U0001f646\U0001f3fe", - ":person_gesturing_ok_tone5:": "\U0001f646\U0001f3ff", - ":person_getting_haircut:": "\U0001f487", - ":person_getting_haircut_tone1:": "\U0001f487\U0001f3fb", - ":person_getting_haircut_tone2:": "\U0001f487\U0001f3fc", - ":person_getting_haircut_tone3:": "\U0001f487\U0001f3fd", - ":person_getting_haircut_tone4:": "\U0001f487\U0001f3fe", - ":person_getting_haircut_tone5:": "\U0001f487\U0001f3ff", - ":person_getting_massage:": "\U0001f486", - ":person_getting_massage_tone1:": "\U0001f486\U0001f3fb", - ":person_getting_massage_tone2:": "\U0001f486\U0001f3fc", - ":person_getting_massage_tone3:": "\U0001f486\U0001f3fd", - ":person_getting_massage_tone4:": "\U0001f486\U0001f3fe", - ":person_getting_massage_tone5:": "\U0001f486\U0001f3ff", - ":person_golfing:": "\U0001f3cc", - ":person_golfing_tone1:": "\U0001f3cc\U0001f3fb", - ":person_golfing_tone2:": "\U0001f3cc\U0001f3fc", - ":person_golfing_tone3:": "\U0001f3cc\U0001f3fd", - ":person_golfing_tone4:": "\U0001f3cc\U0001f3fe", - ":person_golfing_tone5:": "\U0001f3cc\U0001f3ff", - ":person_in_bed:": "\U0001f6cc", - ":person_in_bed_tone1:": "\U0001f6cc\U0001f3fb", - ":person_in_bed_tone2:": "\U0001f6cc\U0001f3fc", - ":person_in_bed_tone3:": "\U0001f6cc\U0001f3fd", - ":person_in_bed_tone4:": "\U0001f6cc\U0001f3fe", - ":person_in_bed_tone5:": "\U0001f6cc\U0001f3ff", - ":person_in_lotus_position:": "\U0001f9d8\u200d\u2640\ufe0f", - ":person_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb", - ":person_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc", - ":person_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd", - ":person_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe", - ":person_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff", - ":person_in_manual_wheelchair:": "\U0001f9d1\u200d\U0001f9bd", - ":person_in_motorized_wheelchair:": "\U0001f9d1\u200d\U0001f9bc", - ":person_in_steamy_room:": "\U0001f9d6\u200d\u2642\ufe0f", - ":person_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb", - ":person_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc", - ":person_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd", - ":person_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe", - ":person_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff", - ":person_in_suit_levitating:": "\U0001f574", - ":person_in_tuxedo:": "\U0001f935", - ":person_juggling:": "\U0001f939", - ":person_juggling_tone1:": "\U0001f939\U0001f3fb", - ":person_juggling_tone2:": "\U0001f939\U0001f3fc", - ":person_juggling_tone3:": "\U0001f939\U0001f3fd", - ":person_juggling_tone4:": "\U0001f939\U0001f3fe", - ":person_juggling_tone5:": "\U0001f939\U0001f3ff", - ":person_kneeling:": "\U0001f9ce", - ":person_lifting_weights:": "\U0001f3cb", - ":person_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb", - ":person_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc", - ":person_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd", - ":person_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe", - ":person_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff", - ":person_mountain_biking:": "\U0001f6b5", - ":person_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb", - ":person_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc", - ":person_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd", - ":person_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe", - ":person_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff", - ":person_playing_handball:": "\U0001f93e", - ":person_playing_handball_tone1:": "\U0001f93e\U0001f3fb", - ":person_playing_handball_tone2:": "\U0001f93e\U0001f3fc", - ":person_playing_handball_tone3:": "\U0001f93e\U0001f3fd", - ":person_playing_handball_tone4:": "\U0001f93e\U0001f3fe", - ":person_playing_handball_tone5:": "\U0001f93e\U0001f3ff", - ":person_playing_water_polo:": "\U0001f93d", - ":person_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb", - ":person_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc", - ":person_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd", - ":person_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe", - ":person_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff", - ":person_pouting:": "\U0001f64e", - ":person_pouting_tone1:": "\U0001f64e\U0001f3fb", - ":person_pouting_tone2:": "\U0001f64e\U0001f3fc", - ":person_pouting_tone3:": "\U0001f64e\U0001f3fd", - ":person_pouting_tone4:": "\U0001f64e\U0001f3fe", - ":person_pouting_tone5:": "\U0001f64e\U0001f3ff", - ":person_raising_hand:": "\U0001f64b", - ":person_raising_hand_tone1:": "\U0001f64b\U0001f3fb", - ":person_raising_hand_tone2:": "\U0001f64b\U0001f3fc", - ":person_raising_hand_tone3:": "\U0001f64b\U0001f3fd", - ":person_raising_hand_tone4:": "\U0001f64b\U0001f3fe", - ":person_raising_hand_tone5:": "\U0001f64b\U0001f3ff", - ":person_red_hair:": "\U0001f9d1\u200d\U0001f9b0", - ":person_rowing_boat:": "\U0001f6a3", - ":person_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb", - ":person_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc", - ":person_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd", - ":person_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe", - ":person_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff", - ":person_running:": "\U0001f3c3", - ":person_running_tone1:": "\U0001f3c3\U0001f3fb", - ":person_running_tone2:": "\U0001f3c3\U0001f3fc", - ":person_running_tone3:": "\U0001f3c3\U0001f3fd", - ":person_running_tone4:": "\U0001f3c3\U0001f3fe", - ":person_running_tone5:": "\U0001f3c3\U0001f3ff", - ":person_shrugging:": "\U0001f937", - ":person_shrugging_tone1:": "\U0001f937\U0001f3fb", - ":person_shrugging_tone2:": "\U0001f937\U0001f3fc", - ":person_shrugging_tone3:": "\U0001f937\U0001f3fd", - ":person_shrugging_tone4:": "\U0001f937\U0001f3fe", - ":person_shrugging_tone5:": "\U0001f937\U0001f3ff", - ":person_standing:": "\U0001f9cd", - ":person_surfing:": "\U0001f3c4", - ":person_surfing_tone1:": "\U0001f3c4\U0001f3fb", - ":person_surfing_tone2:": "\U0001f3c4\U0001f3fc", - ":person_surfing_tone3:": "\U0001f3c4\U0001f3fd", - ":person_surfing_tone4:": "\U0001f3c4\U0001f3fe", - ":person_surfing_tone5:": "\U0001f3c4\U0001f3ff", - ":person_swimming:": "\U0001f3ca", - ":person_swimming_tone1:": "\U0001f3ca\U0001f3fb", - ":person_swimming_tone2:": "\U0001f3ca\U0001f3fc", - ":person_swimming_tone3:": "\U0001f3ca\U0001f3fd", - ":person_swimming_tone4:": "\U0001f3ca\U0001f3fe", - ":person_swimming_tone5:": "\U0001f3ca\U0001f3ff", - ":person_taking_bath:": "\U0001f6c0", - ":person_tipping_hand:": "\U0001f481", - ":person_tipping_hand_tone1:": "\U0001f481\U0001f3fb", - ":person_tipping_hand_tone2:": "\U0001f481\U0001f3fc", - ":person_tipping_hand_tone3:": "\U0001f481\U0001f3fd", - ":person_tipping_hand_tone4:": "\U0001f481\U0001f3fe", - ":person_tipping_hand_tone5:": "\U0001f481\U0001f3ff", - ":person_walking:": "\U0001f6b6", - ":person_walking_tone1:": "\U0001f6b6\U0001f3fb", - ":person_walking_tone2:": "\U0001f6b6\U0001f3fc", - ":person_walking_tone3:": "\U0001f6b6\U0001f3fd", - ":person_walking_tone4:": "\U0001f6b6\U0001f3fe", - ":person_walking_tone5:": "\U0001f6b6\U0001f3ff", - ":person_wearing_turban:": "\U0001f473", - ":person_wearing_turban_tone1:": "\U0001f473\U0001f3fb", - ":person_wearing_turban_tone2:": "\U0001f473\U0001f3fc", - ":person_wearing_turban_tone3:": "\U0001f473\U0001f3fd", - ":person_wearing_turban_tone4:": "\U0001f473\U0001f3fe", - ":person_wearing_turban_tone5:": "\U0001f473\U0001f3ff", - ":person_white_hair:": "\U0001f9d1\u200d\U0001f9b3", - ":person_with_ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", - ":person_with_blond_hair:": "\U0001f471\u200d\u2642\ufe0f", - ":person_with_headscarf:": "\U0001f9d5", - ":person_with_pouting_face:": "\U0001f64e\u200d\u2640\ufe0f", - ":person_with_probing_cane:": "\U0001f9d1\u200d\U0001f9af", - ":person_with_skullcap:": "\U0001f472", - ":person_with_turban:": "\U0001f473", - ":person_with_veil:": "\U0001f470", - ":person_with_white_cane:": "\U0001f9d1\u200d\U0001f9af", - ":peru:": "\U0001f1f5\U0001f1ea", - ":petri_dish:": "\U0001f9eb", - ":philippines:": "\U0001f1f5\U0001f1ed", - ":phone:": "\u260e\ufe0f", - ":pi_ata:": "\U0001fa85", - ":pick:": "\u26cf\ufe0f", - ":pickup_truck:": "\U0001f6fb", - ":pie:": "\U0001f967", - ":pig:": "\U0001f437", - ":pig2:": "\U0001f416", - ":pig_face:": "\U0001f437", - ":pig_nose:": "\U0001f43d", - ":pile_of_poo:": "\U0001f4a9", - ":pill:": "\U0001f48a", - ":pilot:": "\U0001f9d1\u200d\u2708\ufe0f", - ":pinched_fingers:": "\U0001f90c", - ":pinching_hand:": "\U0001f90f", - ":pine_decoration:": "\U0001f38d", - ":pineapple:": "\U0001f34d", - ":ping_pong:": "\U0001f3d3", - ":pirate_flag:": "\U0001f3f4\u200d\u2620\ufe0f", - ":pisces:": "\u2653", - ":pistol:": "\U0001f52b", - ":pitcairn_islands:": "\U0001f1f5\U0001f1f3", - ":pizza:": "\U0001f355", - ":piñata:": "\U0001fa85", - ":placard:": "\U0001faa7", - ":place_of_worship:": "\U0001f6d0", - ":plate_with_cutlery:": "\U0001f37d\ufe0f", - ":play_button:": "\u25b6", - ":play_or_pause_button:": "\u23ef", - ":play_pause:": "\u23ef", - ":pleading_face:": "\U0001f97a", - ":plunger:": "\U0001faa0", - ":plus:": "\u2795", - ":point_down:": "\U0001f447", - ":point_down_tone1:": "\U0001f447\U0001f3fb", - ":point_down_tone2:": "\U0001f447\U0001f3fc", - ":point_down_tone3:": "\U0001f447\U0001f3fd", - ":point_down_tone4:": "\U0001f447\U0001f3fe", - ":point_down_tone5:": "\U0001f447\U0001f3ff", - ":point_left:": "\U0001f448", - ":point_left_tone1:": "\U0001f448\U0001f3fb", - ":point_left_tone2:": "\U0001f448\U0001f3fc", - ":point_left_tone3:": "\U0001f448\U0001f3fd", - ":point_left_tone4:": "\U0001f448\U0001f3fe", - ":point_left_tone5:": "\U0001f448\U0001f3ff", - ":point_right:": "\U0001f449", - ":point_right_tone1:": "\U0001f449\U0001f3fb", - ":point_right_tone2:": "\U0001f449\U0001f3fc", - ":point_right_tone3:": "\U0001f449\U0001f3fd", - ":point_right_tone4:": "\U0001f449\U0001f3fe", - ":point_right_tone5:": "\U0001f449\U0001f3ff", - ":point_up:": "\u261d\ufe0f", - ":point_up_2:": "\U0001f446", - ":point_up_2_tone1:": "\U0001f446\U0001f3fb", - ":point_up_2_tone2:": "\U0001f446\U0001f3fc", - ":point_up_2_tone3:": "\U0001f446\U0001f3fd", - ":point_up_2_tone4:": "\U0001f446\U0001f3fe", - ":point_up_2_tone5:": "\U0001f446\U0001f3ff", - ":point_up_tone1:": "\u261d\U0001f3fb", - ":point_up_tone2:": "\u261d\U0001f3fc", - ":point_up_tone3:": "\u261d\U0001f3fd", - ":point_up_tone4:": "\u261d\U0001f3fe", - ":point_up_tone5:": "\u261d\U0001f3ff", - ":poland:": "\U0001f1f5\U0001f1f1", - ":polar_bear:": "\U0001f43b\u200d\u2744\ufe0f", - ":police_car:": "\U0001f693", - ":police_car_light:": "\U0001f6a8", - ":police_officer:": "\U0001f46e", - ":police_officer_tone1:": "\U0001f46e\U0001f3fb", - ":police_officer_tone2:": "\U0001f46e\U0001f3fc", - ":police_officer_tone3:": "\U0001f46e\U0001f3fd", - ":police_officer_tone4:": "\U0001f46e\U0001f3fe", - ":police_officer_tone5:": "\U0001f46e\U0001f3ff", - ":policeman:": "\U0001f46e\u200d\u2642\ufe0f", - ":policewoman:": "\U0001f46e\u200d\u2640\ufe0f", - ":poodle:": "\U0001f429", - ":pool_8_ball:": "\U0001f3b1", - ":poop:": "\U0001f4a9", - ":popcorn:": "\U0001f37f", - ":portugal:": "\U0001f1f5\U0001f1f9", - ":post_office:": "\U0001f3e3", - ":postal_horn:": "\U0001f4ef", - ":postbox:": "\U0001f4ee", - ":pot_of_food:": "\U0001f372", - ":potable_water:": "\U0001f6b0", - ":potato:": "\U0001f954", - ":potted_plant:": "\U0001fab4", - ":pouch:": "\U0001f45d", - ":poultry_leg:": "\U0001f357", - ":pound:": "\U0001f4b7", - ":pound_banknote:": "\U0001f4b7", - ":pout:": "\U0001f621", - ":pouting_cat:": "\U0001f63e", - ":pouting_face:": "\U0001f621", - ":pouting_man:": "\U0001f64e\u200d\u2642\ufe0f", - ":pouting_woman:": "\U0001f64e\u200d\u2640\ufe0f", - ":pray:": "\U0001f64f", - ":pray_tone1:": "\U0001f64f\U0001f3fb", - ":pray_tone2:": "\U0001f64f\U0001f3fc", - ":pray_tone3:": "\U0001f64f\U0001f3fd", - ":pray_tone4:": "\U0001f64f\U0001f3fe", - ":pray_tone5:": "\U0001f64f\U0001f3ff", - ":prayer_beads:": "\U0001f4ff", - ":pregnant_woman:": "\U0001f930", - ":pregnant_woman_tone1:": "\U0001f930\U0001f3fb", - ":pregnant_woman_tone2:": "\U0001f930\U0001f3fc", - ":pregnant_woman_tone3:": "\U0001f930\U0001f3fd", - ":pregnant_woman_tone4:": "\U0001f930\U0001f3fe", - ":pregnant_woman_tone5:": "\U0001f930\U0001f3ff", - ":pretzel:": "\U0001f968", - ":previous_track_button:": "\u23ee\ufe0f", - ":prince:": "\U0001f934", - ":prince_tone1:": "\U0001f934\U0001f3fb", - ":prince_tone2:": "\U0001f934\U0001f3fc", - ":prince_tone3:": "\U0001f934\U0001f3fd", - ":prince_tone4:": "\U0001f934\U0001f3fe", - ":prince_tone5:": "\U0001f934\U0001f3ff", - ":princess:": "\U0001f478", - ":princess_tone1:": "\U0001f478\U0001f3fb", - ":princess_tone2:": "\U0001f478\U0001f3fc", - ":princess_tone3:": "\U0001f478\U0001f3fd", - ":princess_tone4:": "\U0001f478\U0001f3fe", - ":princess_tone5:": "\U0001f478\U0001f3ff", - ":printer:": "\U0001f5a8\ufe0f", - ":probing_cane:": "\U0001f9af", - ":prohibited:": "\U0001f6ab", - ":projector:": "\U0001f4fd", - ":puerto_rico:": "\U0001f1f5\U0001f1f7", - ":punch:": "\U0001f44a", - ":punch_tone1:": "\U0001f44a\U0001f3fb", - ":punch_tone2:": "\U0001f44a\U0001f3fc", - ":punch_tone3:": "\U0001f44a\U0001f3fd", - ":punch_tone4:": "\U0001f44a\U0001f3fe", - ":punch_tone5:": "\U0001f44a\U0001f3ff", - ":purple_circle:": "\U0001f7e3", - ":purple_heart:": "\U0001f49c", - ":purple_square:": "\U0001f7ea", - ":purse:": "\U0001f45b", - ":pushpin:": "\U0001f4cc", - ":put_litter_in_its_place:": "\U0001f6ae", - ":puzzle_piece:": "\U0001f9e9", - ":qatar:": "\U0001f1f6\U0001f1e6", - ":question:": "\u2753", - ":question_mark:": "\u2753", - ":rabbit:": "\U0001f430", - ":rabbit2:": "\U0001f407", - ":rabbit_face:": "\U0001f430", - ":raccoon:": "\U0001f99d", - ":race_car:": "\U0001f3ce", - ":racehorse:": "\U0001f40e", - ":racing_car:": "\U0001f3ce\ufe0f", - ":racing_motorcycle:": "\U0001f3cd\ufe0f", - ":radio:": "\U0001f4fb", - ":radio_button:": "\U0001f518", - ":radioactive:": "\u2622", - ":radioactive_sign:": "\u2622\ufe0f", - ":rage:": "\U0001f621", - ":railway_car:": "\U0001f683", - ":railway_track:": "\U0001f6e4\ufe0f", - ":rain_cloud:": "\U0001f327\ufe0f", - ":rainbow:": "\U0001f308", - ":rainbow-flag:": "\U0001f3f3\ufe0f\u200d\U0001f308", - ":rainbow_flag:": "\U0001f3f3\ufe0f\u200d\U0001f308", - ":raised_back_of_hand:": "\U0001f91a", - ":raised_back_of_hand_tone1:": "\U0001f91a\U0001f3fb", - ":raised_back_of_hand_tone2:": "\U0001f91a\U0001f3fc", - ":raised_back_of_hand_tone3:": "\U0001f91a\U0001f3fd", - ":raised_back_of_hand_tone4:": "\U0001f91a\U0001f3fe", - ":raised_back_of_hand_tone5:": "\U0001f91a\U0001f3ff", - ":raised_eyebrow:": "\U0001f928", - ":raised_fist:": "\u270a", - ":raised_hand:": "\u270b", - ":raised_hand_tone1:": "\u270b\U0001f3fb", - ":raised_hand_tone2:": "\u270b\U0001f3fc", - ":raised_hand_tone3:": "\u270b\U0001f3fd", - ":raised_hand_tone4:": "\u270b\U0001f3fe", - ":raised_hand_tone5:": "\u270b\U0001f3ff", - ":raised_hand_with_fingers_splayed:": "\U0001f590\ufe0f", - ":raised_hands:": "\U0001f64c", - ":raised_hands_tone1:": "\U0001f64c\U0001f3fb", - ":raised_hands_tone2:": "\U0001f64c\U0001f3fc", - ":raised_hands_tone3:": "\U0001f64c\U0001f3fd", - ":raised_hands_tone4:": "\U0001f64c\U0001f3fe", - ":raised_hands_tone5:": "\U0001f64c\U0001f3ff", - ":raising_hand:": "\U0001f64b\u200d\u2640\ufe0f", - ":raising_hand_man:": "\U0001f64b\u200d\u2642\ufe0f", - ":raising_hand_woman:": "\U0001f64b\u200d\u2640\ufe0f", - ":raising_hands:": "\U0001f64c", - ":ram:": "\U0001f40f", - ":ramen:": "\U0001f35c", - ":rat:": "\U0001f400", - ":razor:": "\U0001fa92", - ":receipt:": "\U0001f9fe", - ":record_button:": "\u23fa", - ":recycle:": "\u267b\ufe0f", - ":recycling_symbol:": "\u267b", - ":red_apple:": "\U0001f34e", - ":red_car:": "\U0001f697", - ":red_circle:": "\U0001f534", - ":red_envelope:": "\U0001f9e7", - ":red_hair:": "\U0001f9b0", - ":red_haired_man:": "\U0001f468\u200d\U0001f9b0", - ":red_haired_person:": "\U0001f9d1\u200d\U0001f9b0", - ":red_haired_woman:": "\U0001f469\u200d\U0001f9b0", - ":red_heart:": "\u2764", - ":red_paper_lantern:": "\U0001f3ee", - ":red_square:": "\U0001f7e5", - ":red_triangle_pointed_down:": "\U0001f53b", - ":red_triangle_pointed_up:": "\U0001f53a", - ":registered:": "\u00ae\ufe0f", - ":relaxed:": "\u263a\ufe0f", - ":relieved:": "\U0001f60c", - ":relieved_face:": "\U0001f60c", - ":reminder_ribbon:": "\U0001f397\ufe0f", - ":repeat:": "\U0001f501", - ":repeat_button:": "\U0001f501", - ":repeat_one:": "\U0001f502", - ":repeat_single_button:": "\U0001f502", - ":rescue_worker_helmet:": "\u26d1\ufe0f", - ":rescue_worker’s_helmet:": "\u26d1", - ":restroom:": "\U0001f6bb", - ":reunion:": "\U0001f1f7\U0001f1ea", - ":reverse_button:": "\u25c0", - ":revolving_hearts:": "\U0001f49e", - ":rewind:": "\u23ea", - ":rhino:": "\U0001f98f", - ":rhinoceros:": "\U0001f98f", - ":ribbon:": "\U0001f380", - ":rice:": "\U0001f35a", - ":rice_ball:": "\U0001f359", - ":rice_cracker:": "\U0001f358", - ":rice_scene:": "\U0001f391", - ":right-facing_fist:": "\U0001f91c", - ":right_anger_bubble:": "\U0001f5ef\ufe0f", - ":right_arrow:": "\u27a1", - ":right_arrow_curving_down:": "\u2935", - ":right_arrow_curving_left:": "\u21a9", - ":right_arrow_curving_up:": "\u2934", - ":right_facing_fist:": "\U0001f91c", - ":right_facing_fist_tone1:": "\U0001f91c\U0001f3fb", - ":right_facing_fist_tone2:": "\U0001f91c\U0001f3fc", - ":right_facing_fist_tone3:": "\U0001f91c\U0001f3fd", - ":right_facing_fist_tone4:": "\U0001f91c\U0001f3fe", - ":right_facing_fist_tone5:": "\U0001f91c\U0001f3ff", - ":ring:": "\U0001f48d", - ":ringed_planet:": "\U0001fa90", - ":roasted_sweet_potato:": "\U0001f360", - ":robot:": "\U0001f916", - ":robot_face:": "\U0001f916", - ":rock:": "\U0001faa8", - ":rocket:": "\U0001f680", - ":rofl:": "\U0001f923", - ":roll_eyes:": "\U0001f644", - ":roll_of_paper:": "\U0001f9fb", - ":rolled-up_newspaper:": "\U0001f5de", - ":rolled_up_newspaper:": "\U0001f5de\ufe0f", - ":roller_coaster:": "\U0001f3a2", - ":roller_skate:": "\U0001f6fc", - ":rolling_eyes:": "\U0001f644", - ":rolling_on_the_floor_laughing:": "\U0001f923", - ":romania:": "\U0001f1f7\U0001f1f4", - ":rooster:": "\U0001f413", - ":rose:": "\U0001f339", - ":rosette:": "\U0001f3f5\ufe0f", - ":rotating_light:": "\U0001f6a8", - ":round_pushpin:": "\U0001f4cd", - ":rowboat:": "\U0001f6a3\u200d\u2642\ufe0f", - ":rowing_man:": "\U0001f6a3\u200d\u2642\ufe0f", - ":rowing_woman:": "\U0001f6a3\u200d\u2640\ufe0f", - ":ru:": "\U0001f1f7\U0001f1fa", - ":rugby_football:": "\U0001f3c9", - ":runner:": "\U0001f3c3\u200d\u2642\ufe0f", - ":running:": "\U0001f3c3", - ":running_man:": "\U0001f3c3\u200d\u2642\ufe0f", - ":running_shirt:": "\U0001f3bd", - ":running_shirt_with_sash:": "\U0001f3bd", - ":running_shoe:": "\U0001f45f", - ":running_woman:": "\U0001f3c3\u200d\u2640\ufe0f", - ":rwanda:": "\U0001f1f7\U0001f1fc", - ":sa:": "\U0001f202\ufe0f", - ":sad_but_relieved_face:": "\U0001f625", - ":safety_pin:": "\U0001f9f7", - ":safety_vest:": "\U0001f9ba", - ":sagittarius:": "\u2650", - ":sailboat:": "\u26f5", - ":sake:": "\U0001f376", - ":salad:": "\U0001f957", - ":salt:": "\U0001f9c2", - ":samoa:": "\U0001f1fc\U0001f1f8", - ":san_marino:": "\U0001f1f8\U0001f1f2", - ":sandal:": "\U0001f461", - ":sandwich:": "\U0001f96a", - ":santa:": "\U0001f385", - ":santa_tone1:": "\U0001f385\U0001f3fb", - ":santa_tone2:": "\U0001f385\U0001f3fc", - ":santa_tone3:": "\U0001f385\U0001f3fd", - ":santa_tone4:": "\U0001f385\U0001f3fe", - ":santa_tone5:": "\U0001f385\U0001f3ff", - ":sao_tome_principe:": "\U0001f1f8\U0001f1f9", - ":sari:": "\U0001f97b", - ":sassy_man:": "\U0001f481\u200d\u2642\ufe0f", - ":sassy_woman:": "\U0001f481\u200d\u2640\ufe0f", - ":satellite:": "\U0001f6f0\ufe0f", - ":satellite_antenna:": "\U0001f4e1", - ":satellite_orbital:": "\U0001f6f0", - ":satisfied:": "\U0001f606", - ":saudi_arabia:": "\U0001f1f8\U0001f1e6", - ":sauna_man:": "\U0001f9d6\u200d\u2642\ufe0f", - ":sauna_person:": "\U0001f9d6", - ":sauna_woman:": "\U0001f9d6\u200d\u2640\ufe0f", - ":sauropod:": "\U0001f995", - ":saxophone:": "\U0001f3b7", - ":scales:": "\u2696\ufe0f", - ":scarf:": "\U0001f9e3", - ":school:": "\U0001f3eb", - ":school_satchel:": "\U0001f392", - ":scientist:": "\U0001f9d1\u200d\U0001f52c", - ":scissors:": "\u2702\ufe0f", - ":scooter:": "\U0001f6f4", - ":scorpion:": "\U0001f982", - ":scorpius:": "\u264f", - ":scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", - ":scream:": "\U0001f631", - ":scream_cat:": "\U0001f640", - ":screwdriver:": "\U0001fa9b", - ":scroll:": "\U0001f4dc", - ":seal:": "\U0001f9ad", - ":seat:": "\U0001f4ba", - ":second_place:": "\U0001f948", - ":second_place_medal:": "\U0001f948", - ":secret:": "\u3299\ufe0f", - ":see-no-evil_monkey:": "\U0001f648", - ":see_no_evil:": "\U0001f648", - ":seedling:": "\U0001f331", - ":selfie:": "\U0001f933", - ":selfie_tone1:": "\U0001f933\U0001f3fb", - ":selfie_tone2:": "\U0001f933\U0001f3fc", - ":selfie_tone3:": "\U0001f933\U0001f3fd", - ":selfie_tone4:": "\U0001f933\U0001f3fe", - ":selfie_tone5:": "\U0001f933\U0001f3ff", - ":senegal:": "\U0001f1f8\U0001f1f3", - ":serbia:": "\U0001f1f7\U0001f1f8", - ":service_dog:": "\U0001f415\u200d\U0001f9ba", - ":seven:": "7\ufe0f\u20e3", - ":seven-thirty:": "\U0001f562", - ":seven_o’clock:": "\U0001f556", - ":sewing_needle:": "\U0001faa1", - ":seychelles:": "\U0001f1f8\U0001f1e8", - ":shallow_pan_of_food:": "\U0001f958", - ":shamrock:": "\u2618\ufe0f", - ":shark:": "\U0001f988", - ":shaved_ice:": "\U0001f367", - ":sheaf_of_rice:": "\U0001f33e", - ":sheep:": "\U0001f411", - ":shell:": "\U0001f41a", - ":shield:": "\U0001f6e1\ufe0f", - ":shinto_shrine:": "\u26e9\ufe0f", - ":ship:": "\U0001f6a2", - ":shirt:": "\U0001f455", - ":shit:": "\U0001f4a9", - ":shoe:": "\U0001f45e", - ":shooting_star:": "\U0001f320", - ":shopping:": "\U0001f6cd\ufe0f", - ":shopping_bags:": "\U0001f6cd\ufe0f", - ":shopping_cart:": "\U0001f6d2", - ":shopping_trolley:": "\U0001f6d2", - ":shortcake:": "\U0001f370", - ":shorts:": "\U0001fa73", - ":shower:": "\U0001f6bf", - ":shrimp:": "\U0001f990", - ":shrug:": "\U0001f937", - ":shuffle_tracks_button:": "\U0001f500", - ":shushing_face:": "\U0001f92b", - ":sierra_leone:": "\U0001f1f8\U0001f1f1", - ":sign_of_the_horns:": "\U0001f918", - ":signal_strength:": "\U0001f4f6", - ":singapore:": "\U0001f1f8\U0001f1ec", - ":singer:": "\U0001f9d1\u200d\U0001f3a4", - ":sint_maarten:": "\U0001f1f8\U0001f1fd", - ":six:": "6\ufe0f\u20e3", - ":six-thirty:": "\U0001f561", - ":six_o’clock:": "\U0001f555", - ":six_pointed_star:": "\U0001f52f", - ":skateboard:": "\U0001f6f9", - ":ski:": "\U0001f3bf", - ":skier:": "\u26f7\ufe0f", - ":skin-tone-2:": "\U0001f3fb", - ":skin-tone-3:": "\U0001f3fc", - ":skin-tone-4:": "\U0001f3fd", - ":skin-tone-5:": "\U0001f3fe", - ":skin-tone-6:": "\U0001f3ff", - ":skis:": "\U0001f3bf", - ":skull:": "\U0001f480", - ":skull_and_crossbones:": "\u2620\ufe0f", - ":skull_crossbones:": "\u2620", - ":skunk:": "\U0001f9a8", - ":sled:": "\U0001f6f7", - ":sleeping:": "\U0001f634", - ":sleeping_accommodation:": "\U0001f6cc", - ":sleeping_bed:": "\U0001f6cc", - ":sleeping_face:": "\U0001f634", - ":sleepy:": "\U0001f62a", - ":sleepy_face:": "\U0001f62a", - ":sleuth_or_spy:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", - ":slight_frown:": "\U0001f641", - ":slight_smile:": "\U0001f642", - ":slightly_frowning_face:": "\U0001f641", - ":slightly_smiling_face:": "\U0001f642", - ":slot_machine:": "\U0001f3b0", - ":sloth:": "\U0001f9a5", - ":slovakia:": "\U0001f1f8\U0001f1f0", - ":slovenia:": "\U0001f1f8\U0001f1ee", - ":small_airplane:": "\U0001f6e9\ufe0f", - ":small_blue_diamond:": "\U0001f539", - ":small_orange_diamond:": "\U0001f538", - ":small_red_triangle:": "\U0001f53a", - ":small_red_triangle_down:": "\U0001f53b", - ":smile:": "\U0001f604", - ":smile_cat:": "\U0001f638", - ":smiley:": "\U0001f603", - ":smiley_cat:": "\U0001f63a", - ":smiling_cat_with_heart-eyes:": "\U0001f63b", - ":smiling_face:": "\u263a", - ":smiling_face_with_3_hearts:": "\U0001f970", - ":smiling_face_with_halo:": "\U0001f607", - ":smiling_face_with_heart-eyes:": "\U0001f60d", - ":smiling_face_with_hearts:": "\U0001f970", - ":smiling_face_with_horns:": "\U0001f608", - ":smiling_face_with_smiling_eyes:": "\U0001f60a", - ":smiling_face_with_sunglasses:": "\U0001f60e", - ":smiling_face_with_tear:": "\U0001f972", - ":smiling_face_with_three_hearts:": "\U0001f970", - ":smiling_imp:": "\U0001f608", - ":smirk:": "\U0001f60f", - ":smirk_cat:": "\U0001f63c", - ":smirking_face:": "\U0001f60f", - ":smoking:": "\U0001f6ac", - ":snail:": "\U0001f40c", - ":snake:": "\U0001f40d", - ":sneezing_face:": "\U0001f927", - ":snow-capped_mountain:": "\U0001f3d4", - ":snow_capped_mountain:": "\U0001f3d4\ufe0f", - ":snow_cloud:": "\U0001f328\ufe0f", - ":snowboarder:": "\U0001f3c2", - ":snowboarder_tone1:": "\U0001f3c2\U0001f3fb", - ":snowboarder_tone2:": "\U0001f3c2\U0001f3fc", - ":snowboarder_tone3:": "\U0001f3c2\U0001f3fd", - ":snowboarder_tone4:": "\U0001f3c2\U0001f3fe", - ":snowboarder_tone5:": "\U0001f3c2\U0001f3ff", - ":snowflake:": "\u2744\ufe0f", - ":snowman:": "\u2603\ufe0f", - ":snowman2:": "\u2603", - ":snowman_with_snow:": "\u2603\ufe0f", - ":snowman_without_snow:": "\u26c4", - ":soap:": "\U0001f9fc", - ":sob:": "\U0001f62d", - ":soccer:": "\u26bd", - ":soccer_ball:": "\u26bd", - ":socks:": "\U0001f9e6", - ":soft_ice_cream:": "\U0001f366", - ":softball:": "\U0001f94e", - ":solomon_islands:": "\U0001f1f8\U0001f1e7", - ":somalia:": "\U0001f1f8\U0001f1f4", - ":soon:": "\U0001f51c", - ":sos:": "\U0001f198", - ":sound:": "\U0001f509", - ":south_africa:": "\U0001f1ff\U0001f1e6", - ":south_georgia_south_sandwich_islands:": "\U0001f1ec\U0001f1f8", - ":south_sudan:": "\U0001f1f8\U0001f1f8", - ":space_invader:": "\U0001f47e", - ":spade_suit:": "\u2660", - ":spades:": "\u2660\ufe0f", - ":spaghetti:": "\U0001f35d", - ":sparkle:": "\u2747\ufe0f", - ":sparkler:": "\U0001f387", - ":sparkles:": "\u2728", - ":sparkling_heart:": "\U0001f496", - ":speak-no-evil_monkey:": "\U0001f64a", - ":speak_no_evil:": "\U0001f64a", - ":speaker:": "\U0001f508", - ":speaker_high_volume:": "\U0001f50a", - ":speaker_low_volume:": "\U0001f508", - ":speaker_medium_volume:": "\U0001f509", - ":speaking_head:": "\U0001f5e3", - ":speaking_head_in_silhouette:": "\U0001f5e3\ufe0f", - ":speech_balloon:": "\U0001f4ac", - ":speech_left:": "\U0001f5e8", - ":speedboat:": "\U0001f6a4", - ":spider:": "\U0001f577\ufe0f", - ":spider_web:": "\U0001f578\ufe0f", - ":spiral_calendar:": "\U0001f5d3", - ":spiral_calendar_pad:": "\U0001f5d3\ufe0f", - ":spiral_note_pad:": "\U0001f5d2\ufe0f", - ":spiral_notepad:": "\U0001f5d2", - ":spiral_shell:": "\U0001f41a", - ":spock-hand:": "\U0001f596", - ":sponge:": "\U0001f9fd", - ":spoon:": "\U0001f944", - ":sport_utility_vehicle:": "\U0001f699", - ":sports_medal:": "\U0001f3c5", - ":spouting_whale:": "\U0001f433", - ":squid:": "\U0001f991", - ":squinting_face_with_tongue:": "\U0001f61d", - ":sri_lanka:": "\U0001f1f1\U0001f1f0", - ":st_barthelemy:": "\U0001f1e7\U0001f1f1", - ":st_helena:": "\U0001f1f8\U0001f1ed", - ":st_kitts_nevis:": "\U0001f1f0\U0001f1f3", - ":st_lucia:": "\U0001f1f1\U0001f1e8", - ":st_martin:": "\U0001f1f2\U0001f1eb", - ":st_pierre_miquelon:": "\U0001f1f5\U0001f1f2", - ":st_vincent_grenadines:": "\U0001f1fb\U0001f1e8", - ":stadium:": "\U0001f3df\ufe0f", - ":standing_man:": "\U0001f9cd\u200d\u2642\ufe0f", - ":standing_person:": "\U0001f9cd", - ":standing_woman:": "\U0001f9cd\u200d\u2640\ufe0f", - ":star:": "\u2b50", - ":star-struck:": "\U0001f929", - ":star2:": "\U0001f31f", - ":star_and_crescent:": "\u262a\ufe0f", - ":star_of_David:": "\u2721", - ":star_of_david:": "\u2721\ufe0f", - ":star_struck:": "\U0001f929", - ":stars:": "\U0001f320", - ":station:": "\U0001f689", - ":statue_of_liberty:": "\U0001f5fd", - ":steam_locomotive:": "\U0001f682", - ":steaming_bowl:": "\U0001f35c", - ":stethoscope:": "\U0001fa7a", - ":stew:": "\U0001f372", - ":stop_button:": "\u23f9", - ":stop_sign:": "\U0001f6d1", - ":stopwatch:": "\u23f1\ufe0f", - ":straight_ruler:": "\U0001f4cf", - ":strawberry:": "\U0001f353", - ":stuck_out_tongue:": "\U0001f61b", - ":stuck_out_tongue_closed_eyes:": "\U0001f61d", - ":stuck_out_tongue_winking_eye:": "\U0001f61c", - ":student:": "\U0001f9d1\u200d\U0001f393", - ":studio_microphone:": "\U0001f399\ufe0f", - ":stuffed_flatbread:": "\U0001f959", - ":sudan:": "\U0001f1f8\U0001f1e9", - ":sun:": "\u2600", - ":sun_behind_cloud:": "\u26c5", - ":sun_behind_large_cloud:": "\U0001f325", - ":sun_behind_rain_cloud:": "\U0001f326", - ":sun_behind_small_cloud:": "\U0001f324", - ":sun_with_face:": "\U0001f31e", - ":sunflower:": "\U0001f33b", - ":sunglasses:": "\U0001f60e", - ":sunny:": "\u2600\ufe0f", - ":sunrise:": "\U0001f305", - ":sunrise_over_mountains:": "\U0001f304", - ":sunset:": "\U0001f307", - ":superhero:": "\U0001f9b8", - ":superhero_man:": "\U0001f9b8\u200d\u2642\ufe0f", - ":superhero_woman:": "\U0001f9b8\u200d\u2640\ufe0f", - ":supervillain:": "\U0001f9b9", - ":supervillain_man:": "\U0001f9b9\u200d\u2642\ufe0f", - ":supervillain_woman:": "\U0001f9b9\u200d\u2640\ufe0f", - ":surfer:": "\U0001f3c4\u200d\u2642\ufe0f", - ":surfing_man:": "\U0001f3c4\u200d\u2642\ufe0f", - ":surfing_woman:": "\U0001f3c4\u200d\u2640\ufe0f", - ":suriname:": "\U0001f1f8\U0001f1f7", - ":sushi:": "\U0001f363", - ":suspension_railway:": "\U0001f69f", - ":svalbard_jan_mayen:": "\U0001f1f8\U0001f1ef", - ":swan:": "\U0001f9a2", - ":swaziland:": "\U0001f1f8\U0001f1ff", - ":sweat:": "\U0001f613", - ":sweat_droplets:": "\U0001f4a6", - ":sweat_drops:": "\U0001f4a6", - ":sweat_smile:": "\U0001f605", - ":sweden:": "\U0001f1f8\U0001f1ea", - ":sweet_potato:": "\U0001f360", - ":swim_brief:": "\U0001fa72", - ":swimmer:": "\U0001f3ca\u200d\u2642\ufe0f", - ":swimming_man:": "\U0001f3ca\u200d\u2642\ufe0f", - ":swimming_woman:": "\U0001f3ca\u200d\u2640\ufe0f", - ":switzerland:": "\U0001f1e8\U0001f1ed", - ":symbols:": "\U0001f523", - ":synagogue:": "\U0001f54d", - ":syria:": "\U0001f1f8\U0001f1fe", - ":syringe:": "\U0001f489", - ":t-rex:": "\U0001f996", - ":t-shirt:": "\U0001f455", - ":t_rex:": "\U0001f996", - ":table_tennis_paddle_and_ball:": "\U0001f3d3", - ":taco:": "\U0001f32e", - ":tada:": "\U0001f389", - ":taiwan:": "\U0001f1f9\U0001f1fc", - ":tajikistan:": "\U0001f1f9\U0001f1ef", - ":takeout_box:": "\U0001f961", - ":tamale:": "\U0001fad4", - ":tanabata_tree:": "\U0001f38b", - ":tangerine:": "\U0001f34a", - ":tanzania:": "\U0001f1f9\U0001f1ff", - ":taurus:": "\u2649", - ":taxi:": "\U0001f695", - ":tea:": "\U0001f375", - ":teacher:": "\U0001f9d1\u200d\U0001f3eb", - ":teacup_without_handle:": "\U0001f375", - ":teapot:": "\U0001fad6", - ":tear-off_calendar:": "\U0001f4c6", - ":technologist:": "\U0001f9d1\u200d\U0001f4bb", - ":teddy_bear:": "\U0001f9f8", - ":telephone:": "\u260e", - ":telephone_receiver:": "\U0001f4de", - ":telescope:": "\U0001f52d", - ":television:": "\U0001f4fa", - ":ten-thirty:": "\U0001f565", - ":ten_o’clock:": "\U0001f559", - ":tennis:": "\U0001f3be", - ":tent:": "\u26fa", - ":test_tube:": "\U0001f9ea", - ":thailand:": "\U0001f1f9\U0001f1ed", - ":the_horns:": "\U0001f918", - ":thermometer:": "\U0001f321\ufe0f", - ":thermometer_face:": "\U0001f912", - ":thinking:": "\U0001f914", - ":thinking_face:": "\U0001f914", - ":third_place:": "\U0001f949", - ":third_place_medal:": "\U0001f949", - ":thong_sandal:": "\U0001fa74", - ":thought_balloon:": "\U0001f4ad", - ":thread:": "\U0001f9f5", - ":three:": "3\ufe0f\u20e3", - ":three-thirty:": "\U0001f55e", - ":three_button_mouse:": "\U0001f5b1\ufe0f", - ":three_o’clock:": "\U0001f552", - ":thumbs_down:": "\U0001f44e", - ":thumbs_up:": "\U0001f44d", - ":thumbsdown:": "\U0001f44e", - ":thumbsdown_tone1:": "\U0001f44e\U0001f3fb", - ":thumbsdown_tone2:": "\U0001f44e\U0001f3fc", - ":thumbsdown_tone3:": "\U0001f44e\U0001f3fd", - ":thumbsdown_tone4:": "\U0001f44e\U0001f3fe", - ":thumbsdown_tone5:": "\U0001f44e\U0001f3ff", - ":thumbsup:": "\U0001f44d", - ":thumbsup_tone1:": "\U0001f44d\U0001f3fb", - ":thumbsup_tone2:": "\U0001f44d\U0001f3fc", - ":thumbsup_tone3:": "\U0001f44d\U0001f3fd", - ":thumbsup_tone4:": "\U0001f44d\U0001f3fe", - ":thumbsup_tone5:": "\U0001f44d\U0001f3ff", - ":thunder_cloud_and_rain:": "\u26c8\ufe0f", - ":thunder_cloud_rain:": "\u26c8", - ":ticket:": "\U0001f3ab", - ":tickets:": "\U0001f39f", - ":tiger:": "\U0001f42f", - ":tiger2:": "\U0001f405", - ":tiger_face:": "\U0001f42f", - ":timer:": "\u23f2", - ":timer_clock:": "\u23f2\ufe0f", - ":timor_leste:": "\U0001f1f9\U0001f1f1", - ":tipping_hand_man:": "\U0001f481\u200d\u2642\ufe0f", - ":tipping_hand_person:": "\U0001f481", - ":tipping_hand_woman:": "\U0001f481\u200d\u2640\ufe0f", - ":tired_face:": "\U0001f62b", - ":tm:": "\u2122\ufe0f", - ":togo:": "\U0001f1f9\U0001f1ec", - ":toilet:": "\U0001f6bd", - ":tokelau:": "\U0001f1f9\U0001f1f0", - ":tokyo_tower:": "\U0001f5fc", - ":tomato:": "\U0001f345", - ":tonga:": "\U0001f1f9\U0001f1f4", - ":tongue:": "\U0001f445", - ":toolbox:": "\U0001f9f0", - ":tools:": "\U0001f6e0", - ":tooth:": "\U0001f9b7", - ":toothbrush:": "\U0001faa5", - ":top:": "\U0001f51d", - ":top_hat:": "\U0001f3a9", - ":tophat:": "\U0001f3a9", - ":tornado:": "\U0001f32a\ufe0f", - ":tr:": "\U0001f1f9\U0001f1f7", - ":track_next:": "\u23ed", - ":track_previous:": "\u23ee", - ":trackball:": "\U0001f5b2\ufe0f", - ":tractor:": "\U0001f69c", - ":trade_mark:": "\u2122", - ":traffic_light:": "\U0001f6a5", - ":train:": "\U0001f68b", - ":train2:": "\U0001f686", - ":tram:": "\U0001f68a", - ":tram_car:": "\U0001f68b", - ":transgender_flag:": "\U0001f3f3\ufe0f\u200d\u26a7\ufe0f", - ":transgender_symbol:": "\u26a7", - ":triangular_flag:": "\U0001f6a9", - ":triangular_flag_on_post:": "\U0001f6a9", - ":triangular_ruler:": "\U0001f4d0", - ":trident:": "\U0001f531", - ":trident_emblem:": "\U0001f531", - ":trinidad_tobago:": "\U0001f1f9\U0001f1f9", - ":tristan_da_cunha:": "\U0001f1f9\U0001f1e6", - ":triumph:": "\U0001f624", - ":trolleybus:": "\U0001f68e", - ":trophy:": "\U0001f3c6", - ":tropical_drink:": "\U0001f379", - ":tropical_fish:": "\U0001f420", - ":truck:": "\U0001f69a", - ":trumpet:": "\U0001f3ba", - ":tshirt:": "\U0001f455", - ":tulip:": "\U0001f337", - ":tumbler_glass:": "\U0001f943", - ":tunisia:": "\U0001f1f9\U0001f1f3", - ":turkey:": "\U0001f983", - ":turkmenistan:": "\U0001f1f9\U0001f1f2", - ":turks_caicos_islands:": "\U0001f1f9\U0001f1e8", - ":turtle:": "\U0001f422", - ":tuvalu:": "\U0001f1f9\U0001f1fb", - ":tv:": "\U0001f4fa", - ":twelve-thirty:": "\U0001f567", - ":twelve_o’clock:": "\U0001f55b", - ":twisted_rightwards_arrows:": "\U0001f500", - ":two:": "2\ufe0f\u20e3", - ":two-hump_camel:": "\U0001f42b", - ":two-thirty:": "\U0001f55d", - ":two_hearts:": "\U0001f495", - ":two_men_holding_hands:": "\U0001f46c", - ":two_o’clock:": "\U0001f551", - ":two_women_holding_hands:": "\U0001f46d", - ":u5272:": "\U0001f239", - ":u5408:": "\U0001f234", - ":u55b6:": "\U0001f23a", - ":u6307:": "\U0001f22f", - ":u6708:": "\U0001f237\ufe0f", - ":u6709:": "\U0001f236", - ":u6e80:": "\U0001f235", - ":u7121:": "\U0001f21a", - ":u7533:": "\U0001f238", - ":u7981:": "\U0001f232", - ":u7a7a:": "\U0001f233", - ":uganda:": "\U0001f1fa\U0001f1ec", - ":uk:": "\U0001f1ec\U0001f1e7", - ":ukraine:": "\U0001f1fa\U0001f1e6", - ":umbrella:": "\u2602\ufe0f", - ":umbrella2:": "\u2602", - ":umbrella_on_ground:": "\u26f1\ufe0f", - ":umbrella_with_rain_drops:": "\u2614", - ":unamused:": "\U0001f612", - ":unamused_face:": "\U0001f612", - ":underage:": "\U0001f51e", - ":unicorn:": "\U0001f984", - ":unicorn_face:": "\U0001f984", - ":united_arab_emirates:": "\U0001f1e6\U0001f1ea", - ":united_nations:": "\U0001f1fa\U0001f1f3", - ":unlock:": "\U0001f513", - ":unlocked:": "\U0001f513", - ":up:": "\U0001f199", - ":up-down_arrow:": "\u2195", - ":up-left_arrow:": "\u2196", - ":up-right_arrow:": "\u2197", - ":up_arrow:": "\u2b06", - ":upside-down_face:": "\U0001f643", - ":upside_down:": "\U0001f643", - ":upside_down_face:": "\U0001f643", - ":upwards_button:": "\U0001f53c", - ":urn:": "\u26b1", - ":uruguay:": "\U0001f1fa\U0001f1fe", - ":us:": "\U0001f1fa\U0001f1f8", - ":us_outlying_islands:": "\U0001f1fa\U0001f1f2", - ":us_virgin_islands:": "\U0001f1fb\U0001f1ee", - ":uzbekistan:": "\U0001f1fa\U0001f1ff", - ":v:": "\u270c\ufe0f", - ":v_tone1:": "\u270c\U0001f3fb", - ":v_tone2:": "\u270c\U0001f3fc", - ":v_tone3:": "\u270c\U0001f3fd", - ":v_tone4:": "\u270c\U0001f3fe", - ":v_tone5:": "\u270c\U0001f3ff", - ":vampire:": "\U0001f9db\u200d\u2640\ufe0f", - ":vampire_man:": "\U0001f9db\u200d\u2642\ufe0f", - ":vampire_tone1:": "\U0001f9db\U0001f3fb", - ":vampire_tone2:": "\U0001f9db\U0001f3fc", - ":vampire_tone3:": "\U0001f9db\U0001f3fd", - ":vampire_tone4:": "\U0001f9db\U0001f3fe", - ":vampire_tone5:": "\U0001f9db\U0001f3ff", - ":vampire_woman:": "\U0001f9db\u200d\u2640\ufe0f", - ":vanuatu:": "\U0001f1fb\U0001f1fa", - ":vatican_city:": "\U0001f1fb\U0001f1e6", - ":venezuela:": "\U0001f1fb\U0001f1ea", - ":vertical_traffic_light:": "\U0001f6a6", - ":vhs:": "\U0001f4fc", - ":vibration_mode:": "\U0001f4f3", - ":victory_hand:": "\u270c", - ":video_camera:": "\U0001f4f9", - ":video_game:": "\U0001f3ae", - ":videocassette:": "\U0001f4fc", - ":vietnam:": "\U0001f1fb\U0001f1f3", - ":violin:": "\U0001f3bb", - ":virgo:": "\u264d", - ":volcano:": "\U0001f30b", - ":volleyball:": "\U0001f3d0", - ":vomiting_face:": "\U0001f92e", - ":vs:": "\U0001f19a", - ":vulcan:": "\U0001f596", - ":vulcan_salute:": "\U0001f596", - ":vulcan_tone1:": "\U0001f596\U0001f3fb", - ":vulcan_tone2:": "\U0001f596\U0001f3fc", - ":vulcan_tone3:": "\U0001f596\U0001f3fd", - ":vulcan_tone4:": "\U0001f596\U0001f3fe", - ":vulcan_tone5:": "\U0001f596\U0001f3ff", - ":waffle:": "\U0001f9c7", - ":wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", - ":walking:": "\U0001f6b6\u200d\u2642\ufe0f", - ":walking_man:": "\U0001f6b6\u200d\u2642\ufe0f", - ":walking_woman:": "\U0001f6b6\u200d\u2640\ufe0f", - ":wallis_futuna:": "\U0001f1fc\U0001f1eb", - ":waning_crescent_moon:": "\U0001f318", - ":waning_gibbous_moon:": "\U0001f316", - ":warning:": "\u26a0\ufe0f", - ":wastebasket:": "\U0001f5d1\ufe0f", - ":watch:": "\u231a", - ":water_buffalo:": "\U0001f403", - ":water_closet:": "\U0001f6be", - ":water_polo:": "\U0001f93d", - ":water_wave:": "\U0001f30a", - ":watermelon:": "\U0001f349", - ":wave:": "\U0001f44b", - ":wave_tone1:": "\U0001f44b\U0001f3fb", - ":wave_tone2:": "\U0001f44b\U0001f3fc", - ":wave_tone3:": "\U0001f44b\U0001f3fd", - ":wave_tone4:": "\U0001f44b\U0001f3fe", - ":wave_tone5:": "\U0001f44b\U0001f3ff", - ":waving_black_flag:": "\U0001f3f4", - ":waving_hand:": "\U0001f44b", - ":waving_white_flag:": "\U0001f3f3\ufe0f", - ":wavy_dash:": "\u3030\ufe0f", - ":waxing_crescent_moon:": "\U0001f312", - ":waxing_gibbous_moon:": "\U0001f314", - ":wc:": "\U0001f6be", - ":weary:": "\U0001f629", - ":weary_cat:": "\U0001f640", - ":weary_face:": "\U0001f629", - ":wedding:": "\U0001f492", - ":weight_lifter:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", - ":weight_lifting:": "\U0001f3cb\ufe0f", - ":weight_lifting_man:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", - ":weight_lifting_woman:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", - ":western_sahara:": "\U0001f1ea\U0001f1ed", - ":whale:": "\U0001f433", - ":whale2:": "\U0001f40b", - ":wheel_of_dharma:": "\u2638\ufe0f", - ":wheelchair:": "\u267f", - ":wheelchair_symbol:": "\u267f", - ":white_cane:": "\U0001f9af", - ":white_check_mark:": "\u2705", - ":white_circle:": "\u26aa", - ":white_exclamation_mark:": "\u2755", - ":white_flag:": "\U0001f3f3", - ":white_flower:": "\U0001f4ae", - ":white_frowning_face:": "\u2639\ufe0f", - ":white_hair:": "\U0001f9b3", - ":white_haired_man:": "\U0001f468\u200d\U0001f9b3", - ":white_haired_person:": "\U0001f9d1\u200d\U0001f9b3", - ":white_haired_woman:": "\U0001f469\u200d\U0001f9b3", - ":white_heart:": "\U0001f90d", - ":white_large_square:": "\u2b1c", - ":white_medium-small_square:": "\u25fd", - ":white_medium_small_square:": "\u25fd", - ":white_medium_square:": "\u25fb\ufe0f", - ":white_question_mark:": "\u2754", - ":white_small_square:": "\u25ab\ufe0f", - ":white_square_button:": "\U0001f533", - ":white_sun_cloud:": "\U0001f325", - ":white_sun_rain_cloud:": "\U0001f326", - ":white_sun_small_cloud:": "\U0001f324", - ":wilted_flower:": "\U0001f940", - ":wilted_rose:": "\U0001f940", - ":wind_blowing_face:": "\U0001f32c\ufe0f", - ":wind_chime:": "\U0001f390", - ":wind_face:": "\U0001f32c", - ":window:": "\U0001fa9f", - ":wine_glass:": "\U0001f377", - ":wink:": "\U0001f609", - ":winking_face:": "\U0001f609", - ":winking_face_with_tongue:": "\U0001f61c", - ":wolf:": "\U0001f43a", - ":woman:": "\U0001f469", - ":woman-biking:": "\U0001f6b4\u200d\u2640\ufe0f", - ":woman-bouncing-ball:": "\u26f9\ufe0f\u200d\u2640\ufe0f", - ":woman-bowing:": "\U0001f647\u200d\u2640\ufe0f", - ":woman-boy:": "\U0001f469\u200d\U0001f466", - ":woman-boy-boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":woman-cartwheeling:": "\U0001f938\u200d\u2640\ufe0f", - ":woman-facepalming:": "\U0001f926\u200d\u2640\ufe0f", - ":woman-frowning:": "\U0001f64d\u200d\u2640\ufe0f", - ":woman-gesturing-no:": "\U0001f645\u200d\u2640\ufe0f", - ":woman-gesturing-ok:": "\U0001f646\u200d\u2640\ufe0f", - ":woman-getting-haircut:": "\U0001f487\u200d\u2640\ufe0f", - ":woman-getting-massage:": "\U0001f486\u200d\u2640\ufe0f", - ":woman-girl:": "\U0001f469\u200d\U0001f467", - ":woman-girl-boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":woman-girl-girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":woman-golfing:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", - ":woman-heart-man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", - ":woman-heart-woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", - ":woman-juggling:": "\U0001f939\u200d\u2640\ufe0f", - ":woman-kiss-man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", - ":woman-kiss-woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", - ":woman-lifting-weights:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", - ":woman-mountain-biking:": "\U0001f6b5\u200d\u2640\ufe0f", - ":woman-playing-handball:": "\U0001f93e\u200d\u2640\ufe0f", - ":woman-playing-water-polo:": "\U0001f93d\u200d\u2640\ufe0f", - ":woman-pouting:": "\U0001f64e\u200d\u2640\ufe0f", - ":woman-raising-hand:": "\U0001f64b\u200d\u2640\ufe0f", - ":woman-rowing-boat:": "\U0001f6a3\u200d\u2640\ufe0f", - ":woman-running:": "\U0001f3c3\u200d\u2640\ufe0f", - ":woman-shrugging:": "\U0001f937\u200d\u2640\ufe0f", - ":woman-surfing:": "\U0001f3c4\u200d\u2640\ufe0f", - ":woman-swimming:": "\U0001f3ca\u200d\u2640\ufe0f", - ":woman-tipping-hand:": "\U0001f481\u200d\u2640\ufe0f", - ":woman-walking:": "\U0001f6b6\u200d\u2640\ufe0f", - ":woman-wearing-turban:": "\U0001f473\u200d\u2640\ufe0f", - ":woman-with-bunny-ears-partying:": "\U0001f46f\u200d\u2640\ufe0f", - ":woman-woman-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", - ":woman-woman-boy-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", - ":woman-woman-girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", - ":woman-woman-girl-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", - ":woman-woman-girl-girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", - ":woman-wrestling:": "\U0001f93c\u200d\u2640\ufe0f", - ":woman_and_man_holding_hands:": "\U0001f46b", - ":woman_artist:": "\U0001f469\u200d\U0001f3a8", - ":woman_artist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3a8", - ":woman_artist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3a8", - ":woman_artist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3a8", - ":woman_artist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3a8", - ":woman_artist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3a8", - ":woman_astronaut:": "\U0001f469\u200d\U0001f680", - ":woman_astronaut_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f680", - ":woman_astronaut_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f680", - ":woman_astronaut_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f680", - ":woman_astronaut_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f680", - ":woman_astronaut_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f680", - ":woman_bald:": "\U0001f469\u200d\U0001f9b2", - ":woman_biking:": "\U0001f6b4\u200d\u2640\ufe0f", - ":woman_biking_tone1:": "\U0001f6b4\U0001f3fb\u200d\u2640\ufe0f", - ":woman_biking_tone2:": "\U0001f6b4\U0001f3fc\u200d\u2640\ufe0f", - ":woman_biking_tone3:": "\U0001f6b4\U0001f3fd\u200d\u2640\ufe0f", - ":woman_biking_tone4:": "\U0001f6b4\U0001f3fe\u200d\u2640\ufe0f", - ":woman_biking_tone5:": "\U0001f6b4\U0001f3ff\u200d\u2640\ufe0f", - ":woman_blond_hair:": "\U0001f471\u200d\u2640\ufe0f", - ":woman_bouncing_ball:": "\u26f9\ufe0f\u200d\u2640\ufe0f", - ":woman_bouncing_ball_tone1:": "\u26f9\U0001f3fb\u200d\u2640\ufe0f", - ":woman_bouncing_ball_tone2:": "\u26f9\U0001f3fc\u200d\u2640\ufe0f", - ":woman_bouncing_ball_tone3:": "\u26f9\U0001f3fd\u200d\u2640\ufe0f", - ":woman_bouncing_ball_tone4:": "\u26f9\U0001f3fe\u200d\u2640\ufe0f", - ":woman_bouncing_ball_tone5:": "\u26f9\U0001f3ff\u200d\u2640\ufe0f", - ":woman_bowing:": "\U0001f647\u200d\u2640\ufe0f", - ":woman_bowing_tone1:": "\U0001f647\U0001f3fb\u200d\u2640\ufe0f", - ":woman_bowing_tone2:": "\U0001f647\U0001f3fc\u200d\u2640\ufe0f", - ":woman_bowing_tone3:": "\U0001f647\U0001f3fd\u200d\u2640\ufe0f", - ":woman_bowing_tone4:": "\U0001f647\U0001f3fe\u200d\u2640\ufe0f", - ":woman_bowing_tone5:": "\U0001f647\U0001f3ff\u200d\u2640\ufe0f", - ":woman_cartwheeling:": "\U0001f938\u200d\u2640\ufe0f", - ":woman_cartwheeling_tone1:": "\U0001f938\U0001f3fb\u200d\u2640\ufe0f", - ":woman_cartwheeling_tone2:": "\U0001f938\U0001f3fc\u200d\u2640\ufe0f", - ":woman_cartwheeling_tone3:": "\U0001f938\U0001f3fd\u200d\u2640\ufe0f", - ":woman_cartwheeling_tone4:": "\U0001f938\U0001f3fe\u200d\u2640\ufe0f", - ":woman_cartwheeling_tone5:": "\U0001f938\U0001f3ff\u200d\u2640\ufe0f", - ":woman_climbing:": "\U0001f9d7\u200d\u2640\ufe0f", - ":woman_climbing_tone1:": "\U0001f9d7\U0001f3fb\u200d\u2640\ufe0f", - ":woman_climbing_tone2:": "\U0001f9d7\U0001f3fc\u200d\u2640\ufe0f", - ":woman_climbing_tone3:": "\U0001f9d7\U0001f3fd\u200d\u2640\ufe0f", - ":woman_climbing_tone4:": "\U0001f9d7\U0001f3fe\u200d\u2640\ufe0f", - ":woman_climbing_tone5:": "\U0001f9d7\U0001f3ff\u200d\u2640\ufe0f", - ":woman_construction_worker:": "\U0001f477\u200d\u2640\ufe0f", - ":woman_construction_worker_tone1:": "\U0001f477\U0001f3fb\u200d\u2640\ufe0f", - ":woman_construction_worker_tone2:": "\U0001f477\U0001f3fc\u200d\u2640\ufe0f", - ":woman_construction_worker_tone3:": "\U0001f477\U0001f3fd\u200d\u2640\ufe0f", - ":woman_construction_worker_tone4:": "\U0001f477\U0001f3fe\u200d\u2640\ufe0f", - ":woman_construction_worker_tone5:": "\U0001f477\U0001f3ff\u200d\u2640\ufe0f", - ":woman_cook:": "\U0001f469\u200d\U0001f373", - ":woman_cook_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f373", - ":woman_cook_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f373", - ":woman_cook_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f373", - ":woman_cook_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f373", - ":woman_cook_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f373", - ":woman_curly_hair:": "\U0001f469\u200d\U0001f9b1", - ":woman_dancing:": "\U0001f483", - ":woman_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", - ":woman_detective_tone1:": "\U0001f575\U0001f3fb\u200d\u2640\ufe0f", - ":woman_detective_tone2:": "\U0001f575\U0001f3fc\u200d\u2640\ufe0f", - ":woman_detective_tone3:": "\U0001f575\U0001f3fd\u200d\u2640\ufe0f", - ":woman_detective_tone4:": "\U0001f575\U0001f3fe\u200d\u2640\ufe0f", - ":woman_detective_tone5:": "\U0001f575\U0001f3ff\u200d\u2640\ufe0f", - ":woman_elf:": "\U0001f9dd\u200d\u2640\ufe0f", - ":woman_elf_tone1:": "\U0001f9dd\U0001f3fb\u200d\u2640\ufe0f", - ":woman_elf_tone2:": "\U0001f9dd\U0001f3fc\u200d\u2640\ufe0f", - ":woman_elf_tone3:": "\U0001f9dd\U0001f3fd\u200d\u2640\ufe0f", - ":woman_elf_tone4:": "\U0001f9dd\U0001f3fe\u200d\u2640\ufe0f", - ":woman_elf_tone5:": "\U0001f9dd\U0001f3ff\u200d\u2640\ufe0f", - ":woman_facepalming:": "\U0001f926\u200d\u2640\ufe0f", - ":woman_facepalming_tone1:": "\U0001f926\U0001f3fb\u200d\u2640\ufe0f", - ":woman_facepalming_tone2:": "\U0001f926\U0001f3fc\u200d\u2640\ufe0f", - ":woman_facepalming_tone3:": "\U0001f926\U0001f3fd\u200d\u2640\ufe0f", - ":woman_facepalming_tone4:": "\U0001f926\U0001f3fe\u200d\u2640\ufe0f", - ":woman_facepalming_tone5:": "\U0001f926\U0001f3ff\u200d\u2640\ufe0f", - ":woman_factory_worker:": "\U0001f469\u200d\U0001f3ed", - ":woman_factory_worker_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3ed", - ":woman_factory_worker_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3ed", - ":woman_factory_worker_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3ed", - ":woman_factory_worker_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3ed", - ":woman_factory_worker_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3ed", - ":woman_fairy:": "\U0001f9da\u200d\u2640\ufe0f", - ":woman_fairy_tone1:": "\U0001f9da\U0001f3fb\u200d\u2640\ufe0f", - ":woman_fairy_tone2:": "\U0001f9da\U0001f3fc\u200d\u2640\ufe0f", - ":woman_fairy_tone3:": "\U0001f9da\U0001f3fd\u200d\u2640\ufe0f", - ":woman_fairy_tone4:": "\U0001f9da\U0001f3fe\u200d\u2640\ufe0f", - ":woman_fairy_tone5:": "\U0001f9da\U0001f3ff\u200d\u2640\ufe0f", - ":woman_farmer:": "\U0001f469\u200d\U0001f33e", - ":woman_farmer_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f33e", - ":woman_farmer_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f33e", - ":woman_farmer_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f33e", - ":woman_farmer_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f33e", - ":woman_farmer_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f33e", - ":woman_feeding_baby:": "\U0001f469\u200d\U0001f37c", - ":woman_firefighter:": "\U0001f469\u200d\U0001f692", - ":woman_firefighter_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f692", - ":woman_firefighter_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f692", - ":woman_firefighter_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f692", - ":woman_firefighter_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f692", - ":woman_firefighter_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f692", - ":woman_frowning:": "\U0001f64d\u200d\u2640\ufe0f", - ":woman_frowning_tone1:": "\U0001f64d\U0001f3fb\u200d\u2640\ufe0f", - ":woman_frowning_tone2:": "\U0001f64d\U0001f3fc\u200d\u2640\ufe0f", - ":woman_frowning_tone3:": "\U0001f64d\U0001f3fd\u200d\u2640\ufe0f", - ":woman_frowning_tone4:": "\U0001f64d\U0001f3fe\u200d\u2640\ufe0f", - ":woman_frowning_tone5:": "\U0001f64d\U0001f3ff\u200d\u2640\ufe0f", - ":woman_genie:": "\U0001f9de\u200d\u2640\ufe0f", - ":woman_gesturing_NO:": "\U0001f645\u200d\u2640\ufe0f", - ":woman_gesturing_OK:": "\U0001f646\u200d\u2640\ufe0f", - ":woman_gesturing_no:": "\U0001f645\u200d\u2640\ufe0f", - ":woman_gesturing_no_tone1:": "\U0001f645\U0001f3fb\u200d\u2640\ufe0f", - ":woman_gesturing_no_tone2:": "\U0001f645\U0001f3fc\u200d\u2640\ufe0f", - ":woman_gesturing_no_tone3:": "\U0001f645\U0001f3fd\u200d\u2640\ufe0f", - ":woman_gesturing_no_tone4:": "\U0001f645\U0001f3fe\u200d\u2640\ufe0f", - ":woman_gesturing_no_tone5:": "\U0001f645\U0001f3ff\u200d\u2640\ufe0f", - ":woman_gesturing_ok:": "\U0001f646\u200d\u2640\ufe0f", - ":woman_gesturing_ok_tone1:": "\U0001f646\U0001f3fb\u200d\u2640\ufe0f", - ":woman_gesturing_ok_tone2:": "\U0001f646\U0001f3fc\u200d\u2640\ufe0f", - ":woman_gesturing_ok_tone3:": "\U0001f646\U0001f3fd\u200d\u2640\ufe0f", - ":woman_gesturing_ok_tone4:": "\U0001f646\U0001f3fe\u200d\u2640\ufe0f", - ":woman_gesturing_ok_tone5:": "\U0001f646\U0001f3ff\u200d\u2640\ufe0f", - ":woman_getting_face_massage:": "\U0001f486\u200d\u2640\ufe0f", - ":woman_getting_face_massage_tone1:": "\U0001f486\U0001f3fb\u200d\u2640\ufe0f", - ":woman_getting_face_massage_tone2:": "\U0001f486\U0001f3fc\u200d\u2640\ufe0f", - ":woman_getting_face_massage_tone3:": "\U0001f486\U0001f3fd\u200d\u2640\ufe0f", - ":woman_getting_face_massage_tone4:": "\U0001f486\U0001f3fe\u200d\u2640\ufe0f", - ":woman_getting_face_massage_tone5:": "\U0001f486\U0001f3ff\u200d\u2640\ufe0f", - ":woman_getting_haircut:": "\U0001f487\u200d\u2640\ufe0f", - ":woman_getting_haircut_tone1:": "\U0001f487\U0001f3fb\u200d\u2640\ufe0f", - ":woman_getting_haircut_tone2:": "\U0001f487\U0001f3fc\u200d\u2640\ufe0f", - ":woman_getting_haircut_tone3:": "\U0001f487\U0001f3fd\u200d\u2640\ufe0f", - ":woman_getting_haircut_tone4:": "\U0001f487\U0001f3fe\u200d\u2640\ufe0f", - ":woman_getting_haircut_tone5:": "\U0001f487\U0001f3ff\u200d\u2640\ufe0f", - ":woman_getting_massage:": "\U0001f486\u200d\u2640\ufe0f", - ":woman_golfing:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", - ":woman_golfing_tone1:": "\U0001f3cc\U0001f3fb\u200d\u2640\ufe0f", - ":woman_golfing_tone2:": "\U0001f3cc\U0001f3fc\u200d\u2640\ufe0f", - ":woman_golfing_tone3:": "\U0001f3cc\U0001f3fd\u200d\u2640\ufe0f", - ":woman_golfing_tone4:": "\U0001f3cc\U0001f3fe\u200d\u2640\ufe0f", - ":woman_golfing_tone5:": "\U0001f3cc\U0001f3ff\u200d\u2640\ufe0f", - ":woman_guard:": "\U0001f482\u200d\u2640\ufe0f", - ":woman_guard_tone1:": "\U0001f482\U0001f3fb\u200d\u2640\ufe0f", - ":woman_guard_tone2:": "\U0001f482\U0001f3fc\u200d\u2640\ufe0f", - ":woman_guard_tone3:": "\U0001f482\U0001f3fd\u200d\u2640\ufe0f", - ":woman_guard_tone4:": "\U0001f482\U0001f3fe\u200d\u2640\ufe0f", - ":woman_guard_tone5:": "\U0001f482\U0001f3ff\u200d\u2640\ufe0f", - ":woman_health_worker:": "\U0001f469\u200d\u2695\ufe0f", - ":woman_health_worker_tone1:": "\U0001f469\U0001f3fb\u200d\u2695\ufe0f", - ":woman_health_worker_tone2:": "\U0001f469\U0001f3fc\u200d\u2695\ufe0f", - ":woman_health_worker_tone3:": "\U0001f469\U0001f3fd\u200d\u2695\ufe0f", - ":woman_health_worker_tone4:": "\U0001f469\U0001f3fe\u200d\u2695\ufe0f", - ":woman_health_worker_tone5:": "\U0001f469\U0001f3ff\u200d\u2695\ufe0f", - ":woman_in_lotus_position:": "\U0001f9d8\u200d\u2640\ufe0f", - ":woman_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb\u200d\u2640\ufe0f", - ":woman_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc\u200d\u2640\ufe0f", - ":woman_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd\u200d\u2640\ufe0f", - ":woman_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe\u200d\u2640\ufe0f", - ":woman_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff\u200d\u2640\ufe0f", - ":woman_in_manual_wheelchair:": "\U0001f469\u200d\U0001f9bd", - ":woman_in_motorized_wheelchair:": "\U0001f469\u200d\U0001f9bc", - ":woman_in_steamy_room:": "\U0001f9d6\u200d\u2640\ufe0f", - ":woman_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb\u200d\u2640\ufe0f", - ":woman_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc\u200d\u2640\ufe0f", - ":woman_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd\u200d\u2640\ufe0f", - ":woman_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe\u200d\u2640\ufe0f", - ":woman_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff\u200d\u2640\ufe0f", - ":woman_in_tuxedo:": "\U0001f935\u200d\u2640\ufe0f", - ":woman_judge:": "\U0001f469\u200d\u2696\ufe0f", - ":woman_judge_tone1:": "\U0001f469\U0001f3fb\u200d\u2696\ufe0f", - ":woman_judge_tone2:": "\U0001f469\U0001f3fc\u200d\u2696\ufe0f", - ":woman_judge_tone3:": "\U0001f469\U0001f3fd\u200d\u2696\ufe0f", - ":woman_judge_tone4:": "\U0001f469\U0001f3fe\u200d\u2696\ufe0f", - ":woman_judge_tone5:": "\U0001f469\U0001f3ff\u200d\u2696\ufe0f", - ":woman_juggling:": "\U0001f939\u200d\u2640\ufe0f", - ":woman_juggling_tone1:": "\U0001f939\U0001f3fb\u200d\u2640\ufe0f", - ":woman_juggling_tone2:": "\U0001f939\U0001f3fc\u200d\u2640\ufe0f", - ":woman_juggling_tone3:": "\U0001f939\U0001f3fd\u200d\u2640\ufe0f", - ":woman_juggling_tone4:": "\U0001f939\U0001f3fe\u200d\u2640\ufe0f", - ":woman_juggling_tone5:": "\U0001f939\U0001f3ff\u200d\u2640\ufe0f", - ":woman_kneeling:": "\U0001f9ce\u200d\u2640\ufe0f", - ":woman_lifting_weights:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", - ":woman_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb\u200d\u2640\ufe0f", - ":woman_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc\u200d\u2640\ufe0f", - ":woman_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd\u200d\u2640\ufe0f", - ":woman_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe\u200d\u2640\ufe0f", - ":woman_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff\u200d\u2640\ufe0f", - ":woman_mage:": "\U0001f9d9\u200d\u2640\ufe0f", - ":woman_mage_tone1:": "\U0001f9d9\U0001f3fb\u200d\u2640\ufe0f", - ":woman_mage_tone2:": "\U0001f9d9\U0001f3fc\u200d\u2640\ufe0f", - ":woman_mage_tone3:": "\U0001f9d9\U0001f3fd\u200d\u2640\ufe0f", - ":woman_mage_tone4:": "\U0001f9d9\U0001f3fe\u200d\u2640\ufe0f", - ":woman_mage_tone5:": "\U0001f9d9\U0001f3ff\u200d\u2640\ufe0f", - ":woman_mechanic:": "\U0001f469\u200d\U0001f527", - ":woman_mechanic_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f527", - ":woman_mechanic_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f527", - ":woman_mechanic_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f527", - ":woman_mechanic_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f527", - ":woman_mechanic_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f527", - ":woman_mountain_biking:": "\U0001f6b5\u200d\u2640\ufe0f", - ":woman_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb\u200d\u2640\ufe0f", - ":woman_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc\u200d\u2640\ufe0f", - ":woman_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd\u200d\u2640\ufe0f", - ":woman_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe\u200d\u2640\ufe0f", - ":woman_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff\u200d\u2640\ufe0f", - ":woman_office_worker:": "\U0001f469\u200d\U0001f4bc", - ":woman_office_worker_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f4bc", - ":woman_office_worker_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f4bc", - ":woman_office_worker_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f4bc", - ":woman_office_worker_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f4bc", - ":woman_office_worker_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f4bc", - ":woman_pilot:": "\U0001f469\u200d\u2708\ufe0f", - ":woman_pilot_tone1:": "\U0001f469\U0001f3fb\u200d\u2708\ufe0f", - ":woman_pilot_tone2:": "\U0001f469\U0001f3fc\u200d\u2708\ufe0f", - ":woman_pilot_tone3:": "\U0001f469\U0001f3fd\u200d\u2708\ufe0f", - ":woman_pilot_tone4:": "\U0001f469\U0001f3fe\u200d\u2708\ufe0f", - ":woman_pilot_tone5:": "\U0001f469\U0001f3ff\u200d\u2708\ufe0f", - ":woman_playing_handball:": "\U0001f93e\u200d\u2640\ufe0f", - ":woman_playing_handball_tone1:": "\U0001f93e\U0001f3fb\u200d\u2640\ufe0f", - ":woman_playing_handball_tone2:": "\U0001f93e\U0001f3fc\u200d\u2640\ufe0f", - ":woman_playing_handball_tone3:": "\U0001f93e\U0001f3fd\u200d\u2640\ufe0f", - ":woman_playing_handball_tone4:": "\U0001f93e\U0001f3fe\u200d\u2640\ufe0f", - ":woman_playing_handball_tone5:": "\U0001f93e\U0001f3ff\u200d\u2640\ufe0f", - ":woman_playing_water_polo:": "\U0001f93d\u200d\u2640\ufe0f", - ":woman_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb\u200d\u2640\ufe0f", - ":woman_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc\u200d\u2640\ufe0f", - ":woman_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd\u200d\u2640\ufe0f", - ":woman_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe\u200d\u2640\ufe0f", - ":woman_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff\u200d\u2640\ufe0f", - ":woman_police_officer:": "\U0001f46e\u200d\u2640\ufe0f", - ":woman_police_officer_tone1:": "\U0001f46e\U0001f3fb\u200d\u2640\ufe0f", - ":woman_police_officer_tone2:": "\U0001f46e\U0001f3fc\u200d\u2640\ufe0f", - ":woman_police_officer_tone3:": "\U0001f46e\U0001f3fd\u200d\u2640\ufe0f", - ":woman_police_officer_tone4:": "\U0001f46e\U0001f3fe\u200d\u2640\ufe0f", - ":woman_police_officer_tone5:": "\U0001f46e\U0001f3ff\u200d\u2640\ufe0f", - ":woman_pouting:": "\U0001f64e\u200d\u2640\ufe0f", - ":woman_pouting_tone1:": "\U0001f64e\U0001f3fb\u200d\u2640\ufe0f", - ":woman_pouting_tone2:": "\U0001f64e\U0001f3fc\u200d\u2640\ufe0f", - ":woman_pouting_tone3:": "\U0001f64e\U0001f3fd\u200d\u2640\ufe0f", - ":woman_pouting_tone4:": "\U0001f64e\U0001f3fe\u200d\u2640\ufe0f", - ":woman_pouting_tone5:": "\U0001f64e\U0001f3ff\u200d\u2640\ufe0f", - ":woman_raising_hand:": "\U0001f64b\u200d\u2640\ufe0f", - ":woman_raising_hand_tone1:": "\U0001f64b\U0001f3fb\u200d\u2640\ufe0f", - ":woman_raising_hand_tone2:": "\U0001f64b\U0001f3fc\u200d\u2640\ufe0f", - ":woman_raising_hand_tone3:": "\U0001f64b\U0001f3fd\u200d\u2640\ufe0f", - ":woman_raising_hand_tone4:": "\U0001f64b\U0001f3fe\u200d\u2640\ufe0f", - ":woman_raising_hand_tone5:": "\U0001f64b\U0001f3ff\u200d\u2640\ufe0f", - ":woman_red_hair:": "\U0001f469\u200d\U0001f9b0", - ":woman_rowing_boat:": "\U0001f6a3\u200d\u2640\ufe0f", - ":woman_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb\u200d\u2640\ufe0f", - ":woman_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc\u200d\u2640\ufe0f", - ":woman_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd\u200d\u2640\ufe0f", - ":woman_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe\u200d\u2640\ufe0f", - ":woman_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff\u200d\u2640\ufe0f", - ":woman_running:": "\U0001f3c3\u200d\u2640\ufe0f", - ":woman_running_tone1:": "\U0001f3c3\U0001f3fb\u200d\u2640\ufe0f", - ":woman_running_tone2:": "\U0001f3c3\U0001f3fc\u200d\u2640\ufe0f", - ":woman_running_tone3:": "\U0001f3c3\U0001f3fd\u200d\u2640\ufe0f", - ":woman_running_tone4:": "\U0001f3c3\U0001f3fe\u200d\u2640\ufe0f", - ":woman_running_tone5:": "\U0001f3c3\U0001f3ff\u200d\u2640\ufe0f", - ":woman_scientist:": "\U0001f469\u200d\U0001f52c", - ":woman_scientist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f52c", - ":woman_scientist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f52c", - ":woman_scientist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f52c", - ":woman_scientist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f52c", - ":woman_scientist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f52c", - ":woman_shrugging:": "\U0001f937\u200d\u2640\ufe0f", - ":woman_shrugging_tone1:": "\U0001f937\U0001f3fb\u200d\u2640\ufe0f", - ":woman_shrugging_tone2:": "\U0001f937\U0001f3fc\u200d\u2640\ufe0f", - ":woman_shrugging_tone3:": "\U0001f937\U0001f3fd\u200d\u2640\ufe0f", - ":woman_shrugging_tone4:": "\U0001f937\U0001f3fe\u200d\u2640\ufe0f", - ":woman_shrugging_tone5:": "\U0001f937\U0001f3ff\u200d\u2640\ufe0f", - ":woman_singer:": "\U0001f469\u200d\U0001f3a4", - ":woman_singer_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3a4", - ":woman_singer_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3a4", - ":woman_singer_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3a4", - ":woman_singer_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3a4", - ":woman_singer_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3a4", - ":woman_standing:": "\U0001f9cd\u200d\u2640\ufe0f", - ":woman_student:": "\U0001f469\u200d\U0001f393", - ":woman_student_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f393", - ":woman_student_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f393", - ":woman_student_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f393", - ":woman_student_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f393", - ":woman_student_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f393", - ":woman_superhero:": "\U0001f9b8\u200d\u2640\ufe0f", - ":woman_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f", - ":woman_surfing:": "\U0001f3c4\u200d\u2640\ufe0f", - ":woman_surfing_tone1:": "\U0001f3c4\U0001f3fb\u200d\u2640\ufe0f", - ":woman_surfing_tone2:": "\U0001f3c4\U0001f3fc\u200d\u2640\ufe0f", - ":woman_surfing_tone3:": "\U0001f3c4\U0001f3fd\u200d\u2640\ufe0f", - ":woman_surfing_tone4:": "\U0001f3c4\U0001f3fe\u200d\u2640\ufe0f", - ":woman_surfing_tone5:": "\U0001f3c4\U0001f3ff\u200d\u2640\ufe0f", - ":woman_swimming:": "\U0001f3ca\u200d\u2640\ufe0f", - ":woman_swimming_tone1:": "\U0001f3ca\U0001f3fb\u200d\u2640\ufe0f", - ":woman_swimming_tone2:": "\U0001f3ca\U0001f3fc\u200d\u2640\ufe0f", - ":woman_swimming_tone3:": "\U0001f3ca\U0001f3fd\u200d\u2640\ufe0f", - ":woman_swimming_tone4:": "\U0001f3ca\U0001f3fe\u200d\u2640\ufe0f", - ":woman_swimming_tone5:": "\U0001f3ca\U0001f3ff\u200d\u2640\ufe0f", - ":woman_teacher:": "\U0001f469\u200d\U0001f3eb", - ":woman_teacher_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3eb", - ":woman_teacher_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3eb", - ":woman_teacher_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3eb", - ":woman_teacher_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3eb", - ":woman_teacher_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3eb", - ":woman_technologist:": "\U0001f469\u200d\U0001f4bb", - ":woman_technologist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f4bb", - ":woman_technologist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f4bb", - ":woman_technologist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f4bb", - ":woman_technologist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f4bb", - ":woman_technologist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f4bb", - ":woman_tipping_hand:": "\U0001f481\u200d\u2640\ufe0f", - ":woman_tipping_hand_tone1:": "\U0001f481\U0001f3fb\u200d\u2640\ufe0f", - ":woman_tipping_hand_tone2:": "\U0001f481\U0001f3fc\u200d\u2640\ufe0f", - ":woman_tipping_hand_tone3:": "\U0001f481\U0001f3fd\u200d\u2640\ufe0f", - ":woman_tipping_hand_tone4:": "\U0001f481\U0001f3fe\u200d\u2640\ufe0f", - ":woman_tipping_hand_tone5:": "\U0001f481\U0001f3ff\u200d\u2640\ufe0f", - ":woman_tone1:": "\U0001f469\U0001f3fb", - ":woman_tone2:": "\U0001f469\U0001f3fc", - ":woman_tone3:": "\U0001f469\U0001f3fd", - ":woman_tone4:": "\U0001f469\U0001f3fe", - ":woman_tone5:": "\U0001f469\U0001f3ff", - ":woman_vampire:": "\U0001f9db\u200d\u2640\ufe0f", - ":woman_vampire_tone1:": "\U0001f9db\U0001f3fb\u200d\u2640\ufe0f", - ":woman_vampire_tone2:": "\U0001f9db\U0001f3fc\u200d\u2640\ufe0f", - ":woman_vampire_tone3:": "\U0001f9db\U0001f3fd\u200d\u2640\ufe0f", - ":woman_vampire_tone4:": "\U0001f9db\U0001f3fe\u200d\u2640\ufe0f", - ":woman_vampire_tone5:": "\U0001f9db\U0001f3ff\u200d\u2640\ufe0f", - ":woman_walking:": "\U0001f6b6\u200d\u2640\ufe0f", - ":woman_walking_tone1:": "\U0001f6b6\U0001f3fb\u200d\u2640\ufe0f", - ":woman_walking_tone2:": "\U0001f6b6\U0001f3fc\u200d\u2640\ufe0f", - ":woman_walking_tone3:": "\U0001f6b6\U0001f3fd\u200d\u2640\ufe0f", - ":woman_walking_tone4:": "\U0001f6b6\U0001f3fe\u200d\u2640\ufe0f", - ":woman_walking_tone5:": "\U0001f6b6\U0001f3ff\u200d\u2640\ufe0f", - ":woman_wearing_turban:": "\U0001f473\u200d\u2640\ufe0f", - ":woman_wearing_turban_tone1:": "\U0001f473\U0001f3fb\u200d\u2640\ufe0f", - ":woman_wearing_turban_tone2:": "\U0001f473\U0001f3fc\u200d\u2640\ufe0f", - ":woman_wearing_turban_tone3:": "\U0001f473\U0001f3fd\u200d\u2640\ufe0f", - ":woman_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2640\ufe0f", - ":woman_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2640\ufe0f", - ":woman_white_hair:": "\U0001f469\u200d\U0001f9b3", - ":woman_with_headscarf:": "\U0001f9d5", - ":woman_with_headscarf_tone1:": "\U0001f9d5\U0001f3fb", - ":woman_with_headscarf_tone2:": "\U0001f9d5\U0001f3fc", - ":woman_with_headscarf_tone3:": "\U0001f9d5\U0001f3fd", - ":woman_with_headscarf_tone4:": "\U0001f9d5\U0001f3fe", - ":woman_with_headscarf_tone5:": "\U0001f9d5\U0001f3ff", - ":woman_with_probing_cane:": "\U0001f469\u200d\U0001f9af", - ":woman_with_turban:": "\U0001f473\u200d\u2640\ufe0f", - ":woman_with_veil:": "\U0001f470\u200d\u2640\ufe0f", - ":woman_with_white_cane:": "\U0001f469\u200d\U0001f9af", - ":woman_zombie:": "\U0001f9df\u200d\u2640\ufe0f", - ":womans_clothes:": "\U0001f45a", - ":womans_flat_shoe:": "\U0001f97f", - ":womans_hat:": "\U0001f452", - ":woman’s_boot:": "\U0001f462", - ":woman’s_clothes:": "\U0001f45a", - ":woman’s_hat:": "\U0001f452", - ":woman’s_sandal:": "\U0001f461", - ":women_holding_hands:": "\U0001f46d", - ":women_with_bunny_ears:": "\U0001f46f\u200d\u2640\ufe0f", - ":women_with_bunny_ears_partying:": "\U0001f46f\u200d\u2640\ufe0f", - ":women_wrestling:": "\U0001f93c\u200d\u2640\ufe0f", - ":womens:": "\U0001f6ba", - ":women’s_room:": "\U0001f6ba", - ":wood:": "\U0001fab5", - ":woozy_face:": "\U0001f974", - ":world_map:": "\U0001f5fa\ufe0f", - ":worm:": "\U0001fab1", - ":worried:": "\U0001f61f", - ":worried_face:": "\U0001f61f", - ":wrapped_gift:": "\U0001f381", - ":wrench:": "\U0001f527", - ":wrestlers:": "\U0001f93c", - ":wrestling:": "\U0001f93c", - ":writing_hand:": "\u270d\ufe0f", - ":writing_hand_tone1:": "\u270d\U0001f3fb", - ":writing_hand_tone2:": "\u270d\U0001f3fc", - ":writing_hand_tone3:": "\u270d\U0001f3fd", - ":writing_hand_tone4:": "\u270d\U0001f3fe", - ":writing_hand_tone5:": "\u270d\U0001f3ff", - ":x:": "\u274c", - ":yarn:": "\U0001f9f6", - ":yawning_face:": "\U0001f971", - ":yellow_circle:": "\U0001f7e1", - ":yellow_heart:": "\U0001f49b", - ":yellow_square:": "\U0001f7e8", - ":yemen:": "\U0001f1fe\U0001f1ea", - ":yen:": "\U0001f4b4", - ":yen_banknote:": "\U0001f4b4", - ":yin_yang:": "\u262f\ufe0f", - ":yo-yo:": "\U0001fa80", - ":yo_yo:": "\U0001fa80", - ":yum:": "\U0001f60b", - ":zambia:": "\U0001f1ff\U0001f1f2", - ":zany_face:": "\U0001f92a", - ":zap:": "\u26a1", - ":zebra:": "\U0001f993", - ":zebra_face:": "\U0001f993", - ":zero:": "0\ufe0f\u20e3", - ":zimbabwe:": "\U0001f1ff\U0001f1fc", - ":zipper-mouth_face:": "\U0001f910", - ":zipper_mouth:": "\U0001f910", - ":zipper_mouth_face:": "\U0001f910", - ":zombie:": "\U0001f9df\u200d\u2642\ufe0f", - ":zombie_man:": "\U0001f9df\u200d\u2642\ufe0f", - ":zombie_woman:": "\U0001f9df\u200d\u2640\ufe0f", - ":zzz:": "\U0001f4a4", -} - -var emojiRevCodeMap = map[string][]string{ - "#\ufe0f\u20e3": {":hash:", ":keycap_#:"}, - "*\ufe0f\u20e3": {":asterisk:", ":keycap_*:", ":keycap_star:"}, - "0\ufe0f\u20e3": {":zero:", ":keycap_0:"}, - "1\ufe0f\u20e3": {":one:", ":keycap_1:"}, - "2\ufe0f\u20e3": {":two:", ":keycap_2:"}, - "3\ufe0f\u20e3": {":three:", ":keycap_3:"}, - "4\ufe0f\u20e3": {":four:", ":keycap_4:"}, - "5\ufe0f\u20e3": {":five:", ":keycap_5:"}, - "6\ufe0f\u20e3": {":six:", ":keycap_6:"}, - "7\ufe0f\u20e3": {":seven:", ":keycap_7:"}, - "8\ufe0f\u20e3": {":eight:", ":keycap_8:"}, - "9\ufe0f\u20e3": {":nine:", ":keycap_9:"}, - "\U0001f004": {":mahjong:", ":mahjong_red_dragon:"}, - "\U0001f0cf": {":joker:", ":black_joker:"}, - "\U0001f170": {":A_button_(blood_type):"}, - "\U0001f170\ufe0f": {":a:"}, - "\U0001f171": {":B_button_(blood_type):"}, - "\U0001f171\ufe0f": {":b:"}, - "\U0001f17e": {":O_button_(blood_type):"}, - "\U0001f17e\ufe0f": {":o2:"}, - "\U0001f17f": {":P_button:"}, - "\U0001f17f\ufe0f": {":parking:"}, - "\U0001f18e": {":ab:", ":AB_button_(blood_type):"}, - "\U0001f191": {":cl:", ":CL_button:"}, - "\U0001f192": {":cool:", ":COOL_button:"}, - "\U0001f193": {":free:", ":FREE_button:"}, - "\U0001f194": {":id:", ":ID_button:"}, - "\U0001f195": {":new:", ":NEW_button:"}, - "\U0001f196": {":ng:", ":NG_button:"}, - "\U0001f197": {":ok:", ":OK_button:"}, - "\U0001f198": {":sos:", ":SOS_button:"}, - "\U0001f199": {":up:", ":UP!_button:"}, - "\U0001f19a": {":vs:", ":VS_button:"}, - "\U0001f1e6\U0001f1e8": {":flag-ac:", ":flag_ac:", ":ascension_island:", ":flag_Ascension_Island:"}, - "\U0001f1e6\U0001f1e9": {":andorra:", ":flag-ad:", ":flag_ad:", ":flag_Andorra:"}, - "\U0001f1e6\U0001f1ea": {":flag-ae:", ":flag_ae:", ":united_arab_emirates:", ":flag_United_Arab_Emirates:"}, - "\U0001f1e6\U0001f1eb": {":flag-af:", ":flag_af:", ":afghanistan:", ":flag_Afghanistan:"}, - "\U0001f1e6\U0001f1ec": {":flag-ag:", ":flag_ag:", ":antigua_barbuda:", ":flag_Antigua_&_Barbuda:"}, - "\U0001f1e6\U0001f1ee": {":flag-ai:", ":flag_ai:", ":anguilla:", ":flag_Anguilla:"}, - "\U0001f1e6\U0001f1f1": {":albania:", ":flag-al:", ":flag_al:", ":flag_Albania:"}, - "\U0001f1e6\U0001f1f2": {":armenia:", ":flag-am:", ":flag_am:", ":flag_Armenia:"}, - "\U0001f1e6\U0001f1f4": {":angola:", ":flag-ao:", ":flag_ao:", ":flag_Angola:"}, - "\U0001f1e6\U0001f1f6": {":flag-aq:", ":flag_aq:", ":antarctica:", ":flag_Antarctica:"}, - "\U0001f1e6\U0001f1f7": {":flag-ar:", ":flag_ar:", ":argentina:", ":flag_Argentina:"}, - "\U0001f1e6\U0001f1f8": {":flag-as:", ":flag_as:", ":american_samoa:", ":flag_American_Samoa:"}, - "\U0001f1e6\U0001f1f9": {":austria:", ":flag-at:", ":flag_at:", ":flag_Austria:"}, - "\U0001f1e6\U0001f1fa": {":flag-au:", ":flag_au:", ":australia:", ":flag_Australia:"}, - "\U0001f1e6\U0001f1fc": {":aruba:", ":flag-aw:", ":flag_aw:", ":flag_Aruba:"}, - "\U0001f1e6\U0001f1fd": {":flag-ax:", ":flag_ax:", ":aland_islands:", ":flag_Åland_Islands:"}, - "\U0001f1e6\U0001f1ff": {":flag-az:", ":flag_az:", ":azerbaijan:", ":flag_Azerbaijan:"}, - "\U0001f1e7\U0001f1e6": {":flag-ba:", ":flag_ba:", ":bosnia_herzegovina:", ":flag_Bosnia_&_Herzegovina:"}, - "\U0001f1e7\U0001f1e7": {":flag-bb:", ":flag_bb:", ":barbados:", ":flag_Barbados:"}, - "\U0001f1e7\U0001f1e9": {":flag-bd:", ":flag_bd:", ":bangladesh:", ":flag_Bangladesh:"}, - "\U0001f1e7\U0001f1ea": {":belgium:", ":flag-be:", ":flag_be:", ":flag_Belgium:"}, - "\U0001f1e7\U0001f1eb": {":flag-bf:", ":flag_bf:", ":burkina_faso:", ":flag_Burkina_Faso:"}, - "\U0001f1e7\U0001f1ec": {":flag-bg:", ":flag_bg:", ":bulgaria:", ":flag_Bulgaria:"}, - "\U0001f1e7\U0001f1ed": {":bahrain:", ":flag-bh:", ":flag_bh:", ":flag_Bahrain:"}, - "\U0001f1e7\U0001f1ee": {":burundi:", ":flag-bi:", ":flag_bi:", ":flag_Burundi:"}, - "\U0001f1e7\U0001f1ef": {":benin:", ":flag-bj:", ":flag_bj:", ":flag_Benin:"}, - "\U0001f1e7\U0001f1f1": {":flag-bl:", ":flag_bl:", ":st_barthelemy:", ":flag_St._Barthélemy:"}, - "\U0001f1e7\U0001f1f2": {":bermuda:", ":flag-bm:", ":flag_bm:", ":flag_Bermuda:"}, - "\U0001f1e7\U0001f1f3": {":brunei:", ":flag-bn:", ":flag_bn:", ":flag_Brunei:"}, - "\U0001f1e7\U0001f1f4": {":bolivia:", ":flag-bo:", ":flag_bo:", ":flag_Bolivia:"}, - "\U0001f1e7\U0001f1f6": {":flag-bq:", ":flag_bq:", ":caribbean_netherlands:", ":flag_Caribbean_Netherlands:"}, - "\U0001f1e7\U0001f1f7": {":brazil:", ":flag-br:", ":flag_br:", ":flag_Brazil:"}, - "\U0001f1e7\U0001f1f8": {":bahamas:", ":flag-bs:", ":flag_bs:", ":flag_Bahamas:"}, - "\U0001f1e7\U0001f1f9": {":bhutan:", ":flag-bt:", ":flag_bt:", ":flag_Bhutan:"}, - "\U0001f1e7\U0001f1fb": {":flag-bv:", ":flag_bv:", ":bouvet_island:", ":flag_Bouvet_Island:"}, - "\U0001f1e7\U0001f1fc": {":flag-bw:", ":flag_bw:", ":botswana:", ":flag_Botswana:"}, - "\U0001f1e7\U0001f1fe": {":belarus:", ":flag-by:", ":flag_by:", ":flag_Belarus:"}, - "\U0001f1e7\U0001f1ff": {":belize:", ":flag-bz:", ":flag_bz:", ":flag_Belize:"}, - "\U0001f1e8\U0001f1e6": {":canada:", ":flag-ca:", ":flag_ca:", ":flag_Canada:"}, - "\U0001f1e8\U0001f1e8": {":flag-cc:", ":flag_cc:", ":cocos_islands:", ":flag_Cocos_(Keeling)_Islands:"}, - "\U0001f1e8\U0001f1e9": {":flag-cd:", ":flag_cd:", ":congo_kinshasa:", ":flag_Congo_-_Kinshasa:"}, - "\U0001f1e8\U0001f1eb": {":flag-cf:", ":flag_cf:", ":central_african_republic:", ":flag_Central_African_Republic:"}, - "\U0001f1e8\U0001f1ec": {":flag-cg:", ":flag_cg:", ":congo_brazzaville:", ":flag_Congo_-_Brazzaville:"}, - "\U0001f1e8\U0001f1ed": {":flag-ch:", ":flag_ch:", ":switzerland:", ":flag_Switzerland:"}, - "\U0001f1e8\U0001f1ee": {":flag-ci:", ":flag_ci:", ":cote_divoire:", ":flag_Côte_d’Ivoire:"}, - "\U0001f1e8\U0001f1f0": {":flag-ck:", ":flag_ck:", ":cook_islands:", ":flag_Cook_Islands:"}, - "\U0001f1e8\U0001f1f1": {":chile:", ":flag-cl:", ":flag_cl:", ":flag_Chile:"}, - "\U0001f1e8\U0001f1f2": {":flag-cm:", ":flag_cm:", ":cameroon:", ":flag_Cameroon:"}, - "\U0001f1e8\U0001f1f3": {":cn:", ":flag_cn:", ":flag_China:"}, - "\U0001f1e8\U0001f1f4": {":flag-co:", ":flag_co:", ":colombia:", ":flag_Colombia:"}, - "\U0001f1e8\U0001f1f5": {":flag-cp:", ":flag_cp:", ":clipperton_island:", ":flag_Clipperton_Island:"}, - "\U0001f1e8\U0001f1f7": {":flag-cr:", ":flag_cr:", ":costa_rica:", ":flag_Costa_Rica:"}, - "\U0001f1e8\U0001f1fa": {":cuba:", ":flag-cu:", ":flag_cu:", ":flag_Cuba:"}, - "\U0001f1e8\U0001f1fb": {":flag-cv:", ":flag_cv:", ":cape_verde:", ":flag_Cape_Verde:"}, - "\U0001f1e8\U0001f1fc": {":curacao:", ":flag-cw:", ":flag_cw:", ":flag_Curaçao:"}, - "\U0001f1e8\U0001f1fd": {":flag-cx:", ":flag_cx:", ":christmas_island:", ":flag_Christmas_Island:"}, - "\U0001f1e8\U0001f1fe": {":cyprus:", ":flag-cy:", ":flag_cy:", ":flag_Cyprus:"}, - "\U0001f1e8\U0001f1ff": {":flag-cz:", ":flag_cz:", ":flag_Czechia:", ":czech_republic:"}, - "\U0001f1e9\U0001f1ea": {":de:", ":flag_de:", ":flag_Germany:"}, - "\U0001f1e9\U0001f1ec": {":flag-dg:", ":flag_dg:", ":diego_garcia:", ":flag_Diego_Garcia:"}, - "\U0001f1e9\U0001f1ef": {":flag-dj:", ":flag_dj:", ":djibouti:", ":flag_Djibouti:"}, - "\U0001f1e9\U0001f1f0": {":denmark:", ":flag-dk:", ":flag_dk:", ":flag_Denmark:"}, - "\U0001f1e9\U0001f1f2": {":flag-dm:", ":flag_dm:", ":dominica:", ":flag_Dominica:"}, - "\U0001f1e9\U0001f1f4": {":flag-do:", ":flag_do:", ":dominican_republic:", ":flag_Dominican_Republic:"}, - "\U0001f1e9\U0001f1ff": {":algeria:", ":flag-dz:", ":flag_dz:", ":flag_Algeria:"}, - "\U0001f1ea\U0001f1e6": {":flag-ea:", ":flag_ea:", ":ceuta_melilla:", ":flag_Ceuta_&_Melilla:"}, - "\U0001f1ea\U0001f1e8": {":ecuador:", ":flag-ec:", ":flag_ec:", ":flag_Ecuador:"}, - "\U0001f1ea\U0001f1ea": {":estonia:", ":flag-ee:", ":flag_ee:", ":flag_Estonia:"}, - "\U0001f1ea\U0001f1ec": {":egypt:", ":flag-eg:", ":flag_eg:", ":flag_Egypt:"}, - "\U0001f1ea\U0001f1ed": {":flag-eh:", ":flag_eh:", ":western_sahara:", ":flag_Western_Sahara:"}, - "\U0001f1ea\U0001f1f7": {":eritrea:", ":flag-er:", ":flag_er:", ":flag_Eritrea:"}, - "\U0001f1ea\U0001f1f8": {":es:", ":flag_es:", ":flag_Spain:"}, - "\U0001f1ea\U0001f1f9": {":flag-et:", ":flag_et:", ":ethiopia:", ":flag_Ethiopia:"}, - "\U0001f1ea\U0001f1fa": {":eu:", ":flag-eu:", ":flag_eu:", ":european_union:", ":flag_European_Union:"}, - "\U0001f1eb\U0001f1ee": {":finland:", ":flag-fi:", ":flag_fi:", ":flag_Finland:"}, - "\U0001f1eb\U0001f1ef": {":fiji:", ":flag-fj:", ":flag_fj:", ":flag_Fiji:"}, - "\U0001f1eb\U0001f1f0": {":flag-fk:", ":flag_fk:", ":falkland_islands:", ":flag_Falkland_Islands:"}, - "\U0001f1eb\U0001f1f2": {":flag-fm:", ":flag_fm:", ":micronesia:", ":flag_Micronesia:"}, - "\U0001f1eb\U0001f1f4": {":flag-fo:", ":flag_fo:", ":faroe_islands:", ":flag_Faroe_Islands:"}, - "\U0001f1eb\U0001f1f7": {":fr:", ":flag_fr:", ":flag_France:"}, - "\U0001f1ec\U0001f1e6": {":gabon:", ":flag-ga:", ":flag_ga:", ":flag_Gabon:"}, - "\U0001f1ec\U0001f1e7": {":gb:", ":uk:", ":flag_gb:", ":flag_United_Kingdom:"}, - "\U0001f1ec\U0001f1e9": {":flag-gd:", ":flag_gd:", ":grenada:", ":flag_Grenada:"}, - "\U0001f1ec\U0001f1ea": {":flag-ge:", ":flag_ge:", ":georgia:", ":flag_Georgia:"}, - "\U0001f1ec\U0001f1eb": {":flag-gf:", ":flag_gf:", ":french_guiana:", ":flag_French_Guiana:"}, - "\U0001f1ec\U0001f1ec": {":flag-gg:", ":flag_gg:", ":guernsey:", ":flag_Guernsey:"}, - "\U0001f1ec\U0001f1ed": {":ghana:", ":flag-gh:", ":flag_gh:", ":flag_Ghana:"}, - "\U0001f1ec\U0001f1ee": {":flag-gi:", ":flag_gi:", ":gibraltar:", ":flag_Gibraltar:"}, - "\U0001f1ec\U0001f1f1": {":flag-gl:", ":flag_gl:", ":greenland:", ":flag_Greenland:"}, - "\U0001f1ec\U0001f1f2": {":gambia:", ":flag-gm:", ":flag_gm:", ":flag_Gambia:"}, - "\U0001f1ec\U0001f1f3": {":guinea:", ":flag-gn:", ":flag_gn:", ":flag_Guinea:"}, - "\U0001f1ec\U0001f1f5": {":flag-gp:", ":flag_gp:", ":guadeloupe:", ":flag_Guadeloupe:"}, - "\U0001f1ec\U0001f1f6": {":flag-gq:", ":flag_gq:", ":equatorial_guinea:", ":flag_Equatorial_Guinea:"}, - "\U0001f1ec\U0001f1f7": {":greece:", ":flag-gr:", ":flag_gr:", ":flag_Greece:"}, - "\U0001f1ec\U0001f1f8": {":flag-gs:", ":flag_gs:", ":south_georgia_south_sandwich_islands:", ":flag_South_Georgia_&_South_Sandwich_Islands:"}, - "\U0001f1ec\U0001f1f9": {":flag-gt:", ":flag_gt:", ":guatemala:", ":flag_Guatemala:"}, - "\U0001f1ec\U0001f1fa": {":guam:", ":flag-gu:", ":flag_gu:", ":flag_Guam:"}, - "\U0001f1ec\U0001f1fc": {":flag-gw:", ":flag_gw:", ":guinea_bissau:", ":flag_Guinea-Bissau:"}, - "\U0001f1ec\U0001f1fe": {":guyana:", ":flag-gy:", ":flag_gy:", ":flag_Guyana:"}, - "\U0001f1ed\U0001f1f0": {":flag-hk:", ":flag_hk:", ":hong_kong:", ":flag_Hong_Kong_SAR_China:"}, - "\U0001f1ed\U0001f1f2": {":flag-hm:", ":flag_hm:", ":heard_mcdonald_islands:", ":flag_Heard_&_McDonald_Islands:"}, - "\U0001f1ed\U0001f1f3": {":flag-hn:", ":flag_hn:", ":honduras:", ":flag_Honduras:"}, - "\U0001f1ed\U0001f1f7": {":croatia:", ":flag-hr:", ":flag_hr:", ":flag_Croatia:"}, - "\U0001f1ed\U0001f1f9": {":haiti:", ":flag-ht:", ":flag_ht:", ":flag_Haiti:"}, - "\U0001f1ed\U0001f1fa": {":flag-hu:", ":flag_hu:", ":hungary:", ":flag_Hungary:"}, - "\U0001f1ee\U0001f1e8": {":flag-ic:", ":flag_ic:", ":canary_islands:", ":flag_Canary_Islands:"}, - "\U0001f1ee\U0001f1e9": {":flag-id:", ":flag_id:", ":indonesia:", ":flag_Indonesia:"}, - "\U0001f1ee\U0001f1ea": {":flag-ie:", ":flag_ie:", ":ireland:", ":flag_Ireland:"}, - "\U0001f1ee\U0001f1f1": {":israel:", ":flag-il:", ":flag_il:", ":flag_Israel:"}, - "\U0001f1ee\U0001f1f2": {":flag-im:", ":flag_im:", ":isle_of_man:", ":flag_Isle_of_Man:"}, - "\U0001f1ee\U0001f1f3": {":india:", ":flag-in:", ":flag_in:", ":flag_India:"}, - "\U0001f1ee\U0001f1f4": {":flag-io:", ":flag_io:", ":british_indian_ocean_territory:", ":flag_British_Indian_Ocean_Territory:"}, - "\U0001f1ee\U0001f1f6": {":iraq:", ":flag-iq:", ":flag_iq:", ":flag_Iraq:"}, - "\U0001f1ee\U0001f1f7": {":iran:", ":flag-ir:", ":flag_ir:", ":flag_Iran:"}, - "\U0001f1ee\U0001f1f8": {":flag-is:", ":flag_is:", ":iceland:", ":flag_Iceland:"}, - "\U0001f1ee\U0001f1f9": {":it:", ":flag_it:", ":flag_Italy:"}, - "\U0001f1ef\U0001f1ea": {":jersey:", ":flag-je:", ":flag_je:", ":flag_Jersey:"}, - "\U0001f1ef\U0001f1f2": {":flag-jm:", ":flag_jm:", ":jamaica:", ":flag_Jamaica:"}, - "\U0001f1ef\U0001f1f4": {":jordan:", ":flag-jo:", ":flag_jo:", ":flag_Jordan:"}, - "\U0001f1ef\U0001f1f5": {":jp:", ":flag_jp:", ":flag_Japan:"}, - "\U0001f1f0\U0001f1ea": {":kenya:", ":flag-ke:", ":flag_ke:", ":flag_Kenya:"}, - "\U0001f1f0\U0001f1ec": {":flag-kg:", ":flag_kg:", ":kyrgyzstan:", ":flag_Kyrgyzstan:"}, - "\U0001f1f0\U0001f1ed": {":flag-kh:", ":flag_kh:", ":cambodia:", ":flag_Cambodia:"}, - "\U0001f1f0\U0001f1ee": {":flag-ki:", ":flag_ki:", ":kiribati:", ":flag_Kiribati:"}, - "\U0001f1f0\U0001f1f2": {":comoros:", ":flag-km:", ":flag_km:", ":flag_Comoros:"}, - "\U0001f1f0\U0001f1f3": {":flag-kn:", ":flag_kn:", ":st_kitts_nevis:", ":flag_St._Kitts_&_Nevis:"}, - "\U0001f1f0\U0001f1f5": {":flag-kp:", ":flag_kp:", ":north_korea:", ":flag_North_Korea:"}, - "\U0001f1f0\U0001f1f7": {":kr:", ":flag_kr:", ":flag_South_Korea:"}, - "\U0001f1f0\U0001f1fc": {":kuwait:", ":flag-kw:", ":flag_kw:", ":flag_Kuwait:"}, - "\U0001f1f0\U0001f1fe": {":flag-ky:", ":flag_ky:", ":cayman_islands:", ":flag_Cayman_Islands:"}, - "\U0001f1f0\U0001f1ff": {":flag-kz:", ":flag_kz:", ":kazakhstan:", ":flag_Kazakhstan:"}, - "\U0001f1f1\U0001f1e6": {":laos:", ":flag-la:", ":flag_la:", ":flag_Laos:"}, - "\U0001f1f1\U0001f1e7": {":flag-lb:", ":flag_lb:", ":lebanon:", ":flag_Lebanon:"}, - "\U0001f1f1\U0001f1e8": {":flag-lc:", ":flag_lc:", ":st_lucia:", ":flag_St._Lucia:"}, - "\U0001f1f1\U0001f1ee": {":flag-li:", ":flag_li:", ":liechtenstein:", ":flag_Liechtenstein:"}, - "\U0001f1f1\U0001f1f0": {":flag-lk:", ":flag_lk:", ":sri_lanka:", ":flag_Sri_Lanka:"}, - "\U0001f1f1\U0001f1f7": {":flag-lr:", ":flag_lr:", ":liberia:", ":flag_Liberia:"}, - "\U0001f1f1\U0001f1f8": {":flag-ls:", ":flag_ls:", ":lesotho:", ":flag_Lesotho:"}, - "\U0001f1f1\U0001f1f9": {":flag-lt:", ":flag_lt:", ":lithuania:", ":flag_Lithuania:"}, - "\U0001f1f1\U0001f1fa": {":flag-lu:", ":flag_lu:", ":luxembourg:", ":flag_Luxembourg:"}, - "\U0001f1f1\U0001f1fb": {":latvia:", ":flag-lv:", ":flag_lv:", ":flag_Latvia:"}, - "\U0001f1f1\U0001f1fe": {":libya:", ":flag-ly:", ":flag_ly:", ":flag_Libya:"}, - "\U0001f1f2\U0001f1e6": {":flag-ma:", ":flag_ma:", ":morocco:", ":flag_Morocco:"}, - "\U0001f1f2\U0001f1e8": {":monaco:", ":flag-mc:", ":flag_mc:", ":flag_Monaco:"}, - "\U0001f1f2\U0001f1e9": {":flag-md:", ":flag_md:", ":moldova:", ":flag_Moldova:"}, - "\U0001f1f2\U0001f1ea": {":flag-me:", ":flag_me:", ":montenegro:", ":flag_Montenegro:"}, - "\U0001f1f2\U0001f1eb": {":flag-mf:", ":flag_mf:", ":st_martin:", ":flag_St._Martin:"}, - "\U0001f1f2\U0001f1ec": {":flag-mg:", ":flag_mg:", ":madagascar:", ":flag_Madagascar:"}, - "\U0001f1f2\U0001f1ed": {":flag-mh:", ":flag_mh:", ":marshall_islands:", ":flag_Marshall_Islands:"}, - "\U0001f1f2\U0001f1f0": {":flag-mk:", ":flag_mk:", ":macedonia:", ":flag_North_Macedonia:"}, - "\U0001f1f2\U0001f1f1": {":mali:", ":flag-ml:", ":flag_ml:", ":flag_Mali:"}, - "\U0001f1f2\U0001f1f2": {":flag-mm:", ":flag_mm:", ":myanmar:", ":flag_Myanmar_(Burma):"}, - "\U0001f1f2\U0001f1f3": {":flag-mn:", ":flag_mn:", ":mongolia:", ":flag_Mongolia:"}, - "\U0001f1f2\U0001f1f4": {":macau:", ":flag-mo:", ":flag_mo:", ":flag_Macao_SAR_China:"}, - "\U0001f1f2\U0001f1f5": {":flag-mp:", ":flag_mp:", ":northern_mariana_islands:", ":flag_Northern_Mariana_Islands:"}, - "\U0001f1f2\U0001f1f6": {":flag-mq:", ":flag_mq:", ":martinique:", ":flag_Martinique:"}, - "\U0001f1f2\U0001f1f7": {":flag-mr:", ":flag_mr:", ":mauritania:", ":flag_Mauritania:"}, - "\U0001f1f2\U0001f1f8": {":flag-ms:", ":flag_ms:", ":montserrat:", ":flag_Montserrat:"}, - "\U0001f1f2\U0001f1f9": {":malta:", ":flag-mt:", ":flag_mt:", ":flag_Malta:"}, - "\U0001f1f2\U0001f1fa": {":flag-mu:", ":flag_mu:", ":mauritius:", ":flag_Mauritius:"}, - "\U0001f1f2\U0001f1fb": {":flag-mv:", ":flag_mv:", ":maldives:", ":flag_Maldives:"}, - "\U0001f1f2\U0001f1fc": {":malawi:", ":flag-mw:", ":flag_mw:", ":flag_Malawi:"}, - "\U0001f1f2\U0001f1fd": {":mexico:", ":flag-mx:", ":flag_mx:", ":flag_Mexico:"}, - "\U0001f1f2\U0001f1fe": {":flag-my:", ":flag_my:", ":malaysia:", ":flag_Malaysia:"}, - "\U0001f1f2\U0001f1ff": {":flag-mz:", ":flag_mz:", ":mozambique:", ":flag_Mozambique:"}, - "\U0001f1f3\U0001f1e6": {":flag-na:", ":flag_na:", ":namibia:", ":flag_Namibia:"}, - "\U0001f1f3\U0001f1e8": {":flag-nc:", ":flag_nc:", ":new_caledonia:", ":flag_New_Caledonia:"}, - "\U0001f1f3\U0001f1ea": {":niger:", ":flag-ne:", ":flag_ne:", ":flag_Niger:"}, - "\U0001f1f3\U0001f1eb": {":flag-nf:", ":flag_nf:", ":norfolk_island:", ":flag_Norfolk_Island:"}, - "\U0001f1f3\U0001f1ec": {":flag-ng:", ":flag_ng:", ":nigeria:", ":flag_Nigeria:"}, - "\U0001f1f3\U0001f1ee": {":flag-ni:", ":flag_ni:", ":nicaragua:", ":flag_Nicaragua:"}, - "\U0001f1f3\U0001f1f1": {":flag-nl:", ":flag_nl:", ":netherlands:", ":flag_Netherlands:"}, - "\U0001f1f3\U0001f1f4": {":norway:", ":flag-no:", ":flag_no:", ":flag_Norway:"}, - "\U0001f1f3\U0001f1f5": {":nepal:", ":flag-np:", ":flag_np:", ":flag_Nepal:"}, - "\U0001f1f3\U0001f1f7": {":nauru:", ":flag-nr:", ":flag_nr:", ":flag_Nauru:"}, - "\U0001f1f3\U0001f1fa": {":niue:", ":flag-nu:", ":flag_nu:", ":flag_Niue:"}, - "\U0001f1f3\U0001f1ff": {":flag-nz:", ":flag_nz:", ":new_zealand:", ":flag_New_Zealand:"}, - "\U0001f1f4\U0001f1f2": {":oman:", ":flag-om:", ":flag_om:", ":flag_Oman:"}, - "\U0001f1f5\U0001f1e6": {":panama:", ":flag-pa:", ":flag_pa:", ":flag_Panama:"}, - "\U0001f1f5\U0001f1ea": {":peru:", ":flag-pe:", ":flag_pe:", ":flag_Peru:"}, - "\U0001f1f5\U0001f1eb": {":flag-pf:", ":flag_pf:", ":french_polynesia:", ":flag_French_Polynesia:"}, - "\U0001f1f5\U0001f1ec": {":flag-pg:", ":flag_pg:", ":papua_new_guinea:", ":flag_Papua_New_Guinea:"}, - "\U0001f1f5\U0001f1ed": {":flag-ph:", ":flag_ph:", ":philippines:", ":flag_Philippines:"}, - "\U0001f1f5\U0001f1f0": {":flag-pk:", ":flag_pk:", ":pakistan:", ":flag_Pakistan:"}, - "\U0001f1f5\U0001f1f1": {":poland:", ":flag-pl:", ":flag_pl:", ":flag_Poland:"}, - "\U0001f1f5\U0001f1f2": {":flag-pm:", ":flag_pm:", ":st_pierre_miquelon:", ":flag_St._Pierre_&_Miquelon:"}, - "\U0001f1f5\U0001f1f3": {":flag-pn:", ":flag_pn:", ":pitcairn_islands:", ":flag_Pitcairn_Islands:"}, - "\U0001f1f5\U0001f1f7": {":flag-pr:", ":flag_pr:", ":puerto_rico:", ":flag_Puerto_Rico:"}, - "\U0001f1f5\U0001f1f8": {":flag-ps:", ":flag_ps:", ":palestinian_territories:", ":flag_Palestinian_Territories:"}, - "\U0001f1f5\U0001f1f9": {":flag-pt:", ":flag_pt:", ":portugal:", ":flag_Portugal:"}, - "\U0001f1f5\U0001f1fc": {":palau:", ":flag-pw:", ":flag_pw:", ":flag_Palau:"}, - "\U0001f1f5\U0001f1fe": {":flag-py:", ":flag_py:", ":paraguay:", ":flag_Paraguay:"}, - "\U0001f1f6\U0001f1e6": {":qatar:", ":flag-qa:", ":flag_qa:", ":flag_Qatar:"}, - "\U0001f1f7\U0001f1ea": {":flag-re:", ":flag_re:", ":reunion:", ":flag_Réunion:"}, - "\U0001f1f7\U0001f1f4": {":flag-ro:", ":flag_ro:", ":romania:", ":flag_Romania:"}, - "\U0001f1f7\U0001f1f8": {":serbia:", ":flag-rs:", ":flag_rs:", ":flag_Serbia:"}, - "\U0001f1f7\U0001f1fa": {":ru:", ":flag_ru:", ":flag_Russia:"}, - "\U0001f1f7\U0001f1fc": {":rwanda:", ":flag-rw:", ":flag_rw:", ":flag_Rwanda:"}, - "\U0001f1f8\U0001f1e6": {":flag-sa:", ":flag_sa:", ":saudi_arabia:", ":flag_Saudi_Arabia:"}, - "\U0001f1f8\U0001f1e7": {":flag-sb:", ":flag_sb:", ":solomon_islands:", ":flag_Solomon_Islands:"}, - "\U0001f1f8\U0001f1e8": {":flag-sc:", ":flag_sc:", ":seychelles:", ":flag_Seychelles:"}, - "\U0001f1f8\U0001f1e9": {":sudan:", ":flag-sd:", ":flag_sd:", ":flag_Sudan:"}, - "\U0001f1f8\U0001f1ea": {":sweden:", ":flag-se:", ":flag_se:", ":flag_Sweden:"}, - "\U0001f1f8\U0001f1ec": {":flag-sg:", ":flag_sg:", ":singapore:", ":flag_Singapore:"}, - "\U0001f1f8\U0001f1ed": {":flag-sh:", ":flag_sh:", ":st_helena:", ":flag_St._Helena:"}, - "\U0001f1f8\U0001f1ee": {":flag-si:", ":flag_si:", ":slovenia:", ":flag_Slovenia:"}, - "\U0001f1f8\U0001f1ef": {":flag-sj:", ":flag_sj:", ":svalbard_jan_mayen:", ":flag_Svalbard_&_Jan_Mayen:"}, - "\U0001f1f8\U0001f1f0": {":flag-sk:", ":flag_sk:", ":slovakia:", ":flag_Slovakia:"}, - "\U0001f1f8\U0001f1f1": {":flag-sl:", ":flag_sl:", ":sierra_leone:", ":flag_Sierra_Leone:"}, - "\U0001f1f8\U0001f1f2": {":flag-sm:", ":flag_sm:", ":san_marino:", ":flag_San_Marino:"}, - "\U0001f1f8\U0001f1f3": {":flag-sn:", ":flag_sn:", ":senegal:", ":flag_Senegal:"}, - "\U0001f1f8\U0001f1f4": {":flag-so:", ":flag_so:", ":somalia:", ":flag_Somalia:"}, - "\U0001f1f8\U0001f1f7": {":flag-sr:", ":flag_sr:", ":suriname:", ":flag_Suriname:"}, - "\U0001f1f8\U0001f1f8": {":flag-ss:", ":flag_ss:", ":south_sudan:", ":flag_South_Sudan:"}, - "\U0001f1f8\U0001f1f9": {":flag-st:", ":flag_st:", ":sao_tome_principe:", ":flag_São_Tomé_&_Príncipe:"}, - "\U0001f1f8\U0001f1fb": {":flag-sv:", ":flag_sv:", ":el_salvador:", ":flag_El_Salvador:"}, - "\U0001f1f8\U0001f1fd": {":flag-sx:", ":flag_sx:", ":sint_maarten:", ":flag_Sint_Maarten:"}, - "\U0001f1f8\U0001f1fe": {":syria:", ":flag-sy:", ":flag_sy:", ":flag_Syria:"}, - "\U0001f1f8\U0001f1ff": {":flag-sz:", ":flag_sz:", ":swaziland:", ":flag_Eswatini:"}, - "\U0001f1f9\U0001f1e6": {":flag-ta:", ":flag_ta:", ":tristan_da_cunha:", ":flag_Tristan_da_Cunha:"}, - "\U0001f1f9\U0001f1e8": {":flag-tc:", ":flag_tc:", ":turks_caicos_islands:", ":flag_Turks_&_Caicos_Islands:"}, - "\U0001f1f9\U0001f1e9": {":chad:", ":flag-td:", ":flag_td:", ":flag_Chad:"}, - "\U0001f1f9\U0001f1eb": {":flag-tf:", ":flag_tf:", ":french_southern_territories:", ":flag_French_Southern_Territories:"}, - "\U0001f1f9\U0001f1ec": {":togo:", ":flag-tg:", ":flag_tg:", ":flag_Togo:"}, - "\U0001f1f9\U0001f1ed": {":flag-th:", ":flag_th:", ":thailand:", ":flag_Thailand:"}, - "\U0001f1f9\U0001f1ef": {":flag-tj:", ":flag_tj:", ":tajikistan:", ":flag_Tajikistan:"}, - "\U0001f1f9\U0001f1f0": {":flag-tk:", ":flag_tk:", ":tokelau:", ":flag_Tokelau:"}, - "\U0001f1f9\U0001f1f1": {":flag-tl:", ":flag_tl:", ":timor_leste:", ":flag_Timor-Leste:"}, - "\U0001f1f9\U0001f1f2": {":flag-tm:", ":flag_tm:", ":turkmenistan:", ":flag_Turkmenistan:"}, - "\U0001f1f9\U0001f1f3": {":flag-tn:", ":flag_tn:", ":tunisia:", ":flag_Tunisia:"}, - "\U0001f1f9\U0001f1f4": {":tonga:", ":flag-to:", ":flag_to:", ":flag_Tonga:"}, - "\U0001f1f9\U0001f1f7": {":tr:", ":flag-tr:", ":flag_tr:", ":flag_Turkey:"}, - "\U0001f1f9\U0001f1f9": {":flag-tt:", ":flag_tt:", ":trinidad_tobago:", ":flag_Trinidad_&_Tobago:"}, - "\U0001f1f9\U0001f1fb": {":tuvalu:", ":flag-tv:", ":flag_tv:", ":flag_Tuvalu:"}, - "\U0001f1f9\U0001f1fc": {":taiwan:", ":flag-tw:", ":flag_tw:", ":flag_Taiwan:"}, - "\U0001f1f9\U0001f1ff": {":flag-tz:", ":flag_tz:", ":tanzania:", ":flag_Tanzania:"}, - "\U0001f1fa\U0001f1e6": {":flag-ua:", ":flag_ua:", ":ukraine:", ":flag_Ukraine:"}, - "\U0001f1fa\U0001f1ec": {":uganda:", ":flag-ug:", ":flag_ug:", ":flag_Uganda:"}, - "\U0001f1fa\U0001f1f2": {":flag-um:", ":flag_um:", ":us_outlying_islands:", ":flag_U.S._Outlying_Islands:"}, - "\U0001f1fa\U0001f1f3": {":flag-un:", ":united_nations:", ":flag_United_Nations:"}, - "\U0001f1fa\U0001f1f8": {":us:", ":flag_us:", ":flag_United_States:"}, - "\U0001f1fa\U0001f1fe": {":flag-uy:", ":flag_uy:", ":uruguay:", ":flag_Uruguay:"}, - "\U0001f1fa\U0001f1ff": {":flag-uz:", ":flag_uz:", ":uzbekistan:", ":flag_Uzbekistan:"}, - "\U0001f1fb\U0001f1e6": {":flag-va:", ":flag_va:", ":vatican_city:", ":flag_Vatican_City:"}, - "\U0001f1fb\U0001f1e8": {":flag-vc:", ":flag_vc:", ":st_vincent_grenadines:", ":flag_St._Vincent_&_Grenadines:"}, - "\U0001f1fb\U0001f1ea": {":flag-ve:", ":flag_ve:", ":venezuela:", ":flag_Venezuela:"}, - "\U0001f1fb\U0001f1ec": {":flag-vg:", ":flag_vg:", ":british_virgin_islands:", ":flag_British_Virgin_Islands:"}, - "\U0001f1fb\U0001f1ee": {":flag-vi:", ":flag_vi:", ":us_virgin_islands:", ":flag_U.S._Virgin_Islands:"}, - "\U0001f1fb\U0001f1f3": {":flag-vn:", ":flag_vn:", ":vietnam:", ":flag_Vietnam:"}, - "\U0001f1fb\U0001f1fa": {":flag-vu:", ":flag_vu:", ":vanuatu:", ":flag_Vanuatu:"}, - "\U0001f1fc\U0001f1eb": {":flag-wf:", ":flag_wf:", ":wallis_futuna:", ":flag_Wallis_&_Futuna:"}, - "\U0001f1fc\U0001f1f8": {":samoa:", ":flag-ws:", ":flag_ws:", ":flag_Samoa:"}, - "\U0001f1fd\U0001f1f0": {":kosovo:", ":flag-xk:", ":flag_xk:", ":flag_Kosovo:"}, - "\U0001f1fe\U0001f1ea": {":yemen:", ":flag-ye:", ":flag_ye:", ":flag_Yemen:"}, - "\U0001f1fe\U0001f1f9": {":flag-yt:", ":flag_yt:", ":mayotte:", ":flag_Mayotte:"}, - "\U0001f1ff\U0001f1e6": {":flag-za:", ":flag_za:", ":south_africa:", ":flag_South_Africa:"}, - "\U0001f1ff\U0001f1f2": {":zambia:", ":flag-zm:", ":flag_zm:", ":flag_Zambia:"}, - "\U0001f1ff\U0001f1fc": {":flag-zw:", ":flag_zw:", ":zimbabwe:", ":flag_Zimbabwe:"}, - "\U0001f201": {":koko:", ":Japanese_here_button:"}, - "\U0001f202": {":Japanese_service_charge_button:"}, - "\U0001f202\ufe0f": {":sa:"}, - "\U0001f21a": {":u7121:", ":Japanese_free_of_charge_button:"}, - "\U0001f22f": {":u6307:", ":Japanese_reserved_button:"}, - "\U0001f232": {":u7981:", ":Japanese_prohibited_button:"}, - "\U0001f233": {":u7a7a:", ":Japanese_vacancy_button:"}, - "\U0001f234": {":u5408:", ":Japanese_passing_grade_button:"}, - "\U0001f235": {":u6e80:", ":Japanese_no_vacancy_button:"}, - "\U0001f236": {":u6709:", ":Japanese_not_free_of_charge_button:"}, - "\U0001f237": {":Japanese_monthly_amount_button:"}, - "\U0001f237\ufe0f": {":u6708:"}, - "\U0001f238": {":u7533:", ":Japanese_application_button:"}, - "\U0001f239": {":u5272:", ":Japanese_discount_button:"}, - "\U0001f23a": {":u55b6:", ":Japanese_open_for_business_button:"}, - "\U0001f250": {":ideograph_advantage:", ":Japanese_bargain_button:"}, - "\U0001f251": {":accept:", ":Japanese_acceptable_button:"}, - "\U0001f300": {":cyclone:"}, - "\U0001f301": {":foggy:"}, - "\U0001f302": {":closed_umbrella:"}, - "\U0001f303": {":night_with_stars:"}, - "\U0001f304": {":sunrise_over_mountains:"}, - "\U0001f305": {":sunrise:"}, - "\U0001f306": {":city_dusk:", ":city_sunset:", ":cityscape_at_dusk:"}, - "\U0001f307": {":sunset:", ":city_sunrise:"}, - "\U0001f308": {":rainbow:"}, - "\U0001f309": {":bridge_at_night:"}, - "\U0001f30a": {":ocean:", ":water_wave:"}, - "\U0001f30b": {":volcano:"}, - "\U0001f30c": {":milky_way:"}, - "\U0001f30d": {":earth_africa:", ":globe_showing_Europe-Africa:"}, - "\U0001f30e": {":earth_americas:", ":globe_showing_Americas:"}, - "\U0001f30f": {":earth_asia:", ":globe_showing_Asia-Australia:"}, - "\U0001f310": {":globe_with_meridians:"}, - "\U0001f311": {":new_moon:"}, - "\U0001f312": {":waxing_crescent_moon:"}, - "\U0001f313": {":first_quarter_moon:"}, - "\U0001f314": {":moon:", ":waxing_gibbous_moon:"}, - "\U0001f315": {":full_moon:"}, - "\U0001f316": {":waning_gibbous_moon:"}, - "\U0001f317": {":last_quarter_moon:"}, - "\U0001f318": {":waning_crescent_moon:"}, - "\U0001f319": {":crescent_moon:"}, - "\U0001f31a": {":new_moon_face:", ":new_moon_with_face:"}, - "\U0001f31b": {":first_quarter_moon_face:", ":first_quarter_moon_with_face:"}, - "\U0001f31c": {":last_quarter_moon_face:", ":last_quarter_moon_with_face:"}, - "\U0001f31d": {":full_moon_face:", ":full_moon_with_face:"}, - "\U0001f31e": {":sun_with_face:"}, - "\U0001f31f": {":star2:", ":glowing_star:"}, - "\U0001f320": {":stars:", ":shooting_star:"}, - "\U0001f321\ufe0f": {":thermometer:"}, - "\U0001f324": {":white_sun_small_cloud:", ":sun_behind_small_cloud:"}, - "\U0001f324\ufe0f": {":mostly_sunny:"}, - "\U0001f325": {":white_sun_cloud:", ":sun_behind_large_cloud:"}, - "\U0001f325\ufe0f": {":barely_sunny:"}, - "\U0001f326": {":white_sun_rain_cloud:", ":sun_behind_rain_cloud:"}, - "\U0001f326\ufe0f": {":partly_sunny_rain:"}, - "\U0001f327": {":cloud_rain:", ":cloud_with_rain:"}, - "\U0001f327\ufe0f": {":rain_cloud:"}, - "\U0001f328": {":cloud_snow:", ":cloud_with_snow:"}, - "\U0001f328\ufe0f": {":snow_cloud:"}, - "\U0001f329": {":cloud_lightning:", ":cloud_with_lightning:"}, - "\U0001f329\ufe0f": {":lightning:"}, - "\U0001f32a": {":cloud_tornado:"}, - "\U0001f32a\ufe0f": {":tornado:"}, - "\U0001f32b\ufe0f": {":fog:"}, - "\U0001f32c": {":wind_face:"}, - "\U0001f32c\ufe0f": {":wind_blowing_face:"}, - "\U0001f32d": {":hotdog:", ":hot_dog:"}, - "\U0001f32e": {":taco:"}, - "\U0001f32f": {":burrito:"}, - "\U0001f330": {":chestnut:"}, - "\U0001f331": {":seedling:"}, - "\U0001f332": {":evergreen_tree:"}, - "\U0001f333": {":deciduous_tree:"}, - "\U0001f334": {":palm_tree:"}, - "\U0001f335": {":cactus:"}, - "\U0001f336\ufe0f": {":hot_pepper:"}, - "\U0001f337": {":tulip:"}, - "\U0001f338": {":cherry_blossom:"}, - "\U0001f339": {":rose:"}, - "\U0001f33a": {":hibiscus:"}, - "\U0001f33b": {":sunflower:"}, - "\U0001f33c": {":blossom:"}, - "\U0001f33d": {":corn:", ":ear_of_corn:"}, - "\U0001f33e": {":ear_of_rice:", ":sheaf_of_rice:"}, - "\U0001f33f": {":herb:"}, - "\U0001f340": {":four_leaf_clover:"}, - "\U0001f341": {":maple_leaf:"}, - "\U0001f342": {":fallen_leaf:"}, - "\U0001f343": {":leaves:", ":leaf_fluttering_in_wind:"}, - "\U0001f344": {":mushroom:"}, - "\U0001f345": {":tomato:"}, - "\U0001f346": {":eggplant:"}, - "\U0001f347": {":grapes:"}, - "\U0001f348": {":melon:"}, - "\U0001f349": {":watermelon:"}, - "\U0001f34a": {":orange:", ":mandarin:", ":tangerine:"}, - "\U0001f34b": {":lemon:"}, - "\U0001f34c": {":banana:"}, - "\U0001f34d": {":pineapple:"}, - "\U0001f34e": {":apple:", ":red_apple:"}, - "\U0001f34f": {":green_apple:"}, - "\U0001f350": {":pear:"}, - "\U0001f351": {":peach:"}, - "\U0001f352": {":cherries:"}, - "\U0001f353": {":strawberry:"}, - "\U0001f354": {":hamburger:"}, - "\U0001f355": {":pizza:"}, - "\U0001f356": {":meat_on_bone:"}, - "\U0001f357": {":poultry_leg:"}, - "\U0001f358": {":rice_cracker:"}, - "\U0001f359": {":rice_ball:"}, - "\U0001f35a": {":rice:", ":cooked_rice:"}, - "\U0001f35b": {":curry:", ":curry_rice:"}, - "\U0001f35c": {":ramen:", ":steaming_bowl:"}, - "\U0001f35d": {":spaghetti:"}, - "\U0001f35e": {":bread:"}, - "\U0001f35f": {":fries:", ":french_fries:"}, - "\U0001f360": {":sweet_potato:", ":roasted_sweet_potato:"}, - "\U0001f361": {":dango:"}, - "\U0001f362": {":oden:"}, - "\U0001f363": {":sushi:"}, - "\U0001f364": {":fried_shrimp:"}, - "\U0001f365": {":fish_cake:", ":fish_cake_with_swirl:"}, - "\U0001f366": {":icecream:", ":soft_ice_cream:"}, - "\U0001f367": {":shaved_ice:"}, - "\U0001f368": {":ice_cream:"}, - "\U0001f369": {":doughnut:"}, - "\U0001f36a": {":cookie:"}, - "\U0001f36b": {":chocolate_bar:"}, - "\U0001f36c": {":candy:"}, - "\U0001f36d": {":lollipop:"}, - "\U0001f36e": {":custard:"}, - "\U0001f36f": {":honey_pot:"}, - "\U0001f370": {":cake:", ":shortcake:"}, - "\U0001f371": {":bento:", ":bento_box:"}, - "\U0001f372": {":stew:", ":pot_of_food:"}, - "\U0001f373": {":cooking:", ":fried_egg:"}, - "\U0001f374": {":fork_and_knife:"}, - "\U0001f375": {":tea:", ":teacup_without_handle:"}, - "\U0001f376": {":sake:"}, - "\U0001f377": {":wine_glass:"}, - "\U0001f378": {":cocktail:", ":cocktail_glass:"}, - "\U0001f379": {":tropical_drink:"}, - "\U0001f37a": {":beer:", ":beer_mug:"}, - "\U0001f37b": {":beers:", ":clinking_beer_mugs:"}, - "\U0001f37c": {":baby_bottle:"}, - "\U0001f37d": {":fork_knife_plate:", ":fork_and_knife_with_plate:"}, - "\U0001f37d\ufe0f": {":knife_fork_plate:", ":plate_with_cutlery:"}, - "\U0001f37e": {":champagne:", ":bottle_with_popping_cork:"}, - "\U0001f37f": {":popcorn:"}, - "\U0001f380": {":ribbon:"}, - "\U0001f381": {":gift:", ":wrapped_gift:"}, - "\U0001f382": {":birthday:", ":birthday_cake:"}, - "\U0001f383": {":jack-o-lantern:", ":jack_o_lantern:"}, - "\U0001f384": {":Christmas_tree:", ":christmas_tree:"}, - "\U0001f385": {":santa:", ":Santa_Claus:"}, - "\U0001f385\U0001f3fb": {":santa_tone1:"}, - "\U0001f385\U0001f3fc": {":santa_tone2:"}, - "\U0001f385\U0001f3fd": {":santa_tone3:"}, - "\U0001f385\U0001f3fe": {":santa_tone4:"}, - "\U0001f385\U0001f3ff": {":santa_tone5:"}, - "\U0001f386": {":fireworks:"}, - "\U0001f387": {":sparkler:"}, - "\U0001f388": {":balloon:"}, - "\U0001f389": {":tada:", ":party_popper:"}, - "\U0001f38a": {":confetti_ball:"}, - "\U0001f38b": {":tanabata_tree:"}, - "\U0001f38c": {":crossed_flags:"}, - "\U0001f38d": {":bamboo:", ":pine_decoration:"}, - "\U0001f38e": {":dolls:", ":Japanese_dolls:"}, - "\U0001f38f": {":flags:", ":carp_streamer:"}, - "\U0001f390": {":wind_chime:"}, - "\U0001f391": {":rice_scene:", ":moon_viewing_ceremony:"}, - "\U0001f392": {":backpack:", ":school_satchel:"}, - "\U0001f393": {":mortar_board:", ":graduation_cap:"}, - "\U0001f396": {":military_medal:"}, - "\U0001f396\ufe0f": {":medal:", ":medal_military:"}, - "\U0001f397\ufe0f": {":reminder_ribbon:"}, - "\U0001f399": {":microphone2:"}, - "\U0001f399\ufe0f": {":studio_microphone:"}, - "\U0001f39a\ufe0f": {":level_slider:"}, - "\U0001f39b\ufe0f": {":control_knobs:"}, - "\U0001f39e\ufe0f": {":film_strip:", ":film_frames:"}, - "\U0001f39f": {":tickets:"}, - "\U0001f39f\ufe0f": {":admission_tickets:"}, - "\U0001f3a0": {":carousel_horse:"}, - "\U0001f3a1": {":ferris_wheel:"}, - "\U0001f3a2": {":roller_coaster:"}, - "\U0001f3a3": {":fishing_pole:", ":fishing_pole_and_fish:"}, - "\U0001f3a4": {":microphone:"}, - "\U0001f3a5": {":movie_camera:"}, - "\U0001f3a6": {":cinema:"}, - "\U0001f3a7": {":headphone:", ":headphones:"}, - "\U0001f3a8": {":art:", ":artist_palette:"}, - "\U0001f3a9": {":tophat:", ":top_hat:"}, - "\U0001f3aa": {":circus_tent:"}, - "\U0001f3ab": {":ticket:"}, - "\U0001f3ac": {":clapper:", ":clapper_board:"}, - "\U0001f3ad": {":performing_arts:"}, - "\U0001f3ae": {":video_game:"}, - "\U0001f3af": {":dart:", ":direct_hit:"}, - "\U0001f3b0": {":slot_machine:"}, - "\U0001f3b1": {":8ball:", ":pool_8_ball:"}, - "\U0001f3b2": {":game_die:"}, - "\U0001f3b3": {":bowling:"}, - "\U0001f3b4": {":flower_playing_cards:"}, - "\U0001f3b5": {":musical_note:"}, - "\U0001f3b6": {":notes:", ":musical_notes:"}, - "\U0001f3b7": {":saxophone:"}, - "\U0001f3b8": {":guitar:"}, - "\U0001f3b9": {":musical_keyboard:"}, - "\U0001f3ba": {":trumpet:"}, - "\U0001f3bb": {":violin:"}, - "\U0001f3bc": {":musical_score:"}, - "\U0001f3bd": {":running_shirt:", ":running_shirt_with_sash:"}, - "\U0001f3be": {":tennis:"}, - "\U0001f3bf": {":ski:", ":skis:"}, - "\U0001f3c0": {":basketball:"}, - "\U0001f3c1": {":checkered_flag:", ":chequered_flag:"}, - "\U0001f3c2": {":snowboarder:"}, - "\U0001f3c2\U0001f3fb": {":snowboarder_tone1:"}, - "\U0001f3c2\U0001f3fc": {":snowboarder_tone2:"}, - "\U0001f3c2\U0001f3fd": {":snowboarder_tone3:"}, - "\U0001f3c2\U0001f3fe": {":snowboarder_tone4:"}, - "\U0001f3c2\U0001f3ff": {":snowboarder_tone5:"}, - "\U0001f3c3": {":running:", ":person_running:"}, - "\U0001f3c3\U0001f3fb": {":person_running_tone1:"}, - "\U0001f3c3\U0001f3fb\u200d\u2640\ufe0f": {":woman_running_tone1:"}, - "\U0001f3c3\U0001f3fb\u200d\u2642\ufe0f": {":man_running_tone1:"}, - "\U0001f3c3\U0001f3fc": {":person_running_tone2:"}, - "\U0001f3c3\U0001f3fc\u200d\u2640\ufe0f": {":woman_running_tone2:"}, - "\U0001f3c3\U0001f3fc\u200d\u2642\ufe0f": {":man_running_tone2:"}, - "\U0001f3c3\U0001f3fd": {":person_running_tone3:"}, - "\U0001f3c3\U0001f3fd\u200d\u2640\ufe0f": {":woman_running_tone3:"}, - "\U0001f3c3\U0001f3fd\u200d\u2642\ufe0f": {":man_running_tone3:"}, - "\U0001f3c3\U0001f3fe": {":person_running_tone4:"}, - "\U0001f3c3\U0001f3fe\u200d\u2640\ufe0f": {":woman_running_tone4:"}, - "\U0001f3c3\U0001f3fe\u200d\u2642\ufe0f": {":man_running_tone4:"}, - "\U0001f3c3\U0001f3ff": {":person_running_tone5:"}, - "\U0001f3c3\U0001f3ff\u200d\u2640\ufe0f": {":woman_running_tone5:"}, - "\U0001f3c3\U0001f3ff\u200d\u2642\ufe0f": {":man_running_tone5:"}, - "\U0001f3c3\u200d\u2640\ufe0f": {":running_woman:", ":woman-running:", ":woman_running:"}, - "\U0001f3c3\u200d\u2642\ufe0f": {":runner:", ":man-running:", ":man_running:", ":running_man:"}, - "\U0001f3c4": {":person_surfing:"}, - "\U0001f3c4\U0001f3fb": {":person_surfing_tone1:"}, - "\U0001f3c4\U0001f3fb\u200d\u2640\ufe0f": {":woman_surfing_tone1:"}, - "\U0001f3c4\U0001f3fb\u200d\u2642\ufe0f": {":man_surfing_tone1:"}, - "\U0001f3c4\U0001f3fc": {":person_surfing_tone2:"}, - "\U0001f3c4\U0001f3fc\u200d\u2640\ufe0f": {":woman_surfing_tone2:"}, - "\U0001f3c4\U0001f3fc\u200d\u2642\ufe0f": {":man_surfing_tone2:"}, - "\U0001f3c4\U0001f3fd": {":person_surfing_tone3:"}, - "\U0001f3c4\U0001f3fd\u200d\u2640\ufe0f": {":woman_surfing_tone3:"}, - "\U0001f3c4\U0001f3fd\u200d\u2642\ufe0f": {":man_surfing_tone3:"}, - "\U0001f3c4\U0001f3fe": {":person_surfing_tone4:"}, - "\U0001f3c4\U0001f3fe\u200d\u2640\ufe0f": {":woman_surfing_tone4:"}, - "\U0001f3c4\U0001f3fe\u200d\u2642\ufe0f": {":man_surfing_tone4:"}, - "\U0001f3c4\U0001f3ff": {":person_surfing_tone5:"}, - "\U0001f3c4\U0001f3ff\u200d\u2640\ufe0f": {":woman_surfing_tone5:"}, - "\U0001f3c4\U0001f3ff\u200d\u2642\ufe0f": {":man_surfing_tone5:"}, - "\U0001f3c4\u200d\u2640\ufe0f": {":surfing_woman:", ":woman-surfing:", ":woman_surfing:"}, - "\U0001f3c4\u200d\u2642\ufe0f": {":surfer:", ":man-surfing:", ":man_surfing:", ":surfing_man:"}, - "\U0001f3c5": {":medal_sports:", ":sports_medal:"}, - "\U0001f3c6": {":trophy:"}, - "\U0001f3c7": {":horse_racing:"}, - "\U0001f3c7\U0001f3fb": {":horse_racing_tone1:"}, - "\U0001f3c7\U0001f3fc": {":horse_racing_tone2:"}, - "\U0001f3c7\U0001f3fd": {":horse_racing_tone3:"}, - "\U0001f3c7\U0001f3fe": {":horse_racing_tone4:"}, - "\U0001f3c7\U0001f3ff": {":horse_racing_tone5:"}, - "\U0001f3c8": {":football:", ":american_football:"}, - "\U0001f3c9": {":rugby_football:"}, - "\U0001f3ca": {":person_swimming:"}, - "\U0001f3ca\U0001f3fb": {":person_swimming_tone1:"}, - "\U0001f3ca\U0001f3fb\u200d\u2640\ufe0f": {":woman_swimming_tone1:"}, - "\U0001f3ca\U0001f3fb\u200d\u2642\ufe0f": {":man_swimming_tone1:"}, - "\U0001f3ca\U0001f3fc": {":person_swimming_tone2:"}, - "\U0001f3ca\U0001f3fc\u200d\u2640\ufe0f": {":woman_swimming_tone2:"}, - "\U0001f3ca\U0001f3fc\u200d\u2642\ufe0f": {":man_swimming_tone2:"}, - "\U0001f3ca\U0001f3fd": {":person_swimming_tone3:"}, - "\U0001f3ca\U0001f3fd\u200d\u2640\ufe0f": {":woman_swimming_tone3:"}, - "\U0001f3ca\U0001f3fd\u200d\u2642\ufe0f": {":man_swimming_tone3:"}, - "\U0001f3ca\U0001f3fe": {":person_swimming_tone4:"}, - "\U0001f3ca\U0001f3fe\u200d\u2640\ufe0f": {":woman_swimming_tone4:"}, - "\U0001f3ca\U0001f3fe\u200d\u2642\ufe0f": {":man_swimming_tone4:"}, - "\U0001f3ca\U0001f3ff": {":person_swimming_tone5:"}, - "\U0001f3ca\U0001f3ff\u200d\u2640\ufe0f": {":woman_swimming_tone5:"}, - "\U0001f3ca\U0001f3ff\u200d\u2642\ufe0f": {":man_swimming_tone5:"}, - "\U0001f3ca\u200d\u2640\ufe0f": {":swimming_woman:", ":woman-swimming:", ":woman_swimming:"}, - "\U0001f3ca\u200d\u2642\ufe0f": {":swimmer:", ":man-swimming:", ":man_swimming:", ":swimming_man:"}, - "\U0001f3cb": {":person_lifting_weights:"}, - "\U0001f3cb\U0001f3fb": {":person_lifting_weights_tone1:"}, - "\U0001f3cb\U0001f3fb\u200d\u2640\ufe0f": {":woman_lifting_weights_tone1:"}, - "\U0001f3cb\U0001f3fb\u200d\u2642\ufe0f": {":man_lifting_weights_tone1:"}, - "\U0001f3cb\U0001f3fc": {":person_lifting_weights_tone2:"}, - "\U0001f3cb\U0001f3fc\u200d\u2640\ufe0f": {":woman_lifting_weights_tone2:"}, - "\U0001f3cb\U0001f3fc\u200d\u2642\ufe0f": {":man_lifting_weights_tone2:"}, - "\U0001f3cb\U0001f3fd": {":person_lifting_weights_tone3:"}, - "\U0001f3cb\U0001f3fd\u200d\u2640\ufe0f": {":woman_lifting_weights_tone3:"}, - "\U0001f3cb\U0001f3fd\u200d\u2642\ufe0f": {":man_lifting_weights_tone3:"}, - "\U0001f3cb\U0001f3fe": {":person_lifting_weights_tone4:"}, - "\U0001f3cb\U0001f3fe\u200d\u2640\ufe0f": {":woman_lifting_weights_tone4:"}, - "\U0001f3cb\U0001f3fe\u200d\u2642\ufe0f": {":man_lifting_weights_tone4:"}, - "\U0001f3cb\U0001f3ff": {":person_lifting_weights_tone5:"}, - "\U0001f3cb\U0001f3ff\u200d\u2640\ufe0f": {":woman_lifting_weights_tone5:"}, - "\U0001f3cb\U0001f3ff\u200d\u2642\ufe0f": {":man_lifting_weights_tone5:"}, - "\U0001f3cb\ufe0f": {":weight_lifting:"}, - "\U0001f3cb\ufe0f\u200d\u2640\ufe0f": {":weight_lifting_woman:", ":woman-lifting-weights:", ":woman_lifting_weights:"}, - "\U0001f3cb\ufe0f\u200d\u2642\ufe0f": {":weight_lifter:", ":weight_lifting_man:", ":man-lifting-weights:", ":man_lifting_weights:"}, - "\U0001f3cc": {":person_golfing:"}, - "\U0001f3cc\U0001f3fb": {":person_golfing_tone1:"}, - "\U0001f3cc\U0001f3fb\u200d\u2640\ufe0f": {":woman_golfing_tone1:"}, - "\U0001f3cc\U0001f3fb\u200d\u2642\ufe0f": {":man_golfing_tone1:"}, - "\U0001f3cc\U0001f3fc": {":person_golfing_tone2:"}, - "\U0001f3cc\U0001f3fc\u200d\u2640\ufe0f": {":woman_golfing_tone2:"}, - "\U0001f3cc\U0001f3fc\u200d\u2642\ufe0f": {":man_golfing_tone2:"}, - "\U0001f3cc\U0001f3fd": {":person_golfing_tone3:"}, - "\U0001f3cc\U0001f3fd\u200d\u2640\ufe0f": {":woman_golfing_tone3:"}, - "\U0001f3cc\U0001f3fd\u200d\u2642\ufe0f": {":man_golfing_tone3:"}, - "\U0001f3cc\U0001f3fe": {":person_golfing_tone4:"}, - "\U0001f3cc\U0001f3fe\u200d\u2640\ufe0f": {":woman_golfing_tone4:"}, - "\U0001f3cc\U0001f3fe\u200d\u2642\ufe0f": {":man_golfing_tone4:"}, - "\U0001f3cc\U0001f3ff": {":person_golfing_tone5:"}, - "\U0001f3cc\U0001f3ff\u200d\u2640\ufe0f": {":woman_golfing_tone5:"}, - "\U0001f3cc\U0001f3ff\u200d\u2642\ufe0f": {":man_golfing_tone5:"}, - "\U0001f3cc\ufe0f": {":golfing:"}, - "\U0001f3cc\ufe0f\u200d\u2640\ufe0f": {":golfing_woman:", ":woman-golfing:", ":woman_golfing:"}, - "\U0001f3cc\ufe0f\u200d\u2642\ufe0f": {":golfer:", ":golfing_man:", ":man-golfing:", ":man_golfing:"}, - "\U0001f3cd": {":motorcycle:"}, - "\U0001f3cd\ufe0f": {":racing_motorcycle:"}, - "\U0001f3ce": {":race_car:"}, - "\U0001f3ce\ufe0f": {":racing_car:"}, - "\U0001f3cf": {":cricket_game:", ":cricket_bat_and_ball:"}, - "\U0001f3d0": {":volleyball:"}, - "\U0001f3d1": {":field_hockey:", ":field_hockey_stick_and_ball:"}, - "\U0001f3d2": {":hockey:", ":ice_hockey:", ":ice_hockey_stick_and_puck:"}, - "\U0001f3d3": {":ping_pong:", ":table_tennis_paddle_and_ball:"}, - "\U0001f3d4": {":mountain_snow:", ":snow-capped_mountain:"}, - "\U0001f3d4\ufe0f": {":snow_capped_mountain:"}, - "\U0001f3d5\ufe0f": {":camping:"}, - "\U0001f3d6": {":beach:"}, - "\U0001f3d6\ufe0f": {":beach_with_umbrella:"}, - "\U0001f3d7": {":construction_site:"}, - "\U0001f3d7\ufe0f": {":building_construction:"}, - "\U0001f3d8": {":homes:", ":houses:"}, - "\U0001f3d8\ufe0f": {":house_buildings:"}, - "\U0001f3d9\ufe0f": {":cityscape:"}, - "\U0001f3da": {":derelict_house:", ":house_abandoned:"}, - "\U0001f3da\ufe0f": {":derelict_house_building:"}, - "\U0001f3db\ufe0f": {":classical_building:"}, - "\U0001f3dc\ufe0f": {":desert:"}, - "\U0001f3dd": {":island:"}, - "\U0001f3dd\ufe0f": {":desert_island:"}, - "\U0001f3de": {":park:"}, - "\U0001f3de\ufe0f": {":national_park:"}, - "\U0001f3df\ufe0f": {":stadium:"}, - "\U0001f3e0": {":house:"}, - "\U0001f3e1": {":house_with_garden:"}, - "\U0001f3e2": {":office:", ":office_building:"}, - "\U0001f3e3": {":post_office:", ":Japanese_post_office:"}, - "\U0001f3e4": {":european_post_office:"}, - "\U0001f3e5": {":hospital:"}, - "\U0001f3e6": {":bank:"}, - "\U0001f3e7": {":atm:", ":ATM_sign:"}, - "\U0001f3e8": {":hotel:"}, - "\U0001f3e9": {":love_hotel:"}, - "\U0001f3ea": {":convenience_store:"}, - "\U0001f3eb": {":school:"}, - "\U0001f3ec": {":department_store:"}, - "\U0001f3ed": {":factory:"}, - "\U0001f3ee": {":lantern:", ":izakaya_lantern:", ":red_paper_lantern:"}, - "\U0001f3ef": {":Japanese_castle:", ":japanese_castle:"}, - "\U0001f3f0": {":castle:", ":european_castle:"}, - "\U0001f3f3": {":flag_white:", ":white_flag:"}, - "\U0001f3f3\ufe0f": {":waving_white_flag:"}, - "\U0001f3f3\ufe0f\u200d\U0001f308": {":rainbow-flag:", ":rainbow_flag:"}, - "\U0001f3f3\ufe0f\u200d\u26a7\ufe0f": {":transgender_flag:"}, - "\U0001f3f4": {":black_flag:", ":flag_black:", ":waving_black_flag:"}, - "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f": {":england:", ":flag-england:", ":flag_England:"}, - "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f": {":scotland:", ":flag-scotland:", ":flag_Scotland:"}, - "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f": {":wales:", ":flag-wales:", ":flag_Wales:"}, - "\U0001f3f4\u200d\u2620\ufe0f": {":pirate_flag:"}, - "\U0001f3f5\ufe0f": {":rosette:"}, - "\U0001f3f7\ufe0f": {":label:"}, - "\U0001f3f8": {":badminton:", ":badminton_racquet_and_shuttlecock:"}, - "\U0001f3f9": {":bow_and_arrow:"}, - "\U0001f3fa": {":amphora:"}, - "\U0001f3fb": {":skin-tone-2:"}, - "\U0001f3fc": {":skin-tone-3:"}, - "\U0001f3fd": {":skin-tone-4:"}, - "\U0001f3fe": {":skin-tone-5:"}, - "\U0001f3ff": {":skin-tone-6:"}, - "\U0001f400": {":rat:"}, - "\U0001f401": {":mouse2:"}, - "\U0001f402": {":ox:"}, - "\U0001f403": {":water_buffalo:"}, - "\U0001f404": {":cow2:"}, - "\U0001f405": {":tiger2:"}, - "\U0001f406": {":leopard:"}, - "\U0001f407": {":rabbit2:"}, - "\U0001f408": {":cat2:"}, - "\U0001f408\u200d\u2b1b": {":black_cat:"}, - "\U0001f409": {":dragon:"}, - "\U0001f40a": {":crocodile:"}, - "\U0001f40b": {":whale2:"}, - "\U0001f40c": {":snail:"}, - "\U0001f40d": {":snake:"}, - "\U0001f40e": {":racehorse:"}, - "\U0001f40f": {":ram:"}, - "\U0001f410": {":goat:"}, - "\U0001f411": {":ewe:", ":sheep:"}, - "\U0001f412": {":monkey:"}, - "\U0001f413": {":rooster:"}, - "\U0001f414": {":chicken:"}, - "\U0001f415": {":dog2:"}, - "\U0001f415\u200d\U0001f9ba": {":service_dog:"}, - "\U0001f416": {":pig2:"}, - "\U0001f417": {":boar:"}, - "\U0001f418": {":elephant:"}, - "\U0001f419": {":octopus:"}, - "\U0001f41a": {":shell:", ":spiral_shell:"}, - "\U0001f41b": {":bug:"}, - "\U0001f41c": {":ant:"}, - "\U0001f41d": {":bee:", ":honeybee:"}, - "\U0001f41e": {":beetle:", ":lady_beetle:"}, - "\U0001f41f": {":fish:"}, - "\U0001f420": {":tropical_fish:"}, - "\U0001f421": {":blowfish:"}, - "\U0001f422": {":turtle:"}, - "\U0001f423": {":hatching_chick:"}, - "\U0001f424": {":baby_chick:"}, - "\U0001f425": {":hatched_chick:", ":front-facing_baby_chick:"}, - "\U0001f426": {":bird:"}, - "\U0001f427": {":penguin:"}, - "\U0001f428": {":koala:"}, - "\U0001f429": {":poodle:"}, - "\U0001f42a": {":dromedary_camel:"}, - "\U0001f42b": {":camel:", ":two-hump_camel:"}, - "\U0001f42c": {":dolphin:", ":flipper:"}, - "\U0001f42d": {":mouse:", ":mouse_face:"}, - "\U0001f42e": {":cow:", ":cow_face:"}, - "\U0001f42f": {":tiger:", ":tiger_face:"}, - "\U0001f430": {":rabbit:", ":rabbit_face:"}, - "\U0001f431": {":cat:", ":cat_face:"}, - "\U0001f432": {":dragon_face:"}, - "\U0001f433": {":whale:", ":spouting_whale:"}, - "\U0001f434": {":horse:", ":horse_face:"}, - "\U0001f435": {":monkey_face:"}, - "\U0001f436": {":dog:", ":dog_face:"}, - "\U0001f437": {":pig:", ":pig_face:"}, - "\U0001f438": {":frog:"}, - "\U0001f439": {":hamster:"}, - "\U0001f43a": {":wolf:"}, - "\U0001f43b": {":bear:"}, - "\U0001f43b\u200d\u2744\ufe0f": {":polar_bear:"}, - "\U0001f43c": {":panda:", ":panda_face:"}, - "\U0001f43d": {":pig_nose:"}, - "\U0001f43e": {":feet:", ":paw_prints:"}, - "\U0001f43f\ufe0f": {":chipmunk:"}, - "\U0001f440": {":eyes:"}, - "\U0001f441\ufe0f": {":eye:"}, - "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f": {":eye_speech_bubble:", ":eye-in-speech-bubble:", ":eye_in_speech_bubble:"}, - "\U0001f442": {":ear:"}, - "\U0001f442\U0001f3fb": {":ear_tone1:"}, - "\U0001f442\U0001f3fc": {":ear_tone2:"}, - "\U0001f442\U0001f3fd": {":ear_tone3:"}, - "\U0001f442\U0001f3fe": {":ear_tone4:"}, - "\U0001f442\U0001f3ff": {":ear_tone5:"}, - "\U0001f443": {":nose:"}, - "\U0001f443\U0001f3fb": {":nose_tone1:"}, - "\U0001f443\U0001f3fc": {":nose_tone2:"}, - "\U0001f443\U0001f3fd": {":nose_tone3:"}, - "\U0001f443\U0001f3fe": {":nose_tone4:"}, - "\U0001f443\U0001f3ff": {":nose_tone5:"}, - "\U0001f444": {":lips:", ":mouth:"}, - "\U0001f445": {":tongue:"}, - "\U0001f446": {":point_up_2:", ":backhand_index_pointing_up:"}, - "\U0001f446\U0001f3fb": {":point_up_2_tone1:"}, - "\U0001f446\U0001f3fc": {":point_up_2_tone2:"}, - "\U0001f446\U0001f3fd": {":point_up_2_tone3:"}, - "\U0001f446\U0001f3fe": {":point_up_2_tone4:"}, - "\U0001f446\U0001f3ff": {":point_up_2_tone5:"}, - "\U0001f447": {":point_down:", ":backhand_index_pointing_down:"}, - "\U0001f447\U0001f3fb": {":point_down_tone1:"}, - "\U0001f447\U0001f3fc": {":point_down_tone2:"}, - "\U0001f447\U0001f3fd": {":point_down_tone3:"}, - "\U0001f447\U0001f3fe": {":point_down_tone4:"}, - "\U0001f447\U0001f3ff": {":point_down_tone5:"}, - "\U0001f448": {":point_left:", ":backhand_index_pointing_left:"}, - "\U0001f448\U0001f3fb": {":point_left_tone1:"}, - "\U0001f448\U0001f3fc": {":point_left_tone2:"}, - "\U0001f448\U0001f3fd": {":point_left_tone3:"}, - "\U0001f448\U0001f3fe": {":point_left_tone4:"}, - "\U0001f448\U0001f3ff": {":point_left_tone5:"}, - "\U0001f449": {":point_right:", ":backhand_index_pointing_right:"}, - "\U0001f449\U0001f3fb": {":point_right_tone1:"}, - "\U0001f449\U0001f3fc": {":point_right_tone2:"}, - "\U0001f449\U0001f3fd": {":point_right_tone3:"}, - "\U0001f449\U0001f3fe": {":point_right_tone4:"}, - "\U0001f449\U0001f3ff": {":point_right_tone5:"}, - "\U0001f44a": {":punch:", ":facepunch:", ":fist_oncoming:", ":oncoming_fist:"}, - "\U0001f44a\U0001f3fb": {":punch_tone1:"}, - "\U0001f44a\U0001f3fc": {":punch_tone2:"}, - "\U0001f44a\U0001f3fd": {":punch_tone3:"}, - "\U0001f44a\U0001f3fe": {":punch_tone4:"}, - "\U0001f44a\U0001f3ff": {":punch_tone5:"}, - "\U0001f44b": {":wave:", ":waving_hand:"}, - "\U0001f44b\U0001f3fb": {":wave_tone1:"}, - "\U0001f44b\U0001f3fc": {":wave_tone2:"}, - "\U0001f44b\U0001f3fd": {":wave_tone3:"}, - "\U0001f44b\U0001f3fe": {":wave_tone4:"}, - "\U0001f44b\U0001f3ff": {":wave_tone5:"}, - "\U0001f44c": {":OK_hand:", ":ok_hand:"}, - "\U0001f44c\U0001f3fb": {":ok_hand_tone1:"}, - "\U0001f44c\U0001f3fc": {":ok_hand_tone2:"}, - "\U0001f44c\U0001f3fd": {":ok_hand_tone3:"}, - "\U0001f44c\U0001f3fe": {":ok_hand_tone4:"}, - "\U0001f44c\U0001f3ff": {":ok_hand_tone5:"}, - "\U0001f44d": {":+1:", ":thumbsup:", ":thumbs_up:"}, - "\U0001f44d\U0001f3fb": {":thumbsup_tone1:"}, - "\U0001f44d\U0001f3fc": {":thumbsup_tone2:"}, - "\U0001f44d\U0001f3fd": {":thumbsup_tone3:"}, - "\U0001f44d\U0001f3fe": {":thumbsup_tone4:"}, - "\U0001f44d\U0001f3ff": {":thumbsup_tone5:"}, - "\U0001f44e": {":-1:", ":thumbsdown:", ":thumbs_down:"}, - "\U0001f44e\U0001f3fb": {":thumbsdown_tone1:"}, - "\U0001f44e\U0001f3fc": {":thumbsdown_tone2:"}, - "\U0001f44e\U0001f3fd": {":thumbsdown_tone3:"}, - "\U0001f44e\U0001f3fe": {":thumbsdown_tone4:"}, - "\U0001f44e\U0001f3ff": {":thumbsdown_tone5:"}, - "\U0001f44f": {":clap:", ":clapping_hands:"}, - "\U0001f44f\U0001f3fb": {":clap_tone1:"}, - "\U0001f44f\U0001f3fc": {":clap_tone2:"}, - "\U0001f44f\U0001f3fd": {":clap_tone3:"}, - "\U0001f44f\U0001f3fe": {":clap_tone4:"}, - "\U0001f44f\U0001f3ff": {":clap_tone5:"}, - "\U0001f450": {":open_hands:"}, - "\U0001f450\U0001f3fb": {":open_hands_tone1:"}, - "\U0001f450\U0001f3fc": {":open_hands_tone2:"}, - "\U0001f450\U0001f3fd": {":open_hands_tone3:"}, - "\U0001f450\U0001f3fe": {":open_hands_tone4:"}, - "\U0001f450\U0001f3ff": {":open_hands_tone5:"}, - "\U0001f451": {":crown:"}, - "\U0001f452": {":womans_hat:", ":woman’s_hat:"}, - "\U0001f453": {":glasses:", ":eyeglasses:"}, - "\U0001f454": {":necktie:"}, - "\U0001f455": {":shirt:", ":tshirt:", ":t-shirt:"}, - "\U0001f456": {":jeans:"}, - "\U0001f457": {":dress:"}, - "\U0001f458": {":kimono:"}, - "\U0001f459": {":bikini:"}, - "\U0001f45a": {":womans_clothes:", ":woman’s_clothes:"}, - "\U0001f45b": {":purse:"}, - "\U0001f45c": {":handbag:"}, - "\U0001f45d": {":pouch:", ":clutch_bag:"}, - "\U0001f45e": {":shoe:", ":mans_shoe:", ":man’s_shoe:"}, - "\U0001f45f": {":running_shoe:", ":athletic_shoe:"}, - "\U0001f460": {":high_heel:", ":high-heeled_shoe:"}, - "\U0001f461": {":sandal:", ":woman’s_sandal:"}, - "\U0001f462": {":boot:", ":woman’s_boot:"}, - "\U0001f463": {":footprints:"}, - "\U0001f464": {":bust_in_silhouette:"}, - "\U0001f465": {":busts_in_silhouette:"}, - "\U0001f466": {":boy:"}, - "\U0001f466\U0001f3fb": {":boy_tone1:"}, - "\U0001f466\U0001f3fc": {":boy_tone2:"}, - "\U0001f466\U0001f3fd": {":boy_tone3:"}, - "\U0001f466\U0001f3fe": {":boy_tone4:"}, - "\U0001f466\U0001f3ff": {":boy_tone5:"}, - "\U0001f467": {":girl:"}, - "\U0001f467\U0001f3fb": {":girl_tone1:"}, - "\U0001f467\U0001f3fc": {":girl_tone2:"}, - "\U0001f467\U0001f3fd": {":girl_tone3:"}, - "\U0001f467\U0001f3fe": {":girl_tone4:"}, - "\U0001f467\U0001f3ff": {":girl_tone5:"}, - "\U0001f468": {":man:"}, - "\U0001f468\U0001f3fb": {":man_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f33e": {":man_farmer_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f373": {":man_cook_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f393": {":man_student_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f3a4": {":man_singer_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f3a8": {":man_artist_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f3eb": {":man_teacher_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f3ed": {":man_factory_worker_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f4bb": {":man_technologist_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f4bc": {":man_office_worker_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f527": {":man_mechanic_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f52c": {":man_scientist_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f680": {":man_astronaut_tone1:"}, - "\U0001f468\U0001f3fb\u200d\U0001f692": {":man_firefighter_tone1:"}, - "\U0001f468\U0001f3fb\u200d\u2695\ufe0f": {":man_health_worker_tone1:"}, - "\U0001f468\U0001f3fb\u200d\u2696\ufe0f": {":man_judge_tone1:"}, - "\U0001f468\U0001f3fb\u200d\u2708\ufe0f": {":man_pilot_tone1:"}, - "\U0001f468\U0001f3fc": {":man_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f33e": {":man_farmer_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f373": {":man_cook_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f393": {":man_student_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f3a4": {":man_singer_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f3a8": {":man_artist_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f3eb": {":man_teacher_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f3ed": {":man_factory_worker_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f4bb": {":man_technologist_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f4bc": {":man_office_worker_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f527": {":man_mechanic_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f52c": {":man_scientist_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f680": {":man_astronaut_tone2:"}, - "\U0001f468\U0001f3fc\u200d\U0001f692": {":man_firefighter_tone2:"}, - "\U0001f468\U0001f3fc\u200d\u2695\ufe0f": {":man_health_worker_tone2:"}, - "\U0001f468\U0001f3fc\u200d\u2696\ufe0f": {":man_judge_tone2:"}, - "\U0001f468\U0001f3fc\u200d\u2708\ufe0f": {":man_pilot_tone2:"}, - "\U0001f468\U0001f3fd": {":man_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f33e": {":man_farmer_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f373": {":man_cook_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f393": {":man_student_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f3a4": {":man_singer_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f3a8": {":man_artist_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f3eb": {":man_teacher_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f3ed": {":man_factory_worker_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f4bb": {":man_technologist_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f4bc": {":man_office_worker_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f527": {":man_mechanic_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f52c": {":man_scientist_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f680": {":man_astronaut_tone3:"}, - "\U0001f468\U0001f3fd\u200d\U0001f692": {":man_firefighter_tone3:"}, - "\U0001f468\U0001f3fd\u200d\u2695\ufe0f": {":man_health_worker_tone3:"}, - "\U0001f468\U0001f3fd\u200d\u2696\ufe0f": {":man_judge_tone3:"}, - "\U0001f468\U0001f3fd\u200d\u2708\ufe0f": {":man_pilot_tone3:"}, - "\U0001f468\U0001f3fe": {":man_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f33e": {":man_farmer_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f373": {":man_cook_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f393": {":man_student_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f3a4": {":man_singer_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f3a8": {":man_artist_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f3eb": {":man_teacher_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f3ed": {":man_factory_worker_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f4bb": {":man_technologist_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f4bc": {":man_office_worker_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f527": {":man_mechanic_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f52c": {":man_scientist_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f680": {":man_astronaut_tone4:"}, - "\U0001f468\U0001f3fe\u200d\U0001f692": {":man_firefighter_tone4:"}, - "\U0001f468\U0001f3fe\u200d\u2695\ufe0f": {":man_health_worker_tone4:"}, - "\U0001f468\U0001f3fe\u200d\u2696\ufe0f": {":man_judge_tone4:"}, - "\U0001f468\U0001f3fe\u200d\u2708\ufe0f": {":man_pilot_tone4:"}, - "\U0001f468\U0001f3ff": {":man_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f33e": {":man_farmer_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f373": {":man_cook_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f393": {":man_student_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f3a4": {":man_singer_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f3a8": {":man_artist_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f3eb": {":man_teacher_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f3ed": {":man_factory_worker_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f4bb": {":man_technologist_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f4bc": {":man_office_worker_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f527": {":man_mechanic_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f52c": {":man_scientist_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f680": {":man_astronaut_tone5:"}, - "\U0001f468\U0001f3ff\u200d\U0001f692": {":man_firefighter_tone5:"}, - "\U0001f468\U0001f3ff\u200d\u2695\ufe0f": {":man_health_worker_tone5:"}, - "\U0001f468\U0001f3ff\u200d\u2696\ufe0f": {":man_judge_tone5:"}, - "\U0001f468\U0001f3ff\u200d\u2708\ufe0f": {":man_pilot_tone5:"}, - "\U0001f468\u200d\U0001f33e": {":man_farmer:", ":male-farmer:"}, - "\U0001f468\u200d\U0001f373": {":man_cook:", ":male-cook:"}, - "\U0001f468\u200d\U0001f37c": {":man_feeding_baby:"}, - "\U0001f468\u200d\U0001f393": {":man_student:", ":male-student:"}, - "\U0001f468\u200d\U0001f3a4": {":man_singer:", ":male-singer:"}, - "\U0001f468\u200d\U0001f3a8": {":man_artist:", ":male-artist:"}, - "\U0001f468\u200d\U0001f3eb": {":man_teacher:", ":male-teacher:"}, - "\U0001f468\u200d\U0001f3ed": {":man_factory_worker:", ":male-factory-worker:"}, - "\U0001f468\u200d\U0001f466": {":man-boy:", ":family_man_boy:"}, - "\U0001f468\u200d\U0001f466\u200d\U0001f466": {":man-boy-boy:", ":family_man_boy_boy:"}, - "\U0001f468\u200d\U0001f467": {":man-girl:", ":family_man_girl:"}, - "\U0001f468\u200d\U0001f467\u200d\U0001f466": {":man-girl-boy:", ":family_man_girl_boy:"}, - "\U0001f468\u200d\U0001f467\u200d\U0001f467": {":man-girl-girl:", ":family_man_girl_girl:"}, - "\U0001f468\u200d\U0001f468\u200d\U0001f466": {":family_mmb:", ":man-man-boy:", ":family_man_man_boy:"}, - "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466": {":family_mmbb:", ":man-man-boy-boy:", ":family_man_man_boy_boy:"}, - "\U0001f468\u200d\U0001f468\u200d\U0001f467": {":family_mmg:", ":man-man-girl:", ":family_man_man_girl:"}, - "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466": {":family_mmgb:", ":man-man-girl-boy:", ":family_man_man_girl_boy:"}, - "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467": {":family_mmgg:", ":man-man-girl-girl:", ":family_man_man_girl_girl:"}, - "\U0001f468\u200d\U0001f469\u200d\U0001f466": {":family:", ":man-woman-boy:", ":family_man_woman_boy:"}, - "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466": {":family_mwbb:", ":man-woman-boy-boy:", ":family_man_woman_boy_boy:"}, - "\U0001f468\u200d\U0001f469\u200d\U0001f467": {":family_mwg:", ":man-woman-girl:", ":family_man_woman_girl:"}, - "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466": {":family_mwgb:", ":man-woman-girl-boy:", ":family_man_woman_girl_boy:"}, - "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467": {":family_mwgg:", ":man-woman-girl-girl:", ":family_man_woman_girl_girl:"}, - "\U0001f468\u200d\U0001f4bb": {":man_technologist:", ":male-technologist:"}, - "\U0001f468\u200d\U0001f4bc": {":man_office_worker:", ":male-office-worker:"}, - "\U0001f468\u200d\U0001f527": {":man_mechanic:", ":male-mechanic:"}, - "\U0001f468\u200d\U0001f52c": {":man_scientist:", ":male-scientist:"}, - "\U0001f468\u200d\U0001f680": {":man_astronaut:", ":male-astronaut:"}, - "\U0001f468\u200d\U0001f692": {":man_firefighter:", ":male-firefighter:"}, - "\U0001f468\u200d\U0001f9af": {":man_with_white_cane:", ":man_with_probing_cane:"}, - "\U0001f468\u200d\U0001f9b0": {":man_red_hair:", ":red_haired_man:"}, - "\U0001f468\u200d\U0001f9b1": {":man_curly_hair:", ":curly_haired_man:"}, - "\U0001f468\u200d\U0001f9b2": {":bald_man:", ":man_bald:"}, - "\U0001f468\u200d\U0001f9b3": {":man_white_hair:", ":white_haired_man:"}, - "\U0001f468\u200d\U0001f9bc": {":man_in_motorized_wheelchair:"}, - "\U0001f468\u200d\U0001f9bd": {":man_in_manual_wheelchair:"}, - "\U0001f468\u200d\u2695\ufe0f": {":male-doctor:", ":man_health_worker:"}, - "\U0001f468\u200d\u2696\ufe0f": {":man_judge:", ":male-judge:"}, - "\U0001f468\u200d\u2708\ufe0f": {":man_pilot:", ":male-pilot:"}, - "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468": {":couple_mm:", ":man-heart-man:", ":couple_with_heart_man_man:"}, - "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":kiss_mm:", ":kiss_man_man:", ":man-kiss-man:", ":couplekiss_man_man:"}, - "\U0001f469": {":woman:"}, - "\U0001f469\U0001f3fb": {":woman_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f33e": {":woman_farmer_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f373": {":woman_cook_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f393": {":woman_student_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f3a4": {":woman_singer_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f3a8": {":woman_artist_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f3eb": {":woman_teacher_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f3ed": {":woman_factory_worker_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f4bb": {":woman_technologist_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f4bc": {":woman_office_worker_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f527": {":woman_mechanic_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f52c": {":woman_scientist_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f680": {":woman_astronaut_tone1:"}, - "\U0001f469\U0001f3fb\u200d\U0001f692": {":woman_firefighter_tone1:"}, - "\U0001f469\U0001f3fb\u200d\u2695\ufe0f": {":woman_health_worker_tone1:"}, - "\U0001f469\U0001f3fb\u200d\u2696\ufe0f": {":woman_judge_tone1:"}, - "\U0001f469\U0001f3fb\u200d\u2708\ufe0f": {":woman_pilot_tone1:"}, - "\U0001f469\U0001f3fc": {":woman_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f33e": {":woman_farmer_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f373": {":woman_cook_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f393": {":woman_student_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f3a4": {":woman_singer_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f3a8": {":woman_artist_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f3eb": {":woman_teacher_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f3ed": {":woman_factory_worker_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f4bb": {":woman_technologist_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f4bc": {":woman_office_worker_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f527": {":woman_mechanic_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f52c": {":woman_scientist_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f680": {":woman_astronaut_tone2:"}, - "\U0001f469\U0001f3fc\u200d\U0001f692": {":woman_firefighter_tone2:"}, - "\U0001f469\U0001f3fc\u200d\u2695\ufe0f": {":woman_health_worker_tone2:"}, - "\U0001f469\U0001f3fc\u200d\u2696\ufe0f": {":woman_judge_tone2:"}, - "\U0001f469\U0001f3fc\u200d\u2708\ufe0f": {":woman_pilot_tone2:"}, - "\U0001f469\U0001f3fd": {":woman_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f33e": {":woman_farmer_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f373": {":woman_cook_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f393": {":woman_student_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f3a4": {":woman_singer_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f3a8": {":woman_artist_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f3eb": {":woman_teacher_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f3ed": {":woman_factory_worker_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f4bb": {":woman_technologist_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f4bc": {":woman_office_worker_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f527": {":woman_mechanic_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f52c": {":woman_scientist_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f680": {":woman_astronaut_tone3:"}, - "\U0001f469\U0001f3fd\u200d\U0001f692": {":woman_firefighter_tone3:"}, - "\U0001f469\U0001f3fd\u200d\u2695\ufe0f": {":woman_health_worker_tone3:"}, - "\U0001f469\U0001f3fd\u200d\u2696\ufe0f": {":woman_judge_tone3:"}, - "\U0001f469\U0001f3fd\u200d\u2708\ufe0f": {":woman_pilot_tone3:"}, - "\U0001f469\U0001f3fe": {":woman_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f33e": {":woman_farmer_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f373": {":woman_cook_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f393": {":woman_student_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f3a4": {":woman_singer_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f3a8": {":woman_artist_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f3eb": {":woman_teacher_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f3ed": {":woman_factory_worker_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f4bb": {":woman_technologist_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f4bc": {":woman_office_worker_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f527": {":woman_mechanic_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f52c": {":woman_scientist_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f680": {":woman_astronaut_tone4:"}, - "\U0001f469\U0001f3fe\u200d\U0001f692": {":woman_firefighter_tone4:"}, - "\U0001f469\U0001f3fe\u200d\u2695\ufe0f": {":woman_health_worker_tone4:"}, - "\U0001f469\U0001f3fe\u200d\u2696\ufe0f": {":woman_judge_tone4:"}, - "\U0001f469\U0001f3fe\u200d\u2708\ufe0f": {":woman_pilot_tone4:"}, - "\U0001f469\U0001f3ff": {":woman_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f33e": {":woman_farmer_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f373": {":woman_cook_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f393": {":woman_student_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f3a4": {":woman_singer_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f3a8": {":woman_artist_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f3eb": {":woman_teacher_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f3ed": {":woman_factory_worker_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f4bb": {":woman_technologist_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f4bc": {":woman_office_worker_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f527": {":woman_mechanic_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f52c": {":woman_scientist_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f680": {":woman_astronaut_tone5:"}, - "\U0001f469\U0001f3ff\u200d\U0001f692": {":woman_firefighter_tone5:"}, - "\U0001f469\U0001f3ff\u200d\u2695\ufe0f": {":woman_health_worker_tone5:"}, - "\U0001f469\U0001f3ff\u200d\u2696\ufe0f": {":woman_judge_tone5:"}, - "\U0001f469\U0001f3ff\u200d\u2708\ufe0f": {":woman_pilot_tone5:"}, - "\U0001f469\u200d\U0001f33e": {":woman_farmer:", ":female-farmer:"}, - "\U0001f469\u200d\U0001f373": {":woman_cook:", ":female-cook:"}, - "\U0001f469\u200d\U0001f37c": {":woman_feeding_baby:"}, - "\U0001f469\u200d\U0001f393": {":woman_student:", ":female-student:"}, - "\U0001f469\u200d\U0001f3a4": {":woman_singer:", ":female-singer:"}, - "\U0001f469\u200d\U0001f3a8": {":woman_artist:", ":female-artist:"}, - "\U0001f469\u200d\U0001f3eb": {":woman_teacher:", ":female-teacher:"}, - "\U0001f469\u200d\U0001f3ed": {":woman_factory_worker:", ":female-factory-worker:"}, - "\U0001f469\u200d\U0001f466": {":woman-boy:", ":family_woman_boy:"}, - "\U0001f469\u200d\U0001f466\u200d\U0001f466": {":woman-boy-boy:", ":family_woman_boy_boy:"}, - "\U0001f469\u200d\U0001f467": {":woman-girl:", ":family_woman_girl:"}, - "\U0001f469\u200d\U0001f467\u200d\U0001f466": {":woman-girl-boy:", ":family_woman_girl_boy:"}, - "\U0001f469\u200d\U0001f467\u200d\U0001f467": {":woman-girl-girl:", ":family_woman_girl_girl:"}, - "\U0001f469\u200d\U0001f469\u200d\U0001f466": {":family_wwb:", ":woman-woman-boy:", ":family_woman_woman_boy:"}, - "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466": {":family_wwbb:", ":woman-woman-boy-boy:", ":family_woman_woman_boy_boy:"}, - "\U0001f469\u200d\U0001f469\u200d\U0001f467": {":family_wwg:", ":woman-woman-girl:", ":family_woman_woman_girl:"}, - "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466": {":family_wwgb:", ":woman-woman-girl-boy:", ":family_woman_woman_girl_boy:"}, - "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467": {":family_wwgg:", ":woman-woman-girl-girl:", ":family_woman_woman_girl_girl:"}, - "\U0001f469\u200d\U0001f4bb": {":woman_technologist:", ":female-technologist:"}, - "\U0001f469\u200d\U0001f4bc": {":woman_office_worker:", ":female-office-worker:"}, - "\U0001f469\u200d\U0001f527": {":woman_mechanic:", ":female-mechanic:"}, - "\U0001f469\u200d\U0001f52c": {":woman_scientist:", ":female-scientist:"}, - "\U0001f469\u200d\U0001f680": {":woman_astronaut:", ":female-astronaut:"}, - "\U0001f469\u200d\U0001f692": {":woman_firefighter:", ":female-firefighter:"}, - "\U0001f469\u200d\U0001f9af": {":woman_with_white_cane:", ":woman_with_probing_cane:"}, - "\U0001f469\u200d\U0001f9b0": {":woman_red_hair:", ":red_haired_woman:"}, - "\U0001f469\u200d\U0001f9b1": {":woman_curly_hair:", ":curly_haired_woman:"}, - "\U0001f469\u200d\U0001f9b2": {":bald_woman:", ":woman_bald:"}, - "\U0001f469\u200d\U0001f9b3": {":woman_white_hair:", ":white_haired_woman:"}, - "\U0001f469\u200d\U0001f9bc": {":woman_in_motorized_wheelchair:"}, - "\U0001f469\u200d\U0001f9bd": {":woman_in_manual_wheelchair:"}, - "\U0001f469\u200d\u2695\ufe0f": {":female-doctor:", ":woman_health_worker:"}, - "\U0001f469\u200d\u2696\ufe0f": {":woman_judge:", ":female-judge:"}, - "\U0001f469\u200d\u2708\ufe0f": {":woman_pilot:", ":female-pilot:"}, - "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468": {":woman-heart-man:", ":couple_with_heart:", ":couple_with_heart_woman_man:"}, - "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469": {":couple_ww:", ":woman-heart-woman:", ":couple_with_heart_woman_woman:"}, - "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":couplekiss:", ":kiss_woman_man:", ":woman-kiss-man:", ":couplekiss_man_woman:"}, - "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469": {":kiss_ww:", ":kiss_woman_woman:", ":woman-kiss-woman:", ":couplekiss_woman_woman:"}, - "\U0001f46b": {":couple:", ":woman_and_man_holding_hands:"}, - "\U0001f46c": {":men_holding_hands:", ":two_men_holding_hands:"}, - "\U0001f46d": {":women_holding_hands:", ":two_women_holding_hands:"}, - "\U0001f46e": {":police_officer:"}, - "\U0001f46e\U0001f3fb": {":police_officer_tone1:"}, - "\U0001f46e\U0001f3fb\u200d\u2640\ufe0f": {":woman_police_officer_tone1:"}, - "\U0001f46e\U0001f3fb\u200d\u2642\ufe0f": {":man_police_officer_tone1:"}, - "\U0001f46e\U0001f3fc": {":police_officer_tone2:"}, - "\U0001f46e\U0001f3fc\u200d\u2640\ufe0f": {":woman_police_officer_tone2:"}, - "\U0001f46e\U0001f3fc\u200d\u2642\ufe0f": {":man_police_officer_tone2:"}, - "\U0001f46e\U0001f3fd": {":police_officer_tone3:"}, - "\U0001f46e\U0001f3fd\u200d\u2640\ufe0f": {":woman_police_officer_tone3:"}, - "\U0001f46e\U0001f3fd\u200d\u2642\ufe0f": {":man_police_officer_tone3:"}, - "\U0001f46e\U0001f3fe": {":police_officer_tone4:"}, - "\U0001f46e\U0001f3fe\u200d\u2640\ufe0f": {":woman_police_officer_tone4:"}, - "\U0001f46e\U0001f3fe\u200d\u2642\ufe0f": {":man_police_officer_tone4:"}, - "\U0001f46e\U0001f3ff": {":police_officer_tone5:"}, - "\U0001f46e\U0001f3ff\u200d\u2640\ufe0f": {":woman_police_officer_tone5:"}, - "\U0001f46e\U0001f3ff\u200d\u2642\ufe0f": {":man_police_officer_tone5:"}, - "\U0001f46e\u200d\u2640\ufe0f": {":policewoman:", ":woman_police_officer:", ":female-police-officer:"}, - "\U0001f46e\u200d\u2642\ufe0f": {":cop:", ":policeman:", ":man_police_officer:", ":male-police-officer:"}, - "\U0001f46f": {":people_with_bunny_ears:", ":people_with_bunny_ears_partying:"}, - "\U0001f46f\u200d\u2640\ufe0f": {":dancers:", ":dancing_women:", ":women_with_bunny_ears:", ":woman-with-bunny-ears-partying:", ":women_with_bunny_ears_partying:"}, - "\U0001f46f\u200d\u2642\ufe0f": {":dancing_men:", ":men_with_bunny_ears:", ":man-with-bunny-ears-partying:", ":men_with_bunny_ears_partying:"}, - "\U0001f470": {":bride_with_veil:", ":person_with_veil:"}, - "\U0001f470\U0001f3fb": {":bride_with_veil_tone1:"}, - "\U0001f470\U0001f3fc": {":bride_with_veil_tone2:"}, - "\U0001f470\U0001f3fd": {":bride_with_veil_tone3:"}, - "\U0001f470\U0001f3fe": {":bride_with_veil_tone4:"}, - "\U0001f470\U0001f3ff": {":bride_with_veil_tone5:"}, - "\U0001f470\u200d\u2640\ufe0f": {":woman_with_veil:"}, - "\U0001f470\u200d\u2642\ufe0f": {":man_with_veil:"}, - "\U0001f471": {":person_blond_hair:", ":blond_haired_person:"}, - "\U0001f471\U0001f3fb": {":blond_haired_person_tone1:"}, - "\U0001f471\U0001f3fb\u200d\u2640\ufe0f": {":blond-haired_woman_tone1:"}, - "\U0001f471\U0001f3fb\u200d\u2642\ufe0f": {":blond-haired_man_tone1:"}, - "\U0001f471\U0001f3fc": {":blond_haired_person_tone2:"}, - "\U0001f471\U0001f3fc\u200d\u2640\ufe0f": {":blond-haired_woman_tone2:"}, - "\U0001f471\U0001f3fc\u200d\u2642\ufe0f": {":blond-haired_man_tone2:"}, - "\U0001f471\U0001f3fd": {":blond_haired_person_tone3:"}, - "\U0001f471\U0001f3fd\u200d\u2640\ufe0f": {":blond-haired_woman_tone3:"}, - "\U0001f471\U0001f3fd\u200d\u2642\ufe0f": {":blond-haired_man_tone3:"}, - "\U0001f471\U0001f3fe": {":blond_haired_person_tone4:"}, - "\U0001f471\U0001f3fe\u200d\u2640\ufe0f": {":blond-haired_woman_tone4:"}, - "\U0001f471\U0001f3fe\u200d\u2642\ufe0f": {":blond-haired_man_tone4:"}, - "\U0001f471\U0001f3ff": {":blond_haired_person_tone5:"}, - "\U0001f471\U0001f3ff\u200d\u2640\ufe0f": {":blond-haired_woman_tone5:"}, - "\U0001f471\U0001f3ff\u200d\u2642\ufe0f": {":blond-haired_man_tone5:"}, - "\U0001f471\u200d\u2640\ufe0f": {":blonde_woman:", ":woman_blond_hair:", ":blond-haired-woman:", ":blond-haired_woman:", ":blond_haired_woman:"}, - "\U0001f471\u200d\u2642\ufe0f": {":man_blond_hair:", ":blond-haired-man:", ":blond-haired_man:", ":blond_haired_man:", ":person_with_blond_hair:"}, - "\U0001f472": {":man_with_gua_pi_mao:", ":man_with_chinese_cap:", ":person_with_skullcap:"}, - "\U0001f472\U0001f3fb": {":man_with_chinese_cap_tone1:"}, - "\U0001f472\U0001f3fc": {":man_with_chinese_cap_tone2:"}, - "\U0001f472\U0001f3fd": {":man_with_chinese_cap_tone3:"}, - "\U0001f472\U0001f3fe": {":man_with_chinese_cap_tone4:"}, - "\U0001f472\U0001f3ff": {":man_with_chinese_cap_tone5:"}, - "\U0001f473": {":person_with_turban:", ":person_wearing_turban:"}, - "\U0001f473\U0001f3fb": {":person_wearing_turban_tone1:"}, - "\U0001f473\U0001f3fb\u200d\u2640\ufe0f": {":woman_wearing_turban_tone1:"}, - "\U0001f473\U0001f3fb\u200d\u2642\ufe0f": {":man_wearing_turban_tone1:"}, - "\U0001f473\U0001f3fc": {":person_wearing_turban_tone2:"}, - "\U0001f473\U0001f3fc\u200d\u2640\ufe0f": {":woman_wearing_turban_tone2:"}, - "\U0001f473\U0001f3fc\u200d\u2642\ufe0f": {":man_wearing_turban_tone2:"}, - "\U0001f473\U0001f3fd": {":person_wearing_turban_tone3:"}, - "\U0001f473\U0001f3fd\u200d\u2640\ufe0f": {":woman_wearing_turban_tone3:"}, - "\U0001f473\U0001f3fd\u200d\u2642\ufe0f": {":man_wearing_turban_tone3:"}, - "\U0001f473\U0001f3fe": {":person_wearing_turban_tone4:"}, - "\U0001f473\U0001f3fe\u200d\u2640\ufe0f": {":woman_wearing_turban_tone4:"}, - "\U0001f473\U0001f3fe\u200d\u2642\ufe0f": {":man_wearing_turban_tone4:"}, - "\U0001f473\U0001f3ff": {":person_wearing_turban_tone5:"}, - "\U0001f473\U0001f3ff\u200d\u2640\ufe0f": {":woman_wearing_turban_tone5:"}, - "\U0001f473\U0001f3ff\u200d\u2642\ufe0f": {":man_wearing_turban_tone5:"}, - "\U0001f473\u200d\u2640\ufe0f": {":woman_with_turban:", ":woman-wearing-turban:", ":woman_wearing_turban:"}, - "\U0001f473\u200d\u2642\ufe0f": {":man_with_turban:", ":man-wearing-turban:", ":man_wearing_turban:"}, - "\U0001f474": {":old_man:", ":older_man:"}, - "\U0001f474\U0001f3fb": {":older_man_tone1:"}, - "\U0001f474\U0001f3fc": {":older_man_tone2:"}, - "\U0001f474\U0001f3fd": {":older_man_tone3:"}, - "\U0001f474\U0001f3fe": {":older_man_tone4:"}, - "\U0001f474\U0001f3ff": {":older_man_tone5:"}, - "\U0001f475": {":old_woman:", ":older_woman:"}, - "\U0001f475\U0001f3fb": {":older_woman_tone1:"}, - "\U0001f475\U0001f3fc": {":older_woman_tone2:"}, - "\U0001f475\U0001f3fd": {":older_woman_tone3:"}, - "\U0001f475\U0001f3fe": {":older_woman_tone4:"}, - "\U0001f475\U0001f3ff": {":older_woman_tone5:"}, - "\U0001f476": {":baby:"}, - "\U0001f476\U0001f3fb": {":baby_tone1:"}, - "\U0001f476\U0001f3fc": {":baby_tone2:"}, - "\U0001f476\U0001f3fd": {":baby_tone3:"}, - "\U0001f476\U0001f3fe": {":baby_tone4:"}, - "\U0001f476\U0001f3ff": {":baby_tone5:"}, - "\U0001f477\U0001f3fb": {":construction_worker_tone1:"}, - "\U0001f477\U0001f3fb\u200d\u2640\ufe0f": {":woman_construction_worker_tone1:"}, - "\U0001f477\U0001f3fb\u200d\u2642\ufe0f": {":man_construction_worker_tone1:"}, - "\U0001f477\U0001f3fc": {":construction_worker_tone2:"}, - "\U0001f477\U0001f3fc\u200d\u2640\ufe0f": {":woman_construction_worker_tone2:"}, - "\U0001f477\U0001f3fc\u200d\u2642\ufe0f": {":man_construction_worker_tone2:"}, - "\U0001f477\U0001f3fd": {":construction_worker_tone3:"}, - "\U0001f477\U0001f3fd\u200d\u2640\ufe0f": {":woman_construction_worker_tone3:"}, - "\U0001f477\U0001f3fd\u200d\u2642\ufe0f": {":man_construction_worker_tone3:"}, - "\U0001f477\U0001f3fe": {":construction_worker_tone4:"}, - "\U0001f477\U0001f3fe\u200d\u2640\ufe0f": {":woman_construction_worker_tone4:"}, - "\U0001f477\U0001f3fe\u200d\u2642\ufe0f": {":man_construction_worker_tone4:"}, - "\U0001f477\U0001f3ff": {":construction_worker_tone5:"}, - "\U0001f477\U0001f3ff\u200d\u2640\ufe0f": {":woman_construction_worker_tone5:"}, - "\U0001f477\U0001f3ff\u200d\u2642\ufe0f": {":man_construction_worker_tone5:"}, - "\U0001f477\u200d\u2640\ufe0f": {":construction_worker_woman:", ":woman_construction_worker:", ":female-construction-worker:"}, - "\U0001f477\u200d\u2642\ufe0f": {":construction_worker:", ":construction_worker_man:", ":man_construction_worker:", ":male-construction-worker:"}, - "\U0001f478": {":princess:"}, - "\U0001f478\U0001f3fb": {":princess_tone1:"}, - "\U0001f478\U0001f3fc": {":princess_tone2:"}, - "\U0001f478\U0001f3fd": {":princess_tone3:"}, - "\U0001f478\U0001f3fe": {":princess_tone4:"}, - "\U0001f478\U0001f3ff": {":princess_tone5:"}, - "\U0001f479": {":ogre:", ":japanese_ogre:"}, - "\U0001f47a": {":goblin:", ":japanese_goblin:"}, - "\U0001f47b": {":ghost:"}, - "\U0001f47c": {":angel:", ":baby_angel:"}, - "\U0001f47c\U0001f3fb": {":angel_tone1:"}, - "\U0001f47c\U0001f3fc": {":angel_tone2:"}, - "\U0001f47c\U0001f3fd": {":angel_tone3:"}, - "\U0001f47c\U0001f3fe": {":angel_tone4:"}, - "\U0001f47c\U0001f3ff": {":angel_tone5:"}, - "\U0001f47d": {":alien:"}, - "\U0001f47e": {":alien_monster:", ":space_invader:"}, - "\U0001f47f": {":imp:", ":angry_face_with_horns:"}, - "\U0001f480": {":skull:"}, - "\U0001f481": {":person_tipping_hand:", ":tipping_hand_person:"}, - "\U0001f481\U0001f3fb": {":person_tipping_hand_tone1:"}, - "\U0001f481\U0001f3fb\u200d\u2640\ufe0f": {":woman_tipping_hand_tone1:"}, - "\U0001f481\U0001f3fb\u200d\u2642\ufe0f": {":man_tipping_hand_tone1:"}, - "\U0001f481\U0001f3fc": {":person_tipping_hand_tone2:"}, - "\U0001f481\U0001f3fc\u200d\u2640\ufe0f": {":woman_tipping_hand_tone2:"}, - "\U0001f481\U0001f3fc\u200d\u2642\ufe0f": {":man_tipping_hand_tone2:"}, - "\U0001f481\U0001f3fd": {":person_tipping_hand_tone3:"}, - "\U0001f481\U0001f3fd\u200d\u2640\ufe0f": {":woman_tipping_hand_tone3:"}, - "\U0001f481\U0001f3fd\u200d\u2642\ufe0f": {":man_tipping_hand_tone3:"}, - "\U0001f481\U0001f3fe": {":person_tipping_hand_tone4:"}, - "\U0001f481\U0001f3fe\u200d\u2640\ufe0f": {":woman_tipping_hand_tone4:"}, - "\U0001f481\U0001f3fe\u200d\u2642\ufe0f": {":man_tipping_hand_tone4:"}, - "\U0001f481\U0001f3ff": {":person_tipping_hand_tone5:"}, - "\U0001f481\U0001f3ff\u200d\u2640\ufe0f": {":woman_tipping_hand_tone5:"}, - "\U0001f481\U0001f3ff\u200d\u2642\ufe0f": {":man_tipping_hand_tone5:"}, - "\U0001f481\u200d\u2640\ufe0f": {":sassy_woman:", ":tipping_hand_woman:", ":woman-tipping-hand:", ":woman_tipping_hand:", ":information_desk_person:"}, - "\U0001f481\u200d\u2642\ufe0f": {":sassy_man:", ":man-tipping-hand:", ":man_tipping_hand:", ":tipping_hand_man:"}, - "\U0001f482": {":guard:"}, - "\U0001f482\U0001f3fb": {":guard_tone1:"}, - "\U0001f482\U0001f3fb\u200d\u2640\ufe0f": {":woman_guard_tone1:"}, - "\U0001f482\U0001f3fb\u200d\u2642\ufe0f": {":man_guard_tone1:"}, - "\U0001f482\U0001f3fc": {":guard_tone2:"}, - "\U0001f482\U0001f3fc\u200d\u2640\ufe0f": {":woman_guard_tone2:"}, - "\U0001f482\U0001f3fc\u200d\u2642\ufe0f": {":man_guard_tone2:"}, - "\U0001f482\U0001f3fd": {":guard_tone3:"}, - "\U0001f482\U0001f3fd\u200d\u2640\ufe0f": {":woman_guard_tone3:"}, - "\U0001f482\U0001f3fd\u200d\u2642\ufe0f": {":man_guard_tone3:"}, - "\U0001f482\U0001f3fe": {":guard_tone4:"}, - "\U0001f482\U0001f3fe\u200d\u2640\ufe0f": {":woman_guard_tone4:"}, - "\U0001f482\U0001f3fe\u200d\u2642\ufe0f": {":man_guard_tone4:"}, - "\U0001f482\U0001f3ff": {":guard_tone5:"}, - "\U0001f482\U0001f3ff\u200d\u2640\ufe0f": {":woman_guard_tone5:"}, - "\U0001f482\U0001f3ff\u200d\u2642\ufe0f": {":man_guard_tone5:"}, - "\U0001f482\u200d\u2640\ufe0f": {":guardswoman:", ":woman_guard:", ":female-guard:"}, - "\U0001f482\u200d\u2642\ufe0f": {":guardsman:", ":man_guard:", ":male-guard:"}, - "\U0001f483": {":dancer:", ":woman_dancing:"}, - "\U0001f483\U0001f3fb": {":dancer_tone1:"}, - "\U0001f483\U0001f3fc": {":dancer_tone2:"}, - "\U0001f483\U0001f3fd": {":dancer_tone3:"}, - "\U0001f483\U0001f3fe": {":dancer_tone4:"}, - "\U0001f483\U0001f3ff": {":dancer_tone5:"}, - "\U0001f484": {":lipstick:"}, - "\U0001f485": {":nail_care:", ":nail_polish:"}, - "\U0001f485\U0001f3fb": {":nail_care_tone1:"}, - "\U0001f485\U0001f3fc": {":nail_care_tone2:"}, - "\U0001f485\U0001f3fd": {":nail_care_tone3:"}, - "\U0001f485\U0001f3fe": {":nail_care_tone4:"}, - "\U0001f485\U0001f3ff": {":nail_care_tone5:"}, - "\U0001f486": {":person_getting_massage:"}, - "\U0001f486\U0001f3fb": {":person_getting_massage_tone1:"}, - "\U0001f486\U0001f3fb\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone1:"}, - "\U0001f486\U0001f3fb\u200d\u2642\ufe0f": {":man_getting_face_massage_tone1:"}, - "\U0001f486\U0001f3fc": {":person_getting_massage_tone2:"}, - "\U0001f486\U0001f3fc\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone2:"}, - "\U0001f486\U0001f3fc\u200d\u2642\ufe0f": {":man_getting_face_massage_tone2:"}, - "\U0001f486\U0001f3fd": {":person_getting_massage_tone3:"}, - "\U0001f486\U0001f3fd\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone3:"}, - "\U0001f486\U0001f3fd\u200d\u2642\ufe0f": {":man_getting_face_massage_tone3:"}, - "\U0001f486\U0001f3fe": {":person_getting_massage_tone4:"}, - "\U0001f486\U0001f3fe\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone4:"}, - "\U0001f486\U0001f3fe\u200d\u2642\ufe0f": {":man_getting_face_massage_tone4:"}, - "\U0001f486\U0001f3ff": {":person_getting_massage_tone5:"}, - "\U0001f486\U0001f3ff\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone5:"}, - "\U0001f486\U0001f3ff\u200d\u2642\ufe0f": {":man_getting_face_massage_tone5:"}, - "\U0001f486\u200d\u2640\ufe0f": {":massage:", ":massage_woman:", ":woman-getting-massage:", ":woman_getting_massage:", ":woman_getting_face_massage:"}, - "\U0001f486\u200d\u2642\ufe0f": {":massage_man:", ":man-getting-massage:", ":man_getting_massage:", ":man_getting_face_massage:"}, - "\U0001f487": {":person_getting_haircut:"}, - "\U0001f487\U0001f3fb": {":person_getting_haircut_tone1:"}, - "\U0001f487\U0001f3fb\u200d\u2640\ufe0f": {":woman_getting_haircut_tone1:"}, - "\U0001f487\U0001f3fb\u200d\u2642\ufe0f": {":man_getting_haircut_tone1:"}, - "\U0001f487\U0001f3fc": {":person_getting_haircut_tone2:"}, - "\U0001f487\U0001f3fc\u200d\u2640\ufe0f": {":woman_getting_haircut_tone2:"}, - "\U0001f487\U0001f3fc\u200d\u2642\ufe0f": {":man_getting_haircut_tone2:"}, - "\U0001f487\U0001f3fd": {":person_getting_haircut_tone3:"}, - "\U0001f487\U0001f3fd\u200d\u2640\ufe0f": {":woman_getting_haircut_tone3:"}, - "\U0001f487\U0001f3fd\u200d\u2642\ufe0f": {":man_getting_haircut_tone3:"}, - "\U0001f487\U0001f3fe": {":person_getting_haircut_tone4:"}, - "\U0001f487\U0001f3fe\u200d\u2640\ufe0f": {":woman_getting_haircut_tone4:"}, - "\U0001f487\U0001f3fe\u200d\u2642\ufe0f": {":man_getting_haircut_tone4:"}, - "\U0001f487\U0001f3ff": {":person_getting_haircut_tone5:"}, - "\U0001f487\U0001f3ff\u200d\u2640\ufe0f": {":woman_getting_haircut_tone5:"}, - "\U0001f487\U0001f3ff\u200d\u2642\ufe0f": {":man_getting_haircut_tone5:"}, - "\U0001f487\u200d\u2640\ufe0f": {":haircut:", ":haircut_woman:", ":woman-getting-haircut:", ":woman_getting_haircut:"}, - "\U0001f487\u200d\u2642\ufe0f": {":haircut_man:", ":man-getting-haircut:", ":man_getting_haircut:"}, - "\U0001f488": {":barber:", ":barber_pole:"}, - "\U0001f489": {":syringe:"}, - "\U0001f48a": {":pill:"}, - "\U0001f48b": {":kiss:", ":kiss_mark:"}, - "\U0001f48c": {":love_letter:"}, - "\U0001f48d": {":ring:"}, - "\U0001f48e": {":gem:", ":gem_stone:"}, - "\U0001f490": {":bouquet:"}, - "\U0001f492": {":wedding:"}, - "\U0001f493": {":heartbeat:", ":beating_heart:"}, - "\U0001f494": {":broken_heart:"}, - "\U0001f495": {":two_hearts:"}, - "\U0001f496": {":sparkling_heart:"}, - "\U0001f497": {":heartpulse:", ":growing_heart:"}, - "\U0001f498": {":cupid:", ":heart_with_arrow:"}, - "\U0001f499": {":blue_heart:"}, - "\U0001f49a": {":green_heart:"}, - "\U0001f49b": {":yellow_heart:"}, - "\U0001f49c": {":purple_heart:"}, - "\U0001f49d": {":gift_heart:", ":heart_with_ribbon:"}, - "\U0001f49e": {":revolving_hearts:"}, - "\U0001f49f": {":heart_decoration:"}, - "\U0001f4a0": {":diamond_with_a_dot:", ":diamond_shape_with_a_dot_inside:"}, - "\U0001f4a1": {":bulb:", ":light_bulb:"}, - "\U0001f4a2": {":anger:", ":anger_symbol:"}, - "\U0001f4a3": {":bomb:"}, - "\U0001f4a4": {":zzz:"}, - "\U0001f4a5": {":boom:", ":collision:"}, - "\U0001f4a6": {":sweat_drops:", ":sweat_droplets:"}, - "\U0001f4a7": {":droplet:"}, - "\U0001f4a8": {":dash:", ":dashing_away:"}, - "\U0001f4a9": {":poop:", ":shit:", ":hankey:", ":pile_of_poo:"}, - "\U0001f4aa": {":muscle:", ":flexed_biceps:"}, - "\U0001f4aa\U0001f3fb": {":muscle_tone1:"}, - "\U0001f4aa\U0001f3fc": {":muscle_tone2:"}, - "\U0001f4aa\U0001f3fd": {":muscle_tone3:"}, - "\U0001f4aa\U0001f3fe": {":muscle_tone4:"}, - "\U0001f4aa\U0001f3ff": {":muscle_tone5:"}, - "\U0001f4ab": {":dizzy:"}, - "\U0001f4ac": {":speech_balloon:"}, - "\U0001f4ad": {":thought_balloon:"}, - "\U0001f4ae": {":white_flower:"}, - "\U0001f4af": {":100:", ":hundred_points:"}, - "\U0001f4b0": {":moneybag:", ":money_bag:"}, - "\U0001f4b1": {":currency_exchange:"}, - "\U0001f4b2": {":heavy_dollar_sign:"}, - "\U0001f4b3": {":credit_card:"}, - "\U0001f4b4": {":yen:", ":yen_banknote:"}, - "\U0001f4b5": {":dollar:", ":dollar_banknote:"}, - "\U0001f4b6": {":euro:", ":euro_banknote:"}, - "\U0001f4b7": {":pound:", ":pound_banknote:"}, - "\U0001f4b8": {":money_with_wings:"}, - "\U0001f4b9": {":chart:", ":chart_increasing_with_yen:"}, - "\U0001f4ba": {":seat:"}, - "\U0001f4bb": {":laptop:", ":computer:"}, - "\U0001f4bc": {":briefcase:"}, - "\U0001f4bd": {":minidisc:", ":computer_disk:"}, - "\U0001f4be": {":floppy_disk:"}, - "\U0001f4bf": {":cd:", ":optical_disk:"}, - "\U0001f4c0": {":dvd:"}, - "\U0001f4c1": {":file_folder:"}, - "\U0001f4c2": {":open_file_folder:"}, - "\U0001f4c3": {":page_with_curl:"}, - "\U0001f4c4": {":page_facing_up:"}, - "\U0001f4c5": {":date:"}, - "\U0001f4c6": {":calendar:", ":tear-off_calendar:"}, - "\U0001f4c7": {":card_index:"}, - "\U0001f4c8": {":chart_increasing:", ":chart_with_upwards_trend:"}, - "\U0001f4c9": {":chart_decreasing:", ":chart_with_downwards_trend:"}, - "\U0001f4ca": {":bar_chart:"}, - "\U0001f4cb": {":clipboard:"}, - "\U0001f4cc": {":pushpin:"}, - "\U0001f4cd": {":round_pushpin:"}, - "\U0001f4ce": {":paperclip:"}, - "\U0001f4cf": {":straight_ruler:"}, - "\U0001f4d0": {":triangular_ruler:"}, - "\U0001f4d1": {":bookmark_tabs:"}, - "\U0001f4d2": {":ledger:"}, - "\U0001f4d3": {":notebook:"}, - "\U0001f4d4": {":notebook_with_decorative_cover:"}, - "\U0001f4d5": {":closed_book:"}, - "\U0001f4d6": {":book:", ":open_book:"}, - "\U0001f4d7": {":green_book:"}, - "\U0001f4d8": {":blue_book:"}, - "\U0001f4d9": {":orange_book:"}, - "\U0001f4da": {":books:"}, - "\U0001f4db": {":name_badge:"}, - "\U0001f4dc": {":scroll:"}, - "\U0001f4dd": {":memo:"}, - "\U0001f4de": {":telephone_receiver:"}, - "\U0001f4df": {":pager:"}, - "\U0001f4e0": {":fax:", ":fax_machine:"}, - "\U0001f4e1": {":satellite_antenna:"}, - "\U0001f4e2": {":loudspeaker:"}, - "\U0001f4e3": {":mega:", ":megaphone:"}, - "\U0001f4e4": {":outbox_tray:"}, - "\U0001f4e5": {":inbox_tray:"}, - "\U0001f4e6": {":package:"}, - "\U0001f4e7": {":e-mail:"}, - "\U0001f4e8": {":incoming_envelope:"}, - "\U0001f4e9": {":envelope_with_arrow:"}, - "\U0001f4ea": {":mailbox_closed:", ":closed_mailbox_with_lowered_flag:"}, - "\U0001f4eb": {":mailbox:", ":closed_mailbox_with_raised_flag:"}, - "\U0001f4ec": {":mailbox_with_mail:", ":open_mailbox_with_raised_flag:"}, - "\U0001f4ed": {":mailbox_with_no_mail:", ":open_mailbox_with_lowered_flag:"}, - "\U0001f4ee": {":postbox:"}, - "\U0001f4ef": {":postal_horn:"}, - "\U0001f4f0": {":newspaper:"}, - "\U0001f4f1": {":iphone:", ":mobile_phone:"}, - "\U0001f4f2": {":calling:", ":mobile_phone_with_arrow:"}, - "\U0001f4f3": {":vibration_mode:"}, - "\U0001f4f4": {":mobile_phone_off:"}, - "\U0001f4f5": {":no_mobile_phones:"}, - "\U0001f4f6": {":antenna_bars:", ":signal_strength:"}, - "\U0001f4f7": {":camera:"}, - "\U0001f4f8": {":camera_flash:", ":camera_with_flash:"}, - "\U0001f4f9": {":video_camera:"}, - "\U0001f4fa": {":tv:", ":television:"}, - "\U0001f4fb": {":radio:"}, - "\U0001f4fc": {":vhs:", ":videocassette:"}, - "\U0001f4fd": {":projector:"}, - "\U0001f4fd\ufe0f": {":film_projector:"}, - "\U0001f4ff": {":prayer_beads:"}, - "\U0001f500": {":shuffle_tracks_button:", ":twisted_rightwards_arrows:"}, - "\U0001f501": {":repeat:", ":repeat_button:"}, - "\U0001f502": {":repeat_one:", ":repeat_single_button:"}, - "\U0001f503": {":arrows_clockwise:", ":clockwise_vertical_arrows:"}, - "\U0001f504": {":arrows_counterclockwise:", ":counterclockwise_arrows_button:"}, - "\U0001f505": {":dim_button:", ":low_brightness:"}, - "\U0001f506": {":bright_button:", ":high_brightness:"}, - "\U0001f507": {":mute:", ":muted_speaker:"}, - "\U0001f508": {":speaker:", ":speaker_low_volume:"}, - "\U0001f509": {":sound:", ":speaker_medium_volume:"}, - "\U0001f50a": {":loud_sound:", ":speaker_high_volume:"}, - "\U0001f50b": {":battery:"}, - "\U0001f50c": {":electric_plug:"}, - "\U0001f50d": {":mag:", ":magnifying_glass_tilted_left:"}, - "\U0001f50e": {":mag_right:", ":magnifying_glass_tilted_right:"}, - "\U0001f50f": {":locked_with_pen:", ":lock_with_ink_pen:"}, - "\U0001f510": {":locked_with_key:", ":closed_lock_with_key:"}, - "\U0001f511": {":key:"}, - "\U0001f512": {":lock:", ":locked:"}, - "\U0001f513": {":unlock:", ":unlocked:"}, - "\U0001f514": {":bell:"}, - "\U0001f515": {":no_bell:", ":bell_with_slash:"}, - "\U0001f516": {":bookmark:"}, - "\U0001f517": {":link:"}, - "\U0001f518": {":radio_button:"}, - "\U0001f519": {":back:", ":BACK_arrow:"}, - "\U0001f51a": {":end:", ":END_arrow:"}, - "\U0001f51b": {":on:", ":ON!_arrow:"}, - "\U0001f51c": {":soon:", ":SOON_arrow:"}, - "\U0001f51d": {":top:", ":TOP_arrow:"}, - "\U0001f51e": {":underage:", ":no_one_under_eighteen:"}, - "\U0001f51f": {":keycap_10:", ":keycap_ten:"}, - "\U0001f520": {":capital_abcd:", ":input_latin_uppercase:"}, - "\U0001f521": {":abcd:", ":input_latin_lowercase:"}, - "\U0001f522": {":1234:", ":input_numbers:"}, - "\U0001f523": {":symbols:", ":input_symbols:"}, - "\U0001f524": {":abc:", ":input_latin_letters:"}, - "\U0001f525": {":fire:"}, - "\U0001f526": {":flashlight:"}, - "\U0001f527": {":wrench:"}, - "\U0001f528": {":hammer:"}, - "\U0001f529": {":nut_and_bolt:"}, - "\U0001f52a": {":hocho:", ":knife:", ":kitchen_knife:"}, - "\U0001f52b": {":gun:", ":pistol:"}, - "\U0001f52c": {":microscope:"}, - "\U0001f52d": {":telescope:"}, - "\U0001f52e": {":crystal_ball:"}, - "\U0001f52f": {":six_pointed_star:", ":dotted_six-pointed_star:"}, - "\U0001f530": {":beginner:", ":Japanese_symbol_for_beginner:"}, - "\U0001f531": {":trident:", ":trident_emblem:"}, - "\U0001f532": {":black_square_button:"}, - "\U0001f533": {":white_square_button:"}, - "\U0001f534": {":red_circle:"}, - "\U0001f535": {":blue_circle:", ":large_blue_circle:"}, - "\U0001f536": {":large_orange_diamond:"}, - "\U0001f537": {":large_blue_diamond:"}, - "\U0001f538": {":small_orange_diamond:"}, - "\U0001f539": {":small_blue_diamond:"}, - "\U0001f53a": {":small_red_triangle:", ":red_triangle_pointed_up:"}, - "\U0001f53b": {":small_red_triangle_down:", ":red_triangle_pointed_down:"}, - "\U0001f53c": {":arrow_up_small:", ":upwards_button:"}, - "\U0001f53d": {":arrow_down_small:", ":downwards_button:"}, - "\U0001f549": {":om:"}, - "\U0001f549\ufe0f": {":om_symbol:"}, - "\U0001f54a": {":dove:"}, - "\U0001f54a\ufe0f": {":dove_of_peace:"}, - "\U0001f54b": {":kaaba:"}, - "\U0001f54c": {":mosque:"}, - "\U0001f54d": {":synagogue:"}, - "\U0001f54e": {":menorah:", ":menorah_with_nine_branches:"}, - "\U0001f550": {":clock1:", ":one_o’clock:"}, - "\U0001f551": {":clock2:", ":two_o’clock:"}, - "\U0001f552": {":clock3:", ":three_o’clock:"}, - "\U0001f553": {":clock4:", ":four_o’clock:"}, - "\U0001f554": {":clock5:", ":five_o’clock:"}, - "\U0001f555": {":clock6:", ":six_o’clock:"}, - "\U0001f556": {":clock7:", ":seven_o’clock:"}, - "\U0001f557": {":clock8:", ":eight_o’clock:"}, - "\U0001f558": {":clock9:", ":nine_o’clock:"}, - "\U0001f559": {":clock10:", ":ten_o’clock:"}, - "\U0001f55a": {":clock11:", ":eleven_o’clock:"}, - "\U0001f55b": {":clock12:", ":twelve_o’clock:"}, - "\U0001f55c": {":clock130:", ":one-thirty:"}, - "\U0001f55d": {":clock230:", ":two-thirty:"}, - "\U0001f55e": {":clock330:", ":three-thirty:"}, - "\U0001f55f": {":clock430:", ":four-thirty:"}, - "\U0001f560": {":clock530:", ":five-thirty:"}, - "\U0001f561": {":clock630:", ":six-thirty:"}, - "\U0001f562": {":clock730:", ":seven-thirty:"}, - "\U0001f563": {":clock830:", ":eight-thirty:"}, - "\U0001f564": {":clock930:", ":nine-thirty:"}, - "\U0001f565": {":clock1030:", ":ten-thirty:"}, - "\U0001f566": {":clock1130:", ":eleven-thirty:"}, - "\U0001f567": {":clock1230:", ":twelve-thirty:"}, - "\U0001f56f\ufe0f": {":candle:"}, - "\U0001f570": {":clock:"}, - "\U0001f570\ufe0f": {":mantelpiece_clock:"}, - "\U0001f573\ufe0f": {":hole:"}, - "\U0001f574": {":person_in_suit_levitating:"}, - "\U0001f574\U0001f3fb": {":man_in_business_suit_levitating_tone1:"}, - "\U0001f574\U0001f3fc": {":man_in_business_suit_levitating_tone2:"}, - "\U0001f574\U0001f3fd": {":man_in_business_suit_levitating_tone3:"}, - "\U0001f574\U0001f3fe": {":man_in_business_suit_levitating_tone4:"}, - "\U0001f574\U0001f3ff": {":man_in_business_suit_levitating_tone5:"}, - "\U0001f574\ufe0f": {":business_suit_levitating:", ":man_in_business_suit_levitating:"}, - "\U0001f575": {":detective:"}, - "\U0001f575\U0001f3fb": {":detective_tone1:"}, - "\U0001f575\U0001f3fb\u200d\u2640\ufe0f": {":woman_detective_tone1:"}, - "\U0001f575\U0001f3fb\u200d\u2642\ufe0f": {":man_detective_tone1:"}, - "\U0001f575\U0001f3fc": {":detective_tone2:"}, - "\U0001f575\U0001f3fc\u200d\u2640\ufe0f": {":woman_detective_tone2:"}, - "\U0001f575\U0001f3fc\u200d\u2642\ufe0f": {":man_detective_tone2:"}, - "\U0001f575\U0001f3fd": {":detective_tone3:"}, - "\U0001f575\U0001f3fd\u200d\u2640\ufe0f": {":woman_detective_tone3:"}, - "\U0001f575\U0001f3fd\u200d\u2642\ufe0f": {":man_detective_tone3:"}, - "\U0001f575\U0001f3fe": {":detective_tone4:"}, - "\U0001f575\U0001f3fe\u200d\u2640\ufe0f": {":woman_detective_tone4:"}, - "\U0001f575\U0001f3fe\u200d\u2642\ufe0f": {":man_detective_tone4:"}, - "\U0001f575\U0001f3ff": {":detective_tone5:"}, - "\U0001f575\U0001f3ff\u200d\u2640\ufe0f": {":woman_detective_tone5:"}, - "\U0001f575\U0001f3ff\u200d\u2642\ufe0f": {":man_detective_tone5:"}, - "\U0001f575\ufe0f\u200d\u2640\ufe0f": {":woman_detective:", ":female-detective:", ":female_detective:"}, - "\U0001f575\ufe0f\u200d\u2642\ufe0f": {":man_detective:", ":sleuth_or_spy:", ":male-detective:", ":male_detective:"}, - "\U0001f576\ufe0f": {":dark_sunglasses:"}, - "\U0001f577\ufe0f": {":spider:"}, - "\U0001f578\ufe0f": {":spider_web:"}, - "\U0001f579\ufe0f": {":joystick:"}, - "\U0001f57a": {":man_dancing:"}, - "\U0001f57a\U0001f3fb": {":man_dancing_tone1:"}, - "\U0001f57a\U0001f3fc": {":man_dancing_tone2:"}, - "\U0001f57a\U0001f3fd": {":man_dancing_tone3:"}, - "\U0001f57a\U0001f3fe": {":man_dancing_tone4:"}, - "\U0001f57a\U0001f3ff": {":man_dancing_tone5:"}, - "\U0001f587": {":paperclips:"}, - "\U0001f587\ufe0f": {":linked_paperclips:"}, - "\U0001f58a": {":pen:", ":pen_ballpoint:"}, - "\U0001f58a\ufe0f": {":lower_left_ballpoint_pen:"}, - "\U0001f58b": {":fountain_pen:", ":pen_fountain:"}, - "\U0001f58b\ufe0f": {":lower_left_fountain_pen:"}, - "\U0001f58c": {":paintbrush:"}, - "\U0001f58c\ufe0f": {":lower_left_paintbrush:"}, - "\U0001f58d": {":crayon:"}, - "\U0001f58d\ufe0f": {":lower_left_crayon:"}, - "\U0001f590": {":hand_with_fingers_splayed:"}, - "\U0001f590\U0001f3fb": {":hand_splayed_tone1:"}, - "\U0001f590\U0001f3fc": {":hand_splayed_tone2:"}, - "\U0001f590\U0001f3fd": {":hand_splayed_tone3:"}, - "\U0001f590\U0001f3fe": {":hand_splayed_tone4:"}, - "\U0001f590\U0001f3ff": {":hand_splayed_tone5:"}, - "\U0001f590\ufe0f": {":raised_hand_with_fingers_splayed:"}, - "\U0001f595": {":fu:", ":middle_finger:"}, - "\U0001f595\U0001f3fb": {":middle_finger_tone1:"}, - "\U0001f595\U0001f3fc": {":middle_finger_tone2:"}, - "\U0001f595\U0001f3fd": {":middle_finger_tone3:"}, - "\U0001f595\U0001f3fe": {":middle_finger_tone4:"}, - "\U0001f595\U0001f3ff": {":middle_finger_tone5:"}, - "\U0001f596": {":vulcan:", ":spock-hand:", ":vulcan_salute:"}, - "\U0001f596\U0001f3fb": {":vulcan_tone1:"}, - "\U0001f596\U0001f3fc": {":vulcan_tone2:"}, - "\U0001f596\U0001f3fd": {":vulcan_tone3:"}, - "\U0001f596\U0001f3fe": {":vulcan_tone4:"}, - "\U0001f596\U0001f3ff": {":vulcan_tone5:"}, - "\U0001f5a4": {":black_heart:"}, - "\U0001f5a5": {":desktop:"}, - "\U0001f5a5\ufe0f": {":desktop_computer:"}, - "\U0001f5a8\ufe0f": {":printer:"}, - "\U0001f5b1": {":computer_mouse:", ":mouse_three_button:"}, - "\U0001f5b1\ufe0f": {":three_button_mouse:"}, - "\U0001f5b2\ufe0f": {":trackball:"}, - "\U0001f5bc": {":frame_photo:", ":framed_picture:"}, - "\U0001f5bc\ufe0f": {":frame_with_picture:"}, - "\U0001f5c2": {":dividers:"}, - "\U0001f5c2\ufe0f": {":card_index_dividers:"}, - "\U0001f5c3": {":card_box:"}, - "\U0001f5c3\ufe0f": {":card_file_box:"}, - "\U0001f5c4\ufe0f": {":file_cabinet:"}, - "\U0001f5d1\ufe0f": {":wastebasket:"}, - "\U0001f5d2": {":notepad_spiral:", ":spiral_notepad:"}, - "\U0001f5d2\ufe0f": {":spiral_note_pad:"}, - "\U0001f5d3": {":calendar_spiral:", ":spiral_calendar:"}, - "\U0001f5d3\ufe0f": {":spiral_calendar_pad:"}, - "\U0001f5dc": {":clamp:"}, - "\U0001f5dc\ufe0f": {":compression:"}, - "\U0001f5dd": {":key2:"}, - "\U0001f5dd\ufe0f": {":old_key:"}, - "\U0001f5de": {":newspaper2:", ":rolled-up_newspaper:"}, - "\U0001f5de\ufe0f": {":newspaper_roll:", ":rolled_up_newspaper:"}, - "\U0001f5e1": {":dagger:"}, - "\U0001f5e1\ufe0f": {":dagger_knife:"}, - "\U0001f5e3": {":speaking_head:"}, - "\U0001f5e3\ufe0f": {":speaking_head_in_silhouette:"}, - "\U0001f5e8": {":speech_left:"}, - "\U0001f5e8\ufe0f": {":left_speech_bubble:"}, - "\U0001f5ef": {":anger_right:"}, - "\U0001f5ef\ufe0f": {":right_anger_bubble:"}, - "\U0001f5f3": {":ballot_box:"}, - "\U0001f5f3\ufe0f": {":ballot_box_with_ballot:"}, - "\U0001f5fa": {":map:"}, - "\U0001f5fa\ufe0f": {":world_map:"}, - "\U0001f5fb": {":mount_fuji:"}, - "\U0001f5fc": {":Tokyo_tower:", ":tokyo_tower:"}, - "\U0001f5fd": {":Statue_of_Liberty:", ":statue_of_liberty:"}, - "\U0001f5fe": {":japan:", ":map_of_Japan:"}, - "\U0001f5ff": {":moai:", ":moyai:"}, - "\U0001f600": {":grinning:", ":grinning_face:"}, - "\U0001f601": {":grin:", ":beaming_face_with_smiling_eyes:"}, - "\U0001f602": {":joy:", ":face_with_tears_of_joy:"}, - "\U0001f603": {":smiley:", ":grinning_face_with_big_eyes:"}, - "\U0001f604": {":smile:", ":grinning_face_with_smiling_eyes:"}, - "\U0001f605": {":sweat_smile:", ":grinning_face_with_sweat:"}, - "\U0001f606": {":laughing:", ":satisfied:", ":grinning_squinting_face:"}, - "\U0001f607": {":innocent:", ":smiling_face_with_halo:"}, - "\U0001f608": {":smiling_imp:", ":smiling_face_with_horns:"}, - "\U0001f609": {":wink:", ":winking_face:"}, - "\U0001f60a": {":blush:", ":smiling_face_with_smiling_eyes:"}, - "\U0001f60b": {":yum:", ":face_savoring_food:"}, - "\U0001f60c": {":relieved:", ":relieved_face:"}, - "\U0001f60d": {":heart_eyes:", ":smiling_face_with_heart-eyes:"}, - "\U0001f60e": {":sunglasses:", ":smiling_face_with_sunglasses:"}, - "\U0001f60f": {":smirk:", ":smirking_face:"}, - "\U0001f610": {":neutral_face:"}, - "\U0001f611": {":expressionless:", ":expressionless_face:"}, - "\U0001f612": {":unamused:", ":unamused_face:"}, - "\U0001f613": {":sweat:", ":downcast_face_with_sweat:"}, - "\U0001f614": {":pensive:", ":pensive_face:"}, - "\U0001f615": {":confused:", ":confused_face:"}, - "\U0001f616": {":confounded:", ":confounded_face:"}, - "\U0001f617": {":kissing:", ":kissing_face:"}, - "\U0001f618": {":kissing_heart:", ":face_blowing_a_kiss:"}, - "\U0001f619": {":kissing_smiling_eyes:", ":kissing_face_with_smiling_eyes:"}, - "\U0001f61a": {":kissing_closed_eyes:", ":kissing_face_with_closed_eyes:"}, - "\U0001f61b": {":face_with_tongue:", ":stuck_out_tongue:"}, - "\U0001f61c": {":winking_face_with_tongue:", ":stuck_out_tongue_winking_eye:"}, - "\U0001f61d": {":squinting_face_with_tongue:", ":stuck_out_tongue_closed_eyes:"}, - "\U0001f61e": {":disappointed:", ":disappointed_face:"}, - "\U0001f61f": {":worried:", ":worried_face:"}, - "\U0001f620": {":angry:", ":angry_face:"}, - "\U0001f621": {":pout:", ":rage:", ":pouting_face:"}, - "\U0001f622": {":cry:", ":crying_face:"}, - "\U0001f623": {":persevere:", ":persevering_face:"}, - "\U0001f624": {":triumph:", ":face_with_steam_from_nose:"}, - "\U0001f625": {":disappointed_relieved:", ":sad_but_relieved_face:"}, - "\U0001f626": {":frowning:", ":frowning_face_with_open_mouth:"}, - "\U0001f627": {":anguished:", ":anguished_face:"}, - "\U0001f628": {":fearful:", ":fearful_face:"}, - "\U0001f629": {":weary:", ":weary_face:"}, - "\U0001f62a": {":sleepy:", ":sleepy_face:"}, - "\U0001f62b": {":tired_face:"}, - "\U0001f62c": {":grimacing:", ":grimacing_face:"}, - "\U0001f62d": {":sob:", ":loudly_crying_face:"}, - "\U0001f62e": {":open_mouth:", ":face_with_open_mouth:"}, - "\U0001f62f": {":hushed:", ":hushed_face:"}, - "\U0001f630": {":cold_sweat:", ":anxious_face_with_sweat:"}, - "\U0001f631": {":scream:", ":face_screaming_in_fear:"}, - "\U0001f632": {":astonished:", ":astonished_face:"}, - "\U0001f633": {":flushed:", ":flushed_face:"}, - "\U0001f634": {":sleeping:", ":sleeping_face:"}, - "\U0001f635": {":dizzy_face:"}, - "\U0001f636": {":no_mouth:", ":face_without_mouth:"}, - "\U0001f637": {":mask:", ":face_with_medical_mask:"}, - "\U0001f638": {":smile_cat:", ":grinning_cat_with_smiling_eyes:"}, - "\U0001f639": {":joy_cat:", ":cat_with_tears_of_joy:"}, - "\U0001f63a": {":smiley_cat:", ":grinning_cat:"}, - "\U0001f63b": {":heart_eyes_cat:", ":smiling_cat_with_heart-eyes:"}, - "\U0001f63c": {":smirk_cat:", ":cat_with_wry_smile:"}, - "\U0001f63d": {":kissing_cat:"}, - "\U0001f63e": {":pouting_cat:"}, - "\U0001f63f": {":crying_cat:", ":crying_cat_face:"}, - "\U0001f640": {":weary_cat:", ":scream_cat:"}, - "\U0001f641": {":slight_frown:", ":slightly_frowning_face:"}, - "\U0001f642": {":slight_smile:", ":slightly_smiling_face:"}, - "\U0001f643": {":upside_down:", ":upside-down_face:", ":upside_down_face:"}, - "\U0001f644": {":roll_eyes:", ":rolling_eyes:", ":face_with_rolling_eyes:"}, - "\U0001f645": {":person_gesturing_NO:", ":person_gesturing_no:"}, - "\U0001f645\U0001f3fb": {":person_gesturing_no_tone1:"}, - "\U0001f645\U0001f3fb\u200d\u2640\ufe0f": {":woman_gesturing_no_tone1:"}, - "\U0001f645\U0001f3fb\u200d\u2642\ufe0f": {":man_gesturing_no_tone1:"}, - "\U0001f645\U0001f3fc": {":person_gesturing_no_tone2:"}, - "\U0001f645\U0001f3fc\u200d\u2640\ufe0f": {":woman_gesturing_no_tone2:"}, - "\U0001f645\U0001f3fc\u200d\u2642\ufe0f": {":man_gesturing_no_tone2:"}, - "\U0001f645\U0001f3fd": {":person_gesturing_no_tone3:"}, - "\U0001f645\U0001f3fd\u200d\u2640\ufe0f": {":woman_gesturing_no_tone3:"}, - "\U0001f645\U0001f3fd\u200d\u2642\ufe0f": {":man_gesturing_no_tone3:"}, - "\U0001f645\U0001f3fe": {":person_gesturing_no_tone4:"}, - "\U0001f645\U0001f3fe\u200d\u2640\ufe0f": {":woman_gesturing_no_tone4:"}, - "\U0001f645\U0001f3fe\u200d\u2642\ufe0f": {":man_gesturing_no_tone4:"}, - "\U0001f645\U0001f3ff": {":person_gesturing_no_tone5:"}, - "\U0001f645\U0001f3ff\u200d\u2640\ufe0f": {":woman_gesturing_no_tone5:"}, - "\U0001f645\U0001f3ff\u200d\u2642\ufe0f": {":man_gesturing_no_tone5:"}, - "\U0001f645\u200d\u2640\ufe0f": {":no_good:", ":ng_woman:", ":no_good_woman:", ":woman-gesturing-no:", ":woman_gesturing_NO:", ":woman_gesturing_no:"}, - "\U0001f645\u200d\u2642\ufe0f": {":ng_man:", ":no_good_man:", ":man-gesturing-no:", ":man_gesturing_NO:", ":man_gesturing_no:"}, - "\U0001f646": {":ok_person:", ":person_gesturing_OK:", ":person_gesturing_ok:"}, - "\U0001f646\U0001f3fb": {":person_gesturing_ok_tone1:"}, - "\U0001f646\U0001f3fb\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone1:"}, - "\U0001f646\U0001f3fb\u200d\u2642\ufe0f": {":man_gesturing_ok_tone1:"}, - "\U0001f646\U0001f3fc": {":person_gesturing_ok_tone2:"}, - "\U0001f646\U0001f3fc\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone2:"}, - "\U0001f646\U0001f3fc\u200d\u2642\ufe0f": {":man_gesturing_ok_tone2:"}, - "\U0001f646\U0001f3fd": {":person_gesturing_ok_tone3:"}, - "\U0001f646\U0001f3fd\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone3:"}, - "\U0001f646\U0001f3fd\u200d\u2642\ufe0f": {":man_gesturing_ok_tone3:"}, - "\U0001f646\U0001f3fe": {":person_gesturing_ok_tone4:"}, - "\U0001f646\U0001f3fe\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone4:"}, - "\U0001f646\U0001f3fe\u200d\u2642\ufe0f": {":man_gesturing_ok_tone4:"}, - "\U0001f646\U0001f3ff": {":person_gesturing_ok_tone5:"}, - "\U0001f646\U0001f3ff\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone5:"}, - "\U0001f646\U0001f3ff\u200d\u2642\ufe0f": {":man_gesturing_ok_tone5:"}, - "\U0001f646\u200d\u2640\ufe0f": {":ok_woman:", ":woman-gesturing-ok:", ":woman_gesturing_OK:", ":woman_gesturing_ok:"}, - "\U0001f646\u200d\u2642\ufe0f": {":ok_man:", ":man-gesturing-ok:", ":man_gesturing_OK:", ":man_gesturing_ok:"}, - "\U0001f647": {":person_bowing:"}, - "\U0001f647\U0001f3fb": {":person_bowing_tone1:"}, - "\U0001f647\U0001f3fb\u200d\u2640\ufe0f": {":woman_bowing_tone1:"}, - "\U0001f647\U0001f3fb\u200d\u2642\ufe0f": {":man_bowing_tone1:"}, - "\U0001f647\U0001f3fc": {":person_bowing_tone2:"}, - "\U0001f647\U0001f3fc\u200d\u2640\ufe0f": {":woman_bowing_tone2:"}, - "\U0001f647\U0001f3fc\u200d\u2642\ufe0f": {":man_bowing_tone2:"}, - "\U0001f647\U0001f3fd": {":person_bowing_tone3:"}, - "\U0001f647\U0001f3fd\u200d\u2640\ufe0f": {":woman_bowing_tone3:"}, - "\U0001f647\U0001f3fd\u200d\u2642\ufe0f": {":man_bowing_tone3:"}, - "\U0001f647\U0001f3fe": {":person_bowing_tone4:"}, - "\U0001f647\U0001f3fe\u200d\u2640\ufe0f": {":woman_bowing_tone4:"}, - "\U0001f647\U0001f3fe\u200d\u2642\ufe0f": {":man_bowing_tone4:"}, - "\U0001f647\U0001f3ff": {":person_bowing_tone5:"}, - "\U0001f647\U0001f3ff\u200d\u2640\ufe0f": {":woman_bowing_tone5:"}, - "\U0001f647\U0001f3ff\u200d\u2642\ufe0f": {":man_bowing_tone5:"}, - "\U0001f647\u200d\u2640\ufe0f": {":bowing_woman:", ":woman-bowing:", ":woman_bowing:"}, - "\U0001f647\u200d\u2642\ufe0f": {":bow:", ":bowing_man:", ":man-bowing:", ":man_bowing:"}, - "\U0001f648": {":see_no_evil:", ":see-no-evil_monkey:"}, - "\U0001f649": {":hear_no_evil:", ":hear-no-evil_monkey:"}, - "\U0001f64a": {":speak_no_evil:", ":speak-no-evil_monkey:"}, - "\U0001f64b": {":person_raising_hand:"}, - "\U0001f64b\U0001f3fb": {":person_raising_hand_tone1:"}, - "\U0001f64b\U0001f3fb\u200d\u2640\ufe0f": {":woman_raising_hand_tone1:"}, - "\U0001f64b\U0001f3fb\u200d\u2642\ufe0f": {":man_raising_hand_tone1:"}, - "\U0001f64b\U0001f3fc": {":person_raising_hand_tone2:"}, - "\U0001f64b\U0001f3fc\u200d\u2640\ufe0f": {":woman_raising_hand_tone2:"}, - "\U0001f64b\U0001f3fc\u200d\u2642\ufe0f": {":man_raising_hand_tone2:"}, - "\U0001f64b\U0001f3fd": {":person_raising_hand_tone3:"}, - "\U0001f64b\U0001f3fd\u200d\u2640\ufe0f": {":woman_raising_hand_tone3:"}, - "\U0001f64b\U0001f3fd\u200d\u2642\ufe0f": {":man_raising_hand_tone3:"}, - "\U0001f64b\U0001f3fe": {":person_raising_hand_tone4:"}, - "\U0001f64b\U0001f3fe\u200d\u2640\ufe0f": {":woman_raising_hand_tone4:"}, - "\U0001f64b\U0001f3fe\u200d\u2642\ufe0f": {":man_raising_hand_tone4:"}, - "\U0001f64b\U0001f3ff": {":person_raising_hand_tone5:"}, - "\U0001f64b\U0001f3ff\u200d\u2640\ufe0f": {":woman_raising_hand_tone5:"}, - "\U0001f64b\U0001f3ff\u200d\u2642\ufe0f": {":man_raising_hand_tone5:"}, - "\U0001f64b\u200d\u2640\ufe0f": {":raising_hand:", ":raising_hand_woman:", ":woman-raising-hand:", ":woman_raising_hand:"}, - "\U0001f64b\u200d\u2642\ufe0f": {":man-raising-hand:", ":man_raising_hand:", ":raising_hand_man:"}, - "\U0001f64c": {":raised_hands:", ":raising_hands:"}, - "\U0001f64c\U0001f3fb": {":raised_hands_tone1:"}, - "\U0001f64c\U0001f3fc": {":raised_hands_tone2:"}, - "\U0001f64c\U0001f3fd": {":raised_hands_tone3:"}, - "\U0001f64c\U0001f3fe": {":raised_hands_tone4:"}, - "\U0001f64c\U0001f3ff": {":raised_hands_tone5:"}, - "\U0001f64d": {":frowning_person:"}, - "\U0001f64d\U0001f3fb": {":person_frowning_tone1:"}, - "\U0001f64d\U0001f3fb\u200d\u2640\ufe0f": {":woman_frowning_tone1:"}, - "\U0001f64d\U0001f3fb\u200d\u2642\ufe0f": {":man_frowning_tone1:"}, - "\U0001f64d\U0001f3fc": {":person_frowning_tone2:"}, - "\U0001f64d\U0001f3fc\u200d\u2640\ufe0f": {":woman_frowning_tone2:"}, - "\U0001f64d\U0001f3fc\u200d\u2642\ufe0f": {":man_frowning_tone2:"}, - "\U0001f64d\U0001f3fd": {":person_frowning_tone3:"}, - "\U0001f64d\U0001f3fd\u200d\u2640\ufe0f": {":woman_frowning_tone3:"}, - "\U0001f64d\U0001f3fd\u200d\u2642\ufe0f": {":man_frowning_tone3:"}, - "\U0001f64d\U0001f3fe": {":person_frowning_tone4:"}, - "\U0001f64d\U0001f3fe\u200d\u2640\ufe0f": {":woman_frowning_tone4:"}, - "\U0001f64d\U0001f3fe\u200d\u2642\ufe0f": {":man_frowning_tone4:"}, - "\U0001f64d\U0001f3ff": {":person_frowning_tone5:"}, - "\U0001f64d\U0001f3ff\u200d\u2640\ufe0f": {":woman_frowning_tone5:"}, - "\U0001f64d\U0001f3ff\u200d\u2642\ufe0f": {":man_frowning_tone5:"}, - "\U0001f64d\u200d\u2640\ufe0f": {":frowning_woman:", ":woman-frowning:", ":woman_frowning:", ":person_frowning:"}, - "\U0001f64d\u200d\u2642\ufe0f": {":frowning_man:", ":man-frowning:", ":man_frowning:"}, - "\U0001f64e": {":person_pouting:"}, - "\U0001f64e\U0001f3fb": {":person_pouting_tone1:"}, - "\U0001f64e\U0001f3fb\u200d\u2640\ufe0f": {":woman_pouting_tone1:"}, - "\U0001f64e\U0001f3fb\u200d\u2642\ufe0f": {":man_pouting_tone1:"}, - "\U0001f64e\U0001f3fc": {":person_pouting_tone2:"}, - "\U0001f64e\U0001f3fc\u200d\u2640\ufe0f": {":woman_pouting_tone2:"}, - "\U0001f64e\U0001f3fc\u200d\u2642\ufe0f": {":man_pouting_tone2:"}, - "\U0001f64e\U0001f3fd": {":person_pouting_tone3:"}, - "\U0001f64e\U0001f3fd\u200d\u2640\ufe0f": {":woman_pouting_tone3:"}, - "\U0001f64e\U0001f3fd\u200d\u2642\ufe0f": {":man_pouting_tone3:"}, - "\U0001f64e\U0001f3fe": {":person_pouting_tone4:"}, - "\U0001f64e\U0001f3fe\u200d\u2640\ufe0f": {":woman_pouting_tone4:"}, - "\U0001f64e\U0001f3fe\u200d\u2642\ufe0f": {":man_pouting_tone4:"}, - "\U0001f64e\U0001f3ff": {":person_pouting_tone5:"}, - "\U0001f64e\U0001f3ff\u200d\u2640\ufe0f": {":woman_pouting_tone5:"}, - "\U0001f64e\U0001f3ff\u200d\u2642\ufe0f": {":man_pouting_tone5:"}, - "\U0001f64e\u200d\u2640\ufe0f": {":pouting_woman:", ":woman-pouting:", ":woman_pouting:", ":person_with_pouting_face:"}, - "\U0001f64e\u200d\u2642\ufe0f": {":man-pouting:", ":man_pouting:", ":pouting_man:"}, - "\U0001f64f": {":pray:", ":folded_hands:"}, - "\U0001f64f\U0001f3fb": {":pray_tone1:"}, - "\U0001f64f\U0001f3fc": {":pray_tone2:"}, - "\U0001f64f\U0001f3fd": {":pray_tone3:"}, - "\U0001f64f\U0001f3fe": {":pray_tone4:"}, - "\U0001f64f\U0001f3ff": {":pray_tone5:"}, - "\U0001f680": {":rocket:"}, - "\U0001f681": {":helicopter:"}, - "\U0001f682": {":locomotive:", ":steam_locomotive:"}, - "\U0001f683": {":railway_car:"}, - "\U0001f684": {":bullettrain_side:", ":high-speed_train:"}, - "\U0001f685": {":bullet_train:", ":bullettrain_front:"}, - "\U0001f686": {":train2:"}, - "\U0001f687": {":metro:"}, - "\U0001f688": {":light_rail:"}, - "\U0001f689": {":station:"}, - "\U0001f68a": {":tram:"}, - "\U0001f68b": {":train:", ":tram_car:"}, - "\U0001f68c": {":bus:"}, - "\U0001f68d": {":oncoming_bus:"}, - "\U0001f68e": {":trolleybus:"}, - "\U0001f68f": {":busstop:", ":bus_stop:"}, - "\U0001f690": {":minibus:"}, - "\U0001f691": {":ambulance:"}, - "\U0001f692": {":fire_engine:"}, - "\U0001f693": {":police_car:"}, - "\U0001f694": {":oncoming_police_car:"}, - "\U0001f695": {":taxi:"}, - "\U0001f696": {":oncoming_taxi:"}, - "\U0001f697": {":car:", ":red_car:", ":automobile:"}, - "\U0001f698": {":oncoming_automobile:"}, - "\U0001f699": {":blue_car:", ":sport_utility_vehicle:"}, - "\U0001f69a": {":truck:", ":delivery_truck:"}, - "\U0001f69b": {":articulated_lorry:"}, - "\U0001f69c": {":tractor:"}, - "\U0001f69d": {":monorail:"}, - "\U0001f69e": {":mountain_railway:"}, - "\U0001f69f": {":suspension_railway:"}, - "\U0001f6a0": {":mountain_cableway:"}, - "\U0001f6a1": {":aerial_tramway:"}, - "\U0001f6a2": {":ship:"}, - "\U0001f6a3": {":person_rowing_boat:"}, - "\U0001f6a3\U0001f3fb": {":person_rowing_boat_tone1:"}, - "\U0001f6a3\U0001f3fb\u200d\u2640\ufe0f": {":woman_rowing_boat_tone1:"}, - "\U0001f6a3\U0001f3fb\u200d\u2642\ufe0f": {":man_rowing_boat_tone1:"}, - "\U0001f6a3\U0001f3fc": {":person_rowing_boat_tone2:"}, - "\U0001f6a3\U0001f3fc\u200d\u2640\ufe0f": {":woman_rowing_boat_tone2:"}, - "\U0001f6a3\U0001f3fc\u200d\u2642\ufe0f": {":man_rowing_boat_tone2:"}, - "\U0001f6a3\U0001f3fd": {":person_rowing_boat_tone3:"}, - "\U0001f6a3\U0001f3fd\u200d\u2640\ufe0f": {":woman_rowing_boat_tone3:"}, - "\U0001f6a3\U0001f3fd\u200d\u2642\ufe0f": {":man_rowing_boat_tone3:"}, - "\U0001f6a3\U0001f3fe": {":person_rowing_boat_tone4:"}, - "\U0001f6a3\U0001f3fe\u200d\u2640\ufe0f": {":woman_rowing_boat_tone4:"}, - "\U0001f6a3\U0001f3fe\u200d\u2642\ufe0f": {":man_rowing_boat_tone4:"}, - "\U0001f6a3\U0001f3ff": {":person_rowing_boat_tone5:"}, - "\U0001f6a3\U0001f3ff\u200d\u2640\ufe0f": {":woman_rowing_boat_tone5:"}, - "\U0001f6a3\U0001f3ff\u200d\u2642\ufe0f": {":man_rowing_boat_tone5:"}, - "\U0001f6a3\u200d\u2640\ufe0f": {":rowing_woman:", ":woman-rowing-boat:", ":woman_rowing_boat:"}, - "\U0001f6a3\u200d\u2642\ufe0f": {":rowboat:", ":rowing_man:", ":man-rowing-boat:", ":man_rowing_boat:"}, - "\U0001f6a4": {":speedboat:"}, - "\U0001f6a5": {":traffic_light:", ":horizontal_traffic_light:"}, - "\U0001f6a6": {":vertical_traffic_light:"}, - "\U0001f6a7": {":construction:"}, - "\U0001f6a8": {":rotating_light:", ":police_car_light:"}, - "\U0001f6a9": {":triangular_flag:", ":triangular_flag_on_post:"}, - "\U0001f6aa": {":door:"}, - "\U0001f6ab": {":prohibited:", ":no_entry_sign:"}, - "\U0001f6ac": {":smoking:", ":cigarette:"}, - "\U0001f6ad": {":no_smoking:"}, - "\U0001f6ae": {":litter_in_bin_sign:", ":put_litter_in_its_place:"}, - "\U0001f6af": {":no_littering:", ":do_not_litter:"}, - "\U0001f6b0": {":potable_water:"}, - "\U0001f6b1": {":non-potable_water:"}, - "\U0001f6b2": {":bike:", ":bicycle:"}, - "\U0001f6b3": {":no_bicycles:"}, - "\U0001f6b4": {":person_biking:"}, - "\U0001f6b4\U0001f3fb": {":person_biking_tone1:"}, - "\U0001f6b4\U0001f3fb\u200d\u2640\ufe0f": {":woman_biking_tone1:"}, - "\U0001f6b4\U0001f3fb\u200d\u2642\ufe0f": {":man_biking_tone1:"}, - "\U0001f6b4\U0001f3fc": {":person_biking_tone2:"}, - "\U0001f6b4\U0001f3fc\u200d\u2640\ufe0f": {":woman_biking_tone2:"}, - "\U0001f6b4\U0001f3fc\u200d\u2642\ufe0f": {":man_biking_tone2:"}, - "\U0001f6b4\U0001f3fd": {":person_biking_tone3:"}, - "\U0001f6b4\U0001f3fd\u200d\u2640\ufe0f": {":woman_biking_tone3:"}, - "\U0001f6b4\U0001f3fd\u200d\u2642\ufe0f": {":man_biking_tone3:"}, - "\U0001f6b4\U0001f3fe": {":person_biking_tone4:"}, - "\U0001f6b4\U0001f3fe\u200d\u2640\ufe0f": {":woman_biking_tone4:"}, - "\U0001f6b4\U0001f3fe\u200d\u2642\ufe0f": {":man_biking_tone4:"}, - "\U0001f6b4\U0001f3ff": {":person_biking_tone5:"}, - "\U0001f6b4\U0001f3ff\u200d\u2640\ufe0f": {":woman_biking_tone5:"}, - "\U0001f6b4\U0001f3ff\u200d\u2642\ufe0f": {":man_biking_tone5:"}, - "\U0001f6b4\u200d\u2640\ufe0f": {":biking_woman:", ":woman-biking:", ":woman_biking:"}, - "\U0001f6b4\u200d\u2642\ufe0f": {":bicyclist:", ":biking_man:", ":man-biking:", ":man_biking:"}, - "\U0001f6b5": {":person_mountain_biking:"}, - "\U0001f6b5\U0001f3fb": {":person_mountain_biking_tone1:"}, - "\U0001f6b5\U0001f3fb\u200d\u2640\ufe0f": {":woman_mountain_biking_tone1:"}, - "\U0001f6b5\U0001f3fb\u200d\u2642\ufe0f": {":man_mountain_biking_tone1:"}, - "\U0001f6b5\U0001f3fc": {":person_mountain_biking_tone2:"}, - "\U0001f6b5\U0001f3fc\u200d\u2640\ufe0f": {":woman_mountain_biking_tone2:"}, - "\U0001f6b5\U0001f3fc\u200d\u2642\ufe0f": {":man_mountain_biking_tone2:"}, - "\U0001f6b5\U0001f3fd": {":person_mountain_biking_tone3:"}, - "\U0001f6b5\U0001f3fd\u200d\u2640\ufe0f": {":woman_mountain_biking_tone3:"}, - "\U0001f6b5\U0001f3fd\u200d\u2642\ufe0f": {":man_mountain_biking_tone3:"}, - "\U0001f6b5\U0001f3fe": {":person_mountain_biking_tone4:"}, - "\U0001f6b5\U0001f3fe\u200d\u2640\ufe0f": {":woman_mountain_biking_tone4:"}, - "\U0001f6b5\U0001f3fe\u200d\u2642\ufe0f": {":man_mountain_biking_tone4:"}, - "\U0001f6b5\U0001f3ff": {":person_mountain_biking_tone5:"}, - "\U0001f6b5\U0001f3ff\u200d\u2640\ufe0f": {":woman_mountain_biking_tone5:"}, - "\U0001f6b5\U0001f3ff\u200d\u2642\ufe0f": {":man_mountain_biking_tone5:"}, - "\U0001f6b5\u200d\u2640\ufe0f": {":mountain_biking_woman:", ":woman-mountain-biking:", ":woman_mountain_biking:"}, - "\U0001f6b5\u200d\u2642\ufe0f": {":mountain_bicyclist:", ":man-mountain-biking:", ":man_mountain_biking:", ":mountain_biking_man:"}, - "\U0001f6b6": {":person_walking:"}, - "\U0001f6b6\U0001f3fb": {":person_walking_tone1:"}, - "\U0001f6b6\U0001f3fb\u200d\u2640\ufe0f": {":woman_walking_tone1:"}, - "\U0001f6b6\U0001f3fb\u200d\u2642\ufe0f": {":man_walking_tone1:"}, - "\U0001f6b6\U0001f3fc": {":person_walking_tone2:"}, - "\U0001f6b6\U0001f3fc\u200d\u2640\ufe0f": {":woman_walking_tone2:"}, - "\U0001f6b6\U0001f3fc\u200d\u2642\ufe0f": {":man_walking_tone2:"}, - "\U0001f6b6\U0001f3fd": {":person_walking_tone3:"}, - "\U0001f6b6\U0001f3fd\u200d\u2640\ufe0f": {":woman_walking_tone3:"}, - "\U0001f6b6\U0001f3fd\u200d\u2642\ufe0f": {":man_walking_tone3:"}, - "\U0001f6b6\U0001f3fe": {":person_walking_tone4:"}, - "\U0001f6b6\U0001f3fe\u200d\u2640\ufe0f": {":woman_walking_tone4:"}, - "\U0001f6b6\U0001f3fe\u200d\u2642\ufe0f": {":man_walking_tone4:"}, - "\U0001f6b6\U0001f3ff": {":person_walking_tone5:"}, - "\U0001f6b6\U0001f3ff\u200d\u2640\ufe0f": {":woman_walking_tone5:"}, - "\U0001f6b6\U0001f3ff\u200d\u2642\ufe0f": {":man_walking_tone5:"}, - "\U0001f6b6\u200d\u2640\ufe0f": {":walking_woman:", ":woman-walking:", ":woman_walking:"}, - "\U0001f6b6\u200d\u2642\ufe0f": {":walking:", ":man-walking:", ":man_walking:", ":walking_man:"}, - "\U0001f6b7": {":no_pedestrians:"}, - "\U0001f6b8": {":children_crossing:"}, - "\U0001f6b9": {":mens:", ":men’s_room:"}, - "\U0001f6ba": {":womens:", ":women’s_room:"}, - "\U0001f6bb": {":restroom:"}, - "\U0001f6bc": {":baby_symbol:"}, - "\U0001f6bd": {":toilet:"}, - "\U0001f6be": {":wc:", ":water_closet:"}, - "\U0001f6bf": {":shower:"}, - "\U0001f6c0": {":bath:", ":person_taking_bath:"}, - "\U0001f6c0\U0001f3fb": {":bath_tone1:"}, - "\U0001f6c0\U0001f3fc": {":bath_tone2:"}, - "\U0001f6c0\U0001f3fd": {":bath_tone3:"}, - "\U0001f6c0\U0001f3fe": {":bath_tone4:"}, - "\U0001f6c0\U0001f3ff": {":bath_tone5:"}, - "\U0001f6c1": {":bathtub:"}, - "\U0001f6c2": {":passport_control:"}, - "\U0001f6c3": {":customs:"}, - "\U0001f6c4": {":baggage_claim:"}, - "\U0001f6c5": {":left_luggage:"}, - "\U0001f6cb": {":couch:"}, - "\U0001f6cb\ufe0f": {":couch_and_lamp:"}, - "\U0001f6cc": {":sleeping_bed:", ":person_in_bed:", ":sleeping_accommodation:"}, - "\U0001f6cc\U0001f3fb": {":person_in_bed_tone1:"}, - "\U0001f6cc\U0001f3fc": {":person_in_bed_tone2:"}, - "\U0001f6cc\U0001f3fd": {":person_in_bed_tone3:"}, - "\U0001f6cc\U0001f3fe": {":person_in_bed_tone4:"}, - "\U0001f6cc\U0001f3ff": {":person_in_bed_tone5:"}, - "\U0001f6cd\ufe0f": {":shopping:", ":shopping_bags:"}, - "\U0001f6ce": {":bellhop:"}, - "\U0001f6ce\ufe0f": {":bellhop_bell:"}, - "\U0001f6cf\ufe0f": {":bed:"}, - "\U0001f6d0": {":place_of_worship:"}, - "\U0001f6d1": {":stop_sign:", ":octagonal_sign:"}, - "\U0001f6d2": {":shopping_cart:", ":shopping_trolley:"}, - "\U0001f6d5": {":hindu_temple:"}, - "\U0001f6d6": {":hut:"}, - "\U0001f6d7": {":elevator:"}, - "\U0001f6e0": {":tools:"}, - "\U0001f6e0\ufe0f": {":hammer_and_wrench:"}, - "\U0001f6e1\ufe0f": {":shield:"}, - "\U0001f6e2": {":oil:"}, - "\U0001f6e2\ufe0f": {":oil_drum:"}, - "\U0001f6e3\ufe0f": {":motorway:"}, - "\U0001f6e4\ufe0f": {":railway_track:"}, - "\U0001f6e5": {":motorboat:"}, - "\U0001f6e5\ufe0f": {":motor_boat:"}, - "\U0001f6e9": {":airplane_small:"}, - "\U0001f6e9\ufe0f": {":small_airplane:"}, - "\U0001f6eb": {":flight_departure:", ":airplane_departure:"}, - "\U0001f6ec": {":flight_arrival:", ":airplane_arrival:", ":airplane_arriving:"}, - "\U0001f6f0": {":satellite_orbital:"}, - "\U0001f6f0\ufe0f": {":satellite:", ":artificial_satellite:"}, - "\U0001f6f3": {":cruise_ship:"}, - "\U0001f6f3\ufe0f": {":passenger_ship:"}, - "\U0001f6f4": {":scooter:", ":kick_scooter:"}, - "\U0001f6f5": {":motor_scooter:"}, - "\U0001f6f6": {":canoe:"}, - "\U0001f6f7": {":sled:"}, - "\U0001f6f8": {":flying_saucer:"}, - "\U0001f6f9": {":skateboard:"}, - "\U0001f6fa": {":auto_rickshaw:"}, - "\U0001f6fb": {":pickup_truck:"}, - "\U0001f6fc": {":roller_skate:"}, - "\U0001f7e0": {":orange_circle:", ":large_orange_circle:"}, - "\U0001f7e1": {":yellow_circle:", ":large_yellow_circle:"}, - "\U0001f7e2": {":green_circle:", ":large_green_circle:"}, - "\U0001f7e3": {":purple_circle:", ":large_purple_circle:"}, - "\U0001f7e4": {":brown_circle:", ":large_brown_circle:"}, - "\U0001f7e5": {":red_square:", ":large_red_square:"}, - "\U0001f7e6": {":blue_square:", ":large_blue_square:"}, - "\U0001f7e7": {":orange_square:", ":large_orange_square:"}, - "\U0001f7e8": {":yellow_square:", ":large_yellow_square:"}, - "\U0001f7e9": {":green_square:", ":large_green_square:"}, - "\U0001f7ea": {":purple_square:", ":large_purple_square:"}, - "\U0001f7eb": {":brown_square:", ":large_brown_square:"}, - "\U0001f90c": {":pinched_fingers:"}, - "\U0001f90d": {":white_heart:"}, - "\U0001f90e": {":brown_heart:"}, - "\U0001f90f": {":pinching_hand:"}, - "\U0001f910": {":zipper_mouth:", ":zipper-mouth_face:", ":zipper_mouth_face:"}, - "\U0001f911": {":money_mouth:", ":money-mouth_face:", ":money_mouth_face:"}, - "\U0001f912": {":thermometer_face:", ":face_with_thermometer:"}, - "\U0001f913": {":nerd:", ":nerd_face:"}, - "\U0001f914": {":thinking:", ":thinking_face:"}, - "\U0001f915": {":head_bandage:", ":face_with_head-bandage:", ":face_with_head_bandage:"}, - "\U0001f916": {":robot:", ":robot_face:"}, - "\U0001f917": {":hugs:", ":hugging:", ":hugging_face:"}, - "\U0001f918": {":metal:", ":the_horns:", ":sign_of_the_horns:"}, - "\U0001f918\U0001f3fb": {":metal_tone1:"}, - "\U0001f918\U0001f3fc": {":metal_tone2:"}, - "\U0001f918\U0001f3fd": {":metal_tone3:"}, - "\U0001f918\U0001f3fe": {":metal_tone4:"}, - "\U0001f918\U0001f3ff": {":metal_tone5:"}, - "\U0001f919": {":call_me:", ":call_me_hand:"}, - "\U0001f919\U0001f3fb": {":call_me_tone1:"}, - "\U0001f919\U0001f3fc": {":call_me_tone2:"}, - "\U0001f919\U0001f3fd": {":call_me_tone3:"}, - "\U0001f919\U0001f3fe": {":call_me_tone4:"}, - "\U0001f919\U0001f3ff": {":call_me_tone5:"}, - "\U0001f91a": {":raised_back_of_hand:"}, - "\U0001f91a\U0001f3fb": {":raised_back_of_hand_tone1:"}, - "\U0001f91a\U0001f3fc": {":raised_back_of_hand_tone2:"}, - "\U0001f91a\U0001f3fd": {":raised_back_of_hand_tone3:"}, - "\U0001f91a\U0001f3fe": {":raised_back_of_hand_tone4:"}, - "\U0001f91a\U0001f3ff": {":raised_back_of_hand_tone5:"}, - "\U0001f91b": {":fist_left:", ":left-facing_fist:", ":left_facing_fist:"}, - "\U0001f91b\U0001f3fb": {":left_facing_fist_tone1:"}, - "\U0001f91b\U0001f3fc": {":left_facing_fist_tone2:"}, - "\U0001f91b\U0001f3fd": {":left_facing_fist_tone3:"}, - "\U0001f91b\U0001f3fe": {":left_facing_fist_tone4:"}, - "\U0001f91b\U0001f3ff": {":left_facing_fist_tone5:"}, - "\U0001f91c": {":fist_right:", ":right-facing_fist:", ":right_facing_fist:"}, - "\U0001f91c\U0001f3fb": {":right_facing_fist_tone1:"}, - "\U0001f91c\U0001f3fc": {":right_facing_fist_tone2:"}, - "\U0001f91c\U0001f3fd": {":right_facing_fist_tone3:"}, - "\U0001f91c\U0001f3fe": {":right_facing_fist_tone4:"}, - "\U0001f91c\U0001f3ff": {":right_facing_fist_tone5:"}, - "\U0001f91d": {":handshake:"}, - "\U0001f91e": {":crossed_fingers:", ":fingers_crossed:"}, - "\U0001f91e\U0001f3fb": {":fingers_crossed_tone1:"}, - "\U0001f91e\U0001f3fc": {":fingers_crossed_tone2:"}, - "\U0001f91e\U0001f3fd": {":fingers_crossed_tone3:"}, - "\U0001f91e\U0001f3fe": {":fingers_crossed_tone4:"}, - "\U0001f91e\U0001f3ff": {":fingers_crossed_tone5:"}, - "\U0001f91f": {":love-you_gesture:", ":love_you_gesture:", ":i_love_you_hand_sign:"}, - "\U0001f91f\U0001f3fb": {":love_you_gesture_tone1:"}, - "\U0001f91f\U0001f3fc": {":love_you_gesture_tone2:"}, - "\U0001f91f\U0001f3fd": {":love_you_gesture_tone3:"}, - "\U0001f91f\U0001f3fe": {":love_you_gesture_tone4:"}, - "\U0001f91f\U0001f3ff": {":love_you_gesture_tone5:"}, - "\U0001f920": {":cowboy:", ":cowboy_hat_face:", ":face_with_cowboy_hat:"}, - "\U0001f921": {":clown:", ":clown_face:"}, - "\U0001f922": {":nauseated_face:"}, - "\U0001f923": {":rofl:", ":rolling_on_the_floor_laughing:"}, - "\U0001f924": {":drooling_face:"}, - "\U0001f925": {":lying_face:"}, - "\U0001f926": {":facepalm:", ":face_palm:", ":person_facepalming:"}, - "\U0001f926\U0001f3fb": {":person_facepalming_tone1:"}, - "\U0001f926\U0001f3fb\u200d\u2640\ufe0f": {":woman_facepalming_tone1:"}, - "\U0001f926\U0001f3fb\u200d\u2642\ufe0f": {":man_facepalming_tone1:"}, - "\U0001f926\U0001f3fc": {":person_facepalming_tone2:"}, - "\U0001f926\U0001f3fc\u200d\u2640\ufe0f": {":woman_facepalming_tone2:"}, - "\U0001f926\U0001f3fc\u200d\u2642\ufe0f": {":man_facepalming_tone2:"}, - "\U0001f926\U0001f3fd": {":person_facepalming_tone3:"}, - "\U0001f926\U0001f3fd\u200d\u2640\ufe0f": {":woman_facepalming_tone3:"}, - "\U0001f926\U0001f3fd\u200d\u2642\ufe0f": {":man_facepalming_tone3:"}, - "\U0001f926\U0001f3fe": {":person_facepalming_tone4:"}, - "\U0001f926\U0001f3fe\u200d\u2640\ufe0f": {":woman_facepalming_tone4:"}, - "\U0001f926\U0001f3fe\u200d\u2642\ufe0f": {":man_facepalming_tone4:"}, - "\U0001f926\U0001f3ff": {":person_facepalming_tone5:"}, - "\U0001f926\U0001f3ff\u200d\u2640\ufe0f": {":woman_facepalming_tone5:"}, - "\U0001f926\U0001f3ff\u200d\u2642\ufe0f": {":man_facepalming_tone5:"}, - "\U0001f926\u200d\u2640\ufe0f": {":woman-facepalming:", ":woman_facepalming:"}, - "\U0001f926\u200d\u2642\ufe0f": {":man-facepalming:", ":man_facepalming:"}, - "\U0001f927": {":sneezing_face:"}, - "\U0001f928": {":raised_eyebrow:", ":face_with_raised_eyebrow:"}, - "\U0001f929": {":star-struck:", ":star_struck:"}, - "\U0001f92a": {":zany_face:", ":crazy_face:"}, - "\U0001f92b": {":shushing_face:"}, - "\U0001f92c": {":cursing_face:", ":face_with_symbols_on_mouth:", ":face_with_symbols_over_mouth:"}, - "\U0001f92d": {":hand_over_mouth:", ":face_with_hand_over_mouth:"}, - "\U0001f92e": {":face_vomiting:", ":vomiting_face:"}, - "\U0001f92f": {":exploding_head:"}, - "\U0001f930": {":pregnant_woman:"}, - "\U0001f930\U0001f3fb": {":pregnant_woman_tone1:"}, - "\U0001f930\U0001f3fc": {":pregnant_woman_tone2:"}, - "\U0001f930\U0001f3fd": {":pregnant_woman_tone3:"}, - "\U0001f930\U0001f3fe": {":pregnant_woman_tone4:"}, - "\U0001f930\U0001f3ff": {":pregnant_woman_tone5:"}, - "\U0001f931": {":breast-feeding:", ":breast_feeding:"}, - "\U0001f931\U0001f3fb": {":breast_feeding_tone1:"}, - "\U0001f931\U0001f3fc": {":breast_feeding_tone2:"}, - "\U0001f931\U0001f3fd": {":breast_feeding_tone3:"}, - "\U0001f931\U0001f3fe": {":breast_feeding_tone4:"}, - "\U0001f931\U0001f3ff": {":breast_feeding_tone5:"}, - "\U0001f932": {":palms_up_together:"}, - "\U0001f932\U0001f3fb": {":palms_up_together_tone1:"}, - "\U0001f932\U0001f3fc": {":palms_up_together_tone2:"}, - "\U0001f932\U0001f3fd": {":palms_up_together_tone3:"}, - "\U0001f932\U0001f3fe": {":palms_up_together_tone4:"}, - "\U0001f932\U0001f3ff": {":palms_up_together_tone5:"}, - "\U0001f933": {":selfie:"}, - "\U0001f933\U0001f3fb": {":selfie_tone1:"}, - "\U0001f933\U0001f3fc": {":selfie_tone2:"}, - "\U0001f933\U0001f3fd": {":selfie_tone3:"}, - "\U0001f933\U0001f3fe": {":selfie_tone4:"}, - "\U0001f933\U0001f3ff": {":selfie_tone5:"}, - "\U0001f934": {":prince:"}, - "\U0001f934\U0001f3fb": {":prince_tone1:"}, - "\U0001f934\U0001f3fc": {":prince_tone2:"}, - "\U0001f934\U0001f3fd": {":prince_tone3:"}, - "\U0001f934\U0001f3fe": {":prince_tone4:"}, - "\U0001f934\U0001f3ff": {":prince_tone5:"}, - "\U0001f935": {":man_in_tuxedo:", ":person_in_tuxedo:"}, - "\U0001f935\U0001f3fb": {":man_in_tuxedo_tone1:"}, - "\U0001f935\U0001f3fc": {":man_in_tuxedo_tone2:"}, - "\U0001f935\U0001f3fd": {":man_in_tuxedo_tone3:"}, - "\U0001f935\U0001f3fe": {":man_in_tuxedo_tone4:"}, - "\U0001f935\U0001f3ff": {":man_in_tuxedo_tone5:"}, - "\U0001f935\u200d\u2640\ufe0f": {":woman_in_tuxedo:"}, - "\U0001f936": {":mrs_claus:", ":Mrs._Claus:"}, - "\U0001f936\U0001f3fb": {":mrs_claus_tone1:"}, - "\U0001f936\U0001f3fc": {":mrs_claus_tone2:"}, - "\U0001f936\U0001f3fd": {":mrs_claus_tone3:"}, - "\U0001f936\U0001f3fe": {":mrs_claus_tone4:"}, - "\U0001f936\U0001f3ff": {":mrs_claus_tone5:"}, - "\U0001f937": {":shrug:", ":person_shrugging:"}, - "\U0001f937\U0001f3fb": {":person_shrugging_tone1:"}, - "\U0001f937\U0001f3fb\u200d\u2640\ufe0f": {":woman_shrugging_tone1:"}, - "\U0001f937\U0001f3fb\u200d\u2642\ufe0f": {":man_shrugging_tone1:"}, - "\U0001f937\U0001f3fc": {":person_shrugging_tone2:"}, - "\U0001f937\U0001f3fc\u200d\u2640\ufe0f": {":woman_shrugging_tone2:"}, - "\U0001f937\U0001f3fc\u200d\u2642\ufe0f": {":man_shrugging_tone2:"}, - "\U0001f937\U0001f3fd": {":person_shrugging_tone3:"}, - "\U0001f937\U0001f3fd\u200d\u2640\ufe0f": {":woman_shrugging_tone3:"}, - "\U0001f937\U0001f3fd\u200d\u2642\ufe0f": {":man_shrugging_tone3:"}, - "\U0001f937\U0001f3fe": {":person_shrugging_tone4:"}, - "\U0001f937\U0001f3fe\u200d\u2640\ufe0f": {":woman_shrugging_tone4:"}, - "\U0001f937\U0001f3fe\u200d\u2642\ufe0f": {":man_shrugging_tone4:"}, - "\U0001f937\U0001f3ff": {":person_shrugging_tone5:"}, - "\U0001f937\U0001f3ff\u200d\u2640\ufe0f": {":woman_shrugging_tone5:"}, - "\U0001f937\U0001f3ff\u200d\u2642\ufe0f": {":man_shrugging_tone5:"}, - "\U0001f937\u200d\u2640\ufe0f": {":woman-shrugging:", ":woman_shrugging:"}, - "\U0001f937\u200d\u2642\ufe0f": {":man-shrugging:", ":man_shrugging:"}, - "\U0001f938": {":cartwheeling:", ":person_cartwheeling:", ":person_doing_cartwheel:"}, - "\U0001f938\U0001f3fb": {":person_doing_cartwheel_tone1:"}, - "\U0001f938\U0001f3fb\u200d\u2640\ufe0f": {":woman_cartwheeling_tone1:"}, - "\U0001f938\U0001f3fb\u200d\u2642\ufe0f": {":man_cartwheeling_tone1:"}, - "\U0001f938\U0001f3fc": {":person_doing_cartwheel_tone2:"}, - "\U0001f938\U0001f3fc\u200d\u2640\ufe0f": {":woman_cartwheeling_tone2:"}, - "\U0001f938\U0001f3fc\u200d\u2642\ufe0f": {":man_cartwheeling_tone2:"}, - "\U0001f938\U0001f3fd": {":person_doing_cartwheel_tone3:"}, - "\U0001f938\U0001f3fd\u200d\u2640\ufe0f": {":woman_cartwheeling_tone3:"}, - "\U0001f938\U0001f3fd\u200d\u2642\ufe0f": {":man_cartwheeling_tone3:"}, - "\U0001f938\U0001f3fe": {":person_doing_cartwheel_tone4:"}, - "\U0001f938\U0001f3fe\u200d\u2640\ufe0f": {":woman_cartwheeling_tone4:"}, - "\U0001f938\U0001f3fe\u200d\u2642\ufe0f": {":man_cartwheeling_tone4:"}, - "\U0001f938\U0001f3ff": {":person_doing_cartwheel_tone5:"}, - "\U0001f938\U0001f3ff\u200d\u2640\ufe0f": {":woman_cartwheeling_tone5:"}, - "\U0001f938\U0001f3ff\u200d\u2642\ufe0f": {":man_cartwheeling_tone5:"}, - "\U0001f938\u200d\u2640\ufe0f": {":woman-cartwheeling:", ":woman_cartwheeling:"}, - "\U0001f938\u200d\u2642\ufe0f": {":man-cartwheeling:", ":man_cartwheeling:"}, - "\U0001f939": {":juggling:", ":juggling_person:", ":person_juggling:"}, - "\U0001f939\U0001f3fb": {":person_juggling_tone1:"}, - "\U0001f939\U0001f3fb\u200d\u2640\ufe0f": {":woman_juggling_tone1:"}, - "\U0001f939\U0001f3fb\u200d\u2642\ufe0f": {":man_juggling_tone1:"}, - "\U0001f939\U0001f3fc": {":person_juggling_tone2:"}, - "\U0001f939\U0001f3fc\u200d\u2640\ufe0f": {":woman_juggling_tone2:"}, - "\U0001f939\U0001f3fc\u200d\u2642\ufe0f": {":man_juggling_tone2:"}, - "\U0001f939\U0001f3fd": {":person_juggling_tone3:"}, - "\U0001f939\U0001f3fd\u200d\u2640\ufe0f": {":woman_juggling_tone3:"}, - "\U0001f939\U0001f3fd\u200d\u2642\ufe0f": {":man_juggling_tone3:"}, - "\U0001f939\U0001f3fe": {":person_juggling_tone4:"}, - "\U0001f939\U0001f3fe\u200d\u2640\ufe0f": {":woman_juggling_tone4:"}, - "\U0001f939\U0001f3fe\u200d\u2642\ufe0f": {":man_juggling_tone4:"}, - "\U0001f939\U0001f3ff": {":person_juggling_tone5:"}, - "\U0001f939\U0001f3ff\u200d\u2640\ufe0f": {":woman_juggling_tone5:"}, - "\U0001f939\U0001f3ff\u200d\u2642\ufe0f": {":man_juggling_tone5:"}, - "\U0001f939\u200d\u2640\ufe0f": {":woman-juggling:", ":woman_juggling:"}, - "\U0001f939\u200d\u2642\ufe0f": {":man-juggling:", ":man_juggling:"}, - "\U0001f93a": {":fencer:", ":person_fencing:"}, - "\U0001f93c": {":wrestlers:", ":wrestling:", ":people_wrestling:"}, - "\U0001f93c\u200d\u2640\ufe0f": {":woman-wrestling:", ":women_wrestling:"}, - "\U0001f93c\u200d\u2642\ufe0f": {":man-wrestling:", ":men_wrestling:"}, - "\U0001f93d": {":water_polo:", ":person_playing_water_polo:"}, - "\U0001f93d\U0001f3fb": {":person_playing_water_polo_tone1:"}, - "\U0001f93d\U0001f3fb\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone1:"}, - "\U0001f93d\U0001f3fb\u200d\u2642\ufe0f": {":man_playing_water_polo_tone1:"}, - "\U0001f93d\U0001f3fc": {":person_playing_water_polo_tone2:"}, - "\U0001f93d\U0001f3fc\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone2:"}, - "\U0001f93d\U0001f3fc\u200d\u2642\ufe0f": {":man_playing_water_polo_tone2:"}, - "\U0001f93d\U0001f3fd": {":person_playing_water_polo_tone3:"}, - "\U0001f93d\U0001f3fd\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone3:"}, - "\U0001f93d\U0001f3fd\u200d\u2642\ufe0f": {":man_playing_water_polo_tone3:"}, - "\U0001f93d\U0001f3fe": {":person_playing_water_polo_tone4:"}, - "\U0001f93d\U0001f3fe\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone4:"}, - "\U0001f93d\U0001f3fe\u200d\u2642\ufe0f": {":man_playing_water_polo_tone4:"}, - "\U0001f93d\U0001f3ff": {":person_playing_water_polo_tone5:"}, - "\U0001f93d\U0001f3ff\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone5:"}, - "\U0001f93d\U0001f3ff\u200d\u2642\ufe0f": {":man_playing_water_polo_tone5:"}, - "\U0001f93d\u200d\u2640\ufe0f": {":woman-playing-water-polo:", ":woman_playing_water_polo:"}, - "\U0001f93d\u200d\u2642\ufe0f": {":man-playing-water-polo:", ":man_playing_water_polo:"}, - "\U0001f93e": {":handball:", ":handball_person:", ":person_playing_handball:"}, - "\U0001f93e\U0001f3fb": {":person_playing_handball_tone1:"}, - "\U0001f93e\U0001f3fb\u200d\u2640\ufe0f": {":woman_playing_handball_tone1:"}, - "\U0001f93e\U0001f3fb\u200d\u2642\ufe0f": {":man_playing_handball_tone1:"}, - "\U0001f93e\U0001f3fc": {":person_playing_handball_tone2:"}, - "\U0001f93e\U0001f3fc\u200d\u2640\ufe0f": {":woman_playing_handball_tone2:"}, - "\U0001f93e\U0001f3fc\u200d\u2642\ufe0f": {":man_playing_handball_tone2:"}, - "\U0001f93e\U0001f3fd": {":person_playing_handball_tone3:"}, - "\U0001f93e\U0001f3fd\u200d\u2640\ufe0f": {":woman_playing_handball_tone3:"}, - "\U0001f93e\U0001f3fd\u200d\u2642\ufe0f": {":man_playing_handball_tone3:"}, - "\U0001f93e\U0001f3fe": {":person_playing_handball_tone4:"}, - "\U0001f93e\U0001f3fe\u200d\u2640\ufe0f": {":woman_playing_handball_tone4:"}, - "\U0001f93e\U0001f3fe\u200d\u2642\ufe0f": {":man_playing_handball_tone4:"}, - "\U0001f93e\U0001f3ff": {":person_playing_handball_tone5:"}, - "\U0001f93e\U0001f3ff\u200d\u2640\ufe0f": {":woman_playing_handball_tone5:"}, - "\U0001f93e\U0001f3ff\u200d\u2642\ufe0f": {":man_playing_handball_tone5:"}, - "\U0001f93e\u200d\u2640\ufe0f": {":woman-playing-handball:", ":woman_playing_handball:"}, - "\U0001f93e\u200d\u2642\ufe0f": {":man-playing-handball:", ":man_playing_handball:"}, - "\U0001f93f": {":diving_mask:"}, - "\U0001f940": {":wilted_rose:", ":wilted_flower:"}, - "\U0001f941": {":drum:", ":drum_with_drumsticks:"}, - "\U0001f942": {":champagne_glass:", ":clinking_glasses:"}, - "\U0001f943": {":tumbler_glass:"}, - "\U0001f944": {":spoon:"}, - "\U0001f945": {":goal:", ":goal_net:"}, - "\U0001f947": {":first_place:", ":1st_place_medal:", ":first_place_medal:"}, - "\U0001f948": {":second_place:", ":2nd_place_medal:", ":second_place_medal:"}, - "\U0001f949": {":third_place:", ":3rd_place_medal:", ":third_place_medal:"}, - "\U0001f94a": {":boxing_glove:"}, - "\U0001f94b": {":martial_arts_uniform:"}, - "\U0001f94c": {":curling_stone:"}, - "\U0001f94d": {":lacrosse:"}, - "\U0001f94e": {":softball:"}, - "\U0001f94f": {":flying_disc:"}, - "\U0001f950": {":croissant:"}, - "\U0001f951": {":avocado:"}, - "\U0001f952": {":cucumber:"}, - "\U0001f953": {":bacon:"}, - "\U0001f954": {":potato:"}, - "\U0001f955": {":carrot:"}, - "\U0001f956": {":french_bread:", ":baguette_bread:"}, - "\U0001f957": {":salad:", ":green_salad:"}, - "\U0001f958": {":shallow_pan_of_food:"}, - "\U0001f959": {":stuffed_flatbread:"}, - "\U0001f95a": {":egg:"}, - "\U0001f95b": {":milk:", ":milk_glass:", ":glass_of_milk:"}, - "\U0001f95c": {":peanuts:"}, - "\U0001f95d": {":kiwi:", ":kiwifruit:", ":kiwi_fruit:"}, - "\U0001f95e": {":pancakes:"}, - "\U0001f95f": {":dumpling:"}, - "\U0001f960": {":fortune_cookie:"}, - "\U0001f961": {":takeout_box:"}, - "\U0001f962": {":chopsticks:"}, - "\U0001f963": {":bowl_with_spoon:"}, - "\U0001f964": {":cup_with_straw:"}, - "\U0001f965": {":coconut:"}, - "\U0001f966": {":broccoli:"}, - "\U0001f967": {":pie:"}, - "\U0001f968": {":pretzel:"}, - "\U0001f969": {":cut_of_meat:"}, - "\U0001f96a": {":sandwich:"}, - "\U0001f96b": {":canned_food:"}, - "\U0001f96c": {":leafy_green:"}, - "\U0001f96d": {":mango:"}, - "\U0001f96e": {":moon_cake:"}, - "\U0001f96f": {":bagel:"}, - "\U0001f970": {":smiling_face_with_hearts:", ":smiling_face_with_3_hearts:", ":smiling_face_with_three_hearts:"}, - "\U0001f971": {":yawning_face:"}, - "\U0001f972": {":smiling_face_with_tear:"}, - "\U0001f973": {":partying_face:"}, - "\U0001f974": {":woozy_face:"}, - "\U0001f975": {":hot_face:"}, - "\U0001f976": {":cold_face:"}, - "\U0001f977": {":ninja:"}, - "\U0001f978": {":disguised_face:"}, - "\U0001f97a": {":pleading_face:"}, - "\U0001f97b": {":sari:"}, - "\U0001f97c": {":lab_coat:"}, - "\U0001f97d": {":goggles:"}, - "\U0001f97e": {":hiking_boot:"}, - "\U0001f97f": {":flat_shoe:", ":womans_flat_shoe:"}, - "\U0001f980": {":crab:"}, - "\U0001f981": {":lion:", ":lion_face:"}, - "\U0001f982": {":scorpion:"}, - "\U0001f983": {":turkey:"}, - "\U0001f984": {":unicorn:", ":unicorn_face:"}, - "\U0001f985": {":eagle:"}, - "\U0001f986": {":duck:"}, - "\U0001f987": {":bat:"}, - "\U0001f988": {":shark:"}, - "\U0001f989": {":owl:"}, - "\U0001f98a": {":fox:", ":fox_face:"}, - "\U0001f98b": {":butterfly:"}, - "\U0001f98c": {":deer:"}, - "\U0001f98d": {":gorilla:"}, - "\U0001f98e": {":lizard:"}, - "\U0001f98f": {":rhino:", ":rhinoceros:"}, - "\U0001f990": {":shrimp:"}, - "\U0001f991": {":squid:"}, - "\U0001f992": {":giraffe:", ":giraffe_face:"}, - "\U0001f993": {":zebra:", ":zebra_face:"}, - "\U0001f994": {":hedgehog:"}, - "\U0001f995": {":sauropod:"}, - "\U0001f996": {":T-Rex:", ":t-rex:", ":t_rex:"}, - "\U0001f997": {":cricket:"}, - "\U0001f998": {":kangaroo:"}, - "\U0001f999": {":llama:"}, - "\U0001f99a": {":peacock:"}, - "\U0001f99b": {":hippopotamus:"}, - "\U0001f99c": {":parrot:"}, - "\U0001f99d": {":raccoon:"}, - "\U0001f99e": {":lobster:"}, - "\U0001f99f": {":mosquito:"}, - "\U0001f9a0": {":microbe:"}, - "\U0001f9a1": {":badger:"}, - "\U0001f9a2": {":swan:"}, - "\U0001f9a3": {":mammoth:"}, - "\U0001f9a4": {":dodo:"}, - "\U0001f9a5": {":sloth:"}, - "\U0001f9a6": {":otter:"}, - "\U0001f9a7": {":orangutan:"}, - "\U0001f9a8": {":skunk:"}, - "\U0001f9a9": {":flamingo:"}, - "\U0001f9aa": {":oyster:"}, - "\U0001f9ab": {":beaver:"}, - "\U0001f9ac": {":bison:"}, - "\U0001f9ad": {":seal:"}, - "\U0001f9ae": {":guide_dog:"}, - "\U0001f9af": {":white_cane:", ":probing_cane:"}, - "\U0001f9b0": {":red_hair:"}, - "\U0001f9b1": {":curly_hair:"}, - "\U0001f9b2": {":bald:"}, - "\U0001f9b3": {":white_hair:"}, - "\U0001f9b4": {":bone:"}, - "\U0001f9b5": {":leg:"}, - "\U0001f9b6": {":foot:"}, - "\U0001f9b7": {":tooth:"}, - "\U0001f9b8": {":superhero:"}, - "\U0001f9b8\u200d\u2640\ufe0f": {":superhero_woman:", ":woman_superhero:", ":female_superhero:"}, - "\U0001f9b8\u200d\u2642\ufe0f": {":man_superhero:", ":superhero_man:", ":male_superhero:"}, - "\U0001f9b9": {":supervillain:"}, - "\U0001f9b9\u200d\u2640\ufe0f": {":supervillain_woman:", ":woman_supervillain:", ":female_supervillain:"}, - "\U0001f9b9\u200d\u2642\ufe0f": {":man_supervillain:", ":supervillain_man:", ":male_supervillain:"}, - "\U0001f9ba": {":safety_vest:"}, - "\U0001f9bb": {":ear_with_hearing_aid:"}, - "\U0001f9bc": {":motorized_wheelchair:"}, - "\U0001f9bd": {":manual_wheelchair:"}, - "\U0001f9be": {":mechanical_arm:"}, - "\U0001f9bf": {":mechanical_leg:"}, - "\U0001f9c0": {":cheese:", ":cheese_wedge:"}, - "\U0001f9c1": {":cupcake:"}, - "\U0001f9c2": {":salt:"}, - "\U0001f9c3": {":beverage_box:"}, - "\U0001f9c4": {":garlic:"}, - "\U0001f9c5": {":onion:"}, - "\U0001f9c6": {":falafel:"}, - "\U0001f9c7": {":waffle:"}, - "\U0001f9c8": {":butter:"}, - "\U0001f9c9": {":mate:", ":mate_drink:"}, - "\U0001f9ca": {":ice:", ":ice_cube:"}, - "\U0001f9cb": {":bubble_tea:"}, - "\U0001f9cd": {":person_standing:", ":standing_person:"}, - "\U0001f9cd\u200d\u2640\ufe0f": {":standing_woman:", ":woman_standing:"}, - "\U0001f9cd\u200d\u2642\ufe0f": {":man_standing:", ":standing_man:"}, - "\U0001f9ce": {":kneeling_person:", ":person_kneeling:"}, - "\U0001f9ce\u200d\u2640\ufe0f": {":kneeling_woman:", ":woman_kneeling:"}, - "\U0001f9ce\u200d\u2642\ufe0f": {":kneeling_man:", ":man_kneeling:"}, - "\U0001f9cf": {":deaf_person:"}, - "\U0001f9cf\u200d\u2640\ufe0f": {":deaf_woman:"}, - "\U0001f9cf\u200d\u2642\ufe0f": {":deaf_man:"}, - "\U0001f9d0": {":monocle_face:", ":face_with_monocle:"}, - "\U0001f9d1": {":adult:", ":person:"}, - "\U0001f9d1\U0001f3fb": {":adult_tone1:"}, - "\U0001f9d1\U0001f3fc": {":adult_tone2:"}, - "\U0001f9d1\U0001f3fd": {":adult_tone3:"}, - "\U0001f9d1\U0001f3fe": {":adult_tone4:"}, - "\U0001f9d1\U0001f3ff": {":adult_tone5:"}, - "\U0001f9d1\u200d\U0001f33e": {":farmer:"}, - "\U0001f9d1\u200d\U0001f373": {":cook:"}, - "\U0001f9d1\u200d\U0001f37c": {":person_feeding_baby:"}, - "\U0001f9d1\u200d\U0001f384": {":mx_claus:"}, - "\U0001f9d1\u200d\U0001f393": {":student:"}, - "\U0001f9d1\u200d\U0001f3a4": {":singer:"}, - "\U0001f9d1\u200d\U0001f3a8": {":artist:"}, - "\U0001f9d1\u200d\U0001f3eb": {":teacher:"}, - "\U0001f9d1\u200d\U0001f3ed": {":factory_worker:"}, - "\U0001f9d1\u200d\U0001f4bb": {":technologist:"}, - "\U0001f9d1\u200d\U0001f4bc": {":office_worker:"}, - "\U0001f9d1\u200d\U0001f527": {":mechanic:"}, - "\U0001f9d1\u200d\U0001f52c": {":scientist:"}, - "\U0001f9d1\u200d\U0001f680": {":astronaut:"}, - "\U0001f9d1\u200d\U0001f692": {":firefighter:"}, - "\U0001f9d1\u200d\U0001f91d\u200d\U0001f9d1": {":people_holding_hands:"}, - "\U0001f9d1\u200d\U0001f9af": {":person_with_white_cane:", ":person_with_probing_cane:"}, - "\U0001f9d1\u200d\U0001f9b0": {":person_red_hair:", ":red_haired_person:"}, - "\U0001f9d1\u200d\U0001f9b1": {":person_curly_hair:", ":curly_haired_person:"}, - "\U0001f9d1\u200d\U0001f9b2": {":bald_person:", ":person_bald:"}, - "\U0001f9d1\u200d\U0001f9b3": {":person_white_hair:", ":white_haired_person:"}, - "\U0001f9d1\u200d\U0001f9bc": {":person_in_motorized_wheelchair:"}, - "\U0001f9d1\u200d\U0001f9bd": {":person_in_manual_wheelchair:"}, - "\U0001f9d1\u200d\u2695\ufe0f": {":health_worker:"}, - "\U0001f9d1\u200d\u2696\ufe0f": {":judge:"}, - "\U0001f9d1\u200d\u2708\ufe0f": {":pilot:"}, - "\U0001f9d2": {":child:"}, - "\U0001f9d2\U0001f3fb": {":child_tone1:"}, - "\U0001f9d2\U0001f3fc": {":child_tone2:"}, - "\U0001f9d2\U0001f3fd": {":child_tone3:"}, - "\U0001f9d2\U0001f3fe": {":child_tone4:"}, - "\U0001f9d2\U0001f3ff": {":child_tone5:"}, - "\U0001f9d3": {":older_adult:", ":older_person:"}, - "\U0001f9d3\U0001f3fb": {":older_adult_tone1:"}, - "\U0001f9d3\U0001f3fc": {":older_adult_tone2:"}, - "\U0001f9d3\U0001f3fd": {":older_adult_tone3:"}, - "\U0001f9d3\U0001f3fe": {":older_adult_tone4:"}, - "\U0001f9d3\U0001f3ff": {":older_adult_tone5:"}, - "\U0001f9d4": {":man_beard:", ":bearded_person:"}, - "\U0001f9d4\U0001f3fb": {":bearded_person_tone1:"}, - "\U0001f9d4\U0001f3fc": {":bearded_person_tone2:"}, - "\U0001f9d4\U0001f3fd": {":bearded_person_tone3:"}, - "\U0001f9d4\U0001f3fe": {":bearded_person_tone4:"}, - "\U0001f9d4\U0001f3ff": {":bearded_person_tone5:"}, - "\U0001f9d5": {":woman_with_headscarf:", ":person_with_headscarf:"}, - "\U0001f9d5\U0001f3fb": {":woman_with_headscarf_tone1:"}, - "\U0001f9d5\U0001f3fc": {":woman_with_headscarf_tone2:"}, - "\U0001f9d5\U0001f3fd": {":woman_with_headscarf_tone3:"}, - "\U0001f9d5\U0001f3fe": {":woman_with_headscarf_tone4:"}, - "\U0001f9d5\U0001f3ff": {":woman_with_headscarf_tone5:"}, - "\U0001f9d6": {":sauna_person:"}, - "\U0001f9d6\U0001f3fb": {":person_in_steamy_room_tone1:"}, - "\U0001f9d6\U0001f3fb\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone1:"}, - "\U0001f9d6\U0001f3fb\u200d\u2642\ufe0f": {":man_in_steamy_room_tone1:"}, - "\U0001f9d6\U0001f3fc": {":person_in_steamy_room_tone2:"}, - "\U0001f9d6\U0001f3fc\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone2:"}, - "\U0001f9d6\U0001f3fc\u200d\u2642\ufe0f": {":man_in_steamy_room_tone2:"}, - "\U0001f9d6\U0001f3fd": {":person_in_steamy_room_tone3:"}, - "\U0001f9d6\U0001f3fd\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone3:"}, - "\U0001f9d6\U0001f3fd\u200d\u2642\ufe0f": {":man_in_steamy_room_tone3:"}, - "\U0001f9d6\U0001f3fe": {":person_in_steamy_room_tone4:"}, - "\U0001f9d6\U0001f3fe\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone4:"}, - "\U0001f9d6\U0001f3fe\u200d\u2642\ufe0f": {":man_in_steamy_room_tone4:"}, - "\U0001f9d6\U0001f3ff": {":person_in_steamy_room_tone5:"}, - "\U0001f9d6\U0001f3ff\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone5:"}, - "\U0001f9d6\U0001f3ff\u200d\u2642\ufe0f": {":man_in_steamy_room_tone5:"}, - "\U0001f9d6\u200d\u2640\ufe0f": {":sauna_woman:", ":woman_in_steamy_room:"}, - "\U0001f9d6\u200d\u2642\ufe0f": {":sauna_man:", ":man_in_steamy_room:", ":person_in_steamy_room:"}, - "\U0001f9d7": {":climbing:"}, - "\U0001f9d7\U0001f3fb": {":person_climbing_tone1:"}, - "\U0001f9d7\U0001f3fb\u200d\u2640\ufe0f": {":woman_climbing_tone1:"}, - "\U0001f9d7\U0001f3fb\u200d\u2642\ufe0f": {":man_climbing_tone1:"}, - "\U0001f9d7\U0001f3fc": {":person_climbing_tone2:"}, - "\U0001f9d7\U0001f3fc\u200d\u2640\ufe0f": {":woman_climbing_tone2:"}, - "\U0001f9d7\U0001f3fc\u200d\u2642\ufe0f": {":man_climbing_tone2:"}, - "\U0001f9d7\U0001f3fd": {":person_climbing_tone3:"}, - "\U0001f9d7\U0001f3fd\u200d\u2640\ufe0f": {":woman_climbing_tone3:"}, - "\U0001f9d7\U0001f3fd\u200d\u2642\ufe0f": {":man_climbing_tone3:"}, - "\U0001f9d7\U0001f3fe": {":person_climbing_tone4:"}, - "\U0001f9d7\U0001f3fe\u200d\u2640\ufe0f": {":woman_climbing_tone4:"}, - "\U0001f9d7\U0001f3fe\u200d\u2642\ufe0f": {":man_climbing_tone4:"}, - "\U0001f9d7\U0001f3ff": {":person_climbing_tone5:"}, - "\U0001f9d7\U0001f3ff\u200d\u2640\ufe0f": {":woman_climbing_tone5:"}, - "\U0001f9d7\U0001f3ff\u200d\u2642\ufe0f": {":man_climbing_tone5:"}, - "\U0001f9d7\u200d\u2640\ufe0f": {":climbing_woman:", ":woman_climbing:", ":person_climbing:"}, - "\U0001f9d7\u200d\u2642\ufe0f": {":climbing_man:", ":man_climbing:"}, - "\U0001f9d8": {":lotus_position:"}, - "\U0001f9d8\U0001f3fb": {":person_in_lotus_position_tone1:"}, - "\U0001f9d8\U0001f3fb\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone1:"}, - "\U0001f9d8\U0001f3fb\u200d\u2642\ufe0f": {":man_in_lotus_position_tone1:"}, - "\U0001f9d8\U0001f3fc": {":person_in_lotus_position_tone2:"}, - "\U0001f9d8\U0001f3fc\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone2:"}, - "\U0001f9d8\U0001f3fc\u200d\u2642\ufe0f": {":man_in_lotus_position_tone2:"}, - "\U0001f9d8\U0001f3fd": {":person_in_lotus_position_tone3:"}, - "\U0001f9d8\U0001f3fd\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone3:"}, - "\U0001f9d8\U0001f3fd\u200d\u2642\ufe0f": {":man_in_lotus_position_tone3:"}, - "\U0001f9d8\U0001f3fe": {":person_in_lotus_position_tone4:"}, - "\U0001f9d8\U0001f3fe\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone4:"}, - "\U0001f9d8\U0001f3fe\u200d\u2642\ufe0f": {":man_in_lotus_position_tone4:"}, - "\U0001f9d8\U0001f3ff": {":person_in_lotus_position_tone5:"}, - "\U0001f9d8\U0001f3ff\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone5:"}, - "\U0001f9d8\U0001f3ff\u200d\u2642\ufe0f": {":man_in_lotus_position_tone5:"}, - "\U0001f9d8\u200d\u2640\ufe0f": {":lotus_position_woman:", ":woman_in_lotus_position:", ":person_in_lotus_position:"}, - "\U0001f9d8\u200d\u2642\ufe0f": {":lotus_position_man:", ":man_in_lotus_position:"}, - "\U0001f9d9\U0001f3fb": {":mage_tone1:"}, - "\U0001f9d9\U0001f3fb\u200d\u2640\ufe0f": {":woman_mage_tone1:"}, - "\U0001f9d9\U0001f3fb\u200d\u2642\ufe0f": {":man_mage_tone1:"}, - "\U0001f9d9\U0001f3fc": {":mage_tone2:"}, - "\U0001f9d9\U0001f3fc\u200d\u2640\ufe0f": {":woman_mage_tone2:"}, - "\U0001f9d9\U0001f3fc\u200d\u2642\ufe0f": {":man_mage_tone2:"}, - "\U0001f9d9\U0001f3fd": {":mage_tone3:"}, - "\U0001f9d9\U0001f3fd\u200d\u2640\ufe0f": {":woman_mage_tone3:"}, - "\U0001f9d9\U0001f3fd\u200d\u2642\ufe0f": {":man_mage_tone3:"}, - "\U0001f9d9\U0001f3fe": {":mage_tone4:"}, - "\U0001f9d9\U0001f3fe\u200d\u2640\ufe0f": {":woman_mage_tone4:"}, - "\U0001f9d9\U0001f3fe\u200d\u2642\ufe0f": {":man_mage_tone4:"}, - "\U0001f9d9\U0001f3ff": {":mage_tone5:"}, - "\U0001f9d9\U0001f3ff\u200d\u2640\ufe0f": {":woman_mage_tone5:"}, - "\U0001f9d9\U0001f3ff\u200d\u2642\ufe0f": {":man_mage_tone5:"}, - "\U0001f9d9\u200d\u2640\ufe0f": {":mage:", ":mage_woman:", ":woman_mage:", ":female_mage:"}, - "\U0001f9d9\u200d\u2642\ufe0f": {":mage_man:", ":man_mage:", ":male_mage:"}, - "\U0001f9da\U0001f3fb": {":fairy_tone1:"}, - "\U0001f9da\U0001f3fb\u200d\u2640\ufe0f": {":woman_fairy_tone1:"}, - "\U0001f9da\U0001f3fb\u200d\u2642\ufe0f": {":man_fairy_tone1:"}, - "\U0001f9da\U0001f3fc": {":fairy_tone2:"}, - "\U0001f9da\U0001f3fc\u200d\u2640\ufe0f": {":woman_fairy_tone2:"}, - "\U0001f9da\U0001f3fc\u200d\u2642\ufe0f": {":man_fairy_tone2:"}, - "\U0001f9da\U0001f3fd": {":fairy_tone3:"}, - "\U0001f9da\U0001f3fd\u200d\u2640\ufe0f": {":woman_fairy_tone3:"}, - "\U0001f9da\U0001f3fd\u200d\u2642\ufe0f": {":man_fairy_tone3:"}, - "\U0001f9da\U0001f3fe": {":fairy_tone4:"}, - "\U0001f9da\U0001f3fe\u200d\u2640\ufe0f": {":woman_fairy_tone4:"}, - "\U0001f9da\U0001f3fe\u200d\u2642\ufe0f": {":man_fairy_tone4:"}, - "\U0001f9da\U0001f3ff": {":fairy_tone5:"}, - "\U0001f9da\U0001f3ff\u200d\u2640\ufe0f": {":woman_fairy_tone5:"}, - "\U0001f9da\U0001f3ff\u200d\u2642\ufe0f": {":man_fairy_tone5:"}, - "\U0001f9da\u200d\u2640\ufe0f": {":fairy:", ":fairy_woman:", ":woman_fairy:", ":female_fairy:"}, - "\U0001f9da\u200d\u2642\ufe0f": {":fairy_man:", ":man_fairy:", ":male_fairy:"}, - "\U0001f9db\U0001f3fb": {":vampire_tone1:"}, - "\U0001f9db\U0001f3fb\u200d\u2640\ufe0f": {":woman_vampire_tone1:"}, - "\U0001f9db\U0001f3fb\u200d\u2642\ufe0f": {":man_vampire_tone1:"}, - "\U0001f9db\U0001f3fc": {":vampire_tone2:"}, - "\U0001f9db\U0001f3fc\u200d\u2640\ufe0f": {":woman_vampire_tone2:"}, - "\U0001f9db\U0001f3fc\u200d\u2642\ufe0f": {":man_vampire_tone2:"}, - "\U0001f9db\U0001f3fd": {":vampire_tone3:"}, - "\U0001f9db\U0001f3fd\u200d\u2640\ufe0f": {":woman_vampire_tone3:"}, - "\U0001f9db\U0001f3fd\u200d\u2642\ufe0f": {":man_vampire_tone3:"}, - "\U0001f9db\U0001f3fe": {":vampire_tone4:"}, - "\U0001f9db\U0001f3fe\u200d\u2640\ufe0f": {":woman_vampire_tone4:"}, - "\U0001f9db\U0001f3fe\u200d\u2642\ufe0f": {":man_vampire_tone4:"}, - "\U0001f9db\U0001f3ff": {":vampire_tone5:"}, - "\U0001f9db\U0001f3ff\u200d\u2640\ufe0f": {":woman_vampire_tone5:"}, - "\U0001f9db\U0001f3ff\u200d\u2642\ufe0f": {":man_vampire_tone5:"}, - "\U0001f9db\u200d\u2640\ufe0f": {":vampire:", ":vampire_woman:", ":woman_vampire:", ":female_vampire:"}, - "\U0001f9db\u200d\u2642\ufe0f": {":man_vampire:", ":vampire_man:", ":male_vampire:"}, - "\U0001f9dc\U0001f3fb": {":merperson_tone1:"}, - "\U0001f9dc\U0001f3fb\u200d\u2640\ufe0f": {":mermaid_tone1:"}, - "\U0001f9dc\U0001f3fb\u200d\u2642\ufe0f": {":merman_tone1:"}, - "\U0001f9dc\U0001f3fc": {":merperson_tone2:"}, - "\U0001f9dc\U0001f3fc\u200d\u2640\ufe0f": {":mermaid_tone2:"}, - "\U0001f9dc\U0001f3fc\u200d\u2642\ufe0f": {":merman_tone2:"}, - "\U0001f9dc\U0001f3fd": {":merperson_tone3:"}, - "\U0001f9dc\U0001f3fd\u200d\u2640\ufe0f": {":mermaid_tone3:"}, - "\U0001f9dc\U0001f3fd\u200d\u2642\ufe0f": {":merman_tone3:"}, - "\U0001f9dc\U0001f3fe": {":merperson_tone4:"}, - "\U0001f9dc\U0001f3fe\u200d\u2640\ufe0f": {":mermaid_tone4:"}, - "\U0001f9dc\U0001f3fe\u200d\u2642\ufe0f": {":merman_tone4:"}, - "\U0001f9dc\U0001f3ff": {":merperson_tone5:"}, - "\U0001f9dc\U0001f3ff\u200d\u2640\ufe0f": {":mermaid_tone5:"}, - "\U0001f9dc\U0001f3ff\u200d\u2642\ufe0f": {":merman_tone5:"}, - "\U0001f9dc\u200d\u2640\ufe0f": {":mermaid:"}, - "\U0001f9dc\u200d\u2642\ufe0f": {":merman:", ":merperson:"}, - "\U0001f9dd\U0001f3fb": {":elf_tone1:"}, - "\U0001f9dd\U0001f3fb\u200d\u2640\ufe0f": {":woman_elf_tone1:"}, - "\U0001f9dd\U0001f3fb\u200d\u2642\ufe0f": {":man_elf_tone1:"}, - "\U0001f9dd\U0001f3fc": {":elf_tone2:"}, - "\U0001f9dd\U0001f3fc\u200d\u2640\ufe0f": {":woman_elf_tone2:"}, - "\U0001f9dd\U0001f3fc\u200d\u2642\ufe0f": {":man_elf_tone2:"}, - "\U0001f9dd\U0001f3fd": {":elf_tone3:"}, - "\U0001f9dd\U0001f3fd\u200d\u2640\ufe0f": {":woman_elf_tone3:"}, - "\U0001f9dd\U0001f3fd\u200d\u2642\ufe0f": {":man_elf_tone3:"}, - "\U0001f9dd\U0001f3fe": {":elf_tone4:"}, - "\U0001f9dd\U0001f3fe\u200d\u2640\ufe0f": {":woman_elf_tone4:"}, - "\U0001f9dd\U0001f3fe\u200d\u2642\ufe0f": {":man_elf_tone4:"}, - "\U0001f9dd\U0001f3ff": {":elf_tone5:"}, - "\U0001f9dd\U0001f3ff\u200d\u2640\ufe0f": {":woman_elf_tone5:"}, - "\U0001f9dd\U0001f3ff\u200d\u2642\ufe0f": {":man_elf_tone5:"}, - "\U0001f9dd\u200d\u2640\ufe0f": {":elf_woman:", ":woman_elf:", ":female_elf:"}, - "\U0001f9dd\u200d\u2642\ufe0f": {":elf:", ":elf_man:", ":man_elf:", ":male_elf:"}, - "\U0001f9de\u200d\u2640\ufe0f": {":genie_woman:", ":woman_genie:", ":female_genie:"}, - "\U0001f9de\u200d\u2642\ufe0f": {":genie:", ":genie_man:", ":man_genie:", ":male_genie:"}, - "\U0001f9df\u200d\u2640\ufe0f": {":woman_zombie:", ":zombie_woman:", ":female_zombie:"}, - "\U0001f9df\u200d\u2642\ufe0f": {":zombie:", ":man_zombie:", ":zombie_man:", ":male_zombie:"}, - "\U0001f9e0": {":brain:"}, - "\U0001f9e1": {":orange_heart:"}, - "\U0001f9e2": {":billed_cap:"}, - "\U0001f9e3": {":scarf:"}, - "\U0001f9e4": {":gloves:"}, - "\U0001f9e5": {":coat:"}, - "\U0001f9e6": {":socks:"}, - "\U0001f9e7": {":red_envelope:"}, - "\U0001f9e8": {":firecracker:"}, - "\U0001f9e9": {":jigsaw:", ":puzzle_piece:"}, - "\U0001f9ea": {":test_tube:"}, - "\U0001f9eb": {":petri_dish:"}, - "\U0001f9ec": {":dna:"}, - "\U0001f9ed": {":compass:"}, - "\U0001f9ee": {":abacus:"}, - "\U0001f9ef": {":fire_extinguisher:"}, - "\U0001f9f0": {":toolbox:"}, - "\U0001f9f1": {":brick:", ":bricks:"}, - "\U0001f9f2": {":magnet:"}, - "\U0001f9f3": {":luggage:"}, - "\U0001f9f4": {":lotion_bottle:"}, - "\U0001f9f5": {":thread:"}, - "\U0001f9f6": {":yarn:"}, - "\U0001f9f7": {":safety_pin:"}, - "\U0001f9f8": {":teddy_bear:"}, - "\U0001f9f9": {":broom:"}, - "\U0001f9fa": {":basket:"}, - "\U0001f9fb": {":roll_of_paper:"}, - "\U0001f9fc": {":soap:"}, - "\U0001f9fd": {":sponge:"}, - "\U0001f9fe": {":receipt:"}, - "\U0001f9ff": {":nazar_amulet:"}, - "\U0001fa70": {":ballet_shoes:"}, - "\U0001fa71": {":one-piece_swimsuit:", ":one_piece_swimsuit:"}, - "\U0001fa72": {":briefs:", ":swim_brief:"}, - "\U0001fa73": {":shorts:"}, - "\U0001fa74": {":thong_sandal:"}, - "\U0001fa78": {":drop_of_blood:"}, - "\U0001fa79": {":adhesive_bandage:"}, - "\U0001fa7a": {":stethoscope:"}, - "\U0001fa80": {":yo-yo:", ":yo_yo:"}, - "\U0001fa81": {":kite:"}, - "\U0001fa82": {":parachute:"}, - "\U0001fa83": {":boomerang:"}, - "\U0001fa84": {":magic_wand:"}, - "\U0001fa85": {":pi_ata:", ":piñata:"}, - "\U0001fa86": {":nesting_dolls:"}, - "\U0001fa90": {":ringed_planet:"}, - "\U0001fa91": {":chair:"}, - "\U0001fa92": {":razor:"}, - "\U0001fa93": {":axe:"}, - "\U0001fa94": {":diya_lamp:"}, - "\U0001fa95": {":banjo:"}, - "\U0001fa96": {":military_helmet:"}, - "\U0001fa97": {":accordion:"}, - "\U0001fa98": {":long_drum:"}, - "\U0001fa99": {":coin:"}, - "\U0001fa9a": {":carpentry_saw:"}, - "\U0001fa9b": {":screwdriver:"}, - "\U0001fa9c": {":ladder:"}, - "\U0001fa9d": {":hook:"}, - "\U0001fa9e": {":mirror:"}, - "\U0001fa9f": {":window:"}, - "\U0001faa0": {":plunger:"}, - "\U0001faa1": {":sewing_needle:"}, - "\U0001faa2": {":knot:"}, - "\U0001faa3": {":bucket:"}, - "\U0001faa4": {":mouse_trap:"}, - "\U0001faa5": {":toothbrush:"}, - "\U0001faa6": {":headstone:"}, - "\U0001faa7": {":placard:"}, - "\U0001faa8": {":rock:"}, - "\U0001fab0": {":fly:"}, - "\U0001fab1": {":worm:"}, - "\U0001fab3": {":cockroach:"}, - "\U0001fab4": {":potted_plant:"}, - "\U0001fab5": {":wood:"}, - "\U0001fab6": {":feather:"}, - "\U0001fac0": {":anatomical_heart:"}, - "\U0001fac1": {":lungs:"}, - "\U0001fac2": {":people_hugging:"}, - "\U0001fad0": {":blueberries:"}, - "\U0001fad1": {":bell_pepper:"}, - "\U0001fad2": {":olive:"}, - "\U0001fad3": {":flatbread:"}, - "\U0001fad4": {":tamale:"}, - "\U0001fad5": {":fondue:"}, - "\U0001fad6": {":teapot:"}, - "\u00a9\ufe0f": {":copyright:"}, - "\u00ae\ufe0f": {":registered:"}, - "\u203c": {":double_exclamation_mark:"}, - "\u203c\ufe0f": {":bangbang:"}, - "\u2049": {":exclamation_question_mark:"}, - "\u2049\ufe0f": {":interrobang:"}, - "\u2122": {":trade_mark:"}, - "\u2122\ufe0f": {":tm:"}, - "\u2139": {":information:"}, - "\u2139\ufe0f": {":information_source:"}, - "\u2194": {":left-right_arrow:"}, - "\u2194\ufe0f": {":left_right_arrow:"}, - "\u2195": {":up-down_arrow:"}, - "\u2195\ufe0f": {":arrow_up_down:"}, - "\u2196": {":up-left_arrow:"}, - "\u2196\ufe0f": {":arrow_upper_left:"}, - "\u2197": {":up-right_arrow:"}, - "\u2197\ufe0f": {":arrow_upper_right:"}, - "\u2198": {":down-right_arrow:"}, - "\u2198\ufe0f": {":arrow_lower_right:"}, - "\u2199": {":down-left_arrow:"}, - "\u2199\ufe0f": {":arrow_lower_left:"}, - "\u21a9": {":right_arrow_curving_left:"}, - "\u21a9\ufe0f": {":leftwards_arrow_with_hook:"}, - "\u21aa": {":left_arrow_curving_right:"}, - "\u21aa\ufe0f": {":arrow_right_hook:"}, - "\u231a": {":watch:"}, - "\u231b": {":hourglass:", ":hourglass_done:"}, - "\u2328\ufe0f": {":keyboard:"}, - "\u23cf": {":eject_button:"}, - "\u23cf\ufe0f": {":eject:"}, - "\u23e9": {":fast_forward:", ":fast-forward_button:"}, - "\u23ea": {":rewind:", ":fast_reverse_button:"}, - "\u23eb": {":fast_up_button:", ":arrow_double_up:"}, - "\u23ec": {":fast_down_button:", ":arrow_double_down:"}, - "\u23ed": {":track_next:", ":next_track_button:"}, - "\u23ed\ufe0f": {":black_right_pointing_double_triangle_with_vertical_bar:"}, - "\u23ee": {":track_previous:", ":last_track_button:"}, - "\u23ee\ufe0f": {":previous_track_button:", ":black_left_pointing_double_triangle_with_vertical_bar:"}, - "\u23ef": {":play_pause:", ":play_or_pause_button:"}, - "\u23ef\ufe0f": {":black_right_pointing_triangle_with_double_vertical_bar:"}, - "\u23f0": {":alarm_clock:"}, - "\u23f1\ufe0f": {":stopwatch:"}, - "\u23f2": {":timer:"}, - "\u23f2\ufe0f": {":timer_clock:"}, - "\u23f3": {":hourglass_not_done:", ":hourglass_flowing_sand:"}, - "\u23f8": {":pause_button:"}, - "\u23f8\ufe0f": {":double_vertical_bar:"}, - "\u23f9": {":stop_button:"}, - "\u23f9\ufe0f": {":black_square_for_stop:"}, - "\u23fa": {":record_button:"}, - "\u23fa\ufe0f": {":black_circle_for_record:"}, - "\u24c2": {":circled_M:"}, - "\u24dc\ufe0f": {":m:"}, - "\u25aa\ufe0f": {":black_small_square:"}, - "\u25ab\ufe0f": {":white_small_square:"}, - "\u25b6": {":play_button:"}, - "\u25b6\ufe0f": {":arrow_forward:"}, - "\u25c0": {":reverse_button:"}, - "\u25c0\ufe0f": {":arrow_backward:"}, - "\u25fb\ufe0f": {":white_medium_square:"}, - "\u25fc\ufe0f": {":black_medium_square:"}, - "\u25fd": {":white_medium-small_square:", ":white_medium_small_square:"}, - "\u25fe": {":black_medium-small_square:", ":black_medium_small_square:"}, - "\u2600": {":sun:"}, - "\u2600\ufe0f": {":sunny:"}, - "\u2601\ufe0f": {":cloud:"}, - "\u2602": {":umbrella2:"}, - "\u2602\ufe0f": {":umbrella:", ":open_umbrella:"}, - "\u2603": {":snowman2:"}, - "\u2603\ufe0f": {":snowman:", ":snowman_with_snow:"}, - "\u2604\ufe0f": {":comet:"}, - "\u260e": {":telephone:"}, - "\u260e\ufe0f": {":phone:"}, - "\u2611": {":check_box_with_check:"}, - "\u2611\ufe0f": {":ballot_box_with_check:"}, - "\u2614": {":umbrella_with_rain_drops:"}, - "\u2615": {":coffee:", ":hot_beverage:"}, - "\u2618\ufe0f": {":shamrock:"}, - "\u261d": {":index_pointing_up:"}, - "\u261d\U0001f3fb": {":point_up_tone1:"}, - "\u261d\U0001f3fc": {":point_up_tone2:"}, - "\u261d\U0001f3fd": {":point_up_tone3:"}, - "\u261d\U0001f3fe": {":point_up_tone4:"}, - "\u261d\U0001f3ff": {":point_up_tone5:"}, - "\u261d\ufe0f": {":point_up:"}, - "\u2620": {":skull_crossbones:"}, - "\u2620\ufe0f": {":skull_and_crossbones:"}, - "\u2622": {":radioactive:"}, - "\u2622\ufe0f": {":radioactive_sign:"}, - "\u2623": {":biohazard:"}, - "\u2623\ufe0f": {":biohazard_sign:"}, - "\u2626\ufe0f": {":orthodox_cross:"}, - "\u262a\ufe0f": {":star_and_crescent:"}, - "\u262e": {":peace:"}, - "\u262e\ufe0f": {":peace_symbol:"}, - "\u262f\ufe0f": {":yin_yang:"}, - "\u2638\ufe0f": {":wheel_of_dharma:"}, - "\u2639": {":frowning2:", ":frowning_face:"}, - "\u2639\ufe0f": {":white_frowning_face:"}, - "\u263a": {":smiling_face:"}, - "\u263a\ufe0f": {":relaxed:"}, - "\u2640\ufe0f": {":female_sign:"}, - "\u2642\ufe0f": {":male_sign:"}, - "\u2648": {":Aries:", ":aries:"}, - "\u2649": {":Taurus:", ":taurus:"}, - "\u264a": {":Gemini:", ":gemini:"}, - "\u264b": {":Cancer:", ":cancer:"}, - "\u264c": {":Leo:", ":leo:"}, - "\u264d": {":Virgo:", ":virgo:"}, - "\u264e": {":Libra:", ":libra:"}, - "\u264f": {":Scorpio:", ":scorpius:"}, - "\u2650": {":Sagittarius:", ":sagittarius:"}, - "\u2651": {":Capricorn:", ":capricorn:"}, - "\u2652": {":Aquarius:", ":aquarius:"}, - "\u2653": {":Pisces:", ":pisces:"}, - "\u265f\ufe0f": {":chess_pawn:"}, - "\u2660": {":spade_suit:"}, - "\u2660\ufe0f": {":spades:"}, - "\u2663": {":club_suit:"}, - "\u2663\ufe0f": {":clubs:"}, - "\u2665": {":heart_suit:"}, - "\u2665\ufe0f": {":hearts:"}, - "\u2666": {":diamond_suit:"}, - "\u2666\ufe0f": {":diamonds:"}, - "\u2668": {":hot_springs:"}, - "\u2668\ufe0f": {":hotsprings:"}, - "\u267b": {":recycling_symbol:"}, - "\u267b\ufe0f": {":recycle:"}, - "\u267e\ufe0f": {":infinity:"}, - "\u267f": {":wheelchair:", ":wheelchair_symbol:"}, - "\u2692": {":hammer_pick:"}, - "\u2692\ufe0f": {":hammer_and_pick:"}, - "\u2693": {":anchor:"}, - "\u2694\ufe0f": {":crossed_swords:"}, - "\u2695\ufe0f": {":medical_symbol:"}, - "\u2696": {":balance_scale:"}, - "\u2696\ufe0f": {":scales:"}, - "\u2697\ufe0f": {":alembic:"}, - "\u2699\ufe0f": {":gear:"}, - "\u269b": {":atom:"}, - "\u269b\ufe0f": {":atom_symbol:"}, - "\u269c": {":fleur-de-lis:"}, - "\u269c\ufe0f": {":fleur_de_lis:"}, - "\u26a0\ufe0f": {":warning:"}, - "\u26a1": {":zap:", ":high_voltage:"}, - "\u26a7": {":transgender_symbol:"}, - "\u26aa": {":white_circle:"}, - "\u26ab": {":black_circle:"}, - "\u26b0\ufe0f": {":coffin:"}, - "\u26b1": {":urn:"}, - "\u26b1\ufe0f": {":funeral_urn:"}, - "\u26bd": {":soccer:", ":soccer_ball:"}, - "\u26be": {":baseball:"}, - "\u26c4": {":snowman_without_snow:"}, - "\u26c5": {":partly_sunny:", ":sun_behind_cloud:"}, - "\u26c8": {":thunder_cloud_rain:", ":cloud_with_lightning_and_rain:"}, - "\u26c8\ufe0f": {":thunder_cloud_and_rain:"}, - "\u26ce": {":Ophiuchus:", ":ophiuchus:"}, - "\u26cf\ufe0f": {":pick:"}, - "\u26d1": {":helmet_with_cross:", ":rescue_worker’s_helmet:"}, - "\u26d1\ufe0f": {":rescue_worker_helmet:", ":helmet_with_white_cross:"}, - "\u26d3\ufe0f": {":chains:"}, - "\u26d4": {":no_entry:"}, - "\u26e9\ufe0f": {":shinto_shrine:"}, - "\u26ea": {":church:"}, - "\u26f0\ufe0f": {":mountain:"}, - "\u26f1": {":beach_umbrella:"}, - "\u26f1\ufe0f": {":parasol_on_ground:", ":umbrella_on_ground:"}, - "\u26f2": {":fountain:"}, - "\u26f3": {":golf:", ":flag_in_hole:"}, - "\u26f4\ufe0f": {":ferry:"}, - "\u26f5": {":boat:", ":sailboat:"}, - "\u26f7\ufe0f": {":skier:"}, - "\u26f8\ufe0f": {":ice_skate:"}, - "\u26f9": {":person_bouncing_ball:"}, - "\u26f9\U0001f3fb": {":person_bouncing_ball_tone1:"}, - "\u26f9\U0001f3fb\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone1:"}, - "\u26f9\U0001f3fb\u200d\u2642\ufe0f": {":man_bouncing_ball_tone1:"}, - "\u26f9\U0001f3fc": {":person_bouncing_ball_tone2:"}, - "\u26f9\U0001f3fc\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone2:"}, - "\u26f9\U0001f3fc\u200d\u2642\ufe0f": {":man_bouncing_ball_tone2:"}, - "\u26f9\U0001f3fd": {":person_bouncing_ball_tone3:"}, - "\u26f9\U0001f3fd\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone3:"}, - "\u26f9\U0001f3fd\u200d\u2642\ufe0f": {":man_bouncing_ball_tone3:"}, - "\u26f9\U0001f3fe": {":person_bouncing_ball_tone4:"}, - "\u26f9\U0001f3fe\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone4:"}, - "\u26f9\U0001f3fe\u200d\u2642\ufe0f": {":man_bouncing_ball_tone4:"}, - "\u26f9\U0001f3ff": {":person_bouncing_ball_tone5:"}, - "\u26f9\U0001f3ff\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone5:"}, - "\u26f9\U0001f3ff\u200d\u2642\ufe0f": {":man_bouncing_ball_tone5:"}, - "\u26f9\ufe0f": {":bouncing_ball_person:"}, - "\u26f9\ufe0f\u200d\u2640\ufe0f": {":basketball_woman:", ":bouncing_ball_woman:", ":woman-bouncing-ball:", ":woman_bouncing_ball:"}, - "\u26f9\ufe0f\u200d\u2642\ufe0f": {":basketball_man:", ":person_with_ball:", ":bouncing_ball_man:", ":man-bouncing-ball:", ":man_bouncing_ball:"}, - "\u26fa": {":tent:"}, - "\u26fd": {":fuelpump:", ":fuel_pump:"}, - "\u2702\ufe0f": {":scissors:"}, - "\u2705": {":white_check_mark:", ":check_mark_button:"}, - "\u2708\ufe0f": {":airplane:"}, - "\u2709": {":envelope:"}, - "\u2709\ufe0f": {":email:"}, - "\u270a": {":fist:", ":fist_raised:", ":raised_fist:"}, - "\u270a\U0001f3fb": {":fist_tone1:"}, - "\u270a\U0001f3fc": {":fist_tone2:"}, - "\u270a\U0001f3fd": {":fist_tone3:"}, - "\u270a\U0001f3fe": {":fist_tone4:"}, - "\u270a\U0001f3ff": {":fist_tone5:"}, - "\u270b": {":hand:", ":raised_hand:"}, - "\u270b\U0001f3fb": {":raised_hand_tone1:"}, - "\u270b\U0001f3fc": {":raised_hand_tone2:"}, - "\u270b\U0001f3fd": {":raised_hand_tone3:"}, - "\u270b\U0001f3fe": {":raised_hand_tone4:"}, - "\u270b\U0001f3ff": {":raised_hand_tone5:"}, - "\u270c": {":victory_hand:"}, - "\u270c\U0001f3fb": {":v_tone1:"}, - "\u270c\U0001f3fc": {":v_tone2:"}, - "\u270c\U0001f3fd": {":v_tone3:"}, - "\u270c\U0001f3fe": {":v_tone4:"}, - "\u270c\U0001f3ff": {":v_tone5:"}, - "\u270c\ufe0f": {":v:"}, - "\u270d\U0001f3fb": {":writing_hand_tone1:"}, - "\u270d\U0001f3fc": {":writing_hand_tone2:"}, - "\u270d\U0001f3fd": {":writing_hand_tone3:"}, - "\u270d\U0001f3fe": {":writing_hand_tone4:"}, - "\u270d\U0001f3ff": {":writing_hand_tone5:"}, - "\u270d\ufe0f": {":writing_hand:"}, - "\u270f": {":pencil:"}, - "\u270f\ufe0f": {":pencil2:"}, - "\u2712\ufe0f": {":black_nib:"}, - "\u2714": {":check_mark:"}, - "\u2714\ufe0f": {":heavy_check_mark:"}, - "\u2716": {":multiply:"}, - "\u2716\ufe0f": {":heavy_multiplication_x:"}, - "\u271d": {":cross:"}, - "\u271d\ufe0f": {":latin_cross:"}, - "\u2721": {":star_of_David:"}, - "\u2721\ufe0f": {":star_of_david:"}, - "\u2728": {":sparkles:"}, - "\u2733": {":eight-spoked_asterisk:"}, - "\u2733\ufe0f": {":eight_spoked_asterisk:"}, - "\u2734": {":eight-pointed_star:"}, - "\u2734\ufe0f": {":eight_pointed_black_star:"}, - "\u2744\ufe0f": {":snowflake:"}, - "\u2747\ufe0f": {":sparkle:"}, - "\u274c": {":x:", ":cross_mark:"}, - "\u274e": {":cross_mark_button:", ":negative_squared_cross_mark:"}, - "\u2753": {":question:", ":question_mark:"}, - "\u2754": {":grey_question:", ":white_question_mark:"}, - "\u2755": {":grey_exclamation:", ":white_exclamation_mark:"}, - "\u2757": {":exclamation:", ":exclamation_mark:", ":heavy_exclamation_mark:"}, - "\u2763": {":heart_exclamation:"}, - "\u2763\ufe0f": {":heavy_heart_exclamation:", ":heavy_heart_exclamation_mark_ornament:"}, - "\u2764": {":red_heart:"}, - "\u2764\ufe0f": {":heart:"}, - "\u2795": {":plus:", ":heavy_plus_sign:"}, - "\u2796": {":minus:", ":heavy_minus_sign:"}, - "\u2797": {":divide:", ":heavy_division_sign:"}, - "\u27a1": {":right_arrow:"}, - "\u27a1\ufe0f": {":arrow_right:"}, - "\u27b0": {":curly_loop:"}, - "\u27bf": {":loop:", ":double_curly_loop:"}, - "\u2934": {":right_arrow_curving_up:"}, - "\u2934\ufe0f": {":arrow_heading_up:"}, - "\u2935": {":right_arrow_curving_down:"}, - "\u2935\ufe0f": {":arrow_heading_down:"}, - "\u2b05": {":left_arrow:"}, - "\u2b05\ufe0f": {":arrow_left:"}, - "\u2b06": {":up_arrow:"}, - "\u2b06\ufe0f": {":arrow_up:"}, - "\u2b07": {":down_arrow:"}, - "\u2b07\ufe0f": {":arrow_down:"}, - "\u2b1b": {":black_large_square:"}, - "\u2b1c": {":white_large_square:"}, - "\u2b50": {":star:"}, - "\u2b55": {":o:", ":hollow_red_circle:"}, - "\u3030\ufe0f": {":wavy_dash:"}, - "\u303d\ufe0f": {":part_alternation_mark:"}, - "\u3297": {":Japanese_congratulations_button:"}, - "\u3297\ufe0f": {":congratulations:"}, - "\u3299": {":Japanese_secret_button:"}, - "\u3299\ufe0f": {":secret:"}, -} diff --git a/backend/vendor/github.com/kyokomi/emoji/.gitignore b/backend/vendor/github.com/kyokomi/emoji/v2/.gitignore similarity index 100% rename from backend/vendor/github.com/kyokomi/emoji/.gitignore rename to backend/vendor/github.com/kyokomi/emoji/v2/.gitignore diff --git a/backend/vendor/github.com/kyokomi/emoji/LICENSE b/backend/vendor/github.com/kyokomi/emoji/v2/LICENSE similarity index 100% rename from backend/vendor/github.com/kyokomi/emoji/LICENSE rename to backend/vendor/github.com/kyokomi/emoji/v2/LICENSE diff --git a/backend/vendor/github.com/kyokomi/emoji/README.md b/backend/vendor/github.com/kyokomi/emoji/v2/README.md similarity index 80% rename from backend/vendor/github.com/kyokomi/emoji/README.md rename to backend/vendor/github.com/kyokomi/emoji/v2/README.md index 9ad97f51..e6045985 100644 --- a/backend/vendor/github.com/kyokomi/emoji/README.md +++ b/backend/vendor/github.com/kyokomi/emoji/v2/README.md @@ -3,19 +3,19 @@ Emoji is a simple golang package. [![wercker status](https://app.wercker.com/status/7bef60de2c6d3e0e6c13d56b2393c5d8/s/master "wercker status")](https://app.wercker.com/project/byKey/7bef60de2c6d3e0e6c13d56b2393c5d8) [![Coverage Status](https://coveralls.io/repos/kyokomi/emoji/badge.png?branch=master)](https://coveralls.io/r/kyokomi/emoji?branch=master) -[![GoDoc](https://godoc.org/github.com/kyokomi/emoji?status.svg)](https://godoc.org/github.com/kyokomi/emoji) +[![GoDoc](https://pkg.go.dev/badge/github.com/kyokomi/emoji.svg)](https://pkg.go.dev/github.com/kyokomi/emoji/v2) Get it: ``` -go get github.com/kyokomi/emoji +go get github.com/kyokomi/emoji/v2 ``` Import it: ``` import ( - "github.com/kyokomi/emoji" + "github.com/kyokomi/emoji/v2" ) ``` @@ -27,7 +27,7 @@ package main import ( "fmt" - "github.com/kyokomi/emoji" + "github.com/kyokomi/emoji/v2" ) func main() { diff --git a/backend/vendor/github.com/kyokomi/emoji/emoji.go b/backend/vendor/github.com/kyokomi/emoji/v2/emoji.go similarity index 94% rename from backend/vendor/github.com/kyokomi/emoji/emoji.go rename to backend/vendor/github.com/kyokomi/emoji/v2/emoji.go index 3aa18974..6913a2ea 100644 --- a/backend/vendor/github.com/kyokomi/emoji/emoji.go +++ b/backend/vendor/github.com/kyokomi/emoji/v2/emoji.go @@ -10,25 +10,25 @@ import ( "unicode" ) -//go:generate generateEmojiCodeMap -pkg emoji +//go:generate generateEmojiCodeMap -pkg emoji -o emoji_codemap.go // Replace Padding character for emoji. -const ( +var ( ReplacePadding = " " ) // CodeMap gets the underlying map of emoji. func CodeMap() map[string]string { - return emojiCodeMap + return emojiCode() } // RevCodeMap gets the underlying map of emoji. func RevCodeMap() map[string][]string { - return emojiRevCodeMap + return emojiRevCode() } func AliasList(shortCode string) []string { - return emojiRevCodeMap[emojiCodeMap[shortCode]] + return emojiRevCode()[emojiCode()[shortCode]] } // HasAlias flags if the given `shortCode` has multiple aliases with other @@ -50,7 +50,7 @@ func NormalizeShortCode(shortCode string) string { var flagRegexp = regexp.MustCompile(":flag-([a-z]{2}):") func emojize(x string) string { - str, ok := emojiCodeMap[x] + str, ok := emojiCode()[x] if ok { return str + ReplacePadding } diff --git a/backend/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go b/backend/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go new file mode 100644 index 00000000..9a9d73b0 --- /dev/null +++ b/backend/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go @@ -0,0 +1,7715 @@ +package emoji + +import ( + "sync" +) + +// NOTE: THIS FILE WAS PRODUCED BY THE +// EMOJICODEMAP CODE GENERATION TOOL (github.com/kyokomi/emoji/cmd/generateEmojiCodeMap) +// DO NOT EDIT + +var emojiCodeMap map[string]string +var emojiCodeMapInitOnce = sync.Once{} + +func emojiCode() map[string]string { + emojiCodeMapInitOnce.Do(func() { + emojiCodeMap = map[string]string{ + ":+1:": "\U0001f44d", + ":-1:": "\U0001f44e", + ":100:": "\U0001f4af", + ":1234:": "\U0001f522", + ":1st_place_medal:": "\U0001f947", + ":2nd_place_medal:": "\U0001f948", + ":3rd_place_medal:": "\U0001f949", + ":8ball:": "\U0001f3b1", + ":AB_button_(blood_type):": "\U0001f18e", + ":ATM_sign:": "\U0001f3e7", + ":A_button_(blood_type):": "\U0001f170", + ":Aquarius:": "\u2652", + ":Aries:": "\u2648", + ":BACK_arrow:": "\U0001f519", + ":B_button_(blood_type):": "\U0001f171", + ":CL_button:": "\U0001f191", + ":COOL_button:": "\U0001f192", + ":Cancer:": "\u264b", + ":Capricorn:": "\u2651", + ":Christmas_tree:": "\U0001f384", + ":END_arrow:": "\U0001f51a", + ":FREE_button:": "\U0001f193", + ":Gemini:": "\u264a", + ":ID_button:": "\U0001f194", + ":Japanese_acceptable_button:": "\U0001f251", + ":Japanese_application_button:": "\U0001f238", + ":Japanese_bargain_button:": "\U0001f250", + ":Japanese_castle:": "\U0001f3ef", + ":Japanese_congratulations_button:": "\u3297", + ":Japanese_discount_button:": "\U0001f239", + ":Japanese_dolls:": "\U0001f38e", + ":Japanese_free_of_charge_button:": "\U0001f21a", + ":Japanese_here_button:": "\U0001f201", + ":Japanese_monthly_amount_button:": "\U0001f237", + ":Japanese_no_vacancy_button:": "\U0001f235", + ":Japanese_not_free_of_charge_button:": "\U0001f236", + ":Japanese_open_for_business_button:": "\U0001f23a", + ":Japanese_passing_grade_button:": "\U0001f234", + ":Japanese_post_office:": "\U0001f3e3", + ":Japanese_prohibited_button:": "\U0001f232", + ":Japanese_reserved_button:": "\U0001f22f", + ":Japanese_secret_button:": "\u3299", + ":Japanese_service_charge_button:": "\U0001f202", + ":Japanese_symbol_for_beginner:": "\U0001f530", + ":Japanese_vacancy_button:": "\U0001f233", + ":Leo:": "\u264c", + ":Libra:": "\u264e", + ":Mrs._Claus:": "\U0001f936", + ":NEW_button:": "\U0001f195", + ":NG_button:": "\U0001f196", + ":OK_button:": "\U0001f197", + ":OK_hand:": "\U0001f44c", + ":ON!_arrow:": "\U0001f51b", + ":O_button_(blood_type):": "\U0001f17e", + ":Ophiuchus:": "\u26ce", + ":P_button:": "\U0001f17f", + ":Pisces:": "\u2653", + ":SOON_arrow:": "\U0001f51c", + ":SOS_button:": "\U0001f198", + ":Sagittarius:": "\u2650", + ":Santa_Claus:": "\U0001f385", + ":Scorpio:": "\u264f", + ":Statue_of_Liberty:": "\U0001f5fd", + ":T-Rex:": "\U0001f996", + ":TOP_arrow:": "\U0001f51d", + ":Taurus:": "\u2649", + ":Tokyo_tower:": "\U0001f5fc", + ":UP!_button:": "\U0001f199", + ":VS_button:": "\U0001f19a", + ":Virgo:": "\u264d", + ":a:": "\U0001f170\ufe0f", + ":ab:": "\U0001f18e", + ":abacus:": "\U0001f9ee", + ":abc:": "\U0001f524", + ":abcd:": "\U0001f521", + ":accept:": "\U0001f251", + ":accordion:": "\U0001fa97", + ":adhesive_bandage:": "\U0001fa79", + ":admission_tickets:": "\U0001f39f\ufe0f", + ":adult:": "\U0001f9d1", + ":adult_tone1:": "\U0001f9d1\U0001f3fb", + ":adult_tone2:": "\U0001f9d1\U0001f3fc", + ":adult_tone3:": "\U0001f9d1\U0001f3fd", + ":adult_tone4:": "\U0001f9d1\U0001f3fe", + ":adult_tone5:": "\U0001f9d1\U0001f3ff", + ":aerial_tramway:": "\U0001f6a1", + ":afghanistan:": "\U0001f1e6\U0001f1eb", + ":airplane:": "\u2708\ufe0f", + ":airplane_arrival:": "\U0001f6ec", + ":airplane_arriving:": "\U0001f6ec", + ":airplane_departure:": "\U0001f6eb", + ":airplane_small:": "\U0001f6e9", + ":aland_islands:": "\U0001f1e6\U0001f1fd", + ":alarm_clock:": "\u23f0", + ":albania:": "\U0001f1e6\U0001f1f1", + ":alembic:": "\u2697\ufe0f", + ":algeria:": "\U0001f1e9\U0001f1ff", + ":alien:": "\U0001f47d", + ":alien_monster:": "\U0001f47e", + ":ambulance:": "\U0001f691", + ":american_football:": "\U0001f3c8", + ":american_samoa:": "\U0001f1e6\U0001f1f8", + ":amphora:": "\U0001f3fa", + ":anatomical_heart:": "\U0001fac0", + ":anchor:": "\u2693", + ":andorra:": "\U0001f1e6\U0001f1e9", + ":angel:": "\U0001f47c", + ":angel_tone1:": "\U0001f47c\U0001f3fb", + ":angel_tone2:": "\U0001f47c\U0001f3fc", + ":angel_tone3:": "\U0001f47c\U0001f3fd", + ":angel_tone4:": "\U0001f47c\U0001f3fe", + ":angel_tone5:": "\U0001f47c\U0001f3ff", + ":anger:": "\U0001f4a2", + ":anger_right:": "\U0001f5ef", + ":anger_symbol:": "\U0001f4a2", + ":angola:": "\U0001f1e6\U0001f1f4", + ":angry:": "\U0001f620", + ":angry_face:": "\U0001f620", + ":angry_face_with_horns:": "\U0001f47f", + ":anguilla:": "\U0001f1e6\U0001f1ee", + ":anguished:": "\U0001f627", + ":anguished_face:": "\U0001f627", + ":ant:": "\U0001f41c", + ":antarctica:": "\U0001f1e6\U0001f1f6", + ":antenna_bars:": "\U0001f4f6", + ":antigua_barbuda:": "\U0001f1e6\U0001f1ec", + ":anxious_face_with_sweat:": "\U0001f630", + ":apple:": "\U0001f34e", + ":aquarius:": "\u2652", + ":argentina:": "\U0001f1e6\U0001f1f7", + ":aries:": "\u2648", + ":armenia:": "\U0001f1e6\U0001f1f2", + ":arrow_backward:": "\u25c0\ufe0f", + ":arrow_double_down:": "\u23ec", + ":arrow_double_up:": "\u23eb", + ":arrow_down:": "\u2b07\ufe0f", + ":arrow_down_small:": "\U0001f53d", + ":arrow_forward:": "\u25b6\ufe0f", + ":arrow_heading_down:": "\u2935\ufe0f", + ":arrow_heading_up:": "\u2934\ufe0f", + ":arrow_left:": "\u2b05\ufe0f", + ":arrow_lower_left:": "\u2199\ufe0f", + ":arrow_lower_right:": "\u2198\ufe0f", + ":arrow_right:": "\u27a1\ufe0f", + ":arrow_right_hook:": "\u21aa\ufe0f", + ":arrow_up:": "\u2b06\ufe0f", + ":arrow_up_down:": "\u2195\ufe0f", + ":arrow_up_small:": "\U0001f53c", + ":arrow_upper_left:": "\u2196\ufe0f", + ":arrow_upper_right:": "\u2197\ufe0f", + ":arrows_clockwise:": "\U0001f503", + ":arrows_counterclockwise:": "\U0001f504", + ":art:": "\U0001f3a8", + ":articulated_lorry:": "\U0001f69b", + ":artificial_satellite:": "\U0001f6f0\ufe0f", + ":artist:": "\U0001f9d1\u200d\U0001f3a8", + ":artist_palette:": "\U0001f3a8", + ":aruba:": "\U0001f1e6\U0001f1fc", + ":ascension_island:": "\U0001f1e6\U0001f1e8", + ":asterisk:": "*\ufe0f\u20e3", + ":astonished:": "\U0001f632", + ":astonished_face:": "\U0001f632", + ":astronaut:": "\U0001f9d1\u200d\U0001f680", + ":athletic_shoe:": "\U0001f45f", + ":atm:": "\U0001f3e7", + ":atom:": "\u269b", + ":atom_symbol:": "\u269b\ufe0f", + ":australia:": "\U0001f1e6\U0001f1fa", + ":austria:": "\U0001f1e6\U0001f1f9", + ":auto_rickshaw:": "\U0001f6fa", + ":automobile:": "\U0001f697", + ":avocado:": "\U0001f951", + ":axe:": "\U0001fa93", + ":azerbaijan:": "\U0001f1e6\U0001f1ff", + ":b:": "\U0001f171\ufe0f", + ":baby:": "\U0001f476", + ":baby_angel:": "\U0001f47c", + ":baby_bottle:": "\U0001f37c", + ":baby_chick:": "\U0001f424", + ":baby_symbol:": "\U0001f6bc", + ":baby_tone1:": "\U0001f476\U0001f3fb", + ":baby_tone2:": "\U0001f476\U0001f3fc", + ":baby_tone3:": "\U0001f476\U0001f3fd", + ":baby_tone4:": "\U0001f476\U0001f3fe", + ":baby_tone5:": "\U0001f476\U0001f3ff", + ":back:": "\U0001f519", + ":backhand_index_pointing_down:": "\U0001f447", + ":backhand_index_pointing_left:": "\U0001f448", + ":backhand_index_pointing_right:": "\U0001f449", + ":backhand_index_pointing_up:": "\U0001f446", + ":backpack:": "\U0001f392", + ":bacon:": "\U0001f953", + ":badger:": "\U0001f9a1", + ":badminton:": "\U0001f3f8", + ":badminton_racquet_and_shuttlecock:": "\U0001f3f8", + ":bagel:": "\U0001f96f", + ":baggage_claim:": "\U0001f6c4", + ":baguette_bread:": "\U0001f956", + ":bahamas:": "\U0001f1e7\U0001f1f8", + ":bahrain:": "\U0001f1e7\U0001f1ed", + ":balance_scale:": "\u2696", + ":bald:": "\U0001f9b2", + ":bald_man:": "\U0001f468\u200d\U0001f9b2", + ":bald_person:": "\U0001f9d1\u200d\U0001f9b2", + ":bald_woman:": "\U0001f469\u200d\U0001f9b2", + ":ballet_shoes:": "\U0001fa70", + ":balloon:": "\U0001f388", + ":ballot_box:": "\U0001f5f3", + ":ballot_box_with_ballot:": "\U0001f5f3\ufe0f", + ":ballot_box_with_check:": "\u2611\ufe0f", + ":bamboo:": "\U0001f38d", + ":banana:": "\U0001f34c", + ":bangbang:": "\u203c\ufe0f", + ":bangladesh:": "\U0001f1e7\U0001f1e9", + ":banjo:": "\U0001fa95", + ":bank:": "\U0001f3e6", + ":bar_chart:": "\U0001f4ca", + ":barbados:": "\U0001f1e7\U0001f1e7", + ":barber:": "\U0001f488", + ":barber_pole:": "\U0001f488", + ":barely_sunny:": "\U0001f325\ufe0f", + ":baseball:": "\u26be", + ":basket:": "\U0001f9fa", + ":basketball:": "\U0001f3c0", + ":basketball_man:": "\u26f9\ufe0f\u200d\u2642\ufe0f", + ":basketball_woman:": "\u26f9\ufe0f\u200d\u2640\ufe0f", + ":bat:": "\U0001f987", + ":bath:": "\U0001f6c0", + ":bath_tone1:": "\U0001f6c0\U0001f3fb", + ":bath_tone2:": "\U0001f6c0\U0001f3fc", + ":bath_tone3:": "\U0001f6c0\U0001f3fd", + ":bath_tone4:": "\U0001f6c0\U0001f3fe", + ":bath_tone5:": "\U0001f6c0\U0001f3ff", + ":bathtub:": "\U0001f6c1", + ":battery:": "\U0001f50b", + ":beach:": "\U0001f3d6", + ":beach_umbrella:": "\u26f1", + ":beach_with_umbrella:": "\U0001f3d6\ufe0f", + ":beaming_face_with_smiling_eyes:": "\U0001f601", + ":bear:": "\U0001f43b", + ":bearded_person:": "\U0001f9d4", + ":bearded_person_tone1:": "\U0001f9d4\U0001f3fb", + ":bearded_person_tone2:": "\U0001f9d4\U0001f3fc", + ":bearded_person_tone3:": "\U0001f9d4\U0001f3fd", + ":bearded_person_tone4:": "\U0001f9d4\U0001f3fe", + ":bearded_person_tone5:": "\U0001f9d4\U0001f3ff", + ":beating_heart:": "\U0001f493", + ":beaver:": "\U0001f9ab", + ":bed:": "\U0001f6cf\ufe0f", + ":bee:": "\U0001f41d", + ":beer:": "\U0001f37a", + ":beer_mug:": "\U0001f37a", + ":beers:": "\U0001f37b", + ":beetle:": "\U0001fab2", + ":beginner:": "\U0001f530", + ":belarus:": "\U0001f1e7\U0001f1fe", + ":belgium:": "\U0001f1e7\U0001f1ea", + ":belize:": "\U0001f1e7\U0001f1ff", + ":bell:": "\U0001f514", + ":bell_pepper:": "\U0001fad1", + ":bell_with_slash:": "\U0001f515", + ":bellhop:": "\U0001f6ce", + ":bellhop_bell:": "\U0001f6ce\ufe0f", + ":benin:": "\U0001f1e7\U0001f1ef", + ":bento:": "\U0001f371", + ":bento_box:": "\U0001f371", + ":bermuda:": "\U0001f1e7\U0001f1f2", + ":beverage_box:": "\U0001f9c3", + ":bhutan:": "\U0001f1e7\U0001f1f9", + ":bicycle:": "\U0001f6b2", + ":bicyclist:": "\U0001f6b4\u200d\u2642\ufe0f", + ":bike:": "\U0001f6b2", + ":biking_man:": "\U0001f6b4\u200d\u2642\ufe0f", + ":biking_woman:": "\U0001f6b4\u200d\u2640\ufe0f", + ":bikini:": "\U0001f459", + ":billed_cap:": "\U0001f9e2", + ":biohazard:": "\u2623", + ":biohazard_sign:": "\u2623\ufe0f", + ":bird:": "\U0001f426", + ":birthday:": "\U0001f382", + ":birthday_cake:": "\U0001f382", + ":bison:": "\U0001f9ac", + ":black_cat:": "\U0001f408\u200d\u2b1b", + ":black_circle:": "\u26ab", + ":black_circle_for_record:": "\u23fa\ufe0f", + ":black_flag:": "\U0001f3f4", + ":black_heart:": "\U0001f5a4", + ":black_joker:": "\U0001f0cf", + ":black_large_square:": "\u2b1b", + ":black_left_pointing_double_triangle_with_vertical_bar:": "\u23ee\ufe0f", + ":black_medium-small_square:": "\u25fe", + ":black_medium_small_square:": "\u25fe", + ":black_medium_square:": "\u25fc\ufe0f", + ":black_nib:": "\u2712\ufe0f", + ":black_right_pointing_double_triangle_with_vertical_bar:": "\u23ed\ufe0f", + ":black_right_pointing_triangle_with_double_vertical_bar:": "\u23ef\ufe0f", + ":black_small_square:": "\u25aa\ufe0f", + ":black_square_button:": "\U0001f532", + ":black_square_for_stop:": "\u23f9\ufe0f", + ":blond-haired-man:": "\U0001f471\u200d\u2642\ufe0f", + ":blond-haired-woman:": "\U0001f471\u200d\u2640\ufe0f", + ":blond-haired_man:": "\U0001f471\u200d\u2642\ufe0f", + ":blond-haired_man_tone1:": "\U0001f471\U0001f3fb\u200d\u2642\ufe0f", + ":blond-haired_man_tone2:": "\U0001f471\U0001f3fc\u200d\u2642\ufe0f", + ":blond-haired_man_tone3:": "\U0001f471\U0001f3fd\u200d\u2642\ufe0f", + ":blond-haired_man_tone4:": "\U0001f471\U0001f3fe\u200d\u2642\ufe0f", + ":blond-haired_man_tone5:": "\U0001f471\U0001f3ff\u200d\u2642\ufe0f", + ":blond-haired_woman:": "\U0001f471\u200d\u2640\ufe0f", + ":blond-haired_woman_tone1:": "\U0001f471\U0001f3fb\u200d\u2640\ufe0f", + ":blond-haired_woman_tone2:": "\U0001f471\U0001f3fc\u200d\u2640\ufe0f", + ":blond-haired_woman_tone3:": "\U0001f471\U0001f3fd\u200d\u2640\ufe0f", + ":blond-haired_woman_tone4:": "\U0001f471\U0001f3fe\u200d\u2640\ufe0f", + ":blond-haired_woman_tone5:": "\U0001f471\U0001f3ff\u200d\u2640\ufe0f", + ":blond_haired_man:": "\U0001f471\u200d\u2642\ufe0f", + ":blond_haired_person:": "\U0001f471", + ":blond_haired_person_tone1:": "\U0001f471\U0001f3fb", + ":blond_haired_person_tone2:": "\U0001f471\U0001f3fc", + ":blond_haired_person_tone3:": "\U0001f471\U0001f3fd", + ":blond_haired_person_tone4:": "\U0001f471\U0001f3fe", + ":blond_haired_person_tone5:": "\U0001f471\U0001f3ff", + ":blond_haired_woman:": "\U0001f471\u200d\u2640\ufe0f", + ":blonde_woman:": "\U0001f471\u200d\u2640\ufe0f", + ":blossom:": "\U0001f33c", + ":blowfish:": "\U0001f421", + ":blue_book:": "\U0001f4d8", + ":blue_car:": "\U0001f699", + ":blue_circle:": "\U0001f535", + ":blue_heart:": "\U0001f499", + ":blue_square:": "\U0001f7e6", + ":blueberries:": "\U0001fad0", + ":blush:": "\U0001f60a", + ":boar:": "\U0001f417", + ":boat:": "\u26f5", + ":bolivia:": "\U0001f1e7\U0001f1f4", + ":bomb:": "\U0001f4a3", + ":bone:": "\U0001f9b4", + ":book:": "\U0001f4d6", + ":bookmark:": "\U0001f516", + ":bookmark_tabs:": "\U0001f4d1", + ":books:": "\U0001f4da", + ":boom:": "\U0001f4a5", + ":boomerang:": "\U0001fa83", + ":boot:": "\U0001f462", + ":bosnia_herzegovina:": "\U0001f1e7\U0001f1e6", + ":botswana:": "\U0001f1e7\U0001f1fc", + ":bottle_with_popping_cork:": "\U0001f37e", + ":bouncing_ball_man:": "\u26f9\ufe0f\u200d\u2642\ufe0f", + ":bouncing_ball_person:": "\u26f9\ufe0f", + ":bouncing_ball_woman:": "\u26f9\ufe0f\u200d\u2640\ufe0f", + ":bouquet:": "\U0001f490", + ":bouvet_island:": "\U0001f1e7\U0001f1fb", + ":bow:": "\U0001f647\u200d\u2642\ufe0f", + ":bow_and_arrow:": "\U0001f3f9", + ":bowing_man:": "\U0001f647\u200d\u2642\ufe0f", + ":bowing_woman:": "\U0001f647\u200d\u2640\ufe0f", + ":bowl_with_spoon:": "\U0001f963", + ":bowling:": "\U0001f3b3", + ":boxing_glove:": "\U0001f94a", + ":boy:": "\U0001f466", + ":boy_tone1:": "\U0001f466\U0001f3fb", + ":boy_tone2:": "\U0001f466\U0001f3fc", + ":boy_tone3:": "\U0001f466\U0001f3fd", + ":boy_tone4:": "\U0001f466\U0001f3fe", + ":boy_tone5:": "\U0001f466\U0001f3ff", + ":brain:": "\U0001f9e0", + ":brazil:": "\U0001f1e7\U0001f1f7", + ":bread:": "\U0001f35e", + ":breast-feeding:": "\U0001f931", + ":breast_feeding:": "\U0001f931", + ":breast_feeding_tone1:": "\U0001f931\U0001f3fb", + ":breast_feeding_tone2:": "\U0001f931\U0001f3fc", + ":breast_feeding_tone3:": "\U0001f931\U0001f3fd", + ":breast_feeding_tone4:": "\U0001f931\U0001f3fe", + ":breast_feeding_tone5:": "\U0001f931\U0001f3ff", + ":brick:": "\U0001f9f1", + ":bricks:": "\U0001f9f1", + ":bride_with_veil:": "\U0001f470", + ":bride_with_veil_tone1:": "\U0001f470\U0001f3fb", + ":bride_with_veil_tone2:": "\U0001f470\U0001f3fc", + ":bride_with_veil_tone3:": "\U0001f470\U0001f3fd", + ":bride_with_veil_tone4:": "\U0001f470\U0001f3fe", + ":bride_with_veil_tone5:": "\U0001f470\U0001f3ff", + ":bridge_at_night:": "\U0001f309", + ":briefcase:": "\U0001f4bc", + ":briefs:": "\U0001fa72", + ":bright_button:": "\U0001f506", + ":british_indian_ocean_territory:": "\U0001f1ee\U0001f1f4", + ":british_virgin_islands:": "\U0001f1fb\U0001f1ec", + ":broccoli:": "\U0001f966", + ":broken_heart:": "\U0001f494", + ":broom:": "\U0001f9f9", + ":brown_circle:": "\U0001f7e4", + ":brown_heart:": "\U0001f90e", + ":brown_square:": "\U0001f7eb", + ":brunei:": "\U0001f1e7\U0001f1f3", + ":bubble_tea:": "\U0001f9cb", + ":bucket:": "\U0001faa3", + ":bug:": "\U0001f41b", + ":building_construction:": "\U0001f3d7\ufe0f", + ":bulb:": "\U0001f4a1", + ":bulgaria:": "\U0001f1e7\U0001f1ec", + ":bullet_train:": "\U0001f685", + ":bullettrain_front:": "\U0001f685", + ":bullettrain_side:": "\U0001f684", + ":bullseye:": "\U0001f3af", + ":burkina_faso:": "\U0001f1e7\U0001f1eb", + ":burrito:": "\U0001f32f", + ":burundi:": "\U0001f1e7\U0001f1ee", + ":bus:": "\U0001f68c", + ":bus_stop:": "\U0001f68f", + ":business_suit_levitating:": "\U0001f574\ufe0f", + ":busstop:": "\U0001f68f", + ":bust_in_silhouette:": "\U0001f464", + ":busts_in_silhouette:": "\U0001f465", + ":butter:": "\U0001f9c8", + ":butterfly:": "\U0001f98b", + ":cactus:": "\U0001f335", + ":cake:": "\U0001f370", + ":calendar:": "\U0001f4c6", + ":calendar_spiral:": "\U0001f5d3", + ":call_me:": "\U0001f919", + ":call_me_hand:": "\U0001f919", + ":call_me_tone1:": "\U0001f919\U0001f3fb", + ":call_me_tone2:": "\U0001f919\U0001f3fc", + ":call_me_tone3:": "\U0001f919\U0001f3fd", + ":call_me_tone4:": "\U0001f919\U0001f3fe", + ":call_me_tone5:": "\U0001f919\U0001f3ff", + ":calling:": "\U0001f4f2", + ":cambodia:": "\U0001f1f0\U0001f1ed", + ":camel:": "\U0001f42b", + ":camera:": "\U0001f4f7", + ":camera_flash:": "\U0001f4f8", + ":camera_with_flash:": "\U0001f4f8", + ":cameroon:": "\U0001f1e8\U0001f1f2", + ":camping:": "\U0001f3d5\ufe0f", + ":canada:": "\U0001f1e8\U0001f1e6", + ":canary_islands:": "\U0001f1ee\U0001f1e8", + ":cancer:": "\u264b", + ":candle:": "\U0001f56f\ufe0f", + ":candy:": "\U0001f36c", + ":canned_food:": "\U0001f96b", + ":canoe:": "\U0001f6f6", + ":cape_verde:": "\U0001f1e8\U0001f1fb", + ":capital_abcd:": "\U0001f520", + ":capricorn:": "\u2651", + ":car:": "\U0001f697", + ":card_box:": "\U0001f5c3", + ":card_file_box:": "\U0001f5c3\ufe0f", + ":card_index:": "\U0001f4c7", + ":card_index_dividers:": "\U0001f5c2\ufe0f", + ":caribbean_netherlands:": "\U0001f1e7\U0001f1f6", + ":carousel_horse:": "\U0001f3a0", + ":carp_streamer:": "\U0001f38f", + ":carpentry_saw:": "\U0001fa9a", + ":carrot:": "\U0001f955", + ":cartwheeling:": "\U0001f938", + ":castle:": "\U0001f3f0", + ":cat:": "\U0001f431", + ":cat2:": "\U0001f408", + ":cat_face:": "\U0001f431", + ":cat_with_tears_of_joy:": "\U0001f639", + ":cat_with_wry_smile:": "\U0001f63c", + ":cayman_islands:": "\U0001f1f0\U0001f1fe", + ":cd:": "\U0001f4bf", + ":central_african_republic:": "\U0001f1e8\U0001f1eb", + ":ceuta_melilla:": "\U0001f1ea\U0001f1e6", + ":chad:": "\U0001f1f9\U0001f1e9", + ":chains:": "\u26d3\ufe0f", + ":chair:": "\U0001fa91", + ":champagne:": "\U0001f37e", + ":champagne_glass:": "\U0001f942", + ":chart:": "\U0001f4b9", + ":chart_decreasing:": "\U0001f4c9", + ":chart_increasing:": "\U0001f4c8", + ":chart_increasing_with_yen:": "\U0001f4b9", + ":chart_with_downwards_trend:": "\U0001f4c9", + ":chart_with_upwards_trend:": "\U0001f4c8", + ":check_box_with_check:": "\u2611", + ":check_mark:": "\u2714", + ":check_mark_button:": "\u2705", + ":checkered_flag:": "\U0001f3c1", + ":cheese:": "\U0001f9c0", + ":cheese_wedge:": "\U0001f9c0", + ":chequered_flag:": "\U0001f3c1", + ":cherries:": "\U0001f352", + ":cherry_blossom:": "\U0001f338", + ":chess_pawn:": "\u265f\ufe0f", + ":chestnut:": "\U0001f330", + ":chicken:": "\U0001f414", + ":child:": "\U0001f9d2", + ":child_tone1:": "\U0001f9d2\U0001f3fb", + ":child_tone2:": "\U0001f9d2\U0001f3fc", + ":child_tone3:": "\U0001f9d2\U0001f3fd", + ":child_tone4:": "\U0001f9d2\U0001f3fe", + ":child_tone5:": "\U0001f9d2\U0001f3ff", + ":children_crossing:": "\U0001f6b8", + ":chile:": "\U0001f1e8\U0001f1f1", + ":chipmunk:": "\U0001f43f\ufe0f", + ":chocolate_bar:": "\U0001f36b", + ":chopsticks:": "\U0001f962", + ":christmas_island:": "\U0001f1e8\U0001f1fd", + ":christmas_tree:": "\U0001f384", + ":church:": "\u26ea", + ":cigarette:": "\U0001f6ac", + ":cinema:": "\U0001f3a6", + ":circled_M:": "\u24c2", + ":circus_tent:": "\U0001f3aa", + ":city_dusk:": "\U0001f306", + ":city_sunrise:": "\U0001f307", + ":city_sunset:": "\U0001f306", + ":cityscape:": "\U0001f3d9\ufe0f", + ":cityscape_at_dusk:": "\U0001f306", + ":cl:": "\U0001f191", + ":clamp:": "\U0001f5dc", + ":clap:": "\U0001f44f", + ":clap_tone1:": "\U0001f44f\U0001f3fb", + ":clap_tone2:": "\U0001f44f\U0001f3fc", + ":clap_tone3:": "\U0001f44f\U0001f3fd", + ":clap_tone4:": "\U0001f44f\U0001f3fe", + ":clap_tone5:": "\U0001f44f\U0001f3ff", + ":clapper:": "\U0001f3ac", + ":clapper_board:": "\U0001f3ac", + ":clapping_hands:": "\U0001f44f", + ":classical_building:": "\U0001f3db\ufe0f", + ":climbing:": "\U0001f9d7", + ":climbing_man:": "\U0001f9d7\u200d\u2642\ufe0f", + ":climbing_woman:": "\U0001f9d7\u200d\u2640\ufe0f", + ":clinking_beer_mugs:": "\U0001f37b", + ":clinking_glasses:": "\U0001f942", + ":clipboard:": "\U0001f4cb", + ":clipperton_island:": "\U0001f1e8\U0001f1f5", + ":clock:": "\U0001f570", + ":clock1:": "\U0001f550", + ":clock10:": "\U0001f559", + ":clock1030:": "\U0001f565", + ":clock11:": "\U0001f55a", + ":clock1130:": "\U0001f566", + ":clock12:": "\U0001f55b", + ":clock1230:": "\U0001f567", + ":clock130:": "\U0001f55c", + ":clock2:": "\U0001f551", + ":clock230:": "\U0001f55d", + ":clock3:": "\U0001f552", + ":clock330:": "\U0001f55e", + ":clock4:": "\U0001f553", + ":clock430:": "\U0001f55f", + ":clock5:": "\U0001f554", + ":clock530:": "\U0001f560", + ":clock6:": "\U0001f555", + ":clock630:": "\U0001f561", + ":clock7:": "\U0001f556", + ":clock730:": "\U0001f562", + ":clock8:": "\U0001f557", + ":clock830:": "\U0001f563", + ":clock9:": "\U0001f558", + ":clock930:": "\U0001f564", + ":clockwise_vertical_arrows:": "\U0001f503", + ":closed_book:": "\U0001f4d5", + ":closed_lock_with_key:": "\U0001f510", + ":closed_mailbox_with_lowered_flag:": "\U0001f4ea", + ":closed_mailbox_with_raised_flag:": "\U0001f4eb", + ":closed_umbrella:": "\U0001f302", + ":cloud:": "\u2601\ufe0f", + ":cloud_lightning:": "\U0001f329", + ":cloud_rain:": "\U0001f327", + ":cloud_snow:": "\U0001f328", + ":cloud_tornado:": "\U0001f32a", + ":cloud_with_lightning:": "\U0001f329", + ":cloud_with_lightning_and_rain:": "\u26c8", + ":cloud_with_rain:": "\U0001f327", + ":cloud_with_snow:": "\U0001f328", + ":clown:": "\U0001f921", + ":clown_face:": "\U0001f921", + ":club_suit:": "\u2663", + ":clubs:": "\u2663\ufe0f", + ":clutch_bag:": "\U0001f45d", + ":cn:": "\U0001f1e8\U0001f1f3", + ":coat:": "\U0001f9e5", + ":cockroach:": "\U0001fab3", + ":cocktail:": "\U0001f378", + ":cocktail_glass:": "\U0001f378", + ":coconut:": "\U0001f965", + ":cocos_islands:": "\U0001f1e8\U0001f1e8", + ":coffee:": "\u2615", + ":coffin:": "\u26b0\ufe0f", + ":coin:": "\U0001fa99", + ":cold_face:": "\U0001f976", + ":cold_sweat:": "\U0001f630", + ":collision:": "\U0001f4a5", + ":colombia:": "\U0001f1e8\U0001f1f4", + ":comet:": "\u2604\ufe0f", + ":comoros:": "\U0001f1f0\U0001f1f2", + ":compass:": "\U0001f9ed", + ":compression:": "\U0001f5dc\ufe0f", + ":computer:": "\U0001f4bb", + ":computer_disk:": "\U0001f4bd", + ":computer_mouse:": "\U0001f5b1", + ":confetti_ball:": "\U0001f38a", + ":confounded:": "\U0001f616", + ":confounded_face:": "\U0001f616", + ":confused:": "\U0001f615", + ":confused_face:": "\U0001f615", + ":congo_brazzaville:": "\U0001f1e8\U0001f1ec", + ":congo_kinshasa:": "\U0001f1e8\U0001f1e9", + ":congratulations:": "\u3297\ufe0f", + ":construction:": "\U0001f6a7", + ":construction_site:": "\U0001f3d7", + ":construction_worker:": "\U0001f477\u200d\u2642\ufe0f", + ":construction_worker_man:": "\U0001f477\u200d\u2642\ufe0f", + ":construction_worker_tone1:": "\U0001f477\U0001f3fb", + ":construction_worker_tone2:": "\U0001f477\U0001f3fc", + ":construction_worker_tone3:": "\U0001f477\U0001f3fd", + ":construction_worker_tone4:": "\U0001f477\U0001f3fe", + ":construction_worker_tone5:": "\U0001f477\U0001f3ff", + ":construction_worker_woman:": "\U0001f477\u200d\u2640\ufe0f", + ":control_knobs:": "\U0001f39b\ufe0f", + ":convenience_store:": "\U0001f3ea", + ":cook:": "\U0001f9d1\u200d\U0001f373", + ":cook_islands:": "\U0001f1e8\U0001f1f0", + ":cooked_rice:": "\U0001f35a", + ":cookie:": "\U0001f36a", + ":cooking:": "\U0001f373", + ":cool:": "\U0001f192", + ":cop:": "\U0001f46e\u200d\u2642\ufe0f", + ":copyright:": "\u00a9\ufe0f", + ":corn:": "\U0001f33d", + ":costa_rica:": "\U0001f1e8\U0001f1f7", + ":cote_divoire:": "\U0001f1e8\U0001f1ee", + ":couch:": "\U0001f6cb", + ":couch_and_lamp:": "\U0001f6cb\ufe0f", + ":counterclockwise_arrows_button:": "\U0001f504", + ":couple:": "\U0001f46b", + ":couple_mm:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", + ":couple_with_heart:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", + ":couple_with_heart_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", + ":couple_with_heart_woman_man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", + ":couple_with_heart_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", + ":couple_ww:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", + ":couplekiss:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":couplekiss_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":couplekiss_man_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":couplekiss_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", + ":cow:": "\U0001f42e", + ":cow2:": "\U0001f404", + ":cow_face:": "\U0001f42e", + ":cowboy:": "\U0001f920", + ":cowboy_hat_face:": "\U0001f920", + ":crab:": "\U0001f980", + ":crayon:": "\U0001f58d", + ":crazy_face:": "\U0001f92a", + ":credit_card:": "\U0001f4b3", + ":crescent_moon:": "\U0001f319", + ":cricket:": "\U0001f997", + ":cricket_bat_and_ball:": "\U0001f3cf", + ":cricket_game:": "\U0001f3cf", + ":croatia:": "\U0001f1ed\U0001f1f7", + ":crocodile:": "\U0001f40a", + ":croissant:": "\U0001f950", + ":cross:": "\u271d", + ":cross_mark:": "\u274c", + ":cross_mark_button:": "\u274e", + ":crossed_fingers:": "\U0001f91e", + ":crossed_flags:": "\U0001f38c", + ":crossed_swords:": "\u2694\ufe0f", + ":crown:": "\U0001f451", + ":cruise_ship:": "\U0001f6f3", + ":cry:": "\U0001f622", + ":crying_cat:": "\U0001f63f", + ":crying_cat_face:": "\U0001f63f", + ":crying_face:": "\U0001f622", + ":crystal_ball:": "\U0001f52e", + ":cuba:": "\U0001f1e8\U0001f1fa", + ":cucumber:": "\U0001f952", + ":cup_with_straw:": "\U0001f964", + ":cupcake:": "\U0001f9c1", + ":cupid:": "\U0001f498", + ":curacao:": "\U0001f1e8\U0001f1fc", + ":curling_stone:": "\U0001f94c", + ":curly_hair:": "\U0001f9b1", + ":curly_haired_man:": "\U0001f468\u200d\U0001f9b1", + ":curly_haired_person:": "\U0001f9d1\u200d\U0001f9b1", + ":curly_haired_woman:": "\U0001f469\u200d\U0001f9b1", + ":curly_loop:": "\u27b0", + ":currency_exchange:": "\U0001f4b1", + ":curry:": "\U0001f35b", + ":curry_rice:": "\U0001f35b", + ":cursing_face:": "\U0001f92c", + ":custard:": "\U0001f36e", + ":customs:": "\U0001f6c3", + ":cut_of_meat:": "\U0001f969", + ":cyclone:": "\U0001f300", + ":cyprus:": "\U0001f1e8\U0001f1fe", + ":czech_republic:": "\U0001f1e8\U0001f1ff", + ":dagger:": "\U0001f5e1", + ":dagger_knife:": "\U0001f5e1\ufe0f", + ":dancer:": "\U0001f483", + ":dancer_tone1:": "\U0001f483\U0001f3fb", + ":dancer_tone2:": "\U0001f483\U0001f3fc", + ":dancer_tone3:": "\U0001f483\U0001f3fd", + ":dancer_tone4:": "\U0001f483\U0001f3fe", + ":dancer_tone5:": "\U0001f483\U0001f3ff", + ":dancers:": "\U0001f46f\u200d\u2640\ufe0f", + ":dancing_men:": "\U0001f46f\u200d\u2642\ufe0f", + ":dancing_women:": "\U0001f46f\u200d\u2640\ufe0f", + ":dango:": "\U0001f361", + ":dark_sunglasses:": "\U0001f576\ufe0f", + ":dart:": "\U0001f3af", + ":dash:": "\U0001f4a8", + ":dashing_away:": "\U0001f4a8", + ":date:": "\U0001f4c5", + ":de:": "\U0001f1e9\U0001f1ea", + ":deaf_man:": "\U0001f9cf\u200d\u2642\ufe0f", + ":deaf_person:": "\U0001f9cf", + ":deaf_woman:": "\U0001f9cf\u200d\u2640\ufe0f", + ":deciduous_tree:": "\U0001f333", + ":deer:": "\U0001f98c", + ":delivery_truck:": "\U0001f69a", + ":denmark:": "\U0001f1e9\U0001f1f0", + ":department_store:": "\U0001f3ec", + ":derelict_house:": "\U0001f3da", + ":derelict_house_building:": "\U0001f3da\ufe0f", + ":desert:": "\U0001f3dc\ufe0f", + ":desert_island:": "\U0001f3dd\ufe0f", + ":desktop:": "\U0001f5a5", + ":desktop_computer:": "\U0001f5a5\ufe0f", + ":detective:": "\U0001f575", + ":detective_tone1:": "\U0001f575\U0001f3fb", + ":detective_tone2:": "\U0001f575\U0001f3fc", + ":detective_tone3:": "\U0001f575\U0001f3fd", + ":detective_tone4:": "\U0001f575\U0001f3fe", + ":detective_tone5:": "\U0001f575\U0001f3ff", + ":diamond_shape_with_a_dot_inside:": "\U0001f4a0", + ":diamond_suit:": "\u2666", + ":diamond_with_a_dot:": "\U0001f4a0", + ":diamonds:": "\u2666\ufe0f", + ":diego_garcia:": "\U0001f1e9\U0001f1ec", + ":dim_button:": "\U0001f505", + ":disappointed:": "\U0001f61e", + ":disappointed_face:": "\U0001f61e", + ":disappointed_relieved:": "\U0001f625", + ":disguised_face:": "\U0001f978", + ":divide:": "\u2797", + ":dividers:": "\U0001f5c2", + ":diving_mask:": "\U0001f93f", + ":diya_lamp:": "\U0001fa94", + ":dizzy:": "\U0001f4ab", + ":dizzy_face:": "\U0001f635", + ":djibouti:": "\U0001f1e9\U0001f1ef", + ":dna:": "\U0001f9ec", + ":do_not_litter:": "\U0001f6af", + ":dodo:": "\U0001f9a4", + ":dog:": "\U0001f436", + ":dog2:": "\U0001f415", + ":dog_face:": "\U0001f436", + ":dollar:": "\U0001f4b5", + ":dollar_banknote:": "\U0001f4b5", + ":dolls:": "\U0001f38e", + ":dolphin:": "\U0001f42c", + ":dominica:": "\U0001f1e9\U0001f1f2", + ":dominican_republic:": "\U0001f1e9\U0001f1f4", + ":door:": "\U0001f6aa", + ":dotted_six-pointed_star:": "\U0001f52f", + ":double_curly_loop:": "\u27bf", + ":double_exclamation_mark:": "\u203c", + ":double_vertical_bar:": "\u23f8\ufe0f", + ":doughnut:": "\U0001f369", + ":dove:": "\U0001f54a", + ":dove_of_peace:": "\U0001f54a\ufe0f", + ":down-left_arrow:": "\u2199", + ":down-right_arrow:": "\u2198", + ":down_arrow:": "\u2b07", + ":downcast_face_with_sweat:": "\U0001f613", + ":downwards_button:": "\U0001f53d", + ":dragon:": "\U0001f409", + ":dragon_face:": "\U0001f432", + ":dress:": "\U0001f457", + ":dromedary_camel:": "\U0001f42a", + ":drooling_face:": "\U0001f924", + ":drop_of_blood:": "\U0001fa78", + ":droplet:": "\U0001f4a7", + ":drum:": "\U0001f941", + ":drum_with_drumsticks:": "\U0001f941", + ":duck:": "\U0001f986", + ":dumpling:": "\U0001f95f", + ":dvd:": "\U0001f4c0", + ":e-mail:": "\U0001f4e7", + ":eagle:": "\U0001f985", + ":ear:": "\U0001f442", + ":ear_of_corn:": "\U0001f33d", + ":ear_of_rice:": "\U0001f33e", + ":ear_tone1:": "\U0001f442\U0001f3fb", + ":ear_tone2:": "\U0001f442\U0001f3fc", + ":ear_tone3:": "\U0001f442\U0001f3fd", + ":ear_tone4:": "\U0001f442\U0001f3fe", + ":ear_tone5:": "\U0001f442\U0001f3ff", + ":ear_with_hearing_aid:": "\U0001f9bb", + ":earth_africa:": "\U0001f30d", + ":earth_americas:": "\U0001f30e", + ":earth_asia:": "\U0001f30f", + ":ecuador:": "\U0001f1ea\U0001f1e8", + ":egg:": "\U0001f95a", + ":eggplant:": "\U0001f346", + ":egypt:": "\U0001f1ea\U0001f1ec", + ":eight:": "8\ufe0f\u20e3", + ":eight-pointed_star:": "\u2734", + ":eight-spoked_asterisk:": "\u2733", + ":eight-thirty:": "\U0001f563", + ":eight_o’clock:": "\U0001f557", + ":eight_pointed_black_star:": "\u2734\ufe0f", + ":eight_spoked_asterisk:": "\u2733\ufe0f", + ":eject:": "\u23cf\ufe0f", + ":eject_button:": "\u23cf", + ":el_salvador:": "\U0001f1f8\U0001f1fb", + ":electric_plug:": "\U0001f50c", + ":elephant:": "\U0001f418", + ":elevator:": "\U0001f6d7", + ":eleven-thirty:": "\U0001f566", + ":eleven_o’clock:": "\U0001f55a", + ":elf:": "\U0001f9dd\u200d\u2642\ufe0f", + ":elf_man:": "\U0001f9dd\u200d\u2642\ufe0f", + ":elf_tone1:": "\U0001f9dd\U0001f3fb", + ":elf_tone2:": "\U0001f9dd\U0001f3fc", + ":elf_tone3:": "\U0001f9dd\U0001f3fd", + ":elf_tone4:": "\U0001f9dd\U0001f3fe", + ":elf_tone5:": "\U0001f9dd\U0001f3ff", + ":elf_woman:": "\U0001f9dd\u200d\u2640\ufe0f", + ":email:": "\u2709\ufe0f", + ":end:": "\U0001f51a", + ":england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", + ":envelope:": "\u2709", + ":envelope_with_arrow:": "\U0001f4e9", + ":equatorial_guinea:": "\U0001f1ec\U0001f1f6", + ":eritrea:": "\U0001f1ea\U0001f1f7", + ":es:": "\U0001f1ea\U0001f1f8", + ":estonia:": "\U0001f1ea\U0001f1ea", + ":ethiopia:": "\U0001f1ea\U0001f1f9", + ":eu:": "\U0001f1ea\U0001f1fa", + ":euro:": "\U0001f4b6", + ":euro_banknote:": "\U0001f4b6", + ":european_castle:": "\U0001f3f0", + ":european_post_office:": "\U0001f3e4", + ":european_union:": "\U0001f1ea\U0001f1fa", + ":evergreen_tree:": "\U0001f332", + ":ewe:": "\U0001f411", + ":exclamation:": "\u2757", + ":exclamation_question_mark:": "\u2049", + ":exploding_head:": "\U0001f92f", + ":expressionless:": "\U0001f611", + ":expressionless_face:": "\U0001f611", + ":eye:": "\U0001f441\ufe0f", + ":eye-in-speech-bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", + ":eye_in_speech_bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", + ":eye_speech_bubble:": "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f", + ":eyeglasses:": "\U0001f453", + ":eyes:": "\U0001f440", + ":face_blowing_a_kiss:": "\U0001f618", + ":face_exhaling:": "\U0001f62e\u200d\U0001f4a8", + ":face_in_clouds:": "\U0001f636\u200d\U0001f32b\ufe0f", + ":face_palm:": "\U0001f926", + ":face_savoring_food:": "\U0001f60b", + ":face_screaming_in_fear:": "\U0001f631", + ":face_vomiting:": "\U0001f92e", + ":face_with_cowboy_hat:": "\U0001f920", + ":face_with_hand_over_mouth:": "\U0001f92d", + ":face_with_head-bandage:": "\U0001f915", + ":face_with_head_bandage:": "\U0001f915", + ":face_with_medical_mask:": "\U0001f637", + ":face_with_monocle:": "\U0001f9d0", + ":face_with_open_mouth:": "\U0001f62e", + ":face_with_raised_eyebrow:": "\U0001f928", + ":face_with_rolling_eyes:": "\U0001f644", + ":face_with_spiral_eyes:": "\U0001f635\u200d\U0001f4ab", + ":face_with_steam_from_nose:": "\U0001f624", + ":face_with_symbols_on_mouth:": "\U0001f92c", + ":face_with_symbols_over_mouth:": "\U0001f92c", + ":face_with_tears_of_joy:": "\U0001f602", + ":face_with_thermometer:": "\U0001f912", + ":face_with_tongue:": "\U0001f61b", + ":face_without_mouth:": "\U0001f636", + ":facepalm:": "\U0001f926", + ":facepunch:": "\U0001f44a", + ":factory:": "\U0001f3ed", + ":factory_worker:": "\U0001f9d1\u200d\U0001f3ed", + ":fairy:": "\U0001f9da\u200d\u2640\ufe0f", + ":fairy_man:": "\U0001f9da\u200d\u2642\ufe0f", + ":fairy_tone1:": "\U0001f9da\U0001f3fb", + ":fairy_tone2:": "\U0001f9da\U0001f3fc", + ":fairy_tone3:": "\U0001f9da\U0001f3fd", + ":fairy_tone4:": "\U0001f9da\U0001f3fe", + ":fairy_tone5:": "\U0001f9da\U0001f3ff", + ":fairy_woman:": "\U0001f9da\u200d\u2640\ufe0f", + ":falafel:": "\U0001f9c6", + ":falkland_islands:": "\U0001f1eb\U0001f1f0", + ":fallen_leaf:": "\U0001f342", + ":family:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", + ":family_man_boy:": "\U0001f468\u200d\U0001f466", + ":family_man_boy_boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466", + ":family_man_girl:": "\U0001f468\u200d\U0001f467", + ":family_man_girl_boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466", + ":family_man_girl_girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467", + ":family_man_man_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", + ":family_man_man_boy_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", + ":family_man_man_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", + ":family_man_man_girl_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", + ":family_man_man_girl_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", + ":family_man_woman_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", + ":family_man_woman_boy_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":family_man_woman_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", + ":family_man_woman_girl_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":family_man_woman_girl_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":family_mmb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", + ":family_mmbb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", + ":family_mmg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", + ":family_mmgb:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", + ":family_mmgg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", + ":family_mwbb:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":family_mwg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", + ":family_mwgb:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":family_mwgg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":family_woman_boy:": "\U0001f469\u200d\U0001f466", + ":family_woman_boy_boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":family_woman_girl:": "\U0001f469\u200d\U0001f467", + ":family_woman_girl_boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":family_woman_girl_girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":family_woman_woman_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", + ":family_woman_woman_boy_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":family_woman_woman_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", + ":family_woman_woman_girl_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":family_woman_woman_girl_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":family_wwb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", + ":family_wwbb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":family_wwg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", + ":family_wwgb:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":family_wwgg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":farmer:": "\U0001f9d1\u200d\U0001f33e", + ":faroe_islands:": "\U0001f1eb\U0001f1f4", + ":fast-forward_button:": "\u23e9", + ":fast_down_button:": "\u23ec", + ":fast_forward:": "\u23e9", + ":fast_reverse_button:": "\u23ea", + ":fast_up_button:": "\u23eb", + ":fax:": "\U0001f4e0", + ":fax_machine:": "\U0001f4e0", + ":fearful:": "\U0001f628", + ":fearful_face:": "\U0001f628", + ":feather:": "\U0001fab6", + ":feet:": "\U0001f43e", + ":female-artist:": "\U0001f469\u200d\U0001f3a8", + ":female-astronaut:": "\U0001f469\u200d\U0001f680", + ":female-construction-worker:": "\U0001f477\u200d\u2640\ufe0f", + ":female-cook:": "\U0001f469\u200d\U0001f373", + ":female-detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", + ":female-doctor:": "\U0001f469\u200d\u2695\ufe0f", + ":female-factory-worker:": "\U0001f469\u200d\U0001f3ed", + ":female-farmer:": "\U0001f469\u200d\U0001f33e", + ":female-firefighter:": "\U0001f469\u200d\U0001f692", + ":female-guard:": "\U0001f482\u200d\u2640\ufe0f", + ":female-judge:": "\U0001f469\u200d\u2696\ufe0f", + ":female-mechanic:": "\U0001f469\u200d\U0001f527", + ":female-office-worker:": "\U0001f469\u200d\U0001f4bc", + ":female-pilot:": "\U0001f469\u200d\u2708\ufe0f", + ":female-police-officer:": "\U0001f46e\u200d\u2640\ufe0f", + ":female-scientist:": "\U0001f469\u200d\U0001f52c", + ":female-singer:": "\U0001f469\u200d\U0001f3a4", + ":female-student:": "\U0001f469\u200d\U0001f393", + ":female-teacher:": "\U0001f469\u200d\U0001f3eb", + ":female-technologist:": "\U0001f469\u200d\U0001f4bb", + ":female_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", + ":female_elf:": "\U0001f9dd\u200d\u2640\ufe0f", + ":female_fairy:": "\U0001f9da\u200d\u2640\ufe0f", + ":female_genie:": "\U0001f9de\u200d\u2640\ufe0f", + ":female_mage:": "\U0001f9d9\u200d\u2640\ufe0f", + ":female_sign:": "\u2640\ufe0f", + ":female_superhero:": "\U0001f9b8\u200d\u2640\ufe0f", + ":female_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f", + ":female_vampire:": "\U0001f9db\u200d\u2640\ufe0f", + ":female_zombie:": "\U0001f9df\u200d\u2640\ufe0f", + ":fencer:": "\U0001f93a", + ":ferris_wheel:": "\U0001f3a1", + ":ferry:": "\u26f4\ufe0f", + ":field_hockey:": "\U0001f3d1", + ":field_hockey_stick_and_ball:": "\U0001f3d1", + ":fiji:": "\U0001f1eb\U0001f1ef", + ":file_cabinet:": "\U0001f5c4\ufe0f", + ":file_folder:": "\U0001f4c1", + ":film_frames:": "\U0001f39e\ufe0f", + ":film_projector:": "\U0001f4fd\ufe0f", + ":film_strip:": "\U0001f39e\ufe0f", + ":fingers_crossed:": "\U0001f91e", + ":fingers_crossed_tone1:": "\U0001f91e\U0001f3fb", + ":fingers_crossed_tone2:": "\U0001f91e\U0001f3fc", + ":fingers_crossed_tone3:": "\U0001f91e\U0001f3fd", + ":fingers_crossed_tone4:": "\U0001f91e\U0001f3fe", + ":fingers_crossed_tone5:": "\U0001f91e\U0001f3ff", + ":finland:": "\U0001f1eb\U0001f1ee", + ":fire:": "\U0001f525", + ":fire_engine:": "\U0001f692", + ":fire_extinguisher:": "\U0001f9ef", + ":firecracker:": "\U0001f9e8", + ":firefighter:": "\U0001f9d1\u200d\U0001f692", + ":fireworks:": "\U0001f386", + ":first_place:": "\U0001f947", + ":first_place_medal:": "\U0001f947", + ":first_quarter_moon:": "\U0001f313", + ":first_quarter_moon_face:": "\U0001f31b", + ":first_quarter_moon_with_face:": "\U0001f31b", + ":fish:": "\U0001f41f", + ":fish_cake:": "\U0001f365", + ":fish_cake_with_swirl:": "\U0001f365", + ":fishing_pole:": "\U0001f3a3", + ":fishing_pole_and_fish:": "\U0001f3a3", + ":fist:": "\u270a", + ":fist_left:": "\U0001f91b", + ":fist_oncoming:": "\U0001f44a", + ":fist_raised:": "\u270a", + ":fist_right:": "\U0001f91c", + ":fist_tone1:": "\u270a\U0001f3fb", + ":fist_tone2:": "\u270a\U0001f3fc", + ":fist_tone3:": "\u270a\U0001f3fd", + ":fist_tone4:": "\u270a\U0001f3fe", + ":fist_tone5:": "\u270a\U0001f3ff", + ":five:": "5\ufe0f\u20e3", + ":five-thirty:": "\U0001f560", + ":five_o’clock:": "\U0001f554", + ":flag-ac:": "\U0001f1e6\U0001f1e8", + ":flag-ad:": "\U0001f1e6\U0001f1e9", + ":flag-ae:": "\U0001f1e6\U0001f1ea", + ":flag-af:": "\U0001f1e6\U0001f1eb", + ":flag-ag:": "\U0001f1e6\U0001f1ec", + ":flag-ai:": "\U0001f1e6\U0001f1ee", + ":flag-al:": "\U0001f1e6\U0001f1f1", + ":flag-am:": "\U0001f1e6\U0001f1f2", + ":flag-ao:": "\U0001f1e6\U0001f1f4", + ":flag-aq:": "\U0001f1e6\U0001f1f6", + ":flag-ar:": "\U0001f1e6\U0001f1f7", + ":flag-as:": "\U0001f1e6\U0001f1f8", + ":flag-at:": "\U0001f1e6\U0001f1f9", + ":flag-au:": "\U0001f1e6\U0001f1fa", + ":flag-aw:": "\U0001f1e6\U0001f1fc", + ":flag-ax:": "\U0001f1e6\U0001f1fd", + ":flag-az:": "\U0001f1e6\U0001f1ff", + ":flag-ba:": "\U0001f1e7\U0001f1e6", + ":flag-bb:": "\U0001f1e7\U0001f1e7", + ":flag-bd:": "\U0001f1e7\U0001f1e9", + ":flag-be:": "\U0001f1e7\U0001f1ea", + ":flag-bf:": "\U0001f1e7\U0001f1eb", + ":flag-bg:": "\U0001f1e7\U0001f1ec", + ":flag-bh:": "\U0001f1e7\U0001f1ed", + ":flag-bi:": "\U0001f1e7\U0001f1ee", + ":flag-bj:": "\U0001f1e7\U0001f1ef", + ":flag-bl:": "\U0001f1e7\U0001f1f1", + ":flag-bm:": "\U0001f1e7\U0001f1f2", + ":flag-bn:": "\U0001f1e7\U0001f1f3", + ":flag-bo:": "\U0001f1e7\U0001f1f4", + ":flag-bq:": "\U0001f1e7\U0001f1f6", + ":flag-br:": "\U0001f1e7\U0001f1f7", + ":flag-bs:": "\U0001f1e7\U0001f1f8", + ":flag-bt:": "\U0001f1e7\U0001f1f9", + ":flag-bv:": "\U0001f1e7\U0001f1fb", + ":flag-bw:": "\U0001f1e7\U0001f1fc", + ":flag-by:": "\U0001f1e7\U0001f1fe", + ":flag-bz:": "\U0001f1e7\U0001f1ff", + ":flag-ca:": "\U0001f1e8\U0001f1e6", + ":flag-cc:": "\U0001f1e8\U0001f1e8", + ":flag-cd:": "\U0001f1e8\U0001f1e9", + ":flag-cf:": "\U0001f1e8\U0001f1eb", + ":flag-cg:": "\U0001f1e8\U0001f1ec", + ":flag-ch:": "\U0001f1e8\U0001f1ed", + ":flag-ci:": "\U0001f1e8\U0001f1ee", + ":flag-ck:": "\U0001f1e8\U0001f1f0", + ":flag-cl:": "\U0001f1e8\U0001f1f1", + ":flag-cm:": "\U0001f1e8\U0001f1f2", + ":flag-co:": "\U0001f1e8\U0001f1f4", + ":flag-cp:": "\U0001f1e8\U0001f1f5", + ":flag-cr:": "\U0001f1e8\U0001f1f7", + ":flag-cu:": "\U0001f1e8\U0001f1fa", + ":flag-cv:": "\U0001f1e8\U0001f1fb", + ":flag-cw:": "\U0001f1e8\U0001f1fc", + ":flag-cx:": "\U0001f1e8\U0001f1fd", + ":flag-cy:": "\U0001f1e8\U0001f1fe", + ":flag-cz:": "\U0001f1e8\U0001f1ff", + ":flag-dg:": "\U0001f1e9\U0001f1ec", + ":flag-dj:": "\U0001f1e9\U0001f1ef", + ":flag-dk:": "\U0001f1e9\U0001f1f0", + ":flag-dm:": "\U0001f1e9\U0001f1f2", + ":flag-do:": "\U0001f1e9\U0001f1f4", + ":flag-dz:": "\U0001f1e9\U0001f1ff", + ":flag-ea:": "\U0001f1ea\U0001f1e6", + ":flag-ec:": "\U0001f1ea\U0001f1e8", + ":flag-ee:": "\U0001f1ea\U0001f1ea", + ":flag-eg:": "\U0001f1ea\U0001f1ec", + ":flag-eh:": "\U0001f1ea\U0001f1ed", + ":flag-england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", + ":flag-er:": "\U0001f1ea\U0001f1f7", + ":flag-et:": "\U0001f1ea\U0001f1f9", + ":flag-eu:": "\U0001f1ea\U0001f1fa", + ":flag-fi:": "\U0001f1eb\U0001f1ee", + ":flag-fj:": "\U0001f1eb\U0001f1ef", + ":flag-fk:": "\U0001f1eb\U0001f1f0", + ":flag-fm:": "\U0001f1eb\U0001f1f2", + ":flag-fo:": "\U0001f1eb\U0001f1f4", + ":flag-ga:": "\U0001f1ec\U0001f1e6", + ":flag-gd:": "\U0001f1ec\U0001f1e9", + ":flag-ge:": "\U0001f1ec\U0001f1ea", + ":flag-gf:": "\U0001f1ec\U0001f1eb", + ":flag-gg:": "\U0001f1ec\U0001f1ec", + ":flag-gh:": "\U0001f1ec\U0001f1ed", + ":flag-gi:": "\U0001f1ec\U0001f1ee", + ":flag-gl:": "\U0001f1ec\U0001f1f1", + ":flag-gm:": "\U0001f1ec\U0001f1f2", + ":flag-gn:": "\U0001f1ec\U0001f1f3", + ":flag-gp:": "\U0001f1ec\U0001f1f5", + ":flag-gq:": "\U0001f1ec\U0001f1f6", + ":flag-gr:": "\U0001f1ec\U0001f1f7", + ":flag-gs:": "\U0001f1ec\U0001f1f8", + ":flag-gt:": "\U0001f1ec\U0001f1f9", + ":flag-gu:": "\U0001f1ec\U0001f1fa", + ":flag-gw:": "\U0001f1ec\U0001f1fc", + ":flag-gy:": "\U0001f1ec\U0001f1fe", + ":flag-hk:": "\U0001f1ed\U0001f1f0", + ":flag-hm:": "\U0001f1ed\U0001f1f2", + ":flag-hn:": "\U0001f1ed\U0001f1f3", + ":flag-hr:": "\U0001f1ed\U0001f1f7", + ":flag-ht:": "\U0001f1ed\U0001f1f9", + ":flag-hu:": "\U0001f1ed\U0001f1fa", + ":flag-ic:": "\U0001f1ee\U0001f1e8", + ":flag-id:": "\U0001f1ee\U0001f1e9", + ":flag-ie:": "\U0001f1ee\U0001f1ea", + ":flag-il:": "\U0001f1ee\U0001f1f1", + ":flag-im:": "\U0001f1ee\U0001f1f2", + ":flag-in:": "\U0001f1ee\U0001f1f3", + ":flag-io:": "\U0001f1ee\U0001f1f4", + ":flag-iq:": "\U0001f1ee\U0001f1f6", + ":flag-ir:": "\U0001f1ee\U0001f1f7", + ":flag-is:": "\U0001f1ee\U0001f1f8", + ":flag-je:": "\U0001f1ef\U0001f1ea", + ":flag-jm:": "\U0001f1ef\U0001f1f2", + ":flag-jo:": "\U0001f1ef\U0001f1f4", + ":flag-ke:": "\U0001f1f0\U0001f1ea", + ":flag-kg:": "\U0001f1f0\U0001f1ec", + ":flag-kh:": "\U0001f1f0\U0001f1ed", + ":flag-ki:": "\U0001f1f0\U0001f1ee", + ":flag-km:": "\U0001f1f0\U0001f1f2", + ":flag-kn:": "\U0001f1f0\U0001f1f3", + ":flag-kp:": "\U0001f1f0\U0001f1f5", + ":flag-kw:": "\U0001f1f0\U0001f1fc", + ":flag-ky:": "\U0001f1f0\U0001f1fe", + ":flag-kz:": "\U0001f1f0\U0001f1ff", + ":flag-la:": "\U0001f1f1\U0001f1e6", + ":flag-lb:": "\U0001f1f1\U0001f1e7", + ":flag-lc:": "\U0001f1f1\U0001f1e8", + ":flag-li:": "\U0001f1f1\U0001f1ee", + ":flag-lk:": "\U0001f1f1\U0001f1f0", + ":flag-lr:": "\U0001f1f1\U0001f1f7", + ":flag-ls:": "\U0001f1f1\U0001f1f8", + ":flag-lt:": "\U0001f1f1\U0001f1f9", + ":flag-lu:": "\U0001f1f1\U0001f1fa", + ":flag-lv:": "\U0001f1f1\U0001f1fb", + ":flag-ly:": "\U0001f1f1\U0001f1fe", + ":flag-ma:": "\U0001f1f2\U0001f1e6", + ":flag-mc:": "\U0001f1f2\U0001f1e8", + ":flag-md:": "\U0001f1f2\U0001f1e9", + ":flag-me:": "\U0001f1f2\U0001f1ea", + ":flag-mf:": "\U0001f1f2\U0001f1eb", + ":flag-mg:": "\U0001f1f2\U0001f1ec", + ":flag-mh:": "\U0001f1f2\U0001f1ed", + ":flag-mk:": "\U0001f1f2\U0001f1f0", + ":flag-ml:": "\U0001f1f2\U0001f1f1", + ":flag-mm:": "\U0001f1f2\U0001f1f2", + ":flag-mn:": "\U0001f1f2\U0001f1f3", + ":flag-mo:": "\U0001f1f2\U0001f1f4", + ":flag-mp:": "\U0001f1f2\U0001f1f5", + ":flag-mq:": "\U0001f1f2\U0001f1f6", + ":flag-mr:": "\U0001f1f2\U0001f1f7", + ":flag-ms:": "\U0001f1f2\U0001f1f8", + ":flag-mt:": "\U0001f1f2\U0001f1f9", + ":flag-mu:": "\U0001f1f2\U0001f1fa", + ":flag-mv:": "\U0001f1f2\U0001f1fb", + ":flag-mw:": "\U0001f1f2\U0001f1fc", + ":flag-mx:": "\U0001f1f2\U0001f1fd", + ":flag-my:": "\U0001f1f2\U0001f1fe", + ":flag-mz:": "\U0001f1f2\U0001f1ff", + ":flag-na:": "\U0001f1f3\U0001f1e6", + ":flag-nc:": "\U0001f1f3\U0001f1e8", + ":flag-ne:": "\U0001f1f3\U0001f1ea", + ":flag-nf:": "\U0001f1f3\U0001f1eb", + ":flag-ng:": "\U0001f1f3\U0001f1ec", + ":flag-ni:": "\U0001f1f3\U0001f1ee", + ":flag-nl:": "\U0001f1f3\U0001f1f1", + ":flag-no:": "\U0001f1f3\U0001f1f4", + ":flag-np:": "\U0001f1f3\U0001f1f5", + ":flag-nr:": "\U0001f1f3\U0001f1f7", + ":flag-nu:": "\U0001f1f3\U0001f1fa", + ":flag-nz:": "\U0001f1f3\U0001f1ff", + ":flag-om:": "\U0001f1f4\U0001f1f2", + ":flag-pa:": "\U0001f1f5\U0001f1e6", + ":flag-pe:": "\U0001f1f5\U0001f1ea", + ":flag-pf:": "\U0001f1f5\U0001f1eb", + ":flag-pg:": "\U0001f1f5\U0001f1ec", + ":flag-ph:": "\U0001f1f5\U0001f1ed", + ":flag-pk:": "\U0001f1f5\U0001f1f0", + ":flag-pl:": "\U0001f1f5\U0001f1f1", + ":flag-pm:": "\U0001f1f5\U0001f1f2", + ":flag-pn:": "\U0001f1f5\U0001f1f3", + ":flag-pr:": "\U0001f1f5\U0001f1f7", + ":flag-ps:": "\U0001f1f5\U0001f1f8", + ":flag-pt:": "\U0001f1f5\U0001f1f9", + ":flag-pw:": "\U0001f1f5\U0001f1fc", + ":flag-py:": "\U0001f1f5\U0001f1fe", + ":flag-qa:": "\U0001f1f6\U0001f1e6", + ":flag-re:": "\U0001f1f7\U0001f1ea", + ":flag-ro:": "\U0001f1f7\U0001f1f4", + ":flag-rs:": "\U0001f1f7\U0001f1f8", + ":flag-rw:": "\U0001f1f7\U0001f1fc", + ":flag-sa:": "\U0001f1f8\U0001f1e6", + ":flag-sb:": "\U0001f1f8\U0001f1e7", + ":flag-sc:": "\U0001f1f8\U0001f1e8", + ":flag-scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", + ":flag-sd:": "\U0001f1f8\U0001f1e9", + ":flag-se:": "\U0001f1f8\U0001f1ea", + ":flag-sg:": "\U0001f1f8\U0001f1ec", + ":flag-sh:": "\U0001f1f8\U0001f1ed", + ":flag-si:": "\U0001f1f8\U0001f1ee", + ":flag-sj:": "\U0001f1f8\U0001f1ef", + ":flag-sk:": "\U0001f1f8\U0001f1f0", + ":flag-sl:": "\U0001f1f8\U0001f1f1", + ":flag-sm:": "\U0001f1f8\U0001f1f2", + ":flag-sn:": "\U0001f1f8\U0001f1f3", + ":flag-so:": "\U0001f1f8\U0001f1f4", + ":flag-sr:": "\U0001f1f8\U0001f1f7", + ":flag-ss:": "\U0001f1f8\U0001f1f8", + ":flag-st:": "\U0001f1f8\U0001f1f9", + ":flag-sv:": "\U0001f1f8\U0001f1fb", + ":flag-sx:": "\U0001f1f8\U0001f1fd", + ":flag-sy:": "\U0001f1f8\U0001f1fe", + ":flag-sz:": "\U0001f1f8\U0001f1ff", + ":flag-ta:": "\U0001f1f9\U0001f1e6", + ":flag-tc:": "\U0001f1f9\U0001f1e8", + ":flag-td:": "\U0001f1f9\U0001f1e9", + ":flag-tf:": "\U0001f1f9\U0001f1eb", + ":flag-tg:": "\U0001f1f9\U0001f1ec", + ":flag-th:": "\U0001f1f9\U0001f1ed", + ":flag-tj:": "\U0001f1f9\U0001f1ef", + ":flag-tk:": "\U0001f1f9\U0001f1f0", + ":flag-tl:": "\U0001f1f9\U0001f1f1", + ":flag-tm:": "\U0001f1f9\U0001f1f2", + ":flag-tn:": "\U0001f1f9\U0001f1f3", + ":flag-to:": "\U0001f1f9\U0001f1f4", + ":flag-tr:": "\U0001f1f9\U0001f1f7", + ":flag-tt:": "\U0001f1f9\U0001f1f9", + ":flag-tv:": "\U0001f1f9\U0001f1fb", + ":flag-tw:": "\U0001f1f9\U0001f1fc", + ":flag-tz:": "\U0001f1f9\U0001f1ff", + ":flag-ua:": "\U0001f1fa\U0001f1e6", + ":flag-ug:": "\U0001f1fa\U0001f1ec", + ":flag-um:": "\U0001f1fa\U0001f1f2", + ":flag-un:": "\U0001f1fa\U0001f1f3", + ":flag-uy:": "\U0001f1fa\U0001f1fe", + ":flag-uz:": "\U0001f1fa\U0001f1ff", + ":flag-va:": "\U0001f1fb\U0001f1e6", + ":flag-vc:": "\U0001f1fb\U0001f1e8", + ":flag-ve:": "\U0001f1fb\U0001f1ea", + ":flag-vg:": "\U0001f1fb\U0001f1ec", + ":flag-vi:": "\U0001f1fb\U0001f1ee", + ":flag-vn:": "\U0001f1fb\U0001f1f3", + ":flag-vu:": "\U0001f1fb\U0001f1fa", + ":flag-wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", + ":flag-wf:": "\U0001f1fc\U0001f1eb", + ":flag-ws:": "\U0001f1fc\U0001f1f8", + ":flag-xk:": "\U0001f1fd\U0001f1f0", + ":flag-ye:": "\U0001f1fe\U0001f1ea", + ":flag-yt:": "\U0001f1fe\U0001f1f9", + ":flag-za:": "\U0001f1ff\U0001f1e6", + ":flag-zm:": "\U0001f1ff\U0001f1f2", + ":flag-zw:": "\U0001f1ff\U0001f1fc", + ":flag_Afghanistan:": "\U0001f1e6\U0001f1eb", + ":flag_Albania:": "\U0001f1e6\U0001f1f1", + ":flag_Algeria:": "\U0001f1e9\U0001f1ff", + ":flag_American_Samoa:": "\U0001f1e6\U0001f1f8", + ":flag_Andorra:": "\U0001f1e6\U0001f1e9", + ":flag_Angola:": "\U0001f1e6\U0001f1f4", + ":flag_Anguilla:": "\U0001f1e6\U0001f1ee", + ":flag_Antarctica:": "\U0001f1e6\U0001f1f6", + ":flag_Antigua_&_Barbuda:": "\U0001f1e6\U0001f1ec", + ":flag_Argentina:": "\U0001f1e6\U0001f1f7", + ":flag_Armenia:": "\U0001f1e6\U0001f1f2", + ":flag_Aruba:": "\U0001f1e6\U0001f1fc", + ":flag_Ascension_Island:": "\U0001f1e6\U0001f1e8", + ":flag_Australia:": "\U0001f1e6\U0001f1fa", + ":flag_Austria:": "\U0001f1e6\U0001f1f9", + ":flag_Azerbaijan:": "\U0001f1e6\U0001f1ff", + ":flag_Bahamas:": "\U0001f1e7\U0001f1f8", + ":flag_Bahrain:": "\U0001f1e7\U0001f1ed", + ":flag_Bangladesh:": "\U0001f1e7\U0001f1e9", + ":flag_Barbados:": "\U0001f1e7\U0001f1e7", + ":flag_Belarus:": "\U0001f1e7\U0001f1fe", + ":flag_Belgium:": "\U0001f1e7\U0001f1ea", + ":flag_Belize:": "\U0001f1e7\U0001f1ff", + ":flag_Benin:": "\U0001f1e7\U0001f1ef", + ":flag_Bermuda:": "\U0001f1e7\U0001f1f2", + ":flag_Bhutan:": "\U0001f1e7\U0001f1f9", + ":flag_Bolivia:": "\U0001f1e7\U0001f1f4", + ":flag_Bosnia_&_Herzegovina:": "\U0001f1e7\U0001f1e6", + ":flag_Botswana:": "\U0001f1e7\U0001f1fc", + ":flag_Bouvet_Island:": "\U0001f1e7\U0001f1fb", + ":flag_Brazil:": "\U0001f1e7\U0001f1f7", + ":flag_British_Indian_Ocean_Territory:": "\U0001f1ee\U0001f1f4", + ":flag_British_Virgin_Islands:": "\U0001f1fb\U0001f1ec", + ":flag_Brunei:": "\U0001f1e7\U0001f1f3", + ":flag_Bulgaria:": "\U0001f1e7\U0001f1ec", + ":flag_Burkina_Faso:": "\U0001f1e7\U0001f1eb", + ":flag_Burundi:": "\U0001f1e7\U0001f1ee", + ":flag_Cambodia:": "\U0001f1f0\U0001f1ed", + ":flag_Cameroon:": "\U0001f1e8\U0001f1f2", + ":flag_Canada:": "\U0001f1e8\U0001f1e6", + ":flag_Canary_Islands:": "\U0001f1ee\U0001f1e8", + ":flag_Cape_Verde:": "\U0001f1e8\U0001f1fb", + ":flag_Caribbean_Netherlands:": "\U0001f1e7\U0001f1f6", + ":flag_Cayman_Islands:": "\U0001f1f0\U0001f1fe", + ":flag_Central_African_Republic:": "\U0001f1e8\U0001f1eb", + ":flag_Ceuta_&_Melilla:": "\U0001f1ea\U0001f1e6", + ":flag_Chad:": "\U0001f1f9\U0001f1e9", + ":flag_Chile:": "\U0001f1e8\U0001f1f1", + ":flag_China:": "\U0001f1e8\U0001f1f3", + ":flag_Christmas_Island:": "\U0001f1e8\U0001f1fd", + ":flag_Clipperton_Island:": "\U0001f1e8\U0001f1f5", + ":flag_Cocos_(Keeling)_Islands:": "\U0001f1e8\U0001f1e8", + ":flag_Colombia:": "\U0001f1e8\U0001f1f4", + ":flag_Comoros:": "\U0001f1f0\U0001f1f2", + ":flag_Congo_-_Brazzaville:": "\U0001f1e8\U0001f1ec", + ":flag_Congo_-_Kinshasa:": "\U0001f1e8\U0001f1e9", + ":flag_Cook_Islands:": "\U0001f1e8\U0001f1f0", + ":flag_Costa_Rica:": "\U0001f1e8\U0001f1f7", + ":flag_Croatia:": "\U0001f1ed\U0001f1f7", + ":flag_Cuba:": "\U0001f1e8\U0001f1fa", + ":flag_Curaçao:": "\U0001f1e8\U0001f1fc", + ":flag_Cyprus:": "\U0001f1e8\U0001f1fe", + ":flag_Czechia:": "\U0001f1e8\U0001f1ff", + ":flag_Côte_d’Ivoire:": "\U0001f1e8\U0001f1ee", + ":flag_Denmark:": "\U0001f1e9\U0001f1f0", + ":flag_Diego_Garcia:": "\U0001f1e9\U0001f1ec", + ":flag_Djibouti:": "\U0001f1e9\U0001f1ef", + ":flag_Dominica:": "\U0001f1e9\U0001f1f2", + ":flag_Dominican_Republic:": "\U0001f1e9\U0001f1f4", + ":flag_Ecuador:": "\U0001f1ea\U0001f1e8", + ":flag_Egypt:": "\U0001f1ea\U0001f1ec", + ":flag_El_Salvador:": "\U0001f1f8\U0001f1fb", + ":flag_England:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f", + ":flag_Equatorial_Guinea:": "\U0001f1ec\U0001f1f6", + ":flag_Eritrea:": "\U0001f1ea\U0001f1f7", + ":flag_Estonia:": "\U0001f1ea\U0001f1ea", + ":flag_Eswatini:": "\U0001f1f8\U0001f1ff", + ":flag_Ethiopia:": "\U0001f1ea\U0001f1f9", + ":flag_European_Union:": "\U0001f1ea\U0001f1fa", + ":flag_Falkland_Islands:": "\U0001f1eb\U0001f1f0", + ":flag_Faroe_Islands:": "\U0001f1eb\U0001f1f4", + ":flag_Fiji:": "\U0001f1eb\U0001f1ef", + ":flag_Finland:": "\U0001f1eb\U0001f1ee", + ":flag_France:": "\U0001f1eb\U0001f1f7", + ":flag_French_Guiana:": "\U0001f1ec\U0001f1eb", + ":flag_French_Polynesia:": "\U0001f1f5\U0001f1eb", + ":flag_French_Southern_Territories:": "\U0001f1f9\U0001f1eb", + ":flag_Gabon:": "\U0001f1ec\U0001f1e6", + ":flag_Gambia:": "\U0001f1ec\U0001f1f2", + ":flag_Georgia:": "\U0001f1ec\U0001f1ea", + ":flag_Germany:": "\U0001f1e9\U0001f1ea", + ":flag_Ghana:": "\U0001f1ec\U0001f1ed", + ":flag_Gibraltar:": "\U0001f1ec\U0001f1ee", + ":flag_Greece:": "\U0001f1ec\U0001f1f7", + ":flag_Greenland:": "\U0001f1ec\U0001f1f1", + ":flag_Grenada:": "\U0001f1ec\U0001f1e9", + ":flag_Guadeloupe:": "\U0001f1ec\U0001f1f5", + ":flag_Guam:": "\U0001f1ec\U0001f1fa", + ":flag_Guatemala:": "\U0001f1ec\U0001f1f9", + ":flag_Guernsey:": "\U0001f1ec\U0001f1ec", + ":flag_Guinea:": "\U0001f1ec\U0001f1f3", + ":flag_Guinea-Bissau:": "\U0001f1ec\U0001f1fc", + ":flag_Guyana:": "\U0001f1ec\U0001f1fe", + ":flag_Haiti:": "\U0001f1ed\U0001f1f9", + ":flag_Heard_&_McDonald_Islands:": "\U0001f1ed\U0001f1f2", + ":flag_Honduras:": "\U0001f1ed\U0001f1f3", + ":flag_Hong_Kong_SAR_China:": "\U0001f1ed\U0001f1f0", + ":flag_Hungary:": "\U0001f1ed\U0001f1fa", + ":flag_Iceland:": "\U0001f1ee\U0001f1f8", + ":flag_India:": "\U0001f1ee\U0001f1f3", + ":flag_Indonesia:": "\U0001f1ee\U0001f1e9", + ":flag_Iran:": "\U0001f1ee\U0001f1f7", + ":flag_Iraq:": "\U0001f1ee\U0001f1f6", + ":flag_Ireland:": "\U0001f1ee\U0001f1ea", + ":flag_Isle_of_Man:": "\U0001f1ee\U0001f1f2", + ":flag_Israel:": "\U0001f1ee\U0001f1f1", + ":flag_Italy:": "\U0001f1ee\U0001f1f9", + ":flag_Jamaica:": "\U0001f1ef\U0001f1f2", + ":flag_Japan:": "\U0001f1ef\U0001f1f5", + ":flag_Jersey:": "\U0001f1ef\U0001f1ea", + ":flag_Jordan:": "\U0001f1ef\U0001f1f4", + ":flag_Kazakhstan:": "\U0001f1f0\U0001f1ff", + ":flag_Kenya:": "\U0001f1f0\U0001f1ea", + ":flag_Kiribati:": "\U0001f1f0\U0001f1ee", + ":flag_Kosovo:": "\U0001f1fd\U0001f1f0", + ":flag_Kuwait:": "\U0001f1f0\U0001f1fc", + ":flag_Kyrgyzstan:": "\U0001f1f0\U0001f1ec", + ":flag_Laos:": "\U0001f1f1\U0001f1e6", + ":flag_Latvia:": "\U0001f1f1\U0001f1fb", + ":flag_Lebanon:": "\U0001f1f1\U0001f1e7", + ":flag_Lesotho:": "\U0001f1f1\U0001f1f8", + ":flag_Liberia:": "\U0001f1f1\U0001f1f7", + ":flag_Libya:": "\U0001f1f1\U0001f1fe", + ":flag_Liechtenstein:": "\U0001f1f1\U0001f1ee", + ":flag_Lithuania:": "\U0001f1f1\U0001f1f9", + ":flag_Luxembourg:": "\U0001f1f1\U0001f1fa", + ":flag_Macao_SAR_China:": "\U0001f1f2\U0001f1f4", + ":flag_Madagascar:": "\U0001f1f2\U0001f1ec", + ":flag_Malawi:": "\U0001f1f2\U0001f1fc", + ":flag_Malaysia:": "\U0001f1f2\U0001f1fe", + ":flag_Maldives:": "\U0001f1f2\U0001f1fb", + ":flag_Mali:": "\U0001f1f2\U0001f1f1", + ":flag_Malta:": "\U0001f1f2\U0001f1f9", + ":flag_Marshall_Islands:": "\U0001f1f2\U0001f1ed", + ":flag_Martinique:": "\U0001f1f2\U0001f1f6", + ":flag_Mauritania:": "\U0001f1f2\U0001f1f7", + ":flag_Mauritius:": "\U0001f1f2\U0001f1fa", + ":flag_Mayotte:": "\U0001f1fe\U0001f1f9", + ":flag_Mexico:": "\U0001f1f2\U0001f1fd", + ":flag_Micronesia:": "\U0001f1eb\U0001f1f2", + ":flag_Moldova:": "\U0001f1f2\U0001f1e9", + ":flag_Monaco:": "\U0001f1f2\U0001f1e8", + ":flag_Mongolia:": "\U0001f1f2\U0001f1f3", + ":flag_Montenegro:": "\U0001f1f2\U0001f1ea", + ":flag_Montserrat:": "\U0001f1f2\U0001f1f8", + ":flag_Morocco:": "\U0001f1f2\U0001f1e6", + ":flag_Mozambique:": "\U0001f1f2\U0001f1ff", + ":flag_Myanmar_(Burma):": "\U0001f1f2\U0001f1f2", + ":flag_Namibia:": "\U0001f1f3\U0001f1e6", + ":flag_Nauru:": "\U0001f1f3\U0001f1f7", + ":flag_Nepal:": "\U0001f1f3\U0001f1f5", + ":flag_Netherlands:": "\U0001f1f3\U0001f1f1", + ":flag_New_Caledonia:": "\U0001f1f3\U0001f1e8", + ":flag_New_Zealand:": "\U0001f1f3\U0001f1ff", + ":flag_Nicaragua:": "\U0001f1f3\U0001f1ee", + ":flag_Niger:": "\U0001f1f3\U0001f1ea", + ":flag_Nigeria:": "\U0001f1f3\U0001f1ec", + ":flag_Niue:": "\U0001f1f3\U0001f1fa", + ":flag_Norfolk_Island:": "\U0001f1f3\U0001f1eb", + ":flag_North_Korea:": "\U0001f1f0\U0001f1f5", + ":flag_North_Macedonia:": "\U0001f1f2\U0001f1f0", + ":flag_Northern_Mariana_Islands:": "\U0001f1f2\U0001f1f5", + ":flag_Norway:": "\U0001f1f3\U0001f1f4", + ":flag_Oman:": "\U0001f1f4\U0001f1f2", + ":flag_Pakistan:": "\U0001f1f5\U0001f1f0", + ":flag_Palau:": "\U0001f1f5\U0001f1fc", + ":flag_Palestinian_Territories:": "\U0001f1f5\U0001f1f8", + ":flag_Panama:": "\U0001f1f5\U0001f1e6", + ":flag_Papua_New_Guinea:": "\U0001f1f5\U0001f1ec", + ":flag_Paraguay:": "\U0001f1f5\U0001f1fe", + ":flag_Peru:": "\U0001f1f5\U0001f1ea", + ":flag_Philippines:": "\U0001f1f5\U0001f1ed", + ":flag_Pitcairn_Islands:": "\U0001f1f5\U0001f1f3", + ":flag_Poland:": "\U0001f1f5\U0001f1f1", + ":flag_Portugal:": "\U0001f1f5\U0001f1f9", + ":flag_Puerto_Rico:": "\U0001f1f5\U0001f1f7", + ":flag_Qatar:": "\U0001f1f6\U0001f1e6", + ":flag_Romania:": "\U0001f1f7\U0001f1f4", + ":flag_Russia:": "\U0001f1f7\U0001f1fa", + ":flag_Rwanda:": "\U0001f1f7\U0001f1fc", + ":flag_Réunion:": "\U0001f1f7\U0001f1ea", + ":flag_Samoa:": "\U0001f1fc\U0001f1f8", + ":flag_San_Marino:": "\U0001f1f8\U0001f1f2", + ":flag_Saudi_Arabia:": "\U0001f1f8\U0001f1e6", + ":flag_Scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", + ":flag_Senegal:": "\U0001f1f8\U0001f1f3", + ":flag_Serbia:": "\U0001f1f7\U0001f1f8", + ":flag_Seychelles:": "\U0001f1f8\U0001f1e8", + ":flag_Sierra_Leone:": "\U0001f1f8\U0001f1f1", + ":flag_Singapore:": "\U0001f1f8\U0001f1ec", + ":flag_Sint_Maarten:": "\U0001f1f8\U0001f1fd", + ":flag_Slovakia:": "\U0001f1f8\U0001f1f0", + ":flag_Slovenia:": "\U0001f1f8\U0001f1ee", + ":flag_Solomon_Islands:": "\U0001f1f8\U0001f1e7", + ":flag_Somalia:": "\U0001f1f8\U0001f1f4", + ":flag_South_Africa:": "\U0001f1ff\U0001f1e6", + ":flag_South_Georgia_&_South_Sandwich_Islands:": "\U0001f1ec\U0001f1f8", + ":flag_South_Korea:": "\U0001f1f0\U0001f1f7", + ":flag_South_Sudan:": "\U0001f1f8\U0001f1f8", + ":flag_Spain:": "\U0001f1ea\U0001f1f8", + ":flag_Sri_Lanka:": "\U0001f1f1\U0001f1f0", + ":flag_St._Barthélemy:": "\U0001f1e7\U0001f1f1", + ":flag_St._Helena:": "\U0001f1f8\U0001f1ed", + ":flag_St._Kitts_&_Nevis:": "\U0001f1f0\U0001f1f3", + ":flag_St._Lucia:": "\U0001f1f1\U0001f1e8", + ":flag_St._Martin:": "\U0001f1f2\U0001f1eb", + ":flag_St._Pierre_&_Miquelon:": "\U0001f1f5\U0001f1f2", + ":flag_St._Vincent_&_Grenadines:": "\U0001f1fb\U0001f1e8", + ":flag_Sudan:": "\U0001f1f8\U0001f1e9", + ":flag_Suriname:": "\U0001f1f8\U0001f1f7", + ":flag_Svalbard_&_Jan_Mayen:": "\U0001f1f8\U0001f1ef", + ":flag_Sweden:": "\U0001f1f8\U0001f1ea", + ":flag_Switzerland:": "\U0001f1e8\U0001f1ed", + ":flag_Syria:": "\U0001f1f8\U0001f1fe", + ":flag_São_Tomé_&_Príncipe:": "\U0001f1f8\U0001f1f9", + ":flag_Taiwan:": "\U0001f1f9\U0001f1fc", + ":flag_Tajikistan:": "\U0001f1f9\U0001f1ef", + ":flag_Tanzania:": "\U0001f1f9\U0001f1ff", + ":flag_Thailand:": "\U0001f1f9\U0001f1ed", + ":flag_Timor-Leste:": "\U0001f1f9\U0001f1f1", + ":flag_Togo:": "\U0001f1f9\U0001f1ec", + ":flag_Tokelau:": "\U0001f1f9\U0001f1f0", + ":flag_Tonga:": "\U0001f1f9\U0001f1f4", + ":flag_Trinidad_&_Tobago:": "\U0001f1f9\U0001f1f9", + ":flag_Tristan_da_Cunha:": "\U0001f1f9\U0001f1e6", + ":flag_Tunisia:": "\U0001f1f9\U0001f1f3", + ":flag_Turkey:": "\U0001f1f9\U0001f1f7", + ":flag_Turkmenistan:": "\U0001f1f9\U0001f1f2", + ":flag_Turks_&_Caicos_Islands:": "\U0001f1f9\U0001f1e8", + ":flag_Tuvalu:": "\U0001f1f9\U0001f1fb", + ":flag_U.S._Outlying_Islands:": "\U0001f1fa\U0001f1f2", + ":flag_U.S._Virgin_Islands:": "\U0001f1fb\U0001f1ee", + ":flag_Uganda:": "\U0001f1fa\U0001f1ec", + ":flag_Ukraine:": "\U0001f1fa\U0001f1e6", + ":flag_United_Arab_Emirates:": "\U0001f1e6\U0001f1ea", + ":flag_United_Kingdom:": "\U0001f1ec\U0001f1e7", + ":flag_United_Nations:": "\U0001f1fa\U0001f1f3", + ":flag_United_States:": "\U0001f1fa\U0001f1f8", + ":flag_Uruguay:": "\U0001f1fa\U0001f1fe", + ":flag_Uzbekistan:": "\U0001f1fa\U0001f1ff", + ":flag_Vanuatu:": "\U0001f1fb\U0001f1fa", + ":flag_Vatican_City:": "\U0001f1fb\U0001f1e6", + ":flag_Venezuela:": "\U0001f1fb\U0001f1ea", + ":flag_Vietnam:": "\U0001f1fb\U0001f1f3", + ":flag_Wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", + ":flag_Wallis_&_Futuna:": "\U0001f1fc\U0001f1eb", + ":flag_Western_Sahara:": "\U0001f1ea\U0001f1ed", + ":flag_Yemen:": "\U0001f1fe\U0001f1ea", + ":flag_Zambia:": "\U0001f1ff\U0001f1f2", + ":flag_Zimbabwe:": "\U0001f1ff\U0001f1fc", + ":flag_ac:": "\U0001f1e6\U0001f1e8", + ":flag_ad:": "\U0001f1e6\U0001f1e9", + ":flag_ae:": "\U0001f1e6\U0001f1ea", + ":flag_af:": "\U0001f1e6\U0001f1eb", + ":flag_ag:": "\U0001f1e6\U0001f1ec", + ":flag_ai:": "\U0001f1e6\U0001f1ee", + ":flag_al:": "\U0001f1e6\U0001f1f1", + ":flag_am:": "\U0001f1e6\U0001f1f2", + ":flag_ao:": "\U0001f1e6\U0001f1f4", + ":flag_aq:": "\U0001f1e6\U0001f1f6", + ":flag_ar:": "\U0001f1e6\U0001f1f7", + ":flag_as:": "\U0001f1e6\U0001f1f8", + ":flag_at:": "\U0001f1e6\U0001f1f9", + ":flag_au:": "\U0001f1e6\U0001f1fa", + ":flag_aw:": "\U0001f1e6\U0001f1fc", + ":flag_ax:": "\U0001f1e6\U0001f1fd", + ":flag_az:": "\U0001f1e6\U0001f1ff", + ":flag_ba:": "\U0001f1e7\U0001f1e6", + ":flag_bb:": "\U0001f1e7\U0001f1e7", + ":flag_bd:": "\U0001f1e7\U0001f1e9", + ":flag_be:": "\U0001f1e7\U0001f1ea", + ":flag_bf:": "\U0001f1e7\U0001f1eb", + ":flag_bg:": "\U0001f1e7\U0001f1ec", + ":flag_bh:": "\U0001f1e7\U0001f1ed", + ":flag_bi:": "\U0001f1e7\U0001f1ee", + ":flag_bj:": "\U0001f1e7\U0001f1ef", + ":flag_bl:": "\U0001f1e7\U0001f1f1", + ":flag_black:": "\U0001f3f4", + ":flag_bm:": "\U0001f1e7\U0001f1f2", + ":flag_bn:": "\U0001f1e7\U0001f1f3", + ":flag_bo:": "\U0001f1e7\U0001f1f4", + ":flag_bq:": "\U0001f1e7\U0001f1f6", + ":flag_br:": "\U0001f1e7\U0001f1f7", + ":flag_bs:": "\U0001f1e7\U0001f1f8", + ":flag_bt:": "\U0001f1e7\U0001f1f9", + ":flag_bv:": "\U0001f1e7\U0001f1fb", + ":flag_bw:": "\U0001f1e7\U0001f1fc", + ":flag_by:": "\U0001f1e7\U0001f1fe", + ":flag_bz:": "\U0001f1e7\U0001f1ff", + ":flag_ca:": "\U0001f1e8\U0001f1e6", + ":flag_cc:": "\U0001f1e8\U0001f1e8", + ":flag_cd:": "\U0001f1e8\U0001f1e9", + ":flag_cf:": "\U0001f1e8\U0001f1eb", + ":flag_cg:": "\U0001f1e8\U0001f1ec", + ":flag_ch:": "\U0001f1e8\U0001f1ed", + ":flag_ci:": "\U0001f1e8\U0001f1ee", + ":flag_ck:": "\U0001f1e8\U0001f1f0", + ":flag_cl:": "\U0001f1e8\U0001f1f1", + ":flag_cm:": "\U0001f1e8\U0001f1f2", + ":flag_cn:": "\U0001f1e8\U0001f1f3", + ":flag_co:": "\U0001f1e8\U0001f1f4", + ":flag_cp:": "\U0001f1e8\U0001f1f5", + ":flag_cr:": "\U0001f1e8\U0001f1f7", + ":flag_cu:": "\U0001f1e8\U0001f1fa", + ":flag_cv:": "\U0001f1e8\U0001f1fb", + ":flag_cw:": "\U0001f1e8\U0001f1fc", + ":flag_cx:": "\U0001f1e8\U0001f1fd", + ":flag_cy:": "\U0001f1e8\U0001f1fe", + ":flag_cz:": "\U0001f1e8\U0001f1ff", + ":flag_de:": "\U0001f1e9\U0001f1ea", + ":flag_dg:": "\U0001f1e9\U0001f1ec", + ":flag_dj:": "\U0001f1e9\U0001f1ef", + ":flag_dk:": "\U0001f1e9\U0001f1f0", + ":flag_dm:": "\U0001f1e9\U0001f1f2", + ":flag_do:": "\U0001f1e9\U0001f1f4", + ":flag_dz:": "\U0001f1e9\U0001f1ff", + ":flag_ea:": "\U0001f1ea\U0001f1e6", + ":flag_ec:": "\U0001f1ea\U0001f1e8", + ":flag_ee:": "\U0001f1ea\U0001f1ea", + ":flag_eg:": "\U0001f1ea\U0001f1ec", + ":flag_eh:": "\U0001f1ea\U0001f1ed", + ":flag_er:": "\U0001f1ea\U0001f1f7", + ":flag_es:": "\U0001f1ea\U0001f1f8", + ":flag_et:": "\U0001f1ea\U0001f1f9", + ":flag_eu:": "\U0001f1ea\U0001f1fa", + ":flag_fi:": "\U0001f1eb\U0001f1ee", + ":flag_fj:": "\U0001f1eb\U0001f1ef", + ":flag_fk:": "\U0001f1eb\U0001f1f0", + ":flag_fm:": "\U0001f1eb\U0001f1f2", + ":flag_fo:": "\U0001f1eb\U0001f1f4", + ":flag_fr:": "\U0001f1eb\U0001f1f7", + ":flag_ga:": "\U0001f1ec\U0001f1e6", + ":flag_gb:": "\U0001f1ec\U0001f1e7", + ":flag_gd:": "\U0001f1ec\U0001f1e9", + ":flag_ge:": "\U0001f1ec\U0001f1ea", + ":flag_gf:": "\U0001f1ec\U0001f1eb", + ":flag_gg:": "\U0001f1ec\U0001f1ec", + ":flag_gh:": "\U0001f1ec\U0001f1ed", + ":flag_gi:": "\U0001f1ec\U0001f1ee", + ":flag_gl:": "\U0001f1ec\U0001f1f1", + ":flag_gm:": "\U0001f1ec\U0001f1f2", + ":flag_gn:": "\U0001f1ec\U0001f1f3", + ":flag_gp:": "\U0001f1ec\U0001f1f5", + ":flag_gq:": "\U0001f1ec\U0001f1f6", + ":flag_gr:": "\U0001f1ec\U0001f1f7", + ":flag_gs:": "\U0001f1ec\U0001f1f8", + ":flag_gt:": "\U0001f1ec\U0001f1f9", + ":flag_gu:": "\U0001f1ec\U0001f1fa", + ":flag_gw:": "\U0001f1ec\U0001f1fc", + ":flag_gy:": "\U0001f1ec\U0001f1fe", + ":flag_hk:": "\U0001f1ed\U0001f1f0", + ":flag_hm:": "\U0001f1ed\U0001f1f2", + ":flag_hn:": "\U0001f1ed\U0001f1f3", + ":flag_hr:": "\U0001f1ed\U0001f1f7", + ":flag_ht:": "\U0001f1ed\U0001f1f9", + ":flag_hu:": "\U0001f1ed\U0001f1fa", + ":flag_ic:": "\U0001f1ee\U0001f1e8", + ":flag_id:": "\U0001f1ee\U0001f1e9", + ":flag_ie:": "\U0001f1ee\U0001f1ea", + ":flag_il:": "\U0001f1ee\U0001f1f1", + ":flag_im:": "\U0001f1ee\U0001f1f2", + ":flag_in:": "\U0001f1ee\U0001f1f3", + ":flag_in_hole:": "\u26f3", + ":flag_io:": "\U0001f1ee\U0001f1f4", + ":flag_iq:": "\U0001f1ee\U0001f1f6", + ":flag_ir:": "\U0001f1ee\U0001f1f7", + ":flag_is:": "\U0001f1ee\U0001f1f8", + ":flag_it:": "\U0001f1ee\U0001f1f9", + ":flag_je:": "\U0001f1ef\U0001f1ea", + ":flag_jm:": "\U0001f1ef\U0001f1f2", + ":flag_jo:": "\U0001f1ef\U0001f1f4", + ":flag_jp:": "\U0001f1ef\U0001f1f5", + ":flag_ke:": "\U0001f1f0\U0001f1ea", + ":flag_kg:": "\U0001f1f0\U0001f1ec", + ":flag_kh:": "\U0001f1f0\U0001f1ed", + ":flag_ki:": "\U0001f1f0\U0001f1ee", + ":flag_km:": "\U0001f1f0\U0001f1f2", + ":flag_kn:": "\U0001f1f0\U0001f1f3", + ":flag_kp:": "\U0001f1f0\U0001f1f5", + ":flag_kr:": "\U0001f1f0\U0001f1f7", + ":flag_kw:": "\U0001f1f0\U0001f1fc", + ":flag_ky:": "\U0001f1f0\U0001f1fe", + ":flag_kz:": "\U0001f1f0\U0001f1ff", + ":flag_la:": "\U0001f1f1\U0001f1e6", + ":flag_lb:": "\U0001f1f1\U0001f1e7", + ":flag_lc:": "\U0001f1f1\U0001f1e8", + ":flag_li:": "\U0001f1f1\U0001f1ee", + ":flag_lk:": "\U0001f1f1\U0001f1f0", + ":flag_lr:": "\U0001f1f1\U0001f1f7", + ":flag_ls:": "\U0001f1f1\U0001f1f8", + ":flag_lt:": "\U0001f1f1\U0001f1f9", + ":flag_lu:": "\U0001f1f1\U0001f1fa", + ":flag_lv:": "\U0001f1f1\U0001f1fb", + ":flag_ly:": "\U0001f1f1\U0001f1fe", + ":flag_ma:": "\U0001f1f2\U0001f1e6", + ":flag_mc:": "\U0001f1f2\U0001f1e8", + ":flag_md:": "\U0001f1f2\U0001f1e9", + ":flag_me:": "\U0001f1f2\U0001f1ea", + ":flag_mf:": "\U0001f1f2\U0001f1eb", + ":flag_mg:": "\U0001f1f2\U0001f1ec", + ":flag_mh:": "\U0001f1f2\U0001f1ed", + ":flag_mk:": "\U0001f1f2\U0001f1f0", + ":flag_ml:": "\U0001f1f2\U0001f1f1", + ":flag_mm:": "\U0001f1f2\U0001f1f2", + ":flag_mn:": "\U0001f1f2\U0001f1f3", + ":flag_mo:": "\U0001f1f2\U0001f1f4", + ":flag_mp:": "\U0001f1f2\U0001f1f5", + ":flag_mq:": "\U0001f1f2\U0001f1f6", + ":flag_mr:": "\U0001f1f2\U0001f1f7", + ":flag_ms:": "\U0001f1f2\U0001f1f8", + ":flag_mt:": "\U0001f1f2\U0001f1f9", + ":flag_mu:": "\U0001f1f2\U0001f1fa", + ":flag_mv:": "\U0001f1f2\U0001f1fb", + ":flag_mw:": "\U0001f1f2\U0001f1fc", + ":flag_mx:": "\U0001f1f2\U0001f1fd", + ":flag_my:": "\U0001f1f2\U0001f1fe", + ":flag_mz:": "\U0001f1f2\U0001f1ff", + ":flag_na:": "\U0001f1f3\U0001f1e6", + ":flag_nc:": "\U0001f1f3\U0001f1e8", + ":flag_ne:": "\U0001f1f3\U0001f1ea", + ":flag_nf:": "\U0001f1f3\U0001f1eb", + ":flag_ng:": "\U0001f1f3\U0001f1ec", + ":flag_ni:": "\U0001f1f3\U0001f1ee", + ":flag_nl:": "\U0001f1f3\U0001f1f1", + ":flag_no:": "\U0001f1f3\U0001f1f4", + ":flag_np:": "\U0001f1f3\U0001f1f5", + ":flag_nr:": "\U0001f1f3\U0001f1f7", + ":flag_nu:": "\U0001f1f3\U0001f1fa", + ":flag_nz:": "\U0001f1f3\U0001f1ff", + ":flag_om:": "\U0001f1f4\U0001f1f2", + ":flag_pa:": "\U0001f1f5\U0001f1e6", + ":flag_pe:": "\U0001f1f5\U0001f1ea", + ":flag_pf:": "\U0001f1f5\U0001f1eb", + ":flag_pg:": "\U0001f1f5\U0001f1ec", + ":flag_ph:": "\U0001f1f5\U0001f1ed", + ":flag_pk:": "\U0001f1f5\U0001f1f0", + ":flag_pl:": "\U0001f1f5\U0001f1f1", + ":flag_pm:": "\U0001f1f5\U0001f1f2", + ":flag_pn:": "\U0001f1f5\U0001f1f3", + ":flag_pr:": "\U0001f1f5\U0001f1f7", + ":flag_ps:": "\U0001f1f5\U0001f1f8", + ":flag_pt:": "\U0001f1f5\U0001f1f9", + ":flag_pw:": "\U0001f1f5\U0001f1fc", + ":flag_py:": "\U0001f1f5\U0001f1fe", + ":flag_qa:": "\U0001f1f6\U0001f1e6", + ":flag_re:": "\U0001f1f7\U0001f1ea", + ":flag_ro:": "\U0001f1f7\U0001f1f4", + ":flag_rs:": "\U0001f1f7\U0001f1f8", + ":flag_ru:": "\U0001f1f7\U0001f1fa", + ":flag_rw:": "\U0001f1f7\U0001f1fc", + ":flag_sa:": "\U0001f1f8\U0001f1e6", + ":flag_sb:": "\U0001f1f8\U0001f1e7", + ":flag_sc:": "\U0001f1f8\U0001f1e8", + ":flag_sd:": "\U0001f1f8\U0001f1e9", + ":flag_se:": "\U0001f1f8\U0001f1ea", + ":flag_sg:": "\U0001f1f8\U0001f1ec", + ":flag_sh:": "\U0001f1f8\U0001f1ed", + ":flag_si:": "\U0001f1f8\U0001f1ee", + ":flag_sj:": "\U0001f1f8\U0001f1ef", + ":flag_sk:": "\U0001f1f8\U0001f1f0", + ":flag_sl:": "\U0001f1f8\U0001f1f1", + ":flag_sm:": "\U0001f1f8\U0001f1f2", + ":flag_sn:": "\U0001f1f8\U0001f1f3", + ":flag_so:": "\U0001f1f8\U0001f1f4", + ":flag_sr:": "\U0001f1f8\U0001f1f7", + ":flag_ss:": "\U0001f1f8\U0001f1f8", + ":flag_st:": "\U0001f1f8\U0001f1f9", + ":flag_sv:": "\U0001f1f8\U0001f1fb", + ":flag_sx:": "\U0001f1f8\U0001f1fd", + ":flag_sy:": "\U0001f1f8\U0001f1fe", + ":flag_sz:": "\U0001f1f8\U0001f1ff", + ":flag_ta:": "\U0001f1f9\U0001f1e6", + ":flag_tc:": "\U0001f1f9\U0001f1e8", + ":flag_td:": "\U0001f1f9\U0001f1e9", + ":flag_tf:": "\U0001f1f9\U0001f1eb", + ":flag_tg:": "\U0001f1f9\U0001f1ec", + ":flag_th:": "\U0001f1f9\U0001f1ed", + ":flag_tj:": "\U0001f1f9\U0001f1ef", + ":flag_tk:": "\U0001f1f9\U0001f1f0", + ":flag_tl:": "\U0001f1f9\U0001f1f1", + ":flag_tm:": "\U0001f1f9\U0001f1f2", + ":flag_tn:": "\U0001f1f9\U0001f1f3", + ":flag_to:": "\U0001f1f9\U0001f1f4", + ":flag_tr:": "\U0001f1f9\U0001f1f7", + ":flag_tt:": "\U0001f1f9\U0001f1f9", + ":flag_tv:": "\U0001f1f9\U0001f1fb", + ":flag_tw:": "\U0001f1f9\U0001f1fc", + ":flag_tz:": "\U0001f1f9\U0001f1ff", + ":flag_ua:": "\U0001f1fa\U0001f1e6", + ":flag_ug:": "\U0001f1fa\U0001f1ec", + ":flag_um:": "\U0001f1fa\U0001f1f2", + ":flag_us:": "\U0001f1fa\U0001f1f8", + ":flag_uy:": "\U0001f1fa\U0001f1fe", + ":flag_uz:": "\U0001f1fa\U0001f1ff", + ":flag_va:": "\U0001f1fb\U0001f1e6", + ":flag_vc:": "\U0001f1fb\U0001f1e8", + ":flag_ve:": "\U0001f1fb\U0001f1ea", + ":flag_vg:": "\U0001f1fb\U0001f1ec", + ":flag_vi:": "\U0001f1fb\U0001f1ee", + ":flag_vn:": "\U0001f1fb\U0001f1f3", + ":flag_vu:": "\U0001f1fb\U0001f1fa", + ":flag_wf:": "\U0001f1fc\U0001f1eb", + ":flag_white:": "\U0001f3f3", + ":flag_ws:": "\U0001f1fc\U0001f1f8", + ":flag_xk:": "\U0001f1fd\U0001f1f0", + ":flag_ye:": "\U0001f1fe\U0001f1ea", + ":flag_yt:": "\U0001f1fe\U0001f1f9", + ":flag_za:": "\U0001f1ff\U0001f1e6", + ":flag_zm:": "\U0001f1ff\U0001f1f2", + ":flag_zw:": "\U0001f1ff\U0001f1fc", + ":flag_Åland_Islands:": "\U0001f1e6\U0001f1fd", + ":flags:": "\U0001f38f", + ":flamingo:": "\U0001f9a9", + ":flashlight:": "\U0001f526", + ":flat_shoe:": "\U0001f97f", + ":flatbread:": "\U0001fad3", + ":fleur-de-lis:": "\u269c", + ":fleur_de_lis:": "\u269c\ufe0f", + ":flexed_biceps:": "\U0001f4aa", + ":flight_arrival:": "\U0001f6ec", + ":flight_departure:": "\U0001f6eb", + ":flipper:": "\U0001f42c", + ":floppy_disk:": "\U0001f4be", + ":flower_playing_cards:": "\U0001f3b4", + ":flushed:": "\U0001f633", + ":flushed_face:": "\U0001f633", + ":fly:": "\U0001fab0", + ":flying_disc:": "\U0001f94f", + ":flying_saucer:": "\U0001f6f8", + ":fog:": "\U0001f32b\ufe0f", + ":foggy:": "\U0001f301", + ":folded_hands:": "\U0001f64f", + ":fondue:": "\U0001fad5", + ":foot:": "\U0001f9b6", + ":football:": "\U0001f3c8", + ":footprints:": "\U0001f463", + ":fork_and_knife:": "\U0001f374", + ":fork_and_knife_with_plate:": "\U0001f37d", + ":fork_knife_plate:": "\U0001f37d", + ":fortune_cookie:": "\U0001f960", + ":fountain:": "\u26f2", + ":fountain_pen:": "\U0001f58b", + ":four:": "4\ufe0f\u20e3", + ":four-thirty:": "\U0001f55f", + ":four_leaf_clover:": "\U0001f340", + ":four_o’clock:": "\U0001f553", + ":fox:": "\U0001f98a", + ":fox_face:": "\U0001f98a", + ":fr:": "\U0001f1eb\U0001f1f7", + ":frame_photo:": "\U0001f5bc", + ":frame_with_picture:": "\U0001f5bc\ufe0f", + ":framed_picture:": "\U0001f5bc", + ":free:": "\U0001f193", + ":french_bread:": "\U0001f956", + ":french_fries:": "\U0001f35f", + ":french_guiana:": "\U0001f1ec\U0001f1eb", + ":french_polynesia:": "\U0001f1f5\U0001f1eb", + ":french_southern_territories:": "\U0001f1f9\U0001f1eb", + ":fried_egg:": "\U0001f373", + ":fried_shrimp:": "\U0001f364", + ":fries:": "\U0001f35f", + ":frog:": "\U0001f438", + ":front-facing_baby_chick:": "\U0001f425", + ":frowning:": "\U0001f626", + ":frowning2:": "\u2639", + ":frowning_face:": "\u2639", + ":frowning_face_with_open_mouth:": "\U0001f626", + ":frowning_man:": "\U0001f64d\u200d\u2642\ufe0f", + ":frowning_person:": "\U0001f64d", + ":frowning_woman:": "\U0001f64d\u200d\u2640\ufe0f", + ":fu:": "\U0001f595", + ":fuel_pump:": "\u26fd", + ":fuelpump:": "\u26fd", + ":full_moon:": "\U0001f315", + ":full_moon_face:": "\U0001f31d", + ":full_moon_with_face:": "\U0001f31d", + ":funeral_urn:": "\u26b1\ufe0f", + ":gabon:": "\U0001f1ec\U0001f1e6", + ":gambia:": "\U0001f1ec\U0001f1f2", + ":game_die:": "\U0001f3b2", + ":garlic:": "\U0001f9c4", + ":gb:": "\U0001f1ec\U0001f1e7", + ":gear:": "\u2699\ufe0f", + ":gem:": "\U0001f48e", + ":gem_stone:": "\U0001f48e", + ":gemini:": "\u264a", + ":genie:": "\U0001f9de\u200d\u2642\ufe0f", + ":genie_man:": "\U0001f9de\u200d\u2642\ufe0f", + ":genie_woman:": "\U0001f9de\u200d\u2640\ufe0f", + ":georgia:": "\U0001f1ec\U0001f1ea", + ":ghana:": "\U0001f1ec\U0001f1ed", + ":ghost:": "\U0001f47b", + ":gibraltar:": "\U0001f1ec\U0001f1ee", + ":gift:": "\U0001f381", + ":gift_heart:": "\U0001f49d", + ":giraffe:": "\U0001f992", + ":giraffe_face:": "\U0001f992", + ":girl:": "\U0001f467", + ":girl_tone1:": "\U0001f467\U0001f3fb", + ":girl_tone2:": "\U0001f467\U0001f3fc", + ":girl_tone3:": "\U0001f467\U0001f3fd", + ":girl_tone4:": "\U0001f467\U0001f3fe", + ":girl_tone5:": "\U0001f467\U0001f3ff", + ":glass_of_milk:": "\U0001f95b", + ":glasses:": "\U0001f453", + ":globe_showing_Americas:": "\U0001f30e", + ":globe_showing_Asia-Australia:": "\U0001f30f", + ":globe_showing_Europe-Africa:": "\U0001f30d", + ":globe_with_meridians:": "\U0001f310", + ":gloves:": "\U0001f9e4", + ":glowing_star:": "\U0001f31f", + ":goal:": "\U0001f945", + ":goal_net:": "\U0001f945", + ":goat:": "\U0001f410", + ":goblin:": "\U0001f47a", + ":goggles:": "\U0001f97d", + ":golf:": "\u26f3", + ":golfer:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", + ":golfing:": "\U0001f3cc\ufe0f", + ":golfing_man:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", + ":golfing_woman:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", + ":gorilla:": "\U0001f98d", + ":graduation_cap:": "\U0001f393", + ":grapes:": "\U0001f347", + ":greece:": "\U0001f1ec\U0001f1f7", + ":green_apple:": "\U0001f34f", + ":green_book:": "\U0001f4d7", + ":green_circle:": "\U0001f7e2", + ":green_heart:": "\U0001f49a", + ":green_salad:": "\U0001f957", + ":green_square:": "\U0001f7e9", + ":greenland:": "\U0001f1ec\U0001f1f1", + ":grenada:": "\U0001f1ec\U0001f1e9", + ":grey_exclamation:": "\u2755", + ":grey_question:": "\u2754", + ":grimacing:": "\U0001f62c", + ":grimacing_face:": "\U0001f62c", + ":grin:": "\U0001f601", + ":grinning:": "\U0001f600", + ":grinning_cat:": "\U0001f63a", + ":grinning_cat_with_smiling_eyes:": "\U0001f638", + ":grinning_face:": "\U0001f600", + ":grinning_face_with_big_eyes:": "\U0001f603", + ":grinning_face_with_smiling_eyes:": "\U0001f604", + ":grinning_face_with_sweat:": "\U0001f605", + ":grinning_squinting_face:": "\U0001f606", + ":growing_heart:": "\U0001f497", + ":guadeloupe:": "\U0001f1ec\U0001f1f5", + ":guam:": "\U0001f1ec\U0001f1fa", + ":guard:": "\U0001f482", + ":guard_tone1:": "\U0001f482\U0001f3fb", + ":guard_tone2:": "\U0001f482\U0001f3fc", + ":guard_tone3:": "\U0001f482\U0001f3fd", + ":guard_tone4:": "\U0001f482\U0001f3fe", + ":guard_tone5:": "\U0001f482\U0001f3ff", + ":guardsman:": "\U0001f482\u200d\u2642\ufe0f", + ":guardswoman:": "\U0001f482\u200d\u2640\ufe0f", + ":guatemala:": "\U0001f1ec\U0001f1f9", + ":guernsey:": "\U0001f1ec\U0001f1ec", + ":guide_dog:": "\U0001f9ae", + ":guinea:": "\U0001f1ec\U0001f1f3", + ":guinea_bissau:": "\U0001f1ec\U0001f1fc", + ":guitar:": "\U0001f3b8", + ":gun:": "\U0001f52b", + ":guyana:": "\U0001f1ec\U0001f1fe", + ":haircut:": "\U0001f487\u200d\u2640\ufe0f", + ":haircut_man:": "\U0001f487\u200d\u2642\ufe0f", + ":haircut_woman:": "\U0001f487\u200d\u2640\ufe0f", + ":haiti:": "\U0001f1ed\U0001f1f9", + ":hamburger:": "\U0001f354", + ":hammer:": "\U0001f528", + ":hammer_and_pick:": "\u2692\ufe0f", + ":hammer_and_wrench:": "\U0001f6e0\ufe0f", + ":hammer_pick:": "\u2692", + ":hamster:": "\U0001f439", + ":hand:": "\u270b", + ":hand_over_mouth:": "\U0001f92d", + ":hand_splayed_tone1:": "\U0001f590\U0001f3fb", + ":hand_splayed_tone2:": "\U0001f590\U0001f3fc", + ":hand_splayed_tone3:": "\U0001f590\U0001f3fd", + ":hand_splayed_tone4:": "\U0001f590\U0001f3fe", + ":hand_splayed_tone5:": "\U0001f590\U0001f3ff", + ":hand_with_fingers_splayed:": "\U0001f590", + ":handbag:": "\U0001f45c", + ":handball:": "\U0001f93e", + ":handball_person:": "\U0001f93e", + ":handshake:": "\U0001f91d", + ":hankey:": "\U0001f4a9", + ":hash:": "#\ufe0f\u20e3", + ":hatched_chick:": "\U0001f425", + ":hatching_chick:": "\U0001f423", + ":head_bandage:": "\U0001f915", + ":headphone:": "\U0001f3a7", + ":headphones:": "\U0001f3a7", + ":headstone:": "\U0001faa6", + ":health_worker:": "\U0001f9d1\u200d\u2695\ufe0f", + ":hear-no-evil_monkey:": "\U0001f649", + ":hear_no_evil:": "\U0001f649", + ":heard_mcdonald_islands:": "\U0001f1ed\U0001f1f2", + ":heart:": "\u2764\ufe0f", + ":heart_decoration:": "\U0001f49f", + ":heart_exclamation:": "\u2763", + ":heart_eyes:": "\U0001f60d", + ":heart_eyes_cat:": "\U0001f63b", + ":heart_on_fire:": "\u2764\ufe0f\u200d\U0001f525", + ":heart_suit:": "\u2665", + ":heart_with_arrow:": "\U0001f498", + ":heart_with_ribbon:": "\U0001f49d", + ":heartbeat:": "\U0001f493", + ":heartpulse:": "\U0001f497", + ":hearts:": "\u2665\ufe0f", + ":heavy_check_mark:": "\u2714\ufe0f", + ":heavy_division_sign:": "\u2797", + ":heavy_dollar_sign:": "\U0001f4b2", + ":heavy_exclamation_mark:": "\u2757", + ":heavy_heart_exclamation:": "\u2763\ufe0f", + ":heavy_heart_exclamation_mark_ornament:": "\u2763\ufe0f", + ":heavy_minus_sign:": "\u2796", + ":heavy_multiplication_x:": "\u2716\ufe0f", + ":heavy_plus_sign:": "\u2795", + ":hedgehog:": "\U0001f994", + ":helicopter:": "\U0001f681", + ":helmet_with_cross:": "\u26d1", + ":helmet_with_white_cross:": "\u26d1\ufe0f", + ":herb:": "\U0001f33f", + ":hibiscus:": "\U0001f33a", + ":high-heeled_shoe:": "\U0001f460", + ":high-speed_train:": "\U0001f684", + ":high_brightness:": "\U0001f506", + ":high_heel:": "\U0001f460", + ":high_voltage:": "\u26a1", + ":hiking_boot:": "\U0001f97e", + ":hindu_temple:": "\U0001f6d5", + ":hippopotamus:": "\U0001f99b", + ":hocho:": "\U0001f52a", + ":hockey:": "\U0001f3d2", + ":hole:": "\U0001f573\ufe0f", + ":hollow_red_circle:": "\u2b55", + ":homes:": "\U0001f3d8", + ":honduras:": "\U0001f1ed\U0001f1f3", + ":honey_pot:": "\U0001f36f", + ":honeybee:": "\U0001f41d", + ":hong_kong:": "\U0001f1ed\U0001f1f0", + ":hook:": "\U0001fa9d", + ":horizontal_traffic_light:": "\U0001f6a5", + ":horse:": "\U0001f434", + ":horse_face:": "\U0001f434", + ":horse_racing:": "\U0001f3c7", + ":horse_racing_tone1:": "\U0001f3c7\U0001f3fb", + ":horse_racing_tone2:": "\U0001f3c7\U0001f3fc", + ":horse_racing_tone3:": "\U0001f3c7\U0001f3fd", + ":horse_racing_tone4:": "\U0001f3c7\U0001f3fe", + ":horse_racing_tone5:": "\U0001f3c7\U0001f3ff", + ":hospital:": "\U0001f3e5", + ":hot_beverage:": "\u2615", + ":hot_dog:": "\U0001f32d", + ":hot_face:": "\U0001f975", + ":hot_pepper:": "\U0001f336\ufe0f", + ":hot_springs:": "\u2668", + ":hotdog:": "\U0001f32d", + ":hotel:": "\U0001f3e8", + ":hotsprings:": "\u2668\ufe0f", + ":hourglass:": "\u231b", + ":hourglass_done:": "\u231b", + ":hourglass_flowing_sand:": "\u23f3", + ":hourglass_not_done:": "\u23f3", + ":house:": "\U0001f3e0", + ":house_abandoned:": "\U0001f3da", + ":house_buildings:": "\U0001f3d8\ufe0f", + ":house_with_garden:": "\U0001f3e1", + ":houses:": "\U0001f3d8", + ":hugging:": "\U0001f917", + ":hugging_face:": "\U0001f917", + ":hugs:": "\U0001f917", + ":hundred_points:": "\U0001f4af", + ":hungary:": "\U0001f1ed\U0001f1fa", + ":hushed:": "\U0001f62f", + ":hushed_face:": "\U0001f62f", + ":hut:": "\U0001f6d6", + ":i_love_you_hand_sign:": "\U0001f91f", + ":ice:": "\U0001f9ca", + ":ice_cream:": "\U0001f368", + ":ice_cube:": "\U0001f9ca", + ":ice_hockey:": "\U0001f3d2", + ":ice_hockey_stick_and_puck:": "\U0001f3d2", + ":ice_skate:": "\u26f8\ufe0f", + ":icecream:": "\U0001f366", + ":iceland:": "\U0001f1ee\U0001f1f8", + ":id:": "\U0001f194", + ":ideograph_advantage:": "\U0001f250", + ":imp:": "\U0001f47f", + ":inbox_tray:": "\U0001f4e5", + ":incoming_envelope:": "\U0001f4e8", + ":index_pointing_up:": "\u261d", + ":india:": "\U0001f1ee\U0001f1f3", + ":indonesia:": "\U0001f1ee\U0001f1e9", + ":infinity:": "\u267e\ufe0f", + ":information:": "\u2139", + ":information_desk_person:": "\U0001f481\u200d\u2640\ufe0f", + ":information_source:": "\u2139\ufe0f", + ":innocent:": "\U0001f607", + ":input_latin_letters:": "\U0001f524", + ":input_latin_lowercase:": "\U0001f521", + ":input_latin_uppercase:": "\U0001f520", + ":input_numbers:": "\U0001f522", + ":input_symbols:": "\U0001f523", + ":interrobang:": "\u2049\ufe0f", + ":iphone:": "\U0001f4f1", + ":iran:": "\U0001f1ee\U0001f1f7", + ":iraq:": "\U0001f1ee\U0001f1f6", + ":ireland:": "\U0001f1ee\U0001f1ea", + ":island:": "\U0001f3dd", + ":isle_of_man:": "\U0001f1ee\U0001f1f2", + ":israel:": "\U0001f1ee\U0001f1f1", + ":it:": "\U0001f1ee\U0001f1f9", + ":izakaya_lantern:": "\U0001f3ee", + ":jack-o-lantern:": "\U0001f383", + ":jack_o_lantern:": "\U0001f383", + ":jamaica:": "\U0001f1ef\U0001f1f2", + ":japan:": "\U0001f5fe", + ":japanese_castle:": "\U0001f3ef", + ":japanese_goblin:": "\U0001f47a", + ":japanese_ogre:": "\U0001f479", + ":jeans:": "\U0001f456", + ":jersey:": "\U0001f1ef\U0001f1ea", + ":jigsaw:": "\U0001f9e9", + ":joker:": "\U0001f0cf", + ":jordan:": "\U0001f1ef\U0001f1f4", + ":joy:": "\U0001f602", + ":joy_cat:": "\U0001f639", + ":joystick:": "\U0001f579\ufe0f", + ":jp:": "\U0001f1ef\U0001f1f5", + ":judge:": "\U0001f9d1\u200d\u2696\ufe0f", + ":juggling:": "\U0001f939", + ":juggling_person:": "\U0001f939", + ":kaaba:": "\U0001f54b", + ":kangaroo:": "\U0001f998", + ":kazakhstan:": "\U0001f1f0\U0001f1ff", + ":kenya:": "\U0001f1f0\U0001f1ea", + ":key:": "\U0001f511", + ":key2:": "\U0001f5dd", + ":keyboard:": "\u2328\ufe0f", + ":keycap_#:": "#\ufe0f\u20e3", + ":keycap_*:": "*\ufe0f\u20e3", + ":keycap_0:": "0\ufe0f\u20e3", + ":keycap_1:": "1\ufe0f\u20e3", + ":keycap_10:": "\U0001f51f", + ":keycap_2:": "2\ufe0f\u20e3", + ":keycap_3:": "3\ufe0f\u20e3", + ":keycap_4:": "4\ufe0f\u20e3", + ":keycap_5:": "5\ufe0f\u20e3", + ":keycap_6:": "6\ufe0f\u20e3", + ":keycap_7:": "7\ufe0f\u20e3", + ":keycap_8:": "8\ufe0f\u20e3", + ":keycap_9:": "9\ufe0f\u20e3", + ":keycap_star:": "*\ufe0f\u20e3", + ":keycap_ten:": "\U0001f51f", + ":kick_scooter:": "\U0001f6f4", + ":kimono:": "\U0001f458", + ":kiribati:": "\U0001f1f0\U0001f1ee", + ":kiss:": "\U0001f48b", + ":kiss_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":kiss_mark:": "\U0001f48b", + ":kiss_mm:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":kiss_woman_man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":kiss_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", + ":kiss_ww:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", + ":kissing:": "\U0001f617", + ":kissing_cat:": "\U0001f63d", + ":kissing_closed_eyes:": "\U0001f61a", + ":kissing_face:": "\U0001f617", + ":kissing_face_with_closed_eyes:": "\U0001f61a", + ":kissing_face_with_smiling_eyes:": "\U0001f619", + ":kissing_heart:": "\U0001f618", + ":kissing_smiling_eyes:": "\U0001f619", + ":kitchen_knife:": "\U0001f52a", + ":kite:": "\U0001fa81", + ":kiwi:": "\U0001f95d", + ":kiwi_fruit:": "\U0001f95d", + ":kiwifruit:": "\U0001f95d", + ":kneeling_man:": "\U0001f9ce\u200d\u2642\ufe0f", + ":kneeling_person:": "\U0001f9ce", + ":kneeling_woman:": "\U0001f9ce\u200d\u2640\ufe0f", + ":knife:": "\U0001f52a", + ":knife_fork_plate:": "\U0001f37d\ufe0f", + ":knocked-out_face:": "\U0001f635", + ":knot:": "\U0001faa2", + ":koala:": "\U0001f428", + ":koko:": "\U0001f201", + ":kosovo:": "\U0001f1fd\U0001f1f0", + ":kr:": "\U0001f1f0\U0001f1f7", + ":kuwait:": "\U0001f1f0\U0001f1fc", + ":kyrgyzstan:": "\U0001f1f0\U0001f1ec", + ":lab_coat:": "\U0001f97c", + ":label:": "\U0001f3f7\ufe0f", + ":lacrosse:": "\U0001f94d", + ":ladder:": "\U0001fa9c", + ":lady_beetle:": "\U0001f41e", + ":ladybug:": "\U0001f41e", + ":lantern:": "\U0001f3ee", + ":laos:": "\U0001f1f1\U0001f1e6", + ":laptop:": "\U0001f4bb", + ":large_blue_circle:": "\U0001f535", + ":large_blue_diamond:": "\U0001f537", + ":large_blue_square:": "\U0001f7e6", + ":large_brown_circle:": "\U0001f7e4", + ":large_brown_square:": "\U0001f7eb", + ":large_green_circle:": "\U0001f7e2", + ":large_green_square:": "\U0001f7e9", + ":large_orange_circle:": "\U0001f7e0", + ":large_orange_diamond:": "\U0001f536", + ":large_orange_square:": "\U0001f7e7", + ":large_purple_circle:": "\U0001f7e3", + ":large_purple_square:": "\U0001f7ea", + ":large_red_square:": "\U0001f7e5", + ":large_yellow_circle:": "\U0001f7e1", + ":large_yellow_square:": "\U0001f7e8", + ":last_quarter_moon:": "\U0001f317", + ":last_quarter_moon_face:": "\U0001f31c", + ":last_quarter_moon_with_face:": "\U0001f31c", + ":last_track_button:": "\u23ee", + ":latin_cross:": "\u271d\ufe0f", + ":latvia:": "\U0001f1f1\U0001f1fb", + ":laughing:": "\U0001f606", + ":leaf_fluttering_in_wind:": "\U0001f343", + ":leafy_green:": "\U0001f96c", + ":leaves:": "\U0001f343", + ":lebanon:": "\U0001f1f1\U0001f1e7", + ":ledger:": "\U0001f4d2", + ":left-facing_fist:": "\U0001f91b", + ":left-right_arrow:": "\u2194", + ":left_arrow:": "\u2b05", + ":left_arrow_curving_right:": "\u21aa", + ":left_facing_fist:": "\U0001f91b", + ":left_facing_fist_tone1:": "\U0001f91b\U0001f3fb", + ":left_facing_fist_tone2:": "\U0001f91b\U0001f3fc", + ":left_facing_fist_tone3:": "\U0001f91b\U0001f3fd", + ":left_facing_fist_tone4:": "\U0001f91b\U0001f3fe", + ":left_facing_fist_tone5:": "\U0001f91b\U0001f3ff", + ":left_luggage:": "\U0001f6c5", + ":left_right_arrow:": "\u2194\ufe0f", + ":left_speech_bubble:": "\U0001f5e8\ufe0f", + ":leftwards_arrow_with_hook:": "\u21a9\ufe0f", + ":leg:": "\U0001f9b5", + ":lemon:": "\U0001f34b", + ":leo:": "\u264c", + ":leopard:": "\U0001f406", + ":lesotho:": "\U0001f1f1\U0001f1f8", + ":level_slider:": "\U0001f39a\ufe0f", + ":liberia:": "\U0001f1f1\U0001f1f7", + ":libra:": "\u264e", + ":libya:": "\U0001f1f1\U0001f1fe", + ":liechtenstein:": "\U0001f1f1\U0001f1ee", + ":light_bulb:": "\U0001f4a1", + ":light_rail:": "\U0001f688", + ":lightning:": "\U0001f329\ufe0f", + ":link:": "\U0001f517", + ":linked_paperclips:": "\U0001f587\ufe0f", + ":lion:": "\U0001f981", + ":lion_face:": "\U0001f981", + ":lips:": "\U0001f444", + ":lipstick:": "\U0001f484", + ":lithuania:": "\U0001f1f1\U0001f1f9", + ":litter_in_bin_sign:": "\U0001f6ae", + ":lizard:": "\U0001f98e", + ":llama:": "\U0001f999", + ":lobster:": "\U0001f99e", + ":lock:": "\U0001f512", + ":lock_with_ink_pen:": "\U0001f50f", + ":locked:": "\U0001f512", + ":locked_with_key:": "\U0001f510", + ":locked_with_pen:": "\U0001f50f", + ":locomotive:": "\U0001f682", + ":lollipop:": "\U0001f36d", + ":long_drum:": "\U0001fa98", + ":loop:": "\u27bf", + ":lotion_bottle:": "\U0001f9f4", + ":lotus_position:": "\U0001f9d8", + ":lotus_position_man:": "\U0001f9d8\u200d\u2642\ufe0f", + ":lotus_position_woman:": "\U0001f9d8\u200d\u2640\ufe0f", + ":loud_sound:": "\U0001f50a", + ":loudly_crying_face:": "\U0001f62d", + ":loudspeaker:": "\U0001f4e2", + ":love-you_gesture:": "\U0001f91f", + ":love_hotel:": "\U0001f3e9", + ":love_letter:": "\U0001f48c", + ":love_you_gesture:": "\U0001f91f", + ":love_you_gesture_tone1:": "\U0001f91f\U0001f3fb", + ":love_you_gesture_tone2:": "\U0001f91f\U0001f3fc", + ":love_you_gesture_tone3:": "\U0001f91f\U0001f3fd", + ":love_you_gesture_tone4:": "\U0001f91f\U0001f3fe", + ":love_you_gesture_tone5:": "\U0001f91f\U0001f3ff", + ":low_brightness:": "\U0001f505", + ":lower_left_ballpoint_pen:": "\U0001f58a\ufe0f", + ":lower_left_crayon:": "\U0001f58d\ufe0f", + ":lower_left_fountain_pen:": "\U0001f58b\ufe0f", + ":lower_left_paintbrush:": "\U0001f58c\ufe0f", + ":luggage:": "\U0001f9f3", + ":lungs:": "\U0001fac1", + ":luxembourg:": "\U0001f1f1\U0001f1fa", + ":lying_face:": "\U0001f925", + ":m:": "\u24dc\ufe0f", + ":macau:": "\U0001f1f2\U0001f1f4", + ":macedonia:": "\U0001f1f2\U0001f1f0", + ":madagascar:": "\U0001f1f2\U0001f1ec", + ":mag:": "\U0001f50d", + ":mag_right:": "\U0001f50e", + ":mage:": "\U0001f9d9\u200d\u2640\ufe0f", + ":mage_man:": "\U0001f9d9\u200d\u2642\ufe0f", + ":mage_tone1:": "\U0001f9d9\U0001f3fb", + ":mage_tone2:": "\U0001f9d9\U0001f3fc", + ":mage_tone3:": "\U0001f9d9\U0001f3fd", + ":mage_tone4:": "\U0001f9d9\U0001f3fe", + ":mage_tone5:": "\U0001f9d9\U0001f3ff", + ":mage_woman:": "\U0001f9d9\u200d\u2640\ufe0f", + ":magic_wand:": "\U0001fa84", + ":magnet:": "\U0001f9f2", + ":magnifying_glass_tilted_left:": "\U0001f50d", + ":magnifying_glass_tilted_right:": "\U0001f50e", + ":mahjong:": "\U0001f004", + ":mahjong_red_dragon:": "\U0001f004", + ":mailbox:": "\U0001f4eb", + ":mailbox_closed:": "\U0001f4ea", + ":mailbox_with_mail:": "\U0001f4ec", + ":mailbox_with_no_mail:": "\U0001f4ed", + ":malawi:": "\U0001f1f2\U0001f1fc", + ":malaysia:": "\U0001f1f2\U0001f1fe", + ":maldives:": "\U0001f1f2\U0001f1fb", + ":male-artist:": "\U0001f468\u200d\U0001f3a8", + ":male-astronaut:": "\U0001f468\u200d\U0001f680", + ":male-construction-worker:": "\U0001f477\u200d\u2642\ufe0f", + ":male-cook:": "\U0001f468\u200d\U0001f373", + ":male-detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", + ":male-doctor:": "\U0001f468\u200d\u2695\ufe0f", + ":male-factory-worker:": "\U0001f468\u200d\U0001f3ed", + ":male-farmer:": "\U0001f468\u200d\U0001f33e", + ":male-firefighter:": "\U0001f468\u200d\U0001f692", + ":male-guard:": "\U0001f482\u200d\u2642\ufe0f", + ":male-judge:": "\U0001f468\u200d\u2696\ufe0f", + ":male-mechanic:": "\U0001f468\u200d\U0001f527", + ":male-office-worker:": "\U0001f468\u200d\U0001f4bc", + ":male-pilot:": "\U0001f468\u200d\u2708\ufe0f", + ":male-police-officer:": "\U0001f46e\u200d\u2642\ufe0f", + ":male-scientist:": "\U0001f468\u200d\U0001f52c", + ":male-singer:": "\U0001f468\u200d\U0001f3a4", + ":male-student:": "\U0001f468\u200d\U0001f393", + ":male-teacher:": "\U0001f468\u200d\U0001f3eb", + ":male-technologist:": "\U0001f468\u200d\U0001f4bb", + ":male_detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", + ":male_elf:": "\U0001f9dd\u200d\u2642\ufe0f", + ":male_fairy:": "\U0001f9da\u200d\u2642\ufe0f", + ":male_genie:": "\U0001f9de\u200d\u2642\ufe0f", + ":male_mage:": "\U0001f9d9\u200d\u2642\ufe0f", + ":male_sign:": "\u2642\ufe0f", + ":male_superhero:": "\U0001f9b8\u200d\u2642\ufe0f", + ":male_supervillain:": "\U0001f9b9\u200d\u2642\ufe0f", + ":male_vampire:": "\U0001f9db\u200d\u2642\ufe0f", + ":male_zombie:": "\U0001f9df\u200d\u2642\ufe0f", + ":mali:": "\U0001f1f2\U0001f1f1", + ":malta:": "\U0001f1f2\U0001f1f9", + ":mammoth:": "\U0001f9a3", + ":man:": "\U0001f468", + ":man-biking:": "\U0001f6b4\u200d\u2642\ufe0f", + ":man-bouncing-ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", + ":man-bowing:": "\U0001f647\u200d\u2642\ufe0f", + ":man-boy:": "\U0001f468\u200d\U0001f466", + ":man-boy-boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466", + ":man-cartwheeling:": "\U0001f938\u200d\u2642\ufe0f", + ":man-facepalming:": "\U0001f926\u200d\u2642\ufe0f", + ":man-frowning:": "\U0001f64d\u200d\u2642\ufe0f", + ":man-gesturing-no:": "\U0001f645\u200d\u2642\ufe0f", + ":man-gesturing-ok:": "\U0001f646\u200d\u2642\ufe0f", + ":man-getting-haircut:": "\U0001f487\u200d\u2642\ufe0f", + ":man-getting-massage:": "\U0001f486\u200d\u2642\ufe0f", + ":man-girl:": "\U0001f468\u200d\U0001f467", + ":man-girl-boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466", + ":man-girl-girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467", + ":man-golfing:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", + ":man-heart-man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468", + ":man-juggling:": "\U0001f939\u200d\u2642\ufe0f", + ":man-kiss-man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":man-lifting-weights:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", + ":man-man-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466", + ":man-man-boy-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466", + ":man-man-girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467", + ":man-man-girl-boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466", + ":man-man-girl-girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467", + ":man-mountain-biking:": "\U0001f6b5\u200d\u2642\ufe0f", + ":man-playing-handball:": "\U0001f93e\u200d\u2642\ufe0f", + ":man-playing-water-polo:": "\U0001f93d\u200d\u2642\ufe0f", + ":man-pouting:": "\U0001f64e\u200d\u2642\ufe0f", + ":man-raising-hand:": "\U0001f64b\u200d\u2642\ufe0f", + ":man-rowing-boat:": "\U0001f6a3\u200d\u2642\ufe0f", + ":man-running:": "\U0001f3c3\u200d\u2642\ufe0f", + ":man-shrugging:": "\U0001f937\u200d\u2642\ufe0f", + ":man-surfing:": "\U0001f3c4\u200d\u2642\ufe0f", + ":man-swimming:": "\U0001f3ca\u200d\u2642\ufe0f", + ":man-tipping-hand:": "\U0001f481\u200d\u2642\ufe0f", + ":man-walking:": "\U0001f6b6\u200d\u2642\ufe0f", + ":man-wearing-turban:": "\U0001f473\u200d\u2642\ufe0f", + ":man-with-bunny-ears-partying:": "\U0001f46f\u200d\u2642\ufe0f", + ":man-woman-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466", + ":man-woman-boy-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":man-woman-girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467", + ":man-woman-girl-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":man-woman-girl-girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":man-wrestling:": "\U0001f93c\u200d\u2642\ufe0f", + ":man_and_woman_holding_hands:": "\U0001f46b", + ":man_artist:": "\U0001f468\u200d\U0001f3a8", + ":man_artist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3a8", + ":man_artist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3a8", + ":man_artist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3a8", + ":man_artist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3a8", + ":man_artist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3a8", + ":man_astronaut:": "\U0001f468\u200d\U0001f680", + ":man_astronaut_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f680", + ":man_astronaut_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f680", + ":man_astronaut_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f680", + ":man_astronaut_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f680", + ":man_astronaut_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f680", + ":man_bald:": "\U0001f468\u200d\U0001f9b2", + ":man_beard:": "\U0001f9d4\u200d\u2642\ufe0f", + ":man_biking:": "\U0001f6b4\u200d\u2642\ufe0f", + ":man_biking_tone1:": "\U0001f6b4\U0001f3fb\u200d\u2642\ufe0f", + ":man_biking_tone2:": "\U0001f6b4\U0001f3fc\u200d\u2642\ufe0f", + ":man_biking_tone3:": "\U0001f6b4\U0001f3fd\u200d\u2642\ufe0f", + ":man_biking_tone4:": "\U0001f6b4\U0001f3fe\u200d\u2642\ufe0f", + ":man_biking_tone5:": "\U0001f6b4\U0001f3ff\u200d\u2642\ufe0f", + ":man_blond_hair:": "\U0001f471\u200d\u2642\ufe0f", + ":man_bouncing_ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", + ":man_bouncing_ball_tone1:": "\u26f9\U0001f3fb\u200d\u2642\ufe0f", + ":man_bouncing_ball_tone2:": "\u26f9\U0001f3fc\u200d\u2642\ufe0f", + ":man_bouncing_ball_tone3:": "\u26f9\U0001f3fd\u200d\u2642\ufe0f", + ":man_bouncing_ball_tone4:": "\u26f9\U0001f3fe\u200d\u2642\ufe0f", + ":man_bouncing_ball_tone5:": "\u26f9\U0001f3ff\u200d\u2642\ufe0f", + ":man_bowing:": "\U0001f647\u200d\u2642\ufe0f", + ":man_bowing_tone1:": "\U0001f647\U0001f3fb\u200d\u2642\ufe0f", + ":man_bowing_tone2:": "\U0001f647\U0001f3fc\u200d\u2642\ufe0f", + ":man_bowing_tone3:": "\U0001f647\U0001f3fd\u200d\u2642\ufe0f", + ":man_bowing_tone4:": "\U0001f647\U0001f3fe\u200d\u2642\ufe0f", + ":man_bowing_tone5:": "\U0001f647\U0001f3ff\u200d\u2642\ufe0f", + ":man_cartwheeling:": "\U0001f938\u200d\u2642\ufe0f", + ":man_cartwheeling_tone1:": "\U0001f938\U0001f3fb\u200d\u2642\ufe0f", + ":man_cartwheeling_tone2:": "\U0001f938\U0001f3fc\u200d\u2642\ufe0f", + ":man_cartwheeling_tone3:": "\U0001f938\U0001f3fd\u200d\u2642\ufe0f", + ":man_cartwheeling_tone4:": "\U0001f938\U0001f3fe\u200d\u2642\ufe0f", + ":man_cartwheeling_tone5:": "\U0001f938\U0001f3ff\u200d\u2642\ufe0f", + ":man_climbing:": "\U0001f9d7\u200d\u2642\ufe0f", + ":man_climbing_tone1:": "\U0001f9d7\U0001f3fb\u200d\u2642\ufe0f", + ":man_climbing_tone2:": "\U0001f9d7\U0001f3fc\u200d\u2642\ufe0f", + ":man_climbing_tone3:": "\U0001f9d7\U0001f3fd\u200d\u2642\ufe0f", + ":man_climbing_tone4:": "\U0001f9d7\U0001f3fe\u200d\u2642\ufe0f", + ":man_climbing_tone5:": "\U0001f9d7\U0001f3ff\u200d\u2642\ufe0f", + ":man_construction_worker:": "\U0001f477\u200d\u2642\ufe0f", + ":man_construction_worker_tone1:": "\U0001f477\U0001f3fb\u200d\u2642\ufe0f", + ":man_construction_worker_tone2:": "\U0001f477\U0001f3fc\u200d\u2642\ufe0f", + ":man_construction_worker_tone3:": "\U0001f477\U0001f3fd\u200d\u2642\ufe0f", + ":man_construction_worker_tone4:": "\U0001f477\U0001f3fe\u200d\u2642\ufe0f", + ":man_construction_worker_tone5:": "\U0001f477\U0001f3ff\u200d\u2642\ufe0f", + ":man_cook:": "\U0001f468\u200d\U0001f373", + ":man_cook_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f373", + ":man_cook_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f373", + ":man_cook_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f373", + ":man_cook_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f373", + ":man_cook_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f373", + ":man_curly_hair:": "\U0001f468\u200d\U0001f9b1", + ":man_dancing:": "\U0001f57a", + ":man_dancing_tone1:": "\U0001f57a\U0001f3fb", + ":man_dancing_tone2:": "\U0001f57a\U0001f3fc", + ":man_dancing_tone3:": "\U0001f57a\U0001f3fd", + ":man_dancing_tone4:": "\U0001f57a\U0001f3fe", + ":man_dancing_tone5:": "\U0001f57a\U0001f3ff", + ":man_detective:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", + ":man_detective_tone1:": "\U0001f575\U0001f3fb\u200d\u2642\ufe0f", + ":man_detective_tone2:": "\U0001f575\U0001f3fc\u200d\u2642\ufe0f", + ":man_detective_tone3:": "\U0001f575\U0001f3fd\u200d\u2642\ufe0f", + ":man_detective_tone4:": "\U0001f575\U0001f3fe\u200d\u2642\ufe0f", + ":man_detective_tone5:": "\U0001f575\U0001f3ff\u200d\u2642\ufe0f", + ":man_elf:": "\U0001f9dd\u200d\u2642\ufe0f", + ":man_elf_tone1:": "\U0001f9dd\U0001f3fb\u200d\u2642\ufe0f", + ":man_elf_tone2:": "\U0001f9dd\U0001f3fc\u200d\u2642\ufe0f", + ":man_elf_tone3:": "\U0001f9dd\U0001f3fd\u200d\u2642\ufe0f", + ":man_elf_tone4:": "\U0001f9dd\U0001f3fe\u200d\u2642\ufe0f", + ":man_elf_tone5:": "\U0001f9dd\U0001f3ff\u200d\u2642\ufe0f", + ":man_facepalming:": "\U0001f926\u200d\u2642\ufe0f", + ":man_facepalming_tone1:": "\U0001f926\U0001f3fb\u200d\u2642\ufe0f", + ":man_facepalming_tone2:": "\U0001f926\U0001f3fc\u200d\u2642\ufe0f", + ":man_facepalming_tone3:": "\U0001f926\U0001f3fd\u200d\u2642\ufe0f", + ":man_facepalming_tone4:": "\U0001f926\U0001f3fe\u200d\u2642\ufe0f", + ":man_facepalming_tone5:": "\U0001f926\U0001f3ff\u200d\u2642\ufe0f", + ":man_factory_worker:": "\U0001f468\u200d\U0001f3ed", + ":man_factory_worker_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3ed", + ":man_factory_worker_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3ed", + ":man_factory_worker_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3ed", + ":man_factory_worker_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3ed", + ":man_factory_worker_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3ed", + ":man_fairy:": "\U0001f9da\u200d\u2642\ufe0f", + ":man_fairy_tone1:": "\U0001f9da\U0001f3fb\u200d\u2642\ufe0f", + ":man_fairy_tone2:": "\U0001f9da\U0001f3fc\u200d\u2642\ufe0f", + ":man_fairy_tone3:": "\U0001f9da\U0001f3fd\u200d\u2642\ufe0f", + ":man_fairy_tone4:": "\U0001f9da\U0001f3fe\u200d\u2642\ufe0f", + ":man_fairy_tone5:": "\U0001f9da\U0001f3ff\u200d\u2642\ufe0f", + ":man_farmer:": "\U0001f468\u200d\U0001f33e", + ":man_farmer_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f33e", + ":man_farmer_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f33e", + ":man_farmer_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f33e", + ":man_farmer_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f33e", + ":man_farmer_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f33e", + ":man_feeding_baby:": "\U0001f468\u200d\U0001f37c", + ":man_firefighter:": "\U0001f468\u200d\U0001f692", + ":man_firefighter_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f692", + ":man_firefighter_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f692", + ":man_firefighter_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f692", + ":man_firefighter_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f692", + ":man_firefighter_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f692", + ":man_frowning:": "\U0001f64d\u200d\u2642\ufe0f", + ":man_frowning_tone1:": "\U0001f64d\U0001f3fb\u200d\u2642\ufe0f", + ":man_frowning_tone2:": "\U0001f64d\U0001f3fc\u200d\u2642\ufe0f", + ":man_frowning_tone3:": "\U0001f64d\U0001f3fd\u200d\u2642\ufe0f", + ":man_frowning_tone4:": "\U0001f64d\U0001f3fe\u200d\u2642\ufe0f", + ":man_frowning_tone5:": "\U0001f64d\U0001f3ff\u200d\u2642\ufe0f", + ":man_genie:": "\U0001f9de\u200d\u2642\ufe0f", + ":man_gesturing_NO:": "\U0001f645\u200d\u2642\ufe0f", + ":man_gesturing_OK:": "\U0001f646\u200d\u2642\ufe0f", + ":man_gesturing_no:": "\U0001f645\u200d\u2642\ufe0f", + ":man_gesturing_no_tone1:": "\U0001f645\U0001f3fb\u200d\u2642\ufe0f", + ":man_gesturing_no_tone2:": "\U0001f645\U0001f3fc\u200d\u2642\ufe0f", + ":man_gesturing_no_tone3:": "\U0001f645\U0001f3fd\u200d\u2642\ufe0f", + ":man_gesturing_no_tone4:": "\U0001f645\U0001f3fe\u200d\u2642\ufe0f", + ":man_gesturing_no_tone5:": "\U0001f645\U0001f3ff\u200d\u2642\ufe0f", + ":man_gesturing_ok:": "\U0001f646\u200d\u2642\ufe0f", + ":man_gesturing_ok_tone1:": "\U0001f646\U0001f3fb\u200d\u2642\ufe0f", + ":man_gesturing_ok_tone2:": "\U0001f646\U0001f3fc\u200d\u2642\ufe0f", + ":man_gesturing_ok_tone3:": "\U0001f646\U0001f3fd\u200d\u2642\ufe0f", + ":man_gesturing_ok_tone4:": "\U0001f646\U0001f3fe\u200d\u2642\ufe0f", + ":man_gesturing_ok_tone5:": "\U0001f646\U0001f3ff\u200d\u2642\ufe0f", + ":man_getting_face_massage:": "\U0001f486\u200d\u2642\ufe0f", + ":man_getting_face_massage_tone1:": "\U0001f486\U0001f3fb\u200d\u2642\ufe0f", + ":man_getting_face_massage_tone2:": "\U0001f486\U0001f3fc\u200d\u2642\ufe0f", + ":man_getting_face_massage_tone3:": "\U0001f486\U0001f3fd\u200d\u2642\ufe0f", + ":man_getting_face_massage_tone4:": "\U0001f486\U0001f3fe\u200d\u2642\ufe0f", + ":man_getting_face_massage_tone5:": "\U0001f486\U0001f3ff\u200d\u2642\ufe0f", + ":man_getting_haircut:": "\U0001f487\u200d\u2642\ufe0f", + ":man_getting_haircut_tone1:": "\U0001f487\U0001f3fb\u200d\u2642\ufe0f", + ":man_getting_haircut_tone2:": "\U0001f487\U0001f3fc\u200d\u2642\ufe0f", + ":man_getting_haircut_tone3:": "\U0001f487\U0001f3fd\u200d\u2642\ufe0f", + ":man_getting_haircut_tone4:": "\U0001f487\U0001f3fe\u200d\u2642\ufe0f", + ":man_getting_haircut_tone5:": "\U0001f487\U0001f3ff\u200d\u2642\ufe0f", + ":man_getting_massage:": "\U0001f486\u200d\u2642\ufe0f", + ":man_golfing:": "\U0001f3cc\ufe0f\u200d\u2642\ufe0f", + ":man_golfing_tone1:": "\U0001f3cc\U0001f3fb\u200d\u2642\ufe0f", + ":man_golfing_tone2:": "\U0001f3cc\U0001f3fc\u200d\u2642\ufe0f", + ":man_golfing_tone3:": "\U0001f3cc\U0001f3fd\u200d\u2642\ufe0f", + ":man_golfing_tone4:": "\U0001f3cc\U0001f3fe\u200d\u2642\ufe0f", + ":man_golfing_tone5:": "\U0001f3cc\U0001f3ff\u200d\u2642\ufe0f", + ":man_guard:": "\U0001f482\u200d\u2642\ufe0f", + ":man_guard_tone1:": "\U0001f482\U0001f3fb\u200d\u2642\ufe0f", + ":man_guard_tone2:": "\U0001f482\U0001f3fc\u200d\u2642\ufe0f", + ":man_guard_tone3:": "\U0001f482\U0001f3fd\u200d\u2642\ufe0f", + ":man_guard_tone4:": "\U0001f482\U0001f3fe\u200d\u2642\ufe0f", + ":man_guard_tone5:": "\U0001f482\U0001f3ff\u200d\u2642\ufe0f", + ":man_health_worker:": "\U0001f468\u200d\u2695\ufe0f", + ":man_health_worker_tone1:": "\U0001f468\U0001f3fb\u200d\u2695\ufe0f", + ":man_health_worker_tone2:": "\U0001f468\U0001f3fc\u200d\u2695\ufe0f", + ":man_health_worker_tone3:": "\U0001f468\U0001f3fd\u200d\u2695\ufe0f", + ":man_health_worker_tone4:": "\U0001f468\U0001f3fe\u200d\u2695\ufe0f", + ":man_health_worker_tone5:": "\U0001f468\U0001f3ff\u200d\u2695\ufe0f", + ":man_in_business_suit_levitating:": "\U0001f574\ufe0f", + ":man_in_business_suit_levitating_tone1:": "\U0001f574\U0001f3fb", + ":man_in_business_suit_levitating_tone2:": "\U0001f574\U0001f3fc", + ":man_in_business_suit_levitating_tone3:": "\U0001f574\U0001f3fd", + ":man_in_business_suit_levitating_tone4:": "\U0001f574\U0001f3fe", + ":man_in_business_suit_levitating_tone5:": "\U0001f574\U0001f3ff", + ":man_in_lotus_position:": "\U0001f9d8\u200d\u2642\ufe0f", + ":man_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb\u200d\u2642\ufe0f", + ":man_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc\u200d\u2642\ufe0f", + ":man_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd\u200d\u2642\ufe0f", + ":man_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe\u200d\u2642\ufe0f", + ":man_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff\u200d\u2642\ufe0f", + ":man_in_manual_wheelchair:": "\U0001f468\u200d\U0001f9bd", + ":man_in_motorized_wheelchair:": "\U0001f468\u200d\U0001f9bc", + ":man_in_steamy_room:": "\U0001f9d6\u200d\u2642\ufe0f", + ":man_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb\u200d\u2642\ufe0f", + ":man_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc\u200d\u2642\ufe0f", + ":man_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd\u200d\u2642\ufe0f", + ":man_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe\u200d\u2642\ufe0f", + ":man_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff\u200d\u2642\ufe0f", + ":man_in_tuxedo:": "\U0001f935\u200d\u2642\ufe0f", + ":man_in_tuxedo_tone1:": "\U0001f935\U0001f3fb", + ":man_in_tuxedo_tone2:": "\U0001f935\U0001f3fc", + ":man_in_tuxedo_tone3:": "\U0001f935\U0001f3fd", + ":man_in_tuxedo_tone4:": "\U0001f935\U0001f3fe", + ":man_in_tuxedo_tone5:": "\U0001f935\U0001f3ff", + ":man_judge:": "\U0001f468\u200d\u2696\ufe0f", + ":man_judge_tone1:": "\U0001f468\U0001f3fb\u200d\u2696\ufe0f", + ":man_judge_tone2:": "\U0001f468\U0001f3fc\u200d\u2696\ufe0f", + ":man_judge_tone3:": "\U0001f468\U0001f3fd\u200d\u2696\ufe0f", + ":man_judge_tone4:": "\U0001f468\U0001f3fe\u200d\u2696\ufe0f", + ":man_judge_tone5:": "\U0001f468\U0001f3ff\u200d\u2696\ufe0f", + ":man_juggling:": "\U0001f939\u200d\u2642\ufe0f", + ":man_juggling_tone1:": "\U0001f939\U0001f3fb\u200d\u2642\ufe0f", + ":man_juggling_tone2:": "\U0001f939\U0001f3fc\u200d\u2642\ufe0f", + ":man_juggling_tone3:": "\U0001f939\U0001f3fd\u200d\u2642\ufe0f", + ":man_juggling_tone4:": "\U0001f939\U0001f3fe\u200d\u2642\ufe0f", + ":man_juggling_tone5:": "\U0001f939\U0001f3ff\u200d\u2642\ufe0f", + ":man_kneeling:": "\U0001f9ce\u200d\u2642\ufe0f", + ":man_lifting_weights:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", + ":man_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb\u200d\u2642\ufe0f", + ":man_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc\u200d\u2642\ufe0f", + ":man_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd\u200d\u2642\ufe0f", + ":man_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe\u200d\u2642\ufe0f", + ":man_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff\u200d\u2642\ufe0f", + ":man_mage:": "\U0001f9d9\u200d\u2642\ufe0f", + ":man_mage_tone1:": "\U0001f9d9\U0001f3fb\u200d\u2642\ufe0f", + ":man_mage_tone2:": "\U0001f9d9\U0001f3fc\u200d\u2642\ufe0f", + ":man_mage_tone3:": "\U0001f9d9\U0001f3fd\u200d\u2642\ufe0f", + ":man_mage_tone4:": "\U0001f9d9\U0001f3fe\u200d\u2642\ufe0f", + ":man_mage_tone5:": "\U0001f9d9\U0001f3ff\u200d\u2642\ufe0f", + ":man_mechanic:": "\U0001f468\u200d\U0001f527", + ":man_mechanic_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f527", + ":man_mechanic_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f527", + ":man_mechanic_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f527", + ":man_mechanic_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f527", + ":man_mechanic_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f527", + ":man_mountain_biking:": "\U0001f6b5\u200d\u2642\ufe0f", + ":man_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb\u200d\u2642\ufe0f", + ":man_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc\u200d\u2642\ufe0f", + ":man_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd\u200d\u2642\ufe0f", + ":man_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe\u200d\u2642\ufe0f", + ":man_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff\u200d\u2642\ufe0f", + ":man_office_worker:": "\U0001f468\u200d\U0001f4bc", + ":man_office_worker_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f4bc", + ":man_office_worker_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f4bc", + ":man_office_worker_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f4bc", + ":man_office_worker_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f4bc", + ":man_office_worker_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f4bc", + ":man_pilot:": "\U0001f468\u200d\u2708\ufe0f", + ":man_pilot_tone1:": "\U0001f468\U0001f3fb\u200d\u2708\ufe0f", + ":man_pilot_tone2:": "\U0001f468\U0001f3fc\u200d\u2708\ufe0f", + ":man_pilot_tone3:": "\U0001f468\U0001f3fd\u200d\u2708\ufe0f", + ":man_pilot_tone4:": "\U0001f468\U0001f3fe\u200d\u2708\ufe0f", + ":man_pilot_tone5:": "\U0001f468\U0001f3ff\u200d\u2708\ufe0f", + ":man_playing_handball:": "\U0001f93e\u200d\u2642\ufe0f", + ":man_playing_handball_tone1:": "\U0001f93e\U0001f3fb\u200d\u2642\ufe0f", + ":man_playing_handball_tone2:": "\U0001f93e\U0001f3fc\u200d\u2642\ufe0f", + ":man_playing_handball_tone3:": "\U0001f93e\U0001f3fd\u200d\u2642\ufe0f", + ":man_playing_handball_tone4:": "\U0001f93e\U0001f3fe\u200d\u2642\ufe0f", + ":man_playing_handball_tone5:": "\U0001f93e\U0001f3ff\u200d\u2642\ufe0f", + ":man_playing_water_polo:": "\U0001f93d\u200d\u2642\ufe0f", + ":man_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb\u200d\u2642\ufe0f", + ":man_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc\u200d\u2642\ufe0f", + ":man_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd\u200d\u2642\ufe0f", + ":man_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe\u200d\u2642\ufe0f", + ":man_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff\u200d\u2642\ufe0f", + ":man_police_officer:": "\U0001f46e\u200d\u2642\ufe0f", + ":man_police_officer_tone1:": "\U0001f46e\U0001f3fb\u200d\u2642\ufe0f", + ":man_police_officer_tone2:": "\U0001f46e\U0001f3fc\u200d\u2642\ufe0f", + ":man_police_officer_tone3:": "\U0001f46e\U0001f3fd\u200d\u2642\ufe0f", + ":man_police_officer_tone4:": "\U0001f46e\U0001f3fe\u200d\u2642\ufe0f", + ":man_police_officer_tone5:": "\U0001f46e\U0001f3ff\u200d\u2642\ufe0f", + ":man_pouting:": "\U0001f64e\u200d\u2642\ufe0f", + ":man_pouting_tone1:": "\U0001f64e\U0001f3fb\u200d\u2642\ufe0f", + ":man_pouting_tone2:": "\U0001f64e\U0001f3fc\u200d\u2642\ufe0f", + ":man_pouting_tone3:": "\U0001f64e\U0001f3fd\u200d\u2642\ufe0f", + ":man_pouting_tone4:": "\U0001f64e\U0001f3fe\u200d\u2642\ufe0f", + ":man_pouting_tone5:": "\U0001f64e\U0001f3ff\u200d\u2642\ufe0f", + ":man_raising_hand:": "\U0001f64b\u200d\u2642\ufe0f", + ":man_raising_hand_tone1:": "\U0001f64b\U0001f3fb\u200d\u2642\ufe0f", + ":man_raising_hand_tone2:": "\U0001f64b\U0001f3fc\u200d\u2642\ufe0f", + ":man_raising_hand_tone3:": "\U0001f64b\U0001f3fd\u200d\u2642\ufe0f", + ":man_raising_hand_tone4:": "\U0001f64b\U0001f3fe\u200d\u2642\ufe0f", + ":man_raising_hand_tone5:": "\U0001f64b\U0001f3ff\u200d\u2642\ufe0f", + ":man_red_hair:": "\U0001f468\u200d\U0001f9b0", + ":man_rowing_boat:": "\U0001f6a3\u200d\u2642\ufe0f", + ":man_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb\u200d\u2642\ufe0f", + ":man_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc\u200d\u2642\ufe0f", + ":man_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd\u200d\u2642\ufe0f", + ":man_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe\u200d\u2642\ufe0f", + ":man_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff\u200d\u2642\ufe0f", + ":man_running:": "\U0001f3c3\u200d\u2642\ufe0f", + ":man_running_tone1:": "\U0001f3c3\U0001f3fb\u200d\u2642\ufe0f", + ":man_running_tone2:": "\U0001f3c3\U0001f3fc\u200d\u2642\ufe0f", + ":man_running_tone3:": "\U0001f3c3\U0001f3fd\u200d\u2642\ufe0f", + ":man_running_tone4:": "\U0001f3c3\U0001f3fe\u200d\u2642\ufe0f", + ":man_running_tone5:": "\U0001f3c3\U0001f3ff\u200d\u2642\ufe0f", + ":man_scientist:": "\U0001f468\u200d\U0001f52c", + ":man_scientist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f52c", + ":man_scientist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f52c", + ":man_scientist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f52c", + ":man_scientist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f52c", + ":man_scientist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f52c", + ":man_shrugging:": "\U0001f937\u200d\u2642\ufe0f", + ":man_shrugging_tone1:": "\U0001f937\U0001f3fb\u200d\u2642\ufe0f", + ":man_shrugging_tone2:": "\U0001f937\U0001f3fc\u200d\u2642\ufe0f", + ":man_shrugging_tone3:": "\U0001f937\U0001f3fd\u200d\u2642\ufe0f", + ":man_shrugging_tone4:": "\U0001f937\U0001f3fe\u200d\u2642\ufe0f", + ":man_shrugging_tone5:": "\U0001f937\U0001f3ff\u200d\u2642\ufe0f", + ":man_singer:": "\U0001f468\u200d\U0001f3a4", + ":man_singer_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3a4", + ":man_singer_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3a4", + ":man_singer_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3a4", + ":man_singer_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3a4", + ":man_singer_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3a4", + ":man_standing:": "\U0001f9cd\u200d\u2642\ufe0f", + ":man_student:": "\U0001f468\u200d\U0001f393", + ":man_student_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f393", + ":man_student_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f393", + ":man_student_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f393", + ":man_student_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f393", + ":man_student_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f393", + ":man_superhero:": "\U0001f9b8\u200d\u2642\ufe0f", + ":man_supervillain:": "\U0001f9b9\u200d\u2642\ufe0f", + ":man_surfing:": "\U0001f3c4\u200d\u2642\ufe0f", + ":man_surfing_tone1:": "\U0001f3c4\U0001f3fb\u200d\u2642\ufe0f", + ":man_surfing_tone2:": "\U0001f3c4\U0001f3fc\u200d\u2642\ufe0f", + ":man_surfing_tone3:": "\U0001f3c4\U0001f3fd\u200d\u2642\ufe0f", + ":man_surfing_tone4:": "\U0001f3c4\U0001f3fe\u200d\u2642\ufe0f", + ":man_surfing_tone5:": "\U0001f3c4\U0001f3ff\u200d\u2642\ufe0f", + ":man_swimming:": "\U0001f3ca\u200d\u2642\ufe0f", + ":man_swimming_tone1:": "\U0001f3ca\U0001f3fb\u200d\u2642\ufe0f", + ":man_swimming_tone2:": "\U0001f3ca\U0001f3fc\u200d\u2642\ufe0f", + ":man_swimming_tone3:": "\U0001f3ca\U0001f3fd\u200d\u2642\ufe0f", + ":man_swimming_tone4:": "\U0001f3ca\U0001f3fe\u200d\u2642\ufe0f", + ":man_swimming_tone5:": "\U0001f3ca\U0001f3ff\u200d\u2642\ufe0f", + ":man_teacher:": "\U0001f468\u200d\U0001f3eb", + ":man_teacher_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f3eb", + ":man_teacher_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f3eb", + ":man_teacher_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f3eb", + ":man_teacher_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f3eb", + ":man_teacher_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f3eb", + ":man_technologist:": "\U0001f468\u200d\U0001f4bb", + ":man_technologist_tone1:": "\U0001f468\U0001f3fb\u200d\U0001f4bb", + ":man_technologist_tone2:": "\U0001f468\U0001f3fc\u200d\U0001f4bb", + ":man_technologist_tone3:": "\U0001f468\U0001f3fd\u200d\U0001f4bb", + ":man_technologist_tone4:": "\U0001f468\U0001f3fe\u200d\U0001f4bb", + ":man_technologist_tone5:": "\U0001f468\U0001f3ff\u200d\U0001f4bb", + ":man_tipping_hand:": "\U0001f481\u200d\u2642\ufe0f", + ":man_tipping_hand_tone1:": "\U0001f481\U0001f3fb\u200d\u2642\ufe0f", + ":man_tipping_hand_tone2:": "\U0001f481\U0001f3fc\u200d\u2642\ufe0f", + ":man_tipping_hand_tone3:": "\U0001f481\U0001f3fd\u200d\u2642\ufe0f", + ":man_tipping_hand_tone4:": "\U0001f481\U0001f3fe\u200d\u2642\ufe0f", + ":man_tipping_hand_tone5:": "\U0001f481\U0001f3ff\u200d\u2642\ufe0f", + ":man_tone1:": "\U0001f468\U0001f3fb", + ":man_tone2:": "\U0001f468\U0001f3fc", + ":man_tone3:": "\U0001f468\U0001f3fd", + ":man_tone4:": "\U0001f468\U0001f3fe", + ":man_tone5:": "\U0001f468\U0001f3ff", + ":man_vampire:": "\U0001f9db\u200d\u2642\ufe0f", + ":man_vampire_tone1:": "\U0001f9db\U0001f3fb\u200d\u2642\ufe0f", + ":man_vampire_tone2:": "\U0001f9db\U0001f3fc\u200d\u2642\ufe0f", + ":man_vampire_tone3:": "\U0001f9db\U0001f3fd\u200d\u2642\ufe0f", + ":man_vampire_tone4:": "\U0001f9db\U0001f3fe\u200d\u2642\ufe0f", + ":man_vampire_tone5:": "\U0001f9db\U0001f3ff\u200d\u2642\ufe0f", + ":man_walking:": "\U0001f6b6\u200d\u2642\ufe0f", + ":man_walking_tone1:": "\U0001f6b6\U0001f3fb\u200d\u2642\ufe0f", + ":man_walking_tone2:": "\U0001f6b6\U0001f3fc\u200d\u2642\ufe0f", + ":man_walking_tone3:": "\U0001f6b6\U0001f3fd\u200d\u2642\ufe0f", + ":man_walking_tone4:": "\U0001f6b6\U0001f3fe\u200d\u2642\ufe0f", + ":man_walking_tone5:": "\U0001f6b6\U0001f3ff\u200d\u2642\ufe0f", + ":man_wearing_turban:": "\U0001f473\u200d\u2642\ufe0f", + ":man_wearing_turban_tone1:": "\U0001f473\U0001f3fb\u200d\u2642\ufe0f", + ":man_wearing_turban_tone2:": "\U0001f473\U0001f3fc\u200d\u2642\ufe0f", + ":man_wearing_turban_tone3:": "\U0001f473\U0001f3fd\u200d\u2642\ufe0f", + ":man_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2642\ufe0f", + ":man_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2642\ufe0f", + ":man_white_hair:": "\U0001f468\u200d\U0001f9b3", + ":man_with_chinese_cap:": "\U0001f472", + ":man_with_chinese_cap_tone1:": "\U0001f472\U0001f3fb", + ":man_with_chinese_cap_tone2:": "\U0001f472\U0001f3fc", + ":man_with_chinese_cap_tone3:": "\U0001f472\U0001f3fd", + ":man_with_chinese_cap_tone4:": "\U0001f472\U0001f3fe", + ":man_with_chinese_cap_tone5:": "\U0001f472\U0001f3ff", + ":man_with_gua_pi_mao:": "\U0001f472", + ":man_with_probing_cane:": "\U0001f468\u200d\U0001f9af", + ":man_with_turban:": "\U0001f473\u200d\u2642\ufe0f", + ":man_with_veil:": "\U0001f470\u200d\u2642\ufe0f", + ":man_with_white_cane:": "\U0001f468\u200d\U0001f9af", + ":man_zombie:": "\U0001f9df\u200d\u2642\ufe0f", + ":mandarin:": "\U0001f34a", + ":mango:": "\U0001f96d", + ":mans_shoe:": "\U0001f45e", + ":mantelpiece_clock:": "\U0001f570\ufe0f", + ":manual_wheelchair:": "\U0001f9bd", + ":man’s_shoe:": "\U0001f45e", + ":map:": "\U0001f5fa", + ":map_of_Japan:": "\U0001f5fe", + ":maple_leaf:": "\U0001f341", + ":marshall_islands:": "\U0001f1f2\U0001f1ed", + ":martial_arts_uniform:": "\U0001f94b", + ":martinique:": "\U0001f1f2\U0001f1f6", + ":mask:": "\U0001f637", + ":massage:": "\U0001f486\u200d\u2640\ufe0f", + ":massage_man:": "\U0001f486\u200d\u2642\ufe0f", + ":massage_woman:": "\U0001f486\u200d\u2640\ufe0f", + ":mate:": "\U0001f9c9", + ":mate_drink:": "\U0001f9c9", + ":mauritania:": "\U0001f1f2\U0001f1f7", + ":mauritius:": "\U0001f1f2\U0001f1fa", + ":mayotte:": "\U0001f1fe\U0001f1f9", + ":meat_on_bone:": "\U0001f356", + ":mechanic:": "\U0001f9d1\u200d\U0001f527", + ":mechanical_arm:": "\U0001f9be", + ":mechanical_leg:": "\U0001f9bf", + ":medal:": "\U0001f396\ufe0f", + ":medal_military:": "\U0001f396\ufe0f", + ":medal_sports:": "\U0001f3c5", + ":medical_symbol:": "\u2695\ufe0f", + ":mega:": "\U0001f4e3", + ":megaphone:": "\U0001f4e3", + ":melon:": "\U0001f348", + ":memo:": "\U0001f4dd", + ":men_holding_hands:": "\U0001f46c", + ":men_with_bunny_ears:": "\U0001f46f\u200d\u2642\ufe0f", + ":men_with_bunny_ears_partying:": "\U0001f46f\u200d\u2642\ufe0f", + ":men_wrestling:": "\U0001f93c\u200d\u2642\ufe0f", + ":mending_heart:": "\u2764\ufe0f\u200d\U0001fa79", + ":menorah:": "\U0001f54e", + ":menorah_with_nine_branches:": "\U0001f54e", + ":mens:": "\U0001f6b9", + ":men’s_room:": "\U0001f6b9", + ":mermaid:": "\U0001f9dc\u200d\u2640\ufe0f", + ":mermaid_tone1:": "\U0001f9dc\U0001f3fb\u200d\u2640\ufe0f", + ":mermaid_tone2:": "\U0001f9dc\U0001f3fc\u200d\u2640\ufe0f", + ":mermaid_tone3:": "\U0001f9dc\U0001f3fd\u200d\u2640\ufe0f", + ":mermaid_tone4:": "\U0001f9dc\U0001f3fe\u200d\u2640\ufe0f", + ":mermaid_tone5:": "\U0001f9dc\U0001f3ff\u200d\u2640\ufe0f", + ":merman:": "\U0001f9dc\u200d\u2642\ufe0f", + ":merman_tone1:": "\U0001f9dc\U0001f3fb\u200d\u2642\ufe0f", + ":merman_tone2:": "\U0001f9dc\U0001f3fc\u200d\u2642\ufe0f", + ":merman_tone3:": "\U0001f9dc\U0001f3fd\u200d\u2642\ufe0f", + ":merman_tone4:": "\U0001f9dc\U0001f3fe\u200d\u2642\ufe0f", + ":merman_tone5:": "\U0001f9dc\U0001f3ff\u200d\u2642\ufe0f", + ":merperson:": "\U0001f9dc\u200d\u2642\ufe0f", + ":merperson_tone1:": "\U0001f9dc\U0001f3fb", + ":merperson_tone2:": "\U0001f9dc\U0001f3fc", + ":merperson_tone3:": "\U0001f9dc\U0001f3fd", + ":merperson_tone4:": "\U0001f9dc\U0001f3fe", + ":merperson_tone5:": "\U0001f9dc\U0001f3ff", + ":metal:": "\U0001f918", + ":metal_tone1:": "\U0001f918\U0001f3fb", + ":metal_tone2:": "\U0001f918\U0001f3fc", + ":metal_tone3:": "\U0001f918\U0001f3fd", + ":metal_tone4:": "\U0001f918\U0001f3fe", + ":metal_tone5:": "\U0001f918\U0001f3ff", + ":metro:": "\U0001f687", + ":mexico:": "\U0001f1f2\U0001f1fd", + ":microbe:": "\U0001f9a0", + ":micronesia:": "\U0001f1eb\U0001f1f2", + ":microphone:": "\U0001f3a4", + ":microphone2:": "\U0001f399", + ":microscope:": "\U0001f52c", + ":middle_finger:": "\U0001f595", + ":middle_finger_tone1:": "\U0001f595\U0001f3fb", + ":middle_finger_tone2:": "\U0001f595\U0001f3fc", + ":middle_finger_tone3:": "\U0001f595\U0001f3fd", + ":middle_finger_tone4:": "\U0001f595\U0001f3fe", + ":middle_finger_tone5:": "\U0001f595\U0001f3ff", + ":military_helmet:": "\U0001fa96", + ":military_medal:": "\U0001f396", + ":milk:": "\U0001f95b", + ":milk_glass:": "\U0001f95b", + ":milky_way:": "\U0001f30c", + ":minibus:": "\U0001f690", + ":minidisc:": "\U0001f4bd", + ":minus:": "\u2796", + ":mirror:": "\U0001fa9e", + ":moai:": "\U0001f5ff", + ":mobile_phone:": "\U0001f4f1", + ":mobile_phone_off:": "\U0001f4f4", + ":mobile_phone_with_arrow:": "\U0001f4f2", + ":moldova:": "\U0001f1f2\U0001f1e9", + ":monaco:": "\U0001f1f2\U0001f1e8", + ":money-mouth_face:": "\U0001f911", + ":money_bag:": "\U0001f4b0", + ":money_mouth:": "\U0001f911", + ":money_mouth_face:": "\U0001f911", + ":money_with_wings:": "\U0001f4b8", + ":moneybag:": "\U0001f4b0", + ":mongolia:": "\U0001f1f2\U0001f1f3", + ":monkey:": "\U0001f412", + ":monkey_face:": "\U0001f435", + ":monocle_face:": "\U0001f9d0", + ":monorail:": "\U0001f69d", + ":montenegro:": "\U0001f1f2\U0001f1ea", + ":montserrat:": "\U0001f1f2\U0001f1f8", + ":moon:": "\U0001f314", + ":moon_cake:": "\U0001f96e", + ":moon_viewing_ceremony:": "\U0001f391", + ":morocco:": "\U0001f1f2\U0001f1e6", + ":mortar_board:": "\U0001f393", + ":mosque:": "\U0001f54c", + ":mosquito:": "\U0001f99f", + ":mostly_sunny:": "\U0001f324\ufe0f", + ":motor_boat:": "\U0001f6e5\ufe0f", + ":motor_scooter:": "\U0001f6f5", + ":motorboat:": "\U0001f6e5", + ":motorcycle:": "\U0001f3cd", + ":motorized_wheelchair:": "\U0001f9bc", + ":motorway:": "\U0001f6e3\ufe0f", + ":mount_fuji:": "\U0001f5fb", + ":mountain:": "\u26f0\ufe0f", + ":mountain_bicyclist:": "\U0001f6b5\u200d\u2642\ufe0f", + ":mountain_biking_man:": "\U0001f6b5\u200d\u2642\ufe0f", + ":mountain_biking_woman:": "\U0001f6b5\u200d\u2640\ufe0f", + ":mountain_cableway:": "\U0001f6a0", + ":mountain_railway:": "\U0001f69e", + ":mountain_snow:": "\U0001f3d4", + ":mouse:": "\U0001f42d", + ":mouse2:": "\U0001f401", + ":mouse_face:": "\U0001f42d", + ":mouse_three_button:": "\U0001f5b1", + ":mouse_trap:": "\U0001faa4", + ":mouth:": "\U0001f444", + ":movie_camera:": "\U0001f3a5", + ":moyai:": "\U0001f5ff", + ":mozambique:": "\U0001f1f2\U0001f1ff", + ":mrs_claus:": "\U0001f936", + ":mrs_claus_tone1:": "\U0001f936\U0001f3fb", + ":mrs_claus_tone2:": "\U0001f936\U0001f3fc", + ":mrs_claus_tone3:": "\U0001f936\U0001f3fd", + ":mrs_claus_tone4:": "\U0001f936\U0001f3fe", + ":mrs_claus_tone5:": "\U0001f936\U0001f3ff", + ":multiply:": "\u2716", + ":muscle:": "\U0001f4aa", + ":muscle_tone1:": "\U0001f4aa\U0001f3fb", + ":muscle_tone2:": "\U0001f4aa\U0001f3fc", + ":muscle_tone3:": "\U0001f4aa\U0001f3fd", + ":muscle_tone4:": "\U0001f4aa\U0001f3fe", + ":muscle_tone5:": "\U0001f4aa\U0001f3ff", + ":mushroom:": "\U0001f344", + ":musical_keyboard:": "\U0001f3b9", + ":musical_note:": "\U0001f3b5", + ":musical_notes:": "\U0001f3b6", + ":musical_score:": "\U0001f3bc", + ":mute:": "\U0001f507", + ":muted_speaker:": "\U0001f507", + ":mx_claus:": "\U0001f9d1\u200d\U0001f384", + ":myanmar:": "\U0001f1f2\U0001f1f2", + ":nail_care:": "\U0001f485", + ":nail_care_tone1:": "\U0001f485\U0001f3fb", + ":nail_care_tone2:": "\U0001f485\U0001f3fc", + ":nail_care_tone3:": "\U0001f485\U0001f3fd", + ":nail_care_tone4:": "\U0001f485\U0001f3fe", + ":nail_care_tone5:": "\U0001f485\U0001f3ff", + ":nail_polish:": "\U0001f485", + ":name_badge:": "\U0001f4db", + ":namibia:": "\U0001f1f3\U0001f1e6", + ":national_park:": "\U0001f3de\ufe0f", + ":nauru:": "\U0001f1f3\U0001f1f7", + ":nauseated_face:": "\U0001f922", + ":nazar_amulet:": "\U0001f9ff", + ":necktie:": "\U0001f454", + ":negative_squared_cross_mark:": "\u274e", + ":nepal:": "\U0001f1f3\U0001f1f5", + ":nerd:": "\U0001f913", + ":nerd_face:": "\U0001f913", + ":nesting_dolls:": "\U0001fa86", + ":netherlands:": "\U0001f1f3\U0001f1f1", + ":neutral_face:": "\U0001f610", + ":new:": "\U0001f195", + ":new_caledonia:": "\U0001f1f3\U0001f1e8", + ":new_moon:": "\U0001f311", + ":new_moon_face:": "\U0001f31a", + ":new_moon_with_face:": "\U0001f31a", + ":new_zealand:": "\U0001f1f3\U0001f1ff", + ":newspaper:": "\U0001f4f0", + ":newspaper2:": "\U0001f5de", + ":newspaper_roll:": "\U0001f5de\ufe0f", + ":next_track_button:": "\u23ed", + ":ng:": "\U0001f196", + ":ng_man:": "\U0001f645\u200d\u2642\ufe0f", + ":ng_woman:": "\U0001f645\u200d\u2640\ufe0f", + ":nicaragua:": "\U0001f1f3\U0001f1ee", + ":niger:": "\U0001f1f3\U0001f1ea", + ":nigeria:": "\U0001f1f3\U0001f1ec", + ":night_with_stars:": "\U0001f303", + ":nine:": "9\ufe0f\u20e3", + ":nine-thirty:": "\U0001f564", + ":nine_o’clock:": "\U0001f558", + ":ninja:": "\U0001f977", + ":niue:": "\U0001f1f3\U0001f1fa", + ":no_bell:": "\U0001f515", + ":no_bicycles:": "\U0001f6b3", + ":no_entry:": "\u26d4", + ":no_entry_sign:": "\U0001f6ab", + ":no_good:": "\U0001f645\u200d\u2640\ufe0f", + ":no_good_man:": "\U0001f645\u200d\u2642\ufe0f", + ":no_good_woman:": "\U0001f645\u200d\u2640\ufe0f", + ":no_littering:": "\U0001f6af", + ":no_mobile_phones:": "\U0001f4f5", + ":no_mouth:": "\U0001f636", + ":no_one_under_eighteen:": "\U0001f51e", + ":no_pedestrians:": "\U0001f6b7", + ":no_smoking:": "\U0001f6ad", + ":non-potable_water:": "\U0001f6b1", + ":norfolk_island:": "\U0001f1f3\U0001f1eb", + ":north_korea:": "\U0001f1f0\U0001f1f5", + ":northern_mariana_islands:": "\U0001f1f2\U0001f1f5", + ":norway:": "\U0001f1f3\U0001f1f4", + ":nose:": "\U0001f443", + ":nose_tone1:": "\U0001f443\U0001f3fb", + ":nose_tone2:": "\U0001f443\U0001f3fc", + ":nose_tone3:": "\U0001f443\U0001f3fd", + ":nose_tone4:": "\U0001f443\U0001f3fe", + ":nose_tone5:": "\U0001f443\U0001f3ff", + ":notebook:": "\U0001f4d3", + ":notebook_with_decorative_cover:": "\U0001f4d4", + ":notepad_spiral:": "\U0001f5d2", + ":notes:": "\U0001f3b6", + ":nut_and_bolt:": "\U0001f529", + ":o:": "\u2b55", + ":o2:": "\U0001f17e\ufe0f", + ":ocean:": "\U0001f30a", + ":octagonal_sign:": "\U0001f6d1", + ":octopus:": "\U0001f419", + ":oden:": "\U0001f362", + ":office:": "\U0001f3e2", + ":office_building:": "\U0001f3e2", + ":office_worker:": "\U0001f9d1\u200d\U0001f4bc", + ":ogre:": "\U0001f479", + ":oil:": "\U0001f6e2", + ":oil_drum:": "\U0001f6e2\ufe0f", + ":ok:": "\U0001f197", + ":ok_hand:": "\U0001f44c", + ":ok_hand_tone1:": "\U0001f44c\U0001f3fb", + ":ok_hand_tone2:": "\U0001f44c\U0001f3fc", + ":ok_hand_tone3:": "\U0001f44c\U0001f3fd", + ":ok_hand_tone4:": "\U0001f44c\U0001f3fe", + ":ok_hand_tone5:": "\U0001f44c\U0001f3ff", + ":ok_man:": "\U0001f646\u200d\u2642\ufe0f", + ":ok_person:": "\U0001f646", + ":ok_woman:": "\U0001f646\u200d\u2640\ufe0f", + ":old_key:": "\U0001f5dd\ufe0f", + ":old_man:": "\U0001f474", + ":old_woman:": "\U0001f475", + ":older_adult:": "\U0001f9d3", + ":older_adult_tone1:": "\U0001f9d3\U0001f3fb", + ":older_adult_tone2:": "\U0001f9d3\U0001f3fc", + ":older_adult_tone3:": "\U0001f9d3\U0001f3fd", + ":older_adult_tone4:": "\U0001f9d3\U0001f3fe", + ":older_adult_tone5:": "\U0001f9d3\U0001f3ff", + ":older_man:": "\U0001f474", + ":older_man_tone1:": "\U0001f474\U0001f3fb", + ":older_man_tone2:": "\U0001f474\U0001f3fc", + ":older_man_tone3:": "\U0001f474\U0001f3fd", + ":older_man_tone4:": "\U0001f474\U0001f3fe", + ":older_man_tone5:": "\U0001f474\U0001f3ff", + ":older_person:": "\U0001f9d3", + ":older_woman:": "\U0001f475", + ":older_woman_tone1:": "\U0001f475\U0001f3fb", + ":older_woman_tone2:": "\U0001f475\U0001f3fc", + ":older_woman_tone3:": "\U0001f475\U0001f3fd", + ":older_woman_tone4:": "\U0001f475\U0001f3fe", + ":older_woman_tone5:": "\U0001f475\U0001f3ff", + ":olive:": "\U0001fad2", + ":om:": "\U0001f549", + ":om_symbol:": "\U0001f549\ufe0f", + ":oman:": "\U0001f1f4\U0001f1f2", + ":on:": "\U0001f51b", + ":oncoming_automobile:": "\U0001f698", + ":oncoming_bus:": "\U0001f68d", + ":oncoming_fist:": "\U0001f44a", + ":oncoming_police_car:": "\U0001f694", + ":oncoming_taxi:": "\U0001f696", + ":one:": "1\ufe0f\u20e3", + ":one-piece_swimsuit:": "\U0001fa71", + ":one-thirty:": "\U0001f55c", + ":one_o’clock:": "\U0001f550", + ":one_piece_swimsuit:": "\U0001fa71", + ":onion:": "\U0001f9c5", + ":open_book:": "\U0001f4d6", + ":open_file_folder:": "\U0001f4c2", + ":open_hands:": "\U0001f450", + ":open_hands_tone1:": "\U0001f450\U0001f3fb", + ":open_hands_tone2:": "\U0001f450\U0001f3fc", + ":open_hands_tone3:": "\U0001f450\U0001f3fd", + ":open_hands_tone4:": "\U0001f450\U0001f3fe", + ":open_hands_tone5:": "\U0001f450\U0001f3ff", + ":open_mailbox_with_lowered_flag:": "\U0001f4ed", + ":open_mailbox_with_raised_flag:": "\U0001f4ec", + ":open_mouth:": "\U0001f62e", + ":open_umbrella:": "\u2602\ufe0f", + ":ophiuchus:": "\u26ce", + ":optical_disk:": "\U0001f4bf", + ":orange:": "\U0001f34a", + ":orange_book:": "\U0001f4d9", + ":orange_circle:": "\U0001f7e0", + ":orange_heart:": "\U0001f9e1", + ":orange_square:": "\U0001f7e7", + ":orangutan:": "\U0001f9a7", + ":orthodox_cross:": "\u2626\ufe0f", + ":otter:": "\U0001f9a6", + ":outbox_tray:": "\U0001f4e4", + ":owl:": "\U0001f989", + ":ox:": "\U0001f402", + ":oyster:": "\U0001f9aa", + ":package:": "\U0001f4e6", + ":page_facing_up:": "\U0001f4c4", + ":page_with_curl:": "\U0001f4c3", + ":pager:": "\U0001f4df", + ":paintbrush:": "\U0001f58c", + ":pakistan:": "\U0001f1f5\U0001f1f0", + ":palau:": "\U0001f1f5\U0001f1fc", + ":palestinian_territories:": "\U0001f1f5\U0001f1f8", + ":palm_tree:": "\U0001f334", + ":palms_up_together:": "\U0001f932", + ":palms_up_together_tone1:": "\U0001f932\U0001f3fb", + ":palms_up_together_tone2:": "\U0001f932\U0001f3fc", + ":palms_up_together_tone3:": "\U0001f932\U0001f3fd", + ":palms_up_together_tone4:": "\U0001f932\U0001f3fe", + ":palms_up_together_tone5:": "\U0001f932\U0001f3ff", + ":panama:": "\U0001f1f5\U0001f1e6", + ":pancakes:": "\U0001f95e", + ":panda:": "\U0001f43c", + ":panda_face:": "\U0001f43c", + ":paperclip:": "\U0001f4ce", + ":paperclips:": "\U0001f587", + ":papua_new_guinea:": "\U0001f1f5\U0001f1ec", + ":parachute:": "\U0001fa82", + ":paraguay:": "\U0001f1f5\U0001f1fe", + ":parasol_on_ground:": "\u26f1\ufe0f", + ":park:": "\U0001f3de", + ":parking:": "\U0001f17f\ufe0f", + ":parrot:": "\U0001f99c", + ":part_alternation_mark:": "\u303d\ufe0f", + ":partly_sunny:": "\u26c5", + ":partly_sunny_rain:": "\U0001f326\ufe0f", + ":party_popper:": "\U0001f389", + ":partying_face:": "\U0001f973", + ":passenger_ship:": "\U0001f6f3\ufe0f", + ":passport_control:": "\U0001f6c2", + ":pause_button:": "\u23f8", + ":paw_prints:": "\U0001f43e", + ":peace:": "\u262e", + ":peace_symbol:": "\u262e\ufe0f", + ":peach:": "\U0001f351", + ":peacock:": "\U0001f99a", + ":peanuts:": "\U0001f95c", + ":pear:": "\U0001f350", + ":pen:": "\U0001f58a", + ":pen_ballpoint:": "\U0001f58a", + ":pen_fountain:": "\U0001f58b", + ":pencil:": "\u270f", + ":pencil2:": "\u270f\ufe0f", + ":penguin:": "\U0001f427", + ":pensive:": "\U0001f614", + ":pensive_face:": "\U0001f614", + ":people_holding_hands:": "\U0001f9d1\u200d\U0001f91d\u200d\U0001f9d1", + ":people_hugging:": "\U0001fac2", + ":people_with_bunny_ears:": "\U0001f46f", + ":people_with_bunny_ears_partying:": "\U0001f46f", + ":people_wrestling:": "\U0001f93c", + ":performing_arts:": "\U0001f3ad", + ":persevere:": "\U0001f623", + ":persevering_face:": "\U0001f623", + ":person:": "\U0001f9d1", + ":person_bald:": "\U0001f9d1\u200d\U0001f9b2", + ":person_beard:": "\U0001f9d4", + ":person_biking:": "\U0001f6b4", + ":person_biking_tone1:": "\U0001f6b4\U0001f3fb", + ":person_biking_tone2:": "\U0001f6b4\U0001f3fc", + ":person_biking_tone3:": "\U0001f6b4\U0001f3fd", + ":person_biking_tone4:": "\U0001f6b4\U0001f3fe", + ":person_biking_tone5:": "\U0001f6b4\U0001f3ff", + ":person_blond_hair:": "\U0001f471", + ":person_bouncing_ball:": "\u26f9", + ":person_bouncing_ball_tone1:": "\u26f9\U0001f3fb", + ":person_bouncing_ball_tone2:": "\u26f9\U0001f3fc", + ":person_bouncing_ball_tone3:": "\u26f9\U0001f3fd", + ":person_bouncing_ball_tone4:": "\u26f9\U0001f3fe", + ":person_bouncing_ball_tone5:": "\u26f9\U0001f3ff", + ":person_bowing:": "\U0001f647", + ":person_bowing_tone1:": "\U0001f647\U0001f3fb", + ":person_bowing_tone2:": "\U0001f647\U0001f3fc", + ":person_bowing_tone3:": "\U0001f647\U0001f3fd", + ":person_bowing_tone4:": "\U0001f647\U0001f3fe", + ":person_bowing_tone5:": "\U0001f647\U0001f3ff", + ":person_cartwheeling:": "\U0001f938", + ":person_climbing:": "\U0001f9d7\u200d\u2640\ufe0f", + ":person_climbing_tone1:": "\U0001f9d7\U0001f3fb", + ":person_climbing_tone2:": "\U0001f9d7\U0001f3fc", + ":person_climbing_tone3:": "\U0001f9d7\U0001f3fd", + ":person_climbing_tone4:": "\U0001f9d7\U0001f3fe", + ":person_climbing_tone5:": "\U0001f9d7\U0001f3ff", + ":person_curly_hair:": "\U0001f9d1\u200d\U0001f9b1", + ":person_doing_cartwheel:": "\U0001f938", + ":person_doing_cartwheel_tone1:": "\U0001f938\U0001f3fb", + ":person_doing_cartwheel_tone2:": "\U0001f938\U0001f3fc", + ":person_doing_cartwheel_tone3:": "\U0001f938\U0001f3fd", + ":person_doing_cartwheel_tone4:": "\U0001f938\U0001f3fe", + ":person_doing_cartwheel_tone5:": "\U0001f938\U0001f3ff", + ":person_facepalming:": "\U0001f926", + ":person_facepalming_tone1:": "\U0001f926\U0001f3fb", + ":person_facepalming_tone2:": "\U0001f926\U0001f3fc", + ":person_facepalming_tone3:": "\U0001f926\U0001f3fd", + ":person_facepalming_tone4:": "\U0001f926\U0001f3fe", + ":person_facepalming_tone5:": "\U0001f926\U0001f3ff", + ":person_feeding_baby:": "\U0001f9d1\u200d\U0001f37c", + ":person_fencing:": "\U0001f93a", + ":person_frowning:": "\U0001f64d\u200d\u2640\ufe0f", + ":person_frowning_tone1:": "\U0001f64d\U0001f3fb", + ":person_frowning_tone2:": "\U0001f64d\U0001f3fc", + ":person_frowning_tone3:": "\U0001f64d\U0001f3fd", + ":person_frowning_tone4:": "\U0001f64d\U0001f3fe", + ":person_frowning_tone5:": "\U0001f64d\U0001f3ff", + ":person_gesturing_NO:": "\U0001f645", + ":person_gesturing_OK:": "\U0001f646", + ":person_gesturing_no:": "\U0001f645", + ":person_gesturing_no_tone1:": "\U0001f645\U0001f3fb", + ":person_gesturing_no_tone2:": "\U0001f645\U0001f3fc", + ":person_gesturing_no_tone3:": "\U0001f645\U0001f3fd", + ":person_gesturing_no_tone4:": "\U0001f645\U0001f3fe", + ":person_gesturing_no_tone5:": "\U0001f645\U0001f3ff", + ":person_gesturing_ok:": "\U0001f646", + ":person_gesturing_ok_tone1:": "\U0001f646\U0001f3fb", + ":person_gesturing_ok_tone2:": "\U0001f646\U0001f3fc", + ":person_gesturing_ok_tone3:": "\U0001f646\U0001f3fd", + ":person_gesturing_ok_tone4:": "\U0001f646\U0001f3fe", + ":person_gesturing_ok_tone5:": "\U0001f646\U0001f3ff", + ":person_getting_haircut:": "\U0001f487", + ":person_getting_haircut_tone1:": "\U0001f487\U0001f3fb", + ":person_getting_haircut_tone2:": "\U0001f487\U0001f3fc", + ":person_getting_haircut_tone3:": "\U0001f487\U0001f3fd", + ":person_getting_haircut_tone4:": "\U0001f487\U0001f3fe", + ":person_getting_haircut_tone5:": "\U0001f487\U0001f3ff", + ":person_getting_massage:": "\U0001f486", + ":person_getting_massage_tone1:": "\U0001f486\U0001f3fb", + ":person_getting_massage_tone2:": "\U0001f486\U0001f3fc", + ":person_getting_massage_tone3:": "\U0001f486\U0001f3fd", + ":person_getting_massage_tone4:": "\U0001f486\U0001f3fe", + ":person_getting_massage_tone5:": "\U0001f486\U0001f3ff", + ":person_golfing:": "\U0001f3cc", + ":person_golfing_tone1:": "\U0001f3cc\U0001f3fb", + ":person_golfing_tone2:": "\U0001f3cc\U0001f3fc", + ":person_golfing_tone3:": "\U0001f3cc\U0001f3fd", + ":person_golfing_tone4:": "\U0001f3cc\U0001f3fe", + ":person_golfing_tone5:": "\U0001f3cc\U0001f3ff", + ":person_in_bed:": "\U0001f6cc", + ":person_in_bed_tone1:": "\U0001f6cc\U0001f3fb", + ":person_in_bed_tone2:": "\U0001f6cc\U0001f3fc", + ":person_in_bed_tone3:": "\U0001f6cc\U0001f3fd", + ":person_in_bed_tone4:": "\U0001f6cc\U0001f3fe", + ":person_in_bed_tone5:": "\U0001f6cc\U0001f3ff", + ":person_in_lotus_position:": "\U0001f9d8\u200d\u2640\ufe0f", + ":person_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb", + ":person_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc", + ":person_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd", + ":person_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe", + ":person_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff", + ":person_in_manual_wheelchair:": "\U0001f9d1\u200d\U0001f9bd", + ":person_in_motorized_wheelchair:": "\U0001f9d1\u200d\U0001f9bc", + ":person_in_steamy_room:": "\U0001f9d6\u200d\u2642\ufe0f", + ":person_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb", + ":person_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc", + ":person_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd", + ":person_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe", + ":person_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff", + ":person_in_suit_levitating:": "\U0001f574", + ":person_in_tuxedo:": "\U0001f935", + ":person_juggling:": "\U0001f939", + ":person_juggling_tone1:": "\U0001f939\U0001f3fb", + ":person_juggling_tone2:": "\U0001f939\U0001f3fc", + ":person_juggling_tone3:": "\U0001f939\U0001f3fd", + ":person_juggling_tone4:": "\U0001f939\U0001f3fe", + ":person_juggling_tone5:": "\U0001f939\U0001f3ff", + ":person_kneeling:": "\U0001f9ce", + ":person_lifting_weights:": "\U0001f3cb", + ":person_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb", + ":person_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc", + ":person_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd", + ":person_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe", + ":person_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff", + ":person_mountain_biking:": "\U0001f6b5", + ":person_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb", + ":person_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc", + ":person_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd", + ":person_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe", + ":person_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff", + ":person_playing_handball:": "\U0001f93e", + ":person_playing_handball_tone1:": "\U0001f93e\U0001f3fb", + ":person_playing_handball_tone2:": "\U0001f93e\U0001f3fc", + ":person_playing_handball_tone3:": "\U0001f93e\U0001f3fd", + ":person_playing_handball_tone4:": "\U0001f93e\U0001f3fe", + ":person_playing_handball_tone5:": "\U0001f93e\U0001f3ff", + ":person_playing_water_polo:": "\U0001f93d", + ":person_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb", + ":person_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc", + ":person_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd", + ":person_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe", + ":person_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff", + ":person_pouting:": "\U0001f64e", + ":person_pouting_tone1:": "\U0001f64e\U0001f3fb", + ":person_pouting_tone2:": "\U0001f64e\U0001f3fc", + ":person_pouting_tone3:": "\U0001f64e\U0001f3fd", + ":person_pouting_tone4:": "\U0001f64e\U0001f3fe", + ":person_pouting_tone5:": "\U0001f64e\U0001f3ff", + ":person_raising_hand:": "\U0001f64b", + ":person_raising_hand_tone1:": "\U0001f64b\U0001f3fb", + ":person_raising_hand_tone2:": "\U0001f64b\U0001f3fc", + ":person_raising_hand_tone3:": "\U0001f64b\U0001f3fd", + ":person_raising_hand_tone4:": "\U0001f64b\U0001f3fe", + ":person_raising_hand_tone5:": "\U0001f64b\U0001f3ff", + ":person_red_hair:": "\U0001f9d1\u200d\U0001f9b0", + ":person_rowing_boat:": "\U0001f6a3", + ":person_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb", + ":person_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc", + ":person_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd", + ":person_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe", + ":person_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff", + ":person_running:": "\U0001f3c3", + ":person_running_tone1:": "\U0001f3c3\U0001f3fb", + ":person_running_tone2:": "\U0001f3c3\U0001f3fc", + ":person_running_tone3:": "\U0001f3c3\U0001f3fd", + ":person_running_tone4:": "\U0001f3c3\U0001f3fe", + ":person_running_tone5:": "\U0001f3c3\U0001f3ff", + ":person_shrugging:": "\U0001f937", + ":person_shrugging_tone1:": "\U0001f937\U0001f3fb", + ":person_shrugging_tone2:": "\U0001f937\U0001f3fc", + ":person_shrugging_tone3:": "\U0001f937\U0001f3fd", + ":person_shrugging_tone4:": "\U0001f937\U0001f3fe", + ":person_shrugging_tone5:": "\U0001f937\U0001f3ff", + ":person_standing:": "\U0001f9cd", + ":person_surfing:": "\U0001f3c4", + ":person_surfing_tone1:": "\U0001f3c4\U0001f3fb", + ":person_surfing_tone2:": "\U0001f3c4\U0001f3fc", + ":person_surfing_tone3:": "\U0001f3c4\U0001f3fd", + ":person_surfing_tone4:": "\U0001f3c4\U0001f3fe", + ":person_surfing_tone5:": "\U0001f3c4\U0001f3ff", + ":person_swimming:": "\U0001f3ca", + ":person_swimming_tone1:": "\U0001f3ca\U0001f3fb", + ":person_swimming_tone2:": "\U0001f3ca\U0001f3fc", + ":person_swimming_tone3:": "\U0001f3ca\U0001f3fd", + ":person_swimming_tone4:": "\U0001f3ca\U0001f3fe", + ":person_swimming_tone5:": "\U0001f3ca\U0001f3ff", + ":person_taking_bath:": "\U0001f6c0", + ":person_tipping_hand:": "\U0001f481", + ":person_tipping_hand_tone1:": "\U0001f481\U0001f3fb", + ":person_tipping_hand_tone2:": "\U0001f481\U0001f3fc", + ":person_tipping_hand_tone3:": "\U0001f481\U0001f3fd", + ":person_tipping_hand_tone4:": "\U0001f481\U0001f3fe", + ":person_tipping_hand_tone5:": "\U0001f481\U0001f3ff", + ":person_walking:": "\U0001f6b6", + ":person_walking_tone1:": "\U0001f6b6\U0001f3fb", + ":person_walking_tone2:": "\U0001f6b6\U0001f3fc", + ":person_walking_tone3:": "\U0001f6b6\U0001f3fd", + ":person_walking_tone4:": "\U0001f6b6\U0001f3fe", + ":person_walking_tone5:": "\U0001f6b6\U0001f3ff", + ":person_wearing_turban:": "\U0001f473", + ":person_wearing_turban_tone1:": "\U0001f473\U0001f3fb", + ":person_wearing_turban_tone2:": "\U0001f473\U0001f3fc", + ":person_wearing_turban_tone3:": "\U0001f473\U0001f3fd", + ":person_wearing_turban_tone4:": "\U0001f473\U0001f3fe", + ":person_wearing_turban_tone5:": "\U0001f473\U0001f3ff", + ":person_white_hair:": "\U0001f9d1\u200d\U0001f9b3", + ":person_with_ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f", + ":person_with_blond_hair:": "\U0001f471\u200d\u2642\ufe0f", + ":person_with_headscarf:": "\U0001f9d5", + ":person_with_pouting_face:": "\U0001f64e\u200d\u2640\ufe0f", + ":person_with_probing_cane:": "\U0001f9d1\u200d\U0001f9af", + ":person_with_skullcap:": "\U0001f472", + ":person_with_turban:": "\U0001f473", + ":person_with_veil:": "\U0001f470", + ":person_with_white_cane:": "\U0001f9d1\u200d\U0001f9af", + ":peru:": "\U0001f1f5\U0001f1ea", + ":petri_dish:": "\U0001f9eb", + ":philippines:": "\U0001f1f5\U0001f1ed", + ":phone:": "\u260e\ufe0f", + ":pick:": "\u26cf\ufe0f", + ":pickup_truck:": "\U0001f6fb", + ":pie:": "\U0001f967", + ":pig:": "\U0001f437", + ":pig2:": "\U0001f416", + ":pig_face:": "\U0001f437", + ":pig_nose:": "\U0001f43d", + ":pile_of_poo:": "\U0001f4a9", + ":pill:": "\U0001f48a", + ":pilot:": "\U0001f9d1\u200d\u2708\ufe0f", + ":pinata:": "\U0001fa85", + ":pinched_fingers:": "\U0001f90c", + ":pinching_hand:": "\U0001f90f", + ":pine_decoration:": "\U0001f38d", + ":pineapple:": "\U0001f34d", + ":ping_pong:": "\U0001f3d3", + ":pirate_flag:": "\U0001f3f4\u200d\u2620\ufe0f", + ":pisces:": "\u2653", + ":pitcairn_islands:": "\U0001f1f5\U0001f1f3", + ":pizza:": "\U0001f355", + ":piñata:": "\U0001fa85", + ":placard:": "\U0001faa7", + ":place_of_worship:": "\U0001f6d0", + ":plate_with_cutlery:": "\U0001f37d\ufe0f", + ":play_button:": "\u25b6", + ":play_or_pause_button:": "\u23ef", + ":play_pause:": "\u23ef", + ":pleading_face:": "\U0001f97a", + ":plunger:": "\U0001faa0", + ":plus:": "\u2795", + ":point_down:": "\U0001f447", + ":point_down_tone1:": "\U0001f447\U0001f3fb", + ":point_down_tone2:": "\U0001f447\U0001f3fc", + ":point_down_tone3:": "\U0001f447\U0001f3fd", + ":point_down_tone4:": "\U0001f447\U0001f3fe", + ":point_down_tone5:": "\U0001f447\U0001f3ff", + ":point_left:": "\U0001f448", + ":point_left_tone1:": "\U0001f448\U0001f3fb", + ":point_left_tone2:": "\U0001f448\U0001f3fc", + ":point_left_tone3:": "\U0001f448\U0001f3fd", + ":point_left_tone4:": "\U0001f448\U0001f3fe", + ":point_left_tone5:": "\U0001f448\U0001f3ff", + ":point_right:": "\U0001f449", + ":point_right_tone1:": "\U0001f449\U0001f3fb", + ":point_right_tone2:": "\U0001f449\U0001f3fc", + ":point_right_tone3:": "\U0001f449\U0001f3fd", + ":point_right_tone4:": "\U0001f449\U0001f3fe", + ":point_right_tone5:": "\U0001f449\U0001f3ff", + ":point_up:": "\u261d\ufe0f", + ":point_up_2:": "\U0001f446", + ":point_up_2_tone1:": "\U0001f446\U0001f3fb", + ":point_up_2_tone2:": "\U0001f446\U0001f3fc", + ":point_up_2_tone3:": "\U0001f446\U0001f3fd", + ":point_up_2_tone4:": "\U0001f446\U0001f3fe", + ":point_up_2_tone5:": "\U0001f446\U0001f3ff", + ":point_up_tone1:": "\u261d\U0001f3fb", + ":point_up_tone2:": "\u261d\U0001f3fc", + ":point_up_tone3:": "\u261d\U0001f3fd", + ":point_up_tone4:": "\u261d\U0001f3fe", + ":point_up_tone5:": "\u261d\U0001f3ff", + ":poland:": "\U0001f1f5\U0001f1f1", + ":polar_bear:": "\U0001f43b\u200d\u2744\ufe0f", + ":police_car:": "\U0001f693", + ":police_car_light:": "\U0001f6a8", + ":police_officer:": "\U0001f46e", + ":police_officer_tone1:": "\U0001f46e\U0001f3fb", + ":police_officer_tone2:": "\U0001f46e\U0001f3fc", + ":police_officer_tone3:": "\U0001f46e\U0001f3fd", + ":police_officer_tone4:": "\U0001f46e\U0001f3fe", + ":police_officer_tone5:": "\U0001f46e\U0001f3ff", + ":policeman:": "\U0001f46e\u200d\u2642\ufe0f", + ":policewoman:": "\U0001f46e\u200d\u2640\ufe0f", + ":poodle:": "\U0001f429", + ":pool_8_ball:": "\U0001f3b1", + ":poop:": "\U0001f4a9", + ":popcorn:": "\U0001f37f", + ":portugal:": "\U0001f1f5\U0001f1f9", + ":post_office:": "\U0001f3e3", + ":postal_horn:": "\U0001f4ef", + ":postbox:": "\U0001f4ee", + ":pot_of_food:": "\U0001f372", + ":potable_water:": "\U0001f6b0", + ":potato:": "\U0001f954", + ":potted_plant:": "\U0001fab4", + ":pouch:": "\U0001f45d", + ":poultry_leg:": "\U0001f357", + ":pound:": "\U0001f4b7", + ":pound_banknote:": "\U0001f4b7", + ":pout:": "\U0001f621", + ":pouting_cat:": "\U0001f63e", + ":pouting_face:": "\U0001f621", + ":pouting_man:": "\U0001f64e\u200d\u2642\ufe0f", + ":pouting_woman:": "\U0001f64e\u200d\u2640\ufe0f", + ":pray:": "\U0001f64f", + ":pray_tone1:": "\U0001f64f\U0001f3fb", + ":pray_tone2:": "\U0001f64f\U0001f3fc", + ":pray_tone3:": "\U0001f64f\U0001f3fd", + ":pray_tone4:": "\U0001f64f\U0001f3fe", + ":pray_tone5:": "\U0001f64f\U0001f3ff", + ":prayer_beads:": "\U0001f4ff", + ":pregnant_woman:": "\U0001f930", + ":pregnant_woman_tone1:": "\U0001f930\U0001f3fb", + ":pregnant_woman_tone2:": "\U0001f930\U0001f3fc", + ":pregnant_woman_tone3:": "\U0001f930\U0001f3fd", + ":pregnant_woman_tone4:": "\U0001f930\U0001f3fe", + ":pregnant_woman_tone5:": "\U0001f930\U0001f3ff", + ":pretzel:": "\U0001f968", + ":previous_track_button:": "\u23ee\ufe0f", + ":prince:": "\U0001f934", + ":prince_tone1:": "\U0001f934\U0001f3fb", + ":prince_tone2:": "\U0001f934\U0001f3fc", + ":prince_tone3:": "\U0001f934\U0001f3fd", + ":prince_tone4:": "\U0001f934\U0001f3fe", + ":prince_tone5:": "\U0001f934\U0001f3ff", + ":princess:": "\U0001f478", + ":princess_tone1:": "\U0001f478\U0001f3fb", + ":princess_tone2:": "\U0001f478\U0001f3fc", + ":princess_tone3:": "\U0001f478\U0001f3fd", + ":princess_tone4:": "\U0001f478\U0001f3fe", + ":princess_tone5:": "\U0001f478\U0001f3ff", + ":printer:": "\U0001f5a8\ufe0f", + ":probing_cane:": "\U0001f9af", + ":prohibited:": "\U0001f6ab", + ":projector:": "\U0001f4fd", + ":puerto_rico:": "\U0001f1f5\U0001f1f7", + ":punch:": "\U0001f44a", + ":punch_tone1:": "\U0001f44a\U0001f3fb", + ":punch_tone2:": "\U0001f44a\U0001f3fc", + ":punch_tone3:": "\U0001f44a\U0001f3fd", + ":punch_tone4:": "\U0001f44a\U0001f3fe", + ":punch_tone5:": "\U0001f44a\U0001f3ff", + ":purple_circle:": "\U0001f7e3", + ":purple_heart:": "\U0001f49c", + ":purple_square:": "\U0001f7ea", + ":purse:": "\U0001f45b", + ":pushpin:": "\U0001f4cc", + ":put_litter_in_its_place:": "\U0001f6ae", + ":puzzle_piece:": "\U0001f9e9", + ":qatar:": "\U0001f1f6\U0001f1e6", + ":question:": "\u2753", + ":rabbit:": "\U0001f430", + ":rabbit2:": "\U0001f407", + ":rabbit_face:": "\U0001f430", + ":raccoon:": "\U0001f99d", + ":race_car:": "\U0001f3ce", + ":racehorse:": "\U0001f40e", + ":racing_car:": "\U0001f3ce\ufe0f", + ":racing_motorcycle:": "\U0001f3cd\ufe0f", + ":radio:": "\U0001f4fb", + ":radio_button:": "\U0001f518", + ":radioactive:": "\u2622", + ":radioactive_sign:": "\u2622\ufe0f", + ":rage:": "\U0001f621", + ":railway_car:": "\U0001f683", + ":railway_track:": "\U0001f6e4\ufe0f", + ":rain_cloud:": "\U0001f327\ufe0f", + ":rainbow:": "\U0001f308", + ":rainbow-flag:": "\U0001f3f3\ufe0f\u200d\U0001f308", + ":rainbow_flag:": "\U0001f3f3\ufe0f\u200d\U0001f308", + ":raised_back_of_hand:": "\U0001f91a", + ":raised_back_of_hand_tone1:": "\U0001f91a\U0001f3fb", + ":raised_back_of_hand_tone2:": "\U0001f91a\U0001f3fc", + ":raised_back_of_hand_tone3:": "\U0001f91a\U0001f3fd", + ":raised_back_of_hand_tone4:": "\U0001f91a\U0001f3fe", + ":raised_back_of_hand_tone5:": "\U0001f91a\U0001f3ff", + ":raised_eyebrow:": "\U0001f928", + ":raised_fist:": "\u270a", + ":raised_hand:": "\u270b", + ":raised_hand_tone1:": "\u270b\U0001f3fb", + ":raised_hand_tone2:": "\u270b\U0001f3fc", + ":raised_hand_tone3:": "\u270b\U0001f3fd", + ":raised_hand_tone4:": "\u270b\U0001f3fe", + ":raised_hand_tone5:": "\u270b\U0001f3ff", + ":raised_hand_with_fingers_splayed:": "\U0001f590\ufe0f", + ":raised_hands:": "\U0001f64c", + ":raised_hands_tone1:": "\U0001f64c\U0001f3fb", + ":raised_hands_tone2:": "\U0001f64c\U0001f3fc", + ":raised_hands_tone3:": "\U0001f64c\U0001f3fd", + ":raised_hands_tone4:": "\U0001f64c\U0001f3fe", + ":raised_hands_tone5:": "\U0001f64c\U0001f3ff", + ":raising_hand:": "\U0001f64b\u200d\u2640\ufe0f", + ":raising_hand_man:": "\U0001f64b\u200d\u2642\ufe0f", + ":raising_hand_woman:": "\U0001f64b\u200d\u2640\ufe0f", + ":raising_hands:": "\U0001f64c", + ":ram:": "\U0001f40f", + ":ramen:": "\U0001f35c", + ":rat:": "\U0001f400", + ":razor:": "\U0001fa92", + ":receipt:": "\U0001f9fe", + ":record_button:": "\u23fa", + ":recycle:": "\u267b\ufe0f", + ":recycling_symbol:": "\u267b", + ":red_apple:": "\U0001f34e", + ":red_car:": "\U0001f697", + ":red_circle:": "\U0001f534", + ":red_envelope:": "\U0001f9e7", + ":red_exclamation_mark:": "\u2757", + ":red_hair:": "\U0001f9b0", + ":red_haired_man:": "\U0001f468\u200d\U0001f9b0", + ":red_haired_person:": "\U0001f9d1\u200d\U0001f9b0", + ":red_haired_woman:": "\U0001f469\u200d\U0001f9b0", + ":red_heart:": "\u2764", + ":red_paper_lantern:": "\U0001f3ee", + ":red_question_mark:": "\u2753", + ":red_square:": "\U0001f7e5", + ":red_triangle_pointed_down:": "\U0001f53b", + ":red_triangle_pointed_up:": "\U0001f53a", + ":registered:": "\u00ae\ufe0f", + ":relaxed:": "\u263a\ufe0f", + ":relieved:": "\U0001f60c", + ":relieved_face:": "\U0001f60c", + ":reminder_ribbon:": "\U0001f397\ufe0f", + ":repeat:": "\U0001f501", + ":repeat_button:": "\U0001f501", + ":repeat_one:": "\U0001f502", + ":repeat_single_button:": "\U0001f502", + ":rescue_worker_helmet:": "\u26d1\ufe0f", + ":rescue_worker’s_helmet:": "\u26d1", + ":restroom:": "\U0001f6bb", + ":reunion:": "\U0001f1f7\U0001f1ea", + ":reverse_button:": "\u25c0", + ":revolving_hearts:": "\U0001f49e", + ":rewind:": "\u23ea", + ":rhino:": "\U0001f98f", + ":rhinoceros:": "\U0001f98f", + ":ribbon:": "\U0001f380", + ":rice:": "\U0001f35a", + ":rice_ball:": "\U0001f359", + ":rice_cracker:": "\U0001f358", + ":rice_scene:": "\U0001f391", + ":right-facing_fist:": "\U0001f91c", + ":right_anger_bubble:": "\U0001f5ef\ufe0f", + ":right_arrow:": "\u27a1", + ":right_arrow_curving_down:": "\u2935", + ":right_arrow_curving_left:": "\u21a9", + ":right_arrow_curving_up:": "\u2934", + ":right_facing_fist:": "\U0001f91c", + ":right_facing_fist_tone1:": "\U0001f91c\U0001f3fb", + ":right_facing_fist_tone2:": "\U0001f91c\U0001f3fc", + ":right_facing_fist_tone3:": "\U0001f91c\U0001f3fd", + ":right_facing_fist_tone4:": "\U0001f91c\U0001f3fe", + ":right_facing_fist_tone5:": "\U0001f91c\U0001f3ff", + ":ring:": "\U0001f48d", + ":ringed_planet:": "\U0001fa90", + ":roasted_sweet_potato:": "\U0001f360", + ":robot:": "\U0001f916", + ":robot_face:": "\U0001f916", + ":rock:": "\U0001faa8", + ":rocket:": "\U0001f680", + ":rofl:": "\U0001f923", + ":roll_eyes:": "\U0001f644", + ":roll_of_paper:": "\U0001f9fb", + ":rolled-up_newspaper:": "\U0001f5de", + ":rolled_up_newspaper:": "\U0001f5de\ufe0f", + ":roller_coaster:": "\U0001f3a2", + ":roller_skate:": "\U0001f6fc", + ":rolling_eyes:": "\U0001f644", + ":rolling_on_the_floor_laughing:": "\U0001f923", + ":romania:": "\U0001f1f7\U0001f1f4", + ":rooster:": "\U0001f413", + ":rose:": "\U0001f339", + ":rosette:": "\U0001f3f5\ufe0f", + ":rotating_light:": "\U0001f6a8", + ":round_pushpin:": "\U0001f4cd", + ":rowboat:": "\U0001f6a3\u200d\u2642\ufe0f", + ":rowing_man:": "\U0001f6a3\u200d\u2642\ufe0f", + ":rowing_woman:": "\U0001f6a3\u200d\u2640\ufe0f", + ":ru:": "\U0001f1f7\U0001f1fa", + ":rugby_football:": "\U0001f3c9", + ":runner:": "\U0001f3c3\u200d\u2642\ufe0f", + ":running:": "\U0001f3c3", + ":running_man:": "\U0001f3c3\u200d\u2642\ufe0f", + ":running_shirt:": "\U0001f3bd", + ":running_shirt_with_sash:": "\U0001f3bd", + ":running_shoe:": "\U0001f45f", + ":running_woman:": "\U0001f3c3\u200d\u2640\ufe0f", + ":rwanda:": "\U0001f1f7\U0001f1fc", + ":sa:": "\U0001f202\ufe0f", + ":sad_but_relieved_face:": "\U0001f625", + ":safety_pin:": "\U0001f9f7", + ":safety_vest:": "\U0001f9ba", + ":sagittarius:": "\u2650", + ":sailboat:": "\u26f5", + ":sake:": "\U0001f376", + ":salad:": "\U0001f957", + ":salt:": "\U0001f9c2", + ":samoa:": "\U0001f1fc\U0001f1f8", + ":san_marino:": "\U0001f1f8\U0001f1f2", + ":sandal:": "\U0001f461", + ":sandwich:": "\U0001f96a", + ":santa:": "\U0001f385", + ":santa_tone1:": "\U0001f385\U0001f3fb", + ":santa_tone2:": "\U0001f385\U0001f3fc", + ":santa_tone3:": "\U0001f385\U0001f3fd", + ":santa_tone4:": "\U0001f385\U0001f3fe", + ":santa_tone5:": "\U0001f385\U0001f3ff", + ":sao_tome_principe:": "\U0001f1f8\U0001f1f9", + ":sari:": "\U0001f97b", + ":sassy_man:": "\U0001f481\u200d\u2642\ufe0f", + ":sassy_woman:": "\U0001f481\u200d\u2640\ufe0f", + ":satellite:": "\U0001f6f0\ufe0f", + ":satellite_antenna:": "\U0001f4e1", + ":satellite_orbital:": "\U0001f6f0", + ":satisfied:": "\U0001f606", + ":saudi_arabia:": "\U0001f1f8\U0001f1e6", + ":sauna_man:": "\U0001f9d6\u200d\u2642\ufe0f", + ":sauna_person:": "\U0001f9d6", + ":sauna_woman:": "\U0001f9d6\u200d\u2640\ufe0f", + ":sauropod:": "\U0001f995", + ":saxophone:": "\U0001f3b7", + ":scales:": "\u2696\ufe0f", + ":scarf:": "\U0001f9e3", + ":school:": "\U0001f3eb", + ":school_satchel:": "\U0001f392", + ":scientist:": "\U0001f9d1\u200d\U0001f52c", + ":scissors:": "\u2702\ufe0f", + ":scooter:": "\U0001f6f4", + ":scorpion:": "\U0001f982", + ":scorpius:": "\u264f", + ":scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f", + ":scream:": "\U0001f631", + ":scream_cat:": "\U0001f640", + ":screwdriver:": "\U0001fa9b", + ":scroll:": "\U0001f4dc", + ":seal:": "\U0001f9ad", + ":seat:": "\U0001f4ba", + ":second_place:": "\U0001f948", + ":second_place_medal:": "\U0001f948", + ":secret:": "\u3299\ufe0f", + ":see-no-evil_monkey:": "\U0001f648", + ":see_no_evil:": "\U0001f648", + ":seedling:": "\U0001f331", + ":selfie:": "\U0001f933", + ":selfie_tone1:": "\U0001f933\U0001f3fb", + ":selfie_tone2:": "\U0001f933\U0001f3fc", + ":selfie_tone3:": "\U0001f933\U0001f3fd", + ":selfie_tone4:": "\U0001f933\U0001f3fe", + ":selfie_tone5:": "\U0001f933\U0001f3ff", + ":senegal:": "\U0001f1f8\U0001f1f3", + ":serbia:": "\U0001f1f7\U0001f1f8", + ":service_dog:": "\U0001f415\u200d\U0001f9ba", + ":seven:": "7\ufe0f\u20e3", + ":seven-thirty:": "\U0001f562", + ":seven_o’clock:": "\U0001f556", + ":sewing_needle:": "\U0001faa1", + ":seychelles:": "\U0001f1f8\U0001f1e8", + ":shallow_pan_of_food:": "\U0001f958", + ":shamrock:": "\u2618\ufe0f", + ":shark:": "\U0001f988", + ":shaved_ice:": "\U0001f367", + ":sheaf_of_rice:": "\U0001f33e", + ":sheep:": "\U0001f411", + ":shell:": "\U0001f41a", + ":shield:": "\U0001f6e1\ufe0f", + ":shinto_shrine:": "\u26e9\ufe0f", + ":ship:": "\U0001f6a2", + ":shirt:": "\U0001f455", + ":shit:": "\U0001f4a9", + ":shoe:": "\U0001f45e", + ":shooting_star:": "\U0001f320", + ":shopping:": "\U0001f6cd\ufe0f", + ":shopping_bags:": "\U0001f6cd\ufe0f", + ":shopping_cart:": "\U0001f6d2", + ":shopping_trolley:": "\U0001f6d2", + ":shortcake:": "\U0001f370", + ":shorts:": "\U0001fa73", + ":shower:": "\U0001f6bf", + ":shrimp:": "\U0001f990", + ":shrug:": "\U0001f937", + ":shuffle_tracks_button:": "\U0001f500", + ":shushing_face:": "\U0001f92b", + ":sierra_leone:": "\U0001f1f8\U0001f1f1", + ":sign_of_the_horns:": "\U0001f918", + ":signal_strength:": "\U0001f4f6", + ":singapore:": "\U0001f1f8\U0001f1ec", + ":singer:": "\U0001f9d1\u200d\U0001f3a4", + ":sint_maarten:": "\U0001f1f8\U0001f1fd", + ":six:": "6\ufe0f\u20e3", + ":six-thirty:": "\U0001f561", + ":six_o’clock:": "\U0001f555", + ":six_pointed_star:": "\U0001f52f", + ":skateboard:": "\U0001f6f9", + ":ski:": "\U0001f3bf", + ":skier:": "\u26f7\ufe0f", + ":skin-tone-2:": "\U0001f3fb", + ":skin-tone-3:": "\U0001f3fc", + ":skin-tone-4:": "\U0001f3fd", + ":skin-tone-5:": "\U0001f3fe", + ":skin-tone-6:": "\U0001f3ff", + ":skis:": "\U0001f3bf", + ":skull:": "\U0001f480", + ":skull_and_crossbones:": "\u2620\ufe0f", + ":skull_crossbones:": "\u2620", + ":skunk:": "\U0001f9a8", + ":sled:": "\U0001f6f7", + ":sleeping:": "\U0001f634", + ":sleeping_accommodation:": "\U0001f6cc", + ":sleeping_bed:": "\U0001f6cc", + ":sleeping_face:": "\U0001f634", + ":sleepy:": "\U0001f62a", + ":sleepy_face:": "\U0001f62a", + ":sleuth_or_spy:": "\U0001f575\ufe0f\u200d\u2642\ufe0f", + ":slight_frown:": "\U0001f641", + ":slight_smile:": "\U0001f642", + ":slightly_frowning_face:": "\U0001f641", + ":slightly_smiling_face:": "\U0001f642", + ":slot_machine:": "\U0001f3b0", + ":sloth:": "\U0001f9a5", + ":slovakia:": "\U0001f1f8\U0001f1f0", + ":slovenia:": "\U0001f1f8\U0001f1ee", + ":small_airplane:": "\U0001f6e9\ufe0f", + ":small_blue_diamond:": "\U0001f539", + ":small_orange_diamond:": "\U0001f538", + ":small_red_triangle:": "\U0001f53a", + ":small_red_triangle_down:": "\U0001f53b", + ":smile:": "\U0001f604", + ":smile_cat:": "\U0001f638", + ":smiley:": "\U0001f603", + ":smiley_cat:": "\U0001f63a", + ":smiling_cat_with_heart-eyes:": "\U0001f63b", + ":smiling_face:": "\u263a", + ":smiling_face_with_3_hearts:": "\U0001f970", + ":smiling_face_with_halo:": "\U0001f607", + ":smiling_face_with_heart-eyes:": "\U0001f60d", + ":smiling_face_with_hearts:": "\U0001f970", + ":smiling_face_with_horns:": "\U0001f608", + ":smiling_face_with_smiling_eyes:": "\U0001f60a", + ":smiling_face_with_sunglasses:": "\U0001f60e", + ":smiling_face_with_tear:": "\U0001f972", + ":smiling_face_with_three_hearts:": "\U0001f970", + ":smiling_imp:": "\U0001f608", + ":smirk:": "\U0001f60f", + ":smirk_cat:": "\U0001f63c", + ":smirking_face:": "\U0001f60f", + ":smoking:": "\U0001f6ac", + ":snail:": "\U0001f40c", + ":snake:": "\U0001f40d", + ":sneezing_face:": "\U0001f927", + ":snow-capped_mountain:": "\U0001f3d4", + ":snow_capped_mountain:": "\U0001f3d4\ufe0f", + ":snow_cloud:": "\U0001f328\ufe0f", + ":snowboarder:": "\U0001f3c2", + ":snowboarder_tone1:": "\U0001f3c2\U0001f3fb", + ":snowboarder_tone2:": "\U0001f3c2\U0001f3fc", + ":snowboarder_tone3:": "\U0001f3c2\U0001f3fd", + ":snowboarder_tone4:": "\U0001f3c2\U0001f3fe", + ":snowboarder_tone5:": "\U0001f3c2\U0001f3ff", + ":snowflake:": "\u2744\ufe0f", + ":snowman:": "\u2603\ufe0f", + ":snowman2:": "\u2603", + ":snowman_with_snow:": "\u2603\ufe0f", + ":snowman_without_snow:": "\u26c4", + ":soap:": "\U0001f9fc", + ":sob:": "\U0001f62d", + ":soccer:": "\u26bd", + ":soccer_ball:": "\u26bd", + ":socks:": "\U0001f9e6", + ":soft_ice_cream:": "\U0001f366", + ":softball:": "\U0001f94e", + ":solomon_islands:": "\U0001f1f8\U0001f1e7", + ":somalia:": "\U0001f1f8\U0001f1f4", + ":soon:": "\U0001f51c", + ":sos:": "\U0001f198", + ":sound:": "\U0001f509", + ":south_africa:": "\U0001f1ff\U0001f1e6", + ":south_georgia_south_sandwich_islands:": "\U0001f1ec\U0001f1f8", + ":south_sudan:": "\U0001f1f8\U0001f1f8", + ":space_invader:": "\U0001f47e", + ":spade_suit:": "\u2660", + ":spades:": "\u2660\ufe0f", + ":spaghetti:": "\U0001f35d", + ":sparkle:": "\u2747\ufe0f", + ":sparkler:": "\U0001f387", + ":sparkles:": "\u2728", + ":sparkling_heart:": "\U0001f496", + ":speak-no-evil_monkey:": "\U0001f64a", + ":speak_no_evil:": "\U0001f64a", + ":speaker:": "\U0001f508", + ":speaker_high_volume:": "\U0001f50a", + ":speaker_low_volume:": "\U0001f508", + ":speaker_medium_volume:": "\U0001f509", + ":speaking_head:": "\U0001f5e3", + ":speaking_head_in_silhouette:": "\U0001f5e3\ufe0f", + ":speech_balloon:": "\U0001f4ac", + ":speech_left:": "\U0001f5e8", + ":speedboat:": "\U0001f6a4", + ":spider:": "\U0001f577\ufe0f", + ":spider_web:": "\U0001f578\ufe0f", + ":spiral_calendar:": "\U0001f5d3", + ":spiral_calendar_pad:": "\U0001f5d3\ufe0f", + ":spiral_note_pad:": "\U0001f5d2\ufe0f", + ":spiral_notepad:": "\U0001f5d2", + ":spiral_shell:": "\U0001f41a", + ":spock-hand:": "\U0001f596", + ":sponge:": "\U0001f9fd", + ":spoon:": "\U0001f944", + ":sport_utility_vehicle:": "\U0001f699", + ":sports_medal:": "\U0001f3c5", + ":spouting_whale:": "\U0001f433", + ":squid:": "\U0001f991", + ":squinting_face_with_tongue:": "\U0001f61d", + ":sri_lanka:": "\U0001f1f1\U0001f1f0", + ":st_barthelemy:": "\U0001f1e7\U0001f1f1", + ":st_helena:": "\U0001f1f8\U0001f1ed", + ":st_kitts_nevis:": "\U0001f1f0\U0001f1f3", + ":st_lucia:": "\U0001f1f1\U0001f1e8", + ":st_martin:": "\U0001f1f2\U0001f1eb", + ":st_pierre_miquelon:": "\U0001f1f5\U0001f1f2", + ":st_vincent_grenadines:": "\U0001f1fb\U0001f1e8", + ":stadium:": "\U0001f3df\ufe0f", + ":standing_man:": "\U0001f9cd\u200d\u2642\ufe0f", + ":standing_person:": "\U0001f9cd", + ":standing_woman:": "\U0001f9cd\u200d\u2640\ufe0f", + ":star:": "\u2b50", + ":star-struck:": "\U0001f929", + ":star2:": "\U0001f31f", + ":star_and_crescent:": "\u262a\ufe0f", + ":star_of_David:": "\u2721", + ":star_of_david:": "\u2721\ufe0f", + ":star_struck:": "\U0001f929", + ":stars:": "\U0001f320", + ":station:": "\U0001f689", + ":statue_of_liberty:": "\U0001f5fd", + ":steam_locomotive:": "\U0001f682", + ":steaming_bowl:": "\U0001f35c", + ":stethoscope:": "\U0001fa7a", + ":stew:": "\U0001f372", + ":stop_button:": "\u23f9", + ":stop_sign:": "\U0001f6d1", + ":stopwatch:": "\u23f1\ufe0f", + ":straight_ruler:": "\U0001f4cf", + ":strawberry:": "\U0001f353", + ":stuck_out_tongue:": "\U0001f61b", + ":stuck_out_tongue_closed_eyes:": "\U0001f61d", + ":stuck_out_tongue_winking_eye:": "\U0001f61c", + ":student:": "\U0001f9d1\u200d\U0001f393", + ":studio_microphone:": "\U0001f399\ufe0f", + ":stuffed_flatbread:": "\U0001f959", + ":sudan:": "\U0001f1f8\U0001f1e9", + ":sun:": "\u2600", + ":sun_behind_cloud:": "\u26c5", + ":sun_behind_large_cloud:": "\U0001f325", + ":sun_behind_rain_cloud:": "\U0001f326", + ":sun_behind_small_cloud:": "\U0001f324", + ":sun_with_face:": "\U0001f31e", + ":sunflower:": "\U0001f33b", + ":sunglasses:": "\U0001f60e", + ":sunny:": "\u2600\ufe0f", + ":sunrise:": "\U0001f305", + ":sunrise_over_mountains:": "\U0001f304", + ":sunset:": "\U0001f307", + ":superhero:": "\U0001f9b8", + ":superhero_man:": "\U0001f9b8\u200d\u2642\ufe0f", + ":superhero_woman:": "\U0001f9b8\u200d\u2640\ufe0f", + ":supervillain:": "\U0001f9b9", + ":supervillain_man:": "\U0001f9b9\u200d\u2642\ufe0f", + ":supervillain_woman:": "\U0001f9b9\u200d\u2640\ufe0f", + ":surfer:": "\U0001f3c4\u200d\u2642\ufe0f", + ":surfing_man:": "\U0001f3c4\u200d\u2642\ufe0f", + ":surfing_woman:": "\U0001f3c4\u200d\u2640\ufe0f", + ":suriname:": "\U0001f1f8\U0001f1f7", + ":sushi:": "\U0001f363", + ":suspension_railway:": "\U0001f69f", + ":svalbard_jan_mayen:": "\U0001f1f8\U0001f1ef", + ":swan:": "\U0001f9a2", + ":swaziland:": "\U0001f1f8\U0001f1ff", + ":sweat:": "\U0001f613", + ":sweat_droplets:": "\U0001f4a6", + ":sweat_drops:": "\U0001f4a6", + ":sweat_smile:": "\U0001f605", + ":sweden:": "\U0001f1f8\U0001f1ea", + ":sweet_potato:": "\U0001f360", + ":swim_brief:": "\U0001fa72", + ":swimmer:": "\U0001f3ca\u200d\u2642\ufe0f", + ":swimming_man:": "\U0001f3ca\u200d\u2642\ufe0f", + ":swimming_woman:": "\U0001f3ca\u200d\u2640\ufe0f", + ":switzerland:": "\U0001f1e8\U0001f1ed", + ":symbols:": "\U0001f523", + ":synagogue:": "\U0001f54d", + ":syria:": "\U0001f1f8\U0001f1fe", + ":syringe:": "\U0001f489", + ":t-rex:": "\U0001f996", + ":t-shirt:": "\U0001f455", + ":t_rex:": "\U0001f996", + ":table_tennis_paddle_and_ball:": "\U0001f3d3", + ":taco:": "\U0001f32e", + ":tada:": "\U0001f389", + ":taiwan:": "\U0001f1f9\U0001f1fc", + ":tajikistan:": "\U0001f1f9\U0001f1ef", + ":takeout_box:": "\U0001f961", + ":tamale:": "\U0001fad4", + ":tanabata_tree:": "\U0001f38b", + ":tangerine:": "\U0001f34a", + ":tanzania:": "\U0001f1f9\U0001f1ff", + ":taurus:": "\u2649", + ":taxi:": "\U0001f695", + ":tea:": "\U0001f375", + ":teacher:": "\U0001f9d1\u200d\U0001f3eb", + ":teacup_without_handle:": "\U0001f375", + ":teapot:": "\U0001fad6", + ":tear-off_calendar:": "\U0001f4c6", + ":technologist:": "\U0001f9d1\u200d\U0001f4bb", + ":teddy_bear:": "\U0001f9f8", + ":telephone:": "\u260e", + ":telephone_receiver:": "\U0001f4de", + ":telescope:": "\U0001f52d", + ":television:": "\U0001f4fa", + ":ten-thirty:": "\U0001f565", + ":ten_o’clock:": "\U0001f559", + ":tennis:": "\U0001f3be", + ":tent:": "\u26fa", + ":test_tube:": "\U0001f9ea", + ":thailand:": "\U0001f1f9\U0001f1ed", + ":the_horns:": "\U0001f918", + ":thermometer:": "\U0001f321\ufe0f", + ":thermometer_face:": "\U0001f912", + ":thinking:": "\U0001f914", + ":thinking_face:": "\U0001f914", + ":third_place:": "\U0001f949", + ":third_place_medal:": "\U0001f949", + ":thong_sandal:": "\U0001fa74", + ":thought_balloon:": "\U0001f4ad", + ":thread:": "\U0001f9f5", + ":three:": "3\ufe0f\u20e3", + ":three-thirty:": "\U0001f55e", + ":three_button_mouse:": "\U0001f5b1\ufe0f", + ":three_o’clock:": "\U0001f552", + ":thumbs_down:": "\U0001f44e", + ":thumbs_up:": "\U0001f44d", + ":thumbsdown:": "\U0001f44e", + ":thumbsdown_tone1:": "\U0001f44e\U0001f3fb", + ":thumbsdown_tone2:": "\U0001f44e\U0001f3fc", + ":thumbsdown_tone3:": "\U0001f44e\U0001f3fd", + ":thumbsdown_tone4:": "\U0001f44e\U0001f3fe", + ":thumbsdown_tone5:": "\U0001f44e\U0001f3ff", + ":thumbsup:": "\U0001f44d", + ":thumbsup_tone1:": "\U0001f44d\U0001f3fb", + ":thumbsup_tone2:": "\U0001f44d\U0001f3fc", + ":thumbsup_tone3:": "\U0001f44d\U0001f3fd", + ":thumbsup_tone4:": "\U0001f44d\U0001f3fe", + ":thumbsup_tone5:": "\U0001f44d\U0001f3ff", + ":thunder_cloud_and_rain:": "\u26c8\ufe0f", + ":thunder_cloud_rain:": "\u26c8", + ":ticket:": "\U0001f3ab", + ":tickets:": "\U0001f39f", + ":tiger:": "\U0001f42f", + ":tiger2:": "\U0001f405", + ":tiger_face:": "\U0001f42f", + ":timer:": "\u23f2", + ":timer_clock:": "\u23f2\ufe0f", + ":timor_leste:": "\U0001f1f9\U0001f1f1", + ":tipping_hand_man:": "\U0001f481\u200d\u2642\ufe0f", + ":tipping_hand_person:": "\U0001f481", + ":tipping_hand_woman:": "\U0001f481\u200d\u2640\ufe0f", + ":tired_face:": "\U0001f62b", + ":tm:": "\u2122\ufe0f", + ":togo:": "\U0001f1f9\U0001f1ec", + ":toilet:": "\U0001f6bd", + ":tokelau:": "\U0001f1f9\U0001f1f0", + ":tokyo_tower:": "\U0001f5fc", + ":tomato:": "\U0001f345", + ":tonga:": "\U0001f1f9\U0001f1f4", + ":tongue:": "\U0001f445", + ":toolbox:": "\U0001f9f0", + ":tools:": "\U0001f6e0", + ":tooth:": "\U0001f9b7", + ":toothbrush:": "\U0001faa5", + ":top:": "\U0001f51d", + ":top_hat:": "\U0001f3a9", + ":tophat:": "\U0001f3a9", + ":tornado:": "\U0001f32a\ufe0f", + ":tr:": "\U0001f1f9\U0001f1f7", + ":track_next:": "\u23ed", + ":track_previous:": "\u23ee", + ":trackball:": "\U0001f5b2\ufe0f", + ":tractor:": "\U0001f69c", + ":trade_mark:": "\u2122", + ":traffic_light:": "\U0001f6a5", + ":train:": "\U0001f68b", + ":train2:": "\U0001f686", + ":tram:": "\U0001f68a", + ":tram_car:": "\U0001f68b", + ":transgender_flag:": "\U0001f3f3\ufe0f\u200d\u26a7\ufe0f", + ":transgender_symbol:": "\u26a7\ufe0f", + ":triangular_flag:": "\U0001f6a9", + ":triangular_flag_on_post:": "\U0001f6a9", + ":triangular_ruler:": "\U0001f4d0", + ":trident:": "\U0001f531", + ":trident_emblem:": "\U0001f531", + ":trinidad_tobago:": "\U0001f1f9\U0001f1f9", + ":tristan_da_cunha:": "\U0001f1f9\U0001f1e6", + ":triumph:": "\U0001f624", + ":trolleybus:": "\U0001f68e", + ":trophy:": "\U0001f3c6", + ":tropical_drink:": "\U0001f379", + ":tropical_fish:": "\U0001f420", + ":truck:": "\U0001f69a", + ":trumpet:": "\U0001f3ba", + ":tshirt:": "\U0001f455", + ":tulip:": "\U0001f337", + ":tumbler_glass:": "\U0001f943", + ":tunisia:": "\U0001f1f9\U0001f1f3", + ":turkey:": "\U0001f983", + ":turkmenistan:": "\U0001f1f9\U0001f1f2", + ":turks_caicos_islands:": "\U0001f1f9\U0001f1e8", + ":turtle:": "\U0001f422", + ":tuvalu:": "\U0001f1f9\U0001f1fb", + ":tv:": "\U0001f4fa", + ":twelve-thirty:": "\U0001f567", + ":twelve_o’clock:": "\U0001f55b", + ":twisted_rightwards_arrows:": "\U0001f500", + ":two:": "2\ufe0f\u20e3", + ":two-hump_camel:": "\U0001f42b", + ":two-thirty:": "\U0001f55d", + ":two_hearts:": "\U0001f495", + ":two_men_holding_hands:": "\U0001f46c", + ":two_o’clock:": "\U0001f551", + ":two_women_holding_hands:": "\U0001f46d", + ":u5272:": "\U0001f239", + ":u5408:": "\U0001f234", + ":u55b6:": "\U0001f23a", + ":u6307:": "\U0001f22f", + ":u6708:": "\U0001f237\ufe0f", + ":u6709:": "\U0001f236", + ":u6e80:": "\U0001f235", + ":u7121:": "\U0001f21a", + ":u7533:": "\U0001f238", + ":u7981:": "\U0001f232", + ":u7a7a:": "\U0001f233", + ":uganda:": "\U0001f1fa\U0001f1ec", + ":uk:": "\U0001f1ec\U0001f1e7", + ":ukraine:": "\U0001f1fa\U0001f1e6", + ":umbrella:": "\u2602\ufe0f", + ":umbrella2:": "\u2602", + ":umbrella_on_ground:": "\u26f1\ufe0f", + ":umbrella_with_rain_drops:": "\u2614", + ":unamused:": "\U0001f612", + ":unamused_face:": "\U0001f612", + ":underage:": "\U0001f51e", + ":unicorn:": "\U0001f984", + ":unicorn_face:": "\U0001f984", + ":united_arab_emirates:": "\U0001f1e6\U0001f1ea", + ":united_nations:": "\U0001f1fa\U0001f1f3", + ":unlock:": "\U0001f513", + ":unlocked:": "\U0001f513", + ":up:": "\U0001f199", + ":up-down_arrow:": "\u2195", + ":up-left_arrow:": "\u2196", + ":up-right_arrow:": "\u2197", + ":up_arrow:": "\u2b06", + ":upside-down_face:": "\U0001f643", + ":upside_down:": "\U0001f643", + ":upside_down_face:": "\U0001f643", + ":upwards_button:": "\U0001f53c", + ":urn:": "\u26b1", + ":uruguay:": "\U0001f1fa\U0001f1fe", + ":us:": "\U0001f1fa\U0001f1f8", + ":us_outlying_islands:": "\U0001f1fa\U0001f1f2", + ":us_virgin_islands:": "\U0001f1fb\U0001f1ee", + ":uzbekistan:": "\U0001f1fa\U0001f1ff", + ":v:": "\u270c\ufe0f", + ":v_tone1:": "\u270c\U0001f3fb", + ":v_tone2:": "\u270c\U0001f3fc", + ":v_tone3:": "\u270c\U0001f3fd", + ":v_tone4:": "\u270c\U0001f3fe", + ":v_tone5:": "\u270c\U0001f3ff", + ":vampire:": "\U0001f9db\u200d\u2640\ufe0f", + ":vampire_man:": "\U0001f9db\u200d\u2642\ufe0f", + ":vampire_tone1:": "\U0001f9db\U0001f3fb", + ":vampire_tone2:": "\U0001f9db\U0001f3fc", + ":vampire_tone3:": "\U0001f9db\U0001f3fd", + ":vampire_tone4:": "\U0001f9db\U0001f3fe", + ":vampire_tone5:": "\U0001f9db\U0001f3ff", + ":vampire_woman:": "\U0001f9db\u200d\u2640\ufe0f", + ":vanuatu:": "\U0001f1fb\U0001f1fa", + ":vatican_city:": "\U0001f1fb\U0001f1e6", + ":venezuela:": "\U0001f1fb\U0001f1ea", + ":vertical_traffic_light:": "\U0001f6a6", + ":vhs:": "\U0001f4fc", + ":vibration_mode:": "\U0001f4f3", + ":victory_hand:": "\u270c", + ":video_camera:": "\U0001f4f9", + ":video_game:": "\U0001f3ae", + ":videocassette:": "\U0001f4fc", + ":vietnam:": "\U0001f1fb\U0001f1f3", + ":violin:": "\U0001f3bb", + ":virgo:": "\u264d", + ":volcano:": "\U0001f30b", + ":volleyball:": "\U0001f3d0", + ":vomiting_face:": "\U0001f92e", + ":vs:": "\U0001f19a", + ":vulcan:": "\U0001f596", + ":vulcan_salute:": "\U0001f596", + ":vulcan_tone1:": "\U0001f596\U0001f3fb", + ":vulcan_tone2:": "\U0001f596\U0001f3fc", + ":vulcan_tone3:": "\U0001f596\U0001f3fd", + ":vulcan_tone4:": "\U0001f596\U0001f3fe", + ":vulcan_tone5:": "\U0001f596\U0001f3ff", + ":waffle:": "\U0001f9c7", + ":wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f", + ":walking:": "\U0001f6b6\u200d\u2642\ufe0f", + ":walking_man:": "\U0001f6b6\u200d\u2642\ufe0f", + ":walking_woman:": "\U0001f6b6\u200d\u2640\ufe0f", + ":wallis_futuna:": "\U0001f1fc\U0001f1eb", + ":waning_crescent_moon:": "\U0001f318", + ":waning_gibbous_moon:": "\U0001f316", + ":warning:": "\u26a0\ufe0f", + ":wastebasket:": "\U0001f5d1\ufe0f", + ":watch:": "\u231a", + ":water_buffalo:": "\U0001f403", + ":water_closet:": "\U0001f6be", + ":water_pistol:": "\U0001f52b", + ":water_polo:": "\U0001f93d", + ":water_wave:": "\U0001f30a", + ":watermelon:": "\U0001f349", + ":wave:": "\U0001f44b", + ":wave_tone1:": "\U0001f44b\U0001f3fb", + ":wave_tone2:": "\U0001f44b\U0001f3fc", + ":wave_tone3:": "\U0001f44b\U0001f3fd", + ":wave_tone4:": "\U0001f44b\U0001f3fe", + ":wave_tone5:": "\U0001f44b\U0001f3ff", + ":waving_black_flag:": "\U0001f3f4", + ":waving_hand:": "\U0001f44b", + ":waving_white_flag:": "\U0001f3f3\ufe0f", + ":wavy_dash:": "\u3030\ufe0f", + ":waxing_crescent_moon:": "\U0001f312", + ":waxing_gibbous_moon:": "\U0001f314", + ":wc:": "\U0001f6be", + ":weary:": "\U0001f629", + ":weary_cat:": "\U0001f640", + ":weary_face:": "\U0001f629", + ":wedding:": "\U0001f492", + ":weight_lifter:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", + ":weight_lifting:": "\U0001f3cb\ufe0f", + ":weight_lifting_man:": "\U0001f3cb\ufe0f\u200d\u2642\ufe0f", + ":weight_lifting_woman:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", + ":western_sahara:": "\U0001f1ea\U0001f1ed", + ":whale:": "\U0001f433", + ":whale2:": "\U0001f40b", + ":wheel_of_dharma:": "\u2638\ufe0f", + ":wheelchair:": "\u267f", + ":wheelchair_symbol:": "\u267f", + ":white_cane:": "\U0001f9af", + ":white_check_mark:": "\u2705", + ":white_circle:": "\u26aa", + ":white_exclamation_mark:": "\u2755", + ":white_flag:": "\U0001f3f3", + ":white_flower:": "\U0001f4ae", + ":white_frowning_face:": "\u2639\ufe0f", + ":white_hair:": "\U0001f9b3", + ":white_haired_man:": "\U0001f468\u200d\U0001f9b3", + ":white_haired_person:": "\U0001f9d1\u200d\U0001f9b3", + ":white_haired_woman:": "\U0001f469\u200d\U0001f9b3", + ":white_heart:": "\U0001f90d", + ":white_large_square:": "\u2b1c", + ":white_medium-small_square:": "\u25fd", + ":white_medium_small_square:": "\u25fd", + ":white_medium_square:": "\u25fb\ufe0f", + ":white_question_mark:": "\u2754", + ":white_small_square:": "\u25ab\ufe0f", + ":white_square_button:": "\U0001f533", + ":white_sun_cloud:": "\U0001f325", + ":white_sun_rain_cloud:": "\U0001f326", + ":white_sun_small_cloud:": "\U0001f324", + ":wilted_flower:": "\U0001f940", + ":wilted_rose:": "\U0001f940", + ":wind_blowing_face:": "\U0001f32c\ufe0f", + ":wind_chime:": "\U0001f390", + ":wind_face:": "\U0001f32c", + ":window:": "\U0001fa9f", + ":wine_glass:": "\U0001f377", + ":wink:": "\U0001f609", + ":winking_face:": "\U0001f609", + ":winking_face_with_tongue:": "\U0001f61c", + ":wolf:": "\U0001f43a", + ":woman:": "\U0001f469", + ":woman-biking:": "\U0001f6b4\u200d\u2640\ufe0f", + ":woman-bouncing-ball:": "\u26f9\ufe0f\u200d\u2640\ufe0f", + ":woman-bowing:": "\U0001f647\u200d\u2640\ufe0f", + ":woman-boy:": "\U0001f469\u200d\U0001f466", + ":woman-boy-boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":woman-cartwheeling:": "\U0001f938\u200d\u2640\ufe0f", + ":woman-facepalming:": "\U0001f926\u200d\u2640\ufe0f", + ":woman-frowning:": "\U0001f64d\u200d\u2640\ufe0f", + ":woman-gesturing-no:": "\U0001f645\u200d\u2640\ufe0f", + ":woman-gesturing-ok:": "\U0001f646\u200d\u2640\ufe0f", + ":woman-getting-haircut:": "\U0001f487\u200d\u2640\ufe0f", + ":woman-getting-massage:": "\U0001f486\u200d\u2640\ufe0f", + ":woman-girl:": "\U0001f469\u200d\U0001f467", + ":woman-girl-boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":woman-girl-girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":woman-golfing:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", + ":woman-heart-man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468", + ":woman-heart-woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469", + ":woman-juggling:": "\U0001f939\u200d\u2640\ufe0f", + ":woman-kiss-man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468", + ":woman-kiss-woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469", + ":woman-lifting-weights:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", + ":woman-mountain-biking:": "\U0001f6b5\u200d\u2640\ufe0f", + ":woman-playing-handball:": "\U0001f93e\u200d\u2640\ufe0f", + ":woman-playing-water-polo:": "\U0001f93d\u200d\u2640\ufe0f", + ":woman-pouting:": "\U0001f64e\u200d\u2640\ufe0f", + ":woman-raising-hand:": "\U0001f64b\u200d\u2640\ufe0f", + ":woman-rowing-boat:": "\U0001f6a3\u200d\u2640\ufe0f", + ":woman-running:": "\U0001f3c3\u200d\u2640\ufe0f", + ":woman-shrugging:": "\U0001f937\u200d\u2640\ufe0f", + ":woman-surfing:": "\U0001f3c4\u200d\u2640\ufe0f", + ":woman-swimming:": "\U0001f3ca\u200d\u2640\ufe0f", + ":woman-tipping-hand:": "\U0001f481\u200d\u2640\ufe0f", + ":woman-walking:": "\U0001f6b6\u200d\u2640\ufe0f", + ":woman-wearing-turban:": "\U0001f473\u200d\u2640\ufe0f", + ":woman-with-bunny-ears-partying:": "\U0001f46f\u200d\u2640\ufe0f", + ":woman-woman-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466", + ":woman-woman-boy-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466", + ":woman-woman-girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467", + ":woman-woman-girl-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466", + ":woman-woman-girl-girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467", + ":woman-wrestling:": "\U0001f93c\u200d\u2640\ufe0f", + ":woman_and_man_holding_hands:": "\U0001f46b", + ":woman_artist:": "\U0001f469\u200d\U0001f3a8", + ":woman_artist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3a8", + ":woman_artist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3a8", + ":woman_artist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3a8", + ":woman_artist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3a8", + ":woman_artist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3a8", + ":woman_astronaut:": "\U0001f469\u200d\U0001f680", + ":woman_astronaut_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f680", + ":woman_astronaut_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f680", + ":woman_astronaut_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f680", + ":woman_astronaut_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f680", + ":woman_astronaut_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f680", + ":woman_bald:": "\U0001f469\u200d\U0001f9b2", + ":woman_beard:": "\U0001f9d4\u200d\u2640\ufe0f", + ":woman_biking:": "\U0001f6b4\u200d\u2640\ufe0f", + ":woman_biking_tone1:": "\U0001f6b4\U0001f3fb\u200d\u2640\ufe0f", + ":woman_biking_tone2:": "\U0001f6b4\U0001f3fc\u200d\u2640\ufe0f", + ":woman_biking_tone3:": "\U0001f6b4\U0001f3fd\u200d\u2640\ufe0f", + ":woman_biking_tone4:": "\U0001f6b4\U0001f3fe\u200d\u2640\ufe0f", + ":woman_biking_tone5:": "\U0001f6b4\U0001f3ff\u200d\u2640\ufe0f", + ":woman_blond_hair:": "\U0001f471\u200d\u2640\ufe0f", + ":woman_bouncing_ball:": "\u26f9\ufe0f\u200d\u2640\ufe0f", + ":woman_bouncing_ball_tone1:": "\u26f9\U0001f3fb\u200d\u2640\ufe0f", + ":woman_bouncing_ball_tone2:": "\u26f9\U0001f3fc\u200d\u2640\ufe0f", + ":woman_bouncing_ball_tone3:": "\u26f9\U0001f3fd\u200d\u2640\ufe0f", + ":woman_bouncing_ball_tone4:": "\u26f9\U0001f3fe\u200d\u2640\ufe0f", + ":woman_bouncing_ball_tone5:": "\u26f9\U0001f3ff\u200d\u2640\ufe0f", + ":woman_bowing:": "\U0001f647\u200d\u2640\ufe0f", + ":woman_bowing_tone1:": "\U0001f647\U0001f3fb\u200d\u2640\ufe0f", + ":woman_bowing_tone2:": "\U0001f647\U0001f3fc\u200d\u2640\ufe0f", + ":woman_bowing_tone3:": "\U0001f647\U0001f3fd\u200d\u2640\ufe0f", + ":woman_bowing_tone4:": "\U0001f647\U0001f3fe\u200d\u2640\ufe0f", + ":woman_bowing_tone5:": "\U0001f647\U0001f3ff\u200d\u2640\ufe0f", + ":woman_cartwheeling:": "\U0001f938\u200d\u2640\ufe0f", + ":woman_cartwheeling_tone1:": "\U0001f938\U0001f3fb\u200d\u2640\ufe0f", + ":woman_cartwheeling_tone2:": "\U0001f938\U0001f3fc\u200d\u2640\ufe0f", + ":woman_cartwheeling_tone3:": "\U0001f938\U0001f3fd\u200d\u2640\ufe0f", + ":woman_cartwheeling_tone4:": "\U0001f938\U0001f3fe\u200d\u2640\ufe0f", + ":woman_cartwheeling_tone5:": "\U0001f938\U0001f3ff\u200d\u2640\ufe0f", + ":woman_climbing:": "\U0001f9d7\u200d\u2640\ufe0f", + ":woman_climbing_tone1:": "\U0001f9d7\U0001f3fb\u200d\u2640\ufe0f", + ":woman_climbing_tone2:": "\U0001f9d7\U0001f3fc\u200d\u2640\ufe0f", + ":woman_climbing_tone3:": "\U0001f9d7\U0001f3fd\u200d\u2640\ufe0f", + ":woman_climbing_tone4:": "\U0001f9d7\U0001f3fe\u200d\u2640\ufe0f", + ":woman_climbing_tone5:": "\U0001f9d7\U0001f3ff\u200d\u2640\ufe0f", + ":woman_construction_worker:": "\U0001f477\u200d\u2640\ufe0f", + ":woman_construction_worker_tone1:": "\U0001f477\U0001f3fb\u200d\u2640\ufe0f", + ":woman_construction_worker_tone2:": "\U0001f477\U0001f3fc\u200d\u2640\ufe0f", + ":woman_construction_worker_tone3:": "\U0001f477\U0001f3fd\u200d\u2640\ufe0f", + ":woman_construction_worker_tone4:": "\U0001f477\U0001f3fe\u200d\u2640\ufe0f", + ":woman_construction_worker_tone5:": "\U0001f477\U0001f3ff\u200d\u2640\ufe0f", + ":woman_cook:": "\U0001f469\u200d\U0001f373", + ":woman_cook_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f373", + ":woman_cook_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f373", + ":woman_cook_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f373", + ":woman_cook_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f373", + ":woman_cook_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f373", + ":woman_curly_hair:": "\U0001f469\u200d\U0001f9b1", + ":woman_dancing:": "\U0001f483", + ":woman_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f", + ":woman_detective_tone1:": "\U0001f575\U0001f3fb\u200d\u2640\ufe0f", + ":woman_detective_tone2:": "\U0001f575\U0001f3fc\u200d\u2640\ufe0f", + ":woman_detective_tone3:": "\U0001f575\U0001f3fd\u200d\u2640\ufe0f", + ":woman_detective_tone4:": "\U0001f575\U0001f3fe\u200d\u2640\ufe0f", + ":woman_detective_tone5:": "\U0001f575\U0001f3ff\u200d\u2640\ufe0f", + ":woman_elf:": "\U0001f9dd\u200d\u2640\ufe0f", + ":woman_elf_tone1:": "\U0001f9dd\U0001f3fb\u200d\u2640\ufe0f", + ":woman_elf_tone2:": "\U0001f9dd\U0001f3fc\u200d\u2640\ufe0f", + ":woman_elf_tone3:": "\U0001f9dd\U0001f3fd\u200d\u2640\ufe0f", + ":woman_elf_tone4:": "\U0001f9dd\U0001f3fe\u200d\u2640\ufe0f", + ":woman_elf_tone5:": "\U0001f9dd\U0001f3ff\u200d\u2640\ufe0f", + ":woman_facepalming:": "\U0001f926\u200d\u2640\ufe0f", + ":woman_facepalming_tone1:": "\U0001f926\U0001f3fb\u200d\u2640\ufe0f", + ":woman_facepalming_tone2:": "\U0001f926\U0001f3fc\u200d\u2640\ufe0f", + ":woman_facepalming_tone3:": "\U0001f926\U0001f3fd\u200d\u2640\ufe0f", + ":woman_facepalming_tone4:": "\U0001f926\U0001f3fe\u200d\u2640\ufe0f", + ":woman_facepalming_tone5:": "\U0001f926\U0001f3ff\u200d\u2640\ufe0f", + ":woman_factory_worker:": "\U0001f469\u200d\U0001f3ed", + ":woman_factory_worker_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3ed", + ":woman_factory_worker_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3ed", + ":woman_factory_worker_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3ed", + ":woman_factory_worker_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3ed", + ":woman_factory_worker_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3ed", + ":woman_fairy:": "\U0001f9da\u200d\u2640\ufe0f", + ":woman_fairy_tone1:": "\U0001f9da\U0001f3fb\u200d\u2640\ufe0f", + ":woman_fairy_tone2:": "\U0001f9da\U0001f3fc\u200d\u2640\ufe0f", + ":woman_fairy_tone3:": "\U0001f9da\U0001f3fd\u200d\u2640\ufe0f", + ":woman_fairy_tone4:": "\U0001f9da\U0001f3fe\u200d\u2640\ufe0f", + ":woman_fairy_tone5:": "\U0001f9da\U0001f3ff\u200d\u2640\ufe0f", + ":woman_farmer:": "\U0001f469\u200d\U0001f33e", + ":woman_farmer_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f33e", + ":woman_farmer_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f33e", + ":woman_farmer_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f33e", + ":woman_farmer_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f33e", + ":woman_farmer_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f33e", + ":woman_feeding_baby:": "\U0001f469\u200d\U0001f37c", + ":woman_firefighter:": "\U0001f469\u200d\U0001f692", + ":woman_firefighter_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f692", + ":woman_firefighter_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f692", + ":woman_firefighter_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f692", + ":woman_firefighter_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f692", + ":woman_firefighter_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f692", + ":woman_frowning:": "\U0001f64d\u200d\u2640\ufe0f", + ":woman_frowning_tone1:": "\U0001f64d\U0001f3fb\u200d\u2640\ufe0f", + ":woman_frowning_tone2:": "\U0001f64d\U0001f3fc\u200d\u2640\ufe0f", + ":woman_frowning_tone3:": "\U0001f64d\U0001f3fd\u200d\u2640\ufe0f", + ":woman_frowning_tone4:": "\U0001f64d\U0001f3fe\u200d\u2640\ufe0f", + ":woman_frowning_tone5:": "\U0001f64d\U0001f3ff\u200d\u2640\ufe0f", + ":woman_genie:": "\U0001f9de\u200d\u2640\ufe0f", + ":woman_gesturing_NO:": "\U0001f645\u200d\u2640\ufe0f", + ":woman_gesturing_OK:": "\U0001f646\u200d\u2640\ufe0f", + ":woman_gesturing_no:": "\U0001f645\u200d\u2640\ufe0f", + ":woman_gesturing_no_tone1:": "\U0001f645\U0001f3fb\u200d\u2640\ufe0f", + ":woman_gesturing_no_tone2:": "\U0001f645\U0001f3fc\u200d\u2640\ufe0f", + ":woman_gesturing_no_tone3:": "\U0001f645\U0001f3fd\u200d\u2640\ufe0f", + ":woman_gesturing_no_tone4:": "\U0001f645\U0001f3fe\u200d\u2640\ufe0f", + ":woman_gesturing_no_tone5:": "\U0001f645\U0001f3ff\u200d\u2640\ufe0f", + ":woman_gesturing_ok:": "\U0001f646\u200d\u2640\ufe0f", + ":woman_gesturing_ok_tone1:": "\U0001f646\U0001f3fb\u200d\u2640\ufe0f", + ":woman_gesturing_ok_tone2:": "\U0001f646\U0001f3fc\u200d\u2640\ufe0f", + ":woman_gesturing_ok_tone3:": "\U0001f646\U0001f3fd\u200d\u2640\ufe0f", + ":woman_gesturing_ok_tone4:": "\U0001f646\U0001f3fe\u200d\u2640\ufe0f", + ":woman_gesturing_ok_tone5:": "\U0001f646\U0001f3ff\u200d\u2640\ufe0f", + ":woman_getting_face_massage:": "\U0001f486\u200d\u2640\ufe0f", + ":woman_getting_face_massage_tone1:": "\U0001f486\U0001f3fb\u200d\u2640\ufe0f", + ":woman_getting_face_massage_tone2:": "\U0001f486\U0001f3fc\u200d\u2640\ufe0f", + ":woman_getting_face_massage_tone3:": "\U0001f486\U0001f3fd\u200d\u2640\ufe0f", + ":woman_getting_face_massage_tone4:": "\U0001f486\U0001f3fe\u200d\u2640\ufe0f", + ":woman_getting_face_massage_tone5:": "\U0001f486\U0001f3ff\u200d\u2640\ufe0f", + ":woman_getting_haircut:": "\U0001f487\u200d\u2640\ufe0f", + ":woman_getting_haircut_tone1:": "\U0001f487\U0001f3fb\u200d\u2640\ufe0f", + ":woman_getting_haircut_tone2:": "\U0001f487\U0001f3fc\u200d\u2640\ufe0f", + ":woman_getting_haircut_tone3:": "\U0001f487\U0001f3fd\u200d\u2640\ufe0f", + ":woman_getting_haircut_tone4:": "\U0001f487\U0001f3fe\u200d\u2640\ufe0f", + ":woman_getting_haircut_tone5:": "\U0001f487\U0001f3ff\u200d\u2640\ufe0f", + ":woman_getting_massage:": "\U0001f486\u200d\u2640\ufe0f", + ":woman_golfing:": "\U0001f3cc\ufe0f\u200d\u2640\ufe0f", + ":woman_golfing_tone1:": "\U0001f3cc\U0001f3fb\u200d\u2640\ufe0f", + ":woman_golfing_tone2:": "\U0001f3cc\U0001f3fc\u200d\u2640\ufe0f", + ":woman_golfing_tone3:": "\U0001f3cc\U0001f3fd\u200d\u2640\ufe0f", + ":woman_golfing_tone4:": "\U0001f3cc\U0001f3fe\u200d\u2640\ufe0f", + ":woman_golfing_tone5:": "\U0001f3cc\U0001f3ff\u200d\u2640\ufe0f", + ":woman_guard:": "\U0001f482\u200d\u2640\ufe0f", + ":woman_guard_tone1:": "\U0001f482\U0001f3fb\u200d\u2640\ufe0f", + ":woman_guard_tone2:": "\U0001f482\U0001f3fc\u200d\u2640\ufe0f", + ":woman_guard_tone3:": "\U0001f482\U0001f3fd\u200d\u2640\ufe0f", + ":woman_guard_tone4:": "\U0001f482\U0001f3fe\u200d\u2640\ufe0f", + ":woman_guard_tone5:": "\U0001f482\U0001f3ff\u200d\u2640\ufe0f", + ":woman_health_worker:": "\U0001f469\u200d\u2695\ufe0f", + ":woman_health_worker_tone1:": "\U0001f469\U0001f3fb\u200d\u2695\ufe0f", + ":woman_health_worker_tone2:": "\U0001f469\U0001f3fc\u200d\u2695\ufe0f", + ":woman_health_worker_tone3:": "\U0001f469\U0001f3fd\u200d\u2695\ufe0f", + ":woman_health_worker_tone4:": "\U0001f469\U0001f3fe\u200d\u2695\ufe0f", + ":woman_health_worker_tone5:": "\U0001f469\U0001f3ff\u200d\u2695\ufe0f", + ":woman_in_lotus_position:": "\U0001f9d8\u200d\u2640\ufe0f", + ":woman_in_lotus_position_tone1:": "\U0001f9d8\U0001f3fb\u200d\u2640\ufe0f", + ":woman_in_lotus_position_tone2:": "\U0001f9d8\U0001f3fc\u200d\u2640\ufe0f", + ":woman_in_lotus_position_tone3:": "\U0001f9d8\U0001f3fd\u200d\u2640\ufe0f", + ":woman_in_lotus_position_tone4:": "\U0001f9d8\U0001f3fe\u200d\u2640\ufe0f", + ":woman_in_lotus_position_tone5:": "\U0001f9d8\U0001f3ff\u200d\u2640\ufe0f", + ":woman_in_manual_wheelchair:": "\U0001f469\u200d\U0001f9bd", + ":woman_in_motorized_wheelchair:": "\U0001f469\u200d\U0001f9bc", + ":woman_in_steamy_room:": "\U0001f9d6\u200d\u2640\ufe0f", + ":woman_in_steamy_room_tone1:": "\U0001f9d6\U0001f3fb\u200d\u2640\ufe0f", + ":woman_in_steamy_room_tone2:": "\U0001f9d6\U0001f3fc\u200d\u2640\ufe0f", + ":woman_in_steamy_room_tone3:": "\U0001f9d6\U0001f3fd\u200d\u2640\ufe0f", + ":woman_in_steamy_room_tone4:": "\U0001f9d6\U0001f3fe\u200d\u2640\ufe0f", + ":woman_in_steamy_room_tone5:": "\U0001f9d6\U0001f3ff\u200d\u2640\ufe0f", + ":woman_in_tuxedo:": "\U0001f935\u200d\u2640\ufe0f", + ":woman_judge:": "\U0001f469\u200d\u2696\ufe0f", + ":woman_judge_tone1:": "\U0001f469\U0001f3fb\u200d\u2696\ufe0f", + ":woman_judge_tone2:": "\U0001f469\U0001f3fc\u200d\u2696\ufe0f", + ":woman_judge_tone3:": "\U0001f469\U0001f3fd\u200d\u2696\ufe0f", + ":woman_judge_tone4:": "\U0001f469\U0001f3fe\u200d\u2696\ufe0f", + ":woman_judge_tone5:": "\U0001f469\U0001f3ff\u200d\u2696\ufe0f", + ":woman_juggling:": "\U0001f939\u200d\u2640\ufe0f", + ":woman_juggling_tone1:": "\U0001f939\U0001f3fb\u200d\u2640\ufe0f", + ":woman_juggling_tone2:": "\U0001f939\U0001f3fc\u200d\u2640\ufe0f", + ":woman_juggling_tone3:": "\U0001f939\U0001f3fd\u200d\u2640\ufe0f", + ":woman_juggling_tone4:": "\U0001f939\U0001f3fe\u200d\u2640\ufe0f", + ":woman_juggling_tone5:": "\U0001f939\U0001f3ff\u200d\u2640\ufe0f", + ":woman_kneeling:": "\U0001f9ce\u200d\u2640\ufe0f", + ":woman_lifting_weights:": "\U0001f3cb\ufe0f\u200d\u2640\ufe0f", + ":woman_lifting_weights_tone1:": "\U0001f3cb\U0001f3fb\u200d\u2640\ufe0f", + ":woman_lifting_weights_tone2:": "\U0001f3cb\U0001f3fc\u200d\u2640\ufe0f", + ":woman_lifting_weights_tone3:": "\U0001f3cb\U0001f3fd\u200d\u2640\ufe0f", + ":woman_lifting_weights_tone4:": "\U0001f3cb\U0001f3fe\u200d\u2640\ufe0f", + ":woman_lifting_weights_tone5:": "\U0001f3cb\U0001f3ff\u200d\u2640\ufe0f", + ":woman_mage:": "\U0001f9d9\u200d\u2640\ufe0f", + ":woman_mage_tone1:": "\U0001f9d9\U0001f3fb\u200d\u2640\ufe0f", + ":woman_mage_tone2:": "\U0001f9d9\U0001f3fc\u200d\u2640\ufe0f", + ":woman_mage_tone3:": "\U0001f9d9\U0001f3fd\u200d\u2640\ufe0f", + ":woman_mage_tone4:": "\U0001f9d9\U0001f3fe\u200d\u2640\ufe0f", + ":woman_mage_tone5:": "\U0001f9d9\U0001f3ff\u200d\u2640\ufe0f", + ":woman_mechanic:": "\U0001f469\u200d\U0001f527", + ":woman_mechanic_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f527", + ":woman_mechanic_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f527", + ":woman_mechanic_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f527", + ":woman_mechanic_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f527", + ":woman_mechanic_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f527", + ":woman_mountain_biking:": "\U0001f6b5\u200d\u2640\ufe0f", + ":woman_mountain_biking_tone1:": "\U0001f6b5\U0001f3fb\u200d\u2640\ufe0f", + ":woman_mountain_biking_tone2:": "\U0001f6b5\U0001f3fc\u200d\u2640\ufe0f", + ":woman_mountain_biking_tone3:": "\U0001f6b5\U0001f3fd\u200d\u2640\ufe0f", + ":woman_mountain_biking_tone4:": "\U0001f6b5\U0001f3fe\u200d\u2640\ufe0f", + ":woman_mountain_biking_tone5:": "\U0001f6b5\U0001f3ff\u200d\u2640\ufe0f", + ":woman_office_worker:": "\U0001f469\u200d\U0001f4bc", + ":woman_office_worker_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f4bc", + ":woman_office_worker_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f4bc", + ":woman_office_worker_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f4bc", + ":woman_office_worker_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f4bc", + ":woman_office_worker_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f4bc", + ":woman_pilot:": "\U0001f469\u200d\u2708\ufe0f", + ":woman_pilot_tone1:": "\U0001f469\U0001f3fb\u200d\u2708\ufe0f", + ":woman_pilot_tone2:": "\U0001f469\U0001f3fc\u200d\u2708\ufe0f", + ":woman_pilot_tone3:": "\U0001f469\U0001f3fd\u200d\u2708\ufe0f", + ":woman_pilot_tone4:": "\U0001f469\U0001f3fe\u200d\u2708\ufe0f", + ":woman_pilot_tone5:": "\U0001f469\U0001f3ff\u200d\u2708\ufe0f", + ":woman_playing_handball:": "\U0001f93e\u200d\u2640\ufe0f", + ":woman_playing_handball_tone1:": "\U0001f93e\U0001f3fb\u200d\u2640\ufe0f", + ":woman_playing_handball_tone2:": "\U0001f93e\U0001f3fc\u200d\u2640\ufe0f", + ":woman_playing_handball_tone3:": "\U0001f93e\U0001f3fd\u200d\u2640\ufe0f", + ":woman_playing_handball_tone4:": "\U0001f93e\U0001f3fe\u200d\u2640\ufe0f", + ":woman_playing_handball_tone5:": "\U0001f93e\U0001f3ff\u200d\u2640\ufe0f", + ":woman_playing_water_polo:": "\U0001f93d\u200d\u2640\ufe0f", + ":woman_playing_water_polo_tone1:": "\U0001f93d\U0001f3fb\u200d\u2640\ufe0f", + ":woman_playing_water_polo_tone2:": "\U0001f93d\U0001f3fc\u200d\u2640\ufe0f", + ":woman_playing_water_polo_tone3:": "\U0001f93d\U0001f3fd\u200d\u2640\ufe0f", + ":woman_playing_water_polo_tone4:": "\U0001f93d\U0001f3fe\u200d\u2640\ufe0f", + ":woman_playing_water_polo_tone5:": "\U0001f93d\U0001f3ff\u200d\u2640\ufe0f", + ":woman_police_officer:": "\U0001f46e\u200d\u2640\ufe0f", + ":woman_police_officer_tone1:": "\U0001f46e\U0001f3fb\u200d\u2640\ufe0f", + ":woman_police_officer_tone2:": "\U0001f46e\U0001f3fc\u200d\u2640\ufe0f", + ":woman_police_officer_tone3:": "\U0001f46e\U0001f3fd\u200d\u2640\ufe0f", + ":woman_police_officer_tone4:": "\U0001f46e\U0001f3fe\u200d\u2640\ufe0f", + ":woman_police_officer_tone5:": "\U0001f46e\U0001f3ff\u200d\u2640\ufe0f", + ":woman_pouting:": "\U0001f64e\u200d\u2640\ufe0f", + ":woman_pouting_tone1:": "\U0001f64e\U0001f3fb\u200d\u2640\ufe0f", + ":woman_pouting_tone2:": "\U0001f64e\U0001f3fc\u200d\u2640\ufe0f", + ":woman_pouting_tone3:": "\U0001f64e\U0001f3fd\u200d\u2640\ufe0f", + ":woman_pouting_tone4:": "\U0001f64e\U0001f3fe\u200d\u2640\ufe0f", + ":woman_pouting_tone5:": "\U0001f64e\U0001f3ff\u200d\u2640\ufe0f", + ":woman_raising_hand:": "\U0001f64b\u200d\u2640\ufe0f", + ":woman_raising_hand_tone1:": "\U0001f64b\U0001f3fb\u200d\u2640\ufe0f", + ":woman_raising_hand_tone2:": "\U0001f64b\U0001f3fc\u200d\u2640\ufe0f", + ":woman_raising_hand_tone3:": "\U0001f64b\U0001f3fd\u200d\u2640\ufe0f", + ":woman_raising_hand_tone4:": "\U0001f64b\U0001f3fe\u200d\u2640\ufe0f", + ":woman_raising_hand_tone5:": "\U0001f64b\U0001f3ff\u200d\u2640\ufe0f", + ":woman_red_hair:": "\U0001f469\u200d\U0001f9b0", + ":woman_rowing_boat:": "\U0001f6a3\u200d\u2640\ufe0f", + ":woman_rowing_boat_tone1:": "\U0001f6a3\U0001f3fb\u200d\u2640\ufe0f", + ":woman_rowing_boat_tone2:": "\U0001f6a3\U0001f3fc\u200d\u2640\ufe0f", + ":woman_rowing_boat_tone3:": "\U0001f6a3\U0001f3fd\u200d\u2640\ufe0f", + ":woman_rowing_boat_tone4:": "\U0001f6a3\U0001f3fe\u200d\u2640\ufe0f", + ":woman_rowing_boat_tone5:": "\U0001f6a3\U0001f3ff\u200d\u2640\ufe0f", + ":woman_running:": "\U0001f3c3\u200d\u2640\ufe0f", + ":woman_running_tone1:": "\U0001f3c3\U0001f3fb\u200d\u2640\ufe0f", + ":woman_running_tone2:": "\U0001f3c3\U0001f3fc\u200d\u2640\ufe0f", + ":woman_running_tone3:": "\U0001f3c3\U0001f3fd\u200d\u2640\ufe0f", + ":woman_running_tone4:": "\U0001f3c3\U0001f3fe\u200d\u2640\ufe0f", + ":woman_running_tone5:": "\U0001f3c3\U0001f3ff\u200d\u2640\ufe0f", + ":woman_scientist:": "\U0001f469\u200d\U0001f52c", + ":woman_scientist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f52c", + ":woman_scientist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f52c", + ":woman_scientist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f52c", + ":woman_scientist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f52c", + ":woman_scientist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f52c", + ":woman_shrugging:": "\U0001f937\u200d\u2640\ufe0f", + ":woman_shrugging_tone1:": "\U0001f937\U0001f3fb\u200d\u2640\ufe0f", + ":woman_shrugging_tone2:": "\U0001f937\U0001f3fc\u200d\u2640\ufe0f", + ":woman_shrugging_tone3:": "\U0001f937\U0001f3fd\u200d\u2640\ufe0f", + ":woman_shrugging_tone4:": "\U0001f937\U0001f3fe\u200d\u2640\ufe0f", + ":woman_shrugging_tone5:": "\U0001f937\U0001f3ff\u200d\u2640\ufe0f", + ":woman_singer:": "\U0001f469\u200d\U0001f3a4", + ":woman_singer_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3a4", + ":woman_singer_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3a4", + ":woman_singer_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3a4", + ":woman_singer_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3a4", + ":woman_singer_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3a4", + ":woman_standing:": "\U0001f9cd\u200d\u2640\ufe0f", + ":woman_student:": "\U0001f469\u200d\U0001f393", + ":woman_student_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f393", + ":woman_student_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f393", + ":woman_student_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f393", + ":woman_student_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f393", + ":woman_student_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f393", + ":woman_superhero:": "\U0001f9b8\u200d\u2640\ufe0f", + ":woman_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f", + ":woman_surfing:": "\U0001f3c4\u200d\u2640\ufe0f", + ":woman_surfing_tone1:": "\U0001f3c4\U0001f3fb\u200d\u2640\ufe0f", + ":woman_surfing_tone2:": "\U0001f3c4\U0001f3fc\u200d\u2640\ufe0f", + ":woman_surfing_tone3:": "\U0001f3c4\U0001f3fd\u200d\u2640\ufe0f", + ":woman_surfing_tone4:": "\U0001f3c4\U0001f3fe\u200d\u2640\ufe0f", + ":woman_surfing_tone5:": "\U0001f3c4\U0001f3ff\u200d\u2640\ufe0f", + ":woman_swimming:": "\U0001f3ca\u200d\u2640\ufe0f", + ":woman_swimming_tone1:": "\U0001f3ca\U0001f3fb\u200d\u2640\ufe0f", + ":woman_swimming_tone2:": "\U0001f3ca\U0001f3fc\u200d\u2640\ufe0f", + ":woman_swimming_tone3:": "\U0001f3ca\U0001f3fd\u200d\u2640\ufe0f", + ":woman_swimming_tone4:": "\U0001f3ca\U0001f3fe\u200d\u2640\ufe0f", + ":woman_swimming_tone5:": "\U0001f3ca\U0001f3ff\u200d\u2640\ufe0f", + ":woman_teacher:": "\U0001f469\u200d\U0001f3eb", + ":woman_teacher_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f3eb", + ":woman_teacher_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f3eb", + ":woman_teacher_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f3eb", + ":woman_teacher_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f3eb", + ":woman_teacher_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f3eb", + ":woman_technologist:": "\U0001f469\u200d\U0001f4bb", + ":woman_technologist_tone1:": "\U0001f469\U0001f3fb\u200d\U0001f4bb", + ":woman_technologist_tone2:": "\U0001f469\U0001f3fc\u200d\U0001f4bb", + ":woman_technologist_tone3:": "\U0001f469\U0001f3fd\u200d\U0001f4bb", + ":woman_technologist_tone4:": "\U0001f469\U0001f3fe\u200d\U0001f4bb", + ":woman_technologist_tone5:": "\U0001f469\U0001f3ff\u200d\U0001f4bb", + ":woman_tipping_hand:": "\U0001f481\u200d\u2640\ufe0f", + ":woman_tipping_hand_tone1:": "\U0001f481\U0001f3fb\u200d\u2640\ufe0f", + ":woman_tipping_hand_tone2:": "\U0001f481\U0001f3fc\u200d\u2640\ufe0f", + ":woman_tipping_hand_tone3:": "\U0001f481\U0001f3fd\u200d\u2640\ufe0f", + ":woman_tipping_hand_tone4:": "\U0001f481\U0001f3fe\u200d\u2640\ufe0f", + ":woman_tipping_hand_tone5:": "\U0001f481\U0001f3ff\u200d\u2640\ufe0f", + ":woman_tone1:": "\U0001f469\U0001f3fb", + ":woman_tone2:": "\U0001f469\U0001f3fc", + ":woman_tone3:": "\U0001f469\U0001f3fd", + ":woman_tone4:": "\U0001f469\U0001f3fe", + ":woman_tone5:": "\U0001f469\U0001f3ff", + ":woman_vampire:": "\U0001f9db\u200d\u2640\ufe0f", + ":woman_vampire_tone1:": "\U0001f9db\U0001f3fb\u200d\u2640\ufe0f", + ":woman_vampire_tone2:": "\U0001f9db\U0001f3fc\u200d\u2640\ufe0f", + ":woman_vampire_tone3:": "\U0001f9db\U0001f3fd\u200d\u2640\ufe0f", + ":woman_vampire_tone4:": "\U0001f9db\U0001f3fe\u200d\u2640\ufe0f", + ":woman_vampire_tone5:": "\U0001f9db\U0001f3ff\u200d\u2640\ufe0f", + ":woman_walking:": "\U0001f6b6\u200d\u2640\ufe0f", + ":woman_walking_tone1:": "\U0001f6b6\U0001f3fb\u200d\u2640\ufe0f", + ":woman_walking_tone2:": "\U0001f6b6\U0001f3fc\u200d\u2640\ufe0f", + ":woman_walking_tone3:": "\U0001f6b6\U0001f3fd\u200d\u2640\ufe0f", + ":woman_walking_tone4:": "\U0001f6b6\U0001f3fe\u200d\u2640\ufe0f", + ":woman_walking_tone5:": "\U0001f6b6\U0001f3ff\u200d\u2640\ufe0f", + ":woman_wearing_turban:": "\U0001f473\u200d\u2640\ufe0f", + ":woman_wearing_turban_tone1:": "\U0001f473\U0001f3fb\u200d\u2640\ufe0f", + ":woman_wearing_turban_tone2:": "\U0001f473\U0001f3fc\u200d\u2640\ufe0f", + ":woman_wearing_turban_tone3:": "\U0001f473\U0001f3fd\u200d\u2640\ufe0f", + ":woman_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2640\ufe0f", + ":woman_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2640\ufe0f", + ":woman_white_hair:": "\U0001f469\u200d\U0001f9b3", + ":woman_with_headscarf:": "\U0001f9d5", + ":woman_with_headscarf_tone1:": "\U0001f9d5\U0001f3fb", + ":woman_with_headscarf_tone2:": "\U0001f9d5\U0001f3fc", + ":woman_with_headscarf_tone3:": "\U0001f9d5\U0001f3fd", + ":woman_with_headscarf_tone4:": "\U0001f9d5\U0001f3fe", + ":woman_with_headscarf_tone5:": "\U0001f9d5\U0001f3ff", + ":woman_with_probing_cane:": "\U0001f469\u200d\U0001f9af", + ":woman_with_turban:": "\U0001f473\u200d\u2640\ufe0f", + ":woman_with_veil:": "\U0001f470\u200d\u2640\ufe0f", + ":woman_with_white_cane:": "\U0001f469\u200d\U0001f9af", + ":woman_zombie:": "\U0001f9df\u200d\u2640\ufe0f", + ":womans_clothes:": "\U0001f45a", + ":womans_flat_shoe:": "\U0001f97f", + ":womans_hat:": "\U0001f452", + ":woman’s_boot:": "\U0001f462", + ":woman’s_clothes:": "\U0001f45a", + ":woman’s_hat:": "\U0001f452", + ":woman’s_sandal:": "\U0001f461", + ":women_holding_hands:": "\U0001f46d", + ":women_with_bunny_ears:": "\U0001f46f\u200d\u2640\ufe0f", + ":women_with_bunny_ears_partying:": "\U0001f46f\u200d\u2640\ufe0f", + ":women_wrestling:": "\U0001f93c\u200d\u2640\ufe0f", + ":womens:": "\U0001f6ba", + ":women’s_room:": "\U0001f6ba", + ":wood:": "\U0001fab5", + ":woozy_face:": "\U0001f974", + ":world_map:": "\U0001f5fa\ufe0f", + ":worm:": "\U0001fab1", + ":worried:": "\U0001f61f", + ":worried_face:": "\U0001f61f", + ":wrapped_gift:": "\U0001f381", + ":wrench:": "\U0001f527", + ":wrestlers:": "\U0001f93c", + ":wrestling:": "\U0001f93c", + ":writing_hand:": "\u270d\ufe0f", + ":writing_hand_tone1:": "\u270d\U0001f3fb", + ":writing_hand_tone2:": "\u270d\U0001f3fc", + ":writing_hand_tone3:": "\u270d\U0001f3fd", + ":writing_hand_tone4:": "\u270d\U0001f3fe", + ":writing_hand_tone5:": "\u270d\U0001f3ff", + ":x:": "\u274c", + ":yarn:": "\U0001f9f6", + ":yawning_face:": "\U0001f971", + ":yellow_circle:": "\U0001f7e1", + ":yellow_heart:": "\U0001f49b", + ":yellow_square:": "\U0001f7e8", + ":yemen:": "\U0001f1fe\U0001f1ea", + ":yen:": "\U0001f4b4", + ":yen_banknote:": "\U0001f4b4", + ":yin_yang:": "\u262f\ufe0f", + ":yo-yo:": "\U0001fa80", + ":yo_yo:": "\U0001fa80", + ":yum:": "\U0001f60b", + ":zambia:": "\U0001f1ff\U0001f1f2", + ":zany_face:": "\U0001f92a", + ":zap:": "\u26a1", + ":zebra:": "\U0001f993", + ":zebra_face:": "\U0001f993", + ":zero:": "0\ufe0f\u20e3", + ":zimbabwe:": "\U0001f1ff\U0001f1fc", + ":zipper-mouth_face:": "\U0001f910", + ":zipper_mouth:": "\U0001f910", + ":zipper_mouth_face:": "\U0001f910", + ":zombie:": "\U0001f9df\u200d\u2642\ufe0f", + ":zombie_man:": "\U0001f9df\u200d\u2642\ufe0f", + ":zombie_woman:": "\U0001f9df\u200d\u2640\ufe0f", + ":zzz:": "\U0001f4a4", + } + }) + return emojiCodeMap +} + +var emojiRevCodeMap map[string][]string +var emojiRevCodeMapInitOnce = sync.Once{} + +func emojiRevCode() map[string][]string { + emojiRevCodeMapInitOnce.Do(func() { + emojiRevCodeMap = map[string][]string{ + "#\ufe0f\u20e3": {":hash:", ":keycap_#:"}, + "*\ufe0f\u20e3": {":asterisk:", ":keycap_*:", ":keycap_star:"}, + "0\ufe0f\u20e3": {":zero:", ":keycap_0:"}, + "1\ufe0f\u20e3": {":one:", ":keycap_1:"}, + "2\ufe0f\u20e3": {":two:", ":keycap_2:"}, + "3\ufe0f\u20e3": {":three:", ":keycap_3:"}, + "4\ufe0f\u20e3": {":four:", ":keycap_4:"}, + "5\ufe0f\u20e3": {":five:", ":keycap_5:"}, + "6\ufe0f\u20e3": {":six:", ":keycap_6:"}, + "7\ufe0f\u20e3": {":seven:", ":keycap_7:"}, + "8\ufe0f\u20e3": {":eight:", ":keycap_8:"}, + "9\ufe0f\u20e3": {":nine:", ":keycap_9:"}, + "\U0001f004": {":mahjong:", ":mahjong_red_dragon:"}, + "\U0001f0cf": {":joker:", ":black_joker:"}, + "\U0001f170": {":A_button_(blood_type):"}, + "\U0001f170\ufe0f": {":a:"}, + "\U0001f171": {":B_button_(blood_type):"}, + "\U0001f171\ufe0f": {":b:"}, + "\U0001f17e": {":O_button_(blood_type):"}, + "\U0001f17e\ufe0f": {":o2:"}, + "\U0001f17f": {":P_button:"}, + "\U0001f17f\ufe0f": {":parking:"}, + "\U0001f18e": {":ab:", ":AB_button_(blood_type):"}, + "\U0001f191": {":cl:", ":CL_button:"}, + "\U0001f192": {":cool:", ":COOL_button:"}, + "\U0001f193": {":free:", ":FREE_button:"}, + "\U0001f194": {":id:", ":ID_button:"}, + "\U0001f195": {":new:", ":NEW_button:"}, + "\U0001f196": {":ng:", ":NG_button:"}, + "\U0001f197": {":ok:", ":OK_button:"}, + "\U0001f198": {":sos:", ":SOS_button:"}, + "\U0001f199": {":up:", ":UP!_button:"}, + "\U0001f19a": {":vs:", ":VS_button:"}, + "\U0001f1e6\U0001f1e8": {":flag-ac:", ":flag_ac:", ":ascension_island:", ":flag_Ascension_Island:"}, + "\U0001f1e6\U0001f1e9": {":andorra:", ":flag-ad:", ":flag_ad:", ":flag_Andorra:"}, + "\U0001f1e6\U0001f1ea": {":flag-ae:", ":flag_ae:", ":united_arab_emirates:", ":flag_United_Arab_Emirates:"}, + "\U0001f1e6\U0001f1eb": {":flag-af:", ":flag_af:", ":afghanistan:", ":flag_Afghanistan:"}, + "\U0001f1e6\U0001f1ec": {":flag-ag:", ":flag_ag:", ":antigua_barbuda:", ":flag_Antigua_&_Barbuda:"}, + "\U0001f1e6\U0001f1ee": {":flag-ai:", ":flag_ai:", ":anguilla:", ":flag_Anguilla:"}, + "\U0001f1e6\U0001f1f1": {":albania:", ":flag-al:", ":flag_al:", ":flag_Albania:"}, + "\U0001f1e6\U0001f1f2": {":armenia:", ":flag-am:", ":flag_am:", ":flag_Armenia:"}, + "\U0001f1e6\U0001f1f4": {":angola:", ":flag-ao:", ":flag_ao:", ":flag_Angola:"}, + "\U0001f1e6\U0001f1f6": {":flag-aq:", ":flag_aq:", ":antarctica:", ":flag_Antarctica:"}, + "\U0001f1e6\U0001f1f7": {":flag-ar:", ":flag_ar:", ":argentina:", ":flag_Argentina:"}, + "\U0001f1e6\U0001f1f8": {":flag-as:", ":flag_as:", ":american_samoa:", ":flag_American_Samoa:"}, + "\U0001f1e6\U0001f1f9": {":austria:", ":flag-at:", ":flag_at:", ":flag_Austria:"}, + "\U0001f1e6\U0001f1fa": {":flag-au:", ":flag_au:", ":australia:", ":flag_Australia:"}, + "\U0001f1e6\U0001f1fc": {":aruba:", ":flag-aw:", ":flag_aw:", ":flag_Aruba:"}, + "\U0001f1e6\U0001f1fd": {":flag-ax:", ":flag_ax:", ":aland_islands:", ":flag_Åland_Islands:"}, + "\U0001f1e6\U0001f1ff": {":flag-az:", ":flag_az:", ":azerbaijan:", ":flag_Azerbaijan:"}, + "\U0001f1e7\U0001f1e6": {":flag-ba:", ":flag_ba:", ":bosnia_herzegovina:", ":flag_Bosnia_&_Herzegovina:"}, + "\U0001f1e7\U0001f1e7": {":flag-bb:", ":flag_bb:", ":barbados:", ":flag_Barbados:"}, + "\U0001f1e7\U0001f1e9": {":flag-bd:", ":flag_bd:", ":bangladesh:", ":flag_Bangladesh:"}, + "\U0001f1e7\U0001f1ea": {":belgium:", ":flag-be:", ":flag_be:", ":flag_Belgium:"}, + "\U0001f1e7\U0001f1eb": {":flag-bf:", ":flag_bf:", ":burkina_faso:", ":flag_Burkina_Faso:"}, + "\U0001f1e7\U0001f1ec": {":flag-bg:", ":flag_bg:", ":bulgaria:", ":flag_Bulgaria:"}, + "\U0001f1e7\U0001f1ed": {":bahrain:", ":flag-bh:", ":flag_bh:", ":flag_Bahrain:"}, + "\U0001f1e7\U0001f1ee": {":burundi:", ":flag-bi:", ":flag_bi:", ":flag_Burundi:"}, + "\U0001f1e7\U0001f1ef": {":benin:", ":flag-bj:", ":flag_bj:", ":flag_Benin:"}, + "\U0001f1e7\U0001f1f1": {":flag-bl:", ":flag_bl:", ":st_barthelemy:", ":flag_St._Barthélemy:"}, + "\U0001f1e7\U0001f1f2": {":bermuda:", ":flag-bm:", ":flag_bm:", ":flag_Bermuda:"}, + "\U0001f1e7\U0001f1f3": {":brunei:", ":flag-bn:", ":flag_bn:", ":flag_Brunei:"}, + "\U0001f1e7\U0001f1f4": {":bolivia:", ":flag-bo:", ":flag_bo:", ":flag_Bolivia:"}, + "\U0001f1e7\U0001f1f6": {":flag-bq:", ":flag_bq:", ":caribbean_netherlands:", ":flag_Caribbean_Netherlands:"}, + "\U0001f1e7\U0001f1f7": {":brazil:", ":flag-br:", ":flag_br:", ":flag_Brazil:"}, + "\U0001f1e7\U0001f1f8": {":bahamas:", ":flag-bs:", ":flag_bs:", ":flag_Bahamas:"}, + "\U0001f1e7\U0001f1f9": {":bhutan:", ":flag-bt:", ":flag_bt:", ":flag_Bhutan:"}, + "\U0001f1e7\U0001f1fb": {":flag-bv:", ":flag_bv:", ":bouvet_island:", ":flag_Bouvet_Island:"}, + "\U0001f1e7\U0001f1fc": {":flag-bw:", ":flag_bw:", ":botswana:", ":flag_Botswana:"}, + "\U0001f1e7\U0001f1fe": {":belarus:", ":flag-by:", ":flag_by:", ":flag_Belarus:"}, + "\U0001f1e7\U0001f1ff": {":belize:", ":flag-bz:", ":flag_bz:", ":flag_Belize:"}, + "\U0001f1e8\U0001f1e6": {":canada:", ":flag-ca:", ":flag_ca:", ":flag_Canada:"}, + "\U0001f1e8\U0001f1e8": {":flag-cc:", ":flag_cc:", ":cocos_islands:", ":flag_Cocos_(Keeling)_Islands:"}, + "\U0001f1e8\U0001f1e9": {":flag-cd:", ":flag_cd:", ":congo_kinshasa:", ":flag_Congo_-_Kinshasa:"}, + "\U0001f1e8\U0001f1eb": {":flag-cf:", ":flag_cf:", ":central_african_republic:", ":flag_Central_African_Republic:"}, + "\U0001f1e8\U0001f1ec": {":flag-cg:", ":flag_cg:", ":congo_brazzaville:", ":flag_Congo_-_Brazzaville:"}, + "\U0001f1e8\U0001f1ed": {":flag-ch:", ":flag_ch:", ":switzerland:", ":flag_Switzerland:"}, + "\U0001f1e8\U0001f1ee": {":flag-ci:", ":flag_ci:", ":cote_divoire:", ":flag_Côte_d’Ivoire:"}, + "\U0001f1e8\U0001f1f0": {":flag-ck:", ":flag_ck:", ":cook_islands:", ":flag_Cook_Islands:"}, + "\U0001f1e8\U0001f1f1": {":chile:", ":flag-cl:", ":flag_cl:", ":flag_Chile:"}, + "\U0001f1e8\U0001f1f2": {":flag-cm:", ":flag_cm:", ":cameroon:", ":flag_Cameroon:"}, + "\U0001f1e8\U0001f1f3": {":cn:", ":flag_cn:", ":flag_China:"}, + "\U0001f1e8\U0001f1f4": {":flag-co:", ":flag_co:", ":colombia:", ":flag_Colombia:"}, + "\U0001f1e8\U0001f1f5": {":flag-cp:", ":flag_cp:", ":clipperton_island:", ":flag_Clipperton_Island:"}, + "\U0001f1e8\U0001f1f7": {":flag-cr:", ":flag_cr:", ":costa_rica:", ":flag_Costa_Rica:"}, + "\U0001f1e8\U0001f1fa": {":cuba:", ":flag-cu:", ":flag_cu:", ":flag_Cuba:"}, + "\U0001f1e8\U0001f1fb": {":flag-cv:", ":flag_cv:", ":cape_verde:", ":flag_Cape_Verde:"}, + "\U0001f1e8\U0001f1fc": {":curacao:", ":flag-cw:", ":flag_cw:", ":flag_Curaçao:"}, + "\U0001f1e8\U0001f1fd": {":flag-cx:", ":flag_cx:", ":christmas_island:", ":flag_Christmas_Island:"}, + "\U0001f1e8\U0001f1fe": {":cyprus:", ":flag-cy:", ":flag_cy:", ":flag_Cyprus:"}, + "\U0001f1e8\U0001f1ff": {":flag-cz:", ":flag_cz:", ":flag_Czechia:", ":czech_republic:"}, + "\U0001f1e9\U0001f1ea": {":de:", ":flag_de:", ":flag_Germany:"}, + "\U0001f1e9\U0001f1ec": {":flag-dg:", ":flag_dg:", ":diego_garcia:", ":flag_Diego_Garcia:"}, + "\U0001f1e9\U0001f1ef": {":flag-dj:", ":flag_dj:", ":djibouti:", ":flag_Djibouti:"}, + "\U0001f1e9\U0001f1f0": {":denmark:", ":flag-dk:", ":flag_dk:", ":flag_Denmark:"}, + "\U0001f1e9\U0001f1f2": {":flag-dm:", ":flag_dm:", ":dominica:", ":flag_Dominica:"}, + "\U0001f1e9\U0001f1f4": {":flag-do:", ":flag_do:", ":dominican_republic:", ":flag_Dominican_Republic:"}, + "\U0001f1e9\U0001f1ff": {":algeria:", ":flag-dz:", ":flag_dz:", ":flag_Algeria:"}, + "\U0001f1ea\U0001f1e6": {":flag-ea:", ":flag_ea:", ":ceuta_melilla:", ":flag_Ceuta_&_Melilla:"}, + "\U0001f1ea\U0001f1e8": {":ecuador:", ":flag-ec:", ":flag_ec:", ":flag_Ecuador:"}, + "\U0001f1ea\U0001f1ea": {":estonia:", ":flag-ee:", ":flag_ee:", ":flag_Estonia:"}, + "\U0001f1ea\U0001f1ec": {":egypt:", ":flag-eg:", ":flag_eg:", ":flag_Egypt:"}, + "\U0001f1ea\U0001f1ed": {":flag-eh:", ":flag_eh:", ":western_sahara:", ":flag_Western_Sahara:"}, + "\U0001f1ea\U0001f1f7": {":eritrea:", ":flag-er:", ":flag_er:", ":flag_Eritrea:"}, + "\U0001f1ea\U0001f1f8": {":es:", ":flag_es:", ":flag_Spain:"}, + "\U0001f1ea\U0001f1f9": {":flag-et:", ":flag_et:", ":ethiopia:", ":flag_Ethiopia:"}, + "\U0001f1ea\U0001f1fa": {":eu:", ":flag-eu:", ":flag_eu:", ":european_union:", ":flag_European_Union:"}, + "\U0001f1eb\U0001f1ee": {":finland:", ":flag-fi:", ":flag_fi:", ":flag_Finland:"}, + "\U0001f1eb\U0001f1ef": {":fiji:", ":flag-fj:", ":flag_fj:", ":flag_Fiji:"}, + "\U0001f1eb\U0001f1f0": {":flag-fk:", ":flag_fk:", ":falkland_islands:", ":flag_Falkland_Islands:"}, + "\U0001f1eb\U0001f1f2": {":flag-fm:", ":flag_fm:", ":micronesia:", ":flag_Micronesia:"}, + "\U0001f1eb\U0001f1f4": {":flag-fo:", ":flag_fo:", ":faroe_islands:", ":flag_Faroe_Islands:"}, + "\U0001f1eb\U0001f1f7": {":fr:", ":flag_fr:", ":flag_France:"}, + "\U0001f1ec\U0001f1e6": {":gabon:", ":flag-ga:", ":flag_ga:", ":flag_Gabon:"}, + "\U0001f1ec\U0001f1e7": {":gb:", ":uk:", ":flag_gb:", ":flag_United_Kingdom:"}, + "\U0001f1ec\U0001f1e9": {":flag-gd:", ":flag_gd:", ":grenada:", ":flag_Grenada:"}, + "\U0001f1ec\U0001f1ea": {":flag-ge:", ":flag_ge:", ":georgia:", ":flag_Georgia:"}, + "\U0001f1ec\U0001f1eb": {":flag-gf:", ":flag_gf:", ":french_guiana:", ":flag_French_Guiana:"}, + "\U0001f1ec\U0001f1ec": {":flag-gg:", ":flag_gg:", ":guernsey:", ":flag_Guernsey:"}, + "\U0001f1ec\U0001f1ed": {":ghana:", ":flag-gh:", ":flag_gh:", ":flag_Ghana:"}, + "\U0001f1ec\U0001f1ee": {":flag-gi:", ":flag_gi:", ":gibraltar:", ":flag_Gibraltar:"}, + "\U0001f1ec\U0001f1f1": {":flag-gl:", ":flag_gl:", ":greenland:", ":flag_Greenland:"}, + "\U0001f1ec\U0001f1f2": {":gambia:", ":flag-gm:", ":flag_gm:", ":flag_Gambia:"}, + "\U0001f1ec\U0001f1f3": {":guinea:", ":flag-gn:", ":flag_gn:", ":flag_Guinea:"}, + "\U0001f1ec\U0001f1f5": {":flag-gp:", ":flag_gp:", ":guadeloupe:", ":flag_Guadeloupe:"}, + "\U0001f1ec\U0001f1f6": {":flag-gq:", ":flag_gq:", ":equatorial_guinea:", ":flag_Equatorial_Guinea:"}, + "\U0001f1ec\U0001f1f7": {":greece:", ":flag-gr:", ":flag_gr:", ":flag_Greece:"}, + "\U0001f1ec\U0001f1f8": {":flag-gs:", ":flag_gs:", ":south_georgia_south_sandwich_islands:", ":flag_South_Georgia_&_South_Sandwich_Islands:"}, + "\U0001f1ec\U0001f1f9": {":flag-gt:", ":flag_gt:", ":guatemala:", ":flag_Guatemala:"}, + "\U0001f1ec\U0001f1fa": {":guam:", ":flag-gu:", ":flag_gu:", ":flag_Guam:"}, + "\U0001f1ec\U0001f1fc": {":flag-gw:", ":flag_gw:", ":guinea_bissau:", ":flag_Guinea-Bissau:"}, + "\U0001f1ec\U0001f1fe": {":guyana:", ":flag-gy:", ":flag_gy:", ":flag_Guyana:"}, + "\U0001f1ed\U0001f1f0": {":flag-hk:", ":flag_hk:", ":hong_kong:", ":flag_Hong_Kong_SAR_China:"}, + "\U0001f1ed\U0001f1f2": {":flag-hm:", ":flag_hm:", ":heard_mcdonald_islands:", ":flag_Heard_&_McDonald_Islands:"}, + "\U0001f1ed\U0001f1f3": {":flag-hn:", ":flag_hn:", ":honduras:", ":flag_Honduras:"}, + "\U0001f1ed\U0001f1f7": {":croatia:", ":flag-hr:", ":flag_hr:", ":flag_Croatia:"}, + "\U0001f1ed\U0001f1f9": {":haiti:", ":flag-ht:", ":flag_ht:", ":flag_Haiti:"}, + "\U0001f1ed\U0001f1fa": {":flag-hu:", ":flag_hu:", ":hungary:", ":flag_Hungary:"}, + "\U0001f1ee\U0001f1e8": {":flag-ic:", ":flag_ic:", ":canary_islands:", ":flag_Canary_Islands:"}, + "\U0001f1ee\U0001f1e9": {":flag-id:", ":flag_id:", ":indonesia:", ":flag_Indonesia:"}, + "\U0001f1ee\U0001f1ea": {":flag-ie:", ":flag_ie:", ":ireland:", ":flag_Ireland:"}, + "\U0001f1ee\U0001f1f1": {":israel:", ":flag-il:", ":flag_il:", ":flag_Israel:"}, + "\U0001f1ee\U0001f1f2": {":flag-im:", ":flag_im:", ":isle_of_man:", ":flag_Isle_of_Man:"}, + "\U0001f1ee\U0001f1f3": {":india:", ":flag-in:", ":flag_in:", ":flag_India:"}, + "\U0001f1ee\U0001f1f4": {":flag-io:", ":flag_io:", ":british_indian_ocean_territory:", ":flag_British_Indian_Ocean_Territory:"}, + "\U0001f1ee\U0001f1f6": {":iraq:", ":flag-iq:", ":flag_iq:", ":flag_Iraq:"}, + "\U0001f1ee\U0001f1f7": {":iran:", ":flag-ir:", ":flag_ir:", ":flag_Iran:"}, + "\U0001f1ee\U0001f1f8": {":flag-is:", ":flag_is:", ":iceland:", ":flag_Iceland:"}, + "\U0001f1ee\U0001f1f9": {":it:", ":flag_it:", ":flag_Italy:"}, + "\U0001f1ef\U0001f1ea": {":jersey:", ":flag-je:", ":flag_je:", ":flag_Jersey:"}, + "\U0001f1ef\U0001f1f2": {":flag-jm:", ":flag_jm:", ":jamaica:", ":flag_Jamaica:"}, + "\U0001f1ef\U0001f1f4": {":jordan:", ":flag-jo:", ":flag_jo:", ":flag_Jordan:"}, + "\U0001f1ef\U0001f1f5": {":jp:", ":flag_jp:", ":flag_Japan:"}, + "\U0001f1f0\U0001f1ea": {":kenya:", ":flag-ke:", ":flag_ke:", ":flag_Kenya:"}, + "\U0001f1f0\U0001f1ec": {":flag-kg:", ":flag_kg:", ":kyrgyzstan:", ":flag_Kyrgyzstan:"}, + "\U0001f1f0\U0001f1ed": {":flag-kh:", ":flag_kh:", ":cambodia:", ":flag_Cambodia:"}, + "\U0001f1f0\U0001f1ee": {":flag-ki:", ":flag_ki:", ":kiribati:", ":flag_Kiribati:"}, + "\U0001f1f0\U0001f1f2": {":comoros:", ":flag-km:", ":flag_km:", ":flag_Comoros:"}, + "\U0001f1f0\U0001f1f3": {":flag-kn:", ":flag_kn:", ":st_kitts_nevis:", ":flag_St._Kitts_&_Nevis:"}, + "\U0001f1f0\U0001f1f5": {":flag-kp:", ":flag_kp:", ":north_korea:", ":flag_North_Korea:"}, + "\U0001f1f0\U0001f1f7": {":kr:", ":flag_kr:", ":flag_South_Korea:"}, + "\U0001f1f0\U0001f1fc": {":kuwait:", ":flag-kw:", ":flag_kw:", ":flag_Kuwait:"}, + "\U0001f1f0\U0001f1fe": {":flag-ky:", ":flag_ky:", ":cayman_islands:", ":flag_Cayman_Islands:"}, + "\U0001f1f0\U0001f1ff": {":flag-kz:", ":flag_kz:", ":kazakhstan:", ":flag_Kazakhstan:"}, + "\U0001f1f1\U0001f1e6": {":laos:", ":flag-la:", ":flag_la:", ":flag_Laos:"}, + "\U0001f1f1\U0001f1e7": {":flag-lb:", ":flag_lb:", ":lebanon:", ":flag_Lebanon:"}, + "\U0001f1f1\U0001f1e8": {":flag-lc:", ":flag_lc:", ":st_lucia:", ":flag_St._Lucia:"}, + "\U0001f1f1\U0001f1ee": {":flag-li:", ":flag_li:", ":liechtenstein:", ":flag_Liechtenstein:"}, + "\U0001f1f1\U0001f1f0": {":flag-lk:", ":flag_lk:", ":sri_lanka:", ":flag_Sri_Lanka:"}, + "\U0001f1f1\U0001f1f7": {":flag-lr:", ":flag_lr:", ":liberia:", ":flag_Liberia:"}, + "\U0001f1f1\U0001f1f8": {":flag-ls:", ":flag_ls:", ":lesotho:", ":flag_Lesotho:"}, + "\U0001f1f1\U0001f1f9": {":flag-lt:", ":flag_lt:", ":lithuania:", ":flag_Lithuania:"}, + "\U0001f1f1\U0001f1fa": {":flag-lu:", ":flag_lu:", ":luxembourg:", ":flag_Luxembourg:"}, + "\U0001f1f1\U0001f1fb": {":latvia:", ":flag-lv:", ":flag_lv:", ":flag_Latvia:"}, + "\U0001f1f1\U0001f1fe": {":libya:", ":flag-ly:", ":flag_ly:", ":flag_Libya:"}, + "\U0001f1f2\U0001f1e6": {":flag-ma:", ":flag_ma:", ":morocco:", ":flag_Morocco:"}, + "\U0001f1f2\U0001f1e8": {":monaco:", ":flag-mc:", ":flag_mc:", ":flag_Monaco:"}, + "\U0001f1f2\U0001f1e9": {":flag-md:", ":flag_md:", ":moldova:", ":flag_Moldova:"}, + "\U0001f1f2\U0001f1ea": {":flag-me:", ":flag_me:", ":montenegro:", ":flag_Montenegro:"}, + "\U0001f1f2\U0001f1eb": {":flag-mf:", ":flag_mf:", ":st_martin:", ":flag_St._Martin:"}, + "\U0001f1f2\U0001f1ec": {":flag-mg:", ":flag_mg:", ":madagascar:", ":flag_Madagascar:"}, + "\U0001f1f2\U0001f1ed": {":flag-mh:", ":flag_mh:", ":marshall_islands:", ":flag_Marshall_Islands:"}, + "\U0001f1f2\U0001f1f0": {":flag-mk:", ":flag_mk:", ":macedonia:", ":flag_North_Macedonia:"}, + "\U0001f1f2\U0001f1f1": {":mali:", ":flag-ml:", ":flag_ml:", ":flag_Mali:"}, + "\U0001f1f2\U0001f1f2": {":flag-mm:", ":flag_mm:", ":myanmar:", ":flag_Myanmar_(Burma):"}, + "\U0001f1f2\U0001f1f3": {":flag-mn:", ":flag_mn:", ":mongolia:", ":flag_Mongolia:"}, + "\U0001f1f2\U0001f1f4": {":macau:", ":flag-mo:", ":flag_mo:", ":flag_Macao_SAR_China:"}, + "\U0001f1f2\U0001f1f5": {":flag-mp:", ":flag_mp:", ":northern_mariana_islands:", ":flag_Northern_Mariana_Islands:"}, + "\U0001f1f2\U0001f1f6": {":flag-mq:", ":flag_mq:", ":martinique:", ":flag_Martinique:"}, + "\U0001f1f2\U0001f1f7": {":flag-mr:", ":flag_mr:", ":mauritania:", ":flag_Mauritania:"}, + "\U0001f1f2\U0001f1f8": {":flag-ms:", ":flag_ms:", ":montserrat:", ":flag_Montserrat:"}, + "\U0001f1f2\U0001f1f9": {":malta:", ":flag-mt:", ":flag_mt:", ":flag_Malta:"}, + "\U0001f1f2\U0001f1fa": {":flag-mu:", ":flag_mu:", ":mauritius:", ":flag_Mauritius:"}, + "\U0001f1f2\U0001f1fb": {":flag-mv:", ":flag_mv:", ":maldives:", ":flag_Maldives:"}, + "\U0001f1f2\U0001f1fc": {":malawi:", ":flag-mw:", ":flag_mw:", ":flag_Malawi:"}, + "\U0001f1f2\U0001f1fd": {":mexico:", ":flag-mx:", ":flag_mx:", ":flag_Mexico:"}, + "\U0001f1f2\U0001f1fe": {":flag-my:", ":flag_my:", ":malaysia:", ":flag_Malaysia:"}, + "\U0001f1f2\U0001f1ff": {":flag-mz:", ":flag_mz:", ":mozambique:", ":flag_Mozambique:"}, + "\U0001f1f3\U0001f1e6": {":flag-na:", ":flag_na:", ":namibia:", ":flag_Namibia:"}, + "\U0001f1f3\U0001f1e8": {":flag-nc:", ":flag_nc:", ":new_caledonia:", ":flag_New_Caledonia:"}, + "\U0001f1f3\U0001f1ea": {":niger:", ":flag-ne:", ":flag_ne:", ":flag_Niger:"}, + "\U0001f1f3\U0001f1eb": {":flag-nf:", ":flag_nf:", ":norfolk_island:", ":flag_Norfolk_Island:"}, + "\U0001f1f3\U0001f1ec": {":flag-ng:", ":flag_ng:", ":nigeria:", ":flag_Nigeria:"}, + "\U0001f1f3\U0001f1ee": {":flag-ni:", ":flag_ni:", ":nicaragua:", ":flag_Nicaragua:"}, + "\U0001f1f3\U0001f1f1": {":flag-nl:", ":flag_nl:", ":netherlands:", ":flag_Netherlands:"}, + "\U0001f1f3\U0001f1f4": {":norway:", ":flag-no:", ":flag_no:", ":flag_Norway:"}, + "\U0001f1f3\U0001f1f5": {":nepal:", ":flag-np:", ":flag_np:", ":flag_Nepal:"}, + "\U0001f1f3\U0001f1f7": {":nauru:", ":flag-nr:", ":flag_nr:", ":flag_Nauru:"}, + "\U0001f1f3\U0001f1fa": {":niue:", ":flag-nu:", ":flag_nu:", ":flag_Niue:"}, + "\U0001f1f3\U0001f1ff": {":flag-nz:", ":flag_nz:", ":new_zealand:", ":flag_New_Zealand:"}, + "\U0001f1f4\U0001f1f2": {":oman:", ":flag-om:", ":flag_om:", ":flag_Oman:"}, + "\U0001f1f5\U0001f1e6": {":panama:", ":flag-pa:", ":flag_pa:", ":flag_Panama:"}, + "\U0001f1f5\U0001f1ea": {":peru:", ":flag-pe:", ":flag_pe:", ":flag_Peru:"}, + "\U0001f1f5\U0001f1eb": {":flag-pf:", ":flag_pf:", ":french_polynesia:", ":flag_French_Polynesia:"}, + "\U0001f1f5\U0001f1ec": {":flag-pg:", ":flag_pg:", ":papua_new_guinea:", ":flag_Papua_New_Guinea:"}, + "\U0001f1f5\U0001f1ed": {":flag-ph:", ":flag_ph:", ":philippines:", ":flag_Philippines:"}, + "\U0001f1f5\U0001f1f0": {":flag-pk:", ":flag_pk:", ":pakistan:", ":flag_Pakistan:"}, + "\U0001f1f5\U0001f1f1": {":poland:", ":flag-pl:", ":flag_pl:", ":flag_Poland:"}, + "\U0001f1f5\U0001f1f2": {":flag-pm:", ":flag_pm:", ":st_pierre_miquelon:", ":flag_St._Pierre_&_Miquelon:"}, + "\U0001f1f5\U0001f1f3": {":flag-pn:", ":flag_pn:", ":pitcairn_islands:", ":flag_Pitcairn_Islands:"}, + "\U0001f1f5\U0001f1f7": {":flag-pr:", ":flag_pr:", ":puerto_rico:", ":flag_Puerto_Rico:"}, + "\U0001f1f5\U0001f1f8": {":flag-ps:", ":flag_ps:", ":palestinian_territories:", ":flag_Palestinian_Territories:"}, + "\U0001f1f5\U0001f1f9": {":flag-pt:", ":flag_pt:", ":portugal:", ":flag_Portugal:"}, + "\U0001f1f5\U0001f1fc": {":palau:", ":flag-pw:", ":flag_pw:", ":flag_Palau:"}, + "\U0001f1f5\U0001f1fe": {":flag-py:", ":flag_py:", ":paraguay:", ":flag_Paraguay:"}, + "\U0001f1f6\U0001f1e6": {":qatar:", ":flag-qa:", ":flag_qa:", ":flag_Qatar:"}, + "\U0001f1f7\U0001f1ea": {":flag-re:", ":flag_re:", ":reunion:", ":flag_Réunion:"}, + "\U0001f1f7\U0001f1f4": {":flag-ro:", ":flag_ro:", ":romania:", ":flag_Romania:"}, + "\U0001f1f7\U0001f1f8": {":serbia:", ":flag-rs:", ":flag_rs:", ":flag_Serbia:"}, + "\U0001f1f7\U0001f1fa": {":ru:", ":flag_ru:", ":flag_Russia:"}, + "\U0001f1f7\U0001f1fc": {":rwanda:", ":flag-rw:", ":flag_rw:", ":flag_Rwanda:"}, + "\U0001f1f8\U0001f1e6": {":flag-sa:", ":flag_sa:", ":saudi_arabia:", ":flag_Saudi_Arabia:"}, + "\U0001f1f8\U0001f1e7": {":flag-sb:", ":flag_sb:", ":solomon_islands:", ":flag_Solomon_Islands:"}, + "\U0001f1f8\U0001f1e8": {":flag-sc:", ":flag_sc:", ":seychelles:", ":flag_Seychelles:"}, + "\U0001f1f8\U0001f1e9": {":sudan:", ":flag-sd:", ":flag_sd:", ":flag_Sudan:"}, + "\U0001f1f8\U0001f1ea": {":sweden:", ":flag-se:", ":flag_se:", ":flag_Sweden:"}, + "\U0001f1f8\U0001f1ec": {":flag-sg:", ":flag_sg:", ":singapore:", ":flag_Singapore:"}, + "\U0001f1f8\U0001f1ed": {":flag-sh:", ":flag_sh:", ":st_helena:", ":flag_St._Helena:"}, + "\U0001f1f8\U0001f1ee": {":flag-si:", ":flag_si:", ":slovenia:", ":flag_Slovenia:"}, + "\U0001f1f8\U0001f1ef": {":flag-sj:", ":flag_sj:", ":svalbard_jan_mayen:", ":flag_Svalbard_&_Jan_Mayen:"}, + "\U0001f1f8\U0001f1f0": {":flag-sk:", ":flag_sk:", ":slovakia:", ":flag_Slovakia:"}, + "\U0001f1f8\U0001f1f1": {":flag-sl:", ":flag_sl:", ":sierra_leone:", ":flag_Sierra_Leone:"}, + "\U0001f1f8\U0001f1f2": {":flag-sm:", ":flag_sm:", ":san_marino:", ":flag_San_Marino:"}, + "\U0001f1f8\U0001f1f3": {":flag-sn:", ":flag_sn:", ":senegal:", ":flag_Senegal:"}, + "\U0001f1f8\U0001f1f4": {":flag-so:", ":flag_so:", ":somalia:", ":flag_Somalia:"}, + "\U0001f1f8\U0001f1f7": {":flag-sr:", ":flag_sr:", ":suriname:", ":flag_Suriname:"}, + "\U0001f1f8\U0001f1f8": {":flag-ss:", ":flag_ss:", ":south_sudan:", ":flag_South_Sudan:"}, + "\U0001f1f8\U0001f1f9": {":flag-st:", ":flag_st:", ":sao_tome_principe:", ":flag_São_Tomé_&_Príncipe:"}, + "\U0001f1f8\U0001f1fb": {":flag-sv:", ":flag_sv:", ":el_salvador:", ":flag_El_Salvador:"}, + "\U0001f1f8\U0001f1fd": {":flag-sx:", ":flag_sx:", ":sint_maarten:", ":flag_Sint_Maarten:"}, + "\U0001f1f8\U0001f1fe": {":syria:", ":flag-sy:", ":flag_sy:", ":flag_Syria:"}, + "\U0001f1f8\U0001f1ff": {":flag-sz:", ":flag_sz:", ":swaziland:", ":flag_Eswatini:"}, + "\U0001f1f9\U0001f1e6": {":flag-ta:", ":flag_ta:", ":tristan_da_cunha:", ":flag_Tristan_da_Cunha:"}, + "\U0001f1f9\U0001f1e8": {":flag-tc:", ":flag_tc:", ":turks_caicos_islands:", ":flag_Turks_&_Caicos_Islands:"}, + "\U0001f1f9\U0001f1e9": {":chad:", ":flag-td:", ":flag_td:", ":flag_Chad:"}, + "\U0001f1f9\U0001f1eb": {":flag-tf:", ":flag_tf:", ":french_southern_territories:", ":flag_French_Southern_Territories:"}, + "\U0001f1f9\U0001f1ec": {":togo:", ":flag-tg:", ":flag_tg:", ":flag_Togo:"}, + "\U0001f1f9\U0001f1ed": {":flag-th:", ":flag_th:", ":thailand:", ":flag_Thailand:"}, + "\U0001f1f9\U0001f1ef": {":flag-tj:", ":flag_tj:", ":tajikistan:", ":flag_Tajikistan:"}, + "\U0001f1f9\U0001f1f0": {":flag-tk:", ":flag_tk:", ":tokelau:", ":flag_Tokelau:"}, + "\U0001f1f9\U0001f1f1": {":flag-tl:", ":flag_tl:", ":timor_leste:", ":flag_Timor-Leste:"}, + "\U0001f1f9\U0001f1f2": {":flag-tm:", ":flag_tm:", ":turkmenistan:", ":flag_Turkmenistan:"}, + "\U0001f1f9\U0001f1f3": {":flag-tn:", ":flag_tn:", ":tunisia:", ":flag_Tunisia:"}, + "\U0001f1f9\U0001f1f4": {":tonga:", ":flag-to:", ":flag_to:", ":flag_Tonga:"}, + "\U0001f1f9\U0001f1f7": {":tr:", ":flag-tr:", ":flag_tr:", ":flag_Turkey:"}, + "\U0001f1f9\U0001f1f9": {":flag-tt:", ":flag_tt:", ":trinidad_tobago:", ":flag_Trinidad_&_Tobago:"}, + "\U0001f1f9\U0001f1fb": {":tuvalu:", ":flag-tv:", ":flag_tv:", ":flag_Tuvalu:"}, + "\U0001f1f9\U0001f1fc": {":taiwan:", ":flag-tw:", ":flag_tw:", ":flag_Taiwan:"}, + "\U0001f1f9\U0001f1ff": {":flag-tz:", ":flag_tz:", ":tanzania:", ":flag_Tanzania:"}, + "\U0001f1fa\U0001f1e6": {":flag-ua:", ":flag_ua:", ":ukraine:", ":flag_Ukraine:"}, + "\U0001f1fa\U0001f1ec": {":uganda:", ":flag-ug:", ":flag_ug:", ":flag_Uganda:"}, + "\U0001f1fa\U0001f1f2": {":flag-um:", ":flag_um:", ":us_outlying_islands:", ":flag_U.S._Outlying_Islands:"}, + "\U0001f1fa\U0001f1f3": {":flag-un:", ":united_nations:", ":flag_United_Nations:"}, + "\U0001f1fa\U0001f1f8": {":us:", ":flag_us:", ":flag_United_States:"}, + "\U0001f1fa\U0001f1fe": {":flag-uy:", ":flag_uy:", ":uruguay:", ":flag_Uruguay:"}, + "\U0001f1fa\U0001f1ff": {":flag-uz:", ":flag_uz:", ":uzbekistan:", ":flag_Uzbekistan:"}, + "\U0001f1fb\U0001f1e6": {":flag-va:", ":flag_va:", ":vatican_city:", ":flag_Vatican_City:"}, + "\U0001f1fb\U0001f1e8": {":flag-vc:", ":flag_vc:", ":st_vincent_grenadines:", ":flag_St._Vincent_&_Grenadines:"}, + "\U0001f1fb\U0001f1ea": {":flag-ve:", ":flag_ve:", ":venezuela:", ":flag_Venezuela:"}, + "\U0001f1fb\U0001f1ec": {":flag-vg:", ":flag_vg:", ":british_virgin_islands:", ":flag_British_Virgin_Islands:"}, + "\U0001f1fb\U0001f1ee": {":flag-vi:", ":flag_vi:", ":us_virgin_islands:", ":flag_U.S._Virgin_Islands:"}, + "\U0001f1fb\U0001f1f3": {":flag-vn:", ":flag_vn:", ":vietnam:", ":flag_Vietnam:"}, + "\U0001f1fb\U0001f1fa": {":flag-vu:", ":flag_vu:", ":vanuatu:", ":flag_Vanuatu:"}, + "\U0001f1fc\U0001f1eb": {":flag-wf:", ":flag_wf:", ":wallis_futuna:", ":flag_Wallis_&_Futuna:"}, + "\U0001f1fc\U0001f1f8": {":samoa:", ":flag-ws:", ":flag_ws:", ":flag_Samoa:"}, + "\U0001f1fd\U0001f1f0": {":kosovo:", ":flag-xk:", ":flag_xk:", ":flag_Kosovo:"}, + "\U0001f1fe\U0001f1ea": {":yemen:", ":flag-ye:", ":flag_ye:", ":flag_Yemen:"}, + "\U0001f1fe\U0001f1f9": {":flag-yt:", ":flag_yt:", ":mayotte:", ":flag_Mayotte:"}, + "\U0001f1ff\U0001f1e6": {":flag-za:", ":flag_za:", ":south_africa:", ":flag_South_Africa:"}, + "\U0001f1ff\U0001f1f2": {":zambia:", ":flag-zm:", ":flag_zm:", ":flag_Zambia:"}, + "\U0001f1ff\U0001f1fc": {":flag-zw:", ":flag_zw:", ":zimbabwe:", ":flag_Zimbabwe:"}, + "\U0001f201": {":koko:", ":Japanese_here_button:"}, + "\U0001f202": {":Japanese_service_charge_button:"}, + "\U0001f202\ufe0f": {":sa:"}, + "\U0001f21a": {":u7121:", ":Japanese_free_of_charge_button:"}, + "\U0001f22f": {":u6307:", ":Japanese_reserved_button:"}, + "\U0001f232": {":u7981:", ":Japanese_prohibited_button:"}, + "\U0001f233": {":u7a7a:", ":Japanese_vacancy_button:"}, + "\U0001f234": {":u5408:", ":Japanese_passing_grade_button:"}, + "\U0001f235": {":u6e80:", ":Japanese_no_vacancy_button:"}, + "\U0001f236": {":u6709:", ":Japanese_not_free_of_charge_button:"}, + "\U0001f237": {":Japanese_monthly_amount_button:"}, + "\U0001f237\ufe0f": {":u6708:"}, + "\U0001f238": {":u7533:", ":Japanese_application_button:"}, + "\U0001f239": {":u5272:", ":Japanese_discount_button:"}, + "\U0001f23a": {":u55b6:", ":Japanese_open_for_business_button:"}, + "\U0001f250": {":ideograph_advantage:", ":Japanese_bargain_button:"}, + "\U0001f251": {":accept:", ":Japanese_acceptable_button:"}, + "\U0001f300": {":cyclone:"}, + "\U0001f301": {":foggy:"}, + "\U0001f302": {":closed_umbrella:"}, + "\U0001f303": {":night_with_stars:"}, + "\U0001f304": {":sunrise_over_mountains:"}, + "\U0001f305": {":sunrise:"}, + "\U0001f306": {":city_dusk:", ":city_sunset:", ":cityscape_at_dusk:"}, + "\U0001f307": {":sunset:", ":city_sunrise:"}, + "\U0001f308": {":rainbow:"}, + "\U0001f309": {":bridge_at_night:"}, + "\U0001f30a": {":ocean:", ":water_wave:"}, + "\U0001f30b": {":volcano:"}, + "\U0001f30c": {":milky_way:"}, + "\U0001f30d": {":earth_africa:", ":globe_showing_Europe-Africa:"}, + "\U0001f30e": {":earth_americas:", ":globe_showing_Americas:"}, + "\U0001f30f": {":earth_asia:", ":globe_showing_Asia-Australia:"}, + "\U0001f310": {":globe_with_meridians:"}, + "\U0001f311": {":new_moon:"}, + "\U0001f312": {":waxing_crescent_moon:"}, + "\U0001f313": {":first_quarter_moon:"}, + "\U0001f314": {":moon:", ":waxing_gibbous_moon:"}, + "\U0001f315": {":full_moon:"}, + "\U0001f316": {":waning_gibbous_moon:"}, + "\U0001f317": {":last_quarter_moon:"}, + "\U0001f318": {":waning_crescent_moon:"}, + "\U0001f319": {":crescent_moon:"}, + "\U0001f31a": {":new_moon_face:", ":new_moon_with_face:"}, + "\U0001f31b": {":first_quarter_moon_face:", ":first_quarter_moon_with_face:"}, + "\U0001f31c": {":last_quarter_moon_face:", ":last_quarter_moon_with_face:"}, + "\U0001f31d": {":full_moon_face:", ":full_moon_with_face:"}, + "\U0001f31e": {":sun_with_face:"}, + "\U0001f31f": {":star2:", ":glowing_star:"}, + "\U0001f320": {":stars:", ":shooting_star:"}, + "\U0001f321\ufe0f": {":thermometer:"}, + "\U0001f324": {":white_sun_small_cloud:", ":sun_behind_small_cloud:"}, + "\U0001f324\ufe0f": {":mostly_sunny:"}, + "\U0001f325": {":white_sun_cloud:", ":sun_behind_large_cloud:"}, + "\U0001f325\ufe0f": {":barely_sunny:"}, + "\U0001f326": {":white_sun_rain_cloud:", ":sun_behind_rain_cloud:"}, + "\U0001f326\ufe0f": {":partly_sunny_rain:"}, + "\U0001f327": {":cloud_rain:", ":cloud_with_rain:"}, + "\U0001f327\ufe0f": {":rain_cloud:"}, + "\U0001f328": {":cloud_snow:", ":cloud_with_snow:"}, + "\U0001f328\ufe0f": {":snow_cloud:"}, + "\U0001f329": {":cloud_lightning:", ":cloud_with_lightning:"}, + "\U0001f329\ufe0f": {":lightning:"}, + "\U0001f32a": {":cloud_tornado:"}, + "\U0001f32a\ufe0f": {":tornado:"}, + "\U0001f32b\ufe0f": {":fog:"}, + "\U0001f32c": {":wind_face:"}, + "\U0001f32c\ufe0f": {":wind_blowing_face:"}, + "\U0001f32d": {":hotdog:", ":hot_dog:"}, + "\U0001f32e": {":taco:"}, + "\U0001f32f": {":burrito:"}, + "\U0001f330": {":chestnut:"}, + "\U0001f331": {":seedling:"}, + "\U0001f332": {":evergreen_tree:"}, + "\U0001f333": {":deciduous_tree:"}, + "\U0001f334": {":palm_tree:"}, + "\U0001f335": {":cactus:"}, + "\U0001f336\ufe0f": {":hot_pepper:"}, + "\U0001f337": {":tulip:"}, + "\U0001f338": {":cherry_blossom:"}, + "\U0001f339": {":rose:"}, + "\U0001f33a": {":hibiscus:"}, + "\U0001f33b": {":sunflower:"}, + "\U0001f33c": {":blossom:"}, + "\U0001f33d": {":corn:", ":ear_of_corn:"}, + "\U0001f33e": {":ear_of_rice:", ":sheaf_of_rice:"}, + "\U0001f33f": {":herb:"}, + "\U0001f340": {":four_leaf_clover:"}, + "\U0001f341": {":maple_leaf:"}, + "\U0001f342": {":fallen_leaf:"}, + "\U0001f343": {":leaves:", ":leaf_fluttering_in_wind:"}, + "\U0001f344": {":mushroom:"}, + "\U0001f345": {":tomato:"}, + "\U0001f346": {":eggplant:"}, + "\U0001f347": {":grapes:"}, + "\U0001f348": {":melon:"}, + "\U0001f349": {":watermelon:"}, + "\U0001f34a": {":orange:", ":mandarin:", ":tangerine:"}, + "\U0001f34b": {":lemon:"}, + "\U0001f34c": {":banana:"}, + "\U0001f34d": {":pineapple:"}, + "\U0001f34e": {":apple:", ":red_apple:"}, + "\U0001f34f": {":green_apple:"}, + "\U0001f350": {":pear:"}, + "\U0001f351": {":peach:"}, + "\U0001f352": {":cherries:"}, + "\U0001f353": {":strawberry:"}, + "\U0001f354": {":hamburger:"}, + "\U0001f355": {":pizza:"}, + "\U0001f356": {":meat_on_bone:"}, + "\U0001f357": {":poultry_leg:"}, + "\U0001f358": {":rice_cracker:"}, + "\U0001f359": {":rice_ball:"}, + "\U0001f35a": {":rice:", ":cooked_rice:"}, + "\U0001f35b": {":curry:", ":curry_rice:"}, + "\U0001f35c": {":ramen:", ":steaming_bowl:"}, + "\U0001f35d": {":spaghetti:"}, + "\U0001f35e": {":bread:"}, + "\U0001f35f": {":fries:", ":french_fries:"}, + "\U0001f360": {":sweet_potato:", ":roasted_sweet_potato:"}, + "\U0001f361": {":dango:"}, + "\U0001f362": {":oden:"}, + "\U0001f363": {":sushi:"}, + "\U0001f364": {":fried_shrimp:"}, + "\U0001f365": {":fish_cake:", ":fish_cake_with_swirl:"}, + "\U0001f366": {":icecream:", ":soft_ice_cream:"}, + "\U0001f367": {":shaved_ice:"}, + "\U0001f368": {":ice_cream:"}, + "\U0001f369": {":doughnut:"}, + "\U0001f36a": {":cookie:"}, + "\U0001f36b": {":chocolate_bar:"}, + "\U0001f36c": {":candy:"}, + "\U0001f36d": {":lollipop:"}, + "\U0001f36e": {":custard:"}, + "\U0001f36f": {":honey_pot:"}, + "\U0001f370": {":cake:", ":shortcake:"}, + "\U0001f371": {":bento:", ":bento_box:"}, + "\U0001f372": {":stew:", ":pot_of_food:"}, + "\U0001f373": {":cooking:", ":fried_egg:"}, + "\U0001f374": {":fork_and_knife:"}, + "\U0001f375": {":tea:", ":teacup_without_handle:"}, + "\U0001f376": {":sake:"}, + "\U0001f377": {":wine_glass:"}, + "\U0001f378": {":cocktail:", ":cocktail_glass:"}, + "\U0001f379": {":tropical_drink:"}, + "\U0001f37a": {":beer:", ":beer_mug:"}, + "\U0001f37b": {":beers:", ":clinking_beer_mugs:"}, + "\U0001f37c": {":baby_bottle:"}, + "\U0001f37d": {":fork_knife_plate:", ":fork_and_knife_with_plate:"}, + "\U0001f37d\ufe0f": {":knife_fork_plate:", ":plate_with_cutlery:"}, + "\U0001f37e": {":champagne:", ":bottle_with_popping_cork:"}, + "\U0001f37f": {":popcorn:"}, + "\U0001f380": {":ribbon:"}, + "\U0001f381": {":gift:", ":wrapped_gift:"}, + "\U0001f382": {":birthday:", ":birthday_cake:"}, + "\U0001f383": {":jack-o-lantern:", ":jack_o_lantern:"}, + "\U0001f384": {":Christmas_tree:", ":christmas_tree:"}, + "\U0001f385": {":santa:", ":Santa_Claus:"}, + "\U0001f385\U0001f3fb": {":santa_tone1:"}, + "\U0001f385\U0001f3fc": {":santa_tone2:"}, + "\U0001f385\U0001f3fd": {":santa_tone3:"}, + "\U0001f385\U0001f3fe": {":santa_tone4:"}, + "\U0001f385\U0001f3ff": {":santa_tone5:"}, + "\U0001f386": {":fireworks:"}, + "\U0001f387": {":sparkler:"}, + "\U0001f388": {":balloon:"}, + "\U0001f389": {":tada:", ":party_popper:"}, + "\U0001f38a": {":confetti_ball:"}, + "\U0001f38b": {":tanabata_tree:"}, + "\U0001f38c": {":crossed_flags:"}, + "\U0001f38d": {":bamboo:", ":pine_decoration:"}, + "\U0001f38e": {":dolls:", ":Japanese_dolls:"}, + "\U0001f38f": {":flags:", ":carp_streamer:"}, + "\U0001f390": {":wind_chime:"}, + "\U0001f391": {":rice_scene:", ":moon_viewing_ceremony:"}, + "\U0001f392": {":backpack:", ":school_satchel:"}, + "\U0001f393": {":mortar_board:", ":graduation_cap:"}, + "\U0001f396": {":military_medal:"}, + "\U0001f396\ufe0f": {":medal:", ":medal_military:"}, + "\U0001f397\ufe0f": {":reminder_ribbon:"}, + "\U0001f399": {":microphone2:"}, + "\U0001f399\ufe0f": {":studio_microphone:"}, + "\U0001f39a\ufe0f": {":level_slider:"}, + "\U0001f39b\ufe0f": {":control_knobs:"}, + "\U0001f39e\ufe0f": {":film_strip:", ":film_frames:"}, + "\U0001f39f": {":tickets:"}, + "\U0001f39f\ufe0f": {":admission_tickets:"}, + "\U0001f3a0": {":carousel_horse:"}, + "\U0001f3a1": {":ferris_wheel:"}, + "\U0001f3a2": {":roller_coaster:"}, + "\U0001f3a3": {":fishing_pole:", ":fishing_pole_and_fish:"}, + "\U0001f3a4": {":microphone:"}, + "\U0001f3a5": {":movie_camera:"}, + "\U0001f3a6": {":cinema:"}, + "\U0001f3a7": {":headphone:", ":headphones:"}, + "\U0001f3a8": {":art:", ":artist_palette:"}, + "\U0001f3a9": {":tophat:", ":top_hat:"}, + "\U0001f3aa": {":circus_tent:"}, + "\U0001f3ab": {":ticket:"}, + "\U0001f3ac": {":clapper:", ":clapper_board:"}, + "\U0001f3ad": {":performing_arts:"}, + "\U0001f3ae": {":video_game:"}, + "\U0001f3af": {":dart:", ":bullseye:"}, + "\U0001f3b0": {":slot_machine:"}, + "\U0001f3b1": {":8ball:", ":pool_8_ball:"}, + "\U0001f3b2": {":game_die:"}, + "\U0001f3b3": {":bowling:"}, + "\U0001f3b4": {":flower_playing_cards:"}, + "\U0001f3b5": {":musical_note:"}, + "\U0001f3b6": {":notes:", ":musical_notes:"}, + "\U0001f3b7": {":saxophone:"}, + "\U0001f3b8": {":guitar:"}, + "\U0001f3b9": {":musical_keyboard:"}, + "\U0001f3ba": {":trumpet:"}, + "\U0001f3bb": {":violin:"}, + "\U0001f3bc": {":musical_score:"}, + "\U0001f3bd": {":running_shirt:", ":running_shirt_with_sash:"}, + "\U0001f3be": {":tennis:"}, + "\U0001f3bf": {":ski:", ":skis:"}, + "\U0001f3c0": {":basketball:"}, + "\U0001f3c1": {":checkered_flag:", ":chequered_flag:"}, + "\U0001f3c2": {":snowboarder:"}, + "\U0001f3c2\U0001f3fb": {":snowboarder_tone1:"}, + "\U0001f3c2\U0001f3fc": {":snowboarder_tone2:"}, + "\U0001f3c2\U0001f3fd": {":snowboarder_tone3:"}, + "\U0001f3c2\U0001f3fe": {":snowboarder_tone4:"}, + "\U0001f3c2\U0001f3ff": {":snowboarder_tone5:"}, + "\U0001f3c3": {":running:", ":person_running:"}, + "\U0001f3c3\U0001f3fb": {":person_running_tone1:"}, + "\U0001f3c3\U0001f3fb\u200d\u2640\ufe0f": {":woman_running_tone1:"}, + "\U0001f3c3\U0001f3fb\u200d\u2642\ufe0f": {":man_running_tone1:"}, + "\U0001f3c3\U0001f3fc": {":person_running_tone2:"}, + "\U0001f3c3\U0001f3fc\u200d\u2640\ufe0f": {":woman_running_tone2:"}, + "\U0001f3c3\U0001f3fc\u200d\u2642\ufe0f": {":man_running_tone2:"}, + "\U0001f3c3\U0001f3fd": {":person_running_tone3:"}, + "\U0001f3c3\U0001f3fd\u200d\u2640\ufe0f": {":woman_running_tone3:"}, + "\U0001f3c3\U0001f3fd\u200d\u2642\ufe0f": {":man_running_tone3:"}, + "\U0001f3c3\U0001f3fe": {":person_running_tone4:"}, + "\U0001f3c3\U0001f3fe\u200d\u2640\ufe0f": {":woman_running_tone4:"}, + "\U0001f3c3\U0001f3fe\u200d\u2642\ufe0f": {":man_running_tone4:"}, + "\U0001f3c3\U0001f3ff": {":person_running_tone5:"}, + "\U0001f3c3\U0001f3ff\u200d\u2640\ufe0f": {":woman_running_tone5:"}, + "\U0001f3c3\U0001f3ff\u200d\u2642\ufe0f": {":man_running_tone5:"}, + "\U0001f3c3\u200d\u2640\ufe0f": {":running_woman:", ":woman-running:", ":woman_running:"}, + "\U0001f3c3\u200d\u2642\ufe0f": {":runner:", ":man-running:", ":man_running:", ":running_man:"}, + "\U0001f3c4": {":person_surfing:"}, + "\U0001f3c4\U0001f3fb": {":person_surfing_tone1:"}, + "\U0001f3c4\U0001f3fb\u200d\u2640\ufe0f": {":woman_surfing_tone1:"}, + "\U0001f3c4\U0001f3fb\u200d\u2642\ufe0f": {":man_surfing_tone1:"}, + "\U0001f3c4\U0001f3fc": {":person_surfing_tone2:"}, + "\U0001f3c4\U0001f3fc\u200d\u2640\ufe0f": {":woman_surfing_tone2:"}, + "\U0001f3c4\U0001f3fc\u200d\u2642\ufe0f": {":man_surfing_tone2:"}, + "\U0001f3c4\U0001f3fd": {":person_surfing_tone3:"}, + "\U0001f3c4\U0001f3fd\u200d\u2640\ufe0f": {":woman_surfing_tone3:"}, + "\U0001f3c4\U0001f3fd\u200d\u2642\ufe0f": {":man_surfing_tone3:"}, + "\U0001f3c4\U0001f3fe": {":person_surfing_tone4:"}, + "\U0001f3c4\U0001f3fe\u200d\u2640\ufe0f": {":woman_surfing_tone4:"}, + "\U0001f3c4\U0001f3fe\u200d\u2642\ufe0f": {":man_surfing_tone4:"}, + "\U0001f3c4\U0001f3ff": {":person_surfing_tone5:"}, + "\U0001f3c4\U0001f3ff\u200d\u2640\ufe0f": {":woman_surfing_tone5:"}, + "\U0001f3c4\U0001f3ff\u200d\u2642\ufe0f": {":man_surfing_tone5:"}, + "\U0001f3c4\u200d\u2640\ufe0f": {":surfing_woman:", ":woman-surfing:", ":woman_surfing:"}, + "\U0001f3c4\u200d\u2642\ufe0f": {":surfer:", ":man-surfing:", ":man_surfing:", ":surfing_man:"}, + "\U0001f3c5": {":medal_sports:", ":sports_medal:"}, + "\U0001f3c6": {":trophy:"}, + "\U0001f3c7": {":horse_racing:"}, + "\U0001f3c7\U0001f3fb": {":horse_racing_tone1:"}, + "\U0001f3c7\U0001f3fc": {":horse_racing_tone2:"}, + "\U0001f3c7\U0001f3fd": {":horse_racing_tone3:"}, + "\U0001f3c7\U0001f3fe": {":horse_racing_tone4:"}, + "\U0001f3c7\U0001f3ff": {":horse_racing_tone5:"}, + "\U0001f3c8": {":football:", ":american_football:"}, + "\U0001f3c9": {":rugby_football:"}, + "\U0001f3ca": {":person_swimming:"}, + "\U0001f3ca\U0001f3fb": {":person_swimming_tone1:"}, + "\U0001f3ca\U0001f3fb\u200d\u2640\ufe0f": {":woman_swimming_tone1:"}, + "\U0001f3ca\U0001f3fb\u200d\u2642\ufe0f": {":man_swimming_tone1:"}, + "\U0001f3ca\U0001f3fc": {":person_swimming_tone2:"}, + "\U0001f3ca\U0001f3fc\u200d\u2640\ufe0f": {":woman_swimming_tone2:"}, + "\U0001f3ca\U0001f3fc\u200d\u2642\ufe0f": {":man_swimming_tone2:"}, + "\U0001f3ca\U0001f3fd": {":person_swimming_tone3:"}, + "\U0001f3ca\U0001f3fd\u200d\u2640\ufe0f": {":woman_swimming_tone3:"}, + "\U0001f3ca\U0001f3fd\u200d\u2642\ufe0f": {":man_swimming_tone3:"}, + "\U0001f3ca\U0001f3fe": {":person_swimming_tone4:"}, + "\U0001f3ca\U0001f3fe\u200d\u2640\ufe0f": {":woman_swimming_tone4:"}, + "\U0001f3ca\U0001f3fe\u200d\u2642\ufe0f": {":man_swimming_tone4:"}, + "\U0001f3ca\U0001f3ff": {":person_swimming_tone5:"}, + "\U0001f3ca\U0001f3ff\u200d\u2640\ufe0f": {":woman_swimming_tone5:"}, + "\U0001f3ca\U0001f3ff\u200d\u2642\ufe0f": {":man_swimming_tone5:"}, + "\U0001f3ca\u200d\u2640\ufe0f": {":swimming_woman:", ":woman-swimming:", ":woman_swimming:"}, + "\U0001f3ca\u200d\u2642\ufe0f": {":swimmer:", ":man-swimming:", ":man_swimming:", ":swimming_man:"}, + "\U0001f3cb": {":person_lifting_weights:"}, + "\U0001f3cb\U0001f3fb": {":person_lifting_weights_tone1:"}, + "\U0001f3cb\U0001f3fb\u200d\u2640\ufe0f": {":woman_lifting_weights_tone1:"}, + "\U0001f3cb\U0001f3fb\u200d\u2642\ufe0f": {":man_lifting_weights_tone1:"}, + "\U0001f3cb\U0001f3fc": {":person_lifting_weights_tone2:"}, + "\U0001f3cb\U0001f3fc\u200d\u2640\ufe0f": {":woman_lifting_weights_tone2:"}, + "\U0001f3cb\U0001f3fc\u200d\u2642\ufe0f": {":man_lifting_weights_tone2:"}, + "\U0001f3cb\U0001f3fd": {":person_lifting_weights_tone3:"}, + "\U0001f3cb\U0001f3fd\u200d\u2640\ufe0f": {":woman_lifting_weights_tone3:"}, + "\U0001f3cb\U0001f3fd\u200d\u2642\ufe0f": {":man_lifting_weights_tone3:"}, + "\U0001f3cb\U0001f3fe": {":person_lifting_weights_tone4:"}, + "\U0001f3cb\U0001f3fe\u200d\u2640\ufe0f": {":woman_lifting_weights_tone4:"}, + "\U0001f3cb\U0001f3fe\u200d\u2642\ufe0f": {":man_lifting_weights_tone4:"}, + "\U0001f3cb\U0001f3ff": {":person_lifting_weights_tone5:"}, + "\U0001f3cb\U0001f3ff\u200d\u2640\ufe0f": {":woman_lifting_weights_tone5:"}, + "\U0001f3cb\U0001f3ff\u200d\u2642\ufe0f": {":man_lifting_weights_tone5:"}, + "\U0001f3cb\ufe0f": {":weight_lifting:"}, + "\U0001f3cb\ufe0f\u200d\u2640\ufe0f": {":weight_lifting_woman:", ":woman-lifting-weights:", ":woman_lifting_weights:"}, + "\U0001f3cb\ufe0f\u200d\u2642\ufe0f": {":weight_lifter:", ":weight_lifting_man:", ":man-lifting-weights:", ":man_lifting_weights:"}, + "\U0001f3cc": {":person_golfing:"}, + "\U0001f3cc\U0001f3fb": {":person_golfing_tone1:"}, + "\U0001f3cc\U0001f3fb\u200d\u2640\ufe0f": {":woman_golfing_tone1:"}, + "\U0001f3cc\U0001f3fb\u200d\u2642\ufe0f": {":man_golfing_tone1:"}, + "\U0001f3cc\U0001f3fc": {":person_golfing_tone2:"}, + "\U0001f3cc\U0001f3fc\u200d\u2640\ufe0f": {":woman_golfing_tone2:"}, + "\U0001f3cc\U0001f3fc\u200d\u2642\ufe0f": {":man_golfing_tone2:"}, + "\U0001f3cc\U0001f3fd": {":person_golfing_tone3:"}, + "\U0001f3cc\U0001f3fd\u200d\u2640\ufe0f": {":woman_golfing_tone3:"}, + "\U0001f3cc\U0001f3fd\u200d\u2642\ufe0f": {":man_golfing_tone3:"}, + "\U0001f3cc\U0001f3fe": {":person_golfing_tone4:"}, + "\U0001f3cc\U0001f3fe\u200d\u2640\ufe0f": {":woman_golfing_tone4:"}, + "\U0001f3cc\U0001f3fe\u200d\u2642\ufe0f": {":man_golfing_tone4:"}, + "\U0001f3cc\U0001f3ff": {":person_golfing_tone5:"}, + "\U0001f3cc\U0001f3ff\u200d\u2640\ufe0f": {":woman_golfing_tone5:"}, + "\U0001f3cc\U0001f3ff\u200d\u2642\ufe0f": {":man_golfing_tone5:"}, + "\U0001f3cc\ufe0f": {":golfing:"}, + "\U0001f3cc\ufe0f\u200d\u2640\ufe0f": {":golfing_woman:", ":woman-golfing:", ":woman_golfing:"}, + "\U0001f3cc\ufe0f\u200d\u2642\ufe0f": {":golfer:", ":golfing_man:", ":man-golfing:", ":man_golfing:"}, + "\U0001f3cd": {":motorcycle:"}, + "\U0001f3cd\ufe0f": {":racing_motorcycle:"}, + "\U0001f3ce": {":race_car:"}, + "\U0001f3ce\ufe0f": {":racing_car:"}, + "\U0001f3cf": {":cricket_game:", ":cricket_bat_and_ball:"}, + "\U0001f3d0": {":volleyball:"}, + "\U0001f3d1": {":field_hockey:", ":field_hockey_stick_and_ball:"}, + "\U0001f3d2": {":hockey:", ":ice_hockey:", ":ice_hockey_stick_and_puck:"}, + "\U0001f3d3": {":ping_pong:", ":table_tennis_paddle_and_ball:"}, + "\U0001f3d4": {":mountain_snow:", ":snow-capped_mountain:"}, + "\U0001f3d4\ufe0f": {":snow_capped_mountain:"}, + "\U0001f3d5\ufe0f": {":camping:"}, + "\U0001f3d6": {":beach:"}, + "\U0001f3d6\ufe0f": {":beach_with_umbrella:"}, + "\U0001f3d7": {":construction_site:"}, + "\U0001f3d7\ufe0f": {":building_construction:"}, + "\U0001f3d8": {":homes:", ":houses:"}, + "\U0001f3d8\ufe0f": {":house_buildings:"}, + "\U0001f3d9\ufe0f": {":cityscape:"}, + "\U0001f3da": {":derelict_house:", ":house_abandoned:"}, + "\U0001f3da\ufe0f": {":derelict_house_building:"}, + "\U0001f3db\ufe0f": {":classical_building:"}, + "\U0001f3dc\ufe0f": {":desert:"}, + "\U0001f3dd": {":island:"}, + "\U0001f3dd\ufe0f": {":desert_island:"}, + "\U0001f3de": {":park:"}, + "\U0001f3de\ufe0f": {":national_park:"}, + "\U0001f3df\ufe0f": {":stadium:"}, + "\U0001f3e0": {":house:"}, + "\U0001f3e1": {":house_with_garden:"}, + "\U0001f3e2": {":office:", ":office_building:"}, + "\U0001f3e3": {":post_office:", ":Japanese_post_office:"}, + "\U0001f3e4": {":european_post_office:"}, + "\U0001f3e5": {":hospital:"}, + "\U0001f3e6": {":bank:"}, + "\U0001f3e7": {":atm:", ":ATM_sign:"}, + "\U0001f3e8": {":hotel:"}, + "\U0001f3e9": {":love_hotel:"}, + "\U0001f3ea": {":convenience_store:"}, + "\U0001f3eb": {":school:"}, + "\U0001f3ec": {":department_store:"}, + "\U0001f3ed": {":factory:"}, + "\U0001f3ee": {":lantern:", ":izakaya_lantern:", ":red_paper_lantern:"}, + "\U0001f3ef": {":Japanese_castle:", ":japanese_castle:"}, + "\U0001f3f0": {":castle:", ":european_castle:"}, + "\U0001f3f3": {":flag_white:", ":white_flag:"}, + "\U0001f3f3\ufe0f": {":waving_white_flag:"}, + "\U0001f3f3\ufe0f\u200d\U0001f308": {":rainbow-flag:", ":rainbow_flag:"}, + "\U0001f3f3\ufe0f\u200d\u26a7\ufe0f": {":transgender_flag:"}, + "\U0001f3f4": {":black_flag:", ":flag_black:", ":waving_black_flag:"}, + "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f": {":england:", ":flag-england:", ":flag_England:"}, + "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f": {":scotland:", ":flag-scotland:", ":flag_Scotland:"}, + "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f": {":wales:", ":flag-wales:", ":flag_Wales:"}, + "\U0001f3f4\u200d\u2620\ufe0f": {":pirate_flag:"}, + "\U0001f3f5\ufe0f": {":rosette:"}, + "\U0001f3f7\ufe0f": {":label:"}, + "\U0001f3f8": {":badminton:", ":badminton_racquet_and_shuttlecock:"}, + "\U0001f3f9": {":bow_and_arrow:"}, + "\U0001f3fa": {":amphora:"}, + "\U0001f3fb": {":skin-tone-2:"}, + "\U0001f3fc": {":skin-tone-3:"}, + "\U0001f3fd": {":skin-tone-4:"}, + "\U0001f3fe": {":skin-tone-5:"}, + "\U0001f3ff": {":skin-tone-6:"}, + "\U0001f400": {":rat:"}, + "\U0001f401": {":mouse2:"}, + "\U0001f402": {":ox:"}, + "\U0001f403": {":water_buffalo:"}, + "\U0001f404": {":cow2:"}, + "\U0001f405": {":tiger2:"}, + "\U0001f406": {":leopard:"}, + "\U0001f407": {":rabbit2:"}, + "\U0001f408": {":cat2:"}, + "\U0001f408\u200d\u2b1b": {":black_cat:"}, + "\U0001f409": {":dragon:"}, + "\U0001f40a": {":crocodile:"}, + "\U0001f40b": {":whale2:"}, + "\U0001f40c": {":snail:"}, + "\U0001f40d": {":snake:"}, + "\U0001f40e": {":racehorse:"}, + "\U0001f40f": {":ram:"}, + "\U0001f410": {":goat:"}, + "\U0001f411": {":ewe:", ":sheep:"}, + "\U0001f412": {":monkey:"}, + "\U0001f413": {":rooster:"}, + "\U0001f414": {":chicken:"}, + "\U0001f415": {":dog2:"}, + "\U0001f415\u200d\U0001f9ba": {":service_dog:"}, + "\U0001f416": {":pig2:"}, + "\U0001f417": {":boar:"}, + "\U0001f418": {":elephant:"}, + "\U0001f419": {":octopus:"}, + "\U0001f41a": {":shell:", ":spiral_shell:"}, + "\U0001f41b": {":bug:"}, + "\U0001f41c": {":ant:"}, + "\U0001f41d": {":bee:", ":honeybee:"}, + "\U0001f41e": {":ladybug:", ":lady_beetle:"}, + "\U0001f41f": {":fish:"}, + "\U0001f420": {":tropical_fish:"}, + "\U0001f421": {":blowfish:"}, + "\U0001f422": {":turtle:"}, + "\U0001f423": {":hatching_chick:"}, + "\U0001f424": {":baby_chick:"}, + "\U0001f425": {":hatched_chick:", ":front-facing_baby_chick:"}, + "\U0001f426": {":bird:"}, + "\U0001f427": {":penguin:"}, + "\U0001f428": {":koala:"}, + "\U0001f429": {":poodle:"}, + "\U0001f42a": {":dromedary_camel:"}, + "\U0001f42b": {":camel:", ":two-hump_camel:"}, + "\U0001f42c": {":dolphin:", ":flipper:"}, + "\U0001f42d": {":mouse:", ":mouse_face:"}, + "\U0001f42e": {":cow:", ":cow_face:"}, + "\U0001f42f": {":tiger:", ":tiger_face:"}, + "\U0001f430": {":rabbit:", ":rabbit_face:"}, + "\U0001f431": {":cat:", ":cat_face:"}, + "\U0001f432": {":dragon_face:"}, + "\U0001f433": {":whale:", ":spouting_whale:"}, + "\U0001f434": {":horse:", ":horse_face:"}, + "\U0001f435": {":monkey_face:"}, + "\U0001f436": {":dog:", ":dog_face:"}, + "\U0001f437": {":pig:", ":pig_face:"}, + "\U0001f438": {":frog:"}, + "\U0001f439": {":hamster:"}, + "\U0001f43a": {":wolf:"}, + "\U0001f43b": {":bear:"}, + "\U0001f43b\u200d\u2744\ufe0f": {":polar_bear:"}, + "\U0001f43c": {":panda:", ":panda_face:"}, + "\U0001f43d": {":pig_nose:"}, + "\U0001f43e": {":feet:", ":paw_prints:"}, + "\U0001f43f\ufe0f": {":chipmunk:"}, + "\U0001f440": {":eyes:"}, + "\U0001f441\ufe0f": {":eye:"}, + "\U0001f441\ufe0f\u200d\U0001f5e8\ufe0f": {":eye_speech_bubble:", ":eye-in-speech-bubble:", ":eye_in_speech_bubble:"}, + "\U0001f442": {":ear:"}, + "\U0001f442\U0001f3fb": {":ear_tone1:"}, + "\U0001f442\U0001f3fc": {":ear_tone2:"}, + "\U0001f442\U0001f3fd": {":ear_tone3:"}, + "\U0001f442\U0001f3fe": {":ear_tone4:"}, + "\U0001f442\U0001f3ff": {":ear_tone5:"}, + "\U0001f443": {":nose:"}, + "\U0001f443\U0001f3fb": {":nose_tone1:"}, + "\U0001f443\U0001f3fc": {":nose_tone2:"}, + "\U0001f443\U0001f3fd": {":nose_tone3:"}, + "\U0001f443\U0001f3fe": {":nose_tone4:"}, + "\U0001f443\U0001f3ff": {":nose_tone5:"}, + "\U0001f444": {":lips:", ":mouth:"}, + "\U0001f445": {":tongue:"}, + "\U0001f446": {":point_up_2:", ":backhand_index_pointing_up:"}, + "\U0001f446\U0001f3fb": {":point_up_2_tone1:"}, + "\U0001f446\U0001f3fc": {":point_up_2_tone2:"}, + "\U0001f446\U0001f3fd": {":point_up_2_tone3:"}, + "\U0001f446\U0001f3fe": {":point_up_2_tone4:"}, + "\U0001f446\U0001f3ff": {":point_up_2_tone5:"}, + "\U0001f447": {":point_down:", ":backhand_index_pointing_down:"}, + "\U0001f447\U0001f3fb": {":point_down_tone1:"}, + "\U0001f447\U0001f3fc": {":point_down_tone2:"}, + "\U0001f447\U0001f3fd": {":point_down_tone3:"}, + "\U0001f447\U0001f3fe": {":point_down_tone4:"}, + "\U0001f447\U0001f3ff": {":point_down_tone5:"}, + "\U0001f448": {":point_left:", ":backhand_index_pointing_left:"}, + "\U0001f448\U0001f3fb": {":point_left_tone1:"}, + "\U0001f448\U0001f3fc": {":point_left_tone2:"}, + "\U0001f448\U0001f3fd": {":point_left_tone3:"}, + "\U0001f448\U0001f3fe": {":point_left_tone4:"}, + "\U0001f448\U0001f3ff": {":point_left_tone5:"}, + "\U0001f449": {":point_right:", ":backhand_index_pointing_right:"}, + "\U0001f449\U0001f3fb": {":point_right_tone1:"}, + "\U0001f449\U0001f3fc": {":point_right_tone2:"}, + "\U0001f449\U0001f3fd": {":point_right_tone3:"}, + "\U0001f449\U0001f3fe": {":point_right_tone4:"}, + "\U0001f449\U0001f3ff": {":point_right_tone5:"}, + "\U0001f44a": {":punch:", ":facepunch:", ":fist_oncoming:", ":oncoming_fist:"}, + "\U0001f44a\U0001f3fb": {":punch_tone1:"}, + "\U0001f44a\U0001f3fc": {":punch_tone2:"}, + "\U0001f44a\U0001f3fd": {":punch_tone3:"}, + "\U0001f44a\U0001f3fe": {":punch_tone4:"}, + "\U0001f44a\U0001f3ff": {":punch_tone5:"}, + "\U0001f44b": {":wave:", ":waving_hand:"}, + "\U0001f44b\U0001f3fb": {":wave_tone1:"}, + "\U0001f44b\U0001f3fc": {":wave_tone2:"}, + "\U0001f44b\U0001f3fd": {":wave_tone3:"}, + "\U0001f44b\U0001f3fe": {":wave_tone4:"}, + "\U0001f44b\U0001f3ff": {":wave_tone5:"}, + "\U0001f44c": {":OK_hand:", ":ok_hand:"}, + "\U0001f44c\U0001f3fb": {":ok_hand_tone1:"}, + "\U0001f44c\U0001f3fc": {":ok_hand_tone2:"}, + "\U0001f44c\U0001f3fd": {":ok_hand_tone3:"}, + "\U0001f44c\U0001f3fe": {":ok_hand_tone4:"}, + "\U0001f44c\U0001f3ff": {":ok_hand_tone5:"}, + "\U0001f44d": {":+1:", ":thumbsup:", ":thumbs_up:"}, + "\U0001f44d\U0001f3fb": {":thumbsup_tone1:"}, + "\U0001f44d\U0001f3fc": {":thumbsup_tone2:"}, + "\U0001f44d\U0001f3fd": {":thumbsup_tone3:"}, + "\U0001f44d\U0001f3fe": {":thumbsup_tone4:"}, + "\U0001f44d\U0001f3ff": {":thumbsup_tone5:"}, + "\U0001f44e": {":-1:", ":thumbsdown:", ":thumbs_down:"}, + "\U0001f44e\U0001f3fb": {":thumbsdown_tone1:"}, + "\U0001f44e\U0001f3fc": {":thumbsdown_tone2:"}, + "\U0001f44e\U0001f3fd": {":thumbsdown_tone3:"}, + "\U0001f44e\U0001f3fe": {":thumbsdown_tone4:"}, + "\U0001f44e\U0001f3ff": {":thumbsdown_tone5:"}, + "\U0001f44f": {":clap:", ":clapping_hands:"}, + "\U0001f44f\U0001f3fb": {":clap_tone1:"}, + "\U0001f44f\U0001f3fc": {":clap_tone2:"}, + "\U0001f44f\U0001f3fd": {":clap_tone3:"}, + "\U0001f44f\U0001f3fe": {":clap_tone4:"}, + "\U0001f44f\U0001f3ff": {":clap_tone5:"}, + "\U0001f450": {":open_hands:"}, + "\U0001f450\U0001f3fb": {":open_hands_tone1:"}, + "\U0001f450\U0001f3fc": {":open_hands_tone2:"}, + "\U0001f450\U0001f3fd": {":open_hands_tone3:"}, + "\U0001f450\U0001f3fe": {":open_hands_tone4:"}, + "\U0001f450\U0001f3ff": {":open_hands_tone5:"}, + "\U0001f451": {":crown:"}, + "\U0001f452": {":womans_hat:", ":woman’s_hat:"}, + "\U0001f453": {":glasses:", ":eyeglasses:"}, + "\U0001f454": {":necktie:"}, + "\U0001f455": {":shirt:", ":tshirt:", ":t-shirt:"}, + "\U0001f456": {":jeans:"}, + "\U0001f457": {":dress:"}, + "\U0001f458": {":kimono:"}, + "\U0001f459": {":bikini:"}, + "\U0001f45a": {":womans_clothes:", ":woman’s_clothes:"}, + "\U0001f45b": {":purse:"}, + "\U0001f45c": {":handbag:"}, + "\U0001f45d": {":pouch:", ":clutch_bag:"}, + "\U0001f45e": {":shoe:", ":mans_shoe:", ":man’s_shoe:"}, + "\U0001f45f": {":running_shoe:", ":athletic_shoe:"}, + "\U0001f460": {":high_heel:", ":high-heeled_shoe:"}, + "\U0001f461": {":sandal:", ":woman’s_sandal:"}, + "\U0001f462": {":boot:", ":woman’s_boot:"}, + "\U0001f463": {":footprints:"}, + "\U0001f464": {":bust_in_silhouette:"}, + "\U0001f465": {":busts_in_silhouette:"}, + "\U0001f466": {":boy:"}, + "\U0001f466\U0001f3fb": {":boy_tone1:"}, + "\U0001f466\U0001f3fc": {":boy_tone2:"}, + "\U0001f466\U0001f3fd": {":boy_tone3:"}, + "\U0001f466\U0001f3fe": {":boy_tone4:"}, + "\U0001f466\U0001f3ff": {":boy_tone5:"}, + "\U0001f467": {":girl:"}, + "\U0001f467\U0001f3fb": {":girl_tone1:"}, + "\U0001f467\U0001f3fc": {":girl_tone2:"}, + "\U0001f467\U0001f3fd": {":girl_tone3:"}, + "\U0001f467\U0001f3fe": {":girl_tone4:"}, + "\U0001f467\U0001f3ff": {":girl_tone5:"}, + "\U0001f468": {":man:"}, + "\U0001f468\U0001f3fb": {":man_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f33e": {":man_farmer_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f373": {":man_cook_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f393": {":man_student_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f3a4": {":man_singer_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f3a8": {":man_artist_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f3eb": {":man_teacher_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f3ed": {":man_factory_worker_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f4bb": {":man_technologist_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f4bc": {":man_office_worker_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f527": {":man_mechanic_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f52c": {":man_scientist_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f680": {":man_astronaut_tone1:"}, + "\U0001f468\U0001f3fb\u200d\U0001f692": {":man_firefighter_tone1:"}, + "\U0001f468\U0001f3fb\u200d\u2695\ufe0f": {":man_health_worker_tone1:"}, + "\U0001f468\U0001f3fb\u200d\u2696\ufe0f": {":man_judge_tone1:"}, + "\U0001f468\U0001f3fb\u200d\u2708\ufe0f": {":man_pilot_tone1:"}, + "\U0001f468\U0001f3fc": {":man_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f33e": {":man_farmer_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f373": {":man_cook_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f393": {":man_student_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f3a4": {":man_singer_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f3a8": {":man_artist_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f3eb": {":man_teacher_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f3ed": {":man_factory_worker_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f4bb": {":man_technologist_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f4bc": {":man_office_worker_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f527": {":man_mechanic_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f52c": {":man_scientist_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f680": {":man_astronaut_tone2:"}, + "\U0001f468\U0001f3fc\u200d\U0001f692": {":man_firefighter_tone2:"}, + "\U0001f468\U0001f3fc\u200d\u2695\ufe0f": {":man_health_worker_tone2:"}, + "\U0001f468\U0001f3fc\u200d\u2696\ufe0f": {":man_judge_tone2:"}, + "\U0001f468\U0001f3fc\u200d\u2708\ufe0f": {":man_pilot_tone2:"}, + "\U0001f468\U0001f3fd": {":man_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f33e": {":man_farmer_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f373": {":man_cook_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f393": {":man_student_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f3a4": {":man_singer_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f3a8": {":man_artist_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f3eb": {":man_teacher_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f3ed": {":man_factory_worker_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f4bb": {":man_technologist_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f4bc": {":man_office_worker_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f527": {":man_mechanic_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f52c": {":man_scientist_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f680": {":man_astronaut_tone3:"}, + "\U0001f468\U0001f3fd\u200d\U0001f692": {":man_firefighter_tone3:"}, + "\U0001f468\U0001f3fd\u200d\u2695\ufe0f": {":man_health_worker_tone3:"}, + "\U0001f468\U0001f3fd\u200d\u2696\ufe0f": {":man_judge_tone3:"}, + "\U0001f468\U0001f3fd\u200d\u2708\ufe0f": {":man_pilot_tone3:"}, + "\U0001f468\U0001f3fe": {":man_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f33e": {":man_farmer_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f373": {":man_cook_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f393": {":man_student_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f3a4": {":man_singer_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f3a8": {":man_artist_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f3eb": {":man_teacher_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f3ed": {":man_factory_worker_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f4bb": {":man_technologist_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f4bc": {":man_office_worker_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f527": {":man_mechanic_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f52c": {":man_scientist_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f680": {":man_astronaut_tone4:"}, + "\U0001f468\U0001f3fe\u200d\U0001f692": {":man_firefighter_tone4:"}, + "\U0001f468\U0001f3fe\u200d\u2695\ufe0f": {":man_health_worker_tone4:"}, + "\U0001f468\U0001f3fe\u200d\u2696\ufe0f": {":man_judge_tone4:"}, + "\U0001f468\U0001f3fe\u200d\u2708\ufe0f": {":man_pilot_tone4:"}, + "\U0001f468\U0001f3ff": {":man_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f33e": {":man_farmer_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f373": {":man_cook_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f393": {":man_student_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f3a4": {":man_singer_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f3a8": {":man_artist_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f3eb": {":man_teacher_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f3ed": {":man_factory_worker_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f4bb": {":man_technologist_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f4bc": {":man_office_worker_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f527": {":man_mechanic_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f52c": {":man_scientist_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f680": {":man_astronaut_tone5:"}, + "\U0001f468\U0001f3ff\u200d\U0001f692": {":man_firefighter_tone5:"}, + "\U0001f468\U0001f3ff\u200d\u2695\ufe0f": {":man_health_worker_tone5:"}, + "\U0001f468\U0001f3ff\u200d\u2696\ufe0f": {":man_judge_tone5:"}, + "\U0001f468\U0001f3ff\u200d\u2708\ufe0f": {":man_pilot_tone5:"}, + "\U0001f468\u200d\U0001f33e": {":man_farmer:", ":male-farmer:"}, + "\U0001f468\u200d\U0001f373": {":man_cook:", ":male-cook:"}, + "\U0001f468\u200d\U0001f37c": {":man_feeding_baby:"}, + "\U0001f468\u200d\U0001f393": {":man_student:", ":male-student:"}, + "\U0001f468\u200d\U0001f3a4": {":man_singer:", ":male-singer:"}, + "\U0001f468\u200d\U0001f3a8": {":man_artist:", ":male-artist:"}, + "\U0001f468\u200d\U0001f3eb": {":man_teacher:", ":male-teacher:"}, + "\U0001f468\u200d\U0001f3ed": {":man_factory_worker:", ":male-factory-worker:"}, + "\U0001f468\u200d\U0001f466": {":man-boy:", ":family_man_boy:"}, + "\U0001f468\u200d\U0001f466\u200d\U0001f466": {":man-boy-boy:", ":family_man_boy_boy:"}, + "\U0001f468\u200d\U0001f467": {":man-girl:", ":family_man_girl:"}, + "\U0001f468\u200d\U0001f467\u200d\U0001f466": {":man-girl-boy:", ":family_man_girl_boy:"}, + "\U0001f468\u200d\U0001f467\u200d\U0001f467": {":man-girl-girl:", ":family_man_girl_girl:"}, + "\U0001f468\u200d\U0001f468\u200d\U0001f466": {":family_mmb:", ":man-man-boy:", ":family_man_man_boy:"}, + "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466": {":family_mmbb:", ":man-man-boy-boy:", ":family_man_man_boy_boy:"}, + "\U0001f468\u200d\U0001f468\u200d\U0001f467": {":family_mmg:", ":man-man-girl:", ":family_man_man_girl:"}, + "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466": {":family_mmgb:", ":man-man-girl-boy:", ":family_man_man_girl_boy:"}, + "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467": {":family_mmgg:", ":man-man-girl-girl:", ":family_man_man_girl_girl:"}, + "\U0001f468\u200d\U0001f469\u200d\U0001f466": {":family:", ":man-woman-boy:", ":family_man_woman_boy:"}, + "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466": {":family_mwbb:", ":man-woman-boy-boy:", ":family_man_woman_boy_boy:"}, + "\U0001f468\u200d\U0001f469\u200d\U0001f467": {":family_mwg:", ":man-woman-girl:", ":family_man_woman_girl:"}, + "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466": {":family_mwgb:", ":man-woman-girl-boy:", ":family_man_woman_girl_boy:"}, + "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467": {":family_mwgg:", ":man-woman-girl-girl:", ":family_man_woman_girl_girl:"}, + "\U0001f468\u200d\U0001f4bb": {":man_technologist:", ":male-technologist:"}, + "\U0001f468\u200d\U0001f4bc": {":man_office_worker:", ":male-office-worker:"}, + "\U0001f468\u200d\U0001f527": {":man_mechanic:", ":male-mechanic:"}, + "\U0001f468\u200d\U0001f52c": {":man_scientist:", ":male-scientist:"}, + "\U0001f468\u200d\U0001f680": {":man_astronaut:", ":male-astronaut:"}, + "\U0001f468\u200d\U0001f692": {":man_firefighter:", ":male-firefighter:"}, + "\U0001f468\u200d\U0001f9af": {":man_with_white_cane:", ":man_with_probing_cane:"}, + "\U0001f468\u200d\U0001f9b0": {":man_red_hair:", ":red_haired_man:"}, + "\U0001f468\u200d\U0001f9b1": {":man_curly_hair:", ":curly_haired_man:"}, + "\U0001f468\u200d\U0001f9b2": {":bald_man:", ":man_bald:"}, + "\U0001f468\u200d\U0001f9b3": {":man_white_hair:", ":white_haired_man:"}, + "\U0001f468\u200d\U0001f9bc": {":man_in_motorized_wheelchair:"}, + "\U0001f468\u200d\U0001f9bd": {":man_in_manual_wheelchair:"}, + "\U0001f468\u200d\u2695\ufe0f": {":male-doctor:", ":man_health_worker:"}, + "\U0001f468\u200d\u2696\ufe0f": {":man_judge:", ":male-judge:"}, + "\U0001f468\u200d\u2708\ufe0f": {":man_pilot:", ":male-pilot:"}, + "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468": {":couple_mm:", ":man-heart-man:", ":couple_with_heart_man_man:"}, + "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":kiss_mm:", ":kiss_man_man:", ":man-kiss-man:", ":couplekiss_man_man:"}, + "\U0001f469": {":woman:"}, + "\U0001f469\U0001f3fb": {":woman_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f33e": {":woman_farmer_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f373": {":woman_cook_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f393": {":woman_student_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f3a4": {":woman_singer_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f3a8": {":woman_artist_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f3eb": {":woman_teacher_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f3ed": {":woman_factory_worker_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f4bb": {":woman_technologist_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f4bc": {":woman_office_worker_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f527": {":woman_mechanic_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f52c": {":woman_scientist_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f680": {":woman_astronaut_tone1:"}, + "\U0001f469\U0001f3fb\u200d\U0001f692": {":woman_firefighter_tone1:"}, + "\U0001f469\U0001f3fb\u200d\u2695\ufe0f": {":woman_health_worker_tone1:"}, + "\U0001f469\U0001f3fb\u200d\u2696\ufe0f": {":woman_judge_tone1:"}, + "\U0001f469\U0001f3fb\u200d\u2708\ufe0f": {":woman_pilot_tone1:"}, + "\U0001f469\U0001f3fc": {":woman_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f33e": {":woman_farmer_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f373": {":woman_cook_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f393": {":woman_student_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f3a4": {":woman_singer_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f3a8": {":woman_artist_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f3eb": {":woman_teacher_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f3ed": {":woman_factory_worker_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f4bb": {":woman_technologist_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f4bc": {":woman_office_worker_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f527": {":woman_mechanic_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f52c": {":woman_scientist_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f680": {":woman_astronaut_tone2:"}, + "\U0001f469\U0001f3fc\u200d\U0001f692": {":woman_firefighter_tone2:"}, + "\U0001f469\U0001f3fc\u200d\u2695\ufe0f": {":woman_health_worker_tone2:"}, + "\U0001f469\U0001f3fc\u200d\u2696\ufe0f": {":woman_judge_tone2:"}, + "\U0001f469\U0001f3fc\u200d\u2708\ufe0f": {":woman_pilot_tone2:"}, + "\U0001f469\U0001f3fd": {":woman_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f33e": {":woman_farmer_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f373": {":woman_cook_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f393": {":woman_student_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f3a4": {":woman_singer_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f3a8": {":woman_artist_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f3eb": {":woman_teacher_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f3ed": {":woman_factory_worker_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f4bb": {":woman_technologist_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f4bc": {":woman_office_worker_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f527": {":woman_mechanic_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f52c": {":woman_scientist_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f680": {":woman_astronaut_tone3:"}, + "\U0001f469\U0001f3fd\u200d\U0001f692": {":woman_firefighter_tone3:"}, + "\U0001f469\U0001f3fd\u200d\u2695\ufe0f": {":woman_health_worker_tone3:"}, + "\U0001f469\U0001f3fd\u200d\u2696\ufe0f": {":woman_judge_tone3:"}, + "\U0001f469\U0001f3fd\u200d\u2708\ufe0f": {":woman_pilot_tone3:"}, + "\U0001f469\U0001f3fe": {":woman_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f33e": {":woman_farmer_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f373": {":woman_cook_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f393": {":woman_student_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f3a4": {":woman_singer_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f3a8": {":woman_artist_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f3eb": {":woman_teacher_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f3ed": {":woman_factory_worker_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f4bb": {":woman_technologist_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f4bc": {":woman_office_worker_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f527": {":woman_mechanic_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f52c": {":woman_scientist_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f680": {":woman_astronaut_tone4:"}, + "\U0001f469\U0001f3fe\u200d\U0001f692": {":woman_firefighter_tone4:"}, + "\U0001f469\U0001f3fe\u200d\u2695\ufe0f": {":woman_health_worker_tone4:"}, + "\U0001f469\U0001f3fe\u200d\u2696\ufe0f": {":woman_judge_tone4:"}, + "\U0001f469\U0001f3fe\u200d\u2708\ufe0f": {":woman_pilot_tone4:"}, + "\U0001f469\U0001f3ff": {":woman_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f33e": {":woman_farmer_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f373": {":woman_cook_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f393": {":woman_student_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f3a4": {":woman_singer_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f3a8": {":woman_artist_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f3eb": {":woman_teacher_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f3ed": {":woman_factory_worker_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f4bb": {":woman_technologist_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f4bc": {":woman_office_worker_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f527": {":woman_mechanic_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f52c": {":woman_scientist_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f680": {":woman_astronaut_tone5:"}, + "\U0001f469\U0001f3ff\u200d\U0001f692": {":woman_firefighter_tone5:"}, + "\U0001f469\U0001f3ff\u200d\u2695\ufe0f": {":woman_health_worker_tone5:"}, + "\U0001f469\U0001f3ff\u200d\u2696\ufe0f": {":woman_judge_tone5:"}, + "\U0001f469\U0001f3ff\u200d\u2708\ufe0f": {":woman_pilot_tone5:"}, + "\U0001f469\u200d\U0001f33e": {":woman_farmer:", ":female-farmer:"}, + "\U0001f469\u200d\U0001f373": {":woman_cook:", ":female-cook:"}, + "\U0001f469\u200d\U0001f37c": {":woman_feeding_baby:"}, + "\U0001f469\u200d\U0001f393": {":woman_student:", ":female-student:"}, + "\U0001f469\u200d\U0001f3a4": {":woman_singer:", ":female-singer:"}, + "\U0001f469\u200d\U0001f3a8": {":woman_artist:", ":female-artist:"}, + "\U0001f469\u200d\U0001f3eb": {":woman_teacher:", ":female-teacher:"}, + "\U0001f469\u200d\U0001f3ed": {":woman_factory_worker:", ":female-factory-worker:"}, + "\U0001f469\u200d\U0001f466": {":woman-boy:", ":family_woman_boy:"}, + "\U0001f469\u200d\U0001f466\u200d\U0001f466": {":woman-boy-boy:", ":family_woman_boy_boy:"}, + "\U0001f469\u200d\U0001f467": {":woman-girl:", ":family_woman_girl:"}, + "\U0001f469\u200d\U0001f467\u200d\U0001f466": {":woman-girl-boy:", ":family_woman_girl_boy:"}, + "\U0001f469\u200d\U0001f467\u200d\U0001f467": {":woman-girl-girl:", ":family_woman_girl_girl:"}, + "\U0001f469\u200d\U0001f469\u200d\U0001f466": {":family_wwb:", ":woman-woman-boy:", ":family_woman_woman_boy:"}, + "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466": {":family_wwbb:", ":woman-woman-boy-boy:", ":family_woman_woman_boy_boy:"}, + "\U0001f469\u200d\U0001f469\u200d\U0001f467": {":family_wwg:", ":woman-woman-girl:", ":family_woman_woman_girl:"}, + "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466": {":family_wwgb:", ":woman-woman-girl-boy:", ":family_woman_woman_girl_boy:"}, + "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467": {":family_wwgg:", ":woman-woman-girl-girl:", ":family_woman_woman_girl_girl:"}, + "\U0001f469\u200d\U0001f4bb": {":woman_technologist:", ":female-technologist:"}, + "\U0001f469\u200d\U0001f4bc": {":woman_office_worker:", ":female-office-worker:"}, + "\U0001f469\u200d\U0001f527": {":woman_mechanic:", ":female-mechanic:"}, + "\U0001f469\u200d\U0001f52c": {":woman_scientist:", ":female-scientist:"}, + "\U0001f469\u200d\U0001f680": {":woman_astronaut:", ":female-astronaut:"}, + "\U0001f469\u200d\U0001f692": {":woman_firefighter:", ":female-firefighter:"}, + "\U0001f469\u200d\U0001f9af": {":woman_with_white_cane:", ":woman_with_probing_cane:"}, + "\U0001f469\u200d\U0001f9b0": {":woman_red_hair:", ":red_haired_woman:"}, + "\U0001f469\u200d\U0001f9b1": {":woman_curly_hair:", ":curly_haired_woman:"}, + "\U0001f469\u200d\U0001f9b2": {":bald_woman:", ":woman_bald:"}, + "\U0001f469\u200d\U0001f9b3": {":woman_white_hair:", ":white_haired_woman:"}, + "\U0001f469\u200d\U0001f9bc": {":woman_in_motorized_wheelchair:"}, + "\U0001f469\u200d\U0001f9bd": {":woman_in_manual_wheelchair:"}, + "\U0001f469\u200d\u2695\ufe0f": {":female-doctor:", ":woman_health_worker:"}, + "\U0001f469\u200d\u2696\ufe0f": {":woman_judge:", ":female-judge:"}, + "\U0001f469\u200d\u2708\ufe0f": {":woman_pilot:", ":female-pilot:"}, + "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468": {":woman-heart-man:", ":couple_with_heart:", ":couple_with_heart_woman_man:"}, + "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469": {":couple_ww:", ":woman-heart-woman:", ":couple_with_heart_woman_woman:"}, + "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":couplekiss:", ":kiss_woman_man:", ":woman-kiss-man:", ":couplekiss_man_woman:"}, + "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469": {":kiss_ww:", ":kiss_woman_woman:", ":woman-kiss-woman:", ":couplekiss_woman_woman:"}, + "\U0001f46b": {":couple:", ":man_and_woman_holding_hands:", ":woman_and_man_holding_hands:"}, + "\U0001f46c": {":men_holding_hands:", ":two_men_holding_hands:"}, + "\U0001f46d": {":women_holding_hands:", ":two_women_holding_hands:"}, + "\U0001f46e": {":police_officer:"}, + "\U0001f46e\U0001f3fb": {":police_officer_tone1:"}, + "\U0001f46e\U0001f3fb\u200d\u2640\ufe0f": {":woman_police_officer_tone1:"}, + "\U0001f46e\U0001f3fb\u200d\u2642\ufe0f": {":man_police_officer_tone1:"}, + "\U0001f46e\U0001f3fc": {":police_officer_tone2:"}, + "\U0001f46e\U0001f3fc\u200d\u2640\ufe0f": {":woman_police_officer_tone2:"}, + "\U0001f46e\U0001f3fc\u200d\u2642\ufe0f": {":man_police_officer_tone2:"}, + "\U0001f46e\U0001f3fd": {":police_officer_tone3:"}, + "\U0001f46e\U0001f3fd\u200d\u2640\ufe0f": {":woman_police_officer_tone3:"}, + "\U0001f46e\U0001f3fd\u200d\u2642\ufe0f": {":man_police_officer_tone3:"}, + "\U0001f46e\U0001f3fe": {":police_officer_tone4:"}, + "\U0001f46e\U0001f3fe\u200d\u2640\ufe0f": {":woman_police_officer_tone4:"}, + "\U0001f46e\U0001f3fe\u200d\u2642\ufe0f": {":man_police_officer_tone4:"}, + "\U0001f46e\U0001f3ff": {":police_officer_tone5:"}, + "\U0001f46e\U0001f3ff\u200d\u2640\ufe0f": {":woman_police_officer_tone5:"}, + "\U0001f46e\U0001f3ff\u200d\u2642\ufe0f": {":man_police_officer_tone5:"}, + "\U0001f46e\u200d\u2640\ufe0f": {":policewoman:", ":woman_police_officer:", ":female-police-officer:"}, + "\U0001f46e\u200d\u2642\ufe0f": {":cop:", ":policeman:", ":man_police_officer:", ":male-police-officer:"}, + "\U0001f46f": {":people_with_bunny_ears:", ":people_with_bunny_ears_partying:"}, + "\U0001f46f\u200d\u2640\ufe0f": {":dancers:", ":dancing_women:", ":women_with_bunny_ears:", ":woman-with-bunny-ears-partying:", ":women_with_bunny_ears_partying:"}, + "\U0001f46f\u200d\u2642\ufe0f": {":dancing_men:", ":men_with_bunny_ears:", ":man-with-bunny-ears-partying:", ":men_with_bunny_ears_partying:"}, + "\U0001f470": {":bride_with_veil:", ":person_with_veil:"}, + "\U0001f470\U0001f3fb": {":bride_with_veil_tone1:"}, + "\U0001f470\U0001f3fc": {":bride_with_veil_tone2:"}, + "\U0001f470\U0001f3fd": {":bride_with_veil_tone3:"}, + "\U0001f470\U0001f3fe": {":bride_with_veil_tone4:"}, + "\U0001f470\U0001f3ff": {":bride_with_veil_tone5:"}, + "\U0001f470\u200d\u2640\ufe0f": {":woman_with_veil:"}, + "\U0001f470\u200d\u2642\ufe0f": {":man_with_veil:"}, + "\U0001f471": {":person_blond_hair:", ":blond_haired_person:"}, + "\U0001f471\U0001f3fb": {":blond_haired_person_tone1:"}, + "\U0001f471\U0001f3fb\u200d\u2640\ufe0f": {":blond-haired_woman_tone1:"}, + "\U0001f471\U0001f3fb\u200d\u2642\ufe0f": {":blond-haired_man_tone1:"}, + "\U0001f471\U0001f3fc": {":blond_haired_person_tone2:"}, + "\U0001f471\U0001f3fc\u200d\u2640\ufe0f": {":blond-haired_woman_tone2:"}, + "\U0001f471\U0001f3fc\u200d\u2642\ufe0f": {":blond-haired_man_tone2:"}, + "\U0001f471\U0001f3fd": {":blond_haired_person_tone3:"}, + "\U0001f471\U0001f3fd\u200d\u2640\ufe0f": {":blond-haired_woman_tone3:"}, + "\U0001f471\U0001f3fd\u200d\u2642\ufe0f": {":blond-haired_man_tone3:"}, + "\U0001f471\U0001f3fe": {":blond_haired_person_tone4:"}, + "\U0001f471\U0001f3fe\u200d\u2640\ufe0f": {":blond-haired_woman_tone4:"}, + "\U0001f471\U0001f3fe\u200d\u2642\ufe0f": {":blond-haired_man_tone4:"}, + "\U0001f471\U0001f3ff": {":blond_haired_person_tone5:"}, + "\U0001f471\U0001f3ff\u200d\u2640\ufe0f": {":blond-haired_woman_tone5:"}, + "\U0001f471\U0001f3ff\u200d\u2642\ufe0f": {":blond-haired_man_tone5:"}, + "\U0001f471\u200d\u2640\ufe0f": {":blonde_woman:", ":woman_blond_hair:", ":blond-haired-woman:", ":blond-haired_woman:", ":blond_haired_woman:"}, + "\U0001f471\u200d\u2642\ufe0f": {":man_blond_hair:", ":blond-haired-man:", ":blond-haired_man:", ":blond_haired_man:", ":person_with_blond_hair:"}, + "\U0001f472": {":man_with_gua_pi_mao:", ":man_with_chinese_cap:", ":person_with_skullcap:"}, + "\U0001f472\U0001f3fb": {":man_with_chinese_cap_tone1:"}, + "\U0001f472\U0001f3fc": {":man_with_chinese_cap_tone2:"}, + "\U0001f472\U0001f3fd": {":man_with_chinese_cap_tone3:"}, + "\U0001f472\U0001f3fe": {":man_with_chinese_cap_tone4:"}, + "\U0001f472\U0001f3ff": {":man_with_chinese_cap_tone5:"}, + "\U0001f473": {":person_with_turban:", ":person_wearing_turban:"}, + "\U0001f473\U0001f3fb": {":person_wearing_turban_tone1:"}, + "\U0001f473\U0001f3fb\u200d\u2640\ufe0f": {":woman_wearing_turban_tone1:"}, + "\U0001f473\U0001f3fb\u200d\u2642\ufe0f": {":man_wearing_turban_tone1:"}, + "\U0001f473\U0001f3fc": {":person_wearing_turban_tone2:"}, + "\U0001f473\U0001f3fc\u200d\u2640\ufe0f": {":woman_wearing_turban_tone2:"}, + "\U0001f473\U0001f3fc\u200d\u2642\ufe0f": {":man_wearing_turban_tone2:"}, + "\U0001f473\U0001f3fd": {":person_wearing_turban_tone3:"}, + "\U0001f473\U0001f3fd\u200d\u2640\ufe0f": {":woman_wearing_turban_tone3:"}, + "\U0001f473\U0001f3fd\u200d\u2642\ufe0f": {":man_wearing_turban_tone3:"}, + "\U0001f473\U0001f3fe": {":person_wearing_turban_tone4:"}, + "\U0001f473\U0001f3fe\u200d\u2640\ufe0f": {":woman_wearing_turban_tone4:"}, + "\U0001f473\U0001f3fe\u200d\u2642\ufe0f": {":man_wearing_turban_tone4:"}, + "\U0001f473\U0001f3ff": {":person_wearing_turban_tone5:"}, + "\U0001f473\U0001f3ff\u200d\u2640\ufe0f": {":woman_wearing_turban_tone5:"}, + "\U0001f473\U0001f3ff\u200d\u2642\ufe0f": {":man_wearing_turban_tone5:"}, + "\U0001f473\u200d\u2640\ufe0f": {":woman_with_turban:", ":woman-wearing-turban:", ":woman_wearing_turban:"}, + "\U0001f473\u200d\u2642\ufe0f": {":man_with_turban:", ":man-wearing-turban:", ":man_wearing_turban:"}, + "\U0001f474": {":old_man:", ":older_man:"}, + "\U0001f474\U0001f3fb": {":older_man_tone1:"}, + "\U0001f474\U0001f3fc": {":older_man_tone2:"}, + "\U0001f474\U0001f3fd": {":older_man_tone3:"}, + "\U0001f474\U0001f3fe": {":older_man_tone4:"}, + "\U0001f474\U0001f3ff": {":older_man_tone5:"}, + "\U0001f475": {":old_woman:", ":older_woman:"}, + "\U0001f475\U0001f3fb": {":older_woman_tone1:"}, + "\U0001f475\U0001f3fc": {":older_woman_tone2:"}, + "\U0001f475\U0001f3fd": {":older_woman_tone3:"}, + "\U0001f475\U0001f3fe": {":older_woman_tone4:"}, + "\U0001f475\U0001f3ff": {":older_woman_tone5:"}, + "\U0001f476": {":baby:"}, + "\U0001f476\U0001f3fb": {":baby_tone1:"}, + "\U0001f476\U0001f3fc": {":baby_tone2:"}, + "\U0001f476\U0001f3fd": {":baby_tone3:"}, + "\U0001f476\U0001f3fe": {":baby_tone4:"}, + "\U0001f476\U0001f3ff": {":baby_tone5:"}, + "\U0001f477\U0001f3fb": {":construction_worker_tone1:"}, + "\U0001f477\U0001f3fb\u200d\u2640\ufe0f": {":woman_construction_worker_tone1:"}, + "\U0001f477\U0001f3fb\u200d\u2642\ufe0f": {":man_construction_worker_tone1:"}, + "\U0001f477\U0001f3fc": {":construction_worker_tone2:"}, + "\U0001f477\U0001f3fc\u200d\u2640\ufe0f": {":woman_construction_worker_tone2:"}, + "\U0001f477\U0001f3fc\u200d\u2642\ufe0f": {":man_construction_worker_tone2:"}, + "\U0001f477\U0001f3fd": {":construction_worker_tone3:"}, + "\U0001f477\U0001f3fd\u200d\u2640\ufe0f": {":woman_construction_worker_tone3:"}, + "\U0001f477\U0001f3fd\u200d\u2642\ufe0f": {":man_construction_worker_tone3:"}, + "\U0001f477\U0001f3fe": {":construction_worker_tone4:"}, + "\U0001f477\U0001f3fe\u200d\u2640\ufe0f": {":woman_construction_worker_tone4:"}, + "\U0001f477\U0001f3fe\u200d\u2642\ufe0f": {":man_construction_worker_tone4:"}, + "\U0001f477\U0001f3ff": {":construction_worker_tone5:"}, + "\U0001f477\U0001f3ff\u200d\u2640\ufe0f": {":woman_construction_worker_tone5:"}, + "\U0001f477\U0001f3ff\u200d\u2642\ufe0f": {":man_construction_worker_tone5:"}, + "\U0001f477\u200d\u2640\ufe0f": {":construction_worker_woman:", ":woman_construction_worker:", ":female-construction-worker:"}, + "\U0001f477\u200d\u2642\ufe0f": {":construction_worker:", ":construction_worker_man:", ":man_construction_worker:", ":male-construction-worker:"}, + "\U0001f478": {":princess:"}, + "\U0001f478\U0001f3fb": {":princess_tone1:"}, + "\U0001f478\U0001f3fc": {":princess_tone2:"}, + "\U0001f478\U0001f3fd": {":princess_tone3:"}, + "\U0001f478\U0001f3fe": {":princess_tone4:"}, + "\U0001f478\U0001f3ff": {":princess_tone5:"}, + "\U0001f479": {":ogre:", ":japanese_ogre:"}, + "\U0001f47a": {":goblin:", ":japanese_goblin:"}, + "\U0001f47b": {":ghost:"}, + "\U0001f47c": {":angel:", ":baby_angel:"}, + "\U0001f47c\U0001f3fb": {":angel_tone1:"}, + "\U0001f47c\U0001f3fc": {":angel_tone2:"}, + "\U0001f47c\U0001f3fd": {":angel_tone3:"}, + "\U0001f47c\U0001f3fe": {":angel_tone4:"}, + "\U0001f47c\U0001f3ff": {":angel_tone5:"}, + "\U0001f47d": {":alien:"}, + "\U0001f47e": {":alien_monster:", ":space_invader:"}, + "\U0001f47f": {":imp:", ":angry_face_with_horns:"}, + "\U0001f480": {":skull:"}, + "\U0001f481": {":person_tipping_hand:", ":tipping_hand_person:"}, + "\U0001f481\U0001f3fb": {":person_tipping_hand_tone1:"}, + "\U0001f481\U0001f3fb\u200d\u2640\ufe0f": {":woman_tipping_hand_tone1:"}, + "\U0001f481\U0001f3fb\u200d\u2642\ufe0f": {":man_tipping_hand_tone1:"}, + "\U0001f481\U0001f3fc": {":person_tipping_hand_tone2:"}, + "\U0001f481\U0001f3fc\u200d\u2640\ufe0f": {":woman_tipping_hand_tone2:"}, + "\U0001f481\U0001f3fc\u200d\u2642\ufe0f": {":man_tipping_hand_tone2:"}, + "\U0001f481\U0001f3fd": {":person_tipping_hand_tone3:"}, + "\U0001f481\U0001f3fd\u200d\u2640\ufe0f": {":woman_tipping_hand_tone3:"}, + "\U0001f481\U0001f3fd\u200d\u2642\ufe0f": {":man_tipping_hand_tone3:"}, + "\U0001f481\U0001f3fe": {":person_tipping_hand_tone4:"}, + "\U0001f481\U0001f3fe\u200d\u2640\ufe0f": {":woman_tipping_hand_tone4:"}, + "\U0001f481\U0001f3fe\u200d\u2642\ufe0f": {":man_tipping_hand_tone4:"}, + "\U0001f481\U0001f3ff": {":person_tipping_hand_tone5:"}, + "\U0001f481\U0001f3ff\u200d\u2640\ufe0f": {":woman_tipping_hand_tone5:"}, + "\U0001f481\U0001f3ff\u200d\u2642\ufe0f": {":man_tipping_hand_tone5:"}, + "\U0001f481\u200d\u2640\ufe0f": {":sassy_woman:", ":tipping_hand_woman:", ":woman-tipping-hand:", ":woman_tipping_hand:", ":information_desk_person:"}, + "\U0001f481\u200d\u2642\ufe0f": {":sassy_man:", ":man-tipping-hand:", ":man_tipping_hand:", ":tipping_hand_man:"}, + "\U0001f482": {":guard:"}, + "\U0001f482\U0001f3fb": {":guard_tone1:"}, + "\U0001f482\U0001f3fb\u200d\u2640\ufe0f": {":woman_guard_tone1:"}, + "\U0001f482\U0001f3fb\u200d\u2642\ufe0f": {":man_guard_tone1:"}, + "\U0001f482\U0001f3fc": {":guard_tone2:"}, + "\U0001f482\U0001f3fc\u200d\u2640\ufe0f": {":woman_guard_tone2:"}, + "\U0001f482\U0001f3fc\u200d\u2642\ufe0f": {":man_guard_tone2:"}, + "\U0001f482\U0001f3fd": {":guard_tone3:"}, + "\U0001f482\U0001f3fd\u200d\u2640\ufe0f": {":woman_guard_tone3:"}, + "\U0001f482\U0001f3fd\u200d\u2642\ufe0f": {":man_guard_tone3:"}, + "\U0001f482\U0001f3fe": {":guard_tone4:"}, + "\U0001f482\U0001f3fe\u200d\u2640\ufe0f": {":woman_guard_tone4:"}, + "\U0001f482\U0001f3fe\u200d\u2642\ufe0f": {":man_guard_tone4:"}, + "\U0001f482\U0001f3ff": {":guard_tone5:"}, + "\U0001f482\U0001f3ff\u200d\u2640\ufe0f": {":woman_guard_tone5:"}, + "\U0001f482\U0001f3ff\u200d\u2642\ufe0f": {":man_guard_tone5:"}, + "\U0001f482\u200d\u2640\ufe0f": {":guardswoman:", ":woman_guard:", ":female-guard:"}, + "\U0001f482\u200d\u2642\ufe0f": {":guardsman:", ":man_guard:", ":male-guard:"}, + "\U0001f483": {":dancer:", ":woman_dancing:"}, + "\U0001f483\U0001f3fb": {":dancer_tone1:"}, + "\U0001f483\U0001f3fc": {":dancer_tone2:"}, + "\U0001f483\U0001f3fd": {":dancer_tone3:"}, + "\U0001f483\U0001f3fe": {":dancer_tone4:"}, + "\U0001f483\U0001f3ff": {":dancer_tone5:"}, + "\U0001f484": {":lipstick:"}, + "\U0001f485": {":nail_care:", ":nail_polish:"}, + "\U0001f485\U0001f3fb": {":nail_care_tone1:"}, + "\U0001f485\U0001f3fc": {":nail_care_tone2:"}, + "\U0001f485\U0001f3fd": {":nail_care_tone3:"}, + "\U0001f485\U0001f3fe": {":nail_care_tone4:"}, + "\U0001f485\U0001f3ff": {":nail_care_tone5:"}, + "\U0001f486": {":person_getting_massage:"}, + "\U0001f486\U0001f3fb": {":person_getting_massage_tone1:"}, + "\U0001f486\U0001f3fb\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone1:"}, + "\U0001f486\U0001f3fb\u200d\u2642\ufe0f": {":man_getting_face_massage_tone1:"}, + "\U0001f486\U0001f3fc": {":person_getting_massage_tone2:"}, + "\U0001f486\U0001f3fc\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone2:"}, + "\U0001f486\U0001f3fc\u200d\u2642\ufe0f": {":man_getting_face_massage_tone2:"}, + "\U0001f486\U0001f3fd": {":person_getting_massage_tone3:"}, + "\U0001f486\U0001f3fd\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone3:"}, + "\U0001f486\U0001f3fd\u200d\u2642\ufe0f": {":man_getting_face_massage_tone3:"}, + "\U0001f486\U0001f3fe": {":person_getting_massage_tone4:"}, + "\U0001f486\U0001f3fe\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone4:"}, + "\U0001f486\U0001f3fe\u200d\u2642\ufe0f": {":man_getting_face_massage_tone4:"}, + "\U0001f486\U0001f3ff": {":person_getting_massage_tone5:"}, + "\U0001f486\U0001f3ff\u200d\u2640\ufe0f": {":woman_getting_face_massage_tone5:"}, + "\U0001f486\U0001f3ff\u200d\u2642\ufe0f": {":man_getting_face_massage_tone5:"}, + "\U0001f486\u200d\u2640\ufe0f": {":massage:", ":massage_woman:", ":woman-getting-massage:", ":woman_getting_massage:", ":woman_getting_face_massage:"}, + "\U0001f486\u200d\u2642\ufe0f": {":massage_man:", ":man-getting-massage:", ":man_getting_massage:", ":man_getting_face_massage:"}, + "\U0001f487": {":person_getting_haircut:"}, + "\U0001f487\U0001f3fb": {":person_getting_haircut_tone1:"}, + "\U0001f487\U0001f3fb\u200d\u2640\ufe0f": {":woman_getting_haircut_tone1:"}, + "\U0001f487\U0001f3fb\u200d\u2642\ufe0f": {":man_getting_haircut_tone1:"}, + "\U0001f487\U0001f3fc": {":person_getting_haircut_tone2:"}, + "\U0001f487\U0001f3fc\u200d\u2640\ufe0f": {":woman_getting_haircut_tone2:"}, + "\U0001f487\U0001f3fc\u200d\u2642\ufe0f": {":man_getting_haircut_tone2:"}, + "\U0001f487\U0001f3fd": {":person_getting_haircut_tone3:"}, + "\U0001f487\U0001f3fd\u200d\u2640\ufe0f": {":woman_getting_haircut_tone3:"}, + "\U0001f487\U0001f3fd\u200d\u2642\ufe0f": {":man_getting_haircut_tone3:"}, + "\U0001f487\U0001f3fe": {":person_getting_haircut_tone4:"}, + "\U0001f487\U0001f3fe\u200d\u2640\ufe0f": {":woman_getting_haircut_tone4:"}, + "\U0001f487\U0001f3fe\u200d\u2642\ufe0f": {":man_getting_haircut_tone4:"}, + "\U0001f487\U0001f3ff": {":person_getting_haircut_tone5:"}, + "\U0001f487\U0001f3ff\u200d\u2640\ufe0f": {":woman_getting_haircut_tone5:"}, + "\U0001f487\U0001f3ff\u200d\u2642\ufe0f": {":man_getting_haircut_tone5:"}, + "\U0001f487\u200d\u2640\ufe0f": {":haircut:", ":haircut_woman:", ":woman-getting-haircut:", ":woman_getting_haircut:"}, + "\U0001f487\u200d\u2642\ufe0f": {":haircut_man:", ":man-getting-haircut:", ":man_getting_haircut:"}, + "\U0001f488": {":barber:", ":barber_pole:"}, + "\U0001f489": {":syringe:"}, + "\U0001f48a": {":pill:"}, + "\U0001f48b": {":kiss:", ":kiss_mark:"}, + "\U0001f48c": {":love_letter:"}, + "\U0001f48d": {":ring:"}, + "\U0001f48e": {":gem:", ":gem_stone:"}, + "\U0001f490": {":bouquet:"}, + "\U0001f492": {":wedding:"}, + "\U0001f493": {":heartbeat:", ":beating_heart:"}, + "\U0001f494": {":broken_heart:"}, + "\U0001f495": {":two_hearts:"}, + "\U0001f496": {":sparkling_heart:"}, + "\U0001f497": {":heartpulse:", ":growing_heart:"}, + "\U0001f498": {":cupid:", ":heart_with_arrow:"}, + "\U0001f499": {":blue_heart:"}, + "\U0001f49a": {":green_heart:"}, + "\U0001f49b": {":yellow_heart:"}, + "\U0001f49c": {":purple_heart:"}, + "\U0001f49d": {":gift_heart:", ":heart_with_ribbon:"}, + "\U0001f49e": {":revolving_hearts:"}, + "\U0001f49f": {":heart_decoration:"}, + "\U0001f4a0": {":diamond_with_a_dot:", ":diamond_shape_with_a_dot_inside:"}, + "\U0001f4a1": {":bulb:", ":light_bulb:"}, + "\U0001f4a2": {":anger:", ":anger_symbol:"}, + "\U0001f4a3": {":bomb:"}, + "\U0001f4a4": {":zzz:"}, + "\U0001f4a5": {":boom:", ":collision:"}, + "\U0001f4a6": {":sweat_drops:", ":sweat_droplets:"}, + "\U0001f4a7": {":droplet:"}, + "\U0001f4a8": {":dash:", ":dashing_away:"}, + "\U0001f4a9": {":poop:", ":shit:", ":hankey:", ":pile_of_poo:"}, + "\U0001f4aa": {":muscle:", ":flexed_biceps:"}, + "\U0001f4aa\U0001f3fb": {":muscle_tone1:"}, + "\U0001f4aa\U0001f3fc": {":muscle_tone2:"}, + "\U0001f4aa\U0001f3fd": {":muscle_tone3:"}, + "\U0001f4aa\U0001f3fe": {":muscle_tone4:"}, + "\U0001f4aa\U0001f3ff": {":muscle_tone5:"}, + "\U0001f4ab": {":dizzy:"}, + "\U0001f4ac": {":speech_balloon:"}, + "\U0001f4ad": {":thought_balloon:"}, + "\U0001f4ae": {":white_flower:"}, + "\U0001f4af": {":100:", ":hundred_points:"}, + "\U0001f4b0": {":moneybag:", ":money_bag:"}, + "\U0001f4b1": {":currency_exchange:"}, + "\U0001f4b2": {":heavy_dollar_sign:"}, + "\U0001f4b3": {":credit_card:"}, + "\U0001f4b4": {":yen:", ":yen_banknote:"}, + "\U0001f4b5": {":dollar:", ":dollar_banknote:"}, + "\U0001f4b6": {":euro:", ":euro_banknote:"}, + "\U0001f4b7": {":pound:", ":pound_banknote:"}, + "\U0001f4b8": {":money_with_wings:"}, + "\U0001f4b9": {":chart:", ":chart_increasing_with_yen:"}, + "\U0001f4ba": {":seat:"}, + "\U0001f4bb": {":laptop:", ":computer:"}, + "\U0001f4bc": {":briefcase:"}, + "\U0001f4bd": {":minidisc:", ":computer_disk:"}, + "\U0001f4be": {":floppy_disk:"}, + "\U0001f4bf": {":cd:", ":optical_disk:"}, + "\U0001f4c0": {":dvd:"}, + "\U0001f4c1": {":file_folder:"}, + "\U0001f4c2": {":open_file_folder:"}, + "\U0001f4c3": {":page_with_curl:"}, + "\U0001f4c4": {":page_facing_up:"}, + "\U0001f4c5": {":date:"}, + "\U0001f4c6": {":calendar:", ":tear-off_calendar:"}, + "\U0001f4c7": {":card_index:"}, + "\U0001f4c8": {":chart_increasing:", ":chart_with_upwards_trend:"}, + "\U0001f4c9": {":chart_decreasing:", ":chart_with_downwards_trend:"}, + "\U0001f4ca": {":bar_chart:"}, + "\U0001f4cb": {":clipboard:"}, + "\U0001f4cc": {":pushpin:"}, + "\U0001f4cd": {":round_pushpin:"}, + "\U0001f4ce": {":paperclip:"}, + "\U0001f4cf": {":straight_ruler:"}, + "\U0001f4d0": {":triangular_ruler:"}, + "\U0001f4d1": {":bookmark_tabs:"}, + "\U0001f4d2": {":ledger:"}, + "\U0001f4d3": {":notebook:"}, + "\U0001f4d4": {":notebook_with_decorative_cover:"}, + "\U0001f4d5": {":closed_book:"}, + "\U0001f4d6": {":book:", ":open_book:"}, + "\U0001f4d7": {":green_book:"}, + "\U0001f4d8": {":blue_book:"}, + "\U0001f4d9": {":orange_book:"}, + "\U0001f4da": {":books:"}, + "\U0001f4db": {":name_badge:"}, + "\U0001f4dc": {":scroll:"}, + "\U0001f4dd": {":memo:"}, + "\U0001f4de": {":telephone_receiver:"}, + "\U0001f4df": {":pager:"}, + "\U0001f4e0": {":fax:", ":fax_machine:"}, + "\U0001f4e1": {":satellite_antenna:"}, + "\U0001f4e2": {":loudspeaker:"}, + "\U0001f4e3": {":mega:", ":megaphone:"}, + "\U0001f4e4": {":outbox_tray:"}, + "\U0001f4e5": {":inbox_tray:"}, + "\U0001f4e6": {":package:"}, + "\U0001f4e7": {":e-mail:"}, + "\U0001f4e8": {":incoming_envelope:"}, + "\U0001f4e9": {":envelope_with_arrow:"}, + "\U0001f4ea": {":mailbox_closed:", ":closed_mailbox_with_lowered_flag:"}, + "\U0001f4eb": {":mailbox:", ":closed_mailbox_with_raised_flag:"}, + "\U0001f4ec": {":mailbox_with_mail:", ":open_mailbox_with_raised_flag:"}, + "\U0001f4ed": {":mailbox_with_no_mail:", ":open_mailbox_with_lowered_flag:"}, + "\U0001f4ee": {":postbox:"}, + "\U0001f4ef": {":postal_horn:"}, + "\U0001f4f0": {":newspaper:"}, + "\U0001f4f1": {":iphone:", ":mobile_phone:"}, + "\U0001f4f2": {":calling:", ":mobile_phone_with_arrow:"}, + "\U0001f4f3": {":vibration_mode:"}, + "\U0001f4f4": {":mobile_phone_off:"}, + "\U0001f4f5": {":no_mobile_phones:"}, + "\U0001f4f6": {":antenna_bars:", ":signal_strength:"}, + "\U0001f4f7": {":camera:"}, + "\U0001f4f8": {":camera_flash:", ":camera_with_flash:"}, + "\U0001f4f9": {":video_camera:"}, + "\U0001f4fa": {":tv:", ":television:"}, + "\U0001f4fb": {":radio:"}, + "\U0001f4fc": {":vhs:", ":videocassette:"}, + "\U0001f4fd": {":projector:"}, + "\U0001f4fd\ufe0f": {":film_projector:"}, + "\U0001f4ff": {":prayer_beads:"}, + "\U0001f500": {":shuffle_tracks_button:", ":twisted_rightwards_arrows:"}, + "\U0001f501": {":repeat:", ":repeat_button:"}, + "\U0001f502": {":repeat_one:", ":repeat_single_button:"}, + "\U0001f503": {":arrows_clockwise:", ":clockwise_vertical_arrows:"}, + "\U0001f504": {":arrows_counterclockwise:", ":counterclockwise_arrows_button:"}, + "\U0001f505": {":dim_button:", ":low_brightness:"}, + "\U0001f506": {":bright_button:", ":high_brightness:"}, + "\U0001f507": {":mute:", ":muted_speaker:"}, + "\U0001f508": {":speaker:", ":speaker_low_volume:"}, + "\U0001f509": {":sound:", ":speaker_medium_volume:"}, + "\U0001f50a": {":loud_sound:", ":speaker_high_volume:"}, + "\U0001f50b": {":battery:"}, + "\U0001f50c": {":electric_plug:"}, + "\U0001f50d": {":mag:", ":magnifying_glass_tilted_left:"}, + "\U0001f50e": {":mag_right:", ":magnifying_glass_tilted_right:"}, + "\U0001f50f": {":locked_with_pen:", ":lock_with_ink_pen:"}, + "\U0001f510": {":locked_with_key:", ":closed_lock_with_key:"}, + "\U0001f511": {":key:"}, + "\U0001f512": {":lock:", ":locked:"}, + "\U0001f513": {":unlock:", ":unlocked:"}, + "\U0001f514": {":bell:"}, + "\U0001f515": {":no_bell:", ":bell_with_slash:"}, + "\U0001f516": {":bookmark:"}, + "\U0001f517": {":link:"}, + "\U0001f518": {":radio_button:"}, + "\U0001f519": {":back:", ":BACK_arrow:"}, + "\U0001f51a": {":end:", ":END_arrow:"}, + "\U0001f51b": {":on:", ":ON!_arrow:"}, + "\U0001f51c": {":soon:", ":SOON_arrow:"}, + "\U0001f51d": {":top:", ":TOP_arrow:"}, + "\U0001f51e": {":underage:", ":no_one_under_eighteen:"}, + "\U0001f51f": {":keycap_10:", ":keycap_ten:"}, + "\U0001f520": {":capital_abcd:", ":input_latin_uppercase:"}, + "\U0001f521": {":abcd:", ":input_latin_lowercase:"}, + "\U0001f522": {":1234:", ":input_numbers:"}, + "\U0001f523": {":symbols:", ":input_symbols:"}, + "\U0001f524": {":abc:", ":input_latin_letters:"}, + "\U0001f525": {":fire:"}, + "\U0001f526": {":flashlight:"}, + "\U0001f527": {":wrench:"}, + "\U0001f528": {":hammer:"}, + "\U0001f529": {":nut_and_bolt:"}, + "\U0001f52a": {":hocho:", ":knife:", ":kitchen_knife:"}, + "\U0001f52b": {":gun:", ":water_pistol:"}, + "\U0001f52c": {":microscope:"}, + "\U0001f52d": {":telescope:"}, + "\U0001f52e": {":crystal_ball:"}, + "\U0001f52f": {":six_pointed_star:", ":dotted_six-pointed_star:"}, + "\U0001f530": {":beginner:", ":Japanese_symbol_for_beginner:"}, + "\U0001f531": {":trident:", ":trident_emblem:"}, + "\U0001f532": {":black_square_button:"}, + "\U0001f533": {":white_square_button:"}, + "\U0001f534": {":red_circle:"}, + "\U0001f535": {":blue_circle:", ":large_blue_circle:"}, + "\U0001f536": {":large_orange_diamond:"}, + "\U0001f537": {":large_blue_diamond:"}, + "\U0001f538": {":small_orange_diamond:"}, + "\U0001f539": {":small_blue_diamond:"}, + "\U0001f53a": {":small_red_triangle:", ":red_triangle_pointed_up:"}, + "\U0001f53b": {":small_red_triangle_down:", ":red_triangle_pointed_down:"}, + "\U0001f53c": {":arrow_up_small:", ":upwards_button:"}, + "\U0001f53d": {":arrow_down_small:", ":downwards_button:"}, + "\U0001f549": {":om:"}, + "\U0001f549\ufe0f": {":om_symbol:"}, + "\U0001f54a": {":dove:"}, + "\U0001f54a\ufe0f": {":dove_of_peace:"}, + "\U0001f54b": {":kaaba:"}, + "\U0001f54c": {":mosque:"}, + "\U0001f54d": {":synagogue:"}, + "\U0001f54e": {":menorah:", ":menorah_with_nine_branches:"}, + "\U0001f550": {":clock1:", ":one_o’clock:"}, + "\U0001f551": {":clock2:", ":two_o’clock:"}, + "\U0001f552": {":clock3:", ":three_o’clock:"}, + "\U0001f553": {":clock4:", ":four_o’clock:"}, + "\U0001f554": {":clock5:", ":five_o’clock:"}, + "\U0001f555": {":clock6:", ":six_o’clock:"}, + "\U0001f556": {":clock7:", ":seven_o’clock:"}, + "\U0001f557": {":clock8:", ":eight_o’clock:"}, + "\U0001f558": {":clock9:", ":nine_o’clock:"}, + "\U0001f559": {":clock10:", ":ten_o’clock:"}, + "\U0001f55a": {":clock11:", ":eleven_o’clock:"}, + "\U0001f55b": {":clock12:", ":twelve_o’clock:"}, + "\U0001f55c": {":clock130:", ":one-thirty:"}, + "\U0001f55d": {":clock230:", ":two-thirty:"}, + "\U0001f55e": {":clock330:", ":three-thirty:"}, + "\U0001f55f": {":clock430:", ":four-thirty:"}, + "\U0001f560": {":clock530:", ":five-thirty:"}, + "\U0001f561": {":clock630:", ":six-thirty:"}, + "\U0001f562": {":clock730:", ":seven-thirty:"}, + "\U0001f563": {":clock830:", ":eight-thirty:"}, + "\U0001f564": {":clock930:", ":nine-thirty:"}, + "\U0001f565": {":clock1030:", ":ten-thirty:"}, + "\U0001f566": {":clock1130:", ":eleven-thirty:"}, + "\U0001f567": {":clock1230:", ":twelve-thirty:"}, + "\U0001f56f\ufe0f": {":candle:"}, + "\U0001f570": {":clock:"}, + "\U0001f570\ufe0f": {":mantelpiece_clock:"}, + "\U0001f573\ufe0f": {":hole:"}, + "\U0001f574": {":person_in_suit_levitating:"}, + "\U0001f574\U0001f3fb": {":man_in_business_suit_levitating_tone1:"}, + "\U0001f574\U0001f3fc": {":man_in_business_suit_levitating_tone2:"}, + "\U0001f574\U0001f3fd": {":man_in_business_suit_levitating_tone3:"}, + "\U0001f574\U0001f3fe": {":man_in_business_suit_levitating_tone4:"}, + "\U0001f574\U0001f3ff": {":man_in_business_suit_levitating_tone5:"}, + "\U0001f574\ufe0f": {":business_suit_levitating:", ":man_in_business_suit_levitating:"}, + "\U0001f575": {":detective:"}, + "\U0001f575\U0001f3fb": {":detective_tone1:"}, + "\U0001f575\U0001f3fb\u200d\u2640\ufe0f": {":woman_detective_tone1:"}, + "\U0001f575\U0001f3fb\u200d\u2642\ufe0f": {":man_detective_tone1:"}, + "\U0001f575\U0001f3fc": {":detective_tone2:"}, + "\U0001f575\U0001f3fc\u200d\u2640\ufe0f": {":woman_detective_tone2:"}, + "\U0001f575\U0001f3fc\u200d\u2642\ufe0f": {":man_detective_tone2:"}, + "\U0001f575\U0001f3fd": {":detective_tone3:"}, + "\U0001f575\U0001f3fd\u200d\u2640\ufe0f": {":woman_detective_tone3:"}, + "\U0001f575\U0001f3fd\u200d\u2642\ufe0f": {":man_detective_tone3:"}, + "\U0001f575\U0001f3fe": {":detective_tone4:"}, + "\U0001f575\U0001f3fe\u200d\u2640\ufe0f": {":woman_detective_tone4:"}, + "\U0001f575\U0001f3fe\u200d\u2642\ufe0f": {":man_detective_tone4:"}, + "\U0001f575\U0001f3ff": {":detective_tone5:"}, + "\U0001f575\U0001f3ff\u200d\u2640\ufe0f": {":woman_detective_tone5:"}, + "\U0001f575\U0001f3ff\u200d\u2642\ufe0f": {":man_detective_tone5:"}, + "\U0001f575\ufe0f\u200d\u2640\ufe0f": {":woman_detective:", ":female-detective:", ":female_detective:"}, + "\U0001f575\ufe0f\u200d\u2642\ufe0f": {":man_detective:", ":sleuth_or_spy:", ":male-detective:", ":male_detective:"}, + "\U0001f576\ufe0f": {":dark_sunglasses:"}, + "\U0001f577\ufe0f": {":spider:"}, + "\U0001f578\ufe0f": {":spider_web:"}, + "\U0001f579\ufe0f": {":joystick:"}, + "\U0001f57a": {":man_dancing:"}, + "\U0001f57a\U0001f3fb": {":man_dancing_tone1:"}, + "\U0001f57a\U0001f3fc": {":man_dancing_tone2:"}, + "\U0001f57a\U0001f3fd": {":man_dancing_tone3:"}, + "\U0001f57a\U0001f3fe": {":man_dancing_tone4:"}, + "\U0001f57a\U0001f3ff": {":man_dancing_tone5:"}, + "\U0001f587": {":paperclips:"}, + "\U0001f587\ufe0f": {":linked_paperclips:"}, + "\U0001f58a": {":pen:", ":pen_ballpoint:"}, + "\U0001f58a\ufe0f": {":lower_left_ballpoint_pen:"}, + "\U0001f58b": {":fountain_pen:", ":pen_fountain:"}, + "\U0001f58b\ufe0f": {":lower_left_fountain_pen:"}, + "\U0001f58c": {":paintbrush:"}, + "\U0001f58c\ufe0f": {":lower_left_paintbrush:"}, + "\U0001f58d": {":crayon:"}, + "\U0001f58d\ufe0f": {":lower_left_crayon:"}, + "\U0001f590": {":hand_with_fingers_splayed:"}, + "\U0001f590\U0001f3fb": {":hand_splayed_tone1:"}, + "\U0001f590\U0001f3fc": {":hand_splayed_tone2:"}, + "\U0001f590\U0001f3fd": {":hand_splayed_tone3:"}, + "\U0001f590\U0001f3fe": {":hand_splayed_tone4:"}, + "\U0001f590\U0001f3ff": {":hand_splayed_tone5:"}, + "\U0001f590\ufe0f": {":raised_hand_with_fingers_splayed:"}, + "\U0001f595": {":fu:", ":middle_finger:"}, + "\U0001f595\U0001f3fb": {":middle_finger_tone1:"}, + "\U0001f595\U0001f3fc": {":middle_finger_tone2:"}, + "\U0001f595\U0001f3fd": {":middle_finger_tone3:"}, + "\U0001f595\U0001f3fe": {":middle_finger_tone4:"}, + "\U0001f595\U0001f3ff": {":middle_finger_tone5:"}, + "\U0001f596": {":vulcan:", ":spock-hand:", ":vulcan_salute:"}, + "\U0001f596\U0001f3fb": {":vulcan_tone1:"}, + "\U0001f596\U0001f3fc": {":vulcan_tone2:"}, + "\U0001f596\U0001f3fd": {":vulcan_tone3:"}, + "\U0001f596\U0001f3fe": {":vulcan_tone4:"}, + "\U0001f596\U0001f3ff": {":vulcan_tone5:"}, + "\U0001f5a4": {":black_heart:"}, + "\U0001f5a5": {":desktop:"}, + "\U0001f5a5\ufe0f": {":desktop_computer:"}, + "\U0001f5a8\ufe0f": {":printer:"}, + "\U0001f5b1": {":computer_mouse:", ":mouse_three_button:"}, + "\U0001f5b1\ufe0f": {":three_button_mouse:"}, + "\U0001f5b2\ufe0f": {":trackball:"}, + "\U0001f5bc": {":frame_photo:", ":framed_picture:"}, + "\U0001f5bc\ufe0f": {":frame_with_picture:"}, + "\U0001f5c2": {":dividers:"}, + "\U0001f5c2\ufe0f": {":card_index_dividers:"}, + "\U0001f5c3": {":card_box:"}, + "\U0001f5c3\ufe0f": {":card_file_box:"}, + "\U0001f5c4\ufe0f": {":file_cabinet:"}, + "\U0001f5d1\ufe0f": {":wastebasket:"}, + "\U0001f5d2": {":notepad_spiral:", ":spiral_notepad:"}, + "\U0001f5d2\ufe0f": {":spiral_note_pad:"}, + "\U0001f5d3": {":calendar_spiral:", ":spiral_calendar:"}, + "\U0001f5d3\ufe0f": {":spiral_calendar_pad:"}, + "\U0001f5dc": {":clamp:"}, + "\U0001f5dc\ufe0f": {":compression:"}, + "\U0001f5dd": {":key2:"}, + "\U0001f5dd\ufe0f": {":old_key:"}, + "\U0001f5de": {":newspaper2:", ":rolled-up_newspaper:"}, + "\U0001f5de\ufe0f": {":newspaper_roll:", ":rolled_up_newspaper:"}, + "\U0001f5e1": {":dagger:"}, + "\U0001f5e1\ufe0f": {":dagger_knife:"}, + "\U0001f5e3": {":speaking_head:"}, + "\U0001f5e3\ufe0f": {":speaking_head_in_silhouette:"}, + "\U0001f5e8": {":speech_left:"}, + "\U0001f5e8\ufe0f": {":left_speech_bubble:"}, + "\U0001f5ef": {":anger_right:"}, + "\U0001f5ef\ufe0f": {":right_anger_bubble:"}, + "\U0001f5f3": {":ballot_box:"}, + "\U0001f5f3\ufe0f": {":ballot_box_with_ballot:"}, + "\U0001f5fa": {":map:"}, + "\U0001f5fa\ufe0f": {":world_map:"}, + "\U0001f5fb": {":mount_fuji:"}, + "\U0001f5fc": {":Tokyo_tower:", ":tokyo_tower:"}, + "\U0001f5fd": {":Statue_of_Liberty:", ":statue_of_liberty:"}, + "\U0001f5fe": {":japan:", ":map_of_Japan:"}, + "\U0001f5ff": {":moai:", ":moyai:"}, + "\U0001f600": {":grinning:", ":grinning_face:"}, + "\U0001f601": {":grin:", ":beaming_face_with_smiling_eyes:"}, + "\U0001f602": {":joy:", ":face_with_tears_of_joy:"}, + "\U0001f603": {":smiley:", ":grinning_face_with_big_eyes:"}, + "\U0001f604": {":smile:", ":grinning_face_with_smiling_eyes:"}, + "\U0001f605": {":sweat_smile:", ":grinning_face_with_sweat:"}, + "\U0001f606": {":laughing:", ":satisfied:", ":grinning_squinting_face:"}, + "\U0001f607": {":innocent:", ":smiling_face_with_halo:"}, + "\U0001f608": {":smiling_imp:", ":smiling_face_with_horns:"}, + "\U0001f609": {":wink:", ":winking_face:"}, + "\U0001f60a": {":blush:", ":smiling_face_with_smiling_eyes:"}, + "\U0001f60b": {":yum:", ":face_savoring_food:"}, + "\U0001f60c": {":relieved:", ":relieved_face:"}, + "\U0001f60d": {":heart_eyes:", ":smiling_face_with_heart-eyes:"}, + "\U0001f60e": {":sunglasses:", ":smiling_face_with_sunglasses:"}, + "\U0001f60f": {":smirk:", ":smirking_face:"}, + "\U0001f610": {":neutral_face:"}, + "\U0001f611": {":expressionless:", ":expressionless_face:"}, + "\U0001f612": {":unamused:", ":unamused_face:"}, + "\U0001f613": {":sweat:", ":downcast_face_with_sweat:"}, + "\U0001f614": {":pensive:", ":pensive_face:"}, + "\U0001f615": {":confused:", ":confused_face:"}, + "\U0001f616": {":confounded:", ":confounded_face:"}, + "\U0001f617": {":kissing:", ":kissing_face:"}, + "\U0001f618": {":kissing_heart:", ":face_blowing_a_kiss:"}, + "\U0001f619": {":kissing_smiling_eyes:", ":kissing_face_with_smiling_eyes:"}, + "\U0001f61a": {":kissing_closed_eyes:", ":kissing_face_with_closed_eyes:"}, + "\U0001f61b": {":face_with_tongue:", ":stuck_out_tongue:"}, + "\U0001f61c": {":winking_face_with_tongue:", ":stuck_out_tongue_winking_eye:"}, + "\U0001f61d": {":squinting_face_with_tongue:", ":stuck_out_tongue_closed_eyes:"}, + "\U0001f61e": {":disappointed:", ":disappointed_face:"}, + "\U0001f61f": {":worried:", ":worried_face:"}, + "\U0001f620": {":angry:", ":angry_face:"}, + "\U0001f621": {":pout:", ":rage:", ":pouting_face:"}, + "\U0001f622": {":cry:", ":crying_face:"}, + "\U0001f623": {":persevere:", ":persevering_face:"}, + "\U0001f624": {":triumph:", ":face_with_steam_from_nose:"}, + "\U0001f625": {":disappointed_relieved:", ":sad_but_relieved_face:"}, + "\U0001f626": {":frowning:", ":frowning_face_with_open_mouth:"}, + "\U0001f627": {":anguished:", ":anguished_face:"}, + "\U0001f628": {":fearful:", ":fearful_face:"}, + "\U0001f629": {":weary:", ":weary_face:"}, + "\U0001f62a": {":sleepy:", ":sleepy_face:"}, + "\U0001f62b": {":tired_face:"}, + "\U0001f62c": {":grimacing:", ":grimacing_face:"}, + "\U0001f62d": {":sob:", ":loudly_crying_face:"}, + "\U0001f62e": {":open_mouth:", ":face_with_open_mouth:"}, + "\U0001f62e\u200d\U0001f4a8": {":face_exhaling:"}, + "\U0001f62f": {":hushed:", ":hushed_face:"}, + "\U0001f630": {":cold_sweat:", ":anxious_face_with_sweat:"}, + "\U0001f631": {":scream:", ":face_screaming_in_fear:"}, + "\U0001f632": {":astonished:", ":astonished_face:"}, + "\U0001f633": {":flushed:", ":flushed_face:"}, + "\U0001f634": {":sleeping:", ":sleeping_face:"}, + "\U0001f635": {":dizzy_face:", ":knocked-out_face:"}, + "\U0001f635\u200d\U0001f4ab": {":face_with_spiral_eyes:"}, + "\U0001f636": {":no_mouth:", ":face_without_mouth:"}, + "\U0001f636\u200d\U0001f32b\ufe0f": {":face_in_clouds:"}, + "\U0001f637": {":mask:", ":face_with_medical_mask:"}, + "\U0001f638": {":smile_cat:", ":grinning_cat_with_smiling_eyes:"}, + "\U0001f639": {":joy_cat:", ":cat_with_tears_of_joy:"}, + "\U0001f63a": {":smiley_cat:", ":grinning_cat:"}, + "\U0001f63b": {":heart_eyes_cat:", ":smiling_cat_with_heart-eyes:"}, + "\U0001f63c": {":smirk_cat:", ":cat_with_wry_smile:"}, + "\U0001f63d": {":kissing_cat:"}, + "\U0001f63e": {":pouting_cat:"}, + "\U0001f63f": {":crying_cat:", ":crying_cat_face:"}, + "\U0001f640": {":weary_cat:", ":scream_cat:"}, + "\U0001f641": {":slight_frown:", ":slightly_frowning_face:"}, + "\U0001f642": {":slight_smile:", ":slightly_smiling_face:"}, + "\U0001f643": {":upside_down:", ":upside-down_face:", ":upside_down_face:"}, + "\U0001f644": {":roll_eyes:", ":rolling_eyes:", ":face_with_rolling_eyes:"}, + "\U0001f645": {":person_gesturing_NO:", ":person_gesturing_no:"}, + "\U0001f645\U0001f3fb": {":person_gesturing_no_tone1:"}, + "\U0001f645\U0001f3fb\u200d\u2640\ufe0f": {":woman_gesturing_no_tone1:"}, + "\U0001f645\U0001f3fb\u200d\u2642\ufe0f": {":man_gesturing_no_tone1:"}, + "\U0001f645\U0001f3fc": {":person_gesturing_no_tone2:"}, + "\U0001f645\U0001f3fc\u200d\u2640\ufe0f": {":woman_gesturing_no_tone2:"}, + "\U0001f645\U0001f3fc\u200d\u2642\ufe0f": {":man_gesturing_no_tone2:"}, + "\U0001f645\U0001f3fd": {":person_gesturing_no_tone3:"}, + "\U0001f645\U0001f3fd\u200d\u2640\ufe0f": {":woman_gesturing_no_tone3:"}, + "\U0001f645\U0001f3fd\u200d\u2642\ufe0f": {":man_gesturing_no_tone3:"}, + "\U0001f645\U0001f3fe": {":person_gesturing_no_tone4:"}, + "\U0001f645\U0001f3fe\u200d\u2640\ufe0f": {":woman_gesturing_no_tone4:"}, + "\U0001f645\U0001f3fe\u200d\u2642\ufe0f": {":man_gesturing_no_tone4:"}, + "\U0001f645\U0001f3ff": {":person_gesturing_no_tone5:"}, + "\U0001f645\U0001f3ff\u200d\u2640\ufe0f": {":woman_gesturing_no_tone5:"}, + "\U0001f645\U0001f3ff\u200d\u2642\ufe0f": {":man_gesturing_no_tone5:"}, + "\U0001f645\u200d\u2640\ufe0f": {":no_good:", ":ng_woman:", ":no_good_woman:", ":woman-gesturing-no:", ":woman_gesturing_NO:", ":woman_gesturing_no:"}, + "\U0001f645\u200d\u2642\ufe0f": {":ng_man:", ":no_good_man:", ":man-gesturing-no:", ":man_gesturing_NO:", ":man_gesturing_no:"}, + "\U0001f646": {":ok_person:", ":person_gesturing_OK:", ":person_gesturing_ok:"}, + "\U0001f646\U0001f3fb": {":person_gesturing_ok_tone1:"}, + "\U0001f646\U0001f3fb\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone1:"}, + "\U0001f646\U0001f3fb\u200d\u2642\ufe0f": {":man_gesturing_ok_tone1:"}, + "\U0001f646\U0001f3fc": {":person_gesturing_ok_tone2:"}, + "\U0001f646\U0001f3fc\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone2:"}, + "\U0001f646\U0001f3fc\u200d\u2642\ufe0f": {":man_gesturing_ok_tone2:"}, + "\U0001f646\U0001f3fd": {":person_gesturing_ok_tone3:"}, + "\U0001f646\U0001f3fd\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone3:"}, + "\U0001f646\U0001f3fd\u200d\u2642\ufe0f": {":man_gesturing_ok_tone3:"}, + "\U0001f646\U0001f3fe": {":person_gesturing_ok_tone4:"}, + "\U0001f646\U0001f3fe\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone4:"}, + "\U0001f646\U0001f3fe\u200d\u2642\ufe0f": {":man_gesturing_ok_tone4:"}, + "\U0001f646\U0001f3ff": {":person_gesturing_ok_tone5:"}, + "\U0001f646\U0001f3ff\u200d\u2640\ufe0f": {":woman_gesturing_ok_tone5:"}, + "\U0001f646\U0001f3ff\u200d\u2642\ufe0f": {":man_gesturing_ok_tone5:"}, + "\U0001f646\u200d\u2640\ufe0f": {":ok_woman:", ":woman-gesturing-ok:", ":woman_gesturing_OK:", ":woman_gesturing_ok:"}, + "\U0001f646\u200d\u2642\ufe0f": {":ok_man:", ":man-gesturing-ok:", ":man_gesturing_OK:", ":man_gesturing_ok:"}, + "\U0001f647": {":person_bowing:"}, + "\U0001f647\U0001f3fb": {":person_bowing_tone1:"}, + "\U0001f647\U0001f3fb\u200d\u2640\ufe0f": {":woman_bowing_tone1:"}, + "\U0001f647\U0001f3fb\u200d\u2642\ufe0f": {":man_bowing_tone1:"}, + "\U0001f647\U0001f3fc": {":person_bowing_tone2:"}, + "\U0001f647\U0001f3fc\u200d\u2640\ufe0f": {":woman_bowing_tone2:"}, + "\U0001f647\U0001f3fc\u200d\u2642\ufe0f": {":man_bowing_tone2:"}, + "\U0001f647\U0001f3fd": {":person_bowing_tone3:"}, + "\U0001f647\U0001f3fd\u200d\u2640\ufe0f": {":woman_bowing_tone3:"}, + "\U0001f647\U0001f3fd\u200d\u2642\ufe0f": {":man_bowing_tone3:"}, + "\U0001f647\U0001f3fe": {":person_bowing_tone4:"}, + "\U0001f647\U0001f3fe\u200d\u2640\ufe0f": {":woman_bowing_tone4:"}, + "\U0001f647\U0001f3fe\u200d\u2642\ufe0f": {":man_bowing_tone4:"}, + "\U0001f647\U0001f3ff": {":person_bowing_tone5:"}, + "\U0001f647\U0001f3ff\u200d\u2640\ufe0f": {":woman_bowing_tone5:"}, + "\U0001f647\U0001f3ff\u200d\u2642\ufe0f": {":man_bowing_tone5:"}, + "\U0001f647\u200d\u2640\ufe0f": {":bowing_woman:", ":woman-bowing:", ":woman_bowing:"}, + "\U0001f647\u200d\u2642\ufe0f": {":bow:", ":bowing_man:", ":man-bowing:", ":man_bowing:"}, + "\U0001f648": {":see_no_evil:", ":see-no-evil_monkey:"}, + "\U0001f649": {":hear_no_evil:", ":hear-no-evil_monkey:"}, + "\U0001f64a": {":speak_no_evil:", ":speak-no-evil_monkey:"}, + "\U0001f64b": {":person_raising_hand:"}, + "\U0001f64b\U0001f3fb": {":person_raising_hand_tone1:"}, + "\U0001f64b\U0001f3fb\u200d\u2640\ufe0f": {":woman_raising_hand_tone1:"}, + "\U0001f64b\U0001f3fb\u200d\u2642\ufe0f": {":man_raising_hand_tone1:"}, + "\U0001f64b\U0001f3fc": {":person_raising_hand_tone2:"}, + "\U0001f64b\U0001f3fc\u200d\u2640\ufe0f": {":woman_raising_hand_tone2:"}, + "\U0001f64b\U0001f3fc\u200d\u2642\ufe0f": {":man_raising_hand_tone2:"}, + "\U0001f64b\U0001f3fd": {":person_raising_hand_tone3:"}, + "\U0001f64b\U0001f3fd\u200d\u2640\ufe0f": {":woman_raising_hand_tone3:"}, + "\U0001f64b\U0001f3fd\u200d\u2642\ufe0f": {":man_raising_hand_tone3:"}, + "\U0001f64b\U0001f3fe": {":person_raising_hand_tone4:"}, + "\U0001f64b\U0001f3fe\u200d\u2640\ufe0f": {":woman_raising_hand_tone4:"}, + "\U0001f64b\U0001f3fe\u200d\u2642\ufe0f": {":man_raising_hand_tone4:"}, + "\U0001f64b\U0001f3ff": {":person_raising_hand_tone5:"}, + "\U0001f64b\U0001f3ff\u200d\u2640\ufe0f": {":woman_raising_hand_tone5:"}, + "\U0001f64b\U0001f3ff\u200d\u2642\ufe0f": {":man_raising_hand_tone5:"}, + "\U0001f64b\u200d\u2640\ufe0f": {":raising_hand:", ":raising_hand_woman:", ":woman-raising-hand:", ":woman_raising_hand:"}, + "\U0001f64b\u200d\u2642\ufe0f": {":man-raising-hand:", ":man_raising_hand:", ":raising_hand_man:"}, + "\U0001f64c": {":raised_hands:", ":raising_hands:"}, + "\U0001f64c\U0001f3fb": {":raised_hands_tone1:"}, + "\U0001f64c\U0001f3fc": {":raised_hands_tone2:"}, + "\U0001f64c\U0001f3fd": {":raised_hands_tone3:"}, + "\U0001f64c\U0001f3fe": {":raised_hands_tone4:"}, + "\U0001f64c\U0001f3ff": {":raised_hands_tone5:"}, + "\U0001f64d": {":frowning_person:"}, + "\U0001f64d\U0001f3fb": {":person_frowning_tone1:"}, + "\U0001f64d\U0001f3fb\u200d\u2640\ufe0f": {":woman_frowning_tone1:"}, + "\U0001f64d\U0001f3fb\u200d\u2642\ufe0f": {":man_frowning_tone1:"}, + "\U0001f64d\U0001f3fc": {":person_frowning_tone2:"}, + "\U0001f64d\U0001f3fc\u200d\u2640\ufe0f": {":woman_frowning_tone2:"}, + "\U0001f64d\U0001f3fc\u200d\u2642\ufe0f": {":man_frowning_tone2:"}, + "\U0001f64d\U0001f3fd": {":person_frowning_tone3:"}, + "\U0001f64d\U0001f3fd\u200d\u2640\ufe0f": {":woman_frowning_tone3:"}, + "\U0001f64d\U0001f3fd\u200d\u2642\ufe0f": {":man_frowning_tone3:"}, + "\U0001f64d\U0001f3fe": {":person_frowning_tone4:"}, + "\U0001f64d\U0001f3fe\u200d\u2640\ufe0f": {":woman_frowning_tone4:"}, + "\U0001f64d\U0001f3fe\u200d\u2642\ufe0f": {":man_frowning_tone4:"}, + "\U0001f64d\U0001f3ff": {":person_frowning_tone5:"}, + "\U0001f64d\U0001f3ff\u200d\u2640\ufe0f": {":woman_frowning_tone5:"}, + "\U0001f64d\U0001f3ff\u200d\u2642\ufe0f": {":man_frowning_tone5:"}, + "\U0001f64d\u200d\u2640\ufe0f": {":frowning_woman:", ":woman-frowning:", ":woman_frowning:", ":person_frowning:"}, + "\U0001f64d\u200d\u2642\ufe0f": {":frowning_man:", ":man-frowning:", ":man_frowning:"}, + "\U0001f64e": {":person_pouting:"}, + "\U0001f64e\U0001f3fb": {":person_pouting_tone1:"}, + "\U0001f64e\U0001f3fb\u200d\u2640\ufe0f": {":woman_pouting_tone1:"}, + "\U0001f64e\U0001f3fb\u200d\u2642\ufe0f": {":man_pouting_tone1:"}, + "\U0001f64e\U0001f3fc": {":person_pouting_tone2:"}, + "\U0001f64e\U0001f3fc\u200d\u2640\ufe0f": {":woman_pouting_tone2:"}, + "\U0001f64e\U0001f3fc\u200d\u2642\ufe0f": {":man_pouting_tone2:"}, + "\U0001f64e\U0001f3fd": {":person_pouting_tone3:"}, + "\U0001f64e\U0001f3fd\u200d\u2640\ufe0f": {":woman_pouting_tone3:"}, + "\U0001f64e\U0001f3fd\u200d\u2642\ufe0f": {":man_pouting_tone3:"}, + "\U0001f64e\U0001f3fe": {":person_pouting_tone4:"}, + "\U0001f64e\U0001f3fe\u200d\u2640\ufe0f": {":woman_pouting_tone4:"}, + "\U0001f64e\U0001f3fe\u200d\u2642\ufe0f": {":man_pouting_tone4:"}, + "\U0001f64e\U0001f3ff": {":person_pouting_tone5:"}, + "\U0001f64e\U0001f3ff\u200d\u2640\ufe0f": {":woman_pouting_tone5:"}, + "\U0001f64e\U0001f3ff\u200d\u2642\ufe0f": {":man_pouting_tone5:"}, + "\U0001f64e\u200d\u2640\ufe0f": {":pouting_woman:", ":woman-pouting:", ":woman_pouting:", ":person_with_pouting_face:"}, + "\U0001f64e\u200d\u2642\ufe0f": {":man-pouting:", ":man_pouting:", ":pouting_man:"}, + "\U0001f64f": {":pray:", ":folded_hands:"}, + "\U0001f64f\U0001f3fb": {":pray_tone1:"}, + "\U0001f64f\U0001f3fc": {":pray_tone2:"}, + "\U0001f64f\U0001f3fd": {":pray_tone3:"}, + "\U0001f64f\U0001f3fe": {":pray_tone4:"}, + "\U0001f64f\U0001f3ff": {":pray_tone5:"}, + "\U0001f680": {":rocket:"}, + "\U0001f681": {":helicopter:"}, + "\U0001f682": {":locomotive:", ":steam_locomotive:"}, + "\U0001f683": {":railway_car:"}, + "\U0001f684": {":bullettrain_side:", ":high-speed_train:"}, + "\U0001f685": {":bullet_train:", ":bullettrain_front:"}, + "\U0001f686": {":train2:"}, + "\U0001f687": {":metro:"}, + "\U0001f688": {":light_rail:"}, + "\U0001f689": {":station:"}, + "\U0001f68a": {":tram:"}, + "\U0001f68b": {":train:", ":tram_car:"}, + "\U0001f68c": {":bus:"}, + "\U0001f68d": {":oncoming_bus:"}, + "\U0001f68e": {":trolleybus:"}, + "\U0001f68f": {":busstop:", ":bus_stop:"}, + "\U0001f690": {":minibus:"}, + "\U0001f691": {":ambulance:"}, + "\U0001f692": {":fire_engine:"}, + "\U0001f693": {":police_car:"}, + "\U0001f694": {":oncoming_police_car:"}, + "\U0001f695": {":taxi:"}, + "\U0001f696": {":oncoming_taxi:"}, + "\U0001f697": {":car:", ":red_car:", ":automobile:"}, + "\U0001f698": {":oncoming_automobile:"}, + "\U0001f699": {":blue_car:", ":sport_utility_vehicle:"}, + "\U0001f69a": {":truck:", ":delivery_truck:"}, + "\U0001f69b": {":articulated_lorry:"}, + "\U0001f69c": {":tractor:"}, + "\U0001f69d": {":monorail:"}, + "\U0001f69e": {":mountain_railway:"}, + "\U0001f69f": {":suspension_railway:"}, + "\U0001f6a0": {":mountain_cableway:"}, + "\U0001f6a1": {":aerial_tramway:"}, + "\U0001f6a2": {":ship:"}, + "\U0001f6a3": {":person_rowing_boat:"}, + "\U0001f6a3\U0001f3fb": {":person_rowing_boat_tone1:"}, + "\U0001f6a3\U0001f3fb\u200d\u2640\ufe0f": {":woman_rowing_boat_tone1:"}, + "\U0001f6a3\U0001f3fb\u200d\u2642\ufe0f": {":man_rowing_boat_tone1:"}, + "\U0001f6a3\U0001f3fc": {":person_rowing_boat_tone2:"}, + "\U0001f6a3\U0001f3fc\u200d\u2640\ufe0f": {":woman_rowing_boat_tone2:"}, + "\U0001f6a3\U0001f3fc\u200d\u2642\ufe0f": {":man_rowing_boat_tone2:"}, + "\U0001f6a3\U0001f3fd": {":person_rowing_boat_tone3:"}, + "\U0001f6a3\U0001f3fd\u200d\u2640\ufe0f": {":woman_rowing_boat_tone3:"}, + "\U0001f6a3\U0001f3fd\u200d\u2642\ufe0f": {":man_rowing_boat_tone3:"}, + "\U0001f6a3\U0001f3fe": {":person_rowing_boat_tone4:"}, + "\U0001f6a3\U0001f3fe\u200d\u2640\ufe0f": {":woman_rowing_boat_tone4:"}, + "\U0001f6a3\U0001f3fe\u200d\u2642\ufe0f": {":man_rowing_boat_tone4:"}, + "\U0001f6a3\U0001f3ff": {":person_rowing_boat_tone5:"}, + "\U0001f6a3\U0001f3ff\u200d\u2640\ufe0f": {":woman_rowing_boat_tone5:"}, + "\U0001f6a3\U0001f3ff\u200d\u2642\ufe0f": {":man_rowing_boat_tone5:"}, + "\U0001f6a3\u200d\u2640\ufe0f": {":rowing_woman:", ":woman-rowing-boat:", ":woman_rowing_boat:"}, + "\U0001f6a3\u200d\u2642\ufe0f": {":rowboat:", ":rowing_man:", ":man-rowing-boat:", ":man_rowing_boat:"}, + "\U0001f6a4": {":speedboat:"}, + "\U0001f6a5": {":traffic_light:", ":horizontal_traffic_light:"}, + "\U0001f6a6": {":vertical_traffic_light:"}, + "\U0001f6a7": {":construction:"}, + "\U0001f6a8": {":rotating_light:", ":police_car_light:"}, + "\U0001f6a9": {":triangular_flag:", ":triangular_flag_on_post:"}, + "\U0001f6aa": {":door:"}, + "\U0001f6ab": {":prohibited:", ":no_entry_sign:"}, + "\U0001f6ac": {":smoking:", ":cigarette:"}, + "\U0001f6ad": {":no_smoking:"}, + "\U0001f6ae": {":litter_in_bin_sign:", ":put_litter_in_its_place:"}, + "\U0001f6af": {":no_littering:", ":do_not_litter:"}, + "\U0001f6b0": {":potable_water:"}, + "\U0001f6b1": {":non-potable_water:"}, + "\U0001f6b2": {":bike:", ":bicycle:"}, + "\U0001f6b3": {":no_bicycles:"}, + "\U0001f6b4": {":person_biking:"}, + "\U0001f6b4\U0001f3fb": {":person_biking_tone1:"}, + "\U0001f6b4\U0001f3fb\u200d\u2640\ufe0f": {":woman_biking_tone1:"}, + "\U0001f6b4\U0001f3fb\u200d\u2642\ufe0f": {":man_biking_tone1:"}, + "\U0001f6b4\U0001f3fc": {":person_biking_tone2:"}, + "\U0001f6b4\U0001f3fc\u200d\u2640\ufe0f": {":woman_biking_tone2:"}, + "\U0001f6b4\U0001f3fc\u200d\u2642\ufe0f": {":man_biking_tone2:"}, + "\U0001f6b4\U0001f3fd": {":person_biking_tone3:"}, + "\U0001f6b4\U0001f3fd\u200d\u2640\ufe0f": {":woman_biking_tone3:"}, + "\U0001f6b4\U0001f3fd\u200d\u2642\ufe0f": {":man_biking_tone3:"}, + "\U0001f6b4\U0001f3fe": {":person_biking_tone4:"}, + "\U0001f6b4\U0001f3fe\u200d\u2640\ufe0f": {":woman_biking_tone4:"}, + "\U0001f6b4\U0001f3fe\u200d\u2642\ufe0f": {":man_biking_tone4:"}, + "\U0001f6b4\U0001f3ff": {":person_biking_tone5:"}, + "\U0001f6b4\U0001f3ff\u200d\u2640\ufe0f": {":woman_biking_tone5:"}, + "\U0001f6b4\U0001f3ff\u200d\u2642\ufe0f": {":man_biking_tone5:"}, + "\U0001f6b4\u200d\u2640\ufe0f": {":biking_woman:", ":woman-biking:", ":woman_biking:"}, + "\U0001f6b4\u200d\u2642\ufe0f": {":bicyclist:", ":biking_man:", ":man-biking:", ":man_biking:"}, + "\U0001f6b5": {":person_mountain_biking:"}, + "\U0001f6b5\U0001f3fb": {":person_mountain_biking_tone1:"}, + "\U0001f6b5\U0001f3fb\u200d\u2640\ufe0f": {":woman_mountain_biking_tone1:"}, + "\U0001f6b5\U0001f3fb\u200d\u2642\ufe0f": {":man_mountain_biking_tone1:"}, + "\U0001f6b5\U0001f3fc": {":person_mountain_biking_tone2:"}, + "\U0001f6b5\U0001f3fc\u200d\u2640\ufe0f": {":woman_mountain_biking_tone2:"}, + "\U0001f6b5\U0001f3fc\u200d\u2642\ufe0f": {":man_mountain_biking_tone2:"}, + "\U0001f6b5\U0001f3fd": {":person_mountain_biking_tone3:"}, + "\U0001f6b5\U0001f3fd\u200d\u2640\ufe0f": {":woman_mountain_biking_tone3:"}, + "\U0001f6b5\U0001f3fd\u200d\u2642\ufe0f": {":man_mountain_biking_tone3:"}, + "\U0001f6b5\U0001f3fe": {":person_mountain_biking_tone4:"}, + "\U0001f6b5\U0001f3fe\u200d\u2640\ufe0f": {":woman_mountain_biking_tone4:"}, + "\U0001f6b5\U0001f3fe\u200d\u2642\ufe0f": {":man_mountain_biking_tone4:"}, + "\U0001f6b5\U0001f3ff": {":person_mountain_biking_tone5:"}, + "\U0001f6b5\U0001f3ff\u200d\u2640\ufe0f": {":woman_mountain_biking_tone5:"}, + "\U0001f6b5\U0001f3ff\u200d\u2642\ufe0f": {":man_mountain_biking_tone5:"}, + "\U0001f6b5\u200d\u2640\ufe0f": {":mountain_biking_woman:", ":woman-mountain-biking:", ":woman_mountain_biking:"}, + "\U0001f6b5\u200d\u2642\ufe0f": {":mountain_bicyclist:", ":man-mountain-biking:", ":man_mountain_biking:", ":mountain_biking_man:"}, + "\U0001f6b6": {":person_walking:"}, + "\U0001f6b6\U0001f3fb": {":person_walking_tone1:"}, + "\U0001f6b6\U0001f3fb\u200d\u2640\ufe0f": {":woman_walking_tone1:"}, + "\U0001f6b6\U0001f3fb\u200d\u2642\ufe0f": {":man_walking_tone1:"}, + "\U0001f6b6\U0001f3fc": {":person_walking_tone2:"}, + "\U0001f6b6\U0001f3fc\u200d\u2640\ufe0f": {":woman_walking_tone2:"}, + "\U0001f6b6\U0001f3fc\u200d\u2642\ufe0f": {":man_walking_tone2:"}, + "\U0001f6b6\U0001f3fd": {":person_walking_tone3:"}, + "\U0001f6b6\U0001f3fd\u200d\u2640\ufe0f": {":woman_walking_tone3:"}, + "\U0001f6b6\U0001f3fd\u200d\u2642\ufe0f": {":man_walking_tone3:"}, + "\U0001f6b6\U0001f3fe": {":person_walking_tone4:"}, + "\U0001f6b6\U0001f3fe\u200d\u2640\ufe0f": {":woman_walking_tone4:"}, + "\U0001f6b6\U0001f3fe\u200d\u2642\ufe0f": {":man_walking_tone4:"}, + "\U0001f6b6\U0001f3ff": {":person_walking_tone5:"}, + "\U0001f6b6\U0001f3ff\u200d\u2640\ufe0f": {":woman_walking_tone5:"}, + "\U0001f6b6\U0001f3ff\u200d\u2642\ufe0f": {":man_walking_tone5:"}, + "\U0001f6b6\u200d\u2640\ufe0f": {":walking_woman:", ":woman-walking:", ":woman_walking:"}, + "\U0001f6b6\u200d\u2642\ufe0f": {":walking:", ":man-walking:", ":man_walking:", ":walking_man:"}, + "\U0001f6b7": {":no_pedestrians:"}, + "\U0001f6b8": {":children_crossing:"}, + "\U0001f6b9": {":mens:", ":men’s_room:"}, + "\U0001f6ba": {":womens:", ":women’s_room:"}, + "\U0001f6bb": {":restroom:"}, + "\U0001f6bc": {":baby_symbol:"}, + "\U0001f6bd": {":toilet:"}, + "\U0001f6be": {":wc:", ":water_closet:"}, + "\U0001f6bf": {":shower:"}, + "\U0001f6c0": {":bath:", ":person_taking_bath:"}, + "\U0001f6c0\U0001f3fb": {":bath_tone1:"}, + "\U0001f6c0\U0001f3fc": {":bath_tone2:"}, + "\U0001f6c0\U0001f3fd": {":bath_tone3:"}, + "\U0001f6c0\U0001f3fe": {":bath_tone4:"}, + "\U0001f6c0\U0001f3ff": {":bath_tone5:"}, + "\U0001f6c1": {":bathtub:"}, + "\U0001f6c2": {":passport_control:"}, + "\U0001f6c3": {":customs:"}, + "\U0001f6c4": {":baggage_claim:"}, + "\U0001f6c5": {":left_luggage:"}, + "\U0001f6cb": {":couch:"}, + "\U0001f6cb\ufe0f": {":couch_and_lamp:"}, + "\U0001f6cc": {":sleeping_bed:", ":person_in_bed:", ":sleeping_accommodation:"}, + "\U0001f6cc\U0001f3fb": {":person_in_bed_tone1:"}, + "\U0001f6cc\U0001f3fc": {":person_in_bed_tone2:"}, + "\U0001f6cc\U0001f3fd": {":person_in_bed_tone3:"}, + "\U0001f6cc\U0001f3fe": {":person_in_bed_tone4:"}, + "\U0001f6cc\U0001f3ff": {":person_in_bed_tone5:"}, + "\U0001f6cd\ufe0f": {":shopping:", ":shopping_bags:"}, + "\U0001f6ce": {":bellhop:"}, + "\U0001f6ce\ufe0f": {":bellhop_bell:"}, + "\U0001f6cf\ufe0f": {":bed:"}, + "\U0001f6d0": {":place_of_worship:"}, + "\U0001f6d1": {":stop_sign:", ":octagonal_sign:"}, + "\U0001f6d2": {":shopping_cart:", ":shopping_trolley:"}, + "\U0001f6d5": {":hindu_temple:"}, + "\U0001f6d6": {":hut:"}, + "\U0001f6d7": {":elevator:"}, + "\U0001f6e0": {":tools:"}, + "\U0001f6e0\ufe0f": {":hammer_and_wrench:"}, + "\U0001f6e1\ufe0f": {":shield:"}, + "\U0001f6e2": {":oil:"}, + "\U0001f6e2\ufe0f": {":oil_drum:"}, + "\U0001f6e3\ufe0f": {":motorway:"}, + "\U0001f6e4\ufe0f": {":railway_track:"}, + "\U0001f6e5": {":motorboat:"}, + "\U0001f6e5\ufe0f": {":motor_boat:"}, + "\U0001f6e9": {":airplane_small:"}, + "\U0001f6e9\ufe0f": {":small_airplane:"}, + "\U0001f6eb": {":flight_departure:", ":airplane_departure:"}, + "\U0001f6ec": {":flight_arrival:", ":airplane_arrival:", ":airplane_arriving:"}, + "\U0001f6f0": {":satellite_orbital:"}, + "\U0001f6f0\ufe0f": {":satellite:", ":artificial_satellite:"}, + "\U0001f6f3": {":cruise_ship:"}, + "\U0001f6f3\ufe0f": {":passenger_ship:"}, + "\U0001f6f4": {":scooter:", ":kick_scooter:"}, + "\U0001f6f5": {":motor_scooter:"}, + "\U0001f6f6": {":canoe:"}, + "\U0001f6f7": {":sled:"}, + "\U0001f6f8": {":flying_saucer:"}, + "\U0001f6f9": {":skateboard:"}, + "\U0001f6fa": {":auto_rickshaw:"}, + "\U0001f6fb": {":pickup_truck:"}, + "\U0001f6fc": {":roller_skate:"}, + "\U0001f7e0": {":orange_circle:", ":large_orange_circle:"}, + "\U0001f7e1": {":yellow_circle:", ":large_yellow_circle:"}, + "\U0001f7e2": {":green_circle:", ":large_green_circle:"}, + "\U0001f7e3": {":purple_circle:", ":large_purple_circle:"}, + "\U0001f7e4": {":brown_circle:", ":large_brown_circle:"}, + "\U0001f7e5": {":red_square:", ":large_red_square:"}, + "\U0001f7e6": {":blue_square:", ":large_blue_square:"}, + "\U0001f7e7": {":orange_square:", ":large_orange_square:"}, + "\U0001f7e8": {":yellow_square:", ":large_yellow_square:"}, + "\U0001f7e9": {":green_square:", ":large_green_square:"}, + "\U0001f7ea": {":purple_square:", ":large_purple_square:"}, + "\U0001f7eb": {":brown_square:", ":large_brown_square:"}, + "\U0001f90c": {":pinched_fingers:"}, + "\U0001f90d": {":white_heart:"}, + "\U0001f90e": {":brown_heart:"}, + "\U0001f90f": {":pinching_hand:"}, + "\U0001f910": {":zipper_mouth:", ":zipper-mouth_face:", ":zipper_mouth_face:"}, + "\U0001f911": {":money_mouth:", ":money-mouth_face:", ":money_mouth_face:"}, + "\U0001f912": {":thermometer_face:", ":face_with_thermometer:"}, + "\U0001f913": {":nerd:", ":nerd_face:"}, + "\U0001f914": {":thinking:", ":thinking_face:"}, + "\U0001f915": {":head_bandage:", ":face_with_head-bandage:", ":face_with_head_bandage:"}, + "\U0001f916": {":robot:", ":robot_face:"}, + "\U0001f917": {":hugs:", ":hugging:", ":hugging_face:"}, + "\U0001f918": {":metal:", ":the_horns:", ":sign_of_the_horns:"}, + "\U0001f918\U0001f3fb": {":metal_tone1:"}, + "\U0001f918\U0001f3fc": {":metal_tone2:"}, + "\U0001f918\U0001f3fd": {":metal_tone3:"}, + "\U0001f918\U0001f3fe": {":metal_tone4:"}, + "\U0001f918\U0001f3ff": {":metal_tone5:"}, + "\U0001f919": {":call_me:", ":call_me_hand:"}, + "\U0001f919\U0001f3fb": {":call_me_tone1:"}, + "\U0001f919\U0001f3fc": {":call_me_tone2:"}, + "\U0001f919\U0001f3fd": {":call_me_tone3:"}, + "\U0001f919\U0001f3fe": {":call_me_tone4:"}, + "\U0001f919\U0001f3ff": {":call_me_tone5:"}, + "\U0001f91a": {":raised_back_of_hand:"}, + "\U0001f91a\U0001f3fb": {":raised_back_of_hand_tone1:"}, + "\U0001f91a\U0001f3fc": {":raised_back_of_hand_tone2:"}, + "\U0001f91a\U0001f3fd": {":raised_back_of_hand_tone3:"}, + "\U0001f91a\U0001f3fe": {":raised_back_of_hand_tone4:"}, + "\U0001f91a\U0001f3ff": {":raised_back_of_hand_tone5:"}, + "\U0001f91b": {":fist_left:", ":left-facing_fist:", ":left_facing_fist:"}, + "\U0001f91b\U0001f3fb": {":left_facing_fist_tone1:"}, + "\U0001f91b\U0001f3fc": {":left_facing_fist_tone2:"}, + "\U0001f91b\U0001f3fd": {":left_facing_fist_tone3:"}, + "\U0001f91b\U0001f3fe": {":left_facing_fist_tone4:"}, + "\U0001f91b\U0001f3ff": {":left_facing_fist_tone5:"}, + "\U0001f91c": {":fist_right:", ":right-facing_fist:", ":right_facing_fist:"}, + "\U0001f91c\U0001f3fb": {":right_facing_fist_tone1:"}, + "\U0001f91c\U0001f3fc": {":right_facing_fist_tone2:"}, + "\U0001f91c\U0001f3fd": {":right_facing_fist_tone3:"}, + "\U0001f91c\U0001f3fe": {":right_facing_fist_tone4:"}, + "\U0001f91c\U0001f3ff": {":right_facing_fist_tone5:"}, + "\U0001f91d": {":handshake:"}, + "\U0001f91e": {":crossed_fingers:", ":fingers_crossed:"}, + "\U0001f91e\U0001f3fb": {":fingers_crossed_tone1:"}, + "\U0001f91e\U0001f3fc": {":fingers_crossed_tone2:"}, + "\U0001f91e\U0001f3fd": {":fingers_crossed_tone3:"}, + "\U0001f91e\U0001f3fe": {":fingers_crossed_tone4:"}, + "\U0001f91e\U0001f3ff": {":fingers_crossed_tone5:"}, + "\U0001f91f": {":love-you_gesture:", ":love_you_gesture:", ":i_love_you_hand_sign:"}, + "\U0001f91f\U0001f3fb": {":love_you_gesture_tone1:"}, + "\U0001f91f\U0001f3fc": {":love_you_gesture_tone2:"}, + "\U0001f91f\U0001f3fd": {":love_you_gesture_tone3:"}, + "\U0001f91f\U0001f3fe": {":love_you_gesture_tone4:"}, + "\U0001f91f\U0001f3ff": {":love_you_gesture_tone5:"}, + "\U0001f920": {":cowboy:", ":cowboy_hat_face:", ":face_with_cowboy_hat:"}, + "\U0001f921": {":clown:", ":clown_face:"}, + "\U0001f922": {":nauseated_face:"}, + "\U0001f923": {":rofl:", ":rolling_on_the_floor_laughing:"}, + "\U0001f924": {":drooling_face:"}, + "\U0001f925": {":lying_face:"}, + "\U0001f926": {":facepalm:", ":face_palm:", ":person_facepalming:"}, + "\U0001f926\U0001f3fb": {":person_facepalming_tone1:"}, + "\U0001f926\U0001f3fb\u200d\u2640\ufe0f": {":woman_facepalming_tone1:"}, + "\U0001f926\U0001f3fb\u200d\u2642\ufe0f": {":man_facepalming_tone1:"}, + "\U0001f926\U0001f3fc": {":person_facepalming_tone2:"}, + "\U0001f926\U0001f3fc\u200d\u2640\ufe0f": {":woman_facepalming_tone2:"}, + "\U0001f926\U0001f3fc\u200d\u2642\ufe0f": {":man_facepalming_tone2:"}, + "\U0001f926\U0001f3fd": {":person_facepalming_tone3:"}, + "\U0001f926\U0001f3fd\u200d\u2640\ufe0f": {":woman_facepalming_tone3:"}, + "\U0001f926\U0001f3fd\u200d\u2642\ufe0f": {":man_facepalming_tone3:"}, + "\U0001f926\U0001f3fe": {":person_facepalming_tone4:"}, + "\U0001f926\U0001f3fe\u200d\u2640\ufe0f": {":woman_facepalming_tone4:"}, + "\U0001f926\U0001f3fe\u200d\u2642\ufe0f": {":man_facepalming_tone4:"}, + "\U0001f926\U0001f3ff": {":person_facepalming_tone5:"}, + "\U0001f926\U0001f3ff\u200d\u2640\ufe0f": {":woman_facepalming_tone5:"}, + "\U0001f926\U0001f3ff\u200d\u2642\ufe0f": {":man_facepalming_tone5:"}, + "\U0001f926\u200d\u2640\ufe0f": {":woman-facepalming:", ":woman_facepalming:"}, + "\U0001f926\u200d\u2642\ufe0f": {":man-facepalming:", ":man_facepalming:"}, + "\U0001f927": {":sneezing_face:"}, + "\U0001f928": {":raised_eyebrow:", ":face_with_raised_eyebrow:"}, + "\U0001f929": {":star-struck:", ":star_struck:"}, + "\U0001f92a": {":zany_face:", ":crazy_face:"}, + "\U0001f92b": {":shushing_face:"}, + "\U0001f92c": {":cursing_face:", ":face_with_symbols_on_mouth:", ":face_with_symbols_over_mouth:"}, + "\U0001f92d": {":hand_over_mouth:", ":face_with_hand_over_mouth:"}, + "\U0001f92e": {":face_vomiting:", ":vomiting_face:"}, + "\U0001f92f": {":exploding_head:"}, + "\U0001f930": {":pregnant_woman:"}, + "\U0001f930\U0001f3fb": {":pregnant_woman_tone1:"}, + "\U0001f930\U0001f3fc": {":pregnant_woman_tone2:"}, + "\U0001f930\U0001f3fd": {":pregnant_woman_tone3:"}, + "\U0001f930\U0001f3fe": {":pregnant_woman_tone4:"}, + "\U0001f930\U0001f3ff": {":pregnant_woman_tone5:"}, + "\U0001f931": {":breast-feeding:", ":breast_feeding:"}, + "\U0001f931\U0001f3fb": {":breast_feeding_tone1:"}, + "\U0001f931\U0001f3fc": {":breast_feeding_tone2:"}, + "\U0001f931\U0001f3fd": {":breast_feeding_tone3:"}, + "\U0001f931\U0001f3fe": {":breast_feeding_tone4:"}, + "\U0001f931\U0001f3ff": {":breast_feeding_tone5:"}, + "\U0001f932": {":palms_up_together:"}, + "\U0001f932\U0001f3fb": {":palms_up_together_tone1:"}, + "\U0001f932\U0001f3fc": {":palms_up_together_tone2:"}, + "\U0001f932\U0001f3fd": {":palms_up_together_tone3:"}, + "\U0001f932\U0001f3fe": {":palms_up_together_tone4:"}, + "\U0001f932\U0001f3ff": {":palms_up_together_tone5:"}, + "\U0001f933": {":selfie:"}, + "\U0001f933\U0001f3fb": {":selfie_tone1:"}, + "\U0001f933\U0001f3fc": {":selfie_tone2:"}, + "\U0001f933\U0001f3fd": {":selfie_tone3:"}, + "\U0001f933\U0001f3fe": {":selfie_tone4:"}, + "\U0001f933\U0001f3ff": {":selfie_tone5:"}, + "\U0001f934": {":prince:"}, + "\U0001f934\U0001f3fb": {":prince_tone1:"}, + "\U0001f934\U0001f3fc": {":prince_tone2:"}, + "\U0001f934\U0001f3fd": {":prince_tone3:"}, + "\U0001f934\U0001f3fe": {":prince_tone4:"}, + "\U0001f934\U0001f3ff": {":prince_tone5:"}, + "\U0001f935": {":person_in_tuxedo:"}, + "\U0001f935\U0001f3fb": {":man_in_tuxedo_tone1:"}, + "\U0001f935\U0001f3fc": {":man_in_tuxedo_tone2:"}, + "\U0001f935\U0001f3fd": {":man_in_tuxedo_tone3:"}, + "\U0001f935\U0001f3fe": {":man_in_tuxedo_tone4:"}, + "\U0001f935\U0001f3ff": {":man_in_tuxedo_tone5:"}, + "\U0001f935\u200d\u2640\ufe0f": {":woman_in_tuxedo:"}, + "\U0001f935\u200d\u2642\ufe0f": {":man_in_tuxedo:"}, + "\U0001f936": {":mrs_claus:", ":Mrs._Claus:"}, + "\U0001f936\U0001f3fb": {":mrs_claus_tone1:"}, + "\U0001f936\U0001f3fc": {":mrs_claus_tone2:"}, + "\U0001f936\U0001f3fd": {":mrs_claus_tone3:"}, + "\U0001f936\U0001f3fe": {":mrs_claus_tone4:"}, + "\U0001f936\U0001f3ff": {":mrs_claus_tone5:"}, + "\U0001f937": {":shrug:", ":person_shrugging:"}, + "\U0001f937\U0001f3fb": {":person_shrugging_tone1:"}, + "\U0001f937\U0001f3fb\u200d\u2640\ufe0f": {":woman_shrugging_tone1:"}, + "\U0001f937\U0001f3fb\u200d\u2642\ufe0f": {":man_shrugging_tone1:"}, + "\U0001f937\U0001f3fc": {":person_shrugging_tone2:"}, + "\U0001f937\U0001f3fc\u200d\u2640\ufe0f": {":woman_shrugging_tone2:"}, + "\U0001f937\U0001f3fc\u200d\u2642\ufe0f": {":man_shrugging_tone2:"}, + "\U0001f937\U0001f3fd": {":person_shrugging_tone3:"}, + "\U0001f937\U0001f3fd\u200d\u2640\ufe0f": {":woman_shrugging_tone3:"}, + "\U0001f937\U0001f3fd\u200d\u2642\ufe0f": {":man_shrugging_tone3:"}, + "\U0001f937\U0001f3fe": {":person_shrugging_tone4:"}, + "\U0001f937\U0001f3fe\u200d\u2640\ufe0f": {":woman_shrugging_tone4:"}, + "\U0001f937\U0001f3fe\u200d\u2642\ufe0f": {":man_shrugging_tone4:"}, + "\U0001f937\U0001f3ff": {":person_shrugging_tone5:"}, + "\U0001f937\U0001f3ff\u200d\u2640\ufe0f": {":woman_shrugging_tone5:"}, + "\U0001f937\U0001f3ff\u200d\u2642\ufe0f": {":man_shrugging_tone5:"}, + "\U0001f937\u200d\u2640\ufe0f": {":woman-shrugging:", ":woman_shrugging:"}, + "\U0001f937\u200d\u2642\ufe0f": {":man-shrugging:", ":man_shrugging:"}, + "\U0001f938": {":cartwheeling:", ":person_cartwheeling:", ":person_doing_cartwheel:"}, + "\U0001f938\U0001f3fb": {":person_doing_cartwheel_tone1:"}, + "\U0001f938\U0001f3fb\u200d\u2640\ufe0f": {":woman_cartwheeling_tone1:"}, + "\U0001f938\U0001f3fb\u200d\u2642\ufe0f": {":man_cartwheeling_tone1:"}, + "\U0001f938\U0001f3fc": {":person_doing_cartwheel_tone2:"}, + "\U0001f938\U0001f3fc\u200d\u2640\ufe0f": {":woman_cartwheeling_tone2:"}, + "\U0001f938\U0001f3fc\u200d\u2642\ufe0f": {":man_cartwheeling_tone2:"}, + "\U0001f938\U0001f3fd": {":person_doing_cartwheel_tone3:"}, + "\U0001f938\U0001f3fd\u200d\u2640\ufe0f": {":woman_cartwheeling_tone3:"}, + "\U0001f938\U0001f3fd\u200d\u2642\ufe0f": {":man_cartwheeling_tone3:"}, + "\U0001f938\U0001f3fe": {":person_doing_cartwheel_tone4:"}, + "\U0001f938\U0001f3fe\u200d\u2640\ufe0f": {":woman_cartwheeling_tone4:"}, + "\U0001f938\U0001f3fe\u200d\u2642\ufe0f": {":man_cartwheeling_tone4:"}, + "\U0001f938\U0001f3ff": {":person_doing_cartwheel_tone5:"}, + "\U0001f938\U0001f3ff\u200d\u2640\ufe0f": {":woman_cartwheeling_tone5:"}, + "\U0001f938\U0001f3ff\u200d\u2642\ufe0f": {":man_cartwheeling_tone5:"}, + "\U0001f938\u200d\u2640\ufe0f": {":woman-cartwheeling:", ":woman_cartwheeling:"}, + "\U0001f938\u200d\u2642\ufe0f": {":man-cartwheeling:", ":man_cartwheeling:"}, + "\U0001f939": {":juggling:", ":juggling_person:", ":person_juggling:"}, + "\U0001f939\U0001f3fb": {":person_juggling_tone1:"}, + "\U0001f939\U0001f3fb\u200d\u2640\ufe0f": {":woman_juggling_tone1:"}, + "\U0001f939\U0001f3fb\u200d\u2642\ufe0f": {":man_juggling_tone1:"}, + "\U0001f939\U0001f3fc": {":person_juggling_tone2:"}, + "\U0001f939\U0001f3fc\u200d\u2640\ufe0f": {":woman_juggling_tone2:"}, + "\U0001f939\U0001f3fc\u200d\u2642\ufe0f": {":man_juggling_tone2:"}, + "\U0001f939\U0001f3fd": {":person_juggling_tone3:"}, + "\U0001f939\U0001f3fd\u200d\u2640\ufe0f": {":woman_juggling_tone3:"}, + "\U0001f939\U0001f3fd\u200d\u2642\ufe0f": {":man_juggling_tone3:"}, + "\U0001f939\U0001f3fe": {":person_juggling_tone4:"}, + "\U0001f939\U0001f3fe\u200d\u2640\ufe0f": {":woman_juggling_tone4:"}, + "\U0001f939\U0001f3fe\u200d\u2642\ufe0f": {":man_juggling_tone4:"}, + "\U0001f939\U0001f3ff": {":person_juggling_tone5:"}, + "\U0001f939\U0001f3ff\u200d\u2640\ufe0f": {":woman_juggling_tone5:"}, + "\U0001f939\U0001f3ff\u200d\u2642\ufe0f": {":man_juggling_tone5:"}, + "\U0001f939\u200d\u2640\ufe0f": {":woman-juggling:", ":woman_juggling:"}, + "\U0001f939\u200d\u2642\ufe0f": {":man-juggling:", ":man_juggling:"}, + "\U0001f93a": {":fencer:", ":person_fencing:"}, + "\U0001f93c": {":wrestlers:", ":wrestling:", ":people_wrestling:"}, + "\U0001f93c\u200d\u2640\ufe0f": {":woman-wrestling:", ":women_wrestling:"}, + "\U0001f93c\u200d\u2642\ufe0f": {":man-wrestling:", ":men_wrestling:"}, + "\U0001f93d": {":water_polo:", ":person_playing_water_polo:"}, + "\U0001f93d\U0001f3fb": {":person_playing_water_polo_tone1:"}, + "\U0001f93d\U0001f3fb\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone1:"}, + "\U0001f93d\U0001f3fb\u200d\u2642\ufe0f": {":man_playing_water_polo_tone1:"}, + "\U0001f93d\U0001f3fc": {":person_playing_water_polo_tone2:"}, + "\U0001f93d\U0001f3fc\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone2:"}, + "\U0001f93d\U0001f3fc\u200d\u2642\ufe0f": {":man_playing_water_polo_tone2:"}, + "\U0001f93d\U0001f3fd": {":person_playing_water_polo_tone3:"}, + "\U0001f93d\U0001f3fd\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone3:"}, + "\U0001f93d\U0001f3fd\u200d\u2642\ufe0f": {":man_playing_water_polo_tone3:"}, + "\U0001f93d\U0001f3fe": {":person_playing_water_polo_tone4:"}, + "\U0001f93d\U0001f3fe\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone4:"}, + "\U0001f93d\U0001f3fe\u200d\u2642\ufe0f": {":man_playing_water_polo_tone4:"}, + "\U0001f93d\U0001f3ff": {":person_playing_water_polo_tone5:"}, + "\U0001f93d\U0001f3ff\u200d\u2640\ufe0f": {":woman_playing_water_polo_tone5:"}, + "\U0001f93d\U0001f3ff\u200d\u2642\ufe0f": {":man_playing_water_polo_tone5:"}, + "\U0001f93d\u200d\u2640\ufe0f": {":woman-playing-water-polo:", ":woman_playing_water_polo:"}, + "\U0001f93d\u200d\u2642\ufe0f": {":man-playing-water-polo:", ":man_playing_water_polo:"}, + "\U0001f93e": {":handball:", ":handball_person:", ":person_playing_handball:"}, + "\U0001f93e\U0001f3fb": {":person_playing_handball_tone1:"}, + "\U0001f93e\U0001f3fb\u200d\u2640\ufe0f": {":woman_playing_handball_tone1:"}, + "\U0001f93e\U0001f3fb\u200d\u2642\ufe0f": {":man_playing_handball_tone1:"}, + "\U0001f93e\U0001f3fc": {":person_playing_handball_tone2:"}, + "\U0001f93e\U0001f3fc\u200d\u2640\ufe0f": {":woman_playing_handball_tone2:"}, + "\U0001f93e\U0001f3fc\u200d\u2642\ufe0f": {":man_playing_handball_tone2:"}, + "\U0001f93e\U0001f3fd": {":person_playing_handball_tone3:"}, + "\U0001f93e\U0001f3fd\u200d\u2640\ufe0f": {":woman_playing_handball_tone3:"}, + "\U0001f93e\U0001f3fd\u200d\u2642\ufe0f": {":man_playing_handball_tone3:"}, + "\U0001f93e\U0001f3fe": {":person_playing_handball_tone4:"}, + "\U0001f93e\U0001f3fe\u200d\u2640\ufe0f": {":woman_playing_handball_tone4:"}, + "\U0001f93e\U0001f3fe\u200d\u2642\ufe0f": {":man_playing_handball_tone4:"}, + "\U0001f93e\U0001f3ff": {":person_playing_handball_tone5:"}, + "\U0001f93e\U0001f3ff\u200d\u2640\ufe0f": {":woman_playing_handball_tone5:"}, + "\U0001f93e\U0001f3ff\u200d\u2642\ufe0f": {":man_playing_handball_tone5:"}, + "\U0001f93e\u200d\u2640\ufe0f": {":woman-playing-handball:", ":woman_playing_handball:"}, + "\U0001f93e\u200d\u2642\ufe0f": {":man-playing-handball:", ":man_playing_handball:"}, + "\U0001f93f": {":diving_mask:"}, + "\U0001f940": {":wilted_rose:", ":wilted_flower:"}, + "\U0001f941": {":drum:", ":drum_with_drumsticks:"}, + "\U0001f942": {":champagne_glass:", ":clinking_glasses:"}, + "\U0001f943": {":tumbler_glass:"}, + "\U0001f944": {":spoon:"}, + "\U0001f945": {":goal:", ":goal_net:"}, + "\U0001f947": {":first_place:", ":1st_place_medal:", ":first_place_medal:"}, + "\U0001f948": {":second_place:", ":2nd_place_medal:", ":second_place_medal:"}, + "\U0001f949": {":third_place:", ":3rd_place_medal:", ":third_place_medal:"}, + "\U0001f94a": {":boxing_glove:"}, + "\U0001f94b": {":martial_arts_uniform:"}, + "\U0001f94c": {":curling_stone:"}, + "\U0001f94d": {":lacrosse:"}, + "\U0001f94e": {":softball:"}, + "\U0001f94f": {":flying_disc:"}, + "\U0001f950": {":croissant:"}, + "\U0001f951": {":avocado:"}, + "\U0001f952": {":cucumber:"}, + "\U0001f953": {":bacon:"}, + "\U0001f954": {":potato:"}, + "\U0001f955": {":carrot:"}, + "\U0001f956": {":french_bread:", ":baguette_bread:"}, + "\U0001f957": {":salad:", ":green_salad:"}, + "\U0001f958": {":shallow_pan_of_food:"}, + "\U0001f959": {":stuffed_flatbread:"}, + "\U0001f95a": {":egg:"}, + "\U0001f95b": {":milk:", ":milk_glass:", ":glass_of_milk:"}, + "\U0001f95c": {":peanuts:"}, + "\U0001f95d": {":kiwi:", ":kiwifruit:", ":kiwi_fruit:"}, + "\U0001f95e": {":pancakes:"}, + "\U0001f95f": {":dumpling:"}, + "\U0001f960": {":fortune_cookie:"}, + "\U0001f961": {":takeout_box:"}, + "\U0001f962": {":chopsticks:"}, + "\U0001f963": {":bowl_with_spoon:"}, + "\U0001f964": {":cup_with_straw:"}, + "\U0001f965": {":coconut:"}, + "\U0001f966": {":broccoli:"}, + "\U0001f967": {":pie:"}, + "\U0001f968": {":pretzel:"}, + "\U0001f969": {":cut_of_meat:"}, + "\U0001f96a": {":sandwich:"}, + "\U0001f96b": {":canned_food:"}, + "\U0001f96c": {":leafy_green:"}, + "\U0001f96d": {":mango:"}, + "\U0001f96e": {":moon_cake:"}, + "\U0001f96f": {":bagel:"}, + "\U0001f970": {":smiling_face_with_hearts:", ":smiling_face_with_3_hearts:", ":smiling_face_with_three_hearts:"}, + "\U0001f971": {":yawning_face:"}, + "\U0001f972": {":smiling_face_with_tear:"}, + "\U0001f973": {":partying_face:"}, + "\U0001f974": {":woozy_face:"}, + "\U0001f975": {":hot_face:"}, + "\U0001f976": {":cold_face:"}, + "\U0001f977": {":ninja:"}, + "\U0001f978": {":disguised_face:"}, + "\U0001f97a": {":pleading_face:"}, + "\U0001f97b": {":sari:"}, + "\U0001f97c": {":lab_coat:"}, + "\U0001f97d": {":goggles:"}, + "\U0001f97e": {":hiking_boot:"}, + "\U0001f97f": {":flat_shoe:", ":womans_flat_shoe:"}, + "\U0001f980": {":crab:"}, + "\U0001f981": {":lion:", ":lion_face:"}, + "\U0001f982": {":scorpion:"}, + "\U0001f983": {":turkey:"}, + "\U0001f984": {":unicorn:", ":unicorn_face:"}, + "\U0001f985": {":eagle:"}, + "\U0001f986": {":duck:"}, + "\U0001f987": {":bat:"}, + "\U0001f988": {":shark:"}, + "\U0001f989": {":owl:"}, + "\U0001f98a": {":fox:", ":fox_face:"}, + "\U0001f98b": {":butterfly:"}, + "\U0001f98c": {":deer:"}, + "\U0001f98d": {":gorilla:"}, + "\U0001f98e": {":lizard:"}, + "\U0001f98f": {":rhino:", ":rhinoceros:"}, + "\U0001f990": {":shrimp:"}, + "\U0001f991": {":squid:"}, + "\U0001f992": {":giraffe:", ":giraffe_face:"}, + "\U0001f993": {":zebra:", ":zebra_face:"}, + "\U0001f994": {":hedgehog:"}, + "\U0001f995": {":sauropod:"}, + "\U0001f996": {":T-Rex:", ":t-rex:", ":t_rex:"}, + "\U0001f997": {":cricket:"}, + "\U0001f998": {":kangaroo:"}, + "\U0001f999": {":llama:"}, + "\U0001f99a": {":peacock:"}, + "\U0001f99b": {":hippopotamus:"}, + "\U0001f99c": {":parrot:"}, + "\U0001f99d": {":raccoon:"}, + "\U0001f99e": {":lobster:"}, + "\U0001f99f": {":mosquito:"}, + "\U0001f9a0": {":microbe:"}, + "\U0001f9a1": {":badger:"}, + "\U0001f9a2": {":swan:"}, + "\U0001f9a3": {":mammoth:"}, + "\U0001f9a4": {":dodo:"}, + "\U0001f9a5": {":sloth:"}, + "\U0001f9a6": {":otter:"}, + "\U0001f9a7": {":orangutan:"}, + "\U0001f9a8": {":skunk:"}, + "\U0001f9a9": {":flamingo:"}, + "\U0001f9aa": {":oyster:"}, + "\U0001f9ab": {":beaver:"}, + "\U0001f9ac": {":bison:"}, + "\U0001f9ad": {":seal:"}, + "\U0001f9ae": {":guide_dog:"}, + "\U0001f9af": {":white_cane:", ":probing_cane:"}, + "\U0001f9b0": {":red_hair:"}, + "\U0001f9b1": {":curly_hair:"}, + "\U0001f9b2": {":bald:"}, + "\U0001f9b3": {":white_hair:"}, + "\U0001f9b4": {":bone:"}, + "\U0001f9b5": {":leg:"}, + "\U0001f9b6": {":foot:"}, + "\U0001f9b7": {":tooth:"}, + "\U0001f9b8": {":superhero:"}, + "\U0001f9b8\u200d\u2640\ufe0f": {":superhero_woman:", ":woman_superhero:", ":female_superhero:"}, + "\U0001f9b8\u200d\u2642\ufe0f": {":man_superhero:", ":superhero_man:", ":male_superhero:"}, + "\U0001f9b9": {":supervillain:"}, + "\U0001f9b9\u200d\u2640\ufe0f": {":supervillain_woman:", ":woman_supervillain:", ":female_supervillain:"}, + "\U0001f9b9\u200d\u2642\ufe0f": {":man_supervillain:", ":supervillain_man:", ":male_supervillain:"}, + "\U0001f9ba": {":safety_vest:"}, + "\U0001f9bb": {":ear_with_hearing_aid:"}, + "\U0001f9bc": {":motorized_wheelchair:"}, + "\U0001f9bd": {":manual_wheelchair:"}, + "\U0001f9be": {":mechanical_arm:"}, + "\U0001f9bf": {":mechanical_leg:"}, + "\U0001f9c0": {":cheese:", ":cheese_wedge:"}, + "\U0001f9c1": {":cupcake:"}, + "\U0001f9c2": {":salt:"}, + "\U0001f9c3": {":beverage_box:"}, + "\U0001f9c4": {":garlic:"}, + "\U0001f9c5": {":onion:"}, + "\U0001f9c6": {":falafel:"}, + "\U0001f9c7": {":waffle:"}, + "\U0001f9c8": {":butter:"}, + "\U0001f9c9": {":mate:", ":mate_drink:"}, + "\U0001f9ca": {":ice:", ":ice_cube:"}, + "\U0001f9cb": {":bubble_tea:"}, + "\U0001f9cd": {":person_standing:", ":standing_person:"}, + "\U0001f9cd\u200d\u2640\ufe0f": {":standing_woman:", ":woman_standing:"}, + "\U0001f9cd\u200d\u2642\ufe0f": {":man_standing:", ":standing_man:"}, + "\U0001f9ce": {":kneeling_person:", ":person_kneeling:"}, + "\U0001f9ce\u200d\u2640\ufe0f": {":kneeling_woman:", ":woman_kneeling:"}, + "\U0001f9ce\u200d\u2642\ufe0f": {":kneeling_man:", ":man_kneeling:"}, + "\U0001f9cf": {":deaf_person:"}, + "\U0001f9cf\u200d\u2640\ufe0f": {":deaf_woman:"}, + "\U0001f9cf\u200d\u2642\ufe0f": {":deaf_man:"}, + "\U0001f9d0": {":monocle_face:", ":face_with_monocle:"}, + "\U0001f9d1": {":adult:", ":person:"}, + "\U0001f9d1\U0001f3fb": {":adult_tone1:"}, + "\U0001f9d1\U0001f3fc": {":adult_tone2:"}, + "\U0001f9d1\U0001f3fd": {":adult_tone3:"}, + "\U0001f9d1\U0001f3fe": {":adult_tone4:"}, + "\U0001f9d1\U0001f3ff": {":adult_tone5:"}, + "\U0001f9d1\u200d\U0001f33e": {":farmer:"}, + "\U0001f9d1\u200d\U0001f373": {":cook:"}, + "\U0001f9d1\u200d\U0001f37c": {":person_feeding_baby:"}, + "\U0001f9d1\u200d\U0001f384": {":mx_claus:"}, + "\U0001f9d1\u200d\U0001f393": {":student:"}, + "\U0001f9d1\u200d\U0001f3a4": {":singer:"}, + "\U0001f9d1\u200d\U0001f3a8": {":artist:"}, + "\U0001f9d1\u200d\U0001f3eb": {":teacher:"}, + "\U0001f9d1\u200d\U0001f3ed": {":factory_worker:"}, + "\U0001f9d1\u200d\U0001f4bb": {":technologist:"}, + "\U0001f9d1\u200d\U0001f4bc": {":office_worker:"}, + "\U0001f9d1\u200d\U0001f527": {":mechanic:"}, + "\U0001f9d1\u200d\U0001f52c": {":scientist:"}, + "\U0001f9d1\u200d\U0001f680": {":astronaut:"}, + "\U0001f9d1\u200d\U0001f692": {":firefighter:"}, + "\U0001f9d1\u200d\U0001f91d\u200d\U0001f9d1": {":people_holding_hands:"}, + "\U0001f9d1\u200d\U0001f9af": {":person_with_white_cane:", ":person_with_probing_cane:"}, + "\U0001f9d1\u200d\U0001f9b0": {":person_red_hair:", ":red_haired_person:"}, + "\U0001f9d1\u200d\U0001f9b1": {":person_curly_hair:", ":curly_haired_person:"}, + "\U0001f9d1\u200d\U0001f9b2": {":bald_person:", ":person_bald:"}, + "\U0001f9d1\u200d\U0001f9b3": {":person_white_hair:", ":white_haired_person:"}, + "\U0001f9d1\u200d\U0001f9bc": {":person_in_motorized_wheelchair:"}, + "\U0001f9d1\u200d\U0001f9bd": {":person_in_manual_wheelchair:"}, + "\U0001f9d1\u200d\u2695\ufe0f": {":health_worker:"}, + "\U0001f9d1\u200d\u2696\ufe0f": {":judge:"}, + "\U0001f9d1\u200d\u2708\ufe0f": {":pilot:"}, + "\U0001f9d2": {":child:"}, + "\U0001f9d2\U0001f3fb": {":child_tone1:"}, + "\U0001f9d2\U0001f3fc": {":child_tone2:"}, + "\U0001f9d2\U0001f3fd": {":child_tone3:"}, + "\U0001f9d2\U0001f3fe": {":child_tone4:"}, + "\U0001f9d2\U0001f3ff": {":child_tone5:"}, + "\U0001f9d3": {":older_adult:", ":older_person:"}, + "\U0001f9d3\U0001f3fb": {":older_adult_tone1:"}, + "\U0001f9d3\U0001f3fc": {":older_adult_tone2:"}, + "\U0001f9d3\U0001f3fd": {":older_adult_tone3:"}, + "\U0001f9d3\U0001f3fe": {":older_adult_tone4:"}, + "\U0001f9d3\U0001f3ff": {":older_adult_tone5:"}, + "\U0001f9d4": {":person_beard:", ":bearded_person:"}, + "\U0001f9d4\U0001f3fb": {":bearded_person_tone1:"}, + "\U0001f9d4\U0001f3fc": {":bearded_person_tone2:"}, + "\U0001f9d4\U0001f3fd": {":bearded_person_tone3:"}, + "\U0001f9d4\U0001f3fe": {":bearded_person_tone4:"}, + "\U0001f9d4\U0001f3ff": {":bearded_person_tone5:"}, + "\U0001f9d4\u200d\u2640\ufe0f": {":woman_beard:"}, + "\U0001f9d4\u200d\u2642\ufe0f": {":man_beard:"}, + "\U0001f9d5": {":woman_with_headscarf:", ":person_with_headscarf:"}, + "\U0001f9d5\U0001f3fb": {":woman_with_headscarf_tone1:"}, + "\U0001f9d5\U0001f3fc": {":woman_with_headscarf_tone2:"}, + "\U0001f9d5\U0001f3fd": {":woman_with_headscarf_tone3:"}, + "\U0001f9d5\U0001f3fe": {":woman_with_headscarf_tone4:"}, + "\U0001f9d5\U0001f3ff": {":woman_with_headscarf_tone5:"}, + "\U0001f9d6": {":sauna_person:"}, + "\U0001f9d6\U0001f3fb": {":person_in_steamy_room_tone1:"}, + "\U0001f9d6\U0001f3fb\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone1:"}, + "\U0001f9d6\U0001f3fb\u200d\u2642\ufe0f": {":man_in_steamy_room_tone1:"}, + "\U0001f9d6\U0001f3fc": {":person_in_steamy_room_tone2:"}, + "\U0001f9d6\U0001f3fc\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone2:"}, + "\U0001f9d6\U0001f3fc\u200d\u2642\ufe0f": {":man_in_steamy_room_tone2:"}, + "\U0001f9d6\U0001f3fd": {":person_in_steamy_room_tone3:"}, + "\U0001f9d6\U0001f3fd\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone3:"}, + "\U0001f9d6\U0001f3fd\u200d\u2642\ufe0f": {":man_in_steamy_room_tone3:"}, + "\U0001f9d6\U0001f3fe": {":person_in_steamy_room_tone4:"}, + "\U0001f9d6\U0001f3fe\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone4:"}, + "\U0001f9d6\U0001f3fe\u200d\u2642\ufe0f": {":man_in_steamy_room_tone4:"}, + "\U0001f9d6\U0001f3ff": {":person_in_steamy_room_tone5:"}, + "\U0001f9d6\U0001f3ff\u200d\u2640\ufe0f": {":woman_in_steamy_room_tone5:"}, + "\U0001f9d6\U0001f3ff\u200d\u2642\ufe0f": {":man_in_steamy_room_tone5:"}, + "\U0001f9d6\u200d\u2640\ufe0f": {":sauna_woman:", ":woman_in_steamy_room:"}, + "\U0001f9d6\u200d\u2642\ufe0f": {":sauna_man:", ":man_in_steamy_room:", ":person_in_steamy_room:"}, + "\U0001f9d7": {":climbing:"}, + "\U0001f9d7\U0001f3fb": {":person_climbing_tone1:"}, + "\U0001f9d7\U0001f3fb\u200d\u2640\ufe0f": {":woman_climbing_tone1:"}, + "\U0001f9d7\U0001f3fb\u200d\u2642\ufe0f": {":man_climbing_tone1:"}, + "\U0001f9d7\U0001f3fc": {":person_climbing_tone2:"}, + "\U0001f9d7\U0001f3fc\u200d\u2640\ufe0f": {":woman_climbing_tone2:"}, + "\U0001f9d7\U0001f3fc\u200d\u2642\ufe0f": {":man_climbing_tone2:"}, + "\U0001f9d7\U0001f3fd": {":person_climbing_tone3:"}, + "\U0001f9d7\U0001f3fd\u200d\u2640\ufe0f": {":woman_climbing_tone3:"}, + "\U0001f9d7\U0001f3fd\u200d\u2642\ufe0f": {":man_climbing_tone3:"}, + "\U0001f9d7\U0001f3fe": {":person_climbing_tone4:"}, + "\U0001f9d7\U0001f3fe\u200d\u2640\ufe0f": {":woman_climbing_tone4:"}, + "\U0001f9d7\U0001f3fe\u200d\u2642\ufe0f": {":man_climbing_tone4:"}, + "\U0001f9d7\U0001f3ff": {":person_climbing_tone5:"}, + "\U0001f9d7\U0001f3ff\u200d\u2640\ufe0f": {":woman_climbing_tone5:"}, + "\U0001f9d7\U0001f3ff\u200d\u2642\ufe0f": {":man_climbing_tone5:"}, + "\U0001f9d7\u200d\u2640\ufe0f": {":climbing_woman:", ":woman_climbing:", ":person_climbing:"}, + "\U0001f9d7\u200d\u2642\ufe0f": {":climbing_man:", ":man_climbing:"}, + "\U0001f9d8": {":lotus_position:"}, + "\U0001f9d8\U0001f3fb": {":person_in_lotus_position_tone1:"}, + "\U0001f9d8\U0001f3fb\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone1:"}, + "\U0001f9d8\U0001f3fb\u200d\u2642\ufe0f": {":man_in_lotus_position_tone1:"}, + "\U0001f9d8\U0001f3fc": {":person_in_lotus_position_tone2:"}, + "\U0001f9d8\U0001f3fc\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone2:"}, + "\U0001f9d8\U0001f3fc\u200d\u2642\ufe0f": {":man_in_lotus_position_tone2:"}, + "\U0001f9d8\U0001f3fd": {":person_in_lotus_position_tone3:"}, + "\U0001f9d8\U0001f3fd\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone3:"}, + "\U0001f9d8\U0001f3fd\u200d\u2642\ufe0f": {":man_in_lotus_position_tone3:"}, + "\U0001f9d8\U0001f3fe": {":person_in_lotus_position_tone4:"}, + "\U0001f9d8\U0001f3fe\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone4:"}, + "\U0001f9d8\U0001f3fe\u200d\u2642\ufe0f": {":man_in_lotus_position_tone4:"}, + "\U0001f9d8\U0001f3ff": {":person_in_lotus_position_tone5:"}, + "\U0001f9d8\U0001f3ff\u200d\u2640\ufe0f": {":woman_in_lotus_position_tone5:"}, + "\U0001f9d8\U0001f3ff\u200d\u2642\ufe0f": {":man_in_lotus_position_tone5:"}, + "\U0001f9d8\u200d\u2640\ufe0f": {":lotus_position_woman:", ":woman_in_lotus_position:", ":person_in_lotus_position:"}, + "\U0001f9d8\u200d\u2642\ufe0f": {":lotus_position_man:", ":man_in_lotus_position:"}, + "\U0001f9d9\U0001f3fb": {":mage_tone1:"}, + "\U0001f9d9\U0001f3fb\u200d\u2640\ufe0f": {":woman_mage_tone1:"}, + "\U0001f9d9\U0001f3fb\u200d\u2642\ufe0f": {":man_mage_tone1:"}, + "\U0001f9d9\U0001f3fc": {":mage_tone2:"}, + "\U0001f9d9\U0001f3fc\u200d\u2640\ufe0f": {":woman_mage_tone2:"}, + "\U0001f9d9\U0001f3fc\u200d\u2642\ufe0f": {":man_mage_tone2:"}, + "\U0001f9d9\U0001f3fd": {":mage_tone3:"}, + "\U0001f9d9\U0001f3fd\u200d\u2640\ufe0f": {":woman_mage_tone3:"}, + "\U0001f9d9\U0001f3fd\u200d\u2642\ufe0f": {":man_mage_tone3:"}, + "\U0001f9d9\U0001f3fe": {":mage_tone4:"}, + "\U0001f9d9\U0001f3fe\u200d\u2640\ufe0f": {":woman_mage_tone4:"}, + "\U0001f9d9\U0001f3fe\u200d\u2642\ufe0f": {":man_mage_tone4:"}, + "\U0001f9d9\U0001f3ff": {":mage_tone5:"}, + "\U0001f9d9\U0001f3ff\u200d\u2640\ufe0f": {":woman_mage_tone5:"}, + "\U0001f9d9\U0001f3ff\u200d\u2642\ufe0f": {":man_mage_tone5:"}, + "\U0001f9d9\u200d\u2640\ufe0f": {":mage:", ":mage_woman:", ":woman_mage:", ":female_mage:"}, + "\U0001f9d9\u200d\u2642\ufe0f": {":mage_man:", ":man_mage:", ":male_mage:"}, + "\U0001f9da\U0001f3fb": {":fairy_tone1:"}, + "\U0001f9da\U0001f3fb\u200d\u2640\ufe0f": {":woman_fairy_tone1:"}, + "\U0001f9da\U0001f3fb\u200d\u2642\ufe0f": {":man_fairy_tone1:"}, + "\U0001f9da\U0001f3fc": {":fairy_tone2:"}, + "\U0001f9da\U0001f3fc\u200d\u2640\ufe0f": {":woman_fairy_tone2:"}, + "\U0001f9da\U0001f3fc\u200d\u2642\ufe0f": {":man_fairy_tone2:"}, + "\U0001f9da\U0001f3fd": {":fairy_tone3:"}, + "\U0001f9da\U0001f3fd\u200d\u2640\ufe0f": {":woman_fairy_tone3:"}, + "\U0001f9da\U0001f3fd\u200d\u2642\ufe0f": {":man_fairy_tone3:"}, + "\U0001f9da\U0001f3fe": {":fairy_tone4:"}, + "\U0001f9da\U0001f3fe\u200d\u2640\ufe0f": {":woman_fairy_tone4:"}, + "\U0001f9da\U0001f3fe\u200d\u2642\ufe0f": {":man_fairy_tone4:"}, + "\U0001f9da\U0001f3ff": {":fairy_tone5:"}, + "\U0001f9da\U0001f3ff\u200d\u2640\ufe0f": {":woman_fairy_tone5:"}, + "\U0001f9da\U0001f3ff\u200d\u2642\ufe0f": {":man_fairy_tone5:"}, + "\U0001f9da\u200d\u2640\ufe0f": {":fairy:", ":fairy_woman:", ":woman_fairy:", ":female_fairy:"}, + "\U0001f9da\u200d\u2642\ufe0f": {":fairy_man:", ":man_fairy:", ":male_fairy:"}, + "\U0001f9db\U0001f3fb": {":vampire_tone1:"}, + "\U0001f9db\U0001f3fb\u200d\u2640\ufe0f": {":woman_vampire_tone1:"}, + "\U0001f9db\U0001f3fb\u200d\u2642\ufe0f": {":man_vampire_tone1:"}, + "\U0001f9db\U0001f3fc": {":vampire_tone2:"}, + "\U0001f9db\U0001f3fc\u200d\u2640\ufe0f": {":woman_vampire_tone2:"}, + "\U0001f9db\U0001f3fc\u200d\u2642\ufe0f": {":man_vampire_tone2:"}, + "\U0001f9db\U0001f3fd": {":vampire_tone3:"}, + "\U0001f9db\U0001f3fd\u200d\u2640\ufe0f": {":woman_vampire_tone3:"}, + "\U0001f9db\U0001f3fd\u200d\u2642\ufe0f": {":man_vampire_tone3:"}, + "\U0001f9db\U0001f3fe": {":vampire_tone4:"}, + "\U0001f9db\U0001f3fe\u200d\u2640\ufe0f": {":woman_vampire_tone4:"}, + "\U0001f9db\U0001f3fe\u200d\u2642\ufe0f": {":man_vampire_tone4:"}, + "\U0001f9db\U0001f3ff": {":vampire_tone5:"}, + "\U0001f9db\U0001f3ff\u200d\u2640\ufe0f": {":woman_vampire_tone5:"}, + "\U0001f9db\U0001f3ff\u200d\u2642\ufe0f": {":man_vampire_tone5:"}, + "\U0001f9db\u200d\u2640\ufe0f": {":vampire:", ":vampire_woman:", ":woman_vampire:", ":female_vampire:"}, + "\U0001f9db\u200d\u2642\ufe0f": {":man_vampire:", ":vampire_man:", ":male_vampire:"}, + "\U0001f9dc\U0001f3fb": {":merperson_tone1:"}, + "\U0001f9dc\U0001f3fb\u200d\u2640\ufe0f": {":mermaid_tone1:"}, + "\U0001f9dc\U0001f3fb\u200d\u2642\ufe0f": {":merman_tone1:"}, + "\U0001f9dc\U0001f3fc": {":merperson_tone2:"}, + "\U0001f9dc\U0001f3fc\u200d\u2640\ufe0f": {":mermaid_tone2:"}, + "\U0001f9dc\U0001f3fc\u200d\u2642\ufe0f": {":merman_tone2:"}, + "\U0001f9dc\U0001f3fd": {":merperson_tone3:"}, + "\U0001f9dc\U0001f3fd\u200d\u2640\ufe0f": {":mermaid_tone3:"}, + "\U0001f9dc\U0001f3fd\u200d\u2642\ufe0f": {":merman_tone3:"}, + "\U0001f9dc\U0001f3fe": {":merperson_tone4:"}, + "\U0001f9dc\U0001f3fe\u200d\u2640\ufe0f": {":mermaid_tone4:"}, + "\U0001f9dc\U0001f3fe\u200d\u2642\ufe0f": {":merman_tone4:"}, + "\U0001f9dc\U0001f3ff": {":merperson_tone5:"}, + "\U0001f9dc\U0001f3ff\u200d\u2640\ufe0f": {":mermaid_tone5:"}, + "\U0001f9dc\U0001f3ff\u200d\u2642\ufe0f": {":merman_tone5:"}, + "\U0001f9dc\u200d\u2640\ufe0f": {":mermaid:"}, + "\U0001f9dc\u200d\u2642\ufe0f": {":merman:", ":merperson:"}, + "\U0001f9dd\U0001f3fb": {":elf_tone1:"}, + "\U0001f9dd\U0001f3fb\u200d\u2640\ufe0f": {":woman_elf_tone1:"}, + "\U0001f9dd\U0001f3fb\u200d\u2642\ufe0f": {":man_elf_tone1:"}, + "\U0001f9dd\U0001f3fc": {":elf_tone2:"}, + "\U0001f9dd\U0001f3fc\u200d\u2640\ufe0f": {":woman_elf_tone2:"}, + "\U0001f9dd\U0001f3fc\u200d\u2642\ufe0f": {":man_elf_tone2:"}, + "\U0001f9dd\U0001f3fd": {":elf_tone3:"}, + "\U0001f9dd\U0001f3fd\u200d\u2640\ufe0f": {":woman_elf_tone3:"}, + "\U0001f9dd\U0001f3fd\u200d\u2642\ufe0f": {":man_elf_tone3:"}, + "\U0001f9dd\U0001f3fe": {":elf_tone4:"}, + "\U0001f9dd\U0001f3fe\u200d\u2640\ufe0f": {":woman_elf_tone4:"}, + "\U0001f9dd\U0001f3fe\u200d\u2642\ufe0f": {":man_elf_tone4:"}, + "\U0001f9dd\U0001f3ff": {":elf_tone5:"}, + "\U0001f9dd\U0001f3ff\u200d\u2640\ufe0f": {":woman_elf_tone5:"}, + "\U0001f9dd\U0001f3ff\u200d\u2642\ufe0f": {":man_elf_tone5:"}, + "\U0001f9dd\u200d\u2640\ufe0f": {":elf_woman:", ":woman_elf:", ":female_elf:"}, + "\U0001f9dd\u200d\u2642\ufe0f": {":elf:", ":elf_man:", ":man_elf:", ":male_elf:"}, + "\U0001f9de\u200d\u2640\ufe0f": {":genie_woman:", ":woman_genie:", ":female_genie:"}, + "\U0001f9de\u200d\u2642\ufe0f": {":genie:", ":genie_man:", ":man_genie:", ":male_genie:"}, + "\U0001f9df\u200d\u2640\ufe0f": {":woman_zombie:", ":zombie_woman:", ":female_zombie:"}, + "\U0001f9df\u200d\u2642\ufe0f": {":zombie:", ":man_zombie:", ":zombie_man:", ":male_zombie:"}, + "\U0001f9e0": {":brain:"}, + "\U0001f9e1": {":orange_heart:"}, + "\U0001f9e2": {":billed_cap:"}, + "\U0001f9e3": {":scarf:"}, + "\U0001f9e4": {":gloves:"}, + "\U0001f9e5": {":coat:"}, + "\U0001f9e6": {":socks:"}, + "\U0001f9e7": {":red_envelope:"}, + "\U0001f9e8": {":firecracker:"}, + "\U0001f9e9": {":jigsaw:", ":puzzle_piece:"}, + "\U0001f9ea": {":test_tube:"}, + "\U0001f9eb": {":petri_dish:"}, + "\U0001f9ec": {":dna:"}, + "\U0001f9ed": {":compass:"}, + "\U0001f9ee": {":abacus:"}, + "\U0001f9ef": {":fire_extinguisher:"}, + "\U0001f9f0": {":toolbox:"}, + "\U0001f9f1": {":brick:", ":bricks:"}, + "\U0001f9f2": {":magnet:"}, + "\U0001f9f3": {":luggage:"}, + "\U0001f9f4": {":lotion_bottle:"}, + "\U0001f9f5": {":thread:"}, + "\U0001f9f6": {":yarn:"}, + "\U0001f9f7": {":safety_pin:"}, + "\U0001f9f8": {":teddy_bear:"}, + "\U0001f9f9": {":broom:"}, + "\U0001f9fa": {":basket:"}, + "\U0001f9fb": {":roll_of_paper:"}, + "\U0001f9fc": {":soap:"}, + "\U0001f9fd": {":sponge:"}, + "\U0001f9fe": {":receipt:"}, + "\U0001f9ff": {":nazar_amulet:"}, + "\U0001fa70": {":ballet_shoes:"}, + "\U0001fa71": {":one-piece_swimsuit:", ":one_piece_swimsuit:"}, + "\U0001fa72": {":briefs:", ":swim_brief:"}, + "\U0001fa73": {":shorts:"}, + "\U0001fa74": {":thong_sandal:"}, + "\U0001fa78": {":drop_of_blood:"}, + "\U0001fa79": {":adhesive_bandage:"}, + "\U0001fa7a": {":stethoscope:"}, + "\U0001fa80": {":yo-yo:", ":yo_yo:"}, + "\U0001fa81": {":kite:"}, + "\U0001fa82": {":parachute:"}, + "\U0001fa83": {":boomerang:"}, + "\U0001fa84": {":magic_wand:"}, + "\U0001fa85": {":pinata:", ":piñata:"}, + "\U0001fa86": {":nesting_dolls:"}, + "\U0001fa90": {":ringed_planet:"}, + "\U0001fa91": {":chair:"}, + "\U0001fa92": {":razor:"}, + "\U0001fa93": {":axe:"}, + "\U0001fa94": {":diya_lamp:"}, + "\U0001fa95": {":banjo:"}, + "\U0001fa96": {":military_helmet:"}, + "\U0001fa97": {":accordion:"}, + "\U0001fa98": {":long_drum:"}, + "\U0001fa99": {":coin:"}, + "\U0001fa9a": {":carpentry_saw:"}, + "\U0001fa9b": {":screwdriver:"}, + "\U0001fa9c": {":ladder:"}, + "\U0001fa9d": {":hook:"}, + "\U0001fa9e": {":mirror:"}, + "\U0001fa9f": {":window:"}, + "\U0001faa0": {":plunger:"}, + "\U0001faa1": {":sewing_needle:"}, + "\U0001faa2": {":knot:"}, + "\U0001faa3": {":bucket:"}, + "\U0001faa4": {":mouse_trap:"}, + "\U0001faa5": {":toothbrush:"}, + "\U0001faa6": {":headstone:"}, + "\U0001faa7": {":placard:"}, + "\U0001faa8": {":rock:"}, + "\U0001fab0": {":fly:"}, + "\U0001fab1": {":worm:"}, + "\U0001fab2": {":beetle:"}, + "\U0001fab3": {":cockroach:"}, + "\U0001fab4": {":potted_plant:"}, + "\U0001fab5": {":wood:"}, + "\U0001fab6": {":feather:"}, + "\U0001fac0": {":anatomical_heart:"}, + "\U0001fac1": {":lungs:"}, + "\U0001fac2": {":people_hugging:"}, + "\U0001fad0": {":blueberries:"}, + "\U0001fad1": {":bell_pepper:"}, + "\U0001fad2": {":olive:"}, + "\U0001fad3": {":flatbread:"}, + "\U0001fad4": {":tamale:"}, + "\U0001fad5": {":fondue:"}, + "\U0001fad6": {":teapot:"}, + "\u00a9\ufe0f": {":copyright:"}, + "\u00ae\ufe0f": {":registered:"}, + "\u203c": {":double_exclamation_mark:"}, + "\u203c\ufe0f": {":bangbang:"}, + "\u2049": {":exclamation_question_mark:"}, + "\u2049\ufe0f": {":interrobang:"}, + "\u2122": {":trade_mark:"}, + "\u2122\ufe0f": {":tm:"}, + "\u2139": {":information:"}, + "\u2139\ufe0f": {":information_source:"}, + "\u2194": {":left-right_arrow:"}, + "\u2194\ufe0f": {":left_right_arrow:"}, + "\u2195": {":up-down_arrow:"}, + "\u2195\ufe0f": {":arrow_up_down:"}, + "\u2196": {":up-left_arrow:"}, + "\u2196\ufe0f": {":arrow_upper_left:"}, + "\u2197": {":up-right_arrow:"}, + "\u2197\ufe0f": {":arrow_upper_right:"}, + "\u2198": {":down-right_arrow:"}, + "\u2198\ufe0f": {":arrow_lower_right:"}, + "\u2199": {":down-left_arrow:"}, + "\u2199\ufe0f": {":arrow_lower_left:"}, + "\u21a9": {":right_arrow_curving_left:"}, + "\u21a9\ufe0f": {":leftwards_arrow_with_hook:"}, + "\u21aa": {":left_arrow_curving_right:"}, + "\u21aa\ufe0f": {":arrow_right_hook:"}, + "\u231a": {":watch:"}, + "\u231b": {":hourglass:", ":hourglass_done:"}, + "\u2328\ufe0f": {":keyboard:"}, + "\u23cf": {":eject_button:"}, + "\u23cf\ufe0f": {":eject:"}, + "\u23e9": {":fast_forward:", ":fast-forward_button:"}, + "\u23ea": {":rewind:", ":fast_reverse_button:"}, + "\u23eb": {":fast_up_button:", ":arrow_double_up:"}, + "\u23ec": {":fast_down_button:", ":arrow_double_down:"}, + "\u23ed": {":track_next:", ":next_track_button:"}, + "\u23ed\ufe0f": {":black_right_pointing_double_triangle_with_vertical_bar:"}, + "\u23ee": {":track_previous:", ":last_track_button:"}, + "\u23ee\ufe0f": {":previous_track_button:", ":black_left_pointing_double_triangle_with_vertical_bar:"}, + "\u23ef": {":play_pause:", ":play_or_pause_button:"}, + "\u23ef\ufe0f": {":black_right_pointing_triangle_with_double_vertical_bar:"}, + "\u23f0": {":alarm_clock:"}, + "\u23f1\ufe0f": {":stopwatch:"}, + "\u23f2": {":timer:"}, + "\u23f2\ufe0f": {":timer_clock:"}, + "\u23f3": {":hourglass_not_done:", ":hourglass_flowing_sand:"}, + "\u23f8": {":pause_button:"}, + "\u23f8\ufe0f": {":double_vertical_bar:"}, + "\u23f9": {":stop_button:"}, + "\u23f9\ufe0f": {":black_square_for_stop:"}, + "\u23fa": {":record_button:"}, + "\u23fa\ufe0f": {":black_circle_for_record:"}, + "\u24c2": {":circled_M:"}, + "\u24dc\ufe0f": {":m:"}, + "\u25aa\ufe0f": {":black_small_square:"}, + "\u25ab\ufe0f": {":white_small_square:"}, + "\u25b6": {":play_button:"}, + "\u25b6\ufe0f": {":arrow_forward:"}, + "\u25c0": {":reverse_button:"}, + "\u25c0\ufe0f": {":arrow_backward:"}, + "\u25fb\ufe0f": {":white_medium_square:"}, + "\u25fc\ufe0f": {":black_medium_square:"}, + "\u25fd": {":white_medium-small_square:", ":white_medium_small_square:"}, + "\u25fe": {":black_medium-small_square:", ":black_medium_small_square:"}, + "\u2600": {":sun:"}, + "\u2600\ufe0f": {":sunny:"}, + "\u2601\ufe0f": {":cloud:"}, + "\u2602": {":umbrella2:"}, + "\u2602\ufe0f": {":umbrella:", ":open_umbrella:"}, + "\u2603": {":snowman2:"}, + "\u2603\ufe0f": {":snowman:", ":snowman_with_snow:"}, + "\u2604\ufe0f": {":comet:"}, + "\u260e": {":telephone:"}, + "\u260e\ufe0f": {":phone:"}, + "\u2611": {":check_box_with_check:"}, + "\u2611\ufe0f": {":ballot_box_with_check:"}, + "\u2614": {":umbrella_with_rain_drops:"}, + "\u2615": {":coffee:", ":hot_beverage:"}, + "\u2618\ufe0f": {":shamrock:"}, + "\u261d": {":index_pointing_up:"}, + "\u261d\U0001f3fb": {":point_up_tone1:"}, + "\u261d\U0001f3fc": {":point_up_tone2:"}, + "\u261d\U0001f3fd": {":point_up_tone3:"}, + "\u261d\U0001f3fe": {":point_up_tone4:"}, + "\u261d\U0001f3ff": {":point_up_tone5:"}, + "\u261d\ufe0f": {":point_up:"}, + "\u2620": {":skull_crossbones:"}, + "\u2620\ufe0f": {":skull_and_crossbones:"}, + "\u2622": {":radioactive:"}, + "\u2622\ufe0f": {":radioactive_sign:"}, + "\u2623": {":biohazard:"}, + "\u2623\ufe0f": {":biohazard_sign:"}, + "\u2626\ufe0f": {":orthodox_cross:"}, + "\u262a\ufe0f": {":star_and_crescent:"}, + "\u262e": {":peace:"}, + "\u262e\ufe0f": {":peace_symbol:"}, + "\u262f\ufe0f": {":yin_yang:"}, + "\u2638\ufe0f": {":wheel_of_dharma:"}, + "\u2639": {":frowning2:", ":frowning_face:"}, + "\u2639\ufe0f": {":white_frowning_face:"}, + "\u263a": {":smiling_face:"}, + "\u263a\ufe0f": {":relaxed:"}, + "\u2640\ufe0f": {":female_sign:"}, + "\u2642\ufe0f": {":male_sign:"}, + "\u2648": {":Aries:", ":aries:"}, + "\u2649": {":Taurus:", ":taurus:"}, + "\u264a": {":Gemini:", ":gemini:"}, + "\u264b": {":Cancer:", ":cancer:"}, + "\u264c": {":Leo:", ":leo:"}, + "\u264d": {":Virgo:", ":virgo:"}, + "\u264e": {":Libra:", ":libra:"}, + "\u264f": {":Scorpio:", ":scorpius:"}, + "\u2650": {":Sagittarius:", ":sagittarius:"}, + "\u2651": {":Capricorn:", ":capricorn:"}, + "\u2652": {":Aquarius:", ":aquarius:"}, + "\u2653": {":Pisces:", ":pisces:"}, + "\u265f\ufe0f": {":chess_pawn:"}, + "\u2660": {":spade_suit:"}, + "\u2660\ufe0f": {":spades:"}, + "\u2663": {":club_suit:"}, + "\u2663\ufe0f": {":clubs:"}, + "\u2665": {":heart_suit:"}, + "\u2665\ufe0f": {":hearts:"}, + "\u2666": {":diamond_suit:"}, + "\u2666\ufe0f": {":diamonds:"}, + "\u2668": {":hot_springs:"}, + "\u2668\ufe0f": {":hotsprings:"}, + "\u267b": {":recycling_symbol:"}, + "\u267b\ufe0f": {":recycle:"}, + "\u267e\ufe0f": {":infinity:"}, + "\u267f": {":wheelchair:", ":wheelchair_symbol:"}, + "\u2692": {":hammer_pick:"}, + "\u2692\ufe0f": {":hammer_and_pick:"}, + "\u2693": {":anchor:"}, + "\u2694\ufe0f": {":crossed_swords:"}, + "\u2695\ufe0f": {":medical_symbol:"}, + "\u2696": {":balance_scale:"}, + "\u2696\ufe0f": {":scales:"}, + "\u2697\ufe0f": {":alembic:"}, + "\u2699\ufe0f": {":gear:"}, + "\u269b": {":atom:"}, + "\u269b\ufe0f": {":atom_symbol:"}, + "\u269c": {":fleur-de-lis:"}, + "\u269c\ufe0f": {":fleur_de_lis:"}, + "\u26a0\ufe0f": {":warning:"}, + "\u26a1": {":zap:", ":high_voltage:"}, + "\u26a7\ufe0f": {":transgender_symbol:"}, + "\u26aa": {":white_circle:"}, + "\u26ab": {":black_circle:"}, + "\u26b0\ufe0f": {":coffin:"}, + "\u26b1": {":urn:"}, + "\u26b1\ufe0f": {":funeral_urn:"}, + "\u26bd": {":soccer:", ":soccer_ball:"}, + "\u26be": {":baseball:"}, + "\u26c4": {":snowman_without_snow:"}, + "\u26c5": {":partly_sunny:", ":sun_behind_cloud:"}, + "\u26c8": {":thunder_cloud_rain:", ":cloud_with_lightning_and_rain:"}, + "\u26c8\ufe0f": {":thunder_cloud_and_rain:"}, + "\u26ce": {":Ophiuchus:", ":ophiuchus:"}, + "\u26cf\ufe0f": {":pick:"}, + "\u26d1": {":helmet_with_cross:", ":rescue_worker’s_helmet:"}, + "\u26d1\ufe0f": {":rescue_worker_helmet:", ":helmet_with_white_cross:"}, + "\u26d3\ufe0f": {":chains:"}, + "\u26d4": {":no_entry:"}, + "\u26e9\ufe0f": {":shinto_shrine:"}, + "\u26ea": {":church:"}, + "\u26f0\ufe0f": {":mountain:"}, + "\u26f1": {":beach_umbrella:"}, + "\u26f1\ufe0f": {":parasol_on_ground:", ":umbrella_on_ground:"}, + "\u26f2": {":fountain:"}, + "\u26f3": {":golf:", ":flag_in_hole:"}, + "\u26f4\ufe0f": {":ferry:"}, + "\u26f5": {":boat:", ":sailboat:"}, + "\u26f7\ufe0f": {":skier:"}, + "\u26f8\ufe0f": {":ice_skate:"}, + "\u26f9": {":person_bouncing_ball:"}, + "\u26f9\U0001f3fb": {":person_bouncing_ball_tone1:"}, + "\u26f9\U0001f3fb\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone1:"}, + "\u26f9\U0001f3fb\u200d\u2642\ufe0f": {":man_bouncing_ball_tone1:"}, + "\u26f9\U0001f3fc": {":person_bouncing_ball_tone2:"}, + "\u26f9\U0001f3fc\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone2:"}, + "\u26f9\U0001f3fc\u200d\u2642\ufe0f": {":man_bouncing_ball_tone2:"}, + "\u26f9\U0001f3fd": {":person_bouncing_ball_tone3:"}, + "\u26f9\U0001f3fd\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone3:"}, + "\u26f9\U0001f3fd\u200d\u2642\ufe0f": {":man_bouncing_ball_tone3:"}, + "\u26f9\U0001f3fe": {":person_bouncing_ball_tone4:"}, + "\u26f9\U0001f3fe\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone4:"}, + "\u26f9\U0001f3fe\u200d\u2642\ufe0f": {":man_bouncing_ball_tone4:"}, + "\u26f9\U0001f3ff": {":person_bouncing_ball_tone5:"}, + "\u26f9\U0001f3ff\u200d\u2640\ufe0f": {":woman_bouncing_ball_tone5:"}, + "\u26f9\U0001f3ff\u200d\u2642\ufe0f": {":man_bouncing_ball_tone5:"}, + "\u26f9\ufe0f": {":bouncing_ball_person:"}, + "\u26f9\ufe0f\u200d\u2640\ufe0f": {":basketball_woman:", ":bouncing_ball_woman:", ":woman-bouncing-ball:", ":woman_bouncing_ball:"}, + "\u26f9\ufe0f\u200d\u2642\ufe0f": {":basketball_man:", ":person_with_ball:", ":bouncing_ball_man:", ":man-bouncing-ball:", ":man_bouncing_ball:"}, + "\u26fa": {":tent:"}, + "\u26fd": {":fuelpump:", ":fuel_pump:"}, + "\u2702\ufe0f": {":scissors:"}, + "\u2705": {":white_check_mark:", ":check_mark_button:"}, + "\u2708\ufe0f": {":airplane:"}, + "\u2709": {":envelope:"}, + "\u2709\ufe0f": {":email:"}, + "\u270a": {":fist:", ":fist_raised:", ":raised_fist:"}, + "\u270a\U0001f3fb": {":fist_tone1:"}, + "\u270a\U0001f3fc": {":fist_tone2:"}, + "\u270a\U0001f3fd": {":fist_tone3:"}, + "\u270a\U0001f3fe": {":fist_tone4:"}, + "\u270a\U0001f3ff": {":fist_tone5:"}, + "\u270b": {":hand:", ":raised_hand:"}, + "\u270b\U0001f3fb": {":raised_hand_tone1:"}, + "\u270b\U0001f3fc": {":raised_hand_tone2:"}, + "\u270b\U0001f3fd": {":raised_hand_tone3:"}, + "\u270b\U0001f3fe": {":raised_hand_tone4:"}, + "\u270b\U0001f3ff": {":raised_hand_tone5:"}, + "\u270c": {":victory_hand:"}, + "\u270c\U0001f3fb": {":v_tone1:"}, + "\u270c\U0001f3fc": {":v_tone2:"}, + "\u270c\U0001f3fd": {":v_tone3:"}, + "\u270c\U0001f3fe": {":v_tone4:"}, + "\u270c\U0001f3ff": {":v_tone5:"}, + "\u270c\ufe0f": {":v:"}, + "\u270d\U0001f3fb": {":writing_hand_tone1:"}, + "\u270d\U0001f3fc": {":writing_hand_tone2:"}, + "\u270d\U0001f3fd": {":writing_hand_tone3:"}, + "\u270d\U0001f3fe": {":writing_hand_tone4:"}, + "\u270d\U0001f3ff": {":writing_hand_tone5:"}, + "\u270d\ufe0f": {":writing_hand:"}, + "\u270f": {":pencil:"}, + "\u270f\ufe0f": {":pencil2:"}, + "\u2712\ufe0f": {":black_nib:"}, + "\u2714": {":check_mark:"}, + "\u2714\ufe0f": {":heavy_check_mark:"}, + "\u2716": {":multiply:"}, + "\u2716\ufe0f": {":heavy_multiplication_x:"}, + "\u271d": {":cross:"}, + "\u271d\ufe0f": {":latin_cross:"}, + "\u2721": {":star_of_David:"}, + "\u2721\ufe0f": {":star_of_david:"}, + "\u2728": {":sparkles:"}, + "\u2733": {":eight-spoked_asterisk:"}, + "\u2733\ufe0f": {":eight_spoked_asterisk:"}, + "\u2734": {":eight-pointed_star:"}, + "\u2734\ufe0f": {":eight_pointed_black_star:"}, + "\u2744\ufe0f": {":snowflake:"}, + "\u2747\ufe0f": {":sparkle:"}, + "\u274c": {":x:", ":cross_mark:"}, + "\u274e": {":cross_mark_button:", ":negative_squared_cross_mark:"}, + "\u2753": {":question:", ":red_question_mark:"}, + "\u2754": {":grey_question:", ":white_question_mark:"}, + "\u2755": {":grey_exclamation:", ":white_exclamation_mark:"}, + "\u2757": {":exclamation:", ":red_exclamation_mark:", ":heavy_exclamation_mark:"}, + "\u2763": {":heart_exclamation:"}, + "\u2763\ufe0f": {":heavy_heart_exclamation:", ":heavy_heart_exclamation_mark_ornament:"}, + "\u2764": {":red_heart:"}, + "\u2764\ufe0f": {":heart:"}, + "\u2764\ufe0f\u200d\U0001f525": {":heart_on_fire:"}, + "\u2764\ufe0f\u200d\U0001fa79": {":mending_heart:"}, + "\u2795": {":plus:", ":heavy_plus_sign:"}, + "\u2796": {":minus:", ":heavy_minus_sign:"}, + "\u2797": {":divide:", ":heavy_division_sign:"}, + "\u27a1": {":right_arrow:"}, + "\u27a1\ufe0f": {":arrow_right:"}, + "\u27b0": {":curly_loop:"}, + "\u27bf": {":loop:", ":double_curly_loop:"}, + "\u2934": {":right_arrow_curving_up:"}, + "\u2934\ufe0f": {":arrow_heading_up:"}, + "\u2935": {":right_arrow_curving_down:"}, + "\u2935\ufe0f": {":arrow_heading_down:"}, + "\u2b05": {":left_arrow:"}, + "\u2b05\ufe0f": {":arrow_left:"}, + "\u2b06": {":up_arrow:"}, + "\u2b06\ufe0f": {":arrow_up:"}, + "\u2b07": {":down_arrow:"}, + "\u2b07\ufe0f": {":arrow_down:"}, + "\u2b1b": {":black_large_square:"}, + "\u2b1c": {":white_large_square:"}, + "\u2b50": {":star:"}, + "\u2b55": {":o:", ":hollow_red_circle:"}, + "\u3030\ufe0f": {":wavy_dash:"}, + "\u303d\ufe0f": {":part_alternation_mark:"}, + "\u3297": {":Japanese_congratulations_button:"}, + "\u3297\ufe0f": {":congratulations:"}, + "\u3299": {":Japanese_secret_button:"}, + "\u3299\ufe0f": {":secret:"}, + } + }) + return emojiRevCodeMap +} diff --git a/backend/vendor/github.com/kyokomi/emoji/v2/go.mod b/backend/vendor/github.com/kyokomi/emoji/v2/go.mod new file mode 100644 index 00000000..f18dda20 --- /dev/null +++ b/backend/vendor/github.com/kyokomi/emoji/v2/go.mod @@ -0,0 +1,3 @@ +module github.com/kyokomi/emoji/v2 + +go 1.14 diff --git a/backend/vendor/github.com/kyokomi/emoji/wercker.yml b/backend/vendor/github.com/kyokomi/emoji/v2/wercker.yml similarity index 88% rename from backend/vendor/github.com/kyokomi/emoji/wercker.yml rename to backend/vendor/github.com/kyokomi/emoji/v2/wercker.yml index ac583ce4..2c4a6930 100644 --- a/backend/vendor/github.com/kyokomi/emoji/wercker.yml +++ b/backend/vendor/github.com/kyokomi/emoji/v2/wercker.yml @@ -9,7 +9,7 @@ build: name: install tools code: | go get github.com/mattn/goveralls - go get github.com/golangci/golangci-lint/cmd/golangci-lint + GO111MODULE=on go get github.com/golangci/golangci-lint/cmd/golangci-lint - script: name: go get code: | diff --git a/backend/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/backend/vendor/github.com/stretchr/testify/assert/assertion_compare.go index dc200395..41649d26 100644 --- a/backend/vendor/github.com/stretchr/testify/assert/assertion_compare.go +++ b/backend/vendor/github.com/stretchr/testify/assert/assertion_compare.go @@ -13,12 +13,42 @@ const ( compareGreater ) +var ( + intType = reflect.TypeOf(int(1)) + int8Type = reflect.TypeOf(int8(1)) + int16Type = reflect.TypeOf(int16(1)) + int32Type = reflect.TypeOf(int32(1)) + int64Type = reflect.TypeOf(int64(1)) + + uintType = reflect.TypeOf(uint(1)) + uint8Type = reflect.TypeOf(uint8(1)) + uint16Type = reflect.TypeOf(uint16(1)) + uint32Type = reflect.TypeOf(uint32(1)) + uint64Type = reflect.TypeOf(uint64(1)) + + float32Type = reflect.TypeOf(float32(1)) + float64Type = reflect.TypeOf(float64(1)) + + stringType = reflect.TypeOf("") +) + func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { + obj1Value := reflect.ValueOf(obj1) + obj2Value := reflect.ValueOf(obj2) + + // throughout this switch we try and avoid calling .Convert() if possible, + // as this has a pretty big performance impact switch kind { case reflect.Int: { - intobj1 := obj1.(int) - intobj2 := obj2.(int) + intobj1, ok := obj1.(int) + if !ok { + intobj1 = obj1Value.Convert(intType).Interface().(int) + } + intobj2, ok := obj2.(int) + if !ok { + intobj2 = obj2Value.Convert(intType).Interface().(int) + } if intobj1 > intobj2 { return compareGreater, true } @@ -31,8 +61,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int8: { - int8obj1 := obj1.(int8) - int8obj2 := obj2.(int8) + int8obj1, ok := obj1.(int8) + if !ok { + int8obj1 = obj1Value.Convert(int8Type).Interface().(int8) + } + int8obj2, ok := obj2.(int8) + if !ok { + int8obj2 = obj2Value.Convert(int8Type).Interface().(int8) + } if int8obj1 > int8obj2 { return compareGreater, true } @@ -45,8 +81,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int16: { - int16obj1 := obj1.(int16) - int16obj2 := obj2.(int16) + int16obj1, ok := obj1.(int16) + if !ok { + int16obj1 = obj1Value.Convert(int16Type).Interface().(int16) + } + int16obj2, ok := obj2.(int16) + if !ok { + int16obj2 = obj2Value.Convert(int16Type).Interface().(int16) + } if int16obj1 > int16obj2 { return compareGreater, true } @@ -59,8 +101,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int32: { - int32obj1 := obj1.(int32) - int32obj2 := obj2.(int32) + int32obj1, ok := obj1.(int32) + if !ok { + int32obj1 = obj1Value.Convert(int32Type).Interface().(int32) + } + int32obj2, ok := obj2.(int32) + if !ok { + int32obj2 = obj2Value.Convert(int32Type).Interface().(int32) + } if int32obj1 > int32obj2 { return compareGreater, true } @@ -73,8 +121,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int64: { - int64obj1 := obj1.(int64) - int64obj2 := obj2.(int64) + int64obj1, ok := obj1.(int64) + if !ok { + int64obj1 = obj1Value.Convert(int64Type).Interface().(int64) + } + int64obj2, ok := obj2.(int64) + if !ok { + int64obj2 = obj2Value.Convert(int64Type).Interface().(int64) + } if int64obj1 > int64obj2 { return compareGreater, true } @@ -87,8 +141,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint: { - uintobj1 := obj1.(uint) - uintobj2 := obj2.(uint) + uintobj1, ok := obj1.(uint) + if !ok { + uintobj1 = obj1Value.Convert(uintType).Interface().(uint) + } + uintobj2, ok := obj2.(uint) + if !ok { + uintobj2 = obj2Value.Convert(uintType).Interface().(uint) + } if uintobj1 > uintobj2 { return compareGreater, true } @@ -101,8 +161,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint8: { - uint8obj1 := obj1.(uint8) - uint8obj2 := obj2.(uint8) + uint8obj1, ok := obj1.(uint8) + if !ok { + uint8obj1 = obj1Value.Convert(uint8Type).Interface().(uint8) + } + uint8obj2, ok := obj2.(uint8) + if !ok { + uint8obj2 = obj2Value.Convert(uint8Type).Interface().(uint8) + } if uint8obj1 > uint8obj2 { return compareGreater, true } @@ -115,8 +181,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint16: { - uint16obj1 := obj1.(uint16) - uint16obj2 := obj2.(uint16) + uint16obj1, ok := obj1.(uint16) + if !ok { + uint16obj1 = obj1Value.Convert(uint16Type).Interface().(uint16) + } + uint16obj2, ok := obj2.(uint16) + if !ok { + uint16obj2 = obj2Value.Convert(uint16Type).Interface().(uint16) + } if uint16obj1 > uint16obj2 { return compareGreater, true } @@ -129,8 +201,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint32: { - uint32obj1 := obj1.(uint32) - uint32obj2 := obj2.(uint32) + uint32obj1, ok := obj1.(uint32) + if !ok { + uint32obj1 = obj1Value.Convert(uint32Type).Interface().(uint32) + } + uint32obj2, ok := obj2.(uint32) + if !ok { + uint32obj2 = obj2Value.Convert(uint32Type).Interface().(uint32) + } if uint32obj1 > uint32obj2 { return compareGreater, true } @@ -143,8 +221,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint64: { - uint64obj1 := obj1.(uint64) - uint64obj2 := obj2.(uint64) + uint64obj1, ok := obj1.(uint64) + if !ok { + uint64obj1 = obj1Value.Convert(uint64Type).Interface().(uint64) + } + uint64obj2, ok := obj2.(uint64) + if !ok { + uint64obj2 = obj2Value.Convert(uint64Type).Interface().(uint64) + } if uint64obj1 > uint64obj2 { return compareGreater, true } @@ -157,8 +241,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Float32: { - float32obj1 := obj1.(float32) - float32obj2 := obj2.(float32) + float32obj1, ok := obj1.(float32) + if !ok { + float32obj1 = obj1Value.Convert(float32Type).Interface().(float32) + } + float32obj2, ok := obj2.(float32) + if !ok { + float32obj2 = obj2Value.Convert(float32Type).Interface().(float32) + } if float32obj1 > float32obj2 { return compareGreater, true } @@ -171,8 +261,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Float64: { - float64obj1 := obj1.(float64) - float64obj2 := obj2.(float64) + float64obj1, ok := obj1.(float64) + if !ok { + float64obj1 = obj1Value.Convert(float64Type).Interface().(float64) + } + float64obj2, ok := obj2.(float64) + if !ok { + float64obj2 = obj2Value.Convert(float64Type).Interface().(float64) + } if float64obj1 > float64obj2 { return compareGreater, true } @@ -185,8 +281,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.String: { - stringobj1 := obj1.(string) - stringobj2 := obj2.(string) + stringobj1, ok := obj1.(string) + if !ok { + stringobj1 = obj1Value.Convert(stringType).Interface().(string) + } + stringobj2, ok := obj2.(string) + if !ok { + stringobj2 = obj2Value.Convert(stringType).Interface().(string) + } if stringobj1 > stringobj2 { return compareGreater, true } @@ -240,6 +342,24 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter return compareTwoValues(t, e1, e2, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs) } +// Positive asserts that the specified element is positive +// +// assert.Positive(t, 1) +// assert.Positive(t, 1.23) +func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { + zero := reflect.Zero(reflect.TypeOf(e)) + return compareTwoValues(t, e, zero.Interface(), []CompareType{compareGreater}, "\"%v\" is not positive", msgAndArgs) +} + +// Negative asserts that the specified element is negative +// +// assert.Negative(t, -1) +// assert.Negative(t, -1.23) +func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { + zero := reflect.Zero(reflect.TypeOf(e)) + return compareTwoValues(t, e, zero.Interface(), []CompareType{compareLess}, "\"%v\" is not negative", msgAndArgs) +} + func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() diff --git a/backend/vendor/github.com/stretchr/testify/assert/assertion_format.go b/backend/vendor/github.com/stretchr/testify/assert/assertion_format.go index 49370eb1..4dfd1229 100644 --- a/backend/vendor/github.com/stretchr/testify/assert/assertion_format.go +++ b/backend/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -114,6 +114,24 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { return Error(t, err, append([]interface{}{msg}, args...)...) } +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ErrorAs(t, err, target, append([]interface{}{msg}, args...)...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ErrorIs(t, err, target, append([]interface{}{msg}, args...)...) +} + // Eventuallyf asserts that given condition will be met in waitFor time, // periodically checking target function each tick. // @@ -321,6 +339,54 @@ func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsil return InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) } +// IsDecreasingf asserts that the collection is decreasing +// +// assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsDecreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsIncreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasing(t, object, append([]interface{}{msg}, args...)...) +} + // IsTypef asserts that the specified objects are of the same type. func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { @@ -375,6 +441,17 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args . return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...) } +// Negativef asserts that the specified element is negative +// +// assert.Negativef(t, -1, "error message %s", "formatted") +// assert.Negativef(t, -1.23, "error message %s", "formatted") +func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Negative(t, e, append([]interface{}{msg}, args...)...) +} + // Neverf asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -476,6 +553,15 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s return NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...) } +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...) +} + // NotNilf asserts that the specified object is not nil. // // assert.NotNilf(t, err, "error message %s", "formatted") @@ -572,6 +658,17 @@ func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg str return PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...) } +// Positivef asserts that the specified element is positive +// +// assert.Positivef(t, 1, "error message %s", "formatted") +// assert.Positivef(t, 1.23, "error message %s", "formatted") +func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Positive(t, e, append([]interface{}{msg}, args...)...) +} + // Regexpf asserts that a specified regexp matches a string. // // assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") diff --git a/backend/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/backend/vendor/github.com/stretchr/testify/assert/assertion_forward.go index 9db88942..25337a6f 100644 --- a/backend/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/backend/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -204,6 +204,42 @@ func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { return Error(a.t, err, msgAndArgs...) } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorAs(a.t, err, target, msgAndArgs...) +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorAsf(a.t, err, target, msg, args...) +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorIs(a.t, err, target, msgAndArgs...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorIsf(a.t, err, target, msg, args...) +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -631,6 +667,102 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo return InEpsilonf(a.t, expected, actual, epsilon, msg, args...) } +// IsDecreasing asserts that the collection is decreasing +// +// a.IsDecreasing([]int{2, 1, 0}) +// a.IsDecreasing([]float{2, 1}) +// a.IsDecreasing([]string{"b", "a"}) +func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsDecreasing(a.t, object, msgAndArgs...) +} + +// IsDecreasingf asserts that the collection is decreasing +// +// a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +// a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsDecreasingf(a.t, object, msg, args...) +} + +// IsIncreasing asserts that the collection is increasing +// +// a.IsIncreasing([]int{1, 2, 3}) +// a.IsIncreasing([]float{1, 2}) +// a.IsIncreasing([]string{"a", "b"}) +func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsIncreasing(a.t, object, msgAndArgs...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +// a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsIncreasingf(a.t, object, msg, args...) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// a.IsNonDecreasing([]int{1, 1, 2}) +// a.IsNonDecreasing([]float{1, 2}) +// a.IsNonDecreasing([]string{"a", "b"}) +func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasing(a.t, object, msgAndArgs...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasingf(a.t, object, msg, args...) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// a.IsNonIncreasing([]int{2, 1, 1}) +// a.IsNonIncreasing([]float{2, 1}) +// a.IsNonIncreasing([]string{"b", "a"}) +func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasing(a.t, object, msgAndArgs...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasingf(a.t, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { @@ -739,6 +871,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i return Lessf(a.t, e1, e2, msg, args...) } +// Negative asserts that the specified element is negative +// +// a.Negative(-1) +// a.Negative(-1.23) +func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Negative(a.t, e, msgAndArgs...) +} + +// Negativef asserts that the specified element is negative +// +// a.Negativef(-1, "error message %s", "formatted") +// a.Negativef(-1.23, "error message %s", "formatted") +func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Negativef(a.t, e, msg, args...) +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -941,6 +1095,24 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str return NotEqualf(a.t, expected, actual, msg, args...) } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorIs(a.t, err, target, msgAndArgs...) +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorIsf(a.t, err, target, msg, args...) +} + // NotNil asserts that the specified object is not nil. // // a.NotNil(err) @@ -1133,6 +1305,28 @@ func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) b return Panicsf(a.t, f, msg, args...) } +// Positive asserts that the specified element is positive +// +// a.Positive(1) +// a.Positive(1.23) +func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Positive(a.t, e, msgAndArgs...) +} + +// Positivef asserts that the specified element is positive +// +// a.Positivef(1, "error message %s", "formatted") +// a.Positivef(1.23, "error message %s", "formatted") +func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Positivef(a.t, e, msg, args...) +} + // Regexp asserts that a specified regexp matches a string. // // a.Regexp(regexp.MustCompile("start"), "it's starting") diff --git a/backend/vendor/github.com/stretchr/testify/assert/assertion_order.go b/backend/vendor/github.com/stretchr/testify/assert/assertion_order.go new file mode 100644 index 00000000..1c3b4718 --- /dev/null +++ b/backend/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -0,0 +1,81 @@ +package assert + +import ( + "fmt" + "reflect" +) + +// isOrdered checks that collection contains orderable elements. +func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { + objKind := reflect.TypeOf(object).Kind() + if objKind != reflect.Slice && objKind != reflect.Array { + return false + } + + objValue := reflect.ValueOf(object) + objLen := objValue.Len() + + if objLen <= 1 { + return true + } + + value := objValue.Index(0) + valueInterface := value.Interface() + firstValueKind := value.Kind() + + for i := 1; i < objLen; i++ { + prevValue := value + prevValueInterface := valueInterface + + value = objValue.Index(i) + valueInterface = value.Interface() + + compareResult, isComparable := compare(prevValueInterface, valueInterface, firstValueKind) + + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\" and \"%s\"", reflect.TypeOf(value), reflect.TypeOf(prevValue)), msgAndArgs...) + } + + if !containsValue(allowedComparesResults, compareResult) { + return Fail(t, fmt.Sprintf(failMessage, prevValue, value), msgAndArgs...) + } + } + + return true +} + +// IsIncreasing asserts that the collection is increasing +// +// assert.IsIncreasing(t, []int{1, 2, 3}) +// assert.IsIncreasing(t, []float{1, 2}) +// assert.IsIncreasing(t, []string{"a", "b"}) +func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// assert.IsNonIncreasing(t, []int{2, 1, 1}) +// assert.IsNonIncreasing(t, []float{2, 1}) +// assert.IsNonIncreasing(t, []string{"b", "a"}) +func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs) +} + +// IsDecreasing asserts that the collection is decreasing +// +// assert.IsDecreasing(t, []int{2, 1, 0}) +// assert.IsDecreasing(t, []float{2, 1}) +// assert.IsDecreasing(t, []string{"b", "a"}) +func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// assert.IsNonDecreasing(t, []int{1, 1, 2}) +// assert.IsNonDecreasing(t, []float{1, 2}) +// assert.IsNonDecreasing(t, []string{"a", "b"}) +func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs) +} diff --git a/backend/vendor/github.com/stretchr/testify/assert/assertions.go b/backend/vendor/github.com/stretchr/testify/assert/assertions.go index 914a10d8..bcac4401 100644 --- a/backend/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/backend/vendor/github.com/stretchr/testify/assert/assertions.go @@ -172,8 +172,8 @@ func isTest(name, prefix string) bool { if len(name) == len(prefix) { // "Test" is ok return true } - rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) - return !unicode.IsLower(rune) + r, _ := utf8.DecodeRuneInString(name[len(prefix):]) + return !unicode.IsLower(r) } func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { @@ -1622,6 +1622,7 @@ var spewConfig = spew.ConfigState{ DisableCapacities: true, SortKeys: true, DisableMethods: true, + MaxDepth: 10, } type tHelper interface { @@ -1693,3 +1694,81 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D } } } + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if errors.Is(err, target) { + return true + } + + var expectedText string + if target != nil { + expectedText = target.Error() + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Target error should be in err chain:\n"+ + "expected: %q\n"+ + "in chain: %s", expectedText, chain, + ), msgAndArgs...) +} + +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if !errors.Is(err, target) { + return true + } + + var expectedText string + if target != nil { + expectedText = target.Error() + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+ + "found: %q\n"+ + "in chain: %s", expectedText, chain, + ), msgAndArgs...) +} + +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if errors.As(err, target) { + return true + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Should be in error chain:\n"+ + "expected: %q\n"+ + "in chain: %s", target, chain, + ), msgAndArgs...) +} + +func buildErrorChainString(err error) string { + if err == nil { + return "" + } + + e := errors.Unwrap(err) + chain := fmt.Sprintf("%q", err.Error()) + for e != nil { + chain += fmt.Sprintf("\n\t%q", e.Error()) + e = errors.Unwrap(e) + } + return chain +} diff --git a/backend/vendor/github.com/stretchr/testify/mock/mock.go b/backend/vendor/github.com/stretchr/testify/mock/mock.go index c6df4485..e2e6a2d2 100644 --- a/backend/vendor/github.com/stretchr/testify/mock/mock.go +++ b/backend/vendor/github.com/stretchr/testify/mock/mock.go @@ -297,25 +297,52 @@ func (m *Mock) findExpectedCall(method string, arguments ...interface{}) (int, * return -1, expectedCall } +type matchCandidate struct { + call *Call + mismatch string + diffCount int +} + +func (c matchCandidate) isBetterMatchThan(other matchCandidate) bool { + if c.call == nil { + return false + } + if other.call == nil { + return true + } + + if c.diffCount > other.diffCount { + return false + } + if c.diffCount < other.diffCount { + return true + } + + if c.call.Repeatability > 0 && other.call.Repeatability <= 0 { + return true + } + return false +} + func (m *Mock) findClosestCall(method string, arguments ...interface{}) (*Call, string) { - var diffCount int - var closestCall *Call - var err string + var bestMatch matchCandidate for _, call := range m.expectedCalls() { if call.Method == method { errInfo, tempDiffCount := call.Arguments.Diff(arguments) - if tempDiffCount < diffCount || diffCount == 0 { - diffCount = tempDiffCount - closestCall = call - err = errInfo + tempCandidate := matchCandidate{ + call: call, + mismatch: errInfo, + diffCount: tempDiffCount, + } + if tempCandidate.isBetterMatchThan(bestMatch) { + bestMatch = tempCandidate } - } } - return closestCall, err + return bestMatch.call, bestMatch.mismatch } func callString(method string, arguments Arguments, includeArgumentValues bool) string { diff --git a/backend/vendor/github.com/stretchr/testify/require/require.go b/backend/vendor/github.com/stretchr/testify/require/require.go index ec4624b2..51820df2 100644 --- a/backend/vendor/github.com/stretchr/testify/require/require.go +++ b/backend/vendor/github.com/stretchr/testify/require/require.go @@ -256,6 +256,54 @@ func Error(t TestingT, err error, msgAndArgs ...interface{}) { t.FailNow() } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorAs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorAsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorIs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorIsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -806,6 +854,126 @@ func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon fl t.FailNow() } +// IsDecreasing asserts that the collection is decreasing +// +// assert.IsDecreasing(t, []int{2, 1, 0}) +// assert.IsDecreasing(t, []float{2, 1}) +// assert.IsDecreasing(t, []string{"b", "a"}) +func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsDecreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsDecreasingf asserts that the collection is decreasing +// +// assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsDecreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsIncreasing asserts that the collection is increasing +// +// assert.IsIncreasing(t, []int{1, 2, 3}) +// assert.IsIncreasing(t, []float{1, 2}) +// assert.IsIncreasing(t, []string{"a", "b"}) +func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsIncreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsIncreasingf asserts that the collection is increasing +// +// assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsIncreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// assert.IsNonDecreasing(t, []int{1, 1, 2}) +// assert.IsNonDecreasing(t, []float{1, 2}) +// assert.IsNonDecreasing(t, []string{"a", "b"}) +func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonDecreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonDecreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// assert.IsNonIncreasing(t, []int{2, 1, 1}) +// assert.IsNonIncreasing(t, []float{2, 1}) +// assert.IsNonIncreasing(t, []string{"b", "a"}) +func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonIncreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonIncreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + // IsType asserts that the specified objects are of the same type. func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -944,6 +1112,34 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter t.FailNow() } +// Negative asserts that the specified element is negative +// +// assert.Negative(t, -1) +// assert.Negative(t, -1.23) +func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Negative(t, e, msgAndArgs...) { + return + } + t.FailNow() +} + +// Negativef asserts that the specified element is negative +// +// assert.Negativef(t, -1, "error message %s", "formatted") +// assert.Negativef(t, -1.23, "error message %s", "formatted") +func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Negativef(t, e, msg, args...) { + return + } + t.FailNow() +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -1200,6 +1396,30 @@ func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, t.FailNow() } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorIs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorIsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + // NotNil asserts that the specified object is not nil. // // assert.NotNil(t, err) @@ -1446,6 +1666,34 @@ func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{} t.FailNow() } +// Positive asserts that the specified element is positive +// +// assert.Positive(t, 1) +// assert.Positive(t, 1.23) +func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Positive(t, e, msgAndArgs...) { + return + } + t.FailNow() +} + +// Positivef asserts that the specified element is positive +// +// assert.Positivef(t, 1, "error message %s", "formatted") +// assert.Positivef(t, 1.23, "error message %s", "formatted") +func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Positivef(t, e, msg, args...) { + return + } + t.FailNow() +} + // Regexp asserts that a specified regexp matches a string. // // assert.Regexp(t, regexp.MustCompile("start"), "it's starting") diff --git a/backend/vendor/github.com/stretchr/testify/require/require_forward.go b/backend/vendor/github.com/stretchr/testify/require/require_forward.go index 103d7dcb..ed54a9d8 100644 --- a/backend/vendor/github.com/stretchr/testify/require/require_forward.go +++ b/backend/vendor/github.com/stretchr/testify/require/require_forward.go @@ -205,6 +205,42 @@ func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { Error(a.t, err, msgAndArgs...) } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorAs(a.t, err, target, msgAndArgs...) +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorAsf(a.t, err, target, msg, args...) +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorIs(a.t, err, target, msgAndArgs...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorIsf(a.t, err, target, msg, args...) +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -632,6 +668,102 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo InEpsilonf(a.t, expected, actual, epsilon, msg, args...) } +// IsDecreasing asserts that the collection is decreasing +// +// a.IsDecreasing([]int{2, 1, 0}) +// a.IsDecreasing([]float{2, 1}) +// a.IsDecreasing([]string{"b", "a"}) +func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsDecreasing(a.t, object, msgAndArgs...) +} + +// IsDecreasingf asserts that the collection is decreasing +// +// a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +// a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsDecreasingf(a.t, object, msg, args...) +} + +// IsIncreasing asserts that the collection is increasing +// +// a.IsIncreasing([]int{1, 2, 3}) +// a.IsIncreasing([]float{1, 2}) +// a.IsIncreasing([]string{"a", "b"}) +func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsIncreasing(a.t, object, msgAndArgs...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +// a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsIncreasingf(a.t, object, msg, args...) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// a.IsNonDecreasing([]int{1, 1, 2}) +// a.IsNonDecreasing([]float{1, 2}) +// a.IsNonDecreasing([]string{"a", "b"}) +func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonDecreasing(a.t, object, msgAndArgs...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonDecreasingf(a.t, object, msg, args...) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// a.IsNonIncreasing([]int{2, 1, 1}) +// a.IsNonIncreasing([]float{2, 1}) +// a.IsNonIncreasing([]string{"b", "a"}) +func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonIncreasing(a.t, object, msgAndArgs...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonIncreasingf(a.t, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { @@ -740,6 +872,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i Lessf(a.t, e1, e2, msg, args...) } +// Negative asserts that the specified element is negative +// +// a.Negative(-1) +// a.Negative(-1.23) +func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Negative(a.t, e, msgAndArgs...) +} + +// Negativef asserts that the specified element is negative +// +// a.Negativef(-1, "error message %s", "formatted") +// a.Negativef(-1.23, "error message %s", "formatted") +func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Negativef(a.t, e, msg, args...) +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -942,6 +1096,24 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str NotEqualf(a.t, expected, actual, msg, args...) } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorIs(a.t, err, target, msgAndArgs...) +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorIsf(a.t, err, target, msg, args...) +} + // NotNil asserts that the specified object is not nil. // // a.NotNil(err) @@ -1134,6 +1306,28 @@ func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interfa Panicsf(a.t, f, msg, args...) } +// Positive asserts that the specified element is positive +// +// a.Positive(1) +// a.Positive(1.23) +func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Positive(a.t, e, msgAndArgs...) +} + +// Positivef asserts that the specified element is positive +// +// a.Positivef(1, "error message %s", "formatted") +// a.Positivef(1.23, "error message %s", "formatted") +func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Positivef(a.t, e, msg, args...) +} + // Regexp asserts that a specified regexp matches a string. // // a.Regexp(regexp.MustCompile("start"), "it's starting") diff --git a/backend/vendor/golang.org/x/crypto/acme/acme.go b/backend/vendor/golang.org/x/crypto/acme/acme.go index 6e6c9d13..174cfe8b 100644 --- a/backend/vendor/golang.org/x/crypto/acme/acme.go +++ b/backend/vendor/golang.org/x/crypto/acme/acme.go @@ -363,6 +363,10 @@ func AcceptTOS(tosURL string) bool { return true } // Also see Error's Instance field for when a CA requires already registered accounts to agree // to an updated Terms of Service. func (c *Client) Register(ctx context.Context, acct *Account, prompt func(tosURL string) bool) (*Account, error) { + if c.Key == nil { + return nil, errors.New("acme: client.Key must be set to Register") + } + dir, err := c.Discover(ctx) if err != nil { return nil, err diff --git a/backend/vendor/golang.org/x/crypto/acme/autocert/autocert.go b/backend/vendor/golang.org/x/crypto/acme/autocert/autocert.go index 2ea9e231..c7fbc54c 100644 --- a/backend/vendor/golang.org/x/crypto/acme/autocert/autocert.go +++ b/backend/vendor/golang.org/x/crypto/acme/autocert/autocert.go @@ -1133,11 +1133,11 @@ func (s *certState) tlscert() (*tls.Certificate, error) { }, nil } -// certRequest generates a CSR for the given common name cn and optional SANs. -func certRequest(key crypto.Signer, cn string, ext []pkix.Extension, san ...string) ([]byte, error) { +// certRequest generates a CSR for the given common name. +func certRequest(key crypto.Signer, name string, ext []pkix.Extension) ([]byte, error) { req := &x509.CertificateRequest{ - Subject: pkix.Name{CommonName: cn}, - DNSNames: san, + Subject: pkix.Name{CommonName: name}, + DNSNames: []string{name}, ExtraExtensions: ext, } return x509.CreateCertificateRequest(rand.Reader, req, key) diff --git a/backend/vendor/golang.org/x/crypto/acme/jws.go b/backend/vendor/golang.org/x/crypto/acme/jws.go index 76e3fdac..8c3eccec 100644 --- a/backend/vendor/golang.org/x/crypto/acme/jws.go +++ b/backend/vendor/golang.org/x/crypto/acme/jws.go @@ -7,6 +7,7 @@ package acme import ( "crypto" "crypto/ecdsa" + "crypto/hmac" "crypto/rand" "crypto/rsa" "crypto/sha256" @@ -14,6 +15,7 @@ import ( "encoding/asn1" "encoding/base64" "encoding/json" + "errors" "fmt" "math/big" ) @@ -31,6 +33,14 @@ const noKeyID = keyID("") // See https://tools.ietf.org/html/rfc8555#section-6.3 for more details. const noPayload = "" +// jsonWebSignature can be easily serialized into a JWS following +// https://tools.ietf.org/html/rfc7515#section-3.2. +type jsonWebSignature struct { + Protected string `json:"protected"` + Payload string `json:"payload"` + Sig string `json:"signature"` +} + // jwsEncodeJSON signs claimset using provided key and a nonce. // The result is serialized in JSON format containing either kid or jwk // fields based on the provided keyID value. @@ -71,12 +81,7 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid keyID, nonce, ur if err != nil { return nil, err } - - enc := struct { - Protected string `json:"protected"` - Payload string `json:"payload"` - Sig string `json:"signature"` - }{ + enc := jsonWebSignature{ Protected: phead, Payload: payload, Sig: base64.RawURLEncoding.EncodeToString(sig), @@ -84,6 +89,43 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid keyID, nonce, ur return json.Marshal(&enc) } +// jwsWithMAC creates and signs a JWS using the given key and the HS256 +// algorithm. kid and url are included in the protected header. rawPayload +// should not be base64-URL-encoded. +func jwsWithMAC(key []byte, kid, url string, rawPayload []byte) (*jsonWebSignature, error) { + if len(key) == 0 { + return nil, errors.New("acme: cannot sign JWS with an empty MAC key") + } + header := struct { + Algorithm string `json:"alg"` + KID string `json:"kid"` + URL string `json:"url,omitempty"` + }{ + // Only HMAC-SHA256 is supported. + Algorithm: "HS256", + KID: kid, + URL: url, + } + rawProtected, err := json.Marshal(header) + if err != nil { + return nil, err + } + protected := base64.RawURLEncoding.EncodeToString(rawProtected) + payload := base64.RawURLEncoding.EncodeToString(rawPayload) + + h := hmac.New(sha256.New, key) + if _, err := h.Write([]byte(protected + "." + payload)); err != nil { + return nil, err + } + mac := h.Sum(nil) + + return &jsonWebSignature{ + Protected: protected, + Payload: payload, + Sig: base64.RawURLEncoding.EncodeToString(mac), + }, nil +} + // jwkEncode encodes public part of an RSA or ECDSA key into a JWK. // The result is also suitable for creating a JWK thumbprint. // https://tools.ietf.org/html/rfc7517 diff --git a/backend/vendor/golang.org/x/crypto/acme/rfc8555.go b/backend/vendor/golang.org/x/crypto/acme/rfc8555.go index dfb57a66..073cee58 100644 --- a/backend/vendor/golang.org/x/crypto/acme/rfc8555.go +++ b/backend/vendor/golang.org/x/crypto/acme/rfc8555.go @@ -37,22 +37,32 @@ func (c *Client) DeactivateReg(ctx context.Context) error { return nil } -// registerRFC is quivalent to c.Register but for CAs implementing RFC 8555. +// registerRFC is equivalent to c.Register but for CAs implementing RFC 8555. // It expects c.Discover to have already been called. -// TODO: Implement externalAccountBinding. func (c *Client) registerRFC(ctx context.Context, acct *Account, prompt func(tosURL string) bool) (*Account, error) { c.cacheMu.Lock() // guard c.kid access defer c.cacheMu.Unlock() req := struct { - TermsAgreed bool `json:"termsOfServiceAgreed,omitempty"` - Contact []string `json:"contact,omitempty"` + TermsAgreed bool `json:"termsOfServiceAgreed,omitempty"` + Contact []string `json:"contact,omitempty"` + ExternalAccountBinding *jsonWebSignature `json:"externalAccountBinding,omitempty"` }{ Contact: acct.Contact, } if c.dir.Terms != "" { req.TermsAgreed = prompt(c.dir.Terms) } + + // set 'externalAccountBinding' field if requested + if acct.ExternalAccountBinding != nil { + eabJWS, err := c.encodeExternalAccountBinding(acct.ExternalAccountBinding) + if err != nil { + return nil, fmt.Errorf("acme: failed to encode external account binding: %v", err) + } + req.ExternalAccountBinding = eabJWS + } + res, err := c.post(ctx, c.Key, c.dir.RegURL, req, wantStatus( http.StatusOK, // account with this key already registered http.StatusCreated, // new account created @@ -75,7 +85,17 @@ func (c *Client) registerRFC(ctx context.Context, acct *Account, prompt func(tos return a, nil } -// updateGegRFC is equivalent to c.UpdateReg but for CAs implementing RFC 8555. +// encodeExternalAccountBinding will encode an external account binding stanza +// as described in https://tools.ietf.org/html/rfc8555#section-7.3.4. +func (c *Client) encodeExternalAccountBinding(eab *ExternalAccountBinding) (*jsonWebSignature, error) { + jwk, err := jwkEncode(c.Key.Public()) + if err != nil { + return nil, err + } + return jwsWithMAC(eab.Key, eab.KID, c.dir.RegURL, []byte(jwk)) +} + +// updateRegRFC is equivalent to c.UpdateReg but for CAs implementing RFC 8555. // It expects c.Discover to have already been called. func (c *Client) updateRegRFC(ctx context.Context, a *Account) (*Account, error) { url := string(c.accountKID(ctx)) diff --git a/backend/vendor/golang.org/x/crypto/acme/types.go b/backend/vendor/golang.org/x/crypto/acme/types.go index e959cafc..eaae4529 100644 --- a/backend/vendor/golang.org/x/crypto/acme/types.go +++ b/backend/vendor/golang.org/x/crypto/acme/types.go @@ -57,6 +57,32 @@ var ( ErrNoAccount = errors.New("acme: account does not exist") ) +// A Subproblem describes an ACME subproblem as reported in an Error. +type Subproblem struct { + // Type is a URI reference that identifies the problem type, + // typically in a "urn:acme:error:xxx" form. + Type string + // Detail is a human-readable explanation specific to this occurrence of the problem. + Detail string + // Instance indicates a URL that the client should direct a human user to visit + // in order for instructions on how to agree to the updated Terms of Service. + // In such an event CA sets StatusCode to 403, Type to + // "urn:ietf:params:acme:error:userActionRequired", and adds a Link header with relation + // "terms-of-service" containing the latest TOS URL. + Instance string + // Identifier may contain the ACME identifier that the error is for. + Identifier *AuthzID +} + +func (sp Subproblem) String() string { + str := fmt.Sprintf("%s: ", sp.Type) + if sp.Identifier != nil { + str += fmt.Sprintf("[%s: %s] ", sp.Identifier.Type, sp.Identifier.Value) + } + str += sp.Detail + return str +} + // Error is an ACME error, defined in Problem Details for HTTP APIs doc // http://tools.ietf.org/html/draft-ietf-appsawg-http-problem. type Error struct { @@ -76,10 +102,21 @@ type Error struct { // Header is the original server error response headers. // It may be nil. Header http.Header + // Subproblems may contain more detailed information about the individual problems + // that caused the error. This field is only sent by RFC 8555 compatible ACME + // servers. Defined in RFC 8555 Section 6.7.1. + Subproblems []Subproblem } func (e *Error) Error() string { - return fmt.Sprintf("%d %s: %s", e.StatusCode, e.ProblemType, e.Detail) + str := fmt.Sprintf("%d %s: %s", e.StatusCode, e.ProblemType, e.Detail) + if len(e.Subproblems) > 0 { + str += fmt.Sprintf("; subproblems:") + for _, sp := range e.Subproblems { + str += fmt.Sprintf("\n\t%s", sp) + } + } + return str } // AuthorizationError indicates that an authorization for an identifier @@ -199,6 +236,28 @@ type Account struct { // // It is non-RFC 8555 compliant and is obsoleted by OrdersURL. Certificates string + + // ExternalAccountBinding represents an arbitrary binding to an account of + // the CA which the ACME server is tied to. + // See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details. + ExternalAccountBinding *ExternalAccountBinding +} + +// ExternalAccountBinding contains the data needed to form a request with +// an external account binding. +// See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details. +type ExternalAccountBinding struct { + // KID is the Key ID of the symmetric MAC key that the CA provides to + // identify an external account from ACME. + KID string + + // Key is the bytes of the symmetric key that the CA provides to identify + // the account. Key must correspond to the KID. + Key []byte +} + +func (e *ExternalAccountBinding) String() string { + return fmt.Sprintf("&{KID: %q, Key: redacted}", e.KID) } // Directory is ACME server discovery data. @@ -511,20 +570,23 @@ func (c *wireChallenge) challenge() *Challenge { // wireError is a subset of fields of the Problem Details object // as described in https://tools.ietf.org/html/rfc7807#section-3.1. type wireError struct { - Status int - Type string - Detail string - Instance string + Status int + Type string + Detail string + Instance string + Subproblems []Subproblem } func (e *wireError) error(h http.Header) *Error { - return &Error{ + err := &Error{ StatusCode: e.Status, ProblemType: e.Type, Detail: e.Detail, Instance: e.Instance, Header: h, + Subproblems: e.Subproblems, } + return err } // CertOption is an optional argument type for the TLS ChallengeCert methods for diff --git a/backend/vendor/golang.org/x/crypto/acme/version_go112.go b/backend/vendor/golang.org/x/crypto/acme/version_go112.go index b58f2456..b9efdb59 100644 --- a/backend/vendor/golang.org/x/crypto/acme/version_go112.go +++ b/backend/vendor/golang.org/x/crypto/acme/version_go112.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.12 // +build go1.12 package acme diff --git a/backend/vendor/golang.org/x/crypto/ocsp/ocsp.go b/backend/vendor/golang.org/x/crypto/ocsp/ocsp.go index d297ac92..9d3fffa8 100644 --- a/backend/vendor/golang.org/x/crypto/ocsp/ocsp.go +++ b/backend/vendor/golang.org/x/crypto/ocsp/ocsp.go @@ -445,10 +445,18 @@ func ParseRequest(bytes []byte) (*Request, error) { }, nil } -// ParseResponse parses an OCSP response in DER form. It only supports -// responses for a single certificate. If the response contains a certificate -// then the signature over the response is checked. If issuer is not nil then -// it will be used to validate the signature or embedded certificate. +// ParseResponse parses an OCSP response in DER form. The response must contain +// only one certificate status. To parse the status of a specific certificate +// from a response which may contain multiple statuses, use ParseResponseForCert +// instead. +// +// If the response contains an embedded certificate, then that certificate will +// be used to verify the response signature. If the response contains an +// embedded certificate and issuer is not nil, then issuer will be used to verify +// the signature on the embedded certificate. +// +// If the response does not contain an embedded certificate and issuer is not +// nil, then issuer will be used to verify the response signature. // // Invalid responses and parse failures will result in a ParseError. // Error responses will result in a ResponseError. @@ -456,14 +464,11 @@ func ParseResponse(bytes []byte, issuer *x509.Certificate) (*Response, error) { return ParseResponseForCert(bytes, nil, issuer) } -// ParseResponseForCert parses an OCSP response in DER form and searches for a -// Response relating to cert. If such a Response is found and the OCSP response -// contains a certificate then the signature over the response is checked. If -// issuer is not nil then it will be used to validate the signature or embedded -// certificate. -// -// Invalid responses and parse failures will result in a ParseError. -// Error responses will result in a ResponseError. +// ParseResponseForCert acts identically to ParseResponse, except it supports +// parsing responses that contain multiple statuses. If the response contains +// multiple statuses and cert is not nil, then ParseResponseForCert will return +// the first status which contains a matching serial, otherwise it will return an +// error. If cert is nil, then the first status in the response will be returned. func ParseResponseForCert(bytes []byte, cert, issuer *x509.Certificate) (*Response, error) { var resp responseASN1 rest, err := asn1.Unmarshal(bytes, &resp) diff --git a/backend/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/backend/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go index cb0dfbd0..29d44808 100644 --- a/backend/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +++ b/backend/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) -// +build linux,386 linux,arm linux,mips linux,mipsle +//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) +// +build linux,386 linux,arm linux,mips linux,mipsle linux,ppc package unix diff --git a/backend/vendor/golang.org/x/sys/unix/syscall_darwin.go b/backend/vendor/golang.org/x/sys/unix/syscall_darwin.go index 1223d7ae..9945e5f9 100644 --- a/backend/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/backend/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -378,6 +378,17 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return } +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + // GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. // The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { diff --git a/backend/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go new file mode 100644 index 00000000..7e65e088 --- /dev/null +++ b/backend/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -0,0 +1,272 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && ppc +// +build linux +// +build ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +//sys dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint32 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go new file mode 100644 index 00000000..d9530e5f --- /dev/null +++ b/backend/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -0,0 +1,860 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux +// +build ppc,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + NFDBITS = 0x20 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x10000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffff + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPR31 = 0x6e + PT_FPSCR = 0x71 + PT_LNK = 0x24 + PT_MQ = 0x27 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_TRAP = 0x28 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/backend/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go new file mode 100644 index 00000000..927cf1a0 --- /dev/null +++ b/backend/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -0,0 +1,762 @@ +// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc +// +build linux,ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/backend/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go new file mode 100644 index 00000000..7693656a --- /dev/null +++ b/backend/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -0,0 +1,433 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux +// +build ppc,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_FCNTL64 = 204 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_SENDFILE64 = 226 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_FADVISE64_64 = 254 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_FSTATAT64 = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 +) diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index 54db4333..883b64a2 100644 --- a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -221,6 +221,12 @@ type IPMreq struct { Interface [4]byte /* in_addr */ } +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + type IPv6Mreq struct { Multiaddr [16]byte /* in6_addr */ Interface uint32 @@ -272,6 +278,7 @@ const ( SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index eb73e52f..2673e6c5 100644 --- a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -233,6 +233,12 @@ type IPMreq struct { Interface [4]byte /* in_addr */ } +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + type IPv6Mreq struct { Multiaddr [16]byte /* in6_addr */ Interface uint32 @@ -285,6 +291,7 @@ const ( SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 SizeofCmsghdr = 0xc diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 8606d654..eef51338 100644 --- a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -221,6 +221,12 @@ type IPMreq struct { Interface [4]byte /* in_addr */ } +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + type IPv6Mreq struct { Multiaddr [16]byte /* in6_addr */ Interface uint32 @@ -272,6 +278,7 @@ const ( SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c SizeofCmsghdr = 0xc diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index dcb51f84..1465cbcf 100644 --- a/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/backend/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -233,6 +233,12 @@ type IPMreq struct { Interface [4]byte /* in_addr */ } +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + type IPv6Mreq struct { Multiaddr [16]byte /* in6_addr */ Interface uint32 @@ -285,6 +291,7 @@ const ( SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 SizeofCmsghdr = 0xc diff --git a/backend/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/backend/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go new file mode 100644 index 00000000..af7a7201 --- /dev/null +++ b/backend/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -0,0 +1,627 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux +// +build ppc,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint32 + _ uint32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +const ( + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Gpr [32]uint32 + Nip uint32 + Msr uint32 + Orig_gpr3 uint32 + Ctr uint32 + Link uint32 + Xer uint32 + Ccr uint32 + Mq uint32 + Trap uint32 + Dar uint32 + Dsisr uint32 + Result uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]uint8 + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 + Flags uint32 + _ [4]byte +} + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) diff --git a/backend/vendor/modules.txt b/backend/vendor/modules.txt index 9029a349..501dd682 100644 --- a/backend/vendor/modules.txt +++ b/backend/vendor/modules.txt @@ -84,10 +84,13 @@ github.com/didip/tollbooth_chi github.com/dlclark/regexp2 github.com/dlclark/regexp2/syntax # github.com/go-chi/chi v4.1.1+incompatible -## explicit github.com/go-chi/chi github.com/go-chi/chi/middleware -# github.com/go-chi/cors v1.1.1 +# github.com/go-chi/chi/v5 v5.0.2 +## explicit +github.com/go-chi/chi/v5 +github.com/go-chi/chi/v5/middleware +# github.com/go-chi/cors v1.2.0 ## explicit github.com/go-chi/cors # github.com/go-chi/render v1.0.1 @@ -119,7 +122,7 @@ github.com/go-pkgz/lgr ## explicit github.com/go-pkgz/repeater github.com/go-pkgz/repeater/strategy -# github.com/go-pkgz/rest v1.7.0 +# github.com/go-pkgz/rest v1.9.2 ## explicit github.com/go-pkgz/rest github.com/go-pkgz/rest/logger @@ -166,9 +169,9 @@ github.com/klauspost/compress/huff0 github.com/klauspost/compress/snappy github.com/klauspost/compress/zstd github.com/klauspost/compress/zstd/internal/xxhash -# github.com/kyokomi/emoji v2.2.1+incompatible +# github.com/kyokomi/emoji/v2 v2.2.8 ## explicit -github.com/kyokomi/emoji +github.com/kyokomi/emoji/v2 # github.com/microcosm-cc/bluemonday v1.0.9 ## explicit github.com/microcosm-cc/bluemonday @@ -198,7 +201,7 @@ github.com/slack-go/slack/internal/timex github.com/slack-go/slack/slackutilsx # github.com/stretchr/objx v0.1.1 github.com/stretchr/objx -# github.com/stretchr/testify v1.6.1 +# github.com/stretchr/testify v1.7.0 ## explicit github.com/stretchr/testify/assert github.com/stretchr/testify/mock @@ -251,20 +254,20 @@ go.mongodb.org/mongo-driver/x/mongo/driver/wiremessage ## explicit go.uber.org/goleak go.uber.org/goleak/internal/stack -# golang.org/x/crypto v0.0.0-20200406173513-056763e48d71 +# golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b ## explicit golang.org/x/crypto/acme golang.org/x/crypto/acme/autocert golang.org/x/crypto/ocsp golang.org/x/crypto/pbkdf2 -# golang.org/x/image v0.0.0-20200119044424-58c23975cae1 +# golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb ## explicit golang.org/x/image/draw golang.org/x/image/math/f64 # golang.org/x/lint v0.0.0-20190930215403-16217165b5de golang.org/x/lint golang.org/x/lint/golint -# golang.org/x/net v0.0.0-20210421230115-4e50805a0758 +# golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 ## explicit golang.org/x/net/context golang.org/x/net/context/ctxhttp @@ -284,7 +287,7 @@ golang.org/x/oauth2/yandex # golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e golang.org/x/sync/errgroup golang.org/x/sync/semaphore -# golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe +# golang.org/x/sys v0.0.0-20210423082822-04245dca01da golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix # golang.org/x/text v0.3.6