Showing preview only (1,443K chars total). Download the full file or copy to clipboard to get everything.
Repository: Creepsky/creepMiner
Branch: master
Commit: 688e15380897
Files: 128
Total size: 1.4 MB
Directory structure:
gitextract_33r_salu/
├── .appveyor.yml
├── .gitignore
├── .travis.yml
├── CMakeLists.txt
├── ISSUE_TEMPLATE.md
├── LICENSE.md
├── README.md
├── _config.yml
├── bintray-dev.json
├── conanfile.txt
├── libShabal/
│ └── shabal.dll.lib
├── resources/
│ ├── cmSettings.sln
│ ├── frontail.json
│ ├── gitignore
│ ├── install.sh
│ ├── install_deps_conan.bat
│ ├── install_deps_conan.sh
│ ├── install_deps_conan_mint.sh
│ ├── public/
│ │ ├── block.html
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── block.js
│ │ │ ├── general.js
│ │ │ ├── plotfiles.js
│ │ │ └── settings.js
│ │ ├── login.html
│ │ ├── plotfiles.html
│ │ └── settings.html
│ ├── run.sh
│ ├── screen.sh
│ └── settingsui/
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── ConfigEditor.csproj
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── Models/
│ │ └── Base.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── app.config
│ └── packages.config
├── src/
│ ├── Declarations.cpp
│ ├── Declarations.hpp
│ ├── MinerUtil.cpp
│ ├── MinerUtil.hpp
│ ├── extlibs/
│ │ └── json.hpp
│ ├── gpu/
│ │ ├── algorithm/
│ │ │ └── gpu_algorithm_atomic.hpp
│ │ ├── gpu_algorithm_shell.hpp
│ │ ├── gpu_declarations.hpp
│ │ ├── gpu_shell.hpp
│ │ └── impl/
│ │ ├── gpu_cuda_impl.cpp
│ │ ├── gpu_cuda_impl.hpp
│ │ ├── gpu_opencl_impl.cpp
│ │ └── gpu_opencl_impl.hpp
│ ├── logging/
│ │ ├── Console.cpp
│ │ ├── Console.hpp
│ │ ├── Message.cpp
│ │ ├── Message.hpp
│ │ ├── MinerLogger.cpp
│ │ ├── MinerLogger.hpp
│ │ ├── Output.cpp
│ │ ├── Output.hpp
│ │ ├── ProgressPrinter.cpp
│ │ ├── ProgressPrinter.hpp
│ │ └── channels/
│ │ ├── ColoredPriorityConsoleChannel.cpp
│ │ ├── ColoredPriorityConsoleChannel.hpp
│ │ ├── MinerDataChannel.cpp
│ │ └── MinerDataChannel.hpp
│ ├── main.cpp
│ ├── mining/
│ │ ├── Deadline.cpp
│ │ ├── Deadline.hpp
│ │ ├── Miner.cpp
│ │ ├── Miner.hpp
│ │ ├── MinerCL.cpp
│ │ ├── MinerCL.hpp
│ │ ├── MinerConfig.cpp
│ │ ├── MinerConfig.hpp
│ │ ├── MinerData.cpp
│ │ ├── MinerData.hpp
│ │ └── WorkerList.hpp
│ ├── network/
│ │ ├── NonceSubmitter.cpp
│ │ ├── NonceSubmitter.hpp
│ │ ├── Request.cpp
│ │ ├── Request.hpp
│ │ ├── Response.cpp
│ │ ├── Response.hpp
│ │ ├── Url.cpp
│ │ └── Url.hpp
│ ├── nxt/
│ │ ├── nxt_address.cpp
│ │ └── nxt_address.h
│ ├── plots/
│ │ ├── Plot.cpp
│ │ ├── Plot.hpp
│ │ ├── PlotGenerator.cpp
│ │ ├── PlotGenerator.hpp
│ │ ├── PlotReader.cpp
│ │ ├── PlotReader.hpp
│ │ ├── PlotSizes.cpp
│ │ ├── PlotSizes.hpp
│ │ ├── PlotVerifier.cpp
│ │ ├── PlotVerifier.hpp
│ │ └── libShabal.h
│ ├── resources.rc
│ ├── shabal/
│ │ ├── MinerShabal.cpp
│ │ ├── MinerShabal.hpp
│ │ ├── cuda/
│ │ │ ├── Shabal.cu
│ │ │ └── Shabal.hpp
│ │ ├── impl/
│ │ │ ├── mshabal_avx2_impl.hpp
│ │ │ ├── mshabal_avx_impl.hpp
│ │ │ ├── mshabal_sse4_impl.hpp
│ │ │ └── sphlib_impl.hpp
│ │ ├── mshabal/
│ │ │ ├── mshabal.h
│ │ │ ├── mshabal_avx1.cpp
│ │ │ ├── mshabal_avx2.cpp
│ │ │ └── mshabal_sse4.cpp
│ │ ├── opencl/
│ │ │ └── mining.cl
│ │ └── sphlib/
│ │ ├── sph_shabal.cpp
│ │ ├── sph_shabal.h
│ │ └── sph_types.h
│ ├── wallet/
│ │ ├── Account.cpp
│ │ ├── Account.hpp
│ │ ├── Wallet.cpp
│ │ └── Wallet.hpp
│ └── webserver/
│ ├── MinerServer.cpp
│ ├── MinerServer.hpp
│ ├── RequestHandler.cpp
│ └── RequestHandler.hpp
└── version.id
================================================
FILE CONTENTS
================================================
================================================
FILE: .appveyor.yml
================================================
# Notes:
# - Minimal appveyor.yml file is an empty file. All sections are optional.
# - Indent each level of configuration with 2 spaces. Do not use tabs!
# - All section names are case-sensitive.
# - Section names should be unique on each level.
#---------------------------------#
# general configuration #
#---------------------------------#
# branches to build
branches:
# blacklist
except:
- gh-pages
#---------------------------------#
# environment configuration #
#---------------------------------#
# Build worker image (VM template)
image: Visual Studio 2017
# scripts that run after cloning repository
install:
- pip install conan
# stop all if one is failing
matrix:
fast_finish: true
environment:
global:
OPENCL_INCLUDE_DIR: C:\Intel\OpenCL\sdk\include
OPENCL_LIB_DIR: C:\Intel\OpenCL\sdk\lib\x64\OpenCL.lib
matrix:
- GPU: OFF
- GPU: ON
cache:
- C:\Intel\OpenCL
- C:\Program Files (x86)\Common Files\Intel\OpenCL
#---------------------------------#
# build configuration #
#---------------------------------#
# build platform, i.e. x86, x64, Any CPU. This setting is optional.
platform: x64
# build Configuration, i.e. Debug, Release, etc.
configuration: Release
build:
parallel: true # enable MSBuild parallel builds
project: creepMiner.vcxproj # path to Visual Studio solution or project
# MSBuild verbosity level
verbosity: normal
# scripts to run before build
before_build:
- IF "%GPU%" == "ON" ( IF NOT EXIST "C:\Intel\OpenCL\" ( appveyor DownloadFile "http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/12527/intel_sdk_for_opencl_2017_7.0.0.2567.exe" ) )
- IF "%GPU%" == "ON" ( IF NOT EXIST "C:\Intel\OpenCL\" ( start /wait .\intel_sdk_for_opencl_2017_7.0.0.2567.exe install --output=output.log --eula=accept ) )
- IF "%GPU%" == "ON" ( IF NOT EXIST "C:\Program Files (x86)\Common Files\Intel\OpenCL\" ( appveyor DownloadFile "http://registrationcenter-download.intel.com/akdlm/irc_nas/12512/opencl_runtime_16.1.2_x64_setup.msi" ) )
- IF "%GPU%" == "ON" ( IF NOT EXIST "C:\Program Files (x86)\Common Files\Intel\OpenCL\" ( start /wait msiexec /i opencl_runtime_16.1.2_x64_setup.msi /qn /l*v clruntime.log ) )
- pip install conan
- mkdir C:\projects\creepMiner\bin\Release
- cd C:\projects\creepminer
- conan install . -o Poco:shared=False -o OpenSSL:shared=False -o zlib:shared=False --build=missing
- cmake CMakeLists.txt -G "Visual Studio 15 2017 Win64" -DUSE_CUDA=OFF -DUSE_OPENCL=%GPU% -DCMAKE_BUILD_TYPE=RELWITHDEBINFO -DOpenCL_INCLUDE_DIR=%OPENCL_INCLUDE_DIR% -DOpenCL_LIBRARY=%OPENCL_LIB_DIR%
# scripts to run after build
after_build:
- CPack -C Release
#---------------------------------#
# artifacts configuration #
#---------------------------------#
artifacts:
# pushing a single file
- path: '*.zip'
#---------------------------------#
# deployment configuration #
#---------------------------------#
# providers: Local, FTP, WebDeploy, AzureCS, AzureBlob, S3, NuGet, Environment
# provider names are case-sensitive!
deploy:
# Deploy to GitHub Releases
- provider: GitHub
artifact: /.*\.zip/
draft: false
prerelease: false
force_update: true
auth_token:
secure: cIGGvYiRLrapIH5uW9tl18cGB7qgBTTkrOo+yFo0Hcv7zl0KYu0qUaxFRvKLj1Yi
on:
branch: master
appveyor_repo_tag: true # deploy on tag push only
- provider: BinTray
username: creepsky
repo: creepMiner
api_key:
secure: KkWiYEwxZuF+y1XOTWasSx0MT5GRP4f4o8k4TzavQl2lqzLEjhESqan+dt8jGLgX
subject: creepsky
package: creepMiner
version: stable
publish: true
artifact: /.*\.zip/
override: true
on:
branch: master
- provider: BinTray
username: creepsky
repo: creepMiner
api_key:
secure: KkWiYEwxZuF+y1XOTWasSx0MT5GRP4f4o8k4TzavQl2lqzLEjhESqan+dt8jGLgX
subject: creepsky
package: creepMiner-dev
version: development
publish: true
artifact: /.*\.zip/
override: true
on:
branch: development
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/
# Created by .ignore support plugin (hsz.mobi)
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:
# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries
# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml
# Gradle:
# .idea/gradle.xml
# .idea/libraries
# Mongo Explorer plugin:
# .idea/mongoSettings.xml
## File-based project format:
*.ipr
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
### Java template
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Eclipse template
*.pydevproject
.metadata
.gradle
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
# Eclipse Core
.project
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
### NetBeans template
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
.nb-gradle/
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
/cmake-build*
# Custom files and dirs
makefile
mining.conf
*.graphml
build/
# Visual Code
.vscode/*
# CMake
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
CMakeSettings.json
# conan
conanbuildinfo.cmake
conanbuildinfo.txt
conaninfo.txt
conan_imports_manifest.txt
CPackConfig.cmake
CPackSourceConfig.cmake
_CPack_Packages/
lib/
*.deb
*.rpm
*.tar*
bin
================================================
FILE: .travis.yml
================================================
language: cpp
before_install:
- eval "${MATRIX_EVAL}"
matrix:
fast_finish: true
include:
- os: osx
sudo: false
compiler: clang
script:
- conan install . --build=missing
- cmake . -DNO_GPU=ON
- make -j$(nproc)
- make package
file:
- "*.tar.gz"
env:
- NAME="osx clang" MATRIX_EVAL="brew install conan"
cache:
directories:
- "$HOME/.conan"
deploy:
- provider: releases
skip_cleanup: true
file_glob: true
file:
- "*.tar.gz"
on:
tags: true
api_key:
secure: xs3GCmymdo/fo46+ELma466ZdnYtYnQtV68EE3wbhXJD1Kc4Wq+rRiHXIpR+fhWhDFsbaiM0KIhjbMwwmphnXOhcVXvcufxqtvMxEySWx9uPOsIQ+LoeElmiU4AmmnEerVOEYDACj//KianI6Zm70PIwUBYGBaW41x97jhe4WLoQdKPj/ORsEGh/oZtJfI05qXzW1UdF6labSD/4jcx6CEsiFFCAh7EeAZjB0rhqfknp1IGn3N1G+rN43zYgMs9D3ww9PRDZdGlMqYk4cJglCQQAqQa0I71LtNcgkKNxfh4JBz8qyHRrTPr4tQXhtz9IPrQFLmSKtCvTJjjmUZ5RE2FqhVPXxswBKEv43tsDklqDt/qGjlcuMZwnn3c18R2gkBx2kXpyie6ujXIxrWaiao6Mp+OS2knzb5ebI4fqj6G8+mwQNheuR5qcmnZVfgv6CyCLxVgIOZEGaq6TBS9+6FiP6pqpKP3ySM/etmQB8GwDz53aUYirykL7sjunYMxiqf7T6XSwqHiZJWZUVZVPNxhEft2BVaxwhCf78KasZd0tzFfsEb0NM8vfKSAkj4zTdYTW3it6iSjH30PJbOjDuYSMC1Aje/T5q8JnPXJcIB2/i1BkAp37VXgC6ebOT/cSQsliVptzZx4ZXjuIN8zkuf6ka6NYNKVYOFRv5pChJoc=
- provider: bintray
file: bintray-dev.json
user: creepsky
skip_cleanup: true
key:
secure: Br+EQG0ypyBrzs/vvQozCmAdjE5yILyGY/IMcS2bUmlWurEBeQIk+nSSRFSCBdi0/GfXrs3a91XenIsvrYYIQQVNjJ277vw4fyJ2lFAbyIp7S3NeCFT04nmcDXqszIYDjdSHeQTFvuUnOD9vhLleDnke2Lff4+weVGgqD1Hr8mkPEUStqij3PYzk/5qVTUdQ69D0kIWr5+z+p0FSCerdAsdMW8LNX/6T+y4Cq7X4TdJudh4vW0mwnhkdj2IOl608cCNGU4OVLeHQdqQKC3yMxmJyyIryRa4ylwlqPw7s+9FBqGb2Gemip9a6gOowoPIbf2PPCquGDCKDtlTeT09fQbLcbOP4LtWZ/VentZAx6PbIrYxymPTI5p362a0z/SHCZ4X0I7ElUdCzGncHTkR9rKaRCEEnQiIsqK0OUa2sS18+rcnza0WgcXYR0ZUSWzjLbWhg1WeQzzQzITU3tM22CHG/Joy9z1Ob6xw+rdS9xw0/nTJoVHAfUobEfXx5tyFm5tnobIPrrdsoMZJ1sKH+geCP0m/tLyZCTQflmTwauUsB3+NTsomS2D4t3zX13XApGFgCRAbG+u3Hb9xv7PXSpxVpf70arDxVs8ZZsewJ4910VEoPk4Mg/dTYAh/M+2PQnd7TlNQ4pMkEOQTajti6bkHTA8dn2XjfomOCjOx5OxE=
on:
branch: development
- os: osx
sudo: false
compiler: clang
script:
- conan install . --build=missing
- cmake . -DUSE_CUDA=OFF -DUSE_OPENCL=ON
- make -j$(nproc)
- make package
file:
- "*.tar.gz"
env:
- NAME="osx clang opencl" MATRIX_EVAL="brew install conan"
cache:
directories:
- "$HOME/.conan"
deploy:
- provider: releases
skip_cleanup: true
file_glob: true
file:
- "*.tar.gz"
on:
tags: true
api_key:
secure: xs3GCmymdo/fo46+ELma466ZdnYtYnQtV68EE3wbhXJD1Kc4Wq+rRiHXIpR+fhWhDFsbaiM0KIhjbMwwmphnXOhcVXvcufxqtvMxEySWx9uPOsIQ+LoeElmiU4AmmnEerVOEYDACj//KianI6Zm70PIwUBYGBaW41x97jhe4WLoQdKPj/ORsEGh/oZtJfI05qXzW1UdF6labSD/4jcx6CEsiFFCAh7EeAZjB0rhqfknp1IGn3N1G+rN43zYgMs9D3ww9PRDZdGlMqYk4cJglCQQAqQa0I71LtNcgkKNxfh4JBz8qyHRrTPr4tQXhtz9IPrQFLmSKtCvTJjjmUZ5RE2FqhVPXxswBKEv43tsDklqDt/qGjlcuMZwnn3c18R2gkBx2kXpyie6ujXIxrWaiao6Mp+OS2knzb5ebI4fqj6G8+mwQNheuR5qcmnZVfgv6CyCLxVgIOZEGaq6TBS9+6FiP6pqpKP3ySM/etmQB8GwDz53aUYirykL7sjunYMxiqf7T6XSwqHiZJWZUVZVPNxhEft2BVaxwhCf78KasZd0tzFfsEb0NM8vfKSAkj4zTdYTW3it6iSjH30PJbOjDuYSMC1Aje/T5q8JnPXJcIB2/i1BkAp37VXgC6ebOT/cSQsliVptzZx4ZXjuIN8zkuf6ka6NYNKVYOFRv5pChJoc=
- provider: bintray
file: bintray-dev.json
user: creepsky
skip_cleanup: true
key:
secure: Br+EQG0ypyBrzs/vvQozCmAdjE5yILyGY/IMcS2bUmlWurEBeQIk+nSSRFSCBdi0/GfXrs3a91XenIsvrYYIQQVNjJ277vw4fyJ2lFAbyIp7S3NeCFT04nmcDXqszIYDjdSHeQTFvuUnOD9vhLleDnke2Lff4+weVGgqD1Hr8mkPEUStqij3PYzk/5qVTUdQ69D0kIWr5+z+p0FSCerdAsdMW8LNX/6T+y4Cq7X4TdJudh4vW0mwnhkdj2IOl608cCNGU4OVLeHQdqQKC3yMxmJyyIryRa4ylwlqPw7s+9FBqGb2Gemip9a6gOowoPIbf2PPCquGDCKDtlTeT09fQbLcbOP4LtWZ/VentZAx6PbIrYxymPTI5p362a0z/SHCZ4X0I7ElUdCzGncHTkR9rKaRCEEnQiIsqK0OUa2sS18+rcnza0WgcXYR0ZUSWzjLbWhg1WeQzzQzITU3tM22CHG/Joy9z1Ob6xw+rdS9xw0/nTJoVHAfUobEfXx5tyFm5tnobIPrrdsoMZJ1sKH+geCP0m/tLyZCTQflmTwauUsB3+NTsomS2D4t3zX13XApGFgCRAbG+u3Hb9xv7PXSpxVpf70arDxVs8ZZsewJ4910VEoPk4Mg/dTYAh/M+2PQnd7TlNQ4pMkEOQTajti6bkHTA8dn2XjfomOCjOx5OxE=
on:
branch: development
- os: linux
sudo: false
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
env:
- NAME="linux g++-5" MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
script:
- pip install conan --user
- conan install . --build=missing
- cmake . -DNO_GPU=ON
- make -j$(nproc)
- make package
cache:
directories:
- "$HOME/.conan"
deploy:
- provider: releases
skip_cleanup: true
file_glob: true
file:
- "*.tar.gz"
on:
tags: true
api_key:
secure: xs3GCmymdo/fo46+ELma466ZdnYtYnQtV68EE3wbhXJD1Kc4Wq+rRiHXIpR+fhWhDFsbaiM0KIhjbMwwmphnXOhcVXvcufxqtvMxEySWx9uPOsIQ+LoeElmiU4AmmnEerVOEYDACj//KianI6Zm70PIwUBYGBaW41x97jhe4WLoQdKPj/ORsEGh/oZtJfI05qXzW1UdF6labSD/4jcx6CEsiFFCAh7EeAZjB0rhqfknp1IGn3N1G+rN43zYgMs9D3ww9PRDZdGlMqYk4cJglCQQAqQa0I71LtNcgkKNxfh4JBz8qyHRrTPr4tQXhtz9IPrQFLmSKtCvTJjjmUZ5RE2FqhVPXxswBKEv43tsDklqDt/qGjlcuMZwnn3c18R2gkBx2kXpyie6ujXIxrWaiao6Mp+OS2knzb5ebI4fqj6G8+mwQNheuR5qcmnZVfgv6CyCLxVgIOZEGaq6TBS9+6FiP6pqpKP3ySM/etmQB8GwDz53aUYirykL7sjunYMxiqf7T6XSwqHiZJWZUVZVPNxhEft2BVaxwhCf78KasZd0tzFfsEb0NM8vfKSAkj4zTdYTW3it6iSjH30PJbOjDuYSMC1Aje/T5q8JnPXJcIB2/i1BkAp37VXgC6ebOT/cSQsliVptzZx4ZXjuIN8zkuf6ka6NYNKVYOFRv5pChJoc=
- provider: bintray
file: bintray-dev.json
user: creepsky
skip_cleanup: true
key:
secure: Br+EQG0ypyBrzs/vvQozCmAdjE5yILyGY/IMcS2bUmlWurEBeQIk+nSSRFSCBdi0/GfXrs3a91XenIsvrYYIQQVNjJ277vw4fyJ2lFAbyIp7S3NeCFT04nmcDXqszIYDjdSHeQTFvuUnOD9vhLleDnke2Lff4+weVGgqD1Hr8mkPEUStqij3PYzk/5qVTUdQ69D0kIWr5+z+p0FSCerdAsdMW8LNX/6T+y4Cq7X4TdJudh4vW0mwnhkdj2IOl608cCNGU4OVLeHQdqQKC3yMxmJyyIryRa4ylwlqPw7s+9FBqGb2Gemip9a6gOowoPIbf2PPCquGDCKDtlTeT09fQbLcbOP4LtWZ/VentZAx6PbIrYxymPTI5p362a0z/SHCZ4X0I7ElUdCzGncHTkR9rKaRCEEnQiIsqK0OUa2sS18+rcnza0WgcXYR0ZUSWzjLbWhg1WeQzzQzITU3tM22CHG/Joy9z1Ob6xw+rdS9xw0/nTJoVHAfUobEfXx5tyFm5tnobIPrrdsoMZJ1sKH+geCP0m/tLyZCTQflmTwauUsB3+NTsomS2D4t3zX13XApGFgCRAbG+u3Hb9xv7PXSpxVpf70arDxVs8ZZsewJ4910VEoPk4Mg/dTYAh/M+2PQnd7TlNQ4pMkEOQTajti6bkHTA8dn2XjfomOCjOx5OxE=
on:
branch: development
- os: linux
sudo: true
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
env:
- NAME="linux g++-5 opencl" MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
script:
- sudo apt-get install opencl-headers
- sudo apt install ocl-icd-opencl-dev
- pip install conan --user
- conan install . --build=missing
- cmake . -DUSE_CUDA=OFF -DUSE_OPENCL=ON
- make -j$(nproc)
- make package
cache:
directories:
- "$HOME/.conan"
deploy:
- provider: releases
skip_cleanup: true
file_glob: true
file:
- "*.tar.gz"
on:
tags: true
api_key:
secure: xs3GCmymdo/fo46+ELma466ZdnYtYnQtV68EE3wbhXJD1Kc4Wq+rRiHXIpR+fhWhDFsbaiM0KIhjbMwwmphnXOhcVXvcufxqtvMxEySWx9uPOsIQ+LoeElmiU4AmmnEerVOEYDACj//KianI6Zm70PIwUBYGBaW41x97jhe4WLoQdKPj/ORsEGh/oZtJfI05qXzW1UdF6labSD/4jcx6CEsiFFCAh7EeAZjB0rhqfknp1IGn3N1G+rN43zYgMs9D3ww9PRDZdGlMqYk4cJglCQQAqQa0I71LtNcgkKNxfh4JBz8qyHRrTPr4tQXhtz9IPrQFLmSKtCvTJjjmUZ5RE2FqhVPXxswBKEv43tsDklqDt/qGjlcuMZwnn3c18R2gkBx2kXpyie6ujXIxrWaiao6Mp+OS2knzb5ebI4fqj6G8+mwQNheuR5qcmnZVfgv6CyCLxVgIOZEGaq6TBS9+6FiP6pqpKP3ySM/etmQB8GwDz53aUYirykL7sjunYMxiqf7T6XSwqHiZJWZUVZVPNxhEft2BVaxwhCf78KasZd0tzFfsEb0NM8vfKSAkj4zTdYTW3it6iSjH30PJbOjDuYSMC1Aje/T5q8JnPXJcIB2/i1BkAp37VXgC6ebOT/cSQsliVptzZx4ZXjuIN8zkuf6ka6NYNKVYOFRv5pChJoc=
- provider: bintray
file: bintray-dev.json
user: creepsky
skip_cleanup: true
key:
secure: Br+EQG0ypyBrzs/vvQozCmAdjE5yILyGY/IMcS2bUmlWurEBeQIk+nSSRFSCBdi0/GfXrs3a91XenIsvrYYIQQVNjJ277vw4fyJ2lFAbyIp7S3NeCFT04nmcDXqszIYDjdSHeQTFvuUnOD9vhLleDnke2Lff4+weVGgqD1Hr8mkPEUStqij3PYzk/5qVTUdQ69D0kIWr5+z+p0FSCerdAsdMW8LNX/6T+y4Cq7X4TdJudh4vW0mwnhkdj2IOl608cCNGU4OVLeHQdqQKC3yMxmJyyIryRa4ylwlqPw7s+9FBqGb2Gemip9a6gOowoPIbf2PPCquGDCKDtlTeT09fQbLcbOP4LtWZ/VentZAx6PbIrYxymPTI5p362a0z/SHCZ4X0I7ElUdCzGncHTkR9rKaRCEEnQiIsqK0OUa2sS18+rcnza0WgcXYR0ZUSWzjLbWhg1WeQzzQzITU3tM22CHG/Joy9z1Ob6xw+rdS9xw0/nTJoVHAfUobEfXx5tyFm5tnobIPrrdsoMZJ1sKH+geCP0m/tLyZCTQflmTwauUsB3+NTsomS2D4t3zX13XApGFgCRAbG+u3Hb9xv7PXSpxVpf70arDxVs8ZZsewJ4910VEoPk4Mg/dTYAh/M+2PQnd7TlNQ4pMkEOQTajti6bkHTA8dn2XjfomOCjOx5OxE=
on:
branch: development
- os: linux
sudo: false
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
env:
- NAME="linux g++-6" MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
script:
- pip install conan --user
- conan install . --build=missing
- cmake . -DNO_GPU=ON
- make -j$(nproc)
cache:
directories:
- "$HOME/.conan"
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
env:
- NAME="linux g++-7" - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
script:
- python -V
- pip install conan --user
- conan install . --build=missing
- cmake . -DNO_GPU=ON
- make -j$(nproc)
cache:
directories:
- "$HOME/.conan"
================================================
FILE: CMakeLists.txt
================================================
##################################################################
# Project and CMake settings
##################################################################
cmake_minimum_required(VERSION 3.0.2)
project(creepMiner)
set(CMAKE_CXX_STANDARD 14)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
endif ()
##################################################################
# Configuration types
##################################################################
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
option(MINIMAL_BUILD "If yes, the miner will be build without any extras like CUDA, CPU instructions..." OFF)
option(NO_GPU "If yes, the miner will be build without CUDA and OpenCL." OFF)
##################################################################
# Environment variables
##################################################################
# get the version number from version.id
file(STRINGS version.id VERSION_RAW)
string(REPLACE "version:" "" VERSION ${VERSION_RAW})
# make a list
string(REPLACE "." ";" VERSION_LIST ${VERSION})
# filter version numbers
list(GET VERSION_LIST 0 VERSION_MAJOR)
list(GET VERSION_LIST 1 VERSION_MINOR)
list(GET VERSION_LIST 2 VERSION_BUILD)
list(GET VERSION_LIST 3 VERSION_REVISION)
# define it for the source files
add_definitions(-DVERSION_MAJOR=${VERSION_MAJOR}
-DVERSION_MINOR=${VERSION_MINOR}
-DVERSION_BUILD=${VERSION_BUILD}
-DVERSION_REVISION=${VERSION_REVISION})
##################################################################
# using Conan for dependencies
##################################################################
option(USE_CONAN "If ON, Conan will be used to satisfy OpenSSL,POCO,and zlib dependency" ON)
if (USE_CONAN)
# init conan
if (CONAN_DEBUG)
include(conan/debug/conanbuildinfo.cmake)
else ()
include(conanbuildinfo.cmake)
endif ()
conan_basic_setup()
endif ()
##################################################################
# CPU architecture (only for Unix/Mac)
##################################################################
if (UNIX OR APPLE)
set(CPU_ARCH "X64" CACHE STRING "CPU architecture")
set_property(CACHE CPU_ARCH PROPERTY STRINGS X32 X64)
if (CPU_ARCH STREQUAL "X32")
add_definitions(-m32)
endif ()
endif ()
##################################################################
# GPU acceleration
##################################################################
option(USE_CUDA "If yes, CUDA will be enabled" ON)
option(USE_OPENCL "If yes, OpenCL will be enabled" ON)
if (USE_CUDA AND NOT MINIMAL_BUILD AND NOT NO_GPU)
find_package(CUDA REQUIRED)
add_definitions(-DUSE_CUDA)
set(GPU_CUDA_ARCH "sm_52" CACHE STRING "The CUDA architecture")
set(CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS}
-arch=${GPU_CUDA_ARCH}
-std=c++11
-default-stream per-thread
-gencode=arch=compute_30,code=sm_30
-gencode=arch=compute_50,code=sm_50
-gencode=arch=compute_52,code=sm_52
-gencode=arch=compute_52,code=compute_52
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_62,code=sm_62)
endif()
if (USE_OPENCL AND NOT MINIMAL_BUILD AND NOT NO_GPU)
find_package(OpenCL REQUIRED)
include_directories(${OpenCL_INCLUDE_DIR})
add_definitions(-DUSE_OPENCL)
endif ()
##################################################################
# Additional options
##################################################################
option(CONAN_DEBUG "Only for development" OFF)
##################################################################
# UNIX / BSD specific
##################################################################
if (UNIX OR APPLE)
add_definitions(-D_REENTRANT -std=c++14)
link_directories(/usr/local/lib)
include_directories(/usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/src)
##################################################################
# MSVC specific
##################################################################
elseif (MSVC)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
set_source_files_properties(bin/icon.ico src/resources.rc PROPERTIES LANGUAGE RC)
add_definitions(/MP)
endif ()
##################################################################
# Source files
##################################################################
file(GLOB SOURCE_FILES
src/*.*pp
src/gpu/impl/*.*pp
src/logging/channels/*.*pp
src/logging/*.*pp
src/mining/*.*pp
src/network/*.*pp
src/nxt/nxt_address.h
src/nxt/nxt_address.cpp
src/plots/*.*pp
src/shabal/*.*pp
src/shabal/sphlib/*.*pp
src/wallet/*.*pp
src/webserver/*.*pp
src/resources.rc)
##################################################################
# Special files and settings
##################################################################
option(USE_SSE4 "If yes, SSE4 will be enabled" ON)
option(USE_AVX "If yes, AVX will be enabled" ON)
option(USE_AVX2 "If yes, AVX2 will be enabled" ON)
if (USE_SSE4 AND NOT MINIMAL_BUILD)
add_definitions(-DUSE_SSE4)
set(SOURCE_FILES ${SOURCE_FILES} src/shabal/mshabal/mshabal_sse4.cpp)
if (UNIX OR APPLE)
set_source_files_properties(src/shabal/mshabal/mshabal_sse4.cpp PROPERTIES COMPILE_FLAGS -msse2)
endif ()
endif ()
if (USE_AVX AND NOT MINIMAL_BUILD)
add_definitions(-DUSE_AVX)
set(SOURCE_FILES ${SOURCE_FILES} src/shabal/mshabal/mshabal_avx1.cpp)
if (UNIX OR APPLE)
set_source_files_properties(src/shabal/mshabal/mshabal_avx1.cpp PROPERTIES COMPILE_FLAGS -mavx)
elseif (MSVC)
set_source_files_properties(src/shabal/mshabal/mshabal_avx1.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
endif ()
endif ()
if (USE_AVX2 AND NOT MINIMAL_BUILD)
add_definitions(-DUSE_AVX2)
set(SOURCE_FILES ${SOURCE_FILES} src/shabal/mshabal/mshabal_avx2.cpp)
if (UNIX OR APPLE)
set_source_files_properties(src/shabal/mshabal/mshabal_avx2.cpp PROPERTIES COMPILE_FLAGS -mavx2)
elseif (MSVC)
set_source_files_properties(src/shabal/mshabal/mshabal_avx2.cpp PROPERTIES COMPILE_FLAGS /arch:AVX2)
endif ()
endif ()
if (USE_CUDA AND NOT MINIMAL_BUILD AND NOT NO_GPU)
set(SOURCE_FILES ${SOURCE_FILES} src/shabal/cuda/Shabal.cu)
endif ()
##################################################################
# Executable
##################################################################
if (USE_CUDA AND NOT MINIMAL_BUILD AND NOT NO_GPU)
cuda_add_executable(creepMiner ${SOURCE_FILES})
else ()
add_executable(creepMiner ${SOURCE_FILES})
endif ()
##################################################################
# Libraries
##################################################################
# Optimised Shabal Library
find_library(SHABAL_LIB NAMES shabal.dll libshabal.dylib libshabal.so HINTS "${CMAKE_SOURCE_DIR}/libShabal")
add_library(shabalLib STATIC IMPORTED)
set_property(TARGET shabalLib PROPERTY IMPORTED_LOCATION ${SHABAL_LIB})
target_link_libraries(creepMiner shabalLib)
target_link_libraries(creepMiner ${CONAN_LIBS})
if (NOT USE_CONAN)
find_package(Poco REQUIRED Foundation Util Net Crypto NetSSL)
target_link_libraries(creepMiner ${Poco_LIBRARIES})
endif()
if (USE_OPENCL)
target_link_libraries(creepMiner ${OpenCL_LIBRARY})
endif ()
##################################################################
# Naming
##################################################################
set_target_properties(creepMiner PROPERTIES DEBUG_POSTFIX -d)
##################################################################
# Installing
##################################################################
install(FILES src/shabal/opencl/mining.cl DESTINATION .)
install(DIRECTORY resources/public DESTINATION .)
if (NOT MSVC)
install(DIRECTORY bin/ DESTINATION . USE_SOURCE_PERMISSIONS)
install(FILES resources/run.sh resources/screen.sh DESTINATION . PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_WRITE GROUP_EXECUTE
WORLD_READ WORLD_WRITE WORLD_EXECUTE)
if (UNIX)
install(DIRECTORY lib/ DESTINATION lib)
install(FILES libShabal/libshabal.so DESTINATION .)
elseif (APPLE)
install(FILES libShabal/libshabal.dylib DESTINATION .)
endif()
else ()
install(TARGETS creepMiner RUNTIME DESTINATION .)
install(FILES libShabal/shabal.dll DESTINATION .)
endif ()
##################################################################
# Packaging
##################################################################
if (USE_CUDA AND NOT MINIMAL_BUILD AND NOT NO_GPU)
set(PACKAGE_NAME ${CMAKE_PROJECT_NAME}-cuda)
elseif (USE_OPENCL AND NOT MINIMAL_BUILD AND NOT NO_GPU)
set(PACKAGE_NAME ${CMAKE_PROJECT_NAME}-opencl)
else ()
set(PACKAGE_NAME ${CMAKE_PROJECT_NAME})
endif ()
set(CPACK_PACKAGE_NAME ${PACKAGE_NAME})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Burstcoin C++ CPU and GPU Miner")
set(CPACK_PACKAGE_VENDOR "Creepsky")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_BUILD})
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md")
SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_SOURCE_PACKAGE_FILE ${PACKAGE_NAME})
#set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
if (UNIX OR APPLE)
set(CPACK_SET_DESTDIR true)
set(CPACK_INSTALL_PREFIX "/opt/${CMAKE_PROJECT_NAME}-${VERSION}")
set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2")
set(CPACK_GENERATOR "TGZ")
set(CPACK_PACKAGE_SECTION "misc")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Creepsky")
include(CPack)
elseif (WIN32)
set(CPACK_GENERATOR "ZIP")
#set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}\\resources\\icon.ico")
#set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}\\resources\\icon.ico")
#set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}\\resources\\icon.ico")
set(CPACK_NSIS_MENU_LINKS "creepMiner.exe" "creepMiner")
include(CPack)
endif ()
================================================
FILE: ISSUE_TEMPLATE.md
================================================
Before submitting your issue, please review the following checklist:
- [ ] **AVOID** using the issue tracker for questions or help.
Submitting issues to this repository are usually reserved for bugs, feature requests, or changes to the source code. We have a great discord to ask for help here: https://discord.gg/qnjyVQt
- [ ] **DO** include log files.
- [ ] **DO** include the miner config.
- [ ] **DO** describe the operating system for the Server and Client (Windows / Linux). Also, the run-time platform and versions.
### Subject of the issue
Describe your issue here.
### Your environment
* version of creepMiner.
* version of OS.
* which browser and its version.
### Steps to reproduce
Tell us how to reproduce this issue.
### Expected behavior
Tell us what should happen.
### Actual behavior
Tell us what happens instead.
### Other information
List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix etc.
```
insert the output from ionic info here.
```
================================================
FILE: LICENSE.md
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
<img align="right" src="https://i.imgur.com/KsPZaKu.png">
creepMiner [](LICENSE.md)
===========
The creepMiner is a client application for mining Burst on a pool or solo. For more detailed information on [Burst mining](https://www.burst-team.us/).
creepMiner is written in C++ and is multi-threaded to get the best performance, it can also be compiled on most operating systems.
## Features
- Mine with your **CPU** (__SSE2__/__SSE4__/__AVX__/__AVX2__) or your **GPU** (__OpenCL__, __CUDA__)
- Mine **solo** or in a **pool**
- Multi Mining (Build a network of several miners)
- Filter bad deadlines with the auto target deadline feature
- Responsive web interface for keeping a close eye on your mining
- Support for **[BFS (Burst File System)](https://github.com/Creepsky/creepMiner/wiki/Burst-File-System)**
## Getting Started
Please follow the [Quick start guide](https://github.com/Creepsky/creepMiner/wiki)
## Instructions
- [Quickstart Quide](https://github.com/Creepsky/creepMiner/wiki)
- [Setting up the miner](https://github.com/Creepsky/creepMiner/wiki/Setting-up-the-miner)
- [Multi miner setup](https://github.com/Creepsky/creepMiner/wiki/Multi-miner-setup)
- [Solo mining](https://github.com/Creepsky/creepMiner/wiki/Solo-mining)
- [Mining & Optimization](https://github.com/Creepsky/creepMiner/wiki/Mining-&-Optimization)
If you need help and support then please review the [**FAQ**](https://github.com/Creepsky/creepMiner/wiki/FAQ) and [Setting up the miner](https://github.com/Creepsky/creepMiner/wiki/Setting-up-the-miner)
[](https://discord.gg/qnjyVQt) chat and ask in the **#help** channel.
### Build Status
| Platform | Master | Development |
| -------- | ------ | ----------- |
| Linux | [](https://travis-ci.org/Creepsky/creepMiner) | [](https://travis-ci.org/Creepsky/creepMiner) |
| Windows | [](https://ci.appveyor.com/project/Creepsky75522/creepminer/branch/master) | [](https://ci.appveyor.com/project/Creepsky75522/creepminer/branch/development) |
================================================
FILE: _config.yml
================================================
theme: jekyll-theme-architect
================================================
FILE: bintray-dev.json
================================================
{
"package": {
"name": "creepMiner-dev",
"repo": "creepMiner",
"subject": "creepsky",
"website_url": "https://github.com/Creepsky/creepMiner",
"issue_tracker_url": "https://github.com/Creepsky/creepMiner/issues",
"vcs_url": "https://github.com/Creepsky/creepMiner/tree/development",
"licenses": ["GPL-3.0"]
},
"version": {
"name": "development",
"desc": "latest development branch artifacts"
},
"files": [
{
"includePattern": "./(creepMiner-.*.tar.gz)",
"excludePattern": "./_CPack_Packages/.*",
"uploadPattern": "/$1",
"matrixParams": {
"override": 1
}
}
],
"publish": true
}
================================================
FILE: conanfile.txt
================================================
[requires]
Poco/1.9.0@pocoproject/stable
zlib/1.2.8@conan/stable
[options]
Poco:shared=True
OpenSSL:shared=True
zlib:shared=True
[generators]
cmake
[imports]
bin, *.dll -> ./bin
lib, *.dylib -> ./lib
lib, *.so* -> ./lib
================================================
FILE: resources/cmSettings.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27428.2005
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigEditor", "settingsui\ConfigEditor.csproj", "{DB3992B4-2E37-4B25-8C42-2E52832788AC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DB3992B4-2E37-4B25-8C42-2E52832788AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB3992B4-2E37-4B25-8C42-2E52832788AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB3992B4-2E37-4B25-8C42-2E52832788AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB3992B4-2E37-4B25-8C42-2E52832788AC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E87D0E0A-2137-48F1-974C-BFE7AE1DAA8D}
EndGlobalSection
EndGlobal
================================================
FILE: resources/frontail.json
================================================
{
"words": {
"ERROR": "color: #E88D67;",
"Error": "color: #E88D67;",
"WARN": "color: yellow;",
"INFO": "color: #99C5B5;",
"Node is DEAD": "color: #E88D67;",
"Nonce forward request": "color: yellow;",
"Got nonce forward request": "color: yellow;",
"nonce forward request from remote miner": "color: yellow;",
"success": "font-weight: bold;color: green;",
"deadlineText": "font-weight: bold;color: green;",
"ended in": "font-weight: bold;color:#70389c;",
"Sending wallet request": "color: yellow;",
"Processed block": "color: yellow;color: #99C5B5;",
"Ip": "color: yellow;color: #99C5B5;",
"in: ": "color: #2fa4e7;",
"Submit-loop 1": "color: #468847;",
"Submit-loop 2": "color: #468847;",
"Submit-loop ": "color: yellow;",
"ItemStateChangedEvent": "font-weight: bold;"
},
"lines": {
"/Volumes/": "color: #ff3898;font-weight: bold;",
"miner-01": "color: #ff3898;font-weight: bold;",
"miner-02": "color: #ff54A7;font-weight: bold;",
"miner-03": "color: #E4239D;font-weight: bold;",
"ERROR": "font-weight: bold;",
"Error": "font-weight: bold;",
"block#": "color: #99C5B5;",
"scoop#": "color: #99C5B5;",
"baseTarget#": "color: #99C5B5;",
"nonce: ": "color: #2fa4e7;",
"nonce found": "color: #73a839;",
"nonce submitted": "color: #468847;",
"JSON confirmation": "color: #468847;",
"nonce confirmed": "color: green;font-weight: bold;",
"requestType=getMiningInfo": "color: black;"
}
}
================================================
FILE: resources/gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
================================================
FILE: resources/install.sh
================================================
#!/bin/sh
# script to compile and package the creepMiner and all of his dependencies on Linux systems
usage()
{
echo "Usage: install.sh [cpu] [gpu] [min] [cuda] [cl] [sse4] [avx] [avx2] [help]"
echo "cpu: builds the cpu version (sse2 + sse4 + avx + avx2)"
echo "gpu: builds the gpu version (opencl + cuda + cpu)"
echo "min: builds the minimal version (only sse2)"
echo "cuda: adds CUDA to the build"
echo "cl: adds OpenCL to the build"
echo "sse2: adds sse2 to the build"
echo "sse4: adds sse4 to the build"
echo "avx: adds avx to the build"
echo "avx2: adds avx2 to the build"
echo "help: shows this help"
}
set_cpu()
{
sse4=$1
avx=$1
avx2=$1
}
set_gpu()
{
cuda=$1
opencl=$1
}
# default settings
if [ $# = 0 ]; then
echo "Using default settings"
set_cpu true
set_gpu false
fi
# parse settings
for i in $*
do
if [ $i = "help" ]
then
usage
exit
elif [ $i = "cpu" ]
then
set_cpu true
elif [ $i = "gpu" ]
then
set_gpu true
elif [ $i = sse4 ]
then
sse4=true
elif [ $i = "avx" ]
then
avx=true
elif [ $i = "avx2" ]
then
avx2=true
elif [ $i = "cl" ]
then
opencl=true
elif [ $i = "cuda" ]
then
cuda=true
fi
done
use_flag()
{
if [ "$2" = true ]; then
echo "-D$1=ON"
else
echo "-D$1=OFF"
fi
}
use_sse4=$(use_flag "USE_SSE4" $sse4)
use_avx=$(use_flag "USE_AVX" $avx)
use_avx2=$(use_flag "USE_AVX2" $avx2)
use_opencl=$(use_flag "USE_OPENCL" $opencl)
use_cuda=$(use_flag "USE_CUDA" $cuda)
echo $use_sse4
echo $use_avx
echo $use_avx2
echo $use_opencl
echo $use_cuda
cd ..
conan install . --build=missing -s compiler.libcxx=libstdc++11
rm CMakeCache.txt -f
cmake . -DCMAKE_BUILD_TYPE=RELEASE $use_sse4 $use_avx $use_avx2 $use_opencl $use_cuda
make -j$(nproc)
cp -Tr resources/public bin/public
cp resources/run.sh bin
cp resources/screen.sh bin
================================================
FILE: resources/install_deps_conan.bat
================================================
cd ..
conan install . --build=missing -o Poco:shared=False -o OpenSSL:shared=False -o zlib:shared=False -if conan/debug -s build_type=Debug
conan install . --build=missing -o Poco:shared=False -o OpenSSL:shared=False -o zlib:shared=False -s build_type=Release
pause
================================================
FILE: resources/install_deps_conan.sh
================================================
#!/bin/sh
cd ..
conan install . --build=missing -s compiler.libcxx=libstdc++11 -if conan/debug -s build_type=Debug
conan install . --build=missing -s compiler.libcxx=libstdc++11 -s build_type=Release
pause
================================================
FILE: resources/install_deps_conan_mint.sh
================================================
#!/bin/sh
sudo apt install python-pip
pip install --upgrade pip
sudo apt install python-setuptools
pip install conan --user
sh ./install_deps_conan.sh
================================================
FILE: resources/public/block.html
================================================
<div class="row bs-component">
<!-- current block -->
<div class="col-lg-4" style="margin:0;padding:0">
<div class="col-lg-12" id="container">
<div class="btn-group d-flex" role="group">
<!-- refresh btn -->
<button type="button" class="btn btn-primary w-100" onclick="connectBlock();" id="refreshButton">
<span class="fas fa-sync"></span>
Refresh
</button>
<!-- sound btn -->
<button type="button" class="btn btn-primary w-100" onclick="toggleConfirmationSound();">
<span class="fas fa-volume-up" id="iconConfirmationSound"></span>
Sound
</button>
</div>
<!-- progress bar -->
<div class="progress" style="margin-bottom:0">
<label class="progress-label" style="font-size:x-small;"></label>
<div id="progressBarVerify" class="progress-bar progress-bar-success progress-bar-striped bg-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
<div id="progressBar" class="progress-bar progress-bar-info progress-bar-striped bg-info" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
<!-- Nonce Display Options -->
<div class="col-lg-12 mm-hide">
<div class="row">
<div class="col-3" data-toggle="tooltip" data-placement="bottom" title="Show found nonce">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="cbNoncesFound" checked><label class="custom-control-label" for="cbNoncesFound"><i class="far fa-compass"></i> Found</label>
</div>
</div>
<div class="col-3" data-toggle="tooltip" data-placement="bottom" title="Show sent nonce">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="cbNoncesSent" checked><label class="custom-control-label" for="cbNoncesSent"><i class="far fa-paper-plane"></i> Sent</label>
</div>
</div>
<div class="col-3" data-toggle="tooltip" data-placement="bottom" title="Show confirmed nonce">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="cbNoncesConfirmed" checked><label class="custom-control-label" for="cbNoncesConfirmed"><i class="far fa-check-circle"></i> Conf</label>
</div>
</div>
<div class="col-3" data-toggle="tooltip" data-placement="bottom" title="Hide same nonce">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="cbHideSameNonces" checked><label class="custom-control-label" for="cbHideSameNonces"><i class="far fa-eye-slash"></i> Same</label>
</div>
</div>
<br>
</div>
</div>
<!-- Last Winner -->
<div class="col-lg-12" style="padding-top:1rem">
<div id="lastWinnerContainer" class="card mb-12" style="display: none">
<div class="card-header text-white bg-success"><h4>Last Winner</h4></div>
<div id="lastWinner" class="card-body">
<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0' id="lastWinnerNameRow">
Name <span id="lastWinnerName"></span>
</li>
<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>
Numeric <span id="lastWinnerNumeric"></span>
</li>
<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>
Address <span id="lastWinnerAddress"></span>
</li>
</div>
</div>
</div>
</div>
<!-- stats block -->
<div class="col-lg-8">
<div class="card mb-12">
<h4 class="card-header text-white bg-primary">Statistics</h4>
<div class="card-body">
<div class="row">
<div class="col-lg-3">
<h5 class="card-title">Deadlines</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Best
<div id="bestOverall">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Average
<span class="badge badge-primary badge-pill"><div id="avgDeadline">---</div></span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px" data-toggle="tooltip" data-placement="top" title="If this value is significantly lower than your real plot size over longer periods of time, you may want to check your plots for overlaps or corruption.">
Performance
<div id="deadlinePerformance">---</div>
</li>
</ul>
</div>
</div>
<div class="col-lg-3">
<h5 class="card-title">Blocks</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Mined
<div id="minedBlocks">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px" data-toggle="tooltip" data-placement="top" title="Number of blocks in which at least one deadline has been found and confirmed">
Confirmed
<div id="roundsSubmitted">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Won
<div id="wonBlocks">---</div>
</li>
</ul>
</div>
</div>
<div class="col-lg-3">
<h5 class="card-title">Difficulty</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Lowest
<div id="lowestDiff">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Highest
<div id="highestDiff">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Mean
<div id="meanDiff">---</div>
</li>
</ul>
</div>
</div>
<div class="col-lg-3">
<h5 class="card-title">Times</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Maximum scan
<span class="badge badge-secondary" id="maxRoundTime">N/A</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Average scan
<span class="badge badge-secondary" id="avgRoundTime" data-toggle="tooltip" data-placement="top" title = "" >N/A</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Average block
<span class="badge badge-secondary" id="avgBlockTime">N/A</span>
</li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="col-md-12" style="text-align:center"><h5 style="margin-bottom:0px; margin-top:10px">Deadlines</h5></div>
<div class="col-md-12">
<div id="deadlinesChart" style="height: 150px; width: auto; margin: 0px; margin-bottom:10px"></div>
<div class="alert alert-info">
<span id="deadlinesInfo">---</span>
<span class="float-right" data-toggle="tooltip" data-placement="top" title="Rescale" id="deadlinePlotButton" style="cursor: pointer">
<i class="fas fa-expand-arrows-alt"></i>
</span>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="col-md-12" style="text-align:center"><h5 style="margin-bottom:0px; margin-top:10px">Distribution</h5></div>
<div class="col-md-12">
<div id="deadlineDistributionChart" style="height: 150px; width: auto; margin: 0px; margin-bottom:10px"></div>
<div id="deadlineDistributionInfo" class="alert alert-info">---</div>
</div>
</div>
<div class="col-lg-6">
<div class="col-md-12" style="text-align:center"><h5 style="margin-bottom:0px; margin-top:10px">Difficulty</h5></div>
<div class="col-md-12">
<div id="difficultyChart" style="height: 150px; width: auto; margin: 0px; margin-bottom:10px"></div>
<div id="difficultyInfo" class="alert alert-info">---</div>
</div>
</div>
<div class="col-lg-6">
<div class="col-md-12" style="text-align:center"><h5 style="margin-bottom:0px; margin-top:10px">Block and Scan Times</h5></div>
<div class="col-md-12">
<div id="timeChart" style="height: 150px; width: auto; margin: 0px; margin-bottom:10px"></div>
<div class="alert alert-info">
<span id="timeInfo">---</span>
<span class="float-right" data-toggle="tooltip" data-placement="top" title="Rescale" id="timePlotButton" style="cursor: pointer">
<i class="fas fa-expand-arrows-alt"></i>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- system block -->
<div class="card mb-12">
<h4 class="card-header">System</h4>
<div class="card-body">
<div class="row">
<!-- System -->
<div class="row col-xs-12 col-md-12 col-lg-12" id="system">
<div class="col-lg-6 col-md-6 mm-hide">
<h5 class="card-title">URLs</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Pool
<div id="poolURL">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Mining
<div id="miningURL">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Wallet
<div id="walletURL">---</div>
</li>
</ul>
</div>
</div>
<div class="col-lg-3 col-md-3">
<h5 class="card-title">Mining</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Plot size
<div id="plotSize">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px" id="submitProbDL">
submitProb/targetDL
<div id="plotSize">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Pool DL limit
<span class="badge badge-primary badge-pill"><div id="poolDL">---</div></span>
</li>
</ul>
</div>
</div>
<div class="col-lg-3 col-md-3">
<h5 class="card-title">Processing</h5>
<div class="bs-component">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Readers
<div id="readers">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Intensity
<div id="intensity">---</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center" style="padding:4px">
Buffer size
<div id="bufferSize">---</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
================================================
FILE: resources/public/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>%title%</title>
<link rel="stylesheet" href="/css/custom.min.css">
<link rel="stylesheet" href="/css/bootstrap/bootstrap.min.css" media="screen">
<!-- Themes -->
<link rel="alternate stylesheet" title="cerulean" href="https://bootswatch.com/4/cerulean/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="cosmo" href="https://bootswatch.com/4/cosmo/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="cyborg" href="https://bootswatch.com/4/cyborg/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="darkly" href="https://bootswatch.com/4/darkly/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="flatly" href="https://bootswatch.com/4/flatly/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="journal" href="https://bootswatch.com/4/journal/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="litera" href="https://bootswatch.com/4/litera/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="lumen" href="https://bootswatch.com/4/lumen/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="lux" href="https://bootswatch.com/4/lux/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="materia" href="https://bootswatch.com/4/materia/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="minty" href="https://bootswatch.com/4/minty/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="pulse" href="https://bootswatch.com/4/pulse/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="sandstone" href="https://bootswatch.com/4/sandstone/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="simplex" href="https://bootswatch.com/4/simplex/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="sketchy" href="https://bootswatch.com/4/sketchy/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="slate" href="https://bootswatch.com/4/slate/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="solar" href="https://bootswatch.com/4/solar/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="spacelab" href="https://bootswatch.com/4/spacelab/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="superhero" href="https://bootswatch.com/4/superhero/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="united" href="https://bootswatch.com/4/united/bootstrap.min.css" type="text/css">
<link rel="alternate stylesheet" title="yeti" href="https://bootswatch.com/4/yeti/bootstrap.min.css" type="text/css">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script> var nullDeadline = "%nullDeadline%";</script>
</head>
<body>
<div class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary" style="padding:0rem 1rem">
<div class="container">
<!-- logo & title -->
<img src="img/icon.png" alt="%title%" class="img-responsive img-logo"> <a href="../" class="navbar-brand brand-cm" id="server-name"></a>
<!-- mobile navigation -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle">
<span class="navbar-toggler-icon"></span>
</button>
<!-- main nav bar -->
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav">
<li class="nav-item" id="btnBlock">
<a class="nav-link" href="/"><i class="fas fa-th-large"></i> Block</a>
</li>
<li class="nav-item" id="btnPlots">
<a class="nav-link" href="/plotfiles"><i class="fas fa-hdd"></i> Plots</a>
</li>
<li class="nav-item mm-hide" id="btnSettings">
<a class="nav-link" href="/settings"><i class="fas fa-wrench"></i> Settings</a>
</li>
<li class="nav-item" id="btnAbout" data-toggle='tooltip' data-placement='bottom' data-original-title=''>
<a href="" class="nav-link" data-toggle="modal" data-target="#aboutModal"><i class="fas fa-info"></i> About</a>
</li>
</ul>
<!-- right nav bar-->
<ul class="nav navbar-nav ml-auto">
<!-- miner selector -->
<li class="nav-item dropdown mm-show">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="miners"><i class="fas fa-server"></i> Miners <span class="caret"></span></a>
<div id="dynamic-menu" class="dropdown-menu" aria-labelledby="dropdownMenuLink"></div>
</li>
<!-- docker -->
<li class="nav-item dropdown d-container">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="download"><i class="fab fa-docker"></i> System <span class="caret"></span></a>
<div class="dropdown-menu" aria-labelledby="download">
<a class="dropdown-item" href="/" onmouseover="javascript:event.target.port=9002"><i class="fas fa-file-medical-alt"></i> Logs</a>
<a class="dropdown-item" href="/" onmouseover="javascript:event.target.port=9001"><i class="fas fa-cubes"></i> Supervisor</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="https://store.docker.com/community/images/whumphrey/creepminer"><i class="fas fa-shopping-bag"></i> docker store</a>
<a class="dropdown-item" href="https://github.com/nitr8/docker-creepminer"><i class="fab fa-github"></i> github</a>
</div>
</li>
<!-- theme selector -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="themes"><i class="fas fa-paint-brush"></i> Theme <span class="caret"></span></a>
<div class="dropdown-menu" aria-labelledby="themes" id="themeSelector"></div>
</li>
<!-- sign out btn -->
<li class="nav-item mm-hide" id="btnSignOut">
<a class="nav-link" href="/logout"><i class="fas fa-sign-out-alt"></i>Sign Out</a>
</li>
</ul>
</div>
</div>
</div>
<!-- render page content -->
<div class="container-fluid" id="content">%content%</div>
<!-- js CDN plugins, or local js -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.time.min.js"></script>
<script src="https://unpkg.com/sweetalert2@7.19.2/dist/sweetalert2.all.js"></script>
<script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>
<script src="js/biginteger.min.js"></script>
<script src="js/general.js"></script>
<script>
if(getCookie("theme")){
$('link[rel*=jquery]').remove();
$('head').append('<link rel="stylesheet jquery" href="'+getCookie("theme")+'" type="text/css" />');
}
</script>
<!-- About Modal -->
<div class="modal fade bd-about-modal-lg" tabindex="-1" role="dialog" aria-labelledby="aboutModalLabel" aria-hidden="true" aria-keyboard="false" bd-about-modal-lg id="aboutModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!-- head -->
<div class="modal-header">
<h5 class="modal-title" id="aboutModalLabel">About creepMiner</h5>
<a class="btn btn-inf active close" data-dismiss="modal" role="button" data-pressed="true">×</a>
</div>
<!-- body -->
<div class="modal-body">
<div class="container-fluid">
<div class="row bs-component">
<div class="col-lg-12">
<div class="card mb-12">
<!-- Version -->
<h4 class="card-header text-white bg-success" id="versionCardHeader">Version</h4>
<div class="card-body" id="versionCard">
<li class="list-group-item d-flex justify-content-between align-items-center list-cm"><span class="badge badge-primary">Running</span><span id="runningVer"></span></li>
<li class="list-group-item d-flex justify-content-between align-items-center list-cm"><span class="badge badge-success">Latest</span><span id="latestVer"></span></li>
<div class="alert" id="versionAlert" role="alert"></div>
</div>
<!-- About creepMiner -->
<h4 class="card-header text-white bg-primary" id="versionCardHeader">Information</h4>
<div class="card-body">
<p>creepMiner is an open source client application for burst mining. You can access the project on Github:</p>
<ul class="fa-ul">
<li><span class="fa-li"><i class="fas fa-file-archive"></i></span><a href="https://github.com/Creepsky/creepMiner/releases" target="blank_">Releases</a></li>
<li><span class="fa-li"><i class="fas fa-file-code"></i></span><a href="https://github.com/Creepsky/creepMiner" target="blank_">Code</a></li>
</ul>
<p>If you would like to chat with us or are looking for help please join
<i class="fab fa-discord"></i> <a href="https://discord.gg/YtwvuP" target="blank_" data-toggle="tooltip" data-placement="bottom" title="Discord server">discord</a>. Should you encounter any problems please speak to us first in discord else open a <i class="fab fa-github-square"></i> <a href="https://github.com/Creepsky/creepMiner/issues" target="blank_">issue</a> with the relevant information.
</p>
</div>
<!-- Donate -->
<h4 class="card-header text-white bg-info" id="versionCardHeader">Donate</h4>
<div class="card-body">
<div class="row">
<div class="col-lg-8">
<b>Main author:</b>
<ul class="fa-ul">
<li><span class="fa-li"><i class="fab fa-connectdevelop"></i></span><a href="https://github.com/Creepsky" target="blank_"><span class="badge badge-info">Creepsky</span></a><small> (core):<br><b>BURST-JBKL-ZUAV-UXMB-2G795</b></small></li>
</ul>
<b>Contributors:</b>
<ul class="fa-ul">
<li><span class="fa-li"><i class="far fa-life-ring"></i></span><a href="https://github.com/nitr8" target="blank_"><span class="badge badge-primary">nitr8</span></a><small> (front-end)<br><b>BURST-2ZXJ-NC7Q-PM3W-GFU97</b></small></li>
<li><span class="fa-li"><i class="far fa-life-ring"></i></span><a href="https://github.com/Herscht" target="blank_"><span class="badge badge-primary">Herscht</span></a><small> (front-end / back-end)<br><b>BURST-HWKA-CTBB-J69E-79YHU</b></small></li>
</ul>
</div>
<div class="col-lg-4">
<a href="https://github.com/Creepsky/creepMiner" target="blank_">
<img class="img-responsive center-block" alt="creepMiner" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAA9lBMVEUAAAAAcOoZc9EadtkZddYZc9IZc9MUbMYXcdAadtkZd9oZc88ZctEZdNMKbMwacM8ZdNQaeNoZc9EZdNMZc9QZddcZddcZddYZdNQWcc4Zcc4Tb8oXbcUZddcZddcaddcZctAZddYZdNUZdNUacMsZddcZc9QZdNMab70ZdNUYctEZdNUZc9IZddcZddYZc9IZdNQYdNUZdNUZc9MZc9QZcM4WbckZddYZdNUYdNMYcs8ZdNUZddYZdNQZdNYZdNQYdNQZdtgZddYZdNUZdNUaeNwZeNsZc9Ibe+Ead9oaed4ZctIaeNwZddcaet8ZdNUZdtkcgeym21DbAAAAR3RSTlMAAvyaof39GivcyT5n9QUwWN9Ecvr37LR4Ix4OCvzW2zrfwa0S5G5iB+hJ/fnwpqWWfspbTicWzo9TNJzFoLqDafPTXoqj5r+BCxMAAA3oSURBVHja7JqLUtpAFIZ31wboSFOqIigKIspFRAG1WivFSxWy2U3i+79M2SA9ZRJzX2s6PdPptKOyfPzn33OJCKN/ImYYD48rEuMxj+zIyz3lASH0+MymssKYPpfnIOXn2X9kBX1+RAitsGMiK475fRZhIXz2nks8hq0IkCmZyApCxwgLEIzGVJnICjKVDEJ45xrhuRevO/z3OekDoSO8AMEfaGpBFPPuSHDMSY7uzEVypQ2EsFIb6lS7xBYHpQwkM+k+AAdGD92JPrEjZSCEDQ/+BDkYLiRJGUhGawoOIGlqLyZJFwjRalvLIFs1bX5UykCMK4QBRPz7ykghiMI395CKEISK9ja5nVypAiH0FM8FAUnw6bwopglEMYvnC0FAkvOiXRTTBELY/s7C6mD3nX37Bk4RiK7zFnAASYtLqIkyQYh2n3UDyd6LGzhFIAodCA4nyUCMJekBIdZhDqwOoaLcoUXSBEL7CLspglGfpghEMXtrIMiyJGs9U0kNCKElFWH39ZNaoiQtIPqkWBAc7iSFYpJjiVQQwoaV10EqMJbIBdFJ7NCabhwwlpDYEQTE1GIGn9a3vUC261Me9wwzAEiv9jFe1J4GyAsEDZ5iH9HzBSG0cZGLGxXkGZXYB1w0GPEDMVZQCmLF8AWhH1SE4wbyjPgvr36g/op8wO/94Q/sXz0V+VdA/ivyevwHSQwERwwVeYaKI8Zf8AgO8yX5Zs+tN1v58NE88m5Rjpr58NFqrucip1Z28OlZC9/gsWJ/e4HixNjuF1n4RlR7/jTIxkitvZJmHW90M6Fiw6TVAnbfouBClZobmZAveMyt0l4ss6P2eocqRA8VE4Vou6MtEAXk2BrtakSZhHs5kqGHzTbCOAoInH09E4WEHU6JadRuVYSXOdTbmmGGHQ8zxNJK1wjhiGYHUXaahzQT8nghitX4jJAK+xP0uWEJOcKFLccOyBEBBETJlSwQJfQ7iPN56EKOHMgREQREua0bUd6EbVFs/9mL9mEY9VuQI3ZBxCItNC2KKJvlingflfJmFDk0TaQnTrDXUlE7Xw//ViaEa/trCK3tazz8z2ZoPd8Gl8UFAaec8Ahe1WlvMOhRPcJtwU/AHUmAAEq+bujh84NrGo+SlR/zgJGMR4Dk4kRjoUVRZhH2RwjjJxcIqZLmEYzarRqbkInkIBNWa7URljHqQpNxajcZEkM0OKfQ4CQNAigPdSpTFDKh9QfAkJBa4JSRPFHsfhPcIQkERKmBKEnLUQM55KUWOOX7LiNK8nKw3e/gDukgSGwXzqrhO3L/3r96JnYT6C1AYGQFUZKTA0Zk+R4BlEJ1apIk5SgAxluAQHe/tVJkipKIHAor9rfEa74pCDjlfMigj4ocOuFseA7uSNoj2N916Osg7KDhPrYMvvpfVlFBsFdZAtS9khatPEIJ1Ep7IIfHUThKamF0kT8IYD4xB9dodNMTk9ZgmvWSI7sdSRGMrp9uViG/vMtjkSokEsbM5FACPeVYG54hHEmRz1+mvZ9wsXue8u2S8hAkYHI6/IaCyLF9dWcUIoOYE3pZwEFN72i/kjI5RmqrSrkeDsT4A0SbKc8bMDj7mD7oSA9Dub0twr6X/HXDYse6GV0RTbGng3VvL8Ly6yOYPojJPwYz+UG5Y3RFsYqjyPx2/AEPPHwGlaJv+wWVXIwdAZL2aN+uubFB7FS+E6ZXA6CcD6k4NYDJRSUPeiEqYpcdFoQ6QMSajd6fqYFMnx33aEbxkSNDe+NsEJO3W7+HBT0eCGTCLmzLvJ25WrK44snBrdKqf2OFhcnh/ogLAjOocViuBBKl3ezwzOscGd5pthEKYvJNA270+B6B25KJNa4firDSCI5xBqEjX79h7Gisk1AE6tenqyCVHp16g5wi7PtZbPXvoOtJThG4+6u+psdBQLBPH5qHPjRZEDC9/UANY2kg2DY5rJiTTS0I0qU+psfIHwRhL5MPOi6zWiZhEPupnjC9ihMFAXcc3YDJ5aQWzBC0CKZPBgS6nP4Gg4IqEQRMPz/YHcTwAjEAxFnJ4UG8ZBBYpp2Ip+juICOmeBR2NlqAONr1kmM7Lsvsf1b6zjqYfhmkMT1+HeR42nCA2HIcOGYzOWZ3mp79mJnejaTMYW/nvMB5GWG3xvmGWSDHWymyaO+vXJtYFdoLt02c6tau92F/8UYegdDn7b3bTZwdw95ueUgfZ11NDpX8jUEgUYTpsbM6r4rBLrOU5YSzfVgwLVVyC0z+5qkFv56wXnFDqax3lrxLJhSuh6VvHHRo1/Mk+YpApXf9/ZWTrkaU31NA16kdVu2Z3AI//RVF4Kl472fWTRTcqlKTLEpoC7tk1faLyd8DyEwUk12e2SSuuwNdV6hzMSo41LN7anrKAQ6Tm1pQ6bujnFOUeQ/Y7bKbI4RUF5O/VPJ3osiLlQ9hkbe0TB3v7o6/OuUQizcKd+5fNzuIYmk/nMsRIUq57CbH2r5dyd8diLiJ3U1v/+XcrvcYmDwQSIzdr6VMQgXh9PKb6jQ9drvOuDuGhKbx+ulXe9ffnTQMRWkkoLJ16hji0AmTORmI000Y28T9YJa2Ke2+/5eRgOyeCSlL2lSqvj93ztrd3ZeX5r378gJp2RtlRZ7SFRg2GF+6GuxSS7XQk+8PJSoeWPTPD8KlPZXNPUfhwYHdU1ojHMnJloJejgzL4UAKNmspKAM/lisKjMzOCAoVtVywGQ7kgOakcXhsUs9UrbNnxqRcSpLi5tgSIC+KvhwQQsclOlSY5RhBuD/HrvUwIHZcQHAY6+PrXxYIoHQG66h4xAREgmPijkrlOET+xjRl9nBSYmIEh4R+FekaNSA4+ozLUJQk6VoIVo1yfCJ/kx9cEb6SAIJEDVpgIgHBpyqyCfpdC3TggzomvRYXBPSxUnQyAjrQcxEfEPSAaI9aON+8R00pHiBQafTRN6YVCDq0NHUrvAYpelwLOaYL9OvFBkTQzKcLiMvpgLxDjziTd1jujVyixbVQ0ed0aBMwo50Q/Wtxhl+I/LPIx2hiBB2FoyaJmRH0XOzHrvsVrTX0eMYGBB1JWdHqUO7VNcKgfFjDcTU6EKyOt9ci5aGh3qu7/cJEIF/UzBcQGmPUomSx4BTfexuKea3T2lleSLOZMdZqWCkRgaBSbAgX5mZpXzlBN5ykpsU18XfQYCsDQbAS08EPqn1mqyfoPBtF6EWkfNhH35jaGkGw2ukJ1BT8p51xXjIXJYndspwGmskXqZHab+wWVQaC1XEYsjqMXpd5LcuPkPuls9S0MJIY17Vhk6i5FoLVFadDqM/81mSERk5i81zMoBMSTL5mfawUqZ0ddOTF/ynzgrtvLPUR4rFub/zEkL4x/ipJ10Kw6h4LV8ekn5/7bjxlBUpZMzSkbGfRNyblWqBDrM/MkVjqI2jyWOPnNSEpvBYoDYT4I06HEAekWzG4Fo5s4rYbw+DVWU6KjGsRytYHIXRsc30mjU9UAw1gqVwP2R57vBQtAYR4DkqkcyTzTgvmEx2lN5ff3wC1v5CUh7kWpexyHAwNUXpgI+vxh8ULBP7lXOJ6o8V9PT55ECNclvICe8d8wgZ3qMQMBF9214Z4pXROiowES4HkyFjlDzedl9dD1aGrzk6p7fOTqOhv4KQ475cAWbft83lxOmoyg48MdOgAAmVARexfnYH9OWOGAmE8amQMoX+ONMtlka1h4s8vTsrxEkZ2C2I6vn7C3qoPCEgpDfIiUpZ2AdTrwmBlQhOfABC0Fpki91hihrhbNkG5LA7YyHdEN5Nr4vmHVeJaFGLxz6+4oExaWJnXcpOUOUEO5L08hX8pGlpYEXMTA4JrvPD5pW789yeawT+moIMwMyIdj7M+Ym7CawRt3FBjSxsup7P+vFyW+M4Vsl8KXlXoM5u4K6Cgo4T5yDzLelWHV4tXRS47rZQBigQdB18m9fsVAYKDsBwd03tV+DtWR5zJIzGUSOEGYePb0erJZV3icZWyxN0wG+1ZYm91XGsWicX3/C7qZRhZknJZdUY8QiWMtCx2dfQAJJOYG3hE7umuumv9cHxPynx/FLRPl0ExuMBw6Ms+2wuUXettcV3evNr7SvgJ0eyd+1vyD26tK8plM5VqQcGqBwf1cErMwnFV6dGdxK9bNzJ6TBGIoWjLF7ui/R8Ssar2jwH5a1zrPxBZ079GTCOy6Qm/MBNA9M6xMnRvl2ej5Yy0O/motkSR+CHyCzptESMwv3H+NKJdXYQDubiK+obzhm8tA+L6LKLZw518mNY1vzO0WUTz3UTmIXr7YUD2PRLZ3GQmVDq7rzNCe70b09BQ/UD4AG2xrpMP0k4JEIuwtrgw12apmeJqUa9RFQGpNrz0zNW1iDMQedZJmiYdW8R+8mpxL86rJ3aagFiUbS4GsslSNQ2czwiuAwlw1L+wdM1nd603zxYBefbGcq2YTScQTgnmaM9N0E4TED7ZfA7IbKZ5moDwCzLngZxNCUkXkGBvI2PeV2ls7AXpA2IVne+Z3+y7U7S4pQsIsXemQ8ExBnzn12aYLiAWDdbuA1mb3bOSMiCE7VbuDQHfnW2GKQNCra1exgAhvS0rnYzwWe+GYdzlst7dxd60AaFeqZAxZ7G3ULo7iKQNiFUcHeI2p8PRXexNHRAS1B7PgDyuYTNMHRCLOOUZkLKD16QQiN3tTJXAna6tHQhrEX3WPJoCOWoSfdZiHMjNLRtqM+e2Ox1+2r11htqM3d6MgVzfPNJo2ZNtDmT7JPtIo91g0J1GMxJ5yU+QCIojvptMXwAAAABJRU5ErkJggg=="/>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
%includes%
</body>
</html>
================================================
FILE: resources/public/js/block.js
================================================
var MasterMiner = 'false';
class Deadline {
constructor(deadline) {
this.accountName = deadline["account"];
this.accountId = BigInteger(deadline["accountId"]);
this.accountIdStr = deadline["accountId"];
this.deadlineStr = deadline["deadline"];
this.deadline = BigInteger(deadline["deadlineNum"]);
this.nonce = BigInteger(deadline["nonce"]);
this.time = deadline["time"];
this.plotfile = deadline["plotfile"];
this.miner = deadline["miner"];
this.worker = deadline["worker"];
this.ip = deadline["ip"];
}
}
class Block {
constructor() {
this.panel = $("<div class='card mb-12'></div>");
this.head = $("<h4 class='card-header bg-success text-white'>");
this.body = $("<div class='card-body'></div>");
this.data = $("<ul id='blkdata' class='list-group'></ul>");
this.panel.append(this.head);
this.panel.append(this.body);
this.panel.append(this.data);
this.bestDeadline = null;
}
newBlock(block) {
this.head.html("Current block: " + block["block"] + "</h4><span class='badge badge-light float-sm-right' id='blockTimer'></span>");
this.body.html("<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>Start time <span class='badge badge-secondary float-sm-right'>" + block["time"] + "</span></li>");
this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>Scoop <span>" + block["scoop"] + "</span></li>"));
this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>Base target<span>" + block["baseTarget"] + "</span></li>"));
blockStartTime=block["startTime"];
var diffDifference = block['difficultyDifference'];
var diffDifferenceString = String(diffDifference);
if (diffDifference === 0)
diffDifferenceString = "no change";
else if (diffDifference > 0)
diffDifferenceString = "+" + String(diffDifference);
this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>Difficulty <span>" + block["difficulty"] + " (" + diffDifferenceString + ")</span></li>"));
this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center' style='border:none; padding:0'>Target <span class='badge badge-primary badge-pill'>" + deadlineFormat(block["targetDeadline"]) + "</span></li>"));
//this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center'>Generation signature</li>"));
//this.body.append($("<li class='list-group-item d-flex justify-content-between align-items-center'><small>" + block["gensigStr"] + "</small></li>"));
this.data.empty();
}
addLine(line) {
this.data.prepend(line);
}
getLine(id) {
return this.data.find("#" + id);
}
getData() {
return this.data;
}
}
$('#timePlotButton').on('click', function(event) {
if (timePlotMax == maxBlockTime*1.25)
timePlotMax = maxScanTime*1.25;
else
timePlotMax = maxBlockTime*1.25;
if (timePlotMax < 30) timePlotMax = 30;
timePlot.getAxes().yaxis.options.max = timePlotMax;
timePlot.setupGrid();
timePlot.draw();
$(".flot-tick-label").css("color", flotFrameColor);
});
$('#deadlinePlotButton').on('click', function(event) {
if (deadlinePlotMax)
deadlinePlotMax = null;
else
deadlinePlotMax = deadlinePlotSmallMax;
deadlinePlot.getAxes().yaxis.options.max = deadlinePlotMax;
deadlinePlot.setupGrid();
deadlinePlot.draw();
$(".flot-tick-label").css("color", flotFrameColor);
});
var timerRefresh = setInterval(function(){ myTimer() }, 1000);
function myTimer() {
var d = new Date() / 1000;
var t = Math.round(d - blockStartTime);
var timerElement=document.getElementById("blockTimer");
if (timerElement)
timerElement.innerHTML = deadlineFormat(t);
}
var system;
var bestDeadlineOverall;
var bestDeadlineOverallElement;
var bestHistorical;
var minedBlocks = -1;
var minedBlocksElement;
var name = document.title;
var hideSameNonces;
var noncesFound;
var noncesSent;
var noncesConfirmed;
var progressBar;
var progressBarVerify;
var lastWinnerContainer;
var lastWinner;
var confirmedSound = new Audio("sounds/alert.mp3");
var playConfirmationSound = true;
var iconConfirmationSound;
var avgDeadline;
var wonBlocks;
var lowestDiff;
var highestDiff;
var deadlinePlotSmallMax=86400;
var deadlinePlotMax=null;
var bestDeadlinesChart;
var deadlinePlot;
var deadlinesInfo;
var maxScanTime=10;
var maxBlockTime=10;
var timePlotMax=10;
var timeChart;
var timePlot;
var timeInfo;
var deadlineDistributionChart;
var deadlineDistributionBarWidth = 1;
var deadlineDistributionPlot;
var deadlineDistributionInfo;
var difficultyChart;
var difficultyPlot;
var difficultyInfo;
var miningData = new Block();
var settingsDlComboboxes;
var maxHistoricalBlocks;
var blockStartTime = new Date() / 1000;
var flotFrameColor="#888888";
// ******************************************
var logSettings = {};
// ******************************************
// I change this [] to {} and also in settings.js and general.js
// var logSettings = [];
if (confirmedSound)
confirmedSound.volume = 0.5;
var NONCE_FOUND = 1 << 0;
var NONCE_SENT = 1 << 1;
var NONCE_CONFIRMED = 1 << 2;
// ******************************************
// Set on click event of elements
$("#cbHideSameNonces").on('click', function () {
localSet('hideSameNonces', this.checked);
})
$("#cbNoncesFound").on('click', function () {
localSet('noncesFound', this.checked);
})
$("#cbNoncesSent").on('click', function () {
localSet('noncesSent', this.checked);
})
$("#cbNoncesConfirmed").on('click', function () {
localSet('noncesConfirmed', this.checked);
})
// Retrieve any possible local variable and set in js vars
function localInitCheckBoxes() {
playConfirmationSound = localGet('playConfirmationSound');
// Check if values exist in local or set true(default)
var temp = localGet('hideSameNonces');
if (temp == null) temp = true;
hideSameNonces.prop('checked', temp);
temp = localGet('noncesFound');
if (temp == null) temp = true;
noncesFound.prop('checked', temp);
temp = localGet('noncesSent');
if (temp == null) temp = true;
noncesSent.prop('checked', temp);
temp = localGet('noncesConfirmed');
if (temp == null) temp = true;
noncesConfirmed.prop('checked', temp);
}
// I break in 2 functions because must initialized in different points of initBlock
function localInitLogSettings() {
var temp = localGet('logSettings');
if (temp == null)
return;
if (temp['miner']) $("#cmb_miner").val(temp['miner'])
if (temp['config']) $("#cmb_config").val(temp['config'])
if (temp['server']) $("#cmb_server").val(temp['server'])
if (temp['socket']) $("#cmb_socket").val(temp['socket'])
if (temp['session']) $("#cmb_session").val(temp['session'])
if (temp['nonceSubmitter']) $("#cmb_nonceSubmitter").val(temp['nonceSubmitter'])
if (temp['plotReader']) $("#cmb_plotReader").val(temp['plotReader'])
if (temp['plotVerifier']) $("#cmb_plotVerifier").val(temp['plotVerifier'])
if (temp['wallet']) $("#cmb_wallet").val(temp['wallet'])
if (temp['general']) $("#cmb_general").val(temp['general'])
}
// Saves in local storage - no expiration
// Item : name of local variable
// Data : content of item variable
function localSet(item, data) {
localStorage.setItem(item, JSON.stringify(data));
}
// Get from local storage
// Item : name of local variable
function localGet(item) {
return JSON.parse(localStorage.getItem(item));
}
// ******************************************
function newBlock(json) {
miningData.newBlock(json);
setMinedBlocks(json["blocksMined"]);
document.title = name + " (" + json["block"] + ")";
checkAddBestOverall(BigInteger(json["bestOverall"]["deadlineNum"]),
json["bestOverall"]["deadline"],
json["bestOverall"]["blockheight"]);
var bestHistoricalJson = json["bestHistorical"]["deadline"];
var bestHistoricalHeightJson = json["bestHistorical"]["blockheight"];
if (bestHistoricalJson != null && bestHistoricalHeightJson != null)
bestHistorical.html(bestHistoricalJson + " <small>@" + bestHistoricalHeightJson + "</small>");
setOverallProgress(0);
setOverallProgressVerify(0);
avgDeadline.html(json["deadlinesAvg"]);
deadlinePerformance.html(Math.round(json["deadlinePerformance"]*1000)/1000 + " TB");
var roundsSub=json["nRoundsSubmitted"];
var numHistor=json["numHistoricals"];
var subPercent = 0;
if (numHistor!=0)
subPercent = Math.round(roundsSub/numHistor*1000)/10;
roundsSubmitted.html("<small>" + subPercent +"%</small> " + roundsSub + "/" + numHistor);
wonBlocks.html(json["blocksWon"]);
lowestDiff.html("<small>@" + json["lowestDifficulty"]["blockheight"] + "</small> " + json["lowestDifficulty"]["value"]);
highestDiff.html("<small>@" + json["highestDifficulty"]["blockheight"] + "</small> " + json["highestDifficulty"]["value"]);
meanDiff.html(Math.round(json["meanDifficulty"]));
maxRoundTime.html(Math.round(json["maxRoundTime"]*1000)/1000 + " s");
var meanScan = Math.round(json["meanRoundTime"]*1000)/1000;
avgRoundTime.html(meanScan + " s");
avgRoundTime.attr({"data-original-title": "You are ~" + efficiency(meanScan) +"% efficient at mining blocks with this average scan time."});
avgBlockTime.html(Math.round(json["meanBlockTime"]*1000)/1000 + " s");
deadlinePlotSmallMax = -Math.log(0.95)*240*json["meanDifficulty"]/json["deadlinePerformance"];
deadlinePlot.setData([json["bestDeadlines"]]);
deadlinePlot.setupGrid();
deadlinePlot.draw();
maxBlockTime=json["maxBlockTime"];
maxScanTime=json["maxRoundTime"];
timePlotMax=maxBlockTime*1.25;
initTimePlot();
timePlot.setData([ {data: json["roundTimeHistory"], label:" <b>Scan time</b> "},
{data: json["blockTimeHistory"], label:" <b>Block time</b>",lines:{show:false},points:{show:true}}]);
timePlot.setupGrid();
timePlot.draw();
deadlineDistributionBarWidth = json["dlDistBarWidth"]*0.99;
initDeadlineDistributionPlot();
deadlineDistributionPlot.setData([json["deadlineDistribution"]]);
deadlineDistributionPlot.setupGrid();
deadlineDistributionPlot.draw();
difficultyPlot.setData([json["difficultyHistory"]]);
difficultyPlot.setupGrid();
difficultyPlot.draw();
showDeadlinesInfo(null);
showDeadlineDistributionInfo(null);
showDifficultyInfo(null);
$(".flot-tick-label").css("color", flotFrameColor);
}
function getNewLine(type, id) {
var line = $("<li class='list-group-item clearfix'></li>");
if (id)
line.attr("id", id);
if (type)
line.addClass(type);
return line;
}
function addMinedBlocks() {
minedBlocks += 1;
minedBlocksElement.html(minedBlocks);
}
function setMinedBlocks(blocks) {
minedBlocks = blocks;
minedBlocksElement.html(minedBlocks);
}
function createNonceLine(deadline, iconId, lineType, nonceType) {
var line = getNewLine(lineType, deadline.nonce);
var hiddenInfosDiv = $("<small></small>");
var hiddenInfos = $("<dl class='dl'></dl>");
hiddenInfos.append("<dt>Nonce</dt><dd>" + deadline.nonce + "</dd>");
hiddenInfos.append("<dt>Plotfile</dt><dd>" + deadline.plotfile + "</dd>");
hiddenInfos.append("<dt>Miner</dt><dd>" + deadline.miner + "</dd>");
hiddenInfos.append("<dt>Worker</dt><dd>" + deadline.worker + "</dd>");
hiddenInfos.append("<dt>Ip</dt><dd>" + deadline.ip + "</dd>");
hiddenInfos.append("<span class='badge badge-secondary float-sm-right'>" + deadline.time + "</span>");
hiddenInfos.hide();
hiddenInfosDiv.append(hiddenInfos);
var message = $("<div></div>");
line.click(function () {
hiddenInfos.toggle();
});
var nonceTypeStr = "";
if (nonceType == NONCE_FOUND)
nonceTypeStr = "found";
else if (nonceType == NONCE_SENT)
nonceTypeStr = "submitted";
else if (nonceType == NONCE_CONFIRMED)
nonceTypeStr = "confirmed";
message.append("<span class='far " + iconId + "'></span> ");
if (MasterMiner == 'true') {
message.append(nonceTypeStr);
message.append(" <span class='badge badge-primary badge-pill''>" + deadline.deadlineStr + "</span><small> (" + deadline.nonce + ")</small>");
} else {
message.append("<small><a href='https://explore.burst.cryptoguru.org/account/" + deadline.accountId.toString() + "' target='_blank'>" +
deadline.accountName + "</a> " + nonceTypeStr + "</small>");
message.append(" <span class='badge badge-primary badge-pill'>" + deadline.deadlineStr + "</span>");
}
message.append(hiddenInfosDiv);
line.html(message);
line.attr("logger", "nonceSubmitter");
line.attr("level", 6);
line.attr("nonce", deadline.nonce);
line.attr("nonceType", nonceType);
return line;
}
function createMessageLine(lineType, logger, level, file, lineNumber, time, text, hidden) {
var line = getNewLine(lineType);
var hiddenInfosDiv = $("<small></small>");
var hiddenInfos = $("<dl class='dl'></dl>");
hiddenInfos.append("<dt>Logger</dt><dd>" + logger + "</dd>");
hiddenInfos.append("<dt>File</dt><dd>" + file + "</dd>");
hiddenInfos.append("<dt>Line</dt><dd>" + lineNumber + "</dd>");
hiddenInfos.hide();
hiddenInfosDiv.append(hiddenInfos);
line.click(function () {
hiddenInfos.toggle();
});
var message = $("<div></div>");
message.append("<span class='badge badge-secondary float-sm-right'>" + time + "</span>");
message.append(text);
message.append(hiddenInfosDiv);
line.html(message);
if (hidden)
line.hide();
line.attr("logger", logger);
line.attr("level", level);
return line;
}
function checkAddBestOverall(deadlineNum, deadline, blockheight) {
if (deadline != null && (!bestDeadlineOverall || bestDeadlineOverall > deadlineNum)) {
bestDeadlineOverall = deadlineNum;
bestDeadlineOverallElement.html("<small>@" + blockheight + "</small> <span class='badge badge-primary badge-pill'>" + deadline + "</span>");
}
}
function replaceOrAddNonceLine(json, glyphIcon, lineType, message) {
var deadline = new Deadline(json);
//var line = miningData.getLine(deadline.nonce);
var newLine = createNonceLine(deadline, glyphIcon, lineType, message);
//if (line.length)
// line.replaceWith(newLine);
//else
miningData.addLine(newLine);
hideSameNonceLines(deadline.nonce);
return newLine;
}
function hideSameNonceLines(nonce) {
var doHideSameNonces = hideSameNonces.is(":checked");
var highest = -1;
var highestElement = null;
var nonceTypeChecked = [];
if (noncesFound.prop("checked"))
nonceTypeChecked.push(NONCE_FOUND);
if (noncesSent.prop("checked"))
nonceTypeChecked.push(NONCE_SENT);
if (noncesConfirmed.prop("checked"))
nonceTypeChecked.push(NONCE_CONFIRMED);
var sameLines = miningData.getData().find("[nonce='" + nonce + "']").each(function () {
var nonceTypeStr = $(this).attr("nonceType");
var nonceType = null;
if (nonceTypeStr)
nonceType = parseInt(nonceTypeStr);
if (nonceType && nonceTypeChecked.indexOf(nonceType) != -1) {
if (doHideSameNonces) {
$(this).hide();
if (nonceType > highest) {
highest = nonceType;
highestElement = $(this);
}
}
else {
$(this).show();
}
}
else {
$(this).hide();
}
});
if (highestElement)
highestElement.show();
}
function nonceFound(json) {
if (noncesFound.prop("checked"))
replaceOrAddNonceLine(json, "fa-compass", "list-group-item-default", NONCE_FOUND);
}
function addOrSubmit(json) {
if (noncesSent.prop("checked"))
replaceOrAddNonceLine(json, "fa-paper-plane", "list-group-item-success", NONCE_SENT);
}
function addOrConfirm(json) {
if (noncesConfirmed.prop("checked")) {
replaceOrAddNonceLine(json, "fa-check-circle", "list-group-item-success", NONCE_CONFIRMED);
if (confirmedSound && playConfirmationSound)
confirmedSound.play();
}
}
function addLinkWithLabel(label, link) {
return "<a href='" + link + "' target='_blank'>" + label + "</a>";
}
function config(cfg) {
maxHistoricalBlocks = cfg["maxHistoricalBlocks"];
$("#poolURL").html(addLinkWithLabel(cfg['poolUrl'] + ':' + cfg['poolUrlPort'], cfg["poolUrl"]));
$("#miningURL").html(addLinkWithLabel(cfg["miningInfoUrl"] + ':' + cfg["miningInfoUrlPort"], cfg["miningInfoUrl"]));
$("#walletURL").html(addLinkWithLabel(cfg["walletUrl"] + ':' + cfg["walletUrlPort"], cfg["walletUrl"] + ":" + cfg["walletUrlPort"]));
$("#plotSize").html(cfg["totalPlotSize"]);
if (cfg["submitProbability"] != 0)
$("#submitProbDL").html("Submit probability<div>"+cfg["submitProbability"]+"</div>");
else
$("#submitProbDL").html("Target DL<span class='badge badge-primary badge-pill'><div>"+cfg["targetDeadlineCombined"]+"</div></span>");
$("#poolDL").html(cfg["targetDeadlinePool"]);
$("#readers").html(cfg["maxPlotReaders"]);
$("#intensity").html(cfg["miningIntensity"]);
$("#bufferSize").html(cfg["bufferSize"]);
}
function setOverallProgress(value) {
setProgress(progressBar, value);
}
function setOverallProgressVerify(valueVerify) {
setProgressVerify(progressBarVerify, valueVerify);
}
function setLastWinner(winner) {
if (winner) {
var burstAddress = winner["address"];
var numeric = lastWinner.find("#lastWinnerNumeric");
var address = lastWinner.find("#lastWinnerAddress");
var name = lastWinner.find("#lastWinnerName");
var link = "https://explore.burst.cryptoguru.org/account/" + winner["numeric"];
if (winner["name"]) {
name.html("<a href = '" + link + "' target='blank_'>" + winner["name"] + "</a>");
lastWinner.find("#lastWinnerNameRow").show();
}
else {
lastWinner.find("#lastWinnerNameRow").hide();
}
numeric.html("<a href = '" + link + "' target='blank_'>" + winner["numeric"] + "</a>");
address.html("<a href = '" + link + "' target='blank_'>" + winner["address"] + "</a>");
lastWinnerContainer.show();
}
else {
lastWinnerContainer.hide();
}
}
function deActivateConfirmationSound(on) {
playConfirmationSound = on;
iconConfirmationSound.removeClass("fa-volume-up");
iconConfirmationSound.removeClass("fa-volume-off");
if (on)
iconConfirmationSound.addClass("fa-volume-up");
else
iconConfirmationSound.addClass("fa-volume-off");
}
function toggleConfirmationSound() {
// ******************************************
localSet('playConfirmationSound', !playConfirmationSound);
// ******************************************
deActivateConfirmationSound(!playConfirmationSound);
//sql
swal({
title: 'Nonce sound notifications',
type: 'info',
html:
'If you wish to use a custom notification please place ' +
'<pre>alert.mp3</pre> it into the <b>sounds </b> directory.',
showCloseButton: false,
showCancelButton: false,
confirmButtonText:
'<i class="fa fa-thumbs-up"></i> Okay!'
});
}
function showMessage(json) {
var type = json["type"];
var text = json["text"];
var logger = json["source"];
if (type && text && logger) {
/*
0 : all
1 : fatal
2 : critical
3 : error
4 : warning
5 : notice
6 : information
7 : debug
8 : trace
9 : off
*/
var hidden = type > logSettings[logger].val();
var lineType;
switch (parseInt(type)) {
case 1:
case 2:
case 3:
lineType = "list-group-item-danger";
break;
case 4:
lineType = "list-group-item-warning";
break;
case 5:
case 6:
case 7:
case 8:
lineType = "list-group-item-debug";
break;
default:
lineType = "list-group-item-default";
break;
};
var newLine = createMessageLine(lineType, logger, parseInt(type), json["file"], json["line"],
json["time"], json["text"].replace(new RegExp('\r?\n', 'g'), '<br />'), hidden);
miningData.addLine(newLine);
}
else
console.log("unknown message type: " + json);
}
function reparseMessages() {
var nonces = [];
miningData.getData().find("li").each(function () {
var logger = $(this).attr("logger");
var levelStr = $(this).attr("level");
var nonce = $(this).attr("nonce");
if (nonce) {
if (nonces.indexOf(nonce) == -1) {
nonces.push(nonce);
hideSameNonceLines(nonce);
}
}
else if (logger && levelStr) {
var loggerLevel = parseInt(logSettings[logger].val());
var level = parseInt(levelStr);
if (level <= loggerLevel)
$(this).show();
else
$(this).hide();
}
});
// ******************************************
var tempSettings = {
miner: logSettings['miner'].val(),
config: logSettings['config'].val(),
server: logSettings['server'].val(),
socket: logSettings['socket'].val(),
session: logSettings['session'].val(),
nonceSubmitter: logSettings['nonceSubmitter'].val(),
plotReader: logSettings['plotReader'].val(),
plotVerifier: logSettings['plotVerifier'].val(),
wallet: logSettings['wallet'].val(),
general: logSettings['general'].val(),
}
localSet('logSettings', tempSettings);
// ******************************************
}
function resetLogSettings() {
hideSameNonces.prop('checked', true);
noncesFound.prop('checked', true);
noncesSent.prop('checked', true);
noncesConfirmed.prop('checked', true);
loggers.forEach(function (element, index, array) {
logSettings[element[0]].val(element[2]);
});
}
function connectBlock() {
connect(function (msg) {
data = msg["data"];
if (data) {
if (data == "ping")
return;
var response = JSON.parse(data);
switch (response["type"]) {
case "new block":
newBlock(response);
checkVersion(response["runningVersion"], response["onlineVersion"], response["runningBuild"]);
break;
case "nonce found":
case "nonce found (too high)":
nonceFound(response);
break;
case "nonce confirmed":
addOrConfirm(response);
checkAddBestOverall(BigInteger(response["deadlineNum"]), response["deadline"], response["blockheight"]);
break;
case "nonce submitted":
addOrSubmit(response);
break;
case "config":
config(response);
break;
case "progress":
setOverallProgress(response["value"] - response["valueVerification"]);
setOverallProgressVerify(response["valueVerification"]);
break;
case "lastWinner":
setLastWinner(response);
break;
case "blocksWonUpdate":
wonBlocks.html(reponse["blocksWon"]);
break;
case "plotdir-progress":
case "plotdirs-rescan":
// do nothing
break;
default:
showMessage(response);
break;
};
}
});
}
function deadlineFormat(val) {
var secs = Math.floor(val);
var mins = Math.floor(secs / 60);
var hours = Math.floor(mins / 60);
var day = Math.floor(hours / 24);
var months = Math.floor(day / 30);
var years = Math.floor(months / 12);
var msg = "";
if (years > 0)
msg += years.toFixed() + "y ";
if (months > 0)
msg += (months % 12).toFixed() + "m ";
if (day > 0)
msg += day % 30 + "d ";
msg += ("00" + (hours % 24)).slice(-2) + ':';
msg += ("00" + (mins % 60)).slice(-2) + ':';
msg += ("00" + (secs % 60)).slice(-2);
return msg;
}
function deadlineFormatPlot(val) {
var secs = Math.floor(val);
var mins = Math.floor(secs / 60);
var hours = Math.floor(mins / 60);
var day = Math.floor(hours / 24);
var months = Math.floor(day / 30);
var years = Math.floor(months / 12);
var msg = "";
if (years > 0)
{
msg += years.toFixed() + "y ";
msg += (months % 12).toFixed() + "m ";
return msg;
}
if (months > 0)
{
msg += (months % 12).toFixed() + "m ";
msg += day % 30 + "d ";
return msg;
}
if (day > 0)
{
msg += day % 30 + "d ";
msg += (hours % 24) + "h ";
return msg;
}
msg += ("00" + (hours % 24)).slice(-2) + ':';
msg += ("00" + (mins % 60)).slice(-2) + ':';
msg += ("00" + (secs % 60)).slice(-2);
return msg;
}
function showDeadlinesInfo(deadlineObj) {
var infos = "---";
deadlinePlot.unhighlight();
if (deadlineObj) {
var infos = "block <b>" + deadlineObj.datapoint[0] + "</b>: " +
deadlineFormat(deadlineObj.datapoint[1]);
deadlinePlot.highlight(deadlineObj.series, deadlineObj.datapoint);
}
deadlinesInfo.html(infos);
lastDeadlineInfo = deadlineObj;
}
function showTimeInfo(timeObj) {
var infos = "---";
timePlot.unhighlight();
if (timeObj) {
var infos = "block <b>" + timeObj.datapoint[0] + "</b>: " + deadlineFormat(timeObj.datapoint[1]);
timePlot.highlight(timeObj.series, timeObj.datapoint);
}
timeInfo.html(infos);
lastTimeInfo = timeObj;
}
function showDeadlineDistributionInfo(deadlineDistObj) {
var infos = "---";
deadlineDistributionPlot.unhighlight();
if (deadlineDistObj) {
var barMax = deadlineFormat(Number(deadlineDistObj.datapoint[0]) +
Number(deadlineDistributionBarWidth)/0.99);
var infos = "<b>" + deadlineFormat(deadlineDistObj.datapoint[0]) + " - " +
barMax.toString() + "</b>: " + deadlineDistObj.datapoint[1] + " Deadlines";
deadlineDistributionPlot.highlight(deadlineDistObj.series, deadlineDistObj.datapoint);
}
deadlineDistributionInfo.html(infos);
lastDeadlineDistributionInfo = deadlineDistObj;
}
function showDifficultyInfo(difficultyObj) {
var infos = "---";
difficultyPlot.unhighlight();
if (difficultyObj) {
var infos = "block <b>" + difficultyObj.datapoint[0] + "</b>: " + Math.floor(difficultyObj.datapoint[1]);
difficultyPlot.highlight(difficultyObj.series, difficultyObj.datapoint);
}
difficultyInfo.html(infos);
lastDifficultyInfo = difficultyObj;
}
function initBlock() {
system = $("#system");
bestDeadlineOverallElement = $("#bestOverall");
bestHistorical = $("#bestHistorical");
minedBlocksElement = $("#minedBlocks");
roundsSubmitted = $("#roundsSubmitted");
hideSameNonces = $("#cbHideSameNonces");
noncesFound = $("#cbNoncesFound");
noncesSent = $("#cbNoncesSent");
noncesConfirmed = $("#cbNoncesConfirmed");
progressBar = $("#progressBar");
progressBarVerify = $("#progressBarVerify");
lastWinnerContainer = $("#lastWinnerContainer");
lastWinner = $("#lastWinner");
iconConfirmationSound = $("#iconConfirmationSound");
avgDeadline = $("#avgDeadline");
deadlinePerformance = $("#deadlinePerformance");
connectionStatus = $("#connectionStatus");
wonBlocks = $("#wonBlocks");
lowestDiff = $("#lowestDiff");
highestDiff = $("#highestDiff");
meanDiff = $("#meanDiff");
maxRoundTime = $("#maxRoundTime");
avgRoundTime = $("#avgRoundTime");
avgBlockTime = $("#avgBlockTime");
bestDeadlinesChart = $("#deadlinesChart");
deadlinesInfo = $("#deadlinesInfo");
timeChart = $("#timeChart");
timeInfo = $("#timeInfo");
deadlineDistributionChart = $("#deadlineDistributionChart");
deadlineDistributionInfo = $("#deadlineDistributionInfo");
difficultyChart = $("#difficultyChart");
difficultyInfo = $("#difficultyInfo");
settingsDlComboboxes = $("#settingsDlComboboxes");
// ******************************************
localInitCheckBoxes();
// ******************************************
flotFrameColor = $("p").css("color");
flotColorOne = $("#progressBarVerify").css("background-color");
flotColorTwo = $("#progressBar").css("background-color");
initDeadlinePlot();
initTimePlot();
initDeadlineDistributionPlot();
initDifficultyPlot();
bestDeadlineOverallElement.html(nullDeadline);
bestHistorical.html(nullDeadline);
connectBlock();
// deActivateConfirmationSound(true);
// ******************************************
deActivateConfirmationSound(playConfirmationSound);
// ******************************************
showDeadlinesInfo(null);
showDeadlineDistributionInfo(null);
showDifficultyInfo(null);
$("#container").append(miningData.panel);
hideSameNonces.change(reparseMessages);
noncesFound.change(reparseMessages);
noncesSent.change(reparseMessages);
noncesConfirmed.change(reparseMessages);
logSettings = initSettings(settingsDlComboboxes, reparseMessages);
// ******************************************
localInitLogSettings();
// ******************************************
}
function initDeadlinePlot() {
var options = {
series: {
points: { show: true, radius:2 }
},
grid: {
hoverable: true,
autoHighlight: true,
clickable: true,
color: flotFrameColor,
},
xaxis: {
show: false,
},
yaxis: {
mode: "time",
min: 0,
max: deadlinePlotMax,
tickFormatter: function (val, axis) {
return deadlineFormatPlot(val);
}
},
colors: [flotColorOne, flotColorTwo]
};
deadlinePlot = $.plot(bestDeadlinesChart, [], options);
bestDeadlinesChart.bind("plotclick", function (event, pos, item) {
if (item)
showDeadlinesInfo(item);
});
bestDeadlinesChart.bind("plothover", function (event, pos, item) {
if (item)
showDeadlinesInfo(item);
});
}
function initDeadlineDistributionPlot() {
var options = {
series: {
bars: { show: true }
},
bars: {
barWidth: deadlineDistributionBarWidth
},
grid: {
hoverable: true,
autoHighlight: true,
clickable: true,
color: flotFrameColor,
},
xaxis: {
show: false
},
yaxis: {
min: 0
},
colors: [flotColorOne, flotColorTwo]
};
deadlineDistributionPlot = $.plot(deadlineDistributionChart, [], options);
deadlineDistributionChart.bind("plotclick", function (event, pos, item) {
if (item)
showDeadlineDistributionInfo(item);
});
deadlineDistributionChart.bind("plothover", function (event, pos, item) {
if (item)
showDeadlineDistributionInfo(item);
});
}
function initTimePlot() {
var options = {
series: {
lines: {
show: true,
fill: true
},
points: {
show: false,
radius:2
}
},
grid: {
hoverable: true,
autoHighlight: true,
clickable: true,
color: flotFrameColor,
},
xaxis: {
show: false
},
yaxis: {
min: 0,
max: timePlotMax
},
legend: {
position:"nw",
backgroundOpacity: 0,
noColumns: 2
},
colors: [flotColorTwo, flotColorOne]
};
timePlot = $.plot(timeChart, [], options);
timeChart.bind("plotclick", function (event, pos, item) {
if (item)
showTimeInfo(item);
});
timeChart.bind("plothover", function (event, pos, item) {
if (item)
showTimeInfo(item);
});
}
function initDifficultyPlot() {
var options = {
series: {
lines: {
show: true,
fill: true
},
points: {
show: false,
radius:2
}
},
grid: {
hoverable: true,
autoHighlight: true,
clickable: true,
color: flotFrameColor,
},
xaxis: {
show: false
},
yaxis: {
min: 0,
tickFormatter: function (val, axis) {
if (val < 1000) return val;
if (val < 1000000) return val/1000 + "K";
if (val < 1000000000) return val/1000000 + "M";
}
},
colors: [flotColorOne, flotColorTwo]
};
difficultyPlot = $.plot(difficultyChart, [], options);
difficultyChart.bind("plotclick", function (event, pos, item) {
if (item)
showDifficultyInfo(item);
});
difficultyChart.bind("plothover", function (event, pos, item) {
if (item)
showDifficultyInfo(item);
});
}
// calculates an estimate for the miners efficiency based on the scan time (how many blocks is he going to win on the long run compared to a miner with 0s scan time)
function efficiency(scantime) {
if ( scantime > 1 )
return Math.ceil(1000*(480.096+599760*Math.exp(-0.00416666666667*scantime)-600240.096384153*Math.exp(-0.004165*scantime))/scantime)/10;
else
return 100;
}
window.onresize = function (evt) {
if (deadlinePlot) {
deadlinePlot.resize(0, 0);
deadlinePlot.setupGrid();
deadlinePlot.draw();
}
if (timePlot) {
timePlot.resize(0, 0);
timePlot.setupGrid();
timePlot.draw();
}
if (deadlineDistributionPlot) {
deadlineDistributionPlot.resize(0, 0);
deadlineDistributionPlot.setupGrid();
deadlineDistributionPlot.draw();
}
if (difficultyPlot) {
difficultyPlot.resize(0, 0);
difficultyPlot.setupGrid();
difficultyPlot.draw();
}
}
window.onload = function (evt) {
$("#btnBlock").addClass('active');
initBlock();
}
================================================
FILE: resources/public/js/general.js
================================================
var websocket;
var servername = 'creepMiner';
var MasterMiner = 'false';
var container = 'false'
var loggers = [
["miner", "Miner", 6],
["config", "Config", 6],
["server", "Server", 1],
["socket", "Socket", 0],
["session", "Session", 3],
["nonceSubmitter", "Nonce submitter", 6],
["plotReader", "Plot reader", 6],
["plotVerifier", "Plot verifier", 6],
["wallet", "Wallet", 1],
["general", "General", 6]
];
var levels = [
"off", "fatal", "critical", "error", "warning",
"notice", "information", "debug", "trace", "all"
];
function connect(onMessage) {
if ("WebSocket" in window) {
if (websocket)
websocket.close();
if (location.protocol == "https:")
protocol ="wss"
else
protocol = "ws"
websocket = new WebSocket(protocol + "://" + window.location.host);
websocket.onmessage = onMessage;
}
else {
websocket = null;
}
}
// version checker and update about btn
function checkVersion(runningVer, onlineVer, runningBuild) {
var onlineVersionSplit = onlineVer.split(".");
var runningVersionSplit = runningVer.split(".");
var current=true;
//console.info(runningVer + '.' + runningBuild);
if (Number(runningVersionSplit[0]) > Number(runningVersionSplit[0]))
current=false;
else if (Number(onlineVersionSplit[1]) > Number(runningVersionSplit[1]))
current=false;
else if (Number(onlineVersionSplit[2]) > Number(runningVersionSplit[2]))
current=false;
if(!current)
{
$("#btnAbout").find("a").css({"color":"#ffc107"});
$("#btnAbout").attr({"data-original-title": "New version available"});
$("#runningVer").html(" v " + runningVer);
$("#latestVer").html(" v " + onlineVer);
$("#versionCardHeader").toggleClass("bg-success",false);
$("#versionCardHeader").toggleClass("bg-danger",true);
$("#versionAlert").toggleClass("alert-success",false);
$("#versionAlert").toggleClass("alert-danger",true);
$("#versionAlert").html("<i class='fas fa-wrench'></i> <strong>Update available!</strong>"+
" Download it from <i class='fab fa-github-square'></i> <a href='https://github.com/Creepsky/creepMiner/releases'>github</a>");
} else
{
$("#runningVer").html("<i class='fas fa-check text-success'></i> v " + runningVer +"." + runningBuild);
$("#latestVer").html(" v " + onlineVer);
//$("#versionAlert").html("<i class='fas fa-check text-success'></i> You are running a current version of creepMiner.");
}
return current
}
// progress bar
function setProgress(progressBar, progress) {
var valueFixed = parseFloat(progress).toFixed();
if (valueFixed >= 100) {
valueFixed = 100;
progressBar.removeClass("active");
}
else if (valueFixed < 100) {
if (valueFixed < 0)
valueFixed = 0;
if (!progressBar.hasClass("active"))
progressBar.addClass("active");
}
progressBar.css("width", valueFixed + "%").attr("aria-valuenow", valueFixed);
progressBar.html("");
}
// verify progress bar
function setProgressVerify(progressBar, progress) {
var valueFixed = parseFloat(progress).toFixed();
if (valueFixed >= 100) {
valueFixed = 100;
progressBar.removeClass("active");
}
else if (valueFixed < 100) {
if (valueFixed < 0)
valueFixed = 0;
if (!progressBar.hasClass("active"))
progressBar.addClass("active");
}
progressBar.css("width", valueFixed + "%").attr("aria-valuenow", valueFixed);
progressBar.html(valueFixed + " % Verified");
}
// initializing settings
function initSettings(container, onChange) {
output = {};
loggers.forEach(function (element, index, array) {
element[1][0].toUpperCase();
var cmb = $("<select id='cmb_" + element[0] + "' name='cmb_" + element[0] + "' class='selectpicker form-control'></select>");
createLoggerCombobox(cmb);
if (onChange)
cmb.change(function () {
onChange();
});
var div = $("<div class='form-group row'></div>");
var label = $("<label for='cmb_" + element[0] + "' class='col-md-12 col-lg-3 col-form-label'>" + element[1] + "</label>");
div.append(label);
div.append("<div class='col-md-12 col-lg-9'>")
div.find("div").append(cmb);
cmb.val(element[2]);
output[element[0]] = cmb;
container.append(div);
});
return output;
}
// create combo boxes for logger
function createLoggerCombobox(cmb) {
cmb.empty();
levels.forEach(function (element, index, array) {
cmb.append("<option value=" + index + ">" + element + "</option>");
});
}
// initializing tooltip
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip();
});
// stylesheet selector
(function($)
{
var $links = $('link[rel*=alternate][title]');
var el = document.getElementById('themeSelector');
var options= '<a class="dropdown-item" onclick="eraseCookie(\'theme\');" style="cursor:pointer">Default</a><div class="dropdown-divider"></div>';
$links.each(function(index,value){
options +='<a class="dropdown-item" onclick="SwitchTheme(\''+$(this).attr('title')+'\'); location.reload();" style="cursor:pointer">'+$(this).attr('title')+'</a>';
});
$links.remove();
el.innerHTML = options;
}
)(jQuery);
// dynamically switch bootswatch themes
function SwitchTheme (name){
$('link[rel*=jquery]').remove();
//console.log(name);
$('head').append('<link rel="stylesheet jquery" href="https://bootswatch.com/4/'+ name +'/bootstrap.min.css" type="text/css" />');
document.cookie = "theme = https://bootswatch.com/4/"+name+"/bootstrap.min.css;";
}
// fetch cookie
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
// to add new cookies, use this to create future cookies - will be used later on
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
// remove cookie
function eraseCookie(name) {
window.location.reload(false);
createCookie(name,"",-1);
}
// set the title in header and replace the server-name element with server name
document.getElementById('server-name').innerHTML = servername;
document.title = servername;
// if master miner is set show and hide some elements
if (container == 'true') {
var dElement = document.getElementsByClassName('d-container'), i;
for (var i = 0; i < dElement.length; i ++) {
dElement[i].style.display = 'inline';
}
}
// if master miner is set show and hide some elements
if (MasterMiner == 'true') {
var mmElement = document.getElementsByClassName('mm-show'), i;
for (var i = 0; i < mmElement.length; i ++) {
mmElement[i].style.display = 'inline';
}
var mmHideElements = document.getElementsByClassName('mm-hide'), i;
for (var i = 0; i < mmHideElements.length; i ++) {
mmHideElements[i].style.display = 'none';
}
}
// master miner menu - WIP
$.getJSON('https://next.json-generator.com/api/json/get/VJs_LJEAN', function(data) {
var builddata = function() {
var source = [];
var items = [];
for (i = 0; i < data.length; i++) {
var item = data[i];
var label = item["name"];
var parentid = item["parent_id"];
var icon = item["icon"];
var id = item["id"];
var url = item["url"];
if (items[parentid]) {
var item = {
parentid: parentid,
label: label,
url: url,
icon: icon,
item: item
};
if (!items[parentid].items) {
items[parentid].items = [];
}
items[parentid].items[items[parentid].items.length] = item;
items[id] = item;
} else {
items[id] = {
parentid: parentid,
label: label,
url: url,
icon: icon,
item: item
};
source[id] = items[id];
}
}
return source;
}
// build dynamic menu from json payload
var buildMenu = function(menu, source) {
var isFirst = true;
$.each(source, function() {
if (this.label) {
if (!isFirst) {
var divider = $('<div class="dropdown-divider"></div>');
menu.append(divider);
}
var parent = $('<a class="dropdown-item" href="' + this.url + '" target="_blank"><i class="text-muted ' + this.icon + '"></i> ' + this.label + '</a>');
menu.append(parent);
if (this.items && this.items.length > 0) {
$.each(this.items, function() {
var child = $('<a class="dropdown-item" href="' + this.url + '" target="_blank"><i class="text-muted ' + this.icon + '" ></i> ' + this.label + '</a>');
menu.append(child);
});
}
isFirst = false;
}
});
}
var source = builddata();
//console.log(source);
buildMenu($('#dynamic-menu'), source);
});
================================================
FILE: resources/public/js/plotfiles.js
================================================
var plotDirList = $("#plotDirList");
var plotFileDiv = $("#plotFileDiv");
var plotDirElements = [];
var activePlotDir = null;
var confirmedPlotfiles = [];
var current_selected = null;
var isChecking=false;
var isCheckingAll=false;
window.onload = function (evt) {
$("#btnPlots").addClass('active');
parsePlots();
fillDirs();
connect(connectCallback);
}
function connectCallback(msg) {
data = msg["data"];
if (data) {
if (data == "ping") {
return;
}
var response = JSON.parse(data);
switch (response["type"]) {
case "new block":
resetProgress();
resetLineTypes();
confirmedPlotfiles = [];
checkVersion(response["runningVersion"], response["onlineVersion"], response["runningBuild"]);
break;
case "plotdir-progress":
setDirProgress(response["dir"], response["value"]);
break;
case "nonce confirmed":
nonceConfirmed(response["plotfile"]);
break;
case "plotdirs-rescan":
plotdirs = response["plotdirs"];
parsePlots();
fillDirs();
break;
case "plotcheck-result":
setPlotIntegrity(response);
break;
case "totalPlotcheck-result":
setTotalPlotIntegrity(response);
break;
default:
break;
}
}
}
function createProgressBar(id) {
var progresStr = '<div class="progress">';
progresStr += '<div id="pb-' + id + '" class="progress-bar progress-bar-success progress-bar-striped bg-success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width:100%">';
progresStr += '</div></div>';
return progresStr;
}
function createDirLine(dirElement, index) {
var line = $('<a href="#" class="list-group-item"></a>');
var removeElement = '<span id="removeElement" data-toggle="tooltip" data-placement="bottom" data-original-title="Remove plot directory." onclick="delPlotDir(\'' + dirElement["path"] + '\');">';
line.append(dirElement["path"]);
line.append(" (" + dirElement.plotfiles.length + " files, " + dirElement["size"] + ") <small class='float-sm-right'>" + removeElement + "<i class='fas fa-minus text-danger'></i></span></small>");
line.append(createProgressBar(index));
line.click(function () {
plotDirList.find('.active').removeClass('active');
line.addClass('active');
showPlotfiles(plotDirElements[index]["plotfiles"]); // Old version: showPlotfiles(dirElement["plotfiles"]);
activePlotDir = dirElement;
colorConfirmedPlotfiles();
current_selected = dirElement;
});
return line;
}
function fillDirs() {
plotDirList.empty();
plotDirElements.forEach(function (plotDirElement, index, array) {
plotDirList.append(plotDirElement["element"]);
});
}
function parsePlots() {
plotDirElements = [];
plotdirs.forEach(function (plotDir, index, array) {
var element = {
"path": plotDir["path"],
"size": plotDir["size"],
"plotfiles": []
};
plotDir["plotfiles"].forEach(function (plotFile, index, array) {
var path = plotFile["path"];
var filename = path.replace(/^.*[\\\/]/, '');
var filename_tokens = filename.split("_");
var account = filename_tokens[0];
var start_nonce = filename_tokens[1];
var nonces = filename_tokens[2];
var staggersize = filename_tokens[3];
var size = plotFile["size"];
var lineFile = createPlotfileLine(account, start_nonce, nonces, staggersize, size, path);
var fileElement = {
"path": path,
"size": size,
"element": lineFile,
"lineType": null,
"setLineType": function (type) {
fileElement.element.addClass(type);
fileElement.lineType = type;
},
"resetLineType": function () {
if (fileElement.lineType) {
fileElement.element.removeClass(fileElement.lineType);
fileElement.lineType = null;
}
}
};
element["plotfiles"].push(fileElement);
});
element["element"] = createDirLine(element, index);
element["setProgress"] = function (progress) {
setProgress($("#pb-" + index), progress);
};
element["progressBarType"] = "";
element["resetProgressBarType"] = function () {
if (element["progressBarType"].length > 0)
$("#pb-" + index).removeClass(element["progressBarType"]);
};
element["setProgressBarType"] = function (type) {
element.resetProgressBarType();
$("#pb-" + index).addClass(type);
element["progressBarType"] = type;
}
plotDirElements.push(element);
});
}
function checkPlotFile(account, start_nonce, nonces, staggersize, path) {
if(!isChecking && !isCheckingAll)
{
isChecking=true;
var butId = account + "_" + start_nonce + "_" + nonces + "_" + staggersize;
$("#"+butId).html("<i class='fas fa-spinner fa-pulse'></i>");
$.get(encodeURI("/checkPlotFile/" + path));
}
}
function checkAllPlotFiles(account, start_nonce, nonces, staggersize, path) {
if(!isCheckingAll)
{
isCheckingAll=true;
$("#CheckAllButton").html("<i class='fas fa-spinner fa-pulse'></i>");
$.get('/checkPlotFile/all');
}
}
function setPlotIntegrity(checkPlotResult) {
isChecking=false;
var integrity = Math.floor(Number(checkPlotResult["plotIntegrity"])*100)/100;
//find the corresponding element in the plotDirElements and write the integrity into it.
plotDirElements.forEach(function (element, indexDir, arrayFold) {
element["plotfiles"].forEach( function(fileElement, index, array) {
if(fileElement["element"].find("#"+checkPlotResult["plotID"])[0]){
if (integrity==100)
{
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
html("<i class='fas fa-check'></i> " + integrity + "%");
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
toggleClass('btn-info btn-danger',false);
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
toggleClass('btn-success',true);
}
else
{
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
html("<i class='fas fa-exclamation'></i> " + integrity + "%");
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
toggleClass('btn-info btn-success',false);
plotDirElements[indexDir]["plotfiles"][index]["element"].find("#"+checkPlotResult["plotID"]).
toggleClass('btn-danger',true);
}
}
});
});
}
function setTotalPlotIntegrity(totalCheckResult) {
isCheckingAll=false;
var totIntegrity = Math.round(Number(totalCheckResult["totalPlotIntegrity"])*100)/100;
if (totIntegrity==100)
{
$("#CheckAllButton").html("<i class='fas fa-check'></i> " + totIntegrity + "% Integrity");
$("#CheckAllButton").toggleClass('btn-info btn-danger',false);
$("#CheckAllButton").toggleClass('btn-success',true);
}
else
{
$("#CheckAllButton").html("<i class='fas fa-exclamation'></i> " + totIntegrity + "% Integrity");
$("#CheckAllButton").toggleClass('btn-info btn-success',false);
$("#CheckAllButton").toggleClass('btn-danger',true);
}
}
function createPlotfileLine(account, start_nonce, nonces, staggersize, size, path) {
var line = $("<li class='list-group-item d-md-flex align-items-center' style='padding:4px'></li>");
line.append("<div class='col-xs-3 col-md-3'>" + account + "</div>");
line.append("<div class='col-xs-2 col-md-2'>" + start_nonce + "</div>");
line.append("<div class='col-xs-2 col-md-1'>" + nonces + "</div>");
line.append("<div class='col-xs-2 col-md-1'>" + staggersize + "</div>");
line.append("<div class='col-xs-1 col-md-2'>" + size + "</div>");
line.append("<div class='col-xs-2 col-md-3'><button id='" + account + "_" + start_nonce + "_" + nonces + "_" + staggersize +
"' type='button' class='btn btn-primary' " +
"style='padding:2px; margin=0px; width:100%' onclick='checkPlotFile(\"" + account + "\"," + start_nonce + "," +
nonces + "," + staggersize + ",\"" + path.replace(/\\/g,"\\\\") + "\")'><span class='fab fa-superpowers'></span> Validate</button></div>");
return line;
}
function showPlotfiles(files) {
plotFileDiv.hide('fast', function () {
plotFileDiv.empty();
plotFileDiv.append("<h4 class='card-header text-white bg-primary'>Files</h4>" +
"<div class='col-lg-12'>" +
" <div class='row card-header' style='padding-left:0;padding-right:0'>" +
" <div class='col-xs-3 col-md-3'>Account</div>" +
" <div class='col-xs-2 col-md-2'>Start nonce</div>" +
" <div class='col-xs-2 col-md-1'>Nonces</div>" +
" <div class='col-xs-2 col-md-1'>Stagger</div>" +
" <div class='col-xs-1 col-md-2'>Size</div>" +
" <div class='col-xs-2 col-md-3' data-toggle='tooltip' data-placement='top' data-original-title='Pressing the button will Validate the integrity of 32 random scoops of 32 random nonces in the plot file'>Integrity</div>" +
" </div>" +
"</div>");
files.forEach(function (file, i, arr) {
plotFileDiv.append(file["element"]);
});
plotFileDiv.show('slow');
});
}
function resetProgress() {
plotDirElements.forEach(function (element, index, array) {
element.setProgress(0);
element.resetProgressBarType();
});
}
function setDirProgress(dir, progress) {
for (var i = 0; i < plotDirElements.length; ++i) {
if (plotDirElements[i]["path"] == dir) {
plotDirElements[i].setProgress(progress);
break;
}
}
}
function resetLineTypes() {
if (activePlotDir) {
for (var i = 0; i < activePlotDir.plotfiles.length; ++i) {
activePlotDir.plotfiles[i].resetLineType();
}
}
}
function colorConfirmedPlotfiles() {
if (!activePlotDir) {
return;
}
for (var j = 0; j < confirmedPlotfiles.length; ++j) {
for (var i = 0; i < activePlotDir.plotfiles.length; ++i) {
if (activePlotDir.plotfiles[i].path == confirmedPlotfiles[j]) {
activePlotDir.plotfiles[i].setLineType('success');
break;
}
}
}
}
function nonceConfirmed(plotfile) {
var dir = null;
for (var i = 0; i < plotDirElements.length; ++i) {
if (plotfile.length > plotDirElements[i].path.length) {
if (plotfile.substring(0, plotDirElements[i].path.length) == plotDirElements[i].path) {
plotDirElements[i].setProgressBarType('progress-bar-success');
dir = plotfile.substring(0, plotDirElements[i].path.length);
break;
}
}
}
confirmedPlotfiles.push(plotfile);
colorConfirmedPlotfiles();
}
function remove_selected_plot_dir() {
if (current_selected) {
$.get("/");
}
}
$('#removeElement').tooltip();
function delPlotDir(path) {
swal( {
title: 'Remove plot directory',
html:
'<p>Are you sure you want to remove this directory?</p>' +
'If you are sure, type in <b>YES</b>',
type: 'warning',
input: "text",
inputPlaceholder: "YES",
showCancelButton: true,
confirmButtonText: 'Delete',
cancelButtonText: 'Cancel',
confirmButtonColor: "#dc3545",
reverseButtons: true,
}).then((result) => {
if (result.value.trim().toLowerCase() == 'yes') {
$.ajax( {
type: "POST",
url: "plotdir/remove",
data: (path),
success: function(msg) {
if (!msg.error) {
swal({
title: "Successfully deleted!",
text: "The plot directory has been removed",
type: "success"
});
}
else {
swal({
title: "Error!",
text: "There was an error removing the plot directory: " + msg.error,
type: "error"
} );
}
}
} );
}
} );
}
function addPlotDir() {
swal({
title: 'Add new directory',
html:
'<p>Enter your plot location. E.G.</p>' +
'<ul class="list-group">' +
'<li class="list-group-item d-flex justify-content-between align-items-center">' +
'<b>Windows</b>' +
'<span class="badge badge-primary badge-pill">D:\\plots</span>'+
'</li>' +
'<li class="list-group-item d-flex justify-content-between align-items-center">' +
'<b>linux & MacOS</b>' +
'<span class="badge badge-primary badge-pill">/Volume/plots</span>'+
'</li>' +
'</ul>',
input: "text",
inputPlaceholder: "Your plot location",
showCancelButton: true,
confirmButtonText: "Add",
cancelButtonText: "Cancel",
confirmButtonColor: "#1FAB45",
animation: "slide-from-top",
buttonsStyling: true
}).then((result) => {
if (result.value) {
$.ajax( {
type: "POST",
url: "plotdir/add",
data: (result.value),
success: function (msg) {
if (!msg.error) {
swal({
title: "Successfully added!",
text: "Your plot directory has been added",
type: "success"
} )
}
else {
swal({
title: "Error!",
html: "<p>In adding the plot directory</p><p>'" + msg.error + "'</p><p><b>Check that it is a valid directory!</b><p>",
type: "error"
} )
}
}
} );
}
} );
}
================================================
FILE: resources/public/js/settings.js
================================================
var logSetting = {};
function update_settings(config) {
mining_info_url.val(config['miningInfoUrl'] + ':' + config['miningInfoUrlPort']);
submission_url.val(config['poolUrl'] + ':' + config['poolUrlPort']);
if (config['walletUrl'] + ':' + config['walletUrlPort']=="://:0")
wallet_url.val("");
else
wallet_url.val(config['walletUrl'] + ':' + config['walletUrlPort']);
intensity.val(config['miningIntensityRaw']);
buffer_size.val(config['bufferSizeRaw']);
buffer_chunks.val(config['bufferChunks']);
plot_readers.val(config['maxPlotReadersRaw']);
submission_max_retry.val(config['submissionMaxRetry']);
submit_probability.val(config['submitProbability']);
max_historical_blocks.val(config['maxHistoricalBlocks']);
target_deadline.val(config['targetDeadlineLocal']);
timeout.val(config['timeout']);
log_dir.val(config['logDir']);
for (var key in config['channelPriorities']) {
window['cmb_' + key].val(config['channelPriorities'][key].numeric);
}
}
function connectCallback(msg) {
data = msg["data"];
if (data) {
if (data == "ping") {
return;
}
var response = JSON.parse(data);
switch (response["type"]) {
case "config":
update_settings(response);
break;
case "new block":
checkVersion(response["runningVersion"], response["onlineVersion"], response["runningBuild"]);
break;
default:
break;
}
}
}
window.onload = function (evt) {
$("#btnSettings").addClass('active');
logSetting = initSettings($("#settingsDlComboboxes"));
mining_info_url = $("#mining-info-url");
submission_url = $("#submission-url");
wallet_url = $("#wallet-url");
intensity = $("#intensity");
buffer_size = $("#buffer-size");
buffer_chunks = $("#buffer-chunks");
plot_readers = $("#plot-readers");
submission_max_retry = $("#submission-max-retry");
submit_probability = $("#submit-probability");
max_historical_blocks = $("#max-historical-blocks");
target_deadline = $("#target-deadline");
timeout = $("#timeout");
log_dir = $("#log-dir");
loggers.forEach(function (element) {
var id = "cmb_" + element[0];
window[id] = $("#" + id);
});
connect(connectCallback);
}
function restartMiner() {
swal( {
title: 'Restart creepMiner',
html:
'<p>Are you 100% sure you want to restart?</p>' +
'If you are sure, type in <b>restart</b>',
type: 'warning',
input: "text",
showCancelButton: true,
confirmButtonText: 'Restart',
cancelButtonText: 'Cancel',
confirmButtonColor: "#dc3545",
reverseButtons: true,
}).then((result) => {
if (result.value.trim().toLowerCase() == 'restart') {
$.ajax( {
type: "GET",
url: "/restart",
success: function(msg){
if (!msg.error) {
swal({
title: "Successfully queued!",
html: "<p><b>creepMiner</b> has been restarted,</p> <p>please wait for it to startup.</p>",
type: "success"
});
}
else {
swal({
title: "Error!",
html: "There was an error removing the plot directory: " + msg.error,
type: "error"
});
}
}
} );
}
else {
swal({
title: "Error!",
html: "<p>In adding the plot directory</p><p>'" + msg.error + "'</p><p><b>Check that it is a valid directory!</b><p>",
type: "error"
})
}
});
}
================================================
FILE: resources/public/login.html
================================================
<div class="login-container">
<div class="row">
<div class="col-md-12">
<div class="text-center m-b-md">
<h3>Please login to creepMiner</h3>
<small>This is the best BURST miner ever!</small>
</div>
<div class="hpanel">
<div class="panel-body">
<form method="POST" action="/login">
<div class="form-group">
<label for="creepminer-webserver-user">Username</label>
<input type="username" class="form-control" id="creepminer-webserver-user" name="creepminer-webserver-user" placeholder="creepAdmin">
</div>
<div class="form-group">
<label for="creepminer-webserver-pass">Password</label>
<input type="password" class="form-control" id="creepminer-webserver-pass" name="creepminer-webserver-pass" placeholder="Please enter your password">
</div>
<div class="checkbox">
<input type="checkbox" class="i-checks" checked>
Remember login
<p class="help-block small">(if this is a private computer)</p>
</div>
<button type="submit" class="btn btn-primary btn-block">Login</button>
</form>
</div>
</div>
</div>
</div>
</div>
================================================
FILE: resources/public/plotfiles.html
================================================
<!-- Modal -->
<div class="modal fade" id="checkAllModal" tabindex="-1" role="dialog" aria-labelledby="checkAllModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="checkAllModalLabel">Validating all plot files!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div>
<p><i class="fas fa-info pull-right"></i></p>
<p>
Validating all plots is a intense process and can take a while to run. You may observe the progress by selecting the plot directory.
</p>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning" onclick="checkAllPlotFiles();" data-dismiss="modal">Okay, do it!</button>
</div>
</div>
</div>
</div>
<div class="row bs-component">
<!-- plot locations -->
<div class="col-md-3" style="margin:0;padding:0">
<div class="col-lg-12" id="container">
<div class="btn-group d-flex" role="group">
<!-- rescan btn -->
<button type="button" class="btn btn-primary w-100" onclick="$.get('/rescanPlotfiles');">
<span data-toggle='tooltip' data-placement='bottom' data-original-title='Rescan plot folders for new or removed plot files.'>
<span class="fas fa-sync"></span>
Rescan
</span>
</button>
<!-- validate btn, trigger modal -->
<button type="button" class="btn btn-primary w-100" id="CheckAllButton" data-toggle="modal" data-target="#checkAllModal">
<span data-toggle='tooltip' data-placement='bottom' data-original-title='Validate the integrity of all plot files. This may take a while.'>
<span class="fab fa-superpowers"></span>
Validate all
</span>
</button>
</div>
<!-- Directories -->
<div class="card mb-12">
<h4 class="card-header bg-success text-white">
Directories
<small class="float-sm-right" data-toggle="tooltip" data-placement="bottom" data-original-title="Add new plot location.">
<span onclick="addPlotDir();"><i class="fas fa-plus"></i></span>
</small>
</h4>
<div class="card-body">
<div id="plotDirList" class="list-group"></div>
</div>
</div>
</div>
</div>
<!-- plot files -->
<div class="col-md-9">
<div class="card mb-12" id="plotFileDiv">
<h4 class="card-header text-white bg-primary">Plot file and directories</h4>
<div class="card-body">
Please select a plot directory, to get a list of plots and relevent information
</div>
</div>
</div>
</div>
================================================
FILE: resources/public/settings.html
================================================
<div class="row bs-component">
<div class="col-md-6">
<div class="card mb-12">
<h4 class="card-header bg-success text-white">Mining / Processing</h4>
<div class="card-body">
<div class="row">
<div class="col-lg-12">
<form method="POST" action="/settings/urls">
<div class="form-group row">
<label for="mining-info-url" class="col-md-12 col-lg-3 col-form-label">Mining-Info-URL</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="url" id="mining-info-url" name="mining-info-url">
</div>
</div>
<div class="form-group row">
<label for="submission-url" class="col-md-12 col-lg-3 col-form-label">Submission-URL</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="url" id="submission-url" name="submission-url">
</div>
</div>
<div class="form-group row">
<label for="wallet-url" class="col-md-12 col-lg-3 col-form-label">Wallet-URL</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="text" id="wallet-url" name="wallet-url">
</div>
</div>
<button type="submit" class="btn btn-primary float-right">Submit</button>
</form>
</div>
<div class="col-lg-12">
<form method="POST" action="/settings/mining">
<h4 class="row"></h4>
<div class="form-group row">
<label for="intensity" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="The mining intensity sets the amount of verifier threads that verify plot files.">Intensity</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="intensity" name="intensity">
</div>
</div>
<div class="form-group row">
<label for="plot-readers" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="This value sets the amount of asynchronous plot readers. Every plot reader reads a list of plot files inside a plot directory (or device). If this value is 0 (default), as many plot readers will be created as plot devices exist.">Plot reader</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="plot-readers" name="plot-readers">
</div>
</div>
<div class="form-group row">
<label for="buffer-size" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="This is the maximal global amount of RAM used during the mining process.">Buffer size (MB)</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="buffer-size" name="buffer-size">
</div>
</div>
<div class="form-group row">
<label for="buffer-size" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="The number of chunks that the buffer is split into. Every chunk is only used by one memory unit (plot data).">Buffer chunks</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="buffer-chunks" name="buffer-chunks">
</div>
</div>
<div class="form-group row">
<label for="submit-probability" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="This value determines your target deadline of each round such that you submit with a certain probability. E.g. a submit probability of 0.7 causes you to submit in 70% of rounds.">Submit probability</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="text" id="submit-probability" name="submit-probability">
</div>
</div>
<div class="form-group row">
<label for="target-deadline" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Fixed target deadline that is only used if submit probability is set to 0.">Target deadline</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="text" id="target-deadline" name="target-deadline">
</div>
</div>
<div class="form-group row">
<label for="submission-max-retry" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="When the pool doesn't confirm a sent nonce in (timeout) seconds, the miner will retry to send it and wait for another confirmation. This setting determines the maximum number of times it will be retried.">Submission max retry</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="submission-max-retry" name="submission-max-retry">
</div>
</div>
<div class="form-group row">
<label for="timeout" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="Every communication with the server has a maximum waiting time of this many seconds.">Timeout (seconds)</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="timeout" name="timeout">
</div>
</div>
<div class="form-group row">
<label for="max-historical-blocks" class="col-md-12 col-lg-3 col-form-label" data-toggle="tooltip" data-placement="top" title="The number of blocks that are kept in memory to calculate the statistics and graphs on the blocks page.">Max historical blocks</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="number" id="max-historical-blocks" name="max-historical-blocks">
</div>
</div>
<button type="submit" class="btn btn-primary float-right">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-12">
<h4 class="card-header bg-primary text-white">
Console
<small class="float-sm-right" data-toggle="tooltip" data-placement="bottom" data-original-title="Restart creepMiner">
<span onclick="restartMiner();"><i class="fas fa-sync-alt"></i></span>
</small>
</h4>
<div class="card-body">
<form method="POST" action="/settings/logging">
<div id="settingsDlComboboxes"></div>
<div class="form-group row">
<label for="log-dir" class="col-md-12 col-lg-3 col-form-label">Logfile directory</label>
<div class="col-md-12 col-lg-9">
<input class="form-control" type="text" id="log-dir" name="log-dir">
</div>
</div>
<button type="submit" class="btn btn-primary float-right">Submit</button>
</form>
</div>
<br />
</div>
</div>
</div>
================================================
FILE: resources/run.sh
================================================
#!/bin/sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:lib:/usr/local/lib:$(pwd):$(pwd)/../lib
export LD_LIBRARY_PATH
export LC_ALL=C
cd "$(dirname "$0")"
./creepMiner
================================================
FILE: resources/screen.sh
================================================
#!/bin/sh
cd "$(dirname "$0")"
screen -dmS creep ./run.sh
================================================
FILE: resources/settingsui/App.xaml
================================================
<Application x:Class="ConfigEditor.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.mic
gitextract_33r_salu/ ├── .appveyor.yml ├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── README.md ├── _config.yml ├── bintray-dev.json ├── conanfile.txt ├── libShabal/ │ └── shabal.dll.lib ├── resources/ │ ├── cmSettings.sln │ ├── frontail.json │ ├── gitignore │ ├── install.sh │ ├── install_deps_conan.bat │ ├── install_deps_conan.sh │ ├── install_deps_conan_mint.sh │ ├── public/ │ │ ├── block.html │ │ ├── index.html │ │ ├── js/ │ │ │ ├── block.js │ │ │ ├── general.js │ │ │ ├── plotfiles.js │ │ │ └── settings.js │ │ ├── login.html │ │ ├── plotfiles.html │ │ └── settings.html │ ├── run.sh │ ├── screen.sh │ └── settingsui/ │ ├── App.xaml │ ├── App.xaml.cs │ ├── ConfigEditor.csproj │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Models/ │ │ └── Base.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── app.config │ └── packages.config ├── src/ │ ├── Declarations.cpp │ ├── Declarations.hpp │ ├── MinerUtil.cpp │ ├── MinerUtil.hpp │ ├── extlibs/ │ │ └── json.hpp │ ├── gpu/ │ │ ├── algorithm/ │ │ │ └── gpu_algorithm_atomic.hpp │ │ ├── gpu_algorithm_shell.hpp │ │ ├── gpu_declarations.hpp │ │ ├── gpu_shell.hpp │ │ └── impl/ │ │ ├── gpu_cuda_impl.cpp │ │ ├── gpu_cuda_impl.hpp │ │ ├── gpu_opencl_impl.cpp │ │ └── gpu_opencl_impl.hpp │ ├── logging/ │ │ ├── Console.cpp │ │ ├── Console.hpp │ │ ├── Message.cpp │ │ ├── Message.hpp │ │ ├── MinerLogger.cpp │ │ ├── MinerLogger.hpp │ │ ├── Output.cpp │ │ ├── Output.hpp │ │ ├── ProgressPrinter.cpp │ │ ├── ProgressPrinter.hpp │ │ └── channels/ │ │ ├── ColoredPriorityConsoleChannel.cpp │ │ ├── ColoredPriorityConsoleChannel.hpp │ │ ├── MinerDataChannel.cpp │ │ └── MinerDataChannel.hpp │ ├── main.cpp │ ├── mining/ │ │ ├── Deadline.cpp │ │ ├── Deadline.hpp │ │ ├── Miner.cpp │ │ ├── Miner.hpp │ │ ├── MinerCL.cpp │ │ ├── MinerCL.hpp │ │ ├── MinerConfig.cpp │ │ ├── MinerConfig.hpp │ │ ├── MinerData.cpp │ │ ├── MinerData.hpp │ │ └── WorkerList.hpp │ ├── network/ │ │ ├── NonceSubmitter.cpp │ │ ├── NonceSubmitter.hpp │ │ ├── Request.cpp │ │ ├── Request.hpp │ │ ├── Response.cpp │ │ ├── Response.hpp │ │ ├── Url.cpp │ │ └── Url.hpp │ ├── nxt/ │ │ ├── nxt_address.cpp │ │ └── nxt_address.h │ ├── plots/ │ │ ├── Plot.cpp │ │ ├── Plot.hpp │ │ ├── PlotGenerator.cpp │ │ ├── PlotGenerator.hpp │ │ ├── PlotReader.cpp │ │ ├── PlotReader.hpp │ │ ├── PlotSizes.cpp │ │ ├── PlotSizes.hpp │ │ ├── PlotVerifier.cpp │ │ ├── PlotVerifier.hpp │ │ └── libShabal.h │ ├── resources.rc │ ├── shabal/ │ │ ├── MinerShabal.cpp │ │ ├── MinerShabal.hpp │ │ ├── cuda/ │ │ │ ├── Shabal.cu │ │ │ └── Shabal.hpp │ │ ├── impl/ │ │ │ ├── mshabal_avx2_impl.hpp │ │ │ ├── mshabal_avx_impl.hpp │ │ │ ├── mshabal_sse4_impl.hpp │ │ │ └── sphlib_impl.hpp │ │ ├── mshabal/ │ │ │ ├── mshabal.h │ │ │ ├── mshabal_avx1.cpp │ │ │ ├── mshabal_avx2.cpp │ │ │ └── mshabal_sse4.cpp │ │ ├── opencl/ │ │ │ └── mining.cl │ │ └── sphlib/ │ │ ├── sph_shabal.cpp │ │ ├── sph_shabal.h │ │ └── sph_types.h │ ├── wallet/ │ │ ├── Account.cpp │ │ ├── Account.hpp │ │ ├── Wallet.cpp │ │ └── Wallet.hpp │ └── webserver/ │ ├── MinerServer.cpp │ ├── MinerServer.hpp │ ├── RequestHandler.cpp │ └── RequestHandler.hpp └── version.id
SYMBOL INDEX (1008 symbols across 69 files)
FILE: resources/public/js/block.js
class Deadline (line 2) | class Deadline {
method constructor (line 3) | constructor(deadline) {
class Block (line 18) | class Block {
method constructor (line 19) | constructor() {
method newBlock (line 32) | newBlock(block) {
method addLine (line 55) | addLine(line) {
method getLine (line 59) | getLine(id) {
method getData (line 63) | getData() {
function myTimer (line 93) | function myTimer() {
function localInitCheckBoxes (line 182) | function localInitCheckBoxes() {
function localInitLogSettings (line 205) | function localInitLogSettings() {
function localSet (line 226) | function localSet(item, data) {
function localGet (line 232) | function localGet(item) {
function newBlock (line 238) | function newBlock(json) {
function getNewLine (line 297) | function getNewLine(type, id) {
function addMinedBlocks (line 309) | function addMinedBlocks() {
function setMinedBlocks (line 314) | function setMinedBlocks(blocks) {
function createNonceLine (line 319) | function createNonceLine(deadline, iconId, lineType, nonceType) {
function createMessageLine (line 370) | function createMessageLine(lineType, logger, level, file, lineNumber, ti...
function checkAddBestOverall (line 402) | function checkAddBestOverall(deadlineNum, deadline, blockheight) {
function replaceOrAddNonceLine (line 409) | function replaceOrAddNonceLine(json, glyphIcon, lineType, message) {
function hideSameNonceLines (line 424) | function hideSameNonceLines(nonce) {
function nonceFound (line 469) | function nonceFound(json) {
function addOrSubmit (line 474) | function addOrSubmit(json) {
function addOrConfirm (line 479) | function addOrConfirm(json) {
function addLinkWithLabel (line 488) | function addLinkWithLabel(label, link) {
function config (line 492) | function config(cfg) {
function setOverallProgress (line 509) | function setOverallProgress(value) {
function setOverallProgressVerify (line 513) | function setOverallProgressVerify(valueVerify) {
function setLastWinner (line 517) | function setLastWinner(winner) {
function deActivateConfirmationSound (line 544) | function deActivateConfirmationSound(on) {
function toggleConfirmationSound (line 556) | function toggleConfirmationSound() {
function showMessage (line 577) | function showMessage(json) {
function reparseMessages (line 628) | function reparseMessages() {
function resetLogSettings (line 671) | function resetLogSettings() {
function connectBlock (line 682) | function connectBlock() {
function deadlineFormat (line 733) | function deadlineFormat(val) {
function deadlineFormatPlot (line 755) | function deadlineFormatPlot(val) {
function showDeadlinesInfo (line 790) | function showDeadlinesInfo(deadlineObj) {
function showTimeInfo (line 806) | function showTimeInfo(timeObj) {
function showDeadlineDistributionInfo (line 821) | function showDeadlineDistributionInfo(deadlineDistObj) {
function showDifficultyInfo (line 839) | function showDifficultyInfo(difficultyObj) {
function initBlock (line 854) | function initBlock() {
function initDeadlinePlot (line 927) | function initDeadlinePlot() {
function initDeadlineDistributionPlot (line 965) | function initDeadlineDistributionPlot() {
function initTimePlot (line 1001) | function initTimePlot() {
function initDifficultyPlot (line 1047) | function initDifficultyPlot() {
function efficiency (line 1093) | function efficiency(scantime) {
FILE: resources/public/js/general.js
function connect (line 22) | function connect(onMessage) {
function checkVersion (line 41) | function checkVersion(runningVer, onlineVer, runningBuild) {
function setProgress (line 74) | function setProgress(progressBar, progress) {
function setProgressVerify (line 94) | function setProgressVerify(progressBar, progress) {
function initSettings (line 114) | function initSettings(container, onChange) {
function createLoggerCombobox (line 141) | function createLoggerCombobox(cmb) {
function SwitchTheme (line 169) | function SwitchTheme (name){
function getCookie (line 177) | function getCookie(cname) {
function createCookie (line 194) | function createCookie(name,value,days) {
function eraseCookie (line 205) | function eraseCookie(name) {
FILE: resources/public/js/plotfiles.js
function connectCallback (line 19) | function connectCallback(msg) {
function createProgressBar (line 59) | function createProgressBar(id) {
function createDirLine (line 66) | function createDirLine(dirElement, index) {
function fillDirs (line 86) | function fillDirs() {
function parsePlots (line 93) | function parsePlots() {
function checkPlotFile (line 153) | function checkPlotFile(account, start_nonce, nonces, staggersize, path) {
function checkAllPlotFiles (line 163) | function checkAllPlotFiles(account, start_nonce, nonces, staggersize, pa...
function setPlotIntegrity (line 172) | function setPlotIntegrity(checkPlotResult) {
function setTotalPlotIntegrity (line 202) | function setTotalPlotIntegrity(totalCheckResult) {
function createPlotfileLine (line 219) | function createPlotfileLine(account, start_nonce, nonces, staggersize, s...
function showPlotfiles (line 233) | function showPlotfiles(files) {
function resetProgress (line 256) | function resetProgress() {
function setDirProgress (line 263) | function setDirProgress(dir, progress) {
function resetLineTypes (line 272) | function resetLineTypes() {
function colorConfirmedPlotfiles (line 280) | function colorConfirmedPlotfiles() {
function nonceConfirmed (line 295) | function nonceConfirmed(plotfile) {
function remove_selected_plot_dir (line 312) | function remove_selected_plot_dir() {
function delPlotDir (line 320) | function delPlotDir(path) {
function addPlotDir (line 361) | function addPlotDir() {
FILE: resources/public/js/settings.js
function update_settings (line 3) | function update_settings(config) {
function connectCallback (line 29) | function connectCallback(msg) {
function restartMiner (line 80) | function restartMiner() {
FILE: resources/settingsui/App.xaml.cs
class App (line 8) | public partial class App : Application
FILE: resources/settingsui/MainWindow.xaml.cs
class MainWindow (line 12) | public partial class MainWindow : MetroWindow
method MainWindow (line 36) | public MainWindow()
method Button_Click (line 234) | private void Button_Click(object sender, RoutedEventArgs ex)
FILE: resources/settingsui/Models/Base.cs
class Base (line 5) | public class Base
method Base (line 22) | public Base(string name)
FILE: resources/settingsui/Properties/Resources.Designer.cs
class Resources (line 6) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 15) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: resources/settingsui/Properties/Settings.Designer.cs
class Settings (line 4) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: src/Declarations.hpp
type Burst (line 31) | namespace Burst
class MinerShabal (line 33) | class MinerShabal
class Miner (line 34) | class Miner
class MinerLogger (line 35) | class MinerLogger
class MinerConfig (line 36) | class MinerConfig
class MinerProtocol (line 37) | class MinerProtocol
class PlotReader (line 38) | class PlotReader
type Version (line 40) | struct Version
type ProjectData (line 56) | struct ProjectData
type Settings (line 72) | namespace Settings
type LogOutputType (line 120) | enum class LogOutputType
FILE: src/MinerUtil.cpp
function cpuid (line 83) | void cpuid(int info[4], int InfoType)
function cpuid (line 88) | void cpuid(int info[4], int InfoType)
type tm (line 856) | struct tm
type tm (line 869) | struct tm
type termios (line 1091) | struct termios
FILE: src/MinerUtil.hpp
type Poco (line 35) | namespace Poco
class URI (line 37) | class URI
class TaskManager (line 38) | class TaskManager
type Net (line 39) | namespace Net { class HTTPClientSession; }
class HTTPClientSession (line 39) | class HTTPClientSession
type JSON (line 40) | namespace JSON { class Object; }
class Object (line 40) | class Object
type Burst (line 43) | namespace Burst
class PlotDir (line 45) | class PlotDir
class PlotReadProgress (line 46) | class PlotReadProgress
class BlockData (line 47) | class BlockData
class Deadline (line 48) | class Deadline
class MinerData (line 49) | class MinerData
type MemoryUnit (line 51) | enum class MemoryUnit : Poco::UInt64
function byteArrayToStr (line 61) | std::string byteArrayToStr(const std::array<T, SZ>& arr)
type PlotCheckResult (line 71) | enum class PlotCheckResult
type DeadlineFragment (line 81) | enum class DeadlineFragment
type CpuInstructionSet (line 91) | enum CpuInstructionSet
function transferSession (line 120) | void transferSession(T& from, U& to)
function numberToString (line 160) | std::string numberToString(T number)
class LowLevelFileStream (line 185) | class LowLevelFileStream
FILE: src/extlibs/json.hpp
type nlohmann (line 125) | namespace nlohmann
type adl_serializer (line 128) | struct adl_serializer
method from_json (line 6857) | static void from_json(BasicJsonType&& j, ValueType& val) noexcept(
method to_json (line 6873) | static void to_json(BasicJsonType& j, ValueType&& val) noexcept(
class basic_json (line 141) | class basic_json
type detail (line 168) | namespace detail
class exception (line 202) | class exception : public std::exception
method exception (line 215) | exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
method name (line 217) | static std::string name(const std::string& ename, int id_)
class parse_error (line 270) | class parse_error : public exception
method parse_error (line 281) | static parse_error create(int id_, std::size_t byte_, const std::s...
method parse_error (line 301) | parse_error(int id_, std::size_t byte_, const char* what_arg)
class invalid_iterator (line 342) | class invalid_iterator : public exception
method invalid_iterator (line 345) | static invalid_iterator create(int id_, const std::string& what_arg)
method invalid_iterator (line 352) | invalid_iterator(int id_, const char* what_arg)
class type_error (line 393) | class type_error : public exception
method type_error (line 396) | static type_error create(int id_, const std::string& what_arg)
method type_error (line 403) | type_error(int id_, const char* what_arg) : exception(id_, what_ar...
class out_of_range (line 436) | class out_of_range : public exception
method out_of_range (line 439) | static out_of_range create(int id_, const std::string& what_arg)
method out_of_range (line 446) | out_of_range(int id_, const char* what_arg) : exception(id_, what_...
class other_error (line 474) | class other_error : public exception
method other_error (line 477) | static other_error create(int id_, const std::string& what_arg)
method other_error (line 484) | other_error(int id_, const char* what_arg) : exception(id_, what_a...
type value_t (line 517) | enum class value_t : uint8_t
type is_basic_json (line 563) | struct is_basic_json : std::false_type {}
type index_sequence (line 578) | struct index_sequence
method size (line 582) | static constexpr std::size_t size() noexcept
type merge_and_renumber (line 589) | struct merge_and_renumber
type make_index_sequence (line 597) | struct make_index_sequence
type make_index_sequence<0> (line 602) | struct make_index_sequence<0> : index_sequence<> { }
type make_index_sequence<1> (line 603) | struct make_index_sequence<1> : index_sequence<0> { }
type conjunction (line 621) | struct conjunction : std::true_type {}
type conjunction<B1> (line 622) | struct conjunction<B1> : B1 {}
type negation (line 626) | struct negation : std::integral_constant < bool, !B::value > {}
type priority_tag (line 629) | struct priority_tag : priority_tag < N - 1 > {}
type priority_tag<0> (line 630) | struct priority_tag<0> {}
type external_constructor (line 637) | struct external_constructor
type external_constructor<value_t::boolean> (line 640) | struct external_constructor<value_t::boolean>
method construct (line 643) | static void construct(BasicJsonType& j, typename BasicJsonType::bo...
type external_constructor<value_t::string> (line 652) | struct external_constructor<value_t::string>
method construct (line 655) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 663) | static void construct(BasicJsonType& j, typename BasicJsonType::st...
type external_constructor<value_t::number_float> (line 672) | struct external_constructor<value_t::number_float>
method construct (line 675) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_unsigned> (line 684) | struct external_constructor<value_t::number_unsigned>
method construct (line 687) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_integer> (line 696) | struct external_constructor<value_t::number_integer>
method construct (line 699) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::array> (line 708) | struct external_constructor<value_t::array>
method construct (line 711) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 719) | static void construct(BasicJsonType& j, typename BasicJsonType::ar...
method construct (line 730) | static void construct(BasicJsonType& j, const CompatibleArrayType&...
method construct (line 740) | static void construct(BasicJsonType& j, const std::vector<bool>& arr)
method construct (line 754) | static void construct(BasicJsonType& j, const std::valarray<T>& arr)
type external_constructor<value_t::object> (line 765) | struct external_constructor<value_t::object>
method construct (line 768) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 776) | static void construct(BasicJsonType& j, typename BasicJsonType::ob...
method construct (line 786) | static void construct(BasicJsonType& j, const CompatibleObjectType...
type is_compatible_object_type_impl (line 832) | struct is_compatible_object_type_impl : std::false_type {}
type is_compatible_object_type_impl<true, RealType, CompatibleObjectType> (line 835) | struct is_compatible_object_type_impl<true, RealType, CompatibleObje...
type is_compatible_object_type (line 843) | struct is_compatible_object_type
type is_basic_json_nested_type (line 853) | struct is_basic_json_nested_type
type is_compatible_array_type (line 862) | struct is_compatible_array_type
type is_compatible_integer_type_impl (line 876) | struct is_compatible_integer_type_impl : std::false_type {}
type is_compatible_integer_type_impl<true, RealIntegerType, CompatibleNumberIntegerType> (line 879) | struct is_compatible_integer_type_impl<true, RealIntegerType, Compat...
type is_compatible_integer_type (line 892) | struct is_compatible_integer_type
type has_from_json (line 904) | struct has_from_json
type has_non_default_from_json (line 921) | struct has_non_default_from_json
type has_to_json (line 938) | struct has_to_json
function to_json (line 958) | void to_json(BasicJsonType& j, T b) noexcept
function to_json (line 966) | void to_json(BasicJsonType& j, const CompatibleString& s)
function to_json (line 972) | void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
function to_json (line 979) | void to_json(BasicJsonType& j, FloatType val) noexcept
function to_json (line 988) | void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noe...
function to_json (line 997) | void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noex...
function to_json (line 1004) | void to_json(BasicJsonType& j, EnumType e) noexcept
function to_json (line 1011) | void to_json(BasicJsonType& j, const std::vector<bool>& e)
function to_json (line 1022) | void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
function to_json (line 1029) | void to_json(BasicJsonType& j, std::valarray<T> arr)
function to_json (line 1035) | void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
function to_json (line 1044) | void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
function to_json (line 1050) | void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
function to_json (line 1059) | void to_json(BasicJsonType& j, T(&arr)[N])
function to_json (line 1065) | void to_json(BasicJsonType& j, const std::pair<Args...>& p)
function to_json_tuple_impl (line 1071) | void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequ...
function to_json (line 1077) | void to_json(BasicJsonType& j, const std::tuple<Args...>& t)
function get_arithmetic_value (line 1092) | void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 1118) | void from_json(const BasicJsonType& j, typename BasicJsonType::boole...
function from_json (line 1128) | void from_json(const BasicJsonType& j, typename BasicJsonType::strin...
function from_json (line 1138) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 1144) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 1150) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 1157) | void from_json(const BasicJsonType& j, EnumType& e)
function from_json (line 1165) | void from_json(const BasicJsonType& j, typename BasicJsonType::array...
function from_json (line 1177) | void from_json(const BasicJsonType& j, std::forward_list<T, Allocato...
function from_json (line 1193) | void from_json(const BasicJsonType& j, std::valarray<T>& l)
function from_json_array_impl (line 1204) | void from_json_array_impl(const BasicJsonType& j, CompatibleArrayTyp...
function from_json_array_impl (line 1218) | auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayTyp...
function from_json_array_impl (line 1236) | void from_json_array_impl(const BasicJsonType& j, std::array<T, N>& ...
function from_json (line 1248) | void from_json(const BasicJsonType& j, CompatibleArrayType& arr)
function from_json (line 1260) | void from_json(const BasicJsonType& j, CompatibleObjectType& obj)
function from_json (line 1290) | void from_json(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 1321) | void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
function from_json_tuple_impl (line 1327) | void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_se...
function from_json (line 1333) | void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
type to_json_fn (line 1338) | struct to_json_fn
method call (line 1342) | auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) c...
method call (line 1349) | void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<...
type from_json_fn (line 1364) | struct from_json_fn
method call (line 1368) | auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused...
method call (line 1376) | void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority...
type static_const (line 1393) | struct static_const
type input_adapter_protocol (line 1416) | struct input_adapter_protocol
class input_stream_adapter (line 1437) | class input_stream_adapter : public input_adapter_protocol
method input_stream_adapter (line 1447) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 1479) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 1480) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method get_character (line 1485) | std::char_traits<char>::int_type get_character() override
method unget_character (line 1490) | void unget_character() override
class input_buffer_adapter (line 1502) | class input_buffer_adapter : public input_adapter_protocol
method input_buffer_adapter (line 1505) | input_buffer_adapter(const char* b, const std::size_t l)
method input_buffer_adapter (line 1516) | input_buffer_adapter(const input_buffer_adapter&) = delete;
method input_buffer_adapter (line 1517) | input_buffer_adapter& operator=(input_buffer_adapter&) = delete;
method get_character (line 1519) | std::char_traits<char>::int_type get_character() noexcept override
method unget_character (line 1529) | void unget_character() noexcept override
class input_adapter (line 1546) | class input_adapter
method input_adapter (line 1552) | input_adapter(std::istream& i)
method input_adapter (line 1556) | input_adapter(std::istream&& i)
method input_adapter (line 1567) | input_adapter(CharT b, std::size_t l)
method input_adapter (line 1580) | input_adapter(CharT b)
method input_adapter (line 1590) | input_adapter(IteratorType first, IteratorType last)
method input_adapter (line 1622) | input_adapter(T(&array)[N])
method input_adapter (line 1633) | input_adapter(const ContiguousContainer& c)
class lexer (line 1656) | class lexer
type token_type (line 1664) | enum class token_type
method lexer (line 1727) | explicit lexer(detail::input_adapter_t adapter)
method lexer (line 1731) | lexer(const lexer&) = delete;
method lexer (line 1732) | lexer& operator=(lexer&) = delete;
method get_decimal_point (line 1740) | static char get_decimal_point() noexcept
method get_codepoint (line 1766) | int get_codepoint()
method next_byte_in_range (line 1808) | bool next_byte_in_range(std::initializer_list<int> ranges)
method token_type (line 1844) | token_type scan_string()
method strtof (line 2277) | static void strtof(float& f, const char* str, char** endptr) noexcept
method strtof (line 2282) | static void strtof(double& f, const char* str, char** endptr) noex...
method strtof (line 2287) | static void strtof(long double& f, const char* str, char** endptr)...
method token_type (line 2332) | token_type scan_number()
method token_type (line 2664) | token_type scan_literal(const char* literal_text, const std::size_...
method reset (line 2684) | void reset() noexcept
method get (line 2701) | std::char_traits<char>::int_type get()
method unget (line 2713) | void unget()
method add (line 2725) | void add(int c)
method number_integer_t (line 2736) | constexpr number_integer_t get_number_integer() const noexcept
method number_unsigned_t (line 2742) | constexpr number_unsigned_t get_number_unsigned() const noexcept
method number_float_t (line 2748) | constexpr number_float_t get_number_float() const noexcept
method move_string (line 2754) | std::string move_string()
method get_position (line 2764) | constexpr std::size_t get_position() const noexcept
method get_token_string (line 2772) | std::string get_token_string() const
method token_type (line 2806) | token_type scan()
class parser (line 2903) | class parser
type parse_event_t (line 2912) | enum class parse_event_t : uint8_t
method parser (line 2932) | explicit parser(detail::input_adapter_t adapter,
method parse (line 2948) | void parse(const bool strict, BasicJsonType& result)
method accept (line 2984) | bool accept(const bool strict = true)
method parse_internal (line 3005) | void parse_internal(bool keep, BasicJsonType& result)
method accept_internal (line 3293) | bool accept_internal()
method token_type (line 3397) | token_type get_token()
method expect (line 3405) | bool expect(token_type t)
method throw_exception (line 3424) | [[noreturn]] void throw_exception() const
class primitive_iterator_t (line 3475) | class primitive_iterator_t
method difference_type (line 3480) | constexpr difference_type get_value() const noexcept
method set_begin (line 3486) | void set_begin() noexcept
method set_end (line 3492) | void set_end() noexcept
method is_begin (line 3498) | constexpr bool is_begin() const noexcept
method is_end (line 3504) | constexpr bool is_end() const noexcept
method primitive_iterator_t (line 3519) | primitive_iterator_t operator+(difference_type i)
method difference_type (line 3526) | constexpr difference_type operator-(primitive_iterator_t lhs, prim...
method primitive_iterator_t (line 3536) | primitive_iterator_t& operator++()
method primitive_iterator_t (line 3542) | primitive_iterator_t operator++(int)
method primitive_iterator_t (line 3549) | primitive_iterator_t& operator--()
method primitive_iterator_t (line 3555) | primitive_iterator_t operator--(int)
method primitive_iterator_t (line 3562) | primitive_iterator_t& operator+=(difference_type n)
method primitive_iterator_t (line 3568) | primitive_iterator_t& operator-=(difference_type n)
type internal_iterator (line 3588) | struct internal_iterator
class iteration_proxy (line 3598) | class iteration_proxy
class iteration_proxy_internal (line 4190) | class iteration_proxy_internal
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
method iteration_proxy (line 4255) | explicit iteration_proxy(typename IteratorType::reference cont)
method iteration_proxy_internal (line 4259) | iteration_proxy_internal begin() noexcept
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
method iteration_proxy_internal (line 4265) | iteration_proxy_internal end() noexcept
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
class iter_impl (line 3621) | class iter_impl : public std::iterator<std::bidirectional_iterator_t...
method iter_impl (line 3650) | iter_impl() = default;
method iter_impl (line 3658) | explicit iter_impl(pointer object) noexcept : m_object(object)
method iter_impl (line 3698) | iter_impl(const iter_impl<typename std::remove_const<BasicJsonType...
method iter_impl (line 3707) | iter_impl& operator=(const iter_impl<typename std::remove_const<Ba...
method set_begin (line 3719) | void set_begin() noexcept
method set_end (line 3756) | void set_end() noexcept
method reference (line 3787) | reference operator*() const
method pointer (line 3824) | pointer operator->() const
method iter_impl (line 3858) | iter_impl operator++(int)
method iter_impl (line 3869) | iter_impl& operator++()
method iter_impl (line 3901) | iter_impl operator--(int)
method iter_impl (line 3912) | iter_impl& operator--()
method iter_impl (line 4034) | iter_impl& operator+=(difference_type i)
method iter_impl (line 4063) | iter_impl& operator-=(difference_type i)
method iter_impl (line 4072) | iter_impl operator+(difference_type i) const
method iter_impl (line 4083) | iter_impl operator+(difference_type i, const iter_impl& it)
method iter_impl (line 4094) | iter_impl operator-(difference_type i) const
method difference_type (line 4105) | difference_type operator-(const iter_impl& other) const
method reference (line 4126) | reference operator[](difference_type n) const
method key (line 4157) | typename object_t::key_type key() const
method reference (line 4173) | reference value() const
class iteration_proxy (line 4186) | class iteration_proxy
class iteration_proxy_internal (line 4190) | class iteration_proxy_internal
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
method iteration_proxy (line 4255) | explicit iteration_proxy(typename IteratorType::reference cont)
method iteration_proxy_internal (line 4259) | iteration_proxy_internal begin() noexcept
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
method iteration_proxy_internal (line 4265) | iteration_proxy_internal end() noexcept
method iteration_proxy_internal (line 4199) | explicit iteration_proxy_internal(IteratorType it) noexcept : an...
method iteration_proxy_internal (line 4202) | iteration_proxy_internal& operator*()
method iteration_proxy_internal (line 4208) | iteration_proxy_internal& operator++()
method key (line 4223) | std::string key() const
method value (line 4244) | typename IteratorType::reference value() const
class json_reverse_iterator (line 4290) | class json_reverse_iterator : public std::reverse_iterator<Base>
method json_reverse_iterator (line 4300) | json_reverse_iterator(const typename base_iterator::iterator_type&...
method json_reverse_iterator (line 4304) | json_reverse_iterator(const base_iterator& it) noexcept : base_ite...
method json_reverse_iterator (line 4307) | json_reverse_iterator operator++(int)
method json_reverse_iterator (line 4313) | json_reverse_iterator& operator++()
method json_reverse_iterator (line 4319) | json_reverse_iterator operator--(int)
method json_reverse_iterator (line 4325) | json_reverse_iterator& operator--()
method json_reverse_iterator (line 4331) | json_reverse_iterator& operator+=(difference_type i)
method json_reverse_iterator (line 4337) | json_reverse_iterator operator+(difference_type i) const
method json_reverse_iterator (line 4343) | json_reverse_iterator operator-(difference_type i) const
method difference_type (line 4349) | difference_type operator-(const json_reverse_iterator& other) const
method reference (line 4355) | reference operator[](difference_type n) const
method key (line 4361) | auto key() const -> decltype(std::declval<Base>().key())
method reference (line 4368) | reference value() const
type output_adapter_protocol (line 4380) | struct output_adapter_protocol
class output_vector_adapter (line 4393) | class output_vector_adapter : public output_adapter_protocol<CharType>
method output_vector_adapter (line 4396) | explicit output_vector_adapter(std::vector<CharType>& vec) : v(vec...
method write_character (line 4398) | void write_character(CharType c) override
method write_characters (line 4403) | void write_characters(const CharType* s, std::size_t length) override
class output_stream_adapter (line 4414) | class output_stream_adapter : public output_adapter_protocol<CharType>
method output_stream_adapter (line 4417) | explicit output_stream_adapter(std::basic_ostream<CharType>& s) : ...
method write_character (line 4419) | void write_character(CharType c) override
method write_characters (line 4424) | void write_characters(const CharType* s, std::size_t length) override
class output_string_adapter (line 4435) | class output_string_adapter : public output_adapter_protocol<CharType>
method output_string_adapter (line 4438) | explicit output_string_adapter(std::basic_string<CharType>& s) : s...
method write_character (line 4440) | void write_character(CharType c) override
method write_characters (line 4445) | void write_characters(const CharType* s, std::size_t length) override
class output_adapter (line 4455) | class output_adapter
method output_adapter (line 4458) | output_adapter(std::vector<CharType>& vec)
method output_adapter (line 4461) | output_adapter(std::basic_ostream<CharType>& s)
method output_adapter (line 4464) | output_adapter(std::basic_string<CharType>& s)
class binary_reader (line 4484) | class binary_reader
method binary_reader (line 4495) | explicit binary_reader(input_adapter_t adapter) : ia(std::move(ada...
method BasicJsonType (line 4510) | BasicJsonType parse_cbor(const bool strict)
method BasicJsonType (line 4531) | BasicJsonType parse_msgpack(const bool strict)
method little_endianess (line 4549) | static constexpr bool little_endianess(int num = 1) noexcept
method BasicJsonType (line 4560) | BasicJsonType parse_cbor_internal(const bool get_char = true)
method BasicJsonType (line 4878) | BasicJsonType parse_msgpack_internal()
method get (line 5212) | int get()
method NumberType (line 5231) | NumberType get_number()
method get_string (line 5271) | std::string get_string(const NumberType len)
method get_cbor_string (line 5295) | std::string get_cbor_string()
method BasicJsonType (line 5371) | BasicJsonType get_cbor_array(const NumberType len)
method BasicJsonType (line 5382) | BasicJsonType get_cbor_object(const NumberType len)
method get_msgpack_string (line 5408) | std::string get_msgpack_string()
method BasicJsonType (line 5477) | BasicJsonType get_msgpack_array(const NumberType len)
method BasicJsonType (line 5488) | BasicJsonType get_msgpack_object(const NumberType len)
method check_eof (line 5507) | void check_eof(const bool expect_eof = false) const
class binary_writer (line 5543) | class binary_writer
method binary_writer (line 5551) | explicit binary_writer(output_adapter_t<CharType> adapter) : oa(ad...
method write_cbor (line 5559) | void write_cbor(const BasicJsonType& j)
method write_msgpack (line 5803) | void write_msgpack(const BasicJsonType& j)
method write_number (line 6050) | void write_number(NumberType n)
class serializer (line 6079) | class serializer
method serializer (line 6090) | serializer(output_adapter_t<char> s, const char ichar)
method serializer (line 6097) | serializer(const serializer&) = delete;
method serializer (line 6098) | serializer& operator=(const serializer&) = delete;
method dump (line 6117) | void dump(const BasicJsonType& val, const bool pretty_print,
method bytes_following (line 6316) | static constexpr std::size_t bytes_following(const uint8_t u)
method extra_space (line 6334) | static std::size_t extra_space(const string_t& s,
method escape_codepoint (line 6428) | static void escape_codepoint(int codepoint, string_t& result, std:...
method dump_escaped (line 6493) | void dump_escaped(const string_t& s, const bool ensure_ascii) const
method dump_integer (line 6649) | void dump_integer(NumberType x)
method dump_float (line 6690) | void dump_float(number_float_t x)
class json_ref (line 6768) | class json_ref
method json_ref (line 6773) | json_ref(value_type&& value)
method json_ref (line 6779) | json_ref(const value_type& value)
method json_ref (line 6784) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 6791) | json_ref(Args&& ... args)
method json_ref (line 6798) | json_ref(json_ref&&) = default;
method json_ref (line 6799) | json_ref(const json_ref&) = delete;
method json_ref (line 6800) | json_ref& operator=(const json_ref&) = delete;
method value_type (line 6802) | value_type moved_or_copied() const
method value_type (line 6811) | value_type const& operator*() const
method value_type (line 6816) | value_type const* operator->() const
type adl_serializer (line 6845) | struct adl_serializer
method from_json (line 6857) | static void from_json(BasicJsonType&& j, ValueType& val) noexcept(
method to_json (line 6873) | static void to_json(BasicJsonType& j, ValueType&& val) noexcept(
class json_pointer (line 6891) | class json_pointer
class basic_json (line 6895) | class basic_json
method json_pointer (line 6919) | explicit json_pointer(const std::string& s = "") : reference_tokens(...
method to_string (line 6936) | std::string to_string() const noexcept
method pop_back (line 6957) | std::string pop_back()
method is_root (line 6970) | bool is_root() const
method json_pointer (line 6975) | json_pointer top() const
method split (line 7064) | static std::vector<std::string> split(const std::string& reference_s...
method replace_substring (line 7139) | static void replace_substring(std::string& s, const std::string& f,
method escape (line 7152) | static std::string escape(std::string s)
method unescape (line 7160) | static void unescape(std::string& s)
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 7283) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function value_t (line 9023) | constexpr value_t type() const noexcept
function is_primitive (line 9053) | constexpr bool is_primitive() const noexcept
function is_structured (line 9080) | constexpr bool is_structured() const noexcept
function is_null (line 9102) | constexpr bool is_null() const noexcept
function is_boolean (line 9124) | constexpr bool is_boolean() const noexcept
function is_number (line 9154) | constexpr bool is_number() const noexcept
function is_number_integer (line 9183) | constexpr bool is_number_integer() const noexcept
function is_number_unsigned (line 9211) | constexpr bool is_number_unsigned() const noexcept
function is_number_float (line 9239) | constexpr bool is_number_float() const noexcept
function is_object (line 9261) | constexpr bool is_object() const noexcept
function is_array (line 9283) | constexpr bool is_array() const noexcept
function is_string (line 9305) | constexpr bool is_string() const noexcept
function is_discarded (line 9332) | constexpr bool is_discarded() const noexcept
type merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>> (line 592) | struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>>
type conjunction<B1, Bn...> (line 624) | struct conjunction<B1, Bn...> : std::conditional<bool(B1::value), conjun...
function object_t (line 9382) | object_t* get_impl_ptr(object_t* /*unused*/) noexcept
function object_t (line 9388) | constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const...
function array_t (line 9394) | array_t* get_impl_ptr(array_t* /*unused*/) noexcept
function array_t (line 9400) | constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const n...
function string_t (line 9406) | string_t* get_impl_ptr(string_t* /*unused*/) noexcept
function string_t (line 9412) | constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const...
function boolean_t (line 9418) | boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
function boolean_t (line 9424) | constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) con...
function number_integer_t (line 9430) | number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
function number_integer_t (line 9436) | constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /...
function number_unsigned_t (line 9442) | number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
function number_unsigned_t (line 9448) | constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t*...
function number_float_t (line 9454) | number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
function number_float_t (line 9460) | constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unu...
function ReferenceType (line 9477) | static ReferenceType get_ref_impl(ThisType& obj)
function ValueType (line 9566) | ValueType get() const noexcept(noexcept(
function ValueType (line 9619) | ValueType get() const noexcept(noexcept(
function PointerType (line 9656) | PointerType get() noexcept
function PointerType (line 9668) | constexpr const PointerType get() const noexcept
function PointerType (line 9702) | PointerType get_ptr() noexcept
function PointerType (line 9730) | constexpr const PointerType get_ptr() const noexcept
function ReferenceType (line 9779) | ReferenceType get_ref()
function ReferenceType (line 9792) | ReferenceType get_ref() const
function reference (line 9881) | reference at(size_type idx)
function const_reference (line 9928) | const_reference at(size_type idx) const
function reference (line 9979) | reference at(const typename object_t::key_type& key)
function const_reference (line 10030) | const_reference at(const typename object_t::key_type& key) const
function reference (line 10076) | reference operator[](size_type idx)
function const_reference (line 10122) | const_reference operator[](size_type idx) const
function reference (line 10160) | reference operator[](const typename object_t::key_type& key)
function const_reference (line 10209) | const_reference operator[](const typename object_t::key_type& key) const
function reference (line 10249) | reference operator[](T* key)
function const_reference (line 10299) | const_reference operator[](T* key) const
function ValueType (line 10361) | ValueType value(const typename object_t::key_type& key, const ValueType&...
function string_t (line 10383) | string_t value(const typename object_t::key_type& key, const char* defau...
function ValueType (line 10431) | ValueType value(const json_pointer& ptr, const ValueType& default_value)...
function string_t (line 10454) | string_t value(const json_pointer& ptr, const char* default_value) const
function reference (line 10484) | reference front()
function const_reference (line 10492) | const_reference front() const
function reference (line 10528) | reference back()
function const_reference (line 10538) | const_reference back() const
function IteratorType (line 10595) | IteratorType erase(IteratorType pos)
function IteratorType (line 10700) | IteratorType erase(IteratorType first, IteratorType last)
function size_type (line 10787) | size_type erase(const typename object_t::key_type& key)
function erase (line 10822) | void erase(const size_type idx)
function iterator (line 10873) | iterator find(KeyT&& key)
function const_iterator (line 10890) | const_iterator find(KeyT&& key) const
function size_type (line 10924) | size_type count(KeyT&& key) const
function iterator (line 10964) | iterator begin() noexcept
function const_iterator (line 10974) | const_iterator begin() const noexcept
function const_iterator (line 11004) | const_iterator cbegin() const noexcept
function iterator (line 11035) | iterator end() noexcept
function const_iterator (line 11045) | const_iterator end() const noexcept
function const_iterator (line 11075) | const_iterator cend() const noexcept
function reverse_iterator (line 11105) | reverse_iterator rbegin() noexcept
function const_reverse_iterator (line 11113) | const_reverse_iterator rbegin() const noexcept
function reverse_iterator (line 11142) | reverse_iterator rend() noexcept
function const_reverse_iterator (line 11150) | const_reverse_iterator rend() const noexcept
function const_reverse_iterator (line 11179) | const_reverse_iterator crbegin() const noexcept
function const_reverse_iterator (line 11208) | const_reverse_iterator crend() const noexcept
function iterator_wrapper (line 11235) | static iteration_proxy<const_iterator> iterator_wrapper(const_reference ...
function empty (line 11291) | bool empty() const noexcept
function size_type (line 11363) | size_type size() const noexcept
function size_type (line 11433) | size_type max_size() const noexcept
function clear (line 11503) | void clear() noexcept
function push_back (line 11574) | void push_back(basic_json&& val)
function reference (line 11600) | reference operator+=(basic_json&& val)
function push_back (line 11610) | void push_back(const basic_json& val)
function reference (line 11634) | reference operator+=(const basic_json& val)
function push_back (line 11660) | void push_back(const typename object_t::value_type& val)
function reference (line 11684) | reference operator+=(const typename object_t::value_type& val)
function push_back (line 11715) | void push_back(initializer_list_t init)
function reference (line 11733) | reference operator+=(initializer_list_t init)
function emplace_back (line 11761) | void emplace_back(Args&& ... args)
function emplace (line 11809) | std::pair<iterator, bool> emplace(Args&& ... args)
function iterator (line 11857) | iterator insert(const_iterator pos, const basic_json& val)
function iterator (line 11881) | iterator insert(const_iterator pos, basic_json&& val)
function iterator (line 11910) | iterator insert(const_iterator pos, size_type cnt, const basic_json& val)
function iterator (line 11960) | iterator insert(const_iterator pos, const_iterator first, const_iterator...
function iterator (line 12018) | iterator insert(const_iterator pos, initializer_list_t ilist)
function insert (line 12061) | void insert(const_iterator first, const_iterator last)
function update (line 12103) | void update(const_reference j)
function update (line 12154) | void update(const_iterator first, const_iterator last)
function swap (line 12205) | void swap(reference other) noexcept (
function swap (line 12237) | void swap(array_t& other)
function swap (line 12270) | void swap(object_t& other)
function swap (line 12303) | void swap(string_t& other)
function friend (line 12470) | friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
function friend (line 12523) | friend bool operator<(const_reference lhs, const_reference rhs) noexcept
function friend (line 12632) | friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
function friend (line 12678) | friend bool operator>(const_reference lhs, const_reference rhs) noexcept
function friend (line 12724) | friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
function friend (line 12788) | friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
function JSON_DEPRECATED (line 12811) | JSON_DEPRECATED
function basic_json (line 12889) | static basic_json parse(detail::input_adapter i,
function basic_json (line 12901) | static basic_json parse(detail::input_adapter& i,
function accept (line 12910) | static bool accept(detail::input_adapter i)
function accept (line 12915) | static bool accept(detail::input_adapter& i)
function basic_json (line 12971) | static basic_json parse(IteratorType first, IteratorType last,
function accept (line 12984) | static bool accept(IteratorType first, IteratorType last)
function JSON_DEPRECATED (line 12997) | JSON_DEPRECATED
function friend (line 13028) | friend std::istream& operator>>(std::istream& i, basic_json& j)
function to_cbor (line 13206) | static void to_cbor(const basic_json& j, detail::output_adapter<uint8_t> o)
function to_cbor (line 13211) | static void to_cbor(const basic_json& j, detail::output_adapter<char> o)
function to_msgpack (line 13294) | static std::vector<uint8_t> to_msgpack(const basic_json& j)
function to_msgpack (line 13301) | static void to_msgpack(const basic_json& j, detail::output_adapter<uint8...
function to_msgpack (line 13306) | static void to_msgpack(const basic_json& j, detail::output_adapter<char> o)
function basic_json (line 13402) | static basic_json from_cbor(detail::input_adapter i,
function basic_json (line 13413) | static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true)
function basic_json (line 13489) | static basic_json from_msgpack(detail::input_adapter i,
function basic_json (line 13500) | static basic_json from_msgpack(A1 && a1, A2 && a2, const bool strict = t...
function reference (line 13547) | reference operator[](const json_pointer& ptr)
function const_reference (line 13575) | const_reference operator[](const json_pointer& ptr) const
function reference (line 13615) | reference at(const json_pointer& ptr)
function const_reference (line 13655) | const_reference at(const json_pointer& ptr) const
function basic_json (line 13682) | basic_json flatten() const
function basic_json (line 13719) | basic_json unflatten() const
function basic_json (line 13780) | basic_json patch(const basic_json& json_patch) const
function basic_json (line 14072) | static basic_json diff(const basic_json& source, const basic_json& target,
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14218) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14281) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14353) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14407) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14462) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14516) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
function NLOHMANN_BASIC_JSON_TPL_DECLARATION (line 14569) | NLOHMANN_BASIC_JSON_TPL_DECLARATION
type std (line 14615) | namespace std
function swap (line 14623) | inline void swap(nlohmann::json& j1,
type hash<nlohmann::json> (line 14634) | struct hash<nlohmann::json>
type less< ::nlohmann::detail::value_t> (line 14653) | struct less< ::nlohmann::detail::value_t>
FILE: src/gpu/algorithm/gpu_algorithm_atomic.hpp
type Burst (line 28) | namespace Burst
type GpuAlgorithmAtomic (line 30) | struct GpuAlgorithmAtomic
method run (line 33) | static bool run(ScoopData* scoops, const size_t size, const GensigDa...
FILE: src/gpu/gpu_algorithm_shell.hpp
type Burst (line 27) | namespace Burst
type GpuAlgorithmShell (line 30) | struct GpuAlgorithmShell
method run (line 33) | static std::pair<Poco::UInt64, Poco::UInt64> run(TArgs&&... args)
FILE: src/gpu/gpu_declarations.hpp
type Burst (line 5) | namespace Burst
type CalculatedDeadline (line 7) | struct CalculatedDeadline
type MemoryType (line 13) | enum class MemoryType
type MemoryCopyDirection (line 21) | enum class MemoryCopyDirection
FILE: src/gpu/gpu_shell.hpp
type Burst (line 27) | namespace Burst
type GpuShell (line 35) | struct GpuShell
method initStream (line 49) | static bool initStream(Args&&... args)
method allocateMemory (line 61) | static bool allocateMemory(Args&&... args)
method copyMemory (line 73) | static bool copyMemory(Args&&... args)
method freeMemory (line 85) | static bool freeMemory(Args&&... args)
method verify (line 97) | static bool verify(Args&&... args)
method getMinDeadline (line 109) | static bool getMinDeadline(Args&&... args)
method run (line 122) | static bool run(Args&&... args)
method getError (line 134) | static bool getError(Args&&... args)
type GpuHelper (line 140) | struct GpuHelper
method calcMemorySize (line 148) | static Poco::UInt64 calcMemorySize(const MemoryType memType, Poco::U...
method calcMemorySize (line 167) | static Poco::UInt64 calcMemorySize(const Poco::UInt64 size)
FILE: src/gpu/impl/gpu_cuda_impl.cpp
function cuda_calc_occupancy (line 106) | void cuda_calc_occupancy(int bufferSize, int& gridSize, int& blockSize)
function cuda_alloc_memory (line 110) | bool cuda_alloc_memory(Poco::UInt64 size, void** mem) { return true; }
function cuda_realloc_memory (line 111) | bool cuda_realloc_memory(Poco::UInt64 size, void** mem) { return true; }
function cuda_copy_memory (line 113) | bool cuda_copy_memory(Poco::UInt64 size, const void* from, void* to,
function cuda_free_memory (line 118) | bool cuda_free_memory(void* mem) { return true; }
function cuda_calc_memory_size (line 119) | Poco::UInt64 cuda_calc_memory_size(Burst::MemoryType memType, Poco::UInt...
function cuda_calculate_shabal_host_preallocated (line 121) | bool cuda_calculate_shabal_host_preallocated(Burst::ScoopData* buffer, P...
function cuda_reduce_best_deadline (line 128) | bool cuda_reduce_best_deadline(Poco::UInt64* deadlines, size_t size,
function cuda_get_error (line 134) | bool cuda_get_error(std::string& errorString) { return false; }
function cuda_get_devices (line 135) | bool cuda_get_devices(std::vector<std::string>& devices) { return true; }
function cuda_set_device (line 136) | bool cuda_set_device(unsigned index) { return true; }
FILE: src/gpu/impl/gpu_cuda_impl.hpp
type Burst (line 8) | namespace Burst
type GpuCudaImpl (line 10) | struct GpuCudaImpl
FILE: src/gpu/impl/gpu_opencl_impl.cpp
type Burst (line 69) | namespace Burst
type Gpu_Opencl_Impl_Helper (line 71) | struct Gpu_Opencl_Impl_Helper
method calcOccupancy (line 73) | static size_t calcOccupancy(const size_t elements, const size_t loca...
FILE: src/gpu/impl/gpu_opencl_impl.hpp
type Burst (line 29) | namespace Burst
type CalculatedDeadline (line 31) | struct CalculatedDeadline
type GpuOpenclImpl (line 33) | struct GpuOpenclImpl
FILE: src/logging/Console.hpp
type Burst (line 30) | namespace Burst
type ConsoleColor (line 35) | enum class ConsoleColor
type ConsoleColorPair (line 58) | struct ConsoleColorPair
class PrintBlock (line 67) | class PrintBlock
method PrintBlock (line 82) | PrintBlock(PrintBlock&& rhs) noexcept = default;
method PrintBlock (line 83) | PrintBlock(const PrintBlock& rhs) = default;
method PrintBlock (line 84) | PrintBlock& operator=(const PrintBlock& rhs) = default;
method PrintBlock (line 85) | PrintBlock& operator=(PrintBlock&& rhs) noexcept = default;
method PrintBlock (line 94) | const PrintBlock& operator<< (const T& text) const
method PrintBlock (line 101) | const PrintBlock& print(const T& text) const
method PrintBlock (line 109) | const PrintBlock& print(const std::string& format, const T&... args)...
class Console (line 171) | class Console
method Console (line 177) | Console() = delete;
method Console (line 179) | Console(const Console& rhs) = delete;
method Console (line 180) | Console(Console&& rhs) = delete;
method Console (line 182) | Console& operator=(const Console& rhs) = delete;
method Console (line 183) | Console& operator=(Console&& rhs) = delete;
FILE: src/logging/Message.hpp
type Burst (line 31) | namespace Burst
type TextType (line 33) | enum class TextType
type MessageNotification (line 51) | struct MessageNotification : Poco::Notification
type Message (line 76) | struct Message
method log (line 102) | static void log(Poco::Message::Priority priority, TextType type,
method logIntoFile (line 170) | static void logIntoFile(Poco::Message::Priority priority, TextType t...
type Dispatcher (line 185) | struct Dispatcher : Poco::Task
FILE: src/logging/MinerLogger.hpp
type Burst (line 39) | namespace Burst
class ColoredPriorityConsoleChannel (line 41) | class ColoredPriorityConsoleChannel
class MinerDataChannel (line 42) | class MinerDataChannel
class BlockData (line 43) | class BlockData
class MinerData (line 44) | class MinerData
class MinerLogger (line 46) | class MinerLogger
type ChannelDefinition (line 56) | struct ChannelDefinition
FILE: src/logging/Output.hpp
type Burst (line 27) | namespace Burst
type Output (line 33) | enum Output : Poco::UInt32
type OutputHelper (line 59) | struct OutputHelper
FILE: src/logging/ProgressPrinter.cpp
type Burst (line 46) | namespace Burst
function repeat (line 54) | std::string repeat(size_t times, const std::string&token)
FILE: src/logging/ProgressPrinter.hpp
type Burst (line 26) | namespace Burst
type ProgressToken (line 28) | struct ProgressToken
type Progress (line 34) | struct Progress
type ProgressPrinter (line 43) | struct ProgressPrinter
FILE: src/logging/channels/ColoredPriorityConsoleChannel.hpp
type Burst (line 28) | namespace Burst
class ColoredPriorityConsoleChannel (line 33) | class ColoredPriorityConsoleChannel : public Poco::Channel
FILE: src/logging/channels/MinerDataChannel.hpp
type Burst (line 26) | namespace Burst
class MinerData (line 28) | class MinerData
class MinerDataChannel (line 33) | class MinerDataChannel : public Poco::Channel
FILE: src/main.cpp
class SslInitializer (line 50) | class SslInitializer
class KeyConfigHandler (line 57) | class KeyConfigHandler: public Poco::Net::PrivateKeyPassphraseHandler
type Arguments (line 65) | struct Arguments
function main (line 81) | int main(const int argc, const char* argv[])
FILE: src/mining/Deadline.hpp
type Burst (line 32) | namespace Burst
class Deadlines (line 34) | class Deadlines
type LessThan (line 126) | struct LessThan : std::binary_function<std::shared_ptr<Deadline>, st...
class Account (line 35) | class Account
class BlockData (line 36) | class BlockData
class Deadline (line 38) | class Deadline : public std::enable_shared_from_this<Deadline>
method Deadline (line 44) | Deadline(const Deadline& other) = delete;
method Deadline (line 46) | Deadline& operator=(const Deadline& other) = delete;
class Deadlines (line 101) | class Deadlines
type LessThan (line 126) | struct LessThan : std::binary_function<std::shared_ptr<Deadline>, st...
FILE: src/mining/Miner.cpp
type Burst (line 38) | namespace Burst
type MinerHelper (line 40) | namespace MinerHelper
function createWorkerDefault (line 43) | void createWorkerDefault(std::unique_ptr<Poco::ThreadPool>& thread_p...
function createWorker (line 73) | void createWorker(std::unique_ptr<Poco::ThreadPool>& thread_pool, st...
function showProgress (line 677) | void showProgress(PlotReadProgress& progressRead, PlotReadProgress& pr...
type Burst (line 672) | namespace Burst
type MinerHelper (line 40) | namespace MinerHelper
function createWorkerDefault (line 43) | void createWorkerDefault(std::unique_ptr<Poco::ThreadPool>& thread_p...
function createWorker (line 73) | void createWorker(std::unique_ptr<Poco::ThreadPool>& thread_pool, st...
function showProgress (line 677) | void showProgress(PlotReadProgress& progressRead, PlotReadProgress& pr...
FILE: src/mining/Miner.hpp
type Poco (line 36) | namespace Poco
type Net (line 38) | namespace Net
class HTTPClientSession (line 40) | class HTTPClientSession
type Burst (line 44) | namespace Burst
class MinerConfig (line 46) | class MinerConfig
class PlotReadProgress (line 47) | class PlotReadProgress
class Deadline (line 48) | class Deadline
class Miner (line 50) | class Miner
FILE: src/mining/MinerCL.cpp
type Burst (line 30) | namespace Burst
type MinerCLHelper (line 33) | struct MinerCLHelper
method infoHelperFunc (line 36) | static auto infoHelperFunc(const TSubject& subject, std::string& inf...
function cl_command_queue (line 380) | cl_command_queue Burst::MinerCl::createCommandQueue()
function cl_context (line 399) | cl_context Burst::MinerCl::getContext() const
function cl_kernel (line 404) | cl_kernel Burst::MinerCl::getKernel_Calculate() const
function cl_kernel (line 409) | cl_kernel Burst::MinerCl::getKernel_GetMin() const
function cl_device_id (line 437) | const cl_device_id* Burst::MinerCl::getDeviceId() const
function cl_program (line 476) | cl_program Burst::MinerCl::getProgram() const
FILE: src/mining/MinerCL.hpp
type Burst (line 46) | namespace Burst
type ClDevice (line 48) | struct ClDevice
type ClPlatform (line 54) | struct ClPlatform
class MinerCl (line 68) | class MinerCl
FILE: src/mining/MinerConfig.cpp
function T (line 234) | T getOrAdd(Poco::JSON::Object::Ptr object, const std::string& key, T def...
function T (line 248) | T getOrAddExtract(Poco::JSON::Object::Ptr object, const std::string& key...
function uintmax_t (line 1101) | uintmax_t Burst::MinerConfig::getTotalPlotsize() const
FILE: src/mining/MinerConfig.hpp
type Poco (line 34) | namespace Poco
class File (line 36) | class File
type Burst (line 39) | namespace Burst
class PlotDir (line 41) | class PlotDir
class PlotFile (line 42) | class PlotFile
class MinerData (line 43) | class MinerData
type HostType (line 45) | enum class HostType
type TargetDeadlineType (line 54) | enum class TargetDeadlineType
type Passphrase (line 65) | struct Passphrase
type ReadConfigFileResult (line 101) | enum class ReadConfigFileResult
class MinerConfig (line 109) | class MinerConfig
FILE: src/mining/MinerData.hpp
type Burst (line 38) | namespace Burst
class MinerData (line 40) | class MinerData
class Accounts (line 41) | class Accounts
class Wallet (line 42) | class Wallet
class Account (line 43) | class Account
class BlockData (line 45) | class BlockData
type DeadlineSearchType (line 48) | enum class DeadlineSearchType
class DataLoader (line 102) | class DataLoader : public Poco::ActiveDispatcher
type HighscoreValue (line 144) | struct HighscoreValue
class MinerData (line 150) | class MinerData : public Poco::ActiveDispatcher
FILE: src/mining/WorkerList.hpp
type Burst (line 32) | namespace Burst
class WorkerList (line 35) | class WorkerList
method WorkerList (line 39) | WorkerList(Poco::Thread::Priority priority, size_t size, Args&&... a...
method stop (line 45) | void stop()
method size (line 54) | size_t size() const
method empty (line 59) | bool empty() const
type Worker (line 65) | struct Worker
method create (line 72) | bool create(Poco::Thread::Priority priority, Args&&... args)
FILE: src/network/NonceSubmitter.hpp
type Burst (line 28) | namespace Burst
class Miner (line 30) | class Miner
class Deadline (line 31) | class Deadline
class NonceSubmitter (line 33) | class NonceSubmitter : public Poco::Task
FILE: src/network/Request.hpp
type Poco (line 29) | namespace Poco {namespace Net {
type Net (line 29) | namespace Net {
class HTTPRequest (line 30) | class HTTPRequest
type Burst (line 33) | namespace Burst
class Deadline (line 41) | class Deadline
class Request (line 43) | class Request
method Request (line 47) | Request(const Request& rhs) = delete;
method Request (line 48) | Request(Request&& rhs) = default;
method Request (line 51) | Request& operator=(const Request& rhs) = delete;
method Request (line 52) | Request& operator=(Request&& rhs) = default;
class NonceRequest (line 63) | class NonceRequest
FILE: src/network/Response.hpp
type Burst (line 29) | namespace Burst
class Response (line 31) | class Response
method Response (line 35) | Response(const Response& rhs) = delete;
method Response (line 36) | Response(Response&& rhs) = default;
method Response (line 39) | Response& operator=(const Response& rhs) = delete;
method Response (line 40) | Response& operator=(Response&& rhs) = default;
type SubmitResponse (line 54) | enum class SubmitResponse
type NonceConfirmation (line 66) | struct NonceConfirmation
class NonceResponse (line 81) | class NonceResponse
class HttpResponse (line 97) | class HttpResponse
FILE: src/network/Url.hpp
type Poco (line 30) | namespace Poco { namespace Net
type Net (line 30) | namespace Net
class HTTPClientSession (line 32) | class HTTPClientSession
class HTTPSessionFactory (line 33) | class HTTPSessionFactory
type Burst (line 36) | namespace Burst
class Url (line 38) | class Url
method Url (line 41) | Url() = default;
FILE: src/nxt/nxt_address.h
function class (line 15) | class NxtAddress
FILE: src/plots/Plot.hpp
type Poco (line 28) | namespace Poco {
class File (line 29) | class File
type Burst (line 32) | namespace Burst
class PlotFile (line 39) | class PlotFile
class PlotDir (line 138) | class PlotDir
type Type (line 144) | enum class Type
FILE: src/plots/PlotGenerator.hpp
type Burst (line 33) | namespace Burst
class Miner (line 35) | class Miner
class MinerServer (line 36) | class MinerServer
class PlotGenerator (line 38) | class PlotGenerator
method generate (line 66) | static std::array<std::vector<char>, TShabal::HashSize> generate(con...
method calculateDeadline (line 134) | static std::array<Poco::UInt64, TShabal::HashSize> calculateDeadline...
method convertToPoC2 (line 170) | static void convertToPoC2(TContainer& container)
type PlotGeneratorOperations1 (line 188) | struct PlotGeneratorOperations1
method update (line 191) | static void update(TShabal& shabal, const TContainer& container, con...
method close (line 197) | static void close(TShabal& shabal, const TContainer& container)
type PlotGeneratorOperations4 (line 204) | struct PlotGeneratorOperations4
method update (line 207) | static void update(TShabal& shabal, const TContainer& container, con...
method close (line 213) | static void close(TShabal& shabal, const TContainer& container)
type PlotGeneratorOperations8 (line 220) | struct PlotGeneratorOperations8
method update (line 223) | static void update(TShabal& shabal, const TContainer& container, con...
method close (line 230) | static void close(TShabal& shabal, const TContainer& container)
FILE: src/plots/PlotReader.cpp
function uintmax_t (line 426) | uintmax_t Burst::PlotReadProgress::getValue() const
FILE: src/plots/PlotReader.hpp
type Poco (line 38) | namespace Poco
class NotificationQueue (line 40) | class NotificationQueue
type Burst (line 43) | namespace Burst
class MinerData (line 45) | class MinerData
class PlotReadProgress (line 46) | class PlotReadProgress
class GlobalBufferSize (line 48) | class GlobalBufferSize
type PlotReadNotification (line 66) | struct PlotReadNotification : Poco::Notification
class PlotReader (line 80) | class PlotReader : public Poco::Task
class PlotReadProgress (line 99) | class PlotReadProgress
class PlotReadProgressGuard (line 118) | class PlotReadProgressGuard
FILE: src/plots/PlotSizes.hpp
type Burst (line 28) | namespace Burst
class PlotSizes (line 30) | class PlotSizes
type Type (line 33) | enum class Type
type HistoricalPlotSize (line 81) | struct HistoricalPlotSize
FILE: src/plots/PlotVerifier.hpp
type Burst (line 38) | namespace Burst
class PlotReadProgressGuard (line 40) | class PlotReadProgressGuard
type VerifyNotification (line 42) | struct VerifyNotification : Poco::Notification
class PlotVerifier (line 62) | class PlotVerifier : public Poco::Task
type PlotVerifierOperations1 (line 153) | struct PlotVerifierOperations1
method update (line 155) | static void update(TShabal& shabal, const ScoopData* buffer, const s...
method close (line 162) | static void close(TShabal& shabal, TContainer& targets, const size_t...
type PlotVerifierOperations4 (line 169) | struct PlotVerifierOperations4
method update (line 171) | static void update(TShabal& shabal, const ScoopData* buffer, const s...
method close (line 181) | static void close(TShabal& shabal, TContainer& targets, const size_t...
type PlotVerifierOperations8 (line 192) | struct PlotVerifierOperations8
method update (line 194) | static void update(TShabal& shabal, const ScoopData* buffer, const s...
method close (line 208) | static void close(TShabal& shabal, TContainer& targets, const size_t...
type PlotVerifierAlgorithmCpu (line 222) | struct PlotVerifierAlgorithmCpu
method initStream (line 224) | static bool initStream(void** stream)
method DeadlineTuple (line 230) | static DeadlineTuple run(ScoopData* buffer, const size_t size, const...
type PlotVerifierAlgorithm_gpu (line 247) | struct PlotVerifierAlgorithm_gpu
method initStream (line 249) | static bool initStream(void** stream)
method DeadlineTuple (line 254) | static DeadlineTuple run(ScoopData* buffer, size_t size, Poco::UInt6...
FILE: src/shabal/MinerShabal.hpp
type Burst (line 32) | namespace Burst
class Shabal256Shell (line 35) | class Shabal256Shell
method Shabal256Shell (line 40) | Shabal256Shell()
method update (line 46) | void update(Args&&... args)
method update (line 51) | void update(Poco::UInt64 singleValue)
method close (line 58) | void close(Args&&... args)
FILE: src/shabal/impl/mshabal_avx2_impl.hpp
type Burst (line 26) | namespace Burst
type MshabalAvx2Impl (line 28) | struct MshabalAvx2Impl
method init (line 34) | static void init(context_t& context)
method update (line 39) | static void update(context_t& context, const void* data, size_t length)
method update (line 44) | static void update(context_t& context,
method close (line 52) | static void close(context_t& context, void* output)
method close (line 58) | static void close(context_t& context,
function avx2_mshabal_init (line 69) | inline void avx2_mshabal_init(mshabal256_context* sc, unsigned out_size) {}
function avx2_mshabal (line 71) | inline void avx2_mshabal(mshabal256_context* sc, const void* data0, cons...
function avx2_mshabal_close (line 74) | inline void avx2_mshabal_close(mshabal256_context* sc, unsigned ub0, uns...
FILE: src/shabal/impl/mshabal_avx_impl.hpp
type Burst (line 26) | namespace Burst
type MshabalAvxImpl (line 28) | struct MshabalAvxImpl
method init (line 34) | static void init(context_t& context)
method update (line 39) | static void update(context_t& context, const void* data, size_t length)
method update (line 44) | static void update(context_t& context,
method close (line 51) | static void close(context_t& context, void* output)
method close (line 56) | static void close(context_t& context,
function avx1_mshabal_init (line 65) | inline void avx1_mshabal_init(mshabal_context* sc, unsigned out_size) {}
function avx1_mshabal (line 67) | inline void avx1_mshabal(mshabal_context* sc, const void* data0, const v...
function avx1_mshabal_close (line 70) | inline void avx1_mshabal_close(mshabal_context* sc, unsigned ub0, unsign...
FILE: src/shabal/impl/mshabal_sse4_impl.hpp
type Burst (line 26) | namespace Burst
type MshabalSse4Impl (line 28) | struct MshabalSse4Impl
method init (line 34) | static void init(context_t& context)
method update (line 39) | static void update(context_t& context, const void* data, size_t length)
method update (line 44) | static void update(context_t& context,
method close (line 51) | static void close(context_t& context, void* output)
method close (line 56) | static void close(context_t& context,
function sse4_mshabal_init (line 65) | inline void sse4_mshabal_init(mshabal_context *sc, unsigned out_size) {}
function sse4_mshabal (line 67) | inline void sse4_mshabal(mshabal_context *sc, const void *data0, const v...
function sse4_mshabal_close (line 69) | inline void sse4_mshabal_close(mshabal_context* sc, unsigned ub0, unsign...
FILE: src/shabal/impl/sphlib_impl.hpp
type Burst (line 26) | namespace Burst
type SphlibImpl (line 28) | struct SphlibImpl
method init (line 34) | static void init(context_t& context)
method update (line 39) | static void update(context_t& context, const void* data, size_t length)
method close (line 44) | static void close(context_t& context, void* out)
FILE: src/shabal/mshabal/mshabal.h
type mshabal_u32 (line 72) | typedef uint32_t mshabal_u32;
type uint_fast32_t (line 74) | typedef uint_fast32_t mshabal_u32;
type mshabal_u32 (line 78) | typedef unsigned int mshabal_u32;
type mshabal256_u32 (line 79) | typedef unsigned int mshabal256_u32;
type mshabal_u32 (line 81) | typedef unsigned long mshabal_u32;
type mshabal256_u32 (line 82) | typedef unsigned long mshabal256_u32;
type mshabal_context (line 93) | typedef struct {
type mshabal256_context (line 109) | typedef struct {
FILE: src/shabal/mshabal/mshabal_avx1.cpp
function avx1_mshabal_compress (line 39) | static void
function avx1_mshabal_init (line 231) | void
function avx1_mshabal (line 270) | void
function avx1_mshabal_close (line 346) | void
FILE: src/shabal/mshabal/mshabal_avx2.cpp
function mshabal256_compress (line 39) | static void
function avx2_mshabal_init (line 242) | void
function avx2_mshabal (line 301) | void
function avx2_mshabal_close (line 439) | void
FILE: src/shabal/mshabal/mshabal_sse4.cpp
function sse4_mshabal_compress (line 39) | static void
function sse4_mshabal_init (line 231) | void
function sse4_mshabal (line 270) | void
function sse4_mshabal_close (line 346) | void
FILE: src/shabal/sphlib/sph_shabal.cpp
function shabal_init (line 489) | void shabal_init(void *cc, unsigned size)
function shabal_core (line 536) | void shabal_core(void *cc, const unsigned char *data, size_t len)
function shabal_close (line 586) | static void
function sph_shabal192_init (line 660) | void
function sph_shabal192 (line 667) | void
function sph_shabal192_close (line 674) | void
function sph_shabal192_addbits_and_close (line 681) | void
function sph_shabal224_init (line 688) | void
function sph_shabal224 (line 695) | void
function sph_shabal224_close (line 702) | void
function sph_shabal224_addbits_and_close (line 709) | void
function sph_shabal256_init (line 716) | void
function sph_shabal256 (line 723) | void
function sph_shabal256_close (line 730) | void
function sph_shabal256_addbits_and_close (line 737) | void
function sph_shabal384_init (line 744) | void
function sph_shabal384 (line 751) | void
function sph_shabal384_close (line 758) | void
function sph_shabal384_addbits_and_close (line 765) | void
function sph_shabal512_init (line 772) | void
function sph_shabal512 (line 779) | void
function sph_shabal512_close (line 786) | void
function sph_shabal512_addbits_and_close (line 793) | void
FILE: src/shabal/sphlib/sph_shabal.h
type sph_shabal_context (line 77) | typedef struct {
type sph_shabal_context (line 89) | typedef sph_shabal_context sph_shabal192_context;
type sph_shabal_context (line 94) | typedef sph_shabal_context sph_shabal224_context;
type sph_shabal_context (line 99) | typedef sph_shabal_context sph_shabal256_context;
type sph_shabal_context (line 104) | typedef sph_shabal_context sph_shabal384_context;
type sph_shabal_context (line 109) | typedef sph_shabal_context sph_shabal512_context;
FILE: src/shabal/sphlib/sph_types.h
type __arch_dependant__ (line 384) | typedef __arch_dependant__ sph_u32;
type __arch_dependant__ (line 390) | typedef __arch_dependant__ sph_s32;
type __arch_dependant__ (line 402) | typedef __arch_dependant__ sph_u64;
type __arch_dependant__ (line 408) | typedef __arch_dependant__ sph_s64;
type sph_u32 (line 830) | typedef uint32_t sph_u32;
type sph_s32 (line 831) | typedef int32_t sph_s32;
type uint_fast32_t (line 833) | typedef uint_fast32_t sph_u32;
type int_fast32_t (line 834) | typedef int_fast32_t sph_s32;
type Poco (line 838) | typedef Poco::UInt64 sph_u64;
type sph_s64 (line 839) | typedef int64_t sph_s64;
type uint_fast64_t (line 841) | typedef uint_fast64_t sph_u64;
type int_fast64_t (line 842) | typedef int_fast64_t sph_s64;
type sph_u32 (line 863) | typedef unsigned int sph_u32;
type sph_s32 (line 864) | typedef int sph_s32;
type sph_u32 (line 870) | typedef unsigned long sph_u32;
type sph_s32 (line 871) | typedef long sph_s32;
type sph_u64 (line 889) | typedef unsigned long sph_u64;
type sph_s64 (line 890) | typedef long sph_s64;
type sph_u64 (line 898) | typedef unsigned long long sph_u64;
type sph_s64 (line 899) | typedef long long sph_s64;
function SPH_INLINE (line 1187) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1196) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1212) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1221) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1265) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1282) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1332) | static SPH_INLINE void
function sph_dec16be (line 1339) | static SPH_INLINE unsigned
function SPH_INLINE (line 1346) | static SPH_INLINE void
function sph_dec16le (line 1353) | static SPH_INLINE unsigned
function SPH_INLINE (line 1366) | static SPH_INLINE void
function SPH_INLINE (line 1403) | static SPH_INLINE void
function SPH_INLINE (line 1424) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1463) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1484) | static SPH_INLINE void
function SPH_INLINE (line 1521) | static SPH_INLINE void
function SPH_INLINE (line 1542) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1614) | static SPH_INLINE sph_u32
function SPH_INLINE (line 1653) | static SPH_INLINE void
function SPH_INLINE (line 1698) | static SPH_INLINE void
function SPH_INLINE (line 1723) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1770) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1795) | static SPH_INLINE void
function SPH_INLINE (line 1840) | static SPH_INLINE void
function SPH_INLINE (line 1865) | static SPH_INLINE sph_u64
function SPH_INLINE (line 1934) | static SPH_INLINE sph_u64
FILE: src/wallet/Account.cpp
type DefaultValueHolder (line 66) | struct DefaultValueHolder
function T (line 75) | const T& getHelper(Poco::Nullable<T>& val, const Burst::Wallet* wallet, ...
FILE: src/wallet/Account.hpp
type Burst (line 33) | namespace Burst
class Wallet (line 35) | class Wallet
class Account (line 39) | class Account
class DataLoader (line 61) | class DataLoader : public Poco::ActiveDispatcher
class Accounts (line 90) | class Accounts
FILE: src/wallet/Wallet.hpp
type Poco (line 29) | namespace Poco
class URI (line 31) | class URI
type Net (line 33) | namespace Net
class HTTPClientSession (line 35) | class HTTPClientSession
type Burst (line 39) | namespace Burst
class Account (line 41) | class Account
class Url (line 42) | class Url
class Wallet (line 46) | class Wallet
method Wallet (line 51) | Wallet(const Wallet& rhs) = delete;
method Wallet (line 52) | Wallet(Wallet&& rhs) = default;
method Wallet (line 64) | Wallet& operator=(const Wallet& rhs) = delete;
method Wallet (line 65) | Wallet& operator=(Wallet&& rhs) = default;
FILE: src/webserver/MinerServer.cpp
function HTTPRequestHandler (line 214) | HTTPRequestHandler* Burst::MinerServer::RequestFactory::createRequestHan...
FILE: src/webserver/MinerServer.hpp
type Poco (line 28) | namespace Poco
class Notification (line 30) | class Notification
type Net (line 32) | namespace Net
class HTTPServer (line 34) | class HTTPServer
class WebSocket (line 35) | class WebSocket
type JSON (line 38) | namespace JSON
class Object (line 40) | class Object
type Burst (line 44) | namespace Burst
class Miner (line 46) | class Miner
type BlockDataChangedNotification (line 47) | struct BlockDataChangedNotification
class MinerData (line 48) | class MinerData
class MinerServer (line 50) | class MinerServer
type RequestFactory (line 77) | struct RequestFactory : Poco::Net::HTTPRequestHandlerFactory
FILE: src/webserver/RequestHandler.cpp
type Burst (line 344) | namespace Burst
function clearAuthCookies (line 346) | void clearAuthCookies(Poco::Net::HTTPServerResponse& response)
FILE: src/webserver/RequestHandler.hpp
type Poco (line 33) | namespace Poco
type JSON (line 35) | namespace JSON
class Object (line 37) | class Object
type Net (line 40) | namespace Net
class HTTPServerRequest (line 42) | class HTTPServerRequest
type Burst (line 46) | namespace Burst
class Miner (line 48) | class Miner
class MinerServer (line 49) | class MinerServer
type TemplateVariables (line 57) | struct TemplateVariables
method TemplateVariables (line 62) | TemplateVariables() = default;
type RequestHandler (line 74) | namespace RequestHandler
class LambdaRequestHandler (line 79) | class LambdaRequestHandler : public Poco::Net::HTTPRequestHandler
class WebsocketRequestHandler (line 107) | class WebsocketRequestHandler : public Poco::Net::HTTPRequestHandler
Condensed preview — 128 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,557K chars).
[
{
"path": ".appveyor.yml",
"chars": 4094,
"preview": "# Notes:\n# - Minimal appveyor.yml file is an empty file. All sections are optional.\n# - Indent each level of configu"
},
{
"path": ".gitignore",
"chars": 6901,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": ".travis.yml",
"chars": 9284,
"preview": "language: cpp\nbefore_install:\n- eval \"${MATRIX_EVAL}\"\nmatrix:\n fast_finish: true\n include:\n - os: osx\n sudo: false"
},
{
"path": "CMakeLists.txt",
"chars": 10079,
"preview": "##################################################################\n# Project and CMake settings\n########################"
},
{
"path": "ISSUE_TEMPLATE.md",
"chars": 1030,
"preview": "Before submitting your issue, please review the following checklist:\n\n- [ ] **AVOID** using the issue tracker for questi"
},
{
"path": "LICENSE.md",
"chars": 35121,
"preview": "GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation,"
},
{
"path": "README.md",
"chars": 2510,
"preview": " <img align=\"right\" src=\"https://i.imgur.com/KsPZaKu.png\">\n \ncreepMiner [\n{\n ech"
},
{
"path": "resources/install_deps_conan.bat",
"chars": 266,
"preview": "cd ..\nconan install . --build=missing -o Poco:shared=False -o OpenSSL:shared=False -o zlib:shared=False -if conan/debug "
},
{
"path": "resources/install_deps_conan.sh",
"chars": 206,
"preview": "#!/bin/sh\ncd ..\nconan install . --build=missing -s compiler.libcxx=libstdc++11 -if conan/debug -s build_type=Debug\nconan"
},
{
"path": "resources/install_deps_conan_mint.sh",
"chars": 151,
"preview": "#!/bin/sh\nsudo apt install python-pip\npip install --upgrade pip\nsudo apt install python-setuptools\npip install conan --u"
},
{
"path": "resources/public/block.html",
"chars": 17248,
"preview": "<div class=\"row bs-component\">\r\n <!-- current block -->\r\n <div class=\"col-lg-4\" style=\"margin:0;padding:0\">\r\n "
},
{
"path": "resources/public/index.html",
"chars": 19552,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE="
},
{
"path": "resources/public/js/block.js",
"chars": 35827,
"preview": "var MasterMiner = 'false';\nclass Deadline {\n constructor(deadline) {\n this.accountName = deadline[\"account\"];\n"
},
{
"path": "resources/public/js/general.js",
"chars": 9608,
"preview": "var websocket;\nvar servername = 'creepMiner';\nvar MasterMiner = 'false';\nvar container = 'false'\nvar loggers = [\n\t[\"mine"
},
{
"path": "resources/public/js/plotfiles.js",
"chars": 15154,
"preview": "var plotDirList = $(\"#plotDirList\");\nvar plotFileDiv = $(\"#plotFileDiv\");\nvar plotDirElements = [];\n\nvar activePlotDir ="
},
{
"path": "resources/public/js/settings.js",
"chars": 3868,
"preview": "var logSetting = {};\n\nfunction update_settings(config) {\n mining_info_url.val(config['miningInfoUrl'] + ':' + config["
},
{
"path": "resources/public/login.html",
"chars": 1557,
"preview": "<div class=\"login-container\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"text-center "
},
{
"path": "resources/public/plotfiles.html",
"chars": 3180,
"preview": "<!-- Modal -->\n<div class=\"modal fade\" id=\"checkAllModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"checkAllModalLabe"
},
{
"path": "resources/public/settings.html",
"chars": 8588,
"preview": "<div class=\"row bs-component\">\n <div class=\"col-md-6\">\n <div class=\"card mb-12\">\n <h4 class=\"card-h"
},
{
"path": "resources/run.sh",
"chars": 156,
"preview": "#!/bin/sh\nLD_LIBRARY_PATH=$LD_LIBRARY_PATH:lib:/usr/local/lib:$(pwd):$(pwd)/../lib\nexport LD_LIBRARY_PATH\nexport LC_ALL="
},
{
"path": "resources/screen.sh",
"chars": 60,
"preview": "#!/bin/sh \ncd \"$(dirname \"$0\")\" \nscreen -dmS creep ./run.sh\n"
},
{
"path": "resources/settingsui/App.xaml",
"chars": 978,
"preview": "<Application x:Class=\"ConfigEditor.App\"\r\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\""
},
{
"path": "resources/settingsui/App.xaml.cs",
"chars": 181,
"preview": "using System.Windows;\r\n\r\nnamespace ConfigEditor\r\n{\r\n\t/// <summary>\r\n\t/// Interaction logic for App.xaml\r\n\t/// </summary"
},
{
"path": "resources/settingsui/ConfigEditor.csproj",
"chars": 6591,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "resources/settingsui/MainWindow.xaml",
"chars": 10950,
"preview": "<Controls:MetroWindow x:Class=\"ConfigEditor.MainWindow\"\r\n xmlns=\"http://schemas.microsoft.com/winf"
},
{
"path": "resources/settingsui/MainWindow.xaml.cs",
"chars": 15082,
"preview": "using ConfigEditor.Models;\r\nusing Newtonsoft.Json;\r\nusing Newtonsoft.Json.Linq;\r\nusing System.Collections.ObjectModel;\r"
},
{
"path": "resources/settingsui/Models/Base.cs",
"chars": 465,
"preview": "using System.ComponentModel;\r\n\r\nnamespace ConfigEditor.Models\r\n{\r\n\tpublic class Base\r\n {\r\n private string nam"
},
{
"path": "resources/settingsui/Properties/AssemblyInfo.cs",
"chars": 636,
"preview": "using System.Reflection;\r\nusing System.Runtime.InteropServices;\r\nusing System.Windows;\r\n\r\n[assembly: AssemblyTitle(\"Con"
},
{
"path": "resources/settingsui/Properties/Resources.Designer.cs",
"chars": 2162,
"preview": "namespace ConfigEditor.Properties { \r\n \r\n /// <summary>\r\n /// A strongly-typed resource class, for lookin"
},
{
"path": "resources/settingsui/Properties/Resources.resx",
"chars": 5610,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n <!-- \r\n Microsoft ResX Schema \r\n \r\n Version 2.0\r\n \r\n T"
},
{
"path": "resources/settingsui/Properties/Settings.Designer.cs",
"chars": 686,
"preview": "namespace ConfigEditor.Properties {\r\n \r\n \r\n [global::System.Runtime.CompilerServices.CompilerGeneratedAttribut"
},
{
"path": "resources/settingsui/Properties/Settings.settings",
"chars": 199,
"preview": "<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"uri:settings\" CurrentProfile=\"(Default)\">\r\n <Profiles>\r\n "
},
{
"path": "resources/settingsui/app.config",
"chars": 161,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Ve"
},
{
"path": "resources/settingsui/packages.config",
"chars": 288,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"ControlzEx\" version=\"3.0.2.4\" targetFramework=\"net40"
},
{
"path": "src/Declarations.cpp",
"chars": 5732,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/Declarations.hpp",
"chars": 3631,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/MinerUtil.cpp",
"chars": 37325,
"preview": "// ==========================================================================\r\n// \r\n// creepMiner - Burstcoin cryptocurr"
},
{
"path": "src/MinerUtil.hpp",
"chars": 6650,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/extlibs/json.hpp",
"chars": 438190,
"preview": "/*\n __ _____ _____ _____\n __| | __| | | | JSON for Modern C++\n| | |__ | | | | | | version 2.1.1\n|___"
},
{
"path": "src/gpu/algorithm/gpu_algorithm_atomic.hpp",
"chars": 3179,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/gpu/gpu_algorithm_shell.hpp",
"chars": 1333,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/gpu/gpu_declarations.hpp",
"chars": 273,
"preview": "#pragma once\n\n#include <Poco/Types.h>\n\nnamespace Burst\n{\n\tstruct CalculatedDeadline\n\t{\n\t\tPoco::UInt64 deadline;\n\t\tPoco::"
},
{
"path": "src/gpu/gpu_shell.hpp",
"chars": 5562,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/gpu/impl/gpu_cuda_impl.cpp",
"chars": 4626,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/gpu/impl/gpu_cuda_impl.hpp",
"chars": 911,
"preview": "#pragma once\n\n#include <utility>\n#include <Poco/Types.h>\n#include \"gpu/gpu_declarations.hpp\"\n#include \"mining/MinerData."
},
{
"path": "src/gpu/impl/gpu_opencl_impl.cpp",
"chars": 11906,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/gpu/impl/gpu_opencl_impl.hpp",
"chars": 1912,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Console.cpp",
"chars": 7844,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Console.hpp",
"chars": 7840,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Message.cpp",
"chars": 5502,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Message.hpp",
"chars": 13612,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/MinerLogger.cpp",
"chars": 14797,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/MinerLogger.hpp",
"chars": 5191,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Output.cpp",
"chars": 2372,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/Output.hpp",
"chars": 2520,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/logging/ProgressPrinter.cpp",
"chars": 4470,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/logging/ProgressPrinter.hpp",
"chars": 2912,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/channels/ColoredPriorityConsoleChannel.cpp",
"chars": 2285,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/channels/ColoredPriorityConsoleChannel.hpp",
"chars": 2131,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/channels/MinerDataChannel.cpp",
"chars": 1842,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/logging/channels/MinerDataChannel.hpp",
"chars": 2159,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/main.cpp",
"chars": 11535,
"preview": "// ==========================================================================\n//\n// creepMiner - Burstcoin cryptocurrenc"
},
{
"path": "src/mining/Deadline.cpp",
"chars": 10818,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/mining/Deadline.hpp",
"chars": 4648,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/mining/Miner.cpp",
"chars": 29934,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/mining/Miner.hpp",
"chars": 3715,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/mining/MinerCL.cpp",
"chars": 12594,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/mining/MinerCL.hpp",
"chars": 3031,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/mining/MinerConfig.cpp",
"chars": 59545,
"preview": "// ==========================================================================\n//\n// creepMiner - Burstcoin cryptocurrenc"
},
{
"path": "src/mining/MinerConfig.hpp",
"chars": 11633,
"preview": "// ==========================================================================\n//\n// creepMiner - Burstcoin cryptocurrenc"
},
{
"path": "src/mining/MinerData.cpp",
"chars": 31207,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/mining/MinerData.hpp",
"chars": 7232,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/mining/WorkerList.hpp",
"chars": 2270,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/NonceSubmitter.cpp",
"chars": 8008,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/NonceSubmitter.hpp",
"chars": 1541,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Request.cpp",
"chars": 4022,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Request.hpp",
"chars": 2186,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Response.cpp",
"chars": 8566,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Response.hpp",
"chars": 3502,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Url.cpp",
"chars": 2859,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/network/Url.hpp",
"chars": 1717,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/nxt/nxt_address.cpp",
"chars": 3383,
"preview": "//\n// nxt_address.cpp\n// cryptoport-miner\n//\n// Created by Uray Meiviar on 9/19/14.\n// Copyright (c) 2014 Miner. All"
},
{
"path": "src/nxt/nxt_address.h",
"chars": 711,
"preview": "/*\n\tBasic NXT address (without error correction).\n\n\tMore info: http://wiki.nxtcrypto.org/wiki/New_Address_Format\n\n Ve"
},
{
"path": "src/plots/Plot.cpp",
"chars": 8948,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/plots/Plot.hpp",
"chars": 7745,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/plots/PlotGenerator.cpp",
"chars": 11022,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/PlotGenerator.hpp",
"chars": 7906,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/PlotReader.cpp",
"chars": 15321,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/plots/PlotReader.hpp",
"chars": 3514,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/plots/PlotSizes.cpp",
"chars": 3057,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/PlotSizes.hpp",
"chars": 2781,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/PlotVerifier.cpp",
"chars": 1034,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/PlotVerifier.hpp",
"chars": 11782,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/plots/libShabal.h",
"chars": 493,
"preview": "#include <cstdarg>\n#include <cstdint>\n#include <cstdlib>\n\nextern \"C\" {\n\nuint64_t shabal_findBestDeadline(const char *sco"
},
{
"path": "src/resources.rc",
"chars": 59,
"preview": "MAINICON ICON DISCARDABLE \"../resources/public/favicon.ico\""
},
{
"path": "src/shabal/MinerShabal.cpp",
"chars": 1032,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/MinerShabal.hpp",
"chars": 2133,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/cuda/Shabal.cu",
"chars": 19601,
"preview": "/* $Id: shabal.c 175 2010-05-07 16:03:20Z tp $ */\n/*\n* Shabal implementation.\n*\n* ==========================(LICENSE BEG"
},
{
"path": "src/shabal/cuda/Shabal.hpp",
"chars": 2043,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/impl/mshabal_avx2_impl.hpp",
"chars": 2997,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/impl/mshabal_avx_impl.hpp",
"chars": 2417,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/impl/mshabal_sse4_impl.hpp",
"chars": 2365,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/impl/sphlib_impl.hpp",
"chars": 1493,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurren"
},
{
"path": "src/shabal/mshabal/mshabal.h",
"chars": 11326,
"preview": "/*\n* A parallel implementation of Shabal, for platforms with SSE2.\n*\n* This is the header file for an implementation of "
},
{
"path": "src/shabal/mshabal/mshabal_avx1.cpp",
"chars": 13583,
"preview": "/*\n* Parallel implementation of Shabal, using the SSE2 unit. This code\n* compiles and runs on x86 architectures, in 32-b"
},
{
"path": "src/shabal/mshabal/mshabal_avx2.cpp",
"chars": 18238,
"preview": "/*\n* Parallel implementation of Shabal, using the SSE2 unit. This code\n* compiles and runs on x86 architectures, in 32-b"
},
{
"path": "src/shabal/mshabal/mshabal_sse4.cpp",
"chars": 13607,
"preview": "/*\n* Parallel implementation of Shabal, using the SSE2 unit. This code\n* compiles and runs on x86 architectures, in 32-b"
},
{
"path": "src/shabal/opencl/mining.cl",
"chars": 18284,
"preview": "/*\n* The MIT License (MIT)\n*\n* Copyright (c) 2016 by luxe - https://github.com/de-luxe - BURST-LUXE-RED2-G6JW-H4HG5\n*\n* "
},
{
"path": "src/shabal/sphlib/sph_shabal.cpp",
"chars": 21542,
"preview": "/* $Id: shabal.c 175 2010-05-07 16:03:20Z tp $ */\n/*\n * Shabal implementation.\n *\n * ==========================(LICENSE "
},
{
"path": "src/shabal/sphlib/sph_shabal.h",
"chars": 11259,
"preview": "/* $Id: sph_shabal.h 175 2010-05-07 16:03:20Z tp $ */\n/**\n * Shabal interface. Shabal is a family of functions which dif"
},
{
"path": "src/shabal/sphlib/sph_types.h",
"chars": 66240,
"preview": "/* $Id: sph_types.h 260 2011-07-21 01:02:38Z tp $ */\n/**\n * Basic type definitions.\n *\n * This header file defines the g"
},
{
"path": "src/wallet/Account.cpp",
"chars": 7136,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/wallet/Account.hpp",
"chars": 3287,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/wallet/Wallet.cpp",
"chars": 6238,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/wallet/Wallet.hpp",
"chars": 2075,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/webserver/MinerServer.cpp",
"chars": 12607,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/webserver/MinerServer.hpp",
"chars": 2299,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/webserver/RequestHandler.cpp",
"chars": 31793,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "src/webserver/RequestHandler.hpp",
"chars": 12000,
"preview": "// ==========================================================================\n// \n// creepMiner - Burstcoin cryptocurre"
},
{
"path": "version.id",
"chars": 15,
"preview": "version:1.9.0.0"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the Creepsky/creepMiner GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 128 files (1.4 MB), approximately 400.6k tokens, and a symbol index with 1008 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.