<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
<<miniBrowser http://www.murga-linux.com/puppy/privmsg.php?mode=post&u=17722>>
<<popup "video" [[<<tiddler "AjaxAnimator online##video"$))]] arrow:''>>  <<tiddler PopOut with: "http://antimatter15.com/ajaxanimator/wave/" popout 700 900>><<miniBrowser hidecontrols http://antimatter15.com/ajaxanimator/wave/>>
/%
!video
<<miniBrowser http://www.youtube.com/embed/Gt6PLGk9Fqo>>
!end %/
/%<<image http://i.imgur.com/2Vtvo.png link:http://i.imgur.com/2Vtvo.png  2300>>%/
[img(100%+,auto)[http://i.imgur.com/2Vtvo.png link:http://i.imgur.com/2Vtvo.png]]
!!!DAW for Linux
[[Hints and Tricks|http://ardour.org/forum/19]]
{{floatleft{
<html><object width="480" height="385"><param name="movie" value="http://www.youtube.com/p/A1275563EB9775E1?hl=da_DK&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/p/A1275563EB9775E1?hl=da_DK&fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></html>
}}}
{{center{<<image ArdourImage link:"http://ardour.org/">>}}}
<<tiddler SpMiniBrowser with:"http://ardour.org/forum/17" "How Do I" "http://ardour.org/files/Ardour_Zen_logo.png">>
>see also <<tiddler pop with: Videoes [[Ardour##DAW for Linux]]>>
<svg width="242" height="233" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <g>
  <title>Layer 1</title>
  <image xlink:href="http://ardour.org/files/afront.png" id="svg_1" height="232.87939" width="242" y="0" x="0"/>
 </g>
</svg>
text/plain
.txt .text .js .vbs .asp .cgi .pl
----
text/html
.htm .html .hta .htx .mht
----
text/comma-separated-values
.csv
----
text/javascript
.js
----
text/css
.css
----
text/xml
.xml .xsl .xslt
----
image/gif
.gif
----
image/jpeg
.jpg .jpe .jpeg
----
image/png
.png
----
image/bmp
.bmp
----
image/tiff
.tif .tiff
----
audio/basic
.au .snd
----
audio/wav
.wav
----
audio/x-pn-realaudio
.ra .rm .ram
----
audio/x-midi
.mid .midi
----
audio/mp3
.mp3
----
audio/m3u
.m3u
----
video/x-ms-asf
.asf
----
video/avi
.avi
----
video/mpeg
.mpg .mpeg
----
video/quicktime
.qt .mov .qtvr
----
application/pdf
.pdf
----
application/rtf
.rtf
----
application/postscript
.ai .eps .ps
----
application/wordperfect
.wpd
----
application/mswrite
.wri
----
application/msexcel
.xls .xls3 .xls4 .xls5 .xlw
----
application/msword
.doc
----
application/mspowerpoint
.ppt .pps
----
application/x-director
.swa
----
application/x-shockwave-flash
.swf
----
application/x-zip-compressed
.zip
----
application/x-gzip
.gz
----
application/x-rar-compressed
.rar
----
application/octet-stream
.com .exe .dll .ocx
----
application/java-archive
.jar
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|4.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|plugin|
|Description|run-time library for displaying attachment tiddlers|
Runtime processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]].   Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server.  Note: after creating new attachment tiddlers, you can remove [[AttachFilePlugin]], as long as you retain //this// tiddler (so that images can be rendered later on).
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}
''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2009.10.10 [4.0.1] in fileExists(), check for IE to avoid hanging Chrome during startup
2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly.  This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePluginFormatters= {major: 4, minor: 0, revision: 1, date: new Date(2009,10,10)};
//}}}

//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
	var tiddler = store.getTiddler(title);
	if (tiddler==undefined || tiddler.tags==undefined) return false;
	return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}

//{{{
// test for local file existence - returns true/false without visible error display
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(f) {
	if(window.Components) { // MOZ
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { return false; } // security access denied
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(f); }
		catch(e) { return false; } // invalid directory
		return file.exists();
	}
	else if (config.browser.isIE) { // IE
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		return fso.FileExists(f);
	}
	else return true; // other browsers: assume file exists
}
//}}}

//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {

	// extract embedded data, local and remote links (if any)
	var text=store.getTiddlerText(title,'');
	var embedded=store.getTiddlerText(title+'##data','').trim();
	var locallink=store.getTiddlerText(title+'##file','').trim();
	var remotelink=store.getTiddlerText(title+'##url','').trim();

	// backward-compatibility for older attachments (pre 4.0.0)
	var startmarker="---BEGIN_DATA---\n";
	var endmarker="\n---END_DATA---";
	var pos=0; var endpos=0;
	if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
		embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
	if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
		locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
	if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
		remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));

	// if there is a data: URI defined (not supported by IE)
	if (embedded.length && !config.browser.isIE) return embedded;

	// document is being served remotely... use remote URL (if any)  (avoids security alert)
	if (remotelink.length && document.location.protocol!="file:")
		return remotelink;  

	// local link only... return link without checking file existence (avoids security alert)
	if (locallink.length && !remotelink.length) 
		return locallink; 

	// local link, check for file exist... use local link if found
	if (locallink.length) { 
		locallink=locallink.replace(/^\.[\/\\]/,''); // strip leading './' or '.\' (if any)
		if (this.fileExists(getLocalPath(locallink))) return locallink;
		// maybe local link is relative... add path from current document and try again
		var pathPrefix=document.location.href;  // get current document path and trim off filename
		var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\"); 
		if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
		if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
	}

	// no embedded data, no local (or not found), fallback to remote URL (if any)
	if (remotelink.length) return remotelink;

	// attachment URL doesn't resolve, just return input as is
	return title;
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
	if (this.initialized) return;

	// find the formatter for "image" and replace the handler
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
	if (i<config.formatters.length)	config.formatters[i].handler=function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
			{
			var e = w.output;
			if(lookaheadMatch[5])
				{
				var link = lookaheadMatch[5];
				// ELS -------------
				var external=config.formatterHelpers.isExternalLink(link);
				if (external)
					{
					if (config.macros.attach.isAttachment(link))
						{
						e = createExternalLink(w.output,link);
						e.href=config.macros.attach.getAttachment(link);
						e.title = config.macros.attach.linkTooltip + link;
						}
					else
						e = createExternalLink(w.output,link);
					}
				else 
					e = createTiddlyLink(w.output,link,false,null,w.isStatic);
				// ELS -------------
				addClass(e,"imageLink");
				}
			var img = createTiddlyElement(e,"img");
			if(lookaheadMatch[1])
				img.align = "left";
			else if(lookaheadMatch[2])
				img.align = "right";
			if(lookaheadMatch[3])
				img.title = lookaheadMatch[3];
			img.src = lookaheadMatch[4];
			// ELS -------------
			if (config.macros.attach.isAttachment(lookaheadMatch[4]))
				img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
			// ELS -------------
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
//}}}
//{{{
	// find the formatter for "prettyLink" and replace the handler
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
	if (i<config.formatters.length)	{
		config.formatters[i].handler=function(w) {
			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
				var e;
				var text = lookaheadMatch[1];
				if(lookaheadMatch[3]) {
					// Pretty bracketted link
					var link = lookaheadMatch[3];
					if (config.macros.attach.isAttachment(link)) {
						e = createExternalLink(w.output,link);
						e.href=config.macros.attach.getAttachment(link);
						e.title=config.macros.attach.linkTooltip+link;
					}
					else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
						? createExternalLink(w.output,link)
						: createTiddlyLink(w.output,link,false,null,w.isStatic);
				} else {
					e = createTiddlyLink(w.output,text,false,null,w.isStatic);
				}
				createTiddlyText(e,text);
				w.nextMatch = this.lookaheadRegExp.lastIndex;
			}
		}
	} // if "prettyLink" formatter found
	this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
	TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
	TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
		return config.macros.attach.isAttachment(title)?
			config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
	}
}
//}}}
Roxapp provided by ~PupGeek [[download from PupGeeksHassleFreeRoxapps|http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/Avidemux-lucid.tar.gz]]
Roxapp provided by ~PupGeek [[download from PupGeeksHassleFreeRoxapps|http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/Blender253-lucid.tar.gz]]
<<miniBrowser http://dapuppystudio.posterous.com>>
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/***
|Name|DOMTweaksPlugin|
|Source|http://www.TiddlyTools.com/#DOMTweaksPlugin|
|Version|1.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|set DOM element IDs, add/remove classes and/or reposition rendered elements|
This plugin defines several useful macro-based functions for performing direct manipulation of DOM elements, including setting element ID's, moving elements, and adding/removing classnames from elements.
!!!!!Usage
<<<
{{{<<DOM setID id force>>}}}
>assign an ID to the DOM element in which this macro is being rendered.  If the current DOM element already has an ID, the new ID will //not// replace  the current ID, unless you include the additional "''force''" keyword parameter.  (note: requiring this extra parameter helps minimize any problems that may arise if an existing, system-assigned ID is unintentionally re-assigned due to mis-placement of the macro... e.g., renaming 'mainMenu' or 'header' is NOT a good idea, and is prevented unless "force" is used)
{{{<<DOM move id>>}}}
>Move any uniquely identified DOM element to the current rendering location.  Allows dynamic relocation of standard TW elements such as 'sidebar', 'mainMenu', as well as any other DOM elements that have an ID assigned to them (via the {{{<<DOM setID id>>}}} macro).  You can also use this macro to move [[NestedSlidersPlugin]]-generated slider/floating panels that have had an ID assigned to them (using either the {{{<<DOM setID id>>}}} macro or the NestedSlidersPlugin {{{#panelID:}}} syntax).
{{{<<DOM addclass classname>>}}}
>add a classname to the DOM element in which this macro is being rendered
{{{<<DOM removeClass classname>>}}}
>remove a classname from the DOM element in which this macro is being rendered
<<<
!!!!!Revisions
<<<
2007.07.20 [1.0.1] in setID handler, check for existing ID so multiple elements don't get the same ID.  Also added basic parameter checks.
2007.07.20 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DOMTweaksPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2007,7,20)};
config.macros.DOM= {
	handler: function(place,macroName,params) {
		if (!params.length) return;
		switch (params[0].toUpperCase()) {
			case "SETID":
				if (!params[1]) return;
				if (place.id==params[1]) break; // already has this ID... do nothing!
				if (document.getElementById(params[1])) // if ID is already used by something else
					displayMessage("DOMTweaks: ID already in use: '"+params[1]+"'");
				else if (!place.id.length || params[2]&&params[2].toUpperCase=="FORCE")
					place.id=params[1]; // set (or clear) the ID
				else
					displayMessage("DOMTweaks: to re-assign existing ID for '"+place.id+"', use the 'Force' option... Luke. :-)" );
				break;
			case "MOVE":
				if (!params[1]) return;
				var e=document.getElementById(params[1]); if (e) place.insertBefore(e,null);
				break;
			case "ADDCLASS":
				if (!params[1]) return;
				if (addClass instanceof Function) addClass(place,params[1]);
				break;
			case "REMOVECLASS":
				if (!params[1]) return;
				if (removeClass instanceof Function) removeClass(place,params[1]);
				break;
		}
	}
}
//}}}
<svg width="320" height="240" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <g>
  <title>Layer 1</title>
  <image xlink:href="http://svg-edit.tiddlyspace.com/logo.png" id="svg_1" height="208" width="259" y="9" x="17"/>
 </g>
</svg>
[[Getting started with PuppyStudio]]
!URL
http://puppylinux.asia/tpp/aragon/

!Description
Directory Listing of /tpp/aragon/
<<image http://puppylinux.asia/images/garland_logo.png>>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div macro='tiddler QuickEditToolbar '></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered as inline frames (~IFRAMEs) instead of opening new browser tabs/windows.
!!!!!Usage
<<<
Use standard TiddlyWiki external link syntax into your tiddler content. If {{{chkFramedLinks}}} is enabled or the tiddler is tagged with 'framedLinks' (see Configuration), then whenever you click the external link an IFRAME will be dynamically added to the content.  Clicking on the link again removes the IFRAME.  Hold down any modifier (shift, control, or alt) while clicking a link ''temporarily'' bypasses the IFRAME handling and use the standard link handling behavior.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
&nbsp; &nbsp; {{{<<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>> 
&nbsp; &nbsp; {{{<<option chkFramedLinksTag>> <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
&nbsp; &nbsp; {{{<<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.1] fixed handling for external links embedded in //shadow// tiddlers
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,11,14)};

var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";

window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
	var link=this.framedLinks_createExternalLink.apply(this,arguments);
	link.onclick=function(ev) { var e=ev?ev:window.event;
		var co=config.options; // abbreviation
		var here=story.findContainingTiddler(this);
		if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
		var enabled=co.chkFramedLinks || co.chkFramedLinksTag && tid && tid.isTagged(co.txtFramedLinksTag);
		if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
		var p=this.parentNode; 
		var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
		var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
		var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
		if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
		var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
		var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
		if (!showing) { // create an iframe
			link.style.display="block"; // force IFRAME onto line following link
			if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
			var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
			wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
			var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
			f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
			p.insertBefore(wrapper,this.nextSibling);
			function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
				var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
				d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
				try { f.src=url; } // if the iframe can't handle the href
				catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
				window.scrollTo(0,ensureVisible(wrapper));
			}
			if (!co.chkAnimate) loadURL(wrapper);
			else {
				var morph=new Slider(wrapper,true);
				morph.callback=loadURL;
				morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
				anim.startAnimating(morph);
			}
		} else { // remove iframe
			link.style.display="inline"; // restore link style
			if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
			if (!co.chkAnimate) p.removeChild(f.parentNode);
			else {
				var morph=new Slider(f.parentNode,false,false,"all");
				morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
				anim.startAnimating(morph);
			}
		}
		e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
	}
	return link;
}
//}}}
<<tiddler SpMiniBrowser with:"http://www.gimp.org/tutorials/""Gimp Tutorials""http://www.photoshopbrush.biz/images/gimp_icon.jpg">>
++++*[Part I|Geo's shortie]#panel1:... <<tiddler [[Geo's partitionManuals##Part I]]>>===+++*[Part II|Geo's partitioning plan]#panel2:... <<tiddler [[Geo's partitionManuals##Part II]]>>===+++*[Part III|Geo's flash drive install]#panel3:... <<tiddler [[Geo's partitionManuals##Part III]]>>===
<<DOM move panel1>><<DOM move panel2>><<DOM move panel3>>
/%
!Part I
{{menubox{
maans:Hi Geo
{{menubox{
geo:
I have pupstudio on a tiny 4gb USB stick with a 2gb swap file partitioned on it, accessing wav files from my hard drive, and there is absolutely zero latency, the ardour project loads in under 5 seconds.   

I also have pupstudio on a 16gb sd card and reader, with a 2gb swap file, and 8gb for media files, and it runs equally as fast.

Another install sits on a USB hard drive, and 2 more installs on a 1.9ghz acer laptop (1 lupu511, and 1 puppy studio)}}}
You are running "full installs" I guess.... Is it better than a frugal install with the rt-kernel?
Could you write a small manual, describing your way of partitioning an usb, and installing puppy studio?
I'm interested in pros and cons regarding your choices - as I'm trying to create a simple wiki with instructions for absolute beginners:
Cheers Måns Mårtensson
}}}
[[http://puppystudio.tiddlyspot.com/|http://puppystudio.tiddlyspot.com/]]
http://puppystudio.tiddlyspace.com/  (danish)
----
''Geo'':
Well, that is a good question.

The only ones that would qualify as "full installs" would be the ones on the USB HD, and the internal laptop HD (ide I think).

If you choose USB Flash Drive from the Universal Installer the OS wants to create a pupsave.   

BUT, if you install onto USB HD you can get an actual full install.

I attempted to choose USB HD option and install on flash, but Puppy won't do it.  I'm sure it has something to do with memory addressing or something like that.

I would love to get a "full install" on SD flash, and USB flash, and if I scour the forum I might be able to figure out how to accomplish this, but as of yet those flash installs are based on a pupsave using the "save to entire partition" option given at the first exit of the installation.

That is the short answer.  I'll also post some ideas on partitioning.
!Part II
{{menubox{
maans: Hi Geo

Could you write a small manual, describing your way of partitioning an usb, and installing puppy studio?
I'm interested in pros and cons regarding your choices - as I'm trying to create a simple wiki with instructions for absolute beginners}}}
----
''Geo'':
I can give you a quick overview here, but as I am not a programmer I may be operating under false assumptions:

1)'' format a USB HD'' using g-parted

''sdb1:'' ext3 (boot flag) - size:6-7gb  
''sdb2:'' linux swap file - size:6+gb
''sdb3:'' ext3 or ext2 or fat32- size:remaining capacity of the drive

''sdb1'' is ext3 because I assume puppystudio runs best in this format.
it is 6-7gb to be large enough for data ([i]such as dropbox-which I have found not to update correctly when placed on a different partition[/i]) and also large enough for big applications such as open office.

''sdb2'' is a swap file because I assume that puppystudio will need a page file option to run well and we are not using any sort of internal hard drive.   It is 6gb if possible to accommodate machines with a lot of ram.  btw my computer only has 2g ram.  I assume that linux only stores 1 page in the partition at a time, but I don't actually know for sure.

''sdb3'' is the data partition.  The best format for this one puzzles me, as it would be nice for windows OS to be able to read and write to the partition when USB boot is not option and you simply want to access or transfer files.  But at this point in time I assume that when the boot partition (sdb1) is formatted ext3, then windows can't see the rest of the drive.  Also I have read posts where people make comments to the effect of fat32 being more "dependable".  As of now I still format this partition ext3 or ext2.


2) use the universal installer to do a full ''install to sdb1''

I choose yes for load into ram option, yes for wipe all files (even though none are there)

3) ''reboot and run'' puppy studio from USB for the first time

4) ''shut down'' puppy studio and ''choose'' the (''save to entire partition'' option) very important! although perhaps that can be changed later if the incorrect choice is made. 

5) reboot and ''run puppy studio'' again and it should run as normal full install.

I'll do flash drive in another post.
!Part III
<<miniBrowser hidecontrols "http://www.murga-linux.com/puppy/viewtopic.php?t=60483&start=135&sid=d515d92bac40148eeb7e2331b6fe3b5c">>
!end %/
!!This wiki is intended to help you get started with PuppyStudio. ([[read puppylinux.org/wikka/PuppyStudio|http://puppylinux.org/wikka/PuppyStudio]])
The +++*[TopMenu]...: 
 {{nowrap{<<tiddler MainMenu>>}}}=== has links to manpages, tutorials and sites, which are dedicated to programs, in PuppyStudio. 
# [[Download|http://puppystudio.tiddlyspot.com/download]] {{green big{^^(CTRL+ left click ..)^^}}}
##~PuppyStudio [[Read about 3.3(announcement at linuxmusicians.com)|http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994]] 
###[[PuppyStudio 4 rt (391MbMB)|http://xn--mns-ula.dk/PS/studio_4.iso]] (Most recent one - I believe...)
###[[PuppyStudio 3.3 rt (378MB)|http://xn--mns-ula.dk/PS/PuppyStudio3.3-rt.iso]] 
###[[ PuppyStudio3.3-rt.iso.torrent|http://dl.dropbox.com/u/15835063/PStorrents/PuppyStudio3.3-rt.iso.torrent]]
###[[PuppyStudio 3.3 vanilla iso(372MB)|http://brainwavedesigncentral.net/mike/Puplets-Woof-Based/PuppyStudio3.3-vanilla.iso]]  
##[[version 3.2 w. realtime kernel (387MB)|http://xn--mns-ula.dk/PS/PuppyStudio3.2.iso]]
##Version 3.1 ~~(NB:three different types!!)~~
###[[ 3.1 with realtime kernel (376MB)|http://xn--mns-ula.dk/PS/PuppyStudio3.1.iso]]
###[[ PuppyStudio3.1.iso.torrent|http://dl.dropbox.com/u/15835063/PStorrents/PuppyStudio3.1.iso.torrent]]
###[[Puppy Studio version 3.1 with the stock kernel from Lucid Puppy 511 (better hardware support for wireless cards..363MB)|http://xn--mns-ula.dk/PS/PuppyStudio3.1_no_realtime.iso]] 
###[[Puppy 3.1 Lite(288MB)|http://xn--mns-ula.dk/PS/PuppyStudio3.1lite.iso]] 
##Version 3.0 Ubuntu Studio Puppy Edition (no realtime)
###[[Ubuntu Studio PE 3.0 (Full 448MB)|http://xn--mns-ula.dk/PS/UbuntuStudioPE_3.0.iso]]
###[[Ubuntu Studio PE 3.0 (Lite 408MB)|http://xn--mns-ula.dk/PS/UbuntuStudioPE_3.0_lite.iso]]
#Burn to cd. (If you need a program for burning cd's (on Windblows), [[InfraRecorder Portable|http://downloads.sourceforge.net/portableapps/InfraRecorderPortable_0.51.paf.exe?download]] is a good choice
#Boot your pc from cd. (Your bootorder needs to accept booting from cd first. Click F2/F12,F9 or Delete, when pc is turned on.)
#Establish internetconnection (connect icon on desktop) or from startup dialog.
#Choose reboot or shutdown pc.
#Save to file - saves your session to file on disk or to an usb. 
#Next time, you boot from cd, the system will find your saved session.
{{green big{Download should work again.}}}
//Cheers Måns Mårtensson//
!!!Make changes to this wiki:
* SiteTitle & SiteSubtitle
* MainMenu
* DefaultTiddlers
{{big{[[Download a copy of this wiki|http://puppystudio.tiddlyspot.com/download]]}}}(can be modified locally, wthout any additional software)
See also "[[Previous attempts on creating a multimedia puppy w realtimekernel]]"
<<tiddler PopOut with:"http://www.youtube.com/embed/8aR3o7rYdx0" "video popout" 600 600>>
<<tiddler SpMiniBrowser with:"http://www.gimp.org/""website""http://www.photoshopbrush.biz/images/gimp_icon.jpg">>
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Documentation|http://www.TiddlyTools.com/#GotoPluginInfo|
|Version|1.9.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view any tiddler by entering it's title - displays list of possible matches|
''View a tiddler by typing its title and pressing //enter//.''  As you type, a list of possible matches is displayed.  You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press escape to close the listbox to resume typing.  When the listbox is not displayed, pressing //escape// clears the current input.
!!!Documentation
>see [[GotoPluginInfo]]
!!!Configuration
<<<
*Match titles only after {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters are entered.<br>Use down-arrow to start matching with shorter input.  //Note: This option value is also set/used by [[SearchOptionsPlugin]]//.
*To set the maximum height of the listbox, you can create a tiddler tagged with <<tag systemConfig>>, containing:
//{{{
config.macros.gotoTiddler.listMaxSize=10;  // change this number
//}}}
<<<
!!!Revisions
<<<
2009.05.22 [1.9.2] use reverseLookup() for IncludePlugin
|please see [[GotoPluginInfo]] for additional revision details|
2006.05.05 [0.0.0] started
<<<
!!!Code
***/
//{{{
version.extensions.GotoPlugin= {major: 1, minor: 9, revision: 2, date: new Date(2009,5,22)};

// automatically tweak shadow SideBarOptions to add <<gotoTiddler>> macro above <<search>>
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");

if (config.options.txtIncrementalSearchMin===undefined) config.options.txtIncrementalSearchMin=3;

config.macros.gotoTiddler= { 
	listMaxSize: 10,
	listHeading: 'Found %0 matching title%1...',
	searchItem: "Search for '%0'...",
	handler:
	function(place,macroName,params,wikifier,paramString,tiddler) {
		var quiet	=params.contains("quiet");
		var showlist	=params.contains("showlist");
		var search	=params.contains("search");
		params = paramString.parseParams("anon",null,true,false,false);
		var instyle	=getParam(params,"inputstyle","");
		var liststyle	=getParam(params,"liststyle","");
		var filter	=getParam(params,"filter","");
		var html=this.html;
		var keyevent=window.event?"onkeydown":"onkeypress"; // IE event fixup for ESC handling
		html=html.replace(/%keyevent%/g,keyevent);
		html=html.replace(/%search%/g,search);
		html=html.replace(/%quiet%/g,quiet);
		html=html.replace(/%showlist%/g,showlist);
		html=html.replace(/%display%/g,showlist?'block':'none');
		html=html.replace(/%position%/g,showlist?'static':'absolute');
		html=html.replace(/%instyle%/g,instyle);
		html=html.replace(/%liststyle%/g,liststyle);
		html=html.replace(/%filter%/g,filter);
		if (config.browser.isIE) html=this.IEtableFixup.format([html]);
		var span=createTiddlyElement(place,'span');
		span.innerHTML=html; var form=span.getElementsByTagName("form")[0];
		if (showlist) this.fillList(form.list,'',filter,search,0);
	},
	html:
	'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
		<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
			title="Enter title text... ENTER=goto, SHIFT-ENTER=search for text, DOWN=select from list"\
			onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
			%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list,%search%,%showlist%);"\
			onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,%quiet%,%search%,%showlist%);">\
		<select name=list style="display:%display%;position:%position%;%liststyle%"\
			onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
			onblur="this.style.display=%showlist%?\'block\':\'none\';"\
			%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%showlist%);"\
			onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%showlist%);">\
		</select><input name="filter" type="hidden" value="%filter%">\
	</form>',
	IEtableFixup:
	"<table style='width:100%;display:inline;padding:0;margin:0;border:0;'>\
		<tr style='padding:0;margin:0;border:0;'><td style='padding:0;margin:0;border:0;'>\
		%0</td></tr></table>",
	getItems:
	function(list,val,filter) {
		if (!list.cache || !list.cache.length || val.length<=config.options.txtIncrementalSearchMin) {
			// starting new search, fetch and cache list of tiddlers/shadows/tags
			list.cache=new Array();
			if (filter.length) {
				var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
				var tiddlers=store.sortTiddlers(fn.apply(store,[filter]),'title');
			} else 
				var tiddlers=store.reverseLookup('tags','excludeLists');
			for(var t=0; t<tiddlers.length; t++) list.cache.push(tiddlers[t].title);
			if (!filter.length) {
				for (var t in config.shadowTiddlers) list.cache.pushUnique(t);
				var tags=store.getTags();
				for(var t=0; t<tags.length; t++) list.cache.pushUnique(tags[t][0]);
			}
		}
		var found = [];
		var match=val.toLowerCase();
		for(var i=0; i<list.cache.length; i++)
			if (list.cache[i].toLowerCase().indexOf(match)!=-1) found.push(list.cache[i]);
		return found;
	},
	getItemSuffix:
	function(t) {
		if (store.tiddlerExists(t)) return "";  // tiddler
		if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
		return " (tag)"; // tag 
	},
	fillList:
	function(list,val,filter,search,key) {
		if (list.style.display=="none") return; // not visible... do nothing!
		var indent='\xa0\xa0\xa0';
		var found = this.getItems(list,val,filter); // find matching items...
		found.sort(); // alpha by title
		while (list.length > 0) list.options[0]=null; // clear list
		var hdr=this.listHeading.format([found.length,found.length==1?"":"s"]);
		list.options[0]=new Option(hdr,"",false,false);
		for (var t=0; t<found.length; t++) list.options[list.length]=
			new Option(indent+found[t]+this.getItemSuffix(found[t]),found[t],false,false);
		if (search)
			list.options[list.length]=new Option(this.searchItem.format([val]),"*",false,false);
		list.size=(list.length<this.listMaxSize?list.length:this.listMaxSize); // resize list...
		list.selectedIndex=key==38?list.length-1:key==40?1:0;
	},
	keyProcessed:
	function(ev) { // utility function
		ev.cancelBubble=true; // IE4+
		try{event.keyCode=0;}catch(e){}; // IE5
		if (window.event) ev.returnValue=false; // IE6
		if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
		if (ev.stopPropagation) ev.stopPropagation(); // all
		return false;
	},
	inputEscKeyHandler:
	function(event,here,list,search,showlist) {
		if (event.keyCode==27) {
			if (showlist) { // clear input, reset list
				here.value=here.defaultValue;
				this.fillList(list,'',here.form.filter.value,search,0);
			}
			else if (list.style.display=="none") // clear input
				here.value=here.defaultValue;
			else list.style.display="none"; // hide list
			return this.keyProcessed(event);
		}
		return true; // key bubbles up
	},
	inputKeyHandler:
	function(event,here,quiet,search,showlist) {
		var key=event.keyCode;
		var list=here.form.list;
		var filter=here.form.filter;
		// non-printing chars bubble up, except for a few:
		if (key<48) switch(key) {
			// backspace=8, enter=13, space=32, up=38, down=40, delete=46
			case 8: case 13: case 32: case 38: case 40: case 46: break; default: return true;
		}
		// blank input... if down/enter... fall through (list all)... else, and hide or reset list
		if (!here.value.length && !(key==40 || key==13)) {
			if (showlist) this.fillList(here.form.list,'',here.form.filter.value,search,0);
			else list.style.display="none";
			return this.keyProcessed(event);
		}
		// hide list if quiet, or below input minimum (and not showlist)
		list.style.display=(!showlist&&(quiet||here.value.length<config.options.txtIncrementalSearchMin))?'none':'block';
		// non-blank input... enter=show/create tiddler, SHIFT-enter=search for text
		if (key==13 && here.value.length) return this.processItem(event.shiftKey?'*':here.value,here,list,showlist);
		// up or down key, or enter with blank input... shows and moves to list...
		if (key==38 || key==40 || key==13) { list.style.display="block"; list.focus(); }
		this.fillList(list,here.value,filter.value,search,key);
		return true; // key bubbles up
	},
	selectKeyHandler:
	function(event,list,editfield,showlist) {
		if (event.keyCode==27) // escape... hide list, move to edit field
			{ editfield.focus(); list.style.display=showlist?'block':'none'; return this.keyProcessed(event); }
		if (event.keyCode==13 && list.value.length) // enter... view selected item
			{ this.processItem(list.value,editfield,list,showlist); return this.keyProcessed(event); }
		return true; // key bubbles up
	},
	processItem:
	function(title,here,list,showlist) {
		if (!title.length) return;
		list.style.display=showlist?'block':'none';
		if (title=="*")	{ story.search(here.value); return false; } // do full-text search
		if (!showlist) here.value=title;
		story.displayTiddler(null,title); // show selected tiddler
		return false;
	}
}
//}}}
<<list filter "[tag[Graphics]]">> 
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|4.0.0|
|Date:|2010-09-09|
|Author:|Simon Baird, Tobias Beer|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if(test){
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};

