Sr. 4Der says make this shape! (Episode 1)
JavaScript (Node.js), 428 bytes
Uses 0 instead of #.

_=&gt;Buffer('QaV6:)R/rEkQy|:|\\!8GG6Pzy}lO&lt;:xv-q,GoKfhfkci;Br&quot;? &amp;]N9Xx[}~tvc1Z6;%Fq6&gt;DO(9dGs&amp;sG~n@z},=x7]+Qo4y}~8Tr~&gt;45&lt;y#J;_a-^&quot;X=^:?`(8*QQh&quot;GQ.V0&gt;GBpa~ytaJYb^YJdo=/W&amp;59kP#@pZ-pYt-uLLe-lDv/kV|}.ylnY&lt;-$H@G&amp;H{h4PPL%q&amp;7t?1.?t}cI6Fcz-Nvo_wPUPP:Xh|tG0zp)lNIh`Ah-d&quot;t.+0L8&amp;}M6LK.Mr$4rH\'l(x4p4_v|[gdf-~9qo,c{U\\Vw(RCYJrd`^&amp;G[{Tr$PGPkS\'$iaBKm{q').reduce((p,c)=&gt;p*95n+BigInt(c-32),0n).toString(2).match(/.{62}/g).join`
`.split`1`.join` `

Try it online!
Not sure if it was intentional but, contrary to appearances, the tesseract is not symmetrical.
Storing only the upper part and encoding the differences for the lower part would most certainly be more efficient in some languages, but I didn't find a short enough way to do that in JS.
So this is just a binary to base-95 compression for now.
Note: With RegPack, we get 480 bytes. (Not a fully optimized version, but we could only shave a couple of bytes.)