diff --git a/content/0017_nft_metadata_refresh/cover.jpeg b/content/0017_nft_metadata_refresh/cover.jpeg new file mode 100644 index 0000000..49173c4 Binary files /dev/null and b/content/0017_nft_metadata_refresh/cover.jpeg differ diff --git a/content/0017_nft_metadata_refresh/meta.json b/content/0017_nft_metadata_refresh/meta.json new file mode 100644 index 0000000..d9e00ca --- /dev/null +++ b/content/0017_nft_metadata_refresh/meta.json @@ -0,0 +1,8 @@ +{ + "slug": "nft-metadata-refresh", + "title": "Major Refresh of NFT Images & Metadata for ENS Names", + "description": "We’re pleased to announce we’ve released a new metadata service for ENS names with a major refresh of the NFT images and metadata.", + "date": "2021-10-14", + "tags": [], + "authors": ["brantly.eth"] +} diff --git a/content/0017_nft_metadata_refresh/readme.mdx b/content/0017_nft_metadata_refresh/readme.mdx new file mode 100644 index 0000000..a3b3fa9 --- /dev/null +++ b/content/0017_nft_metadata_refresh/readme.mdx @@ -0,0 +1,79 @@ +# Major Refresh of NFT Images & Metadata for ENS Names + +We’re pleased to announce we’ve released a new metadata service for [ENS names](https://ens.domains/) with a major refresh of the NFT images and metadata. + +This allows a much wider range of data to be displayed, including enabling the user to have some control over it for their name, with more improvements planned for the future. This also allows the community to have input on the NFT metadata for ENS names for the first time, and we want to hear from you! + +## A Brief History + +ENS launched May 4, 2017, before both Curio Cards (May 9, 2017) and CryptoPunks (June 23, 2017). ([Check here to see if your .ETH name is "pre-Punks."](https://medium.com/the-ethereum-name-service/do-you-have-an-og-ens-name-heres-a-new-tool-to-check-2bbe97900ce2)) + +ERC-721 wouldn’t be released until later that year. ENS names were always by definition NFTs, but originally didn’t follow an NFT standard because none existed. + +In May 2019, ENS had a major upgrade, and among the new features was all .ETH names were made ERC-721 compatible NFTs. NFTs were still a niche thing and few wallets or services displayed them. The ENS team thought domain names didn’t need an image, since, unlike an NFT avatar where the image is the main thing, whether or not an ENS name has an NFT image has no effect on its function. So we locked away control of the NFT metadata. This was a mistake in hindsight but wasn’t obvious at the time. + +But early NFT services like OpenSea needed some way to visually display ENS names. So OpenSea created their own metadata and images for .ETH names — the familiar multi-colored images with the name in the middle. + +![](https://cdn-images-1.medium.com/max/800/1*F1rRWItlKE-MWu7qkR8XTQ.png) + +These images that OpenSea created as placeholders for their own website also have showed up in wallets and other services since most grab their NFT metadata from the OpenSea API. + +In the last year or so, the importance of visually seeing your NFTs in your wallet and in services like OpenSea has increased dramatically. If you can’t see it in your collection, it feels like it doesn’t exist! This means the metadata for ENS names is in fact very important. Again, seems obvious in hindsight, but wasn’t in early 2019. + +## New Metadata Service + +So we built EMS, the [ENS Metadata Service](https://github.com/ensdomains/ens-metadata-service). OpenSea has switched to using this metadata for ENS names and is in the process of refreshing the metadata for all ENS names as of this writing. + +_Note that this update has no effect on the ownership of names or their function in ENS. The core functions of ENS remain untouched and decentralized._ + +If your name hasn’t refreshed on OpenSea yet and you can’t wait to see the new design for it, feel free to click the "Refresh metadata" button on the page for your name on OpenSea, wait a few minutes, then refresh the page. + +We encourage other services to draw directly from our metadata service as well. + +This new metadata service accomplishes several important things: + +- **Puts the core ENS team and community in control of the metadata for ENS names for the first time** (see the "New Ideas" section below on how to suggest improvements) +- Refresh of the default image for .ETH names + ![](https://cdn-images-1.medium.com/max/1200/1*SV9wAaslu-wCL8ZJuKkVew.jpeg) + +- If you have an avatar set for your ENS name, the avatar will replace the gradient as the background. This shows how your ENS name isn’t just any NFT but is your cross-platform web3 username and profile. [(Step-by-Step Guide to Setting an NFT as your ENS Profile Avatar)](https://support.ens.domains/en/articles/7883271-how-to-set-an-avatar) + ![](https://cdn-images-1.medium.com/max/800/1*_xkFsem8HJfLIVsk_6LaTw.png) + +- Emoji support in the NFT image (finally!). ENS names have always supported emojis, but the old images didn’t display them correctly. + ![](https://cdn-images-1.medium.com/max/800/1*7p2NkQVpgdQJp4yY3WZ_Mg.png) + +- Showing other data about the ENS name in the NFT image. For example, non-normalized names will have a red background gradient and say that they are invalid to make it more difficult for people to be tricked. With our upcoming L2 options for records and subdomains, the NFT will show if the name is pointing to an L2 and which one. + +![](https://cdn-images-1.medium.com/max/800/1*IbRmyuxbgVUpG9lidSntig.png) +This shows an inval + +![](https://cdn-images-1.medium.com/max/800/1*4bj3w2QMmmUaQYbGVwwsNA.png) + +## The Future + +We will be releasing an upgrade to ENS names soon we call the "[wrapper](https://github.com/ensdomains/name-wrapper)". All newly created ENS names — whether they be .ETH 2LDs, subdomains, or DNS names imported into ENS — will be wrapped by default (with an opt-out available for advanced users). Owners of pre-wrapper names will be encouraged to upgrade their names (will require a transaction with gas unfortunately), but upgrading will always be optional and your name will still work just fine. + +The wrapper will accomplish several important things: + +- It will upgrade ENS names to the ERC-1155 NFT standard +- The NFT metadata fields won’t be locked and instead will point to the ENS metadata service. This means no more relying on OpenSea or other services to have bespoke support for the ENS metadata service; it will work just like normal NFTs. +- _All ENS names — whether they be .ETH names, subdomains, and DNS names imported to ENS — will be NFTs in the same NFT collection and show up on OpenSea, wallets, and other services._ (Currently, only .ETH names follow an NFT standard and show up in the ENS NFT collection.) + +The wrapper will also add better functionality around the creation and management of subdomains, but that’s beyond the scope of this blog post. + +We’re already working on improving the warnings in the metadata about potentially confusing names to make them more targeted. + +**We also would like to eventually provide an on-chain, decentralized metadata option in the future.** This new metadata service is just a first step in improving the metadata for ENS names in general. + +## New Ideas + +With the launch of this new metadata service, if the community wants the metadata refreshed, improved, etc, we now have a way to do that. + +Ideas we’ve had or heard from community members that would be possible to implement in the future include: + +- allowing users to customize the colors of the background gradient +- allowing users to set an image that completely replaces the NFT image (with no overlay of the ENS logo and name), which could enable ENS subdomains to be used to issue NFT artwork +- signaling in some way a name is "pre-Punks" +- marking 3 and 4 character .ETH names in some way given their rarity and higher price + +We want to hear from you on this. If you have ideas for ways the image or metadata can be improved, please share it in our [Discord](https://chat.ens.domains/). diff --git a/content/0018_nft_avatar_support/cover.jpeg b/content/0018_nft_avatar_support/cover.jpeg new file mode 100644 index 0000000..ca59e40 Binary files /dev/null and b/content/0018_nft_avatar_support/cover.jpeg differ diff --git a/content/0018_nft_avatar_support/meta.json b/content/0018_nft_avatar_support/meta.json new file mode 100644 index 0000000..efad2d4 --- /dev/null +++ b/content/0018_nft_avatar_support/meta.json @@ -0,0 +1,8 @@ +{ + "slug": "nft-avatar-support", + "title": "NFT Avatar Support for ENS Profiles", + "description": "We’re pleased to announce ENS now supports NFT avatars for your ENS profile.", + "date": "2021-10-08", + "tags": [], + "authors": ["brantly.eth"] +} diff --git a/content/0018_nft_avatar_support/readme.mdx b/content/0018_nft_avatar_support/readme.mdx new file mode 100644 index 0000000..e50720b --- /dev/null +++ b/content/0018_nft_avatar_support/readme.mdx @@ -0,0 +1,32 @@ +We’re pleased to announce ENS now supports NFT avatars for your ENS profile. + +What this means is you can now set an NFT you own as the avatar of your ENS profile, and dapps can then display it alongside your ENS name. [Read the spec here](https://gist.github.com/Arachnid/9db60bd75277969ee1689c8742b75182). + +**At launch, this feature is supported by [Uniswap](https://app.uniswap.org/) and [1inch](https://app.1inch.io/)**, in addition to the ENS Manager App itself. A big thanks to the team at Metaphor (more on them below) who took the lead on getting this integrated. We look forward to many more dapps integrating support for this over the next few weeks and months. + +→ [Step-by-Step Guide to Setting an NFT as your ENS Profile Avatar](https://support.ens.domains/en/articles/7883271-how-to-set-an-avatar) + +![](https://cdn-images-1.medium.com/max/800/1*dlmBS7dyU9WJ-dLlK8WLfg.png) +app.uniswap.org + +![](https://cdn-images-1.medium.com/max/800/1*Y1a__Oep5ym9LqDFnco2CQ.png) +app.1inch.io + +![](https://cdn-images-1.medium.com/max/800/1*yJEu66D7h6ojvZT-jpTFEw.png) +app.ens.domains + +## Want to add avatar support to your dapp? + +We want this to be ubiquitous! + +First off, does your dapp already have ENS username support? This means that you grab the ENS name in the Ethereum account’s reverse record and use that as their cross-platform username. Here’s our [docs on how to implement](https://docs.ens.domains/dapp-developer-guide/resolving-names#reverse-resolution) (pretty straightforward). + +Next is avatar support. Once you’ve done reverse resolution to grab the user’s ENS name for their username, you can then grab info from that name’s records, such as their avatar. You can [read the ENS avatar spec and implement yourself](https://gist.github.com/Arachnid/9db60bd75277969ee1689c8742b75182), or use Metaphor’s [Davatar library](https://www.npmjs.com/package/@davatar/react). + +## Special thanks to Metaphor + +Metaphor took up the effort to get this feature over the finish line and getting it integrated in services. Thank you! + +Founded by [gail.eth](https://twitter.com/gaildewilson) and [carlosdp.eth](https://twitter.com/the_carlosdp), Metaphor is building tools for DAOs with the underlying mission to make decentralized connection fun and accessible for everyone. DM them on Twitter or join their Discord if you’d like to connect. + +→ [Step-by-Step Guide to Setting an NFT as your ENS Profile Avatar](https://support.ens.domains/en/articles/7883271-how-to-set-an-avatar) diff --git a/content/0019_eth_vs_dns/cover.png b/content/0019_eth_vs_dns/cover.png new file mode 100644 index 0000000..cb25973 Binary files /dev/null and b/content/0019_eth_vs_dns/cover.png differ diff --git a/content/0019_eth_vs_dns/meta.json b/content/0019_eth_vs_dns/meta.json new file mode 100644 index 0000000..631375f --- /dev/null +++ b/content/0019_eth_vs_dns/meta.json @@ -0,0 +1,8 @@ +{ + "slug": "how-eth-names-compare-to-imported-dns-names", + "title": "How .ETH Names Compare to DNS Names Imported to ENS", + "description": ".ETH names and DNS names imported to ENS have many of the same capabilities but also have some important differences.", + "date": "2021-08-26", + "tags": [], + "authors": ["brantly.eth"] +} diff --git a/content/0019_eth_vs_dns/readme.mdx b/content/0019_eth_vs_dns/readme.mdx new file mode 100644 index 0000000..3f93fad --- /dev/null +++ b/content/0019_eth_vs_dns/readme.mdx @@ -0,0 +1,49 @@ +.ETH names and DNS names imported to ENS have many of the same capabilities but also have some important differences. + +→ [Step-by-Step Guide to Registering a .ETH Name](https://support.ens.domains/en/articles/7882582-how-to-register) + +→ [Step-by-Step Guide to Importing a DNS Domain Name to ENS](https://support.ens.domains/en/articles/7882690-claim-your-dns-name) + +Here’s an overview of how they compare. + +## Fees + +.ETH names have a cost scaled to time registered required by the ENS protocol: $5/year (paid in ETH) for .ETH names that are 5 characters or longer, $160/year for 4 characters, and $640/year for 3 characters (1–2 character .ETH names are not available for registration). + +DNS names imported to ENS have no ENS protocol fee at all. + +This is because the fees for .ETH names are an anti-squatting mechanism, and DNS names imported to ENS already have a fee on the DNS side. As a non-profit public good, the ENS protocol is optimized for usability, not revenue generation. + +## Records + +Both .ETH names and DNS names on ENS support the same records. + +## Reverse record / Web3 username + +Both kinds of names can be used as your portable web3 username by setting it as your reverse record (go to [app.ens.domains](http://app.ens.domains/) > My Account). + +## Decentralized Websites + +Although both kinds of names support the Content record, most services that support accessing ENS-based decentralized websites only support them for .ETH names. This may change in the future. + +## Security + +The two kinds of names have different security models. + +Because .ETH names are native to ENS, ENS is the only source of truth for who owns a particular one, and no admin powers exist in ENS to take away a user’s .ETH name. + +Such admin powers _do_ ultimately exist, however, for DNS names on ENS. Because whoever owns the name on DNS can always claim the corresponding name on ENS, the ultimate security of a DNS name on ENS depends on the security of the name on DNS. + +Further, while the [ENS root keyholders](https://ens.domains/about#about-root) have locked the .ETH TLD (so that they no longer control it), they have not done this for any DNS TLDs on ENS. While it is unlikely, this means that it would be possible for the ENS root keyholders to take control of a DNS TLD, and thus any of its 2LDs, on ENS. + +## Transferability + +Ownership of .ETH names can be transferred easily from one Ethereum account to another simply by sending the name as an NFT. + +DNS names on ENS, however, can only be transferred if the DNS name’s TXT record is first changed to the new Ethereum address. This is because the ultimate source of truth for who owns a DNS name on ENS is on DNS. + +## NFT standards + +All .ETH names are ERC721 compliant NFTs. However, DNS names on ENS do not currently follow any NFT standard and so won’t show up in the NFT section of your wallet. + +However, we plan to release a wrapper later this year that will allow users to turn their DNS names on ENS into ERC1155 NFTs (the wrapper will also be available for .ETH names). diff --git a/content/0020_dns_on_mainnet/cover.jpeg b/content/0020_dns_on_mainnet/cover.jpeg new file mode 100644 index 0000000..033bd7a Binary files /dev/null and b/content/0020_dns_on_mainnet/cover.jpeg differ diff --git a/content/0020_dns_on_mainnet/meta.json b/content/0020_dns_on_mainnet/meta.json new file mode 100644 index 0000000..c87a2e1 --- /dev/null +++ b/content/0020_dns_on_mainnet/meta.json @@ -0,0 +1,8 @@ +{ + "slug": "full-dns-namespace-integration-to-ens-now-on-mainnet", + "title": "Full DNS Namespace Integration to ENS Now on Mainnet", + "description": "We’re pleased to announce that full DNS namespace integration for ENS is now live on Ethereum mainnet.", + "date": "2021-08-26", + "tags": [], + "authors": ["brantly.eth"] +} diff --git a/content/0020_dns_on_mainnet/readme.mdx b/content/0020_dns_on_mainnet/readme.mdx new file mode 100644 index 0000000..4e017bb --- /dev/null +++ b/content/0020_dns_on_mainnet/readme.mdx @@ -0,0 +1,44 @@ +We’re pleased to announce that full DNS namespace integration for [ENS](http://ens.domains/) is now live on Ethereum mainnet. + +This enables the owner of a DNS second-level domain name (a DNS name with one dot in it) to import the same name for use on ENS. + +For example, if you own "example.com" on DNS, you can import it into ENS — as example**.com**, not example**.eth**, the latter is a separate name. You can then set ENS records for it, e.g. to allow you to receive payments in cryptocurrencies like ETH, BTC, and DOGE to example.com. + +→ [Step-by-Step Guide to Importing a DNS Domain Name to ENS](https://support.ens.domains/en/articles/7882690-claim-your-dns-name) + +→ [How .ETH Names Compare to DNS Names Imported to ENS](/post/how-eth-names-compare-to-imported-dns-names) + +![](https://cdn-images-1.medium.com/max/800/1*qrHaSxSSQmdxFT6qfG-G3g.jpeg) +Sending ETH to brantlymillegan.com in the MetaMask browser extension + +## A Long Road + +Those who have been following ENS for a while know that this has been a long time in the making, to say the least! + +While ENS launched in May 2017 only supporting the ENS-native TLD .ETH, ENS has always been capable in principle of supporting more TLDs. To expand the namespace on ENS, we’ve [decided against simply creating additional ENS-native TLDs](https://medium.com/the-ethereum-name-service/why-ens-doesnt-create-more-tlds-responsible-citizenship-in-the-global-namespace-7e66658fe2b1) and in favor of integrating the existing DNS namespace. We think this approach is best for users and gives ENS the best chances for long-term success. + +This plan was [first announced](https://medium.com/the-ethereum-name-service/how-to-claim-your-dns-domain-on-ens-e600ef2d92ca) by ENS creator and lead developer Nick Johnson at Devcon3 back in November 2017, with steady progress over the last ~4 years (e.g., see [here](https://medium.com/the-ethereum-name-service/announcing-support-for-xyz-on-ens-7f5bc7fe1b24), [here](https://medium.com/@weka/introducing-luxe-on-ens-35a9ee2383ce), [here](https://medium.com/the-ethereum-name-service/upcoming-changes-to-the-ens-root-a1b78fd52b38), [here](https://medium.com/the-ethereum-name-service/ens-kred-major-integration-of-dns-and-ens-launches-e7efb4dd872a), [here](https://medium.com/the-ethereum-name-service/dns-namespace-integration-on-testnet-ethereum-classic-labs-sponsors-with-grant-19d57bf16a8b)). + +This new rollout is an expansion of what [has long been possible with .XYZ names on ENS](https://medium.com/the-ethereum-name-service/announcing-support-for-xyz-on-ens-7f5bc7fe1b24). + +![](https://cdn-images-1.medium.com/max/800/1*3ItFJTl2yiglAKX9o5fwSw.jpeg) +Sending BTC to brantlymillegan.com in Trust Wallet + +## A Big Thanks + +We received generous grants from both the Ethereum Foundation and [ETC Labs](https://medium.com/the-ethereum-name-service/dns-namespace-integration-on-testnet-ethereum-classic-labs-sponsors-with-grant-19d57bf16a8b) for this feature. A big thanks to both of them! + +ENS is an [open source protocol](https://ens.domains/about) developed by the non-profit organization True Names TLD, and funding has mostly come from grants thus far. + +## The Future + +This is just the beginning of a much bigger vision for ENS. + +While ENS started as only .ETH names for Ethereum addresses, it has grown to be a full-fledged extension of DNS, functioning in parallel and enabling a whole new set of use cases: a portable web3 username and profile, payments in any cryptocurrency, and decentralized websites. Stay tuned! + +![](https://cdn-images-1.medium.com/max/800/1*xWBh1vk-YT6AKvFXRg8-mw.png) +An example of a .COM name imported from DNS to ENS used as a web3 username via reverse resolution. + +## Try it out! + +Our [Step-by-Step Guide to Importing a DNS Domain Name to ENS](https://support.ens.domains/en/articles/7882690-claim-your-dns-name) will walk you through the process. diff --git a/content/0021_200_integrations/cover.jpeg b/content/0021_200_integrations/cover.jpeg new file mode 100644 index 0000000..280977c Binary files /dev/null and b/content/0021_200_integrations/cover.jpeg differ diff --git a/content/0021_200_integrations/meta.json b/content/0021_200_integrations/meta.json new file mode 100644 index 0000000..d15146f --- /dev/null +++ b/content/0021_200_integrations/meta.json @@ -0,0 +1,8 @@ +{ + "slug": "200-integrations", + "title": "+200 Integrations: What This Milestone Means & How You Can Integrate ENS", + "description": "We’re pleased to announce the Ethereum Name Service (ENS) is now integrated in more than 200 services!", + "date": "2021-04-13", + "tags": [], + "authors": ["brantly.eth"] +} diff --git a/content/0021_200_integrations/readme.mdx b/content/0021_200_integrations/readme.mdx new file mode 100644 index 0000000..cfcbc8e --- /dev/null +++ b/content/0021_200_integrations/readme.mdx @@ -0,0 +1,42 @@ +We’re pleased to announce the [Ethereum Name Service](https://ens.domains/) (ENS) is now integrated in more than 200 services! + +You can see the full list of integrations in the "[ENS Ecosystem](https://ens.domains/#home-ecosystem)" section of [our website](https://ens.domains/). There are also screenshots of that section as of this writing at the end of this post. + +![](https://cdn-images-1.medium.com/max/800/1*P9WQ5F0ubT5PMGq9bnXvRg.png) + +For ENS to be the most useful for users, it needs to be ubiquitous, and this is a big step toward that goal. We are grateful to the ecosystem for the support. A wide range of kinds of services are represented in these integrations, from wallets and browsers to defi dapps, NFT markets, and even DNS registrars. + +ENS is the leading blockchain-based Internet naming protocol. It supports [all the top blockchains for payments](https://medium.com/the-ethereum-name-service/ens-now-supports-109-blockchain-addresses-5307ce5d2106), [decentralized websites](https://medium.com/the-ethereum-name-service/all-the-ways-you-can-surf-the-decentralized-web-today-bf8e7a42fa27), personal profile info, and even [custom records](https://medium.com/the-ethereum-name-service/new-custom-text-records-means-every-project-can-have-its-own-ens-record-a68022bb8f86). The top level domain .ETH is native to ENS, but you can also import traditional DNS domain names you already have (currently works with .XYZ and a few others, with the rest of the DNS namespace coming soon). + +2020 was [a big year for ENS](https://medium.com/the-ethereum-name-service/2020-retrospective-for-ens-7c5364142560), and we have big plans for the future: [using L2s to scale](https://twitter.com/ensdomains/status/1379831561084878849), [full DNS namespace integration](/post/full-dns-namespace-integration-to-ens-now-on-mainnets), a redesign of the Manager App, and more. + +## Your dapp isn’t finished without ENS + +We still need more integrations! The more services that have ENS integrated, the more valuable it is for all services to have ENS, and more useful it is for users. ENS is not a nice-to-have, it’s basic UX. + +If your service doesn’t have ENS yet, [here’s our docs](https://docs.ens.domains/). ENS is in [all the top libraries](https://docs.ens.domains/dapp-developer-guide/ens-libraries), so integrating is pretty simple. Feel free to ask questions in [our Discord](https://chat.ens.domains/). + +There are many ways to utilize ENS in your service to improve UX, but here are the main ways: + +- **Forward Resolution**: In any place where a user needs to paste in a cryptocurrency address (remember we support [all the top cryptocurrency addresses](https://github.com/ensdomains/address-encoder)), also allow them to type in an ENS name. + ![](https://cdn-images-1.medium.com/max/800/1*g26NaxBYgh1StF4nB15hXg.png) + Forward resolution on myetherwallet.com + +- **Usernames**: When a user logs into a dapp with their wallet, the dapp has their Ethereum address. You can do what’s called reverse resolution and see if there’s an ENS name associated with that Ethereum address, and then display the ENS name instead of the Ethereum address. + ![](https://cdn-images-1.medium.com/max/800/1*-ffBcCxUBDcm92k_A9tKPQ.png) + Reverse resolution on app.uniswap.org + +- **Ease of reading**: Does your service rank Ethereum users or show the activity of Ethereum addresses? Use reverse resolution there too to make it more readable. + ![](https://cdn-images-1.medium.com/max/800/1*wp4iJIFe6CvUJ0h_aaLFwg.png) + Voting on snapshot.org + +- **Dweb**: Want to decentralize your frontend? You can [host it on IPFS and point at it with ENS](https://medium.com/the-ethereum-name-service/cloudflare-and-fleek-make-ens-ipfs-site-deployment-as-easy-as-ever-262c990a7514). Your users have a [wide range of ways to access such websites](https://medium.com/the-ethereum-name-service/all-the-ways-you-can-surf-the-decentralized-web-today-bf8e7a42fa27), the easiest being just appending ".LINK" to the end, e.g. [almonit.eth.link](https://almonit.eth.link/#/). + ![](https://cdn-images-1.medium.com/max/800/1*fXZSv8KqzfD4Jzrn7emtvg.png) + +## Current Integrations + +Below are screenshots of the "[ENS Ecosystem](https://ens.domains/#home-ecosystem)" section on our website as of this writing. On [our website](https://ens.domains/#home-ecosystem), each icon is clickable to that project’s website. + +![](https://cdn-images-1.medium.com/max/800/1*-tj2aD-4BX31Ce_gYIaV2Q.png) +![](https://cdn-images-1.medium.com/max/800/1*BF3FsqYXGtQgcr2kTUr1mQ.png) +![](https://cdn-images-1.medium.com/max/800/1*i7WVrE5SC9NWcJXpJNy1qQ.png)