├── README.md ├── scripts ├── connection_script.bat ├── open-file.sh ├── pull-all.bat ├── pull-all.ps1 ├── pull-all.sh ├── pull-rebase-all.ps1 ├── pull-rebase-all.sh └── unpack_pack.sh └── trash ├── check_bestemmioni.sh ├── folder_protector.bat └── smadonnate.txt /README.md: -------------------------------------------------------------------------------- 1 | # random scripts 2 | 3 | #### Contributing 4 | 5 | If you want to contribute with some useful scripts, just open an [issue](https://github.com/edoardottt/Scripts/issues) or submit a [pull request](https://github.com/edoardottt/Scripts/pulls). 6 | 7 | ------- 8 | 9 | [edoardottt.com](https://edoardottt.com/) to contact me. 10 | -------------------------------------------------------------------------------- /scripts/connection_script.bat: -------------------------------------------------------------------------------- 1 | :: Execute this with admin priviledges 2 | :: This batch file checks for network connection problems 3 | :: and saves the output to a .txt file(connection_stat.txt). 4 | DATE /T >> connection_stat.txt 5 | TIME /T >> connection_stat.txt 6 | :: View network connection details 7 | ipconfig /all >> connection_stat.txt 8 | ::Active connection 9 | netstat -a >> connection_stat.txt 10 | for /F "tokens=3" %%i in (appoggio.txt) do ping %%i >> results.txt 11 | ECHO ----------------------------------------------------------------------------------------------------------------------------------------------- >> connection_stat.txt -------------------------------------------------------------------------------- /scripts/open-file.sh: -------------------------------------------------------------------------------- 1 | echo -n "Enter extension: " 2 | read extension 3 | echo ---------------STARTED----------------- 4 | 5 | 6 | for dir in $(find . -type f) 7 | do 8 | ext="${dir##*.}" 9 | if [[ $ext == $extension ]]; then 10 | code $dir 11 | echo $dir OPENED 12 | fi 13 | done 14 | 15 | echo ---------------FINISHED----------------- -------------------------------------------------------------------------------- /scripts/pull-all.bat: -------------------------------------------------------------------------------- 1 | Rem NOT WORKING 2 | FOR %%directory IN (dir /b /a:d) DO ( 3 | cd %directory% 4 | git pull 5 | cd ..) -------------------------------------------------------------------------------- /scripts/pull-all.ps1: -------------------------------------------------------------------------------- 1 | # This script updates every git repository in a single folder. 2 | # Working properly 3 | # for example: cd github; .\pull-all.ps1 4 | 5 | $dirs = Get-ChildItem -Directory | select Name 6 | 7 | foreach ($dir in $dirs) 8 | { 9 | $dirok = $dir | foreach { $_.Name } 10 | cd $dirok 11 | echo $dirok 12 | git pull 13 | cd .. 14 | echo "=============" 15 | } -------------------------------------------------------------------------------- /scripts/pull-all.sh: -------------------------------------------------------------------------------- 1 | for dir in $(ls -d $(pwd)/*/) 2 | do 3 | echo ==== $dir ==== 4 | cd $dir 5 | git pull 6 | done -------------------------------------------------------------------------------- /scripts/pull-rebase-all.ps1: -------------------------------------------------------------------------------- 1 | # cd github; .\pull-rebase-all.ps1 2 | 3 | $dirs = Get-ChildItem -Directory | select Name 4 | 5 | foreach ($dir in $dirs) 6 | { 7 | $dirok = $dir | foreach { $_.Name } 8 | cd $dirok 9 | echo $dirok 10 | git config pull.rebase false 11 | cd .. 12 | echo "=============" 13 | } 14 | -------------------------------------------------------------------------------- /scripts/pull-rebase-all.sh: -------------------------------------------------------------------------------- 1 | for dir in $(ls -d $(pwd)/*/) 2 | do 3 | echo ==== $dir ==== 4 | cd $dir 5 | git config pull.rebase false 6 | echo done! 7 | done 8 | -------------------------------------------------------------------------------- /scripts/unpack_pack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | directory="$(pwd)"/$1 #directory in input 3 | if [ $# -gt 1 ]; then 4 | echo "Uso: 2.sh [dir]" #troppi argomenti passati in input 5 | exit 10 6 | fi 7 | 8 | if [[ $# -gt 0 ]]; 9 | then 10 | if [[ ! -d $directory ]]; then 11 | echo "La directory $1 non esiste" #controllo se directory in input esiste 12 | exit 20 13 | fi 14 | fi 15 | 16 | if [[ $# -gt 0 ]]; 17 | then 18 | if [[ ! -r $directory ]]; then 19 | echo "Impossibile leggere la directory $1" #directory senza diritti di accesso in lettura 20 | exit 30 21 | fi 22 | fi 23 | 24 | if [[ -z $1 ]]; then #campo input vuoto 25 | dir="." 26 | elif [[ ! -z $1 ]]; then #campo input con directory 27 | dir=$directory 28 | fi 29 | 30 | cd $dir 31 | #-------------------------------------------------------------------------------------------------------------------------------------------- 32 | #UNTIL HERE DIR INPUT CHECKING///////////////////////////////////////////////////// 33 | #-------------------------------------------------------------------------------------------------------------------------------------------- 34 | 35 | #------------------------------- 36 | #TAR/////// 37 | #------------------------------ 38 | 39 | for file in $( find $dir -name "*.tar" ) #lista nomi file .tar 40 | do 41 | mkdir ${file: 0 : -4} #crea directory con il suo nome senza estensione 42 | source=$file #source = file esaminato 43 | dest=${file: 0 : -4} #dest = directory appena creata 44 | mv $source $dest #sposta il file dentro la nuova directory 45 | dest2=$dest/$(basename $source) #dest2=dest/source 46 | cd $dest #muoviti in dest 47 | tar -xf $dest2 #estrai il contenuto del file 48 | tar=0 #ciclo for con tar=0. 49 | for var in $(ls -A1) #conta quanti elementi ci sono nel file 50 | do 51 | tar=$((tar+1)) 52 | done 53 | if [[ $tar == 2 ]]; then #se (oltre al file non decompattato) 54 | for variable in $(ls -A1) #c'è solo un elemento: 1) controlla che il file 55 | do #esaminato non sia il file non decompattato e : 56 | if [[ ! ${variable: -4} == .tar ]]; then #1a) se è un file, parentdest=cartella superiore 57 | if [[ ! -d $variable ]]; then #newdir = dest[0,-1] 58 | parentdest="$( dirname "$dest")" #rinomina dest con newdir 59 | newdir=${dest: 0 : -1} #muovi il file nella cartella parentdest 60 | mv $dest $newdir #spostati nella cartella parentdest e rimuovi 61 | mv $variable $parentdest #newdir. 62 | cd $parentdest #infine modifica secondo le regole descritte 63 | rm -Rf $newdir #il nome del file decompattato 64 | variable2=$(basename $source).$variable 65 | cd $parentdest 66 | mv $variable $variable2 67 | 68 | elif [[ -d $variable ]]; then #1b) se è una directory, parentdest = cartella superiore 69 | parentdest="$(dirname "$dest")" #newdir = dest[0,-1], rinomina dest con newdir 70 | newdir=${dest: 0 : -1} #sposta la cartella in parentdest 71 | mv $dest $newdir #archive= nome del file esaminato 72 | mv $variable $parentdest #sposta il file compattato esaminato nella cartella 73 | archive=$(basename $dest2) #scompattata ed elimina la cartella d'appoggio. 74 | mv $archive $parentdest/$variable #cambia il nome della cartella come descritto 75 | cd $parentdest #nelle specifiche. 76 | rm -Rf $newdir 77 | newname=$archive.$variable 78 | mv $variable $newname 79 | 80 | fi 81 | fi 82 | done 83 | 84 | fi 85 | 86 | done 87 | tar=0 88 | #----------------------------- 89 | #TGZ || TAR.GZ/// 90 | #---------------------------- 91 | 92 | for file in $( find $dir -name "*.tgz" -o -name "*.tar.gz" ) 93 | do 94 | if [ ${file: -4} == .tgz ]; then 95 | 96 | mkdir ${file: 0 : -4} 97 | source=$file 98 | dest=${file: 0 : -4} 99 | mv $source $dest 100 | dest2=$dest/$(basename $source) 101 | cd $dest 102 | tar -xzf $dest2 103 | tar=0 104 | for var in $(ls -A1) 105 | do 106 | tar=$((tar+1)) 107 | done 108 | if [[ $tar == 2 ]]; then 109 | for variable in $(ls -A1) 110 | do 111 | if [[ ! ${variable: -4} == .tgz ]]; then 112 | if [[ ! -d $variable ]]; then 113 | parentdest="$( dirname "$dest")" 114 | newdir=${dest: 0 : -1} 115 | mv $dest $newdir 116 | mv $variable $parentdest 117 | cd $parentdest 118 | rm -Rf $newdir 119 | variable2=$(basename $source).$variable 120 | cd $parentdest 121 | mv $variable $variable2 122 | 123 | elif [[ -d $variable ]]; then 124 | parentdest="$(dirname "$dest")" 125 | newdir=${dest: 0 : -1} 126 | mv $dest $newdir 127 | mv $variable $parentdest 128 | archive=$(basename $dest2) 129 | mv $archive $parentdest/$variable 130 | cd $parentdest 131 | rm -Rf $newdir 132 | newname=$archive.$variable 133 | mv $variable $newname 134 | fi 135 | fi 136 | done 137 | 138 | fi 139 | 140 | fi 141 | if [ ${file: -7} == .tar.gz ]; then 142 | 143 | mkdir ${file: 0 : -7} 144 | source=$file 145 | dest=${file: 0 : -7} 146 | mv $source $dest 147 | dest2=$dest/$(basename $source) 148 | cd $dest 149 | tar -xzf $dest2 150 | tar=0 151 | for var in $(ls -A1) 152 | do 153 | tar=$((tar+1)) 154 | done 155 | if [[ $tar == 2 ]]; then 156 | for variable in $(ls -A1) 157 | do 158 | if [[ ! ${variable: -7} == .tar.gz ]]; then 159 | if [[ ! -d $variable ]]; then 160 | parentdest="$( dirname "$dest")" 161 | newdir=${dest: 0 : -1} 162 | mv $dest $newdir 163 | mv $variable $parentdest 164 | cd $parentdest 165 | rm -Rf $newdir 166 | variable2=$(basename $source).$variable 167 | cd $parentdest 168 | mv $variable $variable2 169 | 170 | 171 | elif [[ -d $variable ]]; then 172 | parentdest="$(dirname "$dest")" 173 | newdir=${dest: 0 : -1} 174 | mv $dest $newdir 175 | mv $variable $parentdest 176 | archive=$(basename $dest2) 177 | mv $archive $parentdest/$variable 178 | cd $parentdest 179 | rm -Rf $newdir 180 | newname=$archive.$variable 181 | mv $variable $newname 182 | fi 183 | fi 184 | done 185 | 186 | fi 187 | 188 | fi 189 | done 190 | 191 | #--------------------------- 192 | #GZ////////// 193 | #-------------------------- 194 | for file in $( find $dir -name "*.gz" ) 195 | do 196 | if [ ! ${file: -7} == .tar.gz ]; then 197 | 198 | mkdir ${file: 0 : -3} 199 | source=$file 200 | dest=${file: 0 : -3} 201 | mv $source $dest 202 | dest2=$dest/$(basename $source) 203 | cd $dest 204 | gunzip -fk $dest2 205 | tar=0 206 | for var in $(ls -A1) 207 | do 208 | tar=$((tar+1)) 209 | done 210 | if [[ $tar == 2 ]]; then 211 | for variable in $(ls -A1) 212 | do 213 | if [[ ! ${variable: -3} == .gz ]]; then 214 | if [[ ! -d $variable ]]; then 215 | parentdest="$( dirname "$dest")" 216 | newdir=${dest: 0 : -1} 217 | mv $dest $newdir 218 | mv $variable $parentdest 219 | cd $parentdest 220 | rm -Rf $newdir 221 | variable2=$(basename $source).$variable 222 | cd $parentdest 223 | mv $variable $variable2 224 | 225 | 226 | elif [[ -d $variable ]]; then 227 | parentdest="$(dirname "$dest")" 228 | newdir=${dest: 0 : -1} 229 | mv $dest $newdir 230 | mv $variable $parentdest 231 | archive=$(basename $dest2) 232 | mv $archive $parentdest/$variable 233 | cd $parentdest 234 | rm -Rf $newdir 235 | newname=$archive.$variable 236 | mv $variable $newname 237 | fi 238 | fi 239 | done 240 | 241 | fi 242 | 243 | fi 244 | done 245 | 246 | #------------------------ 247 | #ZIP//////////// 248 | #---------------------- 249 | 250 | for file in $( find $dir -name "*.zip" ) 251 | do 252 | 253 | mkdir ${file: 0 : -4} 254 | source=$file 255 | dest=${file: 0 : -4} 256 | mv $source $dest 257 | dest2=$dest/$(basename $source) 258 | cd $dest 259 | unzip -qq $dest2 260 | tar=0 261 | for var in $(ls -A1) 262 | do 263 | tar=$((tar+1)) 264 | done 265 | if [[ $tar == 2 ]]; then 266 | for variable in $(ls -A1) 267 | do 268 | if [[ ! ${variable: -4} == .zip ]]; then 269 | if [[ ! -d $variable ]]; then 270 | parentdest="$( dirname "$dest")" 271 | newdir=${dest: 0 : -1} 272 | mv $dest $newdir 273 | mv $variable $parentdest 274 | cd $parentdest 275 | rm -Rf $newdir 276 | variable2=$(basename $source).$variable 277 | cd $parentdest 278 | mv $variable $variable2 279 | 280 | 281 | elif [[ -d $variable ]]; then 282 | parentdest="$(dirname "$dest")" 283 | newdir=${dest: 0 : -1} 284 | mv $dest $newdir 285 | mv $variable $parentdest 286 | archive=$(basename $dest2) 287 | mv $archive $parentdest/$variable 288 | cd $parentdest 289 | rm -Rf $newdir 290 | newname=$archive.$variable 291 | mv $variable $newname 292 | fi 293 | fi 294 | done 295 | 296 | fi 297 | 298 | done 299 | 300 | #----------------------- 301 | #TBZ || TAR.BZ || TAR.BZ2 302 | #----------------------- 303 | 304 | for file in $( find $dir -name "*.tbz" -o -name "*.tar.bz" -o -name "*.tar.bz2" ) 305 | do 306 | if [ ${file: -4} == .tbz ]; then 307 | mkdir ${file: 0 : -4} 308 | source=$file 309 | dest=${file: 0 : -4} 310 | mv $source $dest 311 | dest2=$dest/$(basename $source) 312 | cd $dest 313 | tar -xjf $dest2 314 | tar=0 315 | for var in $(ls -A1) 316 | do 317 | tar=$((tar+1)) 318 | done 319 | if [[ $tar == 2 ]]; then 320 | for variable in $(ls -A1) 321 | do 322 | if [[ ! ${variable: -4} == .tbz ]]; then 323 | if [[ ! -d $variable ]]; then 324 | parentdest="$( dirname "$dest")" 325 | newdir=${dest: 0 : -1} 326 | mv $dest $newdir 327 | mv $variable $parentdest 328 | cd $parentdest 329 | rm -Rf $newdir 330 | variable2=$(basename $source).$variable 331 | cd $parentdest 332 | mv $variable $variable2 333 | 334 | 335 | elif [[ -d $variable ]]; then 336 | parentdest="$(dirname "$dest")" 337 | newdir=${dest: 0 : -1} 338 | mv $dest $newdir 339 | mv $variable $parentdest 340 | archive=$(basename $dest2) 341 | mv $archive $parentdest/$variable 342 | cd $parentdest 343 | rm -Rf $newdir 344 | newname=$archive.$variable 345 | mv $variable $newname 346 | fi 347 | fi 348 | done 349 | 350 | fi 351 | 352 | fi 353 | if [ ${file: -7} == .tar.bz ]; then 354 | mkdir ${file: 0 : -7} 355 | source=$file 356 | dest=${file: 0 : -7} 357 | mv $source $dest 358 | dest2=$dest/$(basename $source) 359 | cd $dest 360 | tar -xjf $dest2 361 | tar=0 362 | for var in $(ls -A1) 363 | do 364 | tar=$((tar+1)) 365 | done 366 | if [[ $tar == 2 ]]; then 367 | for variable in $(ls -A1) 368 | do 369 | if [[ ! ${variable: -7} == .tar.bz ]]; then 370 | if [[ ! -d $variable ]]; then 371 | parentdest="$( dirname "$dest")" 372 | newdir=${dest: 0 : -1} 373 | mv $dest $newdir 374 | mv $variable $parentdest 375 | cd $parentdest 376 | rm -Rf $newdir 377 | variable2=$(basename $source).$variable 378 | cd $parentdest 379 | mv $variable $variable2 380 | 381 | elif [[ -d $variable ]]; then 382 | parentdest="$(dirname "$dest")" 383 | newdir=${dest: 0 : -1} 384 | mv $dest $newdir 385 | mv $variable $parentdest 386 | archive=$(basename $dest2) 387 | mv $archive $parentdest/$variable 388 | cd $parentdest 389 | rm -Rf $newdir 390 | newname=$archive.$variable 391 | mv $variable $newname 392 | fi 393 | fi 394 | done 395 | 396 | fi 397 | 398 | fi 399 | if [ ${file: -8} == .tar.bz2 ]; then 400 | mkdir ${file: 0 : -8} 401 | source=$file 402 | dest=${file: 0 : -8} 403 | mv $source $dest 404 | dest2=$dest/$(basename $source) 405 | cd $dest 406 | tar -xjf $dest2 407 | tar=0 408 | for var in $(ls -A1) 409 | do 410 | tar=$((tar+1)) 411 | done 412 | if [[ $tar == 2 ]]; then 413 | for variable in $(ls -A1) 414 | do 415 | if [[ ! ${variable: -8} == .tar.bz2 ]]; then 416 | if [[ ! -d $variable ]]; then 417 | parentdest="$( dirname "$dest")" 418 | newdir=${dest: 0 : -1} 419 | mv $dest $newdir 420 | mv $variable $parentdest 421 | cd $parentdest 422 | rm -Rf $newdir 423 | variable2=$(basename $source).$variable 424 | cd $parentdest 425 | mv $variable $variable2 426 | 427 | elif [[ -d $variable ]]; then 428 | parentdest="$(dirname "$dest")" 429 | newdir=${dest: 0 : -1} 430 | mv $dest $newdir 431 | mv $variable $parentdest 432 | archive=$(basename $dest2) 433 | mv $archive $parentdest/$variable 434 | cd $parentdest 435 | rm -Rf $newdir 436 | newname=$archive.$variable 437 | mv $variable $newname 438 | fi 439 | fi 440 | done 441 | 442 | fi 443 | 444 | fi 445 | done 446 | 447 | #---------------------- 448 | #BZ || BZ2//// 449 | #--------------------- 450 | 451 | for file in $( find $dir -name "*.bz" -o -name "*.bz2" ) 452 | do 453 | if [[ ! ${file: -7} == .tar.bz && ! ${file: -8} == .tar.bz2 ]]; then 454 | if [ ${file: -3} == .bz ]; then 455 | mkdir ${file: 0 : -3} 456 | source=$file 457 | dest=${file: 0 : -3} 458 | mv $source $dest 459 | dest2=$dest/$(basename $source) 460 | cd $dest 461 | bzip2 -dk $dest2 462 | tar=0 463 | for var in $(ls -A1) 464 | do 465 | tar=$((tar+1)) 466 | done 467 | if [[ $tar == 2 ]]; then 468 | for variable in $(ls -A1) 469 | do 470 | if [[ ! ${variable: -3} == .bz ]]; then 471 | if [[ ! -d $variable ]]; then 472 | parentdest="$( dirname "$dest")" 473 | newdir=${dest: 0 : -1} 474 | mv $dest $newdir 475 | mv $variable $parentdest 476 | cd $parentdest 477 | rm -Rf $newdir 478 | variable2=$(basename $source).$variable 479 | cd $parentdest 480 | mv $variable $variable2 481 | 482 | elif [[ -d $variable ]]; then 483 | parentdest="$(dirname "$dest")" 484 | newdir=${dest: 0 : -1} 485 | mv $dest $newdir 486 | mv $variable $parentdest 487 | archive=$(basename $dest2) 488 | mv $archive $parentdest/$variable 489 | cd $parentdest 490 | rm -Rf $newdir 491 | newname=$archive.$variable 492 | mv $variable $newname 493 | fi 494 | fi 495 | done 496 | 497 | fi 498 | 499 | fi 500 | if [ ${file: -4} == .bz2 ]; then 501 | mkdir ${file: 0 : -4} 502 | source=$file 503 | dest=${file: 0 : -4} 504 | mv $source $dest 505 | dest2=$dest/$(basename $source) 506 | cd $dest 507 | bzip2 -dk $dest2 508 | tar=0 509 | for var in $(ls -A1) 510 | do 511 | tar=$((tar+1)) 512 | done 513 | if [[ $tar == 2 ]]; then 514 | for variable in $(ls -A1) 515 | do 516 | if [[ ! ${variable: -4} == .bz2 ]]; then 517 | if [[ ! -d $variable ]]; then 518 | parentdest="$( dirname "$dest")" 519 | newdir=${dest: 0 : -1} 520 | mv $dest $newdir 521 | mv $variable $parentdest 522 | cd $parentdest 523 | rm -Rf $newdir 524 | variable2=$(basename $source).$variable 525 | cd $parentdest 526 | mv $variable $variable2 527 | 528 | elif [[ -d $variable ]]; then 529 | parentdest="$(dirname "$dest")" 530 | newdir=${dest: 0 : -1} 531 | mv $dest $newdir 532 | mv $variable $parentdest 533 | archive=$(basename $dest2) 534 | mv $archive $parentdest/$variable 535 | cd $parentdest 536 | rm -Rf $newdir 537 | newname=$archive.$variable 538 | mv $variable $newname 539 | fi 540 | fi 541 | done 542 | 543 | fi 544 | 545 | fi 546 | fi 547 | done -------------------------------------------------------------------------------- /trash/check_bestemmioni.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check bestemmioni 4 | # (C) Copyright 2020 Diavolo aka Belzebù 5 | 6 | recursive() 7 | { 8 | if [[ -f $f && ${f} != ${filename} ]]; then 9 | while read line; 10 | do 11 | if grep ${line} ${f}; then 12 | echo "FOUND ${line} in ${f}" 13 | fi 14 | done < $filename 15 | count=$(($count+1)) 16 | echo "${count} files scanned." 17 | elif [[ -d $f ]];then 18 | for i in $(ls $f) 19 | do 20 | f=$i 21 | recursive $i 22 | done 23 | fi 24 | } 25 | f=$(pwd) 26 | count=0 27 | filename=$1 28 | if [[ -z $filename || ! -e $filename ]];then 29 | echo "Filename doesn't exist" 30 | echo "Example:" 31 | echo " ./check_bestemmioni smadonnate.txt" 32 | exit 1 33 | fi 34 | recursive -------------------------------------------------------------------------------- /trash/folder_protector.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set /a tries=3 3 | set password= setyourpassword 4 | :top 5 | echo. 6 | echo ---------------------------------------------- 7 | echo. 8 | echo Folder Password 9 | echo. 10 | echo ---------------------------------------------- 11 | echo You have %tries% attempts left. 12 | echo Enter password 13 | echo ---------------------------------------------- 14 | set /p pass= 15 | if %pass%==%password% ( 16 | goto correct 17 | ) 18 | set /a tries=%tries -1 19 | if %tries%==0 ( 20 | goto penalty 21 | ) 22 | cls 23 | goto top 24 | :penalty 25 | echo Sorry, too many incorrect passwords, initiating shutdown. 26 | start shutdown -s -f -t 35 -c "SHUTDOWN INITIATED" 27 | pause 28 | exit 29 | :correct 30 | cls 31 | echo ---------------------------------------------- 32 | echo Password Accepted! 33 | echo. 34 | echo Opening Folder... 35 | echo ---------------------------------------------- 36 | explorer C:\Users\UTENTE\Desktop 37 | pause 38 | -------------------------------------------------------------------------------- /trash/smadonnate.txt: -------------------------------------------------------------------------------- 1 | madonna 2 | dio 3 | maiale 4 | crocifisso 5 | crocefisso 6 | porco 7 | cane 8 | gesu 9 | arrostito 10 | santo 11 | porcaccio 12 | ladro 13 | bambino 14 | incoronata 15 | santa 16 | santo 17 | madre 18 | padre 19 | mannaggia 20 | incoronato 21 | beato --------------------------------------------------------------------------------