Created
April 7, 2024 10:33
-
-
Save tombailey/d49a11a185b8ecd5833fd1f2b547ae00 to your computer and use it in GitHub Desktop.
kotlin script to use GCP TTS/STT via HTTP/1.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.net.URI | |
import java.net.http.HttpClient | |
import java.net.http.HttpRequest | |
import java.net.http.HttpResponse | |
import java.time.Duration | |
val client = HttpClient.newBuilder() | |
// force http1.1 | |
.version(HttpClient.Version.HTTP_1_1) | |
.followRedirects(HttpClient.Redirect.NORMAL) | |
.build() | |
// TODO: set api key | |
val gcpApiKey = "YOUR_API_KEY_HERE" | |
fun speechToTextExample(): HttpResponse<String> { | |
// OpenAI's fable "The library is a quiet place." sample | |
val fableLibraryAudio = "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Sq1VTDHmHIQQSkmptUoxxpyDEEIpKbWWOecchBBKSSml1jLmnIMQQikppdRaByGEEEopJaXWWusghBBCKaWk1FprIYQQSimlpJRaizGEEEIppaSSUmsxllJKSSmllFJrLcZSSikppZRSS63FmFJKKaXWWmstxhhTSiml1FprscUYY2qttdZaizHGGGtNrbXWWosxxhhjrQUAABw4AAAEGEEnGVUWYaMJFx6AQkNWBABRAACAMYgxxBhyjkHIoETOMQmZhMg5R6WTkkkJoZXWMimhlZJa5JyT0lHKqJSWQmmZpNJaaKEAALADBwCwAwuh0JCVAEAeAACBkFKMOeccUooxxpxzDimlGGPOOacYY8w555xTjDHmnHPOMcacc8455xhjzjnnnHPOOeeccw5C55xzzjkHoXPOOecghNA555xzEEIoAACowAEAIMBGkc0JRoIKDVkJAKQCAADIMOacc1JSapRiDEIIpaTUKMUYhBBKSSlzDkIIpaTUWsYYdBJKSam1DkIopaTUWowdhBJKSam1GDsIpaSUUmsxdhBKSaml1mIspaTUWmsx1lpKSam11mKsNaXUWowx1lprSqm1GGOstdYCAMATHACACmxYHeGkaCyw0JCVAEAGAMAQAMABAAADDgAAASaUgUJDVgIAqQAAgDGMOecchFIapZyDEEIpqTRKOQchhFJSypyTUEopKbWWOSellFJSaq2DUEpKKbUWYwehlJRSai3GDkIqKbUWY40dhFJSai3GGEMpKbUWY4y1hlJSai3GGGstKbUWY4215lpSai3GGmvNtQAAhAYHALADG1ZHOCkaCyw0ZCUAkAcAQCDEGGOMOYeUYowx55xDSjHGmHPOMcYYc8455xhjjDnnnHOMMeecc845xphzzjnnHHPOOeecc44555xzzjnnnHPOOeecc84555xzzgkAACpwAAAIsFFkc4KRoEJDVgIA4QAAgDGMOccYdBJSapiCDkIIJaTQQqOYcxBCKKWk1DLopKRUSkqtxZY5J6WkUlJKrcUOQkoppdRajDF2EFJKKaXWYoy1g1BKSi3FWGOtHYRSUmqttRhrDaWk1FpsMdaacyglpdZajLHWmktKrcVYY6255lxSai22WGutNefUWowx1pprzr2n1mKMsdaac+69AACTBwcAqAQbZ1hJOiscDS40ZCUAkBsAgCDEmHPOQQghhBBCCCFSijHnIIQQQgghlFJKpBRjzkEIIYQQQgghhIwx56CDEEIIpZRSSikZY85BCCGEEEoopYQSOueggxBCCaWUUkoppXTOOQghhBBKKaWUUkrpIIQQQgillFJKKaWU0kEIIYRQSimllFJKKSWEEEIIpZRSSimllFJKCCGEEEoppZRSSimllBBCCKWUUkoppZRSSikhhBBKKaWUUkoppZRSQgillFJKKaWUUkoppYQQSimllFJKKaWUUkoJoZRSSimllFJKKaWUEkoppZRSSimllFJKKSWUUkoppZRSSimllFJKKKWUUkoppZRSSimllFBKKaWUUkoppZRSSimhlFJKKaWUUkoppZRSCgAAOnAAAAgwotJC7DTjyiNwRCHDBFRoyEoAIBwAAEAEOgghhBBCCBFzEEIIIYQQQoiYgxBCCCGEEEIIIYQQQgillFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimlFAB1meEAGD1h4wwrSWeFo8GFhqwEANICAABjGGOMKciksxZjrQ1jEEIHnYQUaqglpoYxCCF0UEpKLbZYcwahpFJKSS3GWIPNPYNQSimlpBZjrTkX40FIJaXUYqu15xyM7iCUklJKMdaac+69aNBJSam1WnPuPQdfPAilpNZajD0HH4wwopSWYqyx1hx8EUYYUUpLLcaae829GGOESinGWnvOuedcjBE+pRZjrrn3HnwuwvjiYsw59+KDDz4IYYyQMebYc/C9F2OMD8LIXHMuwhjjizDC+CBsrbkHX4wRRhhjfO81+KB7McIII4wxwgjdc9FF+GKMMUYYX4QBALkRDgCIC0YSUmcZVhpx4wkYIpBCQ1YBADEAAAQxxiCkkFJKKcUYY4wxxhhjjDHGGGOMMcacY84555wAAMAEBwCAACvYlVlatVHc1Ele9EHgEzpiMzLkUipmciLokRpqsRLs0Apu8AKw0JCVAAAZAADkpJSUWi0aQspBaTWIyCDlJMUkImOQgtKCp5AxiEnKHWMKIQWpdtAxhRSjGlIKmVIKaqo5ho4xqDEn4VIJpQYAAEAQACAgJADAAEHBDAAwOEAYORDoCCBwaAMADETITGBQCA0OMgHgASJCKgBITFCULnRBCBGkiyCLBy6cuPHEDSd0aIMAAAAAAIAAgA8AgIQCiIhmZq7C4gIjQ2ODo8PjAyREZCQAAAAAAEAA4AMAICEBIqKZmauwuMDI0Njg6PD4AAkRGQkAAAAAAAAAAAACAgIAAAAAAAEAAAACAk9nZ1MAAAAqAAAAAAAALnoAAAIAAAAR3hCQJAFYfHp5eaSaV3N4dHV9foCAfnBua1Jwgm2cU3BybJuMnFt0fADSh/mWEQAcIIQQgsEAdr955t993/Nt/u/OTd33m2f+786m7vvNM//ufvl9v3n4d9/3zW3+7z2buu/75jb/937P7/ebZ367TH6/3zzYF7grY3djsAI3skQA9Bo0JP/aSJPTa6gm5NII68Z91fSxXSWXCXHae+2zlS597hGks1tRZ9rDSN+zmb1vtqvTNOSr58R6WgZjtSXpxXIY9tdsZq/dstpnM79vSbo1ZaXVq1l7pS5KXVtF70xnqpn3Snb11n5TnJnx3La9e7XfbcZVKGn3bLENZBQzo8I0ViG4kn+AA5xStVhdtWdTP7lo5wymf9trfwrzV5t2VpPIlhFyOVEMY2fdj8qu5vbpybu2LH5d229/asb/aHfbtGc1hRnKDEuf6NX4qGbpo+G9R7bqgUBBqHOpwIi+6pmWefpFs/HRjTTqxzXqmjDwYW9S9KW1PLfVKJLx60EKrtnLx3aF0I6c6x472bqOl5Z8n/JS6v2koOyT7P3qnDq2OP6J1Xi9uO1tezT9IVCvxdQyZdk6oSPsBitRQ/S+ca1EScXMsddOPhxEI8OYFCdJgoSLps1jqjtr1Ru9lfqxroo/G2wnHvYooceNdbuaAEQxJgx/TEHt97UfLMlofrKyDREp3snf/PQTBYgh6SSN2lZ0u+KhuV/2fv7dv/7q14usFexCdm9xfZf1yBz1/Nq73ffWXTg90zpmszIijVUyiZyT9O3oV/eu/O6FvHRNOFXXaPpaL49a3X16tGf3+xMJGDAA4roT3AUaqksxYEoFTP8HZUVOS/0RfWECFjrpa6zKoCkWSiErSYv3hflO6onwjP1lG+zhHofsHsUFQgHBTq9r79de8uhEGfwbVVHf59w3Wr/uLMPfWcN3S3NFVYOm6Un3o+WFxNlt58TKqgkwDiPlZinDezkv/cLSJNGiqmbhir+apsZRAQuAXCoY00S+nNbbHdJXthZiGnfxVmJppmvs4tYS73l4HMouAFYamxWocwYQP/CBGkfTfz9IIPUVY+AiQMy2CYmUmYLwYiXb81+KGdmo8hDYnoJwFqtS3KRLM18dmPrWPLJLQ18rvztUcKJZvmWHokRK+z0R7z0RdlkeKwCuAhLg1BKWFQSix9aw/0ML6lxvpnM5CJEBoN6LSrvjxNCI0YlYVhwxjsSkpF0L0WPWJToKymOR67vtgyphBwVHBABkr0iM1+pTLdHclWDf+8iziINmDABDhy5SjifPWCqRgypyhXSsrbNmZDRrrfvvZByxBAA8BEke+dfJYFsOgKKBRiYp//5+0UMnryeYPziSPLRQ/n09NUVMJ6Aa75dSnc5qsMYdwFSKxIPRaGtP3yXGcqPcvJP1nxydOvZt+5VcJvLxKqe8NATh0zy/yt+8Ka0dprLZiMyZ+N2rbqWJEoEAYG4N9zC7aX4eWX5XrNn0c793yd1ueujhnRvwx0ter07Jvu62I19o65IBTLMwen31UqLTzIHFywAYK2rQcW/HHH0pfgnd5Paiff09emDpJPLO0aVVpZNDS0VDC+JC4Ns4fGLtvWpcsa1XfLe6/3Eb6ZhEHBW8axvcIOmrUWv74dAy1SNO6Ypn50e9Vd+ssvFOtdqz7al13pWY7bDktfdgLPMCTDUTr2HlKQaxLjl3Taz78PzkfYioSA3ClqY5iLDxxY6UpTJRC5xzqm1MPJZEIdpSI8u19SjaHg5yzRRVSKMQQAXr+JKr+BAXzInNnMM2hHBcLreWL/FWz/EWc9WWfp23H32VmT7qq/fMXhXa99Wyh16iAjVMObNf1+VX16l0upioa7g8TrEjYSF1ABoTuqROby3yIjrT8UaLeG2VFcsPqQiHcC7pyHY8O8zvGmtnw6nX0NlyN/RdPpQHorFGwUaDGvfGA//A9wTWhXfaEx3W9G2/GPQyb38Xcm61c6XUXKpmA72eW+ItTAE8OUe8po/XKUjSlDZ5dFt2RBMIMFZ5eT7kH0pbITPekedJ2alUrmm2p9Sz0XrVCujuB+Fc+fqd/W5P2CC3cbvGxo8v3NvvqzksrU3U5LVMm1seZf18u/T0Z6f2nz8U2w+1Vx9rr3Qtv5TtjVHuJ1nSdKrXnGm9da0tmfwqAky3kDN8V/89zj0LB04E6fyQvs4DAAUlvXXv1Z8QzBYnr6539b29kXy1+eeRWVdge/cJJSyP++tn8Xm1ebqKG6tl9sz1CsGWq7dU/+N3E6tRoluI2Q5TN97U9bw62unxzZPqq13HegusOb/fWCmJWuNkMzfNq970g7VvVIhOXzQ3R3PP41SiEZprmBAuRd6X3UVgrHwmNcVZnaH8YL1rKju7yq4/cm9fXoWYwhPx0B0m/Ga7Xw8H+zwON3yNPm9e/cGb3Z4QPmgSJITmc+4hJ9EMimZQqvviztz5nuv2XRv0XR29J8Epa2zkYOnxKyvvx8XpudIePQsdv27qBk4ANLkws7/hr78qC9S/zo4N8wLQSErWdDFvNCfX6/zyOdETdkuOXvl2PuWQa5p+kstTtdM30Wyw//rHN+uIrWbIX9m5Tdaru3t3S48ed9b4fuF3YtuNRkCa5ShW1fAD7+GqNp3Z6H69fnO9tm9WrzbbPa/O9vDa6etn+uGpotRQZwBEsRnoMbqLIwRvbIDJk08U2q5RKtntT/ZndNuqHr9oqa9U4M8d5HqcbkWXXpHc9Oz1LzyEh5atMq4qUzEU1lcLYY/v/8eVo3n0Wbk7J/jznWsMiqefW7e2n9XyJuU93u6k20ofZa/fGKVUrTULU7i4ZI6Xr86Wsr3MZj76cgs8qSnRtY3Z+7yFx8ZZsrPsBuhYh8pCuqPXrjqTAu8plpj2sL9O/I9XRfU6iMLRykJYDy6G7dm4/Px573JINhcCbeAbc97y/deWZHpYpTkfF0VOECVLq+2rCvVMcrqv7qs3XtE5FdG3jfjITPW1jSw6RKEg82X0oEti2AAggB9+CBJSiKOjxpSCU/2bZYee0giMNHbw/a/J18dHN+e7mVPSpccumL5+eDLZHFItLo9X6U9rGqNS8vqmgpSIKY3hRBgZm1bUMr4mdNKWvW+n/53yVrULuRH200UTTiciqQI8nZ2SmlR4D+EaYQG+AFFwia3o8+WuH2YfF5WPWmu03NlIFpxOv/HvD7ra8wJTr8OqahpuGOquItr64bmu+rFzgdQXgQ8ONpeWvRMqHa3UiGr78TIMbbIbFid6eTZ3BkN1DGdtMmoYopQ5ADQbomVrHH4bD5CABAw07F9tpr7IdOGyT5pqg53/zweXaAZdk/2YptN/5KIlO2vixOUYCqwNFsH24258+qemi7CaZO2W2v50s91p8XAn1fW52AEUGWIu8i+u51hBl13BCKMkoo4tbvPkZGXmfa6tao6XLRnt8WYba9ue1A1RHabjQmM9WuVXgbaI8rr2q8V0sbx1dvzbH2VdzRrXeBbh0qxJy7HP5mEDK68mK7d/E8m79XMJ40GeuzX0YX92ScLsSkUARLNYfmjanNYBxwEY6IMUfUW/fzbtnYrjHs3ltsTKTh1XSs0r1UxQJjUpF03bL2jURqnDM218c368bN30zr3jz5Z39VBHEzmykoVU/NTZrd44d/GGvdcM//Ko2460tWbtltjiNvXk8gmfj349Ni0ZR2S0LNv0+fXfm8+v/735vDnmDmQhtVfsYknbZbmdtLJ1ju+LnrAfpoQATxsiOiRSRhdy3IqSUfedUYJoOZrupAnBhxCV/Lv+pPHWT41glnhVBAdU+w0iKET0ZM6bhlfUEl+yMlYdEVYhRWlq7TDJ/vB0Wns/L+ZrnXVXJ7zfawNyifIbQbrrEuA8ez+WTL3TXEusr31sLXNvIzQdOhFGCKHXguvZ6PH6Yqvii1L2GhrftbK/bxov6rXLjc+7+Y01W9/Nj/6uevi5jVVJ0qJyNl5qzK8YNOxbu7N1trL5E7/KEpU+95hhGGF2l0n2pjE9cT6NE9NWP/VPxPjRxslDGzr+HE/6E3tl8t6YP/14e1nPsu9LCpvqe8LJmwA8J03jN8yPnkK/4GuMUQXpvrLHfl/sNQEYCProRlx57Mm5d0pw2uS96l1/vaKtiQkAxbtHNDN8G537vwGW6yWci4/NxhYVPUfhcBml6t2c0Xo9DTQbxawuz64c9wwbiE+2gAbzQ52kueXo1c/Wj5uKPHgRNy5/2+z5S6Wocajv6fIPRAhEidCm7XH/Wek8WDK9ECMhwKfzX+8VMROJEoETzFHiJt0SZ451RmCLutFXuw/v3L9lA+F7nh80p8WirD25ogEsI4r00tz05spLrkw2kMsXjQBefUjC3sNpU7W9fZcpxhoup4P1Ke6CqbBUjf3SzCo1QQrLDwmdsdn2RFme/ncdzzmgULTj5x3puluNxFqcaaToInHd7vJ8Avi/l7p3Q/twbknaYlYEyB4XRtPX21k0lgJMIX3be/3MU+b73ui0hH6UDgCNiFYq7xVR9HBv9v9H8jLWjzT9MWFhYYFFDjG7brOWuaf/d3D49JW4GtCOQ72J5/2Vrm44YohCEBGylvfxds8fkCaKvotsF4rTDHqV6Hw7MccfczPCW/S9rgO6eXK1irNDEGnVTiewPkpHavrdX7bMFaBTKIRRRKoc3AtlndNO/9XzNNmip4iiu2lC9PjYa/XYdHnSGmf/aTCV1fWiUmiliKN1cRSyIxdP6OiOH5OyuTLElCm0gBQOTSEANcs5gVAqUZFNjzKueS/Tp+Rrc+tdHQHQZ9t7h4UodJOy1vOX1mzF+IRzADArOZNu3P/Ka/xNG8bh9v6JGiYirnRHsm1etulZejl05r5vdu03G6EQwvLM8Ma5U8pdqpF/LYqSogghBGd81SrzLspa3zev+T5vX19cYweioyDbnrNKVbL6YLMDqsHjrY4+pZM8CALVXa3xlL04r8Y9teDeAYDIizi/kKxxy3FjqaYzu/9pjXO1fK+b7y0v1+YwvXMUJ+XNh3YHdqlKpyZZyiRItxEvp6d1mDaqc/Xj1BNIwwFS6JvdX09F5ZFLclG9SCvWMtKKMelpSnGn5mpteUV1qwxe6diJbgiGXdZPtgnfe0B6G66GX3z5oZVrVGH3B4a51iaLxIkroUQqR7PNKtnCZaUlbHRK3wIA1JXfjjqHKIRP85O//42NRKPxHMQMhVG/d/i3Xviljb31bdv5PP8qvJwBZDHn7uuVYc0ystaTEMbsBYDhGGw5kiSq0kfL4Kl+VS+XbI/l9s6hJ7ZvQ9Wq1okolUwt5jkKlEDF+VX7fRpoOAAASTFLj12WH8TqFSR4dTWezfMwPYFM3UjiDky5vYPLlRmukK/O6iA5q7qfRzv2D7xFK3ne2JlOG95Vx73uNxd+74SpsXMaQoSAPG7fXMrXiMKaLFm0uysP/mx03ByZ2WPS+zCN23lQPASOL8P8SPr0yOg5T11T5H7ZUnhTPf3RIK/NW/LK7qzSn04lZsULNE06o4dG9ssSKZQB7Icp1GDxGtCx2tORl26PNZbtlMPo3VldRXQx15qGEurtnq6WujwVMzI2UWyWEDltE2OOce1/VF8fT4NYRNVqZLO6rvWRRWGSWOhZMbHtX06d9CxXHYp8bHU9DMXdi4uFG/V8bzbdfMO823ul1vF+EU9nZ1MAAABbAAAAAAAALnoAAAMAAAAXqa1jIXqAepqMS25xmouda25YiJWMmJeQi4x5gXpafneOeI5NdQRTvY9Tft5VtN4P6AyS+svHvcmJHa083j1l86VkuLdmNd7R3s5MdScMs7kzKX44BCYRScokTnVGz623ZL2193vrek9l3rt7aHrI+72LMHeKQ1fl3r0Nevs3P1066hOxcVTvzlx2E53qaGV/UddnYj+XtY2XZu5eO3YDNM38+I6m70Z0WZZWYbpsmPfDQPtE9Dcjtrb/+bF0rVnrHjEXwljRbufzcCw9IY0hUkIweWF5eH2THiqm47JJXeZOFSGZacV+uU/TxWJ1PPprFXuv9JR/79bWX71S8qxfX1bekW2/vHOuP9M4L4fu4fr+laQ/WT9OF+2nJx/S/T9UMa/ilWEx5wKfZ4YQcpJgJteQBR8aBrOjFNfvqCnbxOrhLaHVai7sAqa8LvClxLKEvSgOvqbLfTkMTjGnjc79Z0YL1kvGPoNn1V/2/9vT/887SJ5cfvnVr8yPoO2+VidhnIRG3aXdxHxk/Zjwx5k5ea03NtcLq3VjBBqa6hLgagVM1/TZip2rf6MDsvHzRWJEEYrrvXtLUbzEalXzKJV++3I0cduSshWbt86wN61Ksd/NK3q0pZGECKKwG1HfWVm0WlgdX7lMBjeELqaxoet1QbvGg9lcqRxaAyu6X9X6hdtMGE4NT7Q7VV2dZU0cHV8IK9LqFhoPR83QDv14PHzieBw3+HIscVPNfTl01/lDcWXXR2/WlzkzMEwAW4yfAE8bphjTgzeXXXtvo4ZfsO2G8vJy8cyMfz+Q03J+/bT3SUreSv8ZXXlTiSvVGtMXT/nDTbymYPxBsUlMkcmZI8UuD9rO8YhOTG212Wiup8aAw+O0kRhitup8pLe9yj7bjzOhE8mPl9tkrIIr9ZgwsmONgKGq6286HwRRCiJkeVikPvSaUghNvuAomAx0aNCBwE6odG98RSv52jNDobe5NWvGvdjnXqhaz2xVptHUKLnC0B2NECyNkdqYvitcrRprEFtSUVwwHNTowAgOAPSsufpxTx2AzV0BcHo6or66uemM2sspU7SU8+UKByCMZRH1Wz/6ed76B7OvvTnv/fO9sFZ08OP/XxSg9w4YgW00hBRv38irP9bXN7P6NdwmLpvZupJEw2zD8SX92c6NLU5z4OyHq3r60oqlqkYADLdl/XhvFWy3QYIAfH9CKrCs/QRwq9M+azQmN6a/3OYrU8+ytm+cyviqfeeczRsgJHYQJhCEad5UTr0hCoIgZ9vDreuefbf736BOb+JY1LoXfacv/NbC9rb99hwAcLx+/n6YkjHCyggRbZL8kQ3iEwo6mKMzJ3hodHY9zmWCMoEQoTz+zJaPukR6D9JHO3+7v1Gv00c1X6++szh85yNdKz2trl1u547GEAO+3mGvb4vmZVfy9+aTSQpEjrKtD72irSfh0uBSmiUoQbzX+9IDAEopR2IeN8vyjsmm7susm6krTDKC4ry1y6041/MhGGtb1VuXegidvVj23dL992TqQ4+tLS9X0uLgP2AAfviSswGgsdh4i3u5AQL0CCUUEqomve5J71Ujj6cHv/HYdu+prllquMDoF7vun/Ytaa058sBO2uTDWFKgCpp7F4h75W30uGv2vWpVuwKSWozKdsEVSjyCyKfftggIJlEjYFLIeBnlsJvNK+ECB2o9kfwrlecWy9XnyKjK281zJ+iDVJxRWiOXZ1g4AnboYnuOMvyg4qTPDzfZZdmgyWYXcCMCVDT8/PmHmFO/bfXdUd2Nwm8rHpvVyb3htvr4h91yeiFidezWdB8ypml6X2WVbRd1VEqlkr293+PbV/LTQ4+oekxkMS2GfhaFUqU4hj6azGF6VD83DDXSCiQoALhwFzYInE1EE2YhNK8dqbequbey7Mu9RnVQ9FVuKT5BQP9zLu79jRtSRQJUo/7OuUx1/q8O0+B9ff5cqu/jdedZIrg2375Swe3u/PjDyf6/4873CvlKHbcpCaOrqz55EQwtrd778Xk6VXVXAYQEhBEDX/xi29DvhQ/thxEwYLHRlLrprtoUl1ejl/Yj68fXU9rhia2RFkSfvvjyjfkq0c5nhKjYTed2oi8bjVFZepUu1q+BIMEsu3xdZZaz1XkoBt8241D2ZaXYaFTTL65L073+ZNGrbDqyKwG0tKpqayohH9qvL5nn8HV7sI+nxtY4Wc8w2GFz2a3xfz8bsc6wD5s2cqMaRB+Tx2lC11eZ7MUO75QJCNABAf2CUExlprF+Wb3ULMomAxYy98WABQN/VjJL0ukvyrdL6b/N09uD1ZWLj9w+yI/2RLdoH0BSn6TAujETU+fD8ZidfJ3ZAhppqvuS4+4/gfZ7mzyCDTT9IMLsTf12OnDfU1GQjBBCi2RLFi+CaPTwUunN2lfVkubr7sZ/iUpf0P/wE3wdc4VChQMeBZgA9g5tpMTcFmV65oMN6oHXWJBrAjoq1CohZaTKHPKq8qECplt3we1g+OMlr+fFiEm1AMXU9RK/51uPJu798askCwo+SSoOFOv0/gNeGA23BVzptwhrLP1jFJnMCBn+FCQtB8UkRQo6RV4ON92+BV4vh8sCc1waKR/u9bZUKlfDdxudWr8rAaiIgPA7uddwaOMEab+EG8UatZu5NrN7FnO+vu6lnd9TOuQLm7nCaL+eNr7q511RMjWEskV890POt0Me2mqve06HPEUJuvdoI4xSZ94TaT6cUD55sz2JRviB1s3ewN3xia3Gjhi+FqZjA1O5Y4qYvlhi8KvB7DdVgocpye06Hp+lqWnDelBrUK8sxF9Mqq3nGn/YFfkqqN8OMFuARGEqkFyJ906VJaKxU8Lo37d5T0h8jt8O3KsY/pDLTu5wiUBiiGD4QGq1S4TJVpXOr9VVzxeFtIIu1y20KHazcE4L/pjTBTDluEFXL9+y78VNslV4iudEQFY5RZQO1ij4yFLuj+D6VYTKR3N61HOP8Tcl4SQFdkEE8aWEy8oE4mmB7GvAJKAQiKVJgk+TiHvl0OgtkJcCYkWwM5CfBTCAHdgMnBzXFx57YkaS8D+zWC6hdWy10qWrpKqGW1K7EYNSBejQ4+L82jfda8U/5TH35Q2N4Va4UF469V6+yJMFUPK4QVfXLzh9xFnS43hIntHQ3AXFzL2S2mWT6RiHtA4GFezPneFTMyysg3eMdeRO9QuqPwZ+G3jI6CGcgKmgjIIheJitULkWqUCLEngDy0aVaTCr3DBKcYG2iPOhsCp6i7zqRvaqa3+1jOdzLSFphqpeo9+dVPhAlxdwYU8li9hc0pJrjj1M3mI5hNrZAgUDDOAFfinjHLicBuhKG+vhxKxd0QZBsMJMY2pbh5C30GePbJ5X9NYv76b3oOucsWY7ckr+Yo82FfetThLq1RAjkear+A7vnPlKFUS8XnvJdMWtc8EwABprnYYr39aWV/ldNSrVClXxOPFR0EdU6XMsNs5Tg/r6ntG4MVPzjC+bxsX3mhmrbCHHagx9JCfiS3jnTmUBvniyGRQWBujqUgJjiin+5nmB4WL78PrtTk1LZwpPZ9D8bRX/dXCb3cZQplYdRdCxXmxcrswue+VLD6t/5sOyVkvKza3YDx02U+tnbR5GVr9dTbPykKmddNxe2k/E9epNJutkl/uV26bAALJUTxe1kHBFPbZ11k5+WxnfT5xYH412B208362kn0kVClZ3adgdlxMAt9EnAEAzpgihgYd549dEN5Yu9IUMfqzPS//+jcpa1bg8it1MiP2fi7BKo7R5uf8Ykly0xeaUSmbvqY2+xw+pHHQpgVME40XP2j/3dlHFvwgpS/9iKVNdA9WGnlbFYetLYo2Y+ye/2XpnTT67uaeRm7C9Eyfj3ZqOtW2Y0EihpnY1HUMp9Kjc+/4/SkEjAaLaLC3g2PUzILoXNWVnRz/teIpsH686el8srcmHCGLN8LvbR9s00T7ZYjf6HHr6HCylczjKTHVUG554U3unzk1/jef5icsj4xyTOk+jNUzJ1aOOnx/e1J7W3OycP87W1a8qfdjboc667Zwlr760AgRBJn0Rqdo3QKXf8nhhf3i/bC47xxqd9v75u1vaddt5VphYNNasebT71XP/lDfLgeT6nNrTb7RptHR+9Gh884TRff1b24OyLBqnL7T7/fkCv6o7nrQX5zuEl/rG4uf8hGaiqvbZ8fkpbA7WCp1HvDQUN6+eyp5jf6Kq11lTKjBCAgxHSxfLFqpowZBQ7RcqkfBVdaX0Bz3jiehD5uf9W9GNK7wTNryudPeI7JfJMRKVza+mZbUmxA1S9kfPPOPKPe7TszN3x4CdVPHazt4PP/TNxdXH+oq6y9fVHFYf35r1d6ttcg6rR99L9fQ8bn56dly3lLxP9prahlo79MhFwxliTwq6g6AodEZbAuwZKWEABBj46PBdfdVvGVC2JL+dCwxJbPFLaxuECJYx4L1T4emYYEmZXkx/NRZ5HyEyS9Pc9cBF2u1fSiTp6Kd6zOYgMSv8jlkK/LgKrbk9dTAZ1quJtjLB5dYFuLxcWo3YdTr7JOO1iHac3xvJhOpIILDk6OuqbmduWb40ZA0y7h8vrHV8jyRuKvk4X61snR7TOHxnkDMCKYTq9sTq/fs/3/Pj+e70l3Oja3W9jIpWyaMn7iasjstXwl53LlvfJNE+VJPgzHAx9DBucS56TyFAtVpxLWcA9AdZWxYTWBKOM7O/yM3+b/qf7Xgxcs9KxZMOS2iFiZqRtM3CBMVSKta+C3iqU+eJGXQbY724yLj1rC6bHi//v+b9C8o2a851Orqh84VUNssmDWgfpxDjtO59/ZW5Me031KhIoZ7yLgCa11HSiUPAXJrWc1QBAADlSwtIKULoRR23jFC0uJSF3gb95CSPOl4cWYJ//nvbUdmjoaT71pdUy+f9K19tuwaPV/XGb3fKVzt5DLO0pLf2xYfaUQIQVo2HD9FcAar5lmxPL+51CuW+DjtqQRZfhX5N7vBVX0JWvbljegf3RJb811eKtU6dksoy2xhz744L3nfphF8zwWGtQ9ZtLABAEAghhIoa7Kw0hiAcvS6vz9PfsmlYr/WdjNf+yO3CBIAp2ZD87amdPp7mQIwKoE5nv7oBPCB4xB/WFOrVPR7Rf1rTnzH6SlqsgePjsqKYzSIr+21qlytpl+o2hmxe7edC+3ZZNQpFjcETVod5Rm/csSdEVc7jfqUENIWEYkQd3eed4PvAwleCCCTT829763dZjLuhyWrv9Wxjo4Tor/u+6j/d09w2Gkc00vr+O2nNjcb+1qrQx39OPvD5c8JkzC7P7Uc7e+LND76pNVYs9yu3TegqdzA0eaOWvzZZJ6vdeO+YPFCzv86nNNseXDdXbbS+3HdkK6sUA/yYtx0pX2AUgGkJgQ4OXsqE7Pbs3bP0VU+1V97pSnYVz+bQJ5rxvNOQEDYCAOA1/Hg4TtwHAQccoMTObGJOfOPJMqZ0vbbJRco5RU0P/BZ8tXacoxSwM0DYoBF9WFT2TFr15u4x69trWwX5v7gtjQlqWb+Z9dyS21nTPzTFNndvqsPNOcU82gjUF038ZjTc5uoda0V/jwRMpzGn5Oey7YLcXA6yXvdkeMd5GuvD/iMPSv1JPhFIsz7Ms3GtZk2NWdQET2dnUwAAAIkAAAAAAAAuegAABAAAAMlgyu0gYW6SkFGBdHeGh3l7fpuJoH6BhYKgonx4oIR/f5RwfH8EmcHxBX737qEsgzWta7ITfgSg4PpkdVrHcPu7uZXytEOXeeUkG2xBSAxW1iQp+rPthzd29U94XxMLI6JsDmpzyP3jvf/U9+Ze0gkpBwAGt7Ry74+S4qLg++bSM+WWL6kdTBeKR+3dwSRgF0TCjj+z/Q5LO6Lbk+KVa3RpNXJmC6LZttrvr8YmBtmGh20x9FMbTm52Pj9/0x8+N//9Ie1eKC3Wj1mf+6dXjZ+EBAAACiR7cx4vR/nWj7qs1Lg+qu3L52u3v63Cof4Bs8Yug8u6GSIWABJ0lJ2VVwf722A/ez+QW1FVLCRgo5Zgq/tH96z235jDx7y5qVv4bmdHL5eI5vpse0d2IaxKOXEMxa3j/X+bP9efa2RCQhJyg68vYEYAw4wwXvXQH9WjXgugARRi99MD2envj+3h1OcO4iAyiQiGRF9j1+BACU7LVmtu/DzjcGRpm0rnCa2bSFQt2X7wBta5WQIopqJg/gO4oYrXqce5LDQLgCACRqiYj+flhtaBySf52fNDjK6Z1YNytx0ISLoq8qkmxXmKi3Kz6/3UIJ9D9HFOJuMzhqzCsckgPsGx0VPCp3hAKLQhJdZVADjl+pFVmR55UpcBEwVJJMAFC5LG7uCrd3TkvK2syi+y9MLuIowPYa3u2WeUIryz1r2fAEQZ2igh/6IAEVCgvOrWormxnGqcL7JuTf/4Y4EGUcA57aZ9PbIAkZLwtHr7H1s7ILOcfJxug325/S/7K4AY4+qpoZsaPe/5b+LhfDPte2YnEySxVYJkjmCNIKj8Sv86KCrv1EKkKf9TGFTECet4hXz87/FU9qNa4eLYc7exXtZb2+3XT4yPEv365/v/rbej+/8z50ePHj16NB4HKd1jxbreErr/XeTpoVvevO1IUT/68SeeX21F7k+n04M3bpmTjUdgbh+Nyuf/n3h57ufPL5eDAhy1VVh9c7MTsyxLgE7AlY2rAAqxhrYu5fJFSiI7pekYL/eDGD3LcItwNzflFZMfp12+OXA3Wisd4tOKq1mY1bXnPtsU1/EjansbVQ/Jy/Ihp9qPxrm4e31TAfjD48eP13rz1cNK9//+9zRvH08lrlar1ePH/JZc1gXI+MUEALbY1U3/YQwwmltv8C6Hs/WKSG/bsvqYnEb3X3Lp6mey0Zvu5/LstvshOV9sa2Pb2NLmfzbUjevq+Ejsb4vsxNWKtrfdWbq884l4rYQZZvJo1acvnuuHl2Va8dBOc72jIdjj+SvjmDHzKUYzXwAaePlc6w0ADsalBFxhijC68H4eNxLsJ5WI4MsUr5S/vN2uukd+OEkrMX3HXrDcHptRwxDIasUlWgOL5PSlx3tKudcOGqm/JYaHjcf3bPpx8jVF8EES5eFgWUK4TWf5b771WqNdu+lH2Vq97GkNSZvvG3/JhPkuomaHU3a3do/SuzEmPIt0AXaneQQfAACuPGcCAGNBEULCn4tASqGwMnpvTIZptrj/U6+k+q23msIxd42b5fGHBMMaxnHWuy2GXn+ZecrM57NKkCfK0K9HyqBzlxndel4gIVYvCRQR7VbBZR8WQgZWuzfFGGPb1yb/13V29pnb+Mxf3PUp9tusTK70d+FEWV5NHovfCAcSAPyY/Et7jAAQQKKFuXpsWpnxnl89+NPNdnUq5XTOaWVlf96x29l83NtUIqKxfN37uu2RbMReMeaGRZYd99b40vfW90R/PDl2OOJ7dnMaPGikvTnHnh/kc7um+rVZzeOaflnt9aaUtd3e87LNiXp2j6P/3rYuHsSUQwAksV2Ig+04VYYmgXjFfGCtu0m/87k/6bRUNv52ayGPDr2/O0yz8S+a7r3oBnKr6dpfvnrnNAwonQlIs9Rck46H2p/SPFA+nNOhnFB97klqqz6v/NL7xMUi0+g3tkv95my1297d3XmoukzT1TO9VfqhWzMeHxpF6oQnoQRUs6cie8v44wKJgM+q9LTMr74YuarKWg1r916BIjF+1XEzha5Mo5jv52nSUWEqJ84brVMygh32ZHcjv7i1eOTrWlEptXIbUPU0L4ttkJDEgFz+3a7/hIfDqpXCCsocmYvxJDdEXkj1iHcxZOG8THz6al2maJ8tjVnPOJXhKAC62bsekrjVoMP248c8lqAng1CmMSNEk60NZa1NliDC17VK9vK3i/Iyb7+s3W8b10sihVY1WurhBwHTtc0/nZ/mvkWIcVr1oD4V++m/p//bXUF76HgJd0eRyjnJnuEgjQOkyps1JdieKYGtSZMLCr5M3nt9tDH97Hb5+KzGTFovJcXJ4qV14J4tx23m9gS967nUW6G/QvtNnbaPv/6J26+KXuzWgM16sHy3msMvPs6SZmsEgRDT4WKrQ8zvujS+PmuiAYLoLL2Oy26rcw0CMhBCkIHZ4kl8pAD/ldDYbQi7EI7XUBpug1MK2JC3XkSAPvSrfdmMymtaYqIvXxv9cqh576s0O3XBPTpGsbdxDvkmAafQVPftXGxsfHpzvfUQ3K6mD8IF9mm7vCDKeddpwMm/oe8XmY8usIN0jJDgDvovt/5E/fn6wkq476xLa74WU5ShqO/OPdMJn3tXo/PSCvon09Aavf/7aqusQctBhbikejdT93RvbbW3PCkbk6TrPdmVZRdB0rOX5ViF8eYim/u+zfySA+mGvpcPSn9BGZqudcw9upM17dDzD72gmecyPFXhfduXJaTe2bPJm9lsfZ4eeliOAUyv48JXdujd3ZZfg8SEXrCUD/76vw7Vq+srnx/dEwgRbUCKq+Z9nmweQ0hCRluFPXaOESLx2TvDkSbrL1LrMmWMGy3+LJmDoYoOPUgABUTdmEfRy18f57md3fh84hO/3Kvmqx03e+bxINMi988e17nQBq/e45v1Lmi8mZMzITy/44atdkzVV0MZdLn3+x957WZbm+l8CaACzoGObOvoeOH40bjwiW8XvvNcbwkrySh8Lub2qDivTutZy7blWCE7jJ2OEY9t/14j69/Opl187n7SNEPbLFLbxxVpGcthnsMkt58Ct6Oz1KHp5XF09eCh4hFFjq58X+dntuF1+WytFQTJWPkqImpq4G/y/pdtZa90FKgG4uw5bJhrHu3prn566Uwp91tDV9TZczldl6/seD3NmX1+ffy4eXO7qlD2tnexnxyvrdjDQ0Ge3x/GFuZOxYrYkcvR+H2snVw9u7aw6tocdjY4fkZz1AaG5faX0+Urqut0BDdH3G2n2fii8xNOz0+8kVH0Tj6c2iyqwRlw7P9PfaHq1PQAFWOfPiMB62HP2fdOtv4rZMVIdNvh/sotgtOypSX8t6ke9r7Vyy3DnS+bZzMZdlKD3rHRdQ/dP6kRaWadsnOkrPZq5FphxV0dQ6crcNBv1HcvOi72/j6Y5jSjtvHv5Vm2ddraR61Obb7t8vv/wfIA2pftsBPNjipn9KrBP4NhxkaJBNJXZrrLS176Xn+Uxz/BN0uqcCzz0g6/fer4tO5Y1r5vms+vL+lenizM/drKse5f36wdx5iHxeXBnvsGUWIBLag9wxV+/Hcz0tUP5KoJg2m/kLHzssXo+6ol17bX6xsB+81tSn9ajgLByM3+16oleIwaNVNphylhc50KQLkG0iuUcvtkTZs8OPvbpgQ3ArZHTbkBFLNk7qRzJVBSv2KSsVdWIzFlxHuVasMoYdAf2Lt1xq30xupeeeGfS7FNa7CyVEsSzVnlRD5PpJ5+dmPdOnNE9Mdx+u+3sRgwhXLfuXG8u9wolkU00pVrUO3bUDcBqbgRYYXFZ4+JoxDLYveOepkDzYyxexwyr5dRSdOzdW1wsKtfS6mrHW7o+5u5m7TLxTFC5qTEUNSvP2xuAoDECPS+echPM6+Fzo0JIw8rOF4GATCORs63lD3xvBt1EMo98eyOhL5Q1cYr/3P5VmYkDUQ22c5byZa4q5fetp6TPJUzZRe9dp6bY9/X3dxqaEmhFmv+9B90+VyQZ/Y3z/hiq6y6YreS89y1Dtk6udDaZ9W6p+S292ogFeWrgzDsNrDFZf+vyYTIEhJtQVLcJmadhR5Gv330JkNuNsL3jvG/n1BqhfFN02/rLtZSV7bQjZVKupIPfks9tcjy+PHBeZzyZb36RfnavLSQ0+GRE2YObz5s9N7wljzb3FDdwemeKkxm94KzKPTEonyYHizLSuLSz/dHZUx6pxu9lhMAcHtIgIUdPAcwpohypjhrTAjT000P9Y5u/ekqZeK/5b+63WtlxTHfasjb32E/7Oc+hk4xnd27rhNfVCGcPZ6kEuNglkKMzrl65tReNjxHJz5hhJoPo7e8RErvQ2d5bcFB5GZt0UwbXq3NY7EyvTo38cmhNFvK7vhOU96T2eGLTImIGrK+mB38z8aPu+un9RcxkDSvDi0kxh0BfhlTJVAWDUSKKSPMdHNx9dvLXph085Zv33bktT9xlEQ2PNYaK6e3FMYebeg3DF/8EusScytBN4jbAtWapqW1K4pf3cY6QXwJFiA81BOC4awcVF9etTtSeu92heG2g4m1k4ZA9QszjnMS9R2sg1iQoPYlHrrL6xvA4x0MkLzEROvUOxePvkkSt8Ds0YGTvSX12Y9a93v/mwpiAiFMlfUuza50TFnm7UShNE0c1E1nXpzeUHX+/EVYWW411BiHRtKHQwbUghiEjItYnasDADHW0wtx525n45dc0RfaSVnKjeKLbsgO9eTHrWUdc4HMq1R3f/rr4oyGqLWGpAmuMbRL8ZA6AB65STYCpw8AetWrb1yMMUII06T1T+R/ZOn0+OaDplk9+uRqteVsT8NKWfR0knigm022G8RxthceR3sm6sTsk10yJ0jkv1KHpCF0S7mz2TGOO3u/Cqs22tGScXJofpuKO87c9L7HeFP/5adjwVqNhDMfc0rWx4ZvwO3lg3U+NwD2p/mBBQAOxl3/tg53ZkTRyOelfnT80GWnN4SJ7NgjjPDPXHQthdpNV9pdtfAwhdVsHrZSvS32Dy0XMSe670YzZbKHqMbioU/t7S34yc+ztbknme3eQifJ3x+Yz7o9hnuErM4zAjDOzCO+C5WtC4MshwnkVoY9txuYql99ydgsYz+LUoC05n+3L+F3PuaLZ6qqbR0q9JbdgX1y7Mygyd4PZh1IKE+46pR0YuszfP9aSro5/plxmHPrw/qm7b/paaQa5ox5/+UvmRlo+ZehTV10LPcNhjWq21/atP1dQE7qbG8GLvVWH5ocMm6uM6atwHaMh5+57JOaH5+xyhDnZS0z1lzaACQx8MJTVo6XEKWLZAvV4+agrhB2Y0ensDvaK++Trx9tcazGjYEZ7RjQ+GNAo3qylcqs11HHvrHUF4UnQ2MSUBYlf3B9MatoQ3U4Gc/ePPvtnz/xCZlGmk8tZGYYabFfrN28um2vmkLxx1PX7l85vv3sM8k0zDY1P8I5OQMkpaCCy4/fJugBgAA4lBSDisiE/qqJ1NOrq6waNRBkENGwaU+ceE6rize++9e9sHe7k17H2RQW+9oIxmIOSnJR1igr+7935dqhpedycU6yaVi6uMGmmnuz3YqkV3cUJW/brzznppTyxaUJMufz7aaV5l//ZWfeP6U6zUpj6SRKT2dnUwAEoa4AAAAAAAAuegAABQAAAPXaY1QaeHhzeG50d6OZWXh9f3mfkJGUkY2IgXyBfA4UK/CtPZ44AQtIKrjCgfrcFN2lj6vtWsO9IN7tnqdT/eKnHlk19AtVRIOgGYiDVCevlsqGWecFMoZbcUGjuPj6yZwq75pNr8rI0nJSo5IvnWkWmnaUXbv47rPs9rRVO3oak1Mz/merv1LM7ni/c3cczRXZ11G3FQDsLtIsR4UJJgBI6lx1pRW5zqZXR9dyp0dMv1Q2YfV2/+T38il7QaH07ZRG9e0fgx+NmxgvSmbznQNAW+4Pm7j8bEnaKzMitkGVSl7CRJG8n+px3urGf/pJ6x8xxaZ8Y1t9oM9qYDlQtxGdp+v9Rw52g6ds6071O0g8pYXMDht4qwBT2fvV0/2XtJZnVLCEVLj4N2/b9A8duqXMPlpVNPpvlum9tMSQPLHV43LYfYuiz3WZY6ZZLy3C8fKlrdeuDWT6Ockr41dts8dr/wiLWfnpnSSfXZpxj0TbrpXjNk3L2/XqLgl2r2ucaJwHRCHpr2sfSsNdHWAawG3sj1/pvQ/829lp6uy8Hl9cFJ/bufvUtieKxmH8VLOpGN/KvlpKePYzomJoWu7iFS7/ZGrb9yzPKLZhPHXMh37/zT8uO1Jo96RUnGcR3SH1z+q8zFeXe0832aLM799uu63f19s/7ZV0Td+oPCvSL2jvKGDhR2DowZz7+GDhXfnXeGQdHRnaJ++B/qlvGtl/HhdLS9nOebYNQajBWl/uaWacXlamNnvoNUjNOq7r8/W9ys4pFZ7UjHbwkxvUWOn2y80eBSgvr6iaaozXr952lbe4r4farEhPJlo8KdKX7nVyMIGdBNjAQWjBe21Qa3Waebcsu7lc2qndcSFpx57J0r/3Az0pEgZHLZt5XEjrHXiGn0yVZKmh3czqV42uRu+jorfRqVT7S4Pb7+ZtevaNpaf8BtOGPLCrawoPjFNSIe1GLvIvtjNh6UrFA6GQIjwjUntPn57oMGXM3WpmGuzvFKwTjCFpHU6vK849NM2ZcBTU5Yb15dave3pqdcrH2WC1+lS2ov//+qXyt6fKd5eBrhWdUGpV2/2s+3zGgxZOFQQXJYm3hXC0Z1JDYpdW5ry4LP/zs90vA580p7x0Ru/LUth0kSgBmhlTE4p1S0wSe/ss3tibSh06VPvuAqRjioSSrjRLN3tsfXaaF3lq/Coel81cXU4mwp9xURi62q3i6dh4f1W1jQ+nNpsua6vuUU+n6eNjPLDOZdoO7zWOnqf38qmLqDQo4yxb/nQ/JaW71cLGCQqMokvY1lhc1twUVahIUNKHpXzu/NU+W7xczXvDv5Kc5bSs81J3vsxJlz5nhxkPhKAf2h4YAbb5WvcFa3dFQ77K6draTehVhj7PW9WPTcYIm4p05rtJKkxfQ593/4Iu30ghzaLzcr+kxG1vZfv6XEHebLuNm+t1H0pi/bPeoosCoH4L90u34icGegcY286+34iFrLEe4T1bVE6v3KKpTwMHYUFOoH5pQEK0oE4Nv6XdI9SceXJr/nROM8f9Msz5dDEupHLd8tYkatTmyTg5AUyr451wUSLGiPmmflqd1Q3A0KPMwZTveaStepgLt+Jq9OzJPtidCe7+13pbh/vl0ne0yaX9zRofqj1GLWErbb1KqAEMxF4ahsusqBg9c2Xm4LiEdnsnGi8JBKO8dgSNnPgUpsMFk2VYHL034pftuS6RL5H6VVjBOle5LYOLSgyv2/BNmmtMNW7p1nJeFFo8kuaWUGvzJJdjo/++2T/M9eyuLm1QJ2yfGkKVtPn9e+R9sJvPGHNw1NWbby76C1tdP6vgrr55y1GdY218UWHq+hAB/K5NeKw1U9slhjKj4DWMB/rX/v3poPURnnTOXqe5e63pxXdP1iqPh5X6D3uxq6vMo+c+6ThcWD+D9TIitqOpn3lm51TwEj7tbsun+XUG2yiXXN7pLX1Tqslt1eqiuWZNdf+y9jO5acOYcT627E9Uwv4wbyE8nk5TCSuEcwD0QEx+l2Lgf29qQKE8PAnAkmUWgDGUbnF5aCfTWllp+WWdxb2yOvPk9vtNcX/J3eG2QBbFhYNdNmk4c0fb2Tu9a16a2ynSpRRrt2/6w8n9za/Wzmjdzf5k9cU1KUOxqfJjnfzX1xrt47D//zCfH668WNzM9WXgxv/xXrLH9j4C9EhMfRYTqfJA0kSFFM6VpbefzY+6cPi2edZreVxSTaxz4xcXus0Tdp6J3C25VCyfbK5anT0gYjbRpHjN83L/9LjRnG3fClmt7VZfNY0HfvXHBNdK1QeNelSrluwQPdVn2X/3ekdqP6gQ/G4n8+2qcLjYXfplEx9jEzonHTlAoMKyg95+SwBIIVjdCoWL+xokxsysqTdgAWSEnby9kTcu09Ja+e64ZXGHdW+ZzdUea0Qrq+V353UvZVuhkqxXpzEKbG6pCxKbWGRqjExxjcd6d/okMRiqNI1GKtdETcHlluc+v2J/6tkKkxLCDPtoyNp9smSJ7Vmp9XSjIBy1LaorR58FjH5A/o1S7/wH8AzOEI8xzEoZKTgZHt43HbDVIkWFZee58gAArbXAQjGSIgILk8725rWohI3/2a4uv1CRh+Y3FrfPEmcnpnuLCAArX9ETbCukzBHEJqrkd4ttKBAU15Zeoy9szM/qJVUxRv+GIfvWpJXSsAexWdFxNIJU6MFvpDiyqRlCPw9+lFB/4gXLje7nOIbcZqoHvUbdmezNTrzp1tlnXlpCAr4XbcpdguAzzJ309gkAtgVmoTAtVaklkjIm0TC3fXcY/MWHTnkPihPISb9fXnw5p7aTyYQWzD8zH9Yzx3kJ6rjS3pOipncvNXP44u7BRjgQfu3opV2neuGLEXIxOUkp4AE6/RZis+WwVble32p6urnLbXTjCm6b8Gel3ZeGp1OQRsrhL3jGwjC2rcbo679WvgNeB02Uu2iKCeYO5nYvAIA0jBWjp81ChzBIgtFUNaUt37EmKh1NIT1mWOvlcpb/3090AACdQ/UmrRmWG6ETgNSH0Qig4lAU2bhP0bpZxB8vH5rPmKgNXkirHR+38/Fh+jP5I7hLBFH9gz5Ggbys7i0Oqu1Q8p9QU8jF7QnYTIRc+fn8mLl3yv6Pf7anp/5i68DhbG0AXrdMCUcLXEDHs73mIMs1rI3ppBkzpbRHcTZDxbhi6891L3NB6hGgv68tlN3XZpJqCZQAlK3WZ1lzQ2fPRAHWMS+VCpss3A1l63Ch9x1YP7tdKXeEheb9J4RWoQD7CQzUIoRF4USfPQMV+qL/ZT1baJ7pDaePagxeKlGhiGEYu+FrLpx/3qKq71uh2v7EqaZwnz5nS42GupM50Cm3iwIAkP8FMEwwpcq1HnW8p9cQ8nZZ0eBWeNPOrGUJYzABOLM+6FORGbLNQ2epehu1Jh0FAA1OawDbBeDg7v1PpINsCNvjFYdalmE9ztkk9TW7LTlDAasW/7ngREO164uDnULb9R61LADrjzyAageDO9b0JVz6iCw8cvJ6JyY69U84At736Zp7cPtoHGyf59BhkDSjMcEU0exXtF5sUSxZJrtG1+u8rm4jcf/i8MqmotNEAABgH3nTY3hLUxumFAFwxPeL9l+nD78dWXIlomo1O+k6cXQA8e1pa6LAoyQLwNggG2Pz/5bQLa9kuzEjGVVaHbNhFjtITgjrxIra+VAdGOfuZ4IeT93cylqeVzkj54nrugC2j045PQ1CIBgxQkj3ooxZt2Stsg7fa9i87KLHWnnj3l4tqGIKd3zy//7+6qlDBACohICnUtF/51kHivzDuu1trGo5lNbER25gHTZZTzvA5WpWeGuXZxof25lNVI/HrPl2SKTOmTFXmnbjbB0eB2/om5/aJ+3mzwBed3lSH7SZAOz1A4AAYYQQUixTaL5bwiEdpt3RPSZnRhpfktPNZd9rl0jHxloV0RHF5VH3lr4Pq8RiFrsPsZZec9ienaTTeREJiGT3/33Nxv32SyaHY1nDpJSpoyf9po+S2/tYjZRm/7svfvNV7Gu7OfvBL6WYWbXsMnFUnnd50gggAHvrXw8AEClGCKHqbpbBREzDBJvxTUIvUrQl9VFC2OMoIgvpP7LRYQw9XOPbnvYSjhJAGZ+XcfExmJ6c+Oh0cojZiLG+peTJdqqf+P7ari4Tjd7b3omvzr6W4+iXw71291WzNfHDyybp5e7ywnQoexjlPXbj0C7GSxEBXme5Bx8AANaPDSkNAMYYIYqmlLP0Poq0WaQRCUPo0tQYssR90lMcn5rfUGV5axHSsckfezOBZ/d9/vyaP8MtqkaPQ9+8u68OOcHSJtlmZnsHH8Kquf6UTV/OQjzV7HCC2IzkTmyzqV1dKI8q28kElbMpcn72zEkrNi0SAH6XeVsEAAAGAAAAgA4A" | |
val audio = "{\"content\": \"$fableLibraryAudio\"}" | |
val config = "{\"encoding\": \"OGG_OPUS\", \"sampleRateHertz\": 16000, \"languageCode\": \"en-US\"}" | |
val json = "{\"config\": $config, \"audio\": $audio}"; | |
val request = HttpRequest.newBuilder() | |
.uri(URI.create("https://speech.googleapis.com/v1p1beta1/speech:recognize?key=$gcpApiKey")) | |
.timeout(Duration.ofMinutes(1)) | |
.header("Content-Type", "application/json") | |
.POST(HttpRequest.BodyPublishers.ofString(json)) | |
.build() | |
return client.send(request, HttpResponse.BodyHandlers.ofString()) | |
} | |
fun textToSpeechExample(): HttpResponse<String> { | |
val input = "{\"text\": \"The library is a quiet place.\"}" | |
val voice = "{\"languageCode\": \"en-US\"}" | |
val audioConfig = "{\"audioEncoding\": \"MP3\"}" | |
val json = "{\"input\": $input, \"voice\": $voice, \"audioConfig\": $audioConfig}"; | |
val request = HttpRequest.newBuilder() | |
.uri(URI.create("https://texttospeech.googleapis.com/v1/text:synthesize?key=$gcpApiKey")) | |
.timeout(Duration.ofMinutes(1)) | |
.header("Content-Type", "application/json") | |
.POST(HttpRequest.BodyPublishers.ofString(json)) | |
.build() | |
return client.send(request, HttpResponse.BodyHandlers.ofString()) | |
} | |
val speechToTextResponse = speechToTextExample() | |
println(speechToTextResponse.statusCode()) | |
println(speechToTextResponse.body()) | |
val textToSpeechResponse = textToSpeechExample() | |
println(textToSpeechResponse.statusCode()) | |
println(textToSpeechResponse.body()) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment