
Defining "NFT" in historical context
NFT is an odd three-letter acronym. Even the people who are involved in NFTs are not exactly sure how to define an NFT. No wonder the normie world is confused. Expanding the acronym just makes things worse: Non-Fungible Token is still ambiguous.Confusion intensifiesIs NFT just a receipt? Is it the actual artwork? What about editions? What even is a token? These details are being discussed even more among Historical / Vintage NFT communities because early NFTs have antique value. These early a...

Pushersleft
The StoryWith each piece in ART PONZI, I tried to tell a story about the entire collection. This is important for this 1st series. So far, the pieces in the collection referred to the collection’s genesis, its drop mechanics, the time of the drops (close to the merge), the glitch art style, on-chain immutability, and never-ending artistic tweaks. There are a couple of ways to interpret this piece, but the one I like is the story of artists and builders in web3, who are pushing the space forwa...

Release Notes: PEPERMANENT
Here’s the final piece:The quality is lowered here since I converted SVG into GIF formatLet’s talk about PEPERMANENT.How to confirm the permanence of PEPERMANENTWalkthrough on creating a fully on-chain NFT on BitcoinFinal wordsHow to confirm the permanence of PEPERMANENT1. Go to xchain explorer, and see the Issuances tab. Click View in the initial issuance transaction.Click the first transaction (issuance). The other transactions are about locking and making sure the asset is displayed correc...
https://linktr.ee/chainleft

Defining "NFT" in historical context
NFT is an odd three-letter acronym. Even the people who are involved in NFTs are not exactly sure how to define an NFT. No wonder the normie world is confused. Expanding the acronym just makes things worse: Non-Fungible Token is still ambiguous.Confusion intensifiesIs NFT just a receipt? Is it the actual artwork? What about editions? What even is a token? These details are being discussed even more among Historical / Vintage NFT communities because early NFTs have antique value. These early a...

Pushersleft
The StoryWith each piece in ART PONZI, I tried to tell a story about the entire collection. This is important for this 1st series. So far, the pieces in the collection referred to the collection’s genesis, its drop mechanics, the time of the drops (close to the merge), the glitch art style, on-chain immutability, and never-ending artistic tweaks. There are a couple of ways to interpret this piece, but the one I like is the story of artists and builders in web3, who are pushing the space forwa...

Release Notes: PEPERMANENT
Here’s the final piece:The quality is lowered here since I converted SVG into GIF formatLet’s talk about PEPERMANENT.How to confirm the permanence of PEPERMANENTWalkthrough on creating a fully on-chain NFT on BitcoinFinal wordsHow to confirm the permanence of PEPERMANENT1. Go to xchain explorer, and see the Issuances tab. Click View in the initial issuance transaction.Click the first transaction (issuance). The other transactions are about locking and making sure the asset is displayed correc...
https://linktr.ee/chainleft

Subscribe to Chainleft

Subscribe to Chainleft
Share Dialog
Share Dialog
>300 subscribers
>300 subscribers


Welcome to PERMANOISE.

PERMANOISE is an audiovisual art edition (10 / 10) airdropped for free to the owners of ITTN. It aims to explore the permanence boundaries of audiovisual art by putting an interactive audiovisual piece into Bitcoin multisig outputs.
These outputs are stored directly within the Bitcoin transaction data (not witness data like inscriptions) and cannot be pruned. Therefore this data is considered the most immutable storage within the blockchain space, as Bitcoin (as of 2023) has the most number of computers securing its blocks and storing its data.
This data was experimented with for artistic purposes a few times more in the past. Most notoriously, OLGA by JP Janssen, CCSATOSHI by Cornholio, PEPERMANENT by myself, and EVAS by Masteronchain. Stamps protocol later utilized the same method to store art on Bitcoin.
While OLGA, CCSATOSHI, and EVAS use raster image (png/jpg) encoding, PEPERMANENT uses SVG as the file format.
None of these formats are capable of producing audio. On the other hand, formats like MP4, MP3, M4A, and WAV require large file sizes which make it impossible to store on Bitcoin.
PERMANOISE achieves audio production through the HTML file format. HTMLs render in all browsers automatically. Since HTML also has a Web Audio Context feature built-in, it’s possible to produce audio or even melodies using HTML.
Below is the data of PERMANOISE, if you copy it into any browser’s search field, it will automatically display PERMANOISE.
Let’s now look at how to get this data from the Bitcoin blockchain.
1. Go to xchain explorer, and see the Issuances tab. Click View in the initial issuance transaction.