(function(){
var s,show=false,f,fs={
	When:'eval(paramString)',
	WhenTagged:'tiddler.tags.containsAll(params)',
	WhenTaggedAny:'tiddler.tags.containsAny(params)',
	WhenTaggedAll:'tiddler.tags.containsAll(params)',
	WhenExists:'store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])',
	TitleIs:'tiddler.title == params[0]',
	'"else"':'!window.hideWhenLastTest'
}
for(var f in fs){
	do{
		s=f=='"else"'?'':(show?'show':'hide');
		eval('merge(config.macros,{\n'+s+f+':{\n'+
			'handler:function(place,macroName,params,wikifier,paramString,tiddler){\n'+
				'removeElementWhen('+(show?'!':'')+fs[f]+',place);\n'+
			'}}});');
		show=!show&&s!='';
	}while(show);
}
})();
//}}}
<script label="Home" title="Close all tiddlers and open the start page(s)">onclick=story.closeAllTiddlers();story.displayTiddlers(null,store.filterTiddlers(store.getTiddlerText('DefaultTiddlers'))) </script>
House Training part of the forum. (Mention that 3.3 is based on 520.)
<<miniBrowser http://www.murga-linux.com/puppy/index.php?f=19>>
<html><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/AhbbWrYgJkQ" frameborder="0" allowfullscreen></iframe></html>
[[more tips...|http://www.murga-linux.com/puppy/viewtopic.php?search_id=1291552032&t=64973]]
<<miniBrowser http://www.murga-linux.com/puppy/viewtopic.php?t=64973&start=15>>
[[Homepage|http://www.hydrogen-music.org/]] <<tiddler pop with: screenshots [[Hydrogen##iframe]]>><<tiddler pop with:video [[Hydrogen##video]]>>
<<image "http://dailypackage.fedorabook.com/uploads/2008-05-13-hydrogen.png" 435 link:"http://www.hydrogen-music.org/">>

/%
!iframe
<<tiddler iframe with:"www.hydrogen-music.org/?p=screenshots">>
!video
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/icCNosEm-dQ" frameborder="0"></iframe></html>
................................................................................................................................................................
!end %/
/***
|''Name''|ImageMacroPlugin|
|''Version''|0.8.5|
|''Description''|Allows the rendering of svg images in a TiddlyWiki|
|''Author''|Osmosoft|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Notes''|Currently only works in modern browsers (not IE)|
|''Requires''|BinaryTiddlersPlugin|
!Usage
{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
!!Parameters
width/height: specify width/height parameters
link: make the image link to a given location
tiddlyLink: link to a tiddler

!Notes
Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
{{{<<view fieldname image>>}}}
will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
{{{<<image SiteIcon>>}}}
will create an image tag where the tiddler has content type beginning image and not ending +xml
will attempt to create svg object in other scenarios
{{{<<image /photos/x.jpg>>}}}
will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in 
which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
!Code
***/
//{{{
(function($) {

var macro = config.macros.image = {
	svgns: "http://www.w3.org/2000/svg",
	xlinkns: "http://www.w3.org/1999/xlink", 
	svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
	_fixPrefix: 1,
	_external_cache: {},
	_image_tag_cache: {},
	_image_dimensions: {},
	locale: {
		badImage: "This image cannot be displayed."
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler){
		var imageSource = params[0];
		// collect named arguments
		var args = macro.getArguments(paramString, params);
		this.renderImage(place, imageSource, args);
	},

	refreshImage: function(src) {
		var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
		if(macro._image_dimensions[src]) {
			macro._image_dimensions[src] = false;
		}
		for(var i = 0; i < elements.length; i++) {
			var el = $(elements[i]);
			var newSrc = "%0?nocache=%1".format([src, Math.random()]);
			el.attr("src", newSrc); // force reload
		}
	},
	isBinaryImageType: function(contentType) {
		if(contentType && contentType.indexOf("image") === 0 &&
			contentType.indexOf("+xml") != contentType.length - 4) {
			return true;
		} else {
			return false;
		}
	},
	isImageTiddler: function(tiddler) {
		return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
	},
	isSVGTiddler: function(tiddler) {
		var type;
		type = tiddler ? tiddler.fields['server.content-type'] : false;
		return type == "image/svg+xml";
	},
	isBinaryImageTiddler: function(tiddler) {
		return macro.isBinaryImageType(tiddler.fields['server.content-type']);
	},
	supportsDataUris: false,
	renderImage: function(place, imageSource, options) {
		var imageTiddler = store.getTiddler(imageSource);
		var container;
		if(options.link) {
			container = $("<a />").attr("href", options.link).appendTo(place)[0];
		} else if(options.tiddlyLink) {
			container = createTiddlyLink(place, options.tiddlyLink, false);
		} else {
			container = $("<span />").appendTo(place)[0];
		}
		$(container).addClass("image");

		options = options ? options : {};
		if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
			return macro._renderBinaryImageTiddler(container, imageTiddler, options);
		} else if(imageTiddler){ // handle the case where we have a tiddler
			return macro._renderSVGTiddler(container, imageTiddler, options);
		} else { // we have a string representing a url
			return macro._renderBinaryImageUrl(container, imageSource, options);
		}
	},
	_renderAlternateText: function(container, options) {
		var img;
		if(options.width && options.height) {
			img = $("<img />").attr("src", "").addClass("svgImageText").attr("width", options.width).
				attr("height", options.height).appendTo(container);
		}
		var alt = options.alt;
		if(img && alt) {
			img.attr("alt", alt).attr("title", alt);
		} else if(alt) {
			$(container).addClass("svgImageText").text(alt);
		}
	},
	_renderSVGTiddler: function(place, tiddler, options) {
		if(!options) {
			options = {};
		}
		merge(options, { tiddler: tiddler, fix: true});

		if(macro.svgAvailable) {
			this._importSVG(place, options); // display the svg
		} else if(options.altImage) {
			var image = options.altImage;
			delete options.altImage;
			this._renderBinaryImageUrl(place, image, options);
		} else {
			this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
		}
	},
	_renderBinaryImageTiddler: function(place, tiddler, options) {
		var resourceURI;
		var fields = tiddler.fields;
		if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource	
			resourceURI = "%0%1/tiddlers/%2".format([fields["server.host"],
				fields["server.workspace"], fields["server.title"]]);
		} else { // guess the url for the resource
			resourceURI = tiddler.title;
		}
		var ctype = fields["server.content-type"] || tiddler.type;
		if(macro.supportsDataUris && ctype) {
			var uri = "data:%0;base64,%1".format([ctype, tiddler.text]);
			options.src = resourceURI;
			return macro._renderBinaryImageUrl(place, uri, options);
		} else if(options.src) {
			return macro._renderBinaryImageUrl(place, options.src, options);
		} else {
			return macro._renderBinaryImageUrl(place, resourceURI, options);
		}
	},
	_renderBinaryImageUrl: function(container, src, options) {
		var srcUrl = options.src ? options.src : src;
		var image_dimensions = macro._image_dimensions[srcUrl];
		var image = new Image(); // due to weird scaling issues where you use just a width or just a height
		var createImageTag = function(dimensions) {
			if(!dimensions || !dimensions.width) {
				var altImage = options.altImage;
				if(altImage) {
					delete options.altImage;
					macro._renderBinaryImageUrl(container, altImage, options);
				} else {
					macro._renderAlternateText(container, options);
				}
			} else {
				var userH = options.height;
				var userW = options.width;
				var w = dimensions.width;
				var h = dimensions.height;
				var preserveWidth = options.preserveAspectRatio && w > h;
				var preserveHeight = options.preserveAspectRatio && h > w;
				var ratio;
				if(userH && !userW || preserveHeight) {
					ratio = userH / h;
					userW = parseInt(ratio * w, 10);
				} else if (userW && !userH || preserveWidth) {
					ratio = userW / w;
					userH = parseInt(ratio * h, 10);
				}
				userW = userW ? userW : w;
				userH = userH ? userH : h;
				var img = $("<img />").attr("src", src).attr("height", userH).
					attr("width", userW).addClass(options.imageClass).appendTo(container);
				if(!macro._image_tag_cache[srcUrl]) {
					macro._image_tag_cache[srcUrl] = [];
				}
				macro._image_tag_cache[srcUrl].push(img);
			}
		};

		if(!image_dimensions) {
			image.onload = function() {
				var dimensions = { width: image.width, height: image.height};
				macro._image_dimensions[srcUrl] = dimensions;
				createImageTag(dimensions);
			};
			image.onerror = function() {
				createImageTag(false);
			};
			image.src = src;
		} else {
			createImageTag(image_dimensions);
		}
	},
	_generateIdPrefix: function(){
		return "tw_svgfix_" + (this._fixPrefix++).toString() + "_";
	},
	_fixSVG: function(childNodes, idPrefix) {
		if(!idPrefix) {
			idPrefix = this._generateIdPrefix();
		}
		var urlPattern = /^\s*url\(\#([^\)]*)\)\s*$/ig;
		var fixes = [
		{ attr: "id", pattern: /^(.*)$/ig },
		{ attr: "filter", pattern: urlPattern },
		{ attr: "fill", pattern: urlPattern },
		{ attr: "stroke", pattern: urlPattern },
		{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
		];
		for(var t = 0; t < childNodes.length; t++) {
			var node = childNodes[t];
			for(var a = 0; a < fixes.length; a++) {
				var fix = fixes[a];
				var attr = fix.attr;
				var ns = fix.namespace || "";
				if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
					var v = node.getAttributeNS(ns, attr);
					fix.pattern.lastIndex = 0;
					var match = fix.pattern.exec(v);
					if(match) {
						// Make sure replacement string doesn't contain any single dollar signs
						var replacement = (idPrefix + match[1]).replace("$", "$$$$"); 
						v = v.replace(match[1], replacement);
						node.setAttributeNS(ns, attr,v);
					}
				}
			}
			var children = node.childNodes;
			if(children.length > 0) {
				this._fixSVG(children, idPrefix);
			}
		}
	},
	_importSVG: function(place, options){
		options = options ? options : {};
		var svgDoc, tiddlerText = options.tiddler.text;
		if (window.DOMParser) {
			svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
			var idPrefix = options.idPrefix || this._generateIdPrefix();
			this._fixSVG([svgDoc], idPrefix);
			var el = document.importNode(svgDoc, true);

			var existingDefs = el.getElementsByTagNameNS(macro.svgns, "defs");
			var elDef;
			if(existingDefs.length === 0) {
				elDef = document.createElementNS(macro.svgns, "defs");
			} else {
				elDef = existingDefs[0];
			}
			if(options.def) {
				for(var i = 0; i < options.def.length; i++) {
					var text = store.getTiddlerText(options.def[i]);
					var def = new DOMParser().parseFromString(text, "application/xml").documentElement;
					this._fixSVG([def], idPrefix);
					elDef.appendChild(document.importNode(def, true));
				}
			}
			el.insertBefore(elDef, el.firstChild);
			var svgHolder = document.createElementNS(macro.svgns,"svg");
			var width = options.width;
			var height = options.height;
			if(width || height) {
				if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
					var viewBox = el.getAttribute("viewBox");
					var topLeft = "0 0";
					if(viewBox) {
						topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
					}
					svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format([width, height]));
				} else {
					if(!width) {
						width = el.getAttribute("width");
					}
					if(!height) {
						height = el.getAttribute("height");
					}
				}
				svgHolder.setAttribute("width", width);
				svgHolder.setAttribute("height", height);

				el.setAttribute("width", "100%");
				el.setAttribute("height", "100%");
				svgHolder.setAttribute("class", "svgImage svgIcon %0".format([options.imageClass || ""]));
				svgHolder.appendChild(el);
				place.appendChild(svgHolder);
			}
			else {
				el.setAttribute("class","svgImage");
				place.appendChild(el);
			}
			// if a tiddler attribute is set this is read as a link
			$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
				var tiddler = $(ev.target).attr("tiddlyLink");
				if(!tiddler) { // backwards compatibility
					tiddler = $(ev.target).attr("tiddler");
				}
				if(tiddler) {
					story.displayTiddler(ev.target, tiddler);
				}
			});
		}
	},
	getArguments: function(paramString, params) {
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var options = {};
		for(var id in args) {
			if(true) {
				var p = args[id];
				if(id == "def") {
					options[id] = p;
				} else {
					options[id] = p[0];
				}
			}
		}
		var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
		var height = isNaN(params[2]) ? false : parseInt(params[2], 10);

		options.width = macro.lookupArgument(options, "width", width);
		options.height = macro.lookupArgument(options, "height", height);
		options.preserveAspectRatio = args.preserveAspectRatio && 
			args.preserveAspectRatio[0] == "yes" ? true : false;
		options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
		options.link = macro.lookupArgument(options, "link", false);
		return options;
	},
	lookupArgument: function(args, id, ifEmpty) {
		if(args[id]) {
			return args[id];
		} else {
			return ifEmpty;
		}
	}
};

var datauriTest = function() {
	var data = new Image();
	data.onload = function() {
		if(this.width != 1 || this.height != 1) {
			macro.supportsDataUris = false;
		} else {
			macro.supportsDataUris = true;
		}
	};
	data.onerror = data.onload;
	data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
};
datauriTest();

// update views
var _oldwikifiedview = config.macros.view.views.wikified;
// update wikifier to check tiddler type before rendering
config.macros.view.views.wikified = function(value, place, params, wikifier, paramString, tiddler) {
	if(macro.isImageTiddler(tiddler) && params[0] == "text") {
		var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
		macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
	} else {
		_oldwikifiedview.apply(this, arguments);
	}
};
config.macros.view.views.image = function(value, place, params, wikifier, paramString, tiddler) {
	// a field can point to another tiddler whereas text is the current tiddler.
	var title = params[0] == "text" ? tiddler.title : value;
	invokeMacro(place, "image", "%0 %1".format([title, params.splice(2).join(" ")]), null, tiddler);
};

config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
	".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
	"span.svgImageText { display: inline-block; overflow-hidden; }"
].join("");
store.addNotification("StyleSheetImageMacro", refreshStyles);

})(jQuery);
//}}}
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 2, date: new Date(2010,7,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		}
		if(tooltip) img.title = tooltip;

		// GET IMAGE SOURCE
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(src,true);
		}
		img.src=src;
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}

config.formatterHelpers.imageSize={
	tip: 'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size',
	dragtip: 'DRAG=stretch/shrink, '
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?this.imageSize.dragtip:'')+this.imageSize.tip;
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
On ons 20 okt 2010 01:59:49 GMT-8, YourName imported 98 tiddlers from
[[http://puppystudio.tiddlyspace.com|http://puppystudio.tiddlyspace.com]]:
<<<
#[[Ardour]] - added
#[[ArdourHowDoI]] - added
#[[ArdourImage]] - added
#[[Blog]] - added
#[[DaPupImage]] - added
#[[DaPuppy]] - added
#[[FramedLinksPlugin]] - added
#[[GIMP - Tutorials]] - added
#[[Gimp]] - added
#[[GotoPlugin]] - added
#[[Grafik]] - added
#[[HideWhenPlugin]] - added
#[[Hjem]] - added
#[[Hydrogen]] - added
#[[ImageMacroPlugin]] - added
#[[ImageSizePlugin]] - added
#[[InlineJavascriptPlugin]] - added
#[[Journal]] - added
#[[Kom i gang]] - added
#[[LilyPond learning]] - added
#[[Links]] - added
#[[MainMenu]] - added
#[[MessageFadeOut]] - added
#[[MiniBrowserList]] - added
#[[MiniBrowserPlugin]] - added
#[[MuseScore]] - added
#[[MuseScoreHelp]] - added
#[[MuseScoreManual]] - added
#[[Musik]] - added
#[[NestedSlidersPlugin]] - added
#[[NewHere]] - added
#[[PSImage]] - added
#[[Pencil]] - added
#[[PencilUserManual]] - added
#[[PopOut]] - added
#[[PopupMacro]] - added
#[[Puppy Linux]] - added
#[[PuppySpace]] - added
#[[PuppyStudio]] - added
#[[PuppyStudioBlog]] - added
#[[QuickEditPackage]] - added
#[[QuickEditPlugin]] - added
#[[QuickEditToolbar]] - added
#[[QuickEdit_align]] - added
#[[QuickEdit_color]] - added
#[[QuickEdit_convert]] - added
#[[QuickEdit_custom]] - added
#[[QuickEdit_customList]] - added
#[[QuickEdit_font]] - added
#[[QuickEdit_fontList]] - added
#[[QuickEdit_format]] - added
#[[QuickEdit_image]] - added
#[[QuickEdit_insert]] - added
#[[QuickEdit_link]] - added
#[[QuickEdit_macro]] - added
#[[QuickEdit_replace]] - added
#[[QuickEdit_sort]] - added
#[[QuickEdit_split]] - added
#[[QuickOpenTagPlugin]] - added
#[[RECORDING WITH LINUX]] - added
#[[RandomColorPalettePlugin]] - added
#[[RoseGarden]] - added
#[[RoseGardenManual]] - added
#[[SVGEditorPlugin]] - added
#[[SearchGroups]] - added
#[[SearchPuppyGroups]] - added
#[[SimpleSearchPlugin]] - added
#[[SiteSearch]] - added
#[[SiteSubtitle]] - added
#[[SiteTitle]] - added
#[[SpMiniBrowser]] - added
#[[StyleSheetShortcuts]] - added
#[[TableSortingPlugin]] - added
#[[TagSearchConfig]] - added
#[[TagSearchPlugin]] - added
#[[Take5]] - added
#[[Templates]] - added
#[[TiddlerPopupPlugin]] - added
#[[TiddlyWiki]] - added
#[[Tips]] - added
#[[ToolbarTagSearch]] - added
#[[TuxGuitar]] - added
#[[UTubeSearch]] - added
#[[YTInstant]] - added
#[[YouTubeSearch]] - added
#[[close.svg]] - added
#[[closeTiddler]] - added
#[[deleteTiddler]] - added
#[[editTiddler]] - added
#[[editTiddlerReadOnly]] - added
#[[excludeLists]] - added
#[[iframe]] - added
#[[mainMenuMod]] - added
#[[moreCommand]] - added
#[[pop]] - added
#[[saveTiddler]] - added
#[[svg-editor]] - added
#[[tagSearch]] - added
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					try	 { var out=eval(c); }
					catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
!Alle journaler
<<list filter [tag[Journal]][sort[-created]]>> 
Roxapp provided by ~PupGeek [[download from PupGeeksHassleFreeRoxapps|http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/Kdenlive-lucid.tar.gz]]
+++*[read LmmsManual]...<<tiddler PdfView with:"http://db.tt/01SjniX">>===
+++*[see LmmsWiki]...<<miniBrowser http://lmms.sourceforge.net/wiki/index.php/Main_Page>>===
!URL
http://lmms.sourceforge.net/home.php
Click on image to read a LMMS tutorial:
<<image http://lmms.sourceforge.net/Lmms_logo.png tiddlyLink:"LMMS tutorial">>
What is LMMS?
LMMS is a free cross-platform alternative to commercial programs like FL Studio®, which allow you to produce music with your computer. This includes the creation of melodies and beats, the synthesis and mixing of sounds, and arranging of samples. You can have fun with your MIDI-keyboard and much more; all in a user-friendly and modern interface.
!URL
http://www.home.no/mlinux/my-lmms.htm
<<twyp>><<twyp player slider>>
!Description
[[So you wanna be a dope rapper?|So you wanna be a dope rapper?(lmms-da)]]
<<tiddler [[So you wanna be a dope rapper?(lmms-da)]]>>
[[Åben her >|http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Simple-notation]] <<tiddler PopOut with:"http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Simple-notation" "Simple-notation (popout)"[[800em]][[650em]]>>  +++*[The LilyPond Snippet Repository ♪♫]<<miniBrowser http://lsr.dsi.unimi.it/>>===  <<tiddler PopOut with:"http://lsr.dsi.unimi.it/" "Snippet Repository ♪♫ (popout)"[[800em]][[650em]]>> 
|borderless widetable|k
| <<image "http://lilypond.org/doc/v2.12/Documentation/user/2a/lily-77bae1b3.png" link:"http://lilypond.org/doc/v2.12/Documentation/user/lilypond-learning/Simple-notation">> | <<image http://lilypond.org/doc/v2.12/Documentation/user/e7/lily-bda610c8.png>> |
| <<image "http://lilypond.org/doc/v2.12/Documentation/user/dd/lily-71805c5b.png" 332>><<image "http://lsr.dsi.unimi.it/LSR/Image?id=578">>|<<image "http://lilypond.org/doc/v2.12/Documentation/user/fe/lily-2bad65e3.png" 332>> |
| <<image "http://lilypond.org/doc/v2.12/input/lsr/2f/lily-71e98e19.png">> | <<image "http://lilypond.org/doc/v2.12/Documentation/user/4f/lily-c6c35541.png">> |
<<image "http://lsr.dsi.unimi.it/LSR/Image?id=409">>
*@Glossary
*@FAQ
*@Themes
*@Translations
*@Security
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
 <<tiddler mainMenuMod>>
/%^^~TiddlyWiki version <<version>> [[Kom i gang]]%/
//{{{
config.options.txtFadeTimer = 5000; // 5 seconds 

var displayMessageFADEOUT=displayMessage;
displayMessage=function(text,linkText)
{
	displayMessageFADEOUT.apply(this, arguments);
	ti=config.options.txtFadeTimer;
	if(ti>0)setTimeout(clearMessage,ti); 
}
//}}}
lashstudio for puppy 431
http://murga-linux.com/puppy/viewtopic.php?t=51191
----
PuppyLinux Stuff
http://www.puppylinuxstuff.meownplanet.net/index.html
----
Ubuntu Studio PE
http://www.murga-linux.com/puppy/viewtopic.php?t=57447
----
Transcribe
http://www.seventhstring.com/xscribe/screenshots.html
----
LmmsWiki
http://lmms.sourceforge.net/wiki/index.php/Main_Page
----
MuseScoreTips
http://musescoretips.com
----
How to use audio apps
http://www.murga-linux.com/puppy/viewtopic.php?t=64973&start=15
----
PStudio 3.3 releasenotes (linuxmusicians.com)
http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994
----
Puppy Portable Studio 
http://208.109.22.214/puppy/viewtopic.php?t=39741&sid=e535f31c3a38cd37eba3672ffd11e663
----
BrowserLinux & Xampp
http://www.browserlinux.com/forum/showthread.php?tid=520&pid=1040#pid1040
----
Search Puppy Linux
http://wellminded.com/puppy/pupsearch.html
----
Gimp Tutorials and usefull snippets
http://www.gimp-tutorials.com/
----
Gimp Tutorials
http://www.gimp.org/tutorials/
----
Gimp
http://www.gimp.org/
----
RoseGarden Manual
http://www.rosegardenmusic.com/wiki/doc:manual-en
----
RECORDING WITH LINUX
http://recordingwithlinux.blogspot.com/
----
Pencil UserManual
http://pencil-animation.org/wiki/doku.php?id=en:users:manual:0.4.3b:index
----
LilyPond Snippet  Rep.
http://lsr.dsi.unimi.it/
----
Ardour How Do I?
http://ardour.org/forum/17
----
PuppyStudioBlog-da
http://dapuppystudio.posterous.com
----
PuppyDesktop
http://pupweb.org/desktop/
----
WebserverBrowserPuppy
http://www.murga-linux.com/puppy/viewtopic.php?p=457092#457092
----
Puppy 5.11
http://distro.ibiblio.org/pub/linux/distributions/puppylinux/puppy-5.1.1/
----
LupQ
http://shino.pos.to/linux/lupq/index.html
----
Hiawatha2
http://www.murga-linux.com/puppy/viewtopic.php?p=406732&sid=cb5f91a1816815b8474273c17dc2ac1e
----
Hiawatha
http://puppylinux.org/wikka/HiawathaServerMySQL
----
Div Pets
http://puppylinux.asia/members/index.php
----
PuppyStudio
http://www.murga-linux.com/puppy/viewtopic.php?search_id=403912236&t=60483
----
PuppyStudio3.1 repo
http://puppylinuxstuff.meownplanet.net/10wt3ch/
----
python puppy
http://puppylinux.org/wikka/Python
----
weberp
http://www.weberp.org/PuppyLinux
----
ServerPuppyDiskussion
http://www.murga-linux.com/puppy/viewtopic.php?t=43285&start=75
----
WebServerPuppy
http://www.browserpuppy.com/server.html
----
BrowserLinux
http://www.browserlinux.com/
----
Puppy ftp
ftp://distro.ibiblio.org/pub/linux/distributions/puppylinux/
----
Eric's makro forklaring#1
http://groups.google.dk/group/tiddlywiki/browse_thread/thread/6a78dfc5ee772cd5?hl=da
----
CSS tutorial
http://groups.google.dk/group/tiddlywiki/browse_thread/thread/fb20a3791a3cd9a5?hl=da
----
12 Days of TiddlyWiki
http://12days.osmosoft.com/
----
TiddlyHome TotallyTiddlers
http://maans.bplaced.net/TiddlyHome/index.html#txtTheme:TotallyTiddlers 1-2-3
----
TillyWiki support på Linux abc
http://www.linux-abc.dk/phpBB3/viewforum.php?f=24
----
The Gecko Edubook på nortec.com
http://www.norhtec.com/products/gecko/index.html
----
The gecko Edubook.pdf
http://www.norhtec.com/info/datasheets/geckoedubookbrochure.pdf
----
Review: Gecko Edubook ...
http://www.ipernity.com/blog/virtualsky/223038
----
TiddlyWikis googlegruppe
http://groups.google.dk/group/tiddlywiki?hl=da
----
TiddlyWiki.com
http://tiddlywiki.com
----
tw-abc med TotallyTiddlersTema
http://tw-abc.tiddlyspot.com/#txtTheme:TotallyTiddlers
----
Option paramifiers in urls
http://groups.google.dk/group/tiddlywiki/browse_thread/thread/a1e12d6c650561a6/f3690e89b74b9eda?hl=da&lnk=gst&q=open+config+option+url#f3690e89b74b9eda
----
Måns' indlæg på TiddlyWiki googlegroup
http://groups.google.dk/groups/search?hl=da&scoring=d&filter=0&enc_author=TL3rmxIAAACOXD17GHw82HnRt3bG-LGz8rhlH0Pnl47z4AZhN98BFg
----
TiddlyWiki på Linux-abc
http://www.linux-abc.dk/phpBB3/viewforum.php?f=20
----
Denne side på nettet
http://notabene.tiddlyspot.com/
----
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Documentation
>see [[MiniBrowserPluginInfo]]
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Revisions
<<<
2009.08.29 [1.5.2] in load(), fixed 'noplayer' IFRAME output
2009.07.03 [1.5.1] added onclick handling to 'n of m' button.  also, if noedit mode, add line numbers to bookmarks droplist items
2009.06.08 [1.5.0] added optional 'noedit' mode: replaces add/del/edit buttons with next/previous navigation.
|see [[MiniBrowserPluginInfo]] for additional revision details|
2007.10.15 [1.0.0] combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 [0.0.0] inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.MiniBrowserPlugin={major: 1, minor: 5, revision: 2, date: new Date(2009,8,29)};

config.shadowTiddlers.MiniBrowser='<<miniBrowser>>';
config.options.txtMiniBrowserWidth=config.options.txtMiniBrowserWidth||'100%';
config.options.txtMiniBrowserHeight=config.options.txtMiniBrowserHeight||'480';
config.macros.miniBrowser= {
	favoritesList: 'MiniBrowserList',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var noPlayer=params[0]&&params[0].toLowerCase()=='noplayer'; if (noPlayer) params.shift();
		var noEdit  =params[0]&&params[0].toLowerCase()=='noedit';   if (noEdit)   params.shift();
		var expand  =params[0]&&params[0].toLowerCase()=='expand';   if (expand)   params.shift();
		var hideControls=params[0]&&params[0].toLowerCase()=='hidecontrols'; if (hideControls) params.shift();
		var url=(params[0]&&!store.tiddlerExists(params[0]))?params.shift():'';
		hideControls=hideControls&&url.length; // no initial URL, show controls anyway
		if (!config.macros.player) noPlayer=true; // PlayerPlugin not installed
		var w=config.options.txtMiniBrowserWidth;
		var h=config.options.txtMiniBrowserHeight;

		// create form
		var guid=new Date().getTime()+Math.random().toString(); // globally unique ID
		var html=store.getTiddlerText('MiniBrowserPlugin##html');
		html=html.replace(/%id%/g,guid)
			.replace(/%noplayer%/g,noPlayer?'true':'')
			.replace(/%noedit%/g,noEdit||readOnly?'none':'inline')
			.replace(/%shownav%/g,noEdit||readOnly?'inline':'none')
			.replace(/%hidecontrols%/g,hideControls?'none':'block')
			.replace(/%bookmarksize%/g,(expand?70:20)+'%')
			.replace(/%urlsize%/g,(expand?69.5:20)+'%')
			.replace(/%linebreak%/g,expand?'<br>':'')
			.replace(/%favorites%/g,params[0]||config.macros.miniBrowser.favoritesList);
		createTiddlyElement(place,'span').innerHTML=html;

		// init form
		function $(i){return document.getElementById(i)}; // abbrev
		$('minibrowser_controls_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_resize_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_togglecontrols_'+guid).checked=!hideControls;
		$('minibrowser_form_'+guid).url.value=url;
		$('minibrowser_form_'+guid).w.value=w;
		$('minibrowser_form_'+guid).h.value=h;
		if (noPlayer) { // hide type list no PlayerPlugin
			$('minibrowser_type_'+guid).style.display='none';
			$('minibrowser_url_'+guid).style.width=(expand?81.5:32)+'%';
		}

		// load bookmarks droplist from HR-separated tiddler contents
		var b=$('minibrowser_bookmarks_'+guid);
		while (b.options[1]) b.options[1]=null; // clear list but leave 'prompt' item
		var p; while (p=params.shift()) this.getFavorites(b,p,noEdit); // load custom bookmarks
		if (b.length<2) this.getFavorites(b,config.macros.miniBrowser.favoritesList,noEdit); // default list
		$('minibrowser_nav_'+guid).value='1 out of '+b.length;

		// load initial URL (if any)
		var place=$('minibrowser_player_'+guid);
		this.load(place,guid,'','',w,h,true,noPlayer);
		this.go($('minibrowser_form_'+guid));
	},
	getFavorites: function(list,tid,noEdit) {
		var txt=store.getTiddlerText(tid); if (!txt||!txt.trim().length) return;
		txt=this.getWikifiedData(txt);
		var parts=txt.split('\n----\n');
		for (var p=0; p<parts.length; p++) {
			var lines=parts[p].split('\n');
			var label=lines.shift()||''; // 1st line=display text
			var value=lines.shift()||''; // 2nd line=item value
			var indent=value&&value.length?'\xa0\xa0':'';
			var prefix=value.length&&noEdit?list.length+1+': ':'';
			list.options[list.length]=new Option(prefix+indent+label,value,false,false);
		}
	},
	getWikifiedData: // wikify content, then extract text WITH newlines and HRs included
	function(txt) {
		var e=createTiddlyElement(document.body,'div'); wikify(txt,e);
		var breaks=e.getElementsByTagName('br');
		for (var b=0; b<breaks.length; b++)
			breaks[b].parentNode.insertBefore(document.createTextNode('\n'),breaks[b]);
		var lines=e.getElementsByTagName('hr');
		for (var l=0; l<lines.length; l++)
			lines[l].parentNode.insertBefore(document.createTextNode('----\n'),lines[l]);
		var items=e.getElementsByTagName('li');
		for (var i=0; i<items.length; i++)
			items[i].parentNode.insertBefore(document.createTextNode('\n'),items[i]);
		var txt=getPlainText(e);
		removeNode(e);
		return txt.replace(/\r*/g,'').replace(/\n\n/g,'\n');
	},
	load: function(place,id,type,url,w,h,showcontrols,noPlayer) {
		if (!noPlayer)
			config.macros.player.loadURL(place,id,type,url,w,h,showcontrols);
		else { // force IFRAME-only display
			if (!place) place=document.getElementById(id).parentNode;
			var fmt="<iframe name='%0' id='%0' src='%1' width='%2' height='%3' \
				style='background:#fff;border:1px solid'></iframe>";
			place.innerHTML=fmt.format([id,url,w,h]);
		}
	},
	go: function(f) {
		var url=f.url.value.trim();
		if (!url.length) url=f.url.value=f.bookmarks.value.trim();
		if (!url.length) { this.done(f); return false; }
		var id=f.playerID.value;
		document.getElementById('minibrowser_player_'+id).style.display='block';
		document.getElementById('minibrowser_controls2_'+id).style.display='block';
		this.load(null,id,f.type.value,f.url.value,f.w.value,f.h.value,f.ctrls.checked,f.noPlayer.value=='true');
		var matched=false; for (var i=0; i<f.bookmarks.options.length; i++) // select matching bookmark
			if (f.bookmarks.options[i].value==url) { f.bookmarks.selectedIndex=i; matched=true; break; }
		if (!matched) f.bookmarks.selectedIndex=0;
		f.done.disabled=false;
		return false;
	},
	done: function(f) {
		var id=f.playerID.value;
		this.load(null,id,null,null,f.w.value,0,f.ctrls.checked,f.noPlayer.value=='true');
		document.getElementById('minibrowser_player_'+id).style.display='none';
		document.getElementById('minibrowser_controls2_'+id).style.display='none';
		f.done.disabled=true; 
		return false;
	},
	fit: function(place) {
		// fudge factor to account for the other controls + padding + borders.  ADJUST THIS VALUE TO FIT LAYOUT
		var trim=89;
		var t=story.findContainingTiddler(place);
		if (!t) { t=place; while (t && t.className!='floatingPanel') t=t.parentNode; } if (!t) return;
		var w='100%'; // horizontal stretching via CSS works, but vertical stretching doesn't... so:
		var h=t.offsetHeight-trim; // workaround: get containing panel/tiddler height and subtract trim height
		var f=place.form;
		this.load(null,f.playerID.value,f.type.value,f.url.value,w,h,f.ctrls.checked,f.noPlayer.value=='true');
		place.form.w.value=w; place.form.h.value=h; // update width/height input fields
	},
	add: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=prompt('Please enter a description for\n'+place.value); if (!d || !d.length) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var tid=store.getTiddler(title);
		var txt='%0\n%1\n----\n%2'.format([d,v,tid?tid.text:'']);
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		if (!tid) story.displayTiddler(story.findContainingTiddler(place),title);
		else story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	},
	del: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=place.options[place.selectedIndex].text; if (!d.length) return;
		if (!confirm('Are you sure you want to remove this favorite?\n\n'+d+'\n'+v)) return;
		var tid=store.getTiddler(title); if (!tid) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var pat='%0\n%1\n----\n'.format([d.replace(/\xa0/g,''),v]); var re=new RegExp(pat,'i');
		var txt=tid.text.replace(re,'');
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	}
}
//}}}
/***
//{{{
!html
<form id='minibrowser_form_%id%' style='display:block;margin:0;padding:0' onsubmit='return config.macros.miniBrowser.go(this);'><!--
--><nobr><input type='hidden' name='playerID' value='%id%'><input type='hidden' name='noPlayer' value='%noplayer%'><!--
--><div id='minibrowser_controls_%id%' style='display:%hidecontrols%'><!--
--><input type='button' value='<' title='back' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(-1)}catch(e){window.history.go(-1)}' ><!--
--><input type='button' value='>' title='forward' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(+1)}catch(e){window.history.go(+1)}'><!--
--><input type='button' value='+' title='refresh'style='width:3%'
	onclick='try{window.frames["player_%id%"].location.reload()}catch(e){;}'><!--
--><input type='button' value='x' title='stop'style='width:3%'
	onclick='window.stop()'><!--
--><select name='bookmarks' id='minibrowser_bookmarks_%id%' size='1' style='width:%bookmarksize%'
	onchange='this.form.url.value=this.value;
		this.form.nav.value="%0 out of %1".format([this.selectedIndex+1,this.length]);
		this.form.nav.title="reload %0".format([this.options[this.selectedIndex].text]);
		return config.macros.miniBrowser.go(this.form);'><!--
--><option value=''>bookmarks...</option><!--
--></select><!--
--><span style='display:%noedit%'><!--
--><input type='button' value='add' title='add URL to the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.add(this.form.url,this.getAttribute("favorites"));'><!--
--><input type='button' value='del' title='remove URL from the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.del(this.form.bookmarks,this.getAttribute("favorites"));'><!--
--><input type='button' value='edit' title='edit the bookmarks list' style='width:6%'
	favorites="%favorites%"
	onclick='story.displayTiddler(null,this.getAttribute("favorites"),2)'><!--
--></span><!--
--><span style='display:%shownav%'><!--
--><input name=prev type='button' value='&#x25C4;' title='view previous bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.max(b.selectedIndex-1,0); b.onchange();'><!--
--><input name='nav' id='minibrowser_nav_%id%'
	type='button' value='N out of MM' title='enter a bookmark number' style='width:12%'
	onclick='return this.form.next.click();
		var b=this.form.bookmarks;
		var i=prompt("Enter a bookmark number (1-"+b.length+")",b.selectedIndex+1);
		if (i && i<b.length) { b.selectedIndex=i-1; b.onchange(); }'><!--
--><input name=next type='button' value='&#x25BA;' title='view next bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.min(b.selectedIndex+1,b.length); b.onchange();'><!--
--></span><!--
-->%linebreak%<!--
--><select name='type' id='minibrowser_type_%id%' size='1' style='width:12%'
	onchange='var opt=this.options; for (var i=0; i<opt.length; i++)
		if (i==this.selectedIndex) opt[i].text=opt[i].text.replace(/\xa0\xa0/,"&radic;");
		else opt[i].text=opt[i].text.replace(/&radic;/,"\xa0\xa0");
		if (this.selectedIndex==0) opt[1].text=opt[1].text.replace(/\xa0\xa0/,"&radic;");'><!--
--><option value=''>type...</option><!--
--><option value=''>&radic; auto-detect</option><!--
--><option value='iframe'>&nbsp;&nbsp; web page</option><!--
--><option value='windows'>&nbsp;&nbsp; windows media</option><!--
--><option value='realone'>&nbsp;&nbsp; real one</option><!--
--><option value='quicktime'>&nbsp;&nbsp; quicktime</option><!--
--><option value='flash'>&nbsp;&nbsp; flash</option><!--
--><option value='image'>&nbsp;&nbsp; jpg/gif/png</option><!--
--></select><!--
--><input type='text' name='url' id='minibrowser_url_%id%' size='60' value='' style='width:%urlsize%'
	onfocus='this.select()'><!--
--><input type='submit' value='go' title='view URL' style='width:6%'><!--
--><input type='button' value='open' title='open a separate tab/window' style='width:6%'
	onclick='if (this.form.url.value.length) window.open(this.form.url.value)'><!--
--><input type='button' value='done' name='done' disabled title='disconnect from URL' style='width:6%'
	onclick='return config.macros.miniBrowser.done(this.form);'><!--
--></div><!--
--><div id='minibrowser_player_%id%' style='display:none;text-align:center'></div><!--
--><span id='minibrowser_controls2_%id%' style='margin-top:2px;display:none;'><!--
--><div id='minibrowser_resize_%id%' style='display:%hidecontrols%;float:right'><!--
--> size: <input type='text' name='w' size='3' value='' style=''
	onfocus='this.select()'><!--
-->x<input type='text' name='h' size='3' value='' style=''
	onfocus='this.select()'><!--
--> <input type='submit' value='set' style='width:5em'
	onclick='var f=this.form;
		if(!f.w.value.trim().length) f.w.value=config.options.txtMiniBrowserWidth;
		if(!f.h.value.trim().length) f.h.value=config.options.txtMiniBrowserHeight;
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='submit' value='reset' style='width:5em'
	onclick='var f=this.form; f.ctrls.checked=true; f.w.value="100%"; f.h.value="480";
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='button' value='fit' title='resize player to fit containing window' style='width:5em'
	onclick='config.macros.miniBrowser.fit(this)'><!--
--></div><!--
--> <input type='checkbox' name='ctrls' id='minibrowser_togglecontrols_%id%' title='toggle minibrowser controls' CHECKED 
	onclick='document.getElementById("minibrowser_controls_%id%").style.display=this.checked?"block":"none";
		document.getElementById("minibrowser_resize_%id%").style.display=this.checked?"block":"none";'
><a href='' title='toggle minibrowser controls'
	onclick='this.previousSibling.click();return false;'>show controls</a><!--
--></span><!--
--></nobr></form>
!end
//}}}
***/
 
