NPPATUEYKCDHHL6EWTHOTGKSALSK4CCVLT2RCV5EJ635G2KYX3CAC
FUF7UH7ZXSZKMJU2P4TO6VLFKKE3Z3IFPAF5DDVJ7B3TALABJPMQC
XCLV7SQMLLOZ6SUV37JAZDXO2TYGBOWNQJROGUS3UX3C2IMSO2JQC
X4QWD6GRYJH7BLMT45K2ANUJEH4NMW3K6EM4IPLWS7GV77ELWDNAC
2H5FATK5SW2KU2LETE3MIOAMSW64QCETN522IENQRNQKTN7U3CMQC
OXC6WRLWA6L7JXBJXIKQE7UMGD4IU43MFSNWDUG6DO4ESKS3UHKAC
4TWVPDHW2HTVC6YD75MJOD6ITLQKPDFY2QD5M67H77ZNSJIR5BZAC
/* display: none; */
position: relative;
display: inline-block;
justify-content: center;
align-items: center;
background: rgb(238, 232, 243);
width: 100vw;
height: 100vh;
#algo_gate {
margin: auto;
position: relative;
justify-content: center;
align-items: center;
background: rgba(201, 161, 232, 0.111);
width: 70%;
height: 50%;
z-index: 500;
padding: 20px;
overflow-y: scroll;
border-radius: 30px;
}
#overlay_algo_gate {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
backdrop-filter: blur(10px); /* Adjust blur value as needed */
background-color: rgba(255, 255, 255, 0.5); /* Optional: for a colored overlay */
z-index: 498; /* Ensure it overlays other content */
text-align: center;
justify-content: center;
align-items: center;
}
#chats_title {
position: relative;
display: flex;
font-size: 40px;
font-family: 'Courier New', Courier, monospace;
color: rgb(237, 18, 229);
margin: auto;
z-index: 498;
text-align: center;
justify-content: center;
align-items: center;
}
#chats_disclosure {
position: relative;
display: flex;
font-size: 15px;
font-family: 'Courier New', Courier, monospace;
color: rgb(237, 18, 229);
margin: auto;
z-index: 498;
text-align: center;
justify-content: center;
align-items: center;
padding: 10px;
.section {
margin: auto;
font-family: 'Courier New', Courier, monospace;;
color: #de0bff;
}
.section p {
text-align: justify;
}
.outer_mux {
width: 90%;
height: 90%;
background: rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
border-radius: 5px;
padding: 10px; /* Increased padding */
margin: auto;
}
.inner_mux {
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
border-radius: 5px;
padding: 10px; /* Increased padding */
box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.2); /* Added inset box shadow for more distinct border */
}
width: 50%; /* Adjust as necessary */
height: auto;
aspect-ratio: 16 / 9; /* Adjust as necessary to maintain aspect ratio */
border: 15px solid #000; /* Soft Pink */
border-radius: 10px;
}
width: 100%;
height: 100%;
display: block;
background: rgba(0, 0, 0, 0.5);
}
font-size: 24px;
color: #FD49A0;
white-space: pre-wrap;
font-size: 35px;
color: #f21bf5;
overflow-wrap: break-word; /* Breaks the word to prevent horizontal scrolling */
padding: 10px; /* Optional: Adds padding around the text */
margin: 10px; /* Optional: Adds margin around the container */
width: 100%; /* Ensures that the container takes the full width */
color: #c108f9;
font-family: 'Courier New', Courier, monospace;
}
#modal_seed_message{
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 20px;
background-color: rgb(246, 207, 231);
border: 1px solid rgb(255, 252, 255);
border-radius: 10px;
box-shadow: 7px 7px 15px rgb(221, 65, 227), -4px -4px 13px #fff;
z-index: 1000;
color: white;
font-size: 16px;
font-weight: bold;
font-family: 'Courier New', Courier, monospace;
<div class='first_step'>If you require a place to store your notes securely and privaely, we enjoy using this <a href="https://www.protectedtext.com/" target="_blank">notepad</a>.</div>
<div class='first_step'>If you require a place to store your notes securely and privaely, we enjoy using this <a href="https://www.protectedtext.com/" target="_blank">Protected Text</a>.</div>
<div class="line-break0"></div>
<div class='first_step'>For mobile notifications, we use the decentralized messenger, <a href="https://elixxir.io/" target="_blank">xx messenger</a>. In our personal workflows, in practice, we first send the message within the philiSocial Chat, and then sent a @ or ! within xx messenger to notify our contacts.</div>
<div class='first_step'>The locally encrypted messages and files are uploaded to the <a href="https://www.arweave.org/" target="_blank">Arweave network</a> using the <a href="https://bundlr.network/" target="_blank">Bundlr Network</a>. The CIDs of your data are then stored on <a href="https://polybase.xyz/" target="_blank">Polybase</a>, within Polybase, the CIDs are stored under a single "collection"; this adds a "lost in the crowd" complexity to the message route. Please be mindful that the encrypted files are not guaranteed to be available indefinitely due the beta nature of PhiliaSocial Chat.</div>
<div class='first_step'>The locally encrypted messages and files are uploaded to the <a href="https://www.arweave.org/" target="_blank">Arweave network</a> using the <a href="https://irys.xyz/" target="_blank">Irys Network</a>. The CIDs of your data are then stored on <a href="https://polybase.xyz/" target="_blank">Polybase</a>, within Polybase, the CIDs are stored under a single "collection"; this adds a "lost in the crowd" complexity to the message route. Please be mindful that the encrypted files are not guaranteed to be available indefinitely due the beta nature of PhiliaSocial Chat.</div>
const texts = [
"Invite a daydream into your reality...",
"Keep the following question in mind...",
"What deeply caring words would you impart with your younger self in order to diminish the suffering you felt growing up? "
+ "What words would you use to ease the passage through this world?",
"Seek inspiration below; unearth the hidden information."
];
let currentTextIndex = 0;
let charIndex = 0;
const typingContainer = document.getElementById('the_question');
function typeCharacter() {
// Stop if all texts have been typed out
if (currentTextIndex >= texts.length) return;
// Type the next character if there are more characters in the current text
if (charIndex < texts[currentTextIndex].length) {
typingContainer.textContent += texts[currentTextIndex][charIndex];
charIndex++;
setTimeout(typeCharacter, getRandomDelay());
} else {
// When a text is fully typed, move on to the next text
currentTextIndex++;
charIndex = 0;
if (currentTextIndex < texts.length) { // Check if there are more texts to type
// Add a new line between texts
typingContainer.textContent += '\n';
setTimeout(typeCharacter, 1000); // Delay before starting next text
}
}
}
// The data you want to include with your transaction
const data = ethers.hexlify(ethers.toUtf8Bytes("hi hi there nowhere"));
let provider = new ethers.BrowserProvider(window.ethereum)
async function sending_post() {
// try {
// const transaction = {
// to: recipientAddress,
// value: amount,
// data: data, // This is the data field
// chainId: 1101,
// };
// Get Ether balance
// const etherBalance = await provider.getBalance(connectedAddress);
// const etherBalanceInEther = ethers.formatEther(etherBalance);
// console.log('Ether Balance:', etherBalanceInEther);
const signer = await provider.getSigner(connectedAddress);
const response = await fetch('https://usdethprice-philiasocial.replit.app/eth_price');
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
const res = await response.json();
// console.log(res)
const sevenUsdInEth = res.sevenUsdEth;
console.log(sevenUsdInEth)
const amount = ethers.parseEther(`${sevenUsdInEth}`);
const data = ethers.hexlify(ethers.toUtf8Bytes(data_string));
provider = new ethers.BrowserProvider(window.ethereum as any);
signer = await provider.getSigner(connectedAddress);
$("#generate_algo").click(function(){
sending_post();
});
function wordCount(text: string): number {
return text.split(/\s+/).filter(function(word: string) {
return word.length > 0;
}).length;
}
$("#generate_algo").click(function() {
const text: string = $("#zkevm_message").val() as string;;
if (wordCount(text) <= 500) {
sending_post(text);
} else {
showModal();
}
});
function showModal(): void {
const modal: HTMLElement | null = document.getElementById('modal_seed_message');
if (modal) {
modal.style.display = 'block';
setTimeout(closeModal, 4000); // Close the modal after 3 seconds
}
};
function closeModal(): void {
const modal: HTMLElement | null = document.getElementById('modal_seed_message');
if (modal) {
modal.style.display = 'none';
}
};
if (assoc_pass2 == 91) {
$("#input_label_button_pub_key").hide();
$("#input_label_button_contact_key").hide();
// $("#wallet_connected_chat").on('click', function () {
// // window.open(`https://explorer.testnet.polybase.xyz/collections/data_space%2Fcid`, '_blank');
// $("#container_algorand").show();
// });
const credentials = $("#association_algo_password2").val().toString().trim();
const split_credentials_chatId = credentials.substring(0, 48);
const split_credentials_private = credentials.substring(48, 91);
const htmlTemplate = `
<div class="line-break1"></div>
<div class="line-break0"></div>
<!-- <div class="wallet_connected_wrapper"> -->
<!-- <div id="wallet_connected_chat"></div> -->
<div class="line-break1"></div>
<div class="line-break0"></div>
<div id="wrapper_picker">
<div id="picker"></div>
<div id="wrapper_username"></div>
</div>
<div class="line-break1"></div>
<div id="fs_button_loader_wrapper1">
<div id="wrapper_message_tools1">
<div id="blur_mess" class="boxes">
<i class="chat_space fa-solid fa-mask"></i>
</div>
<div id="add_file" class="boxes">
<i class="chat_space fa-solid fa-plus">
<input type="file" id="file-input" accept="audio/mpeg, audio/x-m4a, audio/wav, audio/flac, video/mp4, video/quicktime, image/png, image/jpeg, text/plain, application/pdf" style="display: none">
</i>
</div>
<div id="refresh" class="boxes">
<i class="chat_space fa-solid fa-at"></i>
</div>
</div>
</div>
<div class="line-break0"></div>
<div id="wallet_connected_text_id"></div>
<!-- <div class="line-break1"></div> -->
<div id="wrapper_glass"></div>
<div id="in_out_messages">
<div class="text_area_data"></div>
<div id="text_area_landing"></div>
</div>
<div class="line-break0"></div>
<div id="fs_button_loader_wrapper2">
<div id="wrapper_message_tools2">
<div id="latest_mess" class="boxes">
<i class="chat_space fa-solid fa-camera-retro"></i>
</div>
<div id="voice_recording" class="boxes">
<i class="chat_space fa-solid fa-microphone"></i>
</div>
<div id="stop_recording" class="boxes">
<div class="chat_space" id="stop_message">Recording/Stop...</div>
</div>
<div id="headset" class="boxes">
<i class="chat_space fa-solid fa-headset"></i>
</div>
<div id="lock_mess" class="boxes">
<i class="chat_space fa-solid fa-paper-plane"></i>
</div>
</div>
</div>
<div id="anchor_file_names"></div>
<!-- <textarea id="messages" name="message" placeholder="Message"></textarea> -->
<div id="messages" contenteditable="true"></div>
<div class="line-break1"></div>
`;
$("#wallet_connected_chat").on('click', function () {
window.open(`https://explorer.testnet.polybase.xyz/collections/data_space%2Fcid`, '_blank');
});
const split_credentials_chatId = credentials.substring(0, 48);
const split_credentials_private = credentials.substring(48, 91);
try {
await initial_text_area_view();
get_latest_note();
} catch (error) {
// let global_chat_space_key = split_credentials_chatId;
if (credentials.length == 91 && split_credentials_chatId.length == 48 && split_credentials_private.length == 43) {
$('#overlay_algo_gate').show();
$('#algo_gate').show();
$('#chats_title').show();
$('#chats_disclosure').show();
// setTimeout(() => {
// // $(".fa-clipboard-check").remove();
// $("#copy_field").html(`Copy`);
// }, 2000);
// }
// Create a new HTML element with a unique id based on split_credentials_chatId
const newElement = $(`<div id="wallet_connected_chat_${split_credentials_chatId}"></div>`);
// Add a class to the new element
newElement.addClass('wallet_connected_chat');
// Append the new element to the DOM, for example, to the body element
$('#algo_gate').append(newElement);
// Append a divider element to create space
$('#algo_gate').append('<div class="line-break1"></div>');
// Update the content of the new element
$(`#wallet_connected_chat_${split_credentials_chatId}`).html(`${credentials}`);
// Set up a click event listener on the new element
$(`#wallet_connected_chat_${split_credentials_chatId}`).on('click', async function() {
const credentials2 = $(`#wallet_connected_chat_${split_credentials_chatId}`).text();
// const get_pub_key = $("#input_label_button_pub_key").html() === `Return Home`;
// // const get_contact_key = $("#input_label_button_contact_key").html() === `Before continuing, be sure to copy the Chat-Id and store it safely. Founder, share the Chat-Id with your Partner by creating and sharing a new Cryptgeon note. At this time both of you should have: each other's Public-Key; your Public-Key; your Private-Key; lastly, the Chat-Id. When you are ready to proceed, click this text.`;
// // const get_contact_key2 = $("#input_label_button_contact_key").html() === `To ensure the security of your Chat space please follow these steps: first, copy and store safely the Encrypted Credentials. Next, use Cryptgeon to generate a sharable link containing the Encrypted Credentials; share this link with your Partner. Remind your Partner to visit the farfalla@ web app to decrypt the Encrypted Credentials. Your Unencrypted and Decrypted Credentials are ready to be use to enter the Chat space you have created. When you are ready, click this text to refresh the web app.`;
global_chat_space_key = split_credentials_chatId2;
chat_space_private = split_credentials_private2;
// });
// Function to confirm that text has been copied
function confirmCopied(): void {
$(".fa-copy").remove();
$("#copy_field").html("Copied!");
setTimeout(() => {
$("#copy_field").html("Copy");
}, 2000);
}
// Function to handle the click event on the copy field
async function handleCopyFieldClick(): Promise<void> {
const isReturnHome = $("#input_label_button_pub_key").html() === "Return Home";
if (isReturnHome) {
try {
const textToCopy = $("#association_algo_password").val() as string;
await navigator.clipboard.writeText(textToCopy);
confirmCopied();
} catch (error) {
console.error("Failed to copy text: ", error);
}
}
}
$( "#blur_mess" ).on('click', function() {
// $('#gif').on('click', async function () {
// const response = await fetch(`https://api.giphy.com/v1/gifs/trending?api_key=${"O2LqnkYYdR5ckdntfpOINQLjmsOX1OKH"}&limit=10`);
// const data = await response.json();
// const gifs = data.data;
const main_message = $( "#messages" );
colorPicker.on('color:change', function(color) {
main_message.css('color',`${color.hexString}`);
});
// const mountNode = document.getElementById('container_algorand'); // Replace with the ID of the element where you want to render the GIFs
const uploadDiv = document.getElementById("add_file");
const input = document.getElementById("file-input") as HTMLInputElement;
input.addEventListener("change", handleUpload);
uploadDiv.addEventListener("click", () => input.click());
// gifs.forEach((gif) => {
// const img = document.createElement('img');
// img.src = gif.images.original.url;
// img.alt = gif.title;
// mountNode.appendChild(img);
// });
// });
$('#headset').on('click', async function () {
const newUUID = uuid_generate();
// https://c2c.mirotalk.com/join?room=${newUUID}&name=li
const randomName = uniqueNamesGenerator({ dictionaries: [adjectives, colors, animals] });
const videoChatUrl = `https://c2c.mirotalk.com/join?room=${newUUID}&name=${randomName}`;
window.open(videoChatUrl, '_blank');
async function handleUpload() {
});
const file = input.files[0];
const allowedTypes = [
"audio/mpeg",
"audio/x-m4a",
"audio/wav",
"audio/flac",
"audio/webm;codecs=opus",
"audio/mp3",
"video/mp4",
"video/quicktime",
"image/png",
"image/jpeg",
"text/plain",
"application/pdf",
"image/gif",
];
try {
if (file.size > 60 * 1024 * 1024) {
// console.log("File size is too large. Maximum file size is 100MB.");
} else if (!allowedTypes.includes(file.type)) {
} else {
$( "#anchor_file_names" ).append(`
<div class="file_name">
${file.name}
<div class="line-break0"></div>
</div>
`);
await encryptUploadedFile("", file, file.type);
};
} catch (error) {
// console.log(error);
};
};
colorPicker.on('color:change', function(color) {
main_message.css('color',`${color.hexString}`);
$('#anchor_file_names').on('click touchend', function(event) {
if ($(event.target).is('.file_name')) {
let index = $(event.target).index();
$(event.target).remove();
uploadedFiles.splice(index, 1);
}
});
const uploadDiv = document.getElementById("add_file");
const input = document.getElementById("file-input") as HTMLInputElement;
input.addEventListener("change", handleUpload);
uploadDiv.addEventListener("click", () => input.click());
let counting_separator = 1;
async function unlock_button(links){
//// remove file name from the uploadedFiles array
const lineBreak0 = $('<div>', {class: 'line-break0'});
const lineBreak1 = $('<div>', {class: 'line-break0'});
const separator = $('<div>', {class: 'separator'});
const counter = $('<div>', {class: 'separator_counter', id:`separator_counter_${links}`, text: `${counting_separator++}`});
let mess_elem: JQuery<HTMLElement>;
let unlockElem: JQuery<HTMLElement>;
$('#anchor_file_names').on('click touchend', function(event) {
if ($(event.target).is('.file_name')) {
let index = $(event.target).index();
$(event.target).remove();
uploadedFiles.splice(index, 1);
}
mess_elem = $('<div>', {class: 'mess_elem', id: `${links}_anchor`})
unlockElem = $('<div>', {class: 'chat_space unlockElem', id: `${links}`})
.append(svgButton);
// public public_k: string;
public private_k: string;
// public additional: string;
try{
// await loop_algorand();
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch(error) {
// console.log(error)
}
});
// this.public_k = public_k;
this.private_k = private_k;
// this.additional = additional;
mediaRecorder = new Recorder();
mediaRecorder.start();
$('#voice_recording').hide();
$('#stop_recording').show();
});
$("#stop_recording").on('click', async () => {
$('#voice_recording').show();
$('#stop_recording').hide();
mediaRecorder.stop()
const blob = mediaRecorder.getWAVBlob();
const fileSize = blob.size / (1024 * 1024); // Size in MBs
if (fileSize > 30) {
$("#anchor_file_names").append(`
<div class="file_name">
<div id="chat_space">Max audio duration reached.</div>
<div class="line-break0"></div>
</div>
`);
setTimeout(function() {
$("#chat_space").remove();
}, 3000);
return;
}
// Create a new File object from the Blob with a unique filename
const file = new File([blob], `${uuid_generate()}.wav`);
// Display the filename in the UI and encrypt the uploaded file
$("#anchor_file_names").append(`
<div class="file_name">
${file.name}
<div class="line-break0"></div>
</div>
`);
await encryptUploadedFile("", file, `audio/wav`);
mediaRecorder.destroy().then(function () {
mediaRecorder = null;
});
});
}
$('#headset').on('click', async function () {
const newUUID = uuid_generate();
// https://c2c.mirotalk.com/join?room=${newUUID}&name=li
const randomName = uniqueNamesGenerator({ dictionaries: [adjectives, colors, animals] });
const videoChatUrl = `https://c2c.mirotalk.com/join?room=${newUUID}&name=${randomName}`;
window.open(videoChatUrl, '_blank');
});
$('#lock_mess').on('click', async function(){
try {
const encryption = new Encryption(chat_space_private);
// const chat_id = await get_chat_space_key();
if (main_message.html().length > 0){
const timestamp_box = $( "#association_algo_password4" ).val().toString();
// Get the HTML content of the message and replace <br> tags with !@#$
let replaced_message = main_message.html().toString().replace(/<br>/g, "!@##@!");
const complete_message = `${timestamp_box}: ${replaced_message}`;
// Default MIME type
let mimeType = 'text/plain';
const blob = new Blob([complete_message], {type: mimeType});
const file = new File([blob], `${uuid_generate()}.txt`);
await encryptUploadedFile(`${colorPicker.color.hexString}`, file, mimeType);
};
if ( uploadedFiles.length > 0) {
$("#wrapper_message_tools1").hide();
$("#wrapper_message_tools2").hide();
$('#fs_button_loader_wrapper1').append(`
<div class="chat_space" id="a_message">Working...</div>
`);
$("#fs_button_loader_wrapper1").show();
// $("#fs_button_loader_wrapper2").show();
storeFiles(uploadedFiles).then( async (cid_res) => {
const epochTimestamp = Math.floor(new Date().getTime() / 1000);
// const epochTimestamp_encoded = encode_base64(`${epochTimestamp}`).replace(/=+$/, '');
const message_id = password().replace(/=+$/, '');
const uint8Array_cid = new TextEncoder().encode(cid_res);
const cid_encrypted = await encryption.encrypt(uint8Array_cid);
const cid_encrypted_enc = vec_to_base64( cid_encrypted).replace(/=+$/, '');
async function createRecord () {
await collectionReference.create([message_id, global_chat_space_key, epochTimestamp ,cid_encrypted_enc]);
}
createRecord().then(() => {
$("#wrapper_message_tools1").show();
$("#wrapper_message_tools2").show();
uploadedFiles = [];
main_message.text(``);
$('.file_name').text(``)
$("#a_message").remove();
});
});
};
} catch (error) {
// console.log(error)
};
});
async decrypt(data: Uint8Array) {
return encrypt_or_decrypt_files2("decrypt", this.private_k, data);
};
};
$("#refresh").addClass("animated");
// Open the new window after the transition or animation has completed
setTimeout(function() {
$('#container_algorand').remove();
$("#association_algo_password2").val("")
}, 500);
});
$('#fs_button_loader_wrapper1').append(`
<div class="chat_space" id="a_message">Working...</div>
`);
async function composition_notes(links) {
try {
// Wait for all the outer promises to resolve
await Promise.all(
links.map(async (note) => {
// Create an array of promises for the inner loop
const innerPromises = note.map((x) => {
const arweave_obj_id = uuid_generate();
const encryption = new Encryption(chat_space_private);
// console.log(chat_space_key);
// Read the file as an ArrayBuffer
const buffer = await new Response(file).arrayBuffer();
const textEnc = new TextEncoder()
const uint8Array_col = textEnc.encode(coloring);
const uint8Array_lab = textEnc.encode(labels);
// Chain the unlock_button() promise without using async/await within the map
return unlock_button(arweave_obj_id);
});
// Encrypt the file
const encryptedColoring = await encryption.encrypt(uint8Array_col);
const encryptedFile = await encryption.encrypt(new Uint8Array(buffer));
// const encryptedFile = await encrypt_file(chat_space_key, new Uint8Array(buffer));
const encryptedLabels = await encryption.encrypt(uint8Array_lab);
const colo_enc = vec_to_base64(encryptedColoring);
const file_enc = vec_to_base64(encryptedFile);
const labels_enc = vec_to_base64(encryptedLabels);
// Create the object and the blob
const obj = { fh: colo_enc, fl:labels_enc, fd: file_enc }
uploadedFiles.push(obj);
$("#wrapper_message_tools1").show();
$("#wrapper_message_tools2").show();
// Wait for all the inner promises to resolve
await Promise.all(innerPromises);
})
);
} catch (error) {
// Handle the error
}
}
async function composition_notes(links) {
try {
// Wait for all the outer promises to resolve
await Promise.all(
links.map(async (note) => {
// Create an array of promises for the inner loop
const innerPromises = note.map((x) => {
const arweave_obj_id = uuid_generate();
interface EncryptedFileResult {
index: number;
result: string;
}
if ($('#a_message').length === 0) {
$('#fs_button_loader_wrapper1').append(`
<div class="chat_space" id="a_message">Working...</div>
`);
}
$("#wrapper_message_tools1").show();
$("#wrapper_message_tools2").show();
$("#a_message").remove();
interface EncryptedFileResult {
index: number;
result: string;
}
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch (error) {
} finally {
$("#fs_button_loader_wrapper1").show();
}
};
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch (error) {
// console.error(error);
} finally {
$("#fs_button_loader_wrapper1").show();
}
};
} catch (error) {
console.error(error);
}
}
if (cache.has(cacheKey)) {
return { result: cache.get(cacheKey), index };
}
try{
const response = await fetch('https://arweavephiliasocial.replit.app', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
files
})
});
const data = await response.json();
// console.log(data.cid)
return data.cid;
}catch(error){
// console.log(error)
}
};
// console.log(data);
let index = fetch_data_links_ids.indexOf(link);
// If the id is not found in the array, return null
if(index === -1) return null;
// Otherwise, return the corresponding element from the array_link array
return fetch_data_links[index];
try{
const response = await fetch('https://arweavephiliasocial.replit.app', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
files
})
});
const data = await response.json();
// console.log(data.cid)
return data.cid;
}catch(error){
// console.log(error)
}
};
// let separator_counter = [];
const target = $(event.target);
const unlockElem = target.closest('.unlockElem');
if (!unlockElem.length) return;
const id = unlockElem.attr('id');
const fileSize = blob.size / (1024 * 1024); // Size in MBs
try{
await loop_algorand(global_chat_space_key,chat_space_private);
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch(error) {
// console.log(error)
}
// Display the filename in the UI and encrypt the uploaded file
$("#anchor_file_names").append(`
<div class="file_name">
${file.name}
<div class="line-break0"></div>
</div>
`);
await encryptUploadedFile("", file, `audio/wav`);
mediaRecorder.destroy().then(function () {
mediaRecorder = null;
});
const message_algo_main_sanitized = sanitize_base64(x.data.port);
if (main_message.html().length > 0){
const timestamp_box = $( "#association_algo_password4" ).val().toString();
// Get the HTML content of the message and replace <br> tags with !@#$
let replaced_message = main_message.html().toString().replace(/<br>/g, "!@##@!");
const complete_message = `${timestamp_box}: ${replaced_message}`;
const blob = new Blob([complete_message], {type: 'text/plain'});
const file = new File([blob], `${uuid_generate()}.txt`);
await encryptUploadedFile(`${colorPicker.color.hexString}`, file, `text/plain`);
};
processArrayNotes(latestMessages)
console.log('2')
previous_mess_loop = set_array_notes_len;
$("#wrapper_message_tools1").hide();
$("#wrapper_message_tools2").hide();
$('#fs_button_loader_wrapper1').append(`
<div class="chat_space" id="a_message">Working...</div>
`);
$("#fs_button_loader_wrapper1").show();
// $("#fs_button_loader_wrapper2").show();
// } catch(error){
// console.error(error);
// };
let fetch_data_links = [];
let fetch_data_links_ids = [];
const formatMIMETypes = {
"audio/mpeg": "audio/mpeg",
"audio/mp3": "audio/mp3",
"audio/x-m4a": "audio/x-m4a",
"audio/wav": "audio/wav",
"audio/flac": "audio/flac",
"audio/webm;codecs=opus": "audio/webm;codecs=opus",
"video/mp4": "video/mp4",
"video/quicktime": "video/quicktime",
"image/png": "image/png",
"image/jpeg": "image/jpeg",
"text/plain": "text/plain",
"application/pdf": "application/pdf",
};
const format = decrypted_label_decoded;
const mimeType = formatMIMETypes[format];
let index = fetch_data_links_ids.indexOf(link);
// If the id is not found in the array, return null
if(index === -1) return null;
// Otherwise, return the corresponding element from the array_link array
return fetch_data_links[index];
const audioBlob = new Blob([decrypted_data], {type: mimeType});
const audioUrl = URL.createObjectURL(audioBlob);
const lineBreak0 = $('<div>', {class: 'line-break0'});
const lineBreak1 = $('<div>', {class: 'line-break0'});
const separator = $('<div>', {class: 'separator'});
const counter = $('<div>', {class: 'separator_counter', id:`separator_counter_${links}`, text: `${counting_separator++}`});
let mess_elem: JQuery<HTMLElement>;
let unlockElem: JQuery<HTMLElement>;
} else if (mimeType.startsWith("video/")) {
mess_elem = $('<div>', {class: 'mess_elem', id: `${links}_anchor`})
unlockElem = $('<div>', {class: 'chat_space unlockElem', id: `${links}`})
.append(svgButton);
$.when($(`#${id}_anchor`).append(
$('<video>', {src: videoUrl,class: "rendered_vid"})
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
$( ".text_area_data" )
.append(lineBreak0)
.append(mess_elem).append(unlockElem)
.append(lineBreak1)
.append(counter).append(separator)
Plyr.setup('.rendered_vid', {
controls: ['play', 'progress', 'current-time', 'mute', 'settings', 'fullscreen'],
autoplay: false,
});
});
$( ".text_area_data" ).on('click', (event) => {
$.when($(`#${id}_anchor`).append(
$('<img>', {src: reader.result as string, class: "rendered_img"})
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
} else if (mimeType.startsWith("text/")) {
// let separator_counter = [];
const target = $(event.target);
const unlockElem = target.closest('.unlockElem');
if (!unlockElem.length) return;
const id = unlockElem.attr('id');
let decrypted_text_decoded = decoder.decode(decrypted_data);
// Replace the ID with <br>
let replaced_text = decrypted_text_decoded.replace(/!@##@!/g, "<br>");
// Find URLs using regular expression and replace them with anchor tags
let urlRegex = /((https?:\/\/)|(www\.))[^<\s]+/g;
let linked_text = replaced_text.replace(urlRegex, function(url) {
let urlWithProtocol = url.startsWith('http') ? url : 'http://' + url;
return `<a href="${urlWithProtocol}" target="_blank">${url}</a>`;
});
// Create a new jQuery object with the replaced text as its HTML content
let text = $('<div>').html(linked_text);
text.css('color', decrypted_hex_decoded);
// $(`#${id}_anchor`).append(text);
$.when($(`#${id}_anchor`).append(text)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
} else if (mimeType.startsWith("application/")) {
$(`#separator_counter_${id}`).text(`Decrypting...`);
$.when($(`#${id}_anchor`).append(
`<a href="${pdfUrl}" target="_blank"><span class="chat_space fa-solid fa-file-pdf"></span></a>`
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
let mess_count_var_loop = 0;
let previous_mess_loop = 0;
// FUNCTIONS FOR THE CHAT SPACE
await initial_text_area_view();
get_latest_note(global_chat_space_key,chat_space_private);
}, 300); // 500 is the delay in milliseconds, adjust as necessary
});
// Mark this split_credentials_chatId as added
addedChatIds.add(split_credentials_chatId);
}
try{
await loop_algorand();
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch(error) {
// console.log(error)
// Function to confirm that text has been copied
function confirmCopied(): void {
$(".fa-copy").remove();
$("#copy_field").html("Copied!");
setTimeout(() => {
$("#copy_field").html("Copy");
}, 2000);
}
// Function to handle the click event on the copy field
async function handleCopyFieldClick(): Promise<void> {
const isReturnHome = $("#input_label_button_pub_key").html() === "Return Home";
if (isReturnHome) {
try {
const textToCopy = $("#association_algo_password").val() as string;
await navigator.clipboard.writeText(textToCopy);
confirmCopied();
} catch (error) {
console.error("Failed to copy text: ", error);
const encryption = new Encryption(chat_space_private);
// const chat_id = await get_chat_space_key();
listRecordsWithFilter(global_chat_space_key).then((records)=>{
records.data.map(x =>{
// console.log(x.data.port)
const message_algo_main_sanitized = sanitize_base64(x.data.port);
encryption.decrypt(message_algo_main_sanitized)
.then(decrypted_algo_main => {
const decrypted_algo_main_decoded = decoder.decode(decrypted_algo_main);
array_notes.push(decrypted_algo_main_decoded)
});
});
}).then(async () => {
// try{
// // const set_array_notes = array_notes.reverse();
const set_array_notes = array_notes;
const set_array_notes_len = set_array_notes.length;
if (previous_mess_loop === 0) {
previous_mess_loop = array_notes.length;
// console.log(previous_mess_loop)
processArrayNotes(array_notes)
};
if (set_array_notes_len > previous_mess_loop) {
mess_count_var_loop = set_array_notes_len - previous_mess_loop;
const latestMessages = set_array_notes.slice(-mess_count_var_loop);
// console.log(latestMessages)
processArrayNotes(latestMessages)
previous_mess_loop = set_array_notes_len;
};
// } catch(error){
// console.error(error);
// };
// Attach the click event listener
$(document).ready(() => {
$("#copy_field").on("click", handleCopyFieldClick);
const formatMIMETypes = {
"audio/mpeg": "audio/mpeg",
"audio/mp3": "audio/mp3",
"audio/x-m4a": "audio/x-m4a",
"audio/wav": "audio/wav",
"audio/flac": "audio/flac",
"audio/webm;codecs=opus": "audio/webm;codecs=opus",
"video/mp4": "video/mp4",
"video/quicktime": "video/quicktime",
"image/png": "image/png",
"image/jpeg": "image/jpeg",
"text/plain": "text/plain",
"application/pdf": "application/pdf",
};
const format = decrypted_label_decoded;
const mimeType = formatMIMETypes[format];
// public public_k: string;
public private_k: string;
// public additional: string;
if (mimeType.startsWith("audio/")) {
const audioBlob = new Blob([decrypted_data], {type: mimeType});
const audioUrl = URL.createObjectURL(audioBlob);
$.when($(`#${id}_anchor`).append(
$('<audio>', {src: audioUrl, class: "rendered_audio", style: "--plyr-audio-controls-background: #eee;"})
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
constructor(private_k: string) {
$.when($(`#${id}_anchor`).append(
$('<video>', {src: videoUrl,class: "rendered_vid"})
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
$("#wrapper_message_tools1").hide();
$("#wrapper_message_tools2").hide();
Plyr.setup('.rendered_vid', {
controls: ['play', 'progress', 'current-time', 'mute', 'settings', 'fullscreen'],
autoplay: false,
});
});
} else if (mimeType.startsWith("image/")) {
$.when($(`#${id}_anchor`).append(
$('<img>', {src: reader.result as string, class: "rendered_img"})
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
} else if (mimeType.startsWith("text/")) {
let decrypted_text_decoded = decoder.decode(decrypted_data);
// Replace the ID with <br>
let replaced_text = decrypted_text_decoded.replace(/!@##@!/g, "<br>");
// Find URLs using regular expression and replace them with anchor tags
let urlRegex = /((https?:\/\/)|(www\.))[^<\s]+/g;
let linked_text = replaced_text.replace(urlRegex, function(url) {
let urlWithProtocol = url.startsWith('http') ? url : 'http://' + url;
return `<a href="${urlWithProtocol}" target="_blank">${url}</a>`;
});
// Create a new jQuery object with the replaced text as its HTML content
let text = $('<div>').html(linked_text);
text.css('color', decrypted_hex_decoded);
// $(`#${id}_anchor`).append(text);
$.when($(`#${id}_anchor`).append(text)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
} else if (mimeType.startsWith("application/")) {
const pdfBlob = new Blob([decrypted_data], {type: 'application/pdf'});
const pdfUrl = URL.createObjectURL(pdfBlob);
$.when($(`#${id}_anchor`).append(
`<a href="${pdfUrl}" target="_blank"><span class="chat_space fa-solid fa-file-pdf"></span></a>`
)).done(function(){
$(`#separator_counter_${id}`).text(separator_count_text);
});
};
} catch(error) {
// console.log(error)
}
};
} catch(error) {
// console.log(error)
}
$('#fs_button_loader_wrapper1').append(`
<div class="chat_space" id="a_message">Working...</div>
`);
$('#latest_mess').on('click', async function(){
const encryption = new Encryption(chat_space_private);
// console.log(chat_space_key);
// Read the file as an ArrayBuffer
const buffer = await new Response(file).arrayBuffer();
const textEnc = new TextEncoder()
const uint8Array_col = textEnc.encode(coloring);
const uint8Array_lab = textEnc.encode(labels);
try{
// await loop_algorand();
const elements = document.querySelectorAll('.separator');
const lastElement = elements[elements.length - 1];
lastElement.scrollIntoView();
} catch(error) {
// console.log(error)
}
});
// Encrypt the file
const encryptedColoring = await encryption.encrypt(uint8Array_col);
const encryptedFile = await encryption.encrypt(new Uint8Array(buffer));
// const encryptedFile = await encrypt_file(chat_space_key, new Uint8Array(buffer));
const encryptedLabels = await encryption.encrypt(uint8Array_lab);
$("#refresh").addClass("animated");
// Open the new window after the transition or animation has completed
setTimeout(function() {
window.location.reload();
}, 500);
$('#algo_gate').hide()
$('#overlay_algo_gate').hide()
$('#chats_title').hide();
$('#chats_disclosure').hide();
const file = input.files[0];
const allowedTypes = [
"audio/mpeg",
"audio/x-m4a",
"audio/wav",
"audio/flac",
"audio/webm;codecs=opus",
"audio/mp3",
"video/mp4",
"video/quicktime",
"image/png",
"image/jpeg",
"text/plain",
"application/pdf",
];
try {
if (file.size > 60 * 1024 * 1024) {
// console.log("File size is too large. Maximum file size is 100MB.");
} else if (!allowedTypes.includes(file.type)) {
} else {
$( "#anchor_file_names" ).append(`
<div class="file_name">
${file.name}
<div class="line-break0"></div>
</div>
`);
await encryptUploadedFile("", file, file.type);
};
} catch (error) {
// console.log(error);
};
};
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="https://philia-chat-pullz.b-cdn.net/philiaSocial_Icon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Welcome to philiaSocial Chat</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
<!-- Use Material Design Progress indicator -->
<link
href="https://unpkg.com/material-components-web@6.0.0/dist/material-components-web.css"
rel="stylesheet"
/>
<link rel="stylesheet" href="https://cdn.plyr.io/3.7.3/plyr.css" />
<script src="https://unpkg.com/material-components-web@6.0.0/dist/material-components-web.min.js"></script>
<script src="https://kit.fontawesome.com/781baba48e.js" crossorigin="anonymous"></script>
<!-- <script src="node_modules/@ffmpeg/core/dist/ffmpeg-core.js"></script> -->
<script src="https://cdn.jsdelivr.net/npm/@mux/mux-player"></script>
<script defer src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>
</head>
<body>
<div class="container_intro"></div>
<!-- Hidden checkbox -->
<input type="checkbox" id="modalToggle" style="display: none;">
<!-- Modal overlay (dark background) -->
<div class="modal-overlay">
<!-- Modal content -->
<div class="modal-content">
<h4>Last updated: September 30th, 2023</h4>
<h3>philiaSocial Chat Terms of Service</h3>
<p>Welcome to philiaSocial Chat, a decentralized project utilizing Distributed Ledger Technology (DLT) to explore and enable peer-to-peer communication ("the App"). Please read these Terms of Service ("Terms") carefully before using our application.</p>
<ol>
<li>Acceptance of Terms</li>
<ol style="list-style-type: lower-alpha;">
<li>
By accessing or using the App, you agree to be bound by these Terms. If you do not agree with any part of these Terms, you must not use the App.
</li>
</ol>
<li>Eligibility</li>
<ol style="list-style-type: lower-alpha;">
<li>
You must be at least 18 years old, or the age of legal majority in your jurisdiction of residence, to use the App. By agreeing to these Terms, you represent and warrant that you will abide by all the provisions herein.
</li>
</ol>
<li>
Description of the App
<ol style="list-style-type: lower-alpha;">
<li>The App operates on a decentralized network, enabling users to communicate and share their encrypted data in a peer-to-peer manner.</li>
<li>As an experimental project, philiaSocial Chat is provided "as-is" without any warranties or representations of functionality, reliability, or fitness for a particular purpose.</li>
</ol>
</li>
<li>
Account Registration and Chat Credentials
<ol style="list-style-type: lower-alpha;">
<li>
To use the App, you will need to establish a new chat space by clicking the “Create New Credentials” button available at https://chat.philia.social. Upon doing so, you will be assigned a randomly generated private key (the “Chat-Credentials”) that allows you to log in and sprout your chat space.
</li>
<li>
It's crucial to securely save your Chat-Credentials, as they will not be displayed again. Chat-Credentials are not stored or maintained by philiaSocial Chat, and the App does not have custody or control over the contents of your chat space and has no ability to view, retrieve, or transfer its contents.
</li>
<li>
You are solely responsible for keeping your Chat-Credentials secure and you should never share your Chat-Credentials with anyone who should not have access to your chat space. ANYONE WITH YOUR CHAT-CREDENTIALS WILL BE ABLE TO ACCESS YOUR CHAT SPACE.
</li>
<li>
To access your chat space, enter your Chat-Credentials at https://chat.philia.social and click “Sign Into Chat Space.” philiaSocial Chat accepts no responsibility for, or liability to you, in connection with your use of a chat space and makes no representations or warranties regarding how the Service will operate.
</li>
<li>
Losing your Chat-Credentials will result in loss of access to your chat space and all associated data. There is no way to recover lost Chat-Credentials or access your chat space without these credentials. You are solely responsible for maintaining the confidentiality of your Chat-Credentials and for all activities that occur in your chat space.
</li>
</ol>
</li>
<li>
Data Privacy and Security
<ol style="list-style-type: lower-alpha;">
<li>
philiaSocial Chat does not collect or store any personal data. All data shared within the App is controlled and managed by the users.
</li>
<li>
Users are advised to exercise caution and adhere to best practices to maintain their privacy and security while using the App.
</li>
</ol>
</li>
<li>
Usage Restrictions
<ol style="list-style-type: lower-alpha;">
<li>
Users are responsible for their actions within the App and must comply with applicable laws and regulations.
</li>
<li>
Unlawful activities and any actions that could damage, disable, overburden, or impair the decentralized network on which the App operates are prohibited.
</li>
</ol>
</li>
<li>
Content
<ol style="list-style-type: lower-alpha;">
<li>
You are solely responsible for the content you send through the App.
</li>
<li>
You agree not to send any content that is illegal, harmful, threatening, abusive, harassing, tortious, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, or racially, ethnically or otherwise objectionable.
</li>
</ol>
</li>
<li>
No Intellectual Property Claims
<ol style="list-style-type: lower-alpha;">
<li>
We do not claim any intellectual property rights over the material you provide to philiaSocial Chat.
</li>
</ol>
</li>
<li>
Changes to Terms
<ol style="list-style-type: lower-alpha;">
<li>
We reserve the right to modify or replace these Terms at any time. Any changes will be posted on this page.
</li>
</ol>
</li>
<li>
No Warranties
<ol style="list-style-type: lower-alpha;">
<li>
philiaSocial Chat is provided on an "AS IS" and "AS AVAILABLE" basis without warranties of any kind, either express or implied, including but not limited to, implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
</li>
<li>
Neither the philiSocial Chat nor any individuals or entities associated with the project make any warranties or representations about the accuracy, reliability, completeness, or timeliness of the App’s content, services, software, text, graphics, or links.
</li>
<li>
No information or advice obtained by you from the App or through the service shall create any warranty not expressly stated in these Terms.
</li>
<li>
We make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability with respect to the App or the information, products, services, or related graphics contained on the App for any purpose. Any reliance you place on such information is strictly at your own risk.
</li>
<li>
We do not warrant that the App will function uninterrupted, secure or available at any particular time or location; nor do we warrant any errors or defects will be corrected, or that the App is free of viruses or other harmful components.
</li>
</ol>
</li>
<li>
Dispute Resolution
<ol style="list-style-type: lower-alpha;">
<li>
Acknowledgement of Risks
<ol style="list-style-type: lower-roman;">
<li>
Users acknowledge that philiaSocial Chat is decentralized, experimental, and operates on a peer-to-peer basis without a central authority. Users understand and accept that there may be risks associated with using the App, and agree to assume all such risks.
</li>
</ol>
</li>
<li>
No Formal Dispute Resolution
<ol style="list-style-type: lower-roman;">
<li>
Due to the decentralized nature of philiaSocial Chat, there are no formal channels for dispute resolution, arbitration, or redress provided by the App or any associated entities. Users are solely responsible for resolving any disputes they may have with other users, and are encouraged to exercise caution and conduct due diligence in their interactions within the App.
</li>
</ol>
</li>
<li>
Community Resolution
<ol style="list-style-type: lower-roman;">
<li>
Users may choose to engage with the community to seek resolution for any disputes through community-driven forums or channels, if available and applicable. The App does not moderate or oversee these community-driven resolution channels and is not responsible for any outcomes resulting from such engagements.
</li>
</ol>
</li>
<li>
Indemnification
<ol style="list-style-type: lower-roman;">
<li>
Users agree to indemnify and hold harmless philiaSocial Chat, its creators, contributors, and other associated entities from any claims, damages, liabilities, losses, and expenses, including legal fees, arising out of or in relation to their use of the App or any disputes with other users.
</li>
</ol>
</li>
<li>
Governing Law
<ol style="list-style-type: lower-roman;">
<li>
Notwithstanding the decentralized nature of the App, to the extent any applicable law mandates a governing law or jurisdiction for dispute resolution, such law shall apply. Users are responsible for compliance with local laws and regulations, and acknowledge that certain jurisdictions may have laws that provide additional rights or remedies for disputes.
</li>
</ol>
</li>
<li>
Severability
<ol style="list-style-type: lower-roman;">
<li>
If any provision of this Dispute Resolution section is found to be invalid or unenforceable, the remaining provisions will continue to be valid and enforceable to the fullest extent permitted by law.
</li>
</ol>
</li>
</ol>
</li>
<li>
Limitation of Liability
<ol style="list-style-type: lower-alpha;">
<li>
In no event shall philiaSocial Chat, nor its contributors or those associated with the project, be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from (i) your access to or use of or inability to access or use the App; (ii) any conduct or content of any third party on the App; (iii) any content obtained from the App; and (iv) unauthorized access, use or alteration of your transmissions or content, whether based on warranty, contract, tort (including negligence) or any other legal theory, whether or not we have been informed of the possibility of such damage, and even if a remedy set forth herein is found to have failed of its essential purpose.
</li>
<li>
Our total liability to you for all claims arising out of or related to the use or inability to use any portion of the App or otherwise under these Terms, whether in contract, tort, or otherwise, is limited to the greater of (i) the amount you have paid to access the App or (ii) $100.
</li>
<li>
You acknowledge and agree that the disclaimers and the limitations of liability set forth in these Terms reflect a reasonable and fair allocation of risk between you and philiaSocial Chat, and that these limitations are an essential basis to our ability to make the App available to you on an economically feasible basis.
</li>
</ol>
</li>
<li>
Relationship
<ol style="list-style-type: lower-alpha;">
<li>
Nothing in these Terms will be construed as creating a relationship of partnership, joint venture, agency, or employment between the parties. philiaSocial Chat shall not be responsible for the acts or omissions of a user, and the user shall not represent philiaSocial Chat, nor does it have any power or authority to speak for, represent, bind, or assume any obligation on behalf of philiaSocial Chat.
</li>
</ol>
</li>
<li>
Class Action Waiver
<ol style="list-style-type: lower-alpha;">
<li>
THE PARTIES HERETO AGREE THAT BY ENTERING INTO THIS AGREEMENT, EACH PARTY WAIVES ITS RIGHT TO PARTICIPATE IN A CLASS ACTION, PRIVATE ATTORNEY GENERAL ACTION OR OTHER REPRESENTATIVE ACTION AGAINST THE OTHER IN A COURT OR IN ARBITRATION. THE PARTIES FURTHER AGREE THAT EACH MAY BRING DISPUTES AGAINST EACH OTHER ONLY IN THEIR INDIVIDUAL CAPACITY AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. Further, unless both parties agree otherwise, arbitration claims may not be joined or consolidated in the arbitration proceeding. In no event shall the arbitrator have authority to preside over any form of representative or class proceeding or to issue any relief that applies to any person or entity other than users individually. If this Class Action Waiver is found to be invalid or unenforceable in whole or in part, then the entirety of this Binding Arbitration section (except for this sentence) shall be null and void with respect to such proceeding, subject to the right to appeal the limitation or invalidation of the Class Action Waiver.
</li>
</ol>
</li>
<li>
Successors; Assignment; No Third Party Beneficiaries
<ol style="list-style-type: lower-alpha;">
<li>
These Terms are binding upon and will inure to the benefit of both parties and their respective successors, heirs, executors, administrators, personal representatives, and permitted assigns. You may not assign or transfer these Terms without philiaSocial Chat's prior written consent. philiaSocial Chat may assign its rights, obligations and/or these Terms at any time at its sole discretion without notice to you.
</li>
</ol>
</li>
<li>
Notices
<ol style="list-style-type: lower-alpha;">
<li>
You consent to receive all communications including notices, agreements, disclosures, or other information from philiaSocial Chat electronically. philiaSocial Chat may communicate by email or by posting to the Services. For support-related inquiries, you may email <a href="mailto:connect@philia.social">connect@philia.social</a>.
</li>
<head>
<meta charset="UTF-8">
<link rel="icon" type="image/x-icon" href="https://philia-chat-pullz.b-cdn.net/philiaSocial_Icon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to philiaSocial Chat</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
<!-- Use Material Design Progress indicator -->
<link href="https://unpkg.com/material-components-web@6.0.0/dist/material-components-web.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.plyr.io/3.7.3/plyr.css">
<script src="https://unpkg.com/material-components-web@6.0.0/dist/material-components-web.min.js"></script>
<script src="https://kit.fontawesome.com/781baba48e.js" crossorigin="anonymous"></script>
<!-- <script src="node_modules/@ffmpeg/core/dist/ffmpeg-core.js"></script> -->
<script src="https://cdn.jsdelivr.net/npm/@mux/mux-player"></script>
<script defer src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"></script>
</head>
<body>
<div class="container_intro"></div>
<!-- Hidden checkbox -->
<input type="checkbox" id="modalToggle" style="display: none;">
<!-- Modal overlay (dark background) -->
<div class="modal-overlay">
<!-- Modal content -->
<div class="modal-content">
<h4>Last updated: September 30th, 2023</h4>
<h3>philiaSocial Chat Terms of Service</h3>
<p>Welcome to philiaSocial Chat, a decentralized project utilizing Distributed Ledger Technology (DLT) to explore and enable peer-to-peer communication ("the App"). Please read these Terms of Service ("Terms") carefully before using our application.</p>
<ol>
<li>Acceptance of Terms</li>
<ol style="list-style-type: lower-alpha;">
<li>
By accessing or using the App, you agree to be bound by these Terms. If you do not agree with any part of these Terms, you must not use the App.
</li>
</ol>
<li>Eligibility</li>
<ol style="list-style-type: lower-alpha;">
<li>
You must be at least 18 years old, or the age of legal majority in your jurisdiction of residence, to use the App. By agreeing to these Terms, you represent and warrant that you will abide by all the provisions herein.
</li>
</ol>
<li>
Description of the App
<ol style="list-style-type: lower-alpha;">
<li>The App operates on a decentralized network, enabling users to communicate and share their encrypted data in a peer-to-peer manner.</li>
<li>As an experimental project, philiaSocial Chat is provided "as-is" without any warranties or representations of functionality, reliability, or fitness for a particular purpose.</li>
</ol>
</li>
<li>
Account Registration and Chat Credentials
<ol style="list-style-type: lower-alpha;">
<li>
To use the App, you will need to establish a new chat space by clicking the “Create New Credentials” button available at https://chat.philia.social. Upon doing so, you will be assigned a randomly generated private key (the “Chat-Credentials”) that allows you to log in and sprout your chat space.
</li>
<li>
It's crucial to securely save your Chat-Credentials, as they will not be displayed again. Chat-Credentials are not stored or maintained by philiaSocial Chat, and the App does not have custody or control over the contents of your chat space and has no ability to view, retrieve, or transfer its contents.
</li>
<li>
You are solely responsible for keeping your Chat-Credentials secure and you should never share your Chat-Credentials with anyone who should not have access to your chat space. ANYONE WITH YOUR CHAT-CREDENTIALS WILL BE ABLE TO ACCESS YOUR CHAT SPACE.
</li>
<li>
To access your chat space, enter your Chat-Credentials at https://chat.philia.social and click “Sign Into Chat Space.” philiaSocial Chat accepts no responsibility for, or liability to you, in connection with your use of a chat space and makes no representations or warranties regarding how the Service will operate.
</li>
<li>
Losing your Chat-Credentials will result in loss of access to your chat space and all associated data. There is no way to recover lost Chat-Credentials or access your chat space without these credentials. You are solely responsible for maintaining the confidentiality of your Chat-Credentials and for all activities that occur in your chat space.
</li>
</ol>
</li>
<li>
Data Privacy and Security
<ol style="list-style-type: lower-alpha;">
<li>
philiaSocial Chat does not collect or store any personal data. All data shared within the App is controlled and managed by the users.
</li>
<li>
Users are advised to exercise caution and adhere to best practices to maintain their privacy and security while using the App.
</li>
</ol>
</li>
<li>
Usage Restrictions
<ol style="list-style-type: lower-alpha;">
<li>
Users are responsible for their actions within the App and must comply with applicable laws and regulations.
</li>
<li>
Unlawful activities and any actions that could damage, disable, overburden, or impair the decentralized network on which the App operates are prohibited.
</li>
</ol>
</li>
<li>
Content
<ol style="list-style-type: lower-alpha;">
<li>
You are solely responsible for the content you send through the App.
</li>
<li>
You agree not to send any content that is illegal, harmful, threatening, abusive, harassing, tortious, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, or racially, ethnically or otherwise objectionable.
</li>
</ol>
</li>
<li>
No Intellectual Property Claims
<ol style="list-style-type: lower-alpha;">
<li>
We do not claim any intellectual property rights over the material you provide to philiaSocial Chat.
</li>
</ol>
</li>
<li>
Changes to Terms
<ol style="list-style-type: lower-alpha;">
<li>
We reserve the right to modify or replace these Terms at any time. Any changes will be posted on this page.
</li>
</ol>
</li>
<li>
No Warranties
<ol style="list-style-type: lower-alpha;">
<li>
philiaSocial Chat is provided on an "AS IS" and "AS AVAILABLE" basis without warranties of any kind, either express or implied, including but not limited to, implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
</li>
<li>
Neither the philiSocial Chat nor any individuals or entities associated with the project make any warranties or representations about the accuracy, reliability, completeness, or timeliness of the App’s content, services, software, text, graphics, or links.
</li>
<li>
No information or advice obtained by you from the App or through the service shall create any warranty not expressly stated in these Terms.
</li>
<li>
We make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability, or availability with respect to the App or the information, products, services, or related graphics contained on the App for any purpose. Any reliance you place on such information is strictly at your own risk.
</li>
<li>
We do not warrant that the App will function uninterrupted, secure or available at any particular time or location; nor do we warrant any errors or defects will be corrected, or that the App is free of viruses or other harmful components.
</li>
</ol>
</li>
<li>
Dispute Resolution
<ol style="list-style-type: lower-alpha;">
<li>
Acknowledgement of Risks
<ol style="list-style-type: lower-roman;">
<li>
Users acknowledge that philiaSocial Chat is decentralized, experimental, and operates on a peer-to-peer basis without a central authority. Users understand and accept that there may be risks associated with using the App, and agree to assume all such risks.
</li>
</ol>
</li>
<li>
No Formal Dispute Resolution
<ol style="list-style-type: lower-roman;">
<li>
Due to the decentralized nature of philiaSocial Chat, there are no formal channels for dispute resolution, arbitration, or redress provided by the App or any associated entities. Users are solely responsible for resolving any disputes they may have with other users, and are encouraged to exercise caution and conduct due diligence in their interactions within the App.
</li>
</ol>
</li>
<li>
Community Resolution
<ol style="list-style-type: lower-roman;">
<li>
Users may choose to engage with the community to seek resolution for any disputes through community-driven forums or channels, if available and applicable. The App does not moderate or oversee these community-driven resolution channels and is not responsible for any outcomes resulting from such engagements.
</li>
</ol>
</li>
<li>
Indemnification
<ol style="list-style-type: lower-roman;">
<li>
Users agree to indemnify and hold harmless philiaSocial Chat, its creators, contributors, and other associated entities from any claims, damages, liabilities, losses, and expenses, including legal fees, arising out of or in relation to their use of the App or any disputes with other users.
</li>
</ol>
</li>
<li>
Governing Law
<ol style="list-style-type: lower-roman;">
<li>
Notwithstanding the decentralized nature of the App, to the extent any applicable law mandates a governing law or jurisdiction for dispute resolution, such law shall apply. Users are responsible for compliance with local laws and regulations, and acknowledge that certain jurisdictions may have laws that provide additional rights or remedies for disputes.
</li>
</ol>
</li>
<li>
Severability
<ol style="list-style-type: lower-roman;">
<li>
If any provision of this Dispute Resolution section is found to be invalid or unenforceable, the remaining provisions will continue to be valid and enforceable to the fullest extent permitted by law.
</li>
</ol>
</li>
</ol>
</li>
<li>
Limitation of Liability
<ol style="list-style-type: lower-alpha;">
<li>
In no event shall philiaSocial Chat, nor its contributors or those associated with the project, be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from (i) your access to or use of or inability to access or use the App; (ii) any conduct or content of any third party on the App; (iii) any content obtained from the App; and (iv) unauthorized access, use or alteration of your transmissions or content, whether based on warranty, contract, tort (including negligence) or any other legal theory, whether or not we have been informed of the possibility of such damage, and even if a remedy set forth herein is found to have failed of its essential purpose.
</li>
<li>
Our total liability to you for all claims arising out of or related to the use or inability to use any portion of the App or otherwise under these Terms, whether in contract, tort, or otherwise, is limited to the greater of (i) the amount you have paid to access the App or (ii) $100.
</li>
<li>
You acknowledge and agree that the disclaimers and the limitations of liability set forth in these Terms reflect a reasonable and fair allocation of risk between you and philiaSocial Chat, and that these limitations are an essential basis to our ability to make the App available to you on an economically feasible basis.
</li>
</ol>
</li>
<li>
Relationship
<ol style="list-style-type: lower-alpha;">
<li>
Nothing in these Terms will be construed as creating a relationship of partnership, joint venture, agency, or employment between the parties. philiaSocial Chat shall not be responsible for the acts or omissions of a user, and the user shall not represent philiaSocial Chat, nor does it have any power or authority to speak for, represent, bind, or assume any obligation on behalf of philiaSocial Chat.
</li>
</ol>
</li>
<li>
Class Action Waiver
<ol style="list-style-type: lower-alpha;">
<li>
THE PARTIES HERETO AGREE THAT BY ENTERING INTO THIS AGREEMENT, EACH PARTY WAIVES ITS RIGHT TO PARTICIPATE IN A CLASS ACTION, PRIVATE ATTORNEY GENERAL ACTION OR OTHER REPRESENTATIVE ACTION AGAINST THE OTHER IN A COURT OR IN ARBITRATION. THE PARTIES FURTHER AGREE THAT EACH MAY BRING DISPUTES AGAINST EACH OTHER ONLY IN THEIR INDIVIDUAL CAPACITY AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. Further, unless both parties agree otherwise, arbitration claims may not be joined or consolidated in the arbitration proceeding. In no event shall the arbitrator have authority to preside over any form of representative or class proceeding or to issue any relief that applies to any person or entity other than users individually. If this Class Action Waiver is found to be invalid or unenforceable in whole or in part, then the entirety of this Binding Arbitration section (except for this sentence) shall be null and void with respect to such proceeding, subject to the right to appeal the limitation or invalidation of the Class Action Waiver.
</li>
</ol>
</li>
<li>
Successors; Assignment; No Third Party Beneficiaries
<ol style="list-style-type: lower-alpha;">
<li>
These Terms are binding upon and will inure to the benefit of both parties and their respective successors, heirs, executors, administrators, personal representatives, and permitted assigns. You may not assign or transfer these Terms without philiaSocial Chat's prior written consent. philiaSocial Chat may assign its rights, obligations and/or these Terms at any time at its sole discretion without notice to you.
</li>
</ol>
</li>
<li>
Notices
<ol style="list-style-type: lower-alpha;">
<li>
You consent to receive all communications including notices, agreements, disclosures, or other information from philiaSocial Chat electronically. philiaSocial Chat may communicate by email or by posting to the Services. For support-related inquiries, you may email <a href="mailto:connect@philia.social">connect@philia.social</a>.
</li>
</ol>
</li>
</li>
</ol>
<p>Nothing in these Terms or otherwise limits philiaSocial Chat’s right to object to subpoenas, claims, or other demands.</p>
<h3>Privacy Policy philiaSocial Chat</h3>
<ol>
<li>
Introduction
<ol style="list-style-type: lower-alpha;">
<li>
<p>Nothing in these Terms or otherwise limits philiaSocial Chat’s right to object to subpoenas, claims, or other demands.</p>
<h3>Privacy Policy philiaSocial Chat</h3>
<ol>
<li>
Introduction
<ol style="list-style-type: lower-alpha;">
<li>
</li>
</ol>
</li>
</ol>
<!-- Neomorphic Agree button -->
<label for="modalToggle" class="btn-neomorphic">I Accept the Terms of Service & Privacy Policy.</label>
</div>
</div>
<div id="algo_button_box">
<div class="line-break2"></div>
<div id="form-title">
<div id='love_matchings'>♡ </div>
<div id='at_messenger'>@ </div>
<div id='first_events'>➊ </div>
<div id='infinity_nomads'>∞</div>
</div>
<div class="line-break1"></div>
<div class="digital_id">philiaSocial Chat is a self-sovereign, anonymous, chat space powered by decentralized systems.
<div class="line-break0"></div>
<div id="ceremony">
Each philiaSocial Chat space has a Founder & Partner(s); the Founder generates a new set of Credentials and shares this private key with the Partner(s).
</div>
<div class="line-break1"></div>
<u>Use at your own discretion.</u>
</div>
<div class="line-break1"></div>
<div class="fields_algo">
<div id="wrapper_sk_show">
<div id="info_pop" class="boxes">
<i class="buttons_main fa-solid fa-circle-question"></i>
</div>
<div id="copy_field" class="boxes buttons_main">
Copy
</div>
<div id="note_pad" class="boxes buttons_main">
Cryptgeon
</div>
<div id="show_hide_password" class="boxes">
<i id="fa_eye" class="buttons_main fa-solid fa-eye"></i>
</div>
</li>
</ol>
</li>
</ol>
<!-- Neomorphic Agree button -->
<label for="modalToggle" class="btn-neomorphic">I Accept the Terms of Service & Privacy Policy.</label>
</div>
</div>
<div id="algo_button_box">
<div class="line-break2"></div>
<div id="form-title">
<div id='love_matchings'>♡ </div>
<div id='at_messenger'>@ </div>
<div id='first_events'>➊ </div>
<div id='infinity_nomads'>∞</div>
</div>
<div class="line-break1"></div>
<div class="digital_id">
philiaSocial Chat is a self-sovereign, anonymous, chat space powered by decentralized systems.
<div class="line-break0"></div>
<div id="ceremony">
Each philiaSocial Chat space has a Founder & Partner(s); the Founder generates a new set of Credentials and shares this private key with the Partner(s).
</div>
<div class="line-break1"></div>
<u>Use at your own discretion.</u>
</div>
<div class="line-break1"></div>
<div class="fields_algo">
<div id="wrapper_sk_show">
<div id="info_pop" class="boxes">
<i class="buttons_main fa-solid fa-circle-question"></i>
<div id="original_space" class="line-break2"></div>
<div id="anchor_info_pop"></div>
<div id="first_task">
<div id="input_label_button_farfalla_key" class="input_first_set">
Sign Into Chat Space
</div>
<div class="line-break2"></div>
<div id="ft_expanded_1" class="ft_expanded">
</div>
<div class="peer_orig_inputs">Chat-Credentials</div>
<div class="survey_options_algo">
<input id="association_algo_password2" type="password" name="survey_options_name" class="survey-options"/>
</div>
<div class="line-break2"></div>
<div class="line-break0"></div>
</div>
<!-- <div class="line-break2"></div> -->
<div id="second_task">
<div id="input_label_button_pub_key" class="input_first_set">Create New Credentials</div>
<div class="line-break2"></div>
<div id="ft_expanded_2" class="ft_expanded"></div>
<div id="copy_field" class="boxes buttons_main">
Copy
</div>
<div id="note_pad" class="boxes buttons_main">
Cryptgeon
</div>
<div id="show_hide_password" class="boxes">
<i id="fa_eye" class="buttons_main fa-solid fa-eye"></i>
</div>
</div>
<div id="original_space" class="line-break2"></div>
<div id="anchor_info_pop"></div>
<div id="first_task">
<div id="input_label_button_farfalla_key" class="input_first_set">
Sign Into Chat Space
</div>
<div class="line-break2"></div>
<div id="ft_expanded_1" class="ft_expanded">
</div>
<div class="peer_orig_inputs">Chat-Credentials</div>
<div class="survey_options_algo">
<input id="association_algo_password2" type="password" name="survey_options_name" class="survey-options">
</div>
<div class="line-break2"></div>
<div class="line-break0"></div>
</div>
<!-- <div class="line-break2"></div> -->
<div id="second_task">
<div id="input_label_button_pub_key" class="input_first_set">Create New Credentials</div>
<div class="line-break2"></div>
<div id="ft_expanded_2" class="ft_expanded"></div>
</div>
</div>
<div class="line-break1"></div>
<div id="third_task">
<div id="Intro_HH">
Wander along...
<div class="line-break0"></div>
...this winding path?
</div>
<div class="line-break2"></div>
<div id="gif_spiral"></div>
<div class="line-break2"></div>
<div class="line-break2"></div>
<div id="blurred_backdrop">
<div class="line-break2"></div>
<!-- <button class="modal_riddles" id="creative_modal_close">
Close
</button> -->
</div>
<div id="creative_modal">
<div class="line-break2"></div>
<h1 class="section">...Is It Not Within Our Dreams That Our <span class="highlight_seeds">Connectedness</span> Remains Unbounded?</h1>
<div class="line-break2"></div>
<div id="table-container">
<div class="outer_mux">
<div class="inner_mux">
<mux-player stream-type="on-demand" playback-id="ySsOoHDFZnsAHvAgQA02Pf2OyAKEiKjEFaptqwLNb2l4"></mux-player>
</div>
<div id="blurred_backdrop">
<div class="line-break2"></div>
<!-- <button class="modal_riddles" id="creative_modal_close">
Close
</button> -->
</div>
<div id="creative_modal">
<div id="table-container">
<div id="the_question"></div>
<div id="content_riddle">
<h3 class="section">Unveil Your Wordsmithing on <span class="highlight_seeds">Seeds</span> by PhiliaSocial Collective</h3>
<div class="section">
<p>Welcome to <span class="highlight_seeds">Seeds</span>, a cultivated initiative by PhiliaSocial Collective, where your eloquent prose may hold the key to unveiling mysteries. Rooted in the thematic ethos of Forever Awakening: Episode Zero, <span class="highlight_seeds">Seeds</span> beckons you to partake in a challenge, urging you to submit a narrative of under 500 words that potentially unlocks a new dimension to its existing narrative.</p>
<br>
<div class="line-break1"></div>
<mux-player
stream-type="on-demand"
playback-id="OXWvX0167ALfXf9pu67xMDW01JH7KsUgIM8C8MGpx25600"
></mux-player>
<div class="line-break2"></div>
<div id="image_riddle">
<img id="image" src="https://philia-chat-pullz.b-cdn.net/philia_lovers_1.png" alt="Your Image">
</div>
<div class="line-break2"></div>
<mux-player
stream-type="on-demand"
playback-id="ySsOoHDFZnsAHvAgQA02Pf2OyAKEiKjEFaptqwLNb2l4"
></mux-player>
<div class="line-break2"></div>
<div class="line-break2"></div>
<div id="content_riddle">
Embarking on the philiaSocial journey is an expedition into a domain where connections are cherished and explored through the emotional resonance with art. Your MetaMask wallet and the zkEVM network are your keys to this evocative landscape.
<div class="line-break1"></div>
As you respond to the introspective prompt, each submission is a thread in a larger tapestry, algorithmically analyzed to align you with others on the philiaSocial network who share a similar emotional cadence with the world of art, fostering enriching interactions.
<div class="line-break1"></div>
At philiaSocial, we are nurturing a culture where the exploration of emotional connections with art takes center stage. It's a realm where the heart meets art, where your feelings find a resonance with others, building a community bound by a shared emotional understanding.
<div class="line-break1"></div>
A nominal submission fee of at least $3 worth of ETH is the threshold to this bold venture. It's a commitment to a genuine endeavor, a pledge to a community that yearns for a deeper understanding and appreciation of the emotional ties that bind us to art. With each submission, you are contributing to a movement, a collective endeavor to delve deeper into the emotional dialogues that art evokes, and foster meaningful connections therein. Your narrative, your Evo score, are stepping stones towards a community enriched by the emotional landscapes unveiled through the interplay of art and personal connections.
</div>
<div class="line-break2"></div>
<i class="fa-solid fa-seedling" id="info_riddles">
</i>
</div>
<div id="modal_riddle_info">
<div id="button_spacing_post1">
<button class="closing_riddle_content" id="btn">
</button>
<button class="closing_riddle_content" id="zkevm_setup">
<i class="fa-brands fa-connectdevelop" style="font-size: 20px;"></i>
</button>
<div class="section">
<h3>Setup:</h3>
<p>Commence by downloading the <a href="https://metamask.io/" target="_blank">MetaMask</a> wallet. Within <span class="highlight_seeds">Seeds</span>, you'll find the option to activate the Polygon-zkevm network for your wallet. Once activated, navigate to <a href="https://global.transak.com/" target="_blank">Transak</a>; within the Transak widget, switch from ETH on the Ethereum Network to ETH on Polygon-zkevm, and follow through with the widget’s instructions. For a more personalized Ethereum public address, customize your public wallet address with an <a href="https://app.ens.domains/" target="_blank">ENS</a> domain.</p>
<div class="line-break2"></div>
<div id="account_connected" class="neumorphic-input"> </div>
<div class="line-break2"></div>
<input type="text" id="email" class="neumorphic-input" placeholder="Email">
<div class="line-break2"></div>
<textarea id="zkevm_message" class="neumorphic-input" placeholder="Message" rows="3"></textarea>
<div class="line-break2"></div>
<button class="closing_riddle_content" id="ok_closing">
<i class="fa-solid fa-house" style="font-size:20px">
</i>
</button>
<button class="closing_riddle_content" id="generate_algo">
<i class="fa-solid fa-feather-pointed" style="font-size: 20px;">
</i>
</button>
<div class="section">
<h3>Craft Your Narrative:</h3>
<p>Immerse yourself in the surreal ambiance of Forever Awakening: Episode Zero, allowing its primal essence to fuel your imaginative thought. Construct a micro-fiction piece that resonates with the thematic undercurrents of the film; herein lies the key to the enigmatic riddle. A submission fee of $7 worth of ETH is requisite. Ensure your MetaMask wallet is adequately funded before submitting your narrative along with the fee on the <span class="highlight_seeds">Seeds</span> platform.</p>
</div>
<div class="section">
<h3>Selection and Feature:</h3>
<p>Each submission, or "seed," will undergo a meticulous evaluation both personally and algorithmically. All seeds that adeptly unravel the riddle and reflect the creative spirit of the film will be showcased on the <span class="highlight_seeds">Seeds</span> platform as cherished literary collectibles. These collectibles will be securely housed within digital "pods", with ownership bestowed upon 78 discerning collectors. As collectors engage in purchase or exchange of their seeds, the authors will accrue royalties.</p>
</div>
<div class="section">
<h3>Engagement and Appreciation:</h3>
<p>We also extend the option for readers to tip the authors as a token of acknowledgment for their creative endeavor. Express your appreciation and engage in thoughtful dialogue with your favorite authors using the <a href="https://xmtp.chat/" target="_blank">XMTP Chat</a> feature.</p>
</div>
<div class="section">
<p><span class="highlight_seeds">Seeds</span> transcends being merely a submission platform; it serves as a portal for venturing into the therapeutic essence of artistic expression. Your micro-fiction, woven into the narrative fabric of Forever Awakening: Episode 0, contributes to a collective exploration of narrative as a therapeutic venture, engendering a rich tapestry of creative resonance.</p>
</div>
<div class="line-break2"></div>
<i class="fa-solid fa-seedling" id="info_riddles">
</i>
</div>
</div>
<div id="modal_riddle_info">
<div id="button_spacing_post1">
<button class="closing_riddle_content" id="btn">
</button>
<button class="closing_riddle_content" id="zkevm_setup">
<i class="fa-brands fa-connectdevelop" style="font-size: 20px;"></i>
</button>
</div>
<div class="line-break2"></div>
<div id="account_connected" class="neumorphic-input">
</div>
<div class="line-break2"></div>
<textarea id="zkevm_message" class="neumorphic-input" placeholder="Message: Max 500" rows="3"></textarea>
<div id="modal_seed_message">
Word count exceeds 500. Please shorten your message and try again.
</div>
<div class="line-break2"></div>
<button class="closing_riddle_content" id="ok_closing">
<i class="fa-solid fa-house" style="font-size:20px">
</i>
</button>
<button class="closing_riddle_content" id="generate_algo">
<i class="fa-solid fa-feather-pointed" style="font-size: 20px;">
</i>
</button>
</div>
<!-- <div id="algo_gate"></div> -->
<!-- </div> -->
<div id="container_algorand">
<!-- <div class="box"> -->
<!-- <div class="box"> -->
<div class="line-break1"></div>
<div class="line-break0"></div>
<!-- <div class="wallet_connected_wrapper"> -->
<div id="wallet_connected_chat"></div>
<div class="line-break1"></div>
<div class="line-break0"></div>
<div id="wrapper_picker">
<div id="picker"></div> <div id="wrapper_username"></div>
</div>
<div class="line-break1"></div>
<div id="fs_button_loader_wrapper1">
<div id="wrapper_message_tools1">
<div id="blur_mess" class="boxes">
<i class="chat_space fa-solid fa-mask"></i>
</div>
<div id="add_file" class="boxes">
<i class="chat_space fa-solid fa-plus">
<input type="file" id="file-input" accept="audio/mpeg, audio/x-m4a, audio/wav, audio/flac, video/mp4, video/quicktime, image/png, image/jpeg, text/plain, application/pdf" style="display: none" />
</i>
</div>
<div id="refresh" class="boxes">
<i class="chat_space fa-solid fa-at"></i>
</div>
</div>
</div>
<div class="line-break0"></div>
<div id="wallet_connected_text_id"></div>
<!-- <div class="line-break1"></div> -->
<div id="wrapper_glass"></div>
<div id="in_out_messages">
<div class="text_area_data"></div>
<div id="text_area_landing"></div>
</div>
<div class="line-break0"></div>
<div id="fs_button_loader_wrapper2">
<div id="wrapper_message_tools2">
<div id="latest_mess" class="boxes">
<i class="chat_space fa-solid fa-cloud-arrow-down"></i>
</div>
<div id="voice_recording" class="boxes">
<i class="chat_space fa-solid fa-microphone"></i>
</div>
<div id="stop_recording" class="boxes">
<div class="chat_space" id="stop_message">Recording/Stop...</div>
</div>
<div id="headset" class="boxes">
<i class="chat_space fa-solid fa-headset"></i>
</div>
<div id="lock_mess" class="boxes">
<i class="chat_space fa-solid fa-paper-plane"></i>
</div>
</div>
</div>
<div id="anchor_file_names"></div>
<!-- <textarea id="messages" name="message" placeholder="Message"></textarea> -->
<div id="messages" contenteditable="true"></div>
<div class="line-break1"></div>
<!-- </div> -->
<!-- </div> -->
</div>
</div>
</div>
<div id="overlay_algo_gate"></div>
<div class="line-break2"></div>
<div id="chats_title">
These are your Private Chat-Spaces
</div>
<div class="line-break1"></div>
<div id="chats_disclosure">
* Keep them safe; don't forget to "burn" them ever so often to enhanced your privacy and anonimity.
</div>
<div class="line-break2"></div>
<div id="algo_gate">