2. You can already see the data in the description here but the better method is copying the Bitcoin transaction hash into your clipboard and resolving the multisig output data either manually or through an API. This is what we’ll do now: Copy the transaction hash.

The hash for PERMANOISE is: d9ecf73d8b3a4a5f25846506127c036cd5fb41613073cc882c82e74e2c3dff2e
3. Now you have three choices. Choose one of the instructions below to extract the image URI.
3.a) Go to bitst.art and scroll down to the “description” field under events.

The visual part starts with data:text/html;base64,PCF…. and ends with **….bWw+
You can just copy-paste this whole thing within the “animation_url” element’s quotes to any browser’s search box and it’ll show you your fully onchain PERMANOISE.
3.b) Visit JP Janssen’s decoder referring to this transaction and scroll all the way down to the “Description” field. You’ll see the full data there.

The visual part starts with data:text/html;base64,PCF…. and ends with **….bWw+
You can just copy-paste this whole thing within the “animation_url” element’s quotes to any browser’s search box and it’ll show you your fully onchain PERMANOISE.
3.c) You can also do it manually. Follow JP Janssen’s guide and use the transaction where the data is added on-chain. Here’s the blockstream link to the Bitcoin transaction.
Note: The entire URI is a JSON file; but what you’re interested in is the animation, which is located inside the “animation_url” element of the JSON. In either option above in Step 3, the image element starts with data:image/svg…. and ends with …/svg%3e.
If you copy this string into any browser’s URL section, it’ll display the artwork.
Welcome to PERMANOISE.

PERMANOISE is an audiovisual art edition (10 / 10) airdropped for free to the owners of ITTN. It aims to explore the permanence boundaries of audiovisual art by putting an interactive audiovisual piece into Bitcoin multisig outputs.
These outputs are stored directly within the Bitcoin transaction data (not witness data like inscriptions) and cannot be pruned. Therefore this data is considered the most immutable storage within the blockchain space, as Bitcoin (as of 2023) has the most number of computers securing its blocks and storing its data.
This data was experimented with for artistic purposes a few times more in the past. Most notoriously, OLGA by JP Janssen, CCSATOSHI by Cornholio, PEPERMANENT by myself, and EVAS by Masteronchain. Stamps protocol later utilized the same method to store art on Bitcoin.
While OLGA, CCSATOSHI, and EVAS use raster image (png/jpg) encoding, PEPERMANENT uses SVG as the file format.
None of these formats are capable of producing audio. On the other hand, formats like MP4, MP3, M4A, and WAV require large file sizes which make it impossible to store on Bitcoin.
PERMANOISE achieves audio production through the HTML file format. HTMLs render in all browsers automatically. Since HTML also has a Web Audio Context feature built-in, it’s possible to produce audio or even melodies using HTML.
Below is the data of PERMANOISE, if you copy it into any browser’s search field, it will automatically display PERMANOISE.
Let’s now look at how to get this data from the Bitcoin blockchain.
1. Go to xchain explorer, and see the Issuances tab. Click View in the initial issuance transaction.

2. You can already see the data in the description here but the better method is copying the Bitcoin transaction hash into your clipboard and resolving the multisig output data either manually or through an API. This is what we’ll do now: Copy the transaction hash.

The hash for PERMANOISE is: d9ecf73d8b3a4a5f25846506127c036cd5fb41613073cc882c82e74e2c3dff2e
3. Now you have three choices. Choose one of the instructions below to extract the image URI.
3.a) Go to bitst.art and scroll down to the “description” field under events.

The visual part starts with data:text/html;base64,PCF…. and ends with **….bWw+
You can just copy-paste this whole thing within the “animation_url” element’s quotes to any browser’s search box and it’ll show you your fully onchain PERMANOISE.
3.b) Visit JP Janssen’s decoder referring to this transaction and scroll all the way down to the “Description” field. You’ll see the full data there.