!URL
http://www.mixxx.org/
--[[Download mixx-1.6.1_400.sfs|http://puppylinux.asia/tpp/aragon/mixxx-1.6.1_400.sfs.zip]]--
!Description
--[[Download mixx-1.6.1_400.sfs|http://puppylinux.asia/tpp/aragon/mixxx-1.6.1_400.sfs.zip]] unzip to Home directory and rename to mixx-1.6.1_511.sfs, run the Utility - General utilities -  SFSconvert version converter, and choose the converted sfs-file in the System - Bootmanager configure bootup menu... reboot.--  @@color:#C03;background-color:#FFF;<-Doesn't work due to incompatible qt-libraries!@@
Mixxx is free, open source DJ software that gives you everything you need to perform live mixes.

Set your Mixes Free
Our advanced mixing engine gives you complete control over your live mixes. Hot cues, looping controls, and our high fidelity EQs let you mix and remix with more control. 
[[How to install MuseScore in Puppy Linux|http://www.murga-linux.com/puppy/viewtopic.php?t=49607&sid=733888e3d5469abc9b40062018ad0a7d]] <<tiddler pop with: videotutorials [[MuseScore##video]]>><<tiddler PopOut with:"http://www.youtube.com/embed/0mh6m2mbVHs" popout 400 400>>
[[Website|http://musescore.org/]]
<<image "http://musescore.org/sites/musescore.org/files/main7s.png" link:"http://musescore.org/">>
/%
!video
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/0mh6m2mbVHs" frameborder="0"></iframe></html>
................................................................................................................................................................
!end %/
<html><a title="View MuseScore En on Scribd" href="http://www.scribd.com/doc/39497808/MuseScore-En" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">MuseScore En</a> <object id="doc_575975432398382" name="doc_575975432398382" height="600" width="450" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" >		<param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf">		<param name="wmode" value="opaque"> 		<param name="bgcolor" value="#ffffff"> 		<param name="allowFullScreen" value="true"> 		<param name="allowScriptAccess" value="always"> 		<param name="FlashVars" value="document_id=39497808&access_key=key-1hs3n6m2sao9buy6n0ay&page=1&viewMode=list"> 		<embed id="doc_575975432398382" name="doc_575975432398382" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=39497808&access_key=key-1hs3n6m2sao9buy6n0ay&page=1&viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="450" wmode="opaque" bgcolor="#ffffff"></embed> 	</object>	</html>
++++*[MuseScoreTips]...<<tiddler PopOut with:"http://www.musescoretips.com/"[[musescoretips popout]] 900 900>>
<<miniBrowser http://www.musescoretips.com/>>===
+++*[MuseScoreManual]...<<tiddler PopOut with:"http://www.scribd.com/doc/39497808/MuseScore-En"[[popout]] 900 900>><html><a title="View MuseScore En on Scribd" href="http://www.scribd.com/doc/39497808/MuseScore-En" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">MuseScore En</a> <object id="doc_833203347251860" name="doc_833203347251860" height="600" width="450" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" >		<param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf">		<param name="wmode" value="opaque"> 		<param name="bgcolor" value="#ffffff"> 		<param name="allowFullScreen" value="true"> 		<param name="allowScriptAccess" value="always"> 		<param name="FlashVars" value="document_id=39497808&access_key=key-1hs3n6m2sao9buy6n0ay&page=1&viewMode=book"> 		<embed id="doc_833203347251860" name="doc_833203347251860" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=39497808&access_key=key-1hs3n6m2sao9buy6n0ay&page=1&viewMode=book" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="450" wmode="opaque" bgcolor="#ffffff"></embed> 	</object>	</html>===
<<list filter "[tag[Music]]">> 
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
	config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");

// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				var defopen=lookaheadMatch[1];
				var cookiename=lookaheadMatch[2];
				var header=lookaheadMatch[3];
				var panelwidth=lookaheadMatch[4];
				var transient=lookaheadMatch[5];
				var hover=lookaheadMatch[6];
				var buttonClass=lookaheadMatch[7];
				var label=lookaheadMatch[8];
				var openlabel=lookaheadMatch[9];
				var panelID=lookaheadMatch[10];
				var blockquote=lookaheadMatch[11];
				var deferred=lookaheadMatch[12];

				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey, no alternate text/tip
				var show="none"; var cookie=""; var key="";
				var closedtext=">"; var closedtip="";
				var openedtext="<"; var openedtip="";

				// extra "+", default to open
				if (defopen) show="block";

				// cookie, use saved open/closed state
				if (cookiename) {
					cookie=cookiename.trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					show=config.options[cookie]?"block":"none";
				}

				// parse label/tooltip/accesskey: [label=X|tooltip]
				if (label) {
					var parts=label.trim().slice(1,-1).split("|");
					closedtext=parts.shift();
					if (closedtext.substr(closedtext.length-2,1)=="=")	
						{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
					openedtext=closedtext;
					if (parts.length) closedtip=openedtip=parts.join("|");
					else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
				}

				// parse alternate label/tooltip: [label|tooltip]
				if (openlabel) {
					var parts=openlabel.trim().slice(1,-1).split("|");
					openedtext=parts.shift();
					if (parts.length) openedtip=parts.join("|");
					else openedtip="hide "+openedtext;
				}

				var title=show=='block'?openedtext:closedtext;
				var tooltip=show=='block'?openedtip:closedtip;

				// create the button
				if (header) { // use "Hn" header format instead of button/link
					var lvl=(header.length>5)?5:header.length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
				btn.innerHTML=title; // enables use of HTML entities in label

				// set extra button attributes
				btn.setAttribute("closedtext",closedtext);
				btn.setAttribute("closedtip",closedtip);
				btn.setAttribute("openedtext",openedtext);
				btn.setAttribute("openedtip",openedtip);
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=defopen!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}
				btn.setAttribute("hover",hover?"true":"false");
				btn.onmouseover=function(ev) {
					// optional 'open on hover' handling
					if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
						document.onclick.call(document,ev); // close transients
						onClickNestedSlider(ev); // open this slider
					}
					// mouseover on button aligns floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
				}

				// create slider panel
				var panelClass=panelwidth?"floatingPanel":"sliderPanel";
				if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
				var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
				panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
				panel.setAttribute("transient",transient=="*"?"true":"false");
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!deferred) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",blockquote?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
				}
			}
		}
	}
)

function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
	if (!theTarget) return false;
	var theSlider = theTarget.sliderPanel;
	var isOpen = theSlider.style.display!="none";

	// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
	if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);

	// toggle label
	theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
	// toggle tooltip
	theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));

	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}

	// show/hide the slider
	if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";

	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;

	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);

	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ try{ ctrls[c].focus(); } catch(err){;} break; }
		}
	}
	var cookie=theTarget.sliderCookie;
	if (cookie && cookie.length) {
		config.options[cookie]=!isOpen;
		if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
		else window.removeCookie(cookie); // remove cookie if slider is in default display state
	}

	// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
	// prevent clicks *within* a slider button from being processed by browser
	// but allow plain click to bubble up to page background (to close transients, if any)
	if (e.shiftKey || theTarget!=resolveTarget(e))
		{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
	Popup.remove(); // close open popup (if any)
	return false;
}
//}}}
//{{{
// click in document background closes transient panels 
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);

	if (document.nestedSliders_savedOnClick)
		var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
	// if click was inside a popup... leave transient panels alone
	var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
	if (p) return retval;
	// if click was inside transient panel (or something contained by a transient panel), leave it alone
	var p=target; while (p) {
		if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
		p=p.parentNode;
	}
	if (p) return retval;
	// otherwise, find and close all transient panels...
	var all=document.all?document.all:document.getElementsByTagName("DIV");
	for (var i=0; i<all.length; i++) {
		 // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
		if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
		// otherwise, if the panel is currently visible, close it by clicking it's button
		if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
		if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
	}
	return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
	if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
		// see [[MoveablePanelPlugin]] for use of 'undocked'
		var rightEdge=document.body.offsetWidth-1;
		var panelWidth=panel.offsetWidth;
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
			left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
			if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
		}
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
			if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
			if (left<0) left=0;
		}
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
<<evalify [[var t=story.findContainingTiddler(place);t=t?t.getAttribute('tiddler'):'';'<<newTiddler "New tiddler" tag:[['+t+']\]>\>']]>><<rB "Ny" "Opret en ny tiddler der tagger til denne tiddler">>
<svg width="625" height="500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <title>Puppy Studio</title>
 <g>
  <title>Layer 1</title>
  <image xlink:href="http://i51.tinypic.com/igw6cp.jpg" id="svg_1" height="500" width="625" y="0" x="0"/>
 </g>
</svg>
<div id='header' class='header' macro='gradient vert   #555555       #3b3b3b '>
        <div class='siteTitle' refresh='content' tiddler='SiteTitle'></div>
        <span id='topMenu' refresh='content' tiddler='MainMenu'></span>
</div><div id='sidebarSearch' refresh='content' tiddler='SiteSearch'></div>
	<div class='clearFloat'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
