https://www.typescriptlang.org/play?#code/FASwdgLgpgTgZgQwMZQAQBERIgHgOoD2MAJgIwA0qhJATAHyoDewqqA7kcQFxWemoAfXrQDcwAL7BQkWIhSoAElAA2ygtWVlUUAB7QwxAM4YsuAEQALFWrOUzHGJrMNGk4BACeABzRLV6ok0aVABeE2wcS2sCW1R7QOJnMXdvNABJMDhYGChiai0wvzUNLV19I3DccCyYYTJKatg6+hZUAH5m1p4wKAA3WGTPH1QMmpy8zmDC6JLgsqgDY0wIxtr8ilRV5rpWjvyaLtQe-pgRIA