The visual part starts with data:text/html;base64,PCF…. and ends with **….bWw+
You can just copy-paste this whole thing within the “animation_url” element’s quotes to any browser’s search box and it’ll show you your fully onchain PERMANOISE.
3.c) You can also do it manually. Follow JP Janssen’s guide and use the transaction where the data is added on-chain. Here’s the blockstream link to the Bitcoin transaction.
Note: The entire URI is a JSON file; but what you’re interested in is the animation, which is located inside the “animation_url” element of the JSON. In either option above in Step 3, the image element starts with data:image/svg…. and ends with …/svg%3e.
If you copy this string into any browser’s URL section, it’ll display the artwork.
data:text/html;base64,PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgYXJ0aXN0PSJDaGFpbmxlZnQiIGNvbnRlbnQ9Ik1vc3QgcGVybWFuZW50IGF1ZGlvdmlzdWFsIGFydCBpbiBodW1hbiBoaXN0b3J5IiBjaGFyc2V0PSJVVEYtOCI+PHRpdGxlPlBFUk1BTk9JU0U8L3RpdGxlPjxzdHlsZT4uY29udGFpbmVye2Rpc3BsYXk6ZmxleH0jcGxheS1hcmVhe3dpZHRoOjYzMHB4O2hlaWdodDo2MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9LnJkZHthbmltYXRpb24tbmFtZTpyYmw7YW5pbWF0aW9uLWR1cmF0aW9uOi4xczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0O2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9QGtleWZyYW1lcyByYmx7MCV7ZmlsbDojNGYwOTA5fTUwJXtmaWxsOiMwMDB9MTAwJXtmaWxsOiM0ZjA5MDl9fS5nbGl0Y2h7YW5pbWF0aW9uOmdsaXRjaCAuMXMgaW5maW5pdGV9QGtleWZyYW1lcyBnbGl0Y2h7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0yMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgycHgsLTJweCl9NDAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTJweCwycHgpfTYwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfTgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0ycHgsLTJweCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDJweCwycHgpfX08L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJjb250YWluZXIiPjxkaXYgaWQ9InBsYXktYXJlYSIgb25jbGljaz0idG9nZ2xlU291bmQoKSI+PHN2ZyB3aWR0aD0iNjMwIiBoZWlnaHQ9IjYzMCIgdmlld0JveD0iMCAwIDQ4MCA0ODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGZpbHRlciBpZD0iYiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUdyYXBoaWMiIHJlc3VsdD0idyIgc3RkRGV2aWF0aW9uPSI1Ii8+PGZlR2F1c3NpYW5CbHVyIGluPSJTb3VyY2VHcmFwaGljIiByZXN1bHQ9IngiIHN0ZERldmlhdGlvbj0iMTAiLz48ZmVNZXJnZT48ZmVNZXJnZU5vZGUgaW49InciLz48ZmVNZXJnZU5vZGUgaW49IngiLz48L2ZlTWVyZ2U+PC9maWx0ZXI+PGZpbHRlciBpZD0iYyIgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PGZlVHVyYnVsZW5jZSBiYXNlRnJlcXVlbmN5PSIwLjEiIHJlc3VsdD0icmVzdWx0MSIvPjxmZURpc3BsYWNlbWVudE1hcCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJyZXN1bHQxIiBzY2FsZT0iOSIvPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImEiPjxmZVR1cmJ1bGVuY2UgbnVtT2N0YXZlcz0iNSIgYmFzZUZyZXF1ZW5jeT0iMC4zIi8+PGZlRGlzcGxhY2VtZW50TWFwPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InNjYWxlIiBmcm9tPSI0NSIgdG89IjU1IiBkdXI9IjAuMnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+PC9mZURpc3BsYWNlbWVudE1hcD48L2ZpbHRlcj48cGF0aCBkPSJNMCAwaDYzMHY2MzBIMHoiLz48cGF0aCBkPSJtNDAgNTAwIDE0MCAyLTQgMTIwIDQwIDJ2MzVsMTQwIDItMiAzMDAtMzEwLTJtOTUyLTIzOUg2MzBsLTYtMjQwIDE3MCAydi00MGw0MCAyIDItNDAwTDk1NiA0IiBzdHlsZT0iZmlsdGVyOnVybCgjYSkiLz48cGF0aCBmaWxsPSIjNmRlM2I4IiBmaWxsLW9wYWNpdHk9IjAuOCIgZD0iTTgwIDE5MGgyMzB2MjMwSDgweiIvPjxwYXRoIGZpbGw9IiM2MjljODUiIGZpbGwtb3BhY2l0eT0iMC44IiBkPSJNMjAwIDUwaDI2MHYyNjBIMjAweiIvPjxnIGZpbHRlcj0idXJsKCNiKSI+PGcgaWQ9ImQiIGZpbGwtb3BhY2l0eT0iMC43IiBmaWx0ZXI9InVybCgjYykiIGNsYXNzPSJnYWIiPjxnIGZpbGw9IiM2MTY5NmIiPjxwYXRoIGQ9Ik0xNzcgMTNjLTQ5IDE1LTc4IDQxLTc2IDgxIDIgMjAgNiAxMjUgMTEgMTQ0IDQgMTEgNDQgMTE1IDUwIDEyNCAyIDMgOTMgNjQgODggNjAtMy0yNy0zMy0yMDctMzctMjE3LTctNDQtMTQtMTQwLTM3LTE5MnoiLz48cGF0aCBkPSJNMzkgMTg1Yy0yIDktMSA1NiAwIDY2IDQgNyA0IDMxIDM3IDQ4IDAgNyA2MSAuMDAyIDYzIDYtNDItNTQtNDItMTA4LTM4LTE2MC0yNCA2LTM3IDE2LTYyIDQxeiIvPjwvZz48cGF0aCBkPSJNMTc4IDEzYzI1IDQgMTEzLTIgMTQ0IDM3IDEzIDIxIDMwIDY3IDM1IDg2LTEgMzAtOSAxMDAtMTYgMTg2LTYgMS04NCAxMDUtODkgMTAxLTMtMjctMzMtMjA3LTM3LTIxNy03LTQ0LTIyLTE3Mi0zNy0xOTJ6bTIzOSAxMjhjLTMtMS0zNC04LTUzLTE5IDUgNjYgMSA4My03IDE1NiA1MC0xOSA1Mi0xNCA2NS0xOCAzLTYxIDAtMTAxLTUtMTE5eiIgZmlsbD0iI2YwZTJjNCIvPjxnIGZpbGw9IiMwNTA1MDUiIGNsYXNzPSJyYWIiPjxwYXRoIGQ9Ik0xNTggMTU1YzIgMTMgMTYgNTAgNiA3MCAzLTE0IDMtNjAtNi03MHptMTE5LTIwYy0yIDE0LTUgMjkgNyA3MC0yMC05IDUtNTMtNy03MHoiLz48cGF0aCBkPSJNMTYzIDI0OGM0IDAgMzMgNCAzNyA0bC0zLTI3Yy0xMC04LTgxLTE1LTcyIDExIDEyIDkgMTQgNyAzOSAxMnptOTUtNWMxNC0xNCAyMi0xNCA3OS00My00LTctNC0xMy03LTE4LTQtOS04MCAyNC03OCAzOC0xIDUgNCAxNSA2IDIzem0tNjQgODdjMTYgNSAzMSA4IDQ3IDEzIDEyLTYgMTYtMTEgNDctMzIgMCA5IDEgOSAyIDE3LTEyIDctMzYgMjItNDcgMzAtOS0zLTQzLTE0LTUzLTE3IDAgMSAyLTE2IDMtMTF6Ii8+PC9nPjwvZz48L2c+PHVzZSBocmVmPSIjZCIvPjwvc3ZnPjwvZGl2PjwvZGl2PjxzY3JpcHQ+Y29uc3QgYXVkaW9Db250ZXh0PW5ldyBBdWRpb0NvbnRleHQsb3NjaWxsYXRvckNvdW50PTQsb3NjaWxsYXRvcnM9W10saW50ZXJ2YWxzPVtdLGJhc2VGcmVxMT0yMCxiYXNlRnJlcTI9NTA7bGV0IGlzUGxheWluZz0hMSxjdXJyTm90ZT0xO2NvbnN0IHN2Z0VsZW1lbnRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5nYWIiKSxyZWRFbGVtZW50cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucmFiIik7ZnVuY3Rpb24gZ1NWRygpe3N2Z0VsZW1lbnRzLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LnRvZ2dsZSgiZ2xpdGNoIil9KX1mdW5jdGlvbiByU1ZHKCl7cmVkRWxlbWVudHMuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QudG9nZ2xlKCJyZGQiKX0pfWZ1bmN0aW9uIHBsYXlTb3VuZCgpe2lmKCFpc1BsYXlpbmcpe2lzUGxheWluZz0hMDtmb3IobGV0IGU9MDtlPDQ7ZSsrKXtsZXQgdD1hdWRpb0NvbnRleHQuY3JlYXRlT3NjaWxsYXRvcigpO3QudHlwZT0ic3F1YXJlIix0LmZyZXF1ZW5jeS52YWx1ZT0yMCsxMCplLHQuY29ubmVjdChhdWRpb0NvbnRleHQuZGVzdGluYXRpb24pLHQuc3RhcnQoKSxvc2NpbGxhdG9ycy5wdXNoKHQpfWxldCBsPW51bGw7bD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKDE9PT1jdXJyTm90ZSl7Zm9yKGxldCBlPTA7ZTw0O2UrKylvc2NpbGxhdG9yc1tlXS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoMjArMTAqZSxhdWRpb0NvbnRleHQuY3VycmVudFRpbWUpO2N1cnJOb3RlPTJ9ZWxzZXtmb3IobGV0IHQ9MDt0PDQ7dCsrKW9zY2lsbGF0b3JzW3RdLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZSg1MCsxMCp0LGF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSk7Y3Vyck5vdGU9MX19LDUwMCksaW50ZXJ2YWxzLnB1c2gobCl9fWZ1bmN0aW9uIHN0b3BTb3VuZCgpe2lzUGxheWluZyYmKGlzUGxheWluZz0hMSxvc2NpbGxhdG9ycy5mb3JFYWNoKGU9PmUuc3RvcCgpKSxvc2NpbGxhdG9ycy5sZW5ndGg9MCxpbnRlcnZhbHMuZm9yRWFjaChlPT5jbGVhckludGVydmFsKGUpKSxpbnRlcnZhbHMubGVuZ3RoPTApfWNvbnN0IHBsYXlBcmVhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5LWFyZWEiKTtwbGF5QXJlYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpc1BsYXlpbmc/KHN0b3BTb3VuZCgpLGdTVkcoKSxyU1ZHKCkpOihwbGF5U291bmQoKSxnU1ZHKCksclNWRygpKX0pOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+
data:text/html;base64,PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgYXJ0aXN0PSJDaGFpbmxlZnQiIGNvbnRlbnQ9Ik1vc3QgcGVybWFuZW50IGF1ZGlvdmlzdWFsIGFydCBpbiBodW1hbiBoaXN0b3J5IiBjaGFyc2V0PSJVVEYtOCI+PHRpdGxlPlBFUk1BTk9JU0U8L3RpdGxlPjxzdHlsZT4uY29udGFpbmVye2Rpc3BsYXk6ZmxleH0jcGxheS1hcmVhe3dpZHRoOjYzMHB4O2hlaWdodDo2MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9LnJkZHthbmltYXRpb24tbmFtZTpyYmw7YW5pbWF0aW9uLWR1cmF0aW9uOi4xczthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0O2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9QGtleWZyYW1lcyByYmx7MCV7ZmlsbDojNGYwOTA5fTUwJXtmaWxsOiMwMDB9MTAwJXtmaWxsOiM0ZjA5MDl9fS5nbGl0Y2h7YW5pbWF0aW9uOmdsaXRjaCAuMXMgaW5maW5pdGV9QGtleWZyYW1lcyBnbGl0Y2h7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwKX0yMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgycHgsLTJweCl9NDAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTJweCwycHgpfTYwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfTgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0ycHgsLTJweCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDJweCwycHgpfX08L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGNsYXNzPSJjb250YWluZXIiPjxkaXYgaWQ9InBsYXktYXJlYSIgb25jbGljaz0idG9nZ2xlU291bmQoKSI+PHN2ZyB3aWR0aD0iNjMwIiBoZWlnaHQ9IjYzMCIgdmlld0JveD0iMCAwIDQ4MCA0ODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGZpbHRlciBpZD0iYiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUdyYXBoaWMiIHJlc3VsdD0idyIgc3RkRGV2aWF0aW9uPSI1Ii8+PGZlR2F1c3NpYW5CbHVyIGluPSJTb3VyY2VHcmFwaGljIiByZXN1bHQ9IngiIHN0ZERldmlhdGlvbj0iMTAiLz48ZmVNZXJnZT48ZmVNZXJnZU5vZGUgaW49InciLz48ZmVNZXJnZU5vZGUgaW49IngiLz48L2ZlTWVyZ2U+PC9maWx0ZXI+PGZpbHRlciBpZD0iYyIgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+PGZlVHVyYnVsZW5jZSBiYXNlRnJlcXVlbmN5PSIwLjEiIHJlc3VsdD0icmVzdWx0MSIvPjxmZURpc3BsYWNlbWVudE1hcCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJyZXN1bHQxIiBzY2FsZT0iOSIvPjwvZmlsdGVyPjxmaWx0ZXIgaWQ9ImEiPjxmZVR1cmJ1bGVuY2UgbnVtT2N0YXZlcz0iNSIgYmFzZUZyZXF1ZW5jeT0iMC4zIi8+PGZlRGlzcGxhY2VtZW50TWFwPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InNjYWxlIiBmcm9tPSI0NSIgdG89IjU1IiBkdXI9IjAuMnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+PC9mZURpc3BsYWNlbWVudE1hcD48L2ZpbHRlcj48cGF0aCBkPSJNMCAwaDYzMHY2MzBIMHoiLz48cGF0aCBkPSJtNDAgNTAwIDE0MCAyLTQgMTIwIDQwIDJ2MzVsMTQwIDItMiAzMDAtMzEwLTJtOTUyLTIzOUg2MzBsLTYtMjQwIDE3MCAydi00MGw0MCAyIDItNDAwTDk1NiA0IiBzdHlsZT0iZmlsdGVyOnVybCgjYSkiLz48cGF0aCBmaWxsPSIjNmRlM2I4IiBmaWxsLW9wYWNpdHk9IjAuOCIgZD0iTTgwIDE5MGgyMzB2MjMwSDgweiIvPjxwYXRoIGZpbGw9IiM2MjljODUiIGZpbGwtb3BhY2l0eT0iMC44IiBkPSJNMjAwIDUwaDI2MHYyNjBIMjAweiIvPjxnIGZpbHRlcj0idXJsKCNiKSI+PGcgaWQ9ImQiIGZpbGwtb3BhY2l0eT0iMC43IiBmaWx0ZXI9InVybCgjYykiIGNsYXNzPSJnYWIiPjxnIGZpbGw9IiM2MTY5NmIiPjxwYXRoIGQ9Ik0xNzcgMTNjLTQ5IDE1LTc4IDQxLTc2IDgxIDIgMjAgNiAxMjUgMTEgMTQ0IDQgMTEgNDQgMTE1IDUwIDEyNCAyIDMgOTMgNjQgODggNjAtMy0yNy0zMy0yMDctMzctMjE3LTctNDQtMTQtMTQwLTM3LTE5MnoiLz48cGF0aCBkPSJNMzkgMTg1Yy0yIDktMSA1NiAwIDY2IDQgNyA0IDMxIDM3IDQ4IDAgNyA2MSAuMDAyIDYzIDYtNDItNTQtNDItMTA4LTM4LTE2MC0yNCA2LTM3IDE2LTYyIDQxeiIvPjwvZz48cGF0aCBkPSJNMTc4IDEzYzI1IDQgMTEzLTIgMTQ0IDM3IDEzIDIxIDMwIDY3IDM1IDg2LTEgMzAtOSAxMDAtMTYgMTg2LTYgMS04NCAxMDUtODkgMTAxLTMtMjctMzMtMjA3LTM3LTIxNy03LTQ0LTIyLTE3Mi0zNy0xOTJ6bTIzOSAxMjhjLTMtMS0zNC04LTUzLTE5IDUgNjYgMSA4My03IDE1NiA1MC0xOSA1Mi0xNCA2NS0xOCAzLTYxIDAtMTAxLTUtMTE5eiIgZmlsbD0iI2YwZTJjNCIvPjxnIGZpbGw9IiMwNTA1MDUiIGNsYXNzPSJyYWIiPjxwYXRoIGQ9Ik0xNTggMTU1YzIgMTMgMTYgNTAgNiA3MCAzLTE0IDMtNjAtNi03MHptMTE5LTIwYy0yIDE0LTUgMjkgNyA3MC0yMC05IDUtNTMtNy03MHoiLz48cGF0aCBkPSJNMTYzIDI0OGM0IDAgMzMgNCAzNyA0bC0zLTI3Yy0xMC04LTgxLTE1LTcyIDExIDEyIDkgMTQgNyAzOSAxMnptOTUtNWMxNC0xNCAyMi0xNCA3OS00My00LTctNC0xMy03LTE4LTQtOS04MCAyNC03OCAzOC0xIDUgNCAxNSA2IDIzem0tNjQgODdjMTYgNSAzMSA4IDQ3IDEzIDEyLTYgMTYtMTEgNDctMzIgMCA5IDEgOSAyIDE3LTEyIDctMzYgMjItNDcgMzAtOS0zLTQzLTE0LTUzLTE3IDAgMSAyLTE2IDMtMTF6Ii8+PC9nPjwvZz48L2c+PHVzZSBocmVmPSIjZCIvPjwvc3ZnPjwvZGl2PjwvZGl2PjxzY3JpcHQ+Y29uc3QgYXVkaW9Db250ZXh0PW5ldyBBdWRpb0NvbnRleHQsb3NjaWxsYXRvckNvdW50PTQsb3NjaWxsYXRvcnM9W10saW50ZXJ2YWxzPVtdLGJhc2VGcmVxMT0yMCxiYXNlRnJlcTI9NTA7bGV0IGlzUGxheWluZz0hMSxjdXJyTm90ZT0xO2NvbnN0IHN2Z0VsZW1lbnRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5nYWIiKSxyZWRFbGVtZW50cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucmFiIik7ZnVuY3Rpb24gZ1NWRygpe3N2Z0VsZW1lbnRzLmZvckVhY2goZT0+e2UuY2xhc3NMaXN0LnRvZ2dsZSgiZ2xpdGNoIil9KX1mdW5jdGlvbiByU1ZHKCl7cmVkRWxlbWVudHMuZm9yRWFjaChlPT57ZS5jbGFzc0xpc3QudG9nZ2xlKCJyZGQiKX0pfWZ1bmN0aW9uIHBsYXlTb3VuZCgpe2lmKCFpc1BsYXlpbmcpe2lzUGxheWluZz0hMDtmb3IobGV0IGU9MDtlPDQ7ZSsrKXtsZXQgdD1hdWRpb0NvbnRleHQuY3JlYXRlT3NjaWxsYXRvcigpO3QudHlwZT0ic3F1YXJlIix0LmZyZXF1ZW5jeS52YWx1ZT0yMCsxMCplLHQuY29ubmVjdChhdWRpb0NvbnRleHQuZGVzdGluYXRpb24pLHQuc3RhcnQoKSxvc2NpbGxhdG9ycy5wdXNoKHQpfWxldCBsPW51bGw7bD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKDE9PT1jdXJyTm90ZSl7Zm9yKGxldCBlPTA7ZTw0O2UrKylvc2NpbGxhdG9yc1tlXS5mcmVxdWVuY3kuc2V0VmFsdWVBdFRpbWUoMjArMTAqZSxhdWRpb0NvbnRleHQuY3VycmVudFRpbWUpO2N1cnJOb3RlPTJ9ZWxzZXtmb3IobGV0IHQ9MDt0PDQ7dCsrKW9zY2lsbGF0b3JzW3RdLmZyZXF1ZW5jeS5zZXRWYWx1ZUF0VGltZSg1MCsxMCp0LGF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSk7Y3Vyck5vdGU9MX19LDUwMCksaW50ZXJ2YWxzLnB1c2gobCl9fWZ1bmN0aW9uIHN0b3BTb3VuZCgpe2lzUGxheWluZyYmKGlzUGxheWluZz0hMSxvc2NpbGxhdG9ycy5mb3JFYWNoKGU9PmUuc3RvcCgpKSxvc2NpbGxhdG9ycy5sZW5ndGg9MCxpbnRlcnZhbHMuZm9yRWFjaChlPT5jbGVhckludGVydmFsKGUpKSxpbnRlcnZhbHMubGVuZ3RoPTApfWNvbnN0IHBsYXlBcmVhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5LWFyZWEiKTtwbGF5QXJlYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpc1BsYXlpbmc/KHN0b3BTb3VuZCgpLGdTVkcoKSxyU1ZHKCkpOihwbGF5U291bmQoKSxnU1ZHKCksclNWRygpKX0pOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+
No activity yet