<html><iframe src="http://docs.google.com/viewer?url=$1&embedded=true" width="100%" height="780" style="border: none;"></iframe></html>
[[Pencil animation/drawing software QT4 |http://www.murga-linux.com/puppy/viewtopic.php?t=28513&start=15]]
<<tiddler pop with: Videos [[Pencil##video]]>><<image "http://www.pencil-animation.org/contents//Home/pencil-home.png" link:"http://www.pencil-animation.org/">>
or [[download windows portable ver. use with wine|http://hotfile.com/get/77959541/4cd74ca6/f75da09/pencil-0.4.4b-win.zip]]
/%
!video
|borderless widetable|k
|<<tiddler Pencil##1>>|<<tiddler Pencil##2>>|
|...........................................................................................................................|...........................................................................................................................|
!1
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/QBENS-__CYo" frameborder="0"></iframe></html>
!2
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/CGrRC7F3YW4" frameborder="0"></iframe></html>
!end %/
<<tiddler SpMiniBrowser with: "http://pencil-animation.org/wiki/doku.php?id=en:users:manual:0.4.3b:index" "Usermanual" "http://pencil-animation.org/wiki/lib/exe/fetch.php?media=users:manual:0.4.3b-01-01-timeline.jpg">>
<html><A HREF="javascript:void(0)"onclick="window.open('$1','linkname','height=$3, width=$4,scrollbars=no')" accesskey="u">$2</a></html>
/***
|''Name:''|~PopupMacro|
|''Author:''|Saq Imtiaz (mod: Tobias Beer)|
|''Version:''|1.3 TB (2009-09-30)|
|''Description:''|Create popups with custom content|
|''Source:''|http://popup.tiddlyspace.com/#PopupMacro|
|''Documentation:''|http://tobibeer.tiddlyspace.com/#PopupMacroMod|
|''Requires:''|TW Version 2.5.3 or better|
!Code
***/
//{{{
//PARAMETERS
config.macros.popup={
hover:true,
hideAfter:700,
showAfter:200,
fadeTime:300,
err1:'missing macro parameters',
err2:'missing label or content parameter',
arrow:document.all?" ▼":" ▾",

//DO NOT CHANGE
handler:function(place,macroName,params,wikifier,paramString,theTiddler){
var btn,lbl,src,delay,show,
	p=paramString.parseParams(null,null,true),
	id=getParam(p,'id','nestedpopup'),
	cls='popup popupmacro'+getParam(p,'class',''),
	arr=getParam(p,'arrow',this.arrow),
	hover=(params.contains('hover')||this.hover)&&(!params.contains('nohover')||!this.hover),
	btnId='btn'+(new Date()).formatString('YYYYMMDDhhmmss')+Math.random().toString().substr(6);

if(!params[0]||!params[1]){createTiddlyError(place,this.err1,this.err2);return false;}
lbl=params[0];
src=(params[1]).replace(/\$\)\)/g,">>");

btn=createTiddlyButton(
	place,
	lbl+arr,
	lbl,
	this.show,
	'button popupbutton',
	btnId,
	null,
	{
		open:'true',
		popupclass:cls,
		content:src
	}
);
btn.setAttribute('popupid',!isNested(btn)?id:'popup');
btn.onmouseover=hover?(this.showAfter?this.delay:this.show):null;
btn.onmouseout=hover&&this.showAfter?this.abort:null;
},
close:function(p){
	if(p.getAttribute('close')=='ok'){
		//jQuery(p).fadeOut(this.fadeTime);
		//setTimeout(Popup.remove(),this.fadeTime);
	}
},
mouseout:function(){
	var cmp=config.macros.popup,p=this;
	p.setAttribute('close','ok');
	setTimeout(function(){cmp.close(p);},cmp.hideAfter);
},
mouseover:function(){
	this.setAttribute('close','');
},
delay:function(e){
	var btn=this,cmp=config.macros.popup;
	btn.setAttribute('abort','');
	setTimeout(function(){cmp.show(btn);},cmp.showAfter);
},
abort:function(e){
	var cmp=config.macros.popup;
	this.setAttribute('abort','true');
	var p=document.getElementById(this.getAttribute('popupid'));
	if(p){
		p.setAttribute('close','ok');
		setTimeout(function(){cmp.close(p);},cmp.hideAfter);
	}
},
show:function(e){
	var open,nest,p,tgt,cmp=config.macros.popup,
		btn=this.innerHTML?this:e;
		btnId=btn.getAttribute('id'),
		id=btn.getAttribute('popupid'),
		cls=btn.getAttribute('popupclass'),
		src=btn.getAttribute('content');
	e=e||window.event;
	if(btn.getAttribute('abort')=='true')return;
	open=btn.getAttribute('open')=='true';
	btn.setAttribute('open',!open);
	if(open){
		tgt=this.innerHTML?resolveTarget(e||window.event):btn;
		if(nest&&Popup.stack.length>1)Popup.removeFrom(1);
		else if(!nest&&Popup.stack.length>0)Popup.removeFrom(0);
		p=createTiddlyElement(document.body,"ol",id,cls,null);
		p.onmouseover=cmp.mouseover;
		p.onmouseout=cmp.mouseout;
		Popup.resetButtonShow();
		Popup.showButtonId=btnId;
		Popup.stack.push({root:btn,popup:p});
		wikify(src,p);
		Popup.show(p,true);
		if(e){
			e.cancelBubble=true;
			if(e.stopPropagation)e.stopPropagation();
		}
		return false;
	}
}
}

window.isNested=function(el){
	var c=document.getElementById("contentWrapper");
	while(el!=null){if(el==c)return true;el=el.parentNode;}return false;
}

Popup.resetButtonShow = function(){
	var btn=document.getElementById(Popup.showButtonId);
	if(btn){
		btn.setAttribute('open','true');
		Popup.showButtonId='';
	}	
}

if(!Popup.macroRemove)Popup.macroRemove=Popup.remove;
Popup.remove = function(pos)
{
	Popup.resetButtonShow();
	Popup.macroRemove.apply(this,arguments);
};

setStylesheet('#nestedpopup {margin-left:1em;}.popupbutton{cursor:pointer};','PopupMacroStyles');
//}}}
[[DAW possibility for Puppy |http://www.murga-linux.com/puppy/viewtopic.php?t=31683]]
[[PUPITUP MUSIC LAB|http://pupitup.org/]]
[[Puppy Portable Studio |http://208.109.22.214/puppy/viewtopic.php?t=39741&sid=e535f31c3a38cd37eba3672ffd11e663]]
[[lashstudio for puppy 431|http://murga-linux.com/puppy/viewtopic.php?t=51191]]
<<miniBrowser http://208.109.22.214/puppy/viewtopic.php?t=39741&sid=e535f31c3a38cd37eba3672ffd11e663
>>
<html><div align="center"><iframe src="http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/" frameborder="0" style="width:100%;height:40em"></iframe></div></html>
<<list filter "[tag[Puppy Linux]]">> 
<<miniBrowser http://www.puppylinuxstuff.meownplanet.net/index.html>>
Installation af TiddlyWeb eller TiddlySpace: http://puppyspace.tiddlyspace.com/
<<tiddler SpMiniBrowser with:"http://puppyspace.tiddlyspace.com/" "Opsætning af Puppy som server - med Hiawatha eller pythons egen server." "http://img840.imageshack.us/img840/4026/10793852.jpg">>
|borderless|k
|{{big{[[Puppy Studio 3.3 announcement (linuxmusicians.com)|http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994]]}}} |c
|<<popup "Videos: Ubuntu Studio PE(2.1) & Puppy Studio 3.1" [[<<tiddler PuppyStudio##video$))]] arrow:''>>|<<popup "Screenshot/link (3.1)" [[<<tiddler "PuppyStudio##img"$))]] arrow:''>> |
| [[Early announcement(at Puppy Linux forums)|http://murga-linux.com/puppy/viewtopic.php?t=60828]] | This wiki at tiddlyspace (danish version I'm afraid...) |
|<<tiddler PuppyStudio##startup>>|<<image "http://imageshack.dk/imagesfree/kCC72450.png"350 link:"http://puppystudio.tiddlyspace.com/">>|
/%
!video
|borderless widetable|k
|<<tiddler PuppyStudio##2.1>>|<<tiddler PuppyStudio##3.1>>|
..............................................................................................................................................................................................................................................
!!2.1
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/SkkpC_MAeWI" frameborder="0"></iframe></html>
!!3.1
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/36t8KGQp0VE" frameborder="0"></iframe></html>
!img
<<image PSImage link:"http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994">>
<<image "http://www.linux-abc.dk/phpBB3/download/file.php?id=130&mode=view" 435 link:"http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994">>
!startup
l0wt3ch 
Posted: Mon 01 Nov 2010, 05:32:	 
Puppy Studio began as an experiment: Was it possible to have a full-featured multimedia creation suite similar to Ubuntu Studio running on Puppy Linux? Puppy was fast, and ran entirely in RAM, so the realtime recording capabilities could be amazing. But would they? 

My original hypothesis was correct. Puppy gave the studio vastly improved latency, by virtue of running in RAM and its small size, that were unmatched by any other OS. Then I compiled a custom realtime kernel, and performance went through the roof!	

Then I discovered that Puppy allowed me to configure everything and remaster with the changes kept. That let me take all of the work out of setting up a Linux music studio so a user can get JACK running in realtime with a single click, often without ever touching the settings.
!end %/
Name: Ladislav Bodnar
E-mail: distro@distrowatch.com
----
Puppy Studio: the fastest, most versatile, multimedia creation software in the world! 

Based on Lucid Puppy 520, Puppy Studio features realtime kernel 2.6.33.5-rt and hyper-lowlatency audio recording. 
----
JACK is set to start in real-time mode; it should work right out of the box on most PCs. Feel free to lower the latency further if you have a fairly new computer by adjusting "frames/period" in JACK settings. 
----
Usb support for Line6 devices: 
----
Ardour, Hydrogen, and all the audio production software you've come to expect:
----
Fully-functional trial version of the popular REAPER software from Cockos Inc.: 
----
OpenShot video editor: 
----
Mplayer and VLC: 
----
Tons of additional software (i.e. Java, Cinelerra, Inkscape) available from Quickpet and Puppy Package Manager (Ubuntu repositories):
----
New in 3.3: 
- Graphical redesign, including new wallpapers, customized Wbar, and Icewm as the default desktop environment 
- Midi timer issue - FIXED 
- Firewire modules not loaded automatically at boot - FIXED 
- Boots straight to desktop, X is configured for you 
- Automatic Internet connection for eth0 
- Newer versions of many programs, including Ardour, Rosegarden, and Rakarrack 
- LMMS (thanks to stu90), MuseScore, and Pencil now included 
- And much more!

Remember - you need at least 512 MB of RAM to use this software! 

Big thanks to Playdayz for all his help, to BarryK for answering my Woof questions, jamesbond and emil for their init script expertise, 01micko for the custom version of Quickpet, and everyone who tried to be of assistance.  

Thanks to Russoodle for hosting the files. 

And thanks to PupGeek for the add-on Roxapps: Kdenlive, Avidemux, Scribus, Blender, and XaraLx. 
----
@all: I know that you're used to thinking of Puppy as a distro for older computers. But Puppy Studio was created with the idea of using Puppy's unique abilities to give it a technological edge - not for running on older computers. It is designed for, among other things, real, professional-quality, audio work. 

So if you're trying to run Studio on some ancient piece of crap you picked up for ten bucks at the local flea market, please, consider buying a slightly newer computer. And don't complain. 

Thank you.
!Puppy in RAM + Realtime Kernel + Preconfiguration = Win 

Once upon a time, musicians had to worry about "latency". Edit JACK settings. Configure their audio cards, install complicated software... and that's if realtime recording was even possible on your computer. Setting up an authentic, professional-grade, Linux audio workstation was next-to-impossible for the average person. And even then, industry-standard digital effects weren't compatible with Linux, because they were in VST format. All that time you spent was wasted, and you had to go crawling back to Windows. 

Fortunately, neither ourselves or those that are to follow need worry about such things any longer. 

No more hassling to set up JACK, or trying in vain to get a realtime kernel working. Everything comes pre-configured for you out-of-the-box with Puppy Studio - you don't have to be l33t to use it. All of the work of having a professional-quality Linux studio is done for you, simplifying the entire user experience. 

Puppy Studio runs entirely in RAM, making it faster and more efficient. Combined with the realtime kernel, that means no other OS gets latencies as low. Not even close! 

There's no need to install anything, and it can be carried in your pocket on a USB stick.
----

+++[Distribution	Puppy Linux - data]
Homepage	http://www.puppylinux.com/
Mailing-lister	--
User-forums	http://www.murga-linux.com/puppy
Documentation	http://puppylinux.org/wikka/CategoryDocumentation
Screenshots	The Coding Studio
Download-mirrors	http://www.puppylinux.com/download
Bug Tracker	--
Related Homepages	PuppyLinux.org • Puppy Linux News • Puppy for Win98 • Wikipedia • Dotpups.de (German) • Puppy China • Puppy Hungary • Puppy Japan
Reviews	 5.x: PCWorld • Raiden's Realm • EasyLinuxCDs • Tech • Dedoimedo • Linux Journal • Desktop Linux Reviews • IT Lure
4.x: LWN • Desktop Linux Reviews • DistroWatch • Tech Exposures • DesktopLinux • Dedoimedo • Blogspot • Blogspot • LinuxInsider • Linux.com • Tech Source
3.x: TechieMoe • Linux.com • DistroWatch • Lifehacker
2.x: DesktopLinux • Free Software Magazine • ReviLinux • Blogspot • Linux.com • Tuxmachines
1.x: DistroWatch • Linux.com • DesktopLinux===
----
''l0wtech'' has announced the release of Puppy Studio 3.3 (realtime) edition, a small, very fast and light distribution designed for music production: "Puppy Studio: the fastest, most versatile, multimedia creation software in the world!. No more hassling to set up JACK, or trying in vain to get a realtime kernel working. Everything comes pre-configured for you out-of-the-box with Puppy Studio - you don't have to be l33t to use it. All of the work of having a professional-quality Linux studio is done for you, simplifying the entire user experience. 
Puppy Studio runs entirely in RAM, making it faster and more efficient. Combined with the realtime kernel, that means no other OS gets latencies as low. Not even close! 
There's no need to install anything, and it can be carried in your pocket on a USB stick.
Puppy Studio was created with the idea of using Puppy Linux's unique abilities to give it a technological edge - not for running on older computers - you'll need at least 512 MB of RAM to use this software!. 
Based on Lucid Puppy 520, Puppy Studio features realtime kernel 2.6.33.5-rt and hyper-lowlatency audio recording. Boots straight to desktop, X is configured for you. Automatic Internet connection for eth0. Newer versions of many programs, including Ardour, Rosegarden, and Rakarrack, LMMS (thanks to stu90), MuseScore, Pencil and OpenShot video editor included.- And much more. Tons of additional software (i.e. Java, Cinelerra, Inkscape) available from Quickpet and Puppy Package Manager (Ubuntu repositories). Add-on Roxapps (made by PupGeek): Kdenlive, Avidemux, Scribus, Blender, and XaraLx. Graphical redesign, including new wallpapers, customized Wbar, and Icewm as the default desktop environment." Check out [[the more detailed release notes|http://www.murga-linux.com/puppy/viewtopic.php?p=498348#498348]] for more information. [[Download|http://puppylinuxstuff.meownplanet.net/10wt3ch/Puppy_Studio_3.3/PuppyStudio3.3-rt.iso]](Username: puppy Password: linux) (MD5): 9d86f7237aa1c7c264559b5ac4510541  PuppyStudio3.3-rt.iso (378 MB).
<<tiddler PopOut with:"http://dapuppystudio.posterous.com/""BlogPopOut""800""1100">>
<html><div align="center"><iframe src="http://dapuppystudio.posterous.com/" frameborder="0" width="100%" height="600"></iframe></div></html>
......................................................................................................................................................................................................
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.

<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]].  You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/***
|Name|QuickEditPlugin|
|Source|http://www.TiddlyTools.com/#QuickEditPlugin|
|Documentation|http://www.TiddlyTools.com/#QuickEditPlugin|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2009.06.11 [2.4.3] added keyup() function to abbreviate listbox handling for CR and ESC
2009.05.07 [2.4.2] added processed() function to abbreviate event handler code
2008.09.07 [2.4.1] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 [2.4.0] copied code from StickyPopupPlugin to remove dependency
2008.05.12 [2.3.0] added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 [2.2.0] converted from inline script
2007.03.29 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2009,6,11)};

// SET STYLESHEET
setStylesheet("\
.quickEdit a { border:2px outset ButtonFace; padding:0px 3px !important; \
	-moz-border-radius:.5em; -webkit-border-radius:.5em; \
	-moz-appearance:button !important; -webkit-appearance:push-button !important; \
	background-color:ButtonFace; color:ButtonText !important;  \
	line-height:200%; font-weight:normal; } \
.quickEdit a:hover { border: 2px inset ButtonFace; background-color:ButtonFace; }\
", "quickEditStyles");

// REMOVE COOKIE
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

// UTILITY FUNCTIONS
config.quickEdit = {
	processed: function(ev) { ev=ev||window.event;
		ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	keyup: function(ev){ var k=(ev||window.event).keyCode;
		if (k==13) this.onclick();
		if (k==27) Popup.remove();
	},
	getField: function(where) {
		var here=story.findContainingTiddler(where); if (!here) return null;
		var e=story.getTiddlerField(here.getAttribute("tiddler"),"text");
		if (e&&e.getAttribute("edit")=="text") return e;
		return null;
	},
	setSelection: function(where,newtext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,newtext);
		return false;
	},
	wrapSelection: function(where,before,after) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,before+config.quickEdit.getSelection(e)+after);
		return false;
	},
	getSelection: function(e) {
		var seltext="";
		if (e&&e.setSelectionRange)
			seltext=e.value.substr(e.selectionStart,e.selectionEnd-e.selectionStart);
		else if (document.selection) {
			var range = document.selection.createRange();
			if (range.parentElement()==e) seltext=range.text
		}
		return seltext;
	},
	promptForFilename: function(msg,path,file) {
		if(window.Components) { // moz
			try {
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
				var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
				var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
				picker.init(window, msg, nsIFilePicker.modeOpen);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension='jpg';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterImages);
				if (picker.show()!=nsIFilePicker.returnCancel)
					var result="file:///"+picker.file.persistentDescriptor.replace(/\\/g,'/');
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|JPG files|*.jpg|GIF files|*.gif|PNG files|*.png|';
				s.FilterIndex=1; // default to JPG
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
		}
		return result;
	}
}
//}}}

//{{{
if (config.options.chkShowQuickEdit===undefined) config.options.chkShowQuickEdit=false;
config.commands.toggleQuickEdit = {
	hideReadOnly: true,
	getText: function() { return config.options.chkShowQuickEdit?'\u221Aquickedit':'quickedit'; },

	tooltip: 'show QuickEdit toolbar buttons',
	handler: function(event,src,title) {
		var opt='chkShowQuickEdit';
		config.options[opt]=!config.options[opt];
		config.macros.option.propagateOption(opt,"checked", config.options[opt],"input");
		if (config.options[opt]) saveOptionCookie(opt);	else removeCookie(opt);
		src.innerHTML=config.commands.toggleQuickEdit.getText();
		story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
		return false;
	}
};
//}}}

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|transclusion|
|Requires|QuickEditPlugin|
|Optional|QuickEdit_*|
|Description|format/insert TiddlyWiki content using toolbar buttons|

Usage:
* install [[QuickEditPlugin]] (runtime support functions)

* add the toolbar to [[EditTemplate]]:
	<div macro='tiddler QuickEditToolbar with: show'></div>

* 'show' (optional) forces the toolbar to always be displayed or,
  omit keyword and use <<option chkShowQuickEdit>> setting

* selected QuickEdit buttons can also be added individually to the
  regular tiddler toolbar by adding references directly in [[EditTemplate]]:
	<span class='toolbar' macro='tiddler QuickEdit_...'></span>

* see [[QuickEditPackage]] for additional installation options

%/{{hidden fine center quickEdit{
<<tiddler {{ // show/hide toolbar
	var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute('tiddler');
	var show='$1'!='$'+'1'||config.options.chkShowQuickEdit||tid=='QuickEditToolbar'; 
	place.style.display=show?'block':'none';
'';}}>>/%

TOOLBAR DEFINITION - add, remove, or re-order items as desired:
= = = = = = = = = =
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/<<tiddler QuickEdit_convert>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_insert>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_custom>>/%
%/}}}
/%
|Name|QuickEdit_align|
|Source|http://www.TiddlyTools.com/#QuickEdit_align|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text alignment|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="align text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text alignment...','');
	s.options[s.length]=new Option('left','left');
	s.options[s.length-1].title='{{left{...}}}';
	s.options[s.length]=new Option('center','center');
	s.options[s.length-1].title='{{center{...}}}';
	s.options[s.length]=new Option('right','right');
	s.options[s.length-1].title='{{right{...}}}';
	s.options[s.length]=new Option('justify','justify');
	s.options[s.length-1].title='{{justify{...}}}';
	s.options[s.length]=new Option('float left','floatleft');
	s.options[s.length-1].title='{{floatleft{...}}}';
	s.options[s.length]=new Option('float right','floatright');
	s.options[s.length-1].title='{{floatright{...}}}';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.wrapSelection(this.button,'{{'+this.value+'{','}}}');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>align</a></html>
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text/background color|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="text/background color - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
 	p.style.padding='2px';
	function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
	var fg=createTiddlyElement(p,'select'); fg.button=this;
	fg.style.width='12em';
	fg.options[0]=new Option('text color...','');
	fg.options[1]=new Option('\xa0 or enter a value','_ask');
	fg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(r)+hex(g)+hex(b);
		fg.options[fg.length]=new Option(label,'#'+label);
		fg.options[fg.length-1].style.color='#'+label;
	}
	fg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
		var bg=this.nextSibling;
		for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
		var preview=this.nextSibling.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var bg=createTiddlyElement(p,'select'); bg.button=this;
	bg.style.width='12em';
	bg.options[0]=new Option('background color...','');
	bg.options[1]=new Option('\xa0 or enter a value','_ask');
	bg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(15-r)+hex(15-g)+hex(15-b);
		bg.options[bg.length]=new Option(label,'#'+label);
		bg.options[bg.length-1].style.backgroundColor='#'+label;
	}
	bg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val;
		this.options[0].text=val.length?'background: '+val:'background color...';
		var fg=this.previousSibling;
		for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
		var preview=this.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
	b.value='ok'; b.style.width='4em';
	b.onclick=function() {
		var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
		Popup.remove(); return false;
	};
	var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
	s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
	s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
	var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
	wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>color</a></html>
/%
|Name|QuickEdit_convert|
|Source|http://www.TiddlyTools.com/#QuickEdit_convert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - convert between comma/tab-separated and TW table format|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="convert between comma/tab-separated and TW table format"
onclick="var e=config.quickEdit.getField(this);
	if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	if (txt.indexOf(',')+txt.indexOf('\t')+txt.indexOf('|')==-3) {
		alert('Please select text containing tabs, commas, or TiddlyWiki table syntax.');
		return false;
	}
	var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a converter...','');
	if (txt.indexOf(',')!=-1) {
		s.options[s.length]=new Option('commas -> table','commasToTable');
		s.options[s.length]=new Option('commas -> tabs','commasToTabs');
	}
	if (txt.indexOf('\t')!=-1) {
		s.options[s.length]=new Option('tabs -> table','tabsToTable');
		s.options[s.length]=new Option('tabs -> commas','tabsToCommas');
	}
	if (txt.indexOf('|')!=-1) {
		s.options[s.length]=new Option('table -> tabs','tableToTabs');
		s.options[s.length]=new Option('table -> commas','tableToCommas');
	}
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
	        var e=config.quickEdit.getField(this.button); if (!e) return false;
		e.focus(); var txt=config.quickEdit.getSelection(e);
		switch(this.value) {
			case 'tabsToTable':
				txt=txt.replace(/\t/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,'');
				break;
			case 'tableToTabs':
				txt=txt.replace(/\t/g,' ').replace(/\|/g,'\t');
				txt=txt.replace(/^\t/g,'').replace(/\t$/g,'');
				txt=txt.replace(/\n\t/g,'\n').replace(/\t\n/g,'\n');
				break;
			case 'commasToTable':
				txt=txt.replace(/,/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,''); 
				break;
			case 'tableToCommas':
				txt=txt.replace(/,/g,' ').replace(/\|/g,',');
				txt=txt.replace(/^,/g,'').replace(/,$/g,''); 
				txt=txt.replace(/\n,/g,'\n').replace(/,\n/g,'\n'); 
				break;
			case 'tabsToCommas':
				txt=txt.replace(/\t/g,',');
				break;
			case 'commasToTabs':
				txt=txt.replace(/,/g,'\t');
				break;
		}
		replaceSelection(e,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>convert</a></html>
/%
|Name|QuickEdit_custom|
|Source|http://www.TiddlyTools.com/#QuickEdit_custom|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - custom defined formats|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

!help
Reminders:

Custom formats are stored as an "HR-separated list" in [[QuickEdit_customList]], where the first line of each list item is the text 'label' to show in the droplist, followed by one or more lines of wiki content to be inserted into the tiddler source.

Substitution markers can be used to dynamically insert values into the formatted output: $1 inserts the tiddler editor's current selected text. $[[message|default value]] interactively prompts for a value to be inserted. $[[message|$1]] uses the selected text as the default value. $[[message|{{javascript}}]] calculates the default value using javascript code.
!end help

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" title="custom defined formats"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a custom format...','');
	var items=store.getTiddlerText('QuickEdit_customList','').split('\n----\n');
	for (var i=0; i<items.length; i++) {
		if (!items[i].length) continue; var lines=items[i].split('\n');
		var label=lines.shift(); var val=lines.join('\n');
		s.options[s.length]=new Option(label,val); s.options[s.length-1].title=val;
	}
	s.options[s.length]=new Option('[Edit custom formats...]','_edit');
	s.options[s.length-1].title='add/change custom format definitions...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		if (this.value=='_edit') {
			alert(store.getTiddlerText('QuickEdit_custom##help'));
			story.displayTiddler(story.findContainingTiddler(this.button),
				'QuickEdit_customList',DEFAULT_EDIT_TEMPLATE);
		} else {
		        var e=config.quickEdit.getField(this.button); if (!e) return false;
			e.focus(); var txt=config.quickEdit.getSelection(e);
			replaceSelection(e, this.value.replace(/\$\x31/g,txt)
				.replace(/\$\[\[[^\]]+\]\]/g, function(t){
					x=t.substr(3,t.length-5).split('|');
					var msg=x[0]; var def=x[1]||'';
					if (def.startsWith('{{')) {
						try{def=eval(def.substr(2,def.length-4))} catch(ex){showException(ex)}
					}
					return prompt(msg,def)||'';
				})
			);
		}
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>custom</a></html>
timestamp
$[[enter a date|{{new Date().formatString('DDD, MMM DDth, YYYY hh12:0mm:0ssam')}}]]
----
scrollbox
@@display:block;height:10em;overflow:auto;$1@@@@display:block;text-align:right;^^scroll for more...^^@@
----
nested slider
+++[$1]<<tiddler $1>>===
----
big red
@@font-size:36pt;color:red;$1@@
----
wikilink
[[$1]]
----
ikon
{{span{$1<<setIcon $2.png "" notext>>}}}
----
iframe + menubox
<html><div <span class='menubox' style='float:center;margin:0em'<div align="center"><iframe src="$1" frameborder="0" width="100%" height="800"></iframe></div></html>
----
iframe
<html><div align="center"><iframe src="$1" frameborder="0" width="100%" height="600"></iframe></div></html>
----
Hurtig fET tabel
<<forEachTiddler where 'tiddler.tags.contains("$1")'
sortBy 'tiddler.title'
write 
 '(index < 600)? "|!"+(index+1)+"|[["+tiddler.title+"]] |\n" : ""'
              begin '"|sortable|k\n" 
+"| !antal | !<<tag $1\>\> |h\n"' 
end 'count+" tiddlere tagget med $1\n"' none '"ingen tiddlere tagget med $1 \n"'>>
----
fET TagTilTabs
<<forEachTiddler
    where
       'tiddler.tags.contains("$1")'

    sortBy
       'tiddler.title.toUpperCase()'

    write '" [["+tiddler.title+" ]] \"view ["+tiddler.title+"]\" [["+tiddler.title+"]] "'

        begin '"<<tabs txtMyAutoTab "'

        end '">"+">"'

        none '"//Ingen tiddlere er tagget med \"$1\"//"'
>>
----
Tiddlermakro
<<tiddler $1>>
----
Billede
[img(100%+,auto)[$1]]
----
ShowPopup
<<tiddler ShowPopup with: $1[[Klik]][[Se i popup her]] button>>
----
Ryk ned og gør til overskrift

$1h
/%
|Name|QuickEdit_font|
|Source|http://www.TiddlyTools.com/#QuickEdit_font|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - select font family|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="set font-family CSS attribute - @@font-family:facename;...@@"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a font family...','');
	var fonts=store.getTiddlerText('QuickEdit_fontList','').split('\n');
	for (var i=0; i<fonts.length; i++) {
		if (!fonts[i].length) continue;
		s.options[s.length]=new Option(fonts[i],fonts[i]);
		s.options[s.length-1].style.fontFamily=fonts[i];
	}
	s.options[s.length]=new Option('[Edit font list...]','_edit');
	s.options[s.length-1].title='enter fonts, one per line...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){
		if (this.value=='_edit')
			story.displayTiddler(story.findContainingTiddler(this.button),'QuickEdit_fontList',DEFAULT_EDIT_TEMPLATE);			
		else
			config.quickEdit.wrapSelection(this.button,'@@font-family:\x22'+this.value+'\x22;','@@');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>font</a></html>
Arial,helvetica,sans-serif
Times New Roman,times,serif
Courier,monospaced
Comic Sans MS
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - basic text formats, headings, blockquotes, etc.|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="plain text (remove ALL formatting)" accesskey="P" 
onclick="var e=config.quickEdit.getField(this); if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	config.quickEdit.setSelection(e,wikifyPlainText(txt)); return false;"
>&nbsp;~&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="''bold''" accesskey="B"
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
>&nbsp;B&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="//italics//" accesskey="I" 
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
>&nbsp;I&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="__underline__" accesskey="U" 
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
>&nbsp;U&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="--strikethrough--" accesskey="S" 
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
>&nbsp;S&nbsp;</a></html>/%

%/ &nbsp;/%  SPACER

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="format text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text format...','');
	s.options[s.length]=new Option('CSS class wrapper','{{$1{,}}},Enter a CSS classname');
	s.options[s.length-1].title='CSS class wrapper - {{classname classname etc{...}}}';
	s.options[s.length]=new Option('inline CSS styles','@@$1,@@,Enter CSS (attribute:value;attribute:value;...;)');
	s.options[s.length-1].title='inline CSS styles - @@attr:value;attr:value;...@@';
	s.options[s.length]=new Option('heading 1','\n!,\n');
	s.options[s.length-1].title='H1 heading - !';
	s.options[s.length]=new Option('heading 2','\n!!,\n');
	s.options[s.length-1].title='H2 heading - !!';
	s.options[s.length]=new Option('heading 3','\n!!!,\n');
	s.options[s.length-1].title='H3 heading - !!!';
	s.options[s.length]=new Option('heading 4','\n!!!!,\n');
	s.options[s.length-1].title='H4 heading - !!!!';
	s.options[s.length]=new Option('heading 5','\n!!!!!,\n');
	s.options[s.length-1].title='H5 heading - !!!!!';
	s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
	s.options[s.length-1].title='indented blockquote - \<\<\<';
	s.options[s.length]=new Option('monospaced','{{{,}}}');
	s.options[s.length-1].title='inline monospaced text - {{{...}}}';
	s.options[s.length]=new Option('plain text','\n{{{\n,\n}}}\n');
	s.options[s.length-1].title='multi-line monospaced text box - {{{...}}}';
	s.options[s.length]=new Option('superscript','^^,^^');
	s.options[s.length-1].title='^^superscript^^';
	s.options[s.length]=new Option('subscript','~~,~~');
	s.options[s.length-1].title='~~subscript~~';
	s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
	s.options[s.length-1].title='HTML syntax - <html>...<\x2fhtml>';
	s.options[s.length]=new Option('comment','/%,%/');
	s.options[s.length-1].title='comment (hidden content) - /%...%/';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var parts=this.value.split(',');
		var prefix=parts[0]; var suffix=parts[1]; var ask=parts[2];
		if (ask) {
			var val=prompt(ask); if (!val) { Popup.remove(); return false; }
			prefix=prefix.replace(/\$1/g,val); suffix=suffix.replace(/\$1/g,val);
		}
		config.quickEdit.wrapSelection(this.button,prefix,suffix);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>format</a></html>
/%
|Name|QuickEdit_image|
|Source|http://www.TiddlyTools.com/#QuickEdit_image|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed an image|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
	title="embed an image (jpg/gif/png) - [img[tooltip|URL]] or [img[tooltip|path/to/file.ext]]"
	onclick="var fn=config.quickEdit.promptForFilename(
		'Enter/select an image file',getLocalPath(document.location.href),'');
	if (!fn) return false;  /* cancelled by user */
	var h=document.location.href; var p=decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1));
	if (fn.startsWith(p)) fn=fn.substr(p.length); /* use RELATIVE path/filename.ext */
	var tip=prompt('Enter a tooltip for this image',''); if (!tip) tip=''; else tip+='|';
	return config.quickEdit.setSelection(this,'[img['+tip+fn+']]');"
>image</a></html>
/%
|Name|QuickEdit_insert|
|Source|http://www.TiddlyTools.com/#QuickEdit_insert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert content from another tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="insert content from another tiddler or external file"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
	s2.options[0]=new Option('filter by tag...','');
	s2.options[s2.length]=new Option('[all tiddlers]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('select a tiddler or file...','');
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		if (this.value=='_file') {
			var fn=config.quickEdit.promptForFilename(
				'Enter/select a text file',getLocalPath(document.location.href),'');
			if (!fn) return false; /* cancelled by user */
			var txt=loadFile(getLocalPath(fn));
			if (!txt) { alert('Error: unable to read contents from \0027'+fn+'\0027'); return; }
		}
		else var txt=store.getTiddlerText(this.value);
		if (!txt) {
			displayMessage(this.value+' not found');
			this.selectedIndex=0; this.focus();
			return false;
		}
		config.quickEdit.setSelection(this.button,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>insert</a></html>
/%
|Name|QuickEdit_link|
|Source|http://www.TiddlyTools.com/#QuickEdit_link|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - link to tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="add a link to a tiddler or external file - [[link text|TiddlerName]]"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
	s2.options[0]=new Option('filter by tag...','');
	s2.options[s2.length]=new Option('[all tiddlers]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('select a tiddler or file...','');
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		var title=this.value; var txt=title;
		if (title=='_file') {
			title=config.quickEdit.promptForFilename('Select a file',
				getLocalPath(document.location.href),'');
			if (!title) { this.selectedIndex=0; this.focus(); return false; }
			var txt=title.substr(title.lastIndexOf('/')+1);
		}
		var txt=prompt('Enter the text to display for this link',txt);
		if (!txt) { this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,'[['+txt+'|'+title+']]');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>link</a></html>
/%
|Name|QuickEdit_macro|
|Source|http://www.TiddlyTools.com/#QuickEdit_macro|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed a macro with 'guide text'|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Note:
Optional 'guideText' can be used to add suggested defaults/placeholders for specific macro parameters.
Add guideText to your own plugin-defined macros using:
	config.macros.macroName.guideText='guide text goes here';

%/<<tiddler {{
	/* define guide text for a few common TW core macros */
	config.macros.edit.guideText='fieldname #rows';
	config.macros.view.guideText='fieldname (link,wikified,date) format';
	config.macros.slider.guideText='cookie TiddlerName label tooltip';
	config.macros.option.guideText='(txtCookieName,chkCookieName)';
	config.macros.tiddler.guideText='TiddlerName with: params...';
	''; /* must return blank to suppress output */ }}>>/%

%/<html><hide linebreaks><a href='javascript:;' class='tiddlyLink' tabindex='-1' 
title='add a macro - \<\<macroName ...\>\>'
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a macro...','');
	var macros=[]; for (var m in config.macros) if (config.macros[m].handler) macros.push(m); macros.sort();
	for (var i=0; i<macros.length; i++) { var m=macros[i];
		var help=config.macros[m].guideText; if (!help) help=''; else help=' '+help;
		s.options[s.length]=new Option(m,m+help);
		s.options[s.length-1].title='\<\<'+m+help+'\>\>';
	}
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.setSelection(this.button,'\<\<'+this.value+'\>\>');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>macro</a></html>
/%
|Name|QuickEdit_replace|
|Source|http://www.TiddlyTools.com/#QuickEdit_replace|
|Version|2.4.4|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - find/replace selected text with replacement text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="find/replace selected text with replacement text"
onclick="var here=story.findContainingTiddler(this); if (!here) return false;
	var e=config.quickEdit.getField(here);
	var s=config.quickEdit.getSelection(e); 
	var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
	var t=createTiddlyElement(p,'input'); t.onfocus=function(){this.select()};
	t.value=s.length?s:'enter target text';
	var r=createTiddlyElement(p,'input'); r.onfocus=function(){this.select()};
	r.value='enter replacement text';
	var tid=here.getAttribute('tiddler');
	var b=createTiddlyElement(p,'button',null,null,'?',{tid:tid});
	b.style.width='2em';
	b.title='FIND/FIND NEXT target text';
	b.onclick=function(ev) { /* FIND */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		e.focus();
		if (e.setSelectionRange) { /* MOZ */
			var newstart=e.value.indexOf(tv,e.selectionStart+1);
			if (newstart==-1) newstart=e.value.indexOf(tv); /* wrap around */
			if (newstart==-1) { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); return; }
			e.setSelectionRange(newstart,newstart+tv.length);
			var linecount=e.value.split('\n').length;
			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
		} else if (document.selection) { /* IE */
			var range=document.selection.createRange();
			if(range.parentElement()==e) {
				range.collapse(false);
				var found=false; try{found=range.findText(v,e.value.length,4)}catch(e){}
				if (found) range.select();
				else { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); }
			}
		}
	};
	b=createTiddlyElement(p,'button',null,null,'=',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE selected text';
	b.onclick=function(ev) { /* REPLACE */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling;
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			this.previousSibling.click(); /* no selection... do FIND first */
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			{ t.focus(); return; } /* still no selection... goto target input */
		e.focus(); replaceSelection(e,rv);
	};
	b=createTiddlyElement(p,'button',null,null,'+',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE selected text AND FIND NEXT target text';
	b.onclick=function(ev) { /* REPLACE and FIND NEXT */
		this.previousSibling.click();
		this.previousSibling.previousSibling.click();
	};
	b=createTiddlyElement(p,'button',null,null,'!',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE ALL occurrences of target text';
	b.onclick=function(ev) { /* REPLACE ALL */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (!tv.length) { alert('Please enter the target text'); t.focus(); return; }
		var m='This will replace all occurrences of:\n\n'+tv+'\n\nwith:\n\n'+rv+'\n\nAre you sure?';
		if (!confirm(m)) { r.focus(); r.select(); return; }
		e.value=e.value.replace(new RegExp(tv.escapeRegExp(),'gm'),rv);
		e.focus(); e.select(); Popup.remove();
	};
	Popup.show();
	if (!s.length) {t.focus();t.select()} else {r.focus();r.select()}
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>replace</a></html>
/%
|Name|QuickEdit_sort|
|Source|http://www.TiddlyTools.com/#QuickEdit_sort|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - sort lines of text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="sort lines of text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select sort order...','');
	s.options[s.length]=new Option('ascending','A');
	s.options[s.length-1].title='ascending';
	s.options[s.length]=new Option('descending','D');
	s.options[s.length-1].title='descending';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var e=config.quickEdit.getField(this.button); if (!e) return false;
		var lines=config.quickEdit.getSelection(e).split('\n').sort();
		if (this.value=='D') lines=lines.reverse();
		replaceSelection(e,lines.join('\n'));
		e.focus();
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>sort</a></html>
/%
|Name|QuickEdit_split|
|Source|http://www.TiddlyTools.com/#QuickEdit_split|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - move selection to new tiddler and insert link, embedded tiddler, or slider|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Based on ideas originally developed by YannPerrin
(http://yann.perrin.googlepages.com/twkd.html#easySlicer)

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="move selection to new tiddler and insert link, embedded tiddler, or slider"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	p.style.whiteSpace='nowrap';
	var i=createTiddlyElement(p,'input');
	i.defaultValue='Enter a new tiddler title';
	i.onfocus=function(){this.select()};
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select type...','');
	s.options[0].title='select split type';
	s.options[1]=new Option('link','link');
	s.options[1].title='replace with [[TiddlerName]]';
	s.options[2]=new Option('embed','embed');
	s.options[2].title='replace with \<\<tiddler TiddlerName\>\>';
	s.options[3]=new Option('slider','slider');
	s.options[3].title='replace with \<\<slider \u0022\u0022 [[TiddlerName]] [[label]] [[tooltip]]\>\>';
	s.onchange=function(){
		if (s.previousSibling.value==s.previousSibling.defaultValue)
			{ alert('A tiddler title is required'); s.selectedIndex=0; s.previousSibling.focus(); return false; }
		var tid=s.previousSibling.value;
		if (store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid])))
			{ s.previousSibling.focus(); return false; }
		switch(s.value) {
			case 'link':
				var newtxt='[['+tid+']]';
				break;
			case 'embed':
				var newtxt='\<\<tiddler [['+tid+']]\>\>';
				break;
			case 'slider':
				var label=prompt('Enter a slider label',tid);
				if (!label) { Popup.remove(); return false; }
				var tip=prompt('Enter a slider tooltip',label);
				if (!tip) { Popup.remove(); return false; }
				var newtxt='\<\<slider \u0022\u0022 [['+tid+']] [['+label+']] [['+tip+']]\>\>';
				break;
		}
		var txt=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		store.saveTiddler(tid,tid,txt,config.options.txtUserName,new Date(),[],{});
		story.displayTiddler(story.findContainingTiddler(this.button),tid);
		config.quickEdit.setSelection(this.button,newtxt);
		Popup.remove(); return false;
	};
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>split</a></html>
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|

@@color:red; ((modified for tbGTD(^mod by Tobias Beer ...optionally does not show ~QuickOpenTag-button if there are no tagging tiddlers)))@@

***/
//{{{
config.quickOpenTag = {
	hideIfNoneTagging:true,
	dropdownChar: "\u25be", //(document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?
	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);

		if(config.quickOpenTag.hideIfNoneTagging&&store.getTaggedTiddlers(tag).length==0)return; //tbGTD
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tid=params[0]?params[0]:tiddler;
		if (!store.getValue(tid,'nominitag')&&store.getTaggedTiddlers(tid.title).length>0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tid.title]),onClickTag);
			theTag.setAttribute("tag",tid.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag {margin-right:1.2em; border:1px solid [[ColorPalette::TertiaryPale]]; padding:2px 0 2px 1px;}",
".quickopentag .tiddlyLink, .quickopentag a.button {padding:1px;margin:0;}",
".miniTag:hover {background:[[ColorPalette::SecondaryLight]]}",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink {border:0px solid [[ColorPalette::Foreground]];}",
"/*}}}*/",
	""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["StyleSheetQuickOpenTag"] = this.styles;
		store.addNotification("StyleSheetQuickOpenTag",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}
<<tiddler SpMiniBrowser with: "http://recordingwithlinux.blogspot.com/" "Se blog (på engelsk)" "http://3.bp.blogspot.com/_PYOOqWEmDgM/S_vdv8SaRJI/AAAAAAAAABo/YWukbdfsZ_U/s320/jmeters.jpg">>
/***
|''Name''|RandomColorPalettePlugin|
|''Description''|Adds a random color palette to TiddlyWiki|
|''Author''|Jon Robson|
|''Version''|1.2.5|
|''Status''|stable|
|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/RandomColorPalettePlugin/RandomColorPalettePlugin.js|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
!Usage
{{{
<<RandomColorPalette>>
Sets and saves a random color palette on execution

<<RandomColorPaletteButton>>
Creates a button, which when clicked will change the color palette
}}}
!Parameters
rgb: yes
By default the ColorPalette is defined in hex. You can output the colours as rgb by simply including this parameter.
hue:[0,360]
Seeds the randomiser with this hue.
saturation:[0,1]
Seeds the randomiser with a given saturation
lightness:[0,1]
Seeds the randomiser with a value for the lightest color tone (0 being darkest, 1 being lightest).

darkest:[0,1]
Seeds the randomiser with a value for the darkest color tone (0 being darkest, 1 being lightest).

huevariance: [0,90]
Given a certain hue, specify the angle from the secondary colour to which the secondary and tertiary colours should be determined.

Note parameters can be discovered by viewing the ColorPaletteParameter slice within the generated ColorPalette.
!Code
***/
//{{{
(function($){
	RGB.prototype.toRGBString = function() {
		return "rgb(%0,%1,%2)".format([parseInt(this.r * 255, 10), 
			parseInt(this.g * 255, 10), parseInt(this.b * 255, 10)])
	}
	function HSL_TO_RGB(h, s, l){ // h (hue) between 0 and 360, s (saturation) & l (lightness) between 0 and 1
		var c;
		if(l <= 0.5) {
			c = 2 * l * s;
		} else {
			c = ( 2 - (2 * l)) * s;
		}
		var h1 = h / 60;
		var x = c * (1 - Math.abs((h1 % 2) - 1)); 
		var r, g, b;
		if(typeof(h) == 'undefined') {
			r = 0;
			g = 0;
			b = 0;
		} else if(0 <= h1 && h1 < 1) {
			r = c;
			g = x;
			b = 0;
		} else if(1 <= h1 && h1 < 2) {
			r = x;
			g = c;
			b = 0;
		} else if(2 <= h1 && h1 < 3) {
			r = 0;
			g = c;
			b = x;
		}
		else if(3 <= h1 && h1 < 4) {
			r = 0;
			g = x;
			b = c;
		} else if(4 <= h1 && h1 < 5) {
			r = x;
			g = 0;
			b = c;
		} else if(5 <= h1 && h1 < 6) {
			r = c;
			g = 0;
			b = x;
		}
		m = l - (0.5 * c);
		r += m;
		g += m;
		b += m;
		return new RGB(r, g, b);
	}

	var macro = config.macros.RandomColorPalette = {
		messagesOn: false, 
		changedPaletteText: "We have assigned you a random theme by adjusting the [[ColorPalette]] tiddler.\nDon't like it? Click <<RandomColorPalette>> for another one.", 
		handler: function(place, macroName, params, wikifier, paramString, tiddler) {
			paramString = paramString || "";
			var options = paramString.parseParams("name", null, true, false, true)[0];
			var tiddler = macro.generatePalette(options, true);
		},
		generateRandomNumber: function(min, max, info) {
			var num = (Math.random() * 1);
			if(!info) {
				info = { attempts:0 };
			}
			info.attempts += 1;
			var good = true;
			if(min == max) return max;
			if(min && num < min) {
				good = false;
			} else if(max && num > max) {
				good = false;
			}
			if(!good) {
				if(info.attempts < 5) {
					return macro.generateRandomNumber(min, max, info);
				} else {
					if(max) {
						return max;
					} else if(min) {
						return min;
					} else {
						return 1;
					}
				}
			}
			return num;
		},
		getExistingPalette: function(asJSON) {
			var title = "ColorPalette";
			var tiddlerText;
			if(store.tiddlerExists(title)) {
				tiddlerText = store.getTiddlerText(title);
			} else if(store.isShadowTiddler(title)){
				tiddlerText = config.shadowTiddlers[title];
			}
			if(asJSON) {
				var json = {};
				if(tiddlerText) {
					var lines = tiddlerText.split("\n");
					for(var i = 0; i < lines.length; i++) {
						var definition = lines[i].split(":");
						if(definition.length == 2) {
							var name = definition[0].trim();
							var value = definition[1].trim();
							json[name] = value;
						}
					}
				}
				return json;
			} else {
				return tiddlerText;
			}
		},
		generatePalette: function(options, save) {
			var outputRGB = options.rgb && options.rgb[0];
			if(this.inprogress) { 
				return;
			}
			this.inprogress = true;
			var palette = macro.getExistingPalette(true);
			var hue = options.hue ? parseInt(options.hue[0]) : Math.floor(Math.random() * 359);
			var saturation = options.saturation ? parseFloat(options.saturation[0]) : macro.generateRandomNumber(0.3, 0.7);
			var dark = options.darkest ? parseFloat(options.darkest[0]) : macro.generateRandomNumber(0, 0.1);
			var pale = options.lightness ? parseFloat(options.lightness[0]) : macro.generateRandomNumber(0.6 + dark, 1);
			var lightness_values = {Dark:dark, Mid:pale - ( ( pale - dark ) / 2 ), 
				Light:pale - ( ( pale - dark ) / 4 ), Pale:pale};

			var opposite_hue = (hue + 180) % 360;
			var seed = options.huevariance ? options.huevariance[0] : Math.floor((85 * Math.random()) + 5); // we want it to be at least 5 degrees
			var huetwo = (opposite_hue + seed) % 360;
			var huethree = (opposite_hue - seed) % 360;
			if(huetwo < 0) {
				huetwo = 360 + huetwo;
			}
			if(huethree < 0) {
				huethree = 360 + huethree;
			}
			for(var j in lightness_values) {
				if(true) {
					palette["Primary" + j] = HSL_TO_RGB(hue, saturation, lightness_values[j]);
					palette["Secondary" + j] = HSL_TO_RGB(huetwo, saturation, lightness_values[j]);
					palette["Tertiary" + j] = HSL_TO_RGB(huethree, saturation, lightness_values[j]);
				}
			}
			palette.Background = HSL_TO_RGB(hue, saturation, 0.92);
			palette.Foreground = HSL_TO_RGB(hue, saturation, 0.08);
			palette.ColorPaletteParameters = ["HSL([", hue, "|", seed, "], [", saturation, "],",
				"[", dark, "|", pale, "])"].join("");
			// construct new ColorPalette
			var text = ["/*{{{*/\n"];
			var colorcode;
			for(var id in palette) {
				if(true) {
					var color = palette[id];
					if(outputRGB) {
						colorcode = color.toRGBString();
					} else {
						colorcode = color.toString();
					}	
					text.push("%0: %1\n".format([id, colorcode]));
				}
			}
			text.push("/*}}}*/");
			
			var tid = store.getTiddler('ColorPalette');
			if(!tid) {
				tid = new Tiddler('ColorPalette');
				tid.fields = merge({}, config.defaultCustomFields);
				tid.modifier ='RandomColorPalette Macro';
			} else {
				// TODO: detect that the ColorPalette in the space comes from elsewhere and use config.defaultCustomFields instead
			}
			tid.text = text.join("");
			this.inprogress = false;
			if(save) { 
				macro.saveColorPalette(tid);
			}
			return tid;
		},
		saveColorPalette: function(tid) {
			// save the color palette in tid
			tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier, tid.modified, 
				tid.tags, tid.fields, false, tid.created, '');
			// an interval is used to cope with users clicking on the palette button quickly.
			if(macro._nextSave) {
				window.clearTimeout(macro._nextSave);
			}
			macro._nextSave = window.setTimeout(function() {
					autoSaveChanges(null, [tid]);
				}, 2000);
			refreshAll();
			macro.reportChange();
		},
		reportChange: function() {
			if(macro.messagesOn) { // only display message once..
				var msgPlace = getMessageDiv();
				if(!$(".changedPalette", msgPlace)[0]) {
					var tempPlace = document.createElement("div");
					wikify("{{changedPalette{" + macro.changedPaletteText + "}}}", tempPlace);
					msgPlace.appendChild(tempPlace);
				}
			}
		}
	};
	config.macros.RandomColorPaletteButton = {
			text: "New ColorPalette",
			tooltip: "Generate a random colour scheme for your TiddlyWiki",
			handler: function(place, macroName, params, wikifier, paramString, tiddler) {
				var btnHandler = function() {
					config.macros.RandomColorPalette.handler(place, macroName, params, wikifier, paramString, tiddler);
				};
				createTiddlyButton(place, this.text, this.tooltip, btnHandler);
			}
	};
})(jQuery);
//}}}
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}
<<tiddler SpMiniBrowser with: "http://www.rosegardenmusic.com/""Hjemmeside" "http://www.rosegardenmusic.com/titles/title-rosegarden.png">> Se også <<tiddler pop with: video [[RoseGarden##video]]>>
<<image "http://www.rosegardenmusic.com/images/snap-10.02-2.png" 200 link:"http://www.rosegardenmusic.com/">> <<image "http://www.rosegardenmusic.com/images/snap-10.02-3.png" 200 "http://www.rosegardenmusic.com/">>
/%
!video
<html><iframe title="YouTube video player" class="youtube-player" type="text/html" width="280" height="390" src="http://www.youtube.com/embed/_ajTRdRaIjQ" frameborder="0"></iframe></html>
.............................................................................................................
!end %/
[[link til online manual|http://www.rosegardenmusic.com/wiki/doc:manual-en#about_this_manual]]
<<tiddler SpMiniBrowser with:"http://www.rosegardenmusic.com/wiki/doc:manual-en""online manual""http://upload.wikimedia.org/wikipedia/commons/0/06/Rosegarden-icon.png">>
<<image "http://www.rosegardenmusic.com/images/snap-10.02-1.png" link:"http://www.rosegardenmusic.com/wiki/doc:manual-en#about_this_manual" 322>>
Roxapp provided by ~PupGeek [[download from PupGeeksHassleFreeRoxapps|http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/Scribus-lucid.tar.gz]]
<<tiddler SearchGroups##SEARCH>>
[[Open in story|SearchGroups]]
<html>
<iframe name="twSearchResults" id="twSearchResults" style="display:none;height:600px;width:900px;margin-top:0.5em;" />
</html>/%
!SEARCH
<html><form name='googlesearch' method='get'  style='display:inline;' onmouseover="
var f=this;
(function($){
if(!window.checkGoogleSearch)
	window.checkGoogleSearch=function(e){
		if (!e)var e=window.event;
		if(!this.innerHTML&&e.keyCode!=13)return;
		f.sitesearch.checked=!(e.ctrlKey);
		jQuery('#twSearchResults').fadeIn('slow');
		f.submit();
		return true;
	};
$('.submit',f).click(checkGoogleSearch);
$('input',f).keyup(checkGoogleSearch);
})(jQuery);
" action='http://www.google.dk/search' target='twSearchResults' title='search in TiddlyWiki's Googlegroup / CTRL+CLICK for a normal search via google'>
<span style='color:#BBB;'>search: </span>
<input name='q' type='text' size='25' maxlength='255' value='' style='font-size:12px;border:1px solid #AAA;padding:1px;background:#EEE;width:100px;'/>
<span class='submit' style='font-size:12px;padding:2px 3px 1px 3px;margin:0 0 0 -7px;background:#CCC;border:1px solid #AAA;width:50px;cursor:pointer;color:#333;'>search</span>
<input name='sitesearch' type='checkbox' checked value='groups.google.com/group/tiddlywiki/' style='visibility:hidden;'/>
</form></html> 
!END%/
{{menubox{<<tiddler PopOut with:"http://wellminded.com/puppy/pupsearch.html" popout 800 400>><<tiddler SearchPuppyGroups##SEARCH>>}}}
[[Åben herunder|SearchPuppyGroups]]
<html>
<iframe name="puppySearchResults" id="puppySearchResults" style="display:none;height:600px;width:900px;margin-top:0.5em;" />
</html>/%
!SEARCH
<html><div style="text-align: center;"><big><big><img style="width: 81px; height: 57px;" alt="searchpup" src="http://wellminded.com/puppy/pup-search.gif" align="middle">Search
Puppy Linux for Answers with Google!<br> 
 
<br> 
 
<!-- Google CSE Search Box Begins --> </big></big> 
<form id="searchbox_015995643981050743583:abvzbibgzxo" action="http://google.com/cse"><big><big> <input name="cx" value="015995643981050743583:abvzbibgzxo" type="hidden"> <input name="q" size="40" type="text"> <input name="sa" value="Søg" type="submit"> <input name="cof" value="FORID:0" type="hidden"> 
  <script type="text/javascript" src="http://google.com/coop/cse/brand?form=searchbox_015995643981050743583%3Aabvzbibgzxo"></script><!-- Google CSE Search Box Ends --> 
  </big></big></form> 
 
</div> 
<br> 
 
<div style="text-align: center;"><big><big><img style="width: 81px; height: 57px;" alt="Puppy Application Search" src="http://wellminded.com/puppy/pup-app-search.gif" align="middle">Or search for Puppy Linux Apps with Google!<br> 
 
<br> 
<form action="http://www.google.com/cse" id="cse-search-box"> 
  <div> 
  <input name="cx" value="015995643981050743583:kmpwtbrg_me" type="hidden"> 
  <input name="ie" value="UTF-8" type="hidden"> 
  <input name="q" size="31" type="text"> 
  <input name="sa" value="Søg" type="submit"> 
  </div> 
 
</form> 
 
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script> 
</big></big></div> 
 
<br> 
 
HINT: To search by date try adding <span style="font-weight: bold;">-recent4&nbsp;</span> 
to your querry.</html> 
!END%/
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
/***
|''Name''|SimpleSearchPlugin|
|''Description''|displays search results as a simple list of matching tiddlers|
|''Authors''|FND|
|''Version''|0.4.1|
|''Status''|stable|
|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Keywords''|search|
!Code
***/
//{{{
if(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.SimpleSearchPlugin = { installed: true };

if(!config.extensions) { config.extensions = {}; }

config.extensions.SimpleSearchPlugin = {
	heading: "searchResults",
	containerId: "searchResults",
	btnCloseLabel: "close",
	btnCloseTooltip: "dismiss searchResults",
	btnCloseId: "search_close",
	btnOpenLabel: "open all",
	btnOpenTooltip: "open all searchResults",
	btnOpenId: "search_open",

	displayResults: function(matches, query) {
		story.refreshAllTiddlers(true); // update highlighting within story tiddlers
		var el = document.getElementById(this.containerId);
		query = '"""' + query + '"""'; // prevent WikiLinks
		if(el) {
			removeChildren(el);
		} else { //# fallback: use displayArea as parent
			var container = document.getElementById("displayArea");
			el = document.createElement("div");
			el.id = this.containerId;
			el = container.insertBefore(el, container.firstChild);
		}
		var msg = "!" + this.heading + "\n";
		if(matches.length > 0) {
			msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
			this.results = [];
			for(var i = 0 ; i < matches.length; i++) {
				this.results.push(matches[i].title);
				msg += "* [[" + matches[i].title + "]]\n";
			}
		} else {
			msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
		}
		createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, config.extensions.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
		if(matches.length > 0) { // XXX: redundant!?
			createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, config.extensions.SimpleSearchPlugin.openAll, "button", this.btnOpenId);
		}
		wikify(msg, el);
	},

	closeResults: function() {
		var el = document.getElementById(config.extensions.SimpleSearchPlugin.containerId);
		removeNode(el);
		config.extensions.SimpleSearchPlugin.results = null;
		highlightHack = null;
	},

	openAll: function(ev) {
		story.displayTiddlers(null, config.extensions.SimpleSearchPlugin.results);
		return false;
	}
};

// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack, null, "excludeSearch");
	var q = useRegExp ? "/" : "'";
	config.extensions.SimpleSearchPlugin.displayResults(matches, q + text + q);
};

// override TiddlyWiki.search() to sort by relevance
TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
	var candidates = this.reverseLookup("tags", excludeTag, !!match);
	var primary = [];
	var secondary = [];
	var tertiary = [];
	for(var t = 0; t < candidates.length; t++) {
		if(candidates[t].title.search(searchRegExp) != -1) {
			primary.push(candidates[t]);
		} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
			secondary.push(candidates[t]);
		} else if(candidates[t].text.search(searchRegExp) != -1) {
			tertiary.push(candidates[t]);
		}
	}
	var results = primary.concat(secondary).concat(tertiary);
	if(sortField) {
		results.sort(function(a, b) {
			return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
		});
	}
	return results;
};

} //# end of "install only once"
//}}}
<<gotoTiddler search>>
an introduction to the fastest mobile musiclab in the world..
PuppyStudio
+++[Then you ought to have a beat to lay on.|click to open Mikkels tutorial]...<<miniBrowser http://www.home.no/mlinux/my-lmms.htm>>===
@@display:block;height:50em;overflow:auto;
We will try to create a hip-hop beat with LMMS (Linux multimedia system). 
This is a free and relatively easy music production program that is available for 
both Linux and Windows (even mac I guess). There are some "getting started" 
tutorials for this program both at LMMS site and elsewhere on the net which 
gives a good intro. The subject of installation is also well covered. 
This tutorial is a little more specific to make a hip-hop beat and it is also 
slightly more advanced than the other tutorials that I have found on LMMS, 
but it is still a getting started guide. There are a number of LMMS video 
tutorials on youtube. This written tutorial is simply based on one of these 
video tutorial from youtube which I took and used because I myself wanted to 
learn to do a hip-hop beat with LMMS. I have spent some time to analyze this 
video and find out what was happening and it is the building of this beat 
that is the subject of this tutorial.

ABOUT [[THE VIDEO-TUTORIAL|LMMS tutorial]] THAT I HAVE USED
As said I found it on youtube and thought it was a video tutorial on LMMS. I 
did wonder why my version of LMMS was so different from the one that was 
shown in the video tutorial I had found (it is a tutorial without speak. Just 
the sound from the sequencer and the mouse movement on the screen). It was 
only much later it dawned on me that it was actually a video tutorial on FL 
Studio (Fruityloops) which I had found on youtube. FL Studio is a commercial 
music sequencer. LMMS is very similar to FL Studio. I downloaded the video to 
my hard disk. I didn't have the youtube web address on the video so when I 
was about to complete the process, I would like to re-find the video on 
youtube so I could credit the original creator and link to the video, but it 
was impossible for me to find it so I gave up. Instead, I have uploaded the 
video to my own website so you can see/hear it.

ABOUT THE PURE TEXT APPROACH
This written tutorial is made with "pure text graphic" which means that it uses 
only text characters both for the text but also for "drawing" elements. So in 
the following, we will gradually build up this hip-hop beat which I, as said 
before have not even composed my self, but just found on youtube. While I 
wrote this tutorial, I worked alternately on a computer with LMMS 0.4.2 
installed and one with 0.3.2 installed. There is little difference on these 
two versions of LMMS. I try broadly to use 0.4.2 as a starting point in this 
tutorial, but there may be inconsistencies. I have done much more work on my 
little Asus eee PC with LMMS 0.3.2. than what i have with LMMS 0.4.2. 

WORKING WITH THE PROGRAM
LMMS is basically built up over two different editing windows. A song editor. 
And a beat/baseline editor. The Song-editor has two functions. It is both the 
place where the entire composition is build, out of the bricks you have made 
in the beat/baseline-editor (a bit like building with Lego bricks) and it is 
also where you can make a longer melodic phase. In the following, we will not 
use the function in the song editor to make a longer melodic phase. We will 
only use it to build all our different Beat/baselines together in a single 
composition. The Beat/baseline editor is creating smaller patterns which are 
repeated in the song, so called loops. It could be a drum pattern or a base 
grow etc. These loops can have different durations. Some can go over one bare 
while others goes over several bars.

In the following I will call Beat/baseline editor

bb-editor

and a beat/baseline line in the song editor for a

bb-line

The two editors are in effect two windows on the screen. To begin with this 
two windows lay side by side but as you work you will probably move them 
around so they end up behind each other and it might be a little complicated 
to deal with this within the screen. There are buttons up the top left corner 
of the root window to select the different windows. There are different ways 
to operate and switch between these two windows. When I work on the tiny ASUS 
Eee PC, I prefer to maximize the window and then switch between them via the 
buttons at the top right of the root window.

So I assume that you have the program installed and opened.

An outline of the program's graphical appearance when it is opened. Here is 
bb-editor window in front and partially conceals song editor window

{{{
 --------------------------------------------------------------------------
| project edit sittings tools help                                         |
|                               |  |                                       |
|[ ][ ][ ][ ]        |140|     <| <|                                       |
|[button panel in the root window] |  |   |  |                             |
| upper left corner                                                        |
|_   ______________________________________  _________________             |
|_| |Beat+Baseline Editor                   |                 |            |
|_  | > []                                  |                 |            |
|_| |                                       |                 |            |
|_  |                                       | Song-Editor     |            |
|_| |                                       |                 |            |
|_  |                                       |                 |            |
|_| |                                       |                 |            |
|_  |                                       |                 |            |
|_| |                                       |                 |            |
|_  |                                       |                 |            |
|_| <- Vertical buttons to the left         |_________________|            |
|      in the actual root window                                           |
|                                                                          |
|                                                                          |
|                                                                          |
|                                                                          |
 --------------------------------------------------------------------------
}}}
Let us start with getting the right tempo for our little hip-hop track. We 
have a default tempo set to 140 as shown by the small display on the top 
right toward the middle. 140 is too fast for the hip-hop beat we are making 
so we need to bring it down. This is done by clicking into the little 
LED-like display indicating the speed and then pull downward (or upward if 
you want it faster) If you have scroll mouse, you can also clicking into the 
box and scroll down.

---------------------------------------------------
Repeated point: To adjust the tempo you need to hold your mouse over the 
little tempo display (LED like) and click and drag up or down.
---------------------------------------------------

You must set the tempo to 83 (which is 83 beats per minute) Try to get 
bb-editor window up and look at it. There are a couple of lines where there 
is some text and right of the text, some small rectangular boxes grouped 
horizontally in row in numbers of four. Normally when you hear a melody in 
4/4 you will count like this: 1, 2, 3, 4, 1, 2, etc. The bb-editor small 
boxes correspond to this way of counts in the sense that for each of the 1, 
2, 3 etc there is one group of four squares.
{{{

Beat/baseline editor.
Normal counts...  1           2           3           4
LMMS bb-line....  [ ][ ][ ][ ]( )( )( )( )[ ][ ][ ][ ]( )( )( )( )
}}}

I start by getting hold of the song-editor. On top of the window of it I find 
a small button labeled Add New Beat + Baseline (you can see what buttons 
states by holding the mouse over them for a while so there will be a small 
text). Click the button and you get a new bb-liner in song editor. Let's just 
rename it immediately. Right-click the line and a small dialog will appear 
where you can change the name. Type "drums" and press enter to exit. Since 
this line is now active, it also opened in bb-editor when you get in 
bb-editor window. You can see that on the top of it in a small drop-box it 
says "drum" as you make more bb-lines you will be able to switch between them 
through that drop-box in the bb-editor. First we need to find us a "sound" 
that we would like to use. On the left hand side we have a column of about 6 
buttons. (See illustration of LMMS window). Click the small icon with a green 
node on (my samples). It opens a lot of folders with some audio files in. I 
go into the drum folder and here I find the kick_hiphop1.ogg and drag it into 
bb-editor (you can also just double click so it will automatically open in 
bb-editor). This new instrument now forms a new empty bb-line.

You can now put some beats on this line by clicking with the mouse. Once 
you've put a mark on a "square" that "square" turns blue. I show that here in 
my tutorial by making a zero (0).  

So here is the marks i make on this new bb-line:

{{{

Beat/baseline editor
kick_hiphop01.ogg.....[0][ ][ ][0]( )( )( )(0)[ ][0][0][ ]( )( )( )( )

}}}
A mark can be removed by clicking on it again.

In the top of the bb-editor there is a small arrow/triangle -a play button 
obviously. You can now click it and play your little snare (drum) sequence. 
It will play in a loop until you stop it by pressing the the button with the 
little black square (the stop symbol). It doesn't sound much like hip-hop. 
More like a strange sort of techno. Now I go into my drum sounds on the left 
hand side again and pull clap03.ogg into bb-editor and get a new bb-line and 
mark the small squares as below in the clap03.ogg line

Beat/baseline editor

{{{
kick_hiphop01.ogg.....[0][ ][ ][0]( )( )( )(0)[ ][0][0][ ]( )( )( )( )
clap03.ogg............[ ][ ][ ][ ](0)( )( )( )[ ][ ][ ][ ](0)( )( )( )
}}}

That gives us a small hand clap and now it sounds much more like a hip hop 
beat. Now comes a slightly more advanced thing. A little delicate hi-hat line 
and again it's not me who invented it here but this fine guy on the interned. 

So go to the instruments on your right hand side an choose

hihat_closed01.ogg
 
and drag it over to the bb-editor. Now we need more nuanced division so now I 
double-click on the bar where you can make beats by single clicking. That 
opens the piano roll editor of the line.

For the piano roll i make different marking system.

{{{
A coherent long marker ............ =+=+=+=
Four short consecutive marks....... =|=|=|=
}}}


Piano-roll is a window with a grid in. To the left is a virtual piano 
keyboard. I find the tone c6 on the keyboard and next to it I put a block by 
clicking in the box just off the key c6. There comes a green brick that fills 
the entire first field

{{{
Piano roll
    1                                  2
c6 [=+=+=+=][ | | | ][ | | | ][ | | | ]
}}}

It is too long so I put the mouse on the end of the block where it becomes an 
arrow and drag to left to fill only a small square.

{{{
Piano roll
    1                                  2
c6 [=| | | ][ | | | ][ | | | ][ | | | ]
}}}

Next time I click on a field I'll have a marker that is as long as the last 
one I made.

So now I fill out the following

{{{
Piano roll
    1                                  2
c6 [=| |=| ][=| |=|=][=| |=| ][=|=|=| ]
}}}

You can hear the piece by clicking the play button on the top left of the 
piano-roll window
OK now there is some fucked up nice guitar (sorry got carried away). This 
bb-line is going to have a duration longer then four bars. We go to the 
song-editor window and add a new bb-line. We click on the name 
(Beat/baseline) and get a little dialog to change the name. We change now the 
name to "Guitar". Go back to the bb-editor and see here the new bb-line. That 
is you see the same lines as you did before but on the top little bar you see 
a different name "Guitar". So I need a real raw heavy guitar. We'll find that 
to the left hand side in the instrument directory the one we need is called 
steel_guitar_heavy_distort. We drag that to the (new) bb-editor.

The piano-roll window is as wide as you want it. You can just scroll out of 
it but I obviously can not display this pure text form which I have chosen to use 
here. The following beat/baseline passes 4 bars so I can not really fit that 
on one line so I have to break that in to two lines/blocks but it is fairly 
easy to grasp and the counts is at the top so you can see where you are.

{{{
Piano-roll
   1                                   2                                   
C4.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=+=+=+=]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=+=| | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]


3                                   4
[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=|=|=|=][ | | | ]
[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=|=|=|=]
[=+=| | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
}}}




That was that bb-line now you need to make a new line. So we go back in to 
the Song Editor and add a new bb-line and rename it just as before but call 
this one "flute". On youtube this video is made with accordion, but I did not 
find any accordion in my version of LMMS so I tried with some church organ 
but it was too slow even though the sound was fine. So I ended up with some 
flute. So again go down to the my-samples to the left hand side and select 
now flute1.ogg and pull it over. Double-click the bb-line bar and then open 
the piano roll (or right click and select piano roll in the drop-down menu if 
the double click does not work in your version).

{{{
Piano-roll
   1                                   2                                      
                                
...[ |=| | ][ | | | ][=| | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | |=| ][ | | |=][ |=| | ][ | | |=][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c3.[ | | |=][ | |=| ][ | | | ][=|=|=| ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][=| | | ][ | |=|=][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=| | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ |=| | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
}}}

This pattern we need again almost identical so we want to copy it. We find 
the marker tool. It is a small rectangular frame at the top of the piano roll 
window, click the tool and click and drag a box around the pattern you just 
created. Click the copy icon that on the top of the piano-roll icon is a 
piece of paper. So take the mouse to one of the green marks inside the 
selected area so that there is an arrow with four directions and then click 
and drag. When you move it move all markets within the selected area. Move 
the whole pattern up so it starts at the 2nd stroke. Now click the icon that 
look like to two pieces of paper -the paste icon. Now the original pattern is 
set into its original place so you have now coped the pattern. Now we shall 
make some minor changes in the second edition of the pattern so it ends up 
looking like this.

{{{
Piano-roll
   1                                   2                                   
...[ |=| | ][ | | | ][=| | | ][ | | | ][ |=| | ][ | | | ][=| | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | |=| ][ | | |=][ |=| |=][ | | |=][ | |=| ][ | | |=][ |=| | ][ | | |=]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c3.[ | | |=][ | |=| ][ | | | ][=|=|=| ][ | | |=][ | |=| ][ | | | ][=|=|=| ]
...[ | | | ][=| | | ][ | |=| ][ | | | ][ | | | ][=| | | ][ | |=|=][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=| | | ][ | | | ][ | | | ][ | | | ][=| | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ |=| | ][ | | | ][ | | | ][ | | | ][ |=| | ][ | | | ][ | | | ]
}}}


Now you can try to go down in song editor and mix the different patterns 
together in a sort of "master" pattern. As you can see some lines, fills only 
one line per block while others fills the two and some fills four stroke.

So try to create the following pattern in the song editor:


{{{
Song editor

Beat/baseline 0....[ ][ ][ ][ ][=][=][=][=][=][=][=][ ][=][=][=][ ][=][=][=][ ][=][=][=][ ]
Guitar.............[=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=]
flute..............[ ][ ][ ][ ][=++=][=++=][=++=][=++=][=++=][=++=][=++=][=++=][=++=][=++=]
}}}


The pattern here in song editor, I think sounds very cool. Play your 
composition by clicking the play button in the upper right corner of the song 
editor window. Notes that song editor unlike bb-editor does not loop the 
pattern but play continues when no more blocks left it just continues in 
silence until you click the stop button or the pause button.

So we have listen to our tracks together and now we want to build on. Some 
delicious piano. We go in song editor and create a new bb-line and renames it 
immediately to "piano". We go into the instruments folder and choose 
piano01.ogg and double click or drag it to the bb-editor. Go in bb-editor. 
Right click the new piano01.ogg line and choose open in the piano roll. We 
need a huge matrix for this pattern and it is as the guitar pattern wider 
then four bars which means that we are forced to break the pattern after two 
bars her in the tutorial (but not in LMMS). 



{{{
   1                                   2
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c5.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c4.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c3.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=+=+=+=++=+=+=+=]
   1                                   2

.. the matrix continues her..

   3                                   4
...[ | | | ][ | | | ][ | |=| ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][=| | |=][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ |=| | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c5.[ | | | ][ | | | ][ | | | ][ | | |=][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | |=| ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][=| | |=][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ |=| | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c4.[ | | | ][ | | | ][ | | | ][ | | |=][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c3.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=+=+=+=]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=++=+=+=+=][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
   3                                   4
}}}
   

That was the piano.


Now you need to make a new bb-line in the song editor and name it orion 
string. So we go in 

my-samples/stringpads 

To the left hand side and find orion-string01.ogg and double click it. 



{{{
   1                                   2
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | |=+=][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][=+=| | ][ | | | ][=| | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c6.[ | | | ][ | |=+=][ | |=+=][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][=+=| | ][=+=| | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[=+=| | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | |=+=][ | |=| ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][=+=| | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | |=+=][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=+=| | ][ | | | ][=| | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
c5.[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | |=+=][ | |=+=][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][=+=| | ][=+=| | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
...[ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ][ | | | ]
}}}

Then all bb-lines finished so we just need to make the overall composition of 
the song in the song-editor. This composition you can do as you feel like. 
Here is how i have made the start.

{{{
Beat/baseline 0....[ ][ ][ ][ ][=][=][=][=][=][=][=][ ][=][=][=][=][=][=][=][ ][=][=][=][ ]
Guitar.............[=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=][=++=++=++=]
flute..............[ ][ ][ ][ ][ ][ ][ ][ ][=++=][=++=][=++=][=++=][=++=][=++=][=++=][=++=]
Dark piano.........[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][=++=++=++=][=++=++=++=]
Orion strings......[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][=++=][=++=][=++=][=++=]
}}}

This is just the beginning it's a whole song and can continue for some 
minuets. So you can take the blocks in and out and building up and down as 
the song progresses. You remove a block that you have set by right clicking 
it and choose remove from the drop down menu. It is also possible to create 
loops in the song module. If you want to use loop in the song-editor you need 
to enable that function by clicking the small green double-arrow button at 
the top called "enable loop point". Then there a small slider just above all 
the lines in the song editor. This slider can be dragged by right-click and 
drag. So click and drag with right mouse button. You can drag it to the point 
at which the lines should stop and return to the beginning to continue (a 
loop).

@@@@display:block;text-align:right;^^scroll for more...^^@@
That was it. Happy music making.
<<tiddler PopOut with:"$1" [[$2 (popout)]] 900 900>>
+++[<img src=$3>|Klik her!]... <<miniBrowser $1>>
===
[[StyleSheetShortcuts]]
[[StyleSheetToolBar]]
/*{{{*/
/*Monochrome Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
/* HIDE DIVS */
.toolbar{visibility:hidden;}
.selected .toolbar{visibility:visible;}
.subtitle{visibility:hidden;}
.selected .subtitle{visibility:visible;}
.tagging{visibility:hidden;}
.selected .tagging{visibility:visible;}
.tagged{visibility:hidden;}
.selected .tagged{visibility:visible;}
#sidebarSearch {position:absolute;width:17em;right:2em;top:1.5em;margin:0;padding:1em 0 1em 1em;color:[[ColorPalette::TertiaryPale]];font-weight:bold;background::#C3C3C3;}
#sidebarSearch input, #sidebarSearch .txtOptionInput{z-index:10;width:12em;right:0;top:-3px;border:1px solid [[ColorPalette::TertiaryMid]];-moz-border-radius:2px; -webkit-border-radius:2px;border-radius:2px;float:right;}
#sidebarSearch select{width:17em;z-index:10;right:0;border:1px solid [[ColorPalette::TertiaryMid]];border-top:0;float:right;right:0;width:15em;}
#sidebarSearch .searchButton {color: [[ColorPalette::Background]];display:block;float:left;margin-top:7px;font-size:0.8em;}
/*}}}*/
/*{{{*/

body {background:#3B3B3B; color:#C3C3C3; font:12px Verdana, Helvetica, sans-serif;
	}

#header {padding: 0em 0em 0em 0em; background:transparent;	font-family: arial,helvetica; font-size:12px;
 }

.siteTitle {
padding-top:5px;
float:left;
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 32px;
color: #ccc; margin-right:2em;margin-left:0.5em;
}

#topMenu br {display:none;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {margin:0em; color:#666; padding:15px 15px 10px 15px;padding-top:1.6em;border:none; border-right: 1px solid #666;float:left;}
#topMenu {border-left: 1px solid #666;  float:left;margin:0;}
#topMenu a:hover {color:#ccc; background:#3b3b3b;}

#displayArea {margin-left:1.35em; margin-right:17.65em; margin-top:0.5em; padding-top:1em; padding-bottom:10px;}

.tiddler {background:#454545; margin-bottom:20px; padding:1em 2em 1em 2em;}

a, a:hover{
color:#fff;
text-decoration: none; background:transparent;
}

.viewer a, .viewer a:hover{border-bottom:1px dotted #fff; font-weight:normal;}

.viewer .button, .editorFooter .button{
color: #fff;
border: 1px solid #fff;
}

.viewer .button:hover,
.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
color: #fff;
background: #3B3B3B;
border-color: #3B3B3B;
}

.title {color:#ccc; font-family:'Lucida Grande', Verdana, Sans-Serif; font-size:1.5em;
}

.subtitle, .subtitle a { color: #777; font-size: 0.95em;margin:0.2em;}
.shadow .title{color:#777;}

.toolbar {font-size:90%;}
.selected .toolbar a {color:#666;border:0;}
.selected .toolbar a:hover {color:#999; background:transparent;border:0;}

.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#666;border:0; background:transparent;border:0;}

.tagging, .tagged {
border: 1px solid #555;
background-color: 	#444;
}

.selected .tagging, .selected .tagged {
background-color: 	#3B3B3B;
border: 1px solid #666;
}

.tagging .listTitle, .tagged .listTitle {
color: #666;
}

.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #aaa;
}

.tagging .button, .tagged .button {
color:		#838383;
}
.selected .tagging .button, .selected .tagged .button {
color:#c3c3c3;
}

.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}

.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;
}

#sidebarOptions {margin-top:1em;}
#sidebar {margin-right:1.35em;}

#sidebarTabs .tabContents {	
	font-family: arial,helvetica;}

#sidebarOptions a, #sidebarOptions a:hover{border:none;color:#666;}
#sidebarOptions a:hover, #sidebarOptions a:active {background:#454545; color:#ccc;}
#sidebarTabs .tabContents {background:#454545;border:0px solid #666; border-right:1px solid #454545;}
#sidebarOptions input {background:#ccc; border:1px solid #666;}

#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#666;font-weight:normal;}
#sidebarTabs .tabContents .tiddlyLink:hover, #sidebarTabs .tabContents .button:hover {color:#ccc; background:transparent;}
.listTitle {color:#777;}

#sidebarTabs .tabSelected,#sidebarTabs .tabSelected:hover{background:#454545;border:none;color:#ccc; border:1px solid #454545;}
#sidebarTabs .tabUnselected{background:#3B3B3B; border:1px solid #454545; color:#666;}

   #sidebarTabs .txtMoreTab .tabSelected,
   #sidebarTabs .txtMoreTab .tab:hover,
   #sidebarTabs .txtMoreTab .tabContents{
color: #ccc;
background: #3B3B3B; border:1px solid #3B3B3B;
}

   #sidebarTabs .txtMoreTab .tabUnselected {

color: #777; border:1px solid #3B3B3B;
background: #454545;
}


#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#ccc; background:transparent;}

   #sidebarOptions .sliderPanel {
background: #454545; font-size: .9em;
}

#sidebarOptions .sliderPanel input {border:1px solid #666; background:#ccc;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #666;width:9em;}

#sidebarOptions .sliderPanel a {font-weight:normal; color:#666;background-color: #454545; border-bottom:1px dotted #333;}

#sidebarOptions .sliderPanel a:hover {
color:#ccc;
background-color: #454545;
border:none;
border-bottom:1px dotted #111;
}

.popup {
background: #3B3B3B;
border: 1px solid #454545;
}

.popup li.disabled {
color: #000;
}

.popup li a, .popup li a:visited {
color: #777;
border: none;
}

.popup li a:hover {
background: #3b3b3b;
color: #c3c3c3;
border: none;
}
.popup hr {
	color: #777;
	background: #777;
	border-bottom: 1px;
}

.listBreak div{
	border-bottom: 1px solid #777;
}

#messageArea {
border: 4px dotted #ccc;
background: #454545;
color: #777;
font-size:90%;
}

#messageArea .button{

color: #3B3B3B;
background:#ccc;
border: 1px solid #ccc;
}

#messageArea .button:hover {

color: #ccc;
background: #3B3B3B;
border-color: #3B3B3B;
}

.viewer blockquote {
border-left: 5px solid 		#3B3B3B; background:#3B3B3B
}

.viewer table, .viewer td {
border: 1px solid 	#2E2E2E;
}

.viewer th, thead td {
background: #3B3B3B;
border: 1px solid #3B3B3B;
color: #ccc;
}
.viewer pre {
border: 1px solid #3b3b3b;
background: #5F5F5F;
}

.viewer code {
color: #c3c3c3; background:#5f5f5f;
}

.viewer hr {
border-top: dashed 1px #222; margin:0 1em;
}

.editor input {
border: 1px solid #ccc; margin-top:5px;
}

.editor textarea {
border: 1px solid #ccc;
}

h1,h2,h3,h4,h5 { color: 		#9c9c9c; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
/*{{{*/
#displayArea .tiddler a.externalLink{
 text-decoration: none;
 padding-right: 1em;
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC) 100% 50% no-repeat;
}

#displayArea .tiddler a.externalLink:hover{
 text-decoration: underline;
}
#MenuLink a.externalLink:hover{
 text-decoration: underline;
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/

/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.center table
	{ margin:auto !important; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.show
	{ display:inline !important; }
.span
	{ display:span; }
.block
	{ display:block; }
.relative
	{ position:relative; }
.absolute
	{ position:absolute; }

/* font sizes */
.big
	{ font-size:14pt;line-height:120% }
.medium
	{ font-size:12pt;line-height:120% }
.normal
	{ font-size:9pt;line-height:120% }
.small
	{ font-size:8pt;line-height:120% }
.fine
	{ font-size:7pt;line-height:120% }
.tiny
	{ font-size:6pt;line-height:120% }
.larger
	{ font-size:120%; }
.smaller
	{ font-size:80%; }

/* font styles */
.bold
	{ font-weight:bold; }
.italic
	{ font-style:italic; }
.underline
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

/* vertical tabsets - courtesy of Tobias Beer */
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:20%;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.vTabs .tabContents {margin-left:20%;max-width:80%;padding:5px;}
.vTabs .tabContents .tabContents {border:none; background:transparent;}

/* vertical tabsets - mod by Måns Mårtensson */
.svTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:5%;}
.svTabs .tabset .tab {display:block;text-align:center;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.svTabs .tabContents {margin-left:5%;max-width:95%;padding:5px;}
.svTabs .tabContents .tabContents {border:none; background:transparent;}

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
	-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
	-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
	column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
	-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
	-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
	column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
	-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
	-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
	column-count:4; column-gap:1em; column-width:25%; /* Opera */
}

/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; } 

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
	{ width:100%; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
.borderleft
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }

/* compact form */
.smallform
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input   { width:1em; }
.twochar input   { width:2em; }
.threechar input { width:3em; }
.fourchar input  { width:4em; }
.fivechar input  { width:5em; }

/* text colors */
.white { color:#fff !important }
.gray  { color:#999 !important }
.black { color:#000 !important }
.red   { color:#f66 !important }
.green { color:#0c0 !important }
.blue  { color:#99f !important }

/* rollover highlighting */
.mouseover 
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
.zoomover
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/* [[ColorPalette]] text colors */
.Background	{ color:[[ColorPalette::Background]];	 }
.Foreground	{ color:[[ColorPalette::Foreground]];	 }
.PrimaryPale	{ color:[[ColorPalette::PrimaryPale]];	 }
.PrimaryLight	{ color:[[ColorPalette::PrimaryLight]];	 }
.PrimaryMid	{ color:[[ColorPalette::PrimaryMid]];	 }
.PrimaryDark	{ color:[[ColorPalette::PrimaryDark]];	 }
.SecondaryPale	{ color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight	{ color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid	{ color:[[ColorPalette::SecondaryMid]];	 }
.SecondaryDark	{ color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale	{ color:[[ColorPalette::TertiaryPale]];	 }
.TertiaryLight	{ color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid	{ color:[[ColorPalette::TertiaryMid]];	 }
.TertiaryDark	{ color:[[ColorPalette::TertiaryDark]];	 }
.Error		{ color:[[ColorPalette::Error]];	 }

/* [[ColorPalette]] background colors */
.BGBackground	  { background-color:[[ColorPalette::Background]];	}
.BGForeground	  { background-color:[[ColorPalette::Foreground]];	}
.BGPrimaryPale	  { background-color:[[ColorPalette::PrimaryPale]];	}
.BGPrimaryLight	  { background-color:[[ColorPalette::PrimaryLight]];	}
.BGPrimaryMid	  { background-color:[[ColorPalette::PrimaryMid]];	}
.BGPrimaryDark	  { background-color:[[ColorPalette::PrimaryDark]];	}
.BGSecondaryPale  { background-color:[[ColorPalette::SecondaryPale]]; 	}
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]];	}
.BGSecondaryMid	  { background-color:[[ColorPalette::SecondaryMid]];	}
.BGSecondaryDark  { background-color:[[ColorPalette::SecondaryDark]]; 	}
.BGTertiaryPale	  { background-color:[[ColorPalette::TertiaryPale]];	}
.BGTertiaryLight  { background-color:[[ColorPalette::TertiaryLight]]; 	}
.BGTertiaryMid	  { background-color:[[ColorPalette::TertiaryMid]];	}
.BGTertiaryDark	  { background-color:[[ColorPalette::TertiaryDark]];	}
.BGError	  { background-color:[[ColorPalette::Error]];	 	}
/*}}}*/
.tiddler {position:relative;}
.toolbar {position:absolute;top:0px;right:0px;}
.tiddler .toolbar .button {float:left;display:block;}
.tiddler .button.command_closeTiddler {float:right;}
.tiddler .toolbar .button:hover {color:#111;height:16px;padding: 3px 8px;margin:3px 5px 0 -5px;}
.tiddler .toolbar .textbutton .button:hover {padding: 2px 10px 4px 10px;margin:3px 5px 0 -1px;}
.toolbar svg {height:30px;width:30px;margin-top:-5px;}
.toolbar .button:hover svg {height:44px;width:44px;margin-top:-2px;}
<<timeline "modified" "10" "YYYY-0MM-0DD">>/%
<<timeline >>%/
[[see all|Timeline]]
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.03|
|''Date:''|24-09-2010|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
@@color:red;Mod by Tobias Beer! Refactored the refresh handler to allow triggering a refresh in other macros without refreshing the tiddler!@@
***/
//{{{
config.tableSorting = {
	
	darrow: "\u2193",
	uarrow: "\u2191",
	
	getText : function (o) {
		var p = o.cells[SORT_INDEX];
		return p.innerText || p.textContent || '';
	},

	sortTable : function (o,rev) {
		SORT_INDEX = o.getAttribute("index");
		var c = config.tableSorting;
		var T = findRelated(o.parentNode,"TABLE");
		if(T.tBodies[0].rows.length<=1) 
			return;
		var itm = "";
		var i = 0;
		while (itm == "" && i < T.tBodies[0].rows.length) {
			itm = c.getText(T.tBodies[0].rows[i]).trim();
			i++;
		}
		if (itm == "") 
			return; 	
		var r = [];
		var S = o.getElementsByTagName("span")[0];		
		c.fn = c.sortAlpha; 
		if(!isNaN(Date.parse(itm)))
			c.fn = c.sortDate; 
		else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/)) 
			c.fn = c.sortNumber; 
		else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/)) 
			c.fn = c.sortFile; 
		for(i=0; i<T.tBodies[0].rows.length; i++) {
			 r[i]=T.tBodies[0].rows[i]; 
		} 
		r.sort(c.reSort);
		if(S.firstChild.nodeValue==c.darrow || rev) {
			r.reverse();
			S.firstChild.nodeValue=c.uarrow;
		} 
		else 
			S.firstChild.nodeValue=c.darrow;
		var thead = T.getElementsByTagName('thead')[0]; 
		var headers = thead.rows[thead.rows.length-1].cells;
		for(var k=0; k<headers.length; k++) {
			if(!hasClass(headers[k],"nosort"))
				addClass(headers[k].getElementsByTagName("span")[0],"hidden");
		}
		removeClass(S,"hidden");
		for(i=0; i<r.length; i++) { 
			T.tBodies[0].appendChild(r[i]);
			c.stripe(r[i],i);
			for(var j=0; j<r[i].cells.length;j++){
				removeClass(r[i].cells[j],"sortedCol");
			}
			addClass(r[i].cells[SORT_INDEX],"sortedCol");
		}
	},

	stripe : function (e,i){
		var cl = ["oddRow","evenRow"];
		i&1? cl.reverse() : cl;
		removeClass(e,cl[1]);
		addClass(e,cl[0]);
	},

	sortNumber : function(v) {
		var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
		return isNaN(x)? 0: x;
	},

	sortDate : function(v) {
		return Date.parse(this.getText(v));
	},

	sortAlpha : function(v) {
		return this.getText(v).toLowerCase();
	},

	sortFile : function(v) { 		
		var j, q = config.messages.sizeTemplates, s = this.getText(v);
		for (var i=0; i<q.length; i++) {
			if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
				return q[i].unit * s.substr(0,j);
		}
		return parseFloat(s);
	},
	
	reSort : function(a,b){
		var c = config.tableSorting;
		var aa = c.fn(a);
		var bb = c.fn(b);
		return ((aa==bb)? 0 : ((aa<bb)? -1:1));
	},
	
	refresh : function(elem){
		var ts = elem.getElementsByTagName("TABLE");
		var c = config.tableSorting;
		for(var i=0;i<ts.length;i++){
			if(hasClass(ts[i],"sortable")){
				var x = null, rev, table = ts[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
				for (var j=0; j<headers.length; j++){
					var h = headers[j];
					if (hasClass(h,"nosort"))
						continue;
					h.setAttribute("index",j);
					h.onclick = function(){c.sortTable(this); return false;};
					h.ondblclick = stopEvent;
					if(h.getElementsByTagName("span").length == 0)
						createTiddlyElement(h,"span",null,"hidden",c.uarrow); 
					if(x===null && hasClass(h,"autosort")) { 
						x = j;
						rev = hasClass(h,"reverse");
					}
				}
				if(x)
					c.sortTable(headers[x],rev);		
			}
		}
	}
};

Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
	var elem = this.tSort_refreshTiddler.apply(this,arguments);
	if(elem)config.tableSorting.refresh(elem);
	return elem; 
};

setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
	"table.sortable thead {cursor:pointer;}\n"+
	"table.sortable .nosort {cursor:default;}\n"+
	"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");

function stopEvent(e){
	var ev = e? e : window.event;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
	return false;	
}

config.macros.nosort={
	handler : function(place){addClass(place,"nosort");}
}

config.macros.autosort={
	handler : function(place,m,p,w,pS){addClass(place,"autosort"+" "+pS);}
}
//}}}
Provides configuration for TagSearchPlugin...
!Tags
[[Musik]]
[[projekt]]
[[Grafik]]
[[Puppy Linux]]
!More
[[TAG:Arkiv]]
[[TAG:follow]]
[[Elev]]
[[systemConfig]]
[[systemConfigDisable]]
[[excludeMissing]]
[[excludeSearch]]
[[excludeLists]]
/***
|''Name:''|TagSearchPlugin|
|''Version:''|1.0.6 (2010-09-17)|
|''Source:''|http://tagsearch.tiddlyspot.com/#TagSearchPlugin|
|''Author:''|[[Tobias Beer]]|
|''Description:''|Provides a drop down listing current tags and others to be set. Based on [[x-tagger|http://tbgtd.tiddlyspot.com/#x-tagger]] which in turn was once based on [[TaggerPlugin|http://tw.lewcid.org/#TaggerPlugin]].|
|''Documentation:''|See [[Welcome]] or [[online help|http://tagsearch.tiddlyspot.com]]|
|''~TiddlyWiki:''|Version 2.5 or better|
***/
//{{{
config.macros.tagsearch={
cfg:{
	defaultMode:1,	// 0 -> substitute (silent), 1 -> ask for substitution, >1 -> always add (silent)
	defaultOpenNew:1,	//0: never open new tiddler, 1:ask, >2: always open
	defaultMore:'',	//the default for the more section
	keepModified:false,	//when true does not update modified date or modifier when setting tags
	sidebarOffset:20,	//dist from sidebar
	colWidth:'180px',	//minwidth of sides
	newAtSingle:30,	//new block for all tags
	newAt:18,	//new block when grouped
	excludeTagged:'',	//default tags or exclusion
	arrow:document.all?" ▼":" ▾",	//only the fat works in IE

	label:'Tags:',	//localization starts here
	options:'Muligheder',
	more:'Flere...',
	tooltip:'Hold styr på tiddler tags',
	notags:'ingen tags er sat...',
	aretags:'Nuværende tags',
	addTag:'Tilføj tag...',
	addTags:'Sæt tag...',
	txtRemove: 'fjern tag',
	txtEdit:"~ redigér kategorier...",
	txtEditTip:"edit tiddler with GTD tag categories used by x-tagger",
	txtNew:"~ tilføj et andet tag",
	txtAdd:"sæt tag ",
	txtFor:"Bliver tagget med ... ",
	promptNew:"Skriv et nyt tag:",
	modeAsk:"Vil du også fjerne tagget '%0' og andre tags fra kategorien '%1'?\nFortryd tilføjer kun tagget '%2'.",
	askOpen:"Vil du åbne den nye tiddler '%0' nu tagget med '%1'?"
},
handler:function(place,macroName,params,wikifier,paramString,tiddler){
	var c,click,e,ex=[],fst=true,goto,lbl,list,open,mode,more,notags,p,source,rtid,src,tb,tid,tip,tmp=place,x;
	x=config.macros.tagsearch;c=x.cfg;
	p=paramString.parseParams('tagman',null,true);
	tb=params.contains("toolbar");
	notags=params.contains("notags");
	lbl=getParam(p,"label",c.label)+c.arrow;
	tip=getParam(p,"tooltip",c.tooltip);
	exclude=(getParam(p,"exclude",'')+' '+c.excludeTagged).readBracketedList();
	exclude.map(function(e){ex.pushUnique(e);});
	for(e=0;e<exclude.length;e++){
		store.getTaggedTiddlers(exclude[e]).map(function(t){ex.pushUnique(t.title)});
	}
	src=getParam(p,"source",'');
	if(src&&!store.getTiddlerText(src))return false;
	more=getParam(p,"more",c.defaultMore);
	mode=parseInt(getParam(p,"mode",c.defaultMode));
	mode=isNaN(mode)?c.defaultMode:mode;
	open=parseInt(getParam(p,"open",c.defaultOpenNew));
	open=isNaN(open)?c.defaultOpenNew:open;
	goto=getParam(p,"goto",'');
	tid=rtid=getParam(p,"tiddler");
	if(!tid){
		do{if(fst)fst=false;else tid=tmp;tmp=story.findContainingTiddler(tmp);}while(tmp&&tid!=tmp);
		tid=tid?tid.getAttribute('tiddler'):'';
	}
	if(!tid)return;
	click=function(e){
		e=e||window.event;
		var ar,curr,d1,d2,fst=true,i,j,l,nuBtns,nuLi,m,max=nu=src?c.newAt:c.newAtSingle,oTid=store.getTiddler(tid),pop,s,t,tags=[],tids,ti,tgt;
		pop=Popup.create(this);
		addClass(pop,'tagsearch');
		if(src){//mod tb:different method for source tiddler
			tids=store.getTiddlerText(src).readBracketedList();
			for(t=0;t<tids.length;t++){
				if(!ex.contains(tids[t])){
					tgt=store.getTaggedTiddlers(tids[t]);
					tags.push('TAG:'+tids[t]);
					for(s=0;s<tgt.length;s++){
						if(!ex.contains(tgt[s].title))tags.push(tgt[s].title);
					}
				}
			}
		}else tags=store.getTags();
		curr=oTid?oTid.tags.sort():[];
		nuLi=function(p){return createTiddlyElement(createTiddlyElement(p,"li",null,null),"ol",null,null);}
		nuBtns=function(where,text,tag,pref){
			var s,t;
			s=createTiddlyElement(createTiddlyElement(where,"li"),"span",null,null);
			t=createTiddlyButton(s,text,pref+" '"+tag+"'",x.setTag,"button toggleButton", null);
			t.setAttribute("tiddler",tid);
			t.setAttribute("tag",tag);
			t.setAttribute("source",src);
			t.setAttribute("mode",mode);
			t.setAttribute("open",open);
			insertSpacer(s);
			createTagButton(s,tag);
		}
		d1=nuLi(pop);d2=nuLi(d1);
		if(config.macros.gotoTiddler){
			if(rtid){
				l=createTiddlyElement(d2,"li",null,'addto','');
				wikify('{{title{'+c.txtFor+'}}}<<tag [['+tid+']]>>',l);
				d2=nuLi(d1);
			}
			createTiddlyElement(d2,"li",null,"title",c.addTag);
			wikify('<<gotoTiddler '+goto+' >>',d2);
		}
		d2=nuLi(d1);
		createTiddlyElement(d2,"li",null,"title",c.aretags);
		if(curr.length==0)wikify('{{added{'+c.notags+'}}}',d2);
		else for(t=0;t<curr.length;t++)nuBtns(d2,"[X]",curr[t],c.txtRemove);
		if(c.colWidth)jQuery('li',d1).css('min-width',c.colWidth);		
		if(!notags){
			for(i=0;i<tags.length;i++){
				nu++;
				ti=src?tags[i]:tags[i][0];
				if(ti.indexOf('TAG:')==0){
					ti=ti.substr(4);
					if(nu>max){nu=0;d1=nuLi(pop);}d2=nuLi(d1);nu++;
					createTiddlyLink(createTiddlyElement(d2,"li",null,null),ti,ti,'title');
				}
				else if(!curr.contains(ti)&&!ex.contains(ti)){
					if(!src&&nu>max||src&&nu>c.newAtSingle){
						nu=0;d1=nuLi(pop);d2=nuLi(d1);
						if(fst){createTiddlyElement(createTiddlyElement(d2,"li",null,null),'li',null,'title',c.addTags);fst=false;}
					}
					nuBtns(d2,"["+String.fromCharCode(160,160,160)+"]",ti,c.txtAdd);
				}
			}
			//options
			d1=nuLi(pop);d2=nuLi(d1);createTiddlyElement(d2,'li',null,'title',c.options);
			var newBtn=createTiddlyButton(createTiddlyElement(d2,"li"),(c.txtNew),null,x.setTag,'tsoption');
			newBtn.setAttribute("tiddler",tid);
			if(src){
				var edit=createTiddlyButton(createTiddlyElement(d2,"li"),c.txtEdit,c.txtEditTip,onClickTiddlerLink,'tsoption'); 
				edit.setAttribute("tiddlyLink",src.split('##')[0]);
			}

			fst=true;
			if(more){//more
				m=store.getTiddlerText(more).readBracketedList();
				if(m.length>0){
					for(i=0;i<m.length;i++){
						var ti=m[i];
						if(ti.indexOf('TAG:')==0){
							ti=ti.substr(4,ti.length-4);
							d2=nuLi(d1);createTiddlyLink(createTiddlyElement(d2,"li",null,null),ti,ti,'title');
							ar=store.getTaggedTiddlers(ti);
							for(j=0;j<ar.length;j++){var ti=ar[i].title;
								if(!tiddler.tags.contains(ti)&&!ex.contains(ti))nuBtns(d2,"["+String.fromCharCode(160,160)+"]",ti,c.txtAdd);
							}
						}else{
							if(fst){d2=nuLi(d1);createTiddlyElement(d2,'li',null,'title',c.more);fst=false;}
							if(!curr.contains(ti)&&!ex.contains(ti))nuBtns(d2,"["+String.fromCharCode(160,160)+"]",ti,c.txtAdd);
						}
					}
				}
				if(c.colWidth)jQuery('li',d1).css('min-width',c.colWidth);
			}
		}
		jQuery(pop).attr({tiddler:tid,source:src,mode:mode,open:open});
		Popup.show(pop,false);
		put=jQuery(".tagsearch form input");
		put.attr('notify','config.macros.tagsearch.notify');
		put.focus();
		if(tb){
			s=document.getElementById('sidebarTabs');
			pop.style.left='';pop.style.right=(c.sidebarOffset+(s?s.offsetWidth:0))+'px';
		}
		e.cancelBubble=true;
		if(e.stopPropagation)e.stopPropagation();
		return false;
	}	
	createTiddlyButton(place,lbl,tip,click,"button","tagsearchDrop");
},
setTag:function(e){
	var a,b,el,f,m,nu,o,r,s,set,src,t,tag,ti,tid,title,c=config.macros.tagsearch.cfg;
	el=e&&!e.target?e:this;
	title=el.getAttribute("tiddler");
	tag=el.getAttribute("tag");
	src=el.getAttribute("source");
	m=el.getAttribute("mode");
	o=el.getAttribute("open");
	tid=store.getTiddler(title);
	if(!tag){nu=prompt(c.promptNew,"");if(!nu)return false;else tag=nu;}
	b=!tid;
	if(!tid||!tid.tags){
		f=merge((tid?tid.fields:{}), config.defaultCustomFields);
		store.saveTiddler(title,title,'',config.options.txtUserName,new Date(),tag,f);
		if(!tid&&!document.getElementById(title)&&o>0)
			if(o>1||o==1&&confirm(c.askOpen.format([title,tag])))
				story.displayTiddler(null,title);
	}else{
		if(!tid.tags.contains(tag)){
			if(src){
				if(m<2){
					var cats=store.getTiddlerText(src).readBracketedList();
findTagged:			for(t=0;t<cats.length;t++){
						ti=cats[t];
						var tgt=store.getTaggedTiddlers(ti);
						for(s=0;s<tgt.length;s++){
							if(tgt[s].title==tag){
								for(r=0;r<tgt.length;r++){
									if(tid.tags.contains(tgt[r].title)){
										var ok;
										if(m==1&&!ok){
											if(!confirm(c.modeAsk.format([tgt[r].title,ti,tag])))break findTagged;
											ok=true;
										}
										store.setTiddlerTag(title,false,tgt[r].title);
									}
								}
								break findTagged;
							}
						}
					}
				}
			}
			store.setTiddlerTag(title,true,tag);
		}
		else if(!nu)store.setTiddlerTag(title,false,tag);
		t=store.getTiddler(title);
		store.saveTiddler(title,title,t.text,c.keepModified?t.modifier:config.options.txtUserName,c.keepModified?t.modified:new Date(),t.tags,t.fields);
		if(config.options.chkAutoSave)autoSaveChanges();
	}
	if(!e.target){e.value='';e.focus();}
},
notify:function(tag){
	var p = jQuery('.tagsearch');
	var i = jQuery('.tagsearch form input')[0];
	var t = store.getTiddler(p.attr('tiddler'));
	if(t&&t.tags.contains(tag))return false;
	wikify('{{added{ {{add{+}}} <<tag "'+tag+'">>}}}',i.parentNode);
	p.attr('tag',tag);
	this.setTag(p[0]);
	i.select();
},
tiddler:'',
src:''
}

var gt=config.macros.gotoTiddler;
if(gt){
gt.processItem=function(title,here,list,showlist) {
	if (!title.length) return;
	list.style.display=showlist?'block':'none';
	if (title=="*")	{ story.search(here.value); return false; } // do full-text search
	if (!showlist) here.value=title;
	var n=here.getAttribute('notify');
	if(n)eval(n+'("'+title+'")'); //notify of selection, otherwise...
	else story.displayTiddler(null,title); // show selected tiddler (default behaviour)
	return false;
}
gt.IEtableFixup="%0";
}

var TP=store.getTiddlerText('ColorPalette::TertiaryPale'),
	TM=store.getTiddlerText('ColorPalette::TertiaryMid'),
	TD=store.getTiddlerText('ColorPalette::TertiaryDark'),
	SP=store.getTiddlerText('ColorPalette::SecondaryPale'),
	SD=store.getTiddlerText('ColorPalette::SecondaryDark');
config.shadowTiddlers["StyleSheetTagSearch"]="/*{{{*/\n"+
	".tagsearch {padding:7px !important;border:1px solid "+SD+";background: "+TP+";-moz-border-radius:5px; -webkit-border-radius:5px;border-radius:5px;}\n"+
	".tagsearch li a, .tagsearch .quickopentag .tiddlyLink {display:inline;padding:2px;color:"+TD+";clear:none;}\n"+
	".tagsearch li a.toggleButton {display:inline;margin-left:5px;}\n"+
	".tagsearch .title {margin:3px 0 0 5px;font-weight:bold;font-size:150%;color:"+SD+";padding:0;}\n"+
	".tagsearch form{display:block;float:left;clear:both;padding-left:5px !important;}\n"+
	".tagsearch .addto .quickopentag{display:block;clear:both;padding:5px;font-size:120%;}\n"+
	".tagsearch .added{display:block;clear:both;padding:5px;}\n"+
	".tagsearch .added span{display:block;float:left;}\n"+
	".tagsearch .add{clear:left;padding:0 3px;}\n"+
	".tagsearch ol{margin:0;padding:0 0 5px 0;}\n"+
	".tagsearch li{display:block;float:left;padding-bottom:10px !important;}\n"+
	".tagsearch li span{line-height:1em;}\n"+
	".tagsearch li ol li{clear:both;min-width:120px;display:inline;border:1px solid transparent;}\n"+
	".tagsearch li ol li:hover{border:1px solid "+TM+";}\n"+
	".tagsearch li ol li ol li{padding:0 !important;}\n"+
	".tagsearch li ol li ol li:hover{border:1px solid transparent;}\n"+
	".tagsearch .tiddlyLink:hover{color:"+SD+";background:"+SP+";}\n"+
	".tagsearch .quickopentag {display:inline;}\n"+
	".tagsearch .quickopentag .tiddlyLink:hover {text-decoration:underline;}\n"+
	".tagsearch .quickopentag .button {border:0;padding:2px;font-size:1.5em;}\n"+
	"/*}}}*/";
store.addNotification("StyleSheetTagSearch",refreshStyles);
//}}}
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
 <title>Qt Svg Document</title>
 <desc>Generated with Qt</desc>
 <g>
  <title>Layer 1</title>
  <g stroke-linejoin="bevel" stroke-linecap="square" fill-rule="evenodd" stroke="black" fill="none">
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.25,0,0,0.25,1037.91,118.11) " font-style="normal" font-weight="400" font-size="400" font-family="Times New Roman" y="374" x="4" xml:space="preserve" fill="#000000">Take Five</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.25,0,0,0.25,2072.2,263.957) " font-style="normal" font-weight="400" font-size="200" font-family="Times New Roman" y="189" x="4" xml:space="preserve" fill="#000000">Dave Brubeck</text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,273.904,493.134) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="none">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,273.904,493.134) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,315.573,638.976) " font-style="normal" font-weight="400" font-size="133" font-family="Times New Roman" y="0" x="0" xml:space="preserve" fill="#000000">8</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,294.738,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,358.409,493.134) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,394.327,493.134) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="166.667" x="0" xml:space="preserve" fill="#000000">5</text>
    <text transform="matrix(0.250016,0,0,0.250016,394.327,493.134) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="333.333" x="-8.98438" xml:space="preserve" fill="#000000">4</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,461.788,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,463.143,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,463.143,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,454.704,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,454.704,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,454.704,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,454.704,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,454.704,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,454.704,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,461.788,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,461.788,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,541.428,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,541.428,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,515.28,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,515.28,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="249.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,542.782,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,542.782,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,515.28,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,515.28,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="249.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,602.221,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,602.221,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,593.783,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,593.783,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,593.783,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,593.783,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,593.783,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,593.783,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,600.867,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,600.867,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,680.506,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,680.506,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,654.359,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,681.861,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,654.359,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,739.946,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,741.3,611.891) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,741.3,611.891) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,733.612,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,733.612,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,739.946,607.724) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,851.68,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,851.68,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,825.533,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,825.533,545.22) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,825.533,513.969) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,911.12,493.134) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,911.12,493.134) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,914.453,493.134) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="none">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,914.453,493.134) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,945.705,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,947.06,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,947.06,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,938.622,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,938.622,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,938.622,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,938.622,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,938.622,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,938.622,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,945.705,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,945.705,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1018.8,551.471) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1018.8,551.471) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,992.649,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1069.11,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1069.11,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1060.68,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1060.68,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1060.68,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1060.68,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1060.68,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1060.68,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1067.76,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1067.76,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1140.85,551.471) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1140.85,551.471) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1114.7,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1114.7,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1114.7,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1189.81,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1191.17,611.891) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1191.17,611.891) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1183.48,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1183.48,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1189.81,607.724) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1291.07,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1291.07,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1264.92,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1264.92,545.22) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1264.92,513.969) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1340.03,493.134) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1340.03,493.134) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1343.37,493.134) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="none">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1343.37,493.134) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1374.62,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1375.97,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1375.97,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1367.54,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1367.54,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1367.54,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1367.54,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1367.54,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1367.54,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1374.62,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1374.62,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1454.26,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1454.26,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1428.11,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1428.11,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="249.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1455.61,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1455.61,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1428.11,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1428.11,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="249.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1515.05,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1515.05,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1506.61,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1506.61,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1506.61,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1506.61,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1506.61,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1506.61,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1513.7,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1513.7,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1593.34,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1593.34,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1567.19,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1594.69,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1567.19,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1652.78,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1654.13,611.891) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1654.13,611.891) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1646.44,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1646.44,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1652.78,607.724) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1764.51,561.888) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1764.51,561.888) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1738.36,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1738.36,545.22) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1738.36,513.969) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1823.95,493.134) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1823.95,493.134) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1827.28,493.134) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="none">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1827.28,493.134) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1858.54,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1859.89,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1859.89,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1851.45,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1851.45,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1851.45,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1851.45,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1851.45,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1851.45,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1858.54,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1858.54,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1939.61,551.471) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1939.61,551.471) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1913.46,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1994.14,653.561) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1994.14,653.561) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1985.7,638.976) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1985.7,638.976) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1985.7,618.142) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1985.7,618.142) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1985.7,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,1985.7,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1992.79,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,1992.79,649.394) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2073.86,551.471) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2073.86,551.471) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2047.72,555.638) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2047.72,534.803) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2047.72,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2153.19,416.046) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2153.19,416.046) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2127.04,493.134) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2128.39,611.891) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2128.39,611.891) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2119.96,597.307) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2119.96,597.307) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2127.04,607.724) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2193.85,416.046) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2193.85,416.046) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2167.7,482.717) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2234.5,416.046) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2234.5,416.046) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2208.36,493.134) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2275.16,436.88) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2275.16,436.88) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2249.01,503.551) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2250.37,570.222) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2250.37,570.222) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2249.01,566.055) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2330.09,447.298) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2330.09,447.298) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="none">
    <text transform="matrix(0.250016,0,0,0.250016,2303.94,513.969) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2358.87,493.134) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="none">
    <polyline transform="matrix(0.25,0,0,0.25,2358.87,493.134) " fill="none"/>
   </g>
   <g fill="#000000">
    <path d="m2151.82739,411.0455l84.02515,0l0,10.00073l-84.02515,0l0,-10.00073" fill-rule="evenodd"/>
   </g>
   <g fill="#000000">
    <path d="m2273.80249,431.62326l57.63745,10.931l0,10.00073l-57.63745,-10.931l0,-10.00073" fill-rule="evenodd"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000"/>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.25,0,0,0.25,2183.12,363.544) " font-style="normal" font-weight="400" font-size="133.333" font-family="Times New Roman" y="128" x="4" xml:space="preserve" fill="#000000">3</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000"/>
   <g transform="matrix(0.25,0,0,0.25,247.404,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,247.404,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,289.073,915.035) " font-style="normal" font-weight="400" font-size="133" font-family="Times New Roman" y="0" x="0" xml:space="preserve" fill="#000000">8</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,268.238,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,331.909,769.193) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,391.371,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,392.725,929.62) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,392.725,929.62) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,384.287,915.035) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,384.287,915.035) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,384.287,894.201) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,384.287,894.201) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,384.287,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,384.287,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,391.371,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,391.371,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,419.019,775.443) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,419.019,775.443) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,391.371,779.61) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,440.411,815.029) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,440.411,815.029) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,439.056,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,439.056,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,439.056,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,439.056,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,509.274,929.62) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,509.274,929.62) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,500.836,915.035) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,500.836,915.035) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,500.836,894.201) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,500.836,894.201) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,500.836,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,500.836,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,507.92,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,507.92,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,556.96,815.029) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,556.96,815.029) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,555.605,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,555.605,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,650.616,712.939) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,650.616,712.939) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,624.469,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,625.823,887.95) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,625.823,887.95) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,617.385,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,617.385,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,624.469,883.783) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,686.452,712.939) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,686.452,712.939) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,660.305,779.61) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,722.288,712.939) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,722.288,712.939) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,696.14,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,758.123,744.191) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,758.123,744.191) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,731.976,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,733.33,846.281) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,733.33,846.281) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,731.976,842.114) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,805.809,753.728) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,805.809,753.728) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,779.661,821.28) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,827.998,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,827.998,769.193) " fill="none"/>
   </g>
   <g fill="#000000">
    <path d="m649.26154,707.93927l74.37994,0l0,10.00049l-74.37994,0l0,-10.00049" fill-rule="evenodd"/>
   </g>
   <g fill="#000000">
    <path d="m756.76898,738.92023l50.39502,10.0788l0,10.00067l-50.39502,-10.0788l0,-10.00067" fill-rule="evenodd"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000"/>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.25,0,0,0.25,675.723,660.437) " font-style="normal" font-weight="400" font-size="133.333" font-family="Times New Roman" y="128" x="4" xml:space="preserve" fill="#000000">3</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000"/>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.25,0,0,0.25,238.029,726.693) " font-style="normal" font-weight="400" font-size="133.342" font-family="Times New Roman" y="128" x="4" xml:space="preserve" fill="#000000">5</text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,831.331,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,831.331,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,862.583,852.531) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,863.937,929.62) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,863.937,929.62) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,855.499,915.035) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,855.499,915.035) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,855.499,894.201) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,855.499,894.201) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,855.499,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,855.499,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,862.583,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,862.583,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,890.231,796.278) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,890.231,796.278) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,862.583,800.445) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,928.775,835.864) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,928.775,835.864) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,899.919,842.114) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,899.919,842.114) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="249.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,927.42,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,927.42,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="-41.6667" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,993.137,929.62) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,993.137,929.62) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,984.699,915.035) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,984.699,915.035) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,984.699,894.201) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,984.699,894.201) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,984.699,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,984.699,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,991.783,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,991.783,925.453) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="139.156" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1053.77,827.53) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1053.77,827.53) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1055.12,842.114) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1027.62,831.697) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1119.48,810.862) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1120.84,887.95) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1120.84,887.95) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1113.15,873.366) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1113.15,873.366) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1119.48,883.783) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1209.99,837.947) " stroke-linejoin="bevel" stroke-linecap="square" stroke-width="10.834" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1209.99,837.947) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1183.84,842.114) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1183.84,821.28) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1183.84,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1248.21,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1248.21,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1251.54,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1251.54,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1327.43,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1431.23,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1431.23,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1434.57,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1434.57,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1510.46,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1614.26,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1614.26,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1617.59,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1617.59,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1693.48,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1797.29,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1797.29,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1800.62,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1800.62,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,1876.51,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1980.32,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,1980.32,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,1983.65,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,1983.65,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,2059.54,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2163.34,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,2163.34,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2166.68,769.193) " stroke-linejoin="bevel" stroke-width="6.66709" stroke="#000000" fill="#000000">
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline fill="none"/>
    <polyline transform="matrix(0.25,0,0,0.25,2166.68,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.250016,0,0,0.250016,2248.82,790.028) " font-style="normal" font-weight="400" font-size="333" font-family="MScore" y="0" x="0" xml:space="preserve" fill="#000000"></text>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2346.37,769.193) " stroke-linejoin="bevel" stroke-width="13.3342" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,2346.37,769.193) " fill="none"/>
   </g>
   <g transform="matrix(0.25,0,0,0.25,2346.37,769.193) " stroke-linejoin="bevel" stroke-width="25.0016" stroke="#000000" fill="#000000">
    <polyline transform="matrix(0.25,0,0,0.25,2346.37,769.193) " fill="none"/>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.25,0,0,0.25,118.11,503.553) " font-style="normal" font-weight="400" font-size="200.013" font-family="Times New Roman" y="189" x="4" xml:space="preserve" fill="#000000">Guitar</text>
   </g>
   <g stroke-linejoin="bevel" stroke-linecap="square" stroke="#000000" fill="#000000">
    <text transform="matrix(0.25,0,0,0.25,118.11,779.612) " font-style="normal" font-weight="400" font-size="200.013" font-family="Times New Roman" y="189" x="4" xml:space="preserve" fill="#000000">Guit.</text>
   </g>
  </g>
 </g>
