best wishes

This commit is contained in:
fred 2022-10-30 18:27:08 +01:00
parent eb40359314
commit 938f0a557d
2 changed files with 66 additions and 66 deletions

View File

@ -54,9 +54,7 @@ while true; do
echo echo
ipfs key rm ${PORT} > /dev/null 2>&1 ipfs key rm ${PORT} > /dev/null 2>&1
SESSIONNS=$(ipfs key gen ${PORT}) SESSIONNS=$(ipfs key gen ${PORT})
REPONSE=$(echo "COUCOU" | ipfs add -q) echo "IPNS SESSION http://$myIP:8080/ipns/$SESSIONNS CREATED"
ipfs name publish --allow-offline --key=$PORT /ipfs/$REPONSE
echo "SESSION http://$myIP:8080/ipns/$SESSIONNS "
echo echo
############### ###############
@ -227,15 +225,19 @@ cat ~/.zen/tmp/123/${MOATS}.messaging.json >> ~/.zen/tmp/123/${MOATS}.index.redi
DATAID=$(urldecode ${arr[9]} | xargs) DATAID=$(urldecode ${arr[9]} | xargs)
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS} mkdir -p ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}
echo "TRYING PING ${NODEID}" # echo "TRYING PING ${NODEID}"
ipfs --timeout 12s ping ${NODEID} & # ipfs --timeout 12s ping ${NODEID} &
## COULD BE A RAW FILE, AN HTML, A JSON ## COULD BE A RAW FILE, AN HTML, A JSON
echo "$WHAT IS JSON (COULD BE ANYTHING)" echo "TYPE IS $WHAT json default (add others)"
echo "TRYING CURL https://gateway.ipfs.io/ipfs/$DATAID ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json" echo ">>> curl -m 12 -so ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json https://gateway.ipfs.io/ipfs/$DATAID"
curl -m 12 -so ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json "https://gateway.ipfs.io/ipfs/$DATAID" curl -m 12 -so ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json "https://gateway.ipfs.io/ipfs/$DATAID"
[[ -s ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json ]] && echo "OK data.json" || echo "404 ERROR - $DATAID NOT FOUND" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & if [[ ! -s ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json ]]; then
REPONSE=$(echo "404 EROOR -$DATAID NOT FOUND" | ipfs add -q)
ipfs name publish --allow-offline -k ${PORT} /ipfs/${REPONSE} &
ipfs cat /ipfs/${REPONSE} | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
fi
[[ $(~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json | jq) ]] && \ [[ $(~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json | jq) ]] && \
ipfs add ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json ipfs add ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json
@ -243,13 +245,11 @@ cat ~/.zen/tmp/123/${MOATS}.messaging.json >> ~/.zen/tmp/123/${MOATS}.index.redi
echo "TRYIN CAT /ipfs/$DATAID" echo "TRYIN CAT /ipfs/$DATAID"
[[ $YOU ]] && ipfs --timeout 12s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json & [[ $YOU ]] && ipfs --timeout 12s cat /ipfs/$DATAID > ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json &
## TODO ADD data.json to PLAYER TW ## REPONSE ON PORT & PORTNS
REPONSE=$(cat ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json | ipfs add -q) REPONSE=$(cat ~/.zen/tmp/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/data.json | ipfs add -q)
ipfs name publish --allow-offline --key=$PORT /ipfs/$REPONSE ipfs name publish --allow-offline -k ${PORT} /ipfs/${REPONSE} &
echo "SESSION http://$myIP:8080/ipns/$SESSIONNS " ipfs cat /ipfs/${REPONSE} | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
echo "OK - ${NODEID} GONE GET YOUR /ipfs/$DATAID"
echo "/ipns/${IPFSNODEID}/${TYPE}/${NODEID}/${MOATS}/ " | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
end=`date +%s` end=`date +%s`
echo Execution time was `expr $end - $start` seconds. echo Execution time was `expr $end - $start` seconds.
continue continue
@ -258,49 +258,47 @@ cat ~/.zen/tmp/123/${MOATS}.messaging.json >> ~/.zen/tmp/123/${MOATS}.index.redi
############################################## ##############################################
# DEFAULT (NO REDIRECT DONE YET) CHECK OFFICIAL GATEWAY # DEFAULT (NO REDIRECT DONE YET) CHECK OFFICIAL GATEWAY
############################################## ##############################################
if [[ ! -f ~/.zen/tmp/123/${MOATS}.index.redirect ]]; then TWIP=$myIP
TWIP=$myIP # OFFICIAL Gateway ( increase waiting time ) - MORE SECURE
# OFFICIAL Gateway ( increase waiting time ) - MORE SECURE if [[ $TYPE == "official" ]]; then
if [[ $TYPE == "official" ]]; then
echo "OFFICIAL latest online TW... $LIBRA ($YOU)" echo "OFFICIAL latest online TW... $LIBRA ($YOU)"
[[ $YOU ]] && echo "http://$myIP:8080/ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/123/${MOATS}.astroindex.html [[ $YOU ]] && echo "http://$myIP:8080/ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/123/${MOATS}.astroindex.html
[[ ! -s ~/.zen/tmp/123/${MOATS}.astroindex.html ]] && echo "$LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/123/${MOATS}.astroindex.html "$LIBRA/ipns/${ASTRONAUTENS}" [[ ! -s ~/.zen/tmp/123/${MOATS}.astroindex.html ]] && echo "$LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/123/${MOATS}.astroindex.html "$LIBRA/ipns/${ASTRONAUTENS}"
# DEBUG # DEBUG
# echo "tiddlywiki --load ~/.zen/tmp/123/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'" # echo "tiddlywiki --load ~/.zen/tmp/123/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'"
# echo "cat ~/.zen/tmp/miz.json | jq -r .[].secret" # echo "cat ~/.zen/tmp/miz.json | jq -r .[].secret"
if [[ -s ~/.zen/tmp/123/${MOATS}.astroindex.html ]]; then if [[ -s ~/.zen/tmp/123/${MOATS}.astroindex.html ]]; then
tiddlywiki --load ~/.zen/tmp/123/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion' tiddlywiki --load ~/.zen/tmp/123/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'miz.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'
OLDIP=$(cat ~/.zen/tmp/miz.json | jq -r .[].secret) OLDIP=$(cat ~/.zen/tmp/miz.json | jq -r .[].secret)
[[ ! $OLDIP ]] && (echo "501 ERROR - SORRY - YOUR TW IS OUT OF SWARM#0 - CONTINUE " | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue [[ ! $OLDIP ]] && (echo "501 ERROR - SORRY - YOUR TW IS OUT OF SWARM#0 - CONTINUE " | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
# LOCKED TW BECOMING NEW GATEWAY # LOCKED TW BECOMING NEW GATEWAY
if [[ $OLDIP == "_SECRET_" ]]; then if [[ $OLDIP == "_SECRET_" ]]; then
echo "_SECRET_ TW PUSHING TW" ## SEND FULL TW echo "_SECRET_ TW PUSHING TW" ## SEND FULL TW
sed -i "s~_SECRET_~${myIP}~g" ~/.zen/tmp/123/${MOATS}.astroindex.html sed -i "s~_SECRET_~${myIP}~g" ~/.zen/tmp/123/${MOATS}.astroindex.html
echo "HTTP/1.1 200 OK echo "HTTP/1.1 200 OK
Server: Astroport Server: Astroport
Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8
" > ~/.zen/tmp/123/${MOATS}.index.redirect " > ~/.zen/tmp/123/${MOATS}.index.redirect
cat ~/.zen/tmp/123/${MOATS}.astroindex.html >> ~/.zen/tmp/123/${MOATS}.index.redirect cat ~/.zen/tmp/123/${MOATS}.astroindex.html >> ~/.zen/tmp/123/${MOATS}.index.redirect
cat ~/.zen/tmp/123/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & cat ~/.zen/tmp/123/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
continue continue
fi
# REDIRECTING TO TODAY GATEWAY
[[ $OLDIP != $myIP ]] && TWIP=$OLDIP
echo "*********** OFFICIAL LOGIN GOES TO $TWIP"
else
(echo "ERROR - NO TW FOUND - ASK FOR VISA" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
fi fi
# REDIRECTING TO TODAY GATEWAY
[[ $OLDIP != $myIP ]] && TWIP=$OLDIP
echo "*********** OFFICIAL LOGIN GOES TO $TWIP"
else else
echo "***** READER MODE - R/W USE OFFICIAL ***** http://$myIP:1234/?salt=$SALT&pepper=$PEPPER&official=on" (echo "ERROR - NO TW FOUND - ASK FOR VISA" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && continue
fi fi
else
sed "s~_TWLINK_~http://$TWIP:8080/ipns/${ASTRONAUTENS}~g" ~/.zen/Astroport.ONE/templates/index.redirect > ~/.zen/tmp/123/${MOATS}.index.redirect echo "***** READER MODE - R/W USE OFFICIAL ***** http://$myIP:1234/?salt=$SALT&pepper=$PEPPER&official=on"
fi fi
sed "s~_TWLINK_~http://$TWIP:8080/ipns/${ASTRONAUTENS}~g" ~/.zen/Astroport.ONE/templates/index.redirect > ~/.zen/tmp/123/${MOATS}.index.redirect
## TODO PATCH _SECRET_ myIP STUFF ## TODO PATCH _SECRET_ myIP STUFF
## RESPONDING ## RESPONDING

View File

@ -24,19 +24,19 @@ MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID) IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
myIP=$(hostname -I | awk '{print $1}' | head -n 1) myIP=$(hostname -I | awk '{print $1}' | head -n 1)
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS} mkdir -p ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
############################### ###############################
## EXTRACT G1Voeu from PLAYER TW ## EXTRACT G1Voeu from PLAYER TW
echo "Exporting $PLAYER TW [tag[G1Voeu]]" echo "Exporting $PLAYER TW [tag[G1Voeu]]"
rm -f ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1voeu.json rm -f ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1voeu.json
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS} --render '.' 'g1voeu.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]' tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS} --render '.' 'g1voeu.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 1 [[ ! -s ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1voeu.json ]] && echo "AUCUN G1VOEU - EXIT -" && exit 1
cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1wishes cat ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1voeu.json | jq -r '.[].wish' > ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1wishes.txt
echo "NB DE VOEUX : "$(cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1wishes | wc -l) echo "NB DE VOEUX : "$(cat ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1wishes.txt | wc -l)
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
@ -47,13 +47,14 @@ do
echo "===============================" echo "==============================="
echo "G1Voeu ${WISH}" echo "G1Voeu ${WISH}"
## Get ${WISHNAME} TW ## Get ${WISHNAME} TW
WISHNAME=$(cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .title') WISHNAME=$(cat ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .title')
[[ ! ${WISHNAME} ]] && echo "WISH sans NOM - CONTINUE -" && continue [[ ! ${WISHNAME} ]] && echo "WISH sans NOM - CONTINUE -" && continue
VOEUNS=$(cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .ipns') VOEUNS=$(cat ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1voeu.json | jq .[] | jq -r 'select(.wish=="'${WISH}'") | .ipns')
mkdir -p ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/${WISH} mkdir -p ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${WISH}
## RUN SPECIFIC G1Voeu Treatment (G1CopierYoutube.sh)
## RUN SPECIFIC G1Voeu ASTROBOT PROGRAM (like G1CopierYoutube.sh)
if [[ -s $MY_PATH/G1${WISHNAME}.sh ]]; then if [[ -s $MY_PATH/G1${WISHNAME}.sh ]]; then
echo "........................ Astrobot G1${WISHNAME}.sh program found !" echo "........................ Astrobot G1${WISHNAME}.sh program found !"
echo "________________________________ Running it *****" echo "________________________________ Running it *****"
@ -78,13 +79,14 @@ do
for FRIENDTW in ${FINDEX[@]}; for FRIENDTW in ${FINDEX[@]};
do do
[[ ! -s $FRIENDTW ]] && echo "$FRIENDTW VIDE (AMI SANS TW)" && continue [[ ! -s $FRIENDTW ]] && echo "$FRIENDTW VIDE (AMI SANS TW)" && continue
PLAYER=$(ls $FRIENDTW | cut -d '/' -f 7)
rm -f ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/g1wishtiddlers.json rm -f ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${PLAYER}.tiddlers.json
echo "TRY EXPORT [tag[G1${WISHNAME}]] FROM $FRIENDTW" echo "TRY EXPORT [tag[G1${WISHNAME}]] FROM $FRIENDTW"
tiddlywiki --load $FRIENDTW \ tiddlywiki --load $FRIENDTW \
--output ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME} --render '.' 'g1wishtiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']]' --output ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME} --render '.' ${PLAYER}'.tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']]'
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/g1wishtiddlers.json ]] && echo "NO ${WISHNAME} - CONTINUE -" && continue [[ ! -s ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${PLAYER}.tiddlers.json ]] && echo "NO ${WISHNAME} - CONTINUE -" && continue
[[ $(cat ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/g1wishtiddlers.json) == "[]" ]] && echo "EMPTY ${WISHNAME} - CONTINUE -" && continue [[ $(cat ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${PLAYER}.tiddlers.json) == "[]" ]] && echo "EMPTY ${WISHNAME} - CONTINUE -" && continue
echo "## WISHES FOUND ;) MIAM " echo "## WISHES FOUND ;) MIAM "
###################################### ######################################
@ -92,23 +94,23 @@ do
# Remove G1${WISHNAME} with WISHNAME Initial TIDDLER # Remove G1${WISHNAME} with WISHNAME Initial TIDDLER
# Reduce importation with extra filters days:created[-1] # Reduce importation with extra filters days:created[-1]
# Apply Extra filters... TODO LEARN https://talk.tiddlywiki.org/t/how-to-filter-and-delete-multiple-tiddlers/4950/2?u=papiche # Apply Extra filters... TODO LEARN https://talk.tiddlywiki.org/t/how-to-filter-and-delete-multiple-tiddlers/4950/2?u=papiche
echo ">>> Importing ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/g1wishtiddlers.json" echo ">>> Importing ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${PLAYER}.tiddlers.json"
tiddlywiki --load $INDEX \ tiddlywiki --load $INDEX \
--import "$HOME/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/g1wishtiddlers.json" "application/json" \ --import "$HOME/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${PLAYER}.tiddlers.json" "application/json" \
--output ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/${WISH} --render "$:/core/save/all" "newindex.html" "text/plain" --output ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS} --render "$:/core/save/all" "newindex.html" "text/plain"
if [[ -s ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/${WISH}/newindex.html ]]; then if [[ -s ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/newindex.html ]]; then
echo "Updating $INDEX" echo "Updating $INDEX"
cp ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/${WISH}/newindex.html $INDEX cp ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/newindex.html $INDEX
else else
echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/${WISHNAME}/${WISH}/newindex.html" echo "Problem with tiddlywiki command. Missing ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/${WISHNAME}/${WISH}/newindex.html"
echo "XXXXXXXXXXXXXXXXXXXXXXX" echo "XXXXXXXXXXXXXXXXXXXXXXX"
fi fi
done done
done < ~/.zen/tmp/${IPFSNODEID}/${ASTRONAUTENS}/g1wishes done < ~/.zen/tmp/${IPFSNODEID}/g1voeu/${ASTRONAUTENS}/g1wishes.txt
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"