mirror of
https://github.com/osmarks/random-stuff
synced 2025-04-28 13:13:10 +00:00
add more things???
This commit is contained in:
parent
34bffb4f85
commit
19e50a1186
113
CookieEnterKeyPresser.py
Executable file
113
CookieEnterKeyPresser.py
Executable file
@ -0,0 +1,113 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
"""Lets you collect cookies"""
|
||||||
|
|
||||||
|
import multiprocessing as mp
|
||||||
|
import collections
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
big_cookie = """
|
||||||
|
WNXXXXXNWW
|
||||||
|
WNNXK0OkkOO0OOO000KXXNNW
|
||||||
|
WN0O0O0kOOOO000OOkOOkOKK0OkO0N
|
||||||
|
N0kkOkdxxkkOOOOkkxkxddxkkkOK0kxk0KKXXNW
|
||||||
|
XkOOkxddkxkkOOkkkloddoodl;.;x0koOkdodxdddxk0XW
|
||||||
|
WK0O0OkdokkkOkdddl:ooodxdkxoloc:lkx000kdo;..,,,dON
|
||||||
|
Xxx:l0OkdkO0Okkxxdc::dkO0000OxxxdxoodOkdO00o';cd. :xk0N
|
||||||
|
XkOd'cxxkO0kdc.. .. .:llkOkxdolododdxkOOkkOOOOo:' coodx0NW
|
||||||
|
WXKOO00OkkkxkOd' .cko:;':cdxdddoolllooooocclloooddkklxxoodxkO0X
|
||||||
|
WKkOOkkoddxxkkkOko...lkk,.;ooooolllcc;::lllc:cclc:lloddxxkkkxooxddK
|
||||||
|
XOOkkxdokddoddxxxkOo;'...,dOkxxkdc,..;ooccccclc,..ll:;:;:ookOOkdxxxxK
|
||||||
|
NOkOOxdolodoodddoddlxxdo:dOkOxkko....';ldxxdoxxOk.:kc:lxdc:oxdcddl::xk0W
|
||||||
|
Nkkxkkxdll:cocc:ool::l;;lxkkxkkdll:'.'oxx:k000Kkkk. ...;.cdxkkxxx:. 'dx0
|
||||||
|
NkkxdddoolcooddxocdxxkodO00kxkOk'..lol,..:;;kkkkOdO; . 'lxko,. .lddX
|
||||||
|
KxxxxdddddxxdoxkxdkOOOOOO0Odlxkk;.. 'lc:;,::xkxoxxkO. .''.;dkxo,.. ..,lodk
|
||||||
|
Oxxxxxxxolc'. ckcdxkkOOOOxl'cOkx:. ;oolcdkxoldk0000x'oxol:dkkllol'';odddddX
|
||||||
|
Nxxxdxxxdoc:;,. .l:ooxdxkxxxkkk00kdc:c:odxkkk0Ooxkkkxkkk0Okkxxdxkxl:odxdddddK 1
|
||||||
|
KxdxxxxkkkkckkxkkOOx:dddxxddxo:,cldxxxdodxxkOOOl:clllodxxdkxddxdooccodxdooodxW
|
||||||
|
Xdoloxxoxkkdlc:;,oxx:cddddddoccllxxxdddlxkkkxdddo:cllloodxldkOOOolxxdooolloolX
|
||||||
|
kddoddodxdxxxkkocxkx:,loododxcc:;,,ldlcxxxdooooclcllloddxkxokOO;.'lxdxxxolclK
|
||||||
|
0dddxxx:dkxxokkkkkkOk::xdddll:. .:. .okxdoooooooooolloloddOOxxl. 'ooddddollN
|
||||||
|
Nxdolddl;OOxlxxxxdxxd:cxxkxlc;. .. . .lllo:cll;.:xkxdlcooxxxxdd,. ;dodoloolk
|
||||||
|
XddoldocxOklldddoddlclddxolkOx' :cloc;: .';'oxdddododooooc..cddxlloolX
|
||||||
|
Oddlololxkklcddddo;ccc:::.oxo:. .;lcoxxl .dxxoooodooll;;;;:ooooooo
|
||||||
|
XOdclxxdxooloolollkkkoddc:ooc:okkxdloxk; ..odooodoodxxdcllll:clooo0
|
||||||
|
0odxdlo:odddllcxOkocllclxkOOkkxkxdodxxl' .'ldoooo:;;,:lc;ddddoooolO
|
||||||
|
Nxodddddddxxldlokxc;;,xkxdddxxxkxxxdddkko,:::cclodo.... . ;dddlcllcX
|
||||||
|
Nlloxol;llc::;,;.',cooddodooddxkxxdo:clllcloc;coodo. ..,ldxollolcx
|
||||||
|
K......:;,ld,.. 'ooododoooodddoc,;coooodxl:;;:cllcclooooooolollW
|
||||||
|
0' ...;.;okxxxlcdOkdl:clooooolddddoooddlclodl::ccllccodoolooll,k
|
||||||
|
Wxlddxoxxdolldddxxxdlcclllol:l,. . .;ccllll::cc:;::ccoddooo;x
|
||||||
|
Wdoxxdool::::ccccclodxddxd; ,olllcclcccclooxdoolccdW
|
||||||
|
W0oloddodooclodxxxooddxxxd;. . .:c:;::cooooooccoollox0W
|
||||||
|
0occlolcloodxddxdooooddkkc,,.okdlclooodlcddlccclxX
|
||||||
|
Xkocc::::cllodoooolcc:ccllcccoooooddxo,,':coON
|
||||||
|
XOdclclcc:llcllolc:;;cllooooddldooooxk0X
|
||||||
|
NK0kdlcc:::ccc:clcllllcooooclx0XW
|
||||||
|
WNXXKOxoc;:cccccccldOKW
|
||||||
|
NOOddkOXW
|
||||||
|
"""
|
||||||
|
|
||||||
|
little_cookie = """
|
||||||
|
╱───╲
|
||||||
|
╱○ ○ ╲
|
||||||
|
│ ○ ○ │
|
||||||
|
╲ ○ ○ ╱
|
||||||
|
╲───╱
|
||||||
|
"""
|
||||||
|
|
||||||
|
def say_cookies(num):
|
||||||
|
if num == 1:
|
||||||
|
return "cookie"
|
||||||
|
else:
|
||||||
|
return "cookies"
|
||||||
|
|
||||||
|
def save(obj, name):
|
||||||
|
with open(name, "wb") as f:
|
||||||
|
pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL)
|
||||||
|
|
||||||
|
def load(name):
|
||||||
|
with open(name, "rb") as f:
|
||||||
|
return pickle.load(f)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
state = {
|
||||||
|
"cookies": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch = {
|
||||||
|
"": lambda st: {"cookies": st["cookies"] + 1},
|
||||||
|
"help": lambda _: print("""
|
||||||
|
Available commands:
|
||||||
|
save [save name] - save current game state
|
||||||
|
load [save name] - load previous save
|
||||||
|
help - get this message
|
||||||
|
cookie - see a minicookie
|
||||||
|
<ENTER> - get cookies
|
||||||
|
"""),
|
||||||
|
"save": lambda st, save_name: save(st, save_name),
|
||||||
|
"load": lambda _, save_name: load(save_name),
|
||||||
|
"cookie": lambda _: print(little_cookie)
|
||||||
|
}
|
||||||
|
|
||||||
|
print(big_cookie)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
print("You have %d %s." % (state["cookies"], say_cookies(state["cookies"])))
|
||||||
|
|
||||||
|
result_tokens = input(u"|||> ").split(" ")
|
||||||
|
|
||||||
|
try:
|
||||||
|
selected_func = dispatch[result_tokens[0]]
|
||||||
|
except:
|
||||||
|
print("Command not found.")
|
||||||
|
dispatch["help"](state)
|
||||||
|
continue
|
||||||
|
|
||||||
|
change = selected_func(state, *result_tokens[1:])
|
||||||
|
|
||||||
|
try: # An operation might return nothing instead of changing state.
|
||||||
|
for k, v in change.items():
|
||||||
|
state[k] = v
|
||||||
|
except:
|
||||||
|
pass
|
392
KerbalName/.gitignore
vendored
Executable file
392
KerbalName/.gitignore
vendored
Executable file
@ -0,0 +1,392 @@
|
|||||||
|
# Created by https://www.gitignore.io/api/f#,linux,windows,macos,vim,emacs,visualstudio,visualstudiocode
|
||||||
|
|
||||||
|
### F# ###
|
||||||
|
lib/debug
|
||||||
|
lib/release
|
||||||
|
Debug
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
obj
|
||||||
|
bin
|
||||||
|
|
||||||
|
|
||||||
|
### Linux ###
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
|
||||||
|
### Windows ###
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
*.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
|
||||||
|
### Vim ###
|
||||||
|
# swap
|
||||||
|
[._]*.s[a-w][a-z]
|
||||||
|
[._]s[a-w][a-z]
|
||||||
|
# session
|
||||||
|
Session.vim
|
||||||
|
# temporary
|
||||||
|
.netrwhist
|
||||||
|
*~
|
||||||
|
# auto-generated tag files
|
||||||
|
tags
|
||||||
|
|
||||||
|
|
||||||
|
### Emacs ###
|
||||||
|
# -*- mode: gitignore; -*-
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
/.emacs.desktop
|
||||||
|
/.emacs.desktop.lock
|
||||||
|
*.elc
|
||||||
|
auto-save-list
|
||||||
|
tramp
|
||||||
|
.\#*
|
||||||
|
|
||||||
|
# Org-mode
|
||||||
|
.org-id-locations
|
||||||
|
*_archive
|
||||||
|
|
||||||
|
# flymake-mode
|
||||||
|
*_flymake.*
|
||||||
|
|
||||||
|
# eshell files
|
||||||
|
/eshell/history
|
||||||
|
/eshell/lastdir
|
||||||
|
|
||||||
|
# elpa packages
|
||||||
|
/elpa/
|
||||||
|
|
||||||
|
# reftex files
|
||||||
|
*.rel
|
||||||
|
|
||||||
|
# AUCTeX auto folder
|
||||||
|
/auto/
|
||||||
|
|
||||||
|
# cask packages
|
||||||
|
.cask/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# Flycheck
|
||||||
|
flycheck_*.el
|
||||||
|
|
||||||
|
# server auth directory
|
||||||
|
/server/
|
||||||
|
|
||||||
|
# projectiles files
|
||||||
|
.projectile
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### VisualStudio ###
|
||||||
|
## 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/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[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/
|
||||||
|
|
||||||
|
*_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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
*.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 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
|
6
KerbalName/KerbalName/App.config
Executable file
6
KerbalName/KerbalName/App.config
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
77
KerbalName/KerbalName/KerbalName.fs
Executable file
77
KerbalName/KerbalName/KerbalName.fs
Executable file
@ -0,0 +1,77 @@
|
|||||||
|
module Kerbal.Names
|
||||||
|
|
||||||
|
open Argu
|
||||||
|
|
||||||
|
let readLinesFrom file =
|
||||||
|
use reader = new System.IO.StreamReader(path=file)
|
||||||
|
reader.ReadToEnd().Split('\n')
|
||||||
|
|> List.ofArray
|
||||||
|
|
||||||
|
type CommandLineArgument =
|
||||||
|
| [<AltCommandLine("-q")>] Quantity of int
|
||||||
|
| [<AltCommandLine("-s")>] Separator of string
|
||||||
|
| [<AltCommandLine("-d")>] DataDir of string
|
||||||
|
with
|
||||||
|
interface IArgParserTemplate with
|
||||||
|
member this.Usage =
|
||||||
|
match this with
|
||||||
|
| Quantity _ -> "How many names to generate (defaults to 1)"
|
||||||
|
| Separator _ -> "What to separate generated names with (defaults to newline)"
|
||||||
|
| DataDir _ -> "Where the program's datafiles can be found (defaults to KerbalNameData under working directory)"
|
||||||
|
|
||||||
|
module RNG =
|
||||||
|
let seedGenerator = System.Random()
|
||||||
|
let localGenerator = new System.Threading.ThreadLocal<System.Random>(fun _ ->
|
||||||
|
lock seedGenerator (fun _ ->
|
||||||
|
let seed = seedGenerator.Next()
|
||||||
|
new System.Random(seed)))
|
||||||
|
|
||||||
|
// Returns a version of System.Random using the threadlocal RNG.
|
||||||
|
// NOTE: Most functions are NOT thread-safe in this version.
|
||||||
|
let getRand() = {new System.Random() with member this.Next(lim) = localGenerator.Value.Next(lim)}
|
||||||
|
|
||||||
|
let inline randomChoice (rand : System.Random) (list:'a list) =
|
||||||
|
list.[rand.Next(list.Length)]
|
||||||
|
|
||||||
|
let inline generateHybridName rand prefixList suffixList =
|
||||||
|
(randomChoice rand prefixList) + (randomChoice rand suffixList)
|
||||||
|
|
||||||
|
let genName (rand : System.Random) properNames namePrefixes nameSuffixes =
|
||||||
|
if rand.Next(20) = 20 then
|
||||||
|
randomChoice rand properNames
|
||||||
|
else
|
||||||
|
generateHybridName rand namePrefixes nameSuffixes
|
||||||
|
|
||||||
|
[<EntryPoint>]
|
||||||
|
let main argv =
|
||||||
|
// Construct CLI parser with programname taken from env variables
|
||||||
|
let argParser = ArgumentParser.Create<CommandLineArgument>(programName = (Array.head <| System.Environment.GetCommandLineArgs()))
|
||||||
|
|
||||||
|
let parseResults = argParser.Parse argv
|
||||||
|
let dataDir = parseResults.GetResult(<@ DataDir @>, defaultValue = "KerbalNameData") + "/" // Append a slash in case missing
|
||||||
|
let quantity = parseResults.GetResult(<@ Quantity @>, defaultValue = 1)
|
||||||
|
let separator = parseResults.GetResult(<@ Separator @>, defaultValue = "\n")
|
||||||
|
|
||||||
|
// Access name datafiles
|
||||||
|
let properNames = readLinesFrom (dataDir + "Proper.txt")
|
||||||
|
let namePrefixes = readLinesFrom (dataDir + "Prefixes.txt")
|
||||||
|
let nameSuffixes = readLinesFrom (dataDir + "Suffixes.txt")
|
||||||
|
|
||||||
|
let rand = RNG.getRand()
|
||||||
|
|
||||||
|
let printingMailbox = MailboxProcessor.Start(fun inbox ->
|
||||||
|
let rec loop () = async {
|
||||||
|
let! msg = inbox.Receive()
|
||||||
|
printf "%s" msg
|
||||||
|
return! loop()
|
||||||
|
}
|
||||||
|
|
||||||
|
loop()
|
||||||
|
)
|
||||||
|
|
||||||
|
System.Threading.Tasks.Parallel.For(0, quantity, fun idx ->
|
||||||
|
genName rand properNames namePrefixes nameSuffixes
|
||||||
|
|> (fun name -> printingMailbox.Post(name + separator))
|
||||||
|
) |> ignore // We do not care about the result which came from the parallel loop.
|
||||||
|
|
||||||
|
0
|
1051
KerbalName/KerbalName/KerbalName.fsproj
Executable file
1051
KerbalName/KerbalName/KerbalName.fsproj
Executable file
File diff suppressed because it is too large
Load Diff
4
KerbalName/KerbalName/paket.references
Executable file
4
KerbalName/KerbalName/paket.references
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
FSharp.Core
|
||||||
|
System.Runtime
|
||||||
|
System.IO
|
||||||
|
Argu
|
96
KerbalName/KerbalNameData/Prefixes.txt
Executable file
96
KerbalName/KerbalNameData/Prefixes.txt
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
Ad
|
||||||
|
Al
|
||||||
|
Ald
|
||||||
|
An
|
||||||
|
Bar
|
||||||
|
Bart
|
||||||
|
Bil
|
||||||
|
Billy-Bob
|
||||||
|
Bob
|
||||||
|
Bur
|
||||||
|
Cal
|
||||||
|
Cam
|
||||||
|
Chad
|
||||||
|
Cor
|
||||||
|
Dan
|
||||||
|
Der
|
||||||
|
Des
|
||||||
|
Dil
|
||||||
|
Do
|
||||||
|
Don
|
||||||
|
Dood
|
||||||
|
Dud
|
||||||
|
Dun
|
||||||
|
Ed
|
||||||
|
El
|
||||||
|
En
|
||||||
|
Er
|
||||||
|
Fer
|
||||||
|
Fred
|
||||||
|
Gene
|
||||||
|
Geof
|
||||||
|
Ger
|
||||||
|
Gil
|
||||||
|
Greg
|
||||||
|
Gus
|
||||||
|
Had
|
||||||
|
Hal
|
||||||
|
Han
|
||||||
|
Har
|
||||||
|
Hen
|
||||||
|
Her
|
||||||
|
Hud
|
||||||
|
Jed
|
||||||
|
Jen
|
||||||
|
Jer
|
||||||
|
Joe
|
||||||
|
John
|
||||||
|
Jon
|
||||||
|
Jor
|
||||||
|
Kel
|
||||||
|
Ken
|
||||||
|
Ker
|
||||||
|
Kir
|
||||||
|
Lan
|
||||||
|
Lem
|
||||||
|
Len
|
||||||
|
Lo
|
||||||
|
Lod
|
||||||
|
Lu
|
||||||
|
Lud
|
||||||
|
Mac
|
||||||
|
Mal
|
||||||
|
Mat
|
||||||
|
Mel
|
||||||
|
Mer
|
||||||
|
Mil
|
||||||
|
Mit
|
||||||
|
Mun
|
||||||
|
Ned
|
||||||
|
Neil
|
||||||
|
Nel
|
||||||
|
New
|
||||||
|
Ob
|
||||||
|
Or
|
||||||
|
Pat
|
||||||
|
Phil
|
||||||
|
Ray
|
||||||
|
Rib
|
||||||
|
Rich
|
||||||
|
Ro
|
||||||
|
Rod
|
||||||
|
Ron
|
||||||
|
Sam
|
||||||
|
Sean
|
||||||
|
See
|
||||||
|
Shel
|
||||||
|
Shep
|
||||||
|
Sher
|
||||||
|
Sid
|
||||||
|
Sig
|
||||||
|
Son
|
||||||
|
Thom
|
||||||
|
Thomp
|
||||||
|
Tom
|
||||||
|
Wehr
|
||||||
|
Wil
|
37
KerbalName/KerbalNameData/Proper.txt
Executable file
37
KerbalName/KerbalNameData/Proper.txt
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
Al
|
||||||
|
Alan
|
||||||
|
Archibald
|
||||||
|
Buzz
|
||||||
|
Carson
|
||||||
|
Chad
|
||||||
|
Charlie
|
||||||
|
Chris
|
||||||
|
Chuck
|
||||||
|
Dean
|
||||||
|
Ed
|
||||||
|
Edan
|
||||||
|
Edlu
|
||||||
|
Frank
|
||||||
|
Franklin
|
||||||
|
Gus
|
||||||
|
Hans
|
||||||
|
Jack
|
||||||
|
James
|
||||||
|
Jim
|
||||||
|
Kirk
|
||||||
|
Kurt
|
||||||
|
Lars
|
||||||
|
Luke
|
||||||
|
Mac
|
||||||
|
Matt
|
||||||
|
Phil
|
||||||
|
Randall
|
||||||
|
Scott
|
||||||
|
Scott
|
||||||
|
Sean
|
||||||
|
Steve
|
||||||
|
Tom
|
||||||
|
Will
|
||||||
|
Yuri
|
||||||
|
Olev
|
||||||
|
Dimitry
|
119
KerbalName/KerbalNameData/Suffixes.txt
Executable file
119
KerbalName/KerbalNameData/Suffixes.txt
Executable file
@ -0,0 +1,119 @@
|
|||||||
|
ald
|
||||||
|
bal
|
||||||
|
bald
|
||||||
|
bart
|
||||||
|
bas
|
||||||
|
berry
|
||||||
|
bert
|
||||||
|
bin
|
||||||
|
ble
|
||||||
|
bles
|
||||||
|
bo
|
||||||
|
bree
|
||||||
|
brett
|
||||||
|
bro
|
||||||
|
bur
|
||||||
|
burry
|
||||||
|
bus
|
||||||
|
by
|
||||||
|
cal
|
||||||
|
can
|
||||||
|
cas
|
||||||
|
cott
|
||||||
|
dan
|
||||||
|
das
|
||||||
|
den
|
||||||
|
din
|
||||||
|
do
|
||||||
|
don
|
||||||
|
dorf
|
||||||
|
dos
|
||||||
|
dous
|
||||||
|
dred
|
||||||
|
drin
|
||||||
|
dun
|
||||||
|
ely
|
||||||
|
emone
|
||||||
|
emy
|
||||||
|
eny
|
||||||
|
fal
|
||||||
|
fel
|
||||||
|
fen
|
||||||
|
field
|
||||||
|
ford
|
||||||
|
fred
|
||||||
|
frey
|
||||||
|
frey
|
||||||
|
frid
|
||||||
|
frod
|
||||||
|
fry
|
||||||
|
furt
|
||||||
|
gan
|
||||||
|
gard
|
||||||
|
gas
|
||||||
|
gee
|
||||||
|
gel
|
||||||
|
ger
|
||||||
|
gun
|
||||||
|
hat
|
||||||
|
ing
|
||||||
|
ke
|
||||||
|
kin
|
||||||
|
lan
|
||||||
|
las
|
||||||
|
ler
|
||||||
|
ley
|
||||||
|
lie
|
||||||
|
lin
|
||||||
|
lin
|
||||||
|
lo
|
||||||
|
lock
|
||||||
|
long
|
||||||
|
lorf
|
||||||
|
ly
|
||||||
|
mal
|
||||||
|
man
|
||||||
|
min
|
||||||
|
ming
|
||||||
|
mon
|
||||||
|
more
|
||||||
|
mund
|
||||||
|
my
|
||||||
|
nand
|
||||||
|
nard
|
||||||
|
ner
|
||||||
|
ney
|
||||||
|
nie
|
||||||
|
ny
|
||||||
|
oly
|
||||||
|
ory
|
||||||
|
rey
|
||||||
|
rick
|
||||||
|
rie
|
||||||
|
righ
|
||||||
|
rim
|
||||||
|
rod
|
||||||
|
ry
|
||||||
|
sby
|
||||||
|
sel
|
||||||
|
sen
|
||||||
|
sey
|
||||||
|
ski
|
||||||
|
son
|
||||||
|
sted
|
||||||
|
ster
|
||||||
|
sy
|
||||||
|
ton
|
||||||
|
top
|
||||||
|
trey
|
||||||
|
van
|
||||||
|
vey
|
||||||
|
vin
|
||||||
|
vis
|
||||||
|
well
|
||||||
|
wig
|
||||||
|
win
|
||||||
|
wise
|
||||||
|
zer
|
||||||
|
zon
|
||||||
|
zor
|
14
KerbalName/build.cmd
Executable file
14
KerbalName/build.cmd
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
@echo off
|
||||||
|
cls
|
||||||
|
|
||||||
|
.paket\paket.bootstrapper.exe
|
||||||
|
if errorlevel 1 (
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
|
||||||
|
.paket\paket.exe restore
|
||||||
|
if errorlevel 1 (
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
|
||||||
|
packages\FAKE\tools\FAKE.exe build.fsx %*
|
51
KerbalName/build.fsx
Executable file
51
KerbalName/build.fsx
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
// include Fake libs
|
||||||
|
#r "./packages/FAKE/tools/FakeLib.dll"
|
||||||
|
|
||||||
|
open Fake
|
||||||
|
|
||||||
|
// Directories
|
||||||
|
let buildDir = "./build/"
|
||||||
|
let deployDir = "./deploy/"
|
||||||
|
|
||||||
|
|
||||||
|
// Filesets
|
||||||
|
let appReferences =
|
||||||
|
!! "/**/*.csproj"
|
||||||
|
++ "/**/*.fsproj"
|
||||||
|
|
||||||
|
// version info
|
||||||
|
let version = "1.2a"
|
||||||
|
|
||||||
|
// Targets
|
||||||
|
Target "Clean" (fun _ ->
|
||||||
|
CleanDirs [buildDir; deployDir]
|
||||||
|
)
|
||||||
|
|
||||||
|
Target "Build" (fun _ ->
|
||||||
|
MSBuildDebug buildDir "Build" appReferences
|
||||||
|
|> Log "AppBuild-Output: "
|
||||||
|
)
|
||||||
|
|
||||||
|
Target "BuildRelease" (fun _ ->
|
||||||
|
MSBuildRelease buildDir "Build" appReferences
|
||||||
|
|> Log "AppBuild-Output: "
|
||||||
|
)
|
||||||
|
|
||||||
|
Target "Deploy" (fun _ ->
|
||||||
|
// Copy name data to buildDir for deployment
|
||||||
|
FileUtils.cp_r "KerbalNameData" (buildDir + "KerbalNameData/")
|
||||||
|
|
||||||
|
!! (buildDir + "/**/*.*")
|
||||||
|
-- "*.zip"
|
||||||
|
|> Zip buildDir (deployDir + "KerbalName." + version + ".zip")
|
||||||
|
)
|
||||||
|
|
||||||
|
// Build order
|
||||||
|
"Clean"
|
||||||
|
==> "BuildRelease"
|
||||||
|
==> "Deploy"
|
||||||
|
|
||||||
|
"Build" <=> "BuildRelease"
|
||||||
|
|
||||||
|
// start build
|
||||||
|
RunTargetOrDefault "Build"
|
34
KerbalName/build.sh
Executable file
34
KerbalName/build.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if test "$OS" = "Windows_NT"
|
||||||
|
then
|
||||||
|
# use .Net
|
||||||
|
|
||||||
|
.paket/paket.bootstrapper.exe
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
exit $exit_code
|
||||||
|
fi
|
||||||
|
|
||||||
|
.paket/paket.exe restore
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
exit $exit_code
|
||||||
|
fi
|
||||||
|
|
||||||
|
packages/FAKE/tools/FAKE.exe $@
|
||||||
|
else
|
||||||
|
# use mono
|
||||||
|
mono .paket/paket.bootstrapper.exe
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
exit $exit_code
|
||||||
|
fi
|
||||||
|
|
||||||
|
mono .paket/paket.exe restore
|
||||||
|
exit_code=$?
|
||||||
|
if [ $exit_code -ne 0 ]; then
|
||||||
|
exit $exit_code
|
||||||
|
fi
|
||||||
|
mono packages/FAKE/tools/FAKE.exe $@
|
||||||
|
fi
|
4
KerbalName/paket.dependencies
Executable file
4
KerbalName/paket.dependencies
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
source https://www.nuget.org/api/v2
|
||||||
|
nuget FAKE
|
||||||
|
nuget FSharp.Core
|
||||||
|
nuget Argu
|
569
KerbalName/paket.lock
Executable file
569
KerbalName/paket.lock
Executable file
@ -0,0 +1,569 @@
|
|||||||
|
NUGET
|
||||||
|
remote: https://www.nuget.org/api/v2
|
||||||
|
Argu (3.7)
|
||||||
|
FSharp.Core (>= 4.0.1.7-alpha) - framework: >= net463, >= netstandard16
|
||||||
|
NETStandard.Library (>= 1.6) - framework: >= net463, >= netstandard16
|
||||||
|
System.Xml.XDocument (>= 4.0.11) - framework: >= net463, >= netstandard16
|
||||||
|
FAKE (4.56)
|
||||||
|
FSharp.Core (4.1.0.2)
|
||||||
|
System.Collections (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.Console (>= 4.0) - framework: >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.Diagnostics.Tools (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Globalization (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.IO (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Linq (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Linq.Expressions (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Linq.Queryable (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Net.Requests (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.Reflection (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Reflection.Extensions (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Runtime (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Runtime.Numerics (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Text.RegularExpressions (>= 4.1) - framework: >= netstandard16
|
||||||
|
System.Threading (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.Threading.Tasks (>= 4.0.11) - framework: >= netstandard16
|
||||||
|
System.Threading.Tasks.Parallel (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.Threading.Thread (>= 4.0) - framework: >= netstandard16
|
||||||
|
System.Threading.ThreadPool (>= 4.0.10) - framework: >= netstandard16
|
||||||
|
System.Threading.Timer (>= 4.0.1) - framework: >= netstandard16
|
||||||
|
System.ValueTuple (>= 4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
|
||||||
|
Microsoft.NETCore.Platforms (1.1) - framework: >= net10, >= netstandard10, netstandard13
|
||||||
|
Microsoft.NETCore.Targets (1.1) - framework: >= net10, >= netstandard10, netstandard13
|
||||||
|
Microsoft.Win32.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
NETStandard.Library (1.6.1) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard10
|
||||||
|
Microsoft.Win32.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.AppContext (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Collections.Concurrent (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Console (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Diagnostics.Tools (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Globalization (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Globalization.Calendars (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.IO.Compression (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.IO.Compression.ZipFile (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.IO.FileSystem (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Linq (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Linq.Expressions (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Net.Http (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Net.Primitives (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Net.Sockets (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.ObjectModel (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Extensions (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Runtime.Numerics (>= 4.3) - framework: >= net45, >= netstandard11
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Text.Encoding.Extensions (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Text.RegularExpressions (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Threading (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Threading.Timer (>= 4.3) - framework: >= net451, >= netstandard12
|
||||||
|
System.Xml.ReaderWriter (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Xml.XDocument (>= 4.3) - framework: >= netstandard10
|
||||||
|
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.native.System (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1)
|
||||||
|
runtime.native.System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1)
|
||||||
|
runtime.native.System.Net.Http (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1)
|
||||||
|
runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3)
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||||
|
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.AppContext (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Buffers (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Threading (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Collections (4.3) - framework: >= net10, >= netstandard10
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Collections.Concurrent (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Console (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Diagnostics.Debug (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Diagnostics.DiagnosticSource (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||||
|
System.Reflection (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: netstandard11, >= netstandard13
|
||||||
|
System.Diagnostics.Tools (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Diagnostics.Tracing (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
|
||||||
|
System.Globalization (4.3) - framework: >= net10, >= netstandard10
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Globalization.Calendars (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Globalization.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.IO.Compression (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
runtime.native.System (>= 4.3) - framework: >= netstandard13
|
||||||
|
runtime.native.System.IO.Compression (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Buffers (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO.Compression.ZipFile (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Buffers (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.Compression (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.FileSystem (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.FileSystem (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO.FileSystem.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Linq (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Linq.Expressions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Linq (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.ObjectModel (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
|
||||||
|
System.Reflection.Emit (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Reflection.Emit.Lightweight (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Reflection.TypeExtensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Linq.Queryable (4.3) - framework: >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Linq (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Linq.Expressions (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Net.Http (4.3.1) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
runtime.native.System (>= 4.3) - framework: >= netstandard16
|
||||||
|
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Diagnostics.DiagnosticSource (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Globalization.Extensions (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||||
|
System.IO.FileSystem (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: netstandard13, >= netstandard16
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.X509Certificates (>= 4.3) - framework: >= net46, dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard16
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, netstandard13, >= netstandard16
|
||||||
|
System.Net.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Net.Requests (4.3) - framework: >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
System.Net.Http (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Net.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
System.Net.WebHeaderCollection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard11, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Net.Sockets (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Net.Primitives (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Net.WebHeaderCollection (4.3) - framework: >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.ObjectModel (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Reflection (4.3) - framework: >= net10, >= netstandard10
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Reflection.Emit (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Reflection.Emit.ILGeneration (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Emit.Lightweight (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Emit.ILGeneration (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Reflection.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Reflection.Primitives (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Reflection.TypeExtensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Reflection (>= 4.3) - framework: >= net462, dnxcore50, netstandard13, >= netstandard15
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15
|
||||||
|
System.Resources.ResourceManager (4.3) - framework: >= net10, >= netstandard10
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard10
|
||||||
|
System.Runtime (4.3) - framework: >= net10, >= netstandard10, netstandard13
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
|
||||||
|
System.Runtime.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
|
||||||
|
System.Runtime.Handles (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.InteropServices (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||||
|
System.Reflection.Primitives (>= 4.3) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||||
|
System.Runtime (>= 4.3) - framework: net462, >= net463, dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15, netcore11
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, >= netstandard15, netcore11
|
||||||
|
System.Runtime.InteropServices.RuntimeInformation (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.native.System (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||||
|
System.Reflection.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard11
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard11
|
||||||
|
System.Runtime.Numerics (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Security.Cryptography.Algorithms (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
|
||||||
|
runtime.native.System.Security.Cryptography.Apple (>= 4.3) - framework: >= netstandard16
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, dnxcore50, >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Security.Cryptography.Cng (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: netstandard14, >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: net46, net461, >= net463, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.Csp (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Reflection (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net46, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.Encoding (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: >= netstandard13
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Collections.Concurrent (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Linq (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.OpenSsl (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= net463, >= netstandard16, monoandroid, monotouch, xamarinios, xamarinmac
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Runtime.Numerics (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Security.Cryptography.X509Certificates (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard16
|
||||||
|
runtime.native.System (>= 4.3) - framework: >= netstandard16
|
||||||
|
runtime.native.System.Net.Http (>= 4.3) - framework: >= netstandard16
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Globalization.Calendars (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime.Numerics (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.Cng (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Security.Cryptography.Csp (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - framework: net46, >= net461, dnxcore50, netstandard13, netstandard14, >= netstandard16
|
||||||
|
System.Security.Cryptography.OpenSsl (>= 4.3) - framework: >= netstandard16
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Text.Encoding (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Text.Encoding.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Text.RegularExpressions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard16, netcore11
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard16
|
||||||
|
System.Threading (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Threading.Tasks (4.3) - framework: >= net10, netstandard10, netstandard13, >= netstandard15
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Threading.Tasks.Extensions (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Threading.Tasks.Parallel (4.3) - framework: >= netstandard16
|
||||||
|
System.Collections.Concurrent (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard11, >= netstandard13
|
||||||
|
System.Threading.Thread (4.3) - framework: >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading.ThreadPool (4.3) - framework: >= netstandard16
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Runtime.Handles (>= 4.3) - framework: >= netstandard13
|
||||||
|
System.Threading.Timer (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - framework: dnxcore50, >= netstandard12
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - framework: dnxcore50, >= netstandard12
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, >= netstandard12
|
||||||
|
System.ValueTuple (4.3) - framework: >= net10, netstandard10, netstandard11, netstandard12, netstandard13, netstandard14, netstandard15
|
||||||
|
System.Collections (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Runtime (>= 4.3) - framework: >= netstandard10
|
||||||
|
System.Xml.ReaderWriter (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.IO.FileSystem (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Text.Encoding.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Text.RegularExpressions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading.Tasks (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Threading.Tasks.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Xml.XDocument (4.3) - framework: >= net463, >= netstandard16
|
||||||
|
System.Collections (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Diagnostics.Tools (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Globalization (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.IO (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Reflection (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Runtime (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
||||||
|
System.Runtime.Extensions (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Text.Encoding (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Threading (>= 4.3) - framework: dnxcore50, >= netstandard13
|
||||||
|
System.Xml.ReaderWriter (>= 4.3) - framework: dnxcore50, netstandard10, >= netstandard13
|
23
README.md
Normal file
23
README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# random-stuff
|
||||||
|
|
||||||
|
In the interest of transparency and/or being vaguely useful, I'm releasing random junk from my projects folder publicly.
|
||||||
|
This comes with absolutely no guarantee of support or correct function, although if you need some of this for something I will *try* and answer any queries you might have.
|
||||||
|
|
||||||
|
## Contents (incomplete and rough list)
|
||||||
|
|
||||||
|
* some interpreters for esolangs due to events on the esolangs discord
|
||||||
|
* bad assembly hello world for some reason
|
||||||
|
* political compass visualizer thing for one Discord server
|
||||||
|
* simple un-hexadecimal-izer program (`base64 -d` exists but somehow not `base16 -d` or something)
|
||||||
|
* scripts for packing music + metadata onto Computronics (a Minecraft mod) tape images
|
||||||
|
* some thing to generate WAV files containing beeping noises
|
||||||
|
* fairly transferable small bits of an abandoned JS project
|
||||||
|
* an extremely bad and/or unfinished cookie clicker thing where you press the enter key instead of clicking
|
||||||
|
* a very simple web API wrapper for `luamin`
|
||||||
|
* some bodged old version of [it-was-inevitable](https://github.com/BenLubar/it_was_inevitable) which runs a local webserver instead of sending to Mastodon
|
||||||
|
* an extremely cursed program which bruteforces regexes or something?
|
||||||
|
* `realtau.txt`, which seemingly contains 100000 digits of τ. I wonder if there's a faketau somewhere.
|
||||||
|
* some weird thing which lets you use synonyms to get attributes on python objects
|
||||||
|
* something which generates random vaguely human readable names in Elm. Please note that I do NOT endorse the use of Elm and this is provided mostly just to make the languages list at the side weirder.
|
||||||
|
* F# kerbal name generator & very basic stack calculator
|
||||||
|
* importer part of an unfinished wikipedia database dump viewer
|
100
Stackulator.fs
Executable file
100
Stackulator.fs
Executable file
@ -0,0 +1,100 @@
|
|||||||
|
open System
|
||||||
|
open System.Numerics
|
||||||
|
|
||||||
|
type Stack = StackContents of Complex list
|
||||||
|
|
||||||
|
let splitPart (what:char) index (stringIn:string) = stringIn.Split(what).[index]
|
||||||
|
let spliti = splitPart 'i'
|
||||||
|
let firstInSpliti = spliti 0
|
||||||
|
let secondInSpliti = spliti 1
|
||||||
|
let isDoubleAsString text = System.Double.TryParse text |> fst
|
||||||
|
let doubleFromString text = System.Double.TryParse text |> snd
|
||||||
|
let isImaginaryAsString (text:string) =
|
||||||
|
match text.Contains("i") with
|
||||||
|
| false -> false
|
||||||
|
| true ->
|
||||||
|
let normalPart = firstInSpliti text
|
||||||
|
isDoubleAsString normalPart
|
||||||
|
let imaginaryFromString text =
|
||||||
|
let imaginaryPart = doubleFromString (firstInSpliti text)
|
||||||
|
Complex(0.0, imaginaryPart)
|
||||||
|
|
||||||
|
let showStack (StackContents contents) =
|
||||||
|
printfn "%A" contents // Print unpacked StackContents with formatting string
|
||||||
|
StackContents (contents) // Repack the StackContents
|
||||||
|
|
||||||
|
let push value (StackContents contents) =
|
||||||
|
StackContents (value::contents)
|
||||||
|
|
||||||
|
let pop (StackContents contents) =
|
||||||
|
match contents with
|
||||||
|
| top::rest -> // Separate top from rest
|
||||||
|
(top, StackContents rest) // Stack contents must be the StackContents type.
|
||||||
|
| [] -> // Check for stack underflow
|
||||||
|
failwith "Stack underflow"
|
||||||
|
|
||||||
|
let binary func stack =
|
||||||
|
let x, newStack = pop stack
|
||||||
|
let y, newestStack = pop newStack
|
||||||
|
let z = func y x // This is deliberately swapped, because we are working on a stack
|
||||||
|
push z newestStack
|
||||||
|
|
||||||
|
let unary func stack =
|
||||||
|
let x, newStack = pop stack
|
||||||
|
push (func x) stack
|
||||||
|
|
||||||
|
let dup stack =
|
||||||
|
let x, _ = pop stack // Drop the new stack, we want to duplicate "x"
|
||||||
|
push x stack
|
||||||
|
|
||||||
|
let swap stack =
|
||||||
|
let x, newStack = pop stack
|
||||||
|
let y, newerStack = pop newStack
|
||||||
|
push y (push x newerStack)
|
||||||
|
|
||||||
|
let drop stack =
|
||||||
|
let _, newStack = pop stack // Pop one off the top and ignore it
|
||||||
|
newStack
|
||||||
|
|
||||||
|
let numberInput value stack = push value stack
|
||||||
|
|
||||||
|
let add = binary (+)
|
||||||
|
let multiply = binary (*)
|
||||||
|
let subtract = binary (-)
|
||||||
|
let divide = binary (/)
|
||||||
|
let negate = unary (fun x -> -(x))
|
||||||
|
let square = unary (fun x -> x * x)
|
||||||
|
let cube = dup >> dup >> multiply >> multiply
|
||||||
|
let exponent = binary ( ** )
|
||||||
|
|
||||||
|
let show stack =
|
||||||
|
let value, _ = pop(stack)
|
||||||
|
printfn "%A" value
|
||||||
|
stack // We're going to keep the same stack as before.
|
||||||
|
|
||||||
|
let empty = StackContents []
|
||||||
|
|
||||||
|
let splitString (text:string) = text.Split ' '
|
||||||
|
|
||||||
|
let processTokenString stack token =
|
||||||
|
match token with
|
||||||
|
| "*" -> stack |> multiply
|
||||||
|
| "+" -> stack |> add
|
||||||
|
| "/" -> stack |> divide
|
||||||
|
| "+-" -> stack |> negate
|
||||||
|
| "sqr" -> stack |> square
|
||||||
|
| "cub" -> stack |> cube
|
||||||
|
| "**" | "^" -> stack |> exponent
|
||||||
|
| _ when isDoubleAsString token ->
|
||||||
|
let doubleInString = doubleFromString token
|
||||||
|
numberInput (Complex(doubleInString, 0.0)) stack
|
||||||
|
| _ when isImaginaryAsString token ->
|
||||||
|
let imaginaryInString = imaginaryFromString token
|
||||||
|
numberInput imaginaryInString stack
|
||||||
|
| _ -> showStack stack // For easier debugging.
|
||||||
|
|
||||||
|
Console.Write("Please enter your expression here: ")
|
||||||
|
let userExpression = Console.ReadLine()
|
||||||
|
let splitExpression = splitString userExpression
|
||||||
|
|
||||||
|
let resultantStack = List.fold processTokenString (empty) (Array.toList splitExpression) |> showStack
|
44
accursed-autoregex/allstrings.py
Executable file
44
accursed-autoregex/allstrings.py
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/env python3
|
||||||
|
|
||||||
|
chars = [chr(n) for n in range(126)]
|
||||||
|
firstchar = chars[0]
|
||||||
|
lastchar = chars[len(chars) - 1]
|
||||||
|
|
||||||
|
def increment_char(character):
|
||||||
|
return chr(ord(character) + 1)
|
||||||
|
|
||||||
|
def old_increment_string(string_to_increment):
|
||||||
|
reversed_string = list(reversed(string_to_increment)) # Reverse the string for easier work.
|
||||||
|
for rindex, char in enumerate(reversed_string):
|
||||||
|
if char == lastchar: # If we can't increment this char further, try the next ones.
|
||||||
|
reversed_string[rindex] = firstchar # Set the current char back to the first one.
|
||||||
|
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
|
||||||
|
else:
|
||||||
|
# We only want to increment ONE char, unless we need to "carry".
|
||||||
|
reversed_string[rindex] = increment_char(reversed_string[rindex])
|
||||||
|
break
|
||||||
|
return ''.join(list(reversed(reversed_string)))
|
||||||
|
|
||||||
|
def increment_string(to_increment):
|
||||||
|
reversed_string = list(to_increment) # Reverse the string for easier work.
|
||||||
|
for rindex, char in enumerate(reversed_string):
|
||||||
|
if char == lastchar: # If we can't increment this char further, try the next ones.
|
||||||
|
reversed_string[rindex] = firstchar # Set the current char back to the first one.
|
||||||
|
reversed_string[rindex + 1] = increment_char(reversed_string[rindex + 1]) # Increment the next one along.
|
||||||
|
else:
|
||||||
|
# We only want to increment ONE char, unless we need to "carry".
|
||||||
|
reversed_string[rindex] = increment_char(reversed_string[rindex])
|
||||||
|
break
|
||||||
|
return ''.join(list(reversed_string))
|
||||||
|
|
||||||
|
def string_generator():
|
||||||
|
length = 0
|
||||||
|
while 1:
|
||||||
|
length += 1
|
||||||
|
string = chars[0] * length
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
string = increment_string(string)
|
||||||
|
except IndexError: # Incrementing has gone out of the char array, move onto next length
|
||||||
|
break
|
||||||
|
yield string
|
82
accursed-autoregex/autoregex.py
Executable file
82
accursed-autoregex/autoregex.py
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/env python3
|
||||||
|
import re, sys, allstrings, multiprocessing
|
||||||
|
from setproctitle import setproctitle # https://github.com/dvarrazzo/py-setproctitle
|
||||||
|
|
||||||
|
string = sys.argv[1]
|
||||||
|
|
||||||
|
def gen_strings(out_queue):
|
||||||
|
setproctitle("AutoRegexer StringGen")
|
||||||
|
for string in allstrings.string_generator():
|
||||||
|
out_queue.put(string)
|
||||||
|
|
||||||
|
def test_strings(regex_queue, substring_queue, out_queue, search_in):
|
||||||
|
setproctitle("AutoRegexer Tester")
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
try: # Regexes are errory things and we shove in random ones, so ignore errors.
|
||||||
|
regex_raw = regex_queue.get()
|
||||||
|
substring = substring_queue.get()
|
||||||
|
|
||||||
|
regex = re.compile(regex_raw)
|
||||||
|
result = re.sub(regex, substring, string)
|
||||||
|
|
||||||
|
out_queue.put({"result": result, "regex": regex_raw, "substring": substring}) # Package the values used and send them off.
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def print_strings(in_queue, ignore):
|
||||||
|
i = 0
|
||||||
|
setproctitle("AutoRegexer IO")
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
attempt = in_queue.get()
|
||||||
|
|
||||||
|
if attempt["result"] == ignore: # Ignore regexes deemed boring..
|
||||||
|
continue
|
||||||
|
|
||||||
|
print(str(i) + "th attempt: replacing " + attempt["substring"] +
|
||||||
|
" with " + attempt["regex"] + " results in " + attempt["result"] + ".")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print_queue = multiprocessing.Queue() # Create the IO queue
|
||||||
|
regex_queue = multiprocessing.Queue() # Create queue to distribute generated strings.
|
||||||
|
substring_queue = multiprocessing.Queue()
|
||||||
|
|
||||||
|
print_process = multiprocessing.Process(target=print_strings, args=(print_queue, string), name="AutoRegexer IO") # Spawn a process to handle our IO.
|
||||||
|
regex_gen_process = multiprocessing.Process(target=gen_strings, args=(regex_queue,), name="AutoRegexer RegexGen") # Create process to generate our regexes.
|
||||||
|
substring_gen_process = multiprocessing.Process(target=gen_strings, args=(substring_queue,), name="AutoRegexer SubstringGen") # Make a process to generate the replaced substrings.
|
||||||
|
print_process.start()
|
||||||
|
regex_gen_process.start()
|
||||||
|
substring_gen_process.start()
|
||||||
|
|
||||||
|
#with multiprocessing.Pool(processes=7) as pool:
|
||||||
|
for local_process_id in range(7):
|
||||||
|
#while True:
|
||||||
|
proc_name = "AutoRegexer " + str(local_process_id)
|
||||||
|
proc = multiprocessing.Process(target=test_strings, args=(regex_queue, substring_queue, print_queue, string), name=proc_name)
|
||||||
|
proc.start()
|
||||||
|
|
||||||
|
#string_gen_process = multiprocessing.Process(target=gen_strings, args=(string_queue,), name="AutoRegexer StringGen")
|
||||||
|
#string_gen_process.start()
|
||||||
|
|
||||||
|
setproctitle("AutoRegexer Master")
|
||||||
|
|
||||||
|
# Obsolete old version.
|
||||||
|
'''
|
||||||
|
for iterations, regex_and_sub in enumerate(allstrings.string_generator()):
|
||||||
|
result = ""
|
||||||
|
try:
|
||||||
|
half_point = len(regex_and_sub) // 2
|
||||||
|
regex_raw = regex_and_sub[:half_point]
|
||||||
|
substring = regex_and_sub[half_point:]
|
||||||
|
|
||||||
|
regex = re.compile(regex_raw)
|
||||||
|
result = re.sub(regex_raw, substring, string)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
finally:
|
||||||
|
if result != string and result != "":
|
||||||
|
print("Replacing `" + regex_raw + "` with `" + substring + "` produces `" + result + "`.")
|
||||||
|
'''
|
22
config.ts
Normal file
22
config.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { parse } from "toml"
|
||||||
|
import { readFileSync } from "fs"
|
||||||
|
import { join } from "path"
|
||||||
|
import { path } from "ramda"
|
||||||
|
|
||||||
|
import * as log from "./log"
|
||||||
|
|
||||||
|
const defaults = {
|
||||||
|
production: process.env.NODE_ENV === "production"
|
||||||
|
}
|
||||||
|
|
||||||
|
const config = parse(readFileSync(process.env.CONFIG_FILE || join(__dirname, "..", "config.toml"), { encoding: "utf8" }))
|
||||||
|
|
||||||
|
export const get = key => {
|
||||||
|
const arrKey = key.split(".")
|
||||||
|
const out = path(arrKey, config) || path(arrKey, defaults)
|
||||||
|
if (out === undefined) {
|
||||||
|
log.error(`Configuration parameter ${key} missing`)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
49
db.ts
Executable file
49
db.ts
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
import Database = require("better-sqlite3")
|
||||||
|
|
||||||
|
import * as C from "./config"
|
||||||
|
import * as log from "./log"
|
||||||
|
|
||||||
|
export const DB = Database(C.get("db"))
|
||||||
|
|
||||||
|
const migrations = [
|
||||||
|
`
|
||||||
|
--whatever
|
||||||
|
`
|
||||||
|
]
|
||||||
|
|
||||||
|
const executeMigration = DB.transaction((i) => {
|
||||||
|
const migration = migrations[i]
|
||||||
|
DB.exec(migration)
|
||||||
|
DB.pragma(`user_version = ${i + 1}`)
|
||||||
|
log.info(`Migrated to schema ${i + 1}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
const schemaVersion = DB.pragma("user_version", { simple: true })
|
||||||
|
if (schemaVersion < migrations.length) {
|
||||||
|
log.info(`Migrating DB - schema ${schemaVersion} used, schema ${migrations.length} available`)
|
||||||
|
for (let i = schemaVersion; i < migrations.length; i++) {
|
||||||
|
executeMigration(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DB.pragma("foreign_keys = 1")
|
||||||
|
|
||||||
|
const preparedStatements = new Map()
|
||||||
|
|
||||||
|
export const SQL = (strings, ...params) => {
|
||||||
|
const sql = strings.join("?")
|
||||||
|
let stmt
|
||||||
|
const cachedValue = preparedStatements.get(sql)
|
||||||
|
if (!cachedValue) {
|
||||||
|
stmt = DB.prepare(sql)
|
||||||
|
preparedStatements.set(sql, stmt)
|
||||||
|
} else {
|
||||||
|
stmt = cachedValue
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
get: () => stmt.get.apply(stmt, params),
|
||||||
|
run: () => stmt.run.apply(stmt, params),
|
||||||
|
all: () => stmt.all.apply(stmt, params),
|
||||||
|
statement: stmt
|
||||||
|
}
|
||||||
|
}
|
46
diacriticize.py
Executable file
46
diacriticize.py
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import random
|
||||||
|
import fileinput
|
||||||
|
import sys
|
||||||
|
|
||||||
|
zalgo = [
|
||||||
|
'\u030d', '\u030e', '\u0304', '\u0305',
|
||||||
|
'\u033f', '\u0311', '\u0306', '\u0310',
|
||||||
|
'\u0352', '\u0357', '\u0351', '\u0307',
|
||||||
|
'\u0308', '\u030a', '\u0342', '\u0343',
|
||||||
|
'\u0344', '\u034a', '\u034b', '\u034c',
|
||||||
|
'\u0303', '\u0302', '\u030c', '\u0350',
|
||||||
|
'\u0300', '\u0301', '\u030b', '\u030f',
|
||||||
|
'\u0312', '\u0313', '\u0314', '\u033d',
|
||||||
|
'\u0309', '\u0363', '\u0364', '\u0365',
|
||||||
|
'\u0366', '\u0367', '\u0368', '\u0369',
|
||||||
|
'\u036a', '\u036b', '\u036c', '\u036d',
|
||||||
|
'\u036e', '\u036f', '\u033e', '\u035b',
|
||||||
|
'\u0346', '\u031a',
|
||||||
|
'\u0316', '\u0317', '\u0318', '\u0319',
|
||||||
|
'\u031c', '\u031d', '\u031e', '\u031f',
|
||||||
|
'\u0320', '\u0324', '\u0325', '\u0326',
|
||||||
|
'\u0329', '\u032a', '\u032b', '\u032c',
|
||||||
|
'\u032d', '\u032e', '\u032f', '\u0330',
|
||||||
|
'\u0331', '\u0332', '\u0333', '\u0339',
|
||||||
|
'\u033a', '\u033b', '\u033c', '\u0345',
|
||||||
|
'\u0347', '\u0348', '\u0349', '\u034d',
|
||||||
|
'\u034e', '\u0353', '\u0354', '\u0355',
|
||||||
|
'\u0356', '\u0359', '\u035a', '\u0323',
|
||||||
|
'\u0315', '\u031b', '\u0340', '\u0341',
|
||||||
|
'\u0358', '\u0321', '\u0322', '\u0327',
|
||||||
|
'\u0328', '\u0334', '\u0335', '\u0336',
|
||||||
|
'\u034f', '\u035c', '\u035d', '\u035e',
|
||||||
|
'\u035f', '\u0360', '\u0362', '\u0338',
|
||||||
|
'\u0337', '\u0361', '\u0489'
|
||||||
|
]
|
||||||
|
|
||||||
|
zero_width = ["\u200b", "\u200c", "\u200d"]
|
||||||
|
|
||||||
|
def process_char(c):
|
||||||
|
return c + random.choice(zalgo)
|
||||||
|
|
||||||
|
for line in fileinput.input():
|
||||||
|
# line = line.replace("\n", "")
|
||||||
|
out = "".join([process_char(c) for c in line])
|
||||||
|
sys.stdout.buffer.write(out.encode("utf-8"))
|
1
it-was-inevitable/.gitignore
vendored
Executable file
1
it-was-inevitable/.gitignore
vendored
Executable file
@ -0,0 +1 @@
|
|||||||
|
*.local.*
|
17
it-was-inevitable/Dockerfile
Executable file
17
it-was-inevitable/Dockerfile
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
FROM golang:1.10.1 as builder
|
||||||
|
|
||||||
|
COPY *.go /go/src/github.com/BenLubar/it_was_inevitable/
|
||||||
|
|
||||||
|
WORKDIR /go/src/github.com/BenLubar/it_was_inevitable
|
||||||
|
|
||||||
|
RUN go get -d
|
||||||
|
|
||||||
|
RUN CGO_ENABLED=0 go build -a -o /it_was_inevitable
|
||||||
|
|
||||||
|
FROM benlubar/dwarffortress:df-ai-0.44.12-r1-update1
|
||||||
|
|
||||||
|
COPY --from=builder /it_was_inevitable /usr/local/bin/it_was_inevitable
|
||||||
|
|
||||||
|
RUN sed -i /df_linux/dfhack -e "s/ setarch / exec setarch /"
|
||||||
|
|
||||||
|
CMD ["it_was_inevitable"]
|
19
it-was-inevitable/LICENSE
Executable file
19
it-was-inevitable/LICENSE
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
zlib License
|
||||||
|
|
||||||
|
(C) 2018 Ben Lubar
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software
|
||||||
|
in a product, an acknowledgment in the product documentation would be
|
||||||
|
appreciated but is not required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
9
it-was-inevitable/README.md
Executable file
9
it-was-inevitable/README.md
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
# Sentient Dwarf Fortress was inevitable.
|
||||||
|
|
||||||
|
The source code that powers [@it\_was\_inevitable@botsin.space](https://botsin.space/@it_was_inevitable) and [@it\_was\_inevitable\_slow@botsin.space](https://botsin.space/@it_was_inevitable_slow) on Mastodon.
|
||||||
|
Except it's actually not, this version is to run a webserver on port 1556 to provide messages instead.
|
||||||
|
|
||||||
|
## To run locally:
|
||||||
|
|
||||||
|
1. Install Docker.
|
||||||
|
2. Run this in Docker.
|
6
it-was-inevitable/announcements.txt.go
Executable file
6
it-was-inevitable/announcements.txt.go
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
var announcementstxt = []byte(`
|
||||||
|
[REGULAR_CONVERSATION:D_D]
|
||||||
|
[CONFLICT_CONVERSATION:D_D]
|
||||||
|
`[1:])
|
44
it-was-inevitable/cleanup.go
Executable file
44
it-was-inevitable/cleanup.go
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func cleanup() {
|
||||||
|
// Enable only conversation in the log.
|
||||||
|
if err := ioutil.WriteFile("/df_linux/data/init/announcements.txt", announcementstxt, 0644); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove any old log we might have.
|
||||||
|
if err := os.Remove("/df_linux/gamelog.txt"); err != nil && !os.IsNotExist(err) {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove any old worlds.
|
||||||
|
if err := clearSaves(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up df-ai.
|
||||||
|
if err := ioutil.WriteFile("/df_linux/dfhack-config/df-ai.json", dfaijson, 0644); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func clearSaves() error {
|
||||||
|
files, err := ioutil.ReadDir("/df_linux/data/save")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
if err = os.RemoveAll(filepath.Join("/df_linux/data/save", file.Name())); err != nil && !os.IsNotExist(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
21
it-was-inevitable/config.go
Executable file
21
it-was-inevitable/config.go
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Pause DF-AI when the queue length gets above this threshold.
|
||||||
|
maxQueuedLines = 1000
|
||||||
|
|
||||||
|
// Unpause DF-AI when the queue length gets below this threshold.
|
||||||
|
minQueuedLines = 500
|
||||||
|
|
||||||
|
// Minimum number of lines before a duplicate is allowed.
|
||||||
|
minLinesBeforeDuplicate = 500
|
||||||
|
|
||||||
|
// Maximum number of "fuzzy" (some words changed) duplicates allowed.
|
||||||
|
maxFuzzyDuplicates = 5
|
||||||
|
|
||||||
|
// Number of lines to remember for "fuzzy" duplicate checking.
|
||||||
|
fuzzyDuplicateWindow = 10
|
||||||
|
|
||||||
|
// Maximum number of words that can differ in a "fuzzy" duplicate.
|
||||||
|
maxFuzzyDifferentWords = 2
|
||||||
|
)
|
14
it-was-inevitable/cp437.go
Executable file
14
it-was-inevitable/cp437.go
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
var cp437 = []rune("\x00☺☻♥♦♣♠•◘○◙♂♀♪♬☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\u00A0")
|
||||||
|
|
||||||
|
func mapCP437(s string) string {
|
||||||
|
b := []byte(s)
|
||||||
|
r := make([]rune, len(b))
|
||||||
|
|
||||||
|
for i, c := range b {
|
||||||
|
r[i] = cp437[c]
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(r)
|
||||||
|
}
|
19
it-was-inevitable/df-ai.json.go
Executable file
19
it-was-inevitable/df-ai.json.go
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
var dfaijson = []byte(`
|
||||||
|
{
|
||||||
|
"camera": false,
|
||||||
|
"cancel_announce": 0,
|
||||||
|
"fps_meter": false,
|
||||||
|
"lockstep": true,
|
||||||
|
"manage_labors": "autolabor",
|
||||||
|
"manage_nobles": true,
|
||||||
|
"no_quit": true,
|
||||||
|
"plan_allow_legacy": false,
|
||||||
|
"plan_verbosity": -1,
|
||||||
|
"random_embark": true,
|
||||||
|
"record_movie": false,
|
||||||
|
"write_console": false,
|
||||||
|
"write_log": false
|
||||||
|
}
|
||||||
|
`[1:])
|
267
it-was-inevitable/game.go
Executable file
267
it-was-inevitable/game.go
Executable file
@ -0,0 +1,267 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"syscall"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/hpcloud/tail"
|
||||||
|
"github.com/kr/pty"
|
||||||
|
)
|
||||||
|
|
||||||
|
func logError(err error, message string) {
|
||||||
|
if err != nil {
|
||||||
|
log.Println(message, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func logErrorD(f func() error, message string) {
|
||||||
|
logError(f(), message)
|
||||||
|
}
|
||||||
|
|
||||||
|
type dataBuffer struct {
|
||||||
|
queue []string
|
||||||
|
threshold int
|
||||||
|
recent [minLinesBeforeDuplicate]string
|
||||||
|
fuzzy [fuzzyDuplicateWindow][]string
|
||||||
|
running bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func dwarfFortress(ctx context.Context, buffer *dataBuffer, ch chan<- string) {
|
||||||
|
addch := make(chan string, 100)
|
||||||
|
debugch := make(chan struct{})
|
||||||
|
|
||||||
|
go watchLog(ctx, addch)
|
||||||
|
go watchDebug(ctx, debugch)
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
runGame(ctx, buffer, ch, addch, debugch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func runGame(ctx context.Context, buffer *dataBuffer, ch chan<- string, addch <-chan string, debugch <-chan struct{}) {
|
||||||
|
cmd := exec.CommandContext(ctx, "/df_linux/dfhack")
|
||||||
|
cmd.Env = append(cmd.Env, "TERM=xterm-256color")
|
||||||
|
cmd.Dir = "/df_linux"
|
||||||
|
|
||||||
|
f, err := pty.Start(cmd)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer logErrorD(f.Close, "Closing Pseudo-TTY:")
|
||||||
|
|
||||||
|
exited := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
exited <- cmd.Wait()
|
||||||
|
}()
|
||||||
|
|
||||||
|
defer logErrorD(clearSaves, "Removing saved worlds:")
|
||||||
|
|
||||||
|
signal := func(s os.Signal) {
|
||||||
|
logError(cmd.Process.Signal(s), "Sending "+s.String()+":")
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.running = true
|
||||||
|
first := true
|
||||||
|
|
||||||
|
for {
|
||||||
|
var nextLine string
|
||||||
|
out := ch
|
||||||
|
if len(buffer.queue) == 0 {
|
||||||
|
out = nil
|
||||||
|
} else {
|
||||||
|
nextLine = buffer.queue[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-time.After(time.Minute * 30):
|
||||||
|
if buffer.running {
|
||||||
|
log.Println("30 minutes without any log output. Assuming DF is stuck. Resetting.")
|
||||||
|
signal(syscall.SIGTERM)
|
||||||
|
select {
|
||||||
|
case <-time.After(time.Minute):
|
||||||
|
log.Println("Process has not exited. Killing.")
|
||||||
|
signal(syscall.SIGKILL)
|
||||||
|
case <-exited:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case out <- nextLine:
|
||||||
|
buffer.queue = buffer.queue[1:]
|
||||||
|
checkQueueLength(buffer, signal)
|
||||||
|
|
||||||
|
case line := <-addch:
|
||||||
|
if isDuplicate(buffer, line) {
|
||||||
|
log.Println("Duplicate detected:", line)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if first || len(buffer.queue) == 0 {
|
||||||
|
log.Println("First toot queued:", line)
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.queue = append(buffer.queue, line)
|
||||||
|
checkQueueLength(buffer, signal)
|
||||||
|
|
||||||
|
case err := <-exited:
|
||||||
|
log.Println("Dwarf Fortress process exited:", err)
|
||||||
|
return
|
||||||
|
|
||||||
|
case <-debugch:
|
||||||
|
signal(syscall.SIGKILL)
|
||||||
|
if err := os.Remove("/df_linux/df-ai-debug.log"); err != nil {
|
||||||
|
log.Println("Removing debug log:", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func isDuplicate(buffer *dataBuffer, line string) bool {
|
||||||
|
if minLinesBeforeDuplicate == 0 && fuzzyDuplicateWindow == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
firstLine := line[:strings.IndexByte(line, '\n')]
|
||||||
|
for _, dup := range buffer.recent {
|
||||||
|
if dup == firstLine {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
firstLineWords := strings.Fields(firstLine)
|
||||||
|
fuzzy := 0
|
||||||
|
for _, dup := range buffer.fuzzy {
|
||||||
|
if isFuzzyDuplicate(dup, firstLineWords) {
|
||||||
|
fuzzy++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if fuzzy > maxFuzzyDuplicates {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(buffer.recent) != 0 {
|
||||||
|
copy(buffer.recent[:], buffer.recent[1:])
|
||||||
|
buffer.recent[len(buffer.recent)-1] = firstLine
|
||||||
|
}
|
||||||
|
if len(buffer.fuzzy) != 0 {
|
||||||
|
copy(buffer.fuzzy[:], buffer.fuzzy[1:])
|
||||||
|
buffer.fuzzy[len(buffer.fuzzy)-1] = firstLineWords
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func isFuzzyDuplicate(dup, words []string) bool {
|
||||||
|
// Only allow changes, not additions or deletions, to simplify this.
|
||||||
|
if len(dup) != len(words) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
different := 0
|
||||||
|
for i := range dup {
|
||||||
|
if dup[i] != words[i] {
|
||||||
|
different++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return different <= maxFuzzyDifferentWords
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkQueueLength(buffer *dataBuffer, signal func(os.Signal)) {
|
||||||
|
if l := len(buffer.queue); l%100 == 0 && (buffer.threshold >= l+100 || buffer.threshold <= l-100) {
|
||||||
|
buffer.threshold = l
|
||||||
|
log.Println(l, "lines are buffered.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(buffer.queue) < minQueuedLines {
|
||||||
|
if !buffer.running {
|
||||||
|
log.Println("Unsuspending Dwarf Fortress")
|
||||||
|
buffer.running = true
|
||||||
|
}
|
||||||
|
signal(syscall.SIGCONT)
|
||||||
|
} else if len(buffer.queue) > maxQueuedLines {
|
||||||
|
if buffer.running {
|
||||||
|
log.Println("Suspending Dwarf Fortress")
|
||||||
|
buffer.running = false
|
||||||
|
}
|
||||||
|
signal(syscall.SIGSTOP)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func watchDebug(ctx context.Context, ch chan<- struct{}) {
|
||||||
|
for {
|
||||||
|
// Wait at least a minute between kills to make sure there's time to clean up.
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-time.After(time.Minute):
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := tail.TailFile("/df_linux/df-ai-debug.log", tail.Config{
|
||||||
|
Follow: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case first := <-f.Lines:
|
||||||
|
log.Println("df-ai crashed! debug log follows:")
|
||||||
|
go func() {
|
||||||
|
f.Kill(f.StopAtEOF())
|
||||||
|
f.Cleanup()
|
||||||
|
}()
|
||||||
|
fmt.Println(first.Text)
|
||||||
|
for line := range f.Lines {
|
||||||
|
fmt.Println(line.Text)
|
||||||
|
}
|
||||||
|
|
||||||
|
ch <- struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func watchLog(ctx context.Context, ch chan<- string) {
|
||||||
|
f, err := tail.TailFile("/df_linux/gamelog.txt", tail.Config{
|
||||||
|
ReOpen: true,
|
||||||
|
Follow: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer f.Cleanup()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-ctx.Done()
|
||||||
|
f.Kill(ctx.Err())
|
||||||
|
}()
|
||||||
|
|
||||||
|
for line := range f.Lines {
|
||||||
|
if line.Err != nil {
|
||||||
|
log.Println(line.Err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
text := mapCP437(strings.TrimSpace(line.Text))
|
||||||
|
|
||||||
|
// Chatter messages are formatted as "Urist McName, Occupation: It was inevitable."
|
||||||
|
if i, j := strings.Index(text, ", "), strings.Index(text, ": "); i > 0 && j > i {
|
||||||
|
ch <- text[j+2:] + "\n\u2014 " + text[:j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
it-was-inevitable/main.go
Executable file
50
it-was-inevitable/main.go
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cleanup()
|
||||||
|
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
sigch := make(chan os.Signal, 1)
|
||||||
|
defer signal.Stop(sigch)
|
||||||
|
|
||||||
|
signal.Notify(sigch, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
|
select {
|
||||||
|
case sig := <-sigch:
|
||||||
|
log.Println(sig, "- cleaning up")
|
||||||
|
case <-ctx.Done():
|
||||||
|
}
|
||||||
|
|
||||||
|
cancel()
|
||||||
|
}()
|
||||||
|
|
||||||
|
buffer := &dataBuffer{
|
||||||
|
queue: make([]string, 0, maxQueuedLines),
|
||||||
|
}
|
||||||
|
|
||||||
|
ch := make(chan string)
|
||||||
|
go dwarfFortress(ctx, buffer, ch)
|
||||||
|
|
||||||
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
select {
|
||||||
|
case <-r.Context().Done():
|
||||||
|
// Client went away before a message was available.
|
||||||
|
case line := <-ch:
|
||||||
|
// Abuse http.Error to just write a textual response.
|
||||||
|
http.Error(w, line, http.StatusOK)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
http.ListenAndServe(":1556", nil)
|
||||||
|
}
|
24
it-was-inevitable/run.sh
Executable file
24
it-was-inevitable/run.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mode=$1
|
||||||
|
|
||||||
|
if [[ -z "$mode" ]]; then
|
||||||
|
echo 'No tag given. Changing command to ./run.bash example.'
|
||||||
|
mode=dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker build -t benlubar/it_was_inevitable .
|
||||||
|
if [[ "$mode" == "dev" ]]; then
|
||||||
|
docker run --rm -ti \
|
||||||
|
--security-opt seccomp="$(pwd)/seccomp.json" \
|
||||||
|
-p 1556:8080 \
|
||||||
|
benlubar/it_was_inevitable
|
||||||
|
else
|
||||||
|
docker stop it_was_inevitable_ || :
|
||||||
|
docker rm -v it_was_inevitable_ || :
|
||||||
|
docker run -d --name it_was_inevitable_ \
|
||||||
|
--restart unless-stopped \
|
||||||
|
--security-opt seccomp="$(pwd)/seccomp.json" \
|
||||||
|
-p 1556:8080 \
|
||||||
|
benlubar/it_was_inevitable
|
||||||
|
fi
|
768
it-was-inevitable/seccomp.json
Executable file
768
it-was-inevitable/seccomp.json
Executable file
@ -0,0 +1,768 @@
|
|||||||
|
{
|
||||||
|
"defaultAction": "SCMP_ACT_ERRNO",
|
||||||
|
"archMap": [
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_X86_64",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_X86",
|
||||||
|
"SCMP_ARCH_X32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_AARCH64",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_ARM"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_MIPS64",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_MIPS",
|
||||||
|
"SCMP_ARCH_MIPS64N32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_MIPS64N32",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_MIPS",
|
||||||
|
"SCMP_ARCH_MIPS64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_MIPSEL64",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_MIPSEL",
|
||||||
|
"SCMP_ARCH_MIPSEL64N32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_MIPSEL64N32",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_MIPSEL",
|
||||||
|
"SCMP_ARCH_MIPSEL64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"architecture": "SCMP_ARCH_S390X",
|
||||||
|
"subArchitectures": [
|
||||||
|
"SCMP_ARCH_S390"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"syscalls": [
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"accept",
|
||||||
|
"accept4",
|
||||||
|
"access",
|
||||||
|
"adjtimex",
|
||||||
|
"alarm",
|
||||||
|
"bind",
|
||||||
|
"brk",
|
||||||
|
"capget",
|
||||||
|
"capset",
|
||||||
|
"chdir",
|
||||||
|
"chmod",
|
||||||
|
"chown",
|
||||||
|
"chown32",
|
||||||
|
"clock_getres",
|
||||||
|
"clock_gettime",
|
||||||
|
"clock_nanosleep",
|
||||||
|
"close",
|
||||||
|
"connect",
|
||||||
|
"copy_file_range",
|
||||||
|
"creat",
|
||||||
|
"dup",
|
||||||
|
"dup2",
|
||||||
|
"dup3",
|
||||||
|
"epoll_create",
|
||||||
|
"epoll_create1",
|
||||||
|
"epoll_ctl",
|
||||||
|
"epoll_ctl_old",
|
||||||
|
"epoll_pwait",
|
||||||
|
"epoll_wait",
|
||||||
|
"epoll_wait_old",
|
||||||
|
"eventfd",
|
||||||
|
"eventfd2",
|
||||||
|
"execve",
|
||||||
|
"execveat",
|
||||||
|
"exit",
|
||||||
|
"exit_group",
|
||||||
|
"faccessat",
|
||||||
|
"fadvise64",
|
||||||
|
"fadvise64_64",
|
||||||
|
"fallocate",
|
||||||
|
"fanotify_mark",
|
||||||
|
"fchdir",
|
||||||
|
"fchmod",
|
||||||
|
"fchmodat",
|
||||||
|
"fchown",
|
||||||
|
"fchown32",
|
||||||
|
"fchownat",
|
||||||
|
"fcntl",
|
||||||
|
"fcntl64",
|
||||||
|
"fdatasync",
|
||||||
|
"fgetxattr",
|
||||||
|
"flistxattr",
|
||||||
|
"flock",
|
||||||
|
"fork",
|
||||||
|
"fremovexattr",
|
||||||
|
"fsetxattr",
|
||||||
|
"fstat",
|
||||||
|
"fstat64",
|
||||||
|
"fstatat64",
|
||||||
|
"fstatfs",
|
||||||
|
"fstatfs64",
|
||||||
|
"fsync",
|
||||||
|
"ftruncate",
|
||||||
|
"ftruncate64",
|
||||||
|
"futex",
|
||||||
|
"futimesat",
|
||||||
|
"getcpu",
|
||||||
|
"getcwd",
|
||||||
|
"getdents",
|
||||||
|
"getdents64",
|
||||||
|
"getegid",
|
||||||
|
"getegid32",
|
||||||
|
"geteuid",
|
||||||
|
"geteuid32",
|
||||||
|
"getgid",
|
||||||
|
"getgid32",
|
||||||
|
"getgroups",
|
||||||
|
"getgroups32",
|
||||||
|
"getitimer",
|
||||||
|
"getpeername",
|
||||||
|
"getpgid",
|
||||||
|
"getpgrp",
|
||||||
|
"getpid",
|
||||||
|
"getppid",
|
||||||
|
"getpriority",
|
||||||
|
"getrandom",
|
||||||
|
"getresgid",
|
||||||
|
"getresgid32",
|
||||||
|
"getresuid",
|
||||||
|
"getresuid32",
|
||||||
|
"getrlimit",
|
||||||
|
"get_robust_list",
|
||||||
|
"getrusage",
|
||||||
|
"getsid",
|
||||||
|
"getsockname",
|
||||||
|
"getsockopt",
|
||||||
|
"get_thread_area",
|
||||||
|
"gettid",
|
||||||
|
"gettimeofday",
|
||||||
|
"getuid",
|
||||||
|
"getuid32",
|
||||||
|
"getxattr",
|
||||||
|
"inotify_add_watch",
|
||||||
|
"inotify_init",
|
||||||
|
"inotify_init1",
|
||||||
|
"inotify_rm_watch",
|
||||||
|
"io_cancel",
|
||||||
|
"ioctl",
|
||||||
|
"io_destroy",
|
||||||
|
"io_getevents",
|
||||||
|
"ioprio_get",
|
||||||
|
"ioprio_set",
|
||||||
|
"io_setup",
|
||||||
|
"io_submit",
|
||||||
|
"ipc",
|
||||||
|
"kill",
|
||||||
|
"lchown",
|
||||||
|
"lchown32",
|
||||||
|
"lgetxattr",
|
||||||
|
"link",
|
||||||
|
"linkat",
|
||||||
|
"listen",
|
||||||
|
"listxattr",
|
||||||
|
"llistxattr",
|
||||||
|
"_llseek",
|
||||||
|
"lremovexattr",
|
||||||
|
"lseek",
|
||||||
|
"lsetxattr",
|
||||||
|
"lstat",
|
||||||
|
"lstat64",
|
||||||
|
"madvise",
|
||||||
|
"memfd_create",
|
||||||
|
"mincore",
|
||||||
|
"mkdir",
|
||||||
|
"mkdirat",
|
||||||
|
"mknod",
|
||||||
|
"mknodat",
|
||||||
|
"mlock",
|
||||||
|
"mlock2",
|
||||||
|
"mlockall",
|
||||||
|
"mmap",
|
||||||
|
"mmap2",
|
||||||
|
"mprotect",
|
||||||
|
"mq_getsetattr",
|
||||||
|
"mq_notify",
|
||||||
|
"mq_open",
|
||||||
|
"mq_timedreceive",
|
||||||
|
"mq_timedsend",
|
||||||
|
"mq_unlink",
|
||||||
|
"mremap",
|
||||||
|
"msgctl",
|
||||||
|
"msgget",
|
||||||
|
"msgrcv",
|
||||||
|
"msgsnd",
|
||||||
|
"msync",
|
||||||
|
"munlock",
|
||||||
|
"munlockall",
|
||||||
|
"munmap",
|
||||||
|
"nanosleep",
|
||||||
|
"newfstatat",
|
||||||
|
"_newselect",
|
||||||
|
"open",
|
||||||
|
"openat",
|
||||||
|
"pause",
|
||||||
|
"pipe",
|
||||||
|
"pipe2",
|
||||||
|
"poll",
|
||||||
|
"ppoll",
|
||||||
|
"prctl",
|
||||||
|
"pread64",
|
||||||
|
"preadv",
|
||||||
|
"preadv2",
|
||||||
|
"prlimit64",
|
||||||
|
"pselect6",
|
||||||
|
"pwrite64",
|
||||||
|
"pwritev",
|
||||||
|
"pwritev2",
|
||||||
|
"read",
|
||||||
|
"readahead",
|
||||||
|
"readlink",
|
||||||
|
"readlinkat",
|
||||||
|
"readv",
|
||||||
|
"recv",
|
||||||
|
"recvfrom",
|
||||||
|
"recvmmsg",
|
||||||
|
"recvmsg",
|
||||||
|
"remap_file_pages",
|
||||||
|
"removexattr",
|
||||||
|
"rename",
|
||||||
|
"renameat",
|
||||||
|
"renameat2",
|
||||||
|
"restart_syscall",
|
||||||
|
"rmdir",
|
||||||
|
"rt_sigaction",
|
||||||
|
"rt_sigpending",
|
||||||
|
"rt_sigprocmask",
|
||||||
|
"rt_sigqueueinfo",
|
||||||
|
"rt_sigreturn",
|
||||||
|
"rt_sigsuspend",
|
||||||
|
"rt_sigtimedwait",
|
||||||
|
"rt_tgsigqueueinfo",
|
||||||
|
"sched_getaffinity",
|
||||||
|
"sched_getattr",
|
||||||
|
"sched_getparam",
|
||||||
|
"sched_get_priority_max",
|
||||||
|
"sched_get_priority_min",
|
||||||
|
"sched_getscheduler",
|
||||||
|
"sched_rr_get_interval",
|
||||||
|
"sched_setaffinity",
|
||||||
|
"sched_setattr",
|
||||||
|
"sched_setparam",
|
||||||
|
"sched_setscheduler",
|
||||||
|
"sched_yield",
|
||||||
|
"seccomp",
|
||||||
|
"select",
|
||||||
|
"semctl",
|
||||||
|
"semget",
|
||||||
|
"semop",
|
||||||
|
"semtimedop",
|
||||||
|
"send",
|
||||||
|
"sendfile",
|
||||||
|
"sendfile64",
|
||||||
|
"sendmmsg",
|
||||||
|
"sendmsg",
|
||||||
|
"sendto",
|
||||||
|
"setfsgid",
|
||||||
|
"setfsgid32",
|
||||||
|
"setfsuid",
|
||||||
|
"setfsuid32",
|
||||||
|
"setgid",
|
||||||
|
"setgid32",
|
||||||
|
"setgroups",
|
||||||
|
"setgroups32",
|
||||||
|
"setitimer",
|
||||||
|
"setpgid",
|
||||||
|
"setpriority",
|
||||||
|
"setregid",
|
||||||
|
"setregid32",
|
||||||
|
"setresgid",
|
||||||
|
"setresgid32",
|
||||||
|
"setresuid",
|
||||||
|
"setresuid32",
|
||||||
|
"setreuid",
|
||||||
|
"setreuid32",
|
||||||
|
"setrlimit",
|
||||||
|
"set_robust_list",
|
||||||
|
"setsid",
|
||||||
|
"setsockopt",
|
||||||
|
"set_thread_area",
|
||||||
|
"set_tid_address",
|
||||||
|
"setuid",
|
||||||
|
"setuid32",
|
||||||
|
"setxattr",
|
||||||
|
"shmat",
|
||||||
|
"shmctl",
|
||||||
|
"shmdt",
|
||||||
|
"shmget",
|
||||||
|
"shutdown",
|
||||||
|
"sigaltstack",
|
||||||
|
"signalfd",
|
||||||
|
"signalfd4",
|
||||||
|
"sigreturn",
|
||||||
|
"socket",
|
||||||
|
"socketcall",
|
||||||
|
"socketpair",
|
||||||
|
"splice",
|
||||||
|
"stat",
|
||||||
|
"stat64",
|
||||||
|
"statfs",
|
||||||
|
"statfs64",
|
||||||
|
"statx",
|
||||||
|
"symlink",
|
||||||
|
"symlinkat",
|
||||||
|
"sync",
|
||||||
|
"sync_file_range",
|
||||||
|
"syncfs",
|
||||||
|
"sysinfo",
|
||||||
|
"syslog",
|
||||||
|
"tee",
|
||||||
|
"tgkill",
|
||||||
|
"time",
|
||||||
|
"timer_create",
|
||||||
|
"timer_delete",
|
||||||
|
"timerfd_create",
|
||||||
|
"timerfd_gettime",
|
||||||
|
"timerfd_settime",
|
||||||
|
"timer_getoverrun",
|
||||||
|
"timer_gettime",
|
||||||
|
"timer_settime",
|
||||||
|
"times",
|
||||||
|
"tkill",
|
||||||
|
"truncate",
|
||||||
|
"truncate64",
|
||||||
|
"ugetrlimit",
|
||||||
|
"umask",
|
||||||
|
"uname",
|
||||||
|
"unlink",
|
||||||
|
"unlinkat",
|
||||||
|
"utime",
|
||||||
|
"utimensat",
|
||||||
|
"utimes",
|
||||||
|
"vfork",
|
||||||
|
"vmsplice",
|
||||||
|
"wait4",
|
||||||
|
"waitid",
|
||||||
|
"waitpid",
|
||||||
|
"write",
|
||||||
|
"writev"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 0,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 8,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 131072,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 131080,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 262144,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "[ADDR_NO_RANDOMIZE] Allow disabling ASLR (Address Space Layout Randomization), which DFHack needs in order to run.",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"personality"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 4294967295,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"sync_file_range2"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"ppc64le"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"arm_fadvise64_64",
|
||||||
|
"arm_sync_file_range",
|
||||||
|
"sync_file_range2",
|
||||||
|
"breakpoint",
|
||||||
|
"cacheflush",
|
||||||
|
"set_tls"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"arm",
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"arch_prctl"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"amd64",
|
||||||
|
"x32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"modify_ldt"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"amd64",
|
||||||
|
"x32",
|
||||||
|
"x86"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"s390_pci_mmio_read",
|
||||||
|
"s390_pci_mmio_write",
|
||||||
|
"s390_runtime_instr"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"s390",
|
||||||
|
"s390x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"open_by_handle_at"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_DAC_READ_SEARCH"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"bpf",
|
||||||
|
"clone",
|
||||||
|
"fanotify_init",
|
||||||
|
"lookup_dcookie",
|
||||||
|
"mount",
|
||||||
|
"name_to_handle_at",
|
||||||
|
"perf_event_open",
|
||||||
|
"quotactl",
|
||||||
|
"setdomainname",
|
||||||
|
"sethostname",
|
||||||
|
"setns",
|
||||||
|
"umount",
|
||||||
|
"umount2",
|
||||||
|
"unshare"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_ADMIN"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"clone"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"value": 2080505856,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_MASKED_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {},
|
||||||
|
"excludes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_ADMIN"
|
||||||
|
],
|
||||||
|
"arches": [
|
||||||
|
"s390",
|
||||||
|
"s390x"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"clone"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"value": 2080505856,
|
||||||
|
"valueTwo": 0,
|
||||||
|
"op": "SCMP_CMP_MASKED_EQ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comment": "s390 parameter ordering for clone is different",
|
||||||
|
"includes": {
|
||||||
|
"arches": [
|
||||||
|
"s390",
|
||||||
|
"s390x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_ADMIN"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"reboot"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_BOOT"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"chroot"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_CHROOT"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"delete_module",
|
||||||
|
"init_module",
|
||||||
|
"finit_module",
|
||||||
|
"query_module"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_MODULE"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"acct"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_PACCT"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"kcmp",
|
||||||
|
"process_vm_readv",
|
||||||
|
"process_vm_writev",
|
||||||
|
"ptrace"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_PTRACE"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"iopl",
|
||||||
|
"ioperm"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_RAWIO"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"settimeofday",
|
||||||
|
"stime",
|
||||||
|
"clock_settime"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_TIME"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"names": [
|
||||||
|
"vhangup"
|
||||||
|
],
|
||||||
|
"action": "SCMP_ACT_ALLOW",
|
||||||
|
"args": [],
|
||||||
|
"comment": "",
|
||||||
|
"includes": {
|
||||||
|
"caps": [
|
||||||
|
"CAP_SYS_TTY_CONFIG"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"excludes": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
11
log.ts
Normal file
11
log.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import chalk from "chalk"
|
||||||
|
import { format } from "date-fns"
|
||||||
|
|
||||||
|
const rawLog = (level, main) => {
|
||||||
|
const timestamp = format(new Date(), "HH:mm:ss")
|
||||||
|
console.log(chalk`{bold ${timestamp}} ${level} ${main}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const info = x => rawLog(chalk.black.bgBlueBright("INFO"), x)
|
||||||
|
export const warning = x => rawLog(chalk.black.bgKeyword("orange")("WARN"), x)
|
||||||
|
export const error = x => rawLog(chalk.black.bgRedBright("FAIL"), x)
|
30
luamin-api.js
Executable file
30
luamin-api.js
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
const express = require("express")
|
||||||
|
const luamin = require("luamin")
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
|
||||||
|
app.use(function(req, res, next) {
|
||||||
|
var data = ''
|
||||||
|
req.setEncoding('utf8')
|
||||||
|
req.on('data', chunk => {
|
||||||
|
data += chunk
|
||||||
|
})
|
||||||
|
req.on('end', () => {
|
||||||
|
req.body = data
|
||||||
|
next()
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
app.post("*", (req, res) => {
|
||||||
|
console.log("Input length:", req.body.length)
|
||||||
|
try {
|
||||||
|
const min = luamin.minify(req.body)
|
||||||
|
console.log("Output length:", min.length)
|
||||||
|
res.send(min)
|
||||||
|
} catch(e) {
|
||||||
|
res.status(400).send(e.toString())
|
||||||
|
}
|
||||||
|
res.end()
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(12432)
|
253
naming.elm
Executable file
253
naming.elm
Executable file
@ -0,0 +1,253 @@
|
|||||||
|
module RandomNames exposing (..)
|
||||||
|
|
||||||
|
import List.Nonempty as Nonempty
|
||||||
|
|
||||||
|
-- Docker container name generator lists + Ubuntu release names
|
||||||
|
adjectives =
|
||||||
|
[ "admiring"
|
||||||
|
, "adoring"
|
||||||
|
, "affectionate"
|
||||||
|
, "agitated"
|
||||||
|
, "amazing"
|
||||||
|
, "angry"
|
||||||
|
, "artful"
|
||||||
|
, "awesome"
|
||||||
|
, "blissful"
|
||||||
|
, "boring"
|
||||||
|
, "brave"
|
||||||
|
, "breezy"
|
||||||
|
, "clever"
|
||||||
|
, "cocky"
|
||||||
|
, "compassionate"
|
||||||
|
, "competent"
|
||||||
|
, "condescending"
|
||||||
|
, "confident"
|
||||||
|
, "crafty"
|
||||||
|
, "cranky"
|
||||||
|
, "dapper"
|
||||||
|
, "dazzling"
|
||||||
|
, "determined"
|
||||||
|
, "distracted"
|
||||||
|
, "dreamy"
|
||||||
|
, "eager"
|
||||||
|
, "ecstatic",
|
||||||
|
, "edgy"
|
||||||
|
, "elastic"
|
||||||
|
, "elated"
|
||||||
|
, "elegant"
|
||||||
|
, "eloquent"
|
||||||
|
, "epic"
|
||||||
|
, "feisty"
|
||||||
|
, "fervent"
|
||||||
|
, "festive"
|
||||||
|
, "flamboyant"
|
||||||
|
, "focused"
|
||||||
|
, "friendly"
|
||||||
|
, "frosty"
|
||||||
|
, "gallant"
|
||||||
|
, "gifted"
|
||||||
|
, "goofy"
|
||||||
|
, "gracious"
|
||||||
|
, "gutsy"
|
||||||
|
, "happy"
|
||||||
|
, "hardcore"
|
||||||
|
, "hardy"
|
||||||
|
, "heuristic"
|
||||||
|
, "hoary"
|
||||||
|
, "hopeful"
|
||||||
|
, "hungry"
|
||||||
|
, "infallible"
|
||||||
|
, "inspiring"
|
||||||
|
, "intrepid"
|
||||||
|
, "jaunty"
|
||||||
|
, "jolly"
|
||||||
|
, "jovial"
|
||||||
|
, "karmic"
|
||||||
|
, "keen"
|
||||||
|
, "kind"
|
||||||
|
, "laughing"
|
||||||
|
, "loving"
|
||||||
|
, "lucid"
|
||||||
|
, "maverick"
|
||||||
|
, "mystifying"
|
||||||
|
, "modest"
|
||||||
|
, "musing"
|
||||||
|
, "naughty"
|
||||||
|
, "nervous"
|
||||||
|
, "natty"
|
||||||
|
, "nifty"
|
||||||
|
, "nostalgic"
|
||||||
|
, "objective"
|
||||||
|
, "oneiric"
|
||||||
|
, "optimistic"
|
||||||
|
, "peaceful"
|
||||||
|
, "pedantic"
|
||||||
|
, "pensive"
|
||||||
|
, "practical"
|
||||||
|
, "precise"
|
||||||
|
, "priceless"
|
||||||
|
, "quantal"
|
||||||
|
, "quirky"
|
||||||
|
, "quizzical"
|
||||||
|
, "raring"
|
||||||
|
, "relaxed"
|
||||||
|
, "reverent"
|
||||||
|
, "romantic"
|
||||||
|
, "sad"
|
||||||
|
, "saucy"
|
||||||
|
, "serene"
|
||||||
|
, "sharp"
|
||||||
|
, "silly"
|
||||||
|
, "sleepy"
|
||||||
|
, "stoic"
|
||||||
|
, "stupefied"
|
||||||
|
, "suspicious"
|
||||||
|
, "tender"
|
||||||
|
, "thirsty"
|
||||||
|
, "trusty"
|
||||||
|
, "trusting"
|
||||||
|
, "unruffled"
|
||||||
|
, "upbeat"
|
||||||
|
, "utopic"
|
||||||
|
, "vibrant"
|
||||||
|
, "vigilant"
|
||||||
|
, "vigorous"
|
||||||
|
, "vivid"
|
||||||
|
, "warty"
|
||||||
|
, "wily"
|
||||||
|
, "wizardly"
|
||||||
|
, "wonderful"
|
||||||
|
, "xenial"
|
||||||
|
, "xenodochial"
|
||||||
|
, "yakkety"
|
||||||
|
, "youthful"
|
||||||
|
, "zealous"
|
||||||
|
, "zesty"
|
||||||
|
, "zen"
|
||||||
|
]
|
||||||
|
|
||||||
|
-- http://www.birdphotography.com/birdlist2.html
|
||||||
|
birds =
|
||||||
|
[ "albatross"
|
||||||
|
, "auklet"
|
||||||
|
, "bittern"
|
||||||
|
, "blackbird"
|
||||||
|
, "bluebird"
|
||||||
|
, "booby"
|
||||||
|
, "bunting"
|
||||||
|
, "chickadee"
|
||||||
|
, "cormorant"
|
||||||
|
, "cowbird"
|
||||||
|
, "crow"
|
||||||
|
, "dove"
|
||||||
|
, "dowitcher"
|
||||||
|
, "duck"
|
||||||
|
, "eagle"
|
||||||
|
, "egret"
|
||||||
|
, "falcon"
|
||||||
|
, "finch"
|
||||||
|
, "flycatcher"
|
||||||
|
, "gallinule"
|
||||||
|
, "gnatcatcher"
|
||||||
|
, "godwit"
|
||||||
|
, "goldeneye"
|
||||||
|
, "goldfinch"
|
||||||
|
, "goose"
|
||||||
|
, "grackle"
|
||||||
|
, "grebe"
|
||||||
|
, "grosbeak"
|
||||||
|
, "gull"
|
||||||
|
, "hawk"
|
||||||
|
, "heron"
|
||||||
|
, "hummingbird"
|
||||||
|
, "ibis"
|
||||||
|
, "jaeger"
|
||||||
|
, "jay"
|
||||||
|
, "junco"
|
||||||
|
, "kingbird"
|
||||||
|
, "kinglet"
|
||||||
|
, "kite"
|
||||||
|
, "loon"
|
||||||
|
, "magpie"
|
||||||
|
, "meadowlark"
|
||||||
|
, "merganser"
|
||||||
|
, "murrelet"
|
||||||
|
, "nuthatch"
|
||||||
|
, "oriole"
|
||||||
|
, "owl"
|
||||||
|
, "pelican"
|
||||||
|
, "petrel"
|
||||||
|
, "pewee"
|
||||||
|
, "phalarope"
|
||||||
|
, "phoebe"
|
||||||
|
, "pigeon"
|
||||||
|
, "pipit"
|
||||||
|
, "plover"
|
||||||
|
, "puffin"
|
||||||
|
, "quail"
|
||||||
|
, "rail"
|
||||||
|
, "raven"
|
||||||
|
, "redstart"
|
||||||
|
, "sandpiper"
|
||||||
|
, "sapsucker"
|
||||||
|
, "scaup"
|
||||||
|
, "scoter"
|
||||||
|
, "shearwater"
|
||||||
|
, "shrike"
|
||||||
|
, "skua"
|
||||||
|
, "sparrow"
|
||||||
|
, "storm-petrel"
|
||||||
|
, "swallow"
|
||||||
|
, "swift"
|
||||||
|
, "tanager"
|
||||||
|
, "teal"
|
||||||
|
, "tern"
|
||||||
|
, "thrasher"
|
||||||
|
, "thrush"
|
||||||
|
, "titmouse"
|
||||||
|
, "towhee"
|
||||||
|
, "turnstone"
|
||||||
|
, "vireo"
|
||||||
|
, "vulture"
|
||||||
|
, "warbler"
|
||||||
|
, "wigeon"
|
||||||
|
, "woodpecker"
|
||||||
|
, "wren"
|
||||||
|
, "yellowlegs"
|
||||||
|
]
|
||||||
|
|
||||||
|
greekLetters =
|
||||||
|
[ "alpha"
|
||||||
|
, "beta"
|
||||||
|
, "gamma"
|
||||||
|
, "delta"
|
||||||
|
, "epsilon"
|
||||||
|
, "zeta"
|
||||||
|
, "eta"
|
||||||
|
, "theta"
|
||||||
|
, "iota"
|
||||||
|
, "kappa"
|
||||||
|
, "lambda"
|
||||||
|
, "mu"
|
||||||
|
, "nu"
|
||||||
|
, "xi"
|
||||||
|
, "omicron"
|
||||||
|
, "pi"
|
||||||
|
, "rho"
|
||||||
|
, "sigma"
|
||||||
|
, "tau"
|
||||||
|
, "upsilon"
|
||||||
|
, "phi"
|
||||||
|
, "chi"
|
||||||
|
, "psi"
|
||||||
|
, "omega"
|
||||||
|
]
|
||||||
|
|
||||||
|
pick : List a -> Random.Generator a
|
||||||
|
pick =
|
||||||
|
Nonempty.fromList >> Nonempty.sample
|
||||||
|
|
||||||
|
name : String -> List (List String) -> Random.Generator String
|
||||||
|
name separator lists =
|
||||||
|
List.map pick lists
|
||||||
|
|> String.join separator
|
1
realtau.txt
Executable file
1
realtau.txt
Executable file
File diff suppressed because one or more lines are too long
55
thesaurwhy.py
Executable file
55
thesaurwhy.py
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
from requests_futures.sessions import FuturesSession
|
||||||
|
import concurrent.futures as futures
|
||||||
|
import random
|
||||||
|
try:
|
||||||
|
import cPickle as pickle
|
||||||
|
except ImportError:
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
try:
|
||||||
|
words_to_synonyms = pickle.load(open(".wtscache"))
|
||||||
|
synonyms_to_words = pickle.load(open(".stwcache"))
|
||||||
|
except:
|
||||||
|
words_to_synonyms = {}
|
||||||
|
synonyms_to_words = {}
|
||||||
|
|
||||||
|
def add_to_key(d, k, v):
|
||||||
|
d[k] = d.get(k, set()).union(set(v))
|
||||||
|
|
||||||
|
def add_synonyms(syns, word):
|
||||||
|
for syn in syns:
|
||||||
|
add_to_key(synonyms_to_words, syn, [word])
|
||||||
|
add_to_key(words_to_synonyms, word, syns)
|
||||||
|
|
||||||
|
def concat(list_of_lists):
|
||||||
|
return sum(list_of_lists, [])
|
||||||
|
|
||||||
|
def add_words(words):
|
||||||
|
s = FuturesSession(max_workers=100)
|
||||||
|
future_to_word = {s.get("https://api.datamuse.com/words", params={"ml": word}): word for word in words}
|
||||||
|
future_to_word.update({s.get("https://api.datamuse.com/words", params={"ml": word, "v": "enwiki"}): word for word in words})
|
||||||
|
for future in futures.as_completed(future_to_word):
|
||||||
|
word = future_to_word[future]
|
||||||
|
try:
|
||||||
|
data = future.result().json()
|
||||||
|
except Exception as exc:
|
||||||
|
print(f"{exc} fetching {word}")
|
||||||
|
else:
|
||||||
|
add_synonyms([w["word"] for w in data], word)
|
||||||
|
|
||||||
|
def getattr_hook(obj, key):
|
||||||
|
results = list(synonyms_to_words.get(key, set()).union(words_to_synonyms.get(key, set())))
|
||||||
|
if len(results) > 0:
|
||||||
|
return obj.__getattribute__(random.choice(results))
|
||||||
|
else:
|
||||||
|
raise AttributeError(f"Attribute {key} not found.")
|
||||||
|
|
||||||
|
def wrap(obj):
|
||||||
|
add_words(dir(obj))
|
||||||
|
|
||||||
|
obj.__getattr__ = lambda key: getattr_hook(obj, key)
|
||||||
|
|
||||||
|
wrap(__builtins__)
|
||||||
|
print(words_to_synonyms["Exception"])
|
||||||
|
|
||||||
|
raise __builtins__.quibble("abcd")
|
12
unhex.py
Executable file
12
unhex.py
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import fileinput
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def process_char(c):
|
||||||
|
return c + random.choice(zalgo)
|
||||||
|
|
||||||
|
for line in fileinput.input():
|
||||||
|
#b = bytes()
|
||||||
|
#for i in range(0, len(line), 2):
|
||||||
|
# b.appendline[i:i+2]
|
||||||
|
sys.stdout.buffer.write(bytes.fromhex(line.replace("\n", "").replace(" ", "")))
|
106
wpdumpidx.rs
Normal file
106
wpdumpidx.rs
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
use rusqlite::types::ToSql;
|
||||||
|
use rusqlite::{params, Connection};
|
||||||
|
use std::io::BufRead;
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use regex::Regex;
|
||||||
|
use std::io::Seek;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref INDEX_LINE_RE: Regex = Regex::new(r"^(\d+):(\d+):(.+)$").unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn decompress_file(filename: &str) -> std::io::Result<std::io::BufReader<bzip2::bufread::BzDecoder<std::io::BufReader<std::fs::File>>>> {
|
||||||
|
let file = std::fs::File::open(filename)?;
|
||||||
|
let file = std::io::BufReader::new(file);
|
||||||
|
let file = bzip2::bufread::BzDecoder::new(file);
|
||||||
|
Ok(std::io::BufReader::new(file))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn import(filename: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
|
||||||
|
let file = decompress_file(filename)?;
|
||||||
|
|
||||||
|
let tx = conn.transaction()?;
|
||||||
|
tx.execute("DELETE FROM page_locations", params![])?;
|
||||||
|
|
||||||
|
for line in file.lines() {
|
||||||
|
let line = &(line)?;
|
||||||
|
let caps = INDEX_LINE_RE.captures(line).unwrap();
|
||||||
|
let title = String::from(caps.get(3).unwrap().as_str());
|
||||||
|
let start = caps.get(1).unwrap().as_str().parse::<i64>()?;
|
||||||
|
|
||||||
|
tx.execute("INSERT INTO page_locations (title, start) VALUES (?1, ?2)", params![title, start])?;
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.commit()?;
|
||||||
|
|
||||||
|
conn.execute("VACUUM", params![])?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn view(page: &str, conn: &mut Connection) -> Result<(), Box<std::error::Error>> {
|
||||||
|
let result: Option<rusqlite::Result<i64>> = conn.prepare("SELECT start FROM page_locations WHERE title = ?1")?.query_map(params![page], |row| {
|
||||||
|
Ok(row.get(0)?)
|
||||||
|
})?.nth(0);
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Some(start) => {
|
||||||
|
let start = start?;
|
||||||
|
let file = std::fs::File::open("data.bz2")?;
|
||||||
|
let mut file = std::io::BufReader::new(file);
|
||||||
|
file.seek(std::io::SeekFrom::Start(start as u64))?;
|
||||||
|
let file = bzip2::bufread::BzDecoder::new(file);
|
||||||
|
let file = std::io::BufReader::new(file);
|
||||||
|
|
||||||
|
for result in parse_mediawiki_dump::parse(file) {
|
||||||
|
match result {
|
||||||
|
Err(error) => {
|
||||||
|
eprintln!("Parse Error: {}", error);
|
||||||
|
break;
|
||||||
|
},
|
||||||
|
Ok(page) => if page.namespace == 0 && match &page.format {
|
||||||
|
None => false,
|
||||||
|
Some(format) => format == "text/x-wiki"
|
||||||
|
} && match &page.model {
|
||||||
|
None => false,
|
||||||
|
Some(model) => model == "wikitext"
|
||||||
|
} {
|
||||||
|
println!(
|
||||||
|
"The page {title:?} is an ordinary article with byte length {length}.",
|
||||||
|
title = page.title,
|
||||||
|
length = page.text.len()
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
println!("The page {:?} has something special to it.", page.title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
eprintln!("{} not found", page);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<(), Box<std::error::Error>> {
|
||||||
|
let mut conn = Connection::open("database.sqlite")?;
|
||||||
|
conn.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS page_locations (
|
||||||
|
title TEXT PRIMARY KEY,
|
||||||
|
start INTEGER
|
||||||
|
)",
|
||||||
|
params![],
|
||||||
|
)?;
|
||||||
|
|
||||||
|
let args: Vec<String> = std::env::args().collect();
|
||||||
|
|
||||||
|
match args[1].as_str() {
|
||||||
|
"import" => import("index.bz2", &mut conn)?,
|
||||||
|
"view" => view(&args[2], &mut conn)?,
|
||||||
|
_ => eprintln!("Invalid argument {}", args[1])
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
37
wssh.py
Executable file
37
wssh.py
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
import asyncio
|
||||||
|
import asyncio.subprocess
|
||||||
|
import websockets
|
||||||
|
import pty
|
||||||
|
|
||||||
|
def get_shell():
|
||||||
|
pty.spawn("/bin/fish")
|
||||||
|
return asyncio.create_subprocess_exec("/bin/fish", stdout=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, bufsize = 0)
|
||||||
|
|
||||||
|
async def input_handler(proc, ws):
|
||||||
|
while True:
|
||||||
|
msg = await ws.recv()
|
||||||
|
await ws.send(msg)
|
||||||
|
print(msg)
|
||||||
|
|
||||||
|
async def output_handler(proc, ws):
|
||||||
|
while True:
|
||||||
|
output = (await proc.stdout.readline()).decode("utf-8")
|
||||||
|
if output != "":
|
||||||
|
print(output)
|
||||||
|
await ws.send(output)
|
||||||
|
await ws.send("[PROCESS ENDED]")
|
||||||
|
|
||||||
|
async def shell_ws(ws, _):
|
||||||
|
proc = await get_shell()
|
||||||
|
|
||||||
|
done, pending = await asyncio.wait(
|
||||||
|
[asyncio.ensure_future(input_handler(proc, ws)), asyncio.ensure_future(output_handler(proc, ws))],
|
||||||
|
return_when=asyncio.FIRST_COMPLETED
|
||||||
|
)
|
||||||
|
|
||||||
|
for task in pending:
|
||||||
|
task.cancel()
|
||||||
|
|
||||||
|
server = websockets.serve(shell_ws, "localhost", 1234)
|
||||||
|
asyncio.get_event_loop().run_until_complete(server)
|
||||||
|
asyncio.get_event_loop().run_forever()
|
Loading…
x
Reference in New Issue
Block a user