</svg>
{{{
!INFO
{{scanUser{<<image http://$1.tiddlyspace.com/bags/$1_public/tiddlers/SiteIcon spaceLink:yes 48 48>> @$1}}}{{scanText{<<view text wikified>>}}}
!TALK
{{scanUser{<<image http://$1.tiddlyspace.com/bags/$1_public/tiddlers/SiteIcon spaceLink:yes 48 48>> @$1 says}}}{{scanText{<<view text wikified>>}}}
!END
}}}
/***
|''Name''|TiddlerPopupPlugin|
|''Description''|Allows you to create links to tiddlers causing them to open in a popup|
|''Author''|Jon Robson|
|''Version''|0.5.0|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/contributors/JonRobson/plugins/TiddlerPopup/TiddlerPopupPlugin.js|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
!Code
***/
//{{{
(function($){
config.macros.TiddlerPopUp = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		var title =	params[0];
		var label = params[1];
		$("<a class='button popupLink' />").text(label).
			click(function(ev) {
				var popup = Popup.create(ev.target);
				var text = store.getTiddlerText(title) || config.shadowTiddlers[title];
				wikify(text, popup);
				Popup.show();
				$(popup).click(function(ev) { // make it so only clicking on the document outside the popup removes the popup
					if(ev.target.parentNode != document) {
						ev.stopPropagation();
					}
				});
				ev.stopPropagation();
				return false;
			}).appendTo(place);
	}
};
})(jQuery);
//}}}
/***
|''Name''|TiddlySpaceToolbar|
|''Description''|Updates the toolbar macro to use svg buttons and a popup for the more menu|
***/
//{{{
(function($){
	config.macros.toolbar._TSoldHandler = config.macros.toolbar.handler;
	config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler)
	{
		
		this._TSoldHandler(place,macroName,params,wikifier,paramString,tiddler);

		if(config.macros.image){ //only do this for people who have this macro available!
			var cancelTiddlerButton =jQuery(".command_cancelTiddler",place);
			cancelTiddlerButton.empty();
			wikify("<<image cancelTiddler.svg>>",cancelTiddlerButton[0]);

			var closeTiddlerButton =jQuery(".command_closeTiddler",place);
			closeTiddlerButton.empty();
			wikify("<<image closeTiddler.svg>>",closeTiddlerButton[0]);

			var editTiddlerButton = jQuery(".command_editTiddler",place);
			editTiddlerButton.empty();
			wikify("<<image editTiddler.svg>>",editTiddlerButton[0]);

			var deleteTiddlerButton =jQuery(".command_deleteTiddler",place);
			deleteTiddlerButton.empty();
			wikify("<<image deleteTiddler.svg>>",deleteTiddlerButton[0]);

			var saveTiddlerButton =jQuery(".command_saveTiddler",place);
			saveTiddlerButton.empty();
			wikify("<<image saveTiddler.svg>>",saveTiddlerButton[0]);

			var moreTiddlerButton = jQuery("a.moreCommand",place);
			moreTiddlerButton.empty();
			wikify("<<image moreCommand.svg>>",moreTiddlerButton[0]);
		}
	}

	config.macros.toolbar.onClickMore = function(ev)
	{
		var sibling = this.nextSibling;
		var commands = sibling.childNodes;
		var popup = Popup.create(this);
		addClass(popup,"taggedTiddlerList");

		for(var i=0; i < commands.length; i++){
			var li =createTiddlyElement(popup,"li",null);
			var oldCommand =commands[i];
			var command = oldCommand.cloneNode(true);
			command.onclick = oldCommand.onclick;
			li.appendChild(command);
		}
		Popup.show();

		var e = ev || window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
	}
	
	var shadows = config.shadowTiddlers;
	shadows.ToolbarCommands = "|~ViewToolbar|+editTiddler closeTiddler > cloneTiddler pubRev closeOthers fields publishTiddlerRevision revisions syncing permalink references jump|"+
	"\n|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|";
	
})(jQuery);
//}}}
http://tiddlywiki.com
http://groups.google.dk/group/tiddlywiki
http://tiddlyspace.com
<<timeline >>
<<list filter "[tag[Tips]]">> 
|~ViewToolbar|+editTiddler closeTiddler > closeOthers fields syncing permalink references jump < closeTiddler|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler toggleQuickEdit|
<<evalify [[config.macros.tagsearch?'<<tagsearch toolbar>\>':'';]]>>
[[download Linux version (tar.gz)|http://www.seventhstring.com/xscribe/xscsetup.tar.gz]]
+++[video review]...
<html><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/qH8oudKwQiA" frameborder="0" allowfullscreen></iframe></html>
===+++[videodemo]...
<html><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/rY846dfCrv0" frameborder="0" allowfullscreen></iframe></html>
===
+++[screenshots]...
<<miniBrowser http://www.seventhstring.com/xscribe/screenshots.html>>
===
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'puppystudio';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n")

});
//}}}
[[Installing TuxGuitar 1.0 |http://www.murga-linux.com/puppy//viewtopic.php?t=39192&sid=be7e2b5246c47897a75655fc6a64ae56]]

Forum user and Fatdog64 contributor jamesbond has graciously provided [[a .pet package for TuxGuitar|http://puppylinuxstuff.meownplanet.net/10wt3ch/Pets/tuxguitar-1.2_needs_java.pet]] the open-source tablature editor, and it's only 5.4 MB! It does, however, require Java, which can easily be obtained via Quickpet.  (Username: puppy Password: linux )

md5sum: 1a5948d86b05536590733e9aa8c9bc93
<<tiddler UTubeSearch##iframe with:m.youtube.com/results?search_query=$1>>/%
!iframe
<html><iframe src="http://$1"/></html>
!end %/
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 11/03/2011 17:23:10 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . | ok |
| 11/03/2011 21:26:53 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . | ok |
| 11/03/2011 21:28:40 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . |
| 13/03/2011 15:09:44 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . | ok |
| 13/03/2011 15:17:24 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . | ok |
| 13/03/2011 16:00:49 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . |
| 13/02/2012 01:28:09 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . |
| 13/02/2012 01:31:13 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] | . |
| 18/02/2013 16:19:16 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] |  | failed |
| 18/02/2013 16:19:37 | YourName | [[/|http://puppystudio.tiddlyspot.com/]] | [[store.cgi|http://puppystudio.tiddlyspot.com/store.cgi]] | . | [[index.html | http://puppystudio.tiddlyspot.com/index.html]] |  |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

<<list filter "[tag[Video]]">> 
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes more:popup'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Roxapp provided by ~PupGeek [[download from PupGeeksHassleFreeRoxapps|http://dotpups.de/puppy4/dotpups/PupGeeksHassleFreeRoxapps/XaraLx-lucid.tar.gz]]
<<miniBrowser http://ytinstant.com/#$1>>
<<tiddler iframe with:m.youtube.com>>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <metadata id="metadata34">
  <rdf:RDF>
   <cc:Work rdf:about="">
    <dc:format>image/svg+xml</dc:format>
    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
    <dc:title/>
   </cc:Work>
  </rdf:RDF>
 </metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter3630">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <g id="iconSymbol" stroke-linejoin="miter" stroke="#4d4d4d">
  <path id="path3288" style="stroke-dasharray:none;" d="m31.328,58.508a1.2868,1.2868,0,1,1,-1.1862,1.1643" transform="matrix(4.67791, 0, 0, 4.67791, -119.332, -222.038)" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.342033" fill="none"/>
  <path id="path4348" d="m20.433,50.322,4.3207,0-1.3291,1.3291,6.1802,6.4735-1.687,1.687-6.3268-6.3268-1.158,1.158,0-4.3207z" stroke-linecap="butt" stroke-width="0.80000001px" fill="#4d4d4d"/>
 </g>
 <rect id="overlay" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter3630)" width="25" stroke="#00F" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="1.2" fill="#ACF" class="overlayOnHover" opacity="0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="918 510 14 14" width="14pt" height="14pt">
<defs>
	<radialGradient cx="0" cy="0" r="1" id="Gradient" gradientUnits="userSpaceOnUse">
		<stop offset="0" stop-color="white"/>
		<stop offset="1" stop-color="#2b2b2b"/>
	</radialGradient>
	<radialGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(922.3752 513.7837) scale(11.4739436)"/>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 929.6952 512.9018 C 927.1568 510.36337 923.0412 510.36337 920.5028 512.9018 C 917.9644 515.4402 917.9644 519.5558 920.5028 522.09418 C 923.0412 524.63257 927.1568 524.63257 929.6952 522.09418 C 932.2336 519.5558 932.2336 515.4402 929.6952 512.9018 M 925.099 515.7425 L 927.17633 513.66516 L 928.9318 515.42065 L 926.8545 517.498 L 928.9318 519.57532 L 927.17633 521.3308 L 925.099 519.25348 L 923.02167 521.3308 L 921.2662 519.57532 L 923.3435 517.498 L 921.2662 515.42065 L 923.02167 513.66516 Z" fill="url(#Obj_Gradient)"/>
		<path
	   d="M 927.61447,515.38354 A 4.5120482,4.2590361 0 1 1 918.59037,515.38354 A 4.5120482,4.2590361 0 1 1 927.61447,515.38354 z"
	   transform="matrix(1.0218069,0,0,1.0462046,-18.063694,-21.648443)"
	   id="path2394"
	   style="opacity:1;fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
	</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="78 222 60 60" 
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 107.92718 244.14815 L 86.651474 222.89253 L 78.85206 230.69925 L 100.120415 251.9476 L 78.774 273.27396 
		L 86.57342 281.08075 L 107.927216 259.74707 L 129.39981 281.19946 L 137.19922 273.39267 L 115.73397 251.94763 
		L 137.121155 230.58054 L 129.32175 222.77374 Z" fill="black" class="glyph"/>
	</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata34">
 <rdf:RDF>
  <cc:Work rdf:about="">
  <dc:format>image/svg+xml</dc:format>
  <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
  <dc:title/>
  </cc:Work>
 </rdf:RDF>
</metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter001">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <g id="iconSymbol" stroke-linejoin="miter" style="stroke-dasharray:none;" transform="matrix(0.579556, -0.579556, 0.579556, 0.579556, -4.21894, 26.7647)" stroke="#4d4d4d" stroke-width="3.19999981" fill="#4d4d4d">
<path id="path3219" style="stroke-dasharray:none;" d="M-7.3399,53.9h16.353"/>
<path id="path3221" style="stroke-dasharray:none;" d="M0.8368,62.077v-16.354"/>
</g>
 <rect id="overlay" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter001)" width="25" stroke="#F00" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="2" fill="#ffd5d5" class="overlayOnHover" opacity="0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="450 366 38 57"
width="30" height="30">
	<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
		<g>
			<path d="M 452.1094 421.2422 L 450 421.2422 L 450 423 L 487.9688 423 L 487.9688 421.2422 L 485.8595 421.2422 
			L 485.8595 377.29688 L 487.9688 377.29688 L 487.9688 375.53906 L 485.8595 375.53906 
			C 485.8595 375.53906 481.12463 371.59341 473.02023 370.52802 C 472.6824 368.9689 471.72098 366.75 468.9844 366.75 
			C 466.24783 366.75 465.28638 368.9689 464.94864 370.52802 
			C 456.84418 371.59341 452.1094 375.53906 452.1094 375.53906 L 450 375.53906 L 450 377.29688 L 452.1094 377.29688 
			Z M 467.12247 370.32086 L 467.12247 370.32086 C 467.3805 369.42395 467.90762 368.50781 468.9844 368.50781 
			C 470.0612 368.50781 470.5883 369.42395 470.84634 370.32086 
			C 470.24136 370.2848 469.62054 370.26562 468.9844 370.26562 
			C 468.34827 370.26562 467.72748 370.2848 467.12247 370.32086 Z M 454.21875 420.92804 L 454.21875 420.92804 
			C 455.46762 420.42087 456.32816 419.35281 456.32816 418.11716 L 456.32816 377.29688 L 458.4375 377.29688 
			L 458.4375 421.2422 L 454.21875 421.2422 Z M 460.5469 420.92804 L 460.5469 420.92804 
			C 461.79578 420.42087 462.65625 419.35281 462.65625 418.11716 L 462.65625 377.29688 L 464.76566 377.29688 
			L 464.76566 421.2422 L 460.5469 421.2422 Z M 466.87503 420.92804 L 466.87503 420.92804 
			C 468.1239 420.42087 468.9844 419.35281 468.9844 418.11716 L 468.9844 377.29688 L 471.09378 377.29688 
			L 471.09378 421.2422 L 466.87503 421.2422 Z M 473.2032 420.92804 L 473.2032 420.92804 
			C 474.45203 420.42087 475.31256 419.35281 475.31256 418.11716 L 475.31256 377.29688 L 477.4219 377.29688 
			L 477.4219 421.2422 L 473.2032 421.2422 Z M 479.5313 420.92804 L 479.5313 420.92804 
			C 480.78018 420.42087 481.64066 419.35281 481.64066 418.11716 L 481.64066 377.29688 L 483.75006 377.29688 
			L 483.75006 421.2422 L 479.5313 421.2422 Z" fill="black" class="glyph"/>
		</g>
	</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata34">
 <rdf:RDF>
  <cc:Work rdf:about="">
  <dc:format>image/svg+xml</dc:format>
  <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
  <dc:title/>
  </cc:Work>
 </rdf:RDF>
</metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter001">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <g id="iconSymbol" stroke-linejoin="miter" style="stroke-dasharray:none;" transform="translate(0.0627706, -0.0627706)" stroke="#4d4d4d" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.60000002" fill="none">
   <path id="path2874" style="stroke-dasharray:none;" d="m21.748,51.452,1.7934,14.247,7.9706,0,2.4908-15.144-12.255,0.89669z"/>
   <path id="path2880" style="stroke-dasharray:none;" d="m25.435,51.452,0.84687,14.048"/>
   <path id="path2882" style="stroke-dasharray:none;" d="M30.068,51.104,28.573,65.351"/>
  </g>
 <rect id="overlay" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter001)" width="25" stroke="#F00" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="2" fill="#ffd5d5" class="overlayOnHover" opacity="0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 333.00003 234 L 306 258.75003 L 301.5 270 L 312.75 265.50003 L 339.75 240.74998 Z M 337.5 229.50002 
		L 335.24988 231.75008 L 341.99997 238.50003 L 344.24997 236.24995 Z M 342 225.00003 L 339.74988 227.25009 
		L 346.5 234.00005 L 348.75 231.75003 Z M 301.5 273.9719 C 301.5 273.9719 309.59888 277.99927 317.70013 273.97183 
		C 325.80066 269.94437 341.99997 276.65686 341.99997 276.65686 L 341.99997 273.97195 
		C 341.99997 273.97195 325.80014 267.2594 317.70013 271.28687 C 309.6 275.31451 301.5 271.28683 301.5 271.28683 Z" 
		fill="#101010" class="glyph"/>
	</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <metadata id="metadata34">
  <rdf:RDF>
   <cc:Work rdf:about="">
    <dc:format>image/svg+xml</dc:format>
    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
    <dc:title/>
   </cc:Work>
  </rdf:RDF>
 </metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter001">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <g id="iconSymbol" stroke="#4d4d4d" stroke-miterlimit="4" fill="none">
  <path id="path3640" stroke-linejoin="round" style="stroke-dasharray:none;" d="m33.165,50.126-10.258,9.3293-2.0113,4.3956,4.2474-2.1224,9.8299-9.5985-1.8075-2.004z" stroke-linecap="butt" stroke-width="1.60000002"/>
  <path id="path3642" stroke-linejoin="miter" style="stroke-dasharray:none;" d="m13.981,27.04,12.705,0" transform="matrix(0.8, 0, 0, 0.8, 13, 43)" stroke-linecap="round" stroke-width="2"/>
 </g>
 <rect id="overlay" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter001)" width="25" stroke="#008000" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="1.2" fill="#AFA" class="overlayOnHover" opacity="0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="506 234 68 36" width="30" height="30"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-09-16 14:51Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><rect width="1118" height="783"/><g><path d="M 538.68195 244.31807 C 540.43927 246.07547 540.43927 248.9247 538.68195 250.68204 C 536.92456 252.4394 534.07532 252.4394 532.318 250.68204 C 530.5606 248.9247 530.5606 246.07547 532.318 244.31807 C 534.07532 242.56075 536.92456 242.56075 538.68195 244.31807 M 511.12607 257.99356 C 511.26108 258.13019 511.39728 258.26608 511.53473 258.40121 C 527.2556 273.86606 552.74414 273.86606 568.46515 258.40121 C 568.60248 258.26617 568.73853 258.13037 568.87354 257.9938 C 568.8736 257.99374 568.8736 257.99371 568.8736 257.99362 C 568.87366 257.99371 568.87366 257.9938 568.87372 257.9939 C 570.72504 256.12051 572.35046 254.11153 573.74994 252 C 573.74994 251.99997 573.74994 251.99994 573.74994 251.99992 C 572.35046 249.8884 570.72504 247.87938 568.87372 246.00606 C 568.87366 246.00613 568.87366 246.00621 568.8736 246.00627 C 568.73865 245.86966 568.60254 245.73383 568.46515 245.5987 C 552.74414 230.13387 527.2556 230.13387 511.53473 245.5987 C 511.39728 245.73383 511.26108 245.86974 511.12613 246.00635 C 511.126 246.00624 511.126 246.00616 511.12595 246.00606 C 509.2748 247.87938 507.64954 249.88837 506.24994 251.9998 L 506.24994 251.99983 C 506.24994 251.9999 506.25 251.99992 506.25 251.99997 C 506.25 252 506.24994 252.00005 506.24994 252.00009 L 506.24994 252.00012 C 507.64954 254.11157 509.2748 256.12051 511.12595 257.9939 C 511.126 257.99377 511.126 257.99365 511.12607 257.99359 Z M 515.44916 252 C 515.8548 251.55469 516.27502 251.11778 516.71014 250.68985 C 522.16632 245.32257 529.06055 242.23206 536.17273 241.41824 C 534.6662 241.96199 533.2525 242.83762 532.04498 244.04512 C 527.65155 248.43852 527.65155 255.56163 532.04498 259.95502 C 533.2522 261.16226 534.6656 262.03778 536.17175 262.58154 C 529.05988 261.76761 522.16608 258.6771 516.71014 253.31009 C 516.2751 252.88219 515.85486 252.44528 515.44922 252 Z M 564.55054 251.99995 C 564.14502 252.44525 563.7248 252.88217 563.28973 253.31009 C 557.83368 258.67712 550.93988 261.76764 543.828 262.58157 C 545.33423 262.03781 546.74756 261.1623 547.9549 259.95502 C 552.34833 255.56163 552.34833 248.43852 547.9549 244.04512 C 546.74744 242.83765 545.33374 241.96202 543.82715 241.41824 C 550.9394 242.23206 557.83356 245.3226 563.28973 250.68985 C 563.7248 251.11775 564.14502 251.55467 564.55054 251.99995 Z M 568.8736 257.99362 C 570.7249 256.12033 572.35028 254.11139 573.74988 252.00002" fill="black" class="glyph"/></g></g></svg>

{{outline floatleft{++++*[#1 genmce:|will puppy 3.3 host windows vsts out of the box ]... 
{{menubox floatleft{
Hey - so will puppy 3.3 host windows vsts out of the box as it were?
If not how do I go about doing that?
Thank you.
}}}===+++*[read l0wt3ch's answer]...{{groupbox floatleft{
''l0wt3ch'' :
Yes, Puppy Studio is the only Linux studio that comes with REAPER, which runs VST's out-of-the-box just like in Windows. Go to your "Windows directory" (.wine in /root or "Browse C: Drive" from the menu) and install your .dll's like you normally would in "/Program Files/Steinberg/Vstplugins" (or a different folder if you like, you can change this in REAPER settings), or click on the .exe file and let WINE's installer do the work. :)

While some might complain that REAPER isn't released under the GPL, I see it as being the same as Barry including Flash - you can't have a proper browsing experience without Flash, and you can't have a real professional-grade digital audio workstation without VST plugins.
}}}===}}}
<br><br>
----
<br>
{{outline floatleft{++++*[#2 genmce:|ffado,load the asio4all driver,location on the windows partition...current vst folder]... 
{{menubox floatleft{
Hey - I have a couple of questions 

I can't seem to get my firewire Prosonus firepod working - 

1. Is ffado installed on puppy 3.3? Also I'm on a laptop (dell d520) with a pcmcia card as my firewire interface to the firepod. 

2. I notice the latency from reaper with puppy studio 3.3 about 43 ms, on windows i get about 11ms using the asio4all driver with the onboard sound card on the dell lappy mentioned above. Do I need to somehow load the asio4all driver somewhere. 

3. Also reguarding vsts, can I just point to the location on the windows partition I have that has the current vst folder i use in windows? 
}}}===+++*[read l0wt3ch's answer]...{{groupbox floatleft{
''l0wt3ch'' :
1) Yes, it comes with the ffado drivers. Did you look for your device under "Interface" in JACK settings? 
<<image http://i53.tinypic.com/eqw58j.png>>
2) No, you just have to decrease your "frames/period" in JACK settings. 256 will give you 11.6 msec. (I increased the default because REAPER would freeze on some computers with too small of a latency.) 
<<image http://i54.tinypic.com/105un8w.png>>
3) VST's that require registration will ask you to provide your information again. But those that do not (many of the good free ones) won't. 

A good place to ask questions about audio programs is [[eztuxer's "Musicians" thread|How to use audio apps (eztuxer's "Musicians" thread)]].
}}}===}}}
<br><br>
----
<br>
{{outline floatleft{++++*[#2b genmce:|Jack seizes on my Dell d520]... 
{{menubox floatleft{
Possible problem. 
Jack seizes on my Dell d520. 
I thought it might be the zoom h4 or the Dell docking 
Station. 
I restarted with d520 solo. 
Jack still seizes. Unable to click any button. 
Have to kill process to shutdown. 
What info can I provide to help solve this?
----

Posted:  Post subject: jack crashing
Subject description: Jack not working.	 
See above 2nd post above. 

I did find that the Jack audio connection kit gui shows 

XRUNS (1/118) all red before it stops responding. 
I looked at the man page but can't seem to figure out what if any setting to change.
}}}===+++*[read genmce's closing answer]...{{groupbox floatleft{
''genmce'' :
l0wt3ch 
Thanks - for trying. 
As for it was working - I had opened Reaper and was just noting the latency. 
I had not actually tried to record anything nor had I opened qjackctl. 
I noted the xruns after doing that. 
Alas - it works on that other machine just not this one. 
Ah well. 
Looks great, I just have to wait.
----
''Revolverve'':
genmce , xrun problem?? 
Start by checking retrovol or alsamixer if capture is enable .. work for me(laptop/onboard sndcard).. 
I also got xrun if jack midi driver "seq" not set. 

Yet 3.3 rt is rock solid.
}}}===}}}
<html><iframe src="http://$1" style="$2"/></html>
<<tiddler Home>><<popup Release [[<<tiddler mainMenuMod##releasenotes$))]] arrow:''>><<TiddlerPopUp Blog 'Blog'>><<TiddlerPopUp SearchGroups 'TW?'>><<TiddlerPopUp mainMenuMod##utube 'UTube?'>><<popup "Music" [[<<tiddler "Music"$))]] arrow:''>><<popup Graphics [[<<tiddler Graphics$))]] arrow:''>><<popup Video [[<<tiddler Video$))]] arrow:''>><<popup [[Puppy Linux]] [[<<tiddler "Puppy Linux"$))]] arrow:''>><<popup Tips [[<<tiddler Tips$))]] arrow:''>><<tiddler PopOut with:"http://wellminded.com/puppy/pupsearch.html" Puppy?? 800 400>>
/%
!utube
<<tiddler YTInstant with: puppystudio>>
!releasenotes
<<miniBrowser http://www.linuxmusicians.com/viewtopic.php?f=4&t=6994>>
!end
%/
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="434 218 68 68"
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 478.39694 232.53705 L 478.39694 232.53705 
		C 477.1145 231.85132 475.77875 231.30147 474.41058 230.88734 L 474.41058 218.24994 L 461.58942 218.24994 
		L 461.58942 230.88734 C 460.22125 231.30147 458.8855 231.85132 457.60306 232.53705 L 448.66824 223.60214 
		L 439.6022 232.66814 L 448.53717 241.60304 C 447.8515 242.8854 447.30157 244.22116 446.88745 245.58936 
		L 434.25 245.58936 L 434.25 258.41052 L 446.88745 258.41052 
		C 447.30157 259.77869 447.8515 261.11447 448.53717 262.39688 L 439.6022 271.33173 L 448.66824 280.3978 
		L 457.60306 271.46283 C 458.8855 272.14862 460.22125 272.69846 461.58942 273.11252 L 461.58942 285.74988 
		L 474.41058 285.74988 L 474.41058 273.11252 C 475.77875 272.69846 477.1145 272.14862 478.39694 271.46283 
		L 487.33176 280.3978 L 496.39767 271.33173 L 487.46286 262.39688 
		C 488.14853 261.11447 488.69836 259.77869 489.11255 258.41052 L 501.74988 258.41052 L 501.74988 245.58936 
		L 489.11255 245.58936 C 488.69836 244.22116 488.14853 242.8854 487.46286 241.60304 L 496.39767 232.66814 
		L 487.33176 223.60214 Z M 475.3328 244.66714 C 479.3825 248.71698 479.3825 255.2829 475.3328 259.33273 
		C 471.28296 263.3826 464.71704 263.3826 460.66724 259.33273 
		C 456.61737 255.2829 456.61737 248.71698 460.66724 244.66714 
		C 464.71704 240.61734 471.28296 240.61734 475.3328 244.66714" fill="#111"
		class="glyph"/>
	</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <metadata id="metadata34">
  <rdf:RDF>
   <cc:Work rdf:about="">
    <dc:format>image/svg+xml</dc:format>
    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
    <dc:title/>
   </cc:Work>
  </rdf:RDF>
 </metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter3630">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <g id="iconSymbol" stroke-linejoin="miter" stroke-linecap="butt">
   <g id="g3250" style="stroke-dasharray:none;" transform="matrix(0.68969, -0.68969, 0.68969, 0.68969, -10.2106, 20.8697)" stroke="#4d4d4d" fill="#4d4d4d">
    <path id="path3252" style="stroke-dasharray:none;" d="m-7.3399,53.9,16.353,0" stroke-width="3.6909102"/>
    <path id="path3254" style="stroke-dasharray:none;" d="m0.8368,62.077,0-16.353" stroke-width="3.28080907"/>
   </g>
   <g id="g3282" style="stroke-dasharray:none;" transform="matrix(0, -0.975369, 0.975369, 0, -24.9937, 58.5463)" stroke="#4d4d4d" stroke-width="3.69091022" fill="#4d4d4d">
    <path id="path3284" style="stroke-dasharray:none;" d="m-7.3399,53.9,16.353,0"/>
    <path id="path3286" style="stroke-dasharray:none;" d="m0.8368,62.077,0-16.353"/>
   </g>
   <path id="path3648" style="stroke-dasharray:none;" d="m-8.9375,22.031a1.2188,1.2188,0,1,1,-2.4375,0,1.2188,1.2188,0,1,1,2.4375,0z" transform="matrix(1.41091, 0, 0, 1.41091, 41.7813, 26.6707)" stroke="#be7800" stroke-width="1" fill="#be7800"/>
  </g>
 <rect id="overlay" opacity="0" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter3630)" width="25" stroke="#F60" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="1.2" fill="#e9c6af" class="overlayOnHover"/>
</svg>
<<popup "$1" [[<<tiddler "$2"$))]] arrow:''>>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="2 724 68 55" 
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 2.25 756 L 11.25 747 L 24.75 760.4994 L 60.750004 724.4994 L 69.75 733.49902 
		L 24.749977 778.49976 Z" fill="#101010" class="glyph"/>
	</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="29pt" width="29pt" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="13 43 29 29" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <metadata id="metadata34">
  <rdf:RDF>
   <cc:Work rdf:about="">
    <dc:format>image/svg+xml</dc:format>
    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
    <dc:title/>
   </cc:Work>
  </rdf:RDF>
 </metadata>
 <defs id="defs6">
  <title id="title26">Layer 1</title>
  <title id="title22">Canvas 1</title>
  <filter id="filter001">
   <feGaussianBlur id="feGaussianBlur3632" stdDeviation="0.625"/>
  </filter>
 <linearGradient id="linearGradient001" y2="27.646" gradientUnits="userSpaceOnUse" x2="-45.8" y1="27.646" x1="-57.66">
   <stop id="stop1" stop-color="#ffffff" offset="0"/>
   <stop id="stop2" stop-color="#ffa0a0" offset="0.66462"/>
   <stop id="stop3" stop-color="#ffffff" offset="1"/>
  </linearGradient></defs>
 <rect id="iconBG" style="stroke-dasharray:none;" stroke-width="1.2" fill-rule="evenodd" ry="4.1663" transform="matrix(0, -1, 1, 0, 0, 0)" width="25" stroke="#696969" stroke-linecap="round" stroke-miterlimit="4" y="15.167" x="-70.116" height="25" fill="none"/>
 <rect id="iconFG" style="stroke-dasharray:none;" stroke-width="1.6" fill-rule="evenodd" ry="2.3755" transform="matrix(0, -1, 1, 0, 0, 0)" width="22" stroke="#e6e6e6" stroke-linecap="round" stroke-miterlimit="4" y="16.646" x="-68.6" height="22" fill="url(#linearGradient001)" opacity="0"/>
 <path id="iconSymbol" stroke-linejoin="miter" style="stroke-dasharray:none;" d="m21.411,59.069,3.5152,4.3939,9.7922-11.675" stroke="#4d4d4d" stroke-linecap="round" stroke-miterlimit="4" stroke-width="2.4000001" fill="none"/>
 <rect id="overlay" style="stroke-dasharray:none;" transform="matrix(0, -1, 1, 0, -32, 0)" fill-rule="evenodd" ry="4.1663" height="25" filter="url(#filter001)" width="25" stroke="#008000" stroke-linecap="round" stroke-miterlimit="4" y="47.167" x="-70.116" stroke-width="1.2" fill="#AFA" class="overlayOnHover" opacity="0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="301 225 48 52"
width="30" height="30">
 <g stroke-opacity="1" fill-opacity="1" stroke="none" stroke-dasharray="none" fill="#000"  transform="matrix(1.2539275,0,0,1.2539275,-84.35669,-61.200181)">
  <g>
  <path class="glyph" d="m332.86,229.58-25.433,27.703,13.625-2.0437-0.99913,13.261,25.296-28.521-12.489-10.4zm0.27249,7.539c2.3029,0,4.1782,1.83,4.1782,4.0874,0,2.2573-1.8753,4.0874-4.1782,4.0874s-4.1328-1.83-4.1328-4.0874c0-2.2573,1.8299-4.0874,4.1328-4.0874z"/>
 </g>
</g>
</svg>
/***
|''Name:''|twyp|
|''Description:''|search, play and associate youtube videos|
|''Author:''|Tobias Beer|
|''Version:''|0.9.3 (2010-10-22)|
|''Status:''|beta|
|''Source:''|http://twyp.tiddlyspace.com/#twyp|
|''Documentation:''|http://tobibeer.tiddlyspace.com/#twYp|
|''Readable source:''|http://tbsource.tiddlyspace.com/#twyp|
|''Requires:''|TW Version 2.5.3 or better|
!Example
{{{
<<twyp slider>>
}}}
<<twyp slider>>
/%
***/
//{{{
(function($){window.twyp={maxSearch:7,maxRelated:15,maxUser:10,vidWidth:380,vidHeight:320,restrictTo:'',field:'youtube',txtRelated:'Related',txtUser:'Best rated videos by ',txtPage:'Go to page ',lblShow:'Play %0',tipShow:'Click to play %0',lblHide:'Close video',tipHide:'Click to close video player',txtInfo:'by %0 | viewed:%1 | favourited:%2 | published:%3',twypTemplate:'twyp##TEMPLATE',fmtSlider:'<<slider chk%0 twyp##TEMPLATE "Search videos" "Search videos on youtube and add one to the tiddler">>',fmtPlayer:'<h2><a class="tiddlyLinkExisting" href="#" \
title="add to current tiddler (hold CTRL to skip the prompt and use the title as is)" rel="%0">%1</a></h2> \
<object width="%2" height="%3"> \
<param name="movie" value="%0%4&fs=1&iv_load_policy=3" /> \
<param name="allowFullScreen" value="true" /> \
<param name="iv_load_policy" value="3" /> \
<param name="wmode" value="transparent" /> \
<param name="allowScriptAccess" value="always"> \
<embed src="%0%4&fs=1&iv_load_policy=3" \
 type="application/x-shockwave-flash" \
 allowscriptaccess="always" \
 wmode="transparent" \
 width="%2" height="%3" \
 allowfullscreen="true"> \
</embed></object>',relRelated:'http://gdata.youtube.com/schemas/2007#video.related',mimeFlash:'application/x-shockwave-flash',feeds:'http://gdata.youtube.com/feeds/standardfeeds/',mapQuery:{'rated':'top_rated','recent':'most_recent','popular':'most_popular','respond':'most_responded','discuss':'most_discussed','featured':'recently_featured','all':'videos'},usrSuffix:'/uploads',activeTwyp:null,shadows:[],appendScript:function(source,id,callback)
{$('#'+id).remove();$('head').append($('<script>').attr({src:source+'&alt=json-in-script&callback='+callback,id:id,type:'text/javascript'}));},findHref:function(entry,rel)
{var i,l;for(i=0;l=entry.link[i];i++)if(l.rel==rel)return l.href;return null;},findMediaHref:function(entry,type)
{var i,c,p,u;for(i=0;c=entry.media$group.media$content[i];i++)
if(c.type==type){u=c.url;p=u.indexOf('?');return p<1?u:u.substr(0,p);}
return null;},getResults:function(el,query,search)
{var page=1,box=$(el).closest('.twyp'),tid=$(el).closest('[tiddler]'),id=twyp.activeTwyp=tid.attr('twyp');if(query){box.attr({id:id,field:tid.attr('field'),search:search,query:query})}else{query=box.attr('query');search=box.attr('search');page=parseInt($(el).attr('page'));};var q=twyp.feeds+twyp.mapQuery[query];if(query=='all')q=q.replace('standardfeeds/','');q+='?prettyprint=true&restriction='+twyp.restrictTo+'&max-results='+twyp.maxSearch+'&start-index='+(((page-1)*twyp.maxSearch)+1)+
(search==''?'':'&vq='+search);twyp.appendScript(q,'twypResults','twyp.cbResults');twyp.updateNav(page,box);},cbResults:function(data)
{var box=$('#'+twyp.activeTwyp),out=$('.vids',box).empty();box.data('main',data.feed);$(data.feed.entry).each(function(i,e){if(!e.yt$noembed){var ti=e.media$group.media$title.$t,img=$('<img/>'),lnk=$('<a/>'),desc=e.media$group.media$description.$t,p=$('<p>').html(desc);img.attr({src:e.media$group.media$thumbnail[0].url,title:twyp.info(e)}).click(twyp.clickPlay(i,'main',img[0]));lnk.attr({href:'#','class':'tiddlyLinkExisting'}).click(twyp.clickPlay(i,'main',lnk[0])).html(ti+twyp.info(e,true))
out.append($('<div/>').attr('class','vid').append($('<div/>').attr('class','desc').append(lnk).append(img).append(p).append($('<div/>').attr('class','tagClear'))))}});if($.fn.linkify)$('p',out).linkify();},getRelated:function(num,feed,box)
{var entry=box.data(feed).entry[num],url=twyp.findHref(entry,twyp.relRelated),rel=$('.vidRel',box).empty();if(url){rel.html('<h3>'+twyp.txtRelated+'</h3>');url+='?&restriction='+twyp.restrictTo+'&max-results='+twyp.maxRelated;twyp.appendScript(url,'twypRelated','twyp.cbMore');}},getByUser:function(box,url,name)
{$('.vidUser',box).empty().html('<h3>'+twyp.txtUser+name+'</h3>');twyp.appendScript(url+twyp.usrSuffix+'?&restriction='+twyp.restrictTo+'&max-results='+twyp.maxUser+'&orderby=rating','twypUser','twyp.cbMore');},cbMore:function(data)
{var i,img,e,r,box=$('#'+twyp.activeTwyp),feed=data.feed.title.$t.indexOf('Videos related to')==0?'related':'user';box.data(feed,data.feed);for(i=0;e=data.feed.entry[i];i++){img=$('<img/>');$(feed=='user'?'.vidUser':'.vidRel',box).append(img.attr({src:e.media$group.media$thumbnail[0].url,rel:e.media$group.media$title.$t,title:twyp.info(e)}).click(twyp.clickPlay(i,feed,img[0])).bind('mouseover mouseout',function(ev){var e=ev?ev:window.event,el=$('.'+feed+'Info');el.empty().html(e.type=='mouseover'?this.getAttribute('rel')+twyp.info(e,true):'&nbsp;')}))}},info:function(e,r){if(r){var r=e.gd$rating;return r?' ('+r.average.toString().substr(0,3)+')':'';}
var a=e.author,s=e.yt$statistics;return twyp.txtInfo.format([a?a[0].name.$t:'',s?s.viewCount:'n/a',s?s.favoriteCount:'n/a',e.published.$t.substr(0,10)])},clickPlay:function(entry,feed,el)
{return function(){twyp.playVideo(entry,feed,el);return false;};},playVideo:function(num,feed,el)
{var box=$(el).closest('.twyp'),p=box.find('.twplr'),e=box.data(feed).entry[num],a=e.author,plr=twyp.fmtPlayer.format([twyp.findMediaHref(e,twyp.mimeFlash),e.media$group.media$title.$t,twyp.vidWidth,twyp.vidHeight,'&autoplay=1']);p.html(plr);p.find('a').first().attr('field',box.attr('field')).click(function(ev){var e=ev?ev:window.event;twyp.addToTiddler(e,this);});p.append($('<div/>').attr({'class':'vidDescr',title:(twyp.info(e)+twyp.info(e,true))}).html(e.media$group.media$description.$t));if($.fn.linkify)$('.vidDescr',p).linkify();twyp.getRelated(num,feed,box);if(a&&a.length>0)twyp.getByUser(box,a[0].uri.$t,a[0].name.$t);},updateNav:function(page,box)
{var p=page,t=twyp.txtPage,d=p-1<1?'disabled':'';$('.vidNext',box).css('display','inline').attr({page:p+1,title:t+(p+1)});$('.vidPrev',box).css('display','inline').attr({page:p-1,title:t+(p-1),disabled:d});},reset:function(el){var box=$(el).closest('.twyp');$('.vids, .colPlayer div[class]',box).empty();$('.twplr',box).html('&nbsp;');$('.resultsNav',box).hide();},addToTiddler:function(e,el)
{var tid=story.findContainingTiddler(el),el=$(el),vid=el.html();tid=tid?tid.getAttribute('tiddler'):'';if(!tid)return;if(!e.ctrlKey)vid=prompt('Enter your desired video title',vid);if(!vid)return;store.setValue(tid,el.attr('field'),'[['+vid+'|'+el.attr('rel')+']]');if(config.options.chkAutoSave)story.saveTiddler(tid);}}
config.macros.twyp={handler:function(place,macroName,params,wikifier,paramString,tiddler)
{var a,el,plr,s='',sep,title,vid,url,w,tid=story.findContainingTiddler(place),p=paramString.parseParams(null,null,true),f=getParam(p,'field',twyp.field),not=params.contains('notitle'),slide=params.contains('slider'),id='twyp'+Math.random().toString().substr(3),s=params.contains('search');if(params.contains('player')){if(s)s='<<twyp %0>>'.format([paramString.replace('player','')]);tid=tid?tid.getAttribute('tiddler'):'';vid=getParam(p,'video',store.getValue(tid,f));wikify(s,place);if(!vid)return;sep=vid.indexOf('|');title=vid.substr(2,sep-2);plr=['<html>',twyp.fmtPlayer.format([vid.substr(sep+1,vid.length-sep-3),title,getParam(p,'width',twyp.vidWidth),getParam(p,'height',twyp.vidHeight),slide&!params.contains('noautoplay')?'&autoplay=1':'']),'</html>'].join('');if(slide){el=$('<div/>');el.addClass('twypSlider');w=el[0];$(place).append($('<a>'+twyp.lblShow.format([title])+'</a>').attr({href:'#',twyp:id,'class':'button',title:twyp.tipShow.format([title])}).click(function(ev){var el=$(this),ti=title,id=el.attr('twyp'),p=el.next();if(p.css('display')!='block'){el.attr({title:twyp.tipHide,video:ti}).html(twyp.lblHide);p.attr('twyp',id);config.shadowTiddlers[id]=plr;p.slideDown('slow');}else{ti=el.attr('video');el.attr('title',twyp.tipShow.format([ti])).html(twyp.lblShow.format([ti]));delete config.shadowTiddlers[id];p.slideUp('slow');}})).append(el);};wikify(plr,w?w:place);a=$('a',w?w:place).last();if(not){a.parent().hide().next().css('margin-top','0.5em');}else a.click(function(ev){var e=ev?ev:window.event;twyp.addToTiddler(e,this);});}else{wikify(slide?twyp.fmtSlider.format([id]):store.getTiddlerText(twyp.twypTemplate),place)
el=slide?$('[tiddler]',place).last():$(place).closest('[tiddler]');el.attr({twyp:id,field:f,not:not});}}}
story.closeTiddlerTWYP=story.closeTiddler;story.closeTiddler=function(title){$('.twypSlider',this.getTiddler(title)).each(function(n,b){delete config.shadowTiddlers[$(b).attr('twyp')];});story.closeTiddlerTWYP.apply(this,arguments);}
config.shadowTiddlers.StyleSheetTwyp="/*{{{*/\n\
.twyp {font-size:12px;} \n\
.twyp .frmSearch{margin:10px 0 0 10px;} \n\
.twyp .txtSearch{width:30%;} \n\
.twyp input{border:1px solid #ddd;padding:1px 3px;cursor:pointer;} \n\
.twyp input:hover{border:1px solid #999;} \n\
.twyp .colResults {float:left;margin-top:0.5em;width:390px;padding-left:10px;} \n\
.twyp .vids {width:100%;} \n\
.twyp .vids img{margin:5px 0 5px 5px;width:100px;cursor:pointer;float:right;clear:none;} \n\
.twyp .vid{clear:both;font-size:0.9em;padding:5px;} \n\
.twyp .vid:hover{background:#ddd;} \n\
.twyp .desc a{display:block;padding:1px 3px;} \n\
.twyp .desc p{max-height:70px;overflow:hidden;margin-top:5px;display:block;max-width:380px;} \n\
.twyp .desc p a{display:inline;} \n\
.twyp .desc:hover p{width:270px;max-height:200px;overflow:auto;} \n\
.twyp .resultsNav{text-align:right;margin-bottom:2em;} \n\
.twyp .resultsNav input, .searchVideo{margin:0.5em 0 0 0.5em;font-weight:bold;width:80px;} \n\
.twyp .colPlayer {float:left;width:390px;margin:0 5px;} \n\
.twplr .vidDescr {max-height:1em;overflow:hidden;} \n\
.twplr .vidDescr:hover {max-height:250px;overflow:auto;} \n\
.twyp .colPlayer img {margin:1px;cursor:pointer;width:72px;height:56px;} \n\
.twyp h2, .twyp h3 {margin-top: 0.6em;} \n\
.twyp .vidUser, .vidRel{margin:0 1em 0 0;} \n\
.twyp .userInfo, .twyp .relatedInfo{padding-right:20px;height:auto;overflow:hidden;font-weight:bold;color:#666;} \n\
.twypSlider {display:none;margin-bottom:10px;} \n\
.twypSlider object{display:block;} \n\
/*}}}*/";store.addNotification("StyleSheetTwyp",refreshStyles);try{$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?',function(d){twyp.restrictTo=d.geoplugin_countryCode})}catch(e){}
try{$.getJSON('http://lyrics.wikia.com/api.php?artist=Cake&song=Dime&fmt=json',function(d){twyp.restrictTo=d.geoplugin_countryCode})}catch(e){}})(jQuery);
/***
!TEMPLATE
<html>
<div class="twyp">
	<form class="frmSearch" onsubmit="twyp.getResults(this,this.query.value,this.search.value); return false;">
		<select name="query">
			<option value="all" selected="true">All videos</option>
			<option value="rated">Top rated videos</option>
			<option value="recent">Most recent videos</option>
			<option value="popular">Most popular videos</option>
			<option value="discuss">Most discussed videos</option>
			<option value="respond">Most responded videos</option>
			<option value="featured">Recently featured videos</option>
		</select>
		<input name="search" class="txtSearch" type="text" value="" onclick="this.select();">
		<input type="submit" class="searchVideo" value="Search">
		<input type="button" class="searchVideo" value="Reset" onclick="twyp.reset(this);">
	</form>
	<div class="colPlayer">
		<div class="twplr"></div>
		<div>
			<div class="vidRel"></div>
			<div class="relatedInfo">&nbsp;</div>
			<div class="vidUser"></div>
			<div class="userInfo">&nbsp;</div>
		</div>
	</div> 
	<div class="colResults">
		<div class="vids"></div>
		<form class="resultsNav">
			<input type="button" class="vidPrev" value="&laquo; back" style="display: none;" onclick="twyp.getResults(this);"></input>
			<input type="button" class="vidNext" value="next &raquo;" style="display: none;" onclick="twyp.getResults(this);"></input>
		</form>
	</div>
</div>
<div class="tagClear"></div>
</html>
!END*/
